diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fad22f067f4..cc2770cc6cc 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -237,3 +237,5 @@ /src/spring/ @yuwzho /src/containerapp-compose/ @smurawski @jldeen + +/src/change-analysis/ @linglingtong diff --git a/.github/fabricbot.json b/.github/fabricbot.json new file mode 100644 index 00000000000..3f32eb312e8 --- /dev/null +++ b/.github/fabricbot.json @@ -0,0 +1,12408 @@ +{ + "version": "1.0", + "tasks": [ + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "taskName": "Add needs triage label to new issues", + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "not", + "operands": [ + { + "name": "isPartOfProject", + "parameters": {} + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "isAssignedToSomeone", + "parameters": {} + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "isLabeled", + "parameters": {} + } + ] + } + ] + }, + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "needs-triage" + } + } + ], + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ] + }, + "disabled": true + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssueCommentResponder", + "version": "1.0", + "config": { + "taskName": "Replace needs author feedback label with needs attention label when the author comments on an issue", + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "created" + } + }, + { + "name": "isActivitySender", + "parameters": { + "user": { + "type": "author" + } + } + }, + { + "name": "hasLabel", + "parameters": { + "label": "needs-author-feedback" + } + }, + { + "name": "isOpen", + "parameters": {} + } + ] + }, + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "needs-team-attention" + } + }, + { + "name": "removeLabel", + "parameters": { + "label": "needs-author-feedback" + } + } + ], + "eventType": "issue", + "eventNames": [ + "issue_comment" + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "taskName": "Remove no recent activity label from issues", + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "not", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "closed" + } + } + ] + }, + { + "name": "hasLabel", + "parameters": { + "label": "no-recent-activity" + } + } + ] + }, + "actions": [ + { + "name": "removeLabel", + "parameters": { + "label": "no-recent-activity" + } + } + ], + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssueCommentResponder", + "version": "1.0", + "config": { + "taskName": "Remove no recent activity label when an issue is commented on", + "conditions": { + "operator": "and", + "operands": [ + { + "name": "hasLabel", + "parameters": { + "label": "no-recent-activity" + } + } + ] + }, + "actions": [ + { + "name": "removeLabel", + "parameters": { + "label": "no-recent-activity" + } + } + ], + "eventType": "issue", + "eventNames": [ + "issue_comment" + ] + } + }, + { + "taskType": "scheduled", + "capabilityId": "ScheduledSearch", + "subCapability": "ScheduledSearch", + "version": "1.1", + "config": { + "taskName": "Close stale issues", + "frequency": [ + { + "weekDay": 0, + "hours": [ + 1 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 1, + "hours": [ + 1 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 2, + "hours": [ + 1 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 3, + "hours": [ + 1 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 4, + "hours": [ + 1 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 5, + "hours": [ + 1 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 6, + "hours": [ + 1 + ], + "timezoneOffset": -7 + } + ], + "searchTerms": [ + { + "name": "isIssue", + "parameters": {} + }, + { + "name": "isOpen", + "parameters": {} + }, + { + "name": "hasLabel", + "parameters": { + "label": "needs-author-feedback" + } + }, + { + "name": "hasLabel", + "parameters": { + "label": "no-recent-activity" + } + }, + { + "name": "noActivitySince", + "parameters": { + "days": 14 + } + } + ], + "actions": [ + { + "name": "closeIssue", + "parameters": {} + } + ] + } + }, + { + "taskType": "scheduled", + "capabilityId": "ScheduledSearch", + "subCapability": "ScheduledSearch", + "version": "1.1", + "config": { + "taskName": "Add no recent activity label to issues", + "frequency": [ + { + "weekDay": 0, + "hours": [ + 1, + 7, + 13, + 19 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 1, + "hours": [ + 1, + 7, + 13, + 19 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 2, + "hours": [ + 1, + 7, + 13, + 19 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 3, + "hours": [ + 1, + 7, + 13, + 19 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 4, + "hours": [ + 1, + 7, + 13, + 19 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 5, + "hours": [ + 1, + 7, + 13, + 19 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 6, + "hours": [ + 1, + 7, + 13, + 19 + ], + "timezoneOffset": -7 + } + ], + "searchTerms": [ + { + "name": "isIssue", + "parameters": {} + }, + { + "name": "isOpen", + "parameters": {} + }, + { + "name": "hasLabel", + "parameters": { + "label": "needs-author-feedback" + } + }, + { + "name": "noActivitySince", + "parameters": { + "days": 7 + } + }, + { + "name": "noLabel", + "parameters": { + "label": "no-recent-activity" + } + } + ], + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "no-recent-activity" + } + }, + { + "name": "addReply", + "parameters": { + "comment": "Hi, we're sending this friendly reminder because we haven't heard back from you in a while. We need more information about this issue to help address it. Please be sure to give us your input within the next **7 days**. If we don't hear back from you within **14 days** of this comment the issue will be automatically closed. Thank you!" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "labeled" + } + }, + { + "name": "hasLabel", + "parameters": { + "label": "needs-triage" + } + }, + { + "operator": "not", + "operands": [ + { + "name": "labelAdded", + "parameters": { + "label": "needs-triage" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "Remove needs-triage label on issues once they are labeled", + "actions": [ + { + "name": "removeLabel", + "parameters": { + "label": "needs-triage" + } + } + ] + }, + "disabled": true + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasPermissions", + "parameters": { + "association": "MEMBER", + "permissions": "write" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasAssociation", + "parameters": { + "association": "MEMBER" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasAssociation", + "parameters": { + "association": "COLLABORATOR" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasPermissions", + "parameters": { + "permissions": "admin" + } + } + ] + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "Add question label to new issues ", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "question" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssueCommentResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "not", + "operands": [ + { + "name": "isOpen", + "parameters": {} + } + ] + }, + { + "name": "isAction", + "parameters": { + "action": "created" + } + }, + { + "name": "hasLabel", + "parameters": { + "label": "no-recent-activity" + } + }, + { + "name": "hasLabel", + "parameters": { + "label": "needs-author-feedback" + } + }, + { + "operator": "not", + "operands": [ + { + "name": "noActivitySince", + "parameters": { + "days": 7 + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "isCloseAndComment", + "parameters": {} + } + ] + }, + { + "name": "isActivitySender", + "parameters": { + "user": { + "type": "author" + } + } + }, + { + "name": "activitySenderHasPermissions", + "parameters": { + "permissions": "none" + } + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issue_comment" + ], + "taskName": "For issues closed due to inactivity, re-open an issue if issue author posts a reply within 7 days.", + "actions": [ + { + "name": "reopenIssue", + "parameters": {} + }, + { + "name": "removeLabel", + "parameters": { + "label": "no-recent-activity" + } + }, + { + "name": "removeLabel", + "parameters": { + "label": "needs-author-feedback" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "needs-team-attention" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssueCommentResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "created" + } + }, + { + "operator": "not", + "operands": [ + { + "name": "isOpen", + "parameters": {} + } + ] + }, + { + "name": "activitySenderHasPermissions", + "parameters": { + "permissions": "none" + } + }, + { + "name": "noActivitySince", + "parameters": { + "days": 7 + } + }, + { + "operator": "not", + "operands": [ + { + "name": "isCloseAndComment", + "parameters": {} + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issue_comment" + ], + "taskName": "For issues closed with no activity over 7 days, ask non-contributor to consider opening a new issue instead.", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Thank you for your interest in this issue! Because it has been closed for a period of time, we strongly advise that you open a new issue linking to this to ensure better visibility of your comment. " + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isOpen", + "parameters": {} + }, + { + "name": "hasLabel", + "parameters": { + "label": "customer-reported" + } + }, + { + "name": "labelRemoved", + "parameters": { + "label": "Service Attention" + } + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "Add label after \"Service Attention\" is removed", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "needs-team-triage" + } + } + ] + } + }, + { + "taskType": "scheduled", + "capabilityId": "ScheduledSearch", + "subCapability": "ScheduledSearch", + "version": "1.1", + "config": { + "frequency": [ + { + "weekDay": 0, + "hours": [ + 1, + 4, + 7, + 10, + 13, + 16, + 19, + 22 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 1, + "hours": [ + 1, + 4, + 7, + 10, + 13, + 16, + 19, + 22 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 2, + "hours": [ + 1, + 4, + 7, + 10, + 13, + 16, + 19, + 22 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 3, + "hours": [ + 1, + 4, + 7, + 10, + 13, + 16, + 19, + 22 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 4, + "hours": [ + 1, + 4, + 7, + 10, + 13, + 16, + 19, + 22 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 5, + "hours": [ + 1, + 4, + 7, + 10, + 13, + 16, + 19, + 22 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 6, + "hours": [ + 1, + 4, + 7, + 10, + 13, + 16, + 19, + 22 + ], + "timezoneOffset": -7 + } + ], + "searchTerms": [ + { + "name": "isOpen", + "parameters": {} + }, + { + "name": "hasLabel", + "parameters": { + "label": "MySQL" + } + }, + { + "name": "hasLabel", + "parameters": { + "label": "Service Attention" + } + }, + { + "name": "noAssignees", + "parameters": {} + } + ], + "taskName": "Assign service attention issues to mentionees for MySQL (requested by service team)", + "actions": [ + { + "name": "assignToGitHubUserGroup", + "parameters": { + "groupId": "5f074bcc4200c210c870e103" + } + } + ] + } + }, + { + "taskType": "scheduled", + "capabilityId": "ScheduledSearch", + "subCapability": "ScheduledSearch", + "version": "1.1", + "config": { + "frequency": [ + { + "weekDay": 0, + "hours": [ + 2, + 5, + 8, + 11, + 14, + 17, + 20, + 23 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 1, + "hours": [ + 2, + 5, + 8, + 11, + 14, + 17, + 20, + 23 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 2, + "hours": [ + 2, + 5, + 8, + 11, + 14, + 17, + 20, + 23 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 3, + "hours": [ + 2, + 5, + 8, + 11, + 14, + 17, + 20, + 23 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 4, + "hours": [ + 2, + 5, + 8, + 11, + 14, + 17, + 20, + 23 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 5, + "hours": [ + 2, + 5, + 8, + 11, + 14, + 17, + 20, + 23 + ], + "timezoneOffset": -7 + }, + { + "weekDay": 6, + "hours": [ + 2, + 5, + 8, + 11, + 14, + 17, + 20, + 23 + ], + "timezoneOffset": -7 + } + ], + "searchTerms": [ + { + "name": "isOpen", + "parameters": {} + }, + { + "name": "hasLabel", + "parameters": { + "label": "MariaDB" + } + }, + { + "name": "hasLabel", + "parameters": { + "label": "Service Attention" + } + }, + { + "name": "noAssignees", + "parameters": {} + } + ], + "taskName": "Assign service attention issues to mentionees for MariaDB (requested by service team)", + "actions": [ + { + "name": "assignToGitHubUserGroup", + "parameters": { + "groupId": "5f074bcc4200c210c870e103" + } + } + ] + } + }, + { + "taskType": "scheduledAndTrigger", + "capabilityId": "IssueRouting", + "subCapability": "@Mention", + "version": "1.0", + "config": { + "labelsAndMentions": [ + { + "labels": [ + "Service Attention", + "AAD" + ], + "mentionees": [ + "adamedx" + ] + }, + { + "labels": [ + "Service Attention", + "AKS" + ], + "mentionees": [ + "Azure/aks-pm" + ] + }, + { + "labels": [ + "Service Attention", + "Alerts Management" + ], + "mentionees": [ + "liadtal", + "yairgil" + ] + }, + { + "labels": [ + "Service Attention", + "ARM" + ], + "mentionees": [ + "josephkwchan", + "jennyhunter-msft" + ] + }, + { + "labels": [ + "Service Attention", + "ARM - Templates" + ], + "mentionees": [ + "satyavel", + "apclouds" + ] + }, + { + "labels": [ + "Service Attention", + "ARM - Tags" + ], + "mentionees": [ + "rthorn17" + ] + }, + { + "labels": [ + "Service Attention", + "ARM - Core" + ], + "mentionees": [ + "josephkwchan", + "jennyhunter-msft" + ] + }, + { + "labels": [ + "Service Attention", + "ARM - Managed Applications" + ], + "mentionees": [ + "MSEvanhi" + ] + }, + { + "labels": [ + "Service Attention", + "ARM - Service Catalog" + ], + "mentionees": [ + "MSEvanhi" + ] + }, + { + "labels": [ + "Service Attention", + "ARM - RBAC" + ], + "mentionees": [ + "LizMS", + "cbrooksmsft" + ] + }, + { + "labels": [ + "Service Attention", + "Advisor" + ], + "mentionees": [ + "mojayara", + "Prasanna-Padmanabhan" + ] + }, + { + "labels": [ + "Service Attention", + "Analysis Services" + ], + "mentionees": [ + "athipp", + "taiwu", + "minghan" + ] + }, + { + "labels": [ + "Service Attention", + "API Management" + ], + "mentionees": [ + "adrianhall", + "KedarJoshi" + ] + }, + { + "labels": [ + "Service Attention", + "Application Insights" + ], + "mentionees": [ + "azmonapplicationinsights" + ] + }, + { + "labels": [ + "Service Attention", + "App Services" + ], + "mentionees": [ + "antcp", + "AzureAppServiceCLI" + ] + }, + { + "labels": [ + "Service Attention", + "App Configuration" + ], + "mentionees": [ + "shenmuxiaosen", + "avanigupta" + ] + }, + { + "labels": [ + "Service Attention", + "ARO" + ], + "mentionees": [ + "mjudeikis", + "jim-minter", + "julienstroheker", + "amanohar" + ] + }, + { + "labels": [ + "Service Attention", + "Attestation" + ], + "mentionees": [ + "anilba06" + ] + }, + { + "labels": [ + "Service Attention", + "Authorization" + ], + "mentionees": [ + "darshanhs90", + "AshishGargMicrosoft" + ] + }, + { + "labels": [ + "Service Attention", + "Automation" + ], + "mentionees": [ + "jaspkaur28" + ] + }, + { + "labels": [ + "Service Attention", + "AVS" + ], + "mentionees": [ + "divka78", + "amitchat", + "aishu" + ] + }, + { + "labels": [ + "Service Attention", + "Azure Stack" + ], + "mentionees": [ + "sijuman", + "sarathys", + "bganapa", + "rakku-ms" + ] + }, + { + "labels": [ + "Service Attention", + "Batch" + ], + "mentionees": [ + "mksuni", + "bgklein", + "mscurrell", + "dpwatrous", + "gingi", + "paterasMSFT", + "cRui861" + ] + }, + { + "labels": [ + "Service Attention", + "BatchAI" + ], + "mentionees": [ + "matthchr" + ] + }, + { + "labels": [ + "Service Attention", + "Billing" + ], + "mentionees": [ + "cabbpt" + ] + }, + { + "labels": [ + "Service Attention", + "Blueprint" + ], + "mentionees": [ + "alex-frankel", + "filizt" + ] + }, + { + "labels": [ + "Service Attention", + "Bot Service" + ], + "mentionees": [ + "sgellock" + ] + }, + { + "labels": [ + "Service Attention", + "Cloud Shell" + ], + "mentionees": [ + "maertendMSFT" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Text Analytics" + ], + "mentionees": [ + "assafi" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Form Recognizer" + ], + "mentionees": [ + "ctstone", + "anrothMSFT" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Anomaly Detector" + ], + "mentionees": [ + "yingqunpku", + "bowgong" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Custom Vision" + ], + "mentionees": [ + "areddish", + "tburns10" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Computer Vision" + ], + "mentionees": [ + "ryogok", + "TFR258", + "tburns10" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Face" + ], + "mentionees": [ + "JinyuID", + "dipidoo", + "SteveMSFT" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - QnA Maker" + ], + "mentionees": [ + "bingisbestest", + "nerajput1607" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Translator" + ], + "mentionees": [ + "swmachan" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Speech" + ], + "mentionees": [ + "robch", + "oscholz" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - LUIS" + ], + "mentionees": [ + "cahann", + "kayousef" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Content Moderator" + ], + "mentionees": [ + "swiftarrow11" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Personalizer" + ], + "mentionees": [ + "dwaijam" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Immersive Reader" + ], + "mentionees": [ + "metanMSFT" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Ink Recognizer" + ], + "mentionees": [ + "olduroja" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Bing" + ], + "mentionees": [ + "jaggerbodas-ms", + "arwong" + ] + }, + { + "labels": [ + "Service Attention", + "Cognitive - Mgmt" + ], + "mentionees": [ + "yangyuan" + ] + }, + { + "labels": [ + "Service Attention", + "Commerce" + ], + "mentionees": [ + "ms-premp", + "qiaozha" + ] + }, + { + "labels": [ + "Service Attention", + "Compute" + ], + "mentionees": [ + "Drewm3", + "avirishuv", + "vaibhav-agar", + "amjads1" + ] + }, + { + "labels": [ + "Service Attention", + "Compute - Extensions" + ], + "mentionees": [ + "Drewm3", + "amjads1" + ] + }, + { + "labels": [ + "Service Attention", + "Compute - Images" + ], + "mentionees": [ + "Drewm3", + "vaibhav-agar" + ] + }, + { + "labels": [ + "Service Attention", + "Compute - Managed Disks" + ], + "mentionees": [ + "Drewm3", + "vaibhav-agar" + ] + }, + { + "labels": [ + "Service Attention", + "Compute - RDFE" + ], + "mentionees": [ + "Drewm3", + "avirishuv" + ] + }, + { + "labels": [ + "Service Attention", + "Compute - VM" + ], + "mentionees": [ + "Drewm3", + "avirishuv" + ] + }, + { + "labels": [ + "Service Attention", + "Compute - VMSS" + ], + "mentionees": [ + "Drewm3", + "avirishuv" + ] + }, + { + "labels": [ + "Service Attention", + "Connected Kubernetes" + ], + "mentionees": [ + "akashkeshari" + ] + }, + { + "labels": [ + "Service Attention", + "Container Instances" + ], + "mentionees": [ + "macolso" + ] + }, + { + "labels": [ + "Service Attention", + "Container Registry" + ], + "mentionees": [ + "toddysm", + "northtyphoon", + "luisdlp" + ] + }, + { + "labels": [ + "Service Attention", + "Container Service" + ], + "mentionees": [ + "qike-ms", + "jwilder", + "thomas1206", + "seanmck" + ] + }, + { + "labels": [ + "Service Attention", + "Cosmos" + ], + "mentionees": [ + "pjohari-ms", + "MehaKaushik", + "zfoster", + "kushagraThapar", + "simorenoh", + "simplynaveen20", + "abinav2307" + ] + }, + { + "labels": [ + "Service Attention", + "Customer Insights" + ], + "mentionees": [ + "shefymk" + ] + }, + { + "labels": [ + "Service Attention", + "Custom Providers" + ], + "mentionees": [ + "manoharp", + "MSEvanhi" + ] + }, + { + "labels": [ + "Service Attention", + "CycleCloud" + ], + "mentionees": [ + "adriankjohnson" + ] + }, + { + "labels": [ + "Service Attention", + "Data Bricks" + ], + "mentionees": [ + "arindamc" + ] + }, + { + "labels": [ + "Service Attention", + "DataBox" + ], + "mentionees": [ + "tmvishwajit", + "matdickson", + "manuaery", + "madhurinms" + ] + }, + { + "labels": [ + "Service Attention", + "DataBox Edge" + ], + "mentionees": [ + "a-t-mason", + "ganzee", + "manuaery" + ] + }, + { + "labels": [ + "Service Attention", + "Data Catalog" + ], + "mentionees": [ + "ingave" + ] + }, + { + "labels": [ + "Service Attention", + "Data Factory" + ], + "mentionees": [ + "Jingshu923", + "zhangyd2015", + "Frey-Wang" + ] + }, + { + "labels": [ + "Service Attention", + "Data Lake" + ], + "mentionees": [ + "sumantmehtams" + ] + }, + { + "labels": [ + "Service Attention", + "Data Lake Storage Gen1" + ], + "mentionees": [ + "sumantmehtams" + ] + }, + { + "labels": [ + "Service Attention", + "Data Lake Storage Gen2" + ], + "mentionees": [ + "sumantmehtams" + ] + }, + { + "labels": [ + "Service Attention", + "Data Lake Analytics" + ], + "mentionees": [ + "idear1203" + ] + }, + { + "labels": [ + "Service Attention", + "Data Lake Store" + ], + "mentionees": [ + "sumantmehtams" + ] + }, + { + "labels": [ + "Service Attention", + "Data Migration" + ], + "mentionees": [ + "radjaram", + "kavitham10" + ] + }, + { + "labels": [ + "Service Attention", + "Data Share" + ], + "mentionees": [ + "raedJarrar", + "jifems" + ] + }, + { + "labels": [ + "Service Attention", + "DevOps" + ], + "mentionees": [ + "v-anvashist", + "V-hmusukula" + ] + }, + { + "labels": [ + "Service Attention", + "Dev Spaces" + ], + "mentionees": [ + "yuzorMa", + "johnsta", + "greenie-msft" + ] + }, + { + "labels": [ + "Service Attention", + "Devtestlab" + ], + "mentionees": [ + "Tanmayeekamath" + ] + }, + { + "labels": [ + "Service Attention", + "Device Provisioning Service" + ], + "mentionees": [ + "nberdy" + ] + }, + { + "labels": [ + "Service Attention", + "Digital Twins" + ], + "mentionees": [ + "sourabhguha", + "inesk-vt" + ] + }, + { + "labels": [ + "Service Attention", + "Event Grid" + ], + "mentionees": [ + "jfggdl" + ] + }, + { + "labels": [ + "Service Attention", + "Event Hubs" + ], + "mentionees": [ + "Saglodha" + ] + }, + { + "labels": [ + "Service Attention", + "Functions" + ], + "mentionees": [ + "Stefanus Hinardi", + "Francisco-Gamino" + ] + }, + { + "labels": [ + "Service Attention", + "Graph.Microsoft" + ], + "mentionees": [ + "dkershaw10", + "baywet" + ] + }, + { + "labels": [ + "Service Attention", + "Guest Configuration" + ], + "mentionees": [ + "mgreenegit", + "vivlingaiah" + ] + }, + { + "labels": [ + "Service Attention", + "HDInsight" + ], + "mentionees": [ + "aim-for-better", + "idear1203", + "deshriva" + ] + }, + { + "labels": [ + "Service Attention", + "HPC Cache" + ], + "mentionees": [ + "romahamu", + "omzevall" + ] + }, + { + "labels": [ + "Service Attention", + "Import Export" + ], + "mentionees": [ + "madhurinms" + ] + }, + { + "labels": [ + "Service Attention", + "KeyVault" + ], + "mentionees": [ + "RandalliLama", + "schaabs", + "jlichwa" + ] + }, + { + "labels": [ + "Service Attention", + "Kubernetes Configuration" + ], + "mentionees": [ + "NarayanThiru" + ] + }, + { + "labels": [ + "Service Attention", + "Azure Data Explorer" + ], + "mentionees": [ + "ilayrn", + "orhasban", + "zoharHenMicrosoft", + "sagivf", + "Aviv-Yaniv" + ] + }, + { + "labels": [ + "Service Attention", + "Lab Services" + ], + "mentionees": [ + "Tanmayeekamath" + ] + }, + { + "labels": [ + "Service Attention", + "Logic App" + ], + "mentionees": [ + "Azure/azure-logicapps-team" + ] + }, + { + "labels": [ + "Service Attention", + "LOUIS" + ], + "mentionees": [ + "minamnmik" + ] + }, + { + "labels": [ + "Service Attention", + "Managed Identity" + ], + "mentionees": [ + "varunkch" + ] + }, + { + "labels": [ + "Service Attention", + "Machine Learning" + ], + "mentionees": [ + "azureml-github" + ] + }, + { + "labels": [ + "Service Attention", + "Machine Learning Compute" + ], + "mentionees": [ + "azureml-github" + ] + }, + { + "labels": [ + "Service Attention", + "Machine Learning Experimentation" + ], + "mentionees": [ + "aashishb" + ] + }, + { + "labels": [ + "Service Attention", + "Managed Services" + ], + "mentionees": [ + "Lighthouse-Azure" + ] + }, + { + "labels": [ + "Service Attention", + "MariaDB" + ], + "mentionees": [ + "ambhatna", + "savjani" + ] + }, + { + "labels": [ + "Service Attention", + "Marketplace Ordering" + ], + "mentionees": [ + "prbansa" + ] + }, + { + "labels": [ + "Service Attention", + "Media Services" + ], + "mentionees": [ + "akucer" + ] + }, + { + "labels": [ + "Service Attention", + "Migrate" + ], + "mentionees": [ + "shijojoy" + ] + }, + { + "labels": [ + "Service Attention", + "Mobile Engagement" + ], + "mentionees": [ + "kpiteira" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor" + ], + "mentionees": [ + "SameergMS", + "dadunl" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - Autoscale" + ], + "mentionees": [ + "AzMonEssential" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - ActivityLogs" + ], + "mentionees": [ + "AzMonEssential" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - Metrics" + ], + "mentionees": [ + "AzMonEssential" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - Diagnostic Settings" + ], + "mentionees": [ + "AzMonEssential" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - Alerts" + ], + "mentionees": [ + "AzmonAlerts" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - ActionGroups" + ], + "mentionees": [ + "AzmonActionG" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - LogAnalytics" + ], + "mentionees": [ + "AzmonLogA" + ] + }, + { + "labels": [ + "Service Attention", + "Monitor - ApplicationInsights" + ], + "mentionees": [ + "azmonapplicationinsights" + ] + }, + { + "labels": [ + "Service Attention", + "MySQL" + ], + "mentionees": [ + "ambhatna", + "savjani" + ] + }, + { + "labels": [ + "Service Attention", + "Network" + ], + "mentionees": [ + "aznetsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Application Gateway" + ], + "mentionees": [ + "appgwsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - CDN" + ], + "mentionees": [ + "t-bzhan", + "gxue" + ] + }, + { + "labels": [ + "Service Attention", + "Network - DDOS Protection" + ], + "mentionees": [ + "ddossuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - ExpressRoute" + ], + "mentionees": [ + "exrsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Firewall" + ], + "mentionees": [ + "fwsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Front Door" + ], + "mentionees": [ + "cdnfdsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Load Balancer" + ], + "mentionees": [ + "slbsupportgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Virtual Network NAT" + ], + "mentionees": [ + "vnetsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Network Watcher" + ], + "mentionees": [ + "netwatchsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - DNS" + ], + "mentionees": [ + "dnssuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Traffic Manager" + ], + "mentionees": [ + "tmsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - VPN Gateway" + ], + "mentionees": [ + "vpngwsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Notification Hub" + ], + "mentionees": [ + "tjsomasundaram" + ] + }, + { + "labels": [ + "Service Attention", + "Operational Insights" + ], + "mentionees": [ + "AzmonLogA" + ] + }, + { + "labels": [ + "Service Attention", + "Policy" + ], + "mentionees": [ + "aperezcloud", + "kenieva" + ] + }, + { + "labels": [ + "Service Attention", + "Policy Insights" + ], + "mentionees": [ + "kenieva" + ] + }, + { + "labels": [ + "Service Attention", + "PostgreSQL" + ], + "mentionees": [ + "sunilagarwal", + "lfittl-msft", + "sr-msft", + "niklarin" + ] + }, + { + "labels": [ + "Service Attention", + "Recovery Services Backup" + ], + "mentionees": [ + "pvrk", + "adityabalaji-msft" + ] + }, + { + "labels": [ + "Service Attention", + "Recovery Services Site-Recovery" + ], + "mentionees": [ + "Sharmistha-Rai" + ] + }, + { + "labels": [ + "Service Attention", + "Redis Cache" + ], + "mentionees": [ + "yegu-ms" + ] + }, + { + "labels": [ + "Service Attention", + "Relay" + ], + "mentionees": [ + "jfggdl" + ] + }, + { + "labels": [ + "Service Attention", + "Reservations" + ], + "mentionees": [ + "Rkapso" + ] + }, + { + "labels": [ + "Service Attention", + "Resource Authorization" + ], + "mentionees": [ + "darshanhs90", + "AshishGargMicrosoft" + ] + }, + { + "labels": [ + "Service Attention", + "Resource Graph" + ], + "mentionees": [ + "chiragg4u" + ] + }, + { + "labels": [ + "Service Attention", + "Resource Health" + ], + "mentionees": [ + "stephbaron" + ] + }, + { + "labels": [ + "Service Attention", + "Scheduler" + ], + "mentionees": [ + "derek1ee" + ] + }, + { + "labels": [ + "Service Attention", + "Search" + ], + "mentionees": [ + "brjohnstmsft", + "bleroy", + "tjacobhi", + "markheff", + "miwelsh" + ] + }, + { + "labels": [ + "Service Attention", + "Security" + ], + "mentionees": [ + "chlahav" + ] + }, + { + "labels": [ + "Service Attention", + "Service Bus" + ], + "mentionees": [ + "Saglodha" + ] + }, + { + "labels": [ + "Service Attention", + "Service Fabric" + ], + "mentionees": [ + "QingChenmsft", + "vaishnavk", + "juhacket" + ] + }, + { + "labels": [ + "Service Attention", + "Schema Registry" + ], + "mentionees": [ + "arerlend", + "alzimmermsft" + ] + }, + { + "labels": [ + "Service Attention", + "SignalR" + ], + "mentionees": [ + "sffamily", + "chenkennt" + ] + }, + { + "labels": [ + "Service Attention", + "SQL" + ], + "mentionees": [ + "azureSQLGitHub" + ] + }, + { + "labels": [ + "Service Attention", + "SQL - VM" + ], + "mentionees": [ + "azureSQLGitHub" + ] + }, + { + "labels": [ + "Service Attention", + "SQL - Backup & Restore" + ], + "mentionees": [ + "azureSQLGitHub" + ] + }, + { + "labels": [ + "Service Attention", + "SQL - Data Security" + ], + "mentionees": [ + "azureSQLGitHub" + ] + }, + { + "labels": [ + "Service Attention", + "SQL - Elastic Jobs" + ], + "mentionees": [ + "azureSQLGitHub" + ] + }, + { + "labels": [ + "Service Attention", + "SQL - Managed Instance" + ], + "mentionees": [ + "azureSQLGitHub" + ] + }, + { + "labels": [ + "Service Attention", + "SQL - Replication & Failover" + ], + "mentionees": [ + "azureSQLGitHub" + ] + }, + { + "labels": [ + "Service Attention", + "Storage" + ], + "mentionees": [ + "xgithubtriage" + ] + }, + { + "labels": [ + "Service Attention", + "Storsimple" + ], + "mentionees": [ + "anoobbacker", + "ganzee", + "manuaery", + "patelkunal" + ] + }, + { + "labels": [ + "Service Attention", + "Stream Analytics" + ], + "mentionees": [ + "atpham256" + ] + }, + { + "labels": [ + "Service Attention", + "Subscription" + ], + "mentionees": [ + "anuragdalmia", + "shilpigautam", + "ramaganesan-rg" + ] + }, + { + "labels": [ + "Service Attention", + "Support" + ], + "mentionees": [ + "shahbj79", + "mit2nil", + "aygoya", + "ganganarayanan" + ] + }, + { + "labels": [ + "Service Attention", + "Synapse" + ], + "mentionees": [ + "wonner", + "zesluo" + ] + }, + { + "labels": [ + "Service Attention", + "Tables" + ], + "mentionees": [ + "klaaslanghout" + ] + }, + { + "labels": [ + "Service Attention", + "TimeseriesInsights" + ], + "mentionees": [ + "Shipra1Mishra" + ] + }, + { + "labels": [ + "Service Attention", + "vFXT" + ], + "mentionees": [ + "zhusijia26" + ] + }, + { + "labels": [ + "Service Attention", + "Web Apps" + ], + "mentionees": [ + "AzureAppServiceCLI", + "antcp" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Virtual Network" + ], + "mentionees": [ + "vnetsuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Virtual WAN" + ], + "mentionees": [ + "vwansuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Network Virtual Appliance" + ], + "mentionees": [ + "nvasuppgithub" + ] + }, + { + "labels": [ + "Service Attention", + "Network - Bastion" + ], + "mentionees": [ + "bastionsuppgithub" + ] + }, + { + "mentionees": [ + "Azure/azure-iot-cli-triage" + ], + "labels": [ + "Service Attention", + "IoT/CLI" + ] + }, + { + "labels": [ + "Azure.Spring - Cosmos" + ], + "mentionees": [ + "kushagraThapur" + ] + }, + { + "mentionees": [ + "privlinksuppgithub" + ], + "labels": [ + "Service Attention", + "Network - Private Link" + ] + }, + { + "labels": [ + "Service Attention", + "Azure Arc enabled servers" + ], + "mentionees": [ + "rpsqrd", + "edyoung" + ] + }, + { + "labels": [ + "Service Attention", + "SecurityInsights" + ], + "mentionees": [ + "amirkeren" + ] + }, + { + "labels": [ + "Service Attention", + "ACS" + ], + "mentionees": [ + "acsdevx-msft" + ] + }, + { + "labels": [ + "Service Attention", + "ML-AutoML" + ], + "mentionees": [ + "Aniththa" + ] + }, + { + "labels": [ + "Service Attention", + "ML-Hyperdrive" + ], + "mentionees": [ + "Aniththa" + ] + }, + { + "labels": [ + "Service Attention", + "ML-Compute" + ], + "mentionees": [ + "nishankgu" + ] + }, + { + "labels": [ + "Service Attention", + "ML-Core UI" + ], + "mentionees": [ + "abeomor" + ] + }, + { + "labels": [ + "Service Attention", + "ML-Data4ML" + ], + "mentionees": [ + "SturgeonMi" + ] + }, + { + "labels": [ + "Service Attention", + "ML-Designer" + ], + "mentionees": [ + "alainli0928" + ] + }, + { + "labels": [ + "Service Attention", + "ML-Data Labeling" + ], + "mentionees": [ + "kvijaykannan" + ] + }, + { + "labels": [ + "ML-Inference", + "Service Attention" + ], + "mentionees": [ + "shivanissambare" + ] + }, + { + "labels": [ + "ML-MLOps", + "Service Attention" + ], + "mentionees": [ + "lostmygithubaccount" + ] + }, + { + "labels": [ + "ML-Pipelines", + "Service Attention" + ], + "mentionees": [ + "shbijlan" + ] + }, + { + "labels": [ + "ML-Responsible AI", + "Service Attention" + ], + "mentionees": [ + "minthigpen" + ] + }, + { + "labels": [ + "ML-Reinforcement Learning", + "Service Attention" + ], + "mentionees": [ + "keijik" + ] + }, + { + "labels": [ + "ML-Training", + "Service Attention" + ], + "mentionees": [ + "lostmygithubaccount" + ] + }, + { + "labels": [ + "ML-Workspace Management", + "Service Attention" + ], + "mentionees": [ + "rastala" + ] + }, + { + "labels": [ + "Quantum", + "Service Attention" + ], + "mentionees": [ + "ricardo-espinoza" + ] + }, + { + "labels": [ + "Spring Cloud", + "Service Attention" + ], + "mentionees": [ + "ShichaoQiu", + "yuwzho", + "yucwan" + ] + }, + { + "labels": [ + "Service Attention", + "Serial Console" + ], + "mentionees": [ + "CraigWiand" + ] + }, + { + "labels": [ + "Monitor - Exporter", + "Service Attention" + ], + "mentionees": [ + "cijothomas", + "reyang", + "rajkumar-rangaraj", + "TimothyMothra", + "vishweshbankwar" + ] + }, + { + "labels": [ + "Service Attention", + "WebPubSub" + ], + "mentionees": [ + "JialinXin", + "vicancy" + ] + }, + { + "labels": [ + "Service Attention", + "ContainerApp" + ], + "mentionees": [ + "calvinsID" + ] + } + ], + "replyTemplate": "Thanks for the feedback! We are routing this to the appropriate team for follow-up. cc ${mentionees}.", + "taskName": "Triage issues to the service team" + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasPermissions", + "parameters": { + "permissions": "write" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasAssociation", + "parameters": { + "association": "MEMBER" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasAssociation", + "parameters": { + "association": "COLLABORATOR" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasPermissions", + "parameters": { + "permissions": "admin" + } + } + ] + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "Add customer-reported label to PRs from customers ", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "customer-reported" + } + }, + { + "name": "addReply", + "parameters": { + "comment": "Thank you for your contribution ${issueAuthor}! We will review the pull request and get back to you soon." + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasPermissions", + "parameters": { + "association": "MEMBER", + "permissions": "write" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasAssociation", + "parameters": { + "association": "MEMBER" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasAssociation", + "parameters": { + "association": "COLLABORATOR" + } + } + ] + }, + { + "operator": "not", + "operands": [ + { + "name": "activitySenderHasPermissions", + "parameters": { + "permissions": "admin" + } + } + ] + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "Add customer-reported label to issues coming from non-collaborators", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "customer-reported" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "question" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isOpen", + "parameters": {} + }, + { + "name": "labelAdded", + "parameters": { + "label": "CXP Attention" + } + }, + { + "operator": "not", + "operands": [ + { + "name": "hasLabel", + "parameters": { + "label": "Service Attention" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[CXP Pilot] CXP Attention Responder", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Thank you for your feedback. This has been routed to the support team for assistance." + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az \\b(aks|acs|openshift)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az \\b(aks|acs|openshift)\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[AKS] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "AKS" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b(aks|Aks|AKS|acs|Acs|ACS|openshift|Openshift|OPENSHIFT)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[aks] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "AKS" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az ml", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az ml", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[machine learning] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Machine Learning" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "extension/ml" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Mm][Ll])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Mm][Ll])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[machine learning] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Machine Learning" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "extension/ml" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az pipelines", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az pipelines", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[pipelines] auto assign labels and users based on issue description. ", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Pipelines" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "DevOps" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az ssh", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az ssh", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[ssh] auto assign labels and users based on issue description. ", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "VM SSH" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az ssh", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az ssh", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ssh] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "VM SSH" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jiasli" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "jiasli" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az connectedk8s", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az connectedk8s", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[connectedk8s] auto assign labels and users based on issue description. ", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Connected Kubernetes" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b(connectedk8s)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b(connectedk8s)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[connectedk8s] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Connected Kubernetes" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az spring-cloud", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az spring-cloud", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[spring-cloud] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Spring Cloud" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Ss]pring-?[Cc]loud", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Ss]pring-?[Cc]loud", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[spring-cloud] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Spring Cloud" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az monitor", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az monitor", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[monitor] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Monitor" + } + }, + { + "name": "assignToUser", + "parameters": { + "groupId": "", + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Backlog" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Mm][Oo][Nn][Ii][Tt][Oo][Rr])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Mm][Oo][Nn][Ii][Tt][Oo][Rr])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[monitor] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Monitor" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "necusjz" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b(network|Network|NETWORK|bastion|Bastion|BASTION)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[Network] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "necusjz" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Network" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az network", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az network", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Network" + } + }, + { + "name": "addMilestone", + "parameters": { + "groupId": "", + "milestoneName": "Backlog" + } + }, + { + "name": "assignToUser", + "parameters": { + "groupId": "", + "user": "necusjz" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + } + ], + "taskName": "[Network] auto assign labels and users based on issue description. Please do not delete" + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az iot", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az iot", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[iot] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "IoT/CLI" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Ii][Oo][Tt])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[iot] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "IoT/CLI" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az kusto", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az kusto", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[kusto] auto assign labels and users based on issue description. ", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Azure Data Explorer" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Kk][Uu][Ss][Tt][Oo])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Kk][Uu][Ss][Tt][Oo])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[kusto] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Azure Data Explorer" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "jsntcy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az storage", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az storage", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[Storage] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Storage" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Backlog" + } + }, + { + "name": "assignToUser", + "parameters": { + "groupId": "", + "user": "evelyn-ys" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + } + ], + "dangerZone": { + "respondToBotActions": false, + "acceptRespondToBotActions": true + } + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Ss][Tt][Oo][Rr][Aa][Gg][Ee])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[Storage] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "calvinhzy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Storage" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b(keyvault|Keyvault|KEYVAULT)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[keyvault] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "KeyVault" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az keyvault", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az keyvault", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[keyvault] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "KeyVault" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "assignToUser", + "parameters": { + "groupId": "", + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Backlog" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az cosmosdb", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az cosmosdb", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[cosmosdb] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Cosmos" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Cc][Oo][Ss][Mm][Oo][Ss][Dd][Bb])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Cc][Oo][Ss][Mm][Oo][Ss][Dd][Bb])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[cosmosdb] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Cosmos" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "calvinhzy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az eventgrid", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az eventgrid", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[eventgrid] auto assign labels and users based on issue description. ", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Event Grid" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b(account|Account|ACCOUNT|login|Login|LOGIN)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[account] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jiasli" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "jiasli" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Account" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az \\b(account|login)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az \\b(account|login)\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[account] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Account" + } + }, + { + "name": "assignToUser", + "parameters": { + "groupId": "", + "user": "jiasli" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Backlog" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ datashare ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ datashare ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @evelyn-ys,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ edgeorder ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ edgeorder ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @necusjz,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ cosmosdb-preview ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ cosmosdb-preview ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @evelyn-ys,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ application-insights ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ application-insights ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @necusjz,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "prTargetsBranch", + "parameters": { + "branchName": "[ datamigration ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ datamigration ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ aks-preview ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ aks-preview ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ connectedk8s ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ connectedk8s ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ appservice-kube ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ appservice-kube ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ account ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ account ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ vmware ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ vmware ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ stream-analytics ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ stream-analytics ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @necusjz,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ confidentialledger ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ confidentialledger ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ hack ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ hack ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ alertsmanagement ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ alertsmanagement ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ vm-repair ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ vm-repair ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ image-copy ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ image-copy ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ quantum ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ quantum ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ rdbms-connect ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ rdbms-connect ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @evelyn-ys,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ azurestackhci ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ azurestackhci ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ logic ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ logic ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @jsntcy,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "jsntcy" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ databricks ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ databricks ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ resource-mover ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ resource-mover ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ k8s-configuration ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ k8s-configuration ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ storage-preview ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ storage-preview ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @evelyn-ys,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ enterprise-edge ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ enterprise-edge ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ k8s-extension ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ k8s-extension ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ communication ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ communication ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ connectedvmware ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ connectedvmware ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ scheduled-query ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ scheduled-query ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ init ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ init ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ network-manager ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ network-manager ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @necusjz,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ azure-firewall ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ azure-firewall ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ acrtransfer ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ acrtransfer ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ virtual-wan ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ virtual-wan ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ ssh ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ ssh ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @jiasli,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "jiasli" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ image-gallery ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ image-gallery ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ webpubsub ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ webpubsub ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ support ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ support ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ logz ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ logz ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @kairu-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ kusto ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ kusto ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ connectedmachine ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ connectedmachine ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ functionapp ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ functionapp ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ diskpool ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ diskpool ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @calvinhzy,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "calvinhzy" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "and", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "[ spring-cloud ]" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ spring-cloud ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addReply", + "parameters": { + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Aa][Rr][Cc][Dd][Aa][Tt][Aa])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Aa][Rr][Cc][Dd][Aa][Tt][Aa])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[arcdata] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Qq][Uu][Oo][Tt][Aa])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Qq][Uu][Oo][Tt][Aa])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[quota] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "necusjz" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Cc][Oo][Dd][Ee][Gg][Ee][Nn])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Cc][Oo][Dd][Ee][Gg][Ee][Nn])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[codegen] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Code Gen" + } + }, + { + "name": "assignToUser", + "parameters": { + "label": "Synapse", + "user": "kairu-ms" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Backlog" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Cc][Oo][Dd][Ee][Gg][Ee][Nn])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Cc][Oo][Dd][Ee][Gg][Ee][Nn])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[codegen] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "necusjz" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Code Gen" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Qq][Uu][Aa][Nn][Tt][Uu][Mm])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Qq][Uu][Aa][Nn][Tt][Uu][Mm])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[quantum] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "necusjz" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Quantum" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z \\b(vm|vmss|image|disk|snapshot)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z \\b(vm|vmss|image|disk|snapshot)\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[Compute] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Compute" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Backlog" + } + }, + { + "name": "assignToUser", + "parameters": { + "groupId": "", + "user": "zhoxing-ms" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b(compute|Compute|COMPUTE|VM|vm)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b(compute|Compute|COMPUTE|VM|vm)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[Compute] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Compute" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az \\b(appservice|webapp)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az \\b(appservice|webapp)\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[appservice] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "App Services" + } + }, + { + "name": "addLabel", + "parameters": { + "milestoneName": "Backlog", + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "extension/webapp" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Web Apps" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Aa][Pp][Pp][Ss][Ee][Rr][Vv][Ii][Cc][Ee])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Aa][Pp][Pp][Ss][Ee][Rr][Vv][Ii][Cc][Ee])\\b", + "isRegex": true + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Ww][Ee][Bb][Aa][Pp][Pp])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Ww][Ee][Bb][Aa][Pp][Pp])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[appservice] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "App Services" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jiasli" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Web Apps" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "extension/webapp" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az datamigration", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az datamigration", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[datamigration] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Data Migration" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Dd]ata ?[Mm]igration)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Dd]ata ?[Mm]igration)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[datamigration] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Data Migration" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "calvinhzy" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Gg][Rr][Aa][Ff][Aa][Nn][Aa])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Gg][Rr][Aa][Ff][Aa][Nn][Aa])\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[grafana] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "milestoneName": "Backlog", + "label": "extension/grafana" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "jiasli" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Gg][Rr][Aa][Ff][Aa][Nn][Aa])\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Gg][Rr][Aa][Ff][Aa][Nn][Aa])\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[grafana] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "extension/grafana" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az functionapp", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az functionapp", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[functionapp] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Functions" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Ff]unction ?[Aa]pp", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Ff]unction ?[Aa]pp", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[functionapp] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Functions" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Ee]vent ?[Gg]rid)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Ee]vent ?[Gg]rid)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[eventgrid] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Event Grid" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "calvinhzy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az desktopvirtualization", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az desktopvirtualization", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[desktopvirtualization] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Desktop Virtualization" + } + }, + { + "name": "assignToUser", + "parameters": { + "label": "Functions", + "user": "wangzelin007" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Backlog" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Dd]esktop[Vv]irtualization", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Dd]esktop[Vv]irtualization", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[desktopvirtualization] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "wangzelin007" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Desktop Virtualization" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az containerapp", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az containerapp", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[container app] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "ContainerApp" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Cc]ontainer ?[Aa]pps?)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Cc]ontainer ?[Aa]pps?)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[container app] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "ContainerApp" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Aa]lerts ?[Mm]anagement)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Aa]lerts ?[Mm]anagement)\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[Alerts Management] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Alerts Management" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Aa]lerts ?[Mm]anagement)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Aa]lerts ?[Mm]anagement)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[Alerts Management] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Alerts Management" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms " + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z [Dd]ataprotection", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z [Dd]ataprotection", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[dataprotection] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Data Protection" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Dd]ata ?protection", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Dd]ata ?protection", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[dataprotection] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Data Protection" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "calvinhzy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az network bastion", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az network bastion", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[network bastion] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Network - Bastion" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Network" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b(ci|Ci|CI)\\b", + "isRegex": true + } + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ci] Auto assign labels and reviewers based on PR title/description.", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CI" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jiasli" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "wangzelin007" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z network manager", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z network manager", + "isRegex": true + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Nn]etwork ?[Mm]anager)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Nn]etwork ?[Mm]anager)\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[NetworkManager] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Network" + } + }, + { + "name": "assignToUser", + "parameters": { + "label": "CXP Attention", + "user": "necusjz" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z network manager", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z network manager", + "isRegex": true + } + }, + { + "name": "titleContains", + "parameters": { + "isRegex": true, + "titlePattern": "\\b([Nn]etwork ?[Mm]anager)\\b" + } + }, + { + "name": "bodyContains", + "parameters": { + "isRegex": true, + "bodyPattern": "\\b([Nn]etwork ?[Mm]anager)\\b" + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[NetworkManager] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Network" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z redisenterprise", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z redisenterprise", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[redis enterprise] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Redis Enterprise" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z redisenterprise", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z redisenterprise", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[redis enterprise] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Redis Enterprise" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "calvinhzy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z k8sconfiguration", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z k8sconfiguration", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[k8sconfiguration] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Kubernetes Configuration" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z k8sconfiguration", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z k8sconfiguration", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[k8sconfiguration] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Kubernetes Configuration" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z sig", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z sig", + "isRegex": true + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Ii]mage-?{Gg]allery)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Ii]mage-?{Gg]allery)\\b", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[image-gallery] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Compute - Images" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z sig", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z sig", + "isRegex": true + } + }, + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Ii]mage-?{Gg]allery)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[image-gallery] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Compute - Images" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z quantum", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z quantum", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[quantum] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Quantum" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z arcdata", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z arcdata", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[acrdata] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "arcdata" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z arcdata", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z arcdata", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[arcdata] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "jsntcy" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "arcdata" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + } + ] + }, + "disabled": true + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z sql", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z sql", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[sql] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "evelyn-ys" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "evelyn-ys" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "SQL" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "calvinhzy" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jiasli" + } + } + ] + }, + "disabled": false + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z sql", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z sql", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[sql] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "SQL" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z attestation", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z attestation", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[attestation] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "kairu-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Attestation" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jiasli" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + } + ] + }, + "disabled": true + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z attestation", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z attestation", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[attestation] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Attestation" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "k8s-extension", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "k8s-extension", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[k8s-extension] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Aa]z stream-analytics", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Aa]z stream-analytics", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[stream-analytics] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Stream Analytics" + } + }, + { + "name": "assignToUser", + "parameters": { + "label": "CXP Attention", + "user": "jsntcy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "\\b([Ss]tream[ -]?[Aa]nalytics)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "\\b([Ss]tream[ -]?[Aa]nalytics)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[stream-analytics] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "necusjz" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Stream Analytics" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "kairu-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Cc]onnected ?[Mm]achine", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "[Cc]onnected ?[Mm]achine", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[connectedmachine] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az healthcareapis", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az healthcareapis", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[healthcareapis] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "extension/healthcare" + } + }, + { + "name": "assignToUser", + "parameters": { + "label": "CXP Attention", + "user": "wangzelin007" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "healthcareapis", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "healthcareapis", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[healthcareapis] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "yonzhan" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "wangzelin007" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "extension/healthcare" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "jsntcy" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension [ healthcareapis ]", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ healthcareapis ] Notify to review Update index.json PR", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "wangzelin007" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addReply", + "parameters": { + "reviewer": "calvinhzy", + "comment": "Hi @wangzelin007,\nPlease review the pull request." + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "[Release] Update index.json for extension [ subscription ]", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[ subscription ] Notify to review Update index.json PR", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Subscription" + } + }, + { + "name": "addReply", + "parameters": { + "reviewer": "calvinhzy", + "comment": "Hi @zhoxing-ms,\nPlease review the pull request." + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "PullRequestResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az account", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az account", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "pull_request", + "eventNames": [ + "pull_request", + "issues", + "project_card" + ], + "taskName": "[subscription] Auto assign labels and reviewers based on PR title/description. Please do not delete", + "actions": [ + { + "name": "requestReviewer", + "parameters": { + "reviewer": "zhoxing-ms" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "requestReviewer", + "parameters": { + "reviewer": "wangzelin007" + } + }, + { + "name": "assignToUser", + "parameters": { + "user": "zhoxing-ms" + } + }, + { + "name": "addMilestone", + "parameters": { + "milestoneName": "Jul 2022 (2022-08-02)" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Subscription" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az account", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az account", + "isRegex": true + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[subscription] auto assign labels and users based on issue description. Please do not delete", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Subscription" + } + }, + { + "name": "assignToUser", + "parameters": { + "label": "CXP Attention", + "user": "zhoxing-ms" + } + } + ] + } + }, + { + "taskType": "trigger", + "capabilityId": "IssueResponder", + "subCapability": "IssuesOnlyResponder", + "version": "1.0", + "config": { + "conditions": { + "operator": "and", + "operands": [ + { + "operator": "or", + "operands": [ + { + "name": "isAction", + "parameters": { + "action": "opened" + } + } + ] + }, + { + "operator": "or", + "operands": [ + { + "name": "titleContains", + "parameters": { + "titlePattern": "az \\b(bot|Bot|BOT)\\b", + "isRegex": true + } + }, + { + "name": "bodyContains", + "parameters": { + "bodyPattern": "az \\b(bot|Bot|BOT)\\b", + "isRegex": true + } + } + ] + } + ] + }, + "eventType": "issue", + "eventNames": [ + "issues", + "project_card" + ], + "taskName": "[bot] Test", + "actions": [ + { + "name": "addLabel", + "parameters": { + "label": "Auto-Assign" + } + }, + { + "name": "addLabel", + "parameters": { + "label": "Test" + } + } + ] + }, + "disabled": false + } + ], + "userGroups": [ + { + "_id": "5f074bcc4200c210c870e103", + "groupType": "GitHub", + "name": "MariaDB and MySQL Contacts", + "githubUserNames": [ + "ambhatna", + "savjani", + "mksuni", + "Bashar-MSFT" + ], + "assignmentSchemes": [ + { + "target": "All", + "lastAssignedIndex": 0 + } + ] + } + ] +} diff --git a/linter_exclusions.yml b/linter_exclusions.yml index 767a5b20ca6..d7c4499179a 100644 --- a/linter_exclusions.yml +++ b/linter_exclusions.yml @@ -226,6 +226,14 @@ sql mi-arc update: preferred_primary_replica: rule_exclusions: - option_length_too_long + sync_secondary_to_commit: + rule_exclusions: + - option_length_too_long +sql mi-arc create: + parameters: + sync_secondary_to_commit: + rule_exclusions: + - option_length_too_long attestation policy set: parameters: new_attestation_policy: diff --git a/scripts/ci/build_ext_cmd_tree.sh b/scripts/ci/build_ext_cmd_tree.sh index 6320bcccc0b..43860bd7a06 100644 --- a/scripts/ci/build_ext_cmd_tree.sh +++ b/scripts/ci/build_ext_cmd_tree.sh @@ -20,7 +20,8 @@ export AZURE_EXTENSION_INDEX_URL=https://raw.githubusercontent.com/Azure/azure-c output=$(az extension list-available --query [].name -otsv) # azure-cli-ml is replaced by ml # TODO: azure-batch-cli-extensions is not compatible with latest batch SDK. -blocklist=("azure-cli-ml" "azure-batch-cli-extensions") +# disable alias which relies on Jinja2 2.10 +blocklist=("azure-cli-ml" "azure-batch-cli-extensions" "alias") rm -f ~/.azure/extCmdTreeToUpload.json diff --git a/scripts/ci/credscan/CredScanSuppressions.json b/scripts/ci/credscan/CredScanSuppressions.json index fd10962fc74..397587fa934 100644 --- a/scripts/ci/credscan/CredScanSuppressions.json +++ b/scripts/ci/credscan/CredScanSuppressions.json @@ -140,9 +140,11 @@ "src\\containerapp\\azext_containerapp\\tests\\latest\\recordings\\test_containerapp_dapr_e2e.yaml", "src\\containerapp\\azext_containerapp\\tests\\latest\\recordings\\test_containerapp_up_image_e2e.yaml", "src\\containerapp\\azext_containerapp\\tests\\latest\\recordings\\test_containerapp_custom_domains_e2e.yaml", + "src\\containerapp\\azext_containerapp\\tests\\latest\\recordings\\test_containerapp_revision_label_e2e.yaml", "src\\containerapp\\azext_containerapp\\tests\\latest\\cert.pfx", "src\\containerapp\\azext_containerapp\\tests\\latest\\test_containerapp_commands.py", - "src\\containerapp\\azext_containerapp\\tests\\latest\test_containerapp_env_commands.py" + "src\\containerapp\\azext_containerapp\\tests\\latest\\test_containerapp_env_commands.py", + "src\\containerapp\\azext_containerapp\\tests\\latest\\recordings\\test_containerapp_registry_msi.yaml" ], "_justification": "Dummy resources' keys left during testing Microsoft.App (required for log-analytics to create managedEnvironments)" }, diff --git a/scripts/ci/update_ext_cmd_tree.py b/scripts/ci/update_ext_cmd_tree.py index e03b910b442..ab746a53606 100644 --- a/scripts/ci/update_ext_cmd_tree.py +++ b/scripts/ci/update_ext_cmd_tree.py @@ -44,8 +44,7 @@ def update_cmd_tree(ext_name): az_cli.invocation = invoker sys.path.append(ext_dir) - extension_command_table, _ = _load_extension_command_loader(invoker.commands_loader, - "", ext_mod) + extension_command_table, _ = _load_extension_command_loader(invoker.commands_loader, None, ext_mod) EXT_CMD_TREE_TO_UPLOAD = Session() EXT_CMD_TREE_TO_UPLOAD.load(os.path.expanduser(os.path.join('~', '.azure', file_name))) diff --git a/src/aks-preview/HISTORY.rst b/src/aks-preview/HISTORY.rst index db1210450df..eb668103637 100644 --- a/src/aks-preview/HISTORY.rst +++ b/src/aks-preview/HISTORY.rst @@ -12,6 +12,55 @@ To release a new version, please select a new version number (usually plus 1 to Pending +++++++ +0.5.87 +++++++ + +* Fix snapshot not resolved according to the subscriptions field in the `--snapshot-id`` option. + +0.5.86 +++++++ + +* Support network plugin mode for enabling Azure CNI Overlay preview feature. + +0.5.85 +++++++ + +* Add support for Blob csi driver. + +0.5.84 (NOT RELEASED) ++++++++++++++++++++++ + +* Skip this version due to conflict. + +0.5.83 +++++++ + +* Update the minimum required cli core version to `2.37.0`. +* Enable v2 decorator pattern. +* Fix container name inconsistency for private clusters in kollect command. +* Temp fix for properties missing in KMS profile in update scenario. + +0.5.82 +++++++ + +* Support Key Vault with private link when enabling Azure KeyVault KMS. + +0.5.81 +++++++ + +* Add Trusted Access Role Binding commands + * az aks trustedaccess rolebinding create + * az aks trustedaccess rolebinding update + * az aks trustedaccess rolebinding list + * az aks trustedaccess rolebinding show + * az aks trustedaccess rolebinding delete +* Fix: Remove permission prompt when saving config file to symlink with `az aks get-credentials`. + +0.5.80 +++++++ + +* Fix the value of option --zones not being transmitted correctly for `az aks nodepool add`, see issue `\#4953 `_. + 0.5.79 ++++++ @@ -50,8 +99,8 @@ Pending * Fix import issues with command group `az aks draft` -0.5.72 -++++++ +0.5.72 (NOT RELEASED) ++++++++++++++++++++++ * First public release for `az aks draft` diff --git a/src/aks-preview/azcli_aks_live_test/configs/cli_coverage_config.json b/src/aks-preview/azcli_aks_live_test/configs/cli_coverage_config.json index 238a090bd8b..349641fffe0 100644 --- a/src/aks-preview/azcli_aks_live_test/configs/cli_coverage_config.json +++ b/src/aks-preview/azcli_aks_live_test/configs/cli_coverage_config.json @@ -6,12 +6,6 @@ "warning_missing_lines": null }, "files": { - "decorator.py": { - "fail_percent": 100, - "warning_percent": 100, - "fail_missing_lines": 0, - "warning_missing_lines": 0 - }, "agentpool_decorator.py": { "fail_percent": 100, "warning_percent": 100, diff --git a/src/aks-preview/azcli_aks_live_test/configs/ext_coverage_config.json b/src/aks-preview/azcli_aks_live_test/configs/ext_coverage_config.json index 897640a7ee3..bb3494b6c05 100644 --- a/src/aks-preview/azcli_aks_live_test/configs/ext_coverage_config.json +++ b/src/aks-preview/azcli_aks_live_test/configs/ext_coverage_config.json @@ -1,12 +1,18 @@ { "totals": { - "fail_percent": 59, + "fail_percent": 60, "warning_percent": 80, "fail_missing_lines": null, "warning_missing_lines": null }, "files": { - "decorator.py": { + "agentpool_decorator.py": { + "fail_percent": 100, + "warning_percent": 100, + "fail_missing_lines": 0, + "warning_missing_lines": 0 + }, + "managed_cluster_decorator.py": { "fail_percent": 100, "warning_percent": 100, "fail_missing_lines": 0, diff --git a/src/aks-preview/azcli_aks_live_test/configs/ext_matrix_default.json b/src/aks-preview/azcli_aks_live_test/configs/ext_matrix_default.json index 32c28f5670a..99724539e38 100644 --- a/src/aks-preview/azcli_aks_live_test/configs/ext_matrix_default.json +++ b/src/aks-preview/azcli_aks_live_test/configs/ext_matrix_default.json @@ -29,11 +29,9 @@ "test_list_trustedaccess_roles", "test_aks_custom_ca_trust_flow", "test_aks_create_with_csi_driver_v2", - "test_aks_create_and_update_csi_driver_to_v2" - ], - "fixed, waiting for rp rollout": [ - "test_aks_create_with_azurekeyvaultkms", - "test_aks_update_with_azurekeyvaultkms" + "test_aks_create_and_update_csi_driver_to_v2", + "test_aks_create_with_azurekeyvaultkms_private_key_vault", + "test_aks_update_with_azurekeyvaultkms_private_key_vault" ] } } \ No newline at end of file diff --git a/src/aks-preview/azext_aks_preview/__init__.py b/src/aks-preview/azext_aks_preview/__init__.py index f03779b3268..70fda0ad2c1 100644 --- a/src/aks-preview/azext_aks_preview/__init__.py +++ b/src/aks-preview/azext_aks_preview/__init__.py @@ -33,7 +33,7 @@ def __init__(self, cli_ctx=None): def load_command_table(self, args): super(ContainerServiceCommandsLoader, self).load_command_table(args) - from .commands import load_command_table + from azext_aks_preview.commands import load_command_table load_command_table(self, args) return self.command_table @@ -44,7 +44,7 @@ def load_arguments(self, command): else: super().load_arguments(command) - from ._params import load_arguments + from azext_aks_preview._params import load_arguments load_arguments(self, command) diff --git a/src/aks-preview/azext_aks_preview/_client_factory.py b/src/aks-preview/azext_aks_preview/_client_factory.py index d155618c33a..0457e36c3d1 100644 --- a/src/aks-preview/azext_aks_preview/_client_factory.py +++ b/src/aks-preview/azext_aks_preview/_client_factory.py @@ -13,13 +13,14 @@ CUSTOM_MGMT_AKS_PREVIEW = CustomResourceType('azext_aks_preview.vendored_sdks.azure_mgmt_preview_aks', 'ContainerServiceClient') +# Note: cf_xxx, as the client_factory option value of a command group at command declaration, it should ignore +# parameters other than cli_ctx; get_xxx_client is used as the client of other services in the command implementation, +# and usually accepts subscription_id as a parameter to reconfigure the subscription when sending the request -def get_container_service_client(cli_ctx, **_): - return get_mgmt_service_client(cli_ctx, CUSTOM_MGMT_AKS_PREVIEW) - -def cf_trustedaccess_role(cli_ctx, *_): - return get_container_service_client(cli_ctx).trusted_access_roles +# container service clients +def get_container_service_client(cli_ctx, subscription_id=None): + return get_mgmt_service_client(cli_ctx, CUSTOM_MGMT_AKS_PREVIEW, subscription_id=subscription_id) def cf_container_services(cli_ctx, *_): @@ -42,40 +43,46 @@ def cf_nodepool_snapshots(cli_ctx, *_): return get_container_service_client(cli_ctx).snapshots -# TODO: remove this -def cf_nodepool_snapshots_client(cli_ctx, subscription_id=None): - return get_mgmt_service_client(cli_ctx, CUSTOM_MGMT_AKS_PREVIEW, subscription_id=subscription_id).snapshots +def get_nodepool_snapshots_client(cli_ctx, subscription_id=None): + return get_container_service_client(cli_ctx, subscription_id=subscription_id).snapshots def cf_mc_snapshots(cli_ctx, *_): return get_container_service_client(cli_ctx).managed_cluster_snapshots -# TODO: remove this -def cf_mc_snapshots_client(cli_ctx, subscription_id=None): - return get_mgmt_service_client(cli_ctx, CUSTOM_MGMT_AKS_PREVIEW, subscription_id=subscription_id).managed_cluster_snapshots +def get_mc_snapshots_client(cli_ctx, subscription_id=None): + return get_container_service_client(cli_ctx, subscription_id=subscription_id).managed_cluster_snapshots + + +def cf_trustedaccess_role(cli_ctx, *_): + return get_container_service_client(cli_ctx).trusted_access_roles + + +def cf_trustedaccess_role_binding(cli_ctx, *_): + return get_container_service_client(cli_ctx).trusted_access_role_bindings -def cf_compute_service(cli_ctx, *_): +def get_compute_client(cli_ctx, *_): return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_COMPUTE) -def cf_resource_groups(cli_ctx, subscription_id=None): +def get_resource_groups_client(cli_ctx, subscription_id=None): return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES, subscription_id=subscription_id).resource_groups -def cf_resources(cli_ctx, subscription_id=None): +def get_resources_client(cli_ctx, subscription_id=None): return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES, subscription_id=subscription_id).resources -def cf_container_registry_service(cli_ctx, subscription_id=None): +def get_container_registry_client(cli_ctx, subscription_id=None): return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_CONTAINERREGISTRY, subscription_id=subscription_id) -def cf_storage(cli_ctx, subscription_id=None): +def get_storage_client(cli_ctx, subscription_id=None): return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_STORAGE, subscription_id=subscription_id) @@ -107,7 +114,6 @@ def get_graph_rbac_management_client(cli_ctx, **_): return client -# pylint: disable=inconsistent-return-statements def get_resource_by_name(cli_ctx, resource_name, resource_type): """Returns the ARM resource in the current subscription with resource_name. :param str resource_name: The name of resource diff --git a/src/aks-preview/azext_aks_preview/_completers.py b/src/aks-preview/azext_aks_preview/_completers.py index 61194dc5547..b5a0511d5b5 100644 --- a/src/aks-preview/azext_aks_preview/_completers.py +++ b/src/aks-preview/azext_aks_preview/_completers.py @@ -18,7 +18,7 @@ def get_k8s_upgrades_completion_list(cmd, prefix, namespace, **kwargs): # pylin def get_k8s_upgrades(cli_ctx, resource_group, name): - from ._client_factory import cf_managed_clusters + from azext_aks_preview._client_factory import cf_managed_clusters results = cf_managed_clusters(cli_ctx).get_upgrade_profile(resource_group, name).as_dict() return results['control_plane_profile']['upgrades'] @@ -33,7 +33,7 @@ def get_k8s_versions_completion_list(cmd, prefix, namespace, **kwargs): # pylin def get_k8s_versions(cli_ctx, location): """Return a list of Kubernetes versions available for a new cluster.""" - from ._client_factory import cf_container_services + from azext_aks_preview._client_factory import cf_container_services from jmespath import search # pylint: disable=import-error results = cf_container_services(cli_ctx).list_orchestrators(location, resource_type='managedClusters').as_dict() @@ -57,9 +57,9 @@ def get_vm_size_completion_list(cmd, prefix, namespace, **kwargs): # pylint: di def get_vm_sizes(cli_ctx, location): - from ._client_factory import cf_compute_service + from azext_aks_preview._client_factory import get_compute_client - return cf_compute_service(cli_ctx).virtual_machine_sizes.list(location) + return get_compute_client(cli_ctx).virtual_machine_sizes.list(location) def _get_location(cli_ctx, namespace): @@ -78,11 +78,11 @@ def _get_location(cli_ctx, namespace): def _get_location_from_resource_group(cli_ctx, resource_group_name): - from ._client_factory import cf_resource_groups + from azext_aks_preview._client_factory import get_resource_groups_client from msrestazure.azure_exceptions import CloudError try: - rg = cf_resource_groups(cli_ctx).get(resource_group_name) + rg = get_resource_groups_client(cli_ctx).get(resource_group_name) return rg.location except CloudError as err: # Print a warning if the user hit [TAB] but the `--resource-group` argument was incorrect. diff --git a/src/aks-preview/azext_aks_preview/_consts.py b/src/aks-preview/azext_aks_preview/_consts.py index 85b277610ec..94219ecd5c7 100644 --- a/src/aks-preview/azext_aks_preview/_consts.py +++ b/src/aks-preview/azext_aks_preview/_consts.py @@ -83,6 +83,9 @@ CONST_NETWORK_PLUGIN_AZURE = "azure" CONST_NETWORK_PLUGIN_NONE = "none" +# network plugin mode +CONST_NETWORK_PLUGIN_MODE_OVERLAY = "overlay" + # disk driver versions CONST_DISK_DRIVER_V1 = "v1" CONST_DISK_DRIVER_V2 = "v2" @@ -177,3 +180,6 @@ CONST_PERISCOPE_RELEASE_TAG = "v0.9" CONST_PERISCOPE_IMAGE_VERSION = "0.0.9" CONST_PERISCOPE_NAMESPACE = "aks-periscope" + +CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PUBLIC = "Public" +CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PRIVATE = "Private" diff --git a/src/aks-preview/azext_aks_preview/_help.py b/src/aks-preview/azext_aks_preview/_help.py index 6d3631c4868..5a6d9b7e0ba 100644 --- a/src/aks-preview/azext_aks_preview/_help.py +++ b/src/aks-preview/azext_aks_preview/_help.py @@ -190,9 +190,6 @@ - name: --disable-rbac type: bool short-summary: Disable Kubernetes Role-Based Access Control. - - name: --enable-rbac -r - type: bool - short-summary: "Enable Kubernetes Role-Based Access Control. Default: enabled." - name: --max-pods -m type: int short-summary: The maximum number of pods deployable to a node. @@ -201,6 +198,12 @@ type: string short-summary: The Kubernetes network plugin to use. long-summary: Specify "azure" for routable pod IPs from VNET, "kubenet" for non-routable pod IPs with an overlay network, or "none" for no networking configured. + - name: --network-plugin-mode + type: string + short-summary: The network plugin mode to use. + long-summary: | + Used to control the mode the network plugin should operate in. For example, "overlay" used with + --network-plugin=azure will use an overlay network (non-VNET IPs) for pods in the cluster. - name: --network-policy type: string short-summary: (PREVIEW) The Kubernetes network policy to use. @@ -263,9 +266,6 @@ - name: --max-count type: int short-summary: Maximum nodes count used for autoscaler, when "--enable-cluster-autoscaler" specified. Please specify the value in the range of [1, 1000]. - - name: --cluster-autoscaler-profile - type: list - short-summary: Space-separated list of key=value pairs for configuring cluster autoscaler. Pass an empty string to clear the profile. - name: --vm-set-type type: string short-summary: Agent pool vm set type. VirtualMachineScaleSets or AvailabilitySet. @@ -324,9 +324,6 @@ - name: --appgw-name type: string short-summary: Name of the application gateway to create/use in the node resource group. Use with ingress-azure addon. - - name: --appgw-subnet-prefix - type: string - short-summary: Subnet Prefix to use for a new subnet created to deploy the Application Gateway. Use with ingress-azure addon. - name: --appgw-subnet-cidr type: string short-summary: Subnet CIDR to use for a new subnet created to deploy the Application Gateway. Use with ingress-azure addon. @@ -375,6 +372,9 @@ - name: --disable-snapshot-controller type: bool short-summary: Disable CSI Snapshot Controller. + - name: --enable-blob-driver + type: bool + short-summary: Enable AzureBlob CSI Driver. - name: --aci-subnet-name type: string short-summary: The name of a subnet in an existing VNet into which to deploy the virtual nodes. @@ -441,6 +441,13 @@ - name: --azure-keyvault-kms-key-id type: string short-summary: Identifier of Azure Key Vault key. + - name: --azure-keyvault-kms-key-vault-network-access + type: string + short-summary: Network Access of Azure Key Vault. + long-summary: Allowed values are "Public", "Private". If not set, defaults to type "Public". Requires --azure-keyvault-kms-key-id to be used. + - name: --azure-keyvault-kms-key-vault-resource-id + type: string + short-summary: Resource ID of Azure Key Vault. - name: --dns-zone-resource-id type: string short-summary: The resource ID of the DNS zone resource to use with the web_application_routing addon. @@ -450,6 +457,12 @@ - name: --enable-keda type: bool short-summary: Enable KEDA workload auto-scaler. + - name: --enable-defender + type: bool + short-summary: Enable Microsoft Defender security profile. + - name: --defender-config + type: string + short-summary: Path to JSON file containing Microsoft Defender profile configurations. examples: - name: Create a Kubernetes cluster with an existing SSH public key. text: az aks create -g MyResourceGroup -n MyManagedCluster --ssh-key-value /path/to/publickey @@ -574,9 +587,6 @@ - name: --no-uptime-sla type: bool short-summary: Change a paid managed cluster to a free one. - - name: --cluster-autoscaler-profile - type: list - short-summary: Space-separated list of key=value pairs for configuring cluster autoscaler. Pass an empty string to clear the profile. - name: --load-balancer-managed-outbound-ip-count type: int short-summary: Load balancer managed outbound IP count. @@ -696,6 +706,12 @@ - name: --disable-snapshot-controller type: bool short-summary: Disable CSI Snapshot Controller. + - name: --enable-blob-driver + type: bool + short-summary: Enable AzureBlob CSI Driver. + - name: --disable-blob-driver + type: bool + short-summary: Disable AzureBlob CSI Driver. - name: --tags type: string short-summary: The tags of the managed cluster. The managed cluster instance and all resources managed by the cloud provider will be tagged. @@ -758,6 +774,13 @@ - name: --azure-keyvault-kms-key-id type: string short-summary: Identifier of Azure Key Vault key. + - name: --azure-keyvault-kms-key-vault-network-access + type: string + short-summary: Network Access of Azure Key Vault. + long-summary: Allowed values are "Public", "Private". If not set, defaults to type "Public". Requires --azure-keyvault-kms-key-id to be used. + - name: --azure-keyvault-kms-key-vault-resource-id + type: string + short-summary: Resource ID of Azure Key Vault. - name: --enable-apiserver-vnet-integration type: bool short-summary: Enable integration of user vnet with control plane apiserver pods. @@ -770,6 +793,15 @@ - name: --disable-keda type: bool short-summary: Disable KEDA workload auto-scaler. + - name: --enable-defender + type: bool + short-summary: Enable Microsoft Defender security profile. + - name: --disable-defender + type: bool + short-summary: Disable defender profile. + - name: --defender-config + type: string + short-summary: Path to JSON file containing Microsoft Defender profile configurations. examples: - name: Reconcile the cluster back to its current state. text: az aks update -g MyResourceGroup -n MyManagedCluster @@ -1767,6 +1799,68 @@ short-summary: List trusted access roles. """ +helps['aks trustedaccess rolebinding'] = """ + type: group + short-summary: Commands to manage trusted access role bindings. +""" + +helps['aks trustedaccess rolebinding list'] = """ + type: command + short-summary: List all the trusted access role bindings. +""" + +helps['aks trustedaccess rolebinding show'] = """ + type: command + short-summary: Get the specific trusted access role binding according to binding name. + parameters: + - name: --name -n + type: string + short-summary: Specify the role binding name. +""" + +helps['aks trustedaccess rolebinding create'] = """ + type: command + short-summary: Create a new trusted access role binding. + parameters: + - name: --name -n + type: string + short-summary: Specify the role binding name. + - name: --roles + type: string + short-summary: Specify the space-separated roles. + - name: --source-resource-id -s + type: string + short-summary: Specify the source resource id of the binding. + + examples: + - name: Create a new trusted access role binding + text: az aks trustedaccess rolebinding create -g myResourceGroup --cluster-name myCluster -n bindingName -s /subscriptions/0000/resourceGroups/myResourceGroup/providers/Microsoft.Demo/samples --roles Microsoft.Demo/samples/reader Microsoft.Demo/samples/writer +""" + +helps['aks trustedaccess rolebinding update'] = """ + type: command + short-summary: Update a trusted access role binding. + parameters: + - name: --name -n + type: string + short-summary: Specify the role binding name. + - name: --roles + type: string + short-summary: Specify the space-separated roles. + - name: --source-resource-id -s + type: string + short-summary: Specify the source resource id of the binding. +""" + +helps['aks trustedaccess rolebinding delete'] = """ + type: command + short-summary: Delete a trusted access role binding according to name. + parameters: + - name: --name -n + type: string + short-summary: Specify the role binding name. +""" + helps['aks draft'] = """ type: group short-summary: Commands to build deployment files in a project directory and deploy to an AKS cluster. diff --git a/src/aks-preview/azext_aks_preview/_helpers.py b/src/aks-preview/azext_aks_preview/_helpers.py index 27a547d039f..8cb6b43cc66 100644 --- a/src/aks-preview/azext_aks_preview/_helpers.py +++ b/src/aks-preview/azext_aks_preview/_helpers.py @@ -2,32 +2,166 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- +import errno +import os +import platform import re +import stat +import tempfile +import yaml from azure.cli.command_modules.acs._helpers import map_azure_error_to_cli_error from azure.cli.core.azclierror import InvalidArgumentValueError, ResourceNotFoundError from azure.core.exceptions import AzureError +from knack.log import get_logger +from knack.prompting import NoTTYException, prompt_y_n +from knack.util import CLIError -from azext_aks_preview._client_factory import cf_nodepool_snapshots, cf_mc_snapshots -from azext_aks_preview._consts import CONST_CONTAINER_NAME_MAX_LENGTH +from azext_aks_preview._client_factory import get_nodepool_snapshots_client, get_mc_snapshots_client +logger = get_logger(__name__) -def _trim_fqdn_name_containing_hcp(normalized_fqdn: str) -> str: - """ - Trims the storage blob name and takes everything prior to "-hcp-". - Currently it is displayed wrong: i.e. at time of creation cli has - following limitation: - https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/ - error-storage-account-name - - :param normalized_fqdn: storage blob name - :return: storage_name_without_hcp: Storage name without the hcp value - attached + +def which(binary): + path_var = os.getenv('PATH') + if platform.system() == 'Windows': + binary = binary + '.exe' + parts = path_var.split(';') + else: + parts = path_var.split(':') + + for part in parts: + bin_path = os.path.join(part, binary) + if os.path.exists(bin_path) and os.path.isfile(bin_path) and os.access(bin_path, os.X_OK): + return bin_path + + return None + + +def print_or_merge_credentials(path, kubeconfig, overwrite_existing, context_name): + """Merge an unencrypted kubeconfig into the file at the specified path, or print it to + stdout if the path is "-". """ - storage_name_without_hcp, _, _ = normalized_fqdn.partition('-hcp-') - if len(storage_name_without_hcp) > CONST_CONTAINER_NAME_MAX_LENGTH: - storage_name_without_hcp = storage_name_without_hcp[:CONST_CONTAINER_NAME_MAX_LENGTH] - return storage_name_without_hcp.rstrip('-') + # Special case for printing to stdout + if path == "-": + print(kubeconfig) + return + + # ensure that at least an empty ~/.kube/config exists + directory = os.path.dirname(path) + if directory and not os.path.exists(directory): + try: + os.makedirs(directory) + except OSError as ex: + if ex.errno != errno.EEXIST: + raise + if not os.path.exists(path): + with os.fdopen(os.open(path, os.O_CREAT | os.O_WRONLY, 0o600), 'wt'): + pass + + # merge the new kubeconfig into the existing one + fd, temp_path = tempfile.mkstemp() + additional_file = os.fdopen(fd, 'w+t') + try: + additional_file.write(kubeconfig) + additional_file.flush() + _merge_kubernetes_configurations( + path, temp_path, overwrite_existing, context_name) + except yaml.YAMLError as ex: + logger.warning( + 'Failed to merge credentials to kube config file: %s', ex) + finally: + additional_file.close() + os.remove(temp_path) + + +def _merge_kubernetes_configurations(existing_file, addition_file, replace, context_name=None): + existing = _load_kubernetes_configuration(existing_file) + addition = _load_kubernetes_configuration(addition_file) + + if context_name is not None: + addition['contexts'][0]['name'] = context_name + addition['contexts'][0]['context']['cluster'] = context_name + addition['clusters'][0]['name'] = context_name + addition['current-context'] = context_name + + # rename the admin context so it doesn't overwrite the user context + for ctx in addition.get('contexts', []): + try: + if ctx['context']['user'].startswith('clusterAdmin'): + admin_name = ctx['name'] + '-admin' + addition['current-context'] = ctx['name'] = admin_name + break + except (KeyError, TypeError): + continue + + if addition is None: + raise CLIError( + 'failed to load additional configuration from {}'.format(addition_file)) + + if existing is None: + existing = addition + else: + _handle_merge(existing, addition, 'clusters', replace) + _handle_merge(existing, addition, 'users', replace) + _handle_merge(existing, addition, 'contexts', replace) + existing['current-context'] = addition['current-context'] + + # check that ~/.kube/config is only read- and writable by its owner + if platform.system() != "Windows" and not os.path.islink(existing_file): + existing_file_perms = "{:o}".format(stat.S_IMODE(os.lstat(existing_file).st_mode)) + if not existing_file_perms.endswith("600"): + logger.warning( + '%s has permissions "%s".\nIt should be readable and writable only by its owner.', + existing_file, + existing_file_perms, + ) + + with open(existing_file, 'w+') as stream: + yaml.safe_dump(existing, stream, default_flow_style=False) + + current_context = addition.get('current-context', 'UNKNOWN') + msg = 'Merged "{}" as current context in {}'.format( + current_context, existing_file) + print(msg) + + +def _load_kubernetes_configuration(filename): + try: + with open(filename) as stream: + return yaml.safe_load(stream) + except (IOError, OSError) as ex: + if getattr(ex, 'errno', 0) == errno.ENOENT: + raise CLIError('{} does not exist'.format(filename)) + except (yaml.parser.ParserError, UnicodeDecodeError) as ex: + raise CLIError('Error parsing {} ({})'.format(filename, str(ex))) + + +def _handle_merge(existing, addition, key, replace): + if not addition[key]: + return + if existing[key] is None: + existing[key] = addition[key] + return + + for i in addition[key]: + for j in existing[key]: + if i['name'] == j['name']: + if replace or i == j: + existing[key].remove(j) + else: + msg = 'A different object named {} already exists in your kubeconfig file.\nOverwrite?' + overwrite = False + try: + overwrite = prompt_y_n(msg.format(i['name'])) + except NoTTYException: + pass + if overwrite: + existing[key].remove(j) + else: + msg = 'A different object named {} already exists in {} in your kubeconfig file.' + raise CLIError(msg.format(i['name'], key)) + existing[key].append(i) def _fuzzy_match(query, arr): @@ -82,14 +216,15 @@ def get_nodepool_snapshot_by_snapshot_id(cli_ctx, snapshot_id): snapshot_id = snapshot_id.lower() match = _re_snapshot_resource_id.search(snapshot_id) if match: + subscription_id = match.group(1) resource_group_name = match.group(2) snapshot_name = match.group(3) - return get_nodepool_snapshot(cli_ctx, resource_group_name, snapshot_name) + return get_nodepool_snapshot(cli_ctx, subscription_id, resource_group_name, snapshot_name) raise InvalidArgumentValueError("Cannot parse snapshot name from provided resource id '{}'.".format(snapshot_id)) -def get_nodepool_snapshot(cli_ctx, resource_group_name, snapshot_name): - snapshot_client = cf_nodepool_snapshots(cli_ctx) +def get_nodepool_snapshot(cli_ctx, subscription_id, resource_group_name, snapshot_name): + snapshot_client = get_nodepool_snapshots_client(cli_ctx, subscription_id=subscription_id) try: snapshot = snapshot_client.get(resource_group_name, snapshot_name) # track 2 sdk raise exception from azure.core.exceptions @@ -108,15 +243,16 @@ def get_cluster_snapshot_by_snapshot_id(cli_ctx, snapshot_id): snapshot_id = snapshot_id.lower() match = _re_mc_snapshot_resource_id.search(snapshot_id) if match: + subscription_id = match.group(1) resource_group_name = match.group(2) snapshot_name = match.group(3) - return get_cluster_snapshot(cli_ctx, resource_group_name, snapshot_name) + return get_cluster_snapshot(cli_ctx, subscription_id, resource_group_name, snapshot_name) raise InvalidArgumentValueError( "Cannot parse snapshot name from provided resource id {}.".format(snapshot_id)) -def get_cluster_snapshot(cli_ctx, resource_group_name, snapshot_name): - snapshot_client = cf_mc_snapshots(cli_ctx) +def get_cluster_snapshot(cli_ctx, subscription_id, resource_group_name, snapshot_name): + snapshot_client = get_mc_snapshots_client(cli_ctx, subscription_id) try: snapshot = snapshot_client.get(resource_group_name, snapshot_name) # track 2 sdk raise exception from azure.core.exceptions diff --git a/src/aks-preview/azext_aks_preview/_params.py b/src/aks-preview/azext_aks_preview/_params.py index 215c949558b..1c0569e6a2d 100644 --- a/src/aks-preview/azext_aks_preview/_params.py +++ b/src/aks-preview/azext_aks_preview/_params.py @@ -21,12 +21,12 @@ ) from knack.arguments import CLIArgumentType -from ._completers import ( +from azext_aks_preview._completers import ( get_k8s_upgrades_completion_list, get_k8s_versions_completion_list, get_vm_size_completion_list, ) -from ._consts import ( +from azext_aks_preview._consts import ( CONST_CREDENTIAL_FORMAT_AZURE, CONST_CREDENTIAL_FORMAT_EXEC, CONST_GPU_INSTANCE_PROFILE_MIG1_G, @@ -39,6 +39,7 @@ CONST_NETWORK_PLUGIN_AZURE, CONST_NETWORK_PLUGIN_KUBENET, CONST_NETWORK_PLUGIN_NONE, + CONST_NETWORK_PLUGIN_MODE_OVERLAY, CONST_NODE_IMAGE_UPGRADE_CHANNEL, CONST_NODEPOOL_MODE_SYSTEM, CONST_NODEPOOL_MODE_USER, @@ -66,8 +67,10 @@ CONST_WORKLOAD_RUNTIME_WASM_WASI, CONST_DISK_DRIVER_V1, CONST_DISK_DRIVER_V2, + CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PUBLIC, + CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PRIVATE, ) -from ._validators import ( +from azext_aks_preview._validators import ( validate_acr, validate_addon, validate_addons, @@ -75,6 +78,7 @@ validate_assign_identity, validate_assign_kubelet_identity, validate_azure_keyvault_kms_key_id, + validate_azure_keyvault_kms_key_vault_resource_id, validate_cluster_id, validate_cluster_snapshot_id, validate_create_parameters, @@ -112,6 +116,8 @@ validate_vm_set_type, validate_vnet_subnet_id, validate_enable_custom_ca_trust, + validate_defender_config_parameter, + validate_defender_disable_and_enable_parameters, ) # candidates for enumeration @@ -134,6 +140,7 @@ # consts for ManagedCluster load_balancer_skus = [CONST_LOAD_BALANCER_SKU_BASIC, CONST_LOAD_BALANCER_SKU_STANDARD] network_plugins = [CONST_NETWORK_PLUGIN_KUBENET, CONST_NETWORK_PLUGIN_AZURE, CONST_NETWORK_PLUGIN_NONE] +network_plugin_modes = [CONST_NETWORK_PLUGIN_MODE_OVERLAY] disk_driver_versions = [CONST_DISK_DRIVER_V1, CONST_DISK_DRIVER_V2] outbound_types = [ CONST_OUTBOUND_TYPE_LOAD_BALANCER, @@ -152,6 +159,8 @@ # consts for credential credential_formats = [CONST_CREDENTIAL_FORMAT_AZURE, CONST_CREDENTIAL_FORMAT_EXEC] +keyvault_network_access_types = [CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PUBLIC, CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PRIVATE] + def load_arguments(self, _): @@ -177,8 +186,6 @@ def load_arguments(self, _): c.argument('node_osdisk_diskencryptionset_id', options_list=['--node-osdisk-diskencryptionset-id', '-d']) c.argument('disable_local_accounts', action='store_true') c.argument('disable_rbac', action='store_true') - c.argument('enable_rbac', action='store_true', options_list=['--enable-rbac', '-r'], - deprecate_info=c.deprecate(redirect="--disable-rbac", hide="2.0.45")) c.argument('edge_zone', edge_zone_type) c.argument('admin_username', options_list=['--admin-username', '-u'], default='azureuser') c.argument('generate_ssh_keys', action='store_true', validator=validate_create_parameters) @@ -199,9 +206,11 @@ def load_arguments(self, _): c.argument('nat_gateway_idle_timeout', type=int, validator=validate_nat_gateway_idle_timeout) c.argument('outbound_type', arg_type=get_enum_type(outbound_types)) c.argument('network_plugin', arg_type=get_enum_type(network_plugins)) + c.argument('network_plugin_mode', arg_type=get_enum_type(network_plugin_modes)) c.argument('network_policy') c.argument('auto_upgrade_channel', arg_type=get_enum_type(auto_upgrade_channels)) - c.argument('cluster_autoscaler_profile', nargs='+') + c.argument('cluster_autoscaler_profile', nargs='+', options_list=["--cluster-autoscaler-profile", "--ca-profile"], + help="Space-separated list of key=value pairs for configuring cluster autoscaler. Pass an empty string to clear the profile.") c.argument('uptime_sla', action='store_true') c.argument('fqdn_subdomain') c.argument('api_server_authorized_ip_ranges', validator=validate_ip_ranges) @@ -223,15 +232,14 @@ def load_arguments(self, _): c.argument('windows_admin_username') c.argument('windows_admin_password') c.argument('enable_ahub') - c.argument('disable_ahub') + c.argument('enable_windows_gmsa', action='store_true') c.argument('gmsa_dns_server') c.argument('gmsa_root_domain_name') c.argument('attach_acr', acr_arg_type) c.argument('skip_subnet_role_assignment', action='store_true') - c.argument('disk_driver_version', arg_type=get_enum_type(disk_driver_versions)) - c.argument('disable_disk_driver', action='store_true') - c.argument('disable_file_driver', action='store_true') - c.argument('disable_snapshot_controller', action='store_true') + c.argument('node_resource_group') + c.argument('enable_defender', action='store_true') + c.argument('defender_config', validator=validate_defender_config_parameter) # addons c.argument('enable_addons', options_list=['--enable-addons', '-a'], validator=validate_addons) c.argument('workspace_resource_id') @@ -248,8 +256,7 @@ def load_arguments(self, _): # nodepool paramerters c.argument('nodepool_name', default='nodepool1', help='Node pool name, upto 12 alphanumeric characters', validator=validate_nodepool_name) - c.argument('node_vm_size', options_list=[ - '--node-vm-size', '-s'], completer=get_vm_size_completion_list) + c.argument('node_vm_size', options_list=['--node-vm-size', '-s'], completer=get_vm_size_completion_list) c.argument('os_sku', arg_type=get_enum_type(node_os_skus)) c.argument('snapshot_id', validator=validate_snapshot_id) c.argument('vnet_subnet_id', validator=validate_vnet_subnet_id) @@ -268,6 +275,7 @@ def load_arguments(self, _): c.argument('max_pods', type=int, options_list=['--max-pods', '-m']) c.argument('vm_set_type', validator=validate_vm_set_type) c.argument('enable_vmss', action='store_true', help='To be deprecated. Use vm_set_type instead.', deprecate_info=c.deprecate(redirect='--vm-set-type', hide=True)) + # TODO: remove node_zones after cli 2.38.0 release c.argument('node_zones', zones_type, options_list=['--node-zones'], help='(--node-zones will be deprecated) Space-separated list of availability zones where agent nodes will be placed.', deprecate_info=c.deprecate(redirect='--zones', hide='2.37.0')) c.argument('zones', zones_type, options_list=['--zones', '-z'], help='Space-separated list of availability zones where agent nodes will be placed.') c.argument('ppg') @@ -276,12 +284,10 @@ def load_arguments(self, _): c.argument('enable_fips_image', action='store_true') c.argument('kubelet_config') c.argument('linux_os_config') - c.argument('yes', options_list=[ - '--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') + c.argument('yes', options_list=['--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') c.argument('aks_custom_headers') # extensions # managed cluster - c.argument('node_resource_group') c.argument('http_proxy_config') c.argument('ip_families') c.argument('pod_cidrs') @@ -289,11 +295,23 @@ def load_arguments(self, _): c.argument('load_balancer_managed_outbound_ipv6_count', type=int) c.argument('enable_pod_security_policy', action='store_true') c.argument('enable_pod_identity', action='store_true') + c.argument('enable_pod_identity_with_kubenet', action='store_true') c.argument('enable_workload_identity', arg_type=get_three_state_flag()) c.argument('enable_oidc_issuer', action='store_true', is_preview=True) c.argument('enable_azure_keyvault_kms', action='store_true', is_preview=True) c.argument('azure_keyvault_kms_key_id', validator=validate_azure_keyvault_kms_key_id, is_preview=True) + c.argument('azure_keyvault_kms_key_vault_network_access', arg_type=get_enum_type(keyvault_network_access_types), default=CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PUBLIC, is_preview=True) + c.argument('azure_keyvault_kms_key_vault_resource_id', validator=validate_azure_keyvault_kms_key_vault_resource_id, is_preview=True) c.argument('cluster_snapshot_id', validator=validate_cluster_snapshot_id, is_preview=True) + c.argument('disk_driver_version', arg_type=get_enum_type(disk_driver_versions)) + c.argument('disable_disk_driver', action='store_true') + c.argument('disable_file_driver', action='store_true') + c.argument('enable_blob_driver', action='store_true') + c.argument('disable_snapshot_controller', action='store_true') + c.argument('enable_apiserver_vnet_integration', action='store_true', is_preview=True) + c.argument('apiserver_subnet_id', validator=validate_apiserver_subnet_id, is_preview=True) + c.argument('dns_zone_resource_id') + c.argument('enable_keda', action='store_true', is_preview=True) # nodepool c.argument('host_group_id', validator=validate_host_group_id, is_preview=True) c.argument('crg_id', validator=validate_crg_id, is_preview=True) @@ -301,19 +319,14 @@ def load_arguments(self, _): c.argument('message_of_the_day') c.argument('gpu_instance_profile', arg_type=get_enum_type(gpu_instance_profiles)) c.argument('workload_runtime', arg_type=get_enum_type(workload_runtimes), default=CONST_WORKLOAD_RUNTIME_OCI_CONTAINER) - c.argument('enable_apiserver_vnet_integration', action='store_true', is_preview=True) - c.argument('apiserver_subnet_id', validator=validate_apiserver_subnet_id, is_preview=True) - c.argument('dns-zone-resource-id') # no validation for aks create because it already only supports Linux. c.argument('enable_custom_ca_trust', action='store_true') - c.argument('enable_keda', action='store_true', is_preview=True) with self.argument_context('aks update') as c: # managed cluster paramerters c.argument('disable_local_accounts', action='store_true') c.argument('enable_local_accounts', action='store_true') c.argument('load_balancer_managed_outbound_ip_count', type=int) - c.argument('load_balancer_managed_outbound_ipv6_count', type=int) c.argument('load_balancer_outbound_ips', validator=validate_load_balancer_outbound_ips) c.argument('load_balancer_outbound_ip_prefixes', validator=validate_load_balancer_outbound_ip_prefixes) c.argument('load_balancer_outbound_ports', type=int, validator=validate_load_balancer_outbound_ports) @@ -321,7 +334,8 @@ def load_arguments(self, _): c.argument('nat_gateway_managed_outbound_ip_count', type=int, validator=validate_nat_gateway_managed_outbound_ip_count) c.argument('nat_gateway_idle_timeout', type=int, validator=validate_nat_gateway_idle_timeout) c.argument('auto_upgrade_channel', arg_type=get_enum_type(auto_upgrade_channels)) - c.argument('cluster_autoscaler_profile', nargs='+') + c.argument('cluster_autoscaler_profile', nargs='+', options_list=["--cluster-autoscaler-profile", "--ca-profile"], + help="Space-separated list of key=value pairs for configuring cluster autoscaler. Pass an empty string to clear the profile.") c.argument('uptime_sla', action='store_true') c.argument('no_uptime_sla', action='store_true') c.argument('api_server_authorized_ip_ranges', validator=validate_ip_ranges) @@ -341,15 +355,11 @@ def load_arguments(self, _): c.argument('enable_windows_gmsa', action='store_true') c.argument('gmsa_dns_server') c.argument('gmsa_root_domain_name') - c.argument('enable_disk_driver', action='store_true') - c.argument('disk_driver_version', arg_type=get_enum_type(disk_driver_versions)) - c.argument('disable_disk_driver', action='store_true') - c.argument('enable_file_driver', action='store_true') - c.argument('disable_file_driver', action='store_true') - c.argument('enable_snapshot_controller', action='store_true') - c.argument('disable_snapshot_controller', action='store_true') c.argument('attach_acr', acr_arg_type, validator=validate_acr) c.argument('detach_acr', acr_arg_type, validator=validate_acr) + c.argument('disable_defender', action='store_true', validator=validate_defender_disable_and_enable_parameters) + c.argument('enable_defender', action='store_true') + c.argument('defender_config', validator=validate_defender_config_parameter) # addons c.argument('enable_secret_rotation', action='store_true') c.argument('disable_secret_rotation', action='store_true') @@ -365,121 +375,92 @@ def load_arguments(self, _): c.argument('max_count', type=int, validator=validate_nodes_count) c.argument('nodepool_labels', nargs='*', validator=validate_nodepool_labels, help='space-separated labels: key[=value] [key[=value] ...]. See https://aka.ms/node-labels for syntax of labels.') - c.argument('yes', options_list=[ - '--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') + c.argument('yes', options_list=['--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') c.argument('aks_custom_headers') # extensions # managed cluster c.argument('http_proxy_config') + c.argument('load_balancer_managed_outbound_ipv6_count', type=int) c.argument('enable_pod_security_policy', action='store_true') c.argument('disable_pod_security_policy', action='store_true') c.argument('enable_pod_identity', action='store_true') + c.argument('enable_pod_identity_with_kubenet', action='store_true') c.argument('disable_pod_identity', action='store_true') c.argument('enable_workload_identity', arg_type=get_three_state_flag()) c.argument('enable_oidc_issuer', action='store_true', is_preview=True) c.argument('enable_azure_keyvault_kms', action='store_true', is_preview=True) c.argument('azure_keyvault_kms_key_id', validator=validate_azure_keyvault_kms_key_id, is_preview=True) + c.argument('azure_keyvault_kms_key_vault_network_access', arg_type=get_enum_type(keyvault_network_access_types), is_preview=True) + c.argument('azure_keyvault_kms_key_vault_resource_id', validator=validate_azure_keyvault_kms_key_vault_resource_id, is_preview=True) + c.argument('enable_disk_driver', action='store_true') + c.argument('disk_driver_version', arg_type=get_enum_type(disk_driver_versions)) + c.argument('disable_disk_driver', action='store_true') + c.argument('enable_file_driver', action='store_true') + c.argument('disable_file_driver', action='store_true') + c.argument('enable_blob_driver', action='store_true') + c.argument('disable_blob_driver', action='store_true') + c.argument('enable_snapshot_controller', action='store_true') + c.argument('disable_snapshot_controller', action='store_true') c.argument('enable_apiserver_vnet_integration', action='store_true', is_preview=True) c.argument('apiserver_subnet_id', validator=validate_apiserver_subnet_id, is_preview=True) c.argument('enable_keda', action='store_true', is_preview=True) c.argument('disable_keda', action='store_true', is_preview=True) - with self.argument_context('aks scale') as c: - c.argument('nodepool_name', - help='Node pool name, upto 12 alphanumeric characters', validator=validate_nodepool_name) - with self.argument_context('aks upgrade') as c: - c.argument('kubernetes_version', - completer=get_k8s_upgrades_completion_list) - c.argument('yes', options_list=[ - '--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') - - with self.argument_context('aks maintenanceconfiguration') as c: - c.argument('cluster_name', help='The cluster name.') - - for scope in ['aks maintenanceconfiguration add', 'aks maintenanceconfiguration update']: - with self.argument_context(scope) as c: - c.argument('config_name', options_list=[ - '--name', '-n'], help='The config name.') - c.argument('config_file', options_list=[ - '--config-file'], help='The config json file.', required=False) - c.argument('weekday', options_list=[ - '--weekday'], help='weekday on which maintenance can happen. e.g. Monday', required=False) - c.argument('start_hour', type=int, options_list=[ - '--start-hour'], help='maintenance start hour of 1 hour window on the weekday. e.g. 1 means 1:00am - 2:00am', required=False) + c.argument('kubernetes_version', completer=get_k8s_upgrades_completion_list) + c.argument('yes', options_list=['--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') - for scope in ['aks maintenanceconfiguration show', 'aks maintenanceconfiguration delete']: - with self.argument_context(scope) as c: - c.argument('config_name', options_list=[ - '--name', '-n'], help='The config name.') + with self.argument_context('aks scale') as c: + c.argument('nodepool_name', help='Node pool name, upto 12 alphanumeric characters', validator=validate_nodepool_name) with self.argument_context('aks nodepool') as c: c.argument('cluster_name', help='The cluster name.') - for scope in ['aks nodepool add']: - with self.argument_context(scope) as c: - c.argument('nodepool_name', options_list=[ - '--name', '-n'], validator=validate_nodepool_name, help='The node pool name.') - c.argument('node_vm_size', options_list=[ - '--node-vm-size', '-s'], completer=get_vm_size_completion_list) - c.argument('os_type') - c.argument('os_sku', arg_type=get_enum_type(node_os_skus)) - c.argument('snapshot_id', validator=validate_snapshot_id) - c.argument('vnet_subnet_id', validator=validate_vnet_subnet_id) - c.argument('pod_subnet_id', validator=validate_pod_subnet_id) - c.argument('enable_node_public_ip', action='store_true') - c.argument('node_public_ip_prefix_id') - c.argument('enable_cluster_autoscaler', options_list=[ - "--enable-cluster-autoscaler", "-e"], action='store_true') - c.argument('min_count', type=int, validator=validate_nodes_count) - c.argument('max_count', type=int, validator=validate_nodes_count) - c.argument('priority', arg_type=get_enum_type(node_priorities), validator=validate_priority) - c.argument('eviction_policy', arg_type=get_enum_type(node_eviction_policies), validator=validate_eviction_policy) - c.argument('spot_max_price', type=float, - validator=validate_spot_max_price) - c.argument('labels', nargs='*', validator=validate_nodepool_labels) - c.argument('tags', tags_type) - c.argument('node_taints', validator=validate_taints) - c.argument('node_osdisk_type', arg_type=get_enum_type(node_os_disk_types)) - c.argument('node_osdisk_size', type=int) - c.argument('max_surge', validator=validate_max_surge) - c.argument('mode', arg_type=get_enum_type(node_mode_types)) - c.argument('scale_down_mode', arg_type=get_enum_type(scale_down_modes)) - c.argument('max_pods', type=int, options_list=['--max-pods', '-m']) - c.argument('node_zones', zones_type, options_list=['--node-zones'], help='(--node-zones will be deprecated) Space-separated list of availability zones where agent nodes will be placed.', deprecate_info=c.deprecate(redirect='--zones', hide='2.37.0')) - c.argument('zones', zones_type, options_list=['--zones', '-z'], help='Space-separated list of availability zones where agent nodes will be placed.') - c.argument('ppg') - c.argument('enable_encryption_at_host', options_list=[ - '--enable-encryption-at-host'], action='store_true') - c.argument('enable_ultra_ssd', action='store_true') - c.argument('enable_fips_image', action='store_true') - c.argument('kubelet_config') - c.argument('linux_os_config') - c.argument('aks_custom_headers') - c.argument('enable_custom_ca_trust', action='store_true', validator=validate_enable_custom_ca_trust) - # extensions - c.argument('host_group_id', validator=validate_host_group_id, is_preview=True) - c.argument('crg_id', validator=validate_crg_id, is_preview=True) - c.argument('message_of_the_day', validator=validate_message_of_the_day) - c.argument('workload_runtime', arg_type=get_enum_type(workload_runtimes), default=CONST_WORKLOAD_RUNTIME_OCI_CONTAINER) - c.argument('gpu_instance_profile', arg_type=get_enum_type(gpu_instance_profiles)) - - for scope in ['aks nodepool show', 'aks nodepool scale', 'aks nodepool upgrade', 'aks nodepool update']: - with self.argument_context(scope) as c: - c.argument('nodepool_name', options_list=[ - '--name', '-n'], validator=validate_nodepool_name, help='The node pool name.') - - with self.argument_context('aks nodepool delete') as c: - c.argument('nodepool_name', options_list=[ - '--name', '-n'], validator=validate_nodepool_name, help='The node pool name.') - c.argument('ignore_pod_disruption_budget', options_list=[ - "--ignore-pod-disruption-budget", "-i"], action=get_three_state_flag(), is_preview=True, - help='delete an AKS nodepool by ignoring PodDisruptionBudget setting') + for sub_command in ['add', 'update', 'upgrade', 'scale', 'show', 'list', 'delete']: + with self.argument_context('aks nodepool ' + sub_command) as c: + c.argument('nodepool_name', options_list=['--nodepool-name', '--name', '-n'], validator=validate_nodepool_name, help='The node pool name.') - with self.argument_context('aks nodepool upgrade') as c: + with self.argument_context('aks nodepool add') as c: + c.argument('node_vm_size', options_list=['--node-vm-size', '-s'], completer=get_vm_size_completion_list) + c.argument('os_type') + c.argument('os_sku', arg_type=get_enum_type(node_os_skus)) + c.argument('snapshot_id', validator=validate_snapshot_id) + c.argument('vnet_subnet_id', validator=validate_vnet_subnet_id) + c.argument('pod_subnet_id', validator=validate_pod_subnet_id) + c.argument('enable_node_public_ip', action='store_true') + c.argument('node_public_ip_prefix_id') + c.argument('enable_cluster_autoscaler', options_list=["--enable-cluster-autoscaler", "-e"], action='store_true') + c.argument('min_count', type=int, validator=validate_nodes_count) + c.argument('max_count', type=int, validator=validate_nodes_count) + c.argument('priority', arg_type=get_enum_type(node_priorities), validator=validate_priority) + c.argument('eviction_policy', arg_type=get_enum_type(node_eviction_policies), validator=validate_eviction_policy) + c.argument('spot_max_price', type=float, validator=validate_spot_max_price) + c.argument('labels', nargs='*', validator=validate_nodepool_labels) + c.argument('tags', tags_type) + c.argument('node_taints', validator=validate_taints) + c.argument('node_osdisk_type', arg_type=get_enum_type(node_os_disk_types)) + c.argument('node_osdisk_size', type=int) c.argument('max_surge', validator=validate_max_surge) + c.argument('mode', arg_type=get_enum_type(node_mode_types)) + c.argument('scale_down_mode', arg_type=get_enum_type(scale_down_modes)) + c.argument('max_pods', type=int, options_list=['--max-pods', '-m']) + # TODO: remove node_zones after cli 2.38.0 release + c.argument('node_zones', zones_type, options_list=['--node-zones'], help='(--node-zones will be deprecated) Space-separated list of availability zones where agent nodes will be placed.', deprecate_info=c.deprecate(redirect='--zones', hide='2.37.0')) + c.argument('zones', zones_type, options_list=['--zones', '-z'], help='Space-separated list of availability zones where agent nodes will be placed.') + c.argument('ppg') + c.argument('enable_encryption_at_host', action='store_true') + c.argument('enable_ultra_ssd', action='store_true') + c.argument('enable_fips_image', action='store_true') + c.argument('kubelet_config') + c.argument('linux_os_config') c.argument('aks_custom_headers') - c.argument('snapshot_id', validator=validate_snapshot_id) + # extensions + c.argument('host_group_id', validator=validate_host_group_id, is_preview=True) + c.argument('crg_id', validator=validate_crg_id, is_preview=True) + c.argument('message_of_the_day', validator=validate_message_of_the_day) + c.argument('workload_runtime', arg_type=get_enum_type(workload_runtimes), default=CONST_WORKLOAD_RUNTIME_OCI_CONTAINER) + c.argument('gpu_instance_profile', arg_type=get_enum_type(gpu_instance_profiles)) + c.argument('enable_custom_ca_trust', action='store_true', validator=validate_enable_custom_ca_trust) with self.argument_context('aks nodepool update') as c: c.argument('enable_cluster_autoscaler', options_list=[ @@ -496,9 +477,39 @@ def load_arguments(self, _): c.argument('max_surge', validator=validate_max_surge) c.argument('mode', arg_type=get_enum_type(node_mode_types)) c.argument('scale_down_mode', arg_type=get_enum_type(scale_down_modes)) + # extensions c.argument('enable_custom_ca_trust', action='store_true', validator=validate_enable_custom_ca_trust) c.argument('disable_custom_ca_trust', options_list=['--disable-custom-ca-trust', '--dcat'], action='store_true') + with self.argument_context('aks nodepool upgrade') as c: + c.argument('max_surge', validator=validate_max_surge) + c.argument('aks_custom_headers') + c.argument('snapshot_id', validator=validate_snapshot_id) + + with self.argument_context('aks nodepool delete') as c: + c.argument('ignore_pod_disruption_budget', options_list=[ + "--ignore-pod-disruption-budget", "-i"], action=get_three_state_flag(), is_preview=True, + help='delete an AKS nodepool by ignoring PodDisruptionBudget setting') + + with self.argument_context('aks maintenanceconfiguration') as c: + c.argument('cluster_name', help='The cluster name.') + + for scope in ['aks maintenanceconfiguration add', 'aks maintenanceconfiguration update']: + with self.argument_context(scope) as c: + c.argument('config_name', options_list=[ + '--name', '-n'], help='The config name.') + c.argument('config_file', options_list=[ + '--config-file'], help='The config json file.', required=False) + c.argument('weekday', options_list=[ + '--weekday'], help='weekday on which maintenance can happen. e.g. Monday', required=False) + c.argument('start_hour', type=int, options_list=[ + '--start-hour'], help='maintenance start hour of 1 hour window on the weekday. e.g. 1 means 1:00am - 2:00am', required=False) + + for scope in ['aks maintenanceconfiguration show', 'aks maintenanceconfiguration delete']: + with self.argument_context(scope) as c: + c.argument('config_name', options_list=[ + '--name', '-n'], help='The config name.') + with self.argument_context('aks addon show') as c: c.argument('addon', options_list=[ '--addon', '-a'], validator=validate_addon) @@ -558,32 +569,23 @@ def load_arguments(self, _): c.argument('dns-zone-resource-id') with self.argument_context('aks disable-addons') as c: - c.argument('addons', options_list=[ - '--addons', '-a'], validator=validate_addons) + c.argument('addons', options_list=['--addons', '-a'], validator=validate_addons) with self.argument_context('aks enable-addons') as c: - c.argument('addons', options_list=[ - '--addons', '-a'], validator=validate_addons) + c.argument('addons', options_list=['--addons', '-a'], validator=validate_addons) c.argument('subnet_name', options_list=['--subnet-name', '-s']) c.argument('enable_sgxquotehelper', action='store_true') - c.argument('osm_mesh_name', options_list=['--osm-mesh-name']) - c.argument('appgw_name', options_list=[ - '--appgw-name'], arg_group='Application Gateway') - c.argument('appgw_subnet_prefix', options_list=[ - '--appgw-subnet-prefix'], arg_group='Application Gateway', deprecate_info=c.deprecate(redirect='--appgw-subnet-cidr', hide=True)) - c.argument('appgw_subnet_cidr', options_list=[ - '--appgw-subnet-cidr'], arg_group='Application Gateway') - c.argument('appgw_id', options_list=[ - '--appgw-id'], arg_group='Application Gateway') - c.argument('appgw_subnet_id', options_list=[ - '--appgw-subnet-id'], arg_group='Application Gateway') - c.argument('appgw_watch_namespace', options_list=[ - '--appgw-watch-namespace'], arg_group='Application Gateway') + c.argument('osm_mesh_name') + c.argument('appgw_name', arg_group='Application Gateway') + c.argument('appgw_subnet_prefix', arg_group='Application Gateway', deprecate_info=c.deprecate(redirect='--appgw-subnet-cidr', hide=True)) + c.argument('appgw_subnet_cidr', arg_group='Application Gateway') + c.argument('appgw_id', arg_group='Application Gateway') + c.argument('appgw_subnet_id', arg_group='Application Gateway') + c.argument('appgw_watch_namespace', arg_group='Application Gateway') c.argument('enable_secret_rotation', action='store_true') c.argument('rotation_poll_interval') c.argument('workspace_resource_id') - c.argument('enable_msi_auth_for_monitoring', - arg_type=get_three_state_flag(), is_preview=True) + c.argument('enable_msi_auth_for_monitoring', arg_type=get_three_state_flag(), is_preview=True) c.argument('dns-zone-resource-id') with self.argument_context('aks get-credentials') as c: @@ -680,6 +682,22 @@ def load_arguments(self, _): c.argument('yes', options_list=[ '--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') + with self.argument_context('aks trustedaccess rolebinding') as c: + c.argument('cluster_name', help='The cluster name.') + + for scope in ['aks trustedaccess rolebinding show', 'aks trustedaccess rolebinding create', + 'aks trustedaccess rolebinding update', 'aks trustedaccess rolebinding delete']: + with self.argument_context(scope) as c: + c.argument('role_binding_name', options_list=[ + '--name', '-n'], required=True, help='The role binding name.') + + for scope in ['aks trustedaccess rolebinding create', 'aks trustedaccess rolebinding update']: + with self.argument_context(scope) as c: + c.argument('roles', nargs='*', + help='space-separated roles: Microsoft.Demo/samples/reader Microsoft.Demo/samples/writer ...') + c.argument('source_resource_id', options_list=['--source-resource-id', '-s'], + help='The source resource id of the binding') + def _get_default_install_location(exe_name): system = platform.system() diff --git a/src/aks-preview/azext_aks_preview/_podidentity.py b/src/aks-preview/azext_aks_preview/_podidentity.py index d2553c90aff..7a62d7d655c 100644 --- a/src/aks-preview/azext_aks_preview/_podidentity.py +++ b/src/aks-preview/azext_aks_preview/_podidentity.py @@ -8,10 +8,12 @@ from knack.log import get_logger from knack.util import CLIError -from ._client_factory import get_auth_management_client -from ._consts import (CONST_MANAGED_IDENTITY_OPERATOR_ROLE, - CONST_MANAGED_IDENTITY_OPERATOR_ROLE_ID) -from ._roleassignments import add_role_assignment +from azext_aks_preview._client_factory import get_auth_management_client +from azext_aks_preview._consts import ( + CONST_MANAGED_IDENTITY_OPERATOR_ROLE, + CONST_MANAGED_IDENTITY_OPERATOR_ROLE_ID, +) +from azext_aks_preview._roleassignments import add_role_assignment logger = get_logger(__name__) diff --git a/src/aks-preview/azext_aks_preview/_resourcegroup.py b/src/aks-preview/azext_aks_preview/_resourcegroup.py index f964396e41d..3a9d3fb6b1d 100644 --- a/src/aks-preview/azext_aks_preview/_resourcegroup.py +++ b/src/aks-preview/azext_aks_preview/_resourcegroup.py @@ -4,11 +4,11 @@ # -------------------------------------------------------------------------------------------- from knack.util import CLIError -from ._client_factory import cf_resource_groups +from azext_aks_preview._client_factory import get_resource_groups_client def get_rg_location(ctx, resource_group_name, subscription_id=None): - groups = cf_resource_groups(ctx, subscription_id=subscription_id) + groups = get_resource_groups_client(ctx, subscription_id=subscription_id) # Just do the get, we don't need the result, it will error out if the group doesn't exist. rg = groups.get(resource_group_name) if rg is None: diff --git a/src/aks-preview/azext_aks_preview/_roleassignments.py b/src/aks-preview/azext_aks_preview/_roleassignments.py index 438cfacd0b0..ae3238dd8f3 100644 --- a/src/aks-preview/azext_aks_preview/_roleassignments.py +++ b/src/aks-preview/azext_aks_preview/_roleassignments.py @@ -9,7 +9,7 @@ from knack.log import get_logger from knack.util import CLIError from msrestazure.azure_exceptions import CloudError -from ._client_factory import get_auth_management_client, get_graph_rbac_management_client +from azext_aks_preview._client_factory import get_auth_management_client, get_graph_rbac_management_client logger = get_logger(__name__) diff --git a/src/aks-preview/azext_aks_preview/_validators.py b/src/aks-preview/azext_aks_preview/_validators.py index 479e84e17db..2a314a69396 100644 --- a/src/aks-preview/azext_aks_preview/_validators.py +++ b/src/aks-preview/azext_aks_preview/_validators.py @@ -4,22 +4,25 @@ # -------------------------------------------------------------------------------------------- from __future__ import unicode_literals + import os import os.path import re -from math import isnan, isclose from ipaddress import ip_network +from math import isclose, isnan -from knack.log import get_logger - -from azure.cli.core.azclierror import InvalidArgumentValueError, ArgumentUsageError +import azure.cli.core.keys as keys +from azure.cli.core.azclierror import ( + ArgumentUsageError, + InvalidArgumentValueError, + RequiredArgumentMissingError, +) from azure.cli.core.commands.validators import validate_tag from azure.cli.core.util import CLIError -import azure.cli.core.keys as keys - -from ._helpers import (_fuzzy_match) +from knack.log import get_logger -from ._consts import ADDONS +from azext_aks_preview._consts import ADDONS +from azext_aks_preview._helpers import _fuzzy_match logger = get_logger(__name__) @@ -587,9 +590,28 @@ def validate_azure_keyvault_kms_key_id(namespace): raise InvalidArgumentValueError(err_msg) +def validate_azure_keyvault_kms_key_vault_resource_id(namespace): + key_vault_resource_id = namespace.azure_keyvault_kms_key_vault_resource_id + if key_vault_resource_id is None or key_vault_resource_id == '': + return + from msrestazure.tools import is_valid_resource_id + if not is_valid_resource_id(key_vault_resource_id): + raise InvalidArgumentValueError("--azure-keyvault-kms-key-vault-resource-id is not a valid Azure resource ID.") + + def validate_enable_custom_ca_trust(namespace): """Validates Custom CA Trust can only be used on Linux.""" if namespace.enable_custom_ca_trust: if hasattr(namespace, 'os_type') and namespace.os_type != "Linux": raise ArgumentUsageError( '--enable_custom_ca_trust can only be set for Linux nodepools') + + +def validate_defender_config_parameter(namespace): + if namespace.defender_config and not namespace.enable_defender: + raise RequiredArgumentMissingError("Please specify --enable-defnder") + + +def validate_defender_disable_and_enable_parameters(namespace): + if namespace.disable_defender and namespace.enable_defender: + raise ArgumentUsageError('Providing both --disable-defender and --enable-defender flags is invalid') diff --git a/src/aks-preview/azext_aks_preview/addonconfiguration.py b/src/aks-preview/azext_aks_preview/addonconfiguration.py index 0713a6903c9..8d4e966d007 100644 --- a/src/aks-preview/azext_aks_preview/addonconfiguration.py +++ b/src/aks-preview/azext_aks_preview/addonconfiguration.py @@ -6,24 +6,37 @@ import json from knack.log import get_logger from knack.util import CLIError -from azure.cli.core.azclierror import ArgumentUsageError, ClientRequestError +from azure.cli.core.azclierror import ArgumentUsageError from azure.cli.core.commands import LongRunningOperation from azure.cli.core.commands.client_factory import get_subscription_id from azure.cli.core.util import sdk_no_wait +from azure.cli.command_modules.acs.addonconfiguration import ( + ensure_container_insights_for_monitoring, + sanitize_loganalytics_ws_resource_id, + ensure_default_log_analytics_workspace_for_monitoring +) from azext_aks_preview._client_factory import CUSTOM_MGMT_AKS_PREVIEW -from ._client_factory import cf_resources, cf_resource_groups -from ._resourcegroup import get_rg_location -from ._roleassignments import add_role_assignment -from ._consts import ADDONS, CONST_VIRTUAL_NODE_ADDON_NAME, CONST_MONITORING_ADDON_NAME, \ - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID, CONST_MONITORING_USING_AAD_MSI_AUTH, \ - CONST_VIRTUAL_NODE_SUBNET_NAME, CONST_INGRESS_APPGW_ADDON_NAME, CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME, \ - CONST_INGRESS_APPGW_SUBNET_CIDR, CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID, CONST_INGRESS_APPGW_SUBNET_ID, \ - CONST_INGRESS_APPGW_WATCH_NAMESPACE, CONST_OPEN_SERVICE_MESH_ADDON_NAME, CONST_CONFCOM_ADDON_NAME, \ - CONST_ACC_SGX_QUOTE_HELPER_ENABLED, CONST_AZURE_KEYVAULT_SECRETS_PROVIDER_ADDON_NAME, CONST_SECRET_ROTATION_ENABLED, CONST_ROTATION_POLL_INTERVAL, \ - CONST_KUBE_DASHBOARD_ADDON_NAME -from .vendored_sdks.azure_mgmt_preview_aks.v2022_05_02_preview.models import ( - ManagedClusterIngressProfile, - ManagedClusterIngressProfileWebAppRouting, +from azext_aks_preview._roleassignments import add_role_assignment +from azext_aks_preview._consts import ( + ADDONS, + CONST_VIRTUAL_NODE_ADDON_NAME, + CONST_MONITORING_ADDON_NAME, + CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID, + CONST_MONITORING_USING_AAD_MSI_AUTH, + CONST_VIRTUAL_NODE_SUBNET_NAME, + CONST_INGRESS_APPGW_ADDON_NAME, + CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME, + CONST_INGRESS_APPGW_SUBNET_CIDR, + CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID, + CONST_INGRESS_APPGW_SUBNET_ID, + CONST_INGRESS_APPGW_WATCH_NAMESPACE, + CONST_OPEN_SERVICE_MESH_ADDON_NAME, + CONST_CONFCOM_ADDON_NAME, + CONST_ACC_SGX_QUOTE_HELPER_ENABLED, + CONST_AZURE_KEYVAULT_SECRETS_PROVIDER_ADDON_NAME, + CONST_SECRET_ROTATION_ENABLED, + CONST_ROTATION_POLL_INTERVAL, + CONST_KUBE_DASHBOARD_ADDON_NAME, ) logger = get_logger(__name__) @@ -163,6 +176,16 @@ def update_addons(cmd, # pylint: disable=too-many-branches,too-many-statements resource_type=CUSTOM_MGMT_AKS_PREVIEW, operation_group="managed_clusters", ) + ManagedClusterIngressProfile = cmd.get_models( + "ManagedClusterIngressProfile", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + ManagedClusterIngressProfileWebAppRouting = cmd.get_models( + "ManagedClusterIngressProfileWebAppRouting", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) # for each addons argument for addon_arg in addon_args: @@ -296,394 +319,6 @@ def update_addons(cmd, # pylint: disable=too-many-branches,too-many-statements return instance -def ensure_default_log_analytics_workspace_for_monitoring(cmd, subscription_id, resource_group_name): - # mapping for azure public cloud - # log analytics workspaces cannot be created in WCUS region due to capacity limits - # so mapped to EUS per discussion with log analytics team - AzureCloudLocationToOmsRegionCodeMap = { - "australiasoutheast": "ASE", - "australiaeast": "EAU", - "australiacentral": "CAU", - "canadacentral": "CCA", - "centralindia": "CIN", - "centralus": "CUS", - "eastasia": "EA", - "eastus": "EUS", - "eastus2": "EUS2", - "eastus2euap": "EAP", - "francecentral": "PAR", - "japaneast": "EJP", - "koreacentral": "SE", - "northeurope": "NEU", - "southcentralus": "SCUS", - "southeastasia": "SEA", - "uksouth": "SUK", - "usgovvirginia": "USGV", - "westcentralus": "EUS", - "westeurope": "WEU", - "westus": "WUS", - "westus2": "WUS2", - "brazilsouth": "CQ", - "brazilsoutheast": "BRSE", - "norwayeast": "NOE", - "southafricanorth": "JNB", - "northcentralus": "NCUS", - "uaenorth": "DXB", - "germanywestcentral": "DEWC", - "ukwest": "WUK", - "switzerlandnorth": "CHN", - "switzerlandwest": "CHW", - "uaecentral": "AUH" - } - AzureCloudRegionToOmsRegionMap = { - "australiacentral": "australiacentral", - "australiacentral2": "australiacentral", - "australiaeast": "australiaeast", - "australiasoutheast": "australiasoutheast", - "brazilsouth": "brazilsouth", - "canadacentral": "canadacentral", - "canadaeast": "canadacentral", - "centralus": "centralus", - "centralindia": "centralindia", - "eastasia": "eastasia", - "eastus": "eastus", - "eastus2": "eastus2", - "francecentral": "francecentral", - "francesouth": "francecentral", - "japaneast": "japaneast", - "japanwest": "japaneast", - "koreacentral": "koreacentral", - "koreasouth": "koreacentral", - "northcentralus": "northcentralus", - "northeurope": "northeurope", - "southafricanorth": "southafricanorth", - "southafricawest": "southafricanorth", - "southcentralus": "southcentralus", - "southeastasia": "southeastasia", - "southindia": "centralindia", - "uksouth": "uksouth", - "ukwest": "ukwest", - "westcentralus": "eastus", - "westeurope": "westeurope", - "westindia": "centralindia", - "westus": "westus", - "westus2": "westus2", - "norwayeast": "norwayeast", - "norwaywest": "norwayeast", - "switzerlandnorth": "switzerlandnorth", - "switzerlandwest": "switzerlandwest", - "uaenorth": "uaenorth", - "germanywestcentral": "germanywestcentral", - "germanynorth": "germanywestcentral", - "uaecentral": "uaecentral", - "eastus2euap": "eastus2euap", - "brazilsoutheast": "brazilsoutheast" - } - - # mapping for azure china cloud - # log analytics only support China East2 region - AzureChinaLocationToOmsRegionCodeMap = { - "chinaeast": "EAST2", - "chinaeast2": "EAST2", - "chinanorth": "EAST2", - "chinanorth2": "EAST2" - } - AzureChinaRegionToOmsRegionMap = { - "chinaeast": "chinaeast2", - "chinaeast2": "chinaeast2", - "chinanorth": "chinaeast2", - "chinanorth2": "chinaeast2" - } - - # mapping for azure us governmner cloud - AzureFairfaxLocationToOmsRegionCodeMap = { - "usgovvirginia": "USGV", - "usgovarizona": "PHX" - } - AzureFairfaxRegionToOmsRegionMap = { - "usgovvirginia": "usgovvirginia", - "usgovtexas": "usgovvirginia", - "usgovarizona": "usgovarizona" - } - - rg_location = get_rg_location(cmd.cli_ctx, resource_group_name) - cloud_name = cmd.cli_ctx.cloud.name - - if cloud_name.lower() == 'azurecloud': - workspace_region = AzureCloudRegionToOmsRegionMap.get( - rg_location, "eastus") - workspace_region_code = AzureCloudLocationToOmsRegionCodeMap.get( - workspace_region, "EUS") - elif cloud_name.lower() == 'azurechinacloud': - workspace_region = AzureChinaRegionToOmsRegionMap.get( - rg_location, "chinaeast2") - workspace_region_code = AzureChinaLocationToOmsRegionCodeMap.get( - workspace_region, "EAST2") - elif cloud_name.lower() == 'azureusgovernment': - workspace_region = AzureFairfaxRegionToOmsRegionMap.get( - rg_location, "usgovvirginia") - workspace_region_code = AzureFairfaxLocationToOmsRegionCodeMap.get( - workspace_region, "USGV") - else: - logger.error( - "AKS Monitoring addon not supported in cloud : %s", cloud_name) - - default_workspace_resource_group = 'DefaultResourceGroup-' + workspace_region_code - default_workspace_name = 'DefaultWorkspace-{0}-{1}'.format( - subscription_id, workspace_region_code) - - default_workspace_resource_id = '/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.OperationalInsights' \ - '/workspaces/{2}'.format(subscription_id, - default_workspace_resource_group, default_workspace_name) - resource_groups = cf_resource_groups(cmd.cli_ctx, subscription_id) - resources = cf_resources(cmd.cli_ctx, subscription_id) - - from azure.cli.core.profiles import ResourceType - # check if default RG exists - if resource_groups.check_existence(default_workspace_resource_group): - from azure.core.exceptions import HttpResponseError - try: - resource = resources.get_by_id( - default_workspace_resource_id, '2015-11-01-preview') - return resource.id - except HttpResponseError as ex: - if ex.status_code != 404: - raise ex - else: - ResourceGroup = cmd.get_models( - 'ResourceGroup', resource_type=ResourceType.MGMT_RESOURCE_RESOURCES) - resource_group = ResourceGroup(location=workspace_region) - resource_groups.create_or_update( - default_workspace_resource_group, resource_group) - - GenericResource = cmd.get_models( - 'GenericResource', resource_type=ResourceType.MGMT_RESOURCE_RESOURCES) - generic_resource = GenericResource(location=workspace_region, properties={ - 'sku': {'name': 'standalone'}}) - - async_poller = resources.begin_create_or_update_by_id(default_workspace_resource_id, '2015-11-01-preview', - generic_resource) - - ws_resource_id = '' - while True: - result = async_poller.result(15) - if async_poller.done(): - ws_resource_id = result.id - break - - return ws_resource_id - - -def sanitize_loganalytics_ws_resource_id(workspace_resource_id): - workspace_resource_id = workspace_resource_id.strip() - if not workspace_resource_id.startswith('/'): - workspace_resource_id = '/' + workspace_resource_id - if workspace_resource_id.endswith('/'): - workspace_resource_id = workspace_resource_id.rstrip('/') - return workspace_resource_id - - -def ensure_container_insights_for_monitoring(cmd, - addon, - cluster_subscription, - cluster_resource_group_name, - cluster_name, - cluster_region, - remove_monitoring=False, - aad_route=False, - create_dcr=False, - create_dcra=False): - """ - Either adds the ContainerInsights solution to a LA Workspace OR sets up a DCR (Data Collection Rule) and DCRA - (Data Collection Rule Association). Both let the monitoring addon send data to a Log Analytics Workspace. - - Set aad_route == True to set up the DCR data route. Otherwise the solution route will be used. Create_dcr and - create_dcra have no effect if aad_route == False. - - Set remove_monitoring to True and create_dcra to True to remove the DCRA from a cluster. The association makes - it very hard to delete either the DCR or cluster. (It is not obvious how to even navigate to the association from - the portal, and it prevents the cluster and DCR from being deleted individually). - """ - if not addon.enabled: - return None - - # workaround for this addon key which has been seen lowercased in the wild - for key in list(addon.config): - if key.lower() == CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID.lower() and key != CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID: - addon.config[CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID] = addon.config.pop( - key) - - workspace_resource_id = addon.config[CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID].strip( - ) - if not workspace_resource_id.startswith('/'): - workspace_resource_id = '/' + workspace_resource_id - - if workspace_resource_id.endswith('/'): - workspace_resource_id = workspace_resource_id.rstrip('/') - - # extract subscription ID and resource group from workspace_resource_id URL - try: - subscription_id = workspace_resource_id.split('/')[2] - resource_group = workspace_resource_id.split('/')[4] - workspace_name = workspace_resource_id.split('/')[8] - except IndexError: - raise CLIError( - 'Could not locate resource group in workspace-resource-id URL.') - - # region of workspace can be different from region of RG so find the location of the workspace_resource_id - if not remove_monitoring: - resources = cf_resources(cmd.cli_ctx, subscription_id) - from azure.core.exceptions import HttpResponseError - try: - resource = resources.get_by_id( - workspace_resource_id, '2015-11-01-preview') - location = resource.location - except HttpResponseError as ex: - raise ex - - if aad_route: - cluster_resource_id = f"/subscriptions/{cluster_subscription}/resourceGroups/{cluster_resource_group_name}/providers/Microsoft.ContainerService/managedClusters/{cluster_name}" - dataCollectionRuleName = f"MSCI-{workspace_name}" - dcr_resource_id = f"/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.Insights/dataCollectionRules/{dataCollectionRuleName}" - from azure.cli.core.util import send_raw_request - from azure.cli.core.profiles import ResourceType - - if create_dcr: - # first get the association between region display names and region IDs (because for some reason - # the "which RPs are available in which regions" check returns region display names) - region_names_to_id = {} - # retry the request up to two times - for _ in range(3): - try: - location_list_url = f"https://management.azure.com/subscriptions/{subscription_id}/locations?api-version=2019-11-01" - r = send_raw_request(cmd.cli_ctx, "GET", location_list_url) - - # this is required to fool the static analyzer. The else statement will only run if an exception - # is thrown, but flake8 will complain that e is undefined if we don't also define it here. - error = None - break - except CLIError as e: - error = e - else: - # This will run if the above for loop was not broken out of. This means all three requests failed - raise error - json_response = json.loads(r.text) - for region_data in json_response["value"]: - region_names_to_id[region_data["displayName"] - ] = region_data["name"] - - # check if region supports DCRs and DCR-A - for _ in range(3): - try: - feature_check_url = f"https://management.azure.com/subscriptions/{subscription_id}/providers/Microsoft.Insights?api-version=2020-10-01" - r = send_raw_request(cmd.cli_ctx, "GET", feature_check_url) - error = None - break - except CLIError as e: - error = e - else: - raise error - json_response = json.loads(r.text) - for resource in json_response["resourceTypes"]: - region_ids = map(lambda x: region_names_to_id[x], - resource["locations"]) # map is lazy, so doing this for every region isn't slow - if resource["resourceType"].lower() == "datacollectionrules" and location not in region_ids: - raise ClientRequestError( - f'Data Collection Rules are not supported for LA workspace region {location}') - elif resource[ - "resourceType"].lower() == "datacollectionruleassociations" and cluster_region not in region_ids: - raise ClientRequestError( - f'Data Collection Rule Associations are not supported for cluster region {location}') - - # create the DCR - dcr_creation_body = json.dumps({"location": location, - "properties": { - "dataSources": { - "extensions": [ - { - "name": "ContainerInsightsExtension", - "streams": [ - "Microsoft-Perf", - "Microsoft-ContainerInventory", - "Microsoft-ContainerLog", - "Microsoft-ContainerLogV2", - "Microsoft-ContainerNodeInventory", - "Microsoft-KubeEvents", - "Microsoft-KubeHealth", - "Microsoft-KubeMonAgentEvents", - "Microsoft-KubeNodeInventory", - "Microsoft-KubePodInventory", - "Microsoft-KubePVInventory", - "Microsoft-KubeServices", - "Microsoft-InsightsMetrics" - ], - "extensionName": "ContainerInsights" - } - ] - }, - "dataFlows": [ - { - "streams": [ - "Microsoft-Perf", - "Microsoft-ContainerInventory", - "Microsoft-ContainerLog", - "Microsoft-ContainerLogV2", - "Microsoft-ContainerNodeInventory", - "Microsoft-KubeEvents", - "Microsoft-KubeHealth", - "Microsoft-KubeMonAgentEvents", - "Microsoft-KubeNodeInventory", - "Microsoft-KubePodInventory", - "Microsoft-KubePVInventory", - "Microsoft-KubeServices", - "Microsoft-InsightsMetrics" - ], - "destinations": [ - "la-workspace" - ] - } - ], - "destinations": { - "logAnalytics": [ - { - "workspaceResourceId": workspace_resource_id, - "name": "la-workspace" - } - ] - } - }}) - dcr_url = f"https://management.azure.com/{dcr_resource_id}?api-version=2019-11-01-preview" - for _ in range(3): - try: - send_raw_request(cmd.cli_ctx, "PUT", - dcr_url, body=dcr_creation_body) - error = None - break - except CLIError as e: - error = e - else: - raise error - - if create_dcra: - # only create or delete the association between the DCR and cluster - association_body = json.dumps({"location": cluster_region, - "properties": { - "dataCollectionRuleId": dcr_resource_id, - "description": "routes monitoring data to a Log Analytics workspace" - }}) - association_url = f"https://management.azure.com/{cluster_resource_id}/providers/Microsoft.Insights/dataCollectionRuleAssociations/send-to-{workspace_name}?api-version=2019-11-01-preview" - for _ in range(3): - try: - send_raw_request(cmd.cli_ctx, "PUT" if not remove_monitoring else "DELETE", association_url, - body=association_body) - error = None - break - except CLIError as e: - error = e - else: - raise error - - def add_monitoring_role_assignment(result, cluster_resource_id, cmd): service_principal_msi_id = None # Check if service principal exists, if it does, assign permissions to service principal diff --git a/src/aks-preview/azext_aks_preview/agentpool_decorator.py b/src/aks-preview/azext_aks_preview/agentpool_decorator.py index 9258ab58d98..e6b28bba459 100644 --- a/src/aks-preview/azext_aks_preview/agentpool_decorator.py +++ b/src/aks-preview/azext_aks_preview/agentpool_decorator.py @@ -17,8 +17,8 @@ AKSAgentPoolUpdateDecorator, ) from azure.cli.core.azclierror import ( - ArgumentUsageError, InvalidArgumentValueError, + MutuallyExclusiveArgumentError, ) from azure.cli.core.commands import AzCliCommand from azure.cli.core.profiles import ResourceType @@ -174,6 +174,65 @@ def get_workload_runtime(self) -> Union[str, None]: # this parameter does not need validation return workload_runtime + def _get_enable_custom_ca_trust(self, enable_validation: bool = False) -> bool: + """Internal function to obtain the value of enable_custom_ca_trust. + + This function supports the option of enable_validation. When enabled, if both enable_custom_ca_trust and + disable_custom_ca_trust are specified, raise a MutuallyExclusiveArgumentError. + + :return: bool + """ + # read the original value passed by the command + enable_custom_ca_trust = self.raw_param.get("enable_custom_ca_trust") + # In create mode, try to read the property value corresponding to the parameter from the `agentpool` object + if self.decorator_mode == DecoratorMode.CREATE: + if self.agentpool and self.agentpool.enable_custom_ca_trust is not None: + enable_custom_ca_trust = self.agentpool.enable_custom_ca_trust + + # this parameter does not need dynamic completion + # validation + if enable_validation: + if enable_custom_ca_trust and self._get_disable_custom_ca_trust(enable_validation=False): + raise MutuallyExclusiveArgumentError( + 'Cannot specify "--enable-custom-ca-trust" and "--disable-custom-ca-trust" at the same time' + ) + return enable_custom_ca_trust + + def get_enable_custom_ca_trust(self) -> bool: + """Obtain the value of enable_custom_ca_trust. + + :return: bool + """ + return self._get_enable_custom_ca_trust(enable_validation=True) + + def _get_disable_custom_ca_trust(self, enable_validation: bool = False) -> bool: + """Internal function to obtain the value of disable_custom_ca_trust. + + This function supports the option of enable_validation. When enabled, if both enable_custom_ca_trust and + disable_custom_ca_trust are specified, raise a MutuallyExclusiveArgumentError. + + :return: bool + """ + # read the original value passed by the command + disable_custom_ca_trust = self.raw_param.get("disable_custom_ca_trust") + # This option is not supported in create mode, so its value is not read from `agentpool`. + + # this parameter does not need dynamic completion + # validation + if enable_validation: + if disable_custom_ca_trust and self._get_enable_custom_ca_trust(enable_validation=False): + raise MutuallyExclusiveArgumentError( + 'Cannot specify "--enable-custom-ca-trust" and "--disable-custom-ca-trust" at the same time' + ) + return disable_custom_ca_trust + + def get_disable_custom_ca_trust(self) -> bool: + """Obtain the value of disable_custom_ca_trust. + + :return: bool + """ + return self._get_disable_custom_ca_trust(enable_validation=True) + class AKSPreviewAgentPoolAddDecorator(AKSAgentPoolAddDecorator): def __init__( @@ -229,7 +288,7 @@ def set_up_motd(self, agentpool: AgentPool) -> AgentPool: agentpool.message_of_the_day = self.context.get_message_of_the_day() return agentpool - def set_up_gpu_propertes(self, agentpool: AgentPool) -> AgentPool: + def set_up_gpu_properties(self, agentpool: AgentPool) -> AgentPool: """Set up gpu related properties for the AgentPool object. :return: the AgentPool object @@ -240,6 +299,16 @@ def set_up_gpu_propertes(self, agentpool: AgentPool) -> AgentPool: agentpool.workload_runtime = self.context.get_workload_runtime() return agentpool + def set_up_custom_ca_trust(self, agentpool: AgentPool) -> AgentPool: + """Set up custom ca trust property for the AgentPool object. + + :return: the AgentPool object + """ + self._ensure_agentpool(agentpool) + + agentpool.enable_custom_ca_trust = self.context.get_enable_custom_ca_trust() + return agentpool + def construct_agentpool_profile_preview(self) -> AgentPool: """The overall controller used to construct the preview AgentPool profile. @@ -248,14 +317,17 @@ def construct_agentpool_profile_preview(self) -> AgentPool: :return: the AgentPool object """ - # construct the default AgentPool profile + # DO NOT MOVE: keep this on top, construct the default AgentPool profile agentpool = self.construct_agentpool_profile_default(bypass_restore_defaults=True) + # set up preview vm properties agentpool = self.set_up_preview_vm_properties(agentpool) # set up message of the day agentpool = self.set_up_motd(agentpool) # set up gpu profiles - agentpool = self.set_up_gpu_propertes(agentpool) + agentpool = self.set_up_gpu_properties(agentpool) + # set up custom ca trust + agentpool = self.set_up_custom_ca_trust(agentpool) # DO NOT MOVE: keep this at the bottom, restore defaults agentpool = self._restore_defaults_in_agentpool(agentpool) @@ -295,6 +367,20 @@ def init_context(self) -> None: self.agentpool_decorator_mode, ) + def update_custom_ca_trust(self, agentpool: AgentPool) -> AgentPool: + """Update custom ca trust property for the AgentPool object. + + :return: the AgentPool object + """ + self._ensure_agentpool(agentpool) + + if self.context.get_enable_custom_ca_trust(): + agentpool.enable_custom_ca_trust = True + + if self.context.get_disable_custom_ca_trust(): + agentpool.enable_custom_ca_trust = False + return agentpool + def update_agentpool_profile_preview(self, agentpools: List[AgentPool] = None) -> AgentPool: """The overall controller used to update the preview AgentPool profile. @@ -303,6 +389,9 @@ def update_agentpool_profile_preview(self, agentpools: List[AgentPool] = None) - :return: the AgentPool object """ - # fetch and update the default AgentPool profile + # DO NOT MOVE: keep this on top, fetch and update the default AgentPool profile agentpool = self.update_agentpool_profile_default(agentpools) + + # update custom ca trust + agentpool = self.update_custom_ca_trust(agentpool) return agentpool diff --git a/src/aks-preview/azext_aks_preview/aks_diagnostics.py b/src/aks-preview/azext_aks_preview/aks_diagnostics.py new file mode 100644 index 00000000000..7b09b6c7dfb --- /dev/null +++ b/src/aks-preview/azext_aks_preview/aks_diagnostics.py @@ -0,0 +1,449 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import colorama +import datetime +import json +import os +import subprocess +import tempfile +import time + +from azure.cli.core.commands.client_factory import get_mgmt_service_client, get_subscription_id +from knack.log import get_logger +from knack.prompting import prompt_y_n +from knack.util import CLIError +from msrestazure.azure_exceptions import CloudError +from tabulate import tabulate + +from azext_aks_preview._client_factory import get_storage_client + +from azext_aks_preview._consts import ( + CONST_CONTAINER_NAME_MAX_LENGTH, + CONST_PERISCOPE_REPO_ORG, + CONST_PERISCOPE_CONTAINER_REGISTRY, + CONST_PERISCOPE_RELEASE_TAG, + CONST_PERISCOPE_IMAGE_VERSION, + CONST_PERISCOPE_NAMESPACE, +) + +from azext_aks_preview._helpers import which, print_or_merge_credentials + +logger = get_logger(__name__) + + +# pylint: disable=line-too-long +def aks_kollect_cmd(cmd, # pylint: disable=too-many-statements,too-many-locals + client, + resource_group_name: str, + name: str, + storage_account: str, + sas_token: str, + container_logs: str, + kube_objects: str, + node_logs: str, + node_logs_windows: str) -> None: + colorama.init() + + mc = client.get(resource_group_name, name) + + if not which('kubectl'): + raise CLIError('Can not find kubectl executable in PATH') + + storage_account_id = None + if storage_account is None: + print("No storage account specified. Try getting storage account from diagnostic settings") + storage_account_id = _get_storage_account_from_diag_settings( + cmd.cli_ctx, resource_group_name, name) + if storage_account_id is None: + raise CLIError( + "A storage account must be specified, since there isn't one in the diagnostic settings.") + + from msrestazure.tools import (is_valid_resource_id, parse_resource_id, + resource_id) + if storage_account_id is None: + if not is_valid_resource_id(storage_account): + storage_account_id = resource_id( + subscription=get_subscription_id(cmd.cli_ctx), + resource_group=resource_group_name, + namespace='Microsoft.Storage', type='storageAccounts', + name=storage_account + ) + else: + storage_account_id = storage_account + + if is_valid_resource_id(storage_account_id): + try: + parsed_storage_account = parse_resource_id(storage_account_id) + except CloudError as ex: + raise CLIError(ex.message) + else: + raise CLIError("Invalid storage account id %s" % storage_account_id) + + storage_account_name = parsed_storage_account['name'] + + readonly_sas_token = None + if sas_token is None: + storage_client = get_storage_client( + cmd.cli_ctx, parsed_storage_account['subscription']) + storage_account_keys = storage_client.storage_accounts.list_keys(parsed_storage_account['resource_group'], + storage_account_name) + kwargs = { + 'account_name': storage_account_name, + 'account_key': storage_account_keys.keys[0].value + } + cloud_storage_client = _cloud_storage_account_service_factory( + cmd.cli_ctx, kwargs) + + sas_token = cloud_storage_client.generate_shared_access_signature( + 'b', + 'sco', + 'rwdlacup', + datetime.datetime.utcnow() + datetime.timedelta(days=1)) + + readonly_sas_token = cloud_storage_client.generate_shared_access_signature( + 'b', + 'sco', + 'rl', + datetime.datetime.utcnow() + datetime.timedelta(days=1)) + + readonly_sas_token = readonly_sas_token.strip('?') + + print() + print('This will deploy a daemon set to your cluster to collect logs and diagnostic information and ' + f'save them to the storage account ' + f'{colorama.Style.BRIGHT}{colorama.Fore.GREEN}{storage_account_name}{colorama.Style.RESET_ALL} as ' + f'outlined in {_format_hyperlink("http://aka.ms/AKSPeriscope")}.') + print() + print('If you share access to that storage account to Azure support, you consent to the terms outlined' + f' in {_format_hyperlink("http://aka.ms/DiagConsent")}.') + print() + if not prompt_y_n('Do you confirm?', default="n"): + return + + print() + print("Getting credentials for cluster %s " % name) + _, temp_kubeconfig_path = tempfile.mkstemp() + credentialResults = client.list_cluster_admin_credentials(resource_group_name, name, None) + kubeconfig = credentialResults.kubeconfigs[0].value.decode(encoding='UTF-8') + print_or_merge_credentials(temp_kubeconfig_path, kubeconfig, False, None) + + print() + print("Starts collecting diag info for cluster %s " % name) + + # Base the container name on the fqdn (or private fqdn) of the managed cluster + container_name = _generate_container_name(mc.fqdn, mc.private_fqdn) + sas_token = sas_token.strip('?') + + kustomize_yaml = _get_kustomize_yaml(storage_account_name, sas_token, container_name, container_logs, kube_objects, node_logs, node_logs_windows) + kustomize_folder = tempfile.mkdtemp() + kustomize_file_path = os.path.join(kustomize_folder, "kustomization.yaml") + try: + with os.fdopen(os.open(kustomize_file_path, os.O_RDWR | os.O_CREAT), 'w+t') as kustomize_file: + kustomize_file.write(kustomize_yaml) + + try: + print() + print("Cleaning up aks-periscope resources if existing") + + subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", + "serviceaccount,configmap,daemonset,secret", + "--all", "-n", CONST_PERISCOPE_NAMESPACE, "--ignore-not-found"], + stderr=subprocess.STDOUT) + + subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", + "ClusterRoleBinding", + "aks-periscope-role-binding", "--ignore-not-found"], + stderr=subprocess.STDOUT) + + subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", + "ClusterRoleBinding", + "aks-periscope-role-binding-view", "--ignore-not-found"], + stderr=subprocess.STDOUT) + + subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", + "ClusterRole", + "aks-periscope-role", "--ignore-not-found"], + stderr=subprocess.STDOUT) + + subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", + "--all", + "apd", "-n", CONST_PERISCOPE_NAMESPACE, "--ignore-not-found"], + stderr=subprocess.DEVNULL) + + subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", + "CustomResourceDefinition", + "diagnostics.aks-periscope.azure.github.com", "--ignore-not-found"], + stderr=subprocess.STDOUT) + + print() + print("Deploying aks-periscope") + + subprocess.check_output(["kubectl", "--kubeconfig", temp_kubeconfig_path, "apply", "-k", + kustomize_folder, "-n", CONST_PERISCOPE_NAMESPACE], stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as err: + raise CLIError(err.output) + finally: + os.remove(kustomize_file_path) + os.rmdir(kustomize_folder) + + print() + + token_in_storage_account_url = readonly_sas_token if readonly_sas_token is not None else sas_token + log_storage_account_url = f"https://{storage_account_name}.blob.core.windows.net/" \ + f"{container_name}?{token_in_storage_account_url}" + + print(f'{colorama.Fore.GREEN}Your logs are being uploaded to storage account {_format_bright(storage_account_name)}') + + print() + print(f'You can download Azure Storage Explorer here ' + f'{_format_hyperlink("https://azure.microsoft.com/en-us/features/storage-explorer/")}' + f' to check the logs by adding the storage account using the following URL:') + print(f'{_format_hyperlink(log_storage_account_url)}') + + print() + if not prompt_y_n('Do you want to see analysis results now?', default="n"): + print(f"You can run 'az aks kanalyze -g {resource_group_name} -n {name}' " + f"anytime to check the analysis results.") + else: + _display_diagnostics_report(temp_kubeconfig_path) + + +def aks_kanalyze_cmd(client, resource_group_name: str, name: str) -> None: + colorama.init() + + client.get(resource_group_name, name) + + _, temp_kubeconfig_path = tempfile.mkstemp() + credentialResults = client.list_cluster_admin_credentials(resource_group_name, name, None) + kubeconfig = credentialResults.kubeconfigs[0].value.decode(encoding='UTF-8') + print_or_merge_credentials(temp_kubeconfig_path, kubeconfig, False, None) + + _display_diagnostics_report(temp_kubeconfig_path) + + +def _get_kustomize_yaml(storage_account_name, + sas_token, + container_name, + container_logs=None, + kube_objects=None, + node_logs_linux=None, + node_logs_windows=None): + diag_config_vars = { + 'DIAGNOSTIC_CONTAINERLOGS_LIST': container_logs, + 'DIAGNOSTIC_KUBEOBJECTS_LIST': kube_objects, + 'DIAGNOSTIC_NODELOGS_LIST_LINUX': node_logs_linux, + 'DIAGNOSTIC_NODELOGS_LIST_WINDOWS': node_logs_windows + } + + # Create YAML list items for each config variable that has a value + diag_content = "\n".join(f' - {k}="{v}"' for k, v in diag_config_vars.items() if v is not None) + + # Build a Kustomize overlay referencing a base for a known release, and using the images from MCR + # for that release. + return f""" +resources: +- https://github.com/{CONST_PERISCOPE_REPO_ORG}/aks-periscope//deployment/base?ref={CONST_PERISCOPE_RELEASE_TAG} + +namespace: {CONST_PERISCOPE_NAMESPACE} + +images: +- name: periscope-linux + newName: {CONST_PERISCOPE_CONTAINER_REGISTRY}/aks/periscope + newTag: {CONST_PERISCOPE_IMAGE_VERSION} +- name: periscope-windows + newName: {CONST_PERISCOPE_CONTAINER_REGISTRY}/aks/periscope-win + newTag: {CONST_PERISCOPE_IMAGE_VERSION} + +configMapGenerator: +- name: diagnostic-config + behavior: merge + literals: +{diag_content} + +secretGenerator: +- name: azureblob-secret + behavior: replace + literals: + - AZURE_BLOB_ACCOUNT_NAME={storage_account_name} + - AZURE_BLOB_SAS_KEY=?{sas_token} + - AZURE_BLOB_CONTAINER_NAME={container_name} +""" + + +def _get_storage_account_from_diag_settings(cli_ctx, resource_group_name, name): + from azure.mgmt.monitor import MonitorManagementClient + diag_settings_client = get_mgmt_service_client( + cli_ctx, MonitorManagementClient).diagnostic_settings + subscription_id = get_subscription_id(cli_ctx) + aks_resource_id = '/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.ContainerService' \ + '/managedClusters/{2}'.format(subscription_id, + resource_group_name, name) + diag_settings = diag_settings_client.list(aks_resource_id) + for _, diag_setting in enumerate(diag_settings): + if diag_setting: + return diag_setting.storage_account_id + + print("No diag settings specified") + return None + + +def _generate_container_name(fqdn: str, private_fqdn: str) -> str: + """ + Generates a container name unique to the specified managed cluster, that + conforms to the Azure naming restrictions defined here: + https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#container-names + + This is done based on fqdn (falling back to private_fqdn), and shortened + to strip everything including and after ".hcp.". + In case the result is excessively long, and also for private clusters which + may not contain "-hcp-", the resulting name is truncated at 63 characters, + with any trailing hyphens removed. + + :param fqdn: FQDN of managed cluster + :param private_fqdn: Private FQDN of managed cluster + :return: container_name: Compliant Azure Storage container name for the cluster + """ + container_name = fqdn if fqdn is not None else private_fqdn + container_name = container_name[:container_name.find(".hcp.")] + container_name = container_name.replace('.', '-') + container_name = container_name[:CONST_CONTAINER_NAME_MAX_LENGTH].rstrip('-') + return container_name + + +def _display_diagnostics_report(temp_kubeconfig_path): # pylint: disable=too-many-statements + if not which('kubectl'): + raise CLIError('Can not find kubectl executable in PATH') + + nodes = subprocess.check_output( + ["kubectl", "--kubeconfig", temp_kubeconfig_path, + "get", "node", "--no-headers"], + universal_newlines=True) + logger.debug(nodes) + node_lines = nodes.splitlines() + ready_nodes = {} + for node_line in node_lines: + columns = node_line.split() + logger.debug(node_line) + if columns[1] != "Ready": + logger.warning( + "Node %s is not Ready. Current state is: %s.", columns[0], columns[1]) + else: + ready_nodes[columns[0]] = False + + logger.debug('There are %s ready nodes in the cluster', + str(len(ready_nodes))) + + if not ready_nodes: + logger.warning( + 'No nodes are ready in the current cluster. Diagnostics info might not be available.') + + network_config_array = [] + network_status_array = [] + apds_created = False + + max_retry = 10 + for retry in range(0, max_retry): + if not apds_created: + apd = subprocess.check_output( + ["kubectl", "--kubeconfig", temp_kubeconfig_path, "get", + "apd", "-n", CONST_PERISCOPE_NAMESPACE, "--no-headers"], + universal_newlines=True + ) + apd_lines = apd.splitlines() + if apd_lines and 'No resources found' in apd_lines[0]: + apd_lines.pop(0) + + print("Got {} diagnostic results for {} ready nodes{}\r".format(len(apd_lines), + len(ready_nodes), + '.' * retry), end='') + if len(apd_lines) < len(ready_nodes): + time.sleep(3) + else: + apds_created = True + print() + else: + for node_name in ready_nodes: + if ready_nodes[node_name]: + continue + apdName = "aks-periscope-diagnostic-" + node_name + try: + network_config = subprocess.check_output( + ["kubectl", "--kubeconfig", temp_kubeconfig_path, + "get", "apd", apdName, "-n", + CONST_PERISCOPE_NAMESPACE, "-o=jsonpath={.spec.networkconfig}"], + universal_newlines=True) + logger.debug('Dns status for node %s is %s', + node_name, network_config) + network_status = subprocess.check_output( + ["kubectl", "--kubeconfig", temp_kubeconfig_path, + "get", "apd", apdName, "-n", + CONST_PERISCOPE_NAMESPACE, "-o=jsonpath={.spec.networkoutbound}"], + universal_newlines=True) + logger.debug('Network status for node %s is %s', + node_name, network_status) + + if not network_config or not network_status: + print("The diagnostics information for node {} is not ready yet. " + "Will try again in 10 seconds.".format(node_name)) + time.sleep(10) + break + + network_config_array += json.loads( + '[' + network_config + ']') + network_status_object = json.loads(network_status) + network_status_array += _format_diag_status( + network_status_object) + ready_nodes[node_name] = True + except subprocess.CalledProcessError as err: + raise CLIError(err.output) + + print() + if network_config_array: + print("Below are the network configuration for each node: ") + print() + print(tabulate(network_config_array, headers="keys", tablefmt='simple')) + print() + else: + logger.warning("Could not get network config. " + "Please run 'az aks kanalyze' command later to get the analysis results.") + + if network_status_array: + print("Below are the network connectivity results for each node:") + print() + print(tabulate(network_status_array, headers="keys", tablefmt='simple')) + else: + logger.warning("Could not get networking status. " + "Please run 'az aks kanalyze' command later to get the analysis results.") + + +def _cloud_storage_account_service_factory(cli_ctx, kwargs): + from azure.cli.core.profiles import ResourceType, get_sdk + t_cloud_storage_account = get_sdk( + cli_ctx, ResourceType.DATA_STORAGE, 'common#CloudStorageAccount') + account_name = kwargs.pop('account_name', None) + account_key = kwargs.pop('account_key', None) + sas_token = kwargs.pop('sas_token', None) + kwargs.pop('connection_string', None) + return t_cloud_storage_account(account_name, account_key, sas_token) + + +def _format_hyperlink(the_link): + return f'\033[1m{colorama.Style.BRIGHT}{colorama.Fore.BLUE}{the_link}{colorama.Style.RESET_ALL}' + + +def _format_bright(msg): + return f'\033[1m{colorama.Style.BRIGHT}{msg}{colorama.Style.RESET_ALL}' + + +def _format_diag_status(diag_status): + for diag in diag_status: + if diag["Status"]: + if "Error:" in diag["Status"]: + diag["Status"] = f'{colorama.Fore.RED}{diag["Status"]}{colorama.Style.RESET_ALL}' + else: + diag["Status"] = f'{colorama.Fore.GREEN}{diag["Status"]}{colorama.Style.RESET_ALL}' + + return diag_status diff --git a/src/aks-preview/azext_aks_preview/azext_metadata.json b/src/aks-preview/azext_aks_preview/azext_metadata.json index 4f2865aa58c..ebb7a76f96b 100644 --- a/src/aks-preview/azext_aks_preview/azext_metadata.json +++ b/src/aks-preview/azext_aks_preview/azext_metadata.json @@ -1,4 +1,4 @@ { - "azext.minCliCoreVersion": "2.35.0", + "azext.minCliCoreVersion": "2.37.0", "azext.isPreview": true } \ No newline at end of file diff --git a/src/aks-preview/azext_aks_preview/commands.py b/src/aks-preview/azext_aks_preview/commands.py index ed7a417b347..f3e032c0d11 100644 --- a/src/aks-preview/azext_aks_preview/commands.py +++ b/src/aks-preview/azext_aks_preview/commands.py @@ -5,24 +5,30 @@ from azure.cli.core.commands import CliCommandType -from ._client_factory import cf_managed_clusters -from ._client_factory import cf_maintenance_configurations -from ._client_factory import cf_agent_pools -from ._client_factory import cf_nodepool_snapshots -from ._client_factory import cf_mc_snapshots -from ._client_factory import cf_trustedaccess_role -from ._format import aks_show_table_format -from ._format import aks_addon_list_available_table_format, aks_addon_list_table_format, aks_addon_show_table_format -from ._format import aks_agentpool_show_table_format -from ._format import aks_agentpool_list_table_format -from ._format import aks_versions_table_format -from ._format import aks_upgrades_table_format -from ._format import aks_pod_identities_table_format -from ._format import aks_pod_identity_exceptions_table_format -from ._format import aks_show_nodepool_snapshot_table_format -from ._format import aks_list_nodepool_snapshot_table_format -from ._format import aks_show_snapshot_table_format -from ._format import aks_list_snapshot_table_format +from azext_aks_preview._client_factory import ( + cf_agent_pools, + cf_maintenance_configurations, + cf_managed_clusters, + cf_mc_snapshots, + cf_nodepool_snapshots, + cf_trustedaccess_role, + cf_trustedaccess_role_binding, +) +from azext_aks_preview._format import ( + aks_addon_list_available_table_format, + aks_addon_list_table_format, + aks_addon_show_table_format, + aks_agentpool_list_table_format, + aks_agentpool_show_table_format, + aks_list_nodepool_snapshot_table_format, + aks_list_snapshot_table_format, + aks_pod_identities_table_format, + aks_pod_identity_exceptions_table_format, + aks_show_nodepool_snapshot_table_format, + aks_show_snapshot_table_format, + aks_show_table_format, + aks_upgrades_table_format, +) def load_command_table(self, _): @@ -64,6 +70,12 @@ def load_command_table(self, _): client_factory=cf_trustedaccess_role ) + trustedaccess_role_binding_sdk = CliCommandType( + operations_tmpl='azext_aks_preview.vendored_sdks.azure_mgmt_preview_aks.' + 'operations._trusted_access_role_bindings_operations#TrustedAccessRoleBindingsOperations.{}', + client_factory=cf_trustedaccess_role_binding + ) + # AKS managed cluster commands with self.command_group('aks', managed_clusters_sdk, client_factory=cf_managed_clusters) as g: g.custom_command('kollect', 'aks_kollect') @@ -179,6 +191,14 @@ def load_command_table(self, _): g.custom_command('delete', 'aks_snapshot_delete', supports_no_wait=True) - # AKS trusted access roles commands + # AKS trusted access role commands with self.command_group('aks trustedaccess role', trustedaccess_role_sdk, client_factory=cf_trustedaccess_role) as g: g.custom_command('list', 'aks_trustedaccess_role_list') + + # AKS trusted access rolebinding commands + with self.command_group('aks trustedaccess rolebinding', trustedaccess_role_binding_sdk, client_factory=cf_trustedaccess_role_binding) as g: + g.custom_command('list', 'aks_trustedaccess_role_binding_list') + g.custom_show_command('show', 'aks_trustedaccess_role_binding_get') + g.custom_command('create', 'aks_trustedaccess_role_binding_create_or_update') + g.custom_command('update', 'aks_trustedaccess_role_binding_create_or_update') + g.custom_command('delete', 'aks_trustedaccess_role_binding_delete', confirmation=True) diff --git a/src/aks-preview/azext_aks_preview/custom.py b/src/aks-preview/azext_aks_preview/custom.py index 233683003bd..dac9b67dafc 100644 --- a/src/aks-preview/azext_aks_preview/custom.py +++ b/src/aks-preview/azext_aks_preview/custom.py @@ -1,45 +1,30 @@ -# pylint: disable=too-many-lines # -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -import base64 -import binascii import datetime -import errno import json import os import os.path import platform import re import ssl -import stat -import subprocess import sys -import tempfile import threading import time import uuid import webbrowser -from math import isnan -import colorama # pylint: disable=import-error -import yaml # pylint: disable=import-error from azure.cli.core.api import get_config_dir from azure.cli.core.azclierror import ( ArgumentUsageError, InvalidArgumentValueError, ) from azure.cli.core.commands import LongRunningOperation -from azure.cli.core.commands.client_factory import ( - get_mgmt_service_client, - get_subscription_id, -) +from azure.cli.core.commands.client_factory import get_subscription_id from azure.cli.core.util import ( - get_file_json, in_cloud_console, - read_file_content, sdk_no_wait, shell_safe_json_parse, ) @@ -49,37 +34,37 @@ PasswordCredential, ServicePrincipalCreateParameters, ) -from dateutil.parser import parse # pylint: disable=import-error -from dateutil.relativedelta import relativedelta # pylint: disable=import-error +from dateutil.parser import parse +from dateutil.relativedelta import relativedelta from knack.log import get_logger -from knack.prompting import NoTTYException, prompt_pass, prompt_y_n +from knack.prompting import prompt_y_n from knack.util import CLIError from msrestazure.azure_exceptions import CloudError -from six.moves.urllib.error import URLError # pylint: disable=import-error -from six.moves.urllib.request import urlopen # pylint: disable=import-error -from tabulate import tabulate # pylint: disable=import-error +from six.moves.urllib.error import URLError +from six.moves.urllib.request import urlopen -from azext_aks_preview._client_factory import CUSTOM_MGMT_AKS_PREVIEW +from azure.cli.command_modules.acs.addonconfiguration import ( + ensure_container_insights_for_monitoring, + sanitize_loganalytics_ws_resource_id, + ensure_default_log_analytics_workspace_for_monitoring +) -from ._client_factory import ( +from azext_aks_preview._client_factory import ( + CUSTOM_MGMT_AKS_PREVIEW, cf_agent_pools, - cf_container_registry_service, - cf_nodepool_snapshots_client, - cf_mc_snapshots_client, - cf_storage, + get_container_registry_client, get_auth_management_client, get_graph_rbac_management_client, get_msi_client, get_resource_by_name, ) -from ._consts import ( + +from azext_aks_preview._consts import ( ADDONS, ADDONS_DESCRIPTIONS, CONST_ACC_SGX_QUOTE_HELPER_ENABLED, CONST_AZURE_KEYVAULT_SECRETS_PROVIDER_ADDON_NAME, - CONST_AZURE_POLICY_ADDON_NAME, CONST_CONFCOM_ADDON_NAME, - CONST_HTTP_APPLICATION_ROUTING_ADDON_NAME, CONST_INGRESS_APPGW_ADDON_NAME, CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID, CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME, @@ -87,102 +72,57 @@ CONST_INGRESS_APPGW_SUBNET_ID, CONST_INGRESS_APPGW_WATCH_NAMESPACE, CONST_KUBE_DASHBOARD_ADDON_NAME, - CONST_MANAGED_IDENTITY_OPERATOR_ROLE, - CONST_MANAGED_IDENTITY_OPERATOR_ROLE_ID, CONST_MONITORING_ADDON_NAME, CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID, CONST_MONITORING_USING_AAD_MSI_AUTH, + CONST_NODEPOOL_MODE_USER, CONST_OPEN_SERVICE_MESH_ADDON_NAME, - CONST_PERISCOPE_REPO_ORG, - CONST_PERISCOPE_CONTAINER_REGISTRY, - CONST_PERISCOPE_RELEASE_TAG, - CONST_PERISCOPE_IMAGE_VERSION, - CONST_PERISCOPE_NAMESPACE, CONST_ROTATION_POLL_INTERVAL, CONST_SCALE_DOWN_MODE_DELETE, CONST_SCALE_SET_PRIORITY_REGULAR, - CONST_SCALE_SET_PRIORITY_SPOT, CONST_SECRET_ROTATION_ENABLED, CONST_SPOT_EVICTION_POLICY_DELETE, CONST_VIRTUAL_NODE_ADDON_NAME, CONST_VIRTUAL_NODE_SUBNET_NAME, ) -from ._helpers import ( - _trim_fqdn_name_containing_hcp, -) -from ._podidentity import ( +from azext_aks_preview._helpers import print_or_merge_credentials, get_nodepool_snapshot_by_snapshot_id +from azext_aks_preview._podidentity import ( _ensure_managed_identity_operator_permission, _ensure_pod_identity_addon_is_enabled, _fill_defaults_for_pod_identity_profile, _update_addon_pod_identity, ) -from ._resourcegroup import get_rg_location -from ._roleassignments import ( +from azext_aks_preview._resourcegroup import get_rg_location +from azext_aks_preview._roleassignments import ( add_role_assignment, build_role_scope, - create_role_assignment, resolve_object_id, resolve_role_id, ) -from .addonconfiguration import ( +from azext_aks_preview.addonconfiguration import ( add_ingress_appgw_addon_role_assignment, add_monitoring_role_assignment, add_virtual_node_role_assignment, - enable_addons, - ensure_container_insights_for_monitoring, - ensure_default_log_analytics_workspace_for_monitoring, - sanitize_loganalytics_ws_resource_id, -) -from .maintenanceconfiguration import ( - aks_maintenanceconfiguration_update_internal, -) -from .vendored_sdks.azure_mgmt_preview_aks.v2022_05_02_preview.models import ( - AgentPool, - AgentPoolUpgradeSettings, - ContainerServiceStorageProfileTypes, - CreationData, - KubeletConfig, - LinuxOSConfig, - ManagedClusterAddonProfile, - ManagedClusterHTTPProxyConfig, - ManagedClusterPodIdentity, - ManagedClusterPodIdentityException, - PowerState, - Snapshot, - ManagedClusterSnapshot, - SysctlConfig, - UserAssignedIdentity, - ManagedClusterIngressProfile, - ManagedClusterIngressProfileWebAppRouting, + enable_addons ) - from azext_aks_preview.aks_draft.commands import ( aks_draft_cmd_create, - aks_draft_cmd_setup_gh, aks_draft_cmd_generate_workflow, + aks_draft_cmd_setup_gh, aks_draft_cmd_up, - aks_draft_cmd_update + aks_draft_cmd_update, +) +from azext_aks_preview.maintenanceconfiguration import ( + aks_maintenanceconfiguration_update_internal, +) +from azext_aks_preview.aks_diagnostics import ( + aks_kollect_cmd, + aks_kanalyze_cmd, ) logger = get_logger(__name__) -def which(binary): - path_var = os.getenv('PATH') - if platform.system() == 'Windows': - binary = binary + '.exe' - parts = path_var.split(';') - else: - parts = path_var.split(':') - - for part in parts: - bin_path = os.path.join(part, binary) - if os.path.exists(bin_path) and os.path.isfile(bin_path) and os.access(bin_path, os.X_OK): - return bin_path - - return None - - def wait_then_open(url): """ Waits for a bit then opens a URL. Useful for waiting for a proxy to come up, and then open the URL. @@ -216,36 +156,6 @@ def _ssl_context(): return ssl.create_default_context() -def _build_service_principal(rbac_client, cli_ctx, name, url, client_secret): - # use get_progress_controller - hook = cli_ctx.get_progress_controller(True) - hook.add(messsage='Creating service principal', value=0, total_val=1.0) - logger.info('Creating service principal') - # always create application with 5 years expiration - start_date = datetime.datetime.utcnow() - end_date = start_date + relativedelta(years=5) - result = create_application(rbac_client.applications, name, url, [url], password=client_secret, - start_date=start_date, end_date=end_date) - service_principal = result.app_id # pylint: disable=no-member - for x in range(0, 10): - hook.add(message='Creating service principal', - value=0.1 * x, total_val=1.0) - try: - create_service_principal( - cli_ctx, service_principal, rbac_client=rbac_client) - break - # TODO figure out what exception AAD throws here sometimes. - except Exception as ex: # pylint: disable=broad-except - logger.info(ex) - time.sleep(2 + 2 * x) - else: - return False - hook.add(message='Finished service principal creation', - value=1.0, total_val=1.0) - logger.info('Finished service principal creation') - return service_principal - - def _delete_role_assignments(cli_ctx, role, service_principal, delay=2, scope=None): # AAD can have delays in propagating data, so sleep and retry hook = cli_ctx.get_progress_controller(True) @@ -272,16 +182,6 @@ def _delete_role_assignments(cli_ctx, role, service_principal, delay=2, scope=No return True -def _get_default_dns_prefix(name, resource_group_name, subscription_id): - # Use subscription id to provide uniqueness and prevent DNS name clashes - name_part = re.sub('[^A-Za-z0-9-]', '', name)[0:10] - if not name_part[0].isalpha(): - name_part = (str('a') + name_part)[0:10] - resource_group_part = re.sub( - '[^A-Za-z0-9-]', '', resource_group_name)[0:16] - return '{}-{}-{}'.format(name_part, resource_group_part, subscription_id[0:6]) - - # pylint: disable=too-many-locals def store_acs_service_principal(subscription_id, client_secret, service_principal, file_name='acsServicePrincipal.json'): @@ -535,58 +435,6 @@ def _get_user_assigned_identity(cli_ctx, resource_id): "Cannot parse identity name from provided resource id {}.".format(resource_id)) -_re_snapshot_resource_id = re.compile( - r'/subscriptions/(.*?)/resourcegroups/(.*?)/providers/microsoft.containerservice/snapshots/(.*)', - flags=re.IGNORECASE) - - -_re_mc_snapshot_resource_id = re.compile( - r'/subscriptions/(.*?)/resourcegroups/(.*?)/providers/microsoft.containerservice/managedclustersnapshots/(.*)', - flags=re.IGNORECASE) - - -def _get_snapshot(cli_ctx, snapshot_id): - snapshot_id = snapshot_id.lower() - match = _re_snapshot_resource_id.search(snapshot_id) - if match: - subscription_id = match.group(1) - resource_group_name = match.group(2) - snapshot_name = match.group(3) - snapshot_client = cf_nodepool_snapshots_client( - cli_ctx, subscription_id=subscription_id) - try: - snapshot = snapshot_client.get(resource_group_name, snapshot_name) - except CloudError as ex: - if 'was not found' in ex.message: - raise InvalidArgumentValueError( - "Snapshot {} not found.".format(snapshot_id)) - raise CLIError(ex.message) - return snapshot - raise InvalidArgumentValueError( - "Cannot parse snapshot name from provided resource id {}.".format(snapshot_id)) - - -def _get_cluster_snapshot(cli_ctx, snapshot_id): - snapshot_id = snapshot_id.lower() - match = _re_mc_snapshot_resource_id.search(snapshot_id) - if match: - subscription_id = match.group(1) - resource_group_name = match.group(2) - snapshot_name = match.group(3) - snapshot_client = cf_mc_snapshots_client( - cli_ctx, subscription_id=subscription_id) - try: - snapshot = snapshot_client.get(resource_group_name, snapshot_name) - except CloudError as ex: - if 'was not found' in ex.message: - raise InvalidArgumentValueError( - "Managed cluster snapshot {} not found.".format(snapshot_id)) - raise CLIError(ex.message) - return snapshot - raise InvalidArgumentValueError( - "Cannot parse snapshot name from provided resource id {}.".format(snapshot_id)) - - def aks_browse( cmd, client, @@ -610,12 +458,6 @@ def aks_browse( ) -def _trim_nodepoolname(nodepool_name): - if not nodepool_name: - return "nodepool1" - return nodepool_name[:12] - - def aks_maintenanceconfiguration_list( cmd, client, @@ -690,253 +532,278 @@ def aks_maintenanceconfiguration_update( return aks_maintenanceconfiguration_update_internal(cmd, client, resource_group_name, cluster_name, config_name, config_file, weekday, start_hour) -# pylint: disable=unused-argument,too-many-locals -def aks_create(cmd, - client, - resource_group_name, - name, - ssh_key_value, - dns_name_prefix=None, - location=None, - admin_username="azureuser", - windows_admin_username=None, - windows_admin_password=None, - enable_ahub=False, - kubernetes_version='', - node_vm_size=None, - node_osdisk_type=None, - node_osdisk_size=0, - node_osdisk_diskencryptionset_id=None, - node_count=3, - nodepool_name="nodepool1", - nodepool_tags=None, - nodepool_labels=None, - service_principal=None, client_secret=None, - no_ssh_key=False, - disable_rbac=None, - enable_rbac=None, - enable_vmss=None, - vm_set_type=None, - skip_subnet_role_assignment=False, - os_sku=None, - enable_fips_image=False, - enable_cluster_autoscaler=False, - cluster_autoscaler_profile=None, - network_plugin=None, - network_policy=None, - pod_cidr=None, - service_cidr=None, - pod_cidrs=None, - service_cidrs=None, - ip_families=None, - dns_service_ip=None, - docker_bridge_address=None, - load_balancer_sku=None, - load_balancer_managed_outbound_ip_count=None, - load_balancer_managed_outbound_ipv6_count=None, - load_balancer_outbound_ips=None, - load_balancer_outbound_ip_prefixes=None, - load_balancer_outbound_ports=None, - load_balancer_idle_timeout=None, - nat_gateway_managed_outbound_ip_count=None, - nat_gateway_idle_timeout=None, - outbound_type=None, - enable_addons=None, - workspace_resource_id=None, - enable_msi_auth_for_monitoring=False, - min_count=None, - max_count=None, - vnet_subnet_id=None, - pod_subnet_id=None, - ppg=None, - max_pods=0, - aad_client_app_id=None, - aad_server_app_id=None, - aad_server_app_secret=None, - aad_tenant_id=None, - tags=None, - node_zones=None, - zones=None, - enable_node_public_ip=False, - node_public_ip_prefix_id=None, - generate_ssh_keys=False, # pylint: disable=unused-argument - enable_pod_security_policy=False, - node_resource_group=None, - uptime_sla=False, - attach_acr=None, - enable_private_cluster=False, - private_dns_zone=None, - enable_managed_identity=True, - fqdn_subdomain=None, - disable_public_fqdn=False, - api_server_authorized_ip_ranges=None, - aks_custom_headers=None, - appgw_name=None, - appgw_subnet_prefix=None, - appgw_subnet_cidr=None, - appgw_id=None, - appgw_subnet_id=None, - appgw_watch_namespace=None, - enable_aad=False, - enable_azure_rbac=False, - aad_admin_group_object_ids=None, - aci_subnet_name=None, - enable_sgxquotehelper=False, - kubelet_config=None, - linux_os_config=None, - http_proxy_config=None, - assign_identity=None, - auto_upgrade_channel=None, - enable_pod_identity=False, - enable_pod_identity_with_kubenet=False, - enable_workload_identity=None, - enable_encryption_at_host=False, - enable_ultra_ssd=False, - edge_zone=None, - enable_secret_rotation=False, - disk_driver_version=None, - disable_disk_driver=False, - disable_file_driver=False, - disable_snapshot_controller=False, - rotation_poll_interval=None, - disable_local_accounts=False, - no_wait=False, - assign_kubelet_identity=None, - workload_runtime=None, - gpu_instance_profile=None, - enable_windows_gmsa=False, - gmsa_dns_server=None, - gmsa_root_domain_name=None, - snapshot_id=None, - cluster_snapshot_id=None, - enable_oidc_issuer=False, - host_group_id=None, - crg_id=None, - message_of_the_day=None, - enable_azure_keyvault_kms=False, - azure_keyvault_kms_key_id=None, - enable_apiserver_vnet_integration=False, - apiserver_subnet_id=None, - dns_zone_resource_id=None, - enable_custom_ca_trust=False, - enable_keda=False, - yes=False): +# pylint: disable=too-many-locals +def aks_create( + cmd, + client, + resource_group_name, + name, + ssh_key_value, + location=None, + kubernetes_version="", + tags=None, + dns_name_prefix=None, + node_osdisk_diskencryptionset_id=None, + disable_local_accounts=False, + disable_rbac=None, + edge_zone=None, + admin_username="azureuser", + generate_ssh_keys=False, + no_ssh_key=False, + pod_cidr=None, + service_cidr=None, + dns_service_ip=None, + docker_bridge_address=None, + load_balancer_sku=None, + load_balancer_managed_outbound_ip_count=None, + load_balancer_outbound_ips=None, + load_balancer_outbound_ip_prefixes=None, + load_balancer_outbound_ports=None, + load_balancer_idle_timeout=None, + nat_gateway_managed_outbound_ip_count=None, + nat_gateway_idle_timeout=None, + outbound_type=None, + network_plugin=None, + network_plugin_mode=None, + network_policy=None, + auto_upgrade_channel=None, + cluster_autoscaler_profile=None, + uptime_sla=False, + fqdn_subdomain=None, + api_server_authorized_ip_ranges=None, + enable_private_cluster=False, + private_dns_zone=None, + disable_public_fqdn=False, + service_principal=None, + client_secret=None, + enable_managed_identity=True, + assign_identity=None, + assign_kubelet_identity=None, + enable_aad=False, + enable_azure_rbac=False, + aad_admin_group_object_ids=None, + aad_client_app_id=None, + aad_server_app_id=None, + aad_server_app_secret=None, + aad_tenant_id=None, + windows_admin_username=None, + windows_admin_password=None, + enable_ahub=False, + enable_windows_gmsa=False, + gmsa_dns_server=None, + gmsa_root_domain_name=None, + attach_acr=None, + skip_subnet_role_assignment=False, + node_resource_group=None, + enable_defender=False, + defender_config=None, + # addons + enable_addons=None, + workspace_resource_id=None, + enable_msi_auth_for_monitoring=False, + aci_subnet_name=None, + appgw_name=None, + appgw_subnet_cidr=None, + appgw_id=None, + appgw_subnet_id=None, + appgw_watch_namespace=None, + enable_sgxquotehelper=False, + enable_secret_rotation=False, + rotation_poll_interval=None, + # nodepool paramerters + nodepool_name="nodepool1", + node_vm_size=None, + os_sku=None, + snapshot_id=None, + vnet_subnet_id=None, + pod_subnet_id=None, + enable_node_public_ip=False, + node_public_ip_prefix_id=None, + enable_cluster_autoscaler=False, + min_count=None, + max_count=None, + node_count=3, + nodepool_tags=None, + nodepool_labels=None, + node_osdisk_type=None, + node_osdisk_size=0, + vm_set_type=None, + # TODO: remove node_zones after cli 2.38.0 release + node_zones=None, + zones=None, + ppg=None, + max_pods=0, + enable_encryption_at_host=False, + enable_ultra_ssd=False, + enable_fips_image=False, + kubelet_config=None, + linux_os_config=None, + no_wait=False, + yes=False, + aks_custom_headers=None, + # extensions + # managed cluster + http_proxy_config=None, + ip_families=None, + pod_cidrs=None, + service_cidrs=None, + load_balancer_managed_outbound_ipv6_count=None, + enable_pod_security_policy=False, + enable_pod_identity=False, + enable_pod_identity_with_kubenet=False, + enable_workload_identity=None, + enable_oidc_issuer=False, + enable_azure_keyvault_kms=False, + azure_keyvault_kms_key_id=None, + azure_keyvault_kms_key_vault_network_access=None, + azure_keyvault_kms_key_vault_resource_id=None, + cluster_snapshot_id=None, + disk_driver_version=None, + disable_disk_driver=False, + disable_file_driver=False, + enable_blob_driver=None, + disable_snapshot_controller=False, + enable_apiserver_vnet_integration=False, + apiserver_subnet_id=None, + dns_zone_resource_id=None, + enable_keda=False, + # nodepool + host_group_id=None, + crg_id=None, + message_of_the_day=None, + gpu_instance_profile=None, + workload_runtime=None, + enable_custom_ca_trust=False, +): # DO NOT MOVE: get all the original parameters and save them as a dictionary raw_parameters = locals() from azure.cli.command_modules.acs._consts import DecoratorEarlyExitException - from azure.cli.command_modules.acs.decorator import AKSParamDict - from .decorator import AKSPreviewCreateDecorator + from azext_aks_preview.managed_cluster_decorator import AKSPreviewManagedClusterCreateDecorator # decorator pattern - aks_create_decorator = AKSPreviewCreateDecorator( + aks_create_decorator = AKSPreviewManagedClusterCreateDecorator( cmd=cmd, client=client, - raw_parameters=AKSParamDict(raw_parameters), + raw_parameters=raw_parameters, resource_type=CUSTOM_MGMT_AKS_PREVIEW, ) try: # construct mc profile - mc = aks_create_decorator.construct_mc_preview_profile() + mc = aks_create_decorator.construct_mc_profile_preview() except DecoratorEarlyExitException: # exit gracefully return None # send request to create a real managed cluster - return aks_create_decorator.create_mc_preview(mc) - - -def aks_update(cmd, # pylint: disable=too-many-statements,too-many-branches,too-many-locals - client, - resource_group_name, - name, - enable_cluster_autoscaler=False, - disable_cluster_autoscaler=False, - update_cluster_autoscaler=False, - cluster_autoscaler_profile=None, - min_count=None, max_count=None, no_wait=False, - load_balancer_managed_outbound_ip_count=None, - load_balancer_managed_outbound_ipv6_count=None, - load_balancer_outbound_ips=None, - load_balancer_outbound_ip_prefixes=None, - load_balancer_outbound_ports=None, - load_balancer_idle_timeout=None, - nat_gateway_managed_outbound_ip_count=None, - nat_gateway_idle_timeout=None, - api_server_authorized_ip_ranges=None, - enable_pod_security_policy=False, - disable_pod_security_policy=False, - attach_acr=None, - detach_acr=None, - uptime_sla=False, - no_uptime_sla=False, - enable_aad=False, - aad_tenant_id=None, - aad_admin_group_object_ids=None, - enable_ahub=False, - disable_ahub=False, - aks_custom_headers=None, - auto_upgrade_channel=None, - enable_managed_identity=False, - assign_identity=None, - assign_kubelet_identity=None, - enable_pod_identity=False, - enable_pod_identity_with_kubenet=False, - disable_pod_identity=False, - enable_workload_identity=None, - enable_secret_rotation=False, - disable_secret_rotation=False, - rotation_poll_interval=None, - enable_disk_driver=False, - disk_driver_version=None, - disable_disk_driver=False, - enable_file_driver=False, - disable_file_driver=False, - enable_snapshot_controller=False, - disable_snapshot_controller=False, - disable_local_accounts=False, - enable_local_accounts=False, - enable_public_fqdn=False, - disable_public_fqdn=False, - yes=False, - tags=None, - nodepool_labels=None, - windows_admin_password=None, - enable_azure_rbac=False, - disable_azure_rbac=False, - enable_windows_gmsa=False, - gmsa_dns_server=None, - gmsa_root_domain_name=None, - enable_oidc_issuer=False, - http_proxy_config=None, - enable_azure_keyvault_kms=False, - azure_keyvault_kms_key_id=None, - enable_apiserver_vnet_integration=False, - apiserver_subnet_id=None, - enable_keda=False, - disable_keda=False, - ): + return aks_create_decorator.create_mc(mc) + + +# pylint: disable=too-many-locals +def aks_update( + cmd, + client, + resource_group_name, + name, + tags=None, + disable_local_accounts=False, + enable_local_accounts=False, + load_balancer_managed_outbound_ip_count=None, + load_balancer_outbound_ips=None, + load_balancer_outbound_ip_prefixes=None, + load_balancer_outbound_ports=None, + load_balancer_idle_timeout=None, + nat_gateway_managed_outbound_ip_count=None, + nat_gateway_idle_timeout=None, + auto_upgrade_channel=None, + cluster_autoscaler_profile=None, + uptime_sla=False, + no_uptime_sla=False, + api_server_authorized_ip_ranges=None, + enable_public_fqdn=False, + disable_public_fqdn=False, + enable_managed_identity=False, + assign_identity=None, + assign_kubelet_identity=None, + enable_aad=False, + enable_azure_rbac=False, + disable_azure_rbac=False, + aad_tenant_id=None, + aad_admin_group_object_ids=None, + windows_admin_password=None, + enable_ahub=False, + disable_ahub=False, + enable_windows_gmsa=False, + gmsa_dns_server=None, + gmsa_root_domain_name=None, + attach_acr=None, + detach_acr=None, + enable_defender=False, + disable_defender=False, + defender_config=None, + # addons + enable_secret_rotation=False, + disable_secret_rotation=False, + rotation_poll_interval=None, + # nodepool paramerters + enable_cluster_autoscaler=False, + disable_cluster_autoscaler=False, + update_cluster_autoscaler=False, + min_count=None, + max_count=None, + nodepool_labels=None, + no_wait=False, + yes=False, + aks_custom_headers=None, + # extensions + # managed cluster + http_proxy_config=None, + load_balancer_managed_outbound_ipv6_count=None, + enable_pod_security_policy=False, + disable_pod_security_policy=False, + enable_pod_identity=False, + enable_pod_identity_with_kubenet=False, + disable_pod_identity=False, + enable_workload_identity=None, + enable_oidc_issuer=False, + enable_azure_keyvault_kms=False, + azure_keyvault_kms_key_id=None, + azure_keyvault_kms_key_vault_network_access=None, + azure_keyvault_kms_key_vault_resource_id=None, + enable_disk_driver=False, + disk_driver_version=None, + disable_disk_driver=False, + enable_file_driver=False, + disable_file_driver=False, + enable_blob_driver=None, + disable_blob_driver=None, + enable_snapshot_controller=False, + disable_snapshot_controller=False, + enable_apiserver_vnet_integration=False, + apiserver_subnet_id=None, + enable_keda=False, + disable_keda=False, +): # DO NOT MOVE: get all the original parameters and save them as a dictionary raw_parameters = locals() from azure.cli.command_modules.acs._consts import DecoratorEarlyExitException - from azure.cli.command_modules.acs.decorator import AKSParamDict - from .decorator import AKSPreviewUpdateDecorator + from azext_aks_preview.managed_cluster_decorator import AKSPreviewManagedClusterUpdateDecorator # decorator pattern - aks_update_decorator = AKSPreviewUpdateDecorator( + aks_update_decorator = AKSPreviewManagedClusterUpdateDecorator( cmd=cmd, client=client, - raw_parameters=AKSParamDict(raw_parameters), + raw_parameters=raw_parameters, resource_type=CUSTOM_MGMT_AKS_PREVIEW, ) try: # update mc profile - mc = aks_update_decorator.update_mc_preview_profile() + mc = aks_update_decorator.update_mc_profile_preview() except DecoratorEarlyExitException: # exit gracefully return None # send request to update the real managed cluster - return aks_update_decorator.update_mc_preview(mc) + return aks_update_decorator.update_mc(mc) # pylint: disable=unused-argument @@ -1009,257 +876,12 @@ def aks_get_credentials(cmd, # pylint: disable=unused-argument try: kubeconfig = credentialResults.kubeconfigs[0].value.decode( encoding='UTF-8') - _print_or_merge_credentials( + print_or_merge_credentials( path, kubeconfig, overwrite_existing, context_name) except (IndexError, ValueError): raise CLIError("Fail to find kubeconfig file.") -# pylint: disable=line-too-long -def aks_kollect(cmd, # pylint: disable=too-many-statements,too-many-locals - client, - resource_group_name, - name, - storage_account=None, - sas_token=None, - container_logs=None, - kube_objects=None, - node_logs=None, - node_logs_windows=None): - colorama.init() - - mc = client.get(resource_group_name, name) - - if not which('kubectl'): - raise CLIError('Can not find kubectl executable in PATH') - - storage_account_id = None - if storage_account is None: - print("No storage account specified. Try getting storage account from diagnostic settings") - storage_account_id = get_storage_account_from_diag_settings( - cmd.cli_ctx, resource_group_name, name) - if storage_account_id is None: - raise CLIError( - "A storage account must be specified, since there isn't one in the diagnostic settings.") - - from msrestazure.tools import (is_valid_resource_id, parse_resource_id, - resource_id) - if storage_account_id is None: - if not is_valid_resource_id(storage_account): - storage_account_id = resource_id( - subscription=get_subscription_id(cmd.cli_ctx), - resource_group=resource_group_name, - namespace='Microsoft.Storage', type='storageAccounts', - name=storage_account - ) - else: - storage_account_id = storage_account - - if is_valid_resource_id(storage_account_id): - try: - parsed_storage_account = parse_resource_id(storage_account_id) - except CloudError as ex: - raise CLIError(ex.message) - else: - raise CLIError("Invalid storage account id %s" % storage_account_id) - - storage_account_name = parsed_storage_account['name'] - - readonly_sas_token = None - if sas_token is None: - storage_client = cf_storage( - cmd.cli_ctx, parsed_storage_account['subscription']) - storage_account_keys = storage_client.storage_accounts.list_keys(parsed_storage_account['resource_group'], - storage_account_name) - kwargs = { - 'account_name': storage_account_name, - 'account_key': storage_account_keys.keys[0].value - } - cloud_storage_client = cloud_storage_account_service_factory( - cmd.cli_ctx, kwargs) - - sas_token = cloud_storage_client.generate_shared_access_signature( - 'b', - 'sco', - 'rwdlacup', - datetime.datetime.utcnow() + datetime.timedelta(days=1)) - - readonly_sas_token = cloud_storage_client.generate_shared_access_signature( - 'b', - 'sco', - 'rl', - datetime.datetime.utcnow() + datetime.timedelta(days=1)) - - readonly_sas_token = readonly_sas_token.strip('?') - - print() - print('This will deploy a daemon set to your cluster to collect logs and diagnostic information and ' - f'save them to the storage account ' - f'{colorama.Style.BRIGHT}{colorama.Fore.GREEN}{storage_account_name}{colorama.Style.RESET_ALL} as ' - f'outlined in {format_hyperlink("http://aka.ms/AKSPeriscope")}.') - print() - print('If you share access to that storage account to Azure support, you consent to the terms outlined' - f' in {format_hyperlink("http://aka.ms/DiagConsent")}.') - print() - if not prompt_y_n('Do you confirm?', default="n"): - return - - print() - print("Getting credentials for cluster %s " % name) - _, temp_kubeconfig_path = tempfile.mkstemp() - aks_get_credentials(cmd, client, resource_group_name, - name, admin=True, path=temp_kubeconfig_path) - - print() - print("Starts collecting diag info for cluster %s " % name) - - # Form containerName from fqdn, as it was previously jsut the location of code is changed. - # https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#container-names - maxContainerNameLength = 63 - fqdn = mc.fqdn if mc.fqdn is not None else mc.private_fqdn - normalized_container_name = fqdn.replace('.', '-') - len_of_container_name = normalized_container_name.index("-hcp-") - if len_of_container_name == -1: - len_of_container_name = maxContainerNameLength - container_name = normalized_container_name[:len_of_container_name] - - sas_token = sas_token.strip('?') - - kustomize_yaml = get_kustomize_yaml(storage_account_name, sas_token, container_name, container_logs, kube_objects, node_logs, node_logs_windows) - kustomize_folder = tempfile.mkdtemp() - kustomize_file_path = os.path.join(kustomize_folder, "kustomization.yaml") - try: - with os.fdopen(os.open(kustomize_file_path, os.O_RDWR | os.O_CREAT), 'w+t') as kustomize_file: - kustomize_file.write(kustomize_yaml) - - try: - print() - print(f"Cleaning up aks-periscope resources if existing") - - subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", - "serviceaccount,configmap,daemonset,secret", - "--all", "-n", CONST_PERISCOPE_NAMESPACE, "--ignore-not-found"], - stderr=subprocess.STDOUT) - - subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", - "ClusterRoleBinding", - "aks-periscope-role-binding", "--ignore-not-found"], - stderr=subprocess.STDOUT) - - subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", - "ClusterRoleBinding", - "aks-periscope-role-binding-view", "--ignore-not-found"], - stderr=subprocess.STDOUT) - - subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", - "ClusterRole", - "aks-periscope-role", "--ignore-not-found"], - stderr=subprocess.STDOUT) - - subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", - "--all", - "apd", "-n", CONST_PERISCOPE_NAMESPACE, "--ignore-not-found"], - stderr=subprocess.DEVNULL) - - subprocess.call(["kubectl", "--kubeconfig", temp_kubeconfig_path, "delete", - "CustomResourceDefinition", - "diagnostics.aks-periscope.azure.github.com", "--ignore-not-found"], - stderr=subprocess.STDOUT) - - print() - print(f"Deploying aks-periscope") - - subprocess.check_output(["kubectl", "--kubeconfig", temp_kubeconfig_path, "apply", "-k", - kustomize_folder, "-n", CONST_PERISCOPE_NAMESPACE], stderr=subprocess.STDOUT) - except subprocess.CalledProcessError as err: - raise CLIError(err.output) - finally: - os.remove(kustomize_file_path) - os.rmdir(kustomize_folder) - - print() - - token_in_storage_account_url = readonly_sas_token if readonly_sas_token is not None else sas_token - log_storage_account_url = f"https://{storage_account_name}.blob.core.windows.net/" \ - f"{_trim_fqdn_name_containing_hcp(container_name)}?{token_in_storage_account_url}" - - print(f'{colorama.Fore.GREEN}Your logs are being uploaded to storage account {format_bright(storage_account_name)}') - - print() - print(f'You can download Azure Storage Explorer here ' - f'{format_hyperlink("https://azure.microsoft.com/en-us/features/storage-explorer/")}' - f' to check the logs by adding the storage account using the following URL:') - print(f'{format_hyperlink(log_storage_account_url)}') - - print() - if not prompt_y_n('Do you want to see analysis results now?', default="n"): - print(f"You can run 'az aks kanalyze -g {resource_group_name} -n {name}' " - f"anytime to check the analysis results.") - else: - display_diagnostics_report(temp_kubeconfig_path) - - -def get_kustomize_yaml(storage_account_name, - sas_token, - container_name, - container_logs=None, - kube_objects=None, - node_logs_linux=None, - node_logs_windows=None): - diag_config_vars = { - 'DIAGNOSTIC_CONTAINERLOGS_LIST': container_logs, - 'DIAGNOSTIC_KUBEOBJECTS_LIST': kube_objects, - 'DIAGNOSTIC_NODELOGS_LIST_LINUX': node_logs_linux, - 'DIAGNOSTIC_NODELOGS_LIST_WINDOWS': node_logs_windows - } - - # Create YAML list items for each config variable that has a value - diag_content = "\n".join(f' - {k}="{v}"' for k, v in diag_config_vars.items() if v is not None) - - # Build a Kustomize overlay referencing a base for a known release, and using the images from MCR - # for that release. - return f""" -resources: -- https://github.com/{CONST_PERISCOPE_REPO_ORG}/aks-periscope//deployment/base?ref={CONST_PERISCOPE_RELEASE_TAG} - -namespace: {CONST_PERISCOPE_NAMESPACE} - -images: -- name: periscope-linux - newName: {CONST_PERISCOPE_CONTAINER_REGISTRY}/aks/periscope - newTag: {CONST_PERISCOPE_IMAGE_VERSION} -- name: periscope-windows - newName: {CONST_PERISCOPE_CONTAINER_REGISTRY}/aks/periscope-win - newTag: {CONST_PERISCOPE_IMAGE_VERSION} - -configMapGenerator: -- name: diagnostic-config - behavior: merge - literals: -{diag_content} - -secretGenerator: -- name: azureblob-secret - behavior: replace - literals: - - AZURE_BLOB_ACCOUNT_NAME={storage_account_name} - - AZURE_BLOB_SAS_KEY=?{sas_token} - - AZURE_BLOB_CONTAINER_NAME={container_name} -""" - - -def aks_kanalyze(cmd, client, resource_group_name, name): - colorama.init() - - client.get(resource_group_name, name) - - _, temp_kubeconfig_path = tempfile.mkstemp() - aks_get_credentials(cmd, client, resource_group_name, - name, admin=True, path=temp_kubeconfig_path) - - display_diagnostics_report(temp_kubeconfig_path) - - def aks_scale(cmd, # pylint: disable=unused-argument client, resource_group_name, @@ -1386,192 +1008,6 @@ def _upgrade_single_nodepool_image_version(no_wait, client, resource_group_name, return sdk_no_wait(no_wait, client.begin_upgrade_node_image_version, resource_group_name, cluster_name, nodepool_name, headers=headers) -def _handle_addons_args(cmd, # pylint: disable=too-many-statements - addons_str, - subscription_id, - resource_group_name, - addon_profiles=None, - workspace_resource_id=None, - enable_msi_auth_for_monitoring=False, - appgw_name=None, - appgw_subnet_prefix=None, - appgw_subnet_cidr=None, - appgw_id=None, - appgw_subnet_id=None, - appgw_watch_namespace=None, - enable_sgxquotehelper=False, - aci_subnet_name=None, - vnet_subnet_id=None, - enable_secret_rotation=False, - dns_zone_resource_id=None, - rotation_poll_interval=None,): - if not addon_profiles: - addon_profiles = {} - addons = addons_str.split(',') if addons_str else [] - if 'http_application_routing' in addons: - addon_profiles[CONST_HTTP_APPLICATION_ROUTING_ADDON_NAME] = ManagedClusterAddonProfile( - enabled=True) - addons.remove('http_application_routing') - if 'kube-dashboard' in addons: - addon_profiles[CONST_KUBE_DASHBOARD_ADDON_NAME] = ManagedClusterAddonProfile( - enabled=True) - addons.remove('kube-dashboard') - # TODO: can we help the user find a workspace resource ID? - if 'monitoring' in addons: - if not workspace_resource_id: - # use default workspace if exists else create default workspace - workspace_resource_id = ensure_default_log_analytics_workspace_for_monitoring( - cmd, subscription_id, resource_group_name) - workspace_resource_id = sanitize_loganalytics_ws_resource_id( - workspace_resource_id) - addon_profiles[CONST_MONITORING_ADDON_NAME] = ManagedClusterAddonProfile(enabled=True, - config={CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID: workspace_resource_id, - CONST_MONITORING_USING_AAD_MSI_AUTH: enable_msi_auth_for_monitoring}) - addons.remove('monitoring') - elif workspace_resource_id: - raise CLIError( - '"--workspace-resource-id" requires "--enable-addons monitoring".') - if 'azure-policy' in addons: - addon_profiles[CONST_AZURE_POLICY_ADDON_NAME] = ManagedClusterAddonProfile( - enabled=True) - addons.remove('azure-policy') - if 'gitops' in addons: - addon_profiles['gitops'] = ManagedClusterAddonProfile(enabled=True) - addons.remove('gitops') - if 'ingress-appgw' in addons: - addon_profile = ManagedClusterAddonProfile(enabled=True, config={}) - if appgw_name is not None: - addon_profile.config[CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME] = appgw_name - if appgw_subnet_prefix is not None: - addon_profile.config[CONST_INGRESS_APPGW_SUBNET_CIDR] = appgw_subnet_prefix - if appgw_subnet_cidr is not None: - addon_profile.config[CONST_INGRESS_APPGW_SUBNET_CIDR] = appgw_subnet_cidr - if appgw_id is not None: - addon_profile.config[CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID] = appgw_id - if appgw_subnet_id is not None: - addon_profile.config[CONST_INGRESS_APPGW_SUBNET_ID] = appgw_subnet_id - if appgw_watch_namespace is not None: - addon_profile.config[CONST_INGRESS_APPGW_WATCH_NAMESPACE] = appgw_watch_namespace - addon_profiles[CONST_INGRESS_APPGW_ADDON_NAME] = addon_profile - addons.remove('ingress-appgw') - if 'open-service-mesh' in addons: - addon_profile = ManagedClusterAddonProfile(enabled=True, config={}) - addon_profiles[CONST_OPEN_SERVICE_MESH_ADDON_NAME] = addon_profile - addons.remove('open-service-mesh') - if 'azure-keyvault-secrets-provider' in addons: - addon_profile = ManagedClusterAddonProfile(enabled=True, config={ - CONST_SECRET_ROTATION_ENABLED: "false", CONST_ROTATION_POLL_INTERVAL: "2m"}) - if enable_secret_rotation: - addon_profile.config[CONST_SECRET_ROTATION_ENABLED] = "true" - if rotation_poll_interval is not None: - addon_profile.config[CONST_ROTATION_POLL_INTERVAL] = rotation_poll_interval - addon_profiles[CONST_AZURE_KEYVAULT_SECRETS_PROVIDER_ADDON_NAME] = addon_profile - addons.remove('azure-keyvault-secrets-provider') - if 'confcom' in addons: - addon_profile = ManagedClusterAddonProfile( - enabled=True, config={CONST_ACC_SGX_QUOTE_HELPER_ENABLED: "false"}) - if enable_sgxquotehelper: - addon_profile.config[CONST_ACC_SGX_QUOTE_HELPER_ENABLED] = "true" - addon_profiles[CONST_CONFCOM_ADDON_NAME] = addon_profile - addons.remove('confcom') - if 'virtual-node' in addons: - if not aci_subnet_name or not vnet_subnet_id: - raise CLIError( - '"--enable-addons virtual-node" requires "--aci-subnet-name" and "--vnet-subnet-id".') - # TODO: how about aciConnectorwindows, what is its addon name? - os_type = 'Linux' - addon_profiles[CONST_VIRTUAL_NODE_ADDON_NAME + os_type] = ManagedClusterAddonProfile( - enabled=True, - config={CONST_VIRTUAL_NODE_SUBNET_NAME: aci_subnet_name} - ) - addons.remove('virtual-node') - - # error out if any (unrecognized) addons remain - if addons: - raise CLIError('"{}" {} not recognized by the --enable-addons argument.'.format( - ",".join(addons), "are" if len(addons) > 1 else "is")) - return addon_profiles - - -def _ensure_aks_service_principal(cli_ctx, - service_principal=None, - client_secret=None, - subscription_id=None, - dns_name_prefix=None, - fqdn_subdomain=None, - location=None, - name=None): - file_name_aks = 'aksServicePrincipal.json' - # TODO: This really needs to be unit tested. - rbac_client = get_graph_rbac_management_client(cli_ctx) - if not service_principal: - # --service-principal not specified, try to load it from local disk - principal_obj = load_acs_service_principal( - subscription_id, file_name=file_name_aks) - if principal_obj: - service_principal = principal_obj.get('service_principal') - client_secret = principal_obj.get('client_secret') - else: - # Nothing to load, make one. - if not client_secret: - client_secret = _create_client_secret() - salt = binascii.b2a_hex(os.urandom(3)).decode('utf-8') - if dns_name_prefix: - url = 'http://{}.{}.{}.cloudapp.azure.com'.format( - salt, dns_name_prefix, location) - else: - url = 'http://{}.{}.{}.cloudapp.azure.com'.format( - salt, fqdn_subdomain, location) - - service_principal = _build_service_principal( - rbac_client, cli_ctx, name, url, client_secret) - if not service_principal: - raise CLIError('Could not create a service principal with the right permissions. ' - 'Are you an Owner on this project?') - logger.info('Created a service principal: %s', service_principal) - # We don't need to add role assignment for this created SPN - else: - # --service-principal specfied, validate --client-secret was too - if not client_secret: - raise CLIError( - '--client-secret is required if --service-principal is specified') - store_acs_service_principal( - subscription_id, client_secret, service_principal, file_name=file_name_aks) - return load_acs_service_principal(subscription_id, file_name=file_name_aks) - - -def _check_cluster_autoscaler_flag(enable_cluster_autoscaler, - min_count, - max_count, - node_count, - agent_pool_profile): - if enable_cluster_autoscaler: - if min_count is None or max_count is None: - raise CLIError( - 'Please specify both min-count and max-count when --enable-cluster-autoscaler enabled') - if int(min_count) > int(max_count): - raise CLIError( - 'value of min-count should be less than or equal to value of max-count') - if int(node_count) < int(min_count) or int(node_count) > int(max_count): - raise CLIError( - 'node-count is not in the range of min-count and max-count') - agent_pool_profile.min_count = int(min_count) - agent_pool_profile.max_count = int(max_count) - agent_pool_profile.enable_auto_scaling = True - else: - if min_count is not None or max_count is not None: - raise CLIError( - 'min-count and max-count are required for --enable-cluster-autoscaler, please use the flag') - - -def _create_client_secret(): - # Add a special character to satsify AAD SP secret requirements - special_char = '$' - client_secret = binascii.b2a_hex( - os.urandom(10)).decode('utf-8') + special_char - return client_secret - - def _ensure_aks_acr(cli_ctx, client_id, acr_name_or_id, @@ -1583,7 +1019,7 @@ def _ensure_aks_acr(cli_ctx, if is_valid_resource_id(acr_name_or_id): try: parsed_registry = parse_resource_id(acr_name_or_id) - acr_client = cf_container_registry_service( + acr_client = get_container_registry_client( cli_ctx, subscription_id=parsed_registry['subscription']) registry = acr_client.registries.get( parsed_registry['resource_group'], parsed_registry['name']) @@ -1646,159 +1082,125 @@ def aks_agentpool_list(cmd, # pylint: disable=unused-argument return client.list(resource_group_name, cluster_name) -def aks_agentpool_add(cmd, # pylint: disable=unused-argument,too-many-locals - client, - resource_group_name, - cluster_name, - nodepool_name, - kubernetes_version=None, - node_vm_size=None, - os_type=None, - os_sku=None, - vnet_subnet_id=None, - pod_subnet_id=None, - enable_node_public_ip=False, - node_public_ip_prefix_id=None, - enable_cluster_autoscaler=False, - min_count=None, - max_count=None, - node_count=3, - priority=CONST_SCALE_SET_PRIORITY_REGULAR, - eviction_policy=CONST_SPOT_EVICTION_POLICY_DELETE, - spot_max_price=float('nan'), - labels=None, - tags=None, - node_taints=None, - node_osdisk_type=None, - node_osdisk_size=0, - max_surge=None, - mode="User", - scale_down_mode=CONST_SCALE_DOWN_MODE_DELETE, - max_pods=0, - node_zones=None, - zones=None, - ppg=None, - enable_encryption_at_host=False, - enable_ultra_ssd=False, - enable_fips_image=False, - kubelet_config=None, - linux_os_config=None, - snapshot_id=None, - host_group_id=None, - crg_id=None, - message_of_the_day=None, - workload_runtime=None, - gpu_instance_profile=None, - enable_custom_ca_trust=False, - no_wait=False, - aks_custom_headers=None): - instances = client.list(resource_group_name, cluster_name) - for agentpool_profile in instances: - if agentpool_profile.name == nodepool_name: - raise CLIError("Node pool {} already exists, please try a different name, " - "use 'aks nodepool list' to get current list of node pool".format(nodepool_name)) - - upgradeSettings = AgentPoolUpgradeSettings() - taints_array = [] - - creationData = None - if snapshot_id: - snapshot = _get_snapshot(cmd.cli_ctx, snapshot_id) - if not kubernetes_version: - kubernetes_version = snapshot.kubernetes_version - if not os_type: - os_type = snapshot.os_type - if not os_sku: - os_sku = snapshot.os_sku - if not node_vm_size: - node_vm_size = snapshot.vm_size - - creationData = CreationData( - source_resource_id=snapshot_id - ) - - if not os_type: - os_type = "Linux" - - if node_taints is not None: - for taint in node_taints.split(','): - try: - taint = taint.strip() - taints_array.append(taint) - except ValueError: - raise CLIError( - 'Taint does not match allowed values. Expect value such as "special=true:NoSchedule".') - - if node_vm_size is None: - if os_type == "Windows": - node_vm_size = "Standard_D2s_v3" - else: - node_vm_size = "Standard_DS2_v2" - - if max_surge: - upgradeSettings.max_surge = max_surge +# pylint: disable=too-many-locals +def aks_agentpool_add( + cmd, + client, + resource_group_name, + cluster_name, + nodepool_name, + kubernetes_version=None, + node_vm_size=None, + os_type=None, + os_sku=None, + snapshot_id=None, + vnet_subnet_id=None, + pod_subnet_id=None, + enable_node_public_ip=False, + node_public_ip_prefix_id=None, + enable_cluster_autoscaler=False, + min_count=None, + max_count=None, + node_count=3, + priority=CONST_SCALE_SET_PRIORITY_REGULAR, + eviction_policy=CONST_SPOT_EVICTION_POLICY_DELETE, + spot_max_price=float("nan"), + labels=None, + tags=None, + node_taints=None, + node_osdisk_type=None, + node_osdisk_size=0, + max_surge=None, + mode=CONST_NODEPOOL_MODE_USER, + scale_down_mode=CONST_SCALE_DOWN_MODE_DELETE, + max_pods=0, + # TODO: remove node_zones after cli 2.38.0 release + node_zones=None, + zones=None, + ppg=None, + enable_encryption_at_host=False, + enable_ultra_ssd=False, + enable_fips_image=False, + kubelet_config=None, + linux_os_config=None, + no_wait=False, + aks_custom_headers=None, + # extensions + host_group_id=None, + crg_id=None, + message_of_the_day=None, + workload_runtime=None, + gpu_instance_profile=None, + enable_custom_ca_trust=False, +): + # DO NOT MOVE: get all the original parameters and save them as a dictionary + raw_parameters = locals() - agent_pool = AgentPool( - name=nodepool_name, - tags=tags, - node_labels=labels, - count=int(node_count), - vm_size=node_vm_size, - os_type=os_type, - os_sku=os_sku, - enable_fips=enable_fips_image, - storage_profile=ContainerServiceStorageProfileTypes.managed_disks, - vnet_subnet_id=vnet_subnet_id, - pod_subnet_id=pod_subnet_id, - proximity_placement_group_id=ppg, - agent_pool_type="VirtualMachineScaleSets", - max_pods=int(max_pods) if max_pods else None, - orchestrator_version=kubernetes_version, - availability_zones=node_zones, - enable_node_public_ip=enable_node_public_ip, - node_public_ip_prefix_id=node_public_ip_prefix_id, - node_taints=taints_array, - scale_set_priority=priority, - scale_down_mode=scale_down_mode, - upgrade_settings=upgradeSettings, - enable_encryption_at_host=enable_encryption_at_host, - enable_ultra_ssd=enable_ultra_ssd, - mode=mode, - workload_runtime=workload_runtime, - gpu_instance_profile=gpu_instance_profile, - creation_data=creationData, - host_group_id=host_group_id, - capacity_reservation_group_id=crg_id, - enable_custom_ca_trust=enable_custom_ca_trust + # decorator pattern + from azure.cli.command_modules.acs._consts import AgentPoolDecoratorMode, DecoratorEarlyExitException + from azext_aks_preview.agentpool_decorator import AKSPreviewAgentPoolAddDecorator + aks_agentpool_add_decorator = AKSPreviewAgentPoolAddDecorator( + cmd=cmd, + client=client, + raw_parameters=raw_parameters, + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + agentpool_decorator_mode=AgentPoolDecoratorMode.STANDALONE, ) + try: + # construct agentpool profile + agentpool = aks_agentpool_add_decorator.construct_agentpool_profile_preview() + except DecoratorEarlyExitException: + # exit gracefully + return None + # send request to add a real agentpool + return aks_agentpool_add_decorator.add_agentpool(agentpool) - if priority == CONST_SCALE_SET_PRIORITY_SPOT: - agent_pool.scale_set_eviction_policy = eviction_policy - if isnan(spot_max_price): - spot_max_price = -1 - agent_pool.spot_max_price = spot_max_price - - _check_cluster_autoscaler_flag( - enable_cluster_autoscaler, min_count, max_count, node_count, agent_pool) - - if node_osdisk_size: - agent_pool.os_disk_size_gb = int(node_osdisk_size) - - if node_osdisk_type: - agent_pool.os_disk_type = node_osdisk_type - - if kubelet_config: - agent_pool.kubelet_config = _get_kubelet_config(kubelet_config) - - if linux_os_config: - agent_pool.linux_os_config = _get_linux_os_config(linux_os_config) - if message_of_the_day: - agent_pool.message_of_the_day = _get_message_of_the_day( - message_of_the_day) +# pylint: disable=too-many-locals +def aks_agentpool_update( + cmd, + client, + resource_group_name, + cluster_name, + nodepool_name, + enable_cluster_autoscaler=False, + disable_cluster_autoscaler=False, + update_cluster_autoscaler=False, + min_count=None, + max_count=None, + labels=None, + tags=None, + node_taints=None, + max_surge=None, + mode=None, + scale_down_mode=None, + no_wait=False, + aks_custom_headers=None, + # extensions + enable_custom_ca_trust=False, + disable_custom_ca_trust=False, +): + # DO NOT MOVE: get all the original parameters and save them as a dictionary + raw_parameters = locals() - headers = get_aks_custom_headers(aks_custom_headers) - return sdk_no_wait(no_wait, client.begin_create_or_update, resource_group_name, cluster_name, nodepool_name, agent_pool, headers=headers) + # decorator pattern + from azure.cli.command_modules.acs._consts import AgentPoolDecoratorMode, DecoratorEarlyExitException + from azext_aks_preview.agentpool_decorator import AKSPreviewAgentPoolUpdateDecorator + aks_agentpool_update_decorator = AKSPreviewAgentPoolUpdateDecorator( + cmd=cmd, + client=client, + raw_parameters=raw_parameters, + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + agentpool_decorator_mode=AgentPoolDecoratorMode.STANDALONE, + ) + try: + # update agentpool profile + agentpool = aks_agentpool_update_decorator.update_agentpool_profile_preview() + except DecoratorEarlyExitException: + # exit gracefully + return None + # send request to update the real agentpool + return aks_agentpool_update_decorator.update_agentpool(agentpool) def aks_agentpool_scale(cmd, # pylint: disable=unused-argument @@ -1830,6 +1232,16 @@ def aks_agentpool_upgrade(cmd, # pylint: disable=unused-argument max_surge=None, aks_custom_headers=None, snapshot_id=None): + AgentPoolUpgradeSettings = cmd.get_models( + "AgentPoolUpgradeSettings", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="agent_pools", + ) + CreationData = cmd.get_models( + "CreationData", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) if kubernetes_version != '' and node_image_only: raise CLIError('Conflicting flags. Upgrading the Kubernetes version will also upgrade node image version.' @@ -1845,7 +1257,7 @@ def aks_agentpool_upgrade(cmd, # pylint: disable=unused-argument creationData = None if snapshot_id: - snapshot = _get_snapshot(cmd.cli_ctx, snapshot_id) + snapshot = get_nodepool_snapshot_by_snapshot_id(cmd.cli_ctx, snapshot_id) if not kubernetes_version and not node_image_only: kubernetes_version = snapshot.kubernetes_version @@ -1876,118 +1288,6 @@ def aks_agentpool_get_upgrade_profile(cmd, # pylint: disable=unused-argument return client.get_upgrade_profile(resource_group_name, cluster_name, nodepool_name) -def aks_agentpool_update(cmd, # pylint: disable=unused-argument - client, - resource_group_name, - cluster_name, - nodepool_name, - enable_cluster_autoscaler=False, - disable_cluster_autoscaler=False, - update_cluster_autoscaler=False, - min_count=None, max_count=None, - labels=None, - tags=None, - node_taints=None, - max_surge=None, - mode=None, - scale_down_mode=None, - enable_custom_ca_trust=False, - disable_custom_ca_trust=False, - no_wait=False, - aks_custom_headers=None): - update_autoscaler = enable_cluster_autoscaler + \ - disable_cluster_autoscaler + update_cluster_autoscaler - - update_custom_ca_trust = enable_custom_ca_trust + disable_custom_ca_trust - - if (update_autoscaler != 1 and not tags and not scale_down_mode and not mode and not max_surge and labels is None and node_taints is None and not update_custom_ca_trust): - reconcilePrompt = 'no argument specified to update would you like to reconcile to current settings?' - if not prompt_y_n(reconcilePrompt, default="n"): - raise CLIError('Please specify one or more of "--enable-cluster-autoscaler" or ' - '"--disable-cluster-autoscaler" or ' - '"--update-cluster-autoscaler" or ' - '"--tags" or "--mode" or "--max-surge" or "--scale-down-mode" or "--labels" or "--node-taints') - - instance = client.get(resource_group_name, cluster_name, nodepool_name) - - if node_taints is not None: - taints_array = [] - if node_taints != '': - for taint in node_taints.split(','): - try: - taint = taint.strip() - taints_array.append(taint) - except ValueError: - raise InvalidArgumentValueError( - 'Taint does not match allowed values. Expect value such as "special=true:NoSchedule".') - instance.node_taints = taints_array - - if min_count is None or max_count is None: - if enable_cluster_autoscaler or update_cluster_autoscaler: - raise CLIError('Please specify both min-count and max-count when --enable-cluster-autoscaler or ' - '--update-cluster-autoscaler set.') - if min_count is not None and max_count is not None: - if int(min_count) > int(max_count): - raise CLIError( - 'value of min-count should be less than or equal to value of max-count.') - - if enable_cluster_autoscaler: - if instance.enable_auto_scaling: - logger.warning('Autoscaler is already enabled for this node pool.\n' - 'Please run "az aks nodepool update --update-cluster-autoscaler" ' - 'if you want to update min-count or max-count.') - return None - instance.min_count = int(min_count) - instance.max_count = int(max_count) - instance.enable_auto_scaling = True - - if update_cluster_autoscaler: - if not instance.enable_auto_scaling: - raise CLIError('Autoscaler is not enabled for this node pool.\n' - 'Run "az aks nodepool update --enable-cluster-autoscaler" ' - 'to enable cluster with min-count and max-count.') - instance.min_count = int(min_count) - instance.max_count = int(max_count) - - if not instance.upgrade_settings: - instance.upgrade_settings = AgentPoolUpgradeSettings() - - if max_surge: - instance.upgrade_settings.max_surge = max_surge - - if disable_cluster_autoscaler: - if not instance.enable_auto_scaling: - logger.warning( - 'Autoscaler is already disabled for this node pool.') - return None - instance.enable_auto_scaling = False - instance.min_count = None - instance.max_count = None - - instance.tags = tags - - if scale_down_mode is not None: - instance.scale_down_mode = scale_down_mode - - if mode is not None: - instance.mode = mode - - if labels is not None: - instance.node_labels = labels - - if enable_custom_ca_trust: - instance.enable_custom_ca_trust = True - - if disable_custom_ca_trust: - if not instance.enable_custom_ca_trust: - logger.warning( - 'Custom CA Trust is already disabled for this node pool.') - return None - instance.enable_custom_ca_trust = False - - return sdk_no_wait(no_wait, client.begin_create_or_update, resource_group_name, cluster_name, nodepool_name, instance) - - def aks_agentpool_stop(cmd, # pylint: disable=unused-argument client, resource_group_name, @@ -1995,6 +1295,12 @@ def aks_agentpool_stop(cmd, # pylint: disable=unused-argument nodepool_name, aks_custom_headers=None, no_wait=False): + PowerState = cmd.get_models( + "PowerState", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + agentpool_exists = False instances = client.list(resource_group_name, cluster_name) for agentpool_profile in instances: @@ -2020,6 +1326,12 @@ def aks_agentpool_start(cmd, # pylint: disable=unused-argument nodepool_name, aks_custom_headers=None, no_wait=False): + PowerState = cmd.get_models( + "PowerState", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + agentpool_exists = False instances = client.list(resource_group_name, cluster_name) for agentpool_profile in instances: @@ -2312,6 +1624,21 @@ def _update_addons(cmd, # pylint: disable=too-many-branches,too-many-statements rotation_poll_interval=None, dns_zone_resource_id=None, no_wait=False): # pylint: disable=unused-argument + ManagedClusterAddonProfile = cmd.get_models( + "ManagedClusterAddonProfile", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + ManagedClusterIngressProfile = cmd.get_models( + "ManagedClusterIngressProfile", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + ManagedClusterIngressProfileWebAppRouting = cmd.get_models( + "ManagedClusterIngressProfileWebAppRouting", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) # parse the comma-separated addons argument addon_args = addons.split(',') @@ -2461,284 +1788,6 @@ def aks_get_os_options(cmd, client, location): # pylint: disable=unused-argum return client.get_os_options(location, resource_type='managedClusters') -def _print_or_merge_credentials(path, kubeconfig, overwrite_existing, context_name): - """Merge an unencrypted kubeconfig into the file at the specified path, or print it to - stdout if the path is "-". - """ - # Special case for printing to stdout - if path == "-": - print(kubeconfig) - return - - # ensure that at least an empty ~/.kube/config exists - directory = os.path.dirname(path) - if directory and not os.path.exists(directory): - try: - os.makedirs(directory) - except OSError as ex: - if ex.errno != errno.EEXIST: - raise - if not os.path.exists(path): - with os.fdopen(os.open(path, os.O_CREAT | os.O_WRONLY, 0o600), 'wt'): - pass - - # merge the new kubeconfig into the existing one - fd, temp_path = tempfile.mkstemp() - additional_file = os.fdopen(fd, 'w+t') - try: - additional_file.write(kubeconfig) - additional_file.flush() - merge_kubernetes_configurations( - path, temp_path, overwrite_existing, context_name) - except yaml.YAMLError as ex: - logger.warning( - 'Failed to merge credentials to kube config file: %s', ex) - finally: - additional_file.close() - os.remove(temp_path) - - -def _handle_merge(existing, addition, key, replace): - if not addition[key]: - return - if existing[key] is None: - existing[key] = addition[key] - return - - for i in addition[key]: - for j in existing[key]: - if i['name'] == j['name']: - if replace or i == j: - existing[key].remove(j) - else: - from knack.prompting import prompt_y_n - msg = 'A different object named {} already exists in your kubeconfig file.\nOverwrite?' - overwrite = False - try: - overwrite = prompt_y_n(msg.format(i['name'])) - except NoTTYException: - pass - if overwrite: - existing[key].remove(j) - else: - msg = 'A different object named {} already exists in {} in your kubeconfig file.' - raise CLIError(msg.format(i['name'], key)) - existing[key].append(i) - - -def load_kubernetes_configuration(filename): - try: - with open(filename) as stream: - return yaml.safe_load(stream) - except (IOError, OSError) as ex: - if getattr(ex, 'errno', 0) == errno.ENOENT: - raise CLIError('{} does not exist'.format(filename)) - except (yaml.parser.ParserError, UnicodeDecodeError) as ex: - raise CLIError('Error parsing {} ({})'.format(filename, str(ex))) - - -def merge_kubernetes_configurations(existing_file, addition_file, replace, context_name=None): - existing = load_kubernetes_configuration(existing_file) - addition = load_kubernetes_configuration(addition_file) - - if context_name is not None: - addition['contexts'][0]['name'] = context_name - addition['contexts'][0]['context']['cluster'] = context_name - addition['clusters'][0]['name'] = context_name - addition['current-context'] = context_name - - # rename the admin context so it doesn't overwrite the user context - for ctx in addition.get('contexts', []): - try: - if ctx['context']['user'].startswith('clusterAdmin'): - admin_name = ctx['name'] + '-admin' - addition['current-context'] = ctx['name'] = admin_name - break - except (KeyError, TypeError): - continue - - if addition is None: - raise CLIError( - 'failed to load additional configuration from {}'.format(addition_file)) - - if existing is None: - existing = addition - else: - _handle_merge(existing, addition, 'clusters', replace) - _handle_merge(existing, addition, 'users', replace) - _handle_merge(existing, addition, 'contexts', replace) - existing['current-context'] = addition['current-context'] - - # check that ~/.kube/config is only read- and writable by its owner - if platform.system() != 'Windows': - existing_file_perms = "{:o}".format( - stat.S_IMODE(os.lstat(existing_file).st_mode)) - if not existing_file_perms.endswith('600'): - logger.warning('%s has permissions "%s".\nIt should be readable and writable only by its owner.', - existing_file, existing_file_perms) - - with open(existing_file, 'w+') as stream: - yaml.safe_dump(existing, stream, default_flow_style=False) - - current_context = addition.get('current-context', 'UNKNOWN') - msg = 'Merged "{}" as current context in {}'.format( - current_context, existing_file) - print(msg) - - -def cloud_storage_account_service_factory(cli_ctx, kwargs): - from azure.cli.core.profiles import ResourceType, get_sdk - t_cloud_storage_account = get_sdk( - cli_ctx, ResourceType.DATA_STORAGE, 'common#CloudStorageAccount') - account_name = kwargs.pop('account_name', None) - account_key = kwargs.pop('account_key', None) - sas_token = kwargs.pop('sas_token', None) - kwargs.pop('connection_string', None) - return t_cloud_storage_account(account_name, account_key, sas_token) - - -def get_storage_account_from_diag_settings(cli_ctx, resource_group_name, name): - from azure.mgmt.monitor import MonitorManagementClient - diag_settings_client = get_mgmt_service_client( - cli_ctx, MonitorManagementClient).diagnostic_settings - subscription_id = get_subscription_id(cli_ctx) - aks_resource_id = '/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.ContainerService' \ - '/managedClusters/{2}'.format(subscription_id, - resource_group_name, name) - diag_settings = diag_settings_client.list(aks_resource_id) - for _, diag_setting in enumerate(diag_settings): - if diag_setting: - return diag_setting.storage_account_id - - print("No diag settings specified") - return None - - -def display_diagnostics_report(temp_kubeconfig_path): # pylint: disable=too-many-statements - if not which('kubectl'): - raise CLIError('Can not find kubectl executable in PATH') - - nodes = subprocess.check_output( - ["kubectl", "--kubeconfig", temp_kubeconfig_path, - "get", "node", "--no-headers"], - universal_newlines=True) - logger.debug(nodes) - node_lines = nodes.splitlines() - ready_nodes = {} - for node_line in node_lines: - columns = node_line.split() - logger.debug(node_line) - if columns[1] != "Ready": - logger.warning( - "Node %s is not Ready. Current state is: %s.", columns[0], columns[1]) - else: - ready_nodes[columns[0]] = False - - logger.debug('There are %s ready nodes in the cluster', - str(len(ready_nodes))) - - if not ready_nodes: - logger.warning( - 'No nodes are ready in the current cluster. Diagnostics info might not be available.') - - network_config_array = [] - network_status_array = [] - apds_created = False - - max_retry = 10 - for retry in range(0, max_retry): - if not apds_created: - apd = subprocess.check_output( - ["kubectl", "--kubeconfig", temp_kubeconfig_path, "get", - "apd", "-n", CONST_PERISCOPE_NAMESPACE, "--no-headers"], - universal_newlines=True - ) - apd_lines = apd.splitlines() - if apd_lines and 'No resources found' in apd_lines[0]: - apd_lines.pop(0) - - print("Got {} diagnostic results for {} ready nodes{}\r".format(len(apd_lines), - len(ready_nodes), - '.' * retry), end='') - if len(apd_lines) < len(ready_nodes): - time.sleep(3) - else: - apds_created = True - print() - else: - for node_name in ready_nodes: - if ready_nodes[node_name]: - continue - apdName = "aks-periscope-diagnostic-" + node_name - try: - network_config = subprocess.check_output( - ["kubectl", "--kubeconfig", temp_kubeconfig_path, - "get", "apd", apdName, "-n", - CONST_PERISCOPE_NAMESPACE, "-o=jsonpath={.spec.networkconfig}"], - universal_newlines=True) - logger.debug('Dns status for node %s is %s', - node_name, network_config) - network_status = subprocess.check_output( - ["kubectl", "--kubeconfig", temp_kubeconfig_path, - "get", "apd", apdName, "-n", - CONST_PERISCOPE_NAMESPACE, "-o=jsonpath={.spec.networkoutbound}"], - universal_newlines=True) - logger.debug('Network status for node %s is %s', - node_name, network_status) - - if not network_config or not network_status: - print("The diagnostics information for node {} is not ready yet. " - "Will try again in 10 seconds.".format(node_name)) - time.sleep(10) - break - - network_config_array += json.loads( - '[' + network_config + ']') - network_status_object = json.loads(network_status) - network_status_array += format_diag_status( - network_status_object) - ready_nodes[node_name] = True - except subprocess.CalledProcessError as err: - raise CLIError(err.output) - - print() - if network_config_array: - print("Below are the network configuration for each node: ") - print() - print(tabulate(network_config_array, headers="keys", tablefmt='simple')) - print() - else: - logger.warning("Could not get network config. " - "Please run 'az aks kanalyze' command later to get the analysis results.") - - if network_status_array: - print("Below are the network connectivity results for each node:") - print() - print(tabulate(network_status_array, headers="keys", tablefmt='simple')) - else: - logger.warning("Could not get networking status. " - "Please run 'az aks kanalyze' command later to get the analysis results.") - - -def format_diag_status(diag_status): - for diag in diag_status: - if diag["Status"]: - if "Error:" in diag["Status"]: - diag["Status"] = f'{colorama.Fore.RED}{diag["Status"]}{colorama.Style.RESET_ALL}' - else: - diag["Status"] = f'{colorama.Fore.GREEN}{diag["Status"]}{colorama.Style.RESET_ALL}' - - return diag_status - - -def format_bright(msg): - return f'\033[1m{colorama.Style.BRIGHT}{msg}{colorama.Style.RESET_ALL}' - - -def format_hyperlink(the_link): - return f'\033[1m{colorama.Style.BRIGHT}{colorama.Fore.BLUE}{the_link}{colorama.Style.RESET_ALL}' - - def get_aks_custom_headers(aks_custom_headers=None): headers = {} if aks_custom_headers is not None: @@ -2751,225 +1800,6 @@ def get_aks_custom_headers(aks_custom_headers=None): return headers -def _put_managed_cluster_ensuring_permission( - cmd, # pylint: disable=too-many-locals,too-many-statements,too-many-branches - client, - subscription_id, - resource_group_name, - name, - managed_cluster, - monitoring_addon_enabled, - ingress_appgw_addon_enabled, - virtual_node_addon_enabled, - need_grant_vnet_permission_to_cluster_identity, - vnet_subnet_id, - enable_managed_identity, - attach_acr, - headers, - no_wait -): - # some addons require post cluster creation role assigment - need_post_creation_role_assignment = (monitoring_addon_enabled or - ingress_appgw_addon_enabled or - (enable_managed_identity and attach_acr) or - virtual_node_addon_enabled or - need_grant_vnet_permission_to_cluster_identity) - if need_post_creation_role_assignment: - # adding a wait here since we rely on the result for role assignment - cluster = LongRunningOperation(cmd.cli_ctx)(client.begin_create_or_update( - resource_group_name=resource_group_name, - resource_name=name, - parameters=managed_cluster, - headers=headers)) - cloud_name = cmd.cli_ctx.cloud.name - # add cluster spn/msi Monitoring Metrics Publisher role assignment to publish metrics to MDM - # mdm metrics is supported only in azure public cloud, so add the role assignment only in this cloud - if monitoring_addon_enabled and cloud_name.lower() == 'azurecloud': - from msrestazure.tools import resource_id - cluster_resource_id = resource_id( - subscription=subscription_id, - resource_group=resource_group_name, - namespace='Microsoft.ContainerService', type='managedClusters', - name=name - ) - add_monitoring_role_assignment(cluster, cluster_resource_id, cmd) - if ingress_appgw_addon_enabled: - add_ingress_appgw_addon_role_assignment(cluster, cmd) - if virtual_node_addon_enabled: - add_virtual_node_role_assignment(cmd, cluster, vnet_subnet_id) - if need_grant_vnet_permission_to_cluster_identity: - if not create_role_assignment(cmd.cli_ctx, 'Network Contributor', - cluster.identity.principal_id, scope=vnet_subnet_id, - resolve_assignee=False): - logger.warning('Could not create a role assignment for subnet. ' - 'Are you an Owner on this subscription?') - - if enable_managed_identity and attach_acr: - # Attach ACR to cluster enabled managed identity - if cluster.identity_profile is None or \ - cluster.identity_profile["kubeletidentity"] is None: - logger.warning('Your cluster is successfully created, but we failed to attach ' - 'acr to it, you can manually grant permission to the identity ' - 'named -agentpool in MC_ resource group to give ' - 'it permission to pull from ACR.') - else: - kubelet_identity_client_id = cluster.identity_profile["kubeletidentity"].client_id - _ensure_aks_acr(cmd.cli_ctx, - client_id=kubelet_identity_client_id, - acr_name_or_id=attach_acr, - subscription_id=subscription_id) - else: - cluster = sdk_no_wait(no_wait, client.begin_create_or_update, - resource_group_name=resource_group_name, - resource_name=name, - parameters=managed_cluster, - headers=headers) - - return cluster - - -def _is_msi_cluster(managed_cluster): - return (managed_cluster and managed_cluster.identity and - (managed_cluster.identity.type.casefold() == "systemassigned" or managed_cluster.identity.type.casefold() == "userassigned")) - - -def _get_message_of_the_day(file_path): - if not os.path.isfile(file_path): - raise CLIError( - "{} is not valid file, or not accessable.".format(file_path)) - content = read_file_content(file_path) - if not content: - raise ArgumentUsageError( - "message of the day should point to a non-empty file if specified.") - content = base64.b64encode(bytes(content, 'ascii')).decode('ascii') - return content - - -def _get_kubelet_config(file_path): - if not os.path.isfile(file_path): - raise CLIError( - "{} is not valid file, or not accessable.".format(file_path)) - kubelet_config = get_file_json(file_path) - if not isinstance(kubelet_config, dict): - raise CLIError( - "Error reading kubelet configuration at {}. Please see https://aka.ms/CustomNodeConfig for correct format.".format(file_path)) - config_object = KubeletConfig() - config_object.cpu_manager_policy = kubelet_config.get( - "cpuManagerPolicy", None) - config_object.cpu_cfs_quota = kubelet_config.get("cpuCfsQuota", None) - config_object.cpu_cfs_quota_period = kubelet_config.get( - "cpuCfsQuotaPeriod", None) - config_object.image_gc_high_threshold = kubelet_config.get( - "imageGcHighThreshold", None) - config_object.image_gc_low_threshold = kubelet_config.get( - "imageGcLowThreshold", None) - config_object.topology_manager_policy = kubelet_config.get( - "topologyManagerPolicy", None) - config_object.allowed_unsafe_sysctls = kubelet_config.get( - "allowedUnsafeSysctls", None) - config_object.fail_swap_on = kubelet_config.get("failSwapOn", None) - config_object.container_log_max_files = kubelet_config.get( - "containerLogMaxFiles", None) - config_object.container_log_max_size_mb = kubelet_config.get( - "containerLogMaxSizeMB", None) - config_object.pod_max_pids = kubelet_config.get( - "podMaxPids", None) - - return config_object - - -def _get_linux_os_config(file_path): - if not os.path.isfile(file_path): - raise CLIError( - "{} is not valid file, or not accessable.".format(file_path)) - os_config = get_file_json(file_path) - if not isinstance(os_config, dict): - raise CLIError( - "Error reading Linux OS configuration at {}. Please see https://aka.ms/CustomNodeConfig for correct format.".format(file_path)) - config_object = LinuxOSConfig() - config_object.transparent_huge_page_enabled = os_config.get( - "transparentHugePageEnabled", None) - config_object.transparent_huge_page_defrag = os_config.get( - "transparentHugePageDefrag", None) - config_object.swap_file_size_mb = os_config.get("swapFileSizeMB", None) - # sysctl settings - sysctls = os_config.get("sysctls", None) - if not isinstance(sysctls, dict): - raise CLIError( - "Error reading Sysctl settings at {}. Please see https://aka.ms/CustomNodeConfig for correct format.".format(file_path)) - config_object.sysctls = SysctlConfig() - config_object.sysctls.net_core_somaxconn = sysctls.get( - "netCoreSomaxconn", None) - config_object.sysctls.net_core_netdev_max_backlog = sysctls.get( - "netCoreNetdevMaxBacklog", None) - config_object.sysctls.net_core_rmem_max = sysctls.get( - "netCoreRmemMax", None) - config_object.sysctls.net_core_wmem_max = sysctls.get( - "netCoreWmemMax", None) - config_object.sysctls.net_core_optmem_max = sysctls.get( - "netCoreOptmemMax", None) - config_object.sysctls.net_ipv4_tcp_max_syn_backlog = sysctls.get( - "netIpv4TcpMaxSynBacklog", None) - config_object.sysctls.net_ipv4_tcp_max_tw_buckets = sysctls.get( - "netIpv4TcpMaxTwBuckets", None) - config_object.sysctls.net_ipv4_tcp_fin_timeout = sysctls.get( - "netIpv4TcpFinTimeout", None) - config_object.sysctls.net_ipv4_tcp_keepalive_time = sysctls.get( - "netIpv4TcpKeepaliveTime", None) - config_object.sysctls.net_ipv4_tcp_keepalive_probes = sysctls.get( - "netIpv4TcpKeepaliveProbes", None) - config_object.sysctls.net_ipv4_tcpkeepalive_intvl = sysctls.get( - "netIpv4TcpkeepaliveIntvl", None) - config_object.sysctls.net_ipv4_tcp_rmem = sysctls.get( - "netIpv4TcpRmem", None) - config_object.sysctls.net_ipv4_tcp_wmem = sysctls.get( - "netIpv4TcpWmem", None) - config_object.sysctls.net_ipv4_tcp_tw_reuse = sysctls.get( - "netIpv4TcpTwReuse", None) - config_object.sysctls.net_ipv4_ip_local_port_range = sysctls.get( - "netIpv4IpLocalPortRange", None) - config_object.sysctls.net_ipv4_neigh_default_gc_thresh1 = sysctls.get( - "netIpv4NeighDefaultGcThresh1", None) - config_object.sysctls.net_ipv4_neigh_default_gc_thresh2 = sysctls.get( - "netIpv4NeighDefaultGcThresh2", None) - config_object.sysctls.net_ipv4_neigh_default_gc_thresh3 = sysctls.get( - "netIpv4NeighDefaultGcThresh3", None) - config_object.sysctls.net_netfilter_nf_conntrack_max = sysctls.get( - "netNetfilterNfConntrackMax", None) - config_object.sysctls.net_netfilter_nf_conntrack_buckets = sysctls.get( - "netNetfilterNfConntrackBuckets", None) - config_object.sysctls.fs_inotify_max_user_watches = sysctls.get( - "fsInotifyMaxUserWatches", None) - config_object.sysctls.fs_file_max = sysctls.get("fsFileMax", None) - config_object.sysctls.fs_aio_max_nr = sysctls.get("fsAioMaxNr", None) - config_object.sysctls.fs_nr_open = sysctls.get("fsNrOpen", None) - config_object.sysctls.kernel_threads_max = sysctls.get( - "kernelThreadsMax", None) - config_object.sysctls.vm_max_map_count = sysctls.get("vmMaxMapCount", None) - config_object.sysctls.vm_swappiness = sysctls.get("vmSwappiness", None) - config_object.sysctls.vm_vfs_cache_pressure = sysctls.get( - "vmVfsCachePressure", None) - - return config_object - - -def _get_http_proxy_config(file_path): - if not os.path.isfile(file_path): - raise CLIError( - "{} is not valid file, or not accessable.".format(file_path)) - hp_config = get_file_json(file_path) - if not isinstance(hp_config, dict): - raise CLIError( - "Error reading Http Proxy Config at {}. Please see https://aka.ms/HttpProxyConfig for correct format.".format(file_path)) - config_object = ManagedClusterHTTPProxyConfig() - config_object.http_proxy = hp_config.get("httpProxy", None) - config_object.https_proxy = hp_config.get("httpsProxy", None) - config_object.no_proxy = hp_config.get("noProxy", None) - config_object.trusted_ca = hp_config.get("trustedCa", None) - - return config_object - - def aks_draft_create(destination='.', app=None, language=None, @@ -3019,10 +1849,39 @@ def aks_draft_update(host=None, certificate=None, destination=None, path=None): aks_draft_cmd_update(host, certificate, destination, path) +def aks_kollect(cmd, # pylint: disable=too-many-statements,too-many-locals + client, + resource_group_name, + name, + storage_account=None, + sas_token=None, + container_logs=None, + kube_objects=None, + node_logs=None, + node_logs_windows=None): + aks_kollect_cmd(cmd, client, resource_group_name, name, storage_account, sas_token, + container_logs, kube_objects, node_logs, node_logs_windows) + + +def aks_kanalyze(client, resource_group_name, name): + aks_kanalyze_cmd(client, resource_group_name, name) + + def aks_pod_identity_add(cmd, client, resource_group_name, cluster_name, identity_name, identity_namespace, identity_resource_id, binding_selector=None, no_wait=False): # pylint: disable=unused-argument + ManagedClusterPodIdentity = cmd.get_models( + "ManagedClusterPodIdentity", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + UserAssignedIdentity = cmd.get_models( + "UserAssignedIdentity", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + instance = client.get(resource_group_name, cluster_name) _ensure_pod_identity_addon_is_enabled(instance) @@ -3047,10 +1906,9 @@ def aks_pod_identity_add(cmd, client, resource_group_name, cluster_name, pod_identity.binding_selector = binding_selector pod_identities.append(pod_identity) - from azext_aks_preview.decorator import AKSPreviewModels - + from azext_aks_preview.managed_cluster_decorator import AKSPreviewManagedClusterModels # store all the models used by pod identity - pod_identity_models = AKSPreviewModels( + pod_identity_models = AKSPreviewManagedClusterModels( cmd, CUSTOM_MGMT_AKS_PREVIEW).pod_identity_models _update_addon_pod_identity( instance, enable=True, @@ -3077,10 +1935,9 @@ def aks_pod_identity_delete(cmd, client, resource_group_name, cluster_name, continue pod_identities.append(pod_identity) - from azext_aks_preview.decorator import AKSPreviewModels - + from azext_aks_preview.managed_cluster_decorator import AKSPreviewManagedClusterModels # store all the models used by pod identity - pod_identity_models = AKSPreviewModels( + pod_identity_models = AKSPreviewManagedClusterModels( cmd, CUSTOM_MGMT_AKS_PREVIEW).pod_identity_models _update_addon_pod_identity( instance, enable=True, @@ -3100,6 +1957,12 @@ def aks_pod_identity_list(cmd, client, resource_group_name, cluster_name): # py def aks_pod_identity_exception_add(cmd, client, resource_group_name, cluster_name, exc_name, exc_namespace, pod_labels, no_wait=False): # pylint: disable=unused-argument + ManagedClusterPodIdentityException = cmd.get_models( + "ManagedClusterPodIdentityException", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + instance = client.get(resource_group_name, cluster_name) _ensure_pod_identity_addon_is_enabled(instance) @@ -3110,10 +1973,9 @@ def aks_pod_identity_exception_add(cmd, client, resource_group_name, cluster_nam name=exc_name, namespace=exc_namespace, pod_labels=pod_labels) pod_identity_exceptions.append(exc) - from azext_aks_preview.decorator import AKSPreviewModels - + from azext_aks_preview.managed_cluster_decorator import AKSPreviewManagedClusterModels # store all the models used by pod identity - pod_identity_models = AKSPreviewModels( + pod_identity_models = AKSPreviewManagedClusterModels( cmd, CUSTOM_MGMT_AKS_PREVIEW).pod_identity_models _update_addon_pod_identity( instance, enable=True, @@ -3139,10 +2001,9 @@ def aks_pod_identity_exception_delete(cmd, client, resource_group_name, cluster_ continue pod_identity_exceptions.append(exc) - from azext_aks_preview.decorator import AKSPreviewModels - + from azext_aks_preview.managed_cluster_decorator import AKSPreviewManagedClusterModels # store all the models used by pod identity - pod_identity_models = AKSPreviewModels( + pod_identity_models = AKSPreviewManagedClusterModels( cmd, CUSTOM_MGMT_AKS_PREVIEW).pod_identity_models _update_addon_pod_identity( instance, enable=True, @@ -3157,6 +2018,12 @@ def aks_pod_identity_exception_delete(cmd, client, resource_group_name, cluster_ def aks_pod_identity_exception_update(cmd, client, resource_group_name, cluster_name, exc_name, exc_namespace, pod_labels, no_wait=False): # pylint: disable=unused-argument + ManagedClusterPodIdentityException = cmd.get_models( + "ManagedClusterPodIdentityException", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) + instance = client.get(resource_group_name, cluster_name) _ensure_pod_identity_addon_is_enabled(instance) @@ -3176,10 +2043,9 @@ def aks_pod_identity_exception_update(cmd, client, resource_group_name, cluster_ raise CLIError( 'pod identity exception {}/{} not found'.format(exc_namespace, exc_name)) - from azext_aks_preview.decorator import AKSPreviewModels - + from azext_aks_preview.managed_cluster_decorator import AKSPreviewManagedClusterModels # store all the models used by pod identity - pod_identity_models = AKSPreviewModels( + pod_identity_models = AKSPreviewManagedClusterModels( cmd, CUSTOM_MGMT_AKS_PREVIEW).pod_identity_models _update_addon_pod_identity( instance, enable=True, @@ -3197,26 +2063,6 @@ def aks_pod_identity_exception_list(cmd, client, resource_group_name, cluster_na return _remove_nulls([instance])[0] -def _ensure_cluster_identity_permission_on_kubelet_identity(cli_ctx, cluster_identity_object_id, scope): - factory = get_auth_management_client(cli_ctx, scope) - assignments_client = factory.role_assignments - - for i in assignments_client.list_for_scope(scope=scope, filter='atScope()'): - if i.scope.lower() != scope.lower(): - continue - if not i.role_definition_id.lower().endswith(CONST_MANAGED_IDENTITY_OPERATOR_ROLE_ID): - continue - if i.principal_id.lower() != cluster_identity_object_id.lower(): - continue - # already assigned - return - - if not add_role_assignment(cli_ctx, CONST_MANAGED_IDENTITY_OPERATOR_ROLE, cluster_identity_object_id, - is_service_principal=False, scope=scope): - raise CLIError( - 'Could not grant Managed Identity Operator permission to cluster identity at scope {}'.format(scope)) - - def aks_egress_endpoints_list(cmd, client, resource_group_name, name): # pylint: disable=unused-argument return client.list_outbound_network_dependencies_endpoints(resource_group_name, name) @@ -3230,6 +2076,16 @@ def aks_snapshot_create(cmd, # pylint: disable=too-many-locals,too-many-state tags=None, aks_custom_headers=None, no_wait=False): + ManagedClusterSnapshot = cmd.get_models( + "ManagedClusterSnapshot", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_cluster_snapshots", + ) + CreationData = cmd.get_models( + "CreationData", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) rg_location = get_rg_location(cmd.cli_ctx, resource_group_name) if location is None: @@ -3288,6 +2144,16 @@ def aks_nodepool_snapshot_create(cmd, # pylint: disable=too-many-locals,too-m tags=None, aks_custom_headers=None, no_wait=False): + Snapshot = cmd.get_models( + "Snapshot", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="snapshots", + ) + CreationData = cmd.get_models( + "CreationData", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="managed_clusters", + ) rg_location = get_rg_location(cmd.cli_ctx, resource_group_name) if location is None: @@ -3338,3 +2204,26 @@ def aks_nodepool_snapshot_list(cmd, client, resource_group_name=None): # pylint def aks_trustedaccess_role_list(cmd, client, location): # pylint: disable=unused-argument return client.list(location) + + +def aks_trustedaccess_role_binding_list(cmd, client, resource_group_name, cluster_name): # pylint: disable=unused-argument + return client.list(resource_group_name, cluster_name) + + +def aks_trustedaccess_role_binding_get(cmd, client, resource_group_name, cluster_name, role_binding_name): + return client.get(resource_group_name, cluster_name, role_binding_name) + + +def aks_trustedaccess_role_binding_create_or_update(cmd, client, resource_group_name, cluster_name, role_binding_name, + source_resource_id, roles): + TrustedAccessRoleBinding = cmd.get_models( + "TrustedAccessRoleBinding", + resource_type=CUSTOM_MGMT_AKS_PREVIEW, + operation_group="trusted_access_role_bindings", + ) + roleBinding = TrustedAccessRoleBinding(source_resource_id=source_resource_id, roles=roles) + return client.create_or_update(resource_group_name, cluster_name, role_binding_name, roleBinding) + + +def aks_trustedaccess_role_binding_delete(cmd, client, resource_group_name, cluster_name, role_binding_name): + return client.delete(resource_group_name, cluster_name, role_binding_name) diff --git a/src/aks-preview/azext_aks_preview/decorator.py b/src/aks-preview/azext_aks_preview/decorator.py deleted file mode 100644 index cc84a4f887d..00000000000 --- a/src/aks-preview/azext_aks_preview/decorator.py +++ /dev/null @@ -1,3159 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- - -import base64 -import os -import time -from types import SimpleNamespace -from typing import Dict, List, Tuple, TypeVar, Union, Optional - -from azure.cli.command_modules.acs._consts import ( - DecoratorEarlyExitException, - DecoratorMode, -) -from azure.cli.command_modules.acs.decorator import ( - AKSContext, - AKSCreateDecorator, - AKSModels, - AKSUpdateDecorator, - check_is_msi_cluster, - safe_list_get, - safe_lower, -) -from azure.cli.core import AzCommandsLoader -from azure.cli.core.azclierror import ( - ArgumentUsageError, - AzCLIError, - CLIInternalError, - InvalidArgumentValueError, - MutuallyExclusiveArgumentError, - RequiredArgumentMissingError, - UnknownError, -) -from azure.cli.core.commands import AzCliCommand -from azure.cli.core.profiles import ResourceType -from azure.cli.core.util import get_file_json, read_file_content -from azure.core.exceptions import HttpResponseError -from knack.log import get_logger -from knack.prompting import prompt_y_n -from msrestazure.azure_exceptions import CloudError - -from azext_aks_preview._consts import ( - CONST_OUTBOUND_TYPE_LOAD_BALANCER, - CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY, - CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY, - CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, - CONST_DISK_DRIVER_V1, -) -from azext_aks_preview._loadbalancer import create_load_balancer_profile -from azext_aks_preview._loadbalancer import ( - update_load_balancer_profile as _update_load_balancer_profile, -) -from azext_aks_preview._natgateway import ( - create_nat_gateway_profile, - is_nat_gateway_profile_provided, -) -from azext_aks_preview._natgateway import ( - update_nat_gateway_profile as _update_nat_gateway_profile, -) -from azext_aks_preview._podidentity import ( - _fill_defaults_for_pod_identity_profile, - _is_pod_identity_addon_enabled, - _update_addon_pod_identity, -) -from azext_aks_preview.addonconfiguration import ( - ensure_container_insights_for_monitoring, - ensure_default_log_analytics_workspace_for_monitoring, -) -from azext_aks_preview.custom import ( - _get_snapshot, - _get_cluster_snapshot, - _ensure_cluster_identity_permission_on_kubelet_identity, -) - -logger = get_logger(__name__) - -# type variables -ContainerServiceClient = TypeVar("ContainerServiceClient") -Identity = TypeVar("Identity") -ManagedCluster = TypeVar("ManagedCluster") -ManagedClusterLoadBalancerProfile = TypeVar( - "ManagedClusterLoadBalancerProfile") -ResourceReference = TypeVar("ResourceReference") -KubeletConfig = TypeVar("KubeletConfig") -LinuxOSConfig = TypeVar("LinuxOSConfig") -ManagedClusterHTTPProxyConfig = TypeVar("ManagedClusterHTTPProxyConfig") -ContainerServiceNetworkProfile = TypeVar("ContainerServiceNetworkProfile") -ManagedClusterAddonProfile = TypeVar("ManagedClusterAddonProfile") -ManagedClusterOIDCIssuerProfile = TypeVar('ManagedClusterOIDCIssuerProfile') -ManagedClusterSecurityProfileWorkloadIdentity = TypeVar('ManagedClusterSecurityProfileWorkloadIdentity') -ManagedClusterStorageProfile = TypeVar('ManagedClusterStorageProfile') -ManagedClusterStorageProfileDiskCSIDriver = TypeVar('ManagedClusterStorageProfileDiskCSIDriver') -ManagedClusterStorageProfileFileCSIDriver = TypeVar('ManagedClusterStorageProfileFileCSIDriver') -ManagedClusterStorageProfileSnapshotController = TypeVar('ManagedClusterStorageProfileSnapshotController') -ManagedClusterAPIServerAccessProfile = TypeVar('ManagedClusterAPIServerAccessProfile') -Snapshot = TypeVar("Snapshot") -ManagedClusterSnapshot = TypeVar("ManagedClusterSnapshot") -AzureKeyVaultKms = TypeVar('AzureKeyVaultKms') -ManagedClusterIngressProfile = TypeVar('ManagedClusterIngressProfile') -ManagedClusterIngressProfileWebAppRouting = TypeVar('ManagedClusterIngressProfileWebAppRouting') -ManagedClusterWorkloadAutoScalerProfile = TypeVar('ManagedClusterWorkloadAutoScalerProfile') -ManagedClusterWorkloadAutoScalerProfileKeda = TypeVar('ManagedClusterWorkloadAutoScalerProfileKeda') - - -# pylint: disable=too-many-instance-attributes,too-few-public-methods -class AKSPreviewModels(AKSModels): - def __init__(self, cmd: AzCommandsLoader, resource_type: ResourceType): - super().__init__(cmd, resource_type=resource_type) - self.__cmd = cmd - self.KubeletConfig = self.__cmd.get_models( - "KubeletConfig", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.LinuxOSConfig = self.__cmd.get_models( - "LinuxOSConfig", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterHTTPProxyConfig = self.__cmd.get_models( - "ManagedClusterHTTPProxyConfig", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.WindowsGmsaProfile = self.__cmd.get_models( - "WindowsGmsaProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.CreationData = self.__cmd.get_models( - "CreationData", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterOIDCIssuerProfile = self.__cmd.get_models( - "ManagedClusterOIDCIssuerProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterSecurityProfileWorkloadIdentity = self.__cmd.get_models( - "ManagedClusterSecurityProfileWorkloadIdentity", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterSecurityProfile = self.__cmd.get_models( - "ManagedClusterSecurityProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterIngressProfileWebAppRouting = self.__cmd.get_models( - "ManagedClusterIngressProfileWebAppRouting", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterIngressProfile = self.__cmd.get_models( - "ManagedClusterIngressProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.AzureKeyVaultKms = self.__cmd.get_models( - "AzureKeyVaultKms", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterStorageProfile = self.__cmd.get_models( - "ManagedClusterStorageProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterStorageProfileDiskCSIDriver = self.__cmd.get_models( - "ManagedClusterStorageProfileDiskCSIDriver", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterStorageProfileFileCSIDriver = self.__cmd.get_models( - "ManagedClusterStorageProfileFileCSIDriver", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterStorageProfileSnapshotController = self.__cmd.get_models( - "ManagedClusterStorageProfileSnapshotController", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterAPIServerAccessProfile = self.__cmd.get_models( - "ManagedClusterAPIServerAccessProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterWorkloadAutoScalerProfile = self.__cmd.get_models( - "ManagedClusterWorkloadAutoScalerProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.ManagedClusterWorkloadAutoScalerProfileKeda = self.__cmd.get_models( - "ManagedClusterWorkloadAutoScalerProfileKeda", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - # holder for nat gateway related models - self.__nat_gateway_models = None - # holder for pod identity related models - self.__pod_identity_models = None - - @property - def nat_gateway_models(self) -> SimpleNamespace: - """Get nat gateway related models. - - The models are stored in a SimpleNamespace object, could be accessed by the dot operator like - `nat_gateway_models.ManagedClusterNATGatewayProfile`. - - :return: SimpleNamespace - """ - if self.__nat_gateway_models is None: - nat_gateway_models = {} - nat_gateway_models["ManagedClusterNATGatewayProfile"] = self.__cmd.get_models( - "ManagedClusterNATGatewayProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - nat_gateway_models["ManagedClusterManagedOutboundIPProfile"] = self.__cmd.get_models( - "ManagedClusterManagedOutboundIPProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.__nat_gateway_models = SimpleNamespace(**nat_gateway_models) - return self.__nat_gateway_models - - @property - def pod_identity_models(self) -> SimpleNamespace: - """Get pod identity related models. - - The models are stored in a SimpleNamespace object, could be accessed by the dot operator like - `pod_identity_models.ManagedClusterPodIdentityProfile`. - - :return: SimpleNamespace - """ - if self.__pod_identity_models is None: - pod_identity_models = {} - pod_identity_models["ManagedClusterPodIdentityProfile"] = self.__cmd.get_models( - "ManagedClusterPodIdentityProfile", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - pod_identity_models["ManagedClusterPodIdentityException"] = self.__cmd.get_models( - "ManagedClusterPodIdentityException", - resource_type=self.resource_type, - operation_group="managed_clusters", - ) - self.__pod_identity_models = SimpleNamespace(**pod_identity_models) - return self.__pod_identity_models - - -# pylint: disable=too-many-public-methods -class AKSPreviewContext(AKSContext): - def __init__( - self, - cmd: AzCliCommand, - raw_parameters: Dict, - models: AKSPreviewModels, - decorator_mode, - ): - super().__init__(cmd, raw_parameters, models, decorator_mode) - - # pylint: disable=no-self-use - def __validate_pod_identity_with_kubenet(self, mc, enable_pod_identity, enable_pod_identity_with_kubenet): - """Helper function to check the validity of serveral pod identity related parameters. - - If network_profile has been set up in `mc`, network_plugin equals to "kubenet" and enable_pod_identity is - specified but enable_pod_identity_with_kubenet is not, raise a RequiredArgumentMissingError. - - :return: None - """ - if ( - mc and - mc.network_profile and - safe_lower(mc.network_profile.network_plugin) == "kubenet" - ): - if enable_pod_identity and not enable_pod_identity_with_kubenet: - raise RequiredArgumentMissingError( - "--enable-pod-identity-with-kubenet is required for enabling pod identity addon " - "when using Kubenet network plugin" - ) - - # pylint: disable=no-self-use - def __validate_gmsa_options( - self, - enable_windows_gmsa, - gmsa_dns_server, - gmsa_root_domain_name, - yes, - ) -> None: - """Helper function to validate gmsa related options. - - When enable_windows_gmsa is specified, if both gmsa_dns_server and gmsa_root_domain_name are not assigned and - user does not confirm the operation, a DecoratorEarlyExitException will be raised; if only one of - gmsa_dns_server or gmsa_root_domain_name is assigned, raise a RequiredArgumentMissingError. When - enable_windows_gmsa is not specified, if any of gmsa_dns_server or gmsa_root_domain_name is assigned, raise - a RequiredArgumentMissingError. - - :return: bool - """ - gmsa_dns_server_is_none = gmsa_dns_server is None - gmsa_root_domain_name_is_none = gmsa_root_domain_name is None - if enable_windows_gmsa: - if gmsa_dns_server_is_none == gmsa_root_domain_name_is_none: - if gmsa_dns_server_is_none: - msg = ( - "Please assure that you have set the DNS server in the vnet used by the cluster " - "when not specifying --gmsa-dns-server and --gmsa-root-domain-name" - ) - if not yes and not prompt_y_n(msg, default="n"): - raise DecoratorEarlyExitException() - else: - raise RequiredArgumentMissingError( - "You must set or not set --gmsa-dns-server and --gmsa-root-domain-name at the same time." - ) - else: - if gmsa_dns_server_is_none != gmsa_root_domain_name_is_none: - raise RequiredArgumentMissingError( - "You only can set --gmsa-dns-server and --gmsa-root-domain-name " - "when setting --enable-windows-gmsa." - ) - - # pylint: disable=unused-argument - def _get_vm_set_type(self, read_only: bool = False) -> Union[str, None]: - """Internal function to dynamically obtain the value of vm_set_type according to the context. - - Note: Inherited and extended in aks-preview to add support for the deprecated option --enable-vmss. - - :return: string or None - """ - vm_set_type = super()._get_vm_set_type(read_only) - - # TODO: Remove the below section when we deprecate the --enable-vmss flag, kept for back-compatibility only. - # read the original value passed by the command - enable_vmss = self.raw_param.get("enable_vmss") - - if enable_vmss: - if vm_set_type and vm_set_type.lower() != "VirtualMachineScaleSets".lower(): - raise InvalidArgumentValueError( - "--enable-vmss and provided --vm-set-type ({}) are conflicting with each other".format( - vm_set_type - ) - ) - vm_set_type = "VirtualMachineScaleSets" - return vm_set_type - - def get_zones(self) -> Union[List[str], None]: - """Obtain the value of zones. - - Note: Inherited and extended in aks-preview to add support for a different parameter name (node_zones). - - :return: list of strings or None - """ - zones = super().get_zones() - if zones is not None: - return zones - # read the original value passed by the command - return self.raw_param.get("node_zones") - - def get_pod_subnet_id(self) -> Union[str, None]: - """Obtain the value of pod_subnet_id. - - :return: bool - """ - # read the original value passed by the command - pod_subnet_id = self.raw_param.get("pod_subnet_id") - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - agent_pool_profile.pod_subnet_id is not None - ): - pod_subnet_id = agent_pool_profile.pod_subnet_id - - # this parameter does not need dynamic completion - # this parameter does not need validation - return pod_subnet_id - - def get_enable_fips_image(self) -> bool: - """Obtain the value of enable_fips_image. - - :return: bool - """ - # read the original value passed by the command - enable_fips_image = self.raw_param.get("enable_fips_image") - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - agent_pool_profile.enable_fips is not None - ): - enable_fips_image = agent_pool_profile.enable_fips - - # this parameter does not need dynamic completion - # this parameter does not need validation - return enable_fips_image - - def get_workload_runtime(self) -> Union[str, None]: - """Obtain the value of workload_runtime. - - :return: string or None - """ - # read the original value passed by the command - workload_runtime = self.raw_param.get("workload_runtime") - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - # backward compatibility - hasattr(agent_pool_profile, "workload_runtime") and - agent_pool_profile.workload_runtime is not None - ): - workload_runtime = agent_pool_profile.workload_runtime - - # this parameter does not need dynamic completion - # this parameter does not need validation - return workload_runtime - - def get_gpu_instance_profile(self) -> Union[str, None]: - """Obtain the value of gpu_instance_profile. - - :return: string or None - """ - # read the original value passed by the command - gpu_instance_profile = self.raw_param.get("gpu_instance_profile") - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - # backward compatibility - hasattr(agent_pool_profile, "gpu_instance_profile") and - agent_pool_profile.gpu_instance_profile is not None - ): - gpu_instance_profile = agent_pool_profile.gpu_instance_profile - - # this parameter does not need dynamic completion - # this parameter does not need validation - return gpu_instance_profile - - def get_message_of_the_day(self) -> Union[str, None]: - """Obtain the value of message_of_the_day. - - :return: string or None - """ - # read the original value passed by the command - message_of_the_day = None - message_of_the_day_file_path = self.raw_param.get("message_of_the_day") - - if message_of_the_day_file_path: - if not os.path.isfile(message_of_the_day_file_path): - raise InvalidArgumentValueError( - "{} is not valid file, or not accessable.".format( - message_of_the_day_file_path - ) - ) - message_of_the_day = read_file_content( - message_of_the_day_file_path) - message_of_the_day = base64.b64encode( - bytes(message_of_the_day, 'ascii')).decode('ascii') - - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - # backward compatibility - hasattr(agent_pool_profile, "message_of_the_day") and - agent_pool_profile.message_of_the_day is not None - ): - message_of_the_day = agent_pool_profile.message_of_the_day - - # this parameter does not need dynamic completion - # this parameter does not need validation - return message_of_the_day - - def get_enable_custom_ca_trust(self) -> Union[bool, None]: - """Obtain the value of enable_custom_ca_trust. - - :return: bool or None - """ - # read the original value passed by the command - enable_custom_ca_trust = self.raw_param.get("enable_custom_ca_trust") - - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - # backward compatibility - hasattr(agent_pool_profile, "enable_custom_ca_trust") and - agent_pool_profile.enable_custom_ca_trust is not None - ): - enable_custom_ca_trust = agent_pool_profile.enable_custom_ca_trust - - # this parameter does not need dynamic completion - # this parameter does not need validation - return enable_custom_ca_trust - - def get_kubelet_config(self) -> Union[dict, KubeletConfig, None]: - """Obtain the value of kubelet_config. - - :return: dict, KubeletConfig or None - """ - # read the original value passed by the command - kubelet_config = None - kubelet_config_file_path = self.raw_param.get("kubelet_config") - # validate user input - if kubelet_config_file_path: - if not os.path.isfile(kubelet_config_file_path): - raise InvalidArgumentValueError( - "{} is not valid file, or not accessable.".format( - kubelet_config_file_path - ) - ) - kubelet_config = get_file_json(kubelet_config_file_path) - if not isinstance(kubelet_config, dict): - raise InvalidArgumentValueError( - "Error reading kubelet configuration from {}. " - "Please see https://aka.ms/CustomNodeConfig for correct format.".format( - kubelet_config_file_path - ) - ) - - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - agent_pool_profile.kubelet_config is not None - ): - kubelet_config = agent_pool_profile.kubelet_config - - # this parameter does not need dynamic completion - # this parameter does not need validation - return kubelet_config - - def get_linux_os_config(self) -> Union[dict, LinuxOSConfig, None]: - """Obtain the value of linux_os_config. - - :return: dict, LinuxOSConfig or None - """ - # read the original value passed by the command - linux_os_config = None - linux_os_config_file_path = self.raw_param.get("linux_os_config") - # validate user input - if linux_os_config_file_path: - if not os.path.isfile(linux_os_config_file_path): - raise InvalidArgumentValueError( - "{} is not valid file, or not accessable.".format( - linux_os_config_file_path - ) - ) - linux_os_config = get_file_json(linux_os_config_file_path) - if not isinstance(linux_os_config, dict): - raise InvalidArgumentValueError( - "Error reading Linux OS configuration from {}. " - "Please see https://aka.ms/CustomNodeConfig for correct format.".format( - linux_os_config_file_path - ) - ) - - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - agent_pool_profile.linux_os_config is not None - ): - linux_os_config = agent_pool_profile.linux_os_config - - # this parameter does not need dynamic completion - # this parameter does not need validation - return linux_os_config - - def get_http_proxy_config(self) -> Union[dict, ManagedClusterHTTPProxyConfig, None]: - """Obtain the value of http_proxy_config. - - :return: dict, ManagedClusterHTTPProxyConfig or None - """ - # read the original value passed by the command - http_proxy_config = None - http_proxy_config_file_path = self.raw_param.get("http_proxy_config") - # validate user input - if http_proxy_config_file_path: - if not os.path.isfile(http_proxy_config_file_path): - raise InvalidArgumentValueError( - "{} is not valid file, or not accessable.".format( - http_proxy_config_file_path - ) - ) - http_proxy_config = get_file_json(http_proxy_config_file_path) - if not isinstance(http_proxy_config, dict): - raise InvalidArgumentValueError( - "Error reading Http Proxy Config from {}. " - "Please see https://aka.ms/HttpProxyConfig for correct format.".format( - http_proxy_config_file_path - ) - ) - - # try to read the property value corresponding to the parameter from the `mc` object - if self.decorator_mode == DecoratorMode.CREATE: - if self.mc and self.mc.http_proxy_config is not None: - http_proxy_config = self.mc.http_proxy_config - - # this parameter does not need dynamic completion - # this parameter does not need validation - return http_proxy_config - - def get_node_resource_group(self) -> Union[str, None]: - """Obtain the value of node_resource_group. - - :return: string or None - """ - # read the original value passed by the command - node_resource_group = self.raw_param.get("node_resource_group") - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.node_resource_group is not None: - node_resource_group = self.mc.node_resource_group - - # this parameter does not need dynamic completion - # this parameter does not need validation - return node_resource_group - - def get_nat_gateway_managed_outbound_ip_count(self) -> Union[int, None]: - """Obtain the value of nat_gateway_managed_outbound_ip_count. - - Note: SDK provides default value 1 and performs the following validation {'maximum': 16, 'minimum': 1}. - - :return: int or None - """ - # read the original value passed by the command - nat_gateway_managed_outbound_ip_count = self.raw_param.get( - "nat_gateway_managed_outbound_ip_count") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.network_profile and - self.mc.network_profile.nat_gateway_profile and - self.mc.network_profile.nat_gateway_profile.managed_outbound_ip_profile and - self.mc.network_profile.nat_gateway_profile.managed_outbound_ip_profile.count is not None - ): - nat_gateway_managed_outbound_ip_count = ( - self.mc.network_profile.nat_gateway_profile.managed_outbound_ip_profile.count - ) - - # this parameter does not need dynamic completion - # this parameter does not need validation - return nat_gateway_managed_outbound_ip_count - - def get_nat_gateway_idle_timeout(self) -> Union[int, None]: - """Obtain the value of nat_gateway_idle_timeout. - - Note: SDK provides default value 4 and performs the following validation {'maximum': 120, 'minimum': 4}. - - :return: int or None - """ - # read the original value passed by the command - nat_gateway_idle_timeout = self.raw_param.get( - "nat_gateway_idle_timeout") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.network_profile and - self.mc.network_profile.nat_gateway_profile and - self.mc.network_profile.nat_gateway_profile.idle_timeout_in_minutes is not None - ): - nat_gateway_idle_timeout = ( - self.mc.network_profile.nat_gateway_profile.idle_timeout_in_minutes - ) - - # this parameter does not need dynamic completion - # this parameter does not need validation - return nat_gateway_idle_timeout - - def _get_enable_pod_security_policy(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of enable_pod_security_policy. - - This function supports the option of enable_validation. When enabled, if both enable_pod_security_policy and - disable_pod_security_policy are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - # read the original value passed by the command - enable_pod_security_policy = self.raw_param.get( - "enable_pod_security_policy") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.enable_pod_security_policy is not None - ): - enable_pod_security_policy = self.mc.enable_pod_security_policy - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if enable_pod_security_policy and self._get_disable_pod_security_policy(enable_validation=False): - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-pod-security-policy and " - "--disable-pod-security-policy at the same time." - ) - return enable_pod_security_policy - - def get_enable_pod_security_policy(self) -> bool: - """Obtain the value of enable_pod_security_policy. - - This function will verify the parameter by default. If both enable_pod_security_policy and - disable_pod_security_policy are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - return self._get_enable_pod_security_policy(enable_validation=True) - - def _get_disable_pod_security_policy(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of disable_pod_security_policy. - - This function supports the option of enable_validation. When enabled, if both enable_pod_security_policy and - disable_pod_security_policy are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - # read the original value passed by the command - disable_pod_security_policy = self.raw_param.get( - "disable_pod_security_policy") - # We do not support this option in create mode, therefore we do not read the value from `mc`. - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if disable_pod_security_policy and self._get_enable_pod_security_policy(enable_validation=False): - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-pod-security-policy and " - "--disable-pod-security-policy at the same time." - ) - return disable_pod_security_policy - - def get_disable_pod_security_policy(self) -> bool: - """Obtain the value of disable_pod_security_policy. - - This function will verify the parameter by default. If both enable_pod_security_policy and - disable_pod_security_policy are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - return self._get_disable_pod_security_policy(enable_validation=True) - - # pylint: disable=unused-argument - def _get_enable_managed_identity( - self, enable_validation: bool = False, read_only: bool = False - ) -> bool: - """Internal function to obtain the value of enable_managed_identity. - - Note: Inherited and extended in aks-preview to perform additional validation. - - This function supports the option of enable_validation. When enabled, if enable_managed_identity is not - specified but enable_pod_identity is, raise a RequiredArgumentMissingError. - - :return: bool - """ - enable_managed_identity = super()._get_enable_managed_identity( - enable_validation, read_only) - # additional validation - if enable_validation: - if self.decorator_mode == DecoratorMode.CREATE: - if not enable_managed_identity and self._get_enable_pod_identity(enable_validation=False): - raise RequiredArgumentMissingError( - "--enable-pod-identity can only be specified when --enable-managed-identity is specified" - ) - elif self.decorator_mode == DecoratorMode.UPDATE: - if not check_is_msi_cluster(self.mc) and self._get_enable_pod_identity(enable_validation=False): - raise RequiredArgumentMissingError( - "--enable-pod-identity can only be specified for cluster enabled managed identity" - ) - return enable_managed_identity - - def _get_enable_pod_identity(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of enable_managed_identity. - - This function supports the option of enable_validation. When enabled, if enable_managed_identity is not - specified but enable_pod_identity is, raise a RequiredArgumentMissingError. Will also call function - "__validate_pod_identity_with_kubenet" for verification. In update mode, if both - enable_pod_identity and disable_pod_identity are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - # read the original value passed by the command - enable_pod_identity = self.raw_param.get("enable_pod_identity") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.pod_identity_profile and - self.mc.pod_identity_profile.enabled is not None - ): - enable_pod_identity = self.mc.pod_identity_profile.enabled - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if self.decorator_mode == DecoratorMode.CREATE: - if enable_pod_identity and not self._get_enable_managed_identity(enable_validation=False): - raise RequiredArgumentMissingError( - "--enable-pod-identity can only be specified when --enable-managed-identity is specified" - ) - # validate pod identity with kubenet plugin - self.__validate_pod_identity_with_kubenet( - self.mc, - enable_pod_identity, - self._get_enable_pod_identity_with_kubenet( - enable_validation=False - ), - ) - elif self.decorator_mode == DecoratorMode.UPDATE: - if enable_pod_identity: - if not check_is_msi_cluster(self.mc): - raise RequiredArgumentMissingError( - "--enable-pod-identity can only be specified for cluster enabled managed identity" - ) - if self._get_disable_pod_identity(enable_validation=False): - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-pod-identity and " - "--disable-pod-identity at the same time." - ) - return enable_pod_identity - - def get_enable_pod_identity(self) -> bool: - """Obtain the value of enable_pod_identity. - - This function will verify the parameter by default. If enable_managed_identity is not specified but - enable_pod_identity is, raise a RequiredArgumentMissingError. Will also call function - "__validate_pod_identity_with_kubenet" for verification. In update mode, if both enable_pod_identity and - disable_pod_identity are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - - return self._get_enable_pod_identity(enable_validation=True) - - def _get_disable_pod_identity(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of disable_pod_identity. - - This function supports the option of enable_validation. When enabled, in update mode, if both - enable_pod_identity and disable_pod_identity are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - # read the original value passed by the command - disable_pod_identity = self.raw_param.get("disable_pod_identity") - # We do not support this option in create mode, therefore we do not read the value from `mc`. - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if self.decorator_mode == DecoratorMode.UPDATE: - if disable_pod_identity and self._get_enable_pod_identity(enable_validation=False): - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-pod-identity and " - "--disable-pod-identity at the same time." - ) - return disable_pod_identity - - def get_disable_pod_identity(self) -> bool: - """Obtain the value of disable_pod_identity. - - This function will verify the parameter by default. When enabled, in update mode, if both - enable_pod_identity and disable_pod_identity are specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - - return self._get_disable_pod_identity(enable_validation=True) - - def _get_enable_pod_identity_with_kubenet(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of enable_pod_identity_with_kubenet. - - This function supports the option of enable_validation. When enabled, will call function - "__validate_pod_identity_with_kubenet" for verification. - - :return: bool - """ - # read the original value passed by the command - enable_pod_identity_with_kubenet = self.raw_param.get( - "enable_pod_identity_with_kubenet") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.pod_identity_profile and - self.mc.pod_identity_profile.allow_network_plugin_kubenet is not None - ): - enable_pod_identity_with_kubenet = self.mc.pod_identity_profile.allow_network_plugin_kubenet - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if self.decorator_mode == DecoratorMode.CREATE: - self.__validate_pod_identity_with_kubenet( - self.mc, - self._get_enable_pod_identity(enable_validation=False), - enable_pod_identity_with_kubenet, - ) - return enable_pod_identity_with_kubenet - - def get_enable_pod_identity_with_kubenet(self) -> bool: - """Obtain the value of enable_pod_identity_with_kubenet. - - This function will verify the parameter by default. Will call function "__validate_pod_identity_with_kubenet" - for verification. - - :return: bool - """ - return self._get_enable_pod_identity_with_kubenet(enable_validation=True) - - def get_addon_consts(self) -> Dict[str, str]: - """Helper function to obtain the constants used by addons. - - Note: Inherited and extended in aks-preview to replace and add a few values. - - Note: This is not a parameter of aks commands. - - :return: dict - """ - from azext_aks_preview._consts import ( - ADDONS, CONST_GITOPS_ADDON_NAME, - CONST_MONITORING_USING_AAD_MSI_AUTH) - - addon_consts = super().get_addon_consts() - addon_consts["ADDONS"] = ADDONS - addon_consts["CONST_GITOPS_ADDON_NAME"] = CONST_GITOPS_ADDON_NAME - addon_consts[ - "CONST_MONITORING_USING_AAD_MSI_AUTH" - ] = CONST_MONITORING_USING_AAD_MSI_AUTH - return addon_consts - - def get_appgw_subnet_prefix(self) -> Union[str, None]: - """Obtain the value of appgw_subnet_prefix. - - [Deprecated] Note: this parameter is depracated and replaced by appgw_subnet_cidr. - - :return: string or None - """ - # determine the value of constants - addon_consts = self.get_addon_consts() - CONST_INGRESS_APPGW_ADDON_NAME = addon_consts.get( - "CONST_INGRESS_APPGW_ADDON_NAME") - CONST_INGRESS_APPGW_SUBNET_CIDR = addon_consts.get( - "CONST_INGRESS_APPGW_SUBNET_CIDR") - - # read the original value passed by the command - appgw_subnet_prefix = self.raw_param.get("appgw_subnet_prefix") - # try to read the property value corresponding to the parameter from the `mc` object - if ( - self.mc and - self.mc.addon_profiles and - CONST_INGRESS_APPGW_ADDON_NAME in self.mc.addon_profiles and - self.mc.addon_profiles.get( - CONST_INGRESS_APPGW_ADDON_NAME - ).config.get(CONST_INGRESS_APPGW_SUBNET_CIDR) is not None - ): - appgw_subnet_prefix = self.mc.addon_profiles.get( - CONST_INGRESS_APPGW_ADDON_NAME - ).config.get(CONST_INGRESS_APPGW_SUBNET_CIDR) - - # this parameter does not need dynamic completion - # this parameter does not need validation - return appgw_subnet_prefix - - def get_enable_msi_auth_for_monitoring(self) -> Union[bool, None]: - """Obtain the value of enable_msi_auth_for_monitoring. - - Note: The arg type of this parameter supports three states (True, False or None), but the corresponding default - value in entry function is not None. - - :return: bool or None - """ - # determine the value of constants - addon_consts = self.get_addon_consts() - CONST_MONITORING_ADDON_NAME = addon_consts.get( - "CONST_MONITORING_ADDON_NAME") - CONST_MONITORING_USING_AAD_MSI_AUTH = addon_consts.get( - "CONST_MONITORING_USING_AAD_MSI_AUTH") - - # read the original value passed by the command - enable_msi_auth_for_monitoring = self.raw_param.get( - "enable_msi_auth_for_monitoring") - # try to read the property value corresponding to the parameter from the `mc` object - if ( - self.mc and - self.mc.addon_profiles and - CONST_MONITORING_ADDON_NAME in self.mc.addon_profiles and - self.mc.addon_profiles.get( - CONST_MONITORING_ADDON_NAME - ).config.get(CONST_MONITORING_USING_AAD_MSI_AUTH) is not None - ): - enable_msi_auth_for_monitoring = self.mc.addon_profiles.get( - CONST_MONITORING_ADDON_NAME - ).config.get(CONST_MONITORING_USING_AAD_MSI_AUTH) - - # this parameter does not need dynamic completion - # this parameter does not need validation - return enable_msi_auth_for_monitoring - - def get_no_wait(self) -> bool: - """Obtain the value of no_wait. - - Note: Inherited and extended in aks-preview to replace the set value when enable_msi_auth_for_monitoring is - specified. - - Note: no_wait will not be decorated into the `mc` object. - - :return: bool - """ - no_wait = super().get_no_wait() - - if self.get_intermediate("monitoring") and self.get_enable_msi_auth_for_monitoring(): - logger.warning( - "Enabling msi auth for monitoring addon requires waiting for cluster creation to complete") - if no_wait: - logger.warning("The set option '--no-wait' has been ignored") - no_wait = False - return no_wait - - # TOOD: may remove this function after the fix for the internal function get merged and released - # pylint: disable=unused-argument - def _get_workspace_resource_id( - self, enable_validation: bool = False, read_only: bool = False - ) -> Union[str, None]: # pragma: no cover - """Internal function to dynamically obtain the value of workspace_resource_id according to the context. - - Note: Overwritten in aks-preview to replace the internal function. - - When workspace_resource_id is not assigned, dynamic completion will be triggerd. Function - "ensure_default_log_analytics_workspace_for_monitoring" will be called to create a workspace with - subscription_id and resource_group_name, which internally used ResourceManagementClient to send the request. - - This function supports the option of enable_validation. When enabled, it will check if workspace_resource_id is - assigned but 'monitoring' is not specified in enable_addons, if so, raise a RequiredArgumentMissingError. - This function supports the option of read_only. When enabled, it will skip dynamic completion and validation. - - :return: string or None - """ - # determine the value of constants - addon_consts = self.get_addon_consts() - CONST_MONITORING_ADDON_NAME = addon_consts.get( - "CONST_MONITORING_ADDON_NAME") - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID = addon_consts.get( - "CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID" - ) - - # read the original value passed by the command - workspace_resource_id = self.raw_param.get("workspace_resource_id") - # try to read the property value corresponding to the parameter from the `mc` object - read_from_mc = False - if ( - self.mc and - self.mc.addon_profiles and - CONST_MONITORING_ADDON_NAME in self.mc.addon_profiles and - self.mc.addon_profiles.get( - CONST_MONITORING_ADDON_NAME - ).config.get(CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID) is not None - ): - workspace_resource_id = self.mc.addon_profiles.get( - CONST_MONITORING_ADDON_NAME - ).config.get(CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID) - read_from_mc = True - - # skip dynamic completion & validation if option read_only is specified - if read_only: - return workspace_resource_id - - # dynamic completion - if not read_from_mc: - if workspace_resource_id is None: - # use default workspace if exists else create default workspace - workspace_resource_id = ( - ensure_default_log_analytics_workspace_for_monitoring( - self.cmd, - self.get_subscription_id(), - self.get_resource_group_name(), - ) - ) - # normalize - workspace_resource_id = "/" + workspace_resource_id.strip(" /") - - # validation - if enable_validation: - enable_addons = self._get_enable_addons(enable_validation=False) - if workspace_resource_id and "monitoring" not in enable_addons: - raise RequiredArgumentMissingError( - '"--workspace-resource-id" requires "--enable-addons monitoring".') - - # this parameter does not need validation - return workspace_resource_id - - def get_pod_cidrs_and_service_cidrs_and_ip_families(self) -> Tuple[ - Union[List[str], None], - Union[List[str], None], - Union[List[str], None], - ]: - return self.get_pod_cidrs(), self.get_service_cidrs(), self.get_ip_families() - - def get_ip_families(self) -> Union[List[str], None]: - """IPFamilies used for the cluster network. - - :return: List[str] or None - """ - return self._get_list_attr('ip_families') - - def get_pod_cidrs(self) -> Union[List[str], None]: - """Obtain the CIDR ranges used for pod subnets. - - :return: List[str] or None - """ - return self._get_list_attr('pod_cidrs') - - def get_service_cidrs(self) -> Union[List[str], None]: - """Obtain the CIDR ranges for the service subnet. - - :return: List[str] or None - """ - return self._get_list_attr('service_cidrs') - - def _get_list_attr(self, param_key) -> Union[List[str], None]: - param = self.raw_param.get(param_key) - - if param is not None: - return param.split(',') if param else [] - - return None - - def get_load_balancer_managed_outbound_ip_count(self) -> Union[int, None]: - """Obtain the value of load_balancer_managed_outbound_ip_count. - - Note: Overwritten in aks-preview to preserve value from `mc` in update mode under certain circumstance. - - Note: SDK provides default value 1 and performs the following validation {'maximum': 100, 'minimum': 1}. - - :return: int or None - """ - # read the original value passed by the command - load_balancer_managed_outbound_ip_count = self.raw_param.get( - "load_balancer_managed_outbound_ip_count" - ) - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.network_profile and - self.mc.network_profile.load_balancer_profile and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count is not None - ): - load_balancer_managed_outbound_ip_count = ( - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count - ) - elif self.decorator_mode == DecoratorMode.UPDATE: - if ( - not self.get_load_balancer_outbound_ips() and - not self.get_load_balancer_outbound_ip_prefixes() and - load_balancer_managed_outbound_ip_count is None - ): - if ( - self.mc and - self.mc.network_profile and - self.mc.network_profile.load_balancer_profile and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count is not None - ): - load_balancer_managed_outbound_ip_count = ( - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count - ) - - # this parameter does not need dynamic completion - # this parameter does not need validation - return load_balancer_managed_outbound_ip_count - - def get_load_balancer_managed_outbound_ipv6_count(self) -> Union[int, None]: - """Obtain the expected count of IPv6 managed outbound IPs. - - Note: SDK provides default value 0 and performs the following validation {'maximum': 100, 'minimum': 0}. - - :return: int or None - """ - count_ipv6 = self.raw_param.get( - 'load_balancer_managed_outbound_ipv6_count') - - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.network_profile and - self.mc.network_profile.load_balancer_profile and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count_ipv6 is not None - ): - count_ipv6 = ( - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count_ipv6 - ) - elif self.decorator_mode == DecoratorMode.UPDATE: - if ( - not self.get_load_balancer_outbound_ips() and - not self.get_load_balancer_outbound_ip_prefixes() and - count_ipv6 is None - ): - if ( - self.mc and - self.mc.network_profile and - self.mc.network_profile.load_balancer_profile and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps and - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count_ipv6 is not None - ): - count_ipv6 = ( - self.mc.network_profile.load_balancer_profile.managed_outbound_i_ps.count_ipv6 - ) - - return count_ipv6 - - # pylint: disable=unused-argument - def _get_outbound_type( - self, - enable_validation: bool = False, - read_only: bool = False, - load_balancer_profile: ManagedClusterLoadBalancerProfile = None, - ) -> Union[str, None]: - """Internal function to dynamically obtain the value of outbound_type according to the context. - - Note: Overwritten in aks-preview to add support for the newly added nat related constants. - - Note: All the external parameters involved in the validation are not verified in their own getters. - - When outbound_type is not assigned, dynamic completion will be triggerd. By default, the value is set to - CONST_OUTBOUND_TYPE_LOAD_BALANCER. - - This function supports the option of enable_validation. When enabled, if the value of outbound_type is one of - CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY, CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY or - CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, the following checks will be performed. If load_balancer_sku is set - to basic, an InvalidArgumentValueError will be raised. If the value of outbound_type is not - CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING and vnet_subnet_id is not assigned, a RequiredArgumentMissingError - will be raised. If the value of outbound_type equals to CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING and - any of load_balancer_managed_outbound_ip_count, load_balancer_outbound_ips or load_balancer_outbound_ip_prefixes - is assigned, a MutuallyExclusiveArgumentError will be raised. - This function supports the option of read_only. When enabled, it will skip dynamic completion and validation. - This function supports the option of load_balancer_profile, if provided, when verifying loadbalancer-related - parameters, the value in load_balancer_profile will be used for validation. - - :return: string or None - """ - # read the original value passed by the command - outbound_type = self.raw_param.get("outbound_type") - # try to read the property value corresponding to the parameter from the `mc` object - read_from_mc = False - if ( - self.mc and - self.mc.network_profile and - self.mc.network_profile.outbound_type is not None - ): - outbound_type = self.mc.network_profile.outbound_type - read_from_mc = True - - # skip dynamic completion & validation if option read_only is specified - if read_only: - return outbound_type - - # dynamic completion - if ( - not read_from_mc and - outbound_type != CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY and - outbound_type != CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY and - outbound_type != CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING - ): - outbound_type = CONST_OUTBOUND_TYPE_LOAD_BALANCER - - # validation - # Note: The parameters involved in the validation are not verified in their own getters. - if enable_validation: - if outbound_type in [ - CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY, - CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY, - CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, - ]: - # Should not enable read_only for get_load_balancer_sku, since its default value is None, and it has - # not been decorated into the mc object at this time, only the value after dynamic completion is - # meaningful here. - if safe_lower(self._get_load_balancer_sku(enable_validation=False)) == "basic": - raise InvalidArgumentValueError( - "{} doesn't support basic load balancer sku".format(outbound_type)) - if outbound_type == CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY: - if self.get_vnet_subnet_id() in ["", None]: - raise RequiredArgumentMissingError( - "--vnet-subnet-id must be specified for userAssignedNATGateway and it must " - "be pre-associated with a NAT gateway with outbound public IPs or IP prefixes" - ) - if outbound_type == CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING: - if self.get_vnet_subnet_id() in ["", None]: - raise RequiredArgumentMissingError( - "--vnet-subnet-id must be specified for userDefinedRouting and it must " - "be pre-configured with a route table with egress rules" - ) - if load_balancer_profile: - if ( - load_balancer_profile.managed_outbound_i_ps or - load_balancer_profile.outbound_i_ps or - load_balancer_profile.outbound_ip_prefixes - ): - raise MutuallyExclusiveArgumentError( - "userDefinedRouting doesn't support customizing " - "a standard load balancer with IP addresses" - ) - else: - if ( - self.get_load_balancer_managed_outbound_ip_count() or - self.get_load_balancer_outbound_ips() or - self.get_load_balancer_outbound_ip_prefixes() - ): - raise MutuallyExclusiveArgumentError( - "userDefinedRouting doesn't support customizing " - "a standard load balancer with IP addresses" - ) - return outbound_type - - def _get_enable_windows_gmsa(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of enable_windows_gmsa. - - This function supports the option of enable_validation. Please refer to function __validate_gmsa_options for - details of validation. - - :return: bool - """ - # read the original value passed by the command - enable_windows_gmsa = self.raw_param.get("enable_windows_gmsa") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.windows_profile and - # backward compatibility - hasattr(self.mc.windows_profile, "gmsa_profile") and - self.mc.windows_profile.gmsa_profile and - self.mc.windows_profile.gmsa_profile.enabled is not None - ): - enable_windows_gmsa = self.mc.windows_profile.gmsa_profile.enabled - - # this parameter does not need dynamic completion - # validation - if enable_validation: - ( - gmsa_dns_server, - gmsa_root_domain_name, - ) = self._get_gmsa_dns_server_and_root_domain_name( - enable_validation=False - ) - self.__validate_gmsa_options( - enable_windows_gmsa, gmsa_dns_server, gmsa_root_domain_name, self.get_yes() - ) - return enable_windows_gmsa - - def get_enable_windows_gmsa(self) -> bool: - """Obtain the value of enable_windows_gmsa. - - This function will verify the parameter by default. When enable_windows_gmsa is specified, if both - gmsa_dns_server and gmsa_root_domain_name are not assigned and user does not confirm the operation, - a DecoratorEarlyExitException will be raised; if only one of gmsa_dns_server or gmsa_root_domain_name is - assigned, raise a RequiredArgumentMissingError. When enable_windows_gmsa is not specified, if any of - gmsa_dns_server or gmsa_root_domain_name is assigned, raise a RequiredArgumentMissingError. - - :return: bool - """ - return self._get_enable_windows_gmsa(enable_validation=True) - - def _get_gmsa_dns_server_and_root_domain_name(self, enable_validation: bool = False): - """Internal function to obtain the values of gmsa_dns_server and gmsa_root_domain_name. - - This function supports the option of enable_validation. Please refer to function __validate_gmsa_options for - details of validation. - - :return: a tuple containing two elements: gmsa_dns_server of string type or None and gmsa_root_domain_name of - string type or None - """ - # gmsa_dns_server - # read the original value passed by the command - gmsa_dns_server = self.raw_param.get("gmsa_dns_server") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - gmsa_dns_read_from_mc = False - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.windows_profile and - # backward compatibility - hasattr(self.mc.windows_profile, "gmsa_profile") and - self.mc.windows_profile.gmsa_profile and - self.mc.windows_profile.gmsa_profile.dns_server is not None - ): - gmsa_dns_server = self.mc.windows_profile.gmsa_profile.dns_server - gmsa_dns_read_from_mc = True - - # gmsa_root_domain_name - # read the original value passed by the command - gmsa_root_domain_name = self.raw_param.get("gmsa_root_domain_name") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - gmsa_root_read_from_mc = False - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.windows_profile and - # backward compatibility - hasattr(self.mc.windows_profile, "gmsa_profile") and - self.mc.windows_profile.gmsa_profile and - self.mc.windows_profile.gmsa_profile.root_domain_name is not None - ): - gmsa_root_domain_name = self.mc.windows_profile.gmsa_profile.root_domain_name - gmsa_root_read_from_mc = True - - # consistent check - if gmsa_dns_read_from_mc != gmsa_root_read_from_mc: - raise CLIInternalError( - "Inconsistent state detected, one of gmsa_dns_server and gmsa_root_domain_name " - "is read from the `mc` object." - ) - - # this parameter does not need dynamic completion - # validation - if enable_validation: - self.__validate_gmsa_options( - self._get_enable_windows_gmsa(enable_validation=False), - gmsa_dns_server, - gmsa_root_domain_name, - self.get_yes(), - ) - return gmsa_dns_server, gmsa_root_domain_name - - def get_gmsa_dns_server_and_root_domain_name(self) -> Tuple[Union[str, None], Union[str, None]]: - """Obtain the values of gmsa_dns_server and gmsa_root_domain_name. - - This function will verify the parameter by default. When enable_windows_gmsa is specified, if both - gmsa_dns_server and gmsa_root_domain_name are not assigned and user does not confirm the operation, - a DecoratorEarlyExitException will be raised; if only one of gmsa_dns_server or gmsa_root_domain_name is - assigned, raise a RequiredArgumentMissingError. When enable_windows_gmsa is not specified, if any of - gmsa_dns_server or gmsa_root_domain_name is assigned, raise a RequiredArgumentMissingError. - - :return: a tuple containing two elements: gmsa_dns_server of string type or None and gmsa_root_domain_name of - string type or None - """ - return self._get_gmsa_dns_server_and_root_domain_name(enable_validation=True) - - def get_snapshot_id(self) -> Union[str, None]: - """Obtain the values of snapshot_id. - - :return: string or None - """ - # read the original value passed by the command - snapshot_id = self.raw_param.get("snapshot_id") - # try to read the property value corresponding to the parameter from the `mc` object - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if ( - agent_pool_profile and - agent_pool_profile.creation_data and - agent_pool_profile.creation_data.source_resource_id is not None - ): - snapshot_id = ( - agent_pool_profile.creation_data.source_resource_id - ) - - # this parameter does not need dynamic completion - # this parameter does not need validation - return snapshot_id - - def get_snapshot(self) -> Union[Snapshot, None]: - """Helper function to retrieve the Snapshot object corresponding to a snapshot id. - - This fuction will store an intermediate "snapshot" to avoid sending the same request multiple times. - - Function "_get_snapshot" will be called to retrieve the Snapshot object corresponding to a snapshot id, which - internally used the snapshot client (snapshots operations belonging to container service client) to send - the request. - - :return: Snapshot or None - """ - # try to read from intermediates - snapshot = self.get_intermediate("snapshot") - if snapshot: - return snapshot - - snapshot_id = self.get_snapshot_id() - if snapshot_id: - snapshot = _get_snapshot(self.cmd.cli_ctx, snapshot_id) - self.set_intermediate("snapshot", snapshot, overwrite_exists=True) - return snapshot - - def get_cluster_snapshot_id(self) -> Union[str, None]: - """Obtain the values of cluster_snapshot_id. - - :return: string or None - """ - # read the original value passed by the command - snapshot_id = self.raw_param.get("cluster_snapshot_id") - # try to read the property value corresponding to the parameter from the `mc` object - if ( - self.mc and - self.mc.creation_data and - self.mc.creation_data.source_resource_id is not None - ): - snapshot_id = ( - self.mc.creation_data.source_resource_id - ) - - # this parameter does not need dynamic completion - # this parameter does not need validation - return snapshot_id - - def get_cluster_snapshot(self) -> Union[ManagedClusterSnapshot, None]: - """Helper function to retrieve the ManagedClusterSnapshot object corresponding to a cluster snapshot id. - - This fuction will store an intermediate "managedclustersnapshot" to avoid sending the same request multiple times. - - Function "_get_cluster_snapshot" will be called to retrieve the ManagedClusterSnapshot object corresponding to a cluster snapshot id, which - internally used the managedclustersnapshot client (managedclustersnapshots operations belonging to container service client) to send - the request. - - :return: ManagedClusterSnapshot or None - """ - # try to read from intermediates - snapshot = self.get_intermediate("managedclustersnapshot") - if snapshot: - return snapshot - - snapshot_id = self.get_cluster_snapshot_id() - if snapshot_id: - snapshot = _get_cluster_snapshot(self.cmd.cli_ctx, snapshot_id) - self.set_intermediate("managedclustersnapshot", - snapshot, overwrite_exists=True) - return snapshot - - def get_host_group_id(self) -> Union[str, None]: - return self._get_host_group_id() - - def _get_host_group_id(self) -> Union[str, None]: - raw_value = self.raw_param.get("host_group_id") - value_obtained_from_mc = None - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if agent_pool_profile: - value_obtained_from_mc = agent_pool_profile.host_group_id - if value_obtained_from_mc is not None: - host_group_id = value_obtained_from_mc - else: - host_group_id = raw_value - return host_group_id - - def _get_kubernetes_version(self, read_only: bool = False) -> str: - """Internal function to dynamically obtain the value of kubernetes_version according to the context. - - If snapshot_id is specified, dynamic completion will be triggerd, and will try to get the corresponding value - from the Snapshot. When determining the value of the parameter, obtaining from `mc` takes precedence over user's - explicit input over snapshot over default vaule. - - :return: string - """ - # read the original value passed by the command - raw_value = self.raw_param.get("kubernetes_version") - # try to read the property value corresponding to the parameter from the `mc` object - value_obtained_from_mc = None - if self.mc: - value_obtained_from_mc = self.mc.kubernetes_version - # try to retrieve the value from snapshot - value_obtained_from_snapshot = None - value_obtained_from_cluster_snapshot = None - # skip dynamic completion if read_only is specified - if not read_only: - snapshot = self.get_snapshot() - if snapshot: - value_obtained_from_snapshot = snapshot.kubernetes_version - - if not read_only: - snapshot = self.get_cluster_snapshot() - if snapshot: - value_obtained_from_cluster_snapshot = snapshot.managed_cluster_properties_read_only.kubernetes_version - - # set default value - if value_obtained_from_mc is not None: - kubernetes_version = value_obtained_from_mc - # default value is an empty string - elif raw_value: - kubernetes_version = raw_value - elif not read_only and value_obtained_from_cluster_snapshot is not None: - kubernetes_version = value_obtained_from_cluster_snapshot - elif not read_only and value_obtained_from_snapshot is not None: - kubernetes_version = value_obtained_from_snapshot - else: - kubernetes_version = raw_value - - # this parameter does not need validation - return kubernetes_version - - def get_kubernetes_version(self) -> str: - """Obtain the value of kubernetes_version. - - Note: Inherited and extended in aks-preview to add support for getting values from snapshot. - - :return: string - """ - return self._get_kubernetes_version() - - def _get_os_sku(self, read_only: bool = False) -> Union[str, None]: - """Internal function to dynamically obtain the value of os_sku according to the context. - - If snapshot_id is specified, dynamic completion will be triggerd, and will try to get the corresponding value - from the Snapshot. When determining the value of the parameter, obtaining from `mc` takes precedence over user's - explicit input over snapshot over default vaule. - - :return: string or None - """ - # read the original value passed by the command - raw_value = self.raw_param.get("os_sku") - # try to read the property value corresponding to the parameter from the `mc` object - value_obtained_from_mc = None - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if agent_pool_profile: - value_obtained_from_mc = agent_pool_profile.os_sku - # try to retrieve the value from snapshot - value_obtained_from_snapshot = None - # skip dynamic completion if read_only is specified - if not read_only: - snapshot = self.get_snapshot() - if snapshot: - value_obtained_from_snapshot = snapshot.os_sku - - # set default value - if value_obtained_from_mc is not None: - os_sku = value_obtained_from_mc - elif raw_value is not None: - os_sku = raw_value - elif not read_only and value_obtained_from_snapshot is not None: - os_sku = value_obtained_from_snapshot - else: - os_sku = raw_value - - # this parameter does not need validation - return os_sku - - def get_os_sku(self) -> Union[str, None]: - """Obtain the value of os_sku. - - Note: Inherited and extended in aks-preview to add support for getting values from snapshot. - - :return: string or None - """ - return self._get_os_sku() - - def _get_node_vm_size(self, read_only: bool = False) -> str: - """Internal function to dynamically obtain the value of node_vm_size according to the context. - - If snapshot_id is specified, dynamic completion will be triggerd, and will try to get the corresponding value - from the Snapshot. When determining the value of the parameter, obtaining from `mc` takes precedence over user's - explicit input over snapshot over default vaule. - - :return: string - """ - default_value = "Standard_DS2_v2" - # read the original value passed by the command - raw_value = self.raw_param.get("node_vm_size") - # try to read the property value corresponding to the parameter from the `mc` object - value_obtained_from_mc = None - if self.mc and self.mc.agent_pool_profiles: - agent_pool_profile = safe_list_get( - self.mc.agent_pool_profiles, 0, None - ) - if agent_pool_profile: - value_obtained_from_mc = agent_pool_profile.vm_size - # try to retrieve the value from snapshot - value_obtained_from_snapshot = None - # skip dynamic completion if read_only is specified - if not read_only: - snapshot = self.get_snapshot() - if snapshot: - value_obtained_from_snapshot = snapshot.vm_size - - # set default value - if value_obtained_from_mc is not None: - node_vm_size = value_obtained_from_mc - elif raw_value is not None: - node_vm_size = raw_value - elif value_obtained_from_snapshot is not None: - node_vm_size = value_obtained_from_snapshot - else: - node_vm_size = default_value - - # this parameter does not need validation - return node_vm_size - - def get_node_vm_size(self) -> str: - """Obtain the value of node_vm_size. - - Note: Inherited and extended in aks-preview to add support for getting values from snapshot. - - :return: string - """ - return self._get_node_vm_size() - - def get_disk_driver(self) -> Optional[ManagedClusterStorageProfileDiskCSIDriver]: - """Obtain the value of storage_profile.disk_csi_driver - - :return: Optional[ManagedClusterStorageProfileDiskCSIDriver] - """ - enable_disk_driver = self.raw_param.get("enable_disk_driver") - disable_disk_driver = self.raw_param.get("disable_disk_driver") - disk_driver_version = self.raw_param.get("disk_driver_version") - - if not enable_disk_driver and not disable_disk_driver and not disk_driver_version: - return None - profile = self.models.ManagedClusterStorageProfileDiskCSIDriver() - - if enable_disk_driver and disable_disk_driver: - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-disk-driver and " - "--disable-disk-driver at the same time." - ) - - if disable_disk_driver and disk_driver_version: - raise ArgumentUsageError( - "The parameter --disable-disk-driver cannot be used " - "when --disk-driver-version is specified.") - - if self.decorator_mode == DecoratorMode.UPDATE and disk_driver_version and not enable_disk_driver: - raise ArgumentUsageError( - "Parameter --enable-disk-driver is required " - "when --disk-driver-version is specified during update.") - - if self.decorator_mode == DecoratorMode.CREATE: - if disable_disk_driver: - profile.enabled = False - else: - profile.enabled = True - if not disk_driver_version: - disk_driver_version = CONST_DISK_DRIVER_V1 - profile.version = disk_driver_version - - if self.decorator_mode == DecoratorMode.UPDATE: - if enable_disk_driver: - profile.enabled = True - if disk_driver_version: - profile.version = disk_driver_version - elif disable_disk_driver: - msg = "Please make sure there are no existing PVs and PVCs that are used by AzureDisk CSI driver before disabling." - if not self.get_yes() and not prompt_y_n(msg, default="n"): - raise DecoratorEarlyExitException() - profile.enabled = False - - return profile - - def get_file_driver(self) -> Optional[ManagedClusterStorageProfileFileCSIDriver]: - """Obtain the value of storage_profile.file_csi_driver - - :return: Optional[ManagedClusterStorageProfileFileCSIDriver] - """ - enable_file_driver = self.raw_param.get("enable_file_driver") - disable_file_driver = self.raw_param.get("disable_file_driver") - - if not enable_file_driver and not disable_file_driver: - return None - profile = self.models.ManagedClusterStorageProfileFileCSIDriver() - - if enable_file_driver and disable_file_driver: - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-file-driver and " - "--disable-file-driver at the same time." - ) - - if self.decorator_mode == DecoratorMode.CREATE: - if disable_file_driver: - profile.enabled = False - else: - profile.enabled = True - - if self.decorator_mode == DecoratorMode.UPDATE: - if enable_file_driver: - profile.enabled = True - elif disable_file_driver: - msg = "Please make sure there are no existing PVs and PVCs that are used by AzureFile CSI driver before disabling." - if not self.get_yes() and not prompt_y_n(msg, default="n"): - raise DecoratorEarlyExitException() - profile.enabled = False - - return profile - - def get_snapshot_controller(self) -> Optional[ManagedClusterStorageProfileSnapshotController]: - """Obtain the value of storage_profile.snapshot_controller - - :return: Optional[ManagedClusterStorageProfileSnapshotController] - """ - enable_snapshot_controller = self.raw_param.get("enable_snapshot_controller") - disable_snapshot_controller = self.raw_param.get("disable_snapshot_controller") - - if not enable_snapshot_controller and not disable_snapshot_controller: - return None - - profile = self.models.ManagedClusterStorageProfileSnapshotController() - - if enable_snapshot_controller and disable_snapshot_controller: - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-snapshot_controller and " - "--disable-snapshot_controller at the same time." - ) - - if self.decorator_mode == DecoratorMode.CREATE: - if disable_snapshot_controller: - profile.enabled = False - else: - profile.enabled = True - - if self.decorator_mode == DecoratorMode.UPDATE: - if enable_snapshot_controller: - profile.enabled = True - elif disable_snapshot_controller: - msg = "Please make sure there are no existing VolumeSnapshots, VolumeSnapshotClasses and VolumeSnapshotContents " \ - "that are used by the snapshot controller before disabling." - if not self.get_yes() and not prompt_y_n(msg, default="n"): - raise DecoratorEarlyExitException() - profile.enabled = False - - return profile - - def get_storage_profile(self) -> Optional[ManagedClusterStorageProfile]: - """Obtain the value of storage_profile. - - :return: Optional[ManagedClusterStorageProfile] - """ - profile = self.models.ManagedClusterStorageProfile() - if self.mc.storage_profile is not None: - profile = self.mc.storage_profile - profile.disk_csi_driver = self.get_disk_driver() - profile.file_csi_driver = self.get_file_driver() - profile.snapshot_controller = self.get_snapshot_controller() - - return profile - - def get_oidc_issuer_profile(self) -> ManagedClusterOIDCIssuerProfile: - """Obtain the value of oidc_issuer_profile based on the user input. - - :return: ManagedClusterOIDCIssuerProfile - """ - enable_flag_value = bool(self.raw_param.get("enable_oidc_issuer")) - if not enable_flag_value: - # enable flag not set, return a None profile, server side will backfill the default/existing value - return None - - profile = self.models.ManagedClusterOIDCIssuerProfile() - if self.decorator_mode == DecoratorMode.UPDATE: - if self.mc.oidc_issuer_profile is not None: - profile = self.mc.oidc_issuer_profile - profile.enabled = True - - return profile - - def get_workload_identity_profile(self) -> Optional[ManagedClusterSecurityProfileWorkloadIdentity]: - """Obtrain the value of security_profile.workload_identity. - - :return: Optional[ManagedClusterSecurityProfileWorkloadIdentity] - """ - # NOTE: enable_workload_identity can be one of: - # - # - True: sets by user, to enable the workload identity feature - # - False: sets by user, to disable the workload identity feature - # - None: user unspecified, don't set the profile and let server side to backfill - enable_workload_identity = self.raw_param.get("enable_workload_identity") - - if enable_workload_identity is None: - return None - - profile = self.models.ManagedClusterSecurityProfileWorkloadIdentity() - if self.decorator_mode == DecoratorMode.UPDATE: - if self.mc.security_profile is not None and self.mc.security_profile.workload_identity is not None: - # reuse previous profile is has been set - profile = self.mc.security_profile.workload_identity - - profile.enabled = bool(enable_workload_identity) - - if profile.enabled: - # in enable case, we need to check if OIDC issuer has been enabled - oidc_issuer_profile = self.get_oidc_issuer_profile() - if self.decorator_mode == DecoratorMode.UPDATE and oidc_issuer_profile is None: - # if the cluster has enabled OIDC issuer before, in update call: - # - # az aks update --enable-workload-identity - # - # we need to use previous OIDC issuer profile - oidc_issuer_profile = self.mc.oidc_issuer_profile - oidc_issuer_enabled = oidc_issuer_profile is not None and oidc_issuer_profile.enabled - if not oidc_issuer_enabled: - raise RequiredArgumentMissingError( - "Enabling workload identity requires enabling OIDC issuer (--enable-oidc-issuer)." - ) - - return profile - - def get_crg_id(self) -> str: - """Obtain the values of crg_id. - - :return: string or None - """ - # read the original value passed by the command - crg_id = self.raw_param.get("crg_id") - return crg_id - - def _get_enable_azure_keyvault_kms(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of enable_azure_keyvault_kms. - - This function supports the option of enable_validation. When enabled, if azure_keyvault_kms_key_id is empty, - raise a RequiredArgumentMissingError. - - :return: bool - """ - # read the original value passed by the command - # TODO: set default value as False after the get function of AKSParamDict accepts parameter `default` - enable_azure_keyvault_kms = self.raw_param.get( - "enable_azure_keyvault_kms") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.security_profile and - self.mc.security_profile.azure_key_vault_kms - ): - enable_azure_keyvault_kms = self.mc.security_profile.azure_key_vault_kms.enabled - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if bool(enable_azure_keyvault_kms) != bool(self._get_azure_keyvault_kms_key_id(enable_validation=False)): - raise RequiredArgumentMissingError( - 'You must set "--enable-azure-keyvault-kms" and "--azure-keyvault-kms-key-id" at the same time.' - ) - - return enable_azure_keyvault_kms - - def get_enable_azure_keyvault_kms(self) -> bool: - """Obtain the value of enable_azure_keyvault_kms. - - This function will verify the parameter by default. When enabled, if azure_keyvault_kms_key_id is empty, - raise a RequiredArgumentMissingError. - - :return: bool - """ - return self._get_enable_azure_keyvault_kms(enable_validation=True) - - def _get_azure_keyvault_kms_key_id(self, enable_validation: bool = False) -> Union[str, None]: - """Internal function to obtain the value of azure_keyvault_kms_key_id according to the context. - - This function supports the option of enable_validation. When enabled, it will check if azure_keyvault_kms_key_id is - assigned but enable_azure_keyvault_kms is not specified, if so, raise a RequiredArgumentMissingError. - - :return: string or None - """ - # read the original value passed by the command - azure_keyvault_kms_key_id = self.raw_param.get( - "azure_keyvault_kms_key_id") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.security_profile and - self.mc.security_profile.azure_key_vault_kms and - self.mc.security_profile.azure_key_vault_kms.key_id is not None - ): - azure_keyvault_kms_key_id = self.mc.security_profile.azure_key_vault_kms.key_id - - if enable_validation: - enable_azure_keyvault_kms = self._get_enable_azure_keyvault_kms( - enable_validation=False) - if ( - azure_keyvault_kms_key_id and - ( - enable_azure_keyvault_kms is None or - enable_azure_keyvault_kms is False - ) - ): - raise RequiredArgumentMissingError( - '"--azure-keyvault-kms-key-id" requires "--enable-azure-keyvault-kms".') - - return azure_keyvault_kms_key_id - - def get_azure_keyvault_kms_key_id(self) -> Union[str, None]: - """Obtain the value of azure_keyvault_kms_key_id. - - This function will verify the parameter by default. When enabled, if enable_azure_keyvault_kms is False, - raise a RequiredArgumentMissingError. - - :return: bool - """ - return self._get_azure_keyvault_kms_key_id(enable_validation=True) - - def get_updated_assign_kubelet_identity(self) -> str: - """Obtain the value of assign_kubelet_identity based on the user input. - - :return: str - """ - kubelet_identity_resource_id = self.raw_param.get("assign_kubelet_identity") - if not kubelet_identity_resource_id: - return "" - - msg = "You're going to update kubelet identity to {}, which will upgrade every node pool in the cluster " \ - "and might take a while, do you wish to continue?".format(kubelet_identity_resource_id) - if not self.get_yes() and not prompt_y_n(msg, default="n"): - raise DecoratorEarlyExitException - - return kubelet_identity_resource_id - - def get_cluster_uaidentity_object_id(self) -> str: - assigned_identity = self.get_assign_identity() - cluster_identity_resource_id = "" - if assigned_identity is None or assigned_identity == "": - # Suppose identity is present on mc - if not (self.mc and self.mc.identity and self.mc.identity.user_assigned_identities): - raise RequiredArgumentMissingError( - "--assign-identity is not provided and the cluster identity type is not user assigned, cannot update kubelet identity") - cluster_identity_resource_id = list(self.mc.identity.user_assigned_identities.keys())[0] - else: - cluster_identity_resource_id = assigned_identity - return self.get_identity_by_msi_client(cluster_identity_resource_id).principal_id - - def _get_enable_apiserver_vnet_integration(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of enable_apiserver_vnet_integration. - - This function supports the option of enable_validation. When enable_apiserver_vnet_integration is specified, - For CREATE: if enable-private-cluster is not used, raise an RequiredArgumentMissingError; - For UPDATE: if apiserver-subnet-id is not used, raise an RequiredArgumentMissingError; - - :return: bool - """ - # read the original value passed by the command - enable_apiserver_vnet_integration = self.raw_param.get("enable_apiserver_vnet_integration") - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.api_server_access_profile and - self.mc.api_server_access_profile.enable_vnet_integration is not None - ): - enable_apiserver_vnet_integration = self.mc.api_server_access_profile.enable_vnet_integration - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if self.decorator_mode == DecoratorMode.CREATE: - if enable_apiserver_vnet_integration: - # remove this validation after we support public cluster - if not self._get_enable_private_cluster(enable_validation=False): - raise RequiredArgumentMissingError( - "--apiserver-vnet-integration is only supported for private cluster right now. " - "Please use it together with --enable-private-cluster" - ) - if self.decorator_mode == DecoratorMode.UPDATE: - if enable_apiserver_vnet_integration: - if self._get_apiserver_subnet_id(enable_validation=False) is None: - raise RequiredArgumentMissingError( - "--apiserver-subnet-id is required for update with --apiserver-vnet-integration." - ) - - return enable_apiserver_vnet_integration - - def get_enable_apiserver_vnet_integration(self) -> bool: - """Obtain the value of enable_apiserver_vnet_integration. - - This function will verify the parameter by default. When enable_apiserver_vnet_integration is specified, - For CREATE: if enable-private-cluster is not used, raise an RequiredArgumentMissingError; - For UPDATE: if apiserver-subnet-id is not used, raise an RequiredArgumentMissingError - - :return: bool - """ - return self._get_enable_apiserver_vnet_integration(enable_validation=True) - - def _get_apiserver_subnet_id(self, enable_validation: bool = False) -> Union[str, None]: - """Internal function to obtain the value of apiserver_subnet_id. - - This function supports the option of enable_validation. When apiserver_subnet_id is specified, - if enable_apiserver_vnet_integration is not used, raise an RequiredArgumentMissingError; - For CREATE: if vnet_subnet_id is not used, raise an RequiredArgumentMissingError; - - :return: bool - """ - # read the original value passed by the command - apiserver_subnet_id = self.raw_param.get("apiserver_subnet_id") - # try to read the property value corresponding to the parameter from the `mc` object - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.api_server_access_profile and - self.mc.api_server_access_profile.subnet_id is not None - ): - apiserver_subnet_id = self.mc.api_server_access_profile.subnet_id - - # this parameter does not need dynamic completion - # validation - if enable_validation: - if self.decorator_mode == DecoratorMode.CREATE: - vnet_subnet_id = self.get_vnet_subnet_id() - if apiserver_subnet_id and vnet_subnet_id is None: - raise RequiredArgumentMissingError( - '"--apiserver-subnet-id" requires "--vnet-subnet-id".') - - enable_apiserver_vnet_integration = self._get_enable_apiserver_vnet_integration( - enable_validation=False) - if ( - apiserver_subnet_id and - ( - enable_apiserver_vnet_integration is None or - enable_apiserver_vnet_integration is False - ) - ): - raise RequiredArgumentMissingError( - '"--apiserver-subnet-id" requires "--enable-apiserver-vnet-integration".') - - return apiserver_subnet_id - - def get_apiserver_subnet_id(self) -> Union[str, None]: - """Obtain the value of apiserver_subnet_id. - - This function will verify the parameter by default. When apiserver_subnet_id is specified, - if enable_apiserver_vnet_integration is not specified, raise an RequiredArgumentMissingError; - - :return: bool - """ - return self._get_apiserver_subnet_id(enable_validation=True) - - def _get_enable_keda(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of enable_keda. - - This function supports the option of enable_validation. When enabled, if both enable_keda and disable_keda are - specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - # Read the original value passed by the command. - enable_keda = self.raw_param.get("enable_keda") - - # In create mode, try to read the property value corresponding to the parameter from the `mc` object. - if self.decorator_mode == DecoratorMode.CREATE: - if ( - self.mc and - self.mc.workload_auto_scaler_profile and - self.mc.workload_auto_scaler_profile.keda - ): - enable_keda = self.mc.workload_auto_scaler_profile.keda.enabled - - # This parameter does not need dynamic completion. - if enable_validation: - if enable_keda and self._get_disable_keda(enable_validation=False): - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-keda and --disable-keda at the same time." - ) - - return enable_keda - - def get_enable_keda(self) -> bool: - """Obtain the value of enable_keda. - - This function will verify the parameter by default. If both enable_keda and disable_keda are specified, raise a - MutuallyExclusiveArgumentError. - - :return: bool - """ - return self._get_enable_keda(enable_validation=True) - - def _get_disable_keda(self, enable_validation: bool = False) -> bool: - """Internal function to obtain the value of disable_keda. - - This function supports the option of enable_validation. When enabled, if both enable_keda and disable_keda are - specified, raise a MutuallyExclusiveArgumentError. - - :return: bool - """ - # Read the original value passed by the command. - disable_keda = self.raw_param.get("disable_keda") - - # This option is not supported in create mode, hence we do not read the property value from the `mc` object. - # This parameter does not need dynamic completion. - if enable_validation: - if disable_keda and self._get_enable_keda(enable_validation=False): - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-keda and --disable-keda at the same time." - ) - - return disable_keda - - def get_disable_keda(self) -> bool: - """Obtain the value of disable_keda. - - This function will verify the parameter by default. If both enable_keda and disable_keda are specified, raise a - MutuallyExclusiveArgumentError. - - :return: bool - """ - return self._get_disable_keda(enable_validation=True) - - -class AKSPreviewCreateDecorator(AKSCreateDecorator): - # pylint: disable=super-init-not-called - def __init__( - self, - cmd: AzCliCommand, - client: ContainerServiceClient, - raw_parameters: Dict, - resource_type: ResourceType, - ): - """Internal controller of aks_create in aks-preview. - - Break down the all-in-one aks_create function into several relatively independent functions (some of them have - a certain order dependency) that only focus on a specific profile or process a specific piece of logic. - In addition, an overall control function is provided. By calling the aforementioned independent functions one - by one, a complete ManagedCluster object is gradually decorated and finally requests are sent to create a - cluster. - """ - self.cmd = cmd - self.client = client - self.models = AKSPreviewModels(cmd, resource_type) - # store the context in the process of assemble the ManagedCluster object - self.context = AKSPreviewContext( - cmd, - raw_parameters, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - - def set_up_agent_pool_profiles(self, mc: ManagedCluster) -> ManagedCluster: - """Set up agent pool profiles for the ManagedCluster object. - - Note: Inherited and extended in aks-preview to set some additional properties. - - :return: the ManagedCluster object - """ - mc = super().set_up_agent_pool_profiles(mc) - agent_pool_profile = safe_list_get(mc.agent_pool_profiles, 0, None) - - # set up extra parameters supported in aks-preview - agent_pool_profile.pod_subnet_id = self.context.get_pod_subnet_id() - agent_pool_profile.enable_fips = self.context.get_enable_fips_image() - agent_pool_profile.workload_runtime = ( - self.context.get_workload_runtime() - ) - agent_pool_profile.gpu_instance_profile = ( - self.context.get_gpu_instance_profile() - ) - agent_pool_profile.message_of_the_day = ( - self.context.get_message_of_the_day() - ) - agent_pool_profile.enable_custom_ca_trust = ( - self.context.get_enable_custom_ca_trust() - ) - agent_pool_profile.kubelet_config = self.context.get_kubelet_config() - agent_pool_profile.linux_os_config = self.context.get_linux_os_config() - - # snapshot creation data - creation_data = None - snapshot_id = self.context.get_snapshot_id() - if snapshot_id: - creation_data = self.models.CreationData( - source_resource_id=snapshot_id - ) - agent_pool_profile.creation_data = creation_data - agent_pool_profile.host_group_id = self.context.get_host_group_id() - agent_pool_profile.capacity_reservation_group_id = self.context.get_crg_id() - - mc.agent_pool_profiles = [agent_pool_profile] - return mc - - def set_up_creationdata_of_cluster_snapshot(self, mc: ManagedCluster) -> ManagedCluster: - """Set up creationData of cluster snapshot for the ManagedCluster object. - - Note: Inherited and extended in aks-preview to set some additional properties. - - :return: the ManagedCluster object - """ - # snapshot creation data - creation_data = None - snapshot_id = self.context.get_cluster_snapshot_id() - if snapshot_id: - creation_data = self.models.CreationData( - source_resource_id=snapshot_id - ) - mc.creation_data = creation_data - return mc - - def set_up_http_proxy_config(self, mc: ManagedCluster) -> ManagedCluster: - """Set up http proxy config for the ManagedCluster object. - - :return: the ManagedCluster object - """ - if not isinstance(mc, self.models.ManagedCluster): - raise CLIInternalError( - "Unexpected mc object with type '{}'.".format(type(mc)) - ) - - mc.http_proxy_config = self.context.get_http_proxy_config() - return mc - - def set_up_node_resource_group(self, mc: ManagedCluster) -> ManagedCluster: - """Set up node resource group for the ManagedCluster object. - - :return: the ManagedCluster object - """ - if not isinstance(mc, self.models.ManagedCluster): - raise CLIInternalError( - "Unexpected mc object with type '{}'.".format(type(mc)) - ) - - mc.node_resource_group = self.context.get_node_resource_group() - return mc - - def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up network profile for the ManagedCluster object. - - Note: Inherited and extended in aks-preview to set the nat_gateway_profile. - - :return: the ManagedCluster object - """ - mc = super().set_up_network_profile(mc) - network_profile = mc.network_profile - - ( - pod_cidr, - service_cidr, - dns_service_ip, - _, - _, - ) = self.context.get_pod_cidr_and_service_cidr_and_dns_service_ip_and_docker_bridge_address_and_network_policy() - - ( - pod_cidrs, - service_cidrs, - ip_families - ) = self.context.get_pod_cidrs_and_service_cidrs_and_ip_families() - - # set dns_service_ip, pod_cidr(s), service(s) with user provided values if - # of them are set. Largely follows the base function which will potentially - # overwrite default SDK values. - if any([ - dns_service_ip, - pod_cidr, - pod_cidrs, - service_cidr, - service_cidrs, - ]): - network_profile.dns_service_ip = dns_service_ip - network_profile.pod_cidr = pod_cidr - network_profile.pod_cidrs = pod_cidrs - network_profile.service_cidr = service_cidr - network_profile.service_cidrs = service_cidrs - - if ip_families: - network_profile.ip_families = ip_families - - if self.context.get_load_balancer_managed_outbound_ipv6_count() is not None: - network_profile.load_balancer_profile = create_load_balancer_profile( - self.context.get_load_balancer_managed_outbound_ip_count(), - self.context.get_load_balancer_managed_outbound_ipv6_count(), - self.context.get_load_balancer_outbound_ips(), - self.context.get_load_balancer_outbound_ip_prefixes(), - self.context.get_load_balancer_outbound_ports(), - self.context.get_load_balancer_idle_timeout(), - models=self.models.lb_models, - ) - - # build nat gateway profile, which is part of the network profile - nat_gateway_profile = create_nat_gateway_profile( - self.context.get_nat_gateway_managed_outbound_ip_count(), - self.context.get_nat_gateway_idle_timeout(), - models=self.models.nat_gateway_models, - ) - - load_balancer_sku = self.context.get_load_balancer_sku() - if load_balancer_sku != "basic": - network_profile.nat_gateway_profile = nat_gateway_profile - mc.network_profile = network_profile - return mc - - def set_up_pod_security_policy(self, mc: ManagedCluster) -> ManagedCluster: - """Set up pod security policy for the ManagedCluster object. - - :return: the ManagedCluster object - """ - if not isinstance(mc, self.models.ManagedCluster): - raise CLIInternalError( - "Unexpected mc object with type '{}'.".format(type(mc)) - ) - - mc.enable_pod_security_policy = self.context.get_enable_pod_security_policy() - return mc - - def set_up_pod_identity_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up pod identity profile for the ManagedCluster object. - - This profile depends on network profile. - - :return: the ManagedCluster object - """ - if not isinstance(mc, self.models.ManagedCluster): - raise CLIInternalError( - "Unexpected mc object with type '{}'.".format(type(mc)) - ) - - pod_identity_profile = None - enable_pod_identity = self.context.get_enable_pod_identity() - enable_pod_identity_with_kubenet = self.context.get_enable_pod_identity_with_kubenet() - if enable_pod_identity: - pod_identity_profile = self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - enabled=True, - allow_network_plugin_kubenet=enable_pod_identity_with_kubenet, - ) - mc.pod_identity_profile = pod_identity_profile - return mc - - def build_monitoring_addon_profile(self) -> ManagedClusterAddonProfile: - """Build monitoring addon profile. - - Note: Overwritten in aks-preview. - - :return: a ManagedClusterAddonProfile object - """ - # determine the value of constants - addon_consts = self.context.get_addon_consts() - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID = addon_consts.get( - "CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID" - ) - CONST_MONITORING_USING_AAD_MSI_AUTH = addon_consts.get( - "CONST_MONITORING_USING_AAD_MSI_AUTH" - ) - - monitoring_addon_profile = self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID: self.context.get_workspace_resource_id(), - CONST_MONITORING_USING_AAD_MSI_AUTH: self.context.get_enable_msi_auth_for_monitoring(), - }, - ) - # post-process, create a deployment - ensure_container_insights_for_monitoring( - self.cmd, - monitoring_addon_profile, - self.context.get_subscription_id(), - self.context.get_resource_group_name(), - self.context.get_name(), - self.context.get_location(), - remove_monitoring=False, - aad_route=self.context.get_enable_msi_auth_for_monitoring(), - create_dcr=True, - create_dcra=False, - ) - # set intermediate - self.context.set_intermediate( - "monitoring", True, overwrite_exists=True) - return monitoring_addon_profile - - def build_ingress_appgw_addon_profile(self) -> ManagedClusterAddonProfile: - """Build ingress appgw addon profile. - - Note: Inherited and extended in aks-preview to support option appgw_subnet_prefix. - - :return: a ManagedClusterAddonProfile object - """ - # determine the value of constants - addon_consts = self.context.get_addon_consts() - CONST_INGRESS_APPGW_SUBNET_CIDR = addon_consts.get( - "CONST_INGRESS_APPGW_SUBNET_CIDR" - ) - - ingress_appgw_addon_profile = super().build_ingress_appgw_addon_profile() - appgw_subnet_prefix = self.context.get_appgw_subnet_prefix() - if ( - appgw_subnet_prefix is not None and - ingress_appgw_addon_profile.config.get( - CONST_INGRESS_APPGW_SUBNET_CIDR - ) - is None - ): - ingress_appgw_addon_profile.config[CONST_INGRESS_APPGW_SUBNET_CIDR] = appgw_subnet_prefix - return ingress_appgw_addon_profile - - def build_gitops_addon_profile(self) -> ManagedClusterAddonProfile: - """Build gitops addon profile. - - :return: a ManagedClusterAddonProfile object - """ - gitops_addon_profile = self.models.ManagedClusterAddonProfile( - enabled=True, - ) - return gitops_addon_profile - - def build_web_app_routing_profile(self) -> ManagedClusterIngressProfileWebAppRouting: - """Build the ingress_profile.web_app_routing profile - - :return: a ManagedClusterIngressProfileWebAppRouting object - """ - profile = self.models.ManagedClusterIngressProfileWebAppRouting( - enabled=True, - ) - dns_zone_resource_id = self.context.raw_param.get("dns_zone_resource_id") - if dns_zone_resource_id is not None: - profile.dns_zone_resource_id = dns_zone_resource_id - return profile - - def set_up_addon_profiles(self, mc: ManagedCluster) -> ManagedCluster: - """Set up addon profiles for the ManagedCluster object. - - Note: Inherited and extended in aks-preview to set some extra addons. - - :return: the ManagedCluster object - """ - addon_consts = self.context.get_addon_consts() - CONST_GITOPS_ADDON_NAME = addon_consts.get("CONST_GITOPS_ADDON_NAME") - - mc = super().set_up_addon_profiles(mc) - addon_profiles = mc.addon_profiles - addons = self.context.get_enable_addons() - if "gitops" in addons: - addon_profiles[ - CONST_GITOPS_ADDON_NAME - ] = self.build_gitops_addon_profile() - mc.addon_profiles = addon_profiles - - if "web_application_routing" in addons: - if mc.ingress_profile is None: - mc.ingress_profile = self.models.ManagedClusterIngressProfile() - mc.ingress_profile.web_app_routing = self.build_web_app_routing_profile() - - return mc - - def set_up_windows_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up windows profile for the ManagedCluster object. - - Note: Inherited and extended in aks-preview to set gmsa related options. - - :return: the ManagedCluster object - """ - mc = super().set_up_windows_profile(mc) - windows_profile = mc.windows_profile - - if windows_profile and self.context.get_enable_windows_gmsa(): - gmsa_dns_server, gmsa_root_domain_name = self.context.get_gmsa_dns_server_and_root_domain_name() - windows_profile.gmsa_profile = self.models.WindowsGmsaProfile( - enabled=True, - dns_server=gmsa_dns_server, - root_domain_name=gmsa_root_domain_name, - ) - mc.windows_profile = windows_profile - return mc - - def set_up_storage_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up storage profile for the ManagedCluster object. - :return: the ManagedCluster object - """ - mc.storage_profile = self.context.get_storage_profile() - - return mc - - def set_up_oidc_issuer_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up OIDC issuer profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - mc.oidc_issuer_profile = self.context.get_oidc_issuer_profile() - - return mc - - def set_up_workload_identity_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up workload identity for the ManagedCluster object. - - :return: the ManagedCluster object - """ - profile = self.context.get_workload_identity_profile() - if profile is None: - if mc.security_profile is not None: - # set the value to None to let server side to fill in the default value - mc.security_profile.workload_identity = None - return mc - - if mc.security_profile is None: - mc.security_profile = self.models.ManagedClusterSecurityProfile() - mc.security_profile.workload_identity = profile - - return mc - - def set_up_azure_keyvault_kms(self, mc: ManagedCluster) -> ManagedCluster: - """Set up security profile azureKeyVaultKms for the ManagedCluster object. - - :return: the ManagedCluster object - """ - if self.context.get_enable_azure_keyvault_kms(): - key_id = self.context.get_azure_keyvault_kms_key_id() - if key_id: - if mc.security_profile is None: - mc.security_profile = self.models.ManagedClusterSecurityProfile() - mc.security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id, - ) - - return mc - - def set_up_api_server_access_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up apiserverAccessProfile enableVnetIntegration and subnetId for the ManagedCluster object. - - :return: the ManagedCluster object - """ - mc = super().set_up_api_server_access_profile(mc) - if self.context.get_enable_apiserver_vnet_integration(): - mc.api_server_access_profile.enable_vnet_integration = True - if self.context.get_apiserver_subnet_id(): - mc.api_server_access_profile.subnet_id = self.context.get_apiserver_subnet_id() - - return mc - - def set_up_workload_auto_scaler_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Set up workload auto-scaler profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - if not isinstance(mc, self.models.ManagedCluster): - raise CLIInternalError(f"Unexpected mc object with type '{type(mc)}'.") - - if self.context.get_enable_keda(): - if mc.workload_auto_scaler_profile is None: - mc.workload_auto_scaler_profile = self.models.ManagedClusterWorkloadAutoScalerProfile() - mc.workload_auto_scaler_profile.keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True) - - return mc - - def construct_mc_preview_profile(self) -> ManagedCluster: - """The overall controller used to construct the preview ManagedCluster profile. - - The completely constructed ManagedCluster object will later be passed as a parameter to the underlying SDK - (mgmt-containerservice) to send the actual request. - - :return: the ManagedCluster object - """ - # construct the default ManagedCluster profile - mc = self.construct_default_mc_profile() - # set up http proxy config - mc = self.set_up_http_proxy_config(mc) - # set up node resource group - mc = self.set_up_node_resource_group(mc) - # set up pod security policy - mc = self.set_up_pod_security_policy(mc) - # set up pod identity profile - mc = self.set_up_pod_identity_profile(mc) - - # update workload identity & OIDC issuer settings - # NOTE: in current implementation, workload identity settings setup requires checking - # previous OIDC issuer profile. However, the OIDC issuer settings setup will - # overrides the previous OIDC issuer profile based on user input. Therefore, we have - # to make sure the workload identity settings setup is done after OIDC issuer settings. - mc = self.set_up_workload_identity_profile(mc) - mc = self.set_up_oidc_issuer_profile(mc) - - mc = self.set_up_azure_keyvault_kms(mc) - mc = self.set_up_creationdata_of_cluster_snapshot(mc) - - mc = self.set_up_storage_profile(mc) - - mc = self.set_up_workload_auto_scaler_profile(mc) - - return mc - - def create_mc_preview(self, mc: ManagedCluster) -> ManagedCluster: - """Send request to create a real managed cluster. - - Note: Inherited and extended in aks-preview to create dcr association for monitoring addon if - enable_msi_auth_for_monitoring is specified after cluster is created. - - :return: the ManagedCluster object - """ - created_cluster = super().create_mc(mc) - - # determine the value of constants - addon_consts = self.context.get_addon_consts() - CONST_MONITORING_ADDON_NAME = addon_consts.get( - "CONST_MONITORING_ADDON_NAME") - - # Due to SPN replication latency, we do a few retries here - max_retry = 30 - error_msg = "" - for _ in range(0, max_retry): - try: - if self.context.get_intermediate("monitoring") and self.context.get_enable_msi_auth_for_monitoring(): - # Create the DCR Association here - ensure_container_insights_for_monitoring( - self.cmd, - mc.addon_profiles[CONST_MONITORING_ADDON_NAME], - self.context.get_subscription_id(), - self.context.get_resource_group_name(), - self.context.get_name(), - self.context.get_location(), - remove_monitoring=False, - aad_route=self.context.get_enable_msi_auth_for_monitoring(), - create_dcr=False, - create_dcra=True, - ) - return created_cluster - # CloudError was raised before, but since the adoption of track 2 SDK, - # HttpResponseError would be raised instead - except (CloudError, HttpResponseError) as ex: - error_msg = str(ex) - if 'not found in Active Directory tenant' in ex.message: - time.sleep(3) - else: - raise ex - raise AzCLIError("Maximum number of retries exceeded. " + error_msg) - - -class AKSPreviewUpdateDecorator(AKSUpdateDecorator): - # pylint: disable=super-init-not-called - def __init__( - self, - cmd: AzCliCommand, - client: ContainerServiceClient, - raw_parameters: Dict, - resource_type: ResourceType, - ): - """Internal controller of aks_update in aks-preview. - - Break down the all-in-one aks_update function into several relatively independent functions (some of them have - a certain order dependency) that only focus on a specific profile or process a specific piece of logic. - In addition, an overall control function is provided. By calling the aforementioned independent functions one - by one, a complete ManagedCluster object is gradually updated and finally requests are sent to update an - existing cluster. - """ - self.cmd = cmd - self.client = client - self.models = AKSPreviewModels(cmd, resource_type) - # store the context in the process of assemble the ManagedCluster object - self.context = AKSPreviewContext( - cmd, - raw_parameters, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - - def check_raw_parameters(self): - """Helper function to check whether any parameters are set. - - Note: Overwritten in aks-preview to use different hard-coded error message. - - If the values of all the parameters are the default values, the command execution will be terminated early and - raise a RequiredArgumentMissingError. Neither the request to fetch or update the ManagedCluster object will be - sent. - - :return: None - """ - # exclude some irrelevant or mandatory parameters - excluded_keys = ("cmd", "client", "resource_group_name", "name") - # check whether the remaining parameters are set - # the default value None or False (and other empty values, like empty string) will be considered as not set - is_changed = any( - v for k, v in self.context.raw_param.items() if k not in excluded_keys) - - # special cases - # some parameters support the use of empty string or dictionary to update/remove previously set values - is_default = ( - self.context.get_cluster_autoscaler_profile() is None and - self.context.get_api_server_authorized_ip_ranges() is None and - self.context.get_nodepool_labels() is None - ) - - if not is_changed and is_default: - reconcilePrompt = 'no argument specified to update would you like to reconcile to current settings?' - if not prompt_y_n(reconcilePrompt, default="n"): - # Note: Uncomment the followings to automatically generate the error message. - # option_names = [ - # '"{}"'.format(format_parameter_name_to_option_name(x)) - # for x in self.context.raw_param.keys() - # if x not in excluded_keys - # ] - # error_msg = "Please specify one or more of {}.".format( - # " or ".join(option_names) - # ) - # raise RequiredArgumentMissingError(error_msg) - raise RequiredArgumentMissingError( - 'Please specify "--enable-cluster-autoscaler" or ' - '"--disable-cluster-autoscaler" or ' - '"--update-cluster-autoscaler" or ' - '"--cluster-autoscaler-profile" or ' - '"--enable-pod-security-policy" or ' - '"--disable-pod-security-policy" or ' - '"--api-server-authorized-ip-ranges" or ' - '"--attach-acr" or ' - '"--detach-acr" or ' - '"--uptime-sla" or ' - '"--no-uptime-sla" or ' - '"--load-balancer-managed-outbound-ip-count" or ' - '"--load-balancer-outbound-ips" or ' - '"--load-balancer-outbound-ip-prefixes" or ' - '"--nat-gateway-managed-outbound-ip-count" or ' - '"--nat-gateway-idle-timeout" or ' - '"--enable-aad" or ' - '"--aad-tenant-id" or ' - '"--aad-admin-group-object-ids" or ' - '"--enable-ahub" or ' - '"--disable-ahub" or ' - '"--enable-managed-identity" or ' - '"--enable-pod-identity" or ' - '"--disable-pod-identity" or ' - '"--auto-upgrade-channel" or ' - '"--enable-secret-rotation" or ' - '"--disable-secret-rotation" or ' - '"--rotation-poll-interval" or ' - '"--tags" or ' - '"--windows-admin-password" or ' - '"--enable-azure-rbac" or ' - '"--disable-azure-rbac" or ' - '"--enable-local-accounts" or ' - '"--disable-local-accounts" or ' - '"--enable-public-fqdn" or ' - '"--disable-public-fqdn"' - '"--enable-windows-gmsa" or ' - '"--nodepool-labels" or ' - '"--enable-oidc-issuer" or ' - '"--http-proxy-config" or ' - '"--enable-disk-driver" or ' - '"--disk-driver-version" or ' - '"--disable-disk-driver" or ' - '"--enable-file-driver" or ' - '"--disable-file-driver" or ' - '"--enable-snapshot-controller" or ' - '"--disable-snapshot-controller" or ' - '"--enable-azure-keyvault-kms" or ' - '"--enable-workload-identity" or ' - '"--disable-workload-identity" or ' - '"--enable-keda" or ' - '"--disable-keda".' - ) - - def update_load_balancer_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update load balancer profile for the ManagedCluster object. - - Note: Overwritten in aks-preview to set dual stack related properties. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - if not mc.network_profile: - raise UnknownError( - "Unexpectedly get an empty network profile in the process of updating load balancer profile." - ) - - # In the internal function "_update_load_balancer_profile", it will check whether the provided parameters - # have been assigned, and if there are any, the corresponding profile will be modified; otherwise, it will - # remain unchanged. - mc.network_profile.load_balancer_profile = _update_load_balancer_profile( - managed_outbound_ip_count=self.context.get_load_balancer_managed_outbound_ip_count(), - managed_outbound_ipv6_count=self.context.get_load_balancer_managed_outbound_ipv6_count(), - outbound_ips=self.context.get_load_balancer_outbound_ips(), - outbound_ip_prefixes=self.context.get_load_balancer_outbound_ip_prefixes(), - outbound_ports=self.context.get_load_balancer_outbound_ports(), - idle_timeout=self.context.get_load_balancer_idle_timeout(), - profile=mc.network_profile.load_balancer_profile, - models=self.models.lb_models, - ) - return mc - - def update_pod_security_policy(self, mc: ManagedCluster) -> ManagedCluster: - """Update pod security policy for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - if self.context.get_enable_pod_security_policy(): - mc.enable_pod_security_policy = True - - if self.context.get_disable_pod_security_policy(): - mc.enable_pod_security_policy = False - return mc - - def update_http_proxy_config(self, mc: ManagedCluster) -> ManagedCluster: - """Set up http proxy config for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - mc.http_proxy_config = self.context.get_http_proxy_config() - return mc - - def update_windows_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update windows profile for the ManagedCluster object. - - Note: Inherited and extended in aks-preview to set gmsa related properties. - - :return: the ManagedCluster object - """ - mc = super().update_windows_profile(mc) - windows_profile = mc.windows_profile - - if self.context.get_enable_windows_gmsa(): - if not windows_profile: - raise UnknownError( - "Encounter an unexpected error while getting windows profile " - "from the cluster in the process of update." - ) - gmsa_dns_server, gmsa_root_domain_name = self.context.get_gmsa_dns_server_and_root_domain_name() - windows_profile.gmsa_profile = self.models.WindowsGmsaProfile( - enabled=True, - dns_server=gmsa_dns_server, - root_domain_name=gmsa_root_domain_name, - ) - return mc - - # TODO: may combine this with update_load_balancer_profile - def update_nat_gateway_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update nat gateway profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - nat_gateway_managed_outbound_ip_count = self.context.get_nat_gateway_managed_outbound_ip_count() - nat_gateway_idle_timeout = self.context.get_nat_gateway_idle_timeout() - if is_nat_gateway_profile_provided(nat_gateway_managed_outbound_ip_count, nat_gateway_idle_timeout): - if not mc.network_profile: - raise UnknownError( - "Unexpectedly get an empty network profile in the process of updating nat gateway profile." - ) - - mc.network_profile.nat_gateway_profile = _update_nat_gateway_profile( - nat_gateway_managed_outbound_ip_count, - nat_gateway_idle_timeout, - mc.network_profile.nat_gateway_profile, - models=self.models.nat_gateway_models, - ) - return mc - - def update_pod_identity_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update pod identity profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - if self.context.get_enable_pod_identity(): - if not _is_pod_identity_addon_enabled(mc): - # we only rebuild the pod identity profile if it's disabled before - _update_addon_pod_identity( - mc, - enable=True, - allow_kubenet_consent=self.context.get_enable_pod_identity_with_kubenet(), - models=self.models.pod_identity_models - ) - - if self.context.get_disable_pod_identity(): - _update_addon_pod_identity( - mc, enable=False, models=self.models.pod_identity_models) - return mc - - def update_oidc_issuer_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update OIDC issuer profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - mc.oidc_issuer_profile = self.context.get_oidc_issuer_profile() - - return mc - - def update_workload_identity_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update workload identity profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - profile = self.context.get_workload_identity_profile() - if profile is None: - if mc.security_profile is not None: - # set the value to None to let server side to fill in the default value - mc.security_profile.workload_identity = None - return mc - - if mc.security_profile is None: - mc.security_profile = self.models.ManagedClusterSecurityProfile() - mc.security_profile.workload_identity = profile - - return mc - - def update_azure_keyvault_kms(self, mc: ManagedCluster) -> ManagedCluster: - """Update security profile azureKeyvaultKms for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - if self.context.get_enable_azure_keyvault_kms(): - key_id = self.context.get_azure_keyvault_kms_key_id() - if key_id: - if mc.security_profile is None: - mc.security_profile = self.models.ManagedClusterSecurityProfile() - mc.security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id, - ) - - return mc - - def update_storage_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update storage profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - mc.storage_profile = self.context.get_storage_profile() - - return mc - - def update_identity_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update identity profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - assign_kubelet_identity = self.context.get_updated_assign_kubelet_identity() - if assign_kubelet_identity: - identity_profile = { - 'kubeletidentity': self.models.UserAssignedIdentity( - resource_id=assign_kubelet_identity, - ) - } - cluster_identity_object_id = self.context.get_cluster_uaidentity_object_id() - # ensure the cluster identity has "Managed Identity Operator" role at the scope of kubelet identity - _ensure_cluster_identity_permission_on_kubelet_identity( - self.cmd.cli_ctx, - cluster_identity_object_id, - assign_kubelet_identity) - mc.identity_profile = identity_profile - return mc - - def update_api_server_access_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update apiServerAccessProfile vnet integration related property for the ManagedCluster object. - - :return: the ManagedCluster object - """ - mc = super().update_api_server_access_profile(mc) - if self.context.get_enable_apiserver_vnet_integration(): - if mc.api_server_access_profile is None: - mc.api_server_access_profile = self.models.ManagedClusterAPIServerAccessProfile() - mc.api_server_access_profile.enable_vnet_integration = True - if self.context.get_apiserver_subnet_id(): - mc.api_server_access_profile.subnet_id = self.context.get_apiserver_subnet_id() - - return mc - - def update_workload_auto_scaler_profile(self, mc: ManagedCluster) -> ManagedCluster: - """Update workload auto-scaler profile for the ManagedCluster object. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - if self.context.get_enable_keda(): - if mc.workload_auto_scaler_profile is None: - mc.workload_auto_scaler_profile = self.models.ManagedClusterWorkloadAutoScalerProfile() - mc.workload_auto_scaler_profile.keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True) - - if self.context.get_disable_keda(): - if mc.workload_auto_scaler_profile is None: - mc.workload_auto_scaler_profile = self.models.ManagedClusterWorkloadAutoScalerProfile() - mc.workload_auto_scaler_profile.keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=False) - - return mc - - def patch_mc(self, mc: ManagedCluster) -> ManagedCluster: - """Helper function to patch the ManagedCluster object. - - This is a collection of workarounds on the cli side before fixing the problems on the rp side. - - :return: the ManagedCluster object - """ - self._ensure_mc(mc) - - # fill default values for pod labels in pod identity exceptions - _fill_defaults_for_pod_identity_profile(mc.pod_identity_profile) - return mc - - def update_mc_preview_profile(self) -> ManagedCluster: - """The overall controller used to update the preview ManagedCluster profile. - - The completely updated ManagedCluster object will later be passed as a parameter to the underlying SDK - (mgmt-containerservice) to send the actual request. - - :return: the ManagedCluster object - """ - # update the default ManagedCluster profile - mc = self.update_default_mc_profile() - # patch mc - mc = self.patch_mc(mc) - # update pod security policy - mc = self.update_pod_security_policy(mc) - # update nat gateway profile - mc = self.update_nat_gateway_profile(mc) - # update pod identity profile - mc = self.update_pod_identity_profile(mc) - - # update workload identity & OIDC issuer settings - # NOTE: in current implementation, workload identity settings setup requires checking - # previous OIDC issuer profile. However, the OIDC issuer settings setup will - # overrides the previous OIDC issuer profile based on user input. Therefore, we have - # to make sure the workload identity settings setup is done after OIDC issuer settings. - mc = self.update_workload_identity_profile(mc) - mc = self.update_oidc_issuer_profile(mc) - - mc = self.update_http_proxy_config(mc) - mc = self.update_azure_keyvault_kms(mc) - # update identity profile - mc = self.update_identity_profile(mc) - - mc = self.update_storage_profile(mc) - - mc = self.update_workload_auto_scaler_profile(mc) - - return mc - - def update_mc_preview(self, mc: ManagedCluster) -> ManagedCluster: - """Send request to update the existing managed cluster. - - :return: the ManagedCluster object - """ - return super().update_mc(mc) diff --git a/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py b/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py index b6dece9853c..a98c745cd39 100644 --- a/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py +++ b/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py @@ -13,10 +13,12 @@ ) from azure.cli.command_modules.acs._helpers import ( check_is_msi_cluster, - safe_list_get, + format_parameter_name_to_option_name, safe_lower, ) -from azure.cli.command_modules.acs._validators import extract_comma_separated_string +from azure.cli.command_modules.acs._validators import ( + extract_comma_separated_string, +) from azure.cli.command_modules.acs.managed_cluster_decorator import ( AKSManagedClusterContext, AKSManagedClusterCreateDecorator, @@ -26,6 +28,7 @@ ) from azure.cli.core import AzCommandsLoader from azure.cli.core.azclierror import ( + ArgumentUsageError, InvalidArgumentValueError, MutuallyExclusiveArgumentError, RequiredArgumentMissingError, @@ -37,9 +40,15 @@ from knack.log import get_logger from knack.prompting import prompt_y_n +from azext_aks_preview._consts import ( + CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PRIVATE, + CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PUBLIC, +) from azext_aks_preview._helpers import get_cluster_snapshot_by_snapshot_id from azext_aks_preview._loadbalancer import create_load_balancer_profile -from azext_aks_preview._loadbalancer import update_load_balancer_profile as _update_load_balancer_profile +from azext_aks_preview._loadbalancer import ( + update_load_balancer_profile as _update_load_balancer_profile, +) from azext_aks_preview._podidentity import ( _fill_defaults_for_pod_identity_profile, _is_pod_identity_addon_enabled, @@ -54,15 +63,8 @@ # type variables ContainerServiceClient = TypeVar("ContainerServiceClient") -Identity = TypeVar("Identity") ManagedCluster = TypeVar("ManagedCluster") -ManagedClusterLoadBalancerProfile = TypeVar("ManagedClusterLoadBalancerProfile") -ManagedClusterPropertiesAutoScalerProfile = TypeVar("ManagedClusterPropertiesAutoScalerProfile") -ResourceReference = TypeVar("ResourceReference") ManagedClusterAddonProfile = TypeVar("ManagedClusterAddonProfile") -Snapshot = TypeVar("Snapshot") -KubeletConfig = TypeVar("KubeletConfig") -LinuxOSConfig = TypeVar("LinuxOSConfig") ManagedClusterHTTPProxyConfig = TypeVar("ManagedClusterHTTPProxyConfig") ManagedClusterSecurityProfileWorkloadIdentity = TypeVar("ManagedClusterSecurityProfileWorkloadIdentity") ManagedClusterOIDCIssuerProfile = TypeVar("ManagedClusterOIDCIssuerProfile") @@ -70,7 +72,9 @@ ManagedClusterStorageProfile = TypeVar('ManagedClusterStorageProfile') ManagedClusterStorageProfileDiskCSIDriver = TypeVar('ManagedClusterStorageProfileDiskCSIDriver') ManagedClusterStorageProfileFileCSIDriver = TypeVar('ManagedClusterStorageProfileFileCSIDriver') +ManagedClusterStorageProfileBlobCSIDriver = TypeVar('ManagedClusterStorageProfileBlobCSIDriver') ManagedClusterStorageProfileSnapshotController = TypeVar('ManagedClusterStorageProfileSnapshotController') +ManagedClusterIngressProfileWebAppRouting = TypeVar("ManagedClusterIngressProfileWebAppRouting") # pylint: disable=too-few-public-methods @@ -232,8 +236,8 @@ def get_service_cidrs(self) -> Union[List[str], None]: # this parameter does not need validation return service_cidrs - def get_ip_families(self): - """Obtain the CIDR ranges for the service subnet. + def get_ip_families(self) -> Union[List[str], None]: + """Obtain the value of ip_families. :return: List[str] or None """ @@ -295,6 +299,13 @@ def get_load_balancer_managed_outbound_ip_count(self) -> Union[int, None]: # this parameter does not need validation return load_balancer_managed_outbound_ip_count + def get_network_plugin_mode(self) -> Union[str, None]: + """Get the value of network_plugin_mode + + :return: str or None + """ + return self.raw_param.get('network_plugin_mode') + def get_load_balancer_managed_outbound_ipv6_count(self) -> Union[int, None]: """Obtain the expected count of IPv6 managed outbound IPs. @@ -575,32 +586,23 @@ def get_workload_identity_profile(self) -> Optional[ManagedClusterSecurityProfil :return: Optional[ManagedClusterSecurityProfileWorkloadIdentity] """ + # NOTE: enable_workload_identity can be one of: + # + # - True: sets by user, to enable the workload identity feature + # - False: sets by user, to disable the workload identity feature + # - None: user unspecified, don't set the profile and let server side to backfill enable_workload_identity = self.raw_param.get("enable_workload_identity") - disable_workload_identity = self.raw_param.get("disable_workload_identity") - if self.decorator_mode == DecoratorMode.CREATE: - # CREATE mode has no --disable-workload-identity flag - disable_workload_identity = None - if enable_workload_identity is None and disable_workload_identity is None: - # no flags have been set, return None; server side will backfill the default/existing value + if enable_workload_identity is None: return None - if enable_workload_identity and disable_workload_identity: - raise MutuallyExclusiveArgumentError( - "Cannot specify --enable-workload-identity and " - "--disable-workload-identity at the same time." - ) - profile = self.models.ManagedClusterSecurityProfileWorkloadIdentity() - if self.decorator_mode == DecoratorMode.CREATE: - profile.enabled = bool(enable_workload_identity) - elif self.decorator_mode == DecoratorMode.UPDATE: + if self.decorator_mode == DecoratorMode.UPDATE: if self.mc.security_profile is not None and self.mc.security_profile.workload_identity is not None: + # reuse previous profile is has been set profile = self.mc.security_profile.workload_identity - if enable_workload_identity: - profile.enabled = True - elif disable_workload_identity: - profile.enabled = False + + profile.enabled = bool(enable_workload_identity) if profile.enabled: # in enable case, we need to check if OIDC issuer has been enabled @@ -722,6 +724,152 @@ def get_azure_keyvault_kms_key_id(self) -> Union[str, None]: """ return self._get_azure_keyvault_kms_key_id(enable_validation=True) + def _get_azure_keyvault_kms_key_vault_network_access(self, enable_validation: bool = False) -> Union[str, None]: + """Internal function to obtain the value of azure_keyvault_kms_key_vault_network_access according to the + context. + + This function supports the option of enable_validation. When enabled, it will check if + azure_keyvault_kms_key_vault_network_access is assigned but enable_azure_keyvault_kms is not specified, if so, + raise a RequiredArgumentMissingError. + + :return: string or None + """ + # read the original value passed by the command + azure_keyvault_kms_key_vault_network_access = self.raw_param.get( + "azure_keyvault_kms_key_vault_network_access" + ) + if self.decorator_mode == DecoratorMode.CREATE: + pass + # Do not read the property value corresponding to the parameter from the `mc` object in create mode, + # because keyVaultNetworkAccess has the default value "Public" in azure-rest-api-specs, to avoid + # accidentally overwriting user-specified values. + else: + # backfill from existing mc, temp fix before rp handles the backfill + if ( + azure_keyvault_kms_key_vault_network_access is None and + self.mc and + self.mc.security_profile and + self.mc.security_profile.azure_key_vault_kms and + self.mc.security_profile.azure_key_vault_kms.key_vault_network_access is not None + ): + azure_keyvault_kms_key_vault_network_access = ( + self.mc.security_profile.azure_key_vault_kms.key_vault_network_access + ) + # backfill to default value, temp fix before rp handles the backfill + if azure_keyvault_kms_key_vault_network_access is None: + azure_keyvault_kms_key_vault_network_access = CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PUBLIC + + # validation + if enable_validation: + enable_azure_keyvault_kms = self._get_enable_azure_keyvault_kms( + enable_validation=False) + if ( + azure_keyvault_kms_key_vault_network_access and + ( + enable_azure_keyvault_kms is None or + enable_azure_keyvault_kms is False + ) + ): + raise RequiredArgumentMissingError( + '"--azure-keyvault-kms-key-vault-network-access" requires "--enable-azure-keyvault-kms".') + + return azure_keyvault_kms_key_vault_network_access + + def get_azure_keyvault_kms_key_vault_network_access(self) -> Union[str, None]: + """Obtain the value of azure_keyvault_kms_key_vault_network_access. + + This function will verify the parameter by default. When enabled, if enable_azure_keyvault_kms is False, + raise a RequiredArgumentMissingError. + + :return: bool + """ + return self._get_azure_keyvault_kms_key_vault_network_access(enable_validation=True) + + def _get_azure_keyvault_kms_key_vault_resource_id(self, enable_validation: bool = False) -> Union[str, None]: + """Internal function to obtain the value of azure_keyvault_kms_key_vault_resource_id according to the context. + + This function supports the option of enable_validation. When enabled, it will do validation, and raise a + RequiredArgumentMissingError. + + :return: string or None + """ + # read the original value passed by the command + azure_keyvault_kms_key_vault_resource_id = self.raw_param.get( + "azure_keyvault_kms_key_vault_resource_id" + ) + if self.decorator_mode == DecoratorMode.CREATE: + if ( + self.mc and + self.mc.security_profile and + self.mc.security_profile.azure_key_vault_kms and + self.mc.security_profile.azure_key_vault_kms.key_vault_resource_id is not None + ): + azure_keyvault_kms_key_vault_resource_id = ( + self.mc.security_profile.azure_key_vault_kms.key_vault_resource_id + ) + else: + # backfill from existing mc, temp fix before rp handles the backfill + if ( + azure_keyvault_kms_key_vault_resource_id is None and + self.mc.security_profile and + self.mc.security_profile.azure_key_vault_kms and + self.mc.security_profile.azure_key_vault_kms.key_vault_resource_id is not None + ): + azure_keyvault_kms_key_vault_resource_id = ( + self.mc.security_profile.azure_key_vault_kms.key_vault_resource_id + ) + + # validation + if enable_validation: + enable_azure_keyvault_kms = self._get_enable_azure_keyvault_kms( + enable_validation=False) + if ( + azure_keyvault_kms_key_vault_resource_id and + ( + enable_azure_keyvault_kms is None or + enable_azure_keyvault_kms is False + ) + ): + raise RequiredArgumentMissingError( + '"--azure-keyvault-kms-key-vault-resource-id" requires "--enable-azure-keyvault-kms".') + + key_vault_network_access = self._get_azure_keyvault_kms_key_vault_network_access( + enable_validation=False) + if ( + key_vault_network_access == CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PRIVATE and + ( + azure_keyvault_kms_key_vault_resource_id is None or + azure_keyvault_kms_key_vault_resource_id == "" + ) + ): + raise ArgumentUsageError( + '"--azure-keyvault-kms-key-vault-resource-id" can not be empty if ' + '"--azure-keyvault-kms-key-vault-network-access" is "Private".' + ) + if ( + key_vault_network_access == CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PUBLIC and + ( + azure_keyvault_kms_key_vault_resource_id is not None and + azure_keyvault_kms_key_vault_resource_id != "" + ) + ): + raise ArgumentUsageError( + '"--azure-keyvault-kms-key-vault-resource-id" must be empty if ' + '"--azure-keyvault-kms-key-vault-network-access" is "Public".' + ) + + return azure_keyvault_kms_key_vault_resource_id + + def get_azure_keyvault_kms_key_vault_resource_id(self) -> Union[str, None]: + """Obtain the value of azure_keyvault_kms_key_vault_resource_id. + + This function will verify the parameter by default. When enabled, if enable_azure_keyvault_kms is False, + raise a RequiredArgumentMissingError. + + :return: bool + """ + return self._get_azure_keyvault_kms_key_vault_resource_id(enable_validation=True) + def get_cluster_snapshot_id(self) -> Union[str, None]: """Obtain the values of cluster_snapshot_id. @@ -822,13 +970,15 @@ def get_kubernetes_version(self) -> str: return self._get_kubernetes_version(read_only=False) def get_disk_driver(self) -> Optional[ManagedClusterStorageProfileDiskCSIDriver]: - """Obtrain the value of storage_profile.disk_csi_driver + """Obtain the value of storage_profile.disk_csi_driver :return: Optional[ManagedClusterStorageProfileDiskCSIDriver] """ enable_disk_driver = self.raw_param.get("enable_disk_driver") disable_disk_driver = self.raw_param.get("disable_disk_driver") - if not enable_disk_driver and not disable_disk_driver: + disk_driver_version = self.raw_param.get("disk_driver_version") + + if not enable_disk_driver and not disable_disk_driver and not disk_driver_version: return None profile = self.models.ManagedClusterStorageProfileDiskCSIDriver() @@ -838,25 +988,45 @@ def get_disk_driver(self) -> Optional[ManagedClusterStorageProfileDiskCSIDriver] "--disable-disk-driver at the same time." ) + if disable_disk_driver and disk_driver_version: + raise ArgumentUsageError( + "The parameter --disable-disk-driver cannot be used " + "when --disk-driver-version is specified.") + + if self.decorator_mode == DecoratorMode.UPDATE and disk_driver_version and not enable_disk_driver: + raise ArgumentUsageError( + "Parameter --enable-disk-driver is required " + "when --disk-driver-version is specified during update.") + if self.decorator_mode == DecoratorMode.CREATE: if disable_disk_driver: profile.enabled = False + else: + profile.enabled = True + if disk_driver_version: + profile.version = disk_driver_version if self.decorator_mode == DecoratorMode.UPDATE: if enable_disk_driver: profile.enabled = True + if disk_driver_version: + profile.version = disk_driver_version elif disable_disk_driver: + msg = "Please make sure there are no existing PVs and PVCs that are used by AzureDisk CSI driver before disabling." + if not self.get_yes() and not prompt_y_n(msg, default="n"): + raise DecoratorEarlyExitException() profile.enabled = False return profile def get_file_driver(self) -> Optional[ManagedClusterStorageProfileFileCSIDriver]: - """Obtrain the value of storage_profile.file_csi_driver + """Obtain the value of storage_profile.file_csi_driver :return: Optional[ManagedClusterStorageProfileFileCSIDriver] """ enable_file_driver = self.raw_param.get("enable_file_driver") disable_file_driver = self.raw_param.get("disable_file_driver") + if not enable_file_driver and not disable_file_driver: return None profile = self.models.ManagedClusterStorageProfileFileCSIDriver() @@ -875,19 +1045,61 @@ def get_file_driver(self) -> Optional[ManagedClusterStorageProfileFileCSIDriver] if enable_file_driver: profile.enabled = True elif disable_file_driver: + msg = "Please make sure there are no existing PVs and PVCs that are used by AzureFile CSI driver before disabling." + if not self.get_yes() and not prompt_y_n(msg, default="n"): + raise DecoratorEarlyExitException() + profile.enabled = False + + return profile + + def get_blob_driver(self) -> Optional[ManagedClusterStorageProfileBlobCSIDriver]: + """Obtain the value of storage_profile.blob_csi_driver + + :return: Optional[ManagedClusterStorageProfileBlobCSIDriver] + """ + enable_blob_driver = self.raw_param.get("enable_blob_driver") + disable_blob_driver = self.raw_param.get("disable_blob_driver") + + if enable_blob_driver is None and disable_blob_driver is None: + return None + + profile = self.models.ManagedClusterStorageProfileBlobCSIDriver() + + if enable_blob_driver and disable_blob_driver: + raise MutuallyExclusiveArgumentError( + "Cannot specify --enable-blob-driver and " + "--disable-blob-driver at the same time." + ) + + if self.decorator_mode == DecoratorMode.CREATE: + if enable_blob_driver: + profile.enabled = True + + if self.decorator_mode == DecoratorMode.UPDATE: + if enable_blob_driver: + msg = "Please make sure there is no open-source Blob CSI driver installed before enabling." + if not self.get_yes() and not prompt_y_n(msg, default="n"): + raise DecoratorEarlyExitException() + profile.enabled = True + elif disable_blob_driver: + msg = "Please make sure there are no existing PVs and PVCs that are used by Blob CSI driver before disabling." + if not self.get_yes() and not prompt_y_n(msg, default="n"): + raise DecoratorEarlyExitException() profile.enabled = False return profile def get_snapshot_controller(self) -> Optional[ManagedClusterStorageProfileSnapshotController]: - """Obtrain the value of storage_profile.snapshot_controller + """Obtain the value of storage_profile.snapshot_controller :return: Optional[ManagedClusterStorageProfileSnapshotController] """ enable_snapshot_controller = self.raw_param.get("enable_snapshot_controller") disable_snapshot_controller = self.raw_param.get("disable_snapshot_controller") + if not enable_snapshot_controller and not disable_snapshot_controller: return None + profile = self.models.ManagedClusterStorageProfileSnapshotController() if enable_snapshot_controller and disable_snapshot_controller: @@ -904,12 +1116,16 @@ def get_snapshot_controller(self) -> Optional[ManagedClusterStorageProfileSnapsh if enable_snapshot_controller: profile.enabled = True elif disable_snapshot_controller: + msg = "Please make sure there are no existing VolumeSnapshots, VolumeSnapshotClasses and VolumeSnapshotContents " \ + "that are used by the snapshot controller before disabling." + if not self.get_yes() and not prompt_y_n(msg, default="n"): + raise DecoratorEarlyExitException() profile.enabled = False return profile def get_storage_profile(self) -> Optional[ManagedClusterStorageProfile]: - """Obtrain the value of storage_profile. + """Obtain the value of storage_profile. :return: Optional[ManagedClusterStorageProfile] """ @@ -918,6 +1134,7 @@ def get_storage_profile(self) -> Optional[ManagedClusterStorageProfile]: profile = self.mc.storage_profile profile.disk_csi_driver = self.get_disk_driver() profile.file_csi_driver = self.get_file_driver() + profile.blob_csi_driver = self.get_blob_driver() profile.snapshot_controller = self.get_snapshot_controller() return profile @@ -1026,6 +1243,96 @@ def get_apiserver_subnet_id(self) -> Union[str, None]: """ return self._get_apiserver_subnet_id(enable_validation=True) + def get_dns_zone_resource_id(self) -> Union[str, None]: + """Obtain the value of ip_families. + + :return: string or None + """ + # read the original value passed by the command + dns_zone_resource_id = self.raw_param.get("dns_zone_resource_id") + # try to read the property value corresponding to the parameter from the `mc` object + if ( + self.mc and + self.mc.ingress_profile and + self.mc.ingress_profile.web_app_routing and + self.mc.ingress_profile.web_app_routing.dns_zone_resource_id is not None + ): + dns_zone_resource_id = self.mc.ingress_profile.web_app_routing.dns_zone_resource_id + + # this parameter does not need dynamic completion + # this parameter does not need validation + return dns_zone_resource_id + + def _get_enable_keda(self, enable_validation: bool = False) -> bool: + """Internal function to obtain the value of enable_keda. + + This function supports the option of enable_validation. When enabled, if both enable_keda and disable_keda are + specified, raise a MutuallyExclusiveArgumentError. + + :return: bool + """ + # Read the original value passed by the command. + enable_keda = self.raw_param.get("enable_keda") + + # In create mode, try to read the property value corresponding to the parameter from the `mc` object. + if self.decorator_mode == DecoratorMode.CREATE: + if ( + self.mc and + self.mc.workload_auto_scaler_profile and + self.mc.workload_auto_scaler_profile.keda + ): + enable_keda = self.mc.workload_auto_scaler_profile.keda.enabled + + # This parameter does not need dynamic completion. + if enable_validation: + if enable_keda and self._get_disable_keda(enable_validation=False): + raise MutuallyExclusiveArgumentError( + "Cannot specify --enable-keda and --disable-keda at the same time." + ) + + return enable_keda + + def get_enable_keda(self) -> bool: + """Obtain the value of enable_keda. + + This function will verify the parameter by default. If both enable_keda and disable_keda are specified, raise a + MutuallyExclusiveArgumentError. + + :return: bool + """ + return self._get_enable_keda(enable_validation=True) + + def _get_disable_keda(self, enable_validation: bool = False) -> bool: + """Internal function to obtain the value of disable_keda. + + This function supports the option of enable_validation. When enabled, if both enable_keda and disable_keda are + specified, raise a MutuallyExclusiveArgumentError. + + :return: bool + """ + # Read the original value passed by the command. + disable_keda = self.raw_param.get("disable_keda") + + # This option is not supported in create mode, hence we do not read the property value from the `mc` object. + # This parameter does not need dynamic completion. + if enable_validation: + if disable_keda and self._get_enable_keda(enable_validation=False): + raise MutuallyExclusiveArgumentError( + "Cannot specify --enable-keda and --disable-keda at the same time." + ) + + return disable_keda + + def get_disable_keda(self) -> bool: + """Obtain the value of disable_keda. + + This function will verify the parameter by default. If both enable_keda and disable_keda are specified, raise a + MutuallyExclusiveArgumentError. + + :return: bool + """ + return self._get_disable_keda(enable_validation=True) + class AKSPreviewManagedClusterCreateDecorator(AKSManagedClusterCreateDecorator): def __init__( @@ -1081,7 +1388,8 @@ def set_up_agentpool_profile(self, mc: ManagedCluster) -> ManagedCluster: def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster: """Set up network profile for the ManagedCluster object. - Note: Inherited and extended in aks-preview to set ipv6 configs. + Note: Inherited and extended in aks-preview to set ipv6 configs and + network plugin mode. :return: the ManagedCluster object """ @@ -1109,6 +1417,9 @@ def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster: self.context.get_load_balancer_idle_timeout(), models=self.models.load_balancer_models, ) + + network_profile.network_plugin_mode = self.context.get_network_plugin_mode() + return mc def set_up_api_server_access_profile(self, mc: ManagedCluster) -> ManagedCluster: @@ -1243,6 +1554,10 @@ def set_up_azure_keyvault_kms(self, mc: ManagedCluster) -> ManagedCluster: enabled=True, key_id=key_id, ) + key_vault_network_access = self.context.get_azure_keyvault_kms_key_vault_network_access() + mc.security_profile.azure_key_vault_kms.key_vault_network_access = key_vault_network_access + if key_vault_network_access == CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PRIVATE: + mc.security_profile.azure_key_vault_kms.key_vault_resource_id = self.context.get_azure_keyvault_kms_key_vault_resource_id() return mc @@ -1268,10 +1583,44 @@ def set_up_storage_profile(self, mc: ManagedCluster) -> ManagedCluster: :return: the ManagedCluster object """ + self._ensure_mc(mc) + mc.storage_profile = self.context.get_storage_profile() return mc + def set_up_ingress_web_app_routing(self, mc: ManagedCluster) -> ManagedCluster: + """Set up web app routing profile in ingress profile for the ManagedCluster object. + + :return: the ManagedCluster object + """ + self._ensure_mc(mc) + + addons = self.context.get_enable_addons() + if "web_application_routing" in addons: + if mc.ingress_profile is None: + mc.ingress_profile = self.models.ManagedClusterIngressProfile() + dns_zone_resource_id = self.context.get_dns_zone_resource_id() + mc.ingress_profile.web_app_routing = self.models.ManagedClusterIngressProfileWebAppRouting( + enabled=True, + dns_zone_resource_id=dns_zone_resource_id, + ) + return mc + + def set_up_workload_auto_scaler_profile(self, mc: ManagedCluster) -> ManagedCluster: + """Set up workload auto-scaler profile for the ManagedCluster object. + + :return: the ManagedCluster object + """ + self._ensure_mc(mc) + + if self.context.get_enable_keda(): + if mc.workload_auto_scaler_profile is None: + mc.workload_auto_scaler_profile = self.models.ManagedClusterWorkloadAutoScalerProfile() + mc.workload_auto_scaler_profile.keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True) + + return mc + def construct_mc_profile_preview(self, bypass_restore_defaults: bool = False) -> ManagedCluster: """The overall controller used to construct the default ManagedCluster profile. @@ -1280,7 +1629,7 @@ def construct_mc_profile_preview(self, bypass_restore_defaults: bool = False) -> :return: the ManagedCluster object """ - # construct the default AgentPool profile + # DO NOT MOVE: keep this on top, construct the default AgentPool profile mc = self.construct_mc_profile_default(bypass_restore_defaults=True) # set up http proxy config @@ -1304,6 +1653,10 @@ def construct_mc_profile_preview(self, bypass_restore_defaults: bool = False) -> mc = self.set_up_creationdata_of_cluster_snapshot(mc) # set up storage profile mc = self.set_up_storage_profile(mc) + # set up ingress web app routing profile + mc = self.set_up_ingress_web_app_routing(mc) + # set up workload auto scaler profile + mc = self.set_up_workload_auto_scaler_profile(mc) # DO NOT MOVE: keep this at the bottom, restore defaults mc = self._restore_defaults_in_mc(mc) @@ -1375,66 +1728,15 @@ def check_raw_parameters(self): reconcilePrompt = 'no argument specified to update would you like to reconcile to current settings?' if not prompt_y_n(reconcilePrompt, default="n"): # Note: Uncomment the followings to automatically generate the error message. - # option_names = [ - # '"{}"'.format(format_parameter_name_to_option_name(x)) - # for x in self.context.raw_param.keys() - # if x not in excluded_keys - # ] - # error_msg = "Please specify one or more of {}.".format( - # " or ".join(option_names) - # ) - # raise RequiredArgumentMissingError(error_msg) - raise RequiredArgumentMissingError( - 'Please specify "--enable-cluster-autoscaler" or ' - '"--disable-cluster-autoscaler" or ' - '"--update-cluster-autoscaler" or ' - '"--cluster-autoscaler-profile" or ' - '"--enable-pod-security-policy" or ' - '"--disable-pod-security-policy" or ' - '"--api-server-authorized-ip-ranges" or ' - '"--attach-acr" or ' - '"--detach-acr" or ' - '"--uptime-sla" or ' - '"--no-uptime-sla" or ' - '"--load-balancer-managed-outbound-ip-count" or ' - '"--load-balancer-outbound-ips" or ' - '"--load-balancer-outbound-ip-prefixes" or ' - '"--nat-gateway-managed-outbound-ip-count" or ' - '"--nat-gateway-idle-timeout" or ' - '"--enable-aad" or ' - '"--aad-tenant-id" or ' - '"--aad-admin-group-object-ids" or ' - '"--enable-ahub" or ' - '"--disable-ahub" or ' - '"--enable-managed-identity" or ' - '"--enable-pod-identity" or ' - '"--disable-pod-identity" or ' - '"--auto-upgrade-channel" or ' - '"--enable-secret-rotation" or ' - '"--disable-secret-rotation" or ' - '"--rotation-poll-interval" or ' - '"--tags" or ' - '"--windows-admin-password" or ' - '"--enable-azure-rbac" or ' - '"--disable-azure-rbac" or ' - '"--enable-local-accounts" or ' - '"--disable-local-accounts" or ' - '"--enable-public-fqdn" or ' - '"--disable-public-fqdn"' - '"--enble-windows-gmsa" or ' - '"--nodepool-labels" or ' - '"--enable-oidc-issuer" or ' - '"--http-proxy-config" or ' - '"--enable-disk-driver" or ' - '"--disable-disk-driver" or ' - '"--enable-file-driver" or ' - '"--disable-file-driver" or ' - '"--enable-snapshot-controller" or ' - '"--disable-snapshot-controller" or ' - '"--enable-azure-keyvault-kms" or ' - '"--enable-workload-identity" or ' - '"--disable-workload-identity".' + option_names = [ + '"{}"'.format(format_parameter_name_to_option_name(x)) + for x in self.context.raw_param.keys() + if x not in excluded_keys + ] + error_msg = "Please specify one or more of {}.".format( + " or ".join(option_names) ) + raise RequiredArgumentMissingError(error_msg) def update_load_balancer_profile(self, mc: ManagedCluster) -> ManagedCluster: """Update load balancer profile for the ManagedCluster object. @@ -1570,13 +1872,30 @@ def update_azure_keyvault_kms(self, mc: ManagedCluster) -> ManagedCluster: self._ensure_mc(mc) if self.context.get_enable_azure_keyvault_kms(): - key_id = self.context.get_azure_keyvault_kms_key_id() - if key_id: - if mc.security_profile is None: - mc.security_profile = self.models.ManagedClusterSecurityProfile() - mc.security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id, + # get kms profile + if mc.security_profile is None: + mc.security_profile = self.models.ManagedClusterSecurityProfile() + azure_key_vault_kms_profile = mc.security_profile.azure_key_vault_kms + if azure_key_vault_kms_profile is None: + azure_key_vault_kms_profile = self.models.AzureKeyVaultKms() + mc.security_profile.azure_key_vault_kms = azure_key_vault_kms_profile + + # set enabled + azure_key_vault_kms_profile.enabled = True + # set key id + azure_key_vault_kms_profile.key_id = self.context.get_azure_keyvault_kms_key_id() + # set network access, should never be None for now, can be safely assigned, temp fix for rp + # the value is obtained from user input or backfilled from existing mc or to default value + azure_key_vault_kms_profile.key_vault_network_access = ( + self.context.get_azure_keyvault_kms_key_vault_network_access() + ) + # set key vault id + if ( + azure_key_vault_kms_profile.key_vault_network_access == + CONST_AZURE_KEYVAULT_NETWORK_ACCESS_PRIVATE + ): + azure_key_vault_kms_profile.key_vault_resource_id = ( + self.context.get_azure_keyvault_kms_key_vault_resource_id() ) return mc @@ -1592,6 +1911,25 @@ def update_storage_profile(self, mc: ManagedCluster) -> ManagedCluster: return mc + def update_workload_auto_scaler_profile(self, mc: ManagedCluster) -> ManagedCluster: + """Update workload auto-scaler profile for the ManagedCluster object. + + :return: the ManagedCluster object + """ + self._ensure_mc(mc) + + if self.context.get_enable_keda(): + if mc.workload_auto_scaler_profile is None: + mc.workload_auto_scaler_profile = self.models.ManagedClusterWorkloadAutoScalerProfile() + mc.workload_auto_scaler_profile.keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True) + + if self.context.get_disable_keda(): + if mc.workload_auto_scaler_profile is None: + mc.workload_auto_scaler_profile = self.models.ManagedClusterWorkloadAutoScalerProfile() + mc.workload_auto_scaler_profile.keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=False) + + return mc + def update_mc_profile_preview(self) -> ManagedCluster: """The overall controller used to update the preview ManagedCluster profile. @@ -1600,8 +1938,9 @@ def update_mc_profile_preview(self) -> ManagedCluster: :return: the ManagedCluster object """ - # update the default ManagedCluster profile + # DO NOT MOVE: keep this on top, fetch and update the default ManagedCluster profile mc = self.update_mc_profile_default() + # set up http proxy config mc = self.update_http_proxy_config(mc) # update pod security policy @@ -1621,5 +1960,7 @@ def update_mc_profile_preview(self) -> ManagedCluster: mc = self.update_azure_keyvault_kms(mc) # update stroage profile mc = self.update_storage_profile(mc) + # update workload auto scaler profile + mc = self.update_workload_auto_scaler_profile(mc) return mc diff --git a/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_availability_zones.yaml b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_availability_zones.yaml new file mode 100644 index 00000000000..e3f117720dc --- /dev/null +++ b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_availability_zones.yaml @@ -0,0 +1,1677 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001","name":"clitest000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-13T09:59:41Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '304' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 13 Jun 2022 09:59:42 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus", "identity": {"type": "SystemAssigned"}, "properties": + {"kubernetesVersion": "", "dnsPrefix": "cliakstest-clitestyd3tllw6w-79a739", + "agentPoolProfiles": [{"count": 1, "vmSize": "Standard_DS2_v2", "workloadRuntime": + "OCIContainer", "osType": "Linux", "enableAutoScaling": false, "type": "VirtualMachineScaleSets", + "mode": "System", "availabilityZones": ["1", "2", "3"], "enableNodePublicIP": + false, "enableCustomCATrust": false, "scaleSetPriority": "Regular", "scaleSetEvictionPolicy": + "Delete", "spotMaxPrice": -1.0, "enableEncryptionAtHost": false, "enableUltraSSD": + false, "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCykhOqba7guoGsYaVtB4tTn7ewYYYq3cF6yiW3xpqlrJEiRK3VQVtYO1MdJ0HudOOzuCJL1L3FeadX9c6ZviQ25MrX+8PS5/TuklXf+jPahPc9vzN+zD50eLBEr/rHBwQaL5q1sSlhWCZxd2uRQODZVRsnMezmRV+MTysQKTyqjiAVAHeXDYmgE6YmwhdOr93Fda3cHNYTUYKUCD4x8A+QjntXAK9/EQhxdq5+XthsibP3/r6OlkHnYJkORyuAwj3JpOy2dV4cJygPcFlmQpxhJIzb2CZmsg6jvij3I0DsV5B5biD5khViNF7eTChBTwUT7RQ1jJ+ykjHZ6XU0X+5Z + azcli_aks_live_test@example.com\n"}]}}, "addonProfiles": {}, "enableRBAC": true, + "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": "kubenet", + "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": "10.0.0.10", + "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", "loadBalancerSku": + "standard"}, "disableLocalAccounts": false, "storageProfile": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + Content-Length: + - '1508' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\",\n + \ \"location\": \"eastus\",\n \"name\": \"cliakstest000002\",\n \"type\": + \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\": {\n \"provisioningState\": + \"Creating\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"kubernetesVersion\": + \"1.22.6\",\n \"currentKubernetesVersion\": \"1.22.6\",\n \"dnsPrefix\": + \"cliakstest-clitestyd3tllw6w-79a739\",\n \"fqdn\": \"cliakstest-clitestyd3tllw6w-79a739-6cdd49d1.hcp.eastus.azmk8s.io\",\n + \ \"azurePortalFQDN\": \"cliakstest-clitestyd3tllw6w-79a739-6cdd49d1.portal.hcp.eastus.azmk8s.io\",\n + \ \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \"count\": + 1,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\": 128,\n \"osDiskType\": + \"Managed\",\n \"kubeletDiskType\": \"OS\",\n \"workloadRuntime\": + \"OCIContainer\",\n \"maxPods\": 110,\n \"type\": \"VirtualMachineScaleSets\",\n + \ \"availabilityZones\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n + \ \"enableAutoScaling\": false,\n \"provisioningState\": \"Creating\",\n + \ \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": + \"1.22.6\",\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\": + false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\",\n + \ \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\": + \"AKSUbuntu-1804gen2containerd-2022.05.31\",\n \"enableFIPS\": false\n + \ }\n ],\n \"linuxProfile\": {\n \"adminUsername\": \"azureuser\",\n + \ \"ssh\": {\n \"publicKeys\": [\n {\n \"keyData\": \"ssh-rsa + AAAAB3NzaC1yc2EAAAADAQABAAABAQCykhOqba7guoGsYaVtB4tTn7ewYYYq3cF6yiW3xpqlrJEiRK3VQVtYO1MdJ0HudOOzuCJL1L3FeadX9c6ZviQ25MrX+8PS5/TuklXf+jPahPc9vzN+zD50eLBEr/rHBwQaL5q1sSlhWCZxd2uRQODZVRsnMezmRV+MTysQKTyqjiAVAHeXDYmgE6YmwhdOr93Fda3cHNYTUYKUCD4x8A+QjntXAK9/EQhxdq5+XthsibP3/r6OlkHnYJkORyuAwj3JpOy2dV4cJygPcFlmQpxhJIzb2CZmsg6jvij3I0DsV5B5biD5khViNF7eTChBTwUT7RQ1jJ+ykjHZ6XU0X+5Z + azcli_aks_live_test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\": + {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \"nodeResourceGroup\": + \"MC_clitest000001_cliakstest000002_eastus\",\n \"enableRBAC\": true,\n + \ \"enablePodSecurityPolicy\": false,\n \"networkProfile\": {\n \"networkPlugin\": + \"kubenet\",\n \"loadBalancerSku\": \"standard\",\n \"loadBalancerProfile\": + {\n \"managedOutboundIPs\": {\n \"count\": 1\n }\n },\n \"podCidr\": + \"10.244.0.0/16\",\n \"serviceCidr\": \"10.0.0.0/16\",\n \"dnsServiceIP\": + \"10.0.0.10\",\n \"dockerBridgeCidr\": \"172.17.0.1/16\",\n \"outboundType\": + \"loadBalancer\",\n \"podCidrs\": [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": + [\n \"10.0.0.0/16\"\n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n + \ },\n \"maxAgentPools\": 100,\n \"disableLocalAccounts\": false,\n \"securityProfile\": + {},\n \"storageProfile\": {\n \"diskCSIDriver\": {\n \"enabled\": + true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\": {\n \"enabled\": + true\n },\n \"snapshotController\": {\n \"enabled\": true\n }\n + \ },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n },\n \"identity\": + {\n \"type\": \"SystemAssigned\",\n \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n + \ \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": + {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + cache-control: + - no-cache + content-length: + - '3402' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 09:59:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:00:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:00:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:01:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:01:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:02:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:02:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:03:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:03:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:04:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:04:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:05:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:05:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:06:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:06:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:07:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d9cc62f5-fb8f-4b76-bfba-7db6c0a810af?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"f562ccd9-8ffb-764b-bfba-7db6c0a810af\",\n \"status\": + \"Succeeded\",\n \"startTime\": \"2022-06-13T09:59:49.6966666Z\",\n \"endTime\": + \"2022-06-13T10:07:27.7774428Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:07:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --node-count --ssh-key-value --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\",\n + \ \"location\": \"eastus\",\n \"name\": \"cliakstest000002\",\n \"type\": + \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\": {\n \"provisioningState\": + \"Succeeded\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"kubernetesVersion\": + \"1.22.6\",\n \"currentKubernetesVersion\": \"1.22.6\",\n \"dnsPrefix\": + \"cliakstest-clitestyd3tllw6w-79a739\",\n \"fqdn\": \"cliakstest-clitestyd3tllw6w-79a739-6cdd49d1.hcp.eastus.azmk8s.io\",\n + \ \"azurePortalFQDN\": \"cliakstest-clitestyd3tllw6w-79a739-6cdd49d1.portal.hcp.eastus.azmk8s.io\",\n + \ \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \"count\": + 1,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\": 128,\n \"osDiskType\": + \"Managed\",\n \"kubeletDiskType\": \"OS\",\n \"workloadRuntime\": + \"OCIContainer\",\n \"maxPods\": 110,\n \"type\": \"VirtualMachineScaleSets\",\n + \ \"availabilityZones\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n + \ \"enableAutoScaling\": false,\n \"provisioningState\": \"Succeeded\",\n + \ \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": + \"1.22.6\",\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\": + false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\",\n + \ \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\": + \"AKSUbuntu-1804gen2containerd-2022.05.31\",\n \"enableFIPS\": false\n + \ }\n ],\n \"linuxProfile\": {\n \"adminUsername\": \"azureuser\",\n + \ \"ssh\": {\n \"publicKeys\": [\n {\n \"keyData\": \"ssh-rsa + AAAAB3NzaC1yc2EAAAADAQABAAABAQCykhOqba7guoGsYaVtB4tTn7ewYYYq3cF6yiW3xpqlrJEiRK3VQVtYO1MdJ0HudOOzuCJL1L3FeadX9c6ZviQ25MrX+8PS5/TuklXf+jPahPc9vzN+zD50eLBEr/rHBwQaL5q1sSlhWCZxd2uRQODZVRsnMezmRV+MTysQKTyqjiAVAHeXDYmgE6YmwhdOr93Fda3cHNYTUYKUCD4x8A+QjntXAK9/EQhxdq5+XthsibP3/r6OlkHnYJkORyuAwj3JpOy2dV4cJygPcFlmQpxhJIzb2CZmsg6jvij3I0DsV5B5biD5khViNF7eTChBTwUT7RQ1jJ+ykjHZ6XU0X+5Z + azcli_aks_live_test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\": + {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \"nodeResourceGroup\": + \"MC_clitest000001_cliakstest000002_eastus\",\n \"enableRBAC\": true,\n + \ \"enablePodSecurityPolicy\": false,\n \"networkProfile\": {\n \"networkPlugin\": + \"kubenet\",\n \"loadBalancerSku\": \"Standard\",\n \"loadBalancerProfile\": + {\n \"managedOutboundIPs\": {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": + [\n {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_eastus/providers/Microsoft.Network/publicIPAddresses/4b94efd3-ac7f-4d7c-a106-daab24f0ffdf\"\n + \ }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\": + \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\": + \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\": + [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\n + \ ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\": + 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_eastus/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\",\n + \ \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\":\"00000000-0000-0000-0000-000000000001\"\n + \ }\n },\n \"disableLocalAccounts\": false,\n \"securityProfile\": + {},\n \"storageProfile\": {\n \"diskCSIDriver\": {\n \"enabled\": + true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\": {\n \"enabled\": + true\n },\n \"snapshotController\": {\n \"enabled\": true\n }\n + \ },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n },\n \"identity\": + {\n \"type\": \"SystemAssigned\",\n \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n + \ \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": + {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + cache-control: + - no-cache + content-length: + - '4053' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:07:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002/agentPools?api-version=2022-05-02-preview + response: + body: + string: "{\n \"value\": [\n {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002/agentPools/nodepool1\",\n + \ \"name\": \"nodepool1\",\n \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n + \ \"properties\": {\n \"count\": 1,\n \"vmSize\": \"Standard_DS2_v2\",\n + \ \"osDiskSizeGB\": 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": + \"OS\",\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n + \ \"type\": \"VirtualMachineScaleSets\",\n \"availabilityZones\": [\n + \ \"1\",\n \"2\",\n \"3\"\n ],\n \"enableAutoScaling\": + false,\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\",\n + \ \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\": + false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\",\n + \ \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\": + \"AKSUbuntu-1804gen2containerd-2022.05.31\",\n \"enableFIPS\": false\n + \ }\n }\n ]\n }" + headers: + cache-control: + - no-cache + content-length: + - '1151' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:07:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"count": 1, "vmSize": "Standard_DS2_v2", "workloadRuntime": + "OCIContainer", "osType": "Linux", "scaleDownMode": "Delete", "mode": "User", + "upgradeSettings": {}, "availabilityZones": ["1", "2", "3"], "enableNodePublicIP": + false, "enableCustomCATrust": false, "scaleSetPriority": "Regular", "scaleSetEvictionPolicy": + "Delete", "spotMaxPrice": -1.0, "nodeTaints": [], "enableEncryptionAtHost": + false, "enableUltraSSD": false, "enableFIPS": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + Content-Length: + - '460' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002/agentPools/nodepool2?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002/agentPools/nodepool2\",\n + \ \"name\": \"nodepool2\",\n \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n + \ \"properties\": {\n \"count\": 1,\n \"vmSize\": \"Standard_DS2_v2\",\n + \ \"osDiskSizeGB\": 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": + \"OS\",\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n + \ \"type\": \"VirtualMachineScaleSets\",\n \"availabilityZones\": [\n \"1\",\n + \ \"2\",\n \"3\"\n ],\n \"scaleDownMode\": \"Delete\",\n \"provisioningState\": + \"Creating\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": + \"1.22.6\",\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\": + false,\n \"enableCustomCATrust\": false,\n \"mode\": \"User\",\n \"enableEncryptionAtHost\": + false,\n \"enableUltraSSD\": false,\n \"osType\": \"Linux\",\n \"osSKU\": + \"Ubuntu\",\n \"nodeImageVersion\": \"AKSUbuntu-1804gen2containerd-2022.05.31\",\n + \ \"upgradeSettings\": {},\n \"enableFIPS\": false\n }\n }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + cache-control: + - no-cache + content-length: + - '1078' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:07:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:08:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:08:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:09:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:09:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:10:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:11:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:11:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:12:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/d3c2e079-a84c-4c15-89d7-cb30eff2a61e?api-version=2017-08-31 + response: + body: + string: "{\n \"name\": \"79e0c2d3-4ca8-154c-89d7-cb30eff2a61e\",\n \"status\": + \"Succeeded\",\n \"startTime\": \"2022-06-13T10:07:59.1533333Z\",\n \"endTime\": + \"2022-06-13T10:12:19.8612566Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:12:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks nodepool add + Connection: + - keep-alive + ParameterSetName: + - --resource-group --cluster-name --name --node-count --zones + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002/agentPools/nodepool2?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002/agentPools/nodepool2\",\n + \ \"name\": \"nodepool2\",\n \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n + \ \"properties\": {\n \"count\": 1,\n \"vmSize\": \"Standard_DS2_v2\",\n + \ \"osDiskSizeGB\": 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": + \"OS\",\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n + \ \"type\": \"VirtualMachineScaleSets\",\n \"availabilityZones\": [\n \"1\",\n + \ \"2\",\n \"3\"\n ],\n \"scaleDownMode\": \"Delete\",\n \"provisioningState\": + \"Succeeded\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": + \"1.22.6\",\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\": + false,\n \"enableCustomCATrust\": false,\n \"mode\": \"User\",\n \"enableEncryptionAtHost\": + false,\n \"enableUltraSSD\": false,\n \"osType\": \"Linux\",\n \"osSKU\": + \"Ubuntu\",\n \"nodeImageVersion\": \"AKSUbuntu-1804gen2containerd-2022.05.31\",\n + \ \"upgradeSettings\": {},\n \"enableFIPS\": false\n }\n }" + headers: + cache-control: + - no-cache + content-length: + - '1079' + content-type: + - application/json + date: + - Mon, 13 Jun 2022 10:12:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g -n --yes --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1029-azure-x86_64-with-glibc2.29) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operations/fe9f09c8-f4b5-4623-a403-69a55ae9ee23?api-version=2017-08-31 + cache-control: + - no-cache + content-length: + - '0' + date: + - Mon, 13 Jun 2022 10:12:33 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operationresults/fe9f09c8-f4b5-4623-a403-69a55ae9ee23?api-version=2017-08-31 + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +version: 1 diff --git a/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_and_update_with_blob_csi_driver.yaml b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_and_update_with_blob_csi_driver.yaml new file mode 100644 index 00000000000..e94e83d22bc --- /dev/null +++ b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_and_update_with_blob_csi_driver.yaml @@ -0,0 +1,3150 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.10.4 + (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001","name":"clitest000001","type":"Microsoft.Resources/resourceGroups","location":"centraluseuap","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:30:47Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '311' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:30:49 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "identity": {"type": "SystemAssigned"}, "properties": + {"kubernetesVersion": "", "dnsPrefix": "cliakstest-clitestpbgdit5du-8ecadf", + "agentPoolProfiles": [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": + 0, "workloadRuntime": "OCIContainer", "osType": "Linux", "enableAutoScaling": + false, "type": "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": + "", "upgradeSettings": {}, "enableNodePublicIP": false, "enableCustomCATrust": + false, "scaleSetPriority": "Regular", "scaleSetEvictionPolicy": "Delete", "spotMaxPrice": + -1.0, "nodeTaints": [], "enableEncryptionAtHost": false, "enableUltraSSD": false, + "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "addonProfiles": {}, "enableRBAC": true, "enablePodSecurityPolicy": + false, "networkProfile": {"networkPlugin": "kubenet", "podCidr": "10.244.0.0/16", + "serviceCidr": "10.0.0.0/16", "dnsServiceIP": "10.0.0.10", "dockerBridgeCidr": + "172.17.0.1/16", "outboundType": "loadBalancer", "loadBalancerSku": "standard"}, + "disableLocalAccounts": false, "storageProfile": {"blobCSIDriver": {"enabled": + true}}}}' + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + Content-Length: + - '1927' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Creating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Creating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n }\n },\n \"podCidr\": \"10.244.0.0/16\"\ + ,\n \"serviceCidr\": \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\"\ + ,\n \"dockerBridgeCidr\": \"172.17.0.1/16\",\n \"outboundType\": \"\ + loadBalancer\",\n \"podCidrs\": [\n \"10.244.0.0/16\"\n ],\n \ + \ \"serviceCidrs\": [\n \"10.0.0.0/16\"\n ],\n \"ipFamilies\": [\n\ + \ \"IPv4\"\n ]\n },\n \"maxAgentPools\": 100,\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '3770' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:30:54 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:31:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:31:54 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:32:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:32:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:33:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:33:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:34:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:34:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:35:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/82c95001-6c65-4245-94b0-cc1aed00cdb1?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"0150c982-656c-4542-94b0-cc1aed00cdb1\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:30:54.5378921Z\",\n \"\ + endTime\": \"2022-06-22T11:35:31.7454779Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:35:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o --enable-blob-driver --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4435' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:35:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4435' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:35:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "sku": {"name": "Basic", "tier": "Free"}, + "identity": {"type": "SystemAssigned"}, "properties": {"kubernetesVersion": + "1.22.6", "dnsPrefix": "cliakstest-clitestpbgdit5du-8ecadf", "agentPoolProfiles": + [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": 128, "osDiskType": + "Managed", "kubeletDiskType": "OS", "workloadRuntime": "OCIContainer", "maxPods": + 110, "osType": "Linux", "osSKU": "Ubuntu", "enableAutoScaling": false, "type": + "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": "1.22.6", + "upgradeSettings": {}, "powerState": {"code": "Running"}, "enableNodePublicIP": + false, "enableCustomCATrust": false, "enableEncryptionAtHost": false, "enableUltraSSD": + false, "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "servicePrincipalProfile": {"clientId":"00000000-0000-0000-0000-000000000001"}, + "nodeResourceGroup": "MC_clitest000001_cliakstest000002_centraluseuap", "enableRBAC": + true, "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": + "kubenet", "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": + "10.0.0.10", "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", + "loadBalancerSku": "Standard", "loadBalancerProfile": {"managedOutboundIPs": + {"count": 1, "countIPv6": 0}, "effectiveOutboundIPs": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58"}]}, + "podCidrs": ["10.244.0.0/16"], "serviceCidrs": ["10.0.0.0/16"], "ipFamilies": + ["IPv4"]}, "identityProfile": {"kubeletidentity": {"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool", + "clientId":"00000000-0000-0000-0000-000000000001", "objectId":"00000000-0000-0000-0000-000000000001"}}, + "disableLocalAccounts": false, "securityProfile": {}, "storageProfile": {}}}' + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + Content-Length: + - '2878' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Updating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Updating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/2d4f03a3-b604-44be-a677-d06a4b9e97dc?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '4433' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:36:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/2d4f03a3-b604-44be-a677-d06a4b9e97dc?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"a3034f2d-04b6-be44-a677-d06a4b9e97dc\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:36:00.4172263Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:36:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/2d4f03a3-b604-44be-a677-d06a4b9e97dc?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"a3034f2d-04b6-be44-a677-d06a4b9e97dc\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:36:00.4172263Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:37:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/2d4f03a3-b604-44be-a677-d06a4b9e97dc?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"a3034f2d-04b6-be44-a677-d06a4b9e97dc\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:36:00.4172263Z\",\n \"\ + endTime\": \"2022-06-22T11:37:13.5414813Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:37:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4435' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:37:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --disable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4435' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:37:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "sku": {"name": "Basic", "tier": "Free"}, + "identity": {"type": "SystemAssigned"}, "properties": {"kubernetesVersion": + "1.22.6", "dnsPrefix": "cliakstest-clitestpbgdit5du-8ecadf", "agentPoolProfiles": + [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": 128, "osDiskType": + "Managed", "kubeletDiskType": "OS", "workloadRuntime": "OCIContainer", "maxPods": + 110, "osType": "Linux", "osSKU": "Ubuntu", "enableAutoScaling": false, "type": + "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": "1.22.6", + "upgradeSettings": {}, "powerState": {"code": "Running"}, "enableNodePublicIP": + false, "enableCustomCATrust": false, "enableEncryptionAtHost": false, "enableUltraSSD": + false, "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "servicePrincipalProfile": {"clientId":"00000000-0000-0000-0000-000000000001"}, + "nodeResourceGroup": "MC_clitest000001_cliakstest000002_centraluseuap", "enableRBAC": + true, "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": + "kubenet", "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": + "10.0.0.10", "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", + "loadBalancerSku": "Standard", "loadBalancerProfile": {"managedOutboundIPs": + {"count": 1, "countIPv6": 0}, "effectiveOutboundIPs": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58"}]}, + "podCidrs": ["10.244.0.0/16"], "serviceCidrs": ["10.0.0.0/16"], "ipFamilies": + ["IPv4"]}, "identityProfile": {"kubeletidentity": {"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool", + "clientId":"00000000-0000-0000-0000-000000000001", "objectId":"00000000-0000-0000-0000-000000000001"}}, + "disableLocalAccounts": false, "securityProfile": {}, "storageProfile": {"blobCSIDriver": + {"enabled": false}}}}' + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + Content-Length: + - '2913' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name -o --disable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Updating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Updating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": false\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/e6359ea4-fe02-43eb-9d94-6efef02ed04d?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '4434' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:37:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --disable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/e6359ea4-fe02-43eb-9d94-6efef02ed04d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"a49e35e6-02fe-eb43-9d94-6efef02ed04d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:37:36.5749415Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:38:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --disable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/e6359ea4-fe02-43eb-9d94-6efef02ed04d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"a49e35e6-02fe-eb43-9d94-6efef02ed04d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:37:36.5749415Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:38:37 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --disable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/e6359ea4-fe02-43eb-9d94-6efef02ed04d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"a49e35e6-02fe-eb43-9d94-6efef02ed04d\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:37:36.5749415Z\",\n \"\ + endTime\": \"2022-06-22T11:38:55.5362419Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:39:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --disable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": false\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4436' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:39:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": false\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4436' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:39:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "sku": {"name": "Basic", "tier": "Free"}, + "identity": {"type": "SystemAssigned"}, "properties": {"kubernetesVersion": + "1.22.6", "dnsPrefix": "cliakstest-clitestpbgdit5du-8ecadf", "agentPoolProfiles": + [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": 128, "osDiskType": + "Managed", "kubeletDiskType": "OS", "workloadRuntime": "OCIContainer", "maxPods": + 110, "osType": "Linux", "osSKU": "Ubuntu", "enableAutoScaling": false, "type": + "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": "1.22.6", + "upgradeSettings": {}, "powerState": {"code": "Running"}, "enableNodePublicIP": + false, "enableCustomCATrust": false, "enableEncryptionAtHost": false, "enableUltraSSD": + false, "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "servicePrincipalProfile": {"clientId":"00000000-0000-0000-0000-000000000001"}, + "nodeResourceGroup": "MC_clitest000001_cliakstest000002_centraluseuap", "enableRBAC": + true, "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": + "kubenet", "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": + "10.0.0.10", "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", + "loadBalancerSku": "Standard", "loadBalancerProfile": {"managedOutboundIPs": + {"count": 1, "countIPv6": 0}, "effectiveOutboundIPs": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58"}]}, + "podCidrs": ["10.244.0.0/16"], "serviceCidrs": ["10.0.0.0/16"], "ipFamilies": + ["IPv4"]}, "identityProfile": {"kubeletidentity": {"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool", + "clientId":"00000000-0000-0000-0000-000000000001", "objectId":"00000000-0000-0000-0000-000000000001"}}, + "disableLocalAccounts": false, "securityProfile": {}, "storageProfile": {}}}' + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + Content-Length: + - '2878' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Updating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Updating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": false\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/20a65e6e-827b-4299-bbda-24c67136af0c?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '4434' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:39:12 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/20a65e6e-827b-4299-bbda-24c67136af0c?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"6e5ea620-7b82-9942-bbda-24c67136af0c\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:39:12.0452Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '123' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:39:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/20a65e6e-827b-4299-bbda-24c67136af0c?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"6e5ea620-7b82-9942-bbda-24c67136af0c\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:39:12.0452Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '123' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:40:12 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/20a65e6e-827b-4299-bbda-24c67136af0c?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"6e5ea620-7b82-9942-bbda-24c67136af0c\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:39:12.0452Z\",\n \"endTime\"\ + : \"2022-06-22T11:40:27.2815254Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '167' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:40:43 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": false\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4436' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:40:43 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --enable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": false\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4436' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:40:44 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "sku": {"name": "Basic", "tier": "Free"}, + "identity": {"type": "SystemAssigned"}, "properties": {"kubernetesVersion": + "1.22.6", "dnsPrefix": "cliakstest-clitestpbgdit5du-8ecadf", "agentPoolProfiles": + [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": 128, "osDiskType": + "Managed", "kubeletDiskType": "OS", "workloadRuntime": "OCIContainer", "maxPods": + 110, "osType": "Linux", "osSKU": "Ubuntu", "enableAutoScaling": false, "type": + "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": "1.22.6", + "upgradeSettings": {}, "powerState": {"code": "Running"}, "enableNodePublicIP": + false, "enableCustomCATrust": false, "enableEncryptionAtHost": false, "enableUltraSSD": + false, "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "servicePrincipalProfile": {"clientId":"00000000-0000-0000-0000-000000000001"}, + "nodeResourceGroup": "MC_clitest000001_cliakstest000002_centraluseuap", "enableRBAC": + true, "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": + "kubenet", "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": + "10.0.0.10", "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", + "loadBalancerSku": "Standard", "loadBalancerProfile": {"managedOutboundIPs": + {"count": 1, "countIPv6": 0}, "effectiveOutboundIPs": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58"}]}, + "podCidrs": ["10.244.0.0/16"], "serviceCidrs": ["10.0.0.0/16"], "ipFamilies": + ["IPv4"]}, "identityProfile": {"kubeletidentity": {"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool", + "clientId":"00000000-0000-0000-0000-000000000001", "objectId":"00000000-0000-0000-0000-000000000001"}}, + "disableLocalAccounts": false, "securityProfile": {}, "storageProfile": {"blobCSIDriver": + {"enabled": true}}}}' + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + Content-Length: + - '2912' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name -o --enable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Updating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Updating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/bc31b3fc-d013-46ec-861a-f9b2e9a5c4ed?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '4433' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:40:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --enable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/bc31b3fc-d013-46ec-861a-f9b2e9a5c4ed?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"fcb331bc-13d0-ec46-861a-f9b2e9a5c4ed\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:40:47.3591349Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:41:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --enable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/bc31b3fc-d013-46ec-861a-f9b2e9a5c4ed?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"fcb331bc-13d0-ec46-861a-f9b2e9a5c4ed\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:40:47.3591349Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:41:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --enable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/bc31b3fc-d013-46ec-861a-f9b2e9a5c4ed?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"fcb331bc-13d0-ec46-861a-f9b2e9a5c4ed\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:40:47.3591349Z\",\n \"\ + endTime\": \"2022-06-22T11:41:52.8965444Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:42:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -o --enable-blob-driver -y --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4435' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:42:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4435' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:42:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "sku": {"name": "Basic", "tier": "Free"}, + "identity": {"type": "SystemAssigned"}, "properties": {"kubernetesVersion": + "1.22.6", "dnsPrefix": "cliakstest-clitestpbgdit5du-8ecadf", "agentPoolProfiles": + [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": 128, "osDiskType": + "Managed", "kubeletDiskType": "OS", "workloadRuntime": "OCIContainer", "maxPods": + 110, "osType": "Linux", "osSKU": "Ubuntu", "enableAutoScaling": false, "type": + "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": "1.22.6", + "upgradeSettings": {}, "powerState": {"code": "Running"}, "enableNodePublicIP": + false, "enableCustomCATrust": false, "enableEncryptionAtHost": false, "enableUltraSSD": + false, "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "servicePrincipalProfile": {"clientId":"00000000-0000-0000-0000-000000000001"}, + "nodeResourceGroup": "MC_clitest000001_cliakstest000002_centraluseuap", "enableRBAC": + true, "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": + "kubenet", "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": + "10.0.0.10", "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", + "loadBalancerSku": "Standard", "loadBalancerProfile": {"managedOutboundIPs": + {"count": 1, "countIPv6": 0}, "effectiveOutboundIPs": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58"}]}, + "podCidrs": ["10.244.0.0/16"], "serviceCidrs": ["10.0.0.0/16"], "ipFamilies": + ["IPv4"]}, "identityProfile": {"kubeletidentity": {"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool", + "clientId":"00000000-0000-0000-0000-000000000001", "objectId":"00000000-0000-0000-0000-000000000001"}}, + "disableLocalAccounts": false, "securityProfile": {}, "storageProfile": {}}}' + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + Content-Length: + - '2878' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Updating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Updating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/58276e87-9d26-45a2-802b-590ecad735f2?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '4433' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:42:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/58276e87-9d26-45a2-802b-590ecad735f2?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"876e2758-269d-a245-802b-590ecad735f2\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:42:22.6418813Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:42:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/58276e87-9d26-45a2-802b-590ecad735f2?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"876e2758-269d-a245-802b-590ecad735f2\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:42:22.6418813Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:43:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/58276e87-9d26-45a2-802b-590ecad735f2?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"876e2758-269d-a245-802b-590ecad735f2\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:42:22.6418813Z\",\n \"\ + endTime\": \"2022-06-22T11:43:31.5398593Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:43:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/EnableBlobCSIDriver + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestpbgdit5du-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestpbgdit5du-8ecadf-afd071d7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/85598cd3-4e06-45f1-8f13-3b843c641f58\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n },\n \"blobCSIDriver\": {\n \"enabled\": true\n\ + \ }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n\ + \ },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\"\ + :\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\ + \n },\n \"sku\": {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n\ + \ }" + headers: + cache-control: + - no-cache + content-length: + - '4435' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:43:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --resource-group --name --yes --no-wait + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/8a254de3-3394-4309-824f-9427c20a5daa?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '0' + date: + - Wed, 22 Jun 2022 11:43:56 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operationresults/8a254de3-3394-4309-824f-9427c20a5daa?api-version=2016-03-30 + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +version: 1 diff --git a/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_ingress_appgw_addon_with_deprecated_subet_prefix.yaml b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_ingress_appgw_addon_with_deprecated_subet_prefix.yaml deleted file mode 100755 index b75df837266..00000000000 --- a/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_ingress_appgw_addon_with_deprecated_subet_prefix.yaml +++ /dev/null @@ -1,638 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001","name":"clitest000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-02T06:27:31Z"},"properties":{"provisioningState":"Succeeded"}}' - headers: - cache-control: - - no-cache - content-length: - - '305' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 02 Jun 2022 06:27:31 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"location": "westus2", "identity": {"type": "SystemAssigned"}, "properties": - {"kubernetesVersion": "", "dnsPrefix": "cliakstest-clitestxjvd625rb-8ecadf", - "agentPoolProfiles": [{"count": 3, "vmSize": "Standard_DS2_v2", "workloadRuntime": - "OCIContainer", "osType": "Linux", "enableAutoScaling": false, "type": "VirtualMachineScaleSets", - "mode": "System", "enableNodePublicIP": false, "enableCustomCATrust": false, - "scaleSetPriority": "Regular", "scaleSetEvictionPolicy": "Delete", "spotMaxPrice": - -1.0, "enableEncryptionAtHost": false, "enableUltraSSD": false, "enableFIPS": - false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": "azureuser", - "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfHAws2mKUr7m0Nr7rsXv80E79Dxfa95HPax+o9LqnPAxxa6WEaaLh8csiM15TOL4DBSGxfUisO61Qdx6zMDV3R0jIx9R2UQ94OEjjN0wi1LwbuESMCLoJvsI41U3+QD871NJVWQ+ySSlG9EiMgMJLnmUapOvZDJhV64rI4qvegZEQqoAP0SiKxTdOnzaPc+X9Iz0wAoPSXfwZYNiLsVbknnwADlxx+v5cujFO7X5lThCcBrdt5OBzOplsDMmk7uEpbVhER5oLjU0rw9/sWhrxF+hJO4L2QTnwFBpE0o2jTyuCsvS5l1OSjO/IX3M6avQT8oD7zvSQULCaOXmWr1H1 - azcli_aks_live_test@example.com\n"}]}}, "addonProfiles": {"ingressApplicationGateway": - {"enabled": true, "config": {"subnetCIDR": "10.232.0.0/16"}}}, "enableRBAC": - true, "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": - "kubenet", "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": - "10.0.0.10", "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", - "loadBalancerSku": "standard"}, "disableLocalAccounts": false, "storageProfile": - {}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - Content-Length: - - '1560' - Content-Type: - - application/json - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview - response: - body: - string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\",\n - \ \"location\": \"westus2\",\n \"name\": \"cliakstest000002\",\n \"type\": - \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\": {\n \"provisioningState\": - \"Creating\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"kubernetesVersion\": - \"1.22.6\",\n \"currentKubernetesVersion\": \"1.22.6\",\n \"dnsPrefix\": - \"cliakstest-clitestxjvd625rb-8ecadf\",\n \"fqdn\": \"cliakstest-clitestxjvd625rb-8ecadf-46e7c305.hcp.westus2.azmk8s.io\",\n - \ \"azurePortalFQDN\": \"cliakstest-clitestxjvd625rb-8ecadf-46e7c305.portal.hcp.westus2.azmk8s.io\",\n - \ \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \"count\": - 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\": 128,\n \"osDiskType\": - \"Managed\",\n \"kubeletDiskType\": \"OS\",\n \"workloadRuntime\": - \"OCIContainer\",\n \"maxPods\": 110,\n \"type\": \"VirtualMachineScaleSets\",\n - \ \"enableAutoScaling\": false,\n \"provisioningState\": \"Creating\",\n - \ \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": - \"1.22.6\",\n \"enableNodePublicIP\": false,\n \"enableCustomCATrust\": - false,\n \"mode\": \"System\",\n \"enableEncryptionAtHost\": false,\n - \ \"enableUltraSSD\": false,\n \"osType\": \"Linux\",\n \"osSKU\": - \"Ubuntu\",\n \"nodeImageVersion\": \"AKSUbuntu-1804gen2containerd-2022.05.16\",\n - \ \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n \"adminUsername\": - \"azureuser\",\n \"ssh\": {\n \"publicKeys\": [\n {\n \"keyData\": - \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfHAws2mKUr7m0Nr7rsXv80E79Dxfa95HPax+o9LqnPAxxa6WEaaLh8csiM15TOL4DBSGxfUisO61Qdx6zMDV3R0jIx9R2UQ94OEjjN0wi1LwbuESMCLoJvsI41U3+QD871NJVWQ+ySSlG9EiMgMJLnmUapOvZDJhV64rI4qvegZEQqoAP0SiKxTdOnzaPc+X9Iz0wAoPSXfwZYNiLsVbknnwADlxx+v5cujFO7X5lThCcBrdt5OBzOplsDMmk7uEpbVhER5oLjU0rw9/sWhrxF+hJO4L2QTnwFBpE0o2jTyuCsvS5l1OSjO/IX3M6avQT8oD7zvSQULCaOXmWr1H1 - azcli_aks_live_test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\": - {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \"addonProfiles\": - {\n \"ingressApplicationGateway\": {\n \"enabled\": true,\n \"config\": - {\n \"effectiveApplicationGatewayId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_westus2/providers/Microsoft.Network/applicationGateways/applicationgateway\",\n - \ \"subnetCIDR\": \"10.232.0.0/16\"\n }\n }\n },\n \"nodeResourceGroup\": - \"MC_clitest000001_cliakstest000002_westus2\",\n \"enableRBAC\": true,\n - \ \"enablePodSecurityPolicy\": false,\n \"networkProfile\": {\n \"networkPlugin\": - \"kubenet\",\n \"loadBalancerSku\": \"standard\",\n \"loadBalancerProfile\": - {\n \"managedOutboundIPs\": {\n \"count\": 1\n }\n },\n \"podCidr\": - \"10.244.0.0/16\",\n \"serviceCidr\": \"10.0.0.0/16\",\n \"dnsServiceIP\": - \"10.0.0.10\",\n \"dockerBridgeCidr\": \"172.17.0.1/16\",\n \"outboundType\": - \"loadBalancer\",\n \"podCidrs\": [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": - [\n \"10.0.0.0/16\"\n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n - \ },\n \"maxAgentPools\": 100,\n \"disableLocalAccounts\": false,\n \"securityProfile\": - {},\n \"storageProfile\": {\n \"diskCSIDriver\": {\n \"enabled\": - true\n },\n \"fileCSIDriver\": {\n \"enabled\": true\n },\n \"snapshotController\": - {\n \"enabled\": true\n }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": - false\n }\n },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n - \ \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": - {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n }" - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - cache-control: - - no-cache - content-length: - - '3640' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:27:35 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1196' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"InProgress\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '126' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:28:05 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"InProgress\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '126' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:28:35 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"InProgress\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '126' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:29:05 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"InProgress\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '126' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:29:35 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"InProgress\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '126' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:30:06 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"InProgress\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '126' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:30:35 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"InProgress\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '126' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:31:06 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/westus2/operations/980b6a4f-2102-49d3-b9d7-8d5a1ea97549?api-version=2016-03-30 - response: - body: - string: "{\n \"name\": \"4f6a0b98-0221-d349-b9d7-8d5a1ea97549\",\n \"status\": - \"Succeeded\",\n \"startTime\": \"2022-06-02T06:27:35.8333333Z\",\n \"endTime\": - \"2022-06-02T06:31:24.6009563Z\"\n }" - headers: - cache-control: - - no-cache - content-length: - - '170' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:31:36 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - aks create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --name --enable-managed-identity -a --appgw-subnet-prefix - --ssh-key-value -o - User-Agent: - - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 - (Linux-5.13.0-1025-azure-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview - response: - body: - string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\",\n - \ \"location\": \"westus2\",\n \"name\": \"cliakstest000002\",\n \"type\": - \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\": {\n \"provisioningState\": - \"Succeeded\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"kubernetesVersion\": - \"1.22.6\",\n \"currentKubernetesVersion\": \"1.22.6\",\n \"dnsPrefix\": - \"cliakstest-clitestxjvd625rb-8ecadf\",\n \"fqdn\": \"cliakstest-clitestxjvd625rb-8ecadf-46e7c305.hcp.westus2.azmk8s.io\",\n - \ \"azurePortalFQDN\": \"cliakstest-clitestxjvd625rb-8ecadf-46e7c305.portal.hcp.westus2.azmk8s.io\",\n - \ \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \"count\": - 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\": 128,\n \"osDiskType\": - \"Managed\",\n \"kubeletDiskType\": \"OS\",\n \"workloadRuntime\": - \"OCIContainer\",\n \"maxPods\": 110,\n \"type\": \"VirtualMachineScaleSets\",\n - \ \"enableAutoScaling\": false,\n \"provisioningState\": \"Succeeded\",\n - \ \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": - \"1.22.6\",\n \"enableNodePublicIP\": false,\n \"enableCustomCATrust\": - false,\n \"mode\": \"System\",\n \"enableEncryptionAtHost\": false,\n - \ \"enableUltraSSD\": false,\n \"osType\": \"Linux\",\n \"osSKU\": - \"Ubuntu\",\n \"nodeImageVersion\": \"AKSUbuntu-1804gen2containerd-2022.05.16\",\n - \ \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n \"adminUsername\": - \"azureuser\",\n \"ssh\": {\n \"publicKeys\": [\n {\n \"keyData\": - \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfHAws2mKUr7m0Nr7rsXv80E79Dxfa95HPax+o9LqnPAxxa6WEaaLh8csiM15TOL4DBSGxfUisO61Qdx6zMDV3R0jIx9R2UQ94OEjjN0wi1LwbuESMCLoJvsI41U3+QD871NJVWQ+ySSlG9EiMgMJLnmUapOvZDJhV64rI4qvegZEQqoAP0SiKxTdOnzaPc+X9Iz0wAoPSXfwZYNiLsVbknnwADlxx+v5cujFO7X5lThCcBrdt5OBzOplsDMmk7uEpbVhER5oLjU0rw9/sWhrxF+hJO4L2QTnwFBpE0o2jTyuCsvS5l1OSjO/IX3M6avQT8oD7zvSQULCaOXmWr1H1 - azcli_aks_live_test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\": - {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \"addonProfiles\": - {\n \"ingressApplicationGateway\": {\n \"enabled\": true,\n \"config\": - {\n \"effectiveApplicationGatewayId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_westus2/providers/Microsoft.Network/applicationGateways/applicationgateway\",\n - \ \"subnetCIDR\": \"10.232.0.0/16\"\n },\n \"identity\": {\n \"resourceId\": - \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ingressapplicationgateway-cliakstest000002\",\n - \ \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\":\"00000000-0000-0000-0000-000000000001\"\n - \ }\n }\n },\n \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_westus2\",\n - \ \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"networkProfile\": - {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\": \"Standard\",\n - \ \"loadBalancerProfile\": {\n \"managedOutboundIPs\": {\n \"count\": - 1\n },\n \"effectiveOutboundIPs\": [\n {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_westus2/providers/Microsoft.Network/publicIPAddresses/5b730d85-eaf6-48cf-b647-0aa77084a878\"\n - \ }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\": - \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\": - \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\": - [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\n - \ ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\": - 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\": - \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\",\n - \ \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\":\"00000000-0000-0000-0000-000000000001\"\n - \ }\n },\n \"disableLocalAccounts\": false,\n \"securityProfile\": - {},\n \"storageProfile\": {\n \"diskCSIDriver\": {\n \"enabled\": - true\n },\n \"fileCSIDriver\": {\n \"enabled\": true\n },\n \"snapshotController\": - {\n \"enabled\": true\n }\n },\n \"oidcIssuerProfile\": {\n \"enabled\": - false\n }\n },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n - \ \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": - {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n }" - headers: - cache-control: - - no-cache - content-length: - - '4667' - content-type: - - application/json - date: - - Thu, 02 Jun 2022 06:31:36 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - nginx - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -version: 1 diff --git a/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_overlay_network_plugin_mode.yaml b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_overlay_network_plugin_mode.yaml new file mode 100644 index 00000000000..f838c108c44 --- /dev/null +++ b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_overlay_network_plugin_mode.yaml @@ -0,0 +1,560 @@ +interactions: +- request: + body: '{"location": "centraluseuap", "identity": {"type": "SystemAssigned"}, "properties": + {"kubernetesVersion": "", "dnsPrefix": "cliakstest-clitestyf2zbpxlp-8ecadf", + "agentPoolProfiles": [{"count": 1, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": + 0, "workloadRuntime": "OCIContainer", "osType": "Linux", "enableAutoScaling": + false, "type": "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": + "", "upgradeSettings": {}, "enableNodePublicIP": false, "enableCustomCATrust": + false, "scaleSetPriority": "Regular", "scaleSetEvictionPolicy": "Delete", "spotMaxPrice": + -1.0, "nodeTaints": [], "enableEncryptionAtHost": false, "enableUltraSSD": false, + "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "addonProfiles": {}, "enableRBAC": true, "enablePodSecurityPolicy": + false, "networkProfile": {"networkPlugin": "azure", "networkPluginMode": "overlay", + "podCidr": "10.244.0.0/16", "outboundType": "loadBalancer", "loadBalancerSku": + "standard"}, "disableLocalAccounts": false, "storageProfile": {}}}' + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + Content-Length: + - '1827' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000001?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000001\",\n + \ \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000001\",\n \"type\": + \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\": {\n \"provisioningState\": + \"Creating\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"kubernetesVersion\": + \"1.22.11\",\n \"currentKubernetesVersion\": \"1.22.11\",\n \"dnsPrefix\": + \"cliakstest-clitestyf2zbpxlp-8ecadf\",\n \"fqdn\": \"cliakstest-clitestyf2zbpxlp-8ecadf-a050eee5.hcp.centraluseuap.azmk8s.io\",\n + \ \"azurePortalFQDN\": \"cliakstest-clitestyf2zbpxlp-8ecadf-a050eee5.portal.hcp.centraluseuap.azmk8s.io\",\n + \ \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \"count\": + 1,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\": 128,\n \"osDiskType\": + \"Managed\",\n \"kubeletDiskType\": \"OS\",\n \"workloadRuntime\": + \"OCIContainer\",\n \"maxPods\": 250,\n \"type\": \"VirtualMachineScaleSets\",\n + \ \"enableAutoScaling\": false,\n \"provisioningState\": \"Creating\",\n + \ \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": + \"1.22.11\",\n \"currentOrchestratorVersion\": \"1.22.11\",\n \"enableNodePublicIP\": + false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\",\n + \ \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\": + \"AKSUbuntu-1804gen2containerd-2022.06.29\",\n \"upgradeSettings\": {},\n + \ \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n \"adminUsername\": + \"azureuser\",\n \"ssh\": {\n \"publicKeys\": [\n {\n \"keyData\": + \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\\n\"\n }\n ]\n }\n },\n \"windowsProfile\": + {\n \"adminUsername\": \"azureuser\",\n \"enableCSIProxy\": true\n },\n + \ \"servicePrincipalProfile\": {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n + \ },\n \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000001_centraluseuap\",\n + \ \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"networkProfile\": + {\n \"networkPlugin\": \"azure\",\n \"networkPluginMode\": \"overlay\",\n + \ \"loadBalancerSku\": \"standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\": + {\n \"count\": 1\n }\n },\n \"podCidr\": \"10.244.0.0/16\",\n + \ \"serviceCidr\": \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n + \ \"dockerBridgeCidr\": \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n + \ \"podCidrs\": [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": + [\n \"10.0.0.0/16\"\n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n + \ },\n \"maxAgentPools\": 100,\n \"disableLocalAccounts\": false,\n \"securityProfile\": + {},\n \"storageProfile\": {\n \"diskCSIDriver\": {\n \"enabled\": + true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\": {\n \"enabled\": + true\n },\n \"snapshotController\": {\n \"enabled\": true\n }\n + \ },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n },\n \"identity\": + {\n \"type\": \"SystemAssigned\",\n \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n + \ \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": + {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/571f3ad6-a262-4d8d-880f-87768cab26ee?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '3847' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:37:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/571f3ad6-a262-4d8d-880f-87768cab26ee?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"d63a1f57-62a2-8d4d-880f-87768cab26ee\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-07-05T17:37:04.0704068Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:37:34 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/571f3ad6-a262-4d8d-880f-87768cab26ee?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"d63a1f57-62a2-8d4d-880f-87768cab26ee\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-07-05T17:37:04.0704068Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:38:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/571f3ad6-a262-4d8d-880f-87768cab26ee?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"d63a1f57-62a2-8d4d-880f-87768cab26ee\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-07-05T17:37:04.0704068Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:38:34 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/571f3ad6-a262-4d8d-880f-87768cab26ee?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"d63a1f57-62a2-8d4d-880f-87768cab26ee\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-07-05T17:37:04.0704068Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:39:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/571f3ad6-a262-4d8d-880f-87768cab26ee?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"d63a1f57-62a2-8d4d-880f-87768cab26ee\",\n \"status\": + \"InProgress\",\n \"startTime\": \"2022-07-05T17:37:04.0704068Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:39:34 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/571f3ad6-a262-4d8d-880f-87768cab26ee?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"d63a1f57-62a2-8d4d-880f-87768cab26ee\",\n \"status\": + \"Succeeded\",\n \"startTime\": \"2022-07-05T17:37:04.0704068Z\",\n \"endTime\": + \"2022-07-05T17:39:58.9605349Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:40:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + AKSHTTPCustomFeatures: + - Microsoft.ContainerService/AzureOverlayPreview + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --location --network-plugin --network-plugin-mode + --ssh-key-value --pod-cidr --node-count --aks-custom-headers + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000001?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000001\",\n + \ \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000001\",\n \"type\": + \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\": {\n \"provisioningState\": + \"Succeeded\",\n \"powerState\": {\n \"code\": \"Running\"\n },\n \"kubernetesVersion\": + \"1.22.11\",\n \"currentKubernetesVersion\": \"1.22.11\",\n \"dnsPrefix\": + \"cliakstest-clitestyf2zbpxlp-8ecadf\",\n \"fqdn\": \"cliakstest-clitestyf2zbpxlp-8ecadf-a050eee5.hcp.centraluseuap.azmk8s.io\",\n + \ \"azurePortalFQDN\": \"cliakstest-clitestyf2zbpxlp-8ecadf-a050eee5.portal.hcp.centraluseuap.azmk8s.io\",\n + \ \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \"count\": + 1,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\": 128,\n \"osDiskType\": + \"Managed\",\n \"kubeletDiskType\": \"OS\",\n \"workloadRuntime\": + \"OCIContainer\",\n \"maxPods\": 250,\n \"type\": \"VirtualMachineScaleSets\",\n + \ \"enableAutoScaling\": false,\n \"provisioningState\": \"Succeeded\",\n + \ \"powerState\": {\n \"code\": \"Running\"\n },\n \"orchestratorVersion\": + \"1.22.11\",\n \"currentOrchestratorVersion\": \"1.22.11\",\n \"enableNodePublicIP\": + false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\",\n + \ \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\": + \"AKSUbuntu-1804gen2containerd-2022.06.29\",\n \"upgradeSettings\": {},\n + \ \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n \"adminUsername\": + \"azureuser\",\n \"ssh\": {\n \"publicKeys\": [\n {\n \"keyData\": + \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\\n\"\n }\n ]\n }\n },\n \"windowsProfile\": + {\n \"adminUsername\": \"azureuser\",\n \"enableCSIProxy\": true\n },\n + \ \"servicePrincipalProfile\": {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n + \ },\n \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000001_centraluseuap\",\n + \ \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"networkProfile\": + {\n \"networkPlugin\": \"azure\",\n \"networkPluginMode\": \"overlay\",\n + \ \"loadBalancerSku\": \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\": + {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n {\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000001_centraluseuap/providers/Microsoft.Network/publicIPAddresses/23b77952-56d6-4114-8c24-bcbdea2c4d97\"\n + \ }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\": + \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\": + \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\": + [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\n + \ ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\": + 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000001_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000001-agentpool\",\n + \ \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\":\"00000000-0000-0000-0000-000000000001\"\n + \ }\n },\n \"disableLocalAccounts\": false,\n \"securityProfile\": + {},\n \"storageProfile\": {\n \"diskCSIDriver\": {\n \"enabled\": + true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\": {\n \"enabled\": + true\n },\n \"snapshotController\": {\n \"enabled\": true\n }\n + \ },\n \"oidcIssuerProfile\": {\n \"enabled\": false\n }\n },\n \"identity\": + {\n \"type\": \"SystemAssigned\",\n \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n + \ \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": + {\n \"name\": \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + cache-control: + - no-cache + content-length: + - '4512' + content-type: + - application/json + date: + - Tue, 05 Jul 2022 17:40:05 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g -n --yes --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerservice/19.1.0b Python/3.8.10 + (Linux-5.13.0-1031-azure-x86_64-with-glibc2.29) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000001?api-version=2022-05-02-preview + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/25f57498-79a4-4eef-a122-1fa26c406104?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 05 Jul 2022 17:40:06 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operationresults/25f57498-79a4-4eef-a122-1fa26c406104?api-version=2016-03-30 + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +version: 1 diff --git a/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_standard_blob_csi_driver.yaml b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_standard_blob_csi_driver.yaml new file mode 100644 index 00000000000..a405468a150 --- /dev/null +++ b/src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_with_standard_blob_csi_driver.yaml @@ -0,0 +1,1184 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.10.4 + (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001","name":"clitest000001","type":"Microsoft.Resources/resourceGroups","location":"centraluseuap","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:20:13Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '311' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:20:15 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "identity": {"type": "SystemAssigned"}, "properties": + {"kubernetesVersion": "", "dnsPrefix": "cliakstest-clitestxlqy2pj5e-8ecadf", + "agentPoolProfiles": [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": + 0, "workloadRuntime": "OCIContainer", "osType": "Linux", "enableAutoScaling": + false, "type": "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": + "", "upgradeSettings": {}, "enableNodePublicIP": false, "enableCustomCATrust": + false, "scaleSetPriority": "Regular", "scaleSetEvictionPolicy": "Delete", "spotMaxPrice": + -1.0, "nodeTaints": [], "enableEncryptionAtHost": false, "enableUltraSSD": false, + "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "addonProfiles": {}, "enableRBAC": true, "enablePodSecurityPolicy": + false, "networkProfile": {"networkPlugin": "kubenet", "podCidr": "10.244.0.0/16", + "serviceCidr": "10.0.0.0/16", "dnsServiceIP": "10.0.0.10", "dockerBridgeCidr": + "172.17.0.1/16", "outboundType": "loadBalancer", "loadBalancerSku": "standard"}, + "disableLocalAccounts": false, "storageProfile": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + Content-Length: + - '1893' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Creating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestxlqy2pj5e-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Creating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n }\n },\n \"podCidr\": \"10.244.0.0/16\"\ + ,\n \"serviceCidr\": \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\"\ + ,\n \"dockerBridgeCidr\": \"172.17.0.1/16\",\n \"outboundType\": \"\ + loadBalancer\",\n \"podCidrs\": [\n \"10.244.0.0/16\"\n ],\n \ + \ \"serviceCidrs\": [\n \"10.0.0.0/16\"\n ],\n \"ipFamilies\": [\n\ + \ \"IPv4\"\n ]\n },\n \"maxAgentPools\": 100,\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n }\n },\n \"oidcIssuerProfile\": {\n \"enabled\"\ + : false\n }\n },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n\ + \ \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\"\ + : \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": {\n \"name\"\ + : \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '3719' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:20:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:20:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:21:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:21:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:22:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:22:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:23:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:23:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:24:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/f5a2f755-ab1c-46ac-a8a5-6f9523e7fb3d?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"55f7a2f5-1cab-ac46-a8a5-6f9523e7fb3d\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:20:21.1530396Z\",\n \"\ + endTime\": \"2022-06-22T11:24:23.1802317Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:24:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --ssh-key-value -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestxlqy2pj5e-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/588fdfc6-1d1f-4863-83c9-3394255a739e\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n }\n },\n \"oidcIssuerProfile\": {\n \"enabled\"\ + : false\n }\n },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n\ + \ \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\"\ + : \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": {\n \"name\"\ + : \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + cache-control: + - no-cache + content-length: + - '4384' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:24:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestxlqy2pj5e-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/588fdfc6-1d1f-4863-83c9-3394255a739e\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n }\n },\n \"oidcIssuerProfile\": {\n \"enabled\"\ + : false\n }\n },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n\ + \ \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\"\ + : \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": {\n \"name\"\ + : \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + cache-control: + - no-cache + content-length: + - '4384' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:24:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "sku": {"name": "Basic", "tier": "Free"}, + "identity": {"type": "SystemAssigned"}, "properties": {"kubernetesVersion": + "1.22.6", "dnsPrefix": "cliakstest-clitestxlqy2pj5e-8ecadf", "agentPoolProfiles": + [{"count": 3, "vmSize": "Standard_DS2_v2", "osDiskSizeGB": 128, "osDiskType": + "Managed", "kubeletDiskType": "OS", "workloadRuntime": "OCIContainer", "maxPods": + 110, "osType": "Linux", "osSKU": "Ubuntu", "enableAutoScaling": false, "type": + "VirtualMachineScaleSets", "mode": "System", "orchestratorVersion": "1.22.6", + "upgradeSettings": {}, "powerState": {"code": "Running"}, "enableNodePublicIP": + false, "enableCustomCATrust": false, "enableEncryptionAtHost": false, "enableUltraSSD": + false, "enableFIPS": false, "name": "nodepool1"}], "linuxProfile": {"adminUsername": + "azureuser", "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ== + test@example.com\n"}]}}, "servicePrincipalProfile": {"clientId":"00000000-0000-0000-0000-000000000001"}, + "nodeResourceGroup": "MC_clitest000001_cliakstest000002_centraluseuap", "enableRBAC": + true, "enablePodSecurityPolicy": false, "networkProfile": {"networkPlugin": + "kubenet", "podCidr": "10.244.0.0/16", "serviceCidr": "10.0.0.0/16", "dnsServiceIP": + "10.0.0.10", "dockerBridgeCidr": "172.17.0.1/16", "outboundType": "loadBalancer", + "loadBalancerSku": "Standard", "loadBalancerProfile": {"managedOutboundIPs": + {"count": 1, "countIPv6": 0}, "effectiveOutboundIPs": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/588fdfc6-1d1f-4863-83c9-3394255a739e"}]}, + "podCidrs": ["10.244.0.0/16"], "serviceCidrs": ["10.0.0.0/16"], "ipFamilies": + ["IPv4"]}, "identityProfile": {"kubeletidentity": {"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool", + "clientId":"00000000-0000-0000-0000-000000000001", "objectId":"00000000-0000-0000-0000-000000000001"}}, + "disableLocalAccounts": false, "securityProfile": {}, "storageProfile": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + Content-Length: + - '2878' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name -y -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Updating\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestxlqy2pj5e-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Updating\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/588fdfc6-1d1f-4863-83c9-3394255a739e\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n }\n },\n \"oidcIssuerProfile\": {\n \"enabled\"\ + : false\n }\n },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n\ + \ \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\"\ + : \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": {\n \"name\"\ + : \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/4446de91-f394-498a-904a-21458b910151?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '4382' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:24:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/4446de91-f394-498a-904a-21458b910151?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"91de4644-94f3-8a49-904a-21458b910151\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:24:56.9698926Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:25:27 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/4446de91-f394-498a-904a-21458b910151?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"91de4644-94f3-8a49-904a-21458b910151\",\n \"status\"\ + : \"InProgress\",\n \"startTime\": \"2022-06-22T11:24:56.9698926Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '126' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:25:58 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/4446de91-f394-498a-904a-21458b910151?api-version=2016-03-30 + response: + body: + string: "{\n \"name\": \"91de4644-94f3-8a49-904a-21458b910151\",\n \"status\"\ + : \"Succeeded\",\n \"startTime\": \"2022-06-22T11:24:56.9698926Z\",\n \"\ + endTime\": \"2022-06-22T11:26:19.6948368Z\"\n }" + headers: + cache-control: + - no-cache + content-length: + - '170' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:26:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - aks update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name -y -o + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002\"\ + ,\n \"location\": \"centraluseuap\",\n \"name\": \"cliakstest000002\",\n\ + \ \"type\": \"Microsoft.ContainerService/ManagedClusters\",\n \"properties\"\ + : {\n \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \"\ + code\": \"Running\"\n },\n \"kubernetesVersion\": \"1.22.6\",\n \"currentKubernetesVersion\"\ + : \"1.22.6\",\n \"dnsPrefix\": \"cliakstest-clitestxlqy2pj5e-8ecadf\",\n\ + \ \"fqdn\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"azurePortalFQDN\": \"cliakstest-clitestxlqy2pj5e-8ecadf-fc733cc7.portal.hcp.centraluseuap.azmk8s.io\"\ + ,\n \"agentPoolProfiles\": [\n {\n \"name\": \"nodepool1\",\n \ + \ \"count\": 3,\n \"vmSize\": \"Standard_DS2_v2\",\n \"osDiskSizeGB\"\ + : 128,\n \"osDiskType\": \"Managed\",\n \"kubeletDiskType\": \"OS\"\ + ,\n \"workloadRuntime\": \"OCIContainer\",\n \"maxPods\": 110,\n \ + \ \"type\": \"VirtualMachineScaleSets\",\n \"enableAutoScaling\": false,\n\ + \ \"provisioningState\": \"Succeeded\",\n \"powerState\": {\n \ + \ \"code\": \"Running\"\n },\n \"orchestratorVersion\": \"1.22.6\"\ + ,\n \"currentOrchestratorVersion\": \"1.22.6\",\n \"enableNodePublicIP\"\ + : false,\n \"enableCustomCATrust\": false,\n \"mode\": \"System\"\ + ,\n \"enableEncryptionAtHost\": false,\n \"enableUltraSSD\": false,\n\ + \ \"osType\": \"Linux\",\n \"osSKU\": \"Ubuntu\",\n \"nodeImageVersion\"\ + : \"AKSUbuntu-1804gen2containerd-2022.06.13\",\n \"upgradeSettings\":\ + \ {},\n \"enableFIPS\": false\n }\n ],\n \"linuxProfile\": {\n\ + \ \"adminUsername\": \"azureuser\",\n \"ssh\": {\n \"publicKeys\"\ + : [\n {\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbIg1guRHbI0lV11wWDt1r2cUdcNd27CJsg+SfgC7miZeubtwUhbsPdhMQsfDyhOWHq1+ZL0M+nJZV63d/1dhmhtgyOqejUwrPlzKhydsbrsdUor+JmNJDdW01v7BXHyuymT8G4s09jCasNOwiufbP/qp72ruu0bIA1nySsvlf9pCQAuFkAnVnf/rFhUlOkhtRpwcq8SUNY2zRHR/EKb/4NWY1JzR4sa3q2fWIJdrrX0DvLoa5g9bIEd4Df79ba7v+yiUBOS0zT2ll+z4g9izHK3EO5d8hL4jYxcjKs+wcslSYRWrascfscLgMlMGh0CdKeNTDjHpGPncaf3Z+FwwwjWeuiNBxv7bJo13/8B/098KlVDl4GZqsoBCEjPyJfV6hO0y/LkRGkk7oHWKgeWAfKtfLItRp00eZ4fcJNK9kCaSMmEugoZWcI7NGbZXzqFWqbpRI7NcDP9+WIQ+i9U5vqWsqd/zng4kbuAJ6UuKqIzB0upYrLShfQE3SAck8oaLhJqqq56VfDuASNpJKidV+zq27HfSBmbXnkR/5AK337dc3MXKJypoK/QPMLKUAP5XLPbs+NddJQV7EZXd29DLgp+fRIg3edpKdO7ZErWhv7d+3Kws+e1Y+ypmR2WIVSwVyBEUfgv2C8Ts9gnTF4pNcEY/S2aBicz5Ew2+jdyGNQQ==\ + \ test@example.com\\n\"\n }\n ]\n }\n },\n \"servicePrincipalProfile\"\ + : {\n \"clientId\":\"00000000-0000-0000-0000-000000000001\"\n },\n \ + \ \"nodeResourceGroup\": \"MC_clitest000001_cliakstest000002_centraluseuap\"\ + ,\n \"enableRBAC\": true,\n \"enablePodSecurityPolicy\": false,\n \"\ + networkProfile\": {\n \"networkPlugin\": \"kubenet\",\n \"loadBalancerSku\"\ + : \"Standard\",\n \"loadBalancerProfile\": {\n \"managedOutboundIPs\"\ + : {\n \"count\": 1\n },\n \"effectiveOutboundIPs\": [\n \ + \ {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.Network/publicIPAddresses/588fdfc6-1d1f-4863-83c9-3394255a739e\"\ + \n }\n ]\n },\n \"podCidr\": \"10.244.0.0/16\",\n \"serviceCidr\"\ + : \"10.0.0.0/16\",\n \"dnsServiceIP\": \"10.0.0.10\",\n \"dockerBridgeCidr\"\ + : \"172.17.0.1/16\",\n \"outboundType\": \"loadBalancer\",\n \"podCidrs\"\ + : [\n \"10.244.0.0/16\"\n ],\n \"serviceCidrs\": [\n \"10.0.0.0/16\"\ + \n ],\n \"ipFamilies\": [\n \"IPv4\"\n ]\n },\n \"maxAgentPools\"\ + : 100,\n \"identityProfile\": {\n \"kubeletidentity\": {\n \"resourceId\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/MC_clitest000001_cliakstest000002_centraluseuap/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cliakstest000002-agentpool\"\ + ,\n \"clientId\":\"00000000-0000-0000-0000-000000000001\",\n \"objectId\"\ + :\"00000000-0000-0000-0000-000000000001\"\n }\n },\n \"disableLocalAccounts\"\ + : false,\n \"securityProfile\": {},\n \"storageProfile\": {\n \"diskCSIDriver\"\ + : {\n \"enabled\": true,\n \"version\": \"v1\"\n },\n \"fileCSIDriver\"\ + : {\n \"enabled\": true\n },\n \"snapshotController\": {\n \"\ + enabled\": true\n }\n },\n \"oidcIssuerProfile\": {\n \"enabled\"\ + : false\n }\n },\n \"identity\": {\n \"type\": \"SystemAssigned\",\n\ + \ \"principalId\":\"00000000-0000-0000-0000-000000000001\",\n \"tenantId\"\ + : \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\n },\n \"sku\": {\n \"name\"\ + : \"Basic\",\n \"tier\": \"Free\"\n }\n }" + headers: + cache-control: + - no-cache + content-length: + - '4384' + content-type: + - application/json + date: + - Wed, 22 Jun 2022 11:26:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - aks delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --resource-group --name --yes --no-wait + User-Agent: + - AZURECLI/2.37.0 (DOCKER) azsdk-python-azure-mgmt-containerservice/19.1.0b + Python/3.10.4 (Linux-5.13.0-1022-azure-x86_64-with) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ContainerService/managedClusters/cliakstest000002?api-version=2022-05-02-preview + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operations/b1e2c091-5fc1-4af6-8cfd-78c4d8e0dd54?api-version=2016-03-30 + cache-control: + - no-cache + content-length: + - '0' + date: + - Wed, 22 Jun 2022 11:26:29 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/centraluseuap/operationresults/b1e2c091-5fc1-4af6-8cfd-78c4d8e0dd54?api-version=2016-03-30 + pragma: + - no-cache + server: + - nginx + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +version: 1 diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_agentpool_decorator.py b/src/aks-preview/azext_aks_preview/tests/latest/test_agentpool_decorator.py index 4588c91fb3d..c48078091b1 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_agentpool_decorator.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_agentpool_decorator.py @@ -28,7 +28,7 @@ ) from azure.cli.command_modules.acs.agentpool_decorator import AKSAgentPoolParamDict from azure.cli.command_modules.acs.tests.latest.mocks import MockCLI, MockClient, MockCmd -from azure.cli.core.azclierror import CLIInternalError, InvalidArgumentValueError +from azure.cli.core.azclierror import CLIInternalError, InvalidArgumentValueError, MutuallyExclusiveArgumentError class AKSPreviewAgentPoolContextCommonTestCase(unittest.TestCase): @@ -194,6 +194,69 @@ def common_get_workload_runtime(self): ctx_1.attach_agentpool(agentpool_1) self.assertEqual(ctx_1.get_workload_runtime(), "test_workload_runtime") + def common_get_enable_custom_ca_trust(self): + # default + ctx_1 = AKSPreviewAgentPoolContext( + self.cmd, + AKSAgentPoolParamDict({"enable_custom_ca_trust": True}), + self.models, + DecoratorMode.CREATE, + self.agentpool_decorator_mode, + ) + self.assertEqual(ctx_1.get_enable_custom_ca_trust(), True) + agentpool_1 = self.create_initialized_agentpool_instance(enable_custom_ca_trust=False) + ctx_1.attach_agentpool(agentpool_1) + self.assertEqual(ctx_1.get_enable_custom_ca_trust(), False) + + # custom + ctx_2 = AKSPreviewAgentPoolContext( + self.cmd, + AKSAgentPoolParamDict({"enable_custom_ca_trust": True}), + self.models, + DecoratorMode.UPDATE, + self.agentpool_decorator_mode, + ) + self.assertEqual(ctx_2.get_enable_custom_ca_trust(), True) + agentpool_2 = self.create_initialized_agentpool_instance(enable_custom_ca_trust=False) + ctx_2.attach_agentpool(agentpool_2) + self.assertEqual(ctx_2.get_enable_custom_ca_trust(), True) + + # custom + ctx_3 = AKSPreviewAgentPoolContext( + self.cmd, + AKSAgentPoolParamDict({"enable_custom_ca_trust": True, "disable_custom_ca_trust": True}), + self.models, + DecoratorMode.UPDATE, + self.agentpool_decorator_mode, + ) + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_3.get_enable_custom_ca_trust() + + def common_get_disable_custom_ca_trust(self): + # default + ctx_1 = AKSPreviewAgentPoolContext( + self.cmd, + AKSAgentPoolParamDict({"disable_custom_ca_trust": True}), + self.models, + DecoratorMode.UPDATE, + self.agentpool_decorator_mode, + ) + self.assertEqual(ctx_1.get_disable_custom_ca_trust(), True) + agentpool_1 = self.create_initialized_agentpool_instance(enable_custom_ca_trust=True) + ctx_1.attach_agentpool(agentpool_1) + self.assertEqual(ctx_1.get_disable_custom_ca_trust(), True) + + # custom + ctx_2 = AKSPreviewAgentPoolContext( + self.cmd, + AKSAgentPoolParamDict({"enable_custom_ca_trust": True, "disable_custom_ca_trust": True}), + self.models, + DecoratorMode.UPDATE, + self.agentpool_decorator_mode, + ) + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_2.get_disable_custom_ca_trust() + class AKSPreviewAgentPoolContextStandaloneModeTestCase(AKSPreviewAgentPoolContextCommonTestCase): def setUp(self): @@ -223,6 +286,12 @@ def test_get_gpu_instance_profile(self): def test_get_workload_runtime(self): self.common_get_workload_runtime() + def test_get_enable_custom_ca_trust(self): + self.common_get_enable_custom_ca_trust() + + def test_get_disable_custom_ca_trust(self): + self.common_get_disable_custom_ca_trust() + class AKSPreviewAgentPoolContextManagedClusterModeTestCase(AKSPreviewAgentPoolContextCommonTestCase): def setUp(self): @@ -252,6 +321,12 @@ def test_get_gpu_instance_profile(self): def test_get_workload_runtime(self): self.common_get_workload_runtime() + def test_get_enable_custom_ca_trust(self): + self.common_get_enable_custom_ca_trust() + + def test_get_disable_custom_ca_trust(self): + self.common_get_disable_custom_ca_trust() + class AKSPreviewAgentPoolAddDecoratorCommonTestCase(unittest.TestCase): def _remove_defaults_in_agentpool(self, agentpool): @@ -344,10 +419,10 @@ def common_set_up_gpu_propertes(self): ) # fail on passing the wrong agentpool object with self.assertRaises(CLIInternalError): - dec_1.set_up_gpu_propertes(None) + dec_1.set_up_gpu_properties(None) agentpool_1 = self.create_initialized_agentpool_instance(restore_defaults=False) dec_1.context.attach_agentpool(agentpool_1) - dec_agentpool_1 = dec_1.set_up_gpu_propertes(agentpool_1) + dec_agentpool_1 = dec_1.set_up_gpu_properties(agentpool_1) dec_agentpool_1 = self._restore_defaults_in_agentpool(dec_agentpool_1) ground_truth_agentpool_1 = self.create_initialized_agentpool_instance( gpu_instance_profile="test_gpu_instance_profile", @@ -355,6 +430,26 @@ def common_set_up_gpu_propertes(self): ) self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1) + def common_set_up_custom_ca_trust(self): + dec_1 = AKSPreviewAgentPoolAddDecorator( + self.cmd, + self.client, + {"enable_custom_ca_trust": True}, + self.resource_type, + self.agentpool_decorator_mode, + ) + # fail on passing the wrong agentpool object + with self.assertRaises(CLIInternalError): + dec_1.set_up_custom_ca_trust(None) + agentpool_1 = self.create_initialized_agentpool_instance(restore_defaults=False) + dec_1.context.attach_agentpool(agentpool_1) + dec_agentpool_1 = dec_1.set_up_custom_ca_trust(agentpool_1) + dec_agentpool_1 = self._restore_defaults_in_agentpool(dec_agentpool_1) + ground_truth_agentpool_1 = self.create_initialized_agentpool_instance( + enable_custom_ca_trust=True, + ) + self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1) + class AKSPreviewAgentPoolAddDecoratorStandaloneModeTestCase(AKSPreviewAgentPoolAddDecoratorCommonTestCase): def setUp(self): @@ -376,6 +471,9 @@ def test_set_up_motd(self): def test_set_up_gpu_propertes(self): self.common_set_up_gpu_propertes() + def test_set_up_custom_ca_trust(self): + self.common_set_up_custom_ca_trust() + def test_construct_agentpool_profile_preview(self): import inspect @@ -438,6 +536,7 @@ def test_construct_agentpool_profile_preview(self): mode=CONST_NODEPOOL_MODE_USER, scale_down_mode=CONST_SCALE_DOWN_MODE_DELETE, workload_runtime=CONST_WORKLOAD_RUNTIME_OCI_CONTAINER, + enable_custom_ca_trust=False, ) self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1) @@ -464,6 +563,9 @@ def test_set_up_motd(self): def test_set_up_gpu_propertes(self): self.common_set_up_gpu_propertes() + def test_set_up_custom_ca_trust(self): + self.common_set_up_custom_ca_trust() + def test_construct_agentpool_profile_preview(self): import inspect @@ -526,6 +628,7 @@ def test_construct_agentpool_profile_preview(self): enable_fips=False, mode=CONST_NODEPOOL_MODE_SYSTEM, workload_runtime=CONST_WORKLOAD_RUNTIME_OCI_CONTAINER, + enable_custom_ca_trust=False, ) self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1) @@ -573,6 +676,47 @@ def create_initialized_agentpool_instance( self._restore_defaults_in_agentpool(agentpool) return agentpool + def common_update_custom_ca_trust(self): + dec_1 = AKSPreviewAgentPoolUpdateDecorator( + self.cmd, + self.client, + {"enable_custom_ca_trust": True, "disable_custom_ca_trust": False}, + self.resource_type, + self.agentpool_decorator_mode, + ) + # fail on passing the wrong agentpool object + with self.assertRaises(CLIInternalError): + dec_1.update_vm_properties(None) + agentpool_1 = self.create_initialized_agentpool_instance( + enable_custom_ca_trust=False, + ) + dec_1.context.attach_agentpool(agentpool_1) + dec_agentpool_1 = dec_1.update_custom_ca_trust(agentpool_1) + grond_truth_agentpool_1 = self.create_initialized_agentpool_instance( + enable_custom_ca_trust=True, + ) + self.assertEqual(dec_agentpool_1, grond_truth_agentpool_1) + + dec_2 = AKSPreviewAgentPoolUpdateDecorator( + self.cmd, + self.client, + {"enable_custom_ca_trust": False, "disable_custom_ca_trust": True}, + self.resource_type, + self.agentpool_decorator_mode, + ) + # fail on passing the wrong agentpool object + with self.assertRaises(CLIInternalError): + dec_2.update_vm_properties(None) + agentpool_2 = self.create_initialized_agentpool_instance( + enable_custom_ca_trust=True, + ) + dec_2.context.attach_agentpool(agentpool_2) + dec_agentpool_2 = dec_2.update_custom_ca_trust(agentpool_2) + grond_truth_agentpool_2 = self.create_initialized_agentpool_instance( + enable_custom_ca_trust=False, + ) + self.assertEqual(dec_agentpool_2, grond_truth_agentpool_2) + class AKSPreviewAgentPoolUpdateDecoratorStandaloneModeTestCase(AKSPreviewAgentPoolUpdateDecoratorCommonTestCase): def setUp(self): @@ -585,6 +729,9 @@ def setUp(self): self.models = AKSPreviewAgentPoolModels(self.cmd, self.resource_type, self.agentpool_decorator_mode) self.client = MockClient() + def test_update_custom_ca_trust(self): + self.common_update_custom_ca_trust() + def test_update_agentpool_profile_preview(self): import inspect @@ -645,6 +792,9 @@ def setUp(self): self.models = AKSPreviewAgentPoolModels(self.cmd, self.resource_type, self.agentpool_decorator_mode) self.client = MockClient() + def test_update_custom_ca_trust(self): + self.common_update_custom_ca_trust() + def test_update_agentpool_profile_preview(self): import inspect diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py b/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py index 3d243391f2d..6402482e33a 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py @@ -3,22 +3,21 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -import base64 import os import pty import subprocess import tempfile -from azure.cli.testsdk import ( - ScenarioTest, live_only) +from azext_aks_preview.tests.latest.custom_preparers import ( + AKSCustomResourceGroupPreparer, +) +from azext_aks_preview.tests.latest.recording_processors import KeyReplacer from azure.cli.command_modules.acs._format import version_to_tuple -from azure.cli.testsdk import CliTestError +from azure.cli.core.azclierror import AzureInternalError, BadRequestError +from azure.cli.testsdk import CliTestError, ScenarioTest, live_only from azure.cli.testsdk.scenario_tests import AllowLargeResponse -from knack.util import CLIError from azure.core.exceptions import HttpResponseError - -from .recording_processors import KeyReplacer -from .custom_preparers import AKSCustomResourceGroupPreparer +from knack.util import CLIError def _get_test_data_file(filename): @@ -281,26 +280,6 @@ def test_aks_create_with_ingress_appgw_addon(self, resource_group, resource_grou 'addonProfiles.ingressApplicationGateway.config.subnetCIDR', "10.232.0.0/16") ]) - @AllowLargeResponse() - @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='westus2') - def test_aks_create_with_ingress_appgw_addon_with_deprecated_subet_prefix(self, resource_group, resource_group_location): - aks_name = self.create_random_name('cliakstest', 16) - self.kwargs.update({ - 'resource_group': resource_group, - 'name': aks_name, - 'ssh_key_value': self.generate_ssh_keys() - }) - - create_cmd = 'aks create --resource-group={resource_group} --name={name} --enable-managed-identity ' \ - '-a ingress-appgw --appgw-subnet-prefix 10.232.0.0/16 ' \ - '--ssh-key-value={ssh_key_value} -o json' - self.cmd(create_cmd, checks=[ - self.check('provisioningState', 'Succeeded'), - self.check('addonProfiles.ingressApplicationGateway.enabled', True), - self.check( - 'addonProfiles.ingressApplicationGateway.config.subnetCIDR', "10.232.0.0/16") - ]) - @live_only() @AllowLargeResponse() @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='westus2') @@ -2307,17 +2286,17 @@ def create_new_cluster_with_monitoring_aad_auth(self, resource_group, resource_g workspace_resource_group = workspace_resource_id.split("/")[4] # check that the DCR was created - dataCollectionRuleName = f"MSCI-{workspace_name}" + dataCollectionRuleName = f"MSCI-{aks_name}-{resource_group_location}" dcr_resource_id = f"/subscriptions/{subscription}/resourceGroups/{workspace_resource_group}/providers/Microsoft.Insights/dataCollectionRules/{dataCollectionRuleName}" - get_cmd = f'rest --method get --url https://management.azure.com{dcr_resource_id}?api-version=2019-11-01-preview' + get_cmd = f'rest --method get --url https://management.azure.com{dcr_resource_id}?api-version=2021-04-01' self.cmd(get_cmd, checks=[ self.check( 'properties.destinations.logAnalytics[0].workspaceResourceId', f'{workspace_resource_id}') ]) # check that the DCR-A was created - dcra_resource_id = f"{cluster_resource_id}/providers/Microsoft.Insights/dataCollectionRuleAssociations/send-to-{workspace_name}" - get_cmd = f'rest --method get --url https://management.azure.com{dcra_resource_id}?api-version=2019-11-01-preview' + dcra_resource_id = f"{cluster_resource_id}/providers/Microsoft.Insights/dataCollectionRuleAssociations/ContainerInsightsExtension" + get_cmd = f'rest --method get --url https://management.azure.com{dcra_resource_id}?api-version=2021-04-01' self.cmd(get_cmd, checks=[ self.check('properties.dataCollectionRuleId', f'{dcr_resource_id}') ]) @@ -2385,17 +2364,17 @@ def enable_monitoring_existing_cluster_aad_atuh(self, resource_group, resource_g workspace_resource_group = workspace_resource_id.split("/")[4] # check that the DCR was created - dataCollectionRuleName = f"MSCI-{workspace_name}" + dataCollectionRuleName = f"MSCI-{aks_name}-{resource_group_location}" dcr_resource_id = f"/subscriptions/{subscription}/resourceGroups/{workspace_resource_group}/providers/Microsoft.Insights/dataCollectionRules/{dataCollectionRuleName}" - get_cmd = f'rest --method get --url https://management.azure.com{dcr_resource_id}?api-version=2019-11-01-preview' + get_cmd = f'rest --method get --url https://management.azure.com{dcr_resource_id}?api-version=2021-04-01' self.cmd(get_cmd, checks=[ self.check( 'properties.destinations.logAnalytics[0].workspaceResourceId', f'{workspace_resource_id}') ]) # check that the DCR-A was created - dcra_resource_id = f"{cluster_resource_id}/providers/Microsoft.Insights/dataCollectionRuleAssociations/send-to-{workspace_name}" - get_cmd = f'rest --method get --url https://management.azure.com{dcra_resource_id}?api-version=2019-11-01-preview' + dcra_resource_id = f"{cluster_resource_id}/providers/Microsoft.Insights/dataCollectionRuleAssociations/ContainerInsightsExtension" + get_cmd = f'rest --method get --url https://management.azure.com{dcra_resource_id}?api-version=2021-04-01' self.cmd(get_cmd, checks=[ self.check('properties.dataCollectionRuleId', f'{dcr_resource_id}') ]) @@ -2438,14 +2417,13 @@ def test_aks_create_with_monitoring_legacy_auth(self, resource_group, resource_g cluster_resource_id = response["id"] subscription = cluster_resource_id.split("/")[2] workspace_resource_id = response["addonProfiles"]["omsagent"]["config"]["logAnalyticsWorkspaceResourceID"] - workspace_name = workspace_resource_id.split("/")[-1] workspace_resource_group = workspace_resource_id.split("/")[4] try: # check that the DCR was created - dataCollectionRuleName = f"MSCI-{workspace_name}" + dataCollectionRuleName = f"MSCI-{aks_name}-{resource_group_location}" dcr_resource_id = f"/subscriptions/{subscription}/resourceGroups/{workspace_resource_group}/providers/Microsoft.Insights/dataCollectionRules/{dataCollectionRuleName}" - get_cmd = f'rest --method get --url https://management.azure.com{dcr_resource_id}?api-version=2019-11-01-preview' + get_cmd = f'rest --method get --url https://management.azure.com{dcr_resource_id}?api-version=2021-04-01' self.cmd(get_cmd, checks=[ self.check( 'properties.destinations.logAnalytics[0].workspaceResourceId', f'{workspace_resource_id}') @@ -3290,6 +3268,36 @@ def test_aks_create_with_windows_gmsa(self, resource_group, resource_group_locat self.cmd( 'aks delete -g {resource_group} -n {name} --yes --no-wait', checks=[self.is_empty()]) + @AllowLargeResponse() + @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='centraluseuap', preserve_default_location=True) + def test_aks_create_with_overlay_network_plugin_mode(self, resource_group, resource_group_location): + # reset the count so in replay mode the random names will start with 0 + self.test_resources_count = 0 + # kwargs for string formatting + aks_name = self.create_random_name('cliakstest', 16) + self.kwargs.update({ + 'resource_group': resource_group, + 'name': aks_name, + 'location': resource_group_location, + 'resource_type': 'Microsoft.ContainerService/ManagedClusters', + 'ssh_key_value': self.generate_ssh_keys(), + }) + + # create + create_cmd = 'aks create --resource-group={resource_group} --name={name} --location={location} ' \ + '--network-plugin azure --network-plugin-mode overlay --ssh-key-value={ssh_key_value} ' \ + '--pod-cidr 10.244.0.0/16 --node-count 1 ' \ + '--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/AzureOverlayPreview' + self.cmd(create_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('networkProfile.podCidr', '10.244.0.0/16'), + self.check('networkProfile.networkPluginMode', 'overlay'), + ]) + + # delete + self.cmd( + 'aks delete -g {resource_group} -n {name} --yes --no-wait', checks=[self.is_empty()]) + @AllowLargeResponse() @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='centraluseuap', preserve_default_location=True) def test_aks_create_dualstack_with_default_network(self, resource_group, resource_group_location): @@ -4096,6 +4104,187 @@ def test_aks_update_with_azurekeyvaultkms(self, resource_group, resource_group_l self.is_empty(), ]) + @live_only() + @AllowLargeResponse() + @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='centraluseuap', preserve_default_location=True) + def test_aks_create_with_azurekeyvaultkms_private_key_vault(self, resource_group, resource_group_location): + aks_name = self.create_random_name('cliakstest', 16) + kv_name = self.create_random_name('cliakstestkv', 16) + identity_name = self.create_random_name('cliakstestidentity', 24) + self.kwargs.update({ + 'resource_group': resource_group, + 'name': aks_name, + "kv_name": kv_name, + "identity_name": identity_name, + 'ssh_key_value': self.generate_ssh_keys() + }) + + # create user-assigned identity + create_identity = 'identity create --resource-group={resource_group} --name={identity_name} -o json' + identity = self.cmd(create_identity).get_output_in_json() + identity_id = identity['id'] + identity_object_id = identity['principalId'] + assert identity_id is not None + assert identity_object_id is not None + self.kwargs.update({ + 'identity_id': identity_id, + 'identity_object_id': identity_object_id, + }) + + # create key vault and key + create_keyvault = 'keyvault create --resource-group={resource_group} --name={kv_name} -o json' + kv = self.cmd(create_keyvault, checks=[ + self.check('properties.provisioningState', 'Succeeded') + ]).get_output_in_json() + kv_resource_id = kv['id'] + assert kv_resource_id is not None + self.kwargs.update({ + 'kv_resource_id': kv_resource_id, + }) + + create_key = 'keyvault key create -n kms --vault-name {kv_name} -o json' + key = self.cmd(create_key, checks=[ + self.check('attributes.enabled', True) + ]).get_output_in_json() + key_id = key['key']['kid'] + assert key_id is not None + self.kwargs.update({ + 'key_id': key_id, + }) + + # assign access policy + set_policy = 'keyvault set-policy --resource-group={resource_group} --name={kv_name} ' \ + '--object-id {identity_object_id} --key-permissions encrypt decrypt -o json' + policy = self.cmd(set_policy, checks=[ + self.check('properties.provisioningState', 'Succeeded') + ]).get_output_in_json() + + # allow the identity approve private endpoint connection (Microsoft.KeyVault/vaults/privateEndpointConnectionsApproval/action) + create_role_assignment = 'role assignment create --role f25e0fa2-a7c8-4377-a976-54943a77a395 ' \ + '--assignee-object-id {identity_object_id} --assignee-principal-type "ServicePrincipal" ' \ + '--scope {kv_resource_id}' + role_assignment = self.cmd(create_role_assignment).get_output_in_json() + + # disable public network access + disable_public_network_access = 'keyvault update --resource-group={resource_group} --name={kv_name} --public-network-access "Disabled" -o json' + kv = self.cmd(disable_public_network_access, checks=[ + self.check('properties.provisioningState', 'Succeeded') + ]).get_output_in_json() + + create_cmd = 'aks create --resource-group={resource_group} --name={name} ' \ + '--assign-identity {identity_id} ' \ + '--enable-azure-keyvault-kms --azure-keyvault-kms-key-id={key_id} ' \ + '--azure-keyvault-kms-key-vault-network-access=Private --azure-keyvault-kms-key-vault-resource-id {kv_resource_id} ' \ + '--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/AzureKeyVaultKmsPreview ' \ + '--ssh-key-value={ssh_key_value} -o json' + self.cmd(create_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('securityProfile.azureKeyVaultKms.enabled', True), + self.check('securityProfile.azureKeyVaultKms.keyId', key_id), + self.check('securityProfile.azureKeyVaultKms.keyVaultNetworkAccess', "Private"), + self.check('securityProfile.azureKeyVaultKms.keyVaultResourceId', kv_resource_id) + ]) + + # delete + cmd = 'aks delete --resource-group={resource_group} --name={name} --yes --no-wait' + self.cmd(cmd, checks=[ + self.is_empty(), + ]) + + @live_only() + @AllowLargeResponse() + @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='centraluseuap', preserve_default_location=True) + def test_aks_update_with_azurekeyvaultkms_private_key_vault(self, resource_group, resource_group_location): + aks_name = self.create_random_name('cliakstest', 16) + kv_name = self.create_random_name('cliakstestkv', 16) + identity_name = self.create_random_name('cliakstestidentity', 24) + self.kwargs.update({ + 'resource_group': resource_group, + 'name': aks_name, + "kv_name": kv_name, + "identity_name": identity_name, + 'ssh_key_value': self.generate_ssh_keys() + }) + + # create user-assigned identity + create_identity = 'identity create --resource-group={resource_group} --name={identity_name} -o json' + identity = self.cmd(create_identity).get_output_in_json() + identity_id = identity['id'] + identity_object_id = identity['principalId'] + assert identity_id is not None + assert identity_object_id is not None + self.kwargs.update({ + 'identity_id': identity_id, + 'identity_object_id': identity_object_id, + }) + + # create key vault and key + create_keyvault = 'keyvault create --resource-group={resource_group} --name={kv_name} -o json' + kv = self.cmd(create_keyvault, checks=[ + self.check('properties.provisioningState', 'Succeeded') + ]).get_output_in_json() + kv_resource_id = kv['id'] + assert kv_resource_id is not None + self.kwargs.update({ + 'kv_resource_id': kv_resource_id, + }) + + create_key = 'keyvault key create -n kms --vault-name {kv_name} -o json' + key = self.cmd(create_key, checks=[ + self.check('attributes.enabled', True) + ]).get_output_in_json() + key_id = key['key']['kid'] + assert key_id is not None + self.kwargs.update({ + 'key_id': key_id, + }) + + # assign access policy + set_policy = 'keyvault set-policy --resource-group={resource_group} --name={kv_name} ' \ + '--object-id {identity_object_id} --key-permissions encrypt decrypt -o json' + policy = self.cmd(set_policy, checks=[ + self.check('properties.provisioningState', 'Succeeded') + ]).get_output_in_json() + + # allow the identity approve private endpoint connection (Microsoft.KeyVault/vaults/privateEndpointConnectionsApproval/action) + create_role_assignment = 'role assignment create --role f25e0fa2-a7c8-4377-a976-54943a77a395 ' \ + '--assignee-object-id {identity_object_id} --assignee-principal-type "ServicePrincipal" ' \ + '--scope {kv_resource_id}' + role_assignment = self.cmd(create_role_assignment).get_output_in_json() + + # disable public network access + disable_public_network_access = 'keyvault update --resource-group={resource_group} --name={kv_name} --public-network-access "Disabled" -o json' + kv = self.cmd(disable_public_network_access, checks=[ + self.check('properties.provisioningState', 'Succeeded') + ]).get_output_in_json() + + create_cmd = 'aks create --resource-group={resource_group} --name={name} ' \ + '--assign-identity {identity_id} ' \ + '--ssh-key-value={ssh_key_value} -o json' + self.cmd(create_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.not_exists('securityProfile.azureKeyVaultKms') + ]) + + update_cmd = 'aks update --resource-group={resource_group} --name={name} ' \ + '--enable-azure-keyvault-kms --azure-keyvault-kms-key-id={key_id} ' \ + '--azure-keyvault-kms-key-vault-network-access=Private --azure-keyvault-kms-key-vault-resource-id {kv_resource_id} ' \ + '--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/AzureKeyVaultKmsPreview ' \ + '-o json' + self.cmd(update_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('securityProfile.azureKeyVaultKms.enabled', True), + self.check('securityProfile.azureKeyVaultKms.keyId', key_id), + self.check('securityProfile.azureKeyVaultKms.keyVaultNetworkAccess', "Private"), + self.check('securityProfile.azureKeyVaultKms.keyVaultResourceId', kv_resource_id) + ]) + + # delete + cmd = 'aks delete --resource-group={resource_group} --name={name} --yes --no-wait' + self.cmd(cmd, checks=[ + self.is_empty(), + ]) + @AllowLargeResponse() @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='westcentralus', preserve_default_location=True) def test_aks_create_and_update_with_csi_drivers_extensibility(self, resource_group, resource_group_location): @@ -4204,6 +4393,103 @@ def test_aks_create_with_standard_csi_drivers(self, resource_group, resource_gro self.is_empty(), ]) + @AllowLargeResponse() + @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='centraluseuap', preserve_default_location=True) + def test_aks_create_with_standard_blob_csi_driver(self, resource_group, resource_group_location): + aks_name = self.create_random_name('cliakstest', 16) + self.kwargs.update({ + 'resource_group': resource_group, + 'name': aks_name, + 'ssh_key_value': self.generate_ssh_keys() + }) + + # check standard creation scenario + create_cmd = 'aks create --resource-group={resource_group} --name={name} --ssh-key-value={ssh_key_value} -o json' + self.cmd(create_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', None), + ]) + + # check standard reconcile scenario + update_cmd = 'aks update --resource-group={resource_group} --name={name} -y -o json' + self.cmd(update_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', None), + ]) + + # delete + cmd = 'aks delete --resource-group={resource_group} --name={name} --yes --no-wait' + self.cmd(cmd, checks=[ + self.is_empty(), + ]) + + @AllowLargeResponse() + @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='centraluseuap', preserve_default_location=True) + def test_aks_create_and_update_with_blob_csi_driver(self, resource_group, resource_group_location): + aks_name = self.create_random_name('cliakstest', 16) + self.kwargs.update({ + 'resource_group': resource_group, + 'name': aks_name, + 'ssh_key_value': self.generate_ssh_keys() + }) + + # create aks with blob driver + create_cmd = 'aks create --resource-group={resource_group} --name={name} --ssh-key-value={ssh_key_value} -o json \ + --enable-blob-driver \ + --aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/EnableBlobCSIDriver' + self.cmd(create_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', True), + ]) + + # check standard reconcile scenario + update_cmd = 'aks update --resource-group={resource_group} --name={name} -y -o json \ + --aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/EnableBlobCSIDriver' + self.cmd(update_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', True), + ]) + + # disable blob driver + disable_cmd = 'aks update --resource-group={resource_group} --name={name} -o json \ + --disable-blob-driver -y \ + --aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/EnableBlobCSIDriver' + self.cmd(disable_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', False), + ]) + + # check standard reconcile scenario + update_cmd = 'aks update --resource-group={resource_group} --name={name} -y -o json \ + --aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/EnableBlobCSIDriver' + self.cmd(update_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', False), + ]) + + # enable blob driver + enable_cmd = 'aks update --resource-group={resource_group} --name={name} -o json \ + --enable-blob-driver -y \ + --aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/EnableBlobCSIDriver' + self.cmd(enable_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', True), + ]) + + # check standard reconcile scenario + update_cmd = 'aks update --resource-group={resource_group} --name={name} -y -o json \ + --aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/EnableBlobCSIDriver' + self.cmd(update_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('storageProfile.blobCsiDriver.enabled', True), + ]) + + # delete + cmd = 'aks delete --resource-group={resource_group} --name={name} --yes --no-wait' + self.cmd(cmd, checks=[ + self.is_empty(), + ]) + @AllowLargeResponse() @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='eastus2euap', preserve_default_location=True) def test_aks_create_with_csi_driver_v2(self, resource_group, resource_group_location): @@ -4321,7 +4607,7 @@ def test_aks_create_with_web_application_routing(self, resource_group, resource_ @AllowLargeResponse() @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='westus2') def test_aks_create_web_application_routing_dns_zone_not_exist(self, resource_group, resource_group_location): - # Test creation failure when using an non-existing dns zone resource ID. + # Test creation failure when using an non-existing dns zone resource ID. aks_name = self.create_random_name('cliakstest', 16) self.kwargs.update({ 'resource_group': resource_group, @@ -4336,8 +4622,11 @@ def test_aks_create_web_application_routing_dns_zone_not_exist(self, resource_gr try: self.cmd(create_cmd, checks=[]) raise Exception("didn't get expected failure") - except HttpResponseError: + except (HttpResponseError, BadRequestError, AzureInternalError): # expected failure + # HttpResponseError for without error mapping + # BadRequestError for not a valid dns zone resource + # AzureInternalError for requesting from a different tenant pass @AllowLargeResponse() @@ -4499,7 +4788,7 @@ def test_aks_draft_with_manifest(self): abs_file_path = os.path.join(script_dir, create_config) with tempfile.TemporaryDirectory() as tmp_dir: - + create_cmd = f'aks draft create --path={tmp_dir} --create-config={abs_file_path} --destination={tmp_dir}' self.cmd(create_cmd) assert os.path.isdir(f'{tmp_dir}/manifests') and os.path.isfile(f'{tmp_dir}/Dockerfile') @@ -4592,3 +4881,39 @@ def test_aks_kollect(self, resource_group, resource_group_location): ]: if not pattern in k_get_daemonset_output: raise CliTestError(f"Output from 'kubectl get daemonset' did not contain '{pattern}'. Output:\n{k_get_daemonset_output}") + + @AllowLargeResponse() + @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='eastus', preserve_default_location=True) + def test_aks_availability_zones(self, resource_group, resource_group_location): + # kwargs for string formatting + aks_name = self.create_random_name('cliakstest', 16) + nodepool2_name = "nodepool2" + self.kwargs.update({ + 'resource_group': resource_group, + 'name': aks_name, + 'ssh_key_value': self.generate_ssh_keys(), + 'nodepool2_name': nodepool2_name, + 'zones': "1 2 3" + }) + + # create + create_cmd = 'aks create --resource-group={resource_group} --name={name} ' \ + '--node-count=1 --ssh-key-value={ssh_key_value} --zones {zones}' + self.cmd(create_cmd, checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('agentPoolProfiles[0].availabilityZones[0]', '1'), + self.check('agentPoolProfiles[0].availabilityZones[1]', '2'), + self.check('agentPoolProfiles[0].availabilityZones[2]', '3'), + ]) + + # nodepool add + self.cmd('aks nodepool add --resource-group={resource_group} --cluster-name={name} --name={nodepool2_name} --node-count=1 --zones {zones}', checks=[ + self.check('provisioningState', 'Succeeded'), + self.check('availabilityZones[0]', '1'), + self.check('availabilityZones[1]', '2'), + self.check('availabilityZones[2]', '3'), + ]) + + # delete + self.cmd( + 'aks delete -g {resource_group} -n {name} --yes --no-wait', checks=[self.is_empty()]) diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_aks_diagnostics.py b/src/aks-preview/azext_aks_preview/tests/latest/test_aks_diagnostics.py new file mode 100644 index 00000000000..4d351a568c8 --- /dev/null +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_aks_diagnostics.py @@ -0,0 +1,31 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import unittest +import azext_aks_preview.aks_diagnostics as commands + + +class TestGenerateContainerName(unittest.TestCase): + def test_generate_container_name_containing_hcp(self): + fqdn = 'abcdef-dns-ed55ba6d.hcp.centralus.azmk8s.io' + expected_container_name = 'abcdef-dns-ed55ba6d' + trim_container_name = commands._generate_container_name(fqdn, None) + self.assertEqual(expected_container_name, trim_container_name) + + def test_generate_container_name_trailing_dash(self): + private_fqdn = 'dns-ed55ba6ad.e48fe2bd-b4bc-4aac-bc23-29bc44154fe1.privatelink.centralus.azmk8s.io' + expected_container_name = 'dns-ed55ba6ad-e48fe2bd-b4bc-4aac-bc23-29bc44154fe1-privatelink' + trim_container_name = commands._generate_container_name(None, private_fqdn) + self.assertEqual(expected_container_name, trim_container_name) + + def test_generate_container_name_not_containing_hcp(self): + private_fqdn = 'abcdef-dns-ed55ba6d.e48fe2bd-b4bc-4aac-bc23-29bc44154fe1.privatelink.centralus.azmk8s.io' + expected_container_name = 'abcdef-dns-ed55ba6d-e48fe2bd-b4bc-4aac-bc23-29bc44154fe1-privat' + trim_container_name = commands._generate_container_name(None, private_fqdn) + self.assertEqual(expected_container_name, trim_container_name) + + +if __name__ == "__main__": + unittest.main() diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_decorator.py b/src/aks-preview/azext_aks_preview/tests/latest/test_decorator.py deleted file mode 100644 index 0404307fa46..00000000000 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_decorator.py +++ /dev/null @@ -1,5470 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- - -import importlib -import unittest -from unittest.mock import Mock, patch - -from azext_aks_preview.__init__ import register_aks_preview_resource_type -from azext_aks_preview._client_factory import CUSTOM_MGMT_AKS_PREVIEW -from azext_aks_preview._consts import ( - ADDONS, - CONST_ACC_SGX_QUOTE_HELPER_ENABLED, - CONST_AZURE_KEYVAULT_SECRETS_PROVIDER_ADDON_NAME, - CONST_AZURE_POLICY_ADDON_NAME, - CONST_CONFCOM_ADDON_NAME, - CONST_GITOPS_ADDON_NAME, - CONST_HTTP_APPLICATION_ROUTING_ADDON_NAME, - CONST_INGRESS_APPGW_ADDON_NAME, - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID, - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME, - CONST_INGRESS_APPGW_SUBNET_CIDR, - CONST_INGRESS_APPGW_SUBNET_ID, - CONST_INGRESS_APPGW_WATCH_NAMESPACE, - CONST_KUBE_DASHBOARD_ADDON_NAME, - CONST_MONITORING_ADDON_NAME, - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID, - CONST_MONITORING_USING_AAD_MSI_AUTH, - CONST_OPEN_SERVICE_MESH_ADDON_NAME, - CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY, - CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY, - CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, - CONST_ROTATION_POLL_INTERVAL, - CONST_SECRET_ROTATION_ENABLED, - CONST_VIRTUAL_NODE_ADDON_NAME, - CONST_VIRTUAL_NODE_SUBNET_NAME, -) -from azext_aks_preview.decorator import ( - AKSPreviewContext, - AKSPreviewCreateDecorator, - AKSPreviewModels, - AKSPreviewUpdateDecorator, -) -from azext_aks_preview.tests.latest.mocks import MockCLI, MockClient, MockCmd -from azext_aks_preview.tests.latest.test_aks_commands import _get_test_data_file -from azure.cli.command_modules.acs._consts import ( - DecoratorEarlyExitException, - DecoratorMode, -) -from azure.cli.core.azclierror import ( - ArgumentUsageError, - AzCLIError, - CLIInternalError, - InvalidArgumentValueError, - MutuallyExclusiveArgumentError, - RequiredArgumentMissingError, - UnknownError, -) -from knack.util import CLIError -from knack.prompting import NoTTYException -from azure.core.exceptions import HttpResponseError -from msrestazure.azure_exceptions import CloudError - - -class AKSPreviewModelsTestCase(unittest.TestCase): - def setUp(self): - # manually register CUSTOM_MGMT_AKS_PREVIEW - register_aks_preview_resource_type() - self.cli_ctx = MockCLI() - self.cmd = MockCmd(self.cli_ctx) - - def test_models(self): - models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW) - - # load models directly (instead of through the `get_sdk` method provided by the cli component) - from azure.cli.core.profiles._shared import AZURE_API_PROFILES - - sdk_profile = AZURE_API_PROFILES["latest"][CUSTOM_MGMT_AKS_PREVIEW] - api_version = sdk_profile.default_api_version - module_name = "azext_aks_preview.vendored_sdks.azure_mgmt_preview_aks.v{}.models".format( - api_version.replace("-", "_") - ) - module = importlib.import_module(module_name) - - self.assertEqual(models.KubeletConfig, - getattr(module, "KubeletConfig")) - self.assertEqual(models.LinuxOSConfig, - getattr(module, "LinuxOSConfig")) - self.assertEqual( - models.ManagedClusterHTTPProxyConfig, - getattr(module, "ManagedClusterHTTPProxyConfig"), - ) - self.assertEqual( - models.WindowsGmsaProfile, getattr(module, "WindowsGmsaProfile") - ) - self.assertEqual(models.CreationData, getattr(module, "CreationData")) - # nat gateway models - self.assertEqual( - models.nat_gateway_models.ManagedClusterNATGatewayProfile, - getattr(module, "ManagedClusterNATGatewayProfile"), - ) - self.assertEqual( - models.nat_gateway_models.ManagedClusterManagedOutboundIPProfile, - getattr(module, "ManagedClusterManagedOutboundIPProfile"), - ) - # pod identity models - self.assertEqual( - models.pod_identity_models.ManagedClusterPodIdentityProfile, - getattr(module, "ManagedClusterPodIdentityProfile"), - ) - self.assertEqual( - models.pod_identity_models.ManagedClusterPodIdentityException, - getattr(module, "ManagedClusterPodIdentityException"), - ) - - # workload auto-scaler profile models - self.assertEqual( - models.ManagedClusterWorkloadAutoScalerProfile, - getattr(module, "ManagedClusterWorkloadAutoScalerProfile") - ) - - self.assertEqual( - models.ManagedClusterWorkloadAutoScalerProfileKeda, - getattr(module, "ManagedClusterWorkloadAutoScalerProfileKeda") - ) - - -class AKSPreviewContextTestCase(unittest.TestCase): - def setUp(self): - # manually register CUSTOM_MGMT_AKS_PREVIEW - register_aks_preview_resource_type() - self.cli_ctx = MockCLI() - self.cmd = MockCmd(self.cli_ctx) - self.models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW) - - def test_validate_pod_identity_with_kubenet(self): - # custom value - ctx_1 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - network_profile_1 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet" - ) - mc_1 = self.models.ManagedCluster( - location="test_location", - network_profile=network_profile_1, - ) - # fail on enable_pod_identity_with_kubenet not specified - with self.assertRaises(RequiredArgumentMissingError): - ctx_1._AKSPreviewContext__validate_pod_identity_with_kubenet( - mc_1, True, False - ) - - def test_get_vm_set_type(self): - # default & dynamic completion - ctx_1 = AKSPreviewContext( - self.cmd, - { - "vm_set_type": None, - "kubernetes_version": "", - "enable_vmss": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1._get_vm_set_type(read_only=True), None) - self.assertEqual(ctx_1.get_vm_set_type(), "VirtualMachineScaleSets") - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_ap_name", type="test_mc_vm_set_type" - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_vm_set_type(), "test_mc_vm_set_type") - - # custom value & dynamic completion - ctx_2 = AKSPreviewContext( - self.cmd, - { - "vm_set_type": "availabilityset", - "kubernetes_version": "", - "enable_vmss": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid vm_set_type when enable_vmss is specified - with self.assertRaises(InvalidArgumentValueError): - self.assertEqual(ctx_2.get_vm_set_type(), "AvailabilitySet") - - # custom value & dynamic completion - ctx_3 = AKSPreviewContext( - self.cmd, - { - "vm_set_type": None, - "kubernetes_version": "", - "enable_vmss": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid vm_set_type when enable_vmss is specified - self.assertEqual(ctx_3.get_vm_set_type(), "VirtualMachineScaleSets") - - def test_get_zones(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"node_zones": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_zones(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - availability_zones=["test_mc_zones1", "test_mc_zones2"], - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_zones(), ["test_mc_zones1", "test_mc_zones2"] - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"node_zones": ["test_zones1", "test_zones2"]}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_2.get_zones(), ["test_zones1", "test_zones2"]) - - def test_get_pod_subnet_id(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"pod_subnet_id": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_pod_subnet_id(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", pod_subnet_id="test_mc_pod_subnet_id" - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_pod_subnet_id(), "test_mc_pod_subnet_id") - - def test_get_pod_cidrs(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"pod_cidrs": "10.244.0.0/16,2001:abcd::/64"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual( - ctx_1.get_pod_cidrs(), ["10.244.0.0/16", "2001:abcd::/64"] - ) - - ctx_2 = AKSPreviewContext( - self.cmd, - {"pod_cidrs": ""}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_2.get_pod_cidrs(), []) - - ctx_3 = AKSPreviewContext( - self.cmd, - {"pod_cidrs": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_3.get_pod_cidrs(), None) - - def test_get_service_cidrs(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"service_cidrs": "10.244.0.0/16,2001:abcd::/64"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual( - ctx_1.get_service_cidrs(), ["10.244.0.0/16", "2001:abcd::/64"] - ) - - ctx_2 = AKSPreviewContext( - self.cmd, - {"service_cidrs": ""}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_2.get_service_cidrs(), []) - - ctx_3 = AKSPreviewContext( - self.cmd, - {"service_cidrs": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_3.get_service_cidrs(), None) - - def test_get_ip_families(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"ip_families": "IPv4,IPv6"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_ip_families(), ["IPv4", "IPv6"]) - - ctx_2 = AKSPreviewContext( - self.cmd, - {"ip_families": ""}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_2.get_ip_families(), []) - - ctx_3 = AKSPreviewContext( - self.cmd, - {"ip_families": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_3.get_ip_families(), None) - - def test_get_load_balancer_managed_outbound_ip_count(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "load_balancer_managed_outbound_ip_count": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual( - ctx_1.get_load_balancer_managed_outbound_ip_count(), None - ) - load_balancer_profile = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10) - ) - network_profile = self.models.ContainerServiceNetworkProfile( - load_balancer_profile=load_balancer_profile - ) - mc = self.models.ManagedCluster( - location="test_location", network_profile=network_profile - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_load_balancer_managed_outbound_ip_count(), 10 - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - load_balancer_profile_2 = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10, count_ipv6=20), - outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPs" - )( - public_i_ps=[ - self.models.lb_models.get("ResourceReference")( - id="test_public_ip" - ) - ] - ), - outbound_ip_prefixes=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPPrefixes" - )( - public_ip_prefixes=[ - self.models.lb_models.get("ResourceReference")( - id="test_public_ip_prefix" - ) - ] - ), - ) - network_profile_2 = self.models.ContainerServiceNetworkProfile( - load_balancer_profile=load_balancer_profile_2 - ) - mc_2 = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_2 - ) - ctx_2.attach_mc(mc_2) - self.assertEqual( - ctx_2.get_load_balancer_managed_outbound_ip_count(), 10 - ) - - def test_get_load_balancer_managed_outbound_ipv6_count(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "load_balancer_managed_outbound_ipv6_count": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual( - ctx_1.get_load_balancer_managed_outbound_ipv6_count(), None - ) - load_balancer_profile = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count_ipv6=10) - ) - network_profile = self.models.ContainerServiceNetworkProfile( - load_balancer_profile=load_balancer_profile - ) - mc = self.models.ManagedCluster( - location="test_location", network_profile=network_profile - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_load_balancer_managed_outbound_ipv6_count(), 10 - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"load_balancer_managed_outbound_ipv6_count": 0}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual( - ctx_2.get_load_balancer_managed_outbound_ipv6_count(), 0 - ) - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - { - "load_balancer_managed_outbound_ipv6_count": None, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - load_balancer_profile_3 = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10, count_ipv6=20), - outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPs" - )( - public_i_ps=[ - self.models.lb_models.get("ResourceReference")( - id="test_public_ip" - ) - ] - ), - outbound_ip_prefixes=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPPrefixes" - )( - public_ip_prefixes=[ - self.models.lb_models.get("ResourceReference")( - id="test_public_ip_prefix" - ) - ] - ), - ) - network_profile_3 = self.models.ContainerServiceNetworkProfile( - load_balancer_profile=load_balancer_profile_3 - ) - mc_3 = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_3 - ) - ctx_3.attach_mc(mc_3) - self.assertEqual( - ctx_3.get_load_balancer_managed_outbound_ipv6_count(), 20 - ) - - def test_get_enable_fips_image(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"enable_fips_image": False}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_fips_image(), False) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - enable_fips=True, - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_enable_fips_image(), True) - - def test_get_workload_runtime(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"workload_runtime": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_workload_runtime(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - workload_runtime="test_mc_workload_runtime", - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_workload_runtime(), "test_mc_workload_runtime" - ) - - def test_get_gpu_instance_profile(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"gpu_instance_profile": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_gpu_instance_profile(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - gpu_instance_profile="test_mc_gpu_instance_profile", - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_gpu_instance_profile(), "test_mc_gpu_instance_profile" - ) - - def test_get_message_of_the_day(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"message_of_the_day": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_message_of_the_day(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - message_of_the_day="test_mc_message_of_the_day", - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_message_of_the_day(), "test_mc_message_of_the_day" - ) - - # custom - ctx_2 = AKSPreviewContext( - self.cmd, - {"message_of_the_day": "fake-path"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid file path - with self.assertRaises(InvalidArgumentValueError): - ctx_2.get_message_of_the_day() - - # custom - ctx_3 = AKSPreviewContext( - self.cmd, - {"message_of_the_day": _get_test_data_file("invalidconfig.json")}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_3.get_message_of_the_day(), "W10=") - - def test_get_enable_custom_ca_trust(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"enable_custom_ca_trust": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_custom_ca_trust(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - enable_custom_ca_trust=True, - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_enable_custom_ca_trust(), True - ) - - def test_get_kubelet_config(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"kubelet_config": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_kubelet_config(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - kubelet_config=self.models.KubeletConfig(pod_max_pids=100), - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_kubelet_config(), - self.models.KubeletConfig(pod_max_pids=100), - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"kubelet_config": "fake-path"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid file path - with self.assertRaises(InvalidArgumentValueError): - ctx_2.get_kubelet_config() - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - {"kubelet_config": _get_test_data_file("invalidconfig.json")}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid file content - with self.assertRaises(InvalidArgumentValueError): - ctx_3.get_kubelet_config() - - def test_get_linux_os_config(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"linux_os_config": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_linux_os_config(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", - linux_os_config=self.models.LinuxOSConfig(swap_file_size_mb=200), - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_linux_os_config(), - self.models.LinuxOSConfig(swap_file_size_mb=200), - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"linux_os_config": "fake-path"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid file path - with self.assertRaises(InvalidArgumentValueError): - ctx_2.get_linux_os_config() - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - {"linux_os_config": _get_test_data_file("invalidconfig.json")}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid file content - with self.assertRaises(InvalidArgumentValueError): - ctx_3.get_linux_os_config() - - def test_get_http_proxy_config(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"http_proxy_config": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_http_proxy_config(), None) - mc = self.models.ManagedCluster( - location="test_location", - http_proxy_config=self.models.ManagedClusterHTTPProxyConfig( - http_proxy="test_http_proxy" - ), - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_http_proxy_config(), - self.models.ManagedClusterHTTPProxyConfig( - http_proxy="test_http_proxy" - ), - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"http_proxy_config": "fake-path"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid file path - with self.assertRaises(InvalidArgumentValueError): - ctx_2.get_http_proxy_config() - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - {"http_proxy_config": _get_test_data_file("invalidconfig.json")}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid file path - with self.assertRaises(InvalidArgumentValueError): - ctx_3.get_http_proxy_config() - - def test_get_node_resource_group(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"node_resource_group": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_node_resource_group(), None) - mc = self.models.ManagedCluster( - location="test_location", - node_resource_group="test_node_resource_group", - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_node_resource_group(), "test_node_resource_group" - ) - - def test_get_nat_gateway_managed_outbound_ip_count(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"nat_gateway_managed_outbound_ip_count": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual( - ctx_1.get_nat_gateway_managed_outbound_ip_count(), None - ) - nat_gateway_profile = self.models.nat_gateway_models.ManagedClusterNATGatewayProfile( - managed_outbound_ip_profile=self.models.nat_gateway_models.ManagedClusterManagedOutboundIPProfile( - count=10 - ) - ) - network_profile = self.models.ContainerServiceNetworkProfile( - nat_gateway_profile=nat_gateway_profile - ) - mc = self.models.ManagedCluster( - location="test_location", - network_profile=network_profile, - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_nat_gateway_managed_outbound_ip_count(), 10) - - def test_get_nat_gateway_idle_timeout(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"nat_gateway_idle_timeout": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_nat_gateway_idle_timeout(), None) - nat_gateway_profile = ( - self.models.nat_gateway_models.ManagedClusterNATGatewayProfile( - idle_timeout_in_minutes=20, - ) - ) - network_profile = self.models.ContainerServiceNetworkProfile( - nat_gateway_profile=nat_gateway_profile - ) - mc = self.models.ManagedCluster( - location="test_location", - network_profile=network_profile, - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_nat_gateway_idle_timeout(), 20) - - def test_get_storage_profile_update(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = None, - file_csi_driver = None, - snapshot_controller = None, - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_storage_profile(), storage_profile - ) - - # custom disk value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "disable_disk_driver": True, - "yes": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - # fail on mutually exclusive enable_disk_driver and disable_disk_driver - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_2.get_disk_driver() - - # custom file value - ctx_3 = AKSPreviewContext( - self.cmd, - { - "enable_file_driver": True, - "disable_file_driver": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - # fail on mutually exclusive enable_file_driver and disable_file_driver - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_3.get_file_driver() - - # custom file value - ctx_4 = AKSPreviewContext( - self.cmd, - { - "enable_snapshot_controller": True, - "disable_snapshot_controller": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - # fail on mutually exclusive enable_snapshot_controller and disable_snapshot_controller - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_4.get_snapshot_controller() - - # default with csi driver enabled flag - ctx_5 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "enable_file_driver": True, - "enable_snapshot_controller": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = self.models.ManagedClusterStorageProfileDiskCSIDriver( - enabled = True, - ), - file_csi_driver = self.models.ManagedClusterStorageProfileFileCSIDriver( - enabled = True, - ), - snapshot_controller = self.models.ManagedClusterStorageProfileSnapshotController( - enabled = True, - ), - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_5.attach_mc(mc) - self.assertEqual( - ctx_5.get_storage_profile(), storage_profile - ) - - # disk_driver_version value passed and enable-disk-driver passed - ctx_6 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "disk_driver_version": "v2", - "enable_file_driver": True, - "enable_snapshot_controller": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = self.models.ManagedClusterStorageProfileDiskCSIDriver( - enabled = True, - version = "v2", - ), - file_csi_driver = self.models.ManagedClusterStorageProfileFileCSIDriver( - enabled = True, - ), - snapshot_controller = self.models.ManagedClusterStorageProfileSnapshotController( - enabled = True, - ), - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_6.attach_mc(mc) - self.assertEqual( - ctx_6.get_storage_profile(), storage_profile - ) - - # fail with enable-disk-driver as false and value passed for disk_driver_version - ctx_8 = AKSPreviewContext( - self.cmd, - { - "disable_disk_driver": True, - "disk_driver_version": "v2", - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - - # fail on argument usage error - with self.assertRaises(ArgumentUsageError): - ctx_8.get_disk_driver() - - # enable-disk-driver, disk_driver_version, enable_file_driver and enable_snapshot_controller passed - ctx_9 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "disk_driver_version": "v2", - "disable_file_driver": True, - "disable_snapshot_controller": True, - "yes": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = self.models.ManagedClusterStorageProfileDiskCSIDriver( - enabled = True, - version = "v2", - ), - file_csi_driver = self.models.ManagedClusterStorageProfileFileCSIDriver( - enabled = False, - ), - snapshot_controller = self.models.ManagedClusterStorageProfileSnapshotController( - enabled = False, - ), - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_9.attach_mc(mc) - self.assertEqual( - ctx_9.get_storage_profile(), storage_profile - ) - - # fail with enable-disk-driver as false and value passed for disk_driver_version - ctx_10 = AKSPreviewContext( - self.cmd, - { - "disk_driver_version": "v2", - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - - # fail on argument usage error - with self.assertRaises(ArgumentUsageError): - ctx_10.get_disk_driver() - - # fail on prompt_y_n not specified when disabling disk driver - ctx_11 = AKSPreviewContext( - self.cmd, - { - "disable_disk_driver": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=False, - ), self.assertRaises(DecoratorEarlyExitException): - ctx_11.get_disk_driver() - - # fail on prompt_y_n not specified when disabling file driver - ctx_12 = AKSPreviewContext( - self.cmd, - { - "disable_file_driver": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=False, - ), self.assertRaises(DecoratorEarlyExitException): - ctx_12.get_file_driver() - - # fail on prompt_y_n not specified when disabling snapshot controller - ctx_13 = AKSPreviewContext( - self.cmd, - { - "disable_snapshot_controller": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=False, - ), self.assertRaises(DecoratorEarlyExitException): - ctx_13.get_snapshot_controller() - - - def test_get_storage_profile_create(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = None, - file_csi_driver = None, - snapshot_controller = None, - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_storage_profile(), storage_profile - ) - - # custom disk value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "disable_disk_driver": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on mutually exclusive enable_disk_driver and disable_disk_driver - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_2.get_disk_driver() - - # custom file value - ctx_3 = AKSPreviewContext( - self.cmd, - { - "enable_file_driver": True, - "disable_file_driver": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on mutually exclusive enable_file_driver and disable_file_driver - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_3.get_file_driver() - - # custom file value - ctx_4 = AKSPreviewContext( - self.cmd, - { - "enable_snapshot_controller": True, - "disable_snapshot_controller": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on mutually exclusive enable_snapshot_controller and disable_snapshot_controller - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_4.get_snapshot_controller() - - # default with csi driver enabled flag and no value for disk_driver_version passed - ctx_5 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "enable_file_driver": True, - "enable_snapshot_controller": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = self.models.ManagedClusterStorageProfileDiskCSIDriver( - enabled = True, - version = "v1", - ), - file_csi_driver = self.models.ManagedClusterStorageProfileFileCSIDriver( - enabled = True, - ), - snapshot_controller = self.models.ManagedClusterStorageProfileSnapshotController( - enabled = True, - ), - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_5.attach_mc(mc) - self.assertEqual( - ctx_5.get_storage_profile(), storage_profile - ) - - # disk_driver_version value passed and enable-disk-driver passed - ctx_6 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "disk_driver_version": "v2", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = self.models.ManagedClusterStorageProfileDiskCSIDriver( - enabled = True, - version = "v2", - ), - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_6.attach_mc(mc) - self.assertEqual( - ctx_6.get_storage_profile(), storage_profile - ) - - # fail with enable-disk-driver as false and value passed for disk_driver_version - ctx_8 = AKSPreviewContext( - self.cmd, - { - "disable_disk_driver": True, - "disk_driver_version": "v2", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - - # fail on argument usage error - with self.assertRaises(ArgumentUsageError): - ctx_8.get_disk_driver() - - # enable-disk-driver, disk_driver_version, enable_file_driver and enable_snapshot_controller passed - ctx_9 = AKSPreviewContext( - self.cmd, - { - "enable_disk_driver": True, - "disk_driver_version": "v2", - "enable_file_driver": True, - "enable_snapshot_controller": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = self.models.ManagedClusterStorageProfileDiskCSIDriver( - enabled = True, - version = "v2", - ), - file_csi_driver = self.models.ManagedClusterStorageProfileFileCSIDriver( - enabled = True, - ), - snapshot_controller = self.models.ManagedClusterStorageProfileSnapshotController( - enabled = True, - ), - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_9.attach_mc(mc) - self.assertEqual( - ctx_9.get_storage_profile(), storage_profile - ) - - # pass when value passed for disk_driver_version without enable_disk_driver - ctx_10 = AKSPreviewContext( - self.cmd, - { - "disk_driver_version": "v2", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - storage_profile = ( - self.models.ManagedClusterStorageProfile( - disk_csi_driver = self.models.ManagedClusterStorageProfileDiskCSIDriver( - enabled = True, - version = "v2", - ), - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - ) - ctx_10.attach_mc(mc) - self.assertEqual( - ctx_10.get_storage_profile(), storage_profile - ) - - - def test_get_enable_pod_security_policy(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"enable_pod_security_policy": False}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_pod_security_policy(), False) - mc = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=True, - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_enable_pod_security_policy(), True) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_pod_security_policy": True, - "disable_pod_security_policy": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - # fail on mutually exclusive enable_pod_security_policy and disable_pod_security_policy - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_2.get_enable_pod_security_policy() - - def test_get_disable_pod_security_policy(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"disable_pod_security_policy": False}, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - self.assertEqual(ctx_1.get_disable_pod_security_policy(), False) - mc = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=False, - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_disable_pod_security_policy(), False) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_pod_security_policy": True, - "disable_pod_security_policy": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - # fail on mutually exclusive enable_pod_security_policy and disable_pod_security_policy - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_2.get_disable_pod_security_policy() - - def test_get_enable_managed_identity(self): - # custom value - ctx_1 = AKSPreviewContext( - self.cmd, - {"enable_managed_identity": False, "enable_pod_identity": True}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on enable_managed_identity not specified - with self.assertRaises(RequiredArgumentMissingError): - self.assertEqual(ctx_1.get_enable_managed_identity(), False) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"enable_pod_identity": True}, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - mc_2 = self.models.ManagedCluster( - location="test_location", - ) - ctx_2.attach_mc(mc_2) - # fail on managed identity not enabled - with self.assertRaises(RequiredArgumentMissingError): - self.assertEqual(ctx_2.get_enable_managed_identity(), False) - - def test_get_enable_pod_identity(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"enable_pod_identity": False}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_pod_identity(), False) - pod_identity_profile = ( - self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - enabled=True - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - pod_identity_profile=pod_identity_profile, - ) - ctx_1.attach_mc(mc) - # fail on enable_managed_identity not specified - with self.assertRaises(RequiredArgumentMissingError): - self.assertEqual(ctx_1.get_enable_pod_identity(), True) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_managed_identity": True, - "enable_pod_identity": True, - "enable_pod_identity_with_kubenet": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - network_profile_2 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet" - ) - mc_2 = self.models.ManagedCluster( - location="test_location", - network_profile=network_profile_2, - ) - ctx_2.attach_mc(mc_2) - # fail on enable_pod_identity_with_kubenet not specified - with self.assertRaises(RequiredArgumentMissingError): - self.assertEqual(ctx_2.get_enable_pod_identity(), True) - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - { - "enable_pod_identity": True, - "disable_pod_identity": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - mc_3 = self.models.ManagedCluster( - location="test_location", - identity=self.models.ManagedClusterIdentity(type="SystemAssigned"), - ) - ctx_3.attach_mc(mc_3) - # fail on mutually exclusive enable_pod_identity and disable_pod_identity - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_3.get_enable_pod_identity() - - # custom value - ctx_4 = AKSPreviewContext( - self.cmd, - { - "enable_pod_identity": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - mc_4 = self.models.ManagedCluster(location="test_location") - ctx_4.attach_mc(mc_4) - # fail on managed identity not enabled - with self.assertRaises(RequiredArgumentMissingError): - ctx_4.get_enable_pod_identity() - - def test_get_disable_pod_identity(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"disable_pod_identity": False}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_disable_pod_identity(), False) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_pod_identity": True, - "disable_pod_identity": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - # fail on mutually exclusive enable_pod_identity and disable_pod_identity - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_2.get_disable_pod_identity() - - def test_get_enable_pod_identity_with_kubenet(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"enable_pod_identity_with_kubenet": False}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_pod_identity_with_kubenet(), False) - pod_identity_profile = ( - self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - enabled=True, - allow_network_plugin_kubenet=True, - ) - ) - mc = self.models.ManagedCluster( - location="test_location", - pod_identity_profile=pod_identity_profile, - ) - ctx_1.attach_mc(mc) - # fail on enable_managed_identity not specified - # with self.assertRaises(RequiredArgumentMissingError): - self.assertEqual(ctx_1.get_enable_pod_identity_with_kubenet(), True) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_managed_identity": True, - "enable_pod_identity": True, - "enable_pod_identity_with_kubenet": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - network_profile_2 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet" - ) - mc_2 = self.models.ManagedCluster( - location="test_location", - network_profile=network_profile_2, - ) - ctx_2.attach_mc(mc_2) - # fail on enable_pod_identity_with_kubenet not specified - with self.assertRaises(RequiredArgumentMissingError): - self.assertEqual( - ctx_2.get_enable_pod_identity_with_kubenet(), False - ) - - def test_get_addon_consts(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - addon_consts = ctx_1.get_addon_consts() - ground_truth_addon_consts = { - "ADDONS": ADDONS, - "CONST_ACC_SGX_QUOTE_HELPER_ENABLED": CONST_ACC_SGX_QUOTE_HELPER_ENABLED, - "CONST_AZURE_POLICY_ADDON_NAME": CONST_AZURE_POLICY_ADDON_NAME, - "CONST_CONFCOM_ADDON_NAME": CONST_CONFCOM_ADDON_NAME, - "CONST_HTTP_APPLICATION_ROUTING_ADDON_NAME": CONST_HTTP_APPLICATION_ROUTING_ADDON_NAME, - "CONST_INGRESS_APPGW_ADDON_NAME": CONST_INGRESS_APPGW_ADDON_NAME, - "CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID": CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID, - "CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME": CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME, - "CONST_INGRESS_APPGW_SUBNET_CIDR": CONST_INGRESS_APPGW_SUBNET_CIDR, - "CONST_INGRESS_APPGW_SUBNET_ID": CONST_INGRESS_APPGW_SUBNET_ID, - "CONST_INGRESS_APPGW_WATCH_NAMESPACE": CONST_INGRESS_APPGW_WATCH_NAMESPACE, - "CONST_KUBE_DASHBOARD_ADDON_NAME": CONST_KUBE_DASHBOARD_ADDON_NAME, - "CONST_MONITORING_ADDON_NAME": CONST_MONITORING_ADDON_NAME, - "CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID": CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID, - "CONST_OPEN_SERVICE_MESH_ADDON_NAME": CONST_OPEN_SERVICE_MESH_ADDON_NAME, - "CONST_VIRTUAL_NODE_ADDON_NAME": CONST_VIRTUAL_NODE_ADDON_NAME, - "CONST_VIRTUAL_NODE_SUBNET_NAME": CONST_VIRTUAL_NODE_SUBNET_NAME, - "CONST_AZURE_KEYVAULT_SECRETS_PROVIDER_ADDON_NAME": CONST_AZURE_KEYVAULT_SECRETS_PROVIDER_ADDON_NAME, - "CONST_SECRET_ROTATION_ENABLED": CONST_SECRET_ROTATION_ENABLED, - "CONST_ROTATION_POLL_INTERVAL": CONST_ROTATION_POLL_INTERVAL, - # new addon consts in aks-preview - "CONST_GITOPS_ADDON_NAME": CONST_GITOPS_ADDON_NAME, - "CONST_MONITORING_USING_AAD_MSI_AUTH": CONST_MONITORING_USING_AAD_MSI_AUTH, - } - self.assertEqual(addon_consts, ground_truth_addon_consts) - - def test_get_appgw_subnet_prefix(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "appgw_subnet_prefix": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_appgw_subnet_prefix(), None) - addon_profiles_1 = { - CONST_INGRESS_APPGW_ADDON_NAME: self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_INGRESS_APPGW_SUBNET_CIDR: "test_appgw_subnet_prefix" - }, - ) - } - mc = self.models.ManagedCluster( - location="test_location", addon_profiles=addon_profiles_1 - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_appgw_subnet_prefix(), "test_appgw_subnet_prefix" - ) - - def test_get_enable_msi_auth_for_monitoring(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "enable_msi_auth_for_monitoring": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_msi_auth_for_monitoring(), False) - addon_profiles_1 = { - CONST_MONITORING_ADDON_NAME: self.models.ManagedClusterAddonProfile( - enabled=True, - config={CONST_MONITORING_USING_AAD_MSI_AUTH: True}, - ) - } - mc = self.models.ManagedCluster( - location="test_location", addon_profiles=addon_profiles_1 - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_enable_msi_auth_for_monitoring(), True) - - def test_get_no_wait(self): - # custom value - ctx_1 = AKSPreviewContext( - self.cmd, - { - "no_wait": True, - "enable_msi_auth_for_monitoring": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - ctx_1.set_intermediate("monitoring", True, overwrite_exists=True) - self.assertEqual(ctx_1.get_no_wait(), False) - - def test_validate_gmsa_options(self): - # default - ctx = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - ctx._AKSPreviewContext__validate_gmsa_options(False, None, None, False) - ctx._AKSPreviewContext__validate_gmsa_options(True, None, None, True) - - # fail on yes & prompt_y_n not specified - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=False, - ), self.assertRaises(DecoratorEarlyExitException): - ctx._AKSPreviewContext__validate_gmsa_options( - True, None, None, False - ) - - # fail on gmsa_root_domain_name not specified - with self.assertRaises(RequiredArgumentMissingError): - ctx._AKSPreviewContext__validate_gmsa_options( - True, "test_gmsa_dns_server", None, False - ) - - # fail on enable_windows_gmsa not specified - with self.assertRaises(RequiredArgumentMissingError): - ctx._AKSPreviewContext__validate_gmsa_options( - False, None, "test_gmsa_root_domain_name", False - ) - - def test_get_enable_windows_gmsa(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "enable_windows_gmsa": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_windows_gmsa(), False) - windows_gmsa_profile_1 = self.models.WindowsGmsaProfile(enabled=True) - windows_profile_1 = self.models.ManagedClusterWindowsProfile( - admin_username="test_admin_username", - gmsa_profile=windows_gmsa_profile_1, - ) - mc = self.models.ManagedCluster( - location="test_location", windows_profile=windows_profile_1 - ) - ctx_1.attach_mc(mc) - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=True, - ): - self.assertEqual(ctx_1.get_enable_windows_gmsa(), True) - - def test_get_gmsa_dns_server_and_root_domain_name(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "enable_windows_gmsa": False, - "gmsa_dns_server": None, - "gmsa_root_domain_name": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual( - ctx_1.get_gmsa_dns_server_and_root_domain_name(), (None, None) - ) - windows_gmsa_profile_1 = self.models.WindowsGmsaProfile( - enabled=True, - dns_server="test_dns_server", - root_domain_name="test_root_domain_name", - ) - windows_profile_1 = self.models.ManagedClusterWindowsProfile( - admin_username="test_admin_username", - gmsa_profile=windows_gmsa_profile_1, - ) - mc = self.models.ManagedCluster( - location="test_location", windows_profile=windows_profile_1 - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_gmsa_dns_server_and_root_domain_name(), - ("test_dns_server", "test_root_domain_name"), - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_windows_gmsa": True, - "gmsa_dns_server": "test_gmsa_dns_server", - "gmsa_root_domain_name": "test_gmsa_root_domain_name", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - windows_gmsa_profile_2 = self.models.WindowsGmsaProfile( - enabled=True, - dns_server="test_dns_server", - root_domain_name=None, - ) - windows_profile_2 = self.models.ManagedClusterWindowsProfile( - admin_username="test_admin_username", - gmsa_profile=windows_gmsa_profile_2, - ) - mc = self.models.ManagedCluster( - location="test_location", windows_profile=windows_profile_2 - ) - ctx_2.attach_mc(mc) - # fail on inconsistent state - with self.assertRaises(CLIInternalError): - ctx_2.get_gmsa_dns_server_and_root_domain_name() - - def test_get_snapshot_id(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "snapshot_id": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_snapshot_id(), None) - creation_data = self.models.CreationData( - source_resource_id="test_source_resource_id" - ) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", creation_data=creation_data - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_snapshot_id(), "test_source_resource_id") - - def test_get_snapshot(self): - # custom value - ctx_1 = AKSPreviewContext( - self.cmd, - { - "snapshot_id": "test_source_resource_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock() - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual(ctx_1.get_snapshot(), mock_snapshot) - # test cache - self.assertEqual(ctx_1.get_snapshot(), mock_snapshot) - - def test_get_cluster_snapshot_id(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "cluster_snapshot_id": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_cluster_snapshot_id(), None) - creation_data = self.models.CreationData( - source_resource_id="test_source_resource_id" - ) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name") - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile], - creation_data=creation_data, - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_cluster_snapshot_id(), - "test_source_resource_id") - - def test_get_cluster_snapshot(self): - # custom value - ctx_1 = AKSPreviewContext( - self.cmd, - { - "cluster_snapshot_id": "test_source_resource_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock() - with patch( - "azext_aks_preview.decorator._get_cluster_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual(ctx_1.get_cluster_snapshot(), mock_snapshot) - # test cache - self.assertEqual(ctx_1.get_cluster_snapshot(), mock_snapshot) - - def test_get_host_group_id(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"host_group_id": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_host_group_id(), None) - agent_pool_profile_1 = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", host_group_id="test_mc_host_group_id" - ) - mc_1 = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile_1] - ) - ctx_1.attach_mc(mc_1) - self.assertEqual( - ctx_1.get_host_group_id(), "test_mc_host_group_id" - ) - - # custom - ctx_2 = AKSPreviewContext( - self.cmd, - {"host_group_id": "test_host_group_id"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_2.get_host_group_id(), "test_host_group_id") - - def test_get_kubernetes_version(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"kubernetes_version": ""}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_kubernetes_version(), "") - mc = self.models.ManagedCluster( - location="test_location", - kubernetes_version="test_mc_kubernetes_version", - ) - ctx_1.attach_mc(mc) - self.assertEqual( - ctx_1.get_kubernetes_version(), "test_mc_kubernetes_version" - ) - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"kubernetes_version": "", "snapshot_id": "test_snapshot_id"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock(kubernetes_version="test_kubernetes_version") - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual( - ctx_2.get_kubernetes_version(), "test_kubernetes_version" - ) - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - { - "kubernetes_version": "custom_kubernetes_version", - "snapshot_id": "test_snapshot_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock(kubernetes_version="test_kubernetes_version") - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual( - ctx_3.get_kubernetes_version(), "custom_kubernetes_version" - ) - - # custom value - ctx_4 = AKSPreviewContext( - self.cmd, - {"kubernetes_version": "", "cluster_snapshot_id": "test_cluster_snapshot_id"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock( - managed_cluster_properties_read_only=Mock(kubernetes_version="test_cluster_kubernetes_version")) - with patch( - "azext_aks_preview.decorator._get_cluster_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual( - ctx_4.get_kubernetes_version(), "test_cluster_kubernetes_version" - ) - - # custom value - ctx_5 = AKSPreviewContext( - self.cmd, - { - "cluster_snapshot_id": "test_cluster_snapshot_id", - "snapshot_id": "test_snapshot_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock(kubernetes_version="test_kubernetes_version") - mock_mc_snapshot = Mock( - managed_cluster_properties_read_only=Mock(kubernetes_version="test_cluster_kubernetes_version")) - with patch( - "azext_aks_preview.decorator._get_cluster_snapshot", - return_value=mock_mc_snapshot, - ), patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual( - ctx_5.get_kubernetes_version(), "test_cluster_kubernetes_version" - ) - - def test_get_os_sku(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"os_sku": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_os_sku(), None) - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", os_sku="test_mc_os_sku" - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_os_sku(), "test_mc_os_sku") - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"os_sku": None, "snapshot_id": "test_snapshot_id"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock(os_sku="test_os_sku") - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual(ctx_2.get_os_sku(), "test_os_sku") - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - { - "os_sku": "custom_os_sku", - "snapshot_id": "test_snapshot_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock(os_sku="test_os_sku") - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual(ctx_3.get_os_sku(), "custom_os_sku") - - def test_get_node_vm_size(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"node_vm_size": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_node_vm_size(), "Standard_DS2_v2") - agent_pool_profile = self.models.ManagedClusterAgentPoolProfile( - name="test_nodepool_name", vm_size="Standard_ABCD_v2" - ) - mc = self.models.ManagedCluster( - location="test_location", agent_pool_profiles=[agent_pool_profile] - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_node_vm_size(), "Standard_ABCD_v2") - - # custom value - ctx_2 = AKSPreviewContext( - self.cmd, - {"node_vm_size": None, "snapshot_id": "test_snapshot_id"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock(vm_size="test_vm_size") - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual(ctx_2.get_node_vm_size(), "test_vm_size") - - # custom value - ctx_3 = AKSPreviewContext( - self.cmd, - { - "node_vm_size": "custom_node_vm_size", - "snapshot_id": "test_snapshot_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - mock_snapshot = Mock(vm_size="test_vm_size") - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - self.assertEqual(ctx_3.get_node_vm_size(), "custom_node_vm_size") - - def test_test_get_outbound_type(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - { - "outbound_type": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1._get_outbound_type(read_only=True), None) - self.assertEqual(ctx_1.get_outbound_type(), "loadBalancer") - network_profile_1 = self.models.ContainerServiceNetworkProfile( - outbound_type="test_outbound_type" - ) - mc = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_1 - ) - ctx_1.attach_mc(mc) - self.assertEqual(ctx_1.get_outbound_type(), "test_outbound_type") - - # invalid parameter - ctx_2 = AKSPreviewContext( - self.cmd, - { - "outbound_type": CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY, - "load_balancer_sku": "basic", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid load_balancer_sku (basic) when outbound_type is CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY - with self.assertRaises(InvalidArgumentValueError): - ctx_2.get_outbound_type() - - # invalid parameter - ctx_3 = AKSPreviewContext( - self.cmd, - { - "outbound_type": CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY, - "load_balancer_sku": "basic", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on invalid load_balancer_sku (basic) when outbound_type is CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY - with self.assertRaises(InvalidArgumentValueError): - ctx_3.get_outbound_type() - - # invalid parameter - ctx_4 = AKSPreviewContext( - self.cmd, - { - "outbound_type": CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY, - "vnet_subnet_id": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on vnet_subnet_id not specified - with self.assertRaises(RequiredArgumentMissingError): - ctx_4.get_outbound_type() - - # invalid parameter - ctx_5 = AKSPreviewContext( - self.cmd, - { - "outbound_type": CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, - "vnet_subnet_id": None, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on vnet_subnet_id not specified - with self.assertRaises(RequiredArgumentMissingError): - ctx_5.get_outbound_type() - - # invalid parameter - ctx_6 = AKSPreviewContext( - self.cmd, - { - "outbound_type": CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, - "vnet_subnet_id": "test_vnet_subnet_id", - "load_balancer_managed_outbound_ip_count": 10, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - # fail on mutually exclusive outbound_type and managed_outbound_ip_count/outbound_ips/outbound_ip_prefixes of - # load balancer - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_6.get_outbound_type() - - # invalid parameter - ctx_7 = AKSPreviewContext( - self.cmd, - { - "outbound_type": CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, - "vnet_subnet_id": "test_vnet_subnet_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - load_balancer_profile = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - outbound_ip_prefixes=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPPrefixes" - )( - public_ip_prefixes=[ - self.models.lb_models.get("ResourceReference")( - id="test_public_ip_prefix" - ) - ] - ) - ) - # fail on mutually exclusive outbound_type and managed_outbound_ip_count/outbound_ips/outbound_ip_prefixes of - # load balancer - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_7.get_outbound_type( - load_balancer_profile=load_balancer_profile, - ) - - def test_get_oidc_issuer_profile__create_not_set(self): - ctx = AKSPreviewContext( - self.cmd, {}, self.models, decorator_mode=DecoratorMode.CREATE - ) - self.assertIsNone(ctx.get_oidc_issuer_profile()) - - def test_get_oidc_issuer_profile__create_enable(self): - ctx = AKSPreviewContext( - self.cmd, - { - "enable_oidc_issuer": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - profile = ctx.get_oidc_issuer_profile() - self.assertIsNotNone(profile) - self.assertTrue(profile.enabled) - - def test_get_oidc_issuer_profile__update_not_set(self): - ctx = AKSPreviewContext( - self.cmd, {}, self.models, decorator_mode=DecoratorMode.UPDATE - ) - ctx.attach_mc(self.models.ManagedCluster(location="test_location")) - self.assertIsNone(ctx.get_oidc_issuer_profile()) - - def test_get_oidc_issuer_profile__update_not_set_with_previous_profile( - self, - ): - ctx = AKSPreviewContext( - self.cmd, {}, self.models, decorator_mode=DecoratorMode.UPDATE - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile( - enabled=True - ) - ctx.attach_mc(self.models.ManagedCluster(location="test_location")) - self.assertIsNone(ctx.get_oidc_issuer_profile()) - - def test_get_oidc_issuer_profile__update_enable(self): - ctx = AKSPreviewContext( - self.cmd, - { - "enable_oidc_issuer": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - ctx.attach_mc(self.models.ManagedCluster(location="test_location")) - profile = ctx.get_oidc_issuer_profile() - self.assertIsNotNone(profile) - self.assertTrue(profile.enabled) - - def test_get_workload_identity_profile__create_no_set(self): - ctx = AKSPreviewContext( - self.cmd, {}, self.models, decorator_mode=DecoratorMode.CREATE - ) - self.assertIsNone(ctx.get_workload_identity_profile()) - - def test_get_workload_identity_profile__create_enable_without_oidc_issuer(self): - ctx = AKSPreviewContext( - self.cmd, - { - "enable_workload_identity": True, - }, - self.models, decorator_mode=DecoratorMode.CREATE - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx.get_workload_identity_profile() - - def test_get_workload_identity_profile__create_enable_with_oidc_issuer(self): - ctx = AKSPreviewContext( - self.cmd, - { - "enable_oidc_issuer": True, - "enable_workload_identity": True, - }, - self.models, decorator_mode=DecoratorMode.CREATE - ) - profile = ctx.get_workload_identity_profile() - self.assertTrue(profile.enabled) - - def test_get_workload_identity_profile__update_not_set(self): - ctx = AKSPreviewContext( - self.cmd, {}, self.models, decorator_mode=DecoratorMode.UPDATE - ) - ctx.attach_mc(self.models.ManagedCluster(location="test_location")) - self.assertIsNone(ctx.get_workload_identity_profile()) - - def test_get_workload_identity_profile__update_with_enable_without_oidc_issuer(self): - ctx = AKSPreviewContext( - self.cmd, - { - "enable_workload_identity": True, - }, - self.models, decorator_mode=DecoratorMode.UPDATE - ) - ctx.attach_mc(self.models.ManagedCluster(location="test_location")) - with self.assertRaises(RequiredArgumentMissingError): - ctx.get_workload_identity_profile() - - def test_get_workload_identity_profile__update_with_enable(self): - for previous_enablement_status in [ - None, # preivous not set - True, # previous set to enabled=true - False, # previous set to enabled=false - ]: - ctx = AKSPreviewContext( - self.cmd, - { - "enable_workload_identity": True, - }, - self.models, decorator_mode=DecoratorMode.UPDATE - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile(enabled=True) - if previous_enablement_status is None: - mc.security_profile = None - else: - mc.security_profile = self.models.ManagedClusterSecurityProfile( - workload_identity=self.models.ManagedClusterSecurityProfileWorkloadIdentity( - enabled=previous_enablement_status - ) - ) - ctx.attach_mc(mc) - profile = ctx.get_workload_identity_profile() - self.assertTrue(profile.enabled) - - def test_get_workload_identity_profile__update_with_disable(self): - for previous_enablement_status in [ - None, # preivous not set - True, # previous set to enabled=true - False, # previous set to enabled=false - ]: - ctx = AKSPreviewContext( - self.cmd, - { - "enable_workload_identity": False, - }, - self.models, decorator_mode=DecoratorMode.UPDATE - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile(enabled=True) - if previous_enablement_status is None: - mc.security_profile = None - else: - mc.security_profile = self.models.ManagedClusterSecurityProfile( - workload_identity=self.models.ManagedClusterSecurityProfileWorkloadIdentity( - enabled=previous_enablement_status - ) - ) - ctx.attach_mc(mc) - profile = ctx.get_workload_identity_profile() - self.assertFalse(profile.enabled) - - def test_get_crg_id(self): - # default - ctx_1 = AKSPreviewContext( - self.cmd, - {"crg_id": "test_crg_id"}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_crg_id(), "test_crg_id") - - ctx_2 = AKSPreviewContext( - self.cmd, - {"crg_id": ""}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_2.get_crg_id(), "") - - ctx_3 = AKSPreviewContext( - self.cmd, - {"crg_id": None}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_3.get_crg_id(), None) - - def test_get_enable_azure_keyvault_kms(self): - ctx_0 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertIsNone(ctx_0.get_enable_azure_keyvault_kms()) - - ctx_1 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_azure_keyvault_kms(), False) - - key_id_1 = "https://fakekeyvault.vault.azure.net/secrets/fakekeyname/fakekeyversion" - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - security_profile = self.models.ManagedClusterSecurityProfile() - security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id_1, - ) - mc = self.models.ManagedCluster( - location="test_location", - security_profile=security_profile, - ) - ctx_2.attach_mc(mc) - self.assertEqual(ctx_2.get_enable_azure_keyvault_kms(), True) - - ctx_3 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": False, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - security_profile = self.models.ManagedClusterSecurityProfile() - security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id_1, - ) - mc = self.models.ManagedCluster( - location="test_location", - security_profile=security_profile, - ) - ctx_3.attach_mc(mc) - self.assertEqual(ctx_3.get_enable_azure_keyvault_kms(), False) - - ctx_4 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_4.get_enable_azure_keyvault_kms() - - ctx_5 = AKSPreviewContext( - self.cmd, - { - "azure_keyvault_kms_key_id": "test_azure_keyvault_kms_key_id", - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_5.get_enable_azure_keyvault_kms() - - def test_get_azure_keyvault_kms_key_id(self): - ctx_0 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertIsNone(ctx_0.get_azure_keyvault_kms_key_id()) - - key_id_1 = "https://fakekeyvault.vault.azure.net/secrets/fakekeyname/fakekeyversion" - ctx_1 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": True, - "azure_keyvault_kms_key_id": key_id_1, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_azure_keyvault_kms_key_id(), key_id_1) - - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": True, - "azure_keyvault_kms_key_id": key_id_1, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - key_id_2 = "https://fakekeyvault2.vault.azure.net/secrets/fakekeyname2/fakekeyversion2" - security_profile = self.models.ManagedClusterSecurityProfile() - security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id_2, - ) - mc = self.models.ManagedCluster( - location="test_location", - security_profile=security_profile, - ) - ctx_2.attach_mc(mc) - self.assertEqual(ctx_2.get_azure_keyvault_kms_key_id(), key_id_2) - - ctx_3 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": True, - "azure_keyvault_kms_key_id": key_id_1, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - security_profile = self.models.ManagedClusterSecurityProfile() - security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id_2, - ) - mc = self.models.ManagedCluster( - location="test_location", - security_profile=security_profile, - ) - ctx_3.attach_mc(mc) - self.assertEqual(ctx_3.get_azure_keyvault_kms_key_id(), key_id_1) - - ctx_4 = AKSPreviewContext( - self.cmd, - { - "azure_keyvault_kms_key_id": key_id_1, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_4.get_azure_keyvault_kms_key_id() - - ctx_5 = AKSPreviewContext( - self.cmd, - { - "enable_azure_keyvault_kms": False, - "azure_keyvault_kms_key_id": key_id_1, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_5.get_azure_keyvault_kms_key_id() - - def test_get_updated_assign_kubelet_identity(self): - ctx_0 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - self.assertEqual(ctx_0.get_updated_assign_kubelet_identity(), "") - - ctx_1 = AKSPreviewContext( - self.cmd, - { - "assign_kubelet_identity": "fakeresourceid", - "yes": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_updated_assign_kubelet_identity(), "fakeresourceid") - - def test_get_enable_apiserver_vnet_integration(self): - ctx_0 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertIsNone(ctx_0.get_enable_apiserver_vnet_integration()) - - ctx_1 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_enable_apiserver_vnet_integration(), False) - - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": False, - "enable_private_cluster": False, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - api_server_access_profile = self.models.ManagedClusterAPIServerAccessProfile() - api_server_access_profile.enable_vnet_integration = True - api_server_access_profile.enable_private_cluster = True - mc = self.models.ManagedCluster( - location="test_location", - api_server_access_profile=api_server_access_profile, - ) - ctx_2.attach_mc(mc) - self.assertEqual(ctx_2.get_enable_apiserver_vnet_integration(), True) - - ctx_3 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": True, - "enable_private_cluster": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_3.get_enable_apiserver_vnet_integration(), True) - - ctx_4 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": True, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_4.get_enable_apiserver_vnet_integration() - - ctx_5 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": True, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_5.get_enable_apiserver_vnet_integration() - - def test_get_apiserver_subnet_id(self): - ctx_0 = AKSPreviewContext( - self.cmd, - {}, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertIsNone(ctx_0.get_apiserver_subnet_id()) - - apiserver_subnet_id = "/subscriptions/fakesub/resourceGroups/fakerg/providers/Microsoft.Network/virtualNetworks/fakevnet/subnets/apiserver" - vnet_subnet_id = "/subscriptions/fakesub/resourceGroups/fakerg/providers/Microsoft.Network/virtualNetworks/fakevnet/subnets/node" - ctx_1 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": True, - "enable_private_cluster": True, - "apiserver_subnet_id": apiserver_subnet_id, - "vnet_subnet_id": vnet_subnet_id, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - self.assertEqual(ctx_1.get_apiserver_subnet_id(), apiserver_subnet_id) - - ctx_2 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": True, - "enable_private_cluster": True, - "vnet_subnet_id": vnet_subnet_id - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - api_server_access_profile = self.models.ManagedClusterAPIServerAccessProfile() - api_server_access_profile.subnet_id = apiserver_subnet_id - mc = self.models.ManagedCluster( - location="test_location", - api_server_access_profile=api_server_access_profile, - ) - ctx_2.attach_mc(mc) - self.assertEqual(ctx_2.get_apiserver_subnet_id(), apiserver_subnet_id) - - ctx_3 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": True, - "apiserver_subnet_id": apiserver_subnet_id, - }, - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - self.assertEqual(ctx_3.get_apiserver_subnet_id(), apiserver_subnet_id) - - ctx_4 = AKSPreviewContext( - self.cmd, - { - "enable_private_cluster": True, - "apiserver_subnet_id": apiserver_subnet_id, - "vnet_subnet_id": vnet_subnet_id, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_4.get_apiserver_subnet_id() - - ctx_5 = AKSPreviewContext( - self.cmd, - { - "enable_apiserver_vnet_integration": False, - "apiserver_subnet_id": apiserver_subnet_id, - "vnet_subnet_id": vnet_subnet_id, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_5.get_apiserver_subnet_id() - - ctx_6 = AKSPreviewContext( - self.cmd, - { - "apiserver_subnet_id": apiserver_subnet_id, - }, - self.models, - decorator_mode=DecoratorMode.CREATE, - ) - with self.assertRaises(RequiredArgumentMissingError): - ctx_6.get_apiserver_subnet_id() - - def test_get_enable_keda(self): - # Returns the value of enable_keda if keda is None in existing profile. - ctx = AKSPreviewContext(self.cmd, {}, self.models, decorator_mode=DecoratorMode.CREATE) - self.assertIsNone(ctx.get_enable_keda()) - - ctx = AKSPreviewContext(self.cmd, {"enable_keda": False}, self.models, decorator_mode=DecoratorMode.CREATE) - self.assertFalse(ctx.get_enable_keda()) - - ctx = AKSPreviewContext(self.cmd, {"enable_keda": True}, self.models, decorator_mode=DecoratorMode.CREATE) - self.assertTrue(ctx.get_enable_keda()) - - keda_none_mc = self.models.ManagedCluster( - location="test_location", - workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile()) - - keda_false_mc = self.models.ManagedCluster( - location="test_location", - workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile( - keda=self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=False))) - - keda_true_mc = self.models.ManagedCluster( - location="test_location", - workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile( - keda=self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True))) - - # Returns the value of keda in existing profile if enable_keda is None. - ctx = AKSPreviewContext(self.cmd, {}, self.models, decorator_mode=DecoratorMode.CREATE) - ctx.attach_mc(keda_none_mc) - self.assertIsNone(ctx.get_enable_keda()) - - ctx = AKSPreviewContext(self.cmd, {}, self.models, decorator_mode=DecoratorMode.CREATE) - ctx.attach_mc(keda_false_mc) - self.assertFalse(ctx.get_enable_keda()) - - ctx = AKSPreviewContext(self.cmd, {}, self.models, decorator_mode=DecoratorMode.CREATE) - ctx.attach_mc(keda_true_mc) - self.assertTrue(ctx.get_enable_keda()) - - # Ignores the value of keda in existing profile in update-mode. - ctx = AKSPreviewContext(self.cmd, {}, self.models, decorator_mode=DecoratorMode.UPDATE) - ctx.attach_mc(keda_true_mc) - self.assertIsNone(ctx.get_enable_keda()) - - # Throws exception when both enable_keda and disable_keda are True. - ctx = AKSPreviewContext(self.cmd, {"enable_keda": True, "disable_keda": True}, self.models, decorator_mode=DecoratorMode.CREATE) - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx.get_enable_keda() - - # Throws exception when disable_keda and the value of keda in existing profile are True. - ctx = AKSPreviewContext(self.cmd, {"disable_keda": True}, self.models, decorator_mode=DecoratorMode.CREATE) - ctx.attach_mc(keda_true_mc) - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx.get_enable_keda() - - def test_get_disable_keda(self): - # Returns the value of disable_keda. - ctx = AKSPreviewContext(self.cmd, {}, self.models, decorator_mode=DecoratorMode.CREATE) - self.assertIsNone(ctx.get_disable_keda()) - - ctx = AKSPreviewContext(self.cmd, {"disable_keda": False}, self.models, decorator_mode=DecoratorMode.CREATE) - self.assertFalse(ctx.get_disable_keda()) - - ctx = AKSPreviewContext(self.cmd, {"disable_keda": True}, self.models, decorator_mode=DecoratorMode.CREATE) - self.assertTrue(ctx.get_disable_keda()) - - # Throws exception when both enable_keda and disable_keda are True. - ctx = AKSPreviewContext(self.cmd, {"enable_keda": True, "disable_keda": True}, self.models, decorator_mode=DecoratorMode.CREATE) - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx.get_disable_keda() - - keda_true_mc = self.models.ManagedCluster( - location="test_location", - workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile( - keda=self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True))) - - # Throws exception when disable_keda and the value of keda in existing profile are True. - ctx = AKSPreviewContext(self.cmd, {"disable_keda": True}, self.models, decorator_mode=DecoratorMode.CREATE) - ctx.attach_mc(keda_true_mc) - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx.get_disable_keda() - - -class AKSPreviewCreateDecoratorTestCase(unittest.TestCase): - def setUp(self): - # manually register CUSTOM_MGMT_AKS_PREVIEW - register_aks_preview_resource_type() - self.cli_ctx = MockCLI() - self.cmd = MockCmd(self.cli_ctx) - self.models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW) - self.client = MockClient() - - def test_set_up_agent_pool_profiles(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "nodepool_name": "nodepool1", - "nodepool_tags": None, - "nodepool_labels": None, - "node_count": 3, - "node_vm_size": "Standard_DS2_v2", - "os_sku": None, - "vnet_subnet_id": None, - "pod_subnet_id": None, - "ppg": None, - "zones": None, - "enable_node_public_ip": False, - "enable_fips_image": False, - "node_public_ip_prefix_id": None, - "enable_encryption_at_host": False, - "enable_ultra_ssd": False, - "max_pods": 0, - "node_osdisk_size": 0, - "node_osdisk_type": None, - "enable_cluster_autoscaler": False, - "min_count": None, - "max_count": None, - "workload_runtime": None, - "gpu_instance_profile": None, - "kubelet_config": None, - "snapshot_id": None, - "host_group_id": None, - "crg_id": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_agent_pool_profiles(None) - dec_mc_1 = dec_1.set_up_agent_pool_profiles(mc_1) - agent_pool_profile_1 = self.models.ManagedClusterAgentPoolProfile( - # Must be 12 chars or less before ACS RP adds to it - name="nodepool1", - tags=None, - node_labels=None, - count=3, - vm_size="Standard_DS2_v2", - os_type="Linux", - os_sku=None, - vnet_subnet_id=None, - pod_subnet_id=None, - proximity_placement_group_id=None, - availability_zones=None, - enable_node_public_ip=False, - enable_fips=False, - node_public_ip_prefix_id=None, - enable_encryption_at_host=False, - enable_ultra_ssd=False, - max_pods=None, - type="VirtualMachineScaleSets", - mode="System", - os_disk_size_gb=None, - os_disk_type=None, - enable_auto_scaling=False, - min_count=None, - max_count=None, - workload_runtime=None, - gpu_instance_profile=None, - kubelet_config=None, - creation_data=None, - host_group_id=None, - capacity_reservation_group_id=None, - ) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location") - ground_truth_mc_1.agent_pool_profiles = [agent_pool_profile_1] - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "nodepool_name": "test_np_name1234", - "nodepool_tags": {"k1": "v1"}, - "nodepool_labels": {"k1": "v1", "k2": "v2"}, - "node_count": 10, - "node_vm_size": "Standard_DSx_vy", - "os_sku": None, - "vnet_subnet_id": "test_vnet_subnet_id", - "pod_subnet_id": "test_pod_subnet_id", - "ppg": "test_ppg_id", - "zones": ["tz1", "tz2"], - "enable_node_public_ip": True, - "enable_fips_image": True, - "node_public_ip_prefix_id": "test_node_public_ip_prefix_id", - "enable_encryption_at_host": True, - "enable_ultra_ssd": True, - "max_pods": 50, - "node_osdisk_size": 100, - "node_osdisk_type": "test_os_disk_type", - "enable_cluster_autoscaler": True, - "min_count": 5, - "max_count": 20, - "workload_runtime": "test_workload_runtime", - "gpu_instance_profile": "test_gpu_instance_profile", - "kubelet_config": _get_test_data_file("kubeletconfig.json"), - "linux_os_config": _get_test_data_file("linuxosconfig.json"), - "snapshot_id": "test_snapshot_id", - "host_group_id": "test_host_group_id", - "crg_id": "test_crg_id", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - mock_snapshot = Mock( - kubernetes_version="", - os_sku="snapshot_os_sku", - vm_size="snapshot_vm_size", - ) - with patch( - "azext_aks_preview.decorator._get_snapshot", - return_value=mock_snapshot, - ): - dec_mc_2 = dec_2.set_up_agent_pool_profiles(mc_2) - agent_pool_profile_2 = self.models.ManagedClusterAgentPoolProfile( - # Must be 12 chars or less before ACS RP adds to it - name="test_np_name", - tags={"k1": "v1"}, - node_labels={"k1": "v1", "k2": "v2"}, - count=10, - vm_size="Standard_DSx_vy", - os_type="Linux", - os_sku="snapshot_os_sku", - vnet_subnet_id="test_vnet_subnet_id", - pod_subnet_id="test_pod_subnet_id", - proximity_placement_group_id="test_ppg_id", - availability_zones=["tz1", "tz2"], - enable_node_public_ip=True, - enable_fips=True, - node_public_ip_prefix_id="test_node_public_ip_prefix_id", - enable_encryption_at_host=True, - enable_ultra_ssd=True, - max_pods=50, - type="VirtualMachineScaleSets", - mode="System", - os_disk_size_gb=100, - os_disk_type="test_os_disk_type", - enable_auto_scaling=True, - min_count=5, - max_count=20, - workload_runtime="test_workload_runtime", - gpu_instance_profile="test_gpu_instance_profile", - kubelet_config={ - "cpuManagerPolicy": "static", - "cpuCfsQuota": True, - "cpuCfsQuotaPeriod": "200ms", - "imageGcHighThreshold": 90, - "imageGcLowThreshold": 70, - "topologyManagerPolicy": "best-effort", - "allowedUnsafeSysctls": ["kernel.msg*", "net.*"], - "failSwapOn": False, - "containerLogMaxFiles": 10, - "podMaxPids": 120, - "containerLogMaxSizeMB": 20, - }, - linux_os_config={ - "transparentHugePageEnabled": "madvise", - "transparentHugePageDefrag": "defer+madvise", - "swapFileSizeMB": 1500, - "sysctls": { - "netCoreSomaxconn": 163849, - "netIpv4TcpTwReuse": True, - "netIpv4IpLocalPortRange": "32000 60000", - }, - }, - creation_data=self.models.CreationData( - source_resource_id="test_snapshot_id" - ), - capacity_reservation_group_id="test_crg_id", - host_group_id="test_host_group_id", - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location") - ground_truth_mc_2.agent_pool_profiles = [agent_pool_profile_2] - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_set_up_http_proxy_config(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "http_proxy_config": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_http_proxy_config(None) - dec_mc_1 = dec_1.set_up_http_proxy_config(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location") - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - {"http_proxy_config": _get_test_data_file("httpproxyconfig.json")}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_mc_2 = dec_2.set_up_http_proxy_config(mc_2) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - http_proxy_config={ - "httpProxy": "http://cli-proxy-vm:3128/", - "httpsProxy": "https://cli-proxy-vm:3129/", - "noProxy": ["localhost", "127.0.0.1"], - "trustedCa": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZHekNDQXdPZ0F3SUJBZ0lVT1FvajhDTFpkc2Vscjk3cnZJd3g1T0xEc3V3d0RRWUpLb1pJaHZjTkFRRUwKQlFBd0Z6RVZNQk1HQTFVRUF3d01ZMnhwTFhCeWIzaDVMWFp0TUI0WERUSXlNRE13T0RFMk5EUTBOMW9YRFRNeQpNRE13TlRFMk5EUTBOMW93RnpFVk1CTUdBMVVFQXd3TVkyeHBMWEJ5YjNoNUxYWnRNSUlDSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUEvTVB0VjVCVFB0NmNxaTRSZE1sbXIzeUlzYTJ1anpjaHh2NGgKanNDMUR0blJnb3M1UzQxUEgwcmkrM3RUU1ZYMzJ5cndzWStyRDFZUnVwbTZsbUU3R2hVNUkwR2k5b3prU0YwWgpLS2FKaTJveXBVL0ZCK1FQcXpvQ1JzTUV3R0NibUtGVmw4VnVoeW5kWEs0YjRrYmxyOWJsL2V1d2Q3TThTYnZ6CldVam5lRHJRc2lJc3J6UFQ0S0FaTHFjdHpEZTRsbFBUN1lLYTMzaGlFUE9mdldpWitkcWthUUE5UDY0eFhTeW4KZkhYOHVWQUozdUJWSmVHeEQwcGtOSjdqT3J5YVV1SEh1Y1U4UzltSWpuS2pBQjVhUGpMSDV4QXM2bG1iMzEyMgp5KzF0bkVBbVhNNTBEK1VvRWpmUzZIT2I1cmRpcVhHdmMxS2JvS2p6a1BDUnh4MmE3MmN2ZWdVajZtZ0FKTHpnClRoRTFsbGNtVTRpemd4b0lNa1ZwR1RWT0xMbjFWRkt1TmhNWkN2RnZLZ25Lb0F2M0cwRlVuZldFYVJSalNObUQKTFlhTURUNUg5WnQycERJVWpVR1N0Q2w3Z1J6TUVuWXdKTzN5aURwZzQzbzVkUnlzVXlMOUpmRS9OaDdUZzYxOApuOGNKL1c3K1FZYllsanVyYXA4cjdRRlNyb2wzVkNoRkIrT29yNW5pK3ZvaFNBd0pmMFVsTXBHM3hXbXkxVUk0ClRGS2ZGR1JSVHpyUCs3Yk53WDVoSXZJeTVWdGd5YU9xSndUeGhpL0pkeHRPcjJ0QTVyQ1c3K0N0Z1N2emtxTkUKWHlyN3ZrWWdwNlk1TFpneTR0VWpLMEswT1VnVmRqQk9oRHBFenkvRkY4dzFGRVZnSjBxWS9yV2NMa0JIRFQ4Ugp2SmtoaW84Q0F3RUFBYU5mTUYwd0Z3WURWUjBSQkJBd0RvSU1ZMnhwTFhCeWIzaDVMWFp0TUJJR0ExVWRFd0VCCi93UUlNQVlCQWY4Q0FRQXdEd1lEVlIwUEFRSC9CQVVEQXdmbmdEQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0QKQWdZSUt3WUJCUVVIQXdFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFBb21qQ3lYdmFRT3hnWUs1MHNYTEIyKwp3QWZkc3g1bm5HZGd5Zmc0dXJXMlZtMTVEaEd2STdDL250cTBkWXkyNE4vVWJHN1VEWHZseUxJSkZxMVhQN25mCnBaRzBWQ2paNjlibXhLbTNaOG0wL0F3TXZpOGU5ZWR5OHY5a05CQ3dMR2tIYkE4WW85Q0lpUWdlbGZwcDF2VWgKYm5OQmhhRCtpdTZDZmlDTHdnSmIvaXc3ZW8vQ3lvWnF4K3RqWGFPMnpYdm00cC8rUUlmQU9ndEdRTEZVOGNmWgovZ1VyVHE1Z0ZxMCtQOUd5V3NBVEpGNnE3TDZXWlpqME91VHNlN2Y0Q1NpajZNbk9NTXhBK0pvYWhKejdsc1NpClRKSEl3RXA1ci9SeWhweWVwUXhGWWNVSDVKSmY5cmFoWExXWmkrOVRqeFNNMll5aHhmUlBzaVVFdUdEb2s3OFEKbS9RUGlDaTlKSmIxb2NtVGpBVjh4RFNob2NpdlhPRnlobjZMbjc3dkxqWStBYXZ0V0RoUXRocHVQeHNMdFZ6bQplMFNIMTFkRUxSdGI3NG1xWE9yTzdmdS8rSUJzM0pxTEUvVSt4dXhRdHZHOHZHMXlES0hIU1pxUzJoL1dzNGw0Ck5pQXNoSGdlaFFEUEJjWTl3WVl6ZkJnWnBPVU16ZERmNTB4K0ZTbFk0M1dPSkp6U3VRaDR5WjArM2t5Z3VDRjgKcm5NTFNjZXlTNGNpNExtSi9LQ1N1R2RmNlhWWXo4QkU5Z2pqanBDUDZxeTBVbFJlZldzL2lnL3djSysyYkYxVApuL1l2KzZnWGVDVEhKNzVxRElQbHA3RFJVVWswZmJNajRiSWthb2dXV2s0emYydThteFpMYTBsZVBLTktaTi9tCkdDdkZ3cjNlaSt1LzhjenA1RjdUCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - }, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_set_up_node_resource_group(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "node_resource_group": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_node_resource_group(None) - dec_mc_1 = dec_1.set_up_node_resource_group(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location") - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - {"node_resource_group": "test_node_resource_group"}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_mc_2 = dec_2.set_up_node_resource_group(mc_2) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - node_resource_group="test_node_resource_group", - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_set_up_network_profile(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "load_balancer_sku": None, - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - "load_balancer_outbound_ports": None, - "load_balancer_idle_timeout": None, - "outbound_type": None, - "network_plugin": None, - "pod_cidr": None, - "service_cidr": None, - "dns_service_ip": None, - "docker_bridge_cidr": None, - "network_policy": None, - "nat_gateway_managed_outbound_ip_count": None, - "nat_gateway_idle_timeout": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_network_profile(None) - dec_mc_1 = dec_1.set_up_network_profile(mc_1) - - network_profile_1 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet", # default value in SDK - pod_cidr="10.244.0.0/16", # default value in SDK - service_cidr="10.0.0.0/16", # default value in SDK - dns_service_ip="10.0.0.10", # default value in SDK - docker_bridge_cidr="172.17.0.1/16", # default value in SDK - load_balancer_sku="standard", - outbound_type="loadBalancer", - ) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_1 - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "load_balancer_sku": None, - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - "load_balancer_outbound_ports": None, - "load_balancer_idle_timeout": None, - "outbound_type": None, - "network_plugin": "kubenet", - "pod_cidr": "10.246.0.0/16", - "service_cidr": None, - "dns_service_ip": None, - "docker_bridge_cidr": None, - "network_policy": None, - "nat_gateway_managed_outbound_ip_count": 10, - "nat_gateway_idle_timeout": 20, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_mc_2 = dec_2.set_up_network_profile(mc_2) - - nat_gateway_profile_2 = self.models.nat_gateway_models.ManagedClusterNATGatewayProfile( - managed_outbound_ip_profile=self.models.nat_gateway_models.ManagedClusterManagedOutboundIPProfile( - count=10 - ), - idle_timeout_in_minutes=20, - ) - network_profile_2 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet", - pod_cidr="10.246.0.0/16", - service_cidr=None, # overwritten to None - dns_service_ip=None, # overwritten to None - docker_bridge_cidr=None, # overwritten to None - load_balancer_sku="standard", - outbound_type="loadBalancer", - nat_gateway_profile=nat_gateway_profile_2, - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_2 - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - # dual-stack - dec_3 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "load_balancer_sku": None, - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_managed_outbound_ipv6_count": 3, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - "load_balancer_outbound_ports": None, - "load_balancer_idle_timeout": None, - "outbound_type": None, - "network_plugin": "kubenet", - "pod_cidr": None, - "service_cidr": None, - "pod_cidrs": "10.246.0.0/16,2001:abcd::/64", - "service_cidrs": "10.0.0.0/16,2001:ffff::/108", - "ip_families": "IPv4,IPv6", - "dns_service_ip": None, - "docker_bridge_cidr": None, - "network_policy": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_3 = self.models.ManagedCluster(location="test_location") - dec_mc_3 = dec_3.set_up_network_profile(mc_3) - - network_profile_3 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet", - pod_cidr=None, # overwritten to None - service_cidr=None, # overwritten to None - dns_service_ip=None, # overwritten to None - docker_bridge_cidr=None, # overwritten to None - load_balancer_sku="standard", - outbound_type="loadBalancer", - ip_families=["IPv4", "IPv6"], - pod_cidrs=["10.246.0.0/16", "2001:abcd::/64"], - service_cidrs=["10.0.0.0/16", "2001:ffff::/108"], - ) - load_balancer_profile = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )( - count=1, - count_ipv6=3, - ) - ) - - network_profile_3.load_balancer_profile = load_balancer_profile - - ground_truth_mc_3 = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_3 - ) - self.assertEqual(dec_mc_3, ground_truth_mc_3) - - def test_set_up_pod_security_policy(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_pod_security_policy": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_pod_security_policy(None) - dec_mc_1 = dec_1.set_up_pod_security_policy(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", enable_pod_security_policy=False - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - {"enable_pod_security_policy": True}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_mc_2 = dec_2.set_up_pod_security_policy(mc_2) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=True, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_set_up_pod_identity_profile(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_pod_identity": False, - "enable_pod_identity_with_kubenet": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_pod_identity_profile(None) - dec_mc_1 = dec_1.set_up_pod_identity_profile(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location") - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_managed_identity": True, - "enable_pod_identity": True, - "enable_pod_identity_with_kubenet": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - network_profile_2 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet" - ) - mc_2 = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_2 - ) - dec_mc_2 = dec_2.set_up_pod_identity_profile(mc_2) - network_profile_2 = self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet" - ) - pod_identity_profile_2 = ( - self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - enabled=True, - allow_network_plugin_kubenet=True, - ) - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - network_profile=network_profile_2, - pod_identity_profile=pod_identity_profile_2, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_build_monitoring_addon_profile(self): - # default - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "resource_group_name": "test_rg_name", - "name": "test_name", - "location": "test_location", - "enable_addons": "monitoring", - "workspace_resource_id": "test_workspace_resource_id", - "enable_msi_auth_for_monitoring": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - dec_1.context.set_intermediate( - "subscription_id", "test_subscription_id" - ) - - with patch( - "azext_aks_preview.decorator.ensure_container_insights_for_monitoring", - return_value=None, - ): - self.assertEqual( - dec_1.context.get_intermediate("monitoring"), None) - monitoring_addon_profile = dec_1.build_monitoring_addon_profile() - ground_truth_monitoring_addon_profile = self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID: "/test_workspace_resource_id", - CONST_MONITORING_USING_AAD_MSI_AUTH: False, - }, - ) - self.assertEqual( - monitoring_addon_profile, ground_truth_monitoring_addon_profile - ) - self.assertEqual( - dec_1.context.get_intermediate("monitoring"), True) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "resource_group_name": "test_rg_name", - "name": "test_name", - "location": "test_location", - "enable_addons": "monitoring", - "workspace_resource_id": "test_workspace_resource_id", - "enable_msi_auth_for_monitoring": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - dec_2.context.set_intermediate( - "subscription_id", "test_subscription_id" - ) - - with patch( - "azext_aks_preview.decorator.ensure_container_insights_for_monitoring", - return_value=None, - ): - self.assertEqual( - dec_2.context.get_intermediate("monitoring"), None) - monitoring_addon_profile = dec_2.build_monitoring_addon_profile() - ground_truth_monitoring_addon_profile = self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID: "/test_workspace_resource_id", - CONST_MONITORING_USING_AAD_MSI_AUTH: True, - }, - ) - self.assertEqual( - monitoring_addon_profile, ground_truth_monitoring_addon_profile - ) - self.assertEqual( - dec_2.context.get_intermediate("monitoring"), True) - - def test_build_ingress_appgw_addon_profile(self): - # default - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - self.assertEqual( - dec_1.context.get_intermediate("ingress_appgw_addon_enabled"), None - ) - ingress_appgw_addon_profile = dec_1.build_ingress_appgw_addon_profile() - ground_truth_ingress_appgw_addon_profile = ( - self.models.ManagedClusterAddonProfile( - enabled=True, - config={}, - ) - ) - self.assertEqual( - ingress_appgw_addon_profile, - ground_truth_ingress_appgw_addon_profile, - ) - self.assertEqual( - dec_1.context.get_intermediate("ingress_appgw_addon_enabled"), True - ) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "appgw_name": "test_appgw_name", - "appgw_subnet_prefix": "test_appgw_subnet_prefix", - "appgw_id": "test_appgw_id", - "appgw_subnet_id": "test_appgw_subnet_id", - "appgw_watch_namespace": "test_appgw_watch_namespace", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - self.assertEqual( - dec_2.context.get_intermediate("ingress_appgw_addon_enabled"), None - ) - ingress_appgw_addon_profile = dec_2.build_ingress_appgw_addon_profile() - ground_truth_ingress_appgw_addon_profile = self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME: "test_appgw_name", - CONST_INGRESS_APPGW_SUBNET_CIDR: "test_appgw_subnet_prefix", - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID: "test_appgw_id", - CONST_INGRESS_APPGW_SUBNET_ID: "test_appgw_subnet_id", - CONST_INGRESS_APPGW_WATCH_NAMESPACE: "test_appgw_watch_namespace", - }, - ) - self.assertEqual( - ingress_appgw_addon_profile, - ground_truth_ingress_appgw_addon_profile, - ) - self.assertEqual( - dec_2.context.get_intermediate("ingress_appgw_addon_enabled"), True - ) - - # custom value - dec_3 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "appgw_name": "test_appgw_name", - "appgw_subnet_prefix": "test_appgw_subnet_prefix", - "appgw_subnet_cidr": "test_appgw_subnet_cidr", - "appgw_id": "test_appgw_id", - "appgw_subnet_id": "test_appgw_subnet_id", - "appgw_watch_namespace": "test_appgw_watch_namespace", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - self.assertEqual( - dec_3.context.get_intermediate("ingress_appgw_addon_enabled"), None - ) - ingress_appgw_addon_profile = dec_3.build_ingress_appgw_addon_profile() - ground_truth_ingress_appgw_addon_profile = self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME: "test_appgw_name", - CONST_INGRESS_APPGW_SUBNET_CIDR: "test_appgw_subnet_cidr", - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID: "test_appgw_id", - CONST_INGRESS_APPGW_SUBNET_ID: "test_appgw_subnet_id", - CONST_INGRESS_APPGW_WATCH_NAMESPACE: "test_appgw_watch_namespace", - }, - ) - self.assertEqual( - ingress_appgw_addon_profile, - ground_truth_ingress_appgw_addon_profile, - ) - self.assertEqual( - dec_3.context.get_intermediate("ingress_appgw_addon_enabled"), True - ) - - def test_build_gitops_addon_profile(self): - # default - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - gitops_addon_profile = dec_1.build_gitops_addon_profile() - ground_truth_gitops_addon_profile = ( - self.models.ManagedClusterAddonProfile( - enabled=True, - ) - ) - self.assertEqual( - gitops_addon_profile, ground_truth_gitops_addon_profile - ) - - def test_set_up_addon_profiles(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_addons": None, - "workspace_resource_id": None, - "aci_subnet_name": None, - "appgw_name": None, - "appgw_subnet_cidr": None, - "appgw_id": None, - "appgw_subnet_id": None, - "appgw_watch_namespace": None, - "enable_sgxquotehelper": False, - "enable_secret_rotation": False, - "rotation_poll_interval": None, - "appgw_subnet_prefix": None, - "enable_msi_auth_for_monitoring": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_addon_profiles(None) - dec_mc_1 = dec_1.set_up_addon_profiles(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", addon_profiles={} - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - self.assertEqual(dec_1.context.get_intermediate("monitoring"), None) - self.assertEqual( - dec_1.context.get_intermediate("enable_virtual_node"), None - ) - self.assertEqual( - dec_1.context.get_intermediate("ingress_appgw_addon_enabled"), None - ) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "name": "test_name", - "resource_group_name": "test_rg_name", - "location": "test_location", - "vnet_subnet_id": "test_vnet_subnet_id", - "enable_addons": "monitoring,ingress-appgw,gitops", - "workspace_resource_id": "test_workspace_resource_id", - "enable_msi_auth_for_monitoring": True, - "appgw_name": "test_appgw_name", - "appgw_subnet_prefix": "test_appgw_subnet_prefix", - "appgw_id": "test_appgw_id", - "appgw_subnet_id": "test_appgw_subnet_id", - "appgw_watch_namespace": "test_appgw_watch_namespace", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - dec_2.context.set_intermediate( - "subscription_id", "test_subscription_id" - ) - mc_2 = self.models.ManagedCluster(location="test_location") - with patch( - "azext_aks_preview.decorator.ensure_container_insights_for_monitoring", - return_value=None, - ): - dec_mc_2 = dec_2.set_up_addon_profiles(mc_2) - - addon_profiles_2 = { - CONST_MONITORING_ADDON_NAME: self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID: "/test_workspace_resource_id", - CONST_MONITORING_USING_AAD_MSI_AUTH: True, - }, - ), - CONST_INGRESS_APPGW_ADDON_NAME: self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_NAME: "test_appgw_name", - CONST_INGRESS_APPGW_APPLICATION_GATEWAY_ID: "test_appgw_id", - CONST_INGRESS_APPGW_SUBNET_ID: "test_appgw_subnet_id", - CONST_INGRESS_APPGW_SUBNET_CIDR: "test_appgw_subnet_prefix", - CONST_INGRESS_APPGW_WATCH_NAMESPACE: "test_appgw_watch_namespace", - }, - ), - CONST_GITOPS_ADDON_NAME: self.models.ManagedClusterAddonProfile( - enabled=True, - ), - } - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", addon_profiles=addon_profiles_2 - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - self.assertEqual(dec_2.context.get_intermediate("monitoring"), True) - self.assertEqual( - dec_2.context.get_intermediate("enable_virtual_node"), None - ) - self.assertEqual( - dec_2.context.get_intermediate("ingress_appgw_addon_enabled"), True - ) - - def test_set_up_windows_profile(self): - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "windows_admin_username": None, - "windows_admin_password": None, - "enable_ahub": False, - "enable_windows_gmsa": False, - "gmsa_dns_server": None, - "gmsa_root_domain_name": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster(location="test_location") - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.set_up_windows_profile(None) - dec_mc_1 = dec_1.set_up_windows_profile(mc_1) - - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location") - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - # [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="fake secrets in unit test")] - "windows_admin_username": "test_win_admin_name", - "windows_admin_password": "test_win_admin_password", - "enable_ahub": True, - "enable_windows_gmsa": True, - "gmsa_dns_server": "test_gmsa_dns_server", - "gmsa_root_domain_name": "test_gmsa_root_domain_name", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_mc_2 = dec_2.set_up_windows_profile(mc_2) - - windows_gmsa_profile_2 = self.models.WindowsGmsaProfile( - enabled=True, - dns_server="test_gmsa_dns_server", - root_domain_name="test_gmsa_root_domain_name", - ) - windows_profile_2 = self.models.ManagedClusterWindowsProfile( - # [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="fake secrets in unit test")] - admin_username="test_win_admin_name", - admin_password="test_win_admin_password", - license_type="Windows_Server", - gmsa_profile=windows_gmsa_profile_2, - ) - - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", windows_profile=windows_profile_2 - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_set_up_oidc_issuer_profile__default_value(self): - dec = AKSPreviewCreateDecorator( - self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - updated_mc = dec.set_up_oidc_issuer_profile(mc) - self.assertIsNone(updated_mc.oidc_issuer_profile) - - def test_set_up_oidc_issuer_profile__enabled(self): - dec = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_oidc_issuer": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc = self.models.ManagedCluster(location="test_location") - updated_mc = dec.set_up_oidc_issuer_profile(mc) - self.assertIsNotNone(updated_mc.oidc_issuer_profile) - self.assertTrue(updated_mc.oidc_issuer_profile.enabled) - - def test_set_up_oidc_issuer_profile__enabled_mc_enabled(self): - dec = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_oidc_issuer": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile( - enabled=True - ) - updated_mc = dec.set_up_oidc_issuer_profile(mc) - self.assertIsNotNone(updated_mc.oidc_issuer_profile) - self.assertTrue(updated_mc.oidc_issuer_profile.enabled) - - def test_set_up_workload_identity_profile__default_value(self): - dec = AKSPreviewCreateDecorator( - self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - updated_mc = dec.set_up_workload_identity_profile(mc) - self.assertIsNone(updated_mc.security_profile) - - def test_set_up_workload_identity_profile__default_value_with_security_profile(self): - dec = AKSPreviewCreateDecorator( - self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - mc.security_profile = self.models.ManagedClusterSecurityProfile() - updated_mc = dec.set_up_workload_identity_profile(mc) - self.assertIsNone(updated_mc.security_profile.workload_identity) - - def test_set_up_workload_identity_profile__enabled(self): - dec = AKSPreviewCreateDecorator( - self.cmd, self.client, - { - "enable_oidc_issuer": True, - "enable_workload_identity": True, - }, - CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - updated_mc = dec.set_up_workload_identity_profile(mc) - self.assertTrue(updated_mc.security_profile.workload_identity.enabled) - - def test_set_up_azure_keyvault_kms(self): - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster( - location="test_location" - ) - dec_mc_1 = dec_1.set_up_azure_keyvault_kms(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location" - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - key_id_1 = "https://fakekeyvault.vault.azure.net/secrets/fakekeyname/fakekeyversion" - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_azure_keyvault_kms": True, - "azure_keyvault_kms_key_id": key_id_1, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_mc_2 = dec_2.set_up_azure_keyvault_kms(mc_2) - - ground_truth_azure_keyvault_kms_profile_2 = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id_1, - ) - ground_truth_security_profile_2 = self.models.ManagedClusterSecurityProfile( - azure_key_vault_kms=ground_truth_azure_keyvault_kms_profile_2, - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - security_profile=ground_truth_security_profile_2, - ) - - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_set_up_api_server_access_profile(self): - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster( - location="test_location" - ) - dec_mc_1 = dec_1.set_up_api_server_access_profile(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location" - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - apiserver_subnet_id = "/subscriptions/fakesub/resourceGroups/fakerg/providers/Microsoft.Network/virtualNetworks/fakevnet/subnets/apiserver" - vnet_subnet_id = "/subscriptions/fakesub/resourceGroups/fakerg/providers/Microsoft.Network/virtualNetworks/fakevnet/subnets/node" - dec_2 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "enable_apiserver_vnet_integration": True, - "enable_private_cluster": True, - "apiserver_subnet_id": apiserver_subnet_id, - "vnet_subnet_id": vnet_subnet_id, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_mc_2 = dec_2.set_up_api_server_access_profile(mc_2) - ground_truth_api_server_access_profile_2 = self.models.ManagedClusterAPIServerAccessProfile( - enable_vnet_integration=True, - subnet_id=apiserver_subnet_id, - enable_private_cluster=True, - authorized_ip_ranges=[], - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - api_server_access_profile=ground_truth_api_server_access_profile_2, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_set_up_creationdata_of_cluster_snapshot(self): - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "cluster_snapshot_id": "test_cluster_snapshot_id", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster(location="test_location") - dec_mc_1 = dec_1.set_up_creationdata_of_cluster_snapshot(mc_1) - cd = self.models.CreationData( - source_resource_id="test_cluster_snapshot_id" - ) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", creation_data=cd) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - def test_set_up_workload_auto_scaler_profile(self): - # Throws exception when incorrect mc object is passed. - dec = AKSPreviewCreateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) - with self.assertRaisesRegex(CLIInternalError, "^Unexpected mc object with type ''\.$"): - dec.set_up_workload_auto_scaler_profile(None) - - # Sets profile to None without raw parameters. - dec = AKSPreviewCreateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) - mc_in = self.models.ManagedCluster(location="test_location") - mc_out = dec.set_up_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertIsNone(mc_out.workload_auto_scaler_profile) - - # Sets profile to None if enable_keda is False. - dec = AKSPreviewCreateDecorator(self.cmd, self.client, {"enable_keda": False}, CUSTOM_MGMT_AKS_PREVIEW) - mc_in = self.models.ManagedCluster(location="test_location") - mc_out = dec.set_up_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertIsNone(mc_out.workload_auto_scaler_profile) - - # Sets profile with keda enabled if enable_keda is True. - dec = AKSPreviewCreateDecorator(self.cmd, self.client, {"enable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) - mc_in = self.models.ManagedCluster(location="test_location") - mc_out = dec.set_up_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) - self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) - - def test_construct_mc_preview_profile(self): - import inspect - - import paramiko - from azext_aks_preview.custom import aks_create - from azure.cli.command_modules.acs.decorator import AKSParamDict - - optional_params = {} - positional_params = [] - for _, v in inspect.signature(aks_create).parameters.items(): - if v.default != v.empty: - optional_params[v.name] = v.default - else: - positional_params.append(v.name) - ground_truth_positional_params = [ - "cmd", - "client", - "resource_group_name", - "name", - "ssh_key_value", - ] - self.assertEqual(positional_params, ground_truth_positional_params) - - # prepare ssh key - key = paramiko.RSAKey.generate(2048) - public_key = "{} {}".format(key.get_name(), key.get_base64()) - - # prepare a dictionary of default parameters - raw_param_dict = { - "resource_group_name": "test_rg_name", - "name": "test_name", - "ssh_key_value": public_key, - } - raw_param_dict.update(optional_params) - raw_param_dict = AKSParamDict(raw_param_dict) - - # default value in `aks_create` - dec_1 = AKSPreviewCreateDecorator( - self.cmd, self.client, raw_param_dict, CUSTOM_MGMT_AKS_PREVIEW - ) - - mock_profile = Mock( - get_subscription_id=Mock(return_value="1234-5678-9012") - ) - with patch( - "azure.cli.command_modules.acs.decorator.get_rg_location", - return_value="test_location", - ), patch( - "azure.cli.command_modules.acs.decorator.Profile", - return_value=mock_profile, - ): - dec_mc_1 = dec_1.construct_mc_preview_profile() - - agent_pool_profile_1 = self.models.ManagedClusterAgentPoolProfile( - # Must be 12 chars or less before ACS RP adds to it - name="nodepool1", - # tags=None, - # node_labels=None, - count=3, - vm_size="Standard_DS2_v2", - os_type="Linux", - enable_node_public_ip=False, - enable_encryption_at_host=False, - enable_ultra_ssd=False, - type="VirtualMachineScaleSets", - mode="System", - enable_auto_scaling=False, - enable_fips=False, - enable_custom_ca_trust=False, - ) - ssh_config_1 = self.models.ContainerServiceSshConfiguration( - public_keys=[ - self.models.ContainerServiceSshPublicKey(key_data=public_key) - ] - ) - linux_profile_1 = self.models.ContainerServiceLinuxProfile( - admin_username="azureuser", ssh=ssh_config_1 - ) - network_profile_1 = self.models.ContainerServiceNetworkProfile( - load_balancer_sku="standard", - ) - identity_1 = self.models.ManagedClusterIdentity(type="SystemAssigned") - - storage_profile_1 = self.models.ManagedClusterStorageProfile( - disk_csi_driver = None, - file_csi_driver = None, - snapshot_controller = None, - ) - - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - dns_prefix="testname-testrgname-1234-5", - kubernetes_version="", - addon_profiles={}, - enable_rbac=True, - agent_pool_profiles=[agent_pool_profile_1], - linux_profile=linux_profile_1, - network_profile=network_profile_1, - identity=identity_1, - disable_local_accounts=False, - enable_pod_security_policy=False, - storage_profile=storage_profile_1, - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - raw_param_dict.print_usage_statistics() - - def test_create_mc_preview(self): - mc_1 = self.models.ManagedCluster( - location="test_location", - addon_profiles={ - CONST_MONITORING_ADDON_NAME: self.models.ManagedClusterAddonProfile( - enabled=True, - config={ - CONST_MONITORING_USING_AAD_MSI_AUTH: True, - }, - ) - }, - ) - dec_1 = AKSPreviewCreateDecorator( - self.cmd, - self.client, - { - "resource_group_name": "test_rg_name", - "name": "test_name", - "enable_managed_identity": True, - # "enable_msi_auth_for_monitoring": True, - "no_wait": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - dec_1.context.attach_mc(mc_1) - dec_1.context.set_intermediate( - "monitoring", True, overwrite_exists=True - ) - dec_1.context.set_intermediate( - "subscription_id", "test_subscription_id", overwrite_exists=True - ) - - # raise exception - err_1 = HttpResponseError( - message="not found in Active Directory tenant" - ) - # fail on mock HttpResponseError, max retry exceeded - with self.assertRaises(AzCLIError), patch("time.sleep"), patch( - "azure.cli.command_modules.acs.decorator.AKSCreateDecorator.create_mc" - ), patch( - "azext_aks_preview.decorator.ensure_container_insights_for_monitoring", - side_effect=err_1, - ) as ensure_monitoring: - dec_1.create_mc_preview(mc_1) - ensure_monitoring.assert_called_with( - self.cmd, - mc_1.addon_profiles[CONST_MONITORING_ADDON_NAME], - "test_subscription_id", - "test_rg_name", - "test_name", - "test_location", - remove_monitoring=False, - aad_route=True, - create_dcr=False, - create_dcra=True, - ) - - # raise exception - resp = Mock( - reason="error reason", - status_code=500, - text=Mock(return_value="error text"), - ) - err_2 = HttpResponseError(response=resp) - # fail on mock HttpResponseError - with self.assertRaises(HttpResponseError), patch("time.sleep",), patch( - "azure.cli.command_modules.acs.decorator.AKSCreateDecorator.create_mc" - ), patch( - "azext_aks_preview.decorator.ensure_container_insights_for_monitoring", - side_effect=[err_1, err_2], - ): - dec_1.create_mc_preview(mc_1) - - # return mc - with patch( - "azure.cli.command_modules.acs.decorator.AKSCreateDecorator.create_mc", - return_value=mc_1, - ), patch( - "azext_aks_preview.decorator.ensure_container_insights_for_monitoring", - ): - self.assertEqual(dec_1.create_mc_preview(mc_1), mc_1) - - -class AKSPreviewUpdateDecoratorTestCase(unittest.TestCase): - def setUp(self): - # manually register CUSTOM_MGMT_AKS_PREVIEW - register_aks_preview_resource_type() - self.cli_ctx = MockCLI() - self.cmd = MockCmd(self.cli_ctx) - self.models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW) - self.client = MockClient() - - def test_check_raw_parameters(self): - # default value in `aks_create` - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - # fail on no updated parameter provided - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=False, - ),self.assertRaises(RequiredArgumentMissingError): - dec_1.check_raw_parameters() - - # unless user says they want to reconcile - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=True, - ): - dec_1.check_raw_parameters() - - # custom value - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "cluster_autoscaler_profile": {}, - "api_server_authorized_ip_ranges": "", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - dec_2.check_raw_parameters() - - def test_update_load_balancer_profile(self): - # default value in `aks_update` - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_sku": None, - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_managed_outbound_ipv6_count": None, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - "load_balancer_outbound_ports": None, - "load_balancer_idle_timeout": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.update_load_balancer_profile(None) - - mc_1 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile(), - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_load_balancer_profile(mc_1) - - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile(), - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - outbound ip prefixes - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_managed_outbound_ipv6_count": None, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": "id3,id4", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - outbound_ip_prefixes=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPPrefixes" - )( - public_ip_prefixes=[ - self.models.lb_models.get("ResourceReference")( - id="id1" - ), - self.models.lb_models.get("ResourceReference")( - id="id2" - ), - ] - ) - ) - ), - ) - dec_2.context.attach_mc(mc_2) - dec_mc_2 = dec_2.update_load_balancer_profile(mc_2) - - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - outbound_ip_prefixes=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPPrefixes" - )( - public_ip_prefixes=[ - self.models.lb_models.get("ResourceReference")( - id="id3" - ), - self.models.lb_models.get("ResourceReference")( - id="id4" - ), - ] - ) - ) - ), - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - # custom value - outbound ip - dec_3 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_managed_outbound_ipv6_count": None, - "load_balancer_outbound_ips": "id3,id4", - "load_balancer_outbound_ip_prefixes": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_3 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPs" - )( - public_i_ps=[ - self.models.lb_models.get("ResourceReference")( - id="id1" - ), - self.models.lb_models.get("ResourceReference")( - id="id2" - ), - ] - ) - ) - ), - ) - dec_3.context.attach_mc(mc_3) - dec_mc_3 = dec_3.update_load_balancer_profile(mc_3) - - ground_truth_mc_3 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPs" - )( - public_i_ps=[ - self.models.lb_models.get("ResourceReference")( - id="id3" - ), - self.models.lb_models.get("ResourceReference")( - id="id4" - ), - ] - ) - ) - ), - ) - self.assertEqual(dec_mc_3, ground_truth_mc_3) - - # custom value - managed outbound ip, count only - dec_4 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_managed_outbound_ip_count": 5, - "load_balancer_managed_outbound_ipv6_count": None, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_4 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10, count_ipv6=20), - ) - ), - ) - dec_4.context.attach_mc(mc_4) - dec_mc_4 = dec_4.update_load_balancer_profile(mc_4) - - ground_truth_mc_4 = self.models.ManagedCluster( - location="test_location", - network_profile=( - self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=5, count_ipv6=20), - ) - ) - ), - ) - self.assertEqual(dec_mc_4, ground_truth_mc_4) - - # custom value - managed outbound ip, count_ipv6 only - dec_5 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_managed_outbound_ipv6_count": 5, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_5 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10, count_ipv6=20), - ) - ), - ) - dec_5.context.attach_mc(mc_5) - dec_mc_5 = dec_5.update_load_balancer_profile(mc_5) - - ground_truth_mc_5 = self.models.ManagedCluster( - location="test_location", - network_profile=( - self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10, count_ipv6=5), - ) - ) - ), - ) - self.assertEqual(dec_mc_5, ground_truth_mc_5) - - # custom value - managed outbound ip - dec_6 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_managed_outbound_ip_count": 25, - "load_balancer_managed_outbound_ipv6_count": 5, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_6 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10, count_ipv6=20), - ) - ), - ) - dec_6.context.attach_mc(mc_6) - dec_mc_6 = dec_6.update_load_balancer_profile(mc_6) - - ground_truth_mc_6 = self.models.ManagedCluster( - location="test_location", - network_profile=( - self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=25, count_ipv6=5), - ) - ) - ), - ) - self.assertEqual(dec_mc_6, ground_truth_mc_6) - - # custom value - from managed outbound ip to outbound ip - dec_7 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_managed_outbound_ip_count": None, - "load_balancer_managed_outbound_ipv6_count": None, - "load_balancer_outbound_ips": "id1,id2", - "load_balancer_outbound_ip_prefixes": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_7 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=3, count_ipv6=2) - ) - ), - ) - dec_7.context.attach_mc(mc_7) - dec_mc_7 = dec_7.update_load_balancer_profile(mc_7) - - ground_truth_mc_7 = self.models.ManagedCluster( - location="test_location", - network_profile=( - self.models.ContainerServiceNetworkProfile( - load_balancer_profile=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPs" - )( - public_i_ps=[ - self.models.lb_models.get("ResourceReference")( - id="id1" - ), - self.models.lb_models.get("ResourceReference")( - id="id2" - ), - ] - ) - ) - ) - ), - ) - self.assertEqual(dec_mc_7, ground_truth_mc_7) - - # custom value - from outbound ip prefix to managed outbound ip - dec_8 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "load_balancer_managed_outbound_ip_count": 10, - "load_balancer_managed_outbound_ipv6_count": 5, - "load_balancer_outbound_ips": None, - "load_balancer_outbound_ip_prefixes": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - load_balancer_profile_8 = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - outbound_ip_prefixes=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPPrefixes" - )( - public_ip_prefixes=[ - self.models.lb_models.get("ResourceReference")( - id="test_public_ip_prefix" - ) - ] - ), - ) - network_profile_8 = self.models.ContainerServiceNetworkProfile( - load_balancer_profile=load_balancer_profile_8 - ) - mc_8 = self.models.ManagedCluster( - location="test_location", network_profile=network_profile_8 - ) - dec_8.context.attach_mc(mc_8) - dec_mc_8 = dec_8.update_load_balancer_profile(mc_8) - - ground_truth_load_balancer_profile_8 = self.models.lb_models.get( - "ManagedClusterLoadBalancerProfile" - )( - managed_outbound_i_ps=self.models.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" - )(count=10, count_ipv6=5), - ) - ground_truth_network_profile_8 = ( - self.models.ContainerServiceNetworkProfile( - load_balancer_profile=ground_truth_load_balancer_profile_8 - ) - ) - ground_truth_mc_8 = self.models.ManagedCluster( - location="test_location", - network_profile=ground_truth_network_profile_8, - ) - self.assertEqual(dec_mc_8, ground_truth_mc_8) - - # custom value - dec_9 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_9 = self.models.ManagedCluster(location="test_location") - dec_9.context.attach_mc(mc_9) - # fail on incomplete mc object (no network profile) - with self.assertRaises(UnknownError): - dec_9.update_load_balancer_profile(mc_9) - - def test_update_pod_security_policy(self): - # default value in `aks_update` - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_pod_security_policy": False, - "disable_pod_security_policy": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.update_pod_security_policy(None) - - mc_1 = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=True, - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_pod_security_policy(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=True, - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_pod_security_policy": True, - "disable_pod_security_policy": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=False, - ) - dec_2.context.attach_mc(mc_2) - dec_mc_2 = dec_2.update_pod_security_policy(mc_2) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=True, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - # custom value - dec_3 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_pod_security_policy": False, - "disable_pod_security_policy": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_3 = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=True, - ) - dec_3.context.attach_mc(mc_3) - dec_mc_3 = dec_3.update_pod_security_policy(mc_3) - ground_truth_mc_3 = self.models.ManagedCluster( - location="test_location", - enable_pod_security_policy=False, - ) - self.assertEqual(dec_mc_3, ground_truth_mc_3) - - def test_update_nat_gateway_profile(self): - # default value in `aks_update` - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "nat_gateway_managed_outbound_ip_count": None, - "nat_gateway_idle_timeout": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.update_nat_gateway_profile(None) - - mc_1 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - nat_gateway_profile=self.models.nat_gateway_models.ManagedClusterNATGatewayProfile(), - ), - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_nat_gateway_profile(mc_1) - - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - nat_gateway_profile=self.models.nat_gateway_models.ManagedClusterNATGatewayProfile(), - ), - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "nat_gateway_managed_outbound_ip_count": 5, - "nat_gateway_idle_timeout": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_2.context.attach_mc(mc_2) - # fail on incomplete mc object (no network profile) - with self.assertRaises(UnknownError): - dec_2.update_nat_gateway_profile(mc_2) - - # custom value - dec_3 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "nat_gateway_managed_outbound_ip_count": 5, - "nat_gateway_idle_timeout": 30, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_3 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - nat_gateway_profile=self.models.nat_gateway_models.ManagedClusterNATGatewayProfile( - managed_outbound_ip_profile=self.models.nat_gateway_models.ManagedClusterManagedOutboundIPProfile( - count=10 - ), - idle_timeout_in_minutes=20, - ) - ), - ) - dec_3.context.attach_mc(mc_3) - dec_mc_3 = dec_3.update_nat_gateway_profile(mc_3) - - ground_truth_mc_3 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - nat_gateway_profile=self.models.nat_gateway_models.ManagedClusterNATGatewayProfile( - managed_outbound_ip_profile=self.models.nat_gateway_models.ManagedClusterManagedOutboundIPProfile( - count=5 - ), - idle_timeout_in_minutes=30, - ) - ), - ) - self.assertEqual(dec_mc_3, ground_truth_mc_3) - - def test_update_windows_profile(self): - # default value in `aks_update` - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_ahub": False, - "disable_ahub": False, - "windows_admin_password": None, - "enable_windows_gmsa": False, - "gmsa_dns_server": None, - "gmsa_root_domain_name": None, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.update_windows_profile(None) - - mc_1 = self.models.ManagedCluster( - location="test_location", - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_windows_profile(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_windows_gmsa": True, - "gmsa_dns_server": "test_gmsa_dns_server", - "gmsa_root_domain_name": "test_gmsa_root_domain_name", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - windows_profile_2 = self.models.ManagedClusterWindowsProfile( - # [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="fake secrets in unit test")] - admin_username="test_win_admin_name", - admin_password="test_win_admin_password", - license_type="Windows_Server", - ) - mc_2 = self.models.ManagedCluster( - location="test_location", - windows_profile=windows_profile_2, - ) - dec_2.context.attach_mc(mc_2) - dec_mc_2 = dec_2.update_windows_profile(mc_2) - - ground_truth_gmsa_profile_2 = self.models.WindowsGmsaProfile( - enabled=True, - dns_server="test_gmsa_dns_server", - root_domain_name="test_gmsa_root_domain_name", - ) - ground_truth_windows_profile_2 = self.models.ManagedClusterWindowsProfile( - # [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="fake secrets in unit test")] - admin_username="test_win_admin_name", - admin_password="test_win_admin_password", - license_type="Windows_Server", - gmsa_profile=ground_truth_gmsa_profile_2, - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - windows_profile=ground_truth_windows_profile_2, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - # custom value - dec_3 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_windows_gmsa": True, - "gmsa_dns_server": "test_gmsa_dns_server", - "gmsa_root_domain_name": "test_gmsa_root_domain_name", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_3 = self.models.ManagedCluster( - location="test_location", - ) - dec_3.context.attach_mc(mc_3) - # fail on incomplete mc object (no windows profile) - with patch( - "azure.cli.command_modules.acs.decorator.AKSUpdateDecorator.update_windows_profile", return_value=mc_3 - ), self.assertRaises(UnknownError): - dec_3.update_windows_profile(mc_3) - - def test_update_pod_identity_profile(self): - # default value in `aks_update` - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_pod_identity": False, - "disable_pod_identity": False, - "enable_pod_identity_with_kubenet": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.update_pod_identity_profile(None) - - mc_1 = self.models.ManagedCluster( - location="test_location", - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_pod_identity_profile(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - # custom value - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_pod_identity": True, - "disable_pod_identity": False, - "enable_pod_identity_with_kubenet": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_2 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet", - ), - ) - dec_2.context.attach_mc(mc_2) - with self.assertRaises(CLIError): - dec_2.update_pod_identity_profile(mc_2) - - # custom value - dec_3 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_pod_identity": True, - "disable_pod_identity": False, - "enable_pod_identity_with_kubenet": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_3 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet", - ), - identity=self.models.ManagedClusterIdentity( - type="SystemAssigned", - ), - ) - dec_3.context.attach_mc(mc_3) - dec_mc_3 = dec_3.update_pod_identity_profile(mc_3) - ground_truth_mc_3 = self.models.ManagedCluster( - location="test_location", - network_profile=self.models.ContainerServiceNetworkProfile( - network_plugin="kubenet", - ), - pod_identity_profile=self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - enabled=True, - allow_network_plugin_kubenet=True, - user_assigned_identities=[], - user_assigned_identity_exceptions=[], - ), - identity=self.models.ManagedClusterIdentity( - type="SystemAssigned", - ), - ) - self.assertEqual(dec_mc_3, ground_truth_mc_3) - - # custom value - dec_4 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_pod_identity": False, - "disable_pod_identity": True, - "enable_pod_identity_with_kubenet": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mc_4 = self.models.ManagedCluster( - location="test_location", - pod_identity_profile=self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - enabled=True, - user_assigned_identities=[], - user_assigned_identity_exceptions=[], - ), - ) - dec_4.context.attach_mc(mc_4) - dec_mc_4 = dec_4.update_pod_identity_profile(mc_4) - ground_truth_mc_4 = self.models.ManagedCluster( - location="test_location", - pod_identity_profile=self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - enabled=False, - ), - ) - self.assertEqual(dec_mc_4, ground_truth_mc_4) - - def test_update_oidc_issuer_profile__default_value(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - dec.context.attach_mc(mc) - updated_mc = dec.update_oidc_issuer_profile(mc) - self.assertIsNone(updated_mc.oidc_issuer_profile) - - def test_update_oidc_issuer_profile__default_value_mc_enabled(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile( - enabled=True - ) - dec.context.attach_mc(mc) - updated_mc = dec.update_oidc_issuer_profile(mc) - self.assertIsNone(updated_mc.oidc_issuer_profile) - - def test_update_oidc_issuer_profile__enabled(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_oidc_issuer": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc = self.models.ManagedCluster(location="test_location") - dec.context.attach_mc(mc) - updated_mc = dec.update_oidc_issuer_profile(mc) - self.assertIsNotNone(updated_mc.oidc_issuer_profile) - self.assertTrue(updated_mc.oidc_issuer_profile.enabled) - - def test_update_oidc_issuer_profile__enabled_mc_enabled(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_oidc_issuer": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile( - enabled=True - ) - dec.context.attach_mc(mc) - updated_mc = dec.update_oidc_issuer_profile(mc) - self.assertIsNotNone(updated_mc.oidc_issuer_profile) - self.assertTrue(updated_mc.oidc_issuer_profile.enabled) - - def test_update_workload_identity_profile__default_value(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - dec.context.attach_mc(mc) - updated_mc = dec.update_workload_identity_profile(mc) - self.assertIsNone(updated_mc.security_profile) - - def test_update_workload_identity_profile__default_value_mc_enabled(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - mc.security_profile = self.models.ManagedClusterSecurityProfile( - workload_identity=self.models.ManagedClusterSecurityProfileWorkloadIdentity( - enabled=True, - ) - ) - dec.context.attach_mc(mc) - updated_mc = dec.update_workload_identity_profile(mc) - self.assertIsNone(updated_mc.security_profile.workload_identity) - - def test_update_workload_identity_profile__enabled(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, self.client, - { - "enable_workload_identity": True, - }, - CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile(enabled=True) - dec.context.attach_mc(mc) - updated_mc = dec.update_workload_identity_profile(mc) - self.assertTrue(updated_mc.security_profile.workload_identity.enabled) - - def test_update_workload_identity_profile__disabled(self): - dec = AKSPreviewUpdateDecorator( - self.cmd, self.client, - { - "enable_workload_identity": False, - }, - CUSTOM_MGMT_AKS_PREVIEW - ) - mc = self.models.ManagedCluster(location="test_location") - mc.oidc_issuer_profile = self.models.ManagedClusterOIDCIssuerProfile(enabled=True) - dec.context.attach_mc(mc) - updated_mc = dec.update_workload_identity_profile(mc) - self.assertFalse(updated_mc.security_profile.workload_identity.enabled) - - def test_update_azure_keyvault_kms(self): - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster( - location="test_location", - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_azure_keyvault_kms(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - key_id_1 = "https://fakekeyvault.vault.azure.net/secrets/fakekeyname/fakekeyversion" - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_azure_keyvault_kms": True, - "azure_keyvault_kms_key_id": key_id_1, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster( - location="test_location", - ) - dec_2.context.attach_mc(mc_2) - dec_mc_2 = dec_2.update_azure_keyvault_kms(mc_2) - - ground_truth_azure_keyvault_kms_profile_2 = self.models.AzureKeyVaultKms( - enabled=True, - key_id=key_id_1, - ) - ground_truth_security_profile_2 = self.models.ManagedClusterSecurityProfile( - azure_key_vault_kms=ground_truth_azure_keyvault_kms_profile_2, - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - security_profile=ground_truth_security_profile_2, - ) - - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_update_api_server_access_profile(self): - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster( - location="test_location", - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_api_server_access_profile(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - apiserver_subnet_id = "/subscriptions/fakesub/resourceGroups/fakerg/providers/Microsoft.Network/virtualNetworks/fakevnet/subnets/apiserver" - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_apiserver_vnet_integration": True, - "apiserver_subnet_id": apiserver_subnet_id, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_2 = self.models.ManagedCluster(location="test_location") - dec_2.context.attach_mc(mc_2) - dec_mc_2 = dec_2.update_api_server_access_profile(mc_2) - ground_truth_api_server_access_profile_2 = self.models.ManagedClusterAPIServerAccessProfile( - enable_vnet_integration=True, - subnet_id=apiserver_subnet_id, - ) - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - api_server_access_profile=ground_truth_api_server_access_profile_2, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - def test_update_identity_profile(self): - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster( - location="test_location", - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.update_identity_profile(mc_1) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - cluster_identity_obj = Mock( - client_id="test_cluster_identity_client_id", - principal_id="test_cluster_identity_object_id", - ) - with patch( - "azure.cli.command_modules.acs.decorator.AKSContext.get_identity_by_msi_client", - side_effect=[cluster_identity_obj], - ), patch( - "azext_aks_preview.decorator._ensure_cluster_identity_permission_on_kubelet_identity", - return_value=None, - ): - dec_2 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "assign_kubelet_identity": "test_assign_kubelet_identity", - "yes": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - cluster_identity = self.models.ManagedClusterIdentity( - type="UserAssigned", - user_assigned_identities={ - "test_assign_identity": {} - }, - ) - mc_2 = self.models.ManagedCluster(location="test_location", identity=cluster_identity) - dec_2.context.attach_mc(mc_2) - dec_mc_2 = dec_2.update_identity_profile(mc_2) - - identity_profile_2 = { - "kubeletidentity": self.models.UserAssignedIdentity( - resource_id="test_assign_kubelet_identity", - ) - } - ground_truth_mc_2 = self.models.ManagedCluster( - location="test_location", - identity=cluster_identity, - identity_profile=identity_profile_2, - ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) - - with patch( - "azext_aks_preview.decorator.prompt_y_n", - return_value=False, - ), self.assertRaises(DecoratorEarlyExitException): - dec_3 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "assign_kubelet_identity": "test_assign_kubelet_identity", - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - cluster_identity = self.models.ManagedClusterIdentity( - type="UserAssigned", - user_assigned_identities={ - "test_assign_identity": {} - }, - ) - mc_3 = self.models.ManagedCluster(location="test_location", identity=cluster_identity) - dec_3.context.attach_mc(mc_3) - dec_mc_3 = dec_3.update_identity_profile(mc_3) - - with self.assertRaises(RequiredArgumentMissingError): - dec_4 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "assign_kubelet_identity": "test_assign_kubelet_identity", - "yes": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_4 = self.models.ManagedCluster(location="test_location") - dec_4.context.attach_mc(mc_4) - dec_mc_4 = dec_4.update_identity_profile(mc_4) - - with patch( - "azure.cli.command_modules.acs.decorator.AKSContext.get_identity_by_msi_client", - side_effect=[cluster_identity_obj], - ), patch( - "azext_aks_preview.decorator._ensure_cluster_identity_permission_on_kubelet_identity", - return_value=None, - ): - dec_5 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "enable_managed_identity": True, - "assign_identity": "test_assign_identity", - "assign_kubelet_identity": "test_assign_kubelet_identity", - "yes": True, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - cluster_identity = self.models.ManagedClusterIdentity( - type="UserAssigned", - user_assigned_identities={ - "test_assign_identity": {} - }, - ) - mc_5 = self.models.ManagedCluster(location="test_location", identity=cluster_identity) - dec_5.context.attach_mc(mc_5) - dec_mc_5 = dec_5.update_identity_profile(mc_5) - - identity_profile_5 = { - "kubeletidentity": self.models.UserAssignedIdentity( - resource_id="test_assign_kubelet_identity", - ) - } - ground_truth_mc_5 = self.models.ManagedCluster( - location="test_location", - identity=cluster_identity, - identity_profile=identity_profile_5, - ) - self.assertEqual(dec_mc_5, ground_truth_mc_5) - - def test_update_workload_auto_scaler_profile(self): - # Throws exception when incorrect mc object is passed. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) - with self.assertRaisesRegex(CLIInternalError, "^Unexpected mc object with type ''\.$"): - dec.update_workload_auto_scaler_profile(None) - - # Throws exception when the mc object passed does not match the one in context. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) - with self.assertRaisesRegex(CLIInternalError, "^Inconsistent state detected\. The incoming `mc` is not the same as the `mc` in the context\.$"): - mc_in = self.models.ManagedCluster(location="test_location") - dec.update_workload_auto_scaler_profile(mc_in) - - # Leaves profile as None without raw parameters. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) - mc_in = self.models.ManagedCluster(location="test_location") - dec.context.attach_mc(mc_in) - mc_out = dec.update_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertIsNone(mc_out.workload_auto_scaler_profile) - - # Leaves existing profile untouched without raw parameters. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) - profile = self.models.ManagedClusterWorkloadAutoScalerProfile( - keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True)) - mc_in = self.models.ManagedCluster(location="test_location", workload_auto_scaler_profile = profile) - dec.context.attach_mc(mc_in) - mc_out = dec.update_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertEqual(mc_out.workload_auto_scaler_profile, profile) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) - self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) - - # Enables keda when enable_keda is True. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {"enable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) - mc_in = self.models.ManagedCluster(location="test_location") - dec.context.attach_mc(mc_in) - mc_out = dec.update_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) - self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) - - # Enables keda in existing profile when enable_keda is True. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {"enable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) - profile = self.models.ManagedClusterWorkloadAutoScalerProfile( - keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=False)) - mc_in = self.models.ManagedCluster(location="test_location", workload_auto_scaler_profile = profile) - dec.context.attach_mc(mc_in) - mc_out = dec.update_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertEqual(mc_out.workload_auto_scaler_profile, profile) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) - self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) - - # Disables keda when disable_keda is True. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {"disable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) - mc_in = self.models.ManagedCluster(location="test_location") - dec.context.attach_mc(mc_in) - mc_out = dec.update_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) - self.assertFalse(mc_out.workload_auto_scaler_profile.keda.enabled) - - # Disables keda in existing profile when disable_keda is True. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {"disable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) - profile = self.models.ManagedClusterWorkloadAutoScalerProfile( - keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True)) - mc_in = self.models.ManagedCluster(location="test_location", workload_auto_scaler_profile = profile) - dec.context.attach_mc(mc_in) - mc_out = dec.update_workload_auto_scaler_profile(mc_in) - self.assertEqual(mc_out, mc_in) - self.assertEqual(mc_out.workload_auto_scaler_profile, profile) - self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) - self.assertFalse(mc_out.workload_auto_scaler_profile.keda.enabled) - - # Throws exception when both enable_keda and disable_keda are True. - dec = AKSPreviewUpdateDecorator(self.cmd, self.client, {"enable_keda": True, "disable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) - mc_in = self.models.ManagedCluster(location="test_location") - dec.context.attach_mc(mc_in) - with self.assertRaises(MutuallyExclusiveArgumentError): - mc_out = dec.update_workload_auto_scaler_profile(mc_in) - - def test_patch_mc(self): - # custom value - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - {}, - CUSTOM_MGMT_AKS_PREVIEW, - ) - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.patch_mc(None) - - mc_1 = self.models.ManagedCluster( - location="test_location", - pod_identity_profile=self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - user_assigned_identity_exceptions=[ - self.models.pod_identity_models.ManagedClusterPodIdentityException( - name="test_name", - namespace="test_namespace", - pod_labels=None, - ) - ] - ), - ) - dec_1.context.attach_mc(mc_1) - dec_mc_1 = dec_1.patch_mc(mc_1) - - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - pod_identity_profile=self.models.pod_identity_models.ManagedClusterPodIdentityProfile( - user_assigned_identity_exceptions=[ - self.models.pod_identity_models.ManagedClusterPodIdentityException( - name="test_name", - namespace="test_namespace", - pod_labels={}, - ) - ] - ), - ) - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - def test_update_mc_preview_profile(self): - import inspect - - from azext_aks_preview.custom import aks_update - from azure.cli.command_modules.acs.decorator import AKSParamDict - - optional_params = {} - positional_params = [] - for _, v in inspect.signature(aks_update).parameters.items(): - if v.default != v.empty: - optional_params[v.name] = v.default - else: - positional_params.append(v.name) - ground_truth_positional_params = [ - "cmd", - "client", - "resource_group_name", - "name", - ] - self.assertEqual(positional_params, ground_truth_positional_params) - - # prepare a dictionary of default parameters - raw_param_dict = { - "resource_group_name": "test_rg_name", - "name": "test_name", - } - raw_param_dict.update(optional_params) - raw_param_dict = AKSParamDict(raw_param_dict) - - # default value in `update` - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - raw_param_dict, - CUSTOM_MGMT_AKS_PREVIEW, - ) - - mock_profile = Mock( - get_subscription_id=Mock(return_value="1234-5678-9012") - ) - mock_existing_mc = self.models.ManagedCluster( - location="test_location", - agent_pool_profiles=[ - self.models.ManagedClusterAgentPoolProfile( - name="nodepool1", - ) - ], - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_sku="standard", - ), - identity=self.models.ManagedClusterIdentity(type="SystemAssigned"), - identity_profile={ - "kubeletidentity": self.models.UserAssignedIdentity( - resource_id="test_resource_id", - client_id="test_client_id", - object_id="test_object_id", - ) - }, - ) - with patch( - "azure.cli.command_modules.acs.decorator.get_rg_location", - return_value="test_location", - ), patch( - "azure.cli.command_modules.acs.decorator.Profile", - return_value=mock_profile, - ), patch( - "azext_aks_preview.decorator.AKSPreviewUpdateDecorator.check_raw_parameters", - return_value=True, - ), patch.object( - self.client, "get", return_value=mock_existing_mc - ): - dec_mc_1 = dec_1.update_mc_preview_profile() - - ground_truth_agent_pool_profile_1 = ( - self.models.ManagedClusterAgentPoolProfile( - name="nodepool1", - ) - ) - ground_truth_network_profile_1 = ( - self.models.ContainerServiceNetworkProfile( - load_balancer_sku="standard", - ) - ) - ground_truth_identity_1 = self.models.ManagedClusterIdentity( - type="SystemAssigned" - ) - ground_truth_identity_profile_1 = { - "kubeletidentity": self.models.UserAssignedIdentity( - resource_id="test_resource_id", - client_id="test_client_id", - object_id="test_object_id", - ) - } - ground_truth_storage_profile_1=self.models.ManagedClusterStorageProfile( - disk_csi_driver = None, - file_csi_driver = None, - snapshot_controller = None - ) - ground_truth_mc_1 = self.models.ManagedCluster( - location="test_location", - agent_pool_profiles=[ground_truth_agent_pool_profile_1], - network_profile=ground_truth_network_profile_1, - identity=ground_truth_identity_1, - identity_profile=ground_truth_identity_profile_1, - storage_profile=ground_truth_storage_profile_1, - ) - raw_param_dict.print_usage_statistics() - self.assertEqual(dec_mc_1, ground_truth_mc_1) - - def test_update_mc_preview(self): - dec_1 = AKSPreviewUpdateDecorator( - self.cmd, - self.client, - { - "resource_group_name": "test_rg_name", - "name": "test_name", - "no_wait": False, - }, - CUSTOM_MGMT_AKS_PREVIEW, - ) - mc_1 = self.models.ManagedCluster( - location="test_location", - agent_pool_profiles=[ - self.models.ManagedClusterAgentPoolProfile( - name="nodepool1", - ) - ], - network_profile=self.models.ContainerServiceNetworkProfile( - load_balancer_sku="standard", - ), - identity=self.models.ManagedClusterIdentity(type="SystemAssigned"), - identity_profile={ - "kubeletidentity": self.models.UserAssignedIdentity( - resource_id="test_resource_id", - client_id="test_client_id", - object_id="test_object_id", - ) - }, - ) - dec_1.context.attach_mc(mc_1) - # fail on passing the wrong mc object - with self.assertRaises(CLIInternalError): - dec_1.update_mc_preview(None) - mock_profile = Mock( - get_subscription_id=Mock(return_value="test_subscription_id") - ) - with patch( - "azure.cli.command_modules.acs.decorator.Profile", - return_value=mock_profile, - ), patch( - "azure.cli.command_modules.acs.decorator._put_managed_cluster_ensuring_permission" - ) as put_mc: - dec_1.update_mc_preview(mc_1) - put_mc.assert_called_with( - self.cmd, - self.client, - "test_subscription_id", - "test_rg_name", - "test_name", - mc_1, - False, - False, - False, - False, - None, - True, - None, - {}, - False, - ) - - -if __name__ == "__main__": - unittest.main() diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_helpers.py b/src/aks-preview/azext_aks_preview/tests/latest/test_helpers.py index 58399d734d7..1a6592c88a7 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_helpers.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_helpers.py @@ -4,28 +4,21 @@ # -------------------------------------------------------------------------------------------- import unittest -import azext_aks_preview._helpers as helpers +from unittest.mock import Mock, patch - -class TestTrimContainerName(unittest.TestCase): - def test_trim_fqdn_name_containing_hcp(self): - container_name = 'abcdef-dns-ed55ba6d-hcp-centralus-azmk8s-io' - expected_container_name = 'abcdef-dns-ed55ba6d' - trim_container_name = helpers._trim_fqdn_name_containing_hcp(container_name) - self.assertEqual(expected_container_name, trim_container_name) - - def test_trim_fqdn_name_trailing_dash(self): - container_name = 'dns-ed55ba6ad-e48fe2bd-b4bc-4aac-bc23-29bc44154fe1-privatelink-centralus-azmk8s-io' - expected_container_name = 'dns-ed55ba6ad-e48fe2bd-b4bc-4aac-bc23-29bc44154fe1-privatelink' - trim_container_name = helpers._trim_fqdn_name_containing_hcp( - container_name) - self.assertEqual(expected_container_name, trim_container_name) - - def test_trim_fqdn_name_not_containing_hcp(self): - container_name = 'abcdef-dns-ed55ba6d-e48fe2bd-b4bc-4aac-bc23-29bc44154fe1-privatelink-centralus-azmk8s-io' - expected_container_name = 'abcdef-dns-ed55ba6d-e48fe2bd-b4bc-4aac-bc23-29bc44154fe1-privat' - trim_container_name = helpers._trim_fqdn_name_containing_hcp(container_name) - self.assertEqual(expected_container_name, trim_container_name) +from azext_aks_preview._helpers import ( + _fuzzy_match, + get_cluster_snapshot, + get_cluster_snapshot_by_snapshot_id, + get_nodepool_snapshot, + get_nodepool_snapshot_by_snapshot_id, +) +from azure.cli.core.azclierror import ( + BadRequestError, + InvalidArgumentValueError, + ResourceNotFoundError, +) +from azure.core.exceptions import AzureError, HttpResponseError class TestFuzzyMatch(unittest.TestCase): @@ -33,12 +26,90 @@ def setUp(self): self.expected = ['bord', 'birdy', 'fbird', 'bir', 'ird', 'birdwaj'] def test_fuzzy_match(self): - result = helpers._fuzzy_match( + result = _fuzzy_match( "bird", ["plane", "bord", "birdy", "fbird", "bir", "ird", "birdwaj", "bored", "biron", "bead"]) self.assertCountEqual(result, self.expected) self.assertListEqual(result, self.expected) +class GetNodepoolSnapShotTestCase(unittest.TestCase): + def test_get_nodepool_snapshot_by_snapshot_id(self): + with self.assertRaises(InvalidArgumentValueError): + get_nodepool_snapshot_by_snapshot_id("mock_cli_ctx", "") + + mock_snapshot = Mock() + with patch( + "azext_aks_preview._helpers.get_nodepool_snapshot", return_value=mock_snapshot + ) as mock_get_snapshot: + snapshot = get_nodepool_snapshot_by_snapshot_id( + "mock_cli_ctx", + "/subscriptions/test_sub/resourcegroups/test_rg/providers/microsoft.containerservice/snapshots/test_np_snapshot", + ) + self.assertEqual(snapshot, mock_snapshot) + mock_get_snapshot.assert_called_once_with("mock_cli_ctx", "test_sub", "test_rg", "test_np_snapshot") + + def test_get_nodepool_snapshot(self): + mock_snapshot = Mock() + mock_snapshot_operations = Mock(get=Mock(return_value=mock_snapshot)) + with patch("azext_aks_preview._helpers.get_nodepool_snapshots_client", return_value=mock_snapshot_operations): + snapshot = get_nodepool_snapshot("mock_cli_ctx", "test_sub", "mock_rg", "mock_snapshot_name") + self.assertEqual(snapshot, mock_snapshot) + + mock_snapshot_operations_2 = Mock(get=Mock(side_effect=AzureError("mock snapshot was not found"))) + with patch( + "azext_aks_preview._helpers.get_nodepool_snapshots_client", return_value=mock_snapshot_operations_2 + ), self.assertRaises(ResourceNotFoundError): + get_nodepool_snapshot("mock_cli_ctx", "test_sub", "mock_rg", "mock_snapshot_name") + + http_response_error = HttpResponseError() + http_response_error.status_code = 400 + http_response_error.message = "test_error_msg" + mock_snapshot_operations_3 = Mock(get=Mock(side_effect=http_response_error)) + with patch( + "azext_aks_preview._helpers.get_nodepool_snapshots_client", return_value=mock_snapshot_operations_3 + ), self.assertRaises(BadRequestError): + get_nodepool_snapshot("mock_cli_ctx", "test_sub", "mock_rg", "mock_snapshot_name") + + +class GetManagedClusterSnapShotTestCase(unittest.TestCase): + def test_get_cluster_snapshot_by_snapshot_id(self): + with self.assertRaises(InvalidArgumentValueError): + get_cluster_snapshot_by_snapshot_id("mock_cli_ctx", "") + + mock_snapshot = Mock() + with patch( + "azext_aks_preview._helpers.get_cluster_snapshot", return_value=mock_snapshot + ) as mock_get_snapshot: + snapshot = get_cluster_snapshot_by_snapshot_id( + "mock_cli_ctx", + "/subscriptions/test_sub/resourcegroups/test_rg/providers/microsoft.containerservice/managedclustersnapshots/test_mc_snapshot", + ) + self.assertEqual(snapshot, mock_snapshot) + mock_get_snapshot.assert_called_once_with("mock_cli_ctx", "test_sub", "test_rg", "test_mc_snapshot") + + def test_get_cluster_snapshot(self): + mock_snapshot = Mock() + mock_snapshot_operations = Mock(get=Mock(return_value=mock_snapshot)) + with patch("azext_aks_preview._helpers.get_mc_snapshots_client", return_value=mock_snapshot_operations): + snapshot = get_cluster_snapshot("mock_cli_ctx", "test_sub", "mock_rg", "mock_snapshot_name") + self.assertEqual(snapshot, mock_snapshot) + + mock_snapshot_operations_2 = Mock(get=Mock(side_effect=AzureError("mock snapshot was not found"))) + with patch( + "azext_aks_preview._helpers.get_mc_snapshots_client", return_value=mock_snapshot_operations_2 + ), self.assertRaises(ResourceNotFoundError): + get_cluster_snapshot("mock_cli_ctx", "test_sub", "mock_rg", "mock_snapshot_name") + + http_response_error = HttpResponseError() + http_response_error.status_code = 400 + http_response_error.message = "test_error_msg" + mock_snapshot_operations_3 = Mock(get=Mock(side_effect=http_response_error)) + with patch( + "azext_aks_preview._helpers.get_mc_snapshots_client", return_value=mock_snapshot_operations_3 + ), self.assertRaises(BadRequestError): + get_cluster_snapshot("mock_cli_ctx", "test_sub", "mock_rg", "mock_snapshot_name") + + if __name__ == "__main__": unittest.main() diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_loadbalancer.py b/src/aks-preview/azext_aks_preview/tests/latest/test_loadbalancer.py index b95b656626e..17479b3b343 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_loadbalancer.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_loadbalancer.py @@ -7,7 +7,9 @@ from azext_aks_preview import _loadbalancer as loadbalancer from azext_aks_preview.__init__ import register_aks_preview_resource_type from azext_aks_preview._client_factory import CUSTOM_MGMT_AKS_PREVIEW -from azext_aks_preview.decorator import AKSPreviewModels +from azext_aks_preview.managed_cluster_decorator import ( + AKSPreviewManagedClusterModels, +) from azext_aks_preview.tests.latest.mocks import MockCLI, MockCmd @@ -18,7 +20,9 @@ def setUp(self): self.cli_ctx = MockCLI() self.cmd = MockCmd(self.cli_ctx) # store all the models used by nat gateway - self.lb_models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW).lb_models + self.load_balancer_models = AKSPreviewManagedClusterModels( + self.cmd, CUSTOM_MGMT_AKS_PREVIEW + ).load_balancer_models def test_configure_load_balancer_profile(self): managed_outbound_ip_count = 5 @@ -28,18 +32,18 @@ def test_configure_load_balancer_profile(self): outbound_ports = 80 idle_timeout = 3600 - # store all the models used by load balancer - ManagedClusterLoadBalancerProfile = self.lb_models.get( - "ManagedClusterLoadBalancerProfile" + # store all the models used by load balancer + ManagedClusterLoadBalancerProfile = ( + self.load_balancer_models.ManagedClusterLoadBalancerProfile ) - ManagedClusterLoadBalancerProfileManagedOutboundIPs = self.lb_models.get( - "ManagedClusterLoadBalancerProfileManagedOutboundIPs" + ManagedClusterLoadBalancerProfileManagedOutboundIPs = ( + self.load_balancer_models.ManagedClusterLoadBalancerProfileManagedOutboundIPs ) - ManagedClusterLoadBalancerProfileOutboundIPs = self.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPs" + ManagedClusterLoadBalancerProfileOutboundIPs = ( + self.load_balancer_models.ManagedClusterLoadBalancerProfileOutboundIPs ) - ManagedClusterLoadBalancerProfileOutboundIPPrefixes = self.lb_models.get( - "ManagedClusterLoadBalancerProfileOutboundIPPrefixes" + ManagedClusterLoadBalancerProfileOutboundIPPrefixes = ( + self.load_balancer_models.ManagedClusterLoadBalancerProfileOutboundIPPrefixes ) profile = ManagedClusterLoadBalancerProfile() @@ -63,7 +67,7 @@ def test_configure_load_balancer_profile(self): outbound_ports, idle_timeout, profile, - self.lb_models, + self.load_balancer_models, ) self.assertEqual(p.managed_outbound_i_ps.count, 5) diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py b/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py index 79e3292eed2..4db8c1ab14c 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py @@ -17,6 +17,7 @@ CONST_CONFCOM_ADDON_NAME, CONST_DEFAULT_NODE_OS_TYPE, CONST_DEFAULT_NODE_VM_SIZE, + CONST_DISK_DRIVER_V2, CONST_GITOPS_ADDON_NAME, CONST_HTTP_APPLICATION_ROUTING_ADDON_NAME, CONST_INGRESS_APPGW_ADDON_NAME, @@ -47,12 +48,21 @@ AKSPreviewManagedClusterUpdateDecorator, ) from azext_aks_preview.tests.latest.utils import get_test_data_file_path -from azure.cli.command_modules.acs._consts import AgentPoolDecoratorMode, DecoratorEarlyExitException, DecoratorMode -from azure.cli.command_modules.acs.managed_cluster_decorator import AKSManagedClusterParamDict -from azure.cli.command_modules.acs.tests.latest.mocks import MockCLI, MockClient, MockCmd +from azure.cli.command_modules.acs._consts import ( + AgentPoolDecoratorMode, + DecoratorEarlyExitException, + DecoratorMode, +) +from azure.cli.command_modules.acs.managed_cluster_decorator import ( + AKSManagedClusterParamDict, +) +from azure.cli.command_modules.acs.tests.latest.mocks import ( + MockCLI, + MockClient, + MockCmd, +) from azure.cli.core.azclierror import ( - AzCLIError, - AzureInternalError, + ArgumentUsageError, CLIInternalError, InvalidArgumentValueError, MutuallyExclusiveArgumentError, @@ -492,6 +502,44 @@ def test_get_disable_pod_security_policy(self): with self.assertRaises(MutuallyExclusiveArgumentError): ctx_2.get_disable_pod_security_policy() + def test_mc_get_network_plugin_mode(self): + # default + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + { + "network_plugin_mode": "overlay", + } + ), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_1.get_network_plugin_mode(), "overlay") + + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + { + "network_plugin_mode": None, + } + ), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_2.get_network_plugin_mode(), None) + + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + { + "network_plugin_mode": "", + } + ), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_3.get_network_plugin_mode(), "") + def test_get_enable_managed_identity(self): # custom value ctx_1 = AKSPreviewManagedClusterContext( @@ -783,22 +831,6 @@ def test_get_workload_identity_profile__update_not_set(self): ctx.attach_mc(self.models.ManagedCluster(location="test_location")) self.assertIsNone(ctx.get_workload_identity_profile()) - def test_get_workload_identity_profile__update_with_enable_and_disable(self): - ctx = AKSPreviewManagedClusterContext( - self.cmd, - AKSManagedClusterParamDict( - { - "enable_workload_identity": True, - "disable_workload_identity": True, - } - ), - self.models, - decorator_mode=DecoratorMode.UPDATE, - ) - ctx.attach_mc(self.models.ManagedCluster(location="test_location")) - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx.get_workload_identity_profile() - def test_get_workload_identity_profile__update_with_enable_without_oidc_issuer(self): ctx = AKSPreviewManagedClusterContext( self.cmd, @@ -854,7 +886,7 @@ def test_get_workload_identity_profile__update_with_disable(self): self.cmd, AKSManagedClusterParamDict( { - "disable_workload_identity": True, + "enable_workload_identity": False, } ), self.models, @@ -1063,6 +1095,275 @@ def test_get_azure_keyvault_kms_key_id(self): with self.assertRaises(RequiredArgumentMissingError): ctx_5.get_azure_keyvault_kms_key_id() + def test_get_azure_keyvault_kms_key_vault_network_access(self): + key_vault_network_access_1 = "Public" + key_vault_network_access_2 = "Private" + + ctx_0 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertIsNone(ctx_0.get_azure_keyvault_kms_key_vault_network_access()) + + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": key_vault_network_access_1, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_1.get_azure_keyvault_kms_key_vault_network_access(), key_vault_network_access_1) + + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": key_vault_network_access_2, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + security_profile = self.models.ManagedClusterSecurityProfile() + security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( + enabled=True, + key_vault_network_access=key_vault_network_access_1, + ) + mc = self.models.ManagedCluster( + location="test_location", + security_profile=security_profile, + ) + ctx_2.attach_mc(mc) + self.assertEqual(ctx_2.get_azure_keyvault_kms_key_vault_network_access(), key_vault_network_access_2) + + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "azure_keyvault_kms_key_vault_network_access": key_vault_network_access_2, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(RequiredArgumentMissingError): + ctx_3.get_azure_keyvault_kms_key_vault_network_access() + + ctx_4 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": False, + "azure_keyvault_kms_key_vault_network_access": key_vault_network_access_2, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(RequiredArgumentMissingError): + ctx_4.get_azure_keyvault_kms_key_vault_network_access() + + # update scenario, backfill to default + ctx_5 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + security_profile_5 = self.models.ManagedClusterSecurityProfile() + mc_5 = self.models.ManagedCluster( + location="test_location", + security_profile=security_profile_5, + ) + ctx_5.attach_mc(mc_5) + self.assertEqual(ctx_5.get_azure_keyvault_kms_key_vault_network_access(), key_vault_network_access_1) + + # update scenario, backfill from existing mc + ctx_6 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + security_profile_6 = self.models.ManagedClusterSecurityProfile() + security_profile_6.azure_key_vault_kms = self.models.AzureKeyVaultKms( + enabled=True, + key_vault_network_access=key_vault_network_access_2, + ) + mc_6 = self.models.ManagedCluster( + location="test_location", + security_profile=security_profile_6, + ) + ctx_6.attach_mc(mc_6) + self.assertEqual(ctx_6.get_azure_keyvault_kms_key_vault_network_access(), key_vault_network_access_2) + + def test_get_azure_keyvault_kms_key_vault_resource_id(self): + key_vault_resource_id_1 = "/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo" + key_vault_resource_id_2 = "/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/bar/providers/Microsoft.KeyVault/vaults/bar" + + ctx_0 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertIsNone(ctx_0.get_azure_keyvault_kms_key_vault_resource_id()) + + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": "Public", + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_1.get_azure_keyvault_kms_key_vault_resource_id(), None) + + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": "Public", + "azure_keyvault_kms_key_vault_resource_id": "", + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_2.get_azure_keyvault_kms_key_vault_resource_id(), "") + + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": "Private", + "azure_keyvault_kms_key_vault_resource_id": key_vault_resource_id_1, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_3.get_azure_keyvault_kms_key_vault_resource_id(), key_vault_resource_id_1) + + ctx_4 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": "Private", + "azure_keyvault_kms_key_vault_resource_id": key_vault_resource_id_1, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + security_profile = self.models.ManagedClusterSecurityProfile() + security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( + enabled=True, + key_vault_network_access="Private", + key_vault_resource_id=key_vault_resource_id_2, + ) + mc = self.models.ManagedCluster( + location="test_location", + security_profile=security_profile, + ) + ctx_4.attach_mc(mc) + self.assertEqual(ctx_4.get_azure_keyvault_kms_key_vault_resource_id(), key_vault_resource_id_2) + + ctx_5 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": "Private", + "azure_keyvault_kms_key_vault_resource_id": key_vault_resource_id_2, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + security_profile = self.models.ManagedClusterSecurityProfile() + security_profile.azure_key_vault_kms = self.models.AzureKeyVaultKms( + enabled=True, + key_vault_network_access="Private", + key_vault_resource_id=key_vault_resource_id_1, + ) + mc = self.models.ManagedCluster( + location="test_location", + security_profile=security_profile, + ) + ctx_5.attach_mc(mc) + self.assertEqual(ctx_5.get_azure_keyvault_kms_key_vault_resource_id(), key_vault_resource_id_2) + + ctx_6 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "azure_keyvault_kms_key_vault_resource_id": key_vault_resource_id_1, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(RequiredArgumentMissingError): + ctx_6.get_azure_keyvault_kms_key_vault_resource_id() + + ctx_7 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": False, + "azure_keyvault_kms_key_vault_resource_id": key_vault_resource_id_1, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(RequiredArgumentMissingError): + ctx_7.get_azure_keyvault_kms_key_vault_resource_id() + + ctx_8 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": "Public", + "azure_keyvault_kms_key_vault_resource_id": key_vault_resource_id_1, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(ArgumentUsageError): + ctx_8.get_azure_keyvault_kms_key_vault_resource_id() + + ctx_9 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_vault_network_access": "Private", + "azure_keyvault_kms_key_vault_resource_id": "", + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(ArgumentUsageError): + ctx_9.get_azure_keyvault_kms_key_vault_resource_id() + + # update scenario, backfill from existing mc + ctx_10 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_azure_keyvault_kms": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + security_profile_10 = self.models.ManagedClusterSecurityProfile() + security_profile_10.azure_key_vault_kms = self.models.AzureKeyVaultKms( + enabled=True, + key_vault_network_access="Private", + key_vault_resource_id=key_vault_resource_id_1, + ) + mc_10 = self.models.ManagedCluster( + location="test_location", + security_profile=security_profile_10, + ) + ctx_10.attach_mc(mc_10) + self.assertEqual(ctx_10.get_azure_keyvault_kms_key_vault_resource_id(), key_vault_resource_id_1) + def test_get_cluster_snapshot_id(self): # default ctx_1 = AKSPreviewManagedClusterContext( @@ -1226,6 +1527,119 @@ def test_get_disk_driver(self): with self.assertRaises(MutuallyExclusiveArgumentError): ctx_1.get_disk_driver() + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + { + "enable_disk_driver": True, + "disk_driver_version": "v2", + "disable_disk_driver": False, + } + ), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + storage_profile_2 = self.models.ManagedClusterStorageProfile( + disk_csi_driver=self.models.ManagedClusterStorageProfileDiskCSIDriver( + enabled=False, + version=None, + ), + file_csi_driver=None, + snapshot_controller=None, + ) + mc_2 = self.models.ManagedCluster( + location="test_location", + storage_profile=storage_profile_2, + ) + ctx_2.attach_mc(mc_2) + ground_truth_disk_csi_driver_2 = ( + self.models.ManagedClusterStorageProfileDiskCSIDriver( + enabled=True, + version="v2", + ) + ) + self.assertEqual( + ctx_2.get_disk_driver(), ground_truth_disk_csi_driver_2 + ) + + # fail with enable-disk-driver as false and value passed for disk_driver_version + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disable_disk_driver": True, + "disk_driver_version": "v2", + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + + # fail on argument usage error + with self.assertRaises(ArgumentUsageError): + ctx_3.get_disk_driver() + + # fail with enable-disk-driver as false and value passed for disk_driver_version + ctx_4 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disk_driver_version": "v2", + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + # fail on argument usage error + with self.assertRaises(ArgumentUsageError): + ctx_4.get_disk_driver() + + # fail on prompt_y_n not specified when disabling disk driver + ctx_5 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disable_disk_driver": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + with patch( + "azext_aks_preview.managed_cluster_decorator.prompt_y_n", + return_value=False, + ), self.assertRaises(DecoratorEarlyExitException): + ctx_5.get_disk_driver() + + ctx_6 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disable_disk_driver": True, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + ground_truth_disk_csi_driver_6 = ( + self.models.ManagedClusterStorageProfileDiskCSIDriver( + enabled=False, + ) + ) + self.assertEqual( + ctx_6.get_disk_driver(), ground_truth_disk_csi_driver_6 + ) + + ctx_7 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disk_driver_version": CONST_DISK_DRIVER_V2, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + ground_truth_disk_csi_driver_7 = ( + self.models.ManagedClusterStorageProfileDiskCSIDriver( + enabled=True, + version=CONST_DISK_DRIVER_V2, + ) + ) + self.assertEqual( + ctx_7.get_disk_driver(), ground_truth_disk_csi_driver_7 + ) + def test_get_file_driver(self): ctx_1 = AKSPreviewManagedClusterContext( self.cmd, @@ -1242,6 +1656,21 @@ def test_get_file_driver(self): with self.assertRaises(MutuallyExclusiveArgumentError): ctx_1.get_file_driver() + # fail on prompt_y_n not specified when disabling file driver + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disable_file_driver": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + with patch( + "azext_aks_preview.managed_cluster_decorator.prompt_y_n", + return_value=False, + ), self.assertRaises(DecoratorEarlyExitException): + ctx_2.get_file_driver() + def test_get_snapshot_controller(self): ctx_1 = AKSPreviewManagedClusterContext( self.cmd, @@ -1254,9 +1683,148 @@ def test_get_snapshot_controller(self): self.models, decorator_mode=DecoratorMode.UPDATE, ) - # fail on mutually exclusive enable_snapshot_controller and disable_snapshot_controller - with self.assertRaises(MutuallyExclusiveArgumentError): - ctx_1.get_snapshot_controller() + # fail on mutually exclusive enable_snapshot_controller and disable_snapshot_controller + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_1.get_snapshot_controller() + + # fail on prompt_y_n not specified when disabling snapshot controller + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disable_snapshot_controller": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + with patch( + "azext_aks_preview.managed_cluster_decorator.prompt_y_n", + return_value=False, + ), self.assertRaises(DecoratorEarlyExitException): + ctx_2.get_snapshot_controller() + + def test_get_blob_driver(self): + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + { + "enable_blob_driver": True, + "disable_blob_driver": True, + } + ), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + # fail on mutually exclusive enable_blob_driver and disable_blob_driver + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_1.get_blob_driver() + + # fail on prompt_y_n not specified when disabling blob driver + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disable_blob_driver": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + with patch( + "azext_aks_preview.managed_cluster_decorator.prompt_y_n", + return_value=False, + ), self.assertRaises(DecoratorEarlyExitException): + ctx_2.get_blob_driver() + + # fail on prompt_y_n not specified when enabling blob driver + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_blob_driver": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + with patch( + "azext_aks_preview.managed_cluster_decorator.prompt_y_n", + return_value=False, + ), self.assertRaises(DecoratorEarlyExitException): + ctx_3.get_blob_driver() + + # create with blob driver enabled + ctx_4 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_blob_driver": True, + }), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + mc_1 = self.models.ManagedCluster( + location="test_location", + ) + ctx_4.attach_mc(mc_1) + storage_profile_1 = self.models.ManagedClusterStorageProfile( + blob_csi_driver=self.models.ManagedClusterStorageProfileBlobCSIDriver( + enabled=True, + ), + ) + self.assertEqual(ctx_4.get_storage_profile(), storage_profile_1) + + # create without blob driver enabled + ctx_5 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + mc_1 = self.models.ManagedCluster( + location="test_location", + ) + ctx_5.attach_mc(mc_1) + storage_profile_2 = self.models.ManagedClusterStorageProfile( + blob_csi_driver=None, + ) + self.assertEqual(ctx_5.get_storage_profile(), storage_profile_2) + + # update blob driver enabled + ctx_6 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "enable_blob_driver": True, + "yes": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + mc_1 = self.models.ManagedCluster( + location="test_location", + ) + ctx_6.attach_mc(mc_1) + storage_profile_3 = self.models.ManagedClusterStorageProfile( + blob_csi_driver=self.models.ManagedClusterStorageProfileBlobCSIDriver( + enabled=True, + ), + ) + self.assertEqual(ctx_6.get_storage_profile(), storage_profile_3) + + # update blob driver disabled + ctx_7 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({ + "disable_blob_driver": True, + "yes": True, + }), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + mc_1 = self.models.ManagedCluster( + location="test_location", + ) + ctx_7.attach_mc(mc_1) + storage_profile_4 = self.models.ManagedClusterStorageProfile( + blob_csi_driver=self.models.ManagedClusterStorageProfileBlobCSIDriver( + enabled=False, + ), + ) + self.assertEqual(ctx_7.get_storage_profile(), storage_profile_4) def test_get_storage_profile(self): # create @@ -1266,7 +1834,7 @@ def test_get_storage_profile(self): "disable_disk_driver": True, }), self.models, - decorator_mode=DecoratorMode.UPDATE, + decorator_mode=DecoratorMode.CREATE, ) mc_1 = self.models.ManagedCluster( location="test_location", @@ -1287,6 +1855,7 @@ def test_get_storage_profile(self): AKSManagedClusterParamDict({ "enable_file_driver": True, "disable_snapshot_controller": True, + "yes": True, }), self.models, decorator_mode=DecoratorMode.UPDATE, @@ -1487,6 +2056,198 @@ def test_get_apiserver_subnet_id(self): with self.assertRaises(RequiredArgumentMissingError): ctx_6.get_apiserver_subnet_id() + def test_get_dns_zone_resource_id(self): + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + { + "dns_zone_resource_id": "test_dns_zone_resource_id", + } + ), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_1.get_dns_zone_resource_id(), "test_dns_zone_resource_id") + mc_1 = self.models.ManagedCluster( + location="test_location", + ingress_profile=self.models.ManagedClusterIngressProfile( + web_app_routing=self.models.ManagedClusterIngressProfileWebAppRouting( + enabled=True, + dns_zone_resource_id="test_mc_dns_zone_resource_id", + ) + ), + ) + ctx_1.attach_mc(mc_1) + self.assertEqual(ctx_1.get_dns_zone_resource_id(), "test_mc_dns_zone_resource_id") + + def test_get_enable_keda(self): + # Returns the value of enable_keda if keda is None in existing profile. + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertIsNone(ctx_1.get_enable_keda()) + + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"enable_keda": False}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertFalse(ctx_2.get_enable_keda()) + + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"enable_keda": True}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertTrue(ctx_3.get_enable_keda()) + + keda_none_mc = self.models.ManagedCluster( + location="test_location", + workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile(), + ) + + keda_false_mc = self.models.ManagedCluster( + location="test_location", + workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile( + keda=self.models.ManagedClusterWorkloadAutoScalerProfileKeda( + enabled=False + ) + ), + ) + + keda_true_mc = self.models.ManagedCluster( + location="test_location", + workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile( + keda=self.models.ManagedClusterWorkloadAutoScalerProfileKeda( + enabled=True + ) + ), + ) + + # Returns the value of keda in existing profile if enable_keda is None. + ctx_4 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + ctx_4.attach_mc(keda_none_mc) + self.assertIsNone(ctx_4.get_enable_keda()) + + ctx_5 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + ctx_5.attach_mc(keda_false_mc) + self.assertFalse(ctx_5.get_enable_keda()) + + ctx_6 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + ctx_6.attach_mc(keda_true_mc) + self.assertTrue(ctx_6.get_enable_keda()) + + # Ignores the value of keda in existing profile in update-mode. + ctx_7 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + ctx_7.attach_mc(keda_true_mc) + self.assertIsNone(ctx_7.get_enable_keda()) + + # Throws exception when both enable_keda and disable_keda are True. + ctx_8 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + {"enable_keda": True, "disable_keda": True} + ), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_8.get_enable_keda() + + # Throws exception when disable_keda and the value of keda in existing profile are True. + ctx_9 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"disable_keda": True}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + ctx_9.attach_mc(keda_true_mc) + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_9.get_enable_keda() + + def test_get_disable_keda(self): + # Returns the value of disable_keda. + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertIsNone(ctx_1.get_disable_keda()) + + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"disable_keda": False}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertFalse(ctx_2.get_disable_keda()) + + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"disable_keda": True}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertTrue(ctx_3.get_disable_keda()) + + # Throws exception when both enable_keda and disable_keda are True. + ctx_4 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict( + {"enable_keda": True, "disable_keda": True} + ), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_4.get_disable_keda() + + keda_true_mc = self.models.ManagedCluster( + location="test_location", + workload_auto_scaler_profile=self.models.ManagedClusterWorkloadAutoScalerProfile( + keda=self.models.ManagedClusterWorkloadAutoScalerProfileKeda( + enabled=True + ) + ), + ) + + # Throws exception when disable_keda and the value of keda in existing profile are True. + ctx_5 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"disable_keda": True}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + ctx_5.attach_mc(keda_true_mc) + with self.assertRaises(MutuallyExclusiveArgumentError): + ctx_5.get_disable_keda() + class AKSPreviewManagedClusterCreateDecoratorTestCase(unittest.TestCase): def setUp(self): @@ -1795,7 +2556,6 @@ def test_set_up_addon_profiles(self): ground_truth_mc_2 = self.models.ManagedCluster( location="test_location", addon_profiles=addon_profiles_2 ) - print(dec_mc_2.addon_profiles) self.assertEqual(dec_mc_2, ground_truth_mc_2) self.assertEqual(dec_2.context.get_intermediate("monitoring_addon_enabled"), True) self.assertEqual(dec_2.context.get_intermediate("virtual_node_addon_enabled"), None) @@ -1976,6 +2736,8 @@ def test_set_up_workload_identity_profile__enabled(self): self.assertTrue(updated_mc.security_profile.workload_identity.enabled) def test_set_up_azure_keyvault_kms(self): + key_id_1 = "https://fakekeyvault.vault.azure.net/secrets/fakekeyname/fakekeyversion" + dec_1 = AKSPreviewManagedClusterCreateDecorator( self.cmd, self.client, @@ -1988,13 +2750,13 @@ def test_set_up_azure_keyvault_kms(self): ground_truth_mc_1 = self.models.ManagedCluster(location="test_location") self.assertEqual(dec_mc_1, ground_truth_mc_1) - key_id_1 = "https://fakekeyvault.vault.azure.net/secrets/fakekeyname/fakekeyversion" dec_2 = AKSPreviewManagedClusterCreateDecorator( self.cmd, self.client, { "enable_azure_keyvault_kms": True, "azure_keyvault_kms_key_id": key_id_1, + "azure_keyvault_kms_key_vault_network_access": "Public", }, CUSTOM_MGMT_AKS_PREVIEW, ) @@ -2005,6 +2767,7 @@ def test_set_up_azure_keyvault_kms(self): ground_truth_azure_keyvault_kms_profile_2 = self.models.AzureKeyVaultKms( enabled=True, key_id=key_id_1, + key_vault_network_access="Public", ) ground_truth_security_profile_2 = self.models.ManagedClusterSecurityProfile( azure_key_vault_kms=ground_truth_azure_keyvault_kms_profile_2, @@ -2013,9 +2776,39 @@ def test_set_up_azure_keyvault_kms(self): location="test_location", security_profile=ground_truth_security_profile_2, ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) + dec_3 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, + self.client, + { + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_id": key_id_1, + "azure_keyvault_kms_key_vault_network_access": "Private", + "azure_keyvault_kms_key_vault_resource_id": "/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo", + }, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_3 = self.models.ManagedCluster(location="test_location") + dec_3.context.attach_mc(mc_3) + dec_mc_3 = dec_3.set_up_azure_keyvault_kms(mc_3) + + ground_truth_azure_keyvault_kms_profile_3 = self.models.AzureKeyVaultKms( + enabled=True, + key_id=key_id_1, + key_vault_network_access="Private", + key_vault_resource_id="/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo", + ) + ground_truth_security_profile_3 = self.models.ManagedClusterSecurityProfile( + azure_key_vault_kms=ground_truth_azure_keyvault_kms_profile_3, + ) + ground_truth_mc_3 = self.models.ManagedCluster( + location="test_location", + security_profile=ground_truth_security_profile_3, + ) + + self.assertEqual(dec_mc_3, ground_truth_mc_3) + def test_set_up_creationdata_of_cluster_snapshot(self): dec_1 = AKSPreviewManagedClusterCreateDecorator( self.cmd, @@ -2050,6 +2843,76 @@ def test_set_up_storage_profile(self): ground_truth_mc_1 = self.models.ManagedCluster(location="test_location", storage_profile=storage_profile_1) self.assertEqual(dec_mc_1, ground_truth_mc_1) + def test_set_up_ingress_web_app_routing(self): + dec_1 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, + self.client, + {"enable_addons": "web_application_routing", "dns_zone_resource_id": "test_dns_zone_resource_id"}, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_1 = self.models.ManagedCluster(location="test_location") + dec_1.context.attach_mc(mc_1) + dec_mc_1 = dec_1.set_up_ingress_web_app_routing(mc_1) + ground_truth_ingress_profile_1 = self.models.ManagedClusterIngressProfile( + web_app_routing=self.models.ManagedClusterIngressProfileWebAppRouting( + enabled=True, + dns_zone_resource_id="test_dns_zone_resource_id", + ) + ) + ground_truth_mc_1 = self.models.ManagedCluster( + location="test_location", ingress_profile=ground_truth_ingress_profile_1 + ) + self.assertEqual(dec_mc_1, ground_truth_mc_1) + + def test_set_up_workload_auto_scaler_profile(self): + # Throws exception when incorrect mc object is passed. + dec_1 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW + ) + with self.assertRaisesRegex( + CLIInternalError, + "^Unexpected mc object with type ''\.$", + ): + dec_1.set_up_workload_auto_scaler_profile(None) + + # Sets profile to None without raw parameters. + dec_2 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW + ) + mc_in = self.models.ManagedCluster(location="test_location") + dec_2.context.attach_mc(mc_in) + mc_out = dec_2.set_up_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertIsNone(mc_out.workload_auto_scaler_profile) + + # Sets profile to None if enable_keda is False. + dec_3 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, + self.client, + {"enable_keda": False}, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_in = self.models.ManagedCluster(location="test_location") + dec_3.context.attach_mc(mc_in) + mc_out = dec_3.set_up_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertIsNone(mc_out.workload_auto_scaler_profile) + + # Sets profile with keda enabled if enable_keda is True. + dec_4 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, + self.client, + {"enable_keda": True}, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_in = self.models.ManagedCluster(location="test_location") + dec_4.context.attach_mc(mc_in) + mc_out = dec_4.set_up_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) + self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) + def test_construct_mc_profile_preview(self): import inspect @@ -2115,6 +2978,7 @@ def test_construct_mc_profile_preview(self): enable_fips=False, mode=CONST_NODEPOOL_MODE_SYSTEM, workload_runtime=CONST_WORKLOAD_RUNTIME_OCI_CONTAINER, + enable_custom_ca_trust=False, ) ssh_config_1 = self.models.ContainerServiceSshConfiguration( public_keys=[self.models.ContainerServiceSshPublicKey(key_data=public_key)] @@ -2896,6 +3760,8 @@ def test_update_azure_keyvault_kms(self): { "enable_azure_keyvault_kms": True, "azure_keyvault_kms_key_id": key_id_1, + "azure_keyvault_kms_key_vault_network_access": "Private", + "azure_keyvault_kms_key_vault_resource_id": "/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo", }, CUSTOM_MGMT_AKS_PREVIEW, ) @@ -2908,6 +3774,8 @@ def test_update_azure_keyvault_kms(self): ground_truth_azure_keyvault_kms_profile_2 = self.models.AzureKeyVaultKms( enabled=True, key_id=key_id_1, + key_vault_network_access="Private", + key_vault_resource_id="/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo", ) ground_truth_security_profile_2 = self.models.ManagedClusterSecurityProfile( azure_key_vault_kms=ground_truth_azure_keyvault_kms_profile_2, @@ -2916,14 +3784,85 @@ def test_update_azure_keyvault_kms(self): location="test_location", security_profile=ground_truth_security_profile_2, ) - self.assertEqual(dec_mc_2, ground_truth_mc_2) + # partial update, backfill default network access + dec_3 = AKSPreviewManagedClusterUpdateDecorator( + self.cmd, + self.client, + { + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_id": key_id_1, + }, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_3 = self.models.ManagedCluster( + location="test_location", + ) + dec_3.context.attach_mc(mc_3) + dec_mc_3 = dec_3.update_azure_keyvault_kms(mc_3) + + ground_truth_azure_keyvault_kms_profile_3 = self.models.AzureKeyVaultKms( + enabled=True, + key_id=key_id_1, + key_vault_network_access="Public", + ) + ground_truth_security_profile_3 = self.models.ManagedClusterSecurityProfile( + azure_key_vault_kms=ground_truth_azure_keyvault_kms_profile_3, + ) + ground_truth_mc_3 = self.models.ManagedCluster( + location="test_location", + security_profile=ground_truth_security_profile_3, + ) + self.assertEqual(dec_mc_3, ground_truth_mc_3) + + # partial update, backfill network access and key vault id from existing mc + dec_4 = AKSPreviewManagedClusterUpdateDecorator( + self.cmd, + self.client, + { + "enable_azure_keyvault_kms": True, + "azure_keyvault_kms_key_id": key_id_1, + }, + CUSTOM_MGMT_AKS_PREVIEW, + ) + azure_keyvault_kms_profile_4 = self.models.AzureKeyVaultKms( + enabled=True, + key_id="test_key_id", + key_vault_network_access="Private", + key_vault_resource_id="/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo", + ) + security_profile_4 = self.models.ManagedClusterSecurityProfile( + azure_key_vault_kms=azure_keyvault_kms_profile_4, + ) + mc_4 = self.models.ManagedCluster( + location="test_location", + security_profile=security_profile_4, + ) + dec_4.context.attach_mc(mc_4) + dec_mc_4 = dec_4.update_azure_keyvault_kms(mc_4) + + ground_truth_azure_keyvault_kms_profile_4 = self.models.AzureKeyVaultKms( + enabled=True, + key_id=key_id_1, + key_vault_network_access="Private", + key_vault_resource_id="/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo", + ) + ground_truth_security_profile_4 = self.models.ManagedClusterSecurityProfile( + azure_key_vault_kms=ground_truth_azure_keyvault_kms_profile_4, + ) + ground_truth_mc_4 = self.models.ManagedCluster( + location="test_location", + security_profile=ground_truth_security_profile_4, + ) + self.assertEqual(dec_mc_4, ground_truth_mc_4) + + def test_update_storage_profile(self): dec_1 = AKSPreviewManagedClusterUpdateDecorator( self.cmd, self.client, - {"disable_disk_driver": True, "disable_file_driver": True, "disable_snapshot_controller": True}, + {"disable_disk_driver": True, "disable_file_driver": True, "disable_snapshot_controller": True, "yes": True}, CUSTOM_MGMT_AKS_PREVIEW, ) storage_profile_1 = self.models.ManagedClusterStorageProfile( @@ -2968,6 +3907,89 @@ def test_update_storage_profile(self): ) self.assertEqual(dec_mc_2, ground_truth_mc_2) + def test_update_workload_auto_scaler_profile(self): + # Throws exception when incorrect mc object is passed. + dec_1 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) + with self.assertRaisesRegex(CLIInternalError, "^Unexpected mc object with type ''\.$"): + dec_1.update_workload_auto_scaler_profile(None) + + # Throws exception when the mc object passed does not match the one in context. + dec_2 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) + with self.assertRaisesRegex(CLIInternalError, "^Inconsistent state detected\. The incoming `mc` is not the same as the `mc` in the context\.$"): + mc_in = self.models.ManagedCluster(location="test_location") + dec_2.update_workload_auto_scaler_profile(mc_in) + + # Leaves profile as None without raw parameters. + dec_3 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) + mc_in = self.models.ManagedCluster(location="test_location") + dec_3.context.attach_mc(mc_in) + mc_out = dec_3.update_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertIsNone(mc_out.workload_auto_scaler_profile) + + # Leaves existing profile untouched without raw parameters. + dec_4 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {}, CUSTOM_MGMT_AKS_PREVIEW) + profile = self.models.ManagedClusterWorkloadAutoScalerProfile( + keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True)) + mc_in = self.models.ManagedCluster(location="test_location", workload_auto_scaler_profile = profile) + dec_4.context.attach_mc(mc_in) + mc_out = dec_4.update_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertEqual(mc_out.workload_auto_scaler_profile, profile) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) + self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) + + # Enables keda when enable_keda is True. + dec_5 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {"enable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) + mc_in = self.models.ManagedCluster(location="test_location") + dec_5.context.attach_mc(mc_in) + mc_out = dec_5.update_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) + self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) + + # Enables keda in existing profile when enable_keda is True. + dec_6 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {"enable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) + profile = self.models.ManagedClusterWorkloadAutoScalerProfile( + keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=False)) + mc_in = self.models.ManagedCluster(location="test_location", workload_auto_scaler_profile = profile) + dec_6.context.attach_mc(mc_in) + mc_out = dec_6.update_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertEqual(mc_out.workload_auto_scaler_profile, profile) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) + self.assertTrue(mc_out.workload_auto_scaler_profile.keda.enabled) + + # Disables keda when disable_keda is True. + dec_7 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {"disable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) + mc_in = self.models.ManagedCluster(location="test_location") + dec_7.context.attach_mc(mc_in) + mc_out = dec_7.update_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) + self.assertFalse(mc_out.workload_auto_scaler_profile.keda.enabled) + + # Disables keda in existing profile when disable_keda is True. + dec_8 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {"disable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) + profile = self.models.ManagedClusterWorkloadAutoScalerProfile( + keda = self.models.ManagedClusterWorkloadAutoScalerProfileKeda(enabled=True)) + mc_in = self.models.ManagedCluster(location="test_location", workload_auto_scaler_profile = profile) + dec_8.context.attach_mc(mc_in) + mc_out = dec_8.update_workload_auto_scaler_profile(mc_in) + self.assertEqual(mc_out, mc_in) + self.assertEqual(mc_out.workload_auto_scaler_profile, profile) + self.assertIsNotNone(mc_out.workload_auto_scaler_profile.keda) + self.assertFalse(mc_out.workload_auto_scaler_profile.keda.enabled) + + # Throws exception when both enable_keda and disable_keda are True. + dec_9 = AKSPreviewManagedClusterUpdateDecorator(self.cmd, self.client, {"enable_keda": True, "disable_keda": True}, CUSTOM_MGMT_AKS_PREVIEW) + mc_in = self.models.ManagedCluster(location="test_location") + dec_9.context.attach_mc(mc_in) + with self.assertRaises(MutuallyExclusiveArgumentError): + mc_out = dec_9.update_workload_auto_scaler_profile(mc_in) + def test_update_mc_profile_preview(self): import inspect diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_natgateway.py b/src/aks-preview/azext_aks_preview/tests/latest/test_natgateway.py index c995457f800..f023922517c 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_natgateway.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_natgateway.py @@ -7,7 +7,9 @@ import azext_aks_preview._natgateway as natgateway from azext_aks_preview.__init__ import register_aks_preview_resource_type from azext_aks_preview._client_factory import CUSTOM_MGMT_AKS_PREVIEW -from azext_aks_preview.decorator import AKSPreviewModels +from azext_aks_preview.managed_cluster_decorator import ( + AKSPreviewManagedClusterModels, +) from azext_aks_preview.tests.latest.mocks import MockCLI, MockCmd @@ -18,7 +20,7 @@ def setUp(self): self.cli_ctx = MockCLI() self.cmd = MockCmd(self.cli_ctx) # store all the models used by nat gateway - self.nat_gateway_models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW).nat_gateway_models + self.nat_gateway_models = AKSPreviewManagedClusterModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW).nat_gateway_models def test_empty_arguments(self): profile = natgateway.create_nat_gateway_profile(None, None, models=self.nat_gateway_models) @@ -41,7 +43,7 @@ def setUp(self): self.cli_ctx = MockCLI() self.cmd = MockCmd(self.cli_ctx) # store all the models used by nat gateway - self.nat_gateway_models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW).nat_gateway_models + self.nat_gateway_models = AKSPreviewManagedClusterModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW).nat_gateway_models def test_empty_arguments(self): origin_profile = self.nat_gateway_models.ManagedClusterNATGatewayProfile( @@ -88,3 +90,7 @@ def test_nonempty_idle_timeout(self): def test_nonempty_arguments(self): result = natgateway.is_nat_gateway_profile_provided(1, 4) self.assertTrue(result) + + +if __name__ == '__main__': + unittest.main() diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_pod_identity_helpers.py b/src/aks-preview/azext_aks_preview/tests/latest/test_pod_identity_helpers.py index 172e64573c1..9b2845974ef 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_pod_identity_helpers.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_pod_identity_helpers.py @@ -10,7 +10,9 @@ _fill_defaults_for_pod_identity_exceptions, _fill_defaults_for_pod_identity_profile, ) -from azext_aks_preview.decorator import AKSPreviewModels +from azext_aks_preview.managed_cluster_decorator import ( + AKSPreviewManagedClusterModels, +) from azext_aks_preview.tests.latest.mocks import MockCLI, MockCmd @@ -21,7 +23,7 @@ def setUp(self): self.cli_ctx = MockCLI() self.cmd = MockCmd(self.cli_ctx) # store all the models used by nat gateway - self.pod_identity_models = AKSPreviewModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW).pod_identity_models + self.pod_identity_models = AKSPreviewManagedClusterModels(self.cmd, CUSTOM_MGMT_AKS_PREVIEW).pod_identity_models def test_fill_defaults_for_pod_identity_exceptions(self): # get models @@ -107,3 +109,7 @@ def test_fill_defaults_for_pod_identity_profile(self): self.assertEqual(excs[0].name, "test-exc-1") self.assertEqual(excs[1].pod_labels, {}) self.assertEqual(excs[1].name, "test-exc-2") + + +if __name__ == '__main__': + unittest.main() diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py b/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py index 6ae5c137a1b..d1e7a2a0d0e 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py @@ -4,6 +4,7 @@ # -------------------------------------------------------------------------------------------- import unittest from azure.cli.core.util import CLIError +from azure.cli.core.azclierror import InvalidArgumentValueError import azext_aks_preview._validators as validators from azext_aks_preview._consts import ADDONS @@ -383,5 +384,29 @@ def test_invalid_azure_keyvault_kms_key_id_with_wrong_object_type(self): validators.validate_azure_keyvault_kms_key_id(namespace) self.assertEqual(str(cm.exception), err) + +class AzureKeyVaultKmsKeyVaultResourceIdNamespace: + + def __init__(self, azure_keyvault_kms_key_vault_resource_id): + self.azure_keyvault_kms_key_vault_resource_id = azure_keyvault_kms_key_vault_resource_id + + +class TestValidateAzureKeyVaultKmsKeyVaultResourceId(unittest.TestCase): + def test_invalid_azure_keyvault_kms_key_vault_resource_id(self): + invalid_azure_keyvault_kms_key_vault_resource_id = "invalid" + namespace = AzureKeyVaultKmsKeyVaultResourceIdNamespace(azure_keyvault_kms_key_vault_resource_id=invalid_azure_keyvault_kms_key_vault_resource_id) + err = '--azure-keyvault-kms-key-vault-resource-id is not a valid Azure resource ID.' + + with self.assertRaises(InvalidArgumentValueError) as cm: + validators.validate_azure_keyvault_kms_key_vault_resource_id(namespace) + self.assertEqual(str(cm.exception), err) + + def test_valid_azure_keyvault_kms_key_vault_resource_id(self): + valid_azure_keyvault_kms_key_vault_resource_id = "/subscriptions/8ecadfc9-d1a3-4ea4-b844-0d9f87e4d7c8/resourceGroups/foo/providers/Microsoft.KeyVault/vaults/foo" + namespace = AzureKeyVaultKmsKeyVaultResourceIdNamespace(azure_keyvault_kms_key_vault_resource_id=valid_azure_keyvault_kms_key_vault_resource_id) + + validators.validate_azure_keyvault_kms_key_vault_resource_id(namespace) + + if __name__ == "__main__": unittest.main() diff --git a/src/aks-preview/azext_aks_preview/tests/latest/utils.py b/src/aks-preview/azext_aks_preview/tests/latest/utils.py index 5871a469b84..69cda720ee8 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/utils.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/utils.py @@ -4,9 +4,6 @@ # -------------------------------------------------------------------------------------------- import os -import platform -import shutil -import tempfile def get_test_data_file_path(filename): diff --git a/src/aks-preview/linter_exclusions.yml b/src/aks-preview/linter_exclusions.yml index ecfc780aea1..97bfe676ed0 100644 --- a/src/aks-preview/linter_exclusions.yml +++ b/src/aks-preview/linter_exclusions.yml @@ -12,6 +12,12 @@ aks create: azure_keyvault_kms_key_id: rule_exclusions: - option_length_too_long + azure_keyvault_kms_key_vault_network_access: + rule_exclusions: + - option_length_too_long + azure_keyvault_kms_key_vault_resource_id: + rule_exclusions: + - option_length_too_long enable_workload_identity: rule_exclusions: - option_length_too_long @@ -45,6 +51,12 @@ aks update: azure_keyvault_kms_key_id: rule_exclusions: - option_length_too_long + azure_keyvault_kms_key_vault_network_access: + rule_exclusions: + - option_length_too_long + azure_keyvault_kms_key_vault_resource_id: + rule_exclusions: + - option_length_too_long enable_workload_identity: rule_exclusions: - option_length_too_long diff --git a/src/aks-preview/setup.py b/src/aks-preview/setup.py index 4ac446825b7..9d6418e0cc2 100644 --- a/src/aks-preview/setup.py +++ b/src/aks-preview/setup.py @@ -9,7 +9,7 @@ from setuptools import setup, find_packages -VERSION = "0.5.79" +VERSION = "0.5.87" CLASSIFIERS = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", diff --git a/src/amg/HISTORY.rst b/src/amg/HISTORY.rst index 9c37ba87a1a..a1a78dd02ae 100644 --- a/src/amg/HISTORY.rst +++ b/src/amg/HISTORY.rst @@ -10,3 +10,7 @@ Release History 0.1.1 ++++++ * update 'az grafana delete' to automatically remove the default role assignment created for the managed identity + +0.1.2 +++++++ +* `az grafana create`: support guess users diff --git a/src/amg/azext_amg/_params.py b/src/amg/azext_amg/_params.py index d31cf84387d..072086db4d7 100644 --- a/src/amg/azext_amg/_params.py +++ b/src/amg/azext_amg/_params.py @@ -29,6 +29,7 @@ def load_arguments(self, _): c.argument("zone_redundancy", arg_type=get_enum_type(ZoneRedundancy), help="Indicates whether or not zone redundancy should be enabled. Default: Disabled") c.argument("skip_system_assigned_identity", options_list=["-s", "--skip-system-assigned-identity"], arg_type=get_three_state_flag(), help="Do not enable system assigned identity") c.argument("skip_role_assignments", arg_type=get_three_state_flag(), help="Do not create role assignments for managed identity and the current login user") + c.argument("principal_ids", nargs="+", help="space-separated Azure AD object ids for users, groups, etc to be made as Grafana Admins. Once provided, CLI won't make the current logon user as Grafana Admin") with self.argument_context("grafana dashboard") as c: c.argument("uid", options_list=["--dashboard"], help="dashboard uid") diff --git a/src/amg/azext_amg/custom.py b/src/amg/azext_amg/custom.py index db77bbf909b..c773da89fcd 100644 --- a/src/amg/azext_amg/custom.py +++ b/src/amg/azext_amg/custom.py @@ -26,9 +26,12 @@ def create_grafana(cmd, resource_group_name, grafana_name, location=None, skip_system_assigned_identity=False, skip_role_assignments=False, - tags=None, zone_redundancy=None): + tags=None, zone_redundancy=None, principal_ids=None): from azure.cli.core.commands.arm import resolve_role_id + if skip_role_assignments and principal_ids: + raise ArgumentUsageError("--skip-role-assignments | --assignee-object-ids") + client = cf_amg(cmd.cli_ctx) resource = { "sku": { @@ -54,9 +57,13 @@ def create_grafana(cmd, resource_group_name, grafana_name, subscription_scope = '/subscriptions/' + client._config.subscription_id # pylint: disable=protected-access - user_principal_id = _get_login_account_principal_id(cmd.cli_ctx) + if not principal_ids: + user_principal_id = _get_login_account_principal_id(cmd.cli_ctx) + principal_ids = [user_principal_id] grafana_admin_role_id = resolve_role_id(cmd.cli_ctx, "Grafana Admin", subscription_scope) - _create_role_assignment(cmd.cli_ctx, user_principal_id, grafana_admin_role_id, resource.id) + + for p in principal_ids: + _create_role_assignment(cmd.cli_ctx, p, grafana_admin_role_id, resource.id) if resource.identity: monitoring_reader_role_id = resolve_role_id(cmd.cli_ctx, "Monitoring Reader", subscription_scope) @@ -75,13 +82,13 @@ def _get_login_account_principal_id(cli_ctx): client = GraphRbacManagementClient(cred, tenant_id, base_url=cli_ctx.cloud.endpoints.active_directory_graph_resource_id) assignee = profile.get_current_account_user() - result = list(client.users.list(filter=f"userPrincipalName eq '{assignee}'")) + result = list(client.users.list(filter=f"userPrincipalName eq '{assignee}' or mail eq '{assignee}'")) if not result: result = list(client.service_principals.list( filter=f"servicePrincipalNames/any(c:c eq '{assignee}')")) if not result: raise CLIInternalError((f"Failed to retrieve principal id for '{assignee}', which is needed to create a " - f"role assignment")) + f"role assignment. Consider using '--principal-ids' to bypass the lookup")) return result[0].object_id diff --git a/src/amg/azext_amg/tests/latest/recordings/test_amg_e2e.yaml b/src/amg/azext_amg/tests/latest/recordings/test_amg_e2e.yaml index 7ef07a14794..85b5bce9b01 100644 --- a/src/amg/azext_amg/tests/latest/recordings/test_amg_e2e.yaml +++ b/src/amg/azext_amg/tests/latest/recordings/test_amg_e2e.yaml @@ -18,17 +18,17 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg?api-version=2021-09-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-11T17:21:51.6537717Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-11T17:21:51.6537717Z"},"identity":{"principalId":"b0590771-4338-4719-ac35-3260aecd2036","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Accepted","grafanaVersion":null,"endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-18T06:59:41.2727587Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-18T06:59:41.2727587Z"},"identity":{"principalId":"27802590-ff16-49e0-9fb9-0780ad74c1e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Accepted","grafanaVersion":null,"endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' headers: api-supported-versions: - - 2021-09-01-preview + - 2021-09-01-preview, 2022-05-01-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview cache-control: - no-cache content-length: @@ -36,13 +36,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:21:54 GMT + - Sat, 18 Jun 2022 06:59:43 GMT etag: - - '"bd02c707-0000-0d00-0000-627bf0b20000"' + - '"0400d4a7-0000-0d00-0000-62ad77df0000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview pragma: - no-cache request-context: @@ -72,12 +72,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -86,9 +86,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:22:24 GMT + - Sat, 18 Jun 2022 07:00:13 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -118,12 +118,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -132,9 +132,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:22:54 GMT + - Sat, 18 Jun 2022 07:00:44 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -164,12 +164,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -178,9 +178,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:23:25 GMT + - Sat, 18 Jun 2022 07:01:14 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -210,12 +210,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -224,9 +224,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:23:55 GMT + - Sat, 18 Jun 2022 07:01:45 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -256,12 +256,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -270,9 +270,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:24:25 GMT + - Sat, 18 Jun 2022 07:02:15 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -302,12 +302,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -316,9 +316,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:24:55 GMT + - Sat, 18 Jun 2022 07:02:45 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -348,12 +348,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -362,9 +362,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:25:26 GMT + - Sat, 18 Jun 2022 07:03:15 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -394,12 +394,12 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-05-11T17:21:53.8964737Z"}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache @@ -408,9 +408,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:25:56 GMT + - Sat, 18 Jun 2022 07:03:45 GMT etag: - - '"7700b10c-0000-0d00-0000-627bf0b10000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -440,23 +440,23 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"b1c61af1-7cd3-4ac5-a1ee-d4ce4071bf4c*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Succeeded","startTime":"2022-05-11T17:21:53.8964737Z","endTime":"2022-05-11T17:26:21.985737Z","error":{},"properties":null}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Accepted","startTime":"2022-06-18T06:59:43.4257178Z"}' headers: cache-control: - no-cache content-length: - - '574' + - '504' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:26:26 GMT + - Sat, 18 Jun 2022 07:04:15 GMT etag: - - '"77001a19-0000-0d00-0000-627bf1bd0000"' + - '"1600ed65-0000-0d00-0000-62ad77df0000"' expires: - '-1' pragma: @@ -486,12 +486,58 @@ interactions: ParameterSetName: - -g -n -l --tags --skip-role-assignments User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview + response: + body: + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"f1151a57-9a50-47cf-a938-f18ffc9b0699*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Succeeded","startTime":"2022-06-18T06:59:43.4257178Z","endTime":"2022-06-18T07:04:33.0522401Z","error":{},"properties":null}' + headers: + cache-control: + - no-cache + content-length: + - '575' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 18 Jun 2022 07:04:46 GMT + etag: + - '"16007667-0000-0d00-0000-62ad79010000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - grafana create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l --tags --skip-role-assignments + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg?api-version=2021-09-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-11T17:21:51.6537717Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-11T17:21:51.6537717Z"},"identity":{"principalId":"b0590771-4338-4719-ac35-3260aecd2036","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-18T06:59:41.2727587Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-18T06:59:41.2727587Z"},"identity":{"principalId":"27802590-ff16-49e0-9fb9-0780ad74c1e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.5.1","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' headers: cache-control: - no-cache @@ -500,9 +546,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:26:27 GMT + - Sat, 18 Jun 2022 07:04:46 GMT etag: - - '"bd021417-0000-0d00-0000-627bf1bd0000"' + - '"04003da9-0000-0d00-0000-62ad79010000"' expires: - '-1' pragma: @@ -534,12 +580,12 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana?api-version=2021-09-01-preview response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-11T17:21:51.6537717Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-11T17:21:51.6537717Z"},"identity":{"principalId":"b0590771-4338-4719-ac35-3260aecd2036","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-18T06:59:41.2727587Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-18T06:59:41.2727587Z"},"identity":{"principalId":"27802590-ff16-49e0-9fb9-0780ad74c1e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.5.1","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}]}' headers: cache-control: - no-cache @@ -548,7 +594,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:26:29 GMT + - Sat, 18 Jun 2022 07:04:47 GMT expires: - '-1' pragma: @@ -560,12 +606,12 @@ interactions: x-content-type-options: - nosniff x-ms-original-request-ids: - - 55f4edee-966a-499b-a495-2de36c04ccb5 - - 21af00a0-112c-4525-915d-ed18c2a84d66 - - 81d2fdfa-2f6e-4f12-a8c4-22c780856bc9 - - 3cb855fa-95d2-49e4-a1c4-130cc4d79333 - - bac89d75-3f5d-4bf6-8c92-b91fb9d3227f - - 17ba4a96-cc27-4664-a439-9aa042301d6f + - ed03cbc7-d344-493e-8132-5912e48b9dbe + - 98e58769-5fca-4fec-8faf-35ece1edf587 + - c901e3b7-31ee-484c-aeea-3893374a336b + - d423d274-0941-4b4e-8442-1fb92b064068 + - 0a04b849-90a5-47d4-8d07-68abbfb647ec + - a80c17e7-1a91-41ef-abbc-16e4aa498ac5 status: code: 200 message: OK @@ -581,21 +627,21 @@ interactions: Connection: - keep-alive User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Dashboard/grafana?api-version=2021-09-01-preview response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test/providers/Microsoft.Dashboard/grafana/yugangwscus4","name":"yugangwscus4","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"southcentralus","systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-01T22:07:33.5452415Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-01T22:07:33.5452415Z"},"identity":{"principalId":"e58782a4-2e7d-4659-aba3-feb3726635be","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://yugangwscus4-atesagbsc2dqgydb.scus.grafana.azure.com","zoneRedundancy":"Enabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-11T17:21:51.6537717Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-11T17:21:51.6537717Z"},"identity":{"principalId":"b0590771-4338-4719-ac35-3260aecd2036","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test/providers/Microsoft.Dashboard/grafana/internalplugintest","name":"internalplugintest","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"centraluseuap","systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-04-28T00:37:18.1228461Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-28T00:37:18.1228461Z"},"identity":{"principalId":"aee1d662-89f2-4847-ba08-8b6c1c90c3b1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://internalplugintest-h3bjgvh9bmg4echm.cuse.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/workspaces/providers/Microsoft.Dashboard/grafana/yugangwscus","name":"yugangwscus","type":"microsoft.dashboard/grafana","sku":{"name":"Standard"},"location":"southcentralus","tags":{},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-18T19:27:40.5430715Z","lastModifiedBy":"ce34e7e5-485f-4d76-964f-b3d2b16d1e4f","lastModifiedByType":"Application","lastModifiedAt":"2022-06-16T00:57:22.6067806Z"},"identity":{"principalId":"fd7c4691-bccf-4f86-b690-f66dc7c72a1c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://yugangwscus-areycch9c2a9hba9.scus.grafana.azure.com","zoneRedundancy":"Enabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-18T06:59:41.2727587Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-18T06:59:41.2727587Z"},"identity":{"principalId":"27802590-ff16-49e0-9fb9-0780ad74c1e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.5.1","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/workspaces/providers/Microsoft.Dashboard/grafana/yugangwcuse","name":"yugangwcuse","type":"microsoft.dashboard/grafana","sku":{"name":"Standard"},"location":"centraluseuap","tags":{},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-09T06:02:11.8071669Z","lastModifiedBy":"ce34e7e5-485f-4d76-964f-b3d2b16d1e4f","lastModifiedByType":"Application","lastModifiedAt":"2022-06-13T19:31:52.9992557Z"},"identity":{"principalId":"15ed8107-c892-4927-91d0-c1f11a6aaca0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://yugangwcuse-c8hcerfydxd8cbhp.cuse.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}]}' headers: cache-control: - no-cache content-length: - - '2580' + - '2632' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:26:29 GMT + - Sat, 18 Jun 2022 07:04:48 GMT expires: - '-1' pragma: @@ -607,12 +653,12 @@ interactions: x-content-type-options: - nosniff x-ms-original-request-ids: - - 0de77ca4-ff30-4627-a015-a8feb925a4a3 - - afcc4f17-78d1-4724-be33-3e5184ba0a8f - - f4bac38d-64bd-4eea-ae66-62bba863b2ad - - a921cb92-ac36-4a31-9e43-80920a61c776 - - 66fe15b2-a50e-4cdf-8c63-0aacd7a8ce78 - - ea9ba47f-8cba-4021-a35a-4758bd66a990 + - 074981b4-7e8a-4f66-8b4c-ba76d254624a + - ee7ef045-3130-46bd-aedc-6d1125374bce + - 90db761f-6b52-45d6-bec5-80aeaefd5768 + - ea04d8fa-cb0a-434c-8f06-f472514a9dde + - 453af817-559a-425d-8c79-c3e6d5019287 + - aa0eae14-6206-4587-aeb5-488dafc78b72 status: code: 200 message: OK @@ -630,12 +676,12 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg?api-version=2021-09-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-11T17:21:51.6537717Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-11T17:21:51.6537717Z"},"identity":{"principalId":"b0590771-4338-4719-ac35-3260aecd2036","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-18T06:59:41.2727587Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-18T06:59:41.2727587Z"},"identity":{"principalId":"27802590-ff16-49e0-9fb9-0780ad74c1e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.5.1","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' headers: cache-control: - no-cache @@ -644,9 +690,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:26:30 GMT + - Sat, 18 Jun 2022 07:04:50 GMT etag: - - '"bd021417-0000-0d00-0000-627bf1bd0000"' + - '"04003da9-0000-0d00-0000-62ad79010000"' expires: - '-1' pragma: @@ -678,12 +724,12 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg?api-version=2021-09-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-11T17:21:51.6537717Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-11T17:21:51.6537717Z"},"identity":{"principalId":"b0590771-4338-4719-ac35-3260aecd2036","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","name":"clitestamg","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"westeurope","tags":{"foo":"doo"},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-18T06:59:41.2727587Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-18T06:59:41.2727587Z"},"identity":{"principalId":"27802590-ff16-49e0-9fb9-0780ad74c1e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.5.1","endpoint":"https://clitestamg-cchsamfze0fahxeu.weu.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}' headers: cache-control: - no-cache @@ -692,9 +738,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:26:31 GMT + - Sat, 18 Jun 2022 07:04:51 GMT etag: - - '"bd021417-0000-0d00-0000-627bf1bd0000"' + - '"04003da9-0000-0d00-0000-62ad79010000"' expires: - '-1' pragma: @@ -728,7 +774,7 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg?api-version=2021-09-01-preview response: @@ -736,9 +782,9 @@ interactions: string: 'null' headers: api-supported-versions: - - 2021-09-01-preview + - 2021-09-01-preview, 2022-05-01-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview cache-control: - no-cache content-length: @@ -746,13 +792,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:26:32 GMT + - Sat, 18 Jun 2022 07:04:51 GMT etag: - - '"bd02e117-0000-0d00-0000-627bf1c80000"' + - '"040068a9-0000-0d00-0000-62ad79140000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + - https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview pragma: - no-cache request-context: @@ -782,23 +828,191 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview + response: + body: + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' + headers: + cache-control: + - no-cache + content-length: + - '515' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 18 Jun 2022 07:05:21 GMT + etag: + - '"16009567-0000-0d00-0000-62ad791b0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - grafana delete + Connection: + - keep-alive + ParameterSetName: + - -g -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview + response: + body: + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' + headers: + cache-control: + - no-cache + content-length: + - '515' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 18 Jun 2022 07:05:52 GMT + etag: + - '"16009567-0000-0d00-0000-62ad791b0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - grafana delete + Connection: + - keep-alive + ParameterSetName: + - -g -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview + response: + body: + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' + headers: + cache-control: + - no-cache + content-length: + - '515' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 18 Jun 2022 07:06:22 GMT + etag: + - '"16009567-0000-0d00-0000-62ad791b0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - grafana delete + Connection: + - keep-alive + ParameterSetName: + - -g -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview + response: + body: + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' + headers: + cache-control: + - no-cache + content-length: + - '515' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 18 Jun 2022 07:06:52 GMT + etag: + - '"16009567-0000-0d00-0000-62ad791b0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - grafana delete + Connection: + - keep-alive + ParameterSetName: + - -g -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:27:02 GMT + - Sat, 18 Jun 2022 07:07:23 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -824,23 +1038,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:27:32 GMT + - Sat, 18 Jun 2022 07:07:53 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -866,23 +1080,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:28:02 GMT + - Sat, 18 Jun 2022 07:08:23 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -908,23 +1122,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:28:32 GMT + - Sat, 18 Jun 2022 07:08:52 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -950,23 +1164,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:29:03 GMT + - Sat, 18 Jun 2022 07:09:23 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -992,23 +1206,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:29:33 GMT + - Sat, 18 Jun 2022 07:09:54 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -1034,23 +1248,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:30:04 GMT + - Sat, 18 Jun 2022 07:10:24 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -1076,23 +1290,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:30:34 GMT + - Sat, 18 Jun 2022 07:10:54 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -1118,23 +1332,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:31:04 GMT + - Sat, 18 Jun 2022 07:11:25 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -1160,23 +1374,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:31:34 GMT + - Sat, 18 Jun 2022 07:11:55 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -1202,23 +1416,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-05-11T17:26:32.414668Z","error":{}}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Deleting","startTime":"2022-06-18T07:04:51.8631954Z","error":{}}' headers: cache-control: - no-cache content-length: - - '514' + - '515' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:32:04 GMT + - Sat, 18 Jun 2022 07:12:24 GMT etag: - - '"77005d19-0000-0d00-0000-627bf1ca0000"' + - '"16009567-0000-0d00-0000-62ad791b0000"' expires: - '-1' pragma: @@ -1244,23 +1458,23 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66?api-version=2021-09-01-preview + uri: https://management.azure.com/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B?api-version=2021-09-01-preview response: body: - string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","name":"3e1f657a-234a-4d61-a34d-55f2430adb6e*4409B6805C608D75E2644D0CA5D638D6906C2A16AE7490BBBDBCEBC304A20F66","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Succeeded","startTime":"2022-05-11T17:26:32.414668Z","endTime":"2022-05-11T17:32:08.2119502Z","error":{},"properties":null}' + string: '{"id":"/providers/Microsoft.Dashboard/locations/WESTEUROPE/operationStatuses/c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","name":"c3e85ac7-d31f-4cad-a53b-4a9d6e5fe168*99BC7D3E160136FE98ADF05059CD29659F0D928FB71398626F5471B184ED464B","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_amg000001/providers/Microsoft.Dashboard/grafana/clitestamg","status":"Succeeded","startTime":"2022-06-18T07:04:51.8631954Z","endTime":"2022-06-18T07:12:35.3311446Z","error":{},"properties":null}' headers: cache-control: - no-cache content-length: - - '574' + - '575' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:32:35 GMT + - Sat, 18 Jun 2022 07:12:55 GMT etag: - - '"7700192f-0000-0d00-0000-627bf3180000"' + - '"16001e6a-0000-0d00-0000-62ad7ae30000"' expires: - '-1' pragma: @@ -1290,12 +1504,12 @@ interactions: ParameterSetName: - -g -n --yes User-Agent: - - python/3.8.8 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.33.0 (MSI) + - python/3.8.8 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 accept-language: - en-US method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments?$filter=principalId%20eq%20%27b0590771-4338-4719-ac35-3260aecd2036%27&api-version=2020-04-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments?$filter=principalId%20eq%20%2727802590-ff16-49e0-9fb9-0780ad74c1e0%27&api-version=2020-04-01-preview response: body: string: '{"value":[]}' @@ -1307,7 +1521,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:32:34 GMT + - Sat, 18 Jun 2022 07:12:55 GMT expires: - '-1' pragma: @@ -1337,21 +1551,21 @@ interactions: Connection: - keep-alive User-Agent: - - AZURECLI/2.33.0 (MSI) azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-dashboard/1.0.0b1 Python/3.8.8 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Dashboard/grafana?api-version=2021-09-01-preview response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test/providers/Microsoft.Dashboard/grafana/yugangwscus4","name":"yugangwscus4","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"southcentralus","systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-01T22:07:33.5452415Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-01T22:07:33.5452415Z"},"identity":{"principalId":"e58782a4-2e7d-4659-aba3-feb3726635be","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://yugangwscus4-atesagbsc2dqgydb.scus.grafana.azure.com","zoneRedundancy":"Enabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test/providers/Microsoft.Dashboard/grafana/internalplugintest","name":"internalplugintest","type":"microsoft.dashboard/grafana","sku":{"name":"standard"},"location":"centraluseuap","systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-04-28T00:37:18.1228461Z","lastModifiedBy":"yugangw@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-28T00:37:18.1228461Z"},"identity":{"principalId":"aee1d662-89f2-4847-ba08-8b6c1c90c3b1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://internalplugintest-h3bjgvh9bmg4echm.cuse.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/workspaces/providers/Microsoft.Dashboard/grafana/yugangwscus","name":"yugangwscus","type":"microsoft.dashboard/grafana","sku":{"name":"Standard"},"location":"southcentralus","tags":{},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-05-18T19:27:40.5430715Z","lastModifiedBy":"ce34e7e5-485f-4d76-964f-b3d2b16d1e4f","lastModifiedByType":"Application","lastModifiedAt":"2022-06-16T00:57:22.6067806Z"},"identity":{"principalId":"fd7c4691-bccf-4f86-b690-f66dc7c72a1c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://yugangwscus-areycch9c2a9hba9.scus.grafana.azure.com","zoneRedundancy":"Enabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/workspaces/providers/Microsoft.Dashboard/grafana/yugangwcuse","name":"yugangwcuse","type":"microsoft.dashboard/grafana","sku":{"name":"Standard"},"location":"centraluseuap","tags":{},"systemData":{"createdBy":"yugangw@microsoft.com","createdByType":"User","createdAt":"2022-06-09T06:02:11.8071669Z","lastModifiedBy":"ce34e7e5-485f-4d76-964f-b3d2b16d1e4f","lastModifiedByType":"Application","lastModifiedAt":"2022-06-13T19:31:52.9992557Z"},"identity":{"principalId":"15ed8107-c892-4927-91d0-c1f11a6aaca0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"provisioningState":"Succeeded","grafanaVersion":"8.4.5","endpoint":"https://yugangwcuse-c8hcerfydxd8cbhp.cuse.grafana.azure.com","zoneRedundancy":"Disabled","autoGeneratedDomainNameLabelScope":"TenantReuse"}}]}' headers: cache-control: - no-cache content-length: - - '1713' + - '1765' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 17:32:36 GMT + - Sat, 18 Jun 2022 07:12:56 GMT expires: - '-1' pragma: @@ -1363,12 +1577,12 @@ interactions: x-content-type-options: - nosniff x-ms-original-request-ids: - - 7466a028-8470-4c73-8466-aaca85db12dc - - 3b75b131-4012-4df2-b84b-7c7e2b05a0d6 - - 2682a42e-ea1e-43b7-bdeb-a178b726e221 - - cca06fa9-aeaf-479e-aa76-97d54e5578c2 - - 45e60240-7cdf-4fcf-8223-9713b11dc71e - - a53ac0d8-b752-4107-a4d6-743e925a69b7 + - ededaddf-5976-44d9-88b1-8527a7bc9756 + - bd57ec2b-7b69-47bc-9d7c-a3bfa3361a13 + - fdc5f355-ca01-45c4-9157-60c9a5b1821f + - e91ee686-f04b-4634-ba9a-66bdc1c16d06 + - 7cff86e3-7279-4296-a990-d5a262c45367 + - 5dd672ff-c007-4d57-984a-d99e30d1621b status: code: 200 message: OK diff --git a/src/amg/setup.py b/src/amg/setup.py index 8d6ec630136..29644a66a12 100644 --- a/src/amg/setup.py +++ b/src/amg/setup.py @@ -16,7 +16,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '0.1.1' +VERSION = '0.1.2' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers diff --git a/src/appservice-kube/HISTORY.rst b/src/appservice-kube/HISTORY.rst index a21fda469a6..9638846a9f0 100644 --- a/src/appservice-kube/HISTORY.rst +++ b/src/appservice-kube/HISTORY.rst @@ -3,14 +3,18 @@ Release History =============== +0.1.7 +++++++ +* Allow creating Azure Arc-hosted Function Apps without storage accounts + 0.1.6 - ++++++ - * Fix TypeError on 'az webapp create' +++++++ +* Fix TypeError on 'az webapp create' 0.1.5 - ++++++ - * SSL bind bug fix - * Fix compatibility issue with CLI version 2.34.1 +++++++ +* SSL bind bug fix +* Fix compatibility issue with CLI version 2.34.1 0.1.4 ++++++ diff --git a/src/appservice-kube/azext_appservice_kube/_params.py b/src/appservice-kube/azext_appservice_kube/_params.py index fc1ecf8368b..e8c3295c39c 100644 --- a/src/appservice-kube/azext_appservice_kube/_params.py +++ b/src/appservice-kube/azext_appservice_kube/_params.py @@ -89,7 +89,7 @@ def load_arguments(self, _): c.argument('new_app_name', options_list=['--name', '-n'], help='name of the new function app') c.argument('custom_location', help="Name or ID of the custom location. Use an ID for a custom location in a different resource group from the app") c.argument('storage_account', options_list=['--storage-account', '-s'], - help='Provide a string value of a Storage Account in the provided Resource Group. Or Resource ID of a Storage Account in a different Resource Group') + help='Provide a string value of a Storage Account in the provided Resource Group. Or Resource ID of a Storage Account in a different Resource Group. Required for non-kubernetes function apps') c.argument('consumption_plan_location', options_list=['--consumption-plan-location', '-c'], help="Geographic location where Function App will be hosted. Use `az functionapp list-consumption-locations` to view available locations.") c.argument('functions_version', help='The functions app version. Use "az functionapp list-runtimes" to check compatibility with runtimes and runtime versions', arg_type=get_enum_type(FUNCTIONS_VERSIONS)) diff --git a/src/appservice-kube/azext_appservice_kube/custom.py b/src/appservice-kube/azext_appservice_kube/custom.py index c154a0cb09f..20ddfa64bde 100644 --- a/src/appservice-kube/azext_appservice_kube/custom.py +++ b/src/appservice-kube/azext_appservice_kube/custom.py @@ -1007,7 +1007,7 @@ def _is_function_kube(custom_location, plan_info, SkuDescription): isinstance(plan_info.sku, SkuDescription) and plan_info.sku.name.upper() == KUBE_DEFAULT_SKU)) -def create_functionapp(cmd, resource_group_name, name, storage_account, plan=None, +def create_functionapp(cmd, resource_group_name, name, storage_account=None, plan=None, os_type=None, functions_version=None, runtime=None, runtime_version=None, consumption_plan_location=None, app_insights=None, app_insights_key=None, disable_app_insights=None, deployment_source_url=None, @@ -1101,6 +1101,8 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non raise ArgumentUsageError('Must specify --runtime to use --runtime-version') is_kube = _is_function_kube(custom_location, plan_info, SkuDescription) + if not storage_account and not is_kube: + raise ValidationError("--storage-account required for non-kubernetes function apps") runtime_helper = _FunctionAppStackRuntimeHelper(cmd, linux=is_linux, windows=(not is_linux)) matched_runtime = runtime_helper.resolve("dotnet" if not runtime else runtime, @@ -1116,7 +1118,9 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non site_config_dict = matched_runtime.site_config_dict app_settings_dict = matched_runtime.app_settings_dict - con_string = _validate_and_get_connection_string(cmd.cli_ctx, resource_group_name, storage_account) + con_string = None + if storage_account: + con_string = _validate_and_get_connection_string(cmd.cli_ctx, resource_group_name, storage_account) if is_kube: functionapp_def.enable_additional_properties_sending() @@ -1194,7 +1198,8 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non site_config.app_settings.append(NameValuePair(name='FUNCTIONS_EXTENSION_VERSION', value=_get_extension_version_functionapp(functions_version))) - site_config.app_settings.append(NameValuePair(name='AzureWebJobsStorage', value=con_string)) + if con_string: + site_config.app_settings.append(NameValuePair(name='AzureWebJobsStorage', value=con_string)) # If plan is not consumption or elastic premium, we need to set always on if consumption_plan_location is None and not is_plan_elastic_premium(cmd, plan_info): @@ -1202,8 +1207,9 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non # If plan is elastic premium or consumption, we need these app settings if is_plan_elastic_premium(cmd, plan_info) or consumption_plan_location is not None: - site_config.app_settings.append(NameValuePair(name='WEBSITE_CONTENTAZUREFILECONNECTIONSTRING', - value=con_string)) + if con_string: + site_config.app_settings.append(NameValuePair(name='WEBSITE_CONTENTAZUREFILECONNECTIONSTRING', + value=con_string)) site_config.app_settings.append(NameValuePair(name='WEBSITE_CONTENTSHARE', value=_get_content_share_name(name))) create_app_insights = False @@ -1217,7 +1223,8 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non value=instrumentation_key)) elif disable_app_insights or not matched_runtime.app_insights: # set up dashboard if no app insights - site_config.app_settings.append(NameValuePair(name='AzureWebJobsDashboard', value=con_string)) + if con_string: + site_config.app_settings.append(NameValuePair(name='AzureWebJobsDashboard', value=con_string)) elif not disable_app_insights and matched_runtime.app_insights: create_app_insights = True @@ -1238,8 +1245,9 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non except Exception: # pylint: disable=broad-except logger.warning('Error while trying to create and configure an Application Insights for the Function App. ' 'Please use the Azure Portal to create and configure the Application Insights, if needed.') - update_app_settings(cmd, functionapp.resource_group, functionapp.name, - ['AzureWebJobsDashboard={}'.format(con_string)]) + if con_string: + update_app_settings(cmd, functionapp.resource_group, functionapp.name, + ['AzureWebJobsDashboard={}'.format(con_string)]) if deployment_container_image_name: update_container_settings_functionapp(cmd, resource_group_name, name, docker_registry_server_url, diff --git a/src/appservice-kube/azext_appservice_kube/tests/latest/recordings/test_linux_webapp_quick_create_kube.yaml b/src/appservice-kube/azext_appservice_kube/tests/latest/recordings/test_linux_webapp_quick_create_kube.yaml deleted file mode 100644 index d47cd4688c2..00000000000 --- a/src/appservice-kube/azext_appservice_kube/tests/latest/recordings/test_linux_webapp_quick_create_kube.yaml +++ /dev/null @@ -1,1498 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - appservice plan create - Connection: - - keep-alive - ParameterSetName: - - -g -n --is-linux - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"canadacentral","tags":{"product":"azurecli","cause":"automation","date":"2022-03-07T19:51:32Z"},"properties":{"provisioningState":"Succeeded"}}' - headers: - cache-control: - - no-cache - content-length: - - '317' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 07 Mar 2022 19:51:39 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"name": "plan-quick-linux000003", "type": "Microsoft.Web/serverfarms", - "location": "canadacentral", "properties": {"skuName": "B1", "needLinuxWorkers": - true, "capacity": 1}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - appservice plan create - Connection: - - keep-alive - Content-Length: - - '174' - Content-Type: - - application/json - ParameterSetName: - - -g -n --is-linux - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/validate?api-version=2021-03-01 - response: - body: - string: '{"status":"Success","error":null}' - headers: - cache-control: - - no-cache - content-length: - - '33' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:51:40 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - appservice plan create - Connection: - - keep-alive - ParameterSetName: - - -g -n --is-linux - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"canadacentral","tags":{"product":"azurecli","cause":"automation","date":"2022-03-07T19:51:32Z"},"properties":{"provisioningState":"Succeeded"}}' - headers: - cache-control: - - no-cache - content-length: - - '317' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 07 Mar 2022 19:51:40 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"location": "canadacentral", "sku": {"name": "B1", "tier": "BASIC", "capacity": - 1}, "properties": {"perSiteScaling": false, "reserved": true, "isXenon": false, - "zoneRedundant": false}, "type": "Microsoft.Web/serverfarms"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - appservice plan create - Connection: - - keep-alive - Content-Length: - - '222' - Content-Type: - - application/json - ParameterSetName: - - -g -n --is-linux - User-Agent: - - python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) AZURECLI/2.34.1 - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003?api-version=2020-12-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","name":"plan-quick-linux000003","type":"Microsoft.Web/serverfarms","kind":"linux","location":"canadacentral","properties":{"serverFarmId":36801,"name":"plan-quick-linux000003","sku":{"name":"B1","tier":"Basic","size":"B1","family":"B","capacity":1},"workerSize":"Default","workerSizeId":0,"workerTierName":null,"numberOfWorkers":1,"currentWorkerSize":"Default","currentWorkerSizeId":0,"currentNumberOfWorkers":1,"status":"Ready","webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","subscription":"2edc29f4-b81f-494b-a624-cc619903b837","adminSiteName":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"maximumNumberOfWorkers":0,"planName":"VirtualDedicatedPlan","adminRuntimeSiteName":null,"computeMode":"Dedicated","siteMode":null,"geoRegion":"Canada - Central","perSiteScaling":false,"elasticScaleEnabled":false,"maximumElasticWorkerCount":1,"numberOfSites":0,"hostingEnvironmentId":null,"isSpot":false,"spotExpirationTime":null,"freeOfferExpirationTime":"2022-04-06T19:51:44.1333333","tags":null,"kind":"linux","resourceGroup":"clitest.rg000001","reserved":true,"isXenon":false,"hyperV":false,"mdmId":"waws-prod-yt1-035_36801","targetWorkerCount":0,"targetWorkerSizeId":0,"provisioningState":"Succeeded","webSiteId":null,"existingServerFarmIds":null,"kubeEnvironmentProfile":null,"zoneRedundant":false},"sku":{"name":"B1","tier":"Basic","size":"B1","family":"B","capacity":1}}' - headers: - cache-control: - - no-cache - content-length: - - '1548' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:51:54 GMT - etag: - - '"1D8325CCB732F95"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","name":"plan-quick-linux000003","type":"Microsoft.Web/serverfarms","kind":"linux","location":"Canada - Central","properties":{"serverFarmId":36801,"name":"plan-quick-linux000003","workerSize":"Default","workerSizeId":0,"workerTierName":null,"numberOfWorkers":1,"currentWorkerSize":"Default","currentWorkerSizeId":0,"currentNumberOfWorkers":1,"status":"Ready","webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","subscription":"2edc29f4-b81f-494b-a624-cc619903b837","adminSiteName":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"maximumNumberOfWorkers":3,"planName":"VirtualDedicatedPlan","adminRuntimeSiteName":null,"computeMode":"Dedicated","siteMode":null,"geoRegion":"Canada - Central","perSiteScaling":false,"elasticScaleEnabled":false,"maximumElasticWorkerCount":1,"numberOfSites":0,"hostingEnvironmentId":null,"isSpot":false,"spotExpirationTime":null,"freeOfferExpirationTime":"2022-04-06T19:51:44.1333333","tags":null,"kind":"linux","resourceGroup":"clitest.rg000001","reserved":true,"isXenon":false,"hyperV":false,"mdmId":"waws-prod-yt1-035_36801","targetWorkerCount":0,"targetWorkerSizeId":0,"provisioningState":"Succeeded","webSiteId":null,"existingServerFarmIds":null,"kubeEnvironmentProfile":null,"zoneRedundant":false},"sku":{"name":"B1","tier":"Basic","size":"B1","family":"B","capacity":1}}' - headers: - cache-control: - - no-cache - content-length: - - '1476' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:51:56 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"name": "webapp-quick-linux000002", "type": "Microsoft.Web/sites", "location": - "Canada Central", "properties": {"serverFarmId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '275' - Content-Type: - - application/json - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/validate?api-version=2021-03-01 - response: - body: - string: '{"status":"Success","error":null}' - headers: - cache-control: - - no-cache - content-length: - - '33' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:51:56 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"name": "webapp-quick-linux000002", "type": "Site"}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '52' - Content-Type: - - application/json - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Web/checknameavailability?api-version=2021-03-01 - response: - body: - string: '{"nameAvailable":true,"reason":"","message":""}' - headers: - cache-control: - - no-cache - content-length: - - '47' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:51:57 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - ParameterSetName: - - -g -n --plan -i - User-Agent: - - python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) AZURECLI/2.34.1 - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003?api-version=2020-12-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","name":"plan-quick-linux000003","type":"Microsoft.Web/serverfarms","kind":"linux","location":"Canada - Central","properties":{"serverFarmId":36801,"name":"plan-quick-linux000003","workerSize":"Default","workerSizeId":0,"workerTierName":null,"numberOfWorkers":1,"currentWorkerSize":"Default","currentWorkerSizeId":0,"currentNumberOfWorkers":1,"status":"Ready","webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","subscription":"2edc29f4-b81f-494b-a624-cc619903b837","adminSiteName":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"maximumNumberOfWorkers":3,"planName":"VirtualDedicatedPlan","adminRuntimeSiteName":null,"computeMode":"Dedicated","siteMode":null,"geoRegion":"Canada - Central","perSiteScaling":false,"elasticScaleEnabled":false,"maximumElasticWorkerCount":1,"numberOfSites":0,"hostingEnvironmentId":null,"isSpot":false,"spotExpirationTime":null,"freeOfferExpirationTime":"2022-04-06T19:51:44.1333333","tags":null,"kind":"linux","resourceGroup":"clitest.rg000001","reserved":true,"isXenon":false,"hyperV":false,"mdmId":"waws-prod-yt1-035_36801","targetWorkerCount":0,"targetWorkerSizeId":0,"provisioningState":"Succeeded","webSiteId":null,"existingServerFarmIds":null,"kubeEnvironmentProfile":null,"zoneRedundant":false},"sku":{"name":"B1","tier":"Basic","size":"B1","family":"B","capacity":1}}' - headers: - cache-control: - - no-cache - content-length: - - '1476' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:51:57 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"location": "Canada Central", "properties": {"serverFarmId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003", - "reserved": false, "isXenon": false, "hyperV": false, "siteConfig": {"netFrameworkVersion": - "v4.6", "linuxFxVersion": "DOCKER|patle/ruby-hello", "appSettings": [{"name": - "WEBSITES_ENABLE_APP_SERVICE_STORAGE", "value": "false"}], "localMySqlEnabled": - false, "http20Enabled": true}, "scmSiteAlsoStopped": false, "httpsOnly": false}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '538' - Content-Type: - - application/json - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","kind":"app,linux,container","location":"Canada - Central","properties":{"name":"webapp-quick-linux000002","state":"Running","hostNames":["webapp-quick-linux000002.azurewebsites.net"],"webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","selfLink":"https://waws-prod-yt1-035.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CanadaCentralwebspace-Linux/sites/webapp-quick-linux000002","repositorySiteName":"webapp-quick-linux000002","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["webapp-quick-linux000002.azurewebsites.net","webapp-quick-linux000002.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":"DOCKER|patle/ruby-hello"},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"webapp-quick-linux000002.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"webapp-quick-linux000002.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","reserved":true,"isXenon":false,"hyperV":false,"lastModifiedTimeUtc":"2022-03-07T19:52:04.0233333","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":{"numberOfWorkers":1,"defaultDocuments":null,"netFrameworkVersion":null,"phpVersion":null,"pythonVersion":null,"nodeVersion":null,"powerShellVersion":null,"linuxFxVersion":"","windowsFxVersion":null,"requestTracingEnabled":null,"remoteDebuggingEnabled":null,"remoteDebuggingVersion":null,"httpLoggingEnabled":null,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":null,"detailedErrorLoggingEnabled":null,"publishingUsername":null,"publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":null,"use32BitWorkerProcess":null,"webSocketsEnabled":null,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":null,"managedPipelineMode":null,"virtualApplications":null,"winAuthAdminState":null,"winAuthTenantState":null,"customAppPoolIdentityAdminState":null,"customAppPoolIdentityTenantState":null,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":null,"routingRules":null,"experiments":null,"limits":null,"autoHealEnabled":null,"autoHealRules":null,"tracingOptions":null,"vnetName":null,"vnetRouteAllEnabled":null,"vnetPrivatePortsCount":null,"publicNetworkAccess":null,"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":null,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictionsUseMain":null,"http20Enabled":false,"minTlsVersion":null,"scmMinTlsVersion":null,"ftpsState":null,"preWarmedInstanceCount":null,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":null,"functionsRuntimeScaleMonitoringEnabled":null,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":null,"http20ProxyFlag":null,"sitePort":null,"antivirusScanEnabled":null},"deploymentId":"webapp-quick-linux000002","slotName":null,"trafficManagerHostNames":null,"sku":"Basic","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"clientCertMode":"Required","clientCertExclusionPaths":null,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","kind":"app,linux,container","inboundIpAddress":"52.228.84.37","possibleInboundIpAddresses":"52.228.84.37","ftpUsername":"webapp-quick-linux000002\\$webapp-quick-linux000002","ftpsHostName":"ftps://waws-prod-yt1-035.ftp.azurewebsites.windows.net/site/wwwroot","outboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,52.228.84.37","possibleOutboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,20.200.64.60,20.200.64.61,20.200.64.62,20.200.64.63,20.200.64.92,20.200.64.93,20.200.64.94,20.200.64.95,20.200.64.200,20.200.64.201,20.200.64.202,20.200.64.203,20.48.129.103,20.48.134.116,20.48.134.153,20.48.134.171,20.48.134.172,20.48.135.82,52.228.84.37","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-yt1-035","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"webapp-quick-linux000002.azurewebsites.net","slotSwapStatus":null,"httpsOnly":false,"redundancyMode":"None","inProgressOperationId":null,"geoDistributions":null,"privateEndpointConnections":null,"buildVersion":null,"targetBuildVersion":null,"migrationState":null,"eligibleLogCategories":"AppServiceAppLogs,AppServiceAuditLogs,AppServiceConsoleLogs,AppServiceHTTPLogs,AppServiceIPSecAuditLogs,AppServicePlatformLogs,ScanLogs","storageAccountRequired":false,"virtualNetworkSubnetId":null,"keyVaultReferenceIdentity":"SystemAssigned"}}' - headers: - cache-control: - - no-cache - content-length: - - '6338' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:20 GMT - etag: - - '"1D8325CD2337F80"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '499' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings/list?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings","name":"appsettings","type":"Microsoft.Web/sites/config","location":"Canada - Central","properties":{"WEBSITES_ENABLE_APP_SERVICE_STORAGE":"false"}}' - headers: - cache-control: - - no-cache - content-length: - - '312' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:20 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/slotConfigNames?api-version=2021-03-01 - response: - body: - string: '{"id":null,"name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","location":"Canada - Central","properties":{"connectionStringNames":null,"appSettingNames":null,"azureStorageConfigNames":null}}' - headers: - cache-control: - - no-cache - content-length: - - '200' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:21 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","kind":"app,linux,container","location":"Canada - Central","properties":{"name":"webapp-quick-linux000002","state":"Running","hostNames":["webapp-quick-linux000002.azurewebsites.net"],"webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","selfLink":"https://waws-prod-yt1-035.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CanadaCentralwebspace-Linux/sites/webapp-quick-linux000002","repositorySiteName":"webapp-quick-linux000002","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["webapp-quick-linux000002.azurewebsites.net","webapp-quick-linux000002.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":"DOCKER|patle/ruby-hello"},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"webapp-quick-linux000002.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"webapp-quick-linux000002.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","reserved":true,"isXenon":false,"hyperV":false,"lastModifiedTimeUtc":"2022-03-07T19:52:05.24","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":{"numberOfWorkers":1,"defaultDocuments":null,"netFrameworkVersion":null,"phpVersion":null,"pythonVersion":null,"nodeVersion":null,"powerShellVersion":null,"linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":null,"remoteDebuggingEnabled":null,"remoteDebuggingVersion":null,"httpLoggingEnabled":null,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":null,"detailedErrorLoggingEnabled":null,"publishingUsername":null,"publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":null,"use32BitWorkerProcess":null,"webSocketsEnabled":null,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":null,"managedPipelineMode":null,"virtualApplications":null,"winAuthAdminState":null,"winAuthTenantState":null,"customAppPoolIdentityAdminState":null,"customAppPoolIdentityTenantState":null,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":null,"routingRules":null,"experiments":null,"limits":null,"autoHealEnabled":null,"autoHealRules":null,"tracingOptions":null,"vnetName":null,"vnetRouteAllEnabled":null,"vnetPrivatePortsCount":null,"publicNetworkAccess":null,"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":null,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":null,"scmIpSecurityRestrictions":null,"scmIpSecurityRestrictionsUseMain":null,"http20Enabled":true,"minTlsVersion":null,"scmMinTlsVersion":null,"ftpsState":null,"preWarmedInstanceCount":null,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":null,"functionsRuntimeScaleMonitoringEnabled":null,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":null,"http20ProxyFlag":null,"sitePort":null,"antivirusScanEnabled":null},"deploymentId":"webapp-quick-linux000002","slotName":null,"trafficManagerHostNames":null,"sku":"Basic","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"clientCertMode":"Required","clientCertExclusionPaths":null,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","kind":"app,linux,container","inboundIpAddress":"52.228.84.37","possibleInboundIpAddresses":"52.228.84.37","ftpUsername":"webapp-quick-linux000002\\$webapp-quick-linux000002","ftpsHostName":"ftps://waws-prod-yt1-035.ftp.azurewebsites.windows.net/site/wwwroot","outboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,52.228.84.37","possibleOutboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,20.200.64.60,20.200.64.61,20.200.64.62,20.200.64.63,20.200.64.92,20.200.64.93,20.200.64.94,20.200.64.95,20.200.64.200,20.200.64.201,20.200.64.202,20.200.64.203,20.48.129.103,20.48.134.116,20.48.134.153,20.48.134.171,20.48.134.172,20.48.135.82,52.228.84.37","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-yt1-035","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"webapp-quick-linux000002.azurewebsites.net","slotSwapStatus":null,"httpsOnly":false,"redundancyMode":"None","inProgressOperationId":null,"geoDistributions":null,"privateEndpointConnections":[],"buildVersion":null,"targetBuildVersion":null,"migrationState":null,"eligibleLogCategories":"AppServiceAppLogs,AppServiceAuditLogs,AppServiceConsoleLogs,AppServiceHTTPLogs,AppServiceIPSecAuditLogs,AppServicePlatformLogs,ScanLogs","storageAccountRequired":false,"virtualNetworkSubnetId":null,"keyVaultReferenceIdentity":"SystemAssigned"}}' - headers: - cache-control: - - no-cache - content-length: - - '6155' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:22 GMT - etag: - - '"1D8325CD2337F80"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/web?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/web","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites/config","location":"Canada - Central","properties":{"numberOfWorkers":1,"defaultDocuments":["Default.htm","Default.html","Default.asp","index.htm","index.html","iisstart.htm","default.aspx","index.php","hostingstart.html"],"netFrameworkVersion":"v4.0","phpVersion":"","pythonVersion":"","nodeVersion":"","powerShellVersion":"","linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":false,"remoteDebuggingEnabled":false,"remoteDebuggingVersion":null,"httpLoggingEnabled":false,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":35,"detailedErrorLoggingEnabled":false,"publishingUsername":"$webapp-quick-linux000002","publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":"None","use32BitWorkerProcess":true,"webSocketsEnabled":false,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":"","managedPipelineMode":"Integrated","virtualApplications":[{"virtualPath":"/","physicalPath":"site\\wwwroot","preloadEnabled":false,"virtualDirectories":null}],"winAuthAdminState":0,"winAuthTenantState":0,"customAppPoolIdentityAdminState":false,"customAppPoolIdentityTenantState":false,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":"LeastRequests","routingRules":[],"experiments":{"rampUpRules":[]},"limits":null,"autoHealEnabled":false,"autoHealRules":null,"tracingOptions":null,"vnetName":"","vnetRouteAllEnabled":false,"vnetPrivatePortsCount":0,"publicNetworkAccess":null,"siteAuthEnabled":false,"siteAuthSettings":{"enabled":null,"unauthenticatedClientAction":null,"tokenStoreEnabled":null,"allowedExternalRedirectUrls":null,"defaultProvider":null,"clientId":null,"clientSecret":null,"clientSecretSettingName":null,"clientSecretCertificateThumbprint":null,"issuer":null,"allowedAudiences":null,"additionalLoginParams":null,"isAadAutoProvisioned":false,"aadClaimsAuthorization":null,"googleClientId":null,"googleClientSecret":null,"googleClientSecretSettingName":null,"googleOAuthScopes":null,"facebookAppId":null,"facebookAppSecret":null,"facebookAppSecretSettingName":null,"facebookOAuthScopes":null,"gitHubClientId":null,"gitHubClientSecret":null,"gitHubClientSecretSettingName":null,"gitHubOAuthScopes":null,"twitterConsumerKey":null,"twitterConsumerSecret":null,"twitterConsumerSecretSettingName":null,"microsoftAccountClientId":null,"microsoftAccountClientSecret":null,"microsoftAccountClientSecretSettingName":null,"microsoftAccountOAuthScopes":null,"configVersion":null},"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":false,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictionsUseMain":false,"http20Enabled":true,"minTlsVersion":"1.2","scmMinTlsVersion":"1.0","ftpsState":"AllAllowed","preWarmedInstanceCount":0,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":false,"functionsRuntimeScaleMonitoringEnabled":false,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":{},"http20ProxyFlag":0,"sitePort":null,"antivirusScanEnabled":false}}' - headers: - cache-control: - - no-cache - content-length: - - '3784' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:23 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings/list?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings","name":"appsettings","type":"Microsoft.Web/sites/config","location":"Canada - Central","properties":{"WEBSITES_ENABLE_APP_SERVICE_STORAGE":"false"}}' - headers: - cache-control: - - no-cache - content-length: - - '312' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:24 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"WEBSITES_ENABLE_APP_SERVICE_STORAGE": "false"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '64' - Content-Type: - - application/json - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings","name":"appsettings","type":"Microsoft.Web/sites/config","location":"Canada - Central","properties":{"WEBSITES_ENABLE_APP_SERVICE_STORAGE":"false"}}' - headers: - cache-control: - - no-cache - content-length: - - '312' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:26 GMT - etag: - - '"1D8325CDED8E78B"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1197' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"numberOfWorkers": 1, "defaultDocuments": ["Default.htm", - "Default.html", "Default.asp", "index.htm", "index.html", "iisstart.htm", "default.aspx", - "index.php", "hostingstart.html"], "netFrameworkVersion": "v4.0", "phpVersion": - "", "pythonVersion": "", "nodeVersion": "", "powerShellVersion": "", "linuxFxVersion": - "DOCKER|patle/ruby-hello", "requestTracingEnabled": false, "remoteDebuggingEnabled": - false, "httpLoggingEnabled": false, "acrUseManagedIdentityCreds": false, "logsDirectorySizeLimit": - 35, "detailedErrorLoggingEnabled": false, "publishingUsername": "$webapp-quick-linux000002", - "scmType": "None", "use32BitWorkerProcess": true, "webSocketsEnabled": false, - "alwaysOn": false, "appCommandLine": "", "managedPipelineMode": "Integrated", - "virtualApplications": [{"virtualPath": "/", "physicalPath": "site\\wwwroot", - "preloadEnabled": false}], "loadBalancing": "LeastRequests", "experiments": - {"rampUpRules": []}, "autoHealEnabled": false, "vnetName": "", "vnetRouteAllEnabled": - false, "vnetPrivatePortsCount": 0, "localMySqlEnabled": false, "scmIpSecurityRestrictionsUseMain": - false, "http20Enabled": true, "minTlsVersion": "1.2", "scmMinTlsVersion": "1.0", - "ftpsState": "AllAllowed", "preWarmedInstanceCount": 0, "functionAppScaleLimit": - 0, "functionsRuntimeScaleMonitoringEnabled": false, "minimumElasticInstanceCount": - 0, "azureStorageAccounts": {}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '1379' - Content-Type: - - application/json - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: PATCH - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/web?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","location":"Canada - Central","properties":{"numberOfWorkers":1,"defaultDocuments":["Default.htm","Default.html","Default.asp","index.htm","index.html","iisstart.htm","default.aspx","index.php","hostingstart.html"],"netFrameworkVersion":"v4.0","phpVersion":"","pythonVersion":"","nodeVersion":"","powerShellVersion":"","linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":false,"remoteDebuggingEnabled":false,"remoteDebuggingVersion":"VS2019","httpLoggingEnabled":false,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":35,"detailedErrorLoggingEnabled":false,"publishingUsername":"$webapp-quick-linux000002","publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":"None","use32BitWorkerProcess":true,"webSocketsEnabled":false,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":"","managedPipelineMode":"Integrated","virtualApplications":[{"virtualPath":"/","physicalPath":"site\\wwwroot","preloadEnabled":false,"virtualDirectories":null}],"winAuthAdminState":0,"winAuthTenantState":0,"customAppPoolIdentityAdminState":false,"customAppPoolIdentityTenantState":false,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":"LeastRequests","routingRules":[],"experiments":{"rampUpRules":[]},"limits":null,"autoHealEnabled":false,"autoHealRules":null,"tracingOptions":null,"vnetName":"","vnetRouteAllEnabled":false,"vnetPrivatePortsCount":0,"publicNetworkAccess":null,"siteAuthEnabled":false,"siteAuthSettings":{"enabled":null,"unauthenticatedClientAction":null,"tokenStoreEnabled":null,"allowedExternalRedirectUrls":null,"defaultProvider":null,"clientId":null,"clientSecret":null,"clientSecretSettingName":null,"clientSecretCertificateThumbprint":null,"issuer":null,"allowedAudiences":null,"additionalLoginParams":null,"isAadAutoProvisioned":false,"aadClaimsAuthorization":null,"googleClientId":null,"googleClientSecret":null,"googleClientSecretSettingName":null,"googleOAuthScopes":null,"facebookAppId":null,"facebookAppSecret":null,"facebookAppSecretSettingName":null,"facebookOAuthScopes":null,"gitHubClientId":null,"gitHubClientSecret":null,"gitHubClientSecretSettingName":null,"gitHubOAuthScopes":null,"twitterConsumerKey":null,"twitterConsumerSecret":null,"twitterConsumerSecretSettingName":null,"microsoftAccountClientId":null,"microsoftAccountClientSecret":null,"microsoftAccountClientSecretSettingName":null,"microsoftAccountOAuthScopes":null,"configVersion":null},"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":false,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictionsUseMain":false,"http20Enabled":true,"minTlsVersion":"1.2","scmMinTlsVersion":"1.0","ftpsState":"AllAllowed","preWarmedInstanceCount":0,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":false,"functionsRuntimeScaleMonitoringEnabled":false,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":{},"http20ProxyFlag":0,"sitePort":null,"antivirusScanEnabled":false}}' - headers: - cache-control: - - no-cache - content-length: - - '3770' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:29 GMT - etag: - - '"1D8325CDED8E78B"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/web?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/web","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites/config","location":"Canada - Central","properties":{"numberOfWorkers":1,"defaultDocuments":["Default.htm","Default.html","Default.asp","index.htm","index.html","iisstart.htm","default.aspx","index.php","hostingstart.html"],"netFrameworkVersion":"v4.0","phpVersion":"","pythonVersion":"","nodeVersion":"","powerShellVersion":"","linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":false,"remoteDebuggingEnabled":false,"remoteDebuggingVersion":"VS2019","httpLoggingEnabled":false,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":35,"detailedErrorLoggingEnabled":false,"publishingUsername":"$webapp-quick-linux000002","publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":"None","use32BitWorkerProcess":true,"webSocketsEnabled":false,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":"","managedPipelineMode":"Integrated","virtualApplications":[{"virtualPath":"/","physicalPath":"site\\wwwroot","preloadEnabled":false,"virtualDirectories":null}],"winAuthAdminState":0,"winAuthTenantState":0,"customAppPoolIdentityAdminState":false,"customAppPoolIdentityTenantState":false,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":"LeastRequests","routingRules":[],"experiments":{"rampUpRules":[]},"limits":null,"autoHealEnabled":false,"autoHealRules":null,"tracingOptions":null,"vnetName":"","vnetRouteAllEnabled":false,"vnetPrivatePortsCount":0,"publicNetworkAccess":null,"siteAuthEnabled":false,"siteAuthSettings":{"enabled":null,"unauthenticatedClientAction":null,"tokenStoreEnabled":null,"allowedExternalRedirectUrls":null,"defaultProvider":null,"clientId":null,"clientSecret":null,"clientSecretSettingName":null,"clientSecretCertificateThumbprint":null,"issuer":null,"allowedAudiences":null,"additionalLoginParams":null,"isAadAutoProvisioned":false,"aadClaimsAuthorization":null,"googleClientId":null,"googleClientSecret":null,"googleClientSecretSettingName":null,"googleOAuthScopes":null,"facebookAppId":null,"facebookAppSecret":null,"facebookAppSecretSettingName":null,"facebookOAuthScopes":null,"gitHubClientId":null,"gitHubClientSecret":null,"gitHubClientSecretSettingName":null,"gitHubOAuthScopes":null,"twitterConsumerKey":null,"twitterConsumerSecret":null,"twitterConsumerSecretSettingName":null,"microsoftAccountClientId":null,"microsoftAccountClientSecret":null,"microsoftAccountClientSecretSettingName":null,"microsoftAccountOAuthScopes":null,"configVersion":null},"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":false,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictionsUseMain":false,"http20Enabled":true,"minTlsVersion":"1.2","scmMinTlsVersion":"1.0","ftpsState":"AllAllowed","preWarmedInstanceCount":0,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":false,"functionsRuntimeScaleMonitoringEnabled":false,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":{},"http20ProxyFlag":0,"sitePort":null,"antivirusScanEnabled":false}}' - headers: - cache-control: - - no-cache - content-length: - - '3788' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:52:29 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"format": "WebDeploy"}' - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp create - Connection: - - keep-alive - Content-Length: - - '23' - Content-Type: - - application/json - ParameterSetName: - - -g -n --plan -i - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/publishxml?api-version=2021-03-01 - response: - body: - string: - headers: - cache-control: - - no-cache - content-length: - - '1667' - content-type: - - application/xml - date: - - Mon, 07 Mar 2022 19:52:30 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.26.0 - method: GET - uri: http://webapp-quick-linux000002.azurewebsites.net/ - response: - body: - string: Ruby on Rails in Web Apps on Linux - headers: - content-length: - - '34' - content-type: - - text/html - date: - - Mon, 07 Mar 2022 19:54:20 GMT - set-cookie: - - ARRAffinity=9f31c9c5bee5168e5eb7bf80d32ece8094d4003d3670d16b35539c64104ecd98;Path=/;HttpOnly;Domain=webapp-quick-linuxmgbywy.azurewebsites.net - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp config appsettings list - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -g -n - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings/list?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/appsettings","name":"appsettings","type":"Microsoft.Web/sites/config","location":"Canada - Central","properties":{"WEBSITES_ENABLE_APP_SERVICE_STORAGE":"false"}}' - headers: - cache-control: - - no-cache - content-length: - - '312' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:21 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp config appsettings list - Connection: - - keep-alive - ParameterSetName: - - -g -n - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002/config/slotConfigNames?api-version=2021-03-01 - response: - body: - string: '{"id":null,"name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","location":"Canada - Central","properties":{"connectionStringNames":null,"appSettingNames":null,"azureStorageConfigNames":null}}' - headers: - cache-control: - - no-cache - content-length: - - '200' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:22 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp update - Connection: - - keep-alive - ParameterSetName: - - -g -n --https-only - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","kind":"app,linux,container","location":"Canada - Central","properties":{"name":"webapp-quick-linux000002","state":"Running","hostNames":["webapp-quick-linux000002.azurewebsites.net"],"webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","selfLink":"https://waws-prod-yt1-035.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CanadaCentralwebspace-Linux/sites/webapp-quick-linux000002","repositorySiteName":"webapp-quick-linux000002","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["webapp-quick-linux000002.azurewebsites.net","webapp-quick-linux000002.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":"DOCKER|patle/ruby-hello"},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"webapp-quick-linux000002.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"webapp-quick-linux000002.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","reserved":true,"isXenon":false,"hyperV":false,"lastModifiedTimeUtc":"2022-03-07T19:52:28.86","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":{"numberOfWorkers":1,"defaultDocuments":null,"netFrameworkVersion":null,"phpVersion":null,"pythonVersion":null,"nodeVersion":null,"powerShellVersion":null,"linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":null,"remoteDebuggingEnabled":null,"remoteDebuggingVersion":null,"httpLoggingEnabled":null,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":null,"detailedErrorLoggingEnabled":null,"publishingUsername":null,"publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":null,"use32BitWorkerProcess":null,"webSocketsEnabled":null,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":null,"managedPipelineMode":null,"virtualApplications":null,"winAuthAdminState":null,"winAuthTenantState":null,"customAppPoolIdentityAdminState":null,"customAppPoolIdentityTenantState":null,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":null,"routingRules":null,"experiments":null,"limits":null,"autoHealEnabled":null,"autoHealRules":null,"tracingOptions":null,"vnetName":null,"vnetRouteAllEnabled":null,"vnetPrivatePortsCount":null,"publicNetworkAccess":null,"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":null,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":null,"scmIpSecurityRestrictions":null,"scmIpSecurityRestrictionsUseMain":null,"http20Enabled":true,"minTlsVersion":null,"scmMinTlsVersion":null,"ftpsState":null,"preWarmedInstanceCount":null,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":null,"functionsRuntimeScaleMonitoringEnabled":null,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":null,"http20ProxyFlag":null,"sitePort":null,"antivirusScanEnabled":null},"deploymentId":"webapp-quick-linux000002","slotName":null,"trafficManagerHostNames":null,"sku":"Basic","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"clientCertMode":"Required","clientCertExclusionPaths":null,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","kind":"app,linux,container","inboundIpAddress":"52.228.84.37","possibleInboundIpAddresses":"52.228.84.37","ftpUsername":"webapp-quick-linux000002\\$webapp-quick-linux000002","ftpsHostName":"ftps://waws-prod-yt1-035.ftp.azurewebsites.windows.net/site/wwwroot","outboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,52.228.84.37","possibleOutboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,20.200.64.60,20.200.64.61,20.200.64.62,20.200.64.63,20.200.64.92,20.200.64.93,20.200.64.94,20.200.64.95,20.200.64.200,20.200.64.201,20.200.64.202,20.200.64.203,20.48.129.103,20.48.134.116,20.48.134.153,20.48.134.171,20.48.134.172,20.48.135.82,52.228.84.37","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-yt1-035","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"webapp-quick-linux000002.azurewebsites.net","slotSwapStatus":null,"httpsOnly":false,"redundancyMode":"None","inProgressOperationId":null,"geoDistributions":null,"privateEndpointConnections":[],"buildVersion":null,"targetBuildVersion":null,"migrationState":null,"eligibleLogCategories":"AppServiceAppLogs,AppServiceAuditLogs,AppServiceConsoleLogs,AppServiceHTTPLogs,AppServiceIPSecAuditLogs,AppServicePlatformLogs,ScanLogs","storageAccountRequired":false,"virtualNetworkSubnetId":null,"keyVaultReferenceIdentity":"SystemAssigned"}}' - headers: - cache-control: - - no-cache - content-length: - - '6155' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:23 GMT - etag: - - '"1D8325CE0479FC0"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp update - Connection: - - keep-alive - ParameterSetName: - - -g -n --https-only - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","name":"plan-quick-linux000003","type":"Microsoft.Web/serverfarms","kind":"linux","location":"Canada - Central","properties":{"serverFarmId":36801,"name":"plan-quick-linux000003","workerSize":"Default","workerSizeId":0,"workerTierName":null,"numberOfWorkers":1,"currentWorkerSize":"Default","currentWorkerSizeId":0,"currentNumberOfWorkers":1,"status":"Ready","webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","subscription":"2edc29f4-b81f-494b-a624-cc619903b837","adminSiteName":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"maximumNumberOfWorkers":3,"planName":"VirtualDedicatedPlan","adminRuntimeSiteName":null,"computeMode":"Dedicated","siteMode":null,"geoRegion":"Canada - Central","perSiteScaling":false,"elasticScaleEnabled":false,"maximumElasticWorkerCount":1,"numberOfSites":1,"hostingEnvironmentId":null,"isSpot":false,"spotExpirationTime":null,"freeOfferExpirationTime":"2022-04-06T19:51:44.1333333","tags":null,"kind":"linux","resourceGroup":"clitest.rg000001","reserved":true,"isXenon":false,"hyperV":false,"mdmId":"waws-prod-yt1-035_36801","targetWorkerCount":0,"targetWorkerSizeId":0,"provisioningState":"Succeeded","webSiteId":null,"existingServerFarmIds":null,"kubeEnvironmentProfile":null,"zoneRedundant":false},"sku":{"name":"B1","tier":"Basic","size":"B1","family":"B","capacity":1}}' - headers: - cache-control: - - no-cache - content-length: - - '1476' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:24 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"kind": "app,linux,container", "location": "Canada Central", "properties": - {"enabled": true, "hostNameSslStates": [{"name": "webapp-quick-linux000002.azurewebsites.net", - "sslState": "Disabled", "hostType": "Standard"}, {"name": "webapp-quick-linux000002.scm.azurewebsites.net", - "sslState": "Disabled", "hostType": "Repository"}], "serverFarmId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003", - "reserved": true, "isXenon": false, "hyperV": false, "siteConfig": {"numberOfWorkers": - 1, "linuxFxVersion": "DOCKER|patle/ruby-hello", "acrUseManagedIdentityCreds": - false, "alwaysOn": false, "http20Enabled": true, "functionAppScaleLimit": 0, - "minimumElasticInstanceCount": 0}, "scmSiteAlsoStopped": false, "clientAffinityEnabled": - true, "clientCertEnabled": false, "clientCertMode": "Required", "hostNamesDisabled": - false, "customDomainVerificationId": "333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7", - "containerSize": 0, "dailyMemoryTimeQuota": 0, "httpsOnly": true, "redundancyMode": - "None", "storageAccountRequired": false, "keyVaultReferenceIdentity": "SystemAssigned"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp update - Connection: - - keep-alive - Content-Length: - - '1186' - Content-Type: - - application/json - ParameterSetName: - - -g -n --https-only - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","kind":"app,linux,container","location":"Canada - Central","properties":{"name":"webapp-quick-linux000002","state":"Running","hostNames":["webapp-quick-linux000002.azurewebsites.net"],"webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","selfLink":"https://waws-prod-yt1-035.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CanadaCentralwebspace-Linux/sites/webapp-quick-linux000002","repositorySiteName":"webapp-quick-linux000002","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["webapp-quick-linux000002.azurewebsites.net","webapp-quick-linux000002.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":"DOCKER|patle/ruby-hello"},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"webapp-quick-linux000002.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"webapp-quick-linux000002.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","reserved":true,"isXenon":false,"hyperV":false,"lastModifiedTimeUtc":"2022-03-07T19:54:27.3133333","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":{"numberOfWorkers":1,"defaultDocuments":null,"netFrameworkVersion":null,"phpVersion":null,"pythonVersion":null,"nodeVersion":null,"powerShellVersion":null,"linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":null,"remoteDebuggingEnabled":null,"remoteDebuggingVersion":null,"httpLoggingEnabled":null,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":null,"detailedErrorLoggingEnabled":null,"publishingUsername":null,"publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":null,"use32BitWorkerProcess":null,"webSocketsEnabled":null,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":null,"managedPipelineMode":null,"virtualApplications":null,"winAuthAdminState":null,"winAuthTenantState":null,"customAppPoolIdentityAdminState":null,"customAppPoolIdentityTenantState":null,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":null,"routingRules":null,"experiments":null,"limits":null,"autoHealEnabled":null,"autoHealRules":null,"tracingOptions":null,"vnetName":null,"vnetRouteAllEnabled":null,"vnetPrivatePortsCount":null,"publicNetworkAccess":null,"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":null,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictionsUseMain":null,"http20Enabled":true,"minTlsVersion":null,"scmMinTlsVersion":null,"ftpsState":null,"preWarmedInstanceCount":null,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":null,"functionsRuntimeScaleMonitoringEnabled":null,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":null,"http20ProxyFlag":null,"sitePort":null,"antivirusScanEnabled":null},"deploymentId":"webapp-quick-linux000002","slotName":null,"trafficManagerHostNames":null,"sku":"Basic","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"clientCertMode":"Required","clientCertExclusionPaths":null,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","kind":"app,linux,container","inboundIpAddress":"52.228.84.37","possibleInboundIpAddresses":"52.228.84.37","ftpUsername":"webapp-quick-linux000002\\$webapp-quick-linux000002","ftpsHostName":"ftps://waws-prod-yt1-035.ftp.azurewebsites.windows.net/site/wwwroot","outboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,52.228.84.37","possibleOutboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,20.200.64.60,20.200.64.61,20.200.64.62,20.200.64.63,20.200.64.92,20.200.64.93,20.200.64.94,20.200.64.95,20.200.64.200,20.200.64.201,20.200.64.202,20.200.64.203,20.48.129.103,20.48.134.116,20.48.134.153,20.48.134.171,20.48.134.172,20.48.135.82,52.228.84.37","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-yt1-035","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"webapp-quick-linux000002.azurewebsites.net","slotSwapStatus":null,"httpsOnly":true,"redundancyMode":"None","inProgressOperationId":null,"geoDistributions":null,"privateEndpointConnections":null,"buildVersion":null,"targetBuildVersion":null,"migrationState":null,"eligibleLogCategories":"AppServiceAppLogs,AppServiceAuditLogs,AppServiceConsoleLogs,AppServiceHTTPLogs,AppServiceIPSecAuditLogs,AppServicePlatformLogs,ScanLogs","storageAccountRequired":false,"virtualNetworkSubnetId":null,"keyVaultReferenceIdentity":"SystemAssigned"}}' - headers: - cache-control: - - no-cache - content-length: - - '6359' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:30 GMT - etag: - - '"1D8325CE0479FC0"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '499' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp update - Connection: - - keep-alive - ParameterSetName: - - -g -n --https-only - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","kind":"app,linux,container","location":"Canada - Central","properties":{"name":"webapp-quick-linux000002","state":"Running","hostNames":["webapp-quick-linux000002.azurewebsites.net"],"webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","selfLink":"https://waws-prod-yt1-035.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CanadaCentralwebspace-Linux/sites/webapp-quick-linux000002","repositorySiteName":"webapp-quick-linux000002","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["webapp-quick-linux000002.azurewebsites.net","webapp-quick-linux000002.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":"DOCKER|patle/ruby-hello"},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"webapp-quick-linux000002.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"webapp-quick-linux000002.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","reserved":true,"isXenon":false,"hyperV":false,"lastModifiedTimeUtc":"2022-03-07T19:54:27.3133333","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":{"numberOfWorkers":1,"defaultDocuments":null,"netFrameworkVersion":null,"phpVersion":null,"pythonVersion":null,"nodeVersion":null,"powerShellVersion":null,"linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":null,"remoteDebuggingEnabled":null,"remoteDebuggingVersion":null,"httpLoggingEnabled":null,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":null,"detailedErrorLoggingEnabled":null,"publishingUsername":null,"publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":null,"use32BitWorkerProcess":null,"webSocketsEnabled":null,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":null,"managedPipelineMode":null,"virtualApplications":null,"winAuthAdminState":null,"winAuthTenantState":null,"customAppPoolIdentityAdminState":null,"customAppPoolIdentityTenantState":null,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":null,"routingRules":null,"experiments":null,"limits":null,"autoHealEnabled":null,"autoHealRules":null,"tracingOptions":null,"vnetName":null,"vnetRouteAllEnabled":null,"vnetPrivatePortsCount":null,"publicNetworkAccess":null,"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":null,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":null,"scmIpSecurityRestrictions":null,"scmIpSecurityRestrictionsUseMain":null,"http20Enabled":true,"minTlsVersion":null,"scmMinTlsVersion":null,"ftpsState":null,"preWarmedInstanceCount":null,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":null,"functionsRuntimeScaleMonitoringEnabled":null,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":null,"http20ProxyFlag":null,"sitePort":null,"antivirusScanEnabled":null},"deploymentId":"webapp-quick-linux000002","slotName":null,"trafficManagerHostNames":null,"sku":"Basic","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"clientCertMode":"Required","clientCertExclusionPaths":null,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","kind":"app,linux,container","inboundIpAddress":"52.228.84.37","possibleInboundIpAddresses":"52.228.84.37","ftpUsername":"webapp-quick-linux000002\\$webapp-quick-linux000002","ftpsHostName":"ftps://waws-prod-yt1-035.ftp.azurewebsites.windows.net/site/wwwroot","outboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,52.228.84.37","possibleOutboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,20.200.64.60,20.200.64.61,20.200.64.62,20.200.64.63,20.200.64.92,20.200.64.93,20.200.64.94,20.200.64.95,20.200.64.200,20.200.64.201,20.200.64.202,20.200.64.203,20.48.129.103,20.48.134.116,20.48.134.153,20.48.134.171,20.48.134.172,20.48.135.82,52.228.84.37","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-yt1-035","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"webapp-quick-linux000002.azurewebsites.net","slotSwapStatus":null,"httpsOnly":true,"redundancyMode":"None","inProgressOperationId":null,"geoDistributions":null,"privateEndpointConnections":[],"buildVersion":null,"targetBuildVersion":null,"migrationState":null,"eligibleLogCategories":"AppServiceAppLogs,AppServiceAuditLogs,AppServiceConsoleLogs,AppServiceHTTPLogs,AppServiceIPSecAuditLogs,AppServicePlatformLogs,ScanLogs","storageAccountRequired":false,"virtualNetworkSubnetId":null,"keyVaultReferenceIdentity":"SystemAssigned"}}' - headers: - cache-control: - - no-cache - content-length: - - '6159' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:32 GMT - etag: - - '"1D8325D26E22B15"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp update - Connection: - - keep-alive - ParameterSetName: - - -g -n --https-only - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","name":"plan-quick-linux000003","type":"Microsoft.Web/serverfarms","kind":"linux","location":"Canada - Central","properties":{"serverFarmId":36801,"name":"plan-quick-linux000003","workerSize":"Default","workerSizeId":0,"workerTierName":null,"numberOfWorkers":1,"currentWorkerSize":"Default","currentWorkerSizeId":0,"currentNumberOfWorkers":1,"status":"Ready","webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","subscription":"2edc29f4-b81f-494b-a624-cc619903b837","adminSiteName":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"maximumNumberOfWorkers":3,"planName":"VirtualDedicatedPlan","adminRuntimeSiteName":null,"computeMode":"Dedicated","siteMode":null,"geoRegion":"Canada - Central","perSiteScaling":false,"elasticScaleEnabled":false,"maximumElasticWorkerCount":1,"numberOfSites":1,"hostingEnvironmentId":null,"isSpot":false,"spotExpirationTime":null,"freeOfferExpirationTime":"2022-04-06T19:51:44.1333333","tags":null,"kind":"linux","resourceGroup":"clitest.rg000001","reserved":true,"isXenon":false,"hyperV":false,"mdmId":"waws-prod-yt1-035_36801","targetWorkerCount":0,"targetWorkerSizeId":0,"provisioningState":"Succeeded","webSiteId":null,"existingServerFarmIds":null,"kubeEnvironmentProfile":null,"zoneRedundant":false},"sku":{"name":"B1","tier":"Basic","size":"B1","family":"B","capacity":1}}' - headers: - cache-control: - - no-cache - content-length: - - '1476' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:32 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"kind": "app,linux,container", "location": "Canada Central", "properties": - {"enabled": true, "hostNameSslStates": [{"name": "webapp-quick-linux000002.azurewebsites.net", - "sslState": "Disabled", "hostType": "Standard"}, {"name": "webapp-quick-linux000002.scm.azurewebsites.net", - "sslState": "Disabled", "hostType": "Repository"}], "serverFarmId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003", - "reserved": true, "isXenon": false, "hyperV": false, "siteConfig": {"numberOfWorkers": - 1, "linuxFxVersion": "DOCKER|patle/ruby-hello", "acrUseManagedIdentityCreds": - false, "alwaysOn": false, "http20Enabled": true, "functionAppScaleLimit": 0, - "minimumElasticInstanceCount": 0}, "scmSiteAlsoStopped": false, "clientAffinityEnabled": - true, "clientCertEnabled": false, "clientCertMode": "Required", "hostNamesDisabled": - false, "customDomainVerificationId": "333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7", - "containerSize": 0, "dailyMemoryTimeQuota": 0, "httpsOnly": false, "redundancyMode": - "None", "storageAccountRequired": false, "keyVaultReferenceIdentity": "SystemAssigned"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - webapp update - Connection: - - keep-alive - Content-Length: - - '1187' - Content-Type: - - application/json - ParameterSetName: - - -g -n --https-only - User-Agent: - - AZURECLI/2.34.1 azsdk-python-azure-mgmt-web/6.1.0 Python/3.8.6 (macOS-10.15.7-x86_64-i386-64bit) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/webapp-quick-linux000002","name":"webapp-quick-linux000002","type":"Microsoft.Web/sites","kind":"app,linux,container","location":"Canada - Central","properties":{"name":"webapp-quick-linux000002","state":"Running","hostNames":["webapp-quick-linux000002.azurewebsites.net"],"webSpace":"clitest.rg000001-CanadaCentralwebspace-Linux","selfLink":"https://waws-prod-yt1-035.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CanadaCentralwebspace-Linux/sites/webapp-quick-linux000002","repositorySiteName":"webapp-quick-linux000002","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["webapp-quick-linux000002.azurewebsites.net","webapp-quick-linux000002.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":"DOCKER|patle/ruby-hello"},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"webapp-quick-linux000002.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"webapp-quick-linux000002.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/plan-quick-linux000003","reserved":true,"isXenon":false,"hyperV":false,"lastModifiedTimeUtc":"2022-03-07T19:54:35.48","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":{"numberOfWorkers":1,"defaultDocuments":null,"netFrameworkVersion":null,"phpVersion":null,"pythonVersion":null,"nodeVersion":null,"powerShellVersion":null,"linuxFxVersion":"DOCKER|patle/ruby-hello","windowsFxVersion":null,"requestTracingEnabled":null,"remoteDebuggingEnabled":null,"remoteDebuggingVersion":null,"httpLoggingEnabled":null,"azureMonitorLogCategories":null,"acrUseManagedIdentityCreds":false,"acrUserManagedIdentityID":null,"logsDirectorySizeLimit":null,"detailedErrorLoggingEnabled":null,"publishingUsername":null,"publishingPassword":null,"appSettings":null,"metadata":null,"connectionStrings":null,"machineKey":null,"handlerMappings":null,"documentRoot":null,"scmType":null,"use32BitWorkerProcess":null,"webSocketsEnabled":null,"alwaysOn":false,"javaVersion":null,"javaContainer":null,"javaContainerVersion":null,"appCommandLine":null,"managedPipelineMode":null,"virtualApplications":null,"winAuthAdminState":null,"winAuthTenantState":null,"customAppPoolIdentityAdminState":null,"customAppPoolIdentityTenantState":null,"runtimeADUser":null,"runtimeADUserPassword":null,"loadBalancing":null,"routingRules":null,"experiments":null,"limits":null,"autoHealEnabled":null,"autoHealRules":null,"tracingOptions":null,"vnetName":null,"vnetRouteAllEnabled":null,"vnetPrivatePortsCount":null,"publicNetworkAccess":null,"cors":null,"push":null,"apiDefinition":null,"apiManagementConfig":null,"autoSwapSlotName":null,"localMySqlEnabled":null,"managedServiceIdentityId":null,"xManagedServiceIdentityId":null,"keyVaultReferenceIdentity":null,"ipSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictions":[{"ipAddress":"Any","action":"Allow","priority":1,"name":"Allow - all","description":"Allow all access"}],"scmIpSecurityRestrictionsUseMain":null,"http20Enabled":true,"minTlsVersion":null,"scmMinTlsVersion":null,"ftpsState":null,"preWarmedInstanceCount":null,"functionAppScaleLimit":0,"healthCheckPath":null,"fileChangeAuditEnabled":null,"functionsRuntimeScaleMonitoringEnabled":null,"websiteTimeZone":null,"minimumElasticInstanceCount":0,"azureStorageAccounts":null,"http20ProxyFlag":null,"sitePort":null,"antivirusScanEnabled":null},"deploymentId":"webapp-quick-linux000002","slotName":null,"trafficManagerHostNames":null,"sku":"Basic","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"clientCertMode":"Required","clientCertExclusionPaths":null,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","kind":"app,linux,container","inboundIpAddress":"52.228.84.37","possibleInboundIpAddresses":"52.228.84.37","ftpUsername":"webapp-quick-linux000002\\$webapp-quick-linux000002","ftpsHostName":"ftps://waws-prod-yt1-035.ftp.azurewebsites.windows.net/site/wwwroot","outboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,52.228.84.37","possibleOutboundIpAddresses":"20.200.64.88,20.200.64.89,20.200.64.193,20.200.64.210,20.200.64.214,20.200.64.226,20.200.64.60,20.200.64.61,20.200.64.62,20.200.64.63,20.200.64.92,20.200.64.93,20.200.64.94,20.200.64.95,20.200.64.200,20.200.64.201,20.200.64.202,20.200.64.203,20.48.129.103,20.48.134.116,20.48.134.153,20.48.134.171,20.48.134.172,20.48.135.82,52.228.84.37","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-yt1-035","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"webapp-quick-linux000002.azurewebsites.net","slotSwapStatus":null,"httpsOnly":false,"redundancyMode":"None","inProgressOperationId":null,"geoDistributions":null,"privateEndpointConnections":null,"buildVersion":null,"targetBuildVersion":null,"migrationState":null,"eligibleLogCategories":"AppServiceAppLogs,AppServiceAuditLogs,AppServiceConsoleLogs,AppServiceHTTPLogs,AppServiceIPSecAuditLogs,AppServicePlatformLogs,ScanLogs","storageAccountRequired":false,"virtualNetworkSubnetId":null,"keyVaultReferenceIdentity":"SystemAssigned"}}' - headers: - cache-control: - - no-cache - content-length: - - '6355' - content-type: - - application/json - date: - - Mon, 07 Mar 2022 19:54:39 GMT - etag: - - '"1D8325D26E22B15"' - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-aspnet-version: - - 4.0.30319 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '499' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -version: 1 diff --git a/src/appservice-kube/azext_appservice_kube/tests/latest/test_appservice_kube_scenario.py b/src/appservice-kube/azext_appservice_kube/tests/latest/test_appservice_kube_scenario.py index cc29724919d..80a7b85faa7 100644 --- a/src/appservice-kube/azext_appservice_kube/tests/latest/test_appservice_kube_scenario.py +++ b/src/appservice-kube/azext_appservice_kube/tests/latest/test_appservice_kube_scenario.py @@ -6,7 +6,7 @@ import os import requests -from azure.cli.testsdk.scenario_tests import AllowLargeResponse +from azure.cli.testsdk.scenario_tests import AllowLargeResponse, live_only from azure.cli.testsdk import (ScenarioTest, ResourceGroupPreparer, JMESPathCheck) TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..')) @@ -19,6 +19,7 @@ class AppserviceKubernetesScenarioTest(ScenarioTest): # not lima-specific class WebappBasicE2EKubeTest(ScenarioTest): @ResourceGroupPreparer(location='canadacentral') + @live_only() def test_linux_webapp_quick_create_kube(self, resource_group): webapp_name = self.create_random_name( prefix='webapp-quick-linux', length=24) diff --git a/src/appservice-kube/setup.py b/src/appservice-kube/setup.py index e7489e1bf0c..1350689a182 100644 --- a/src/appservice-kube/setup.py +++ b/src/appservice-kube/setup.py @@ -16,7 +16,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '0.1.6' +VERSION = '0.1.7' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers diff --git a/src/attestation/HISTORY.rst b/src/attestation/HISTORY.rst index 3a74851e871..41cfef75c0d 100644 --- a/src/attestation/HISTORY.rst +++ b/src/attestation/HISTORY.rst @@ -3,6 +3,10 @@ Release History =============== +0.2.1 +++++++ +* `az attestation policy show`: Fix encoding and decoding issues due to JWT upgrades + 0.2.0 ++++++ * GA. diff --git a/src/attestation/azext_attestation/manual/custom.py b/src/attestation/azext_attestation/manual/custom.py index 4ffca1854a9..048215213ab 100644 --- a/src/attestation/azext_attestation/manual/custom.py +++ b/src/attestation/azext_attestation/manual/custom.py @@ -129,7 +129,7 @@ def add_signer(cmd, client, signer=None, signer_file=None, resource_group_name=N 'Algorithm': header.get('alg', ''), 'JKU': header.get('jku', '') }) - body = jwt.decode(token, verify=False) + body = jwt.decode(token, algorithms=['RS256'], options={"verify_signature": False}) result['Certificates'] = body.get('aas-policyCertificates', {}).get('keys', []) result['CertificateCount'] = len(result['Certificates']) @@ -171,7 +171,7 @@ def list_signers(cmd, client, resource_group_name=None, provider_name=None): 'Algorithm': header.get('alg', ''), 'JKU': header.get('jku', '') }) - body = jwt.decode(token, verify=False) + body = jwt.decode(token, algorithms=['RS256'], options={"verify_signature": False}) result['Certificates'] = body.get('x-ms-policy-certificates', {}).get('keys', []) result['CertificateCount'] = len(result['Certificates']) @@ -188,14 +188,14 @@ def get_policy(cmd, client, attestation_type, resource_group_name=None, provider if token: import jwt - policy = jwt.decode(token, verify=False).get('x-ms-policy', '') + policy = jwt.decode(token, algorithms=['RS256'], options={"verify_signature": False}).get('x-ms-policy', '') result['Jwt'] = policy result['JwtLength'] = len(policy) result['Algorithm'] = None if policy: try: - decoded_policy = jwt.decode(policy, verify=False) + decoded_policy = jwt.decode(policy, algorithms=['RS256'], options={"verify_signature": False}) decoded_policy = decoded_policy.get('AttestationPolicy', '') try: new_decoded_policy = base64.b64decode(_b64url_to_b64(decoded_policy)).decode('ascii') @@ -250,8 +250,7 @@ def set_policy(cmd, client, attestation_type, new_attestation_policy=None, new_a new_attestation_policy = {'AttestationPolicy': new_attestation_policy} new_attestation_policy = jwt.encode( new_attestation_policy, key='', algorithm='none' - ).decode('ascii') - + ) except TypeError as e: print(e) raise CLIError('Failed to encode text content, are you using JWT? If yes, please use --policy-format JWT') diff --git a/src/attestation/azext_attestation/tests/latest/recordings/test_attestation.yaml b/src/attestation/azext_attestation/tests/latest/recordings/test_attestation.yaml index 82f1ea81b6c..b1461ac9618 100644 --- a/src/attestation/azext_attestation/tests/latest/recordings/test_attestation.yaml +++ b/src/attestation/azext_attestation/tests/latest/recordings/test_attestation.yaml @@ -18,26 +18,26 @@ interactions: ParameterSetName: - -l -n --resource-group User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider","name":"myattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://myattestationprovider.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider","name":"testattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://testattestationprovider.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '457' + - '389' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:02 GMT + - Thu, 07 Jul 2022 03:14:40 GMT expires: - '-1' location: - - https://myattestationprovider.wus.attest.azure.net/ + - https://testattestationprovider.wus.attest.azure.net/ pragma: - no-cache server: @@ -47,7 +47,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-writes: - '1199' status: @@ -67,22 +67,22 @@ interactions: ParameterSetName: - -n --resource-group User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider","name":"myattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://myattestationprovider.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider","name":"testattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://testattestationprovider.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '457' + - '389' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:03 GMT + - Thu, 07 Jul 2022 03:14:41 GMT expires: - '-1' pragma: @@ -91,14 +91,10 @@ interactions: - Kestrel strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -116,22 +112,22 @@ interactions: ParameterSetName: - --resource-group User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders?api-version=2020-10-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider","name":"myattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://myattestationprovider.wus.attest.azure.net"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider","name":"testattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://testattestationprovider.wus.attest.azure.net"}}]}' headers: cache-control: - no-cache content-length: - - '469' + - '401' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:04 GMT + - Thu, 07 Jul 2022 03:14:42 GMT expires: - '-1' pragma: @@ -147,7 +143,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -163,22 +159,22 @@ interactions: Connection: - keep-alive User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Attestation/attestationProviders?api-version=2020-10-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimattnew","name":"bimattnew","type":"Microsoft.Attestation/attestationProviders","location":"eastus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimattnew.eus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/att1","name":"att1","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att1.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/att2","name":"att2","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/att3","name":"att3","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/attaad","name":"attaad","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://attaad.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/attiso","name":"attiso","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://attiso.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/attiso2","name":"attiso2","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://attiso2.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt1","name":"bimatt1","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt1.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt10","name":"bimatt10","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt10.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt11","name":"bimatt11","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt11.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt12","name":"bimatt12","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt12.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt13","name":"bimatt13","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt13.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt14","name":"bimatt14","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt14.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt15","name":"bimatt15","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt15.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt16","name":"bimatt16","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://bimatt16.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt17","name":"bimatt17","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://bimatt17.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt20","name":"bimatt20","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://bimatt20.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt3","name":"bimatt3","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":{"k1":"v2","k2":"v3"},"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://bimatt3.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/bimatt8","name":"bimatt8","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://bimatt8.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider","name":"myattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://myattestationprovider.wus.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bim-rg/providers/Microsoft.Attestation/attestationProviders/testatt","name":"testatt","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":{"k1":"v1","k2":"v2"},"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://testatt.wus.attest.azure.net"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ethan-rg/providers/Microsoft.Attestation/attestationProviders/ethanat","name":"ethanat","type":"Microsoft.Attestation/attestationProviders","location":"eastus2","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://ethanat.eus2.attest.azure.net"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider","name":"testattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://testattestationprovider.wus.attest.azure.net"}}]}' headers: cache-control: - no-cache content-length: - - '7483' + - '740' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:05 GMT + - Thu, 07 Jul 2022 03:14:44 GMT expires: - '-1' pragma: @@ -190,8 +186,8 @@ interactions: x-content-type-options: - nosniff x-ms-original-request-ids: - - 00-7df7ec5e5734aebe603a63190e3e59d2-0000000000000000-00 - - 00-dfe0d0c08b38907693a02fc6d3a418a7-0000000000000000-00 + - 00-7e6df6d5ec1eb84c8562014580ebdda9-19ae9c2a4a4b0442-01 + - 00-7e6df6d5ec1eb84c8562014580ebdda9-ab4c7d9f9c562b49-01 status: code: 200 message: OK @@ -213,22 +209,22 @@ interactions: ParameterSetName: - -n --resource-group --tags User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: PATCH - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider","name":"myattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":{"Property1":"Value1","Property2":"Value2","Property3":"Value3"},"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://myattestationprovider.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider","name":"testattestationprovider","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":{"Property1":"Value1","Property2":"Value2","Property3":"Value3"},"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://testattestationprovider.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '517' + - '461' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:11 GMT + - Thu, 07 Jul 2022 03:14:50 GMT expires: - '-1' pragma: @@ -244,9 +240,9 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' status: code: 200 message: OK @@ -266,10 +262,10 @@ interactions: ParameterSetName: - -y -n --resource-group User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/myattestationprovider?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/testattestationprovider?api-version=2020-10-01 response: body: string: '' @@ -279,7 +275,7 @@ interactions: content-length: - '0' date: - - Thu, 03 Dec 2020 03:29:20 GMT + - Thu, 07 Jul 2022 03:15:01 GMT expires: - '-1' pragma: @@ -291,9 +287,9 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-deletes: - - '14997' + - '14999' status: code: 200 message: OK @@ -311,23 +307,23 @@ interactions: ParameterSetName: - -l User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Attestation/locations/West%20US/defaultProvider?api-version=2020-10-01 response: body: string: '{"id":"/providers/Microsoft.Attestation/attestationProviders/sharedwus","name":"sharedwus","type":"Microsoft.Attestation/attestationProviders","location":"West - US","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://sharedwus.wus.attest.azure.net"}}' + US","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://sharedwus.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '280' + - '268' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:21 GMT + - Thu, 07 Jul 2022 03:15:02 GMT expires: - '-1' pragma: @@ -343,7 +339,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -366,22 +362,22 @@ interactions: ParameterSetName: - -l -n -g --certs-input-path User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002","name":"att1000002","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att1000002.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002","name":"att1000002","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att1000002.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '447' + - '355' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:28 GMT + - Thu, 07 Jul 2022 03:15:07 GMT expires: - '-1' location: @@ -395,9 +391,9 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' status: code: 201 message: Created @@ -415,22 +411,22 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002","name":"att1000002","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att1000002.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002","name":"att1000002","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att1000002.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '447' + - '355' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:29 GMT + - Thu, 07 Jul 2022 03:15:09 GMT expires: - '-1' pragma: @@ -446,7 +442,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -460,83 +456,111 @@ interactions: Connection: - keep-alive User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: GET uri: https://att1000002.wus.attest.azure.net/certificates?api-version=2020-10-01 response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0MXBkdmVubHl1a3l4eS53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5NzczLCAiaWF0IjogMTYwNjk2NjE3MywgImlzcyI6ICJodHRwczovL2F0dDFwZHZlbmx5dWt5eHkud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjE3MywgIngtbXMtcG9saWN5LWNlcnRpZmljYXRlcyI6IHsia2V5cyI6IFt7ImFsZyI6ICJSUzI1NiIsICJrdHkiOiAiUlNBIiwgInVzZSI6ICJzaWciLCAieDVjIjogWyJNSUlETERDQ0FoU2dBd0lCQWdJSVpTYW5zQ1djS1RNd0RRWUpLb1pJaHZjTkFRRUxCUUF3RnpFVk1CTUdBMVVFQXd3TVRXRmhWR1Z6ZEVObGNuUXhNQ0FYRFRJd01EUXlOVEF3TURBd01Gb1lEekl3TnpBd05ESTFNREF3TURBd1dqQVhNUlV3RXdZRFZRUUREQXhOWVdGVVpYTjBRMlZ5ZERFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNjbFVEcGJnVDM3My9GZUZCS0lwZTFoL3k0dTM2Z09NSTJOcFZVS3pVZ2krdVp5U042dTE5OVlESEtwYVVUZE1iNzd6THdCRnJmdWx4SHo3aVkyTEFWTmo5R01kZXpIbGdrZDgyaTJ0N2Rmd3hkbG8xZTlrbGFhQmUrTEZWL1dITDJrN1JSeG5mRFU2YktrK3lkWWY4REtSRUdyZEc2bzJqRW1CQVBxREQzaSszNENVVjlyTnk2bW5VTGI1ZjFDZnI0eERZTEdUTDNyS0VDaU12SFAyVllnbTBneEpmdXlDR1laYkRmSWVtcTA3QmlMYmt4dm4xOG1qR0dzNHlCQ0ZLZmZrMG9Ya1FHMU9uRHpyWVdObGVtNW1mUE5DY1RqOUVUYzBqbEI3b2dMcVZWNUxxOW9pb0M1S3ErR3hLaWwxSk51UnQrZkxEZTFtZWlXWitldTg5N0FnTUJBQUdqZWpCNE1FWUdBMVVkSXdRL01EMkFGRWhERjBadDFqclNqQ0ZDVnZacG5YWTdvdk4xb1J1a0dUQVhNUlV3RXdZRFZRUUREQXhOWVdGVVpYTjBRMlZ5ZERHQ0NHVW1wN0FsbkNrek1CMEdBMVVkRGdRV0JCUklReGRHYmRZNjBvd2hRbGIyYVoxMk82THpkVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUE5MHJYSlY4WmpHcWRscWVZeEV3RTBoeENhdHBaY04yckdjUkMvVVJ0Um5KQlFiV3BCKzc5ZHpaSFhPK1VJRjd6aFZVd3czZVF5UXVhaDBhQzZzNnRCVUtqZ0Zqa0s5Wkw2U2MvNHFweWI2UkUxSGdqUkNjZWdtVSs4MENkY3F4Z29xWFRVeUZXeXFtQWxzSFh6VzN4aWpyTjFIOXpkdDdwdHNiQ1hPNHBiME5qcXo1NHpzS01RTDg0WlRNOWZYamt0N2FacEtuaGw1TlAzMTFTQ01VTzRrem1xaW0zMzFScFd2dXhabnQxZjFrbDRRZUxoL1lBRjcrT0VLTmFGZ3l4T1hGMkROdk1GRFlFV0V3NUY5dkRrMFZlc1VFck9nYTN2RmxJWTl5ZkU4aEY3OXFudHNNWVFuY0pBRklBNVJaZmZMVG45SGxZbVp0SmVPWmxDR3l6aSJdfV19fQ.G3y-TLyHL2KX2OFwPt5ligIW9SQELUFSVTt3xcARclVdf0Mdy6mmO308T4d44dk4M2YO51hS7slnou74xDoai5SN_5kpZy_sSrJuL1CxX6jl4s15ubX4Fy9DKec4HNjaVdSXrQJQLph-JH-j-xV1Rwfs_Ye35Ii_Q692XajtMTA"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0MXFoNzRvcm5oamx4NC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczMTMsImlhdCI6MTY1NzE2MzcxMywiaXNzIjoiaHR0cHM6Ly9hdHQxcWg3NG9ybmhqbHg0Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzEzLCJ4LW1zLXBvbGljeS1jZXJ0aWZpY2F0ZXMiOnsia2V5cyI6W3siYWxnIjoiUlMyNTYiLCJrdHkiOiJSU0EiLCJ1c2UiOiJzaWciLCJ4NWMiOlsiTUlJRExEQ0NBaFNnQXdJQkFnSUlaU2Fuc0NXY0tUTXdEUVlKS29aSWh2Y05BUUVMQlFBd0Z6RVZNQk1HQTFVRUF3d01UV0ZoVkdWemRFTmxjblF4TUNBWERUSXdNRFF5TlRBd01EQXdNRm9ZRHpJd056QXdOREkxTURBd01EQXdXakFYTVJVd0V3WURWUVFEREF4TllXRlVaWE4wUTJWeWRERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDY2xVRHBiZ1QzNzMvRmVGQktJcGUxaC95NHUzNmdPTUkyTnBWVUt6VWdpK3VaeVNONnUxOTlZREhLcGFVVGRNYjc3ekx3QkZyZnVseEh6N2lZMkxBVk5qOUdNZGV6SGxna2Q4MmkydDdkZnd4ZGxvMWU5a2xhYUJlK0xGVi9XSEwyazdSUnhuZkRVNmJLayt5ZFlmOERLUkVHcmRHNm8yakVtQkFQcUREM2krMzRDVVY5ck55Nm1uVUxiNWYxQ2ZyNHhEWUxHVEwzcktFQ2lNdkhQMlZZZ20wZ3hKZnV5Q0dZWmJEZkllbXEwN0JpTGJreHZuMThtakdHczR5QkNGS2ZmazBvWGtRRzFPbkR6cllXTmxlbTVtZlBOQ2NUajlFVGMwamxCN29nTHFWVjVMcTlvaW9DNUtxK0d4S2lsMUpOdVJ0K2ZMRGUxbWVpV1orZXU4OTdBZ01CQUFHamVqQjRNRVlHQTFVZEl3US9NRDJBRkVoREYwWnQxanJTakNGQ1Z2WnBuWFk3b3ZOMW9SdWtHVEFYTVJVd0V3WURWUVFEREF4TllXRlVaWE4wUTJWeWRER0NDR1VtcDdBbG5Da3pNQjBHQTFVZERnUVdCQlJJUXhkR2JkWTYwb3doUWxiMmFaMTJPNkx6ZFRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBOTByWEpWOFpqR3FkbHFlWXhFd0UwaHhDYXRwWmNOMnJHY1JDL1VSdFJuSkJRYldwQis3OWR6WkhYTytVSUY3emhWVXd3M2VReVF1YWgwYUM2czZ0QlVLamdGamtLOVpMNlNjLzRxcHliNlJFMUhnalJDY2VnbVUrODBDZGNxeGdvcVhUVXlGV3lxbUFsc0hYelczeGlqck4xSDl6ZHQ3cHRzYkNYTzRwYjBOanF6NTR6c0tNUUw4NFpUTTlmWGprdDdhWnBLbmhsNU5QMzExU0NNVU80a3ptcWltMzMxUnBXdnV4Wm50MWYxa2w0UWVMaC9ZQUY3K09FS05hRmd5eE9YRjJETnZNRkRZRVdFdzVGOXZEazBWZXNVRXJPZ2EzdkZsSVk5eWZFOGhGNzlxbnRzTVlRbmNKQUZJQTVSWmZmTFRuOUhsWW1adEplT1psQ0d5emkiXX1dfX0.LE0BUEE8msgydaimOtMDQ531uFbsQbAt0jlv8ZsZb5OXYhib99taYVI9gGMsMI8LObxzUc-MMvun8WWznSWb9o3RfA5YKV7rHynZfHhc5g7IPCWOwcQciDCqAlkKjPp-H-UH-cWEZd2NCkIrpAsgaOzdGcBuELU5gCLt-Hlt5XUYeHMpPar97GV-KV9l9Y1X2ncRUp2eG6dvgRTPaeKvzkQ7fCSccTmLCFZZ6BCBqvjs4UhW3QJCHo4QtSIjOjExLvHtPsAuVRzQu9s_0JZugrZo-ZPHAXUey232qFLQOmarN6vJuG2ga06MMShjcOszslpVuk0cqqy4IRwWMJ8pWw"}' headers: content-length: - - '2115' + - '2254' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:33 GMT + - Thu, 07 Jul 2022 03:15:13 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK - request: - body: '{"location": "westus", "properties": {"policySigningCertificates": {"keys": - [{"alg": "RS256", "kty": "RSA", "use": "sig", "x5c": ["MIIC1jCCAb6gAwIBAgIISQGD9EFjB+YwDQYJKoZIhvcNAQELBQAwIjEgMB4GA1UEAxMXQXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZTAwHhcNMjAxMTIzMTgyMDUzWhcNMjExMTIzMTgyMDUzWjAiMSAwHgYDVQQDExdBdHRlc3RhdGlvbkNlcnRpZmljYXRlMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJrEeMJZ7PM5UBEm8hiCKDhzaP6clXvHfwDHQry/ut/yG1An0bw1U6nSoPEmcar0G5Zf1MDxjVNtAyB6IY8J/8ZAGxxQgUVlwWGVkEzZFXBUA7i7Pt5DVA4V6+BgjxSe0BYZFbhNqNstxkiCrn60U60AE5X+A53Rof1TRCrMsKl4PT4Pyp3QKMUYCioFSwzNAPiO/O/+HqbH1zkSKZQxznnVPeraAr1sMZJmDyrQO/PYLLpr1qqIF6Jbln6Dzr3pnn1y4Z/NO2itPq2NMj+q67QCnSW8/qbZnWvS5xvKQzATyUqZ8mOJsmI8TSNk/0L2Piy/MByix7f161CkcFmKSy0CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAgVJUdBitnwvMt7or/T2Z8tKBQFlz1UqURFTTM0Ar66alvcixUbYGx1TySJNinoWIBQ9OPjgLkWP2EQEKoRxq7Sbtlj5a5ED6V4r8tlz4HJ647s23etnREkj9tOFovMf8NtSUx3FNpaEGZl2LRVGww+lU8PwH3/b3ReBdtaA7kfaV5+ixedcdSyKQuVATmvMI713P8VPl6MWmsMJtkV3XV/YMEsQ+GYqMr7kKXl13yeuEfU2VVEQsZ/1tgoobeVKiQ+Tqb0u2Nds+KjdHvaMbx2R8zL3Yu7iGJQfwuiMmuLRBRpIAqMlQFKK6dX9qz6ObOMsR9is6zP6CvlFpEzo5FQ=="]}]}}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - attestation create + - attestation policy show Connection: - keep-alive - Content-Length: - - '1114' - Content-Type: - - application/json ParameterSetName: - - -l -n -g --certs-input-path + - -n -g --attestation-type User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003?api-version=2020-10-01 + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003","name":"att2000003","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2000003.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002","name":"att1000002","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att1000002.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '447' + - '355' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:42 GMT + - Thu, 07 Jul 2022 03:15:13 GMT expires: - '-1' - location: - - https://att2000003.wus.attest.azure.net/ pragma: - no-cache server: - Kestrel strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 - x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - 1.11.01987.157 status: - code: 201 - message: Created + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python + accept-language: + - en-US + method: GET + uri: https://att1000002.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave + response: + body: + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0MXFoNzRvcm5oamx4NC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczMTYsImlhdCI6MTY1NzE2MzcxNiwiaXNzIjoiaHR0cHM6Ly9hdHQxcWg3NG9ybmhqbHg0Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzE2LCJ4LW1zLXBvbGljeSI6ImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNkltUnRWbmxqTW14Mlltb3daMDFUTkhkUE1rWXhaRWRvZG1OdGJEWlpXRkp3WWpJMWVXUlhlR3hqTTNNNVVHbENkMXBZU25SaFdGRnZTMVIwT1U4eWJIcGpNMVpvWW0xT2JHTnVWbk5hV0U0M1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZkc2VreFhVbXhaYmxadVdqSkdhV0pIVldsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbkJqZVRGcldsZEtNVm95WkdoWmJYaHNTV2wzWjJSdFJuTmtWMVU1V1hrMU1sbFhlREZhVTJzM1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZjeGVXTXliRzVpYlZaNVNXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxqTW14dVltMVdlVWxwZDJka2JVWnpaRmRWT1ZsNU5USlpWM2d4V2xOck4xbDZjR0prU0d4M1dsUXdPVWx1WjNSaVdFMTBZekprTkV4WE1YbGFWelZxWWtkR01scFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRtNWxRekYwWTIxV2RWa3llR2hrYlZWcFRFTkNNbGxYZURGYVZERnFURzVhYUdKSVZteExWSFJxVDJ4ME1HVllRbXhRVkRCcFpVTXhkR041TVhwYU0yZDBZMGhLZGxwSVZtcGtRekZ3V2tOS1pFbEVNQzFKUjJ4Nll6TldiRXRJVWpWalIxVTVTVzVDZVdJeVVqRlpNMUYwWVZkUmFVeERRakpaVjNneFdsUXhha3h1V21oaVNGWnNTMVIwYWs5c2REQmxXRUpzVUZRd2FXVkRNWFJqZVRGNldqTm5kR016V25WSmJEQm5VRlEwWjJGWVRucGtWMVZ2WkVoc2QxcFVNR2xqTTFwMVNXbDNaMlJ0Um5Oa1YxVTVXWGsxTWxsWGVERmFVMnMzV1hwd1ltUkliSGRhVkRBNVNXNW5kR0pZVFhSWldGSXdXbGhPTUZsWVVuQmlNalIwWkVoc2QxcFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVVteGFVMGx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE16QTNJbjAuIn0.Otyu5prwjLuiWF72klMDmvGyV3u1D8CGXKo0w9kRFYOM3-6BOxpxEMdUsxNNxPzcXYUBBP-I7EHenhgIHnksNaRpFddn7LbDAxOvernGpILnBt95CrUxToAqdXkl0_agzs65YtrEoi0wIp3LtafHnrmsr6_EHB8wSLmi4l4d2SyhNiH9MtNdnpjcgQBpILghOSdP2-BTxpO9vGcPj1R4MdN7KH5dZHWxOO-_DjaqdzVzo0COuwYOTHIL449FVyOBcqCNjGd4LLncF0SShhwnzB1F0-md-OKVVZBDEwM5nYumWSeU_8pO9N0h5N6QxuRHHpXniM47eSlsmDw0Rjrgjg"}' + headers: + content-length: + - '1966' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 07 Jul 2022 03:15:15 GMT + server: + - Kestrel + x-ms-maa-service-version: + - 1.11.01987.157 + status: + code: 200 + message: OK - request: body: null headers: @@ -545,28 +569,28 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - attestation policy show + - attestation policy set Connection: - keep-alive ParameterSetName: - - -n -g --attestation-type + - -n -g --attestation-type -f --policy-format User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003","name":"att2000003","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2000003.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002","name":"att1000002","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att1000002.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '447' + - '355' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:43 GMT + - Thu, 07 Jul 2022 03:15:17 GMT expires: - '-1' pragma: @@ -582,12 +606,12 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK - request: - body: null + body: '"eyAiYWxnIjoiUlMyNTYiLCAieDVjIjogWyJNSUlETERDQ0FoU2dBd0lCQWdJSVpTYW5zQ1djS1RNd0RRWUpLb1pJaHZjTkFRRUxCUUF3RnpFVk1CTUdBMVVFQXd3TVRXRmhWR1Z6ZEVObGNuUXhNQ0FYRFRJd01EUXlOVEF3TURBd01Gb1lEekl3TnpBd05ESTFNREF3TURBd1dqQVhNUlV3RXdZRFZRUUREQXhOWVdGVVpYTjBRMlZ5ZERFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNjbFVEcGJnVDM3My9GZUZCS0lwZTFoL3k0dTM2Z09NSTJOcFZVS3pVZ2krdVp5U042dTE5OVlESEtwYVVUZE1iNzd6THdCRnJmdWx4SHo3aVkyTEFWTmo5R01kZXpIbGdrZDgyaTJ0N2Rmd3hkbG8xZTlrbGFhQmUrTEZWL1dITDJrN1JSeG5mRFU2YktrK3lkWWY4REtSRUdyZEc2bzJqRW1CQVBxREQzaSszNENVVjlyTnk2bW5VTGI1ZjFDZnI0eERZTEdUTDNyS0VDaU12SFAyVllnbTBneEpmdXlDR1laYkRmSWVtcTA3QmlMYmt4dm4xOG1qR0dzNHlCQ0ZLZmZrMG9Ya1FHMU9uRHpyWVdObGVtNW1mUE5DY1RqOUVUYzBqbEI3b2dMcVZWNUxxOW9pb0M1S3ErR3hLaWwxSk51UnQrZkxEZTFtZWlXWitldTg5N0FnTUJBQUdqZWpCNE1FWUdBMVVkSXdRL01EMkFGRWhERjBadDFqclNqQ0ZDVnZacG5YWTdvdk4xb1J1a0dUQVhNUlV3RXdZRFZRUUREQXhOWVdGVVpYTjBRMlZ5ZERHQ0NHVW1wN0FsbkNrek1CMEdBMVVkRGdRV0JCUklReGRHYmRZNjBvd2hRbGIyYVoxMk82THpkVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUE5MHJYSlY4WmpHcWRscWVZeEV3RTBoeENhdHBaY04yckdjUkMvVVJ0Um5KQlFiV3BCKzc5ZHpaSFhPK1VJRjd6aFZVd3czZVF5UXVhaDBhQzZzNnRCVUtqZ0Zqa0s5Wkw2U2MvNHFweWI2UkUxSGdqUkNjZWdtVSs4MENkY3F4Z29xWFRVeUZXeXFtQWxzSFh6VzN4aWpyTjFIOXpkdDdwdHNiQ1hPNHBiME5qcXo1NHpzS01RTDg0WlRNOWZYamt0N2FacEtuaGw1TlAzMTFTQ01VTzRrem1xaW0zMzFScFd2dXhabnQxZjFrbDRRZUxoL1lBRjcrT0VLTmFGZ3l4T1hGMkROdk1GRFlFV0V3NUY5dkRrMFZlc1VFck9nYTN2RmxJWTl5ZkU4aEY3OXFudHNNWVFuY0pBRklBNVJaZmZMVG45SGxZbVp0SmVPWmxDR3l6aSJdfQ.eyJBdHRlc3RhdGlvblBvbGljeSI6InsgXCIkdmVyc2lvblwiOiAxLCAgICAgICAgICAgICAgICAgICAgIFwiJGNsYWltc1wiOiBbICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXMtZGVidWdnYWJsZVwiLCAgICAgICAgICAgICAgICAgICAgICAgICBcInNneC1tcnNpZ25lclwiLCAgICAgICAgICAgICAgICAgICAgICAgICBcInNneC1tcmVuY2xhdmVcIiwgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcm9kdWN0LWlkXCIsICAgICAgICAgICAgICAgICAgICAgICAgIFwic3ZuXCIsICAgICAgICAgICAgICAgICAgICAgICAgIFwidGVlXCIsICAgICAgICAgICAgICAgICAgICAgICAgIFwiTWluaW1hbFN2blwiLCAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2RJZENoZWNrXCIsICAgICAgICAgICAgICAgICAgICAgICAgIFwiSW50ZWxFbmNsYXZlXCIsICAgICAgICAgICAgICAgICAgICAgICAgIFwiTm90RGVidWdnYWJsZVwiLCAgICAgICAgICAgICAgICAgICAgICAgICBcIlNxbFNlcnZlclNpZ25lclwiICAgICAgICAgICAgICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAgICBcIk1pbmltYWxTdm5cIiA6IHtcInllc1wiOntcIiRtaW4tc3ZuXCI6IDAsIFwiJG1hbmRhdG9yeVwiOnRydWUsIFwiJHZpc2libGVcIjpmYWxzZX19LCAgICAgICAgICAgICAgICAgICAgIFwiUHJvZElkQ2hlY2tcIiA6IHtcInllc1wiOntcIiRwcm9kdWN0LWlkXCI6IDQ2MzksIFwiJG1hbmRhdG9yeVwiOnRydWUsIFwiJHZpc2libGVcIjpmYWxzZX19LCAgICAgICAgICAgICAgICAgICAgIFwiSW50ZWxFbmNsYXZlXCI6IHtcInllc1wiOiB7XCIkdGVlXCI6XCJzZ3hcIiwgXCIkbWFuZGF0b3J5XCI6dHJ1ZSwgXCIkdmlzaWJsZVwiOmZhbHNlfX0sICAgICAgICAgICAgICAgICAgICAgXCJOb3REZWJ1Z2dhYmxlXCI6IHtcInllc1wiOntcIiRpcy1kZWJ1Z2dhYmxlXCI6ZmFsc2UsIFwiJG1hbmRhdG9yeVwiOnRydWUsIFwiJHZpc2libGVcIjpmYWxzZX19LCAgICAgICAgICAgICAgICAgICAgIFwiU3FsU2VydmVyU2lnbmVyXCI6e1wieWVzXCI6e1wiJHNneC1tcnNpZ25lclwiOiBcIjg1NjgyMzEyMzAyNzAxMEVEMENFMUY3RDUxNUI2QkUxRDc1MDVFNTgyOEZCQTE5Nzg1Njc2MDMwRDhGRkZDMjhcIiwgXCIkbWFuZGF0b3J5XCI6dHJ1ZSwgXCIkdmlzaWJsZVwiOmZhbHNlfX0sICAgICAgICAgICAgICAgICAgICAgXCIkYWxsb3ctZGVidWdnYWJsZVwiOiB0cnVlLCAgICAgICAgICAgICAgICAgICAgIFwiaXMtZGVidWdnYWJsZVwiOiBcIiRpcy1kZWJ1Z2dhYmxlXCIsICAgICAgICAgICAgICAgICAgICAgXCJzZ3gtbXJzaWduZXJcIjogXCIkc2d4LW1yc2lnbmVyXCIsICAgICAgICAgICAgICAgICAgICAgXCJzZ3gtbXJlbmNsYXZlXCI6IFwiJHNneC1tcmVuY2xhdmVcIiwgICAgICAgICAgICAgICAgICAgICBcInByb2R1Y3QtaWRcIjogXCIkcHJvZHVjdC1pZFwiLCAgICAgICAgICAgICAgICAgICAgIFwic3ZuXCI6IFwiJHN2blwiLCAgICAgICAgICAgICAgICAgICAgIFwidGVlXCI6IFwiJHRlZVwiICAgICAgICAgICAgICAgICB9In0.NtRX-_kd8nqr8sIAA7J3R12VAzlNTqzWJQ7PbZPNTgSm6b2EZuS_zj9-cJThL3iu_HxIfqjFjg09W3n-dnWUXLwdyFRPfVcg00vqqD802_mo-RilngeqPmD47niNp5trubKYD1S6Ayt22WIyi1vwOqDYkNNMUHT_uykZX7c7JEJJrRrv-rPgdOJK051R87BZMIv--GYKpiluP-utaa790X6A77zAsgifLRbwBR84VvVlSYTpCjctDH87U_N01t7CS0Ccf1Fz9ifN5b4Cl-TlS6xqknGt-R7PRjeuQnh97jehsNHZQx7npJV3ArkuYRjuRLIzbXZ7JbUKrPh_0CQH0g"' headers: Accept: - application/json @@ -595,30 +619,124 @@ interactions: - gzip, deflate Connection: - keep-alive + Content-Length: + - '3899' + Content-Type: + - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US - method: GET - uri: https://att2000003.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave + method: PUT + uri: https://att1000002.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave + response: + body: + string: '{"error":{"code":"PolicyParsingError","message":"Attestation Enclave + operation failed with 65526: Policy document must be Base64Url encoded. { + \"$version\": 1, \"$claims\": [ \"is-debuggable\", \"sgx-mrsigner\", \"sgx-mrenclave\", \"product-id\", \"svn\", \"tee\", \"MinimalSvn\", \"ProdIdCheck\", \"IntelEnclave\", \"NotDebuggable\", \"SqlServerSigner\" ], \"MinimalSvn\" + : {\"yes\":{\"$min-svn\": 0, \"$mandatory\":true, \"$visible\":false}}, \"ProdIdCheck\" + : {\"yes\":{\"$product-id\": 4639, \"$mandatory\":true, \"$visible\":false}}, \"IntelEnclave\": + {\"yes\": {\"$tee\":\"sgx\", \"$mandatory\":true, \"$visible\":false}}, \"NotDebuggable\": + {\"yes\":{\"$is-debuggable\":false, \"$mandatory\":true, \"$visible\":false}}, \"SqlServerSigner\":{\"yes\":{\"$sgx-mrsigner\": + \"856823123027010ED0CE1F7D515B6BE1D7505E5828FBA19785676030D8FFFC28\", \"$mandatory\":true, + \"$visible\":false}}, \"$allow-debuggable\": true, \"is-debuggable\": + \"$is-debuggable\", \"sgx-mrsigner\": \"$sgx-mrsigner\", \"sgx-mrenclave\": + \"$sgx-mrenclave\", \"product-id\": \"$product-id\", \"svn\": + \"$svn\", \"tee\": \"$tee\" } does not + appear to be base64url encoded: 0xfff6: ''Invalid policy was specified;\r\nRETURN_IF_ERROR(''ParseAttestationPolicyJws(clientApiVersion, + attestationPolicy, parsedPolicy, policySigner)'') failed with 0xfff6: ''Invalid + policy was specified''\r\nRETURN_IF_ERROR(''this->SetAttestationPolicyInternalNoLock( + (clientApiVersion ? clientApiVersion : std::string()), teeKind, PolicyKind::Effective, + *newPolicyJwt)'') failed with 0xfff6: ''Invalid policy was specified''\r\nRETURN_IF_ERROR(''pEnclave->SetCurrentPolicy(clientApiVersion, + teeKind, *suppliedClaims, &jwtBuffer, returnedBuffer)'') failed with 0xfff6: + ''Invalid policy was specified''\r\n","innererror":{"code":"PolicyParsingError","message":"Attestation + Enclave operation failed with 65526: Policy document must be Base64Url encoded. + { \"$version\": 1, \"$claims\": [ \"is-debuggable\", \"sgx-mrsigner\", \"sgx-mrenclave\", \"product-id\", \"svn\", \"tee\", \"MinimalSvn\", \"ProdIdCheck\", \"IntelEnclave\", \"NotDebuggable\", \"SqlServerSigner\" ], \"MinimalSvn\" + : {\"yes\":{\"$min-svn\": 0, \"$mandatory\":true, \"$visible\":false}}, \"ProdIdCheck\" + : {\"yes\":{\"$product-id\": 4639, \"$mandatory\":true, \"$visible\":false}}, \"IntelEnclave\": + {\"yes\": {\"$tee\":\"sgx\", \"$mandatory\":true, \"$visible\":false}}, \"NotDebuggable\": + {\"yes\":{\"$is-debuggable\":false, \"$mandatory\":true, \"$visible\":false}}, \"SqlServerSigner\":{\"yes\":{\"$sgx-mrsigner\": + \"856823123027010ED0CE1F7D515B6BE1D7505E5828FBA19785676030D8FFFC28\", \"$mandatory\":true, + \"$visible\":false}}, \"$allow-debuggable\": true, \"is-debuggable\": + \"$is-debuggable\", \"sgx-mrsigner\": \"$sgx-mrsigner\", \"sgx-mrenclave\": + \"$sgx-mrenclave\", \"product-id\": \"$product-id\", \"svn\": + \"$svn\", \"tee\": \"$tee\" } does not + appear to be base64url encoded: 0xfff6: ''Invalid policy was specified;\r\nRETURN_IF_ERROR(''ParseAttestationPolicyJws(clientApiVersion, + attestationPolicy, parsedPolicy, policySigner)'') failed with 0xfff6: ''Invalid + policy was specified''\r\nRETURN_IF_ERROR(''this->SetAttestationPolicyInternalNoLock( + (clientApiVersion ? clientApiVersion : std::string()), teeKind, PolicyKind::Effective, + *newPolicyJwt)'') failed with 0xfff6: ''Invalid policy was specified''\r\nRETURN_IF_ERROR(''pEnclave->SetCurrentPolicy(clientApiVersion, + teeKind, *suppliedClaims, &jwtBuffer, returnedBuffer)'') failed with 0xfff6: + ''Invalid policy was specified''\r\n"}}}' + headers: + content-type: + - application/json; charset=utf-8 + date: + - Thu, 07 Jul 2022 03:15:19 GMT + server: + - Kestrel + transfer-encoding: + - chunked + x-ms-maa-service-version: + - 1.11.01987.157 + status: + code: 400 + message: Bad Request +- request: + body: '{"location": "westus", "properties": {"policySigningCertificates": {"keys": + [{"alg": "RS256", "kty": "RSA", "use": "sig", "x5c": ["MIIC1jCCAb6gAwIBAgIISQGD9EFjB+YwDQYJKoZIhvcNAQELBQAwIjEgMB4GA1UEAxMXQXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZTAwHhcNMjAxMTIzMTgyMDUzWhcNMjExMTIzMTgyMDUzWjAiMSAwHgYDVQQDExdBdHRlc3RhdGlvbkNlcnRpZmljYXRlMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJrEeMJZ7PM5UBEm8hiCKDhzaP6clXvHfwDHQry/ut/yG1An0bw1U6nSoPEmcar0G5Zf1MDxjVNtAyB6IY8J/8ZAGxxQgUVlwWGVkEzZFXBUA7i7Pt5DVA4V6+BgjxSe0BYZFbhNqNstxkiCrn60U60AE5X+A53Rof1TRCrMsKl4PT4Pyp3QKMUYCioFSwzNAPiO/O/+HqbH1zkSKZQxznnVPeraAr1sMZJmDyrQO/PYLLpr1qqIF6Jbln6Dzr3pnn1y4Z/NO2itPq2NMj+q67QCnSW8/qbZnWvS5xvKQzATyUqZ8mOJsmI8TSNk/0L2Piy/MByix7f161CkcFmKSy0CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAgVJUdBitnwvMt7or/T2Z8tKBQFlz1UqURFTTM0Ar66alvcixUbYGx1TySJNinoWIBQ9OPjgLkWP2EQEKoRxq7Sbtlj5a5ED6V4r8tlz4HJ647s23etnREkj9tOFovMf8NtSUx3FNpaEGZl2LRVGww+lU8PwH3/b3ReBdtaA7kfaV5+ixedcdSyKQuVATmvMI713P8VPl6MWmsMJtkV3XV/YMEsQ+GYqMr7kKXl13yeuEfU2VVEQsZ/1tgoobeVKiQ+Tqb0u2Nds+KjdHvaMbx2R8zL3Yu7iGJQfwuiMmuLRBRpIAqMlQFKK6dX9qz6ObOMsR9is6zP6CvlFpEzo5FQ=="]}]}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - attestation create + Connection: + - keep-alive + Content-Length: + - '1114' + Content-Type: + - application/json + ParameterSetName: + - -l -n -g --certs-input-path + User-Agent: + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003?api-version=2020-10-01 response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0Mno0c2hrcGxwNmxtYS53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5Nzg2LCAiaWF0IjogMTYwNjk2NjE4NiwgImlzcyI6ICJodHRwczovL2F0dDJ6NHNoa3BscDZsbWEud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjE4NiwgIngtbXMtcG9saWN5IjogImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNklDSmtiVlo1WXpKc2RtSnFNR2ROVXpSM1R6SkdNV1JIYUhaamJXdzJXVmhTY0dJeU5YbGtWM2hzWXpOMGFrOXNkREJsV0VKc1VGUXdhVXBIYkhwTVYxSnNXVzVXYmxveVJtbGlSMVZwV0ZOQk9WQnBRbmRhV0VwMFlWaFJiMHRVZERsUE1teDZZek5XYUdKdFRteGpibFp6V2xoT04xbDZjR0prU0d4M1dsUXdPVWxwVW5CamVURnJXbGRLTVZveVpHaFpiWGhzU1d3d1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZVmhOZEZwSFZtbGtWMlJ1V1ZkS2MxcFRTWE5KU0Zwb1lraFdiRkJYVFhWa2JVWnpaRmRWY0U4eVRUWlhNMUkxWTBkVk9WQlRTV3RqTW1RMFRGY3hlV015Ykc1aWJWWjVTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6SmtORXhYTVhsak1teHVZbTFXZVVscGQyZGtiVVp6WkZkVk9WbDVOVEpaVjNneFdsTnJOMWw2Y0dKa1NHeDNXbFF3T1VscFVucGFNMmQwWWxoS2JHSnRUbk5aV0Zwc1NXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxhVnpWcVlrZEdNbHBUU1hOSlNGcG9Za2hXYkZCWFRYVmtiVVp6WkZkVmNFOHlUVFpYTTFJMVkwZFZPVkJUU1d0alNFcDJXa2hXYW1SRE1YQmFRMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJrSjVZakpTTVZrelVYUmhWMUZwVEVOQ01sbFhlREZhVkRGcVRHNWFhR0pJVm14TFZIUnFUMngwTUdWWVFteFFWREJwU2toT01tSnBTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRqSmlhVWx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE1rMDJWek5TTldOSFZUbFFVMGxyWkVkV2JFbHNNR2RRVkRSbllWaE9lbVJYVlc5a1NHeDNXbFF3YVdSSFZteEphWGRuWkcxR2MyUlhWVGxaZVRVeVdWZDRNVnBUYXpkbVZITWlmUS4ifQ.qJIt_5Nb40VKImhnoWtB0HOSAPKegQfrm1gP9z1vAj-N5Z1hQ2oiRfF7WuEFq5HgEvrQmBQml-589O9_ZS88zOst4_Bc7iZZy_OtNY-1T9aDHaaEIv1G6Zijp3Kp99WYoKAt7LSntkapNcTcl_LBixngbsrWmaPsx1WvsxOztDQ"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003","name":"att2000003","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2000003.wus.attest.azure.net"}}' headers: + cache-control: + - no-cache content-length: - - '1767' + - '355' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:45 GMT + - Thu, 07 Jul 2022 03:15:28 GMT + expires: + - '-1' + location: + - https://att2000003.wus.attest.azure.net/ + pragma: + - no-cache server: - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 + x-ms-ratelimit-remaining-subscription-writes: + - '1199' status: - code: 200 - message: OK + code: 201 + message: Created - request: body: null headers: @@ -627,28 +745,28 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - attestation policy set + - attestation policy show Connection: - keep-alive ParameterSetName: - - -n -g --attestation-type -f --policy-format + - -n -g --attestation-type User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003","name":"att2000003","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2000003.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003","name":"att2000003","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2000003.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '447' + - '355' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:47 GMT + - Thu, 07 Jul 2022 03:15:30 GMT expires: - '-1' pragma: @@ -664,12 +782,12 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK - request: - body: '"eyJhbGciOiJSU0EyNTYiLCJ4NWMiOlsiTUlJQzFqQ0NBYjZnQXdJQkFnSUlTUUdEOUVGakJcdTAwMkJZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SWpFZ01CNEdBMVVFQXhNWFFYUjBaWE4wWVhScGIyNURaWEowYVdacFkyRjBaVEF3SGhjTk1qQXhNVEl6TVRneU1EVXpXaGNOTWpFeE1USXpNVGd5TURVeldqQWlNU0F3SGdZRFZRUURFeGRCZEhSbGMzUmhkR2x2YmtObGNuUnBabWxqWVhSbE1EQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpyRWVNSlo3UE01VUJFbThoaUNLRGh6YVA2Y2xYdkhmd0RIUXJ5L3V0L3lHMUFuMGJ3MVU2blNvUEVtY2FyMEc1WmYxTUR4alZOdEF5QjZJWThKLzhaQUd4eFFnVVZsd1dHVmtFelpGWEJVQTdpN1B0NURWQTRWNlx1MDAyQkJnanhTZTBCWVpGYmhOcU5zdHhraUNybjYwVTYwQUU1WFx1MDAyQkE1M1JvZjFUUkNyTXNLbDRQVDRQeXAzUUtNVVlDaW9GU3d6TkFQaU8vTy9cdTAwMkJIcWJIMXprU0taUXh6bm5WUGVyYUFyMXNNWkptRHlyUU8vUFlMTHByMXFxSUY2SmJsbjZEenIzcG5uMXk0Wi9OTzJpdFBxMk5Nalx1MDAyQnE2N1FDblNXOC9xYlpuV3ZTNXh2S1F6QVR5VXFaOG1PSnNtSThUU05rLzBMMlBpeS9NQnlpeDdmMTYxQ2tjRm1LU3kwQ0F3RUFBYU1RTUE0d0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZ1ZKVWRCaXRud3ZNdDdvci9UMlo4dEtCUUZsejFVcVVSRlRUTTBBcjY2YWx2Y2l4VWJZR3gxVHlTSk5pbm9XSUJROU9QamdMa1dQMkVRRUtvUnhxN1NidGxqNWE1RUQ2VjRyOHRsejRISjY0N3MyM2V0blJFa2o5dE9Gb3ZNZjhOdFNVeDNGTnBhRUdabDJMUlZHd3dcdTAwMkJsVThQd0gzL2IzUmVCZHRhQTdrZmFWNVx1MDAyQml4ZWRjZFN5S1F1VkFUbXZNSTcxM1A4VlBsNk1XbXNNSnRrVjNYVi9ZTUVzUVx1MDAyQkdZcU1yN2tLWGwxM3lldUVmVTJWVkVRc1ovMXRnb29iZVZLaVFcdTAwMkJUcWIwdTJOZHNcdTAwMkJLamRIdmFNYngyUjh6TDNZdTdpR0pRZnd1aU1tdUxSQlJwSUFxTWxRRktLNmRYOXF6Nk9iT01zUjlpczZ6UDZDdmxGcEV6bzVGUT09Il19.eyJBdHRlc3RhdGlvblBvbGljeSI6ImRtVnljMmx2YmoweExqQTdZWFYwYUc5eWFYcGhkR2x2Ym5KMWJHVnpJSHRqT2x0MGVYQmxQVDBpSkdsekxXUmxZblZuWjJGaWJHVWlYU0FtSmlCYmRtRnNkV1U5UFhSeWRXVmRJRDAtSUdSbGJua29LVHM5UGlCd1pYSnRhWFFvS1R0OU8ybHpjM1ZoYm1ObGNuVnNaWE1nZXlBZ0lDQmpPbHQwZVhCbFBUMGlKR2x6TFdSbFluVm5aMkZpYkdVaVhTQTlQaUJwYzNOMVpTaDBlWEJsUFNKT2IzUkVaV0oxWjJkaFlteGxJaXdnZG1Gc2RXVTlZeTUyWVd4MVpTazdJQ0FnSUdNNlczUjVjR1U5UFNJa2FYTXRaR1ZpZFdkbllXSnNaU0pkSUQwLUlHbHpjM1ZsS0hSNWNHVTlJbWx6TFdSbFluVm5aMkZpYkdVaUxDQjJZV3gxWlQxakxuWmhiSFZsS1RzZ0lDQWdZenBiZEhsd1pUMDlJaVJ6WjNndGJYSnphV2R1WlhJaVhTQTlQaUJwYzNOMVpTaDBlWEJsUFNKelozZ3RiWEp6YVdkdVpYSWlMQ0IyWVd4MVpUMWpMblpoYkhWbEtUc2dJQ0FnWXpwYmRIbHdaVDA5SWlSelozZ3RiWEpsYm1Oc1lYWmxJbDBnUFQ0Z2FYTnpkV1VvZEhsd1pUMGljMmQ0TFcxeVpXNWpiR0YyWlNJc0lIWmhiSFZsUFdNdWRtRnNkV1VwT3lBZ0lDQmpPbHQwZVhCbFBUMGlKSEJ5YjJSMVkzUXRhV1FpWFNBOVBpQnBjM04xWlNoMGVYQmxQU0p3Y205a2RXTjBMV2xrSWl3Z2RtRnNkV1U5WXk1MllXeDFaU2s3SUNBZ0lHTTZXM1I1Y0dVOVBTSWtjM1p1SWwwZ1BUNGdhWE56ZFdVb2RIbHdaVDBpYzNadUlpd2dkbUZzZFdVOVl5NTJZV3gxWlNrN0lDQWdJR002VzNSNWNHVTlQU0lrZEdWbElsMGdQVDRnYVhOemRXVW9kSGx3WlQwaWRHVmxJaXdnZG1Gc2RXVTlZeTUyWVd4MVpTazdmVHMifQ.c0l-xqGDFQ8_kCiQ0_vvmDQYG_u544CYmoiucPNxd9MU8ZXT69UD59UgSuya2yl241NoVXA_0LaMEB2re0JnTbPD_dliJn96HnIOqnxXxRh7rKbu65ECUOMWPXbyKQMZ0I3Wjhgt_XyyhfEiQGfJfGzA95-wm6yWqrmW7dMI7JkczG9ideztnr0bsw5NRsIWBXOjVy7Bg66qooTnODS_OqeQ4iaNsN-xjMElHABUxXhpBt2htbhemDU1X41o8clQgG84aEHCgkE07pR-7IL_Fn2gWuPVC66yxAp00W1ib2L-96q78D9J52HPdeDCSFio2RL7r5lOtz8YkQnjacb6xA"' + body: null headers: Accept: - application/json @@ -677,31 +795,27 @@ interactions: - gzip, deflate Connection: - keep-alive - Content-Length: - - '2864' - Content-Type: - - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US - method: PUT + method: GET uri: https://att2000003.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0Mno0c2hrcGxwNmxtYS53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5Nzg5LCAiaWF0IjogMTYwNjk2NjE4OSwgImlzcyI6ICJodHRwczovL2F0dDJ6NHNoa3BscDZsbWEud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjE4OSwgIngtbXMtcG9saWN5LXJlc3VsdCI6ICJVcGRhdGVkIiwgIngtbXMtcG9saWN5LXNpZ25lciI6IHsiYWxnIjogIlJTMjU2IiwgImt0eSI6ICJSU0EiLCAidXNlIjogInNpZyIsICJ4NWMiOiBbIk1JSUMxakNDQWI2Z0F3SUJBZ0lJU1FHRDlFRmpCK1l3RFFZSktvWklodmNOQVFFTEJRQXdJakVnTUI0R0ExVUVBeE1YUVhSMFpYTjBZWFJwYjI1RFpYSjBhV1pwWTJGMFpUQXdIaGNOTWpBeE1USXpNVGd5TURVeldoY05NakV4TVRJek1UZ3lNRFV6V2pBaU1TQXdIZ1lEVlFRREV4ZEJkSFJsYzNSaGRHbHZia05sY25ScFptbGpZWFJsTURDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSnJFZU1KWjdQTTVVQkVtOGhpQ0tEaHphUDZjbFh2SGZ3REhRcnkvdXQveUcxQW4wYncxVTZuU29QRW1jYXIwRzVaZjFNRHhqVk50QXlCNklZOEovOFpBR3h4UWdVVmx3V0dWa0V6WkZYQlVBN2k3UHQ1RFZBNFY2K0JnanhTZTBCWVpGYmhOcU5zdHhraUNybjYwVTYwQUU1WCtBNTNSb2YxVFJDck1zS2w0UFQ0UHlwM1FLTVVZQ2lvRlN3ek5BUGlPL08vK0hxYkgxemtTS1pReHpublZQZXJhQXIxc01aSm1EeXJRTy9QWUxMcHIxcXFJRjZKYmxuNkR6cjNwbm4xeTRaL05PMml0UHEyTk1qK3E2N1FDblNXOC9xYlpuV3ZTNXh2S1F6QVR5VXFaOG1PSnNtSThUU05rLzBMMlBpeS9NQnlpeDdmMTYxQ2tjRm1LU3kwQ0F3RUFBYU1RTUE0d0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZ1ZKVWRCaXRud3ZNdDdvci9UMlo4dEtCUUZsejFVcVVSRlRUTTBBcjY2YWx2Y2l4VWJZR3gxVHlTSk5pbm9XSUJROU9QamdMa1dQMkVRRUtvUnhxN1NidGxqNWE1RUQ2VjRyOHRsejRISjY0N3MyM2V0blJFa2o5dE9Gb3ZNZjhOdFNVeDNGTnBhRUdabDJMUlZHd3crbFU4UHdIMy9iM1JlQmR0YUE3a2ZhVjUraXhlZGNkU3lLUXVWQVRtdk1JNzEzUDhWUGw2TVdtc01KdGtWM1hWL1lNRXNRK0dZcU1yN2tLWGwxM3lldUVmVTJWVkVRc1ovMXRnb29iZVZLaVErVHFiMHUyTmRzK0tqZEh2YU1ieDJSOHpMM1l1N2lHSlFmd3VpTW11TFJCUnBJQXFNbFFGS0s2ZFg5cXo2T2JPTXNSOWlzNnpQNkN2bEZwRXpvNUZRPT0iXX0sICJ4LW1zLXBvbGljeS10b2tlbi1oYXNoIjogIlN5TklRSlczdzZGb2lMZzYzR2lEMTZpTG05anRrSGlWWml3MnNoRUFpWW8ifQ.cQ-VVyH4VVymUZlFbyMfl92ohsAx2A_SGmg2vjvVCbXgxTIoq9qjg5BuY_lfdaFtQx3ZaXrPPLSYqNtFudfZYHWwzB2phxhHUl5zUq_SzCzuvNFMYZJDOTVpJJobMba4Z29Woxg-i9Pu7j286m_Afvh3rklYivcB7ku9dm97RtA"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0MjV4cXE2NDRwZGkzYi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczMzIsImlhdCI6MTY1NzE2MzczMiwiaXNzIjoiaHR0cHM6Ly9hdHQyNXhxcTY0NHBkaTNiLnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzMyLCJ4LW1zLXBvbGljeSI6ImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNkltUnRWbmxqTW14Mlltb3daMDFUTkhkUE1rWXhaRWRvZG1OdGJEWlpXRkp3WWpJMWVXUlhlR3hqTTNNNVVHbENkMXBZU25SaFdGRnZTMVIwT1U4eWJIcGpNMVpvWW0xT2JHTnVWbk5hV0U0M1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZkc2VreFhVbXhaYmxadVdqSkdhV0pIVldsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbkJqZVRGcldsZEtNVm95WkdoWmJYaHNTV2wzWjJSdFJuTmtWMVU1V1hrMU1sbFhlREZhVTJzM1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZjeGVXTXliRzVpYlZaNVNXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxqTW14dVltMVdlVWxwZDJka2JVWnpaRmRWT1ZsNU5USlpWM2d4V2xOck4xbDZjR0prU0d4M1dsUXdPVWx1WjNSaVdFMTBZekprTkV4WE1YbGFWelZxWWtkR01scFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRtNWxRekYwWTIxV2RWa3llR2hrYlZWcFRFTkNNbGxYZURGYVZERnFURzVhYUdKSVZteExWSFJxVDJ4ME1HVllRbXhRVkRCcFpVTXhkR041TVhwYU0yZDBZMGhLZGxwSVZtcGtRekZ3V2tOS1pFbEVNQzFKUjJ4Nll6TldiRXRJVWpWalIxVTVTVzVDZVdJeVVqRlpNMUYwWVZkUmFVeERRakpaVjNneFdsUXhha3h1V21oaVNGWnNTMVIwYWs5c2REQmxXRUpzVUZRd2FXVkRNWFJqZVRGNldqTm5kR016V25WSmJEQm5VRlEwWjJGWVRucGtWMVZ2WkVoc2QxcFVNR2xqTTFwMVNXbDNaMlJ0Um5Oa1YxVTVXWGsxTWxsWGVERmFVMnMzV1hwd1ltUkliSGRhVkRBNVNXNW5kR0pZVFhSWldGSXdXbGhPTUZsWVVuQmlNalIwWkVoc2QxcFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVVteGFVMGx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE16QTNJbjAuIn0.pYkxdmfKt4ywhexKaxYGRNd0rKZTBeFqomFyl6PjvVcXDvbO253hzCg_iNDXX-jL0joZ9_GxdKbphPNJ7b50grageiNiosUGqmOShUbfVBNs-Z1Sv10yPxGW6-YI4XscpU0IG6iq-JiCykw57tr8RYojiBJNc7HtZwL2tHs1nYl2dnkJ_uDNvgcM68HCwH19KbP9tcAIjV-jOLWuAlKNfubwAF8Z724Y0Ce9mW_pPGUJRyxv-cVbBrx897prbfnKSKmzEwSSn12srZNFStxcbXf9kzionbj60oTSJPprtDMOj0fZLE45HT3tqQCU3Y1KYkPwydrGbR_0GluRbJBJDQ"}' headers: content-length: - - '2083' + - '1966' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:49 GMT + - Thu, 07 Jul 2022 03:15:31 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -719,22 +833,22 @@ interactions: ParameterSetName: - -n -g --attestation-type -f --policy-format User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003","name":"att2000003","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2000003.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003","name":"att2000003","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"Isolated","status":"Ready","attestUri":"https://att2000003.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '447' + - '355' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:49 GMT + - Thu, 07 Jul 2022 03:15:32 GMT expires: - '-1' pragma: @@ -750,12 +864,12 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK - request: - body: null + body: '"eyJhbGciOiJSU0EyNTYiLCJ4NWMiOlsiTUlJQzFqQ0NBYjZnQXdJQkFnSUlTUUdEOUVGakJcdTAwMkJZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SWpFZ01CNEdBMVVFQXhNWFFYUjBaWE4wWVhScGIyNURaWEowYVdacFkyRjBaVEF3SGhjTk1qQXhNVEl6TVRneU1EVXpXaGNOTWpFeE1USXpNVGd5TURVeldqQWlNU0F3SGdZRFZRUURFeGRCZEhSbGMzUmhkR2x2YmtObGNuUnBabWxqWVhSbE1EQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpyRWVNSlo3UE01VUJFbThoaUNLRGh6YVA2Y2xYdkhmd0RIUXJ5L3V0L3lHMUFuMGJ3MVU2blNvUEVtY2FyMEc1WmYxTUR4alZOdEF5QjZJWThKLzhaQUd4eFFnVVZsd1dHVmtFelpGWEJVQTdpN1B0NURWQTRWNlx1MDAyQkJnanhTZTBCWVpGYmhOcU5zdHhraUNybjYwVTYwQUU1WFx1MDAyQkE1M1JvZjFUUkNyTXNLbDRQVDRQeXAzUUtNVVlDaW9GU3d6TkFQaU8vTy9cdTAwMkJIcWJIMXprU0taUXh6bm5WUGVyYUFyMXNNWkptRHlyUU8vUFlMTHByMXFxSUY2SmJsbjZEenIzcG5uMXk0Wi9OTzJpdFBxMk5Nalx1MDAyQnE2N1FDblNXOC9xYlpuV3ZTNXh2S1F6QVR5VXFaOG1PSnNtSThUU05rLzBMMlBpeS9NQnlpeDdmMTYxQ2tjRm1LU3kwQ0F3RUFBYU1RTUE0d0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZ1ZKVWRCaXRud3ZNdDdvci9UMlo4dEtCUUZsejFVcVVSRlRUTTBBcjY2YWx2Y2l4VWJZR3gxVHlTSk5pbm9XSUJROU9QamdMa1dQMkVRRUtvUnhxN1NidGxqNWE1RUQ2VjRyOHRsejRISjY0N3MyM2V0blJFa2o5dE9Gb3ZNZjhOdFNVeDNGTnBhRUdabDJMUlZHd3dcdTAwMkJsVThQd0gzL2IzUmVCZHRhQTdrZmFWNVx1MDAyQml4ZWRjZFN5S1F1VkFUbXZNSTcxM1A4VlBsNk1XbXNNSnRrVjNYVi9ZTUVzUVx1MDAyQkdZcU1yN2tLWGwxM3lldUVmVTJWVkVRc1ovMXRnb29iZVZLaVFcdTAwMkJUcWIwdTJOZHNcdTAwMkJLamRIdmFNYngyUjh6TDNZdTdpR0pRZnd1aU1tdUxSQlJwSUFxTWxRRktLNmRYOXF6Nk9iT01zUjlpczZ6UDZDdmxGcEV6bzVGUT09Il19.eyJBdHRlc3RhdGlvblBvbGljeSI6ImRtVnljMmx2YmoweExqQTdZWFYwYUc5eWFYcGhkR2x2Ym5KMWJHVnpJSHRqT2x0MGVYQmxQVDBpSkdsekxXUmxZblZuWjJGaWJHVWlYU0FtSmlCYmRtRnNkV1U5UFhSeWRXVmRJRDAtSUdSbGJua29LVHM5UGlCd1pYSnRhWFFvS1R0OU8ybHpjM1ZoYm1ObGNuVnNaWE1nZXlBZ0lDQmpPbHQwZVhCbFBUMGlKR2x6TFdSbFluVm5aMkZpYkdVaVhTQTlQaUJwYzNOMVpTaDBlWEJsUFNKT2IzUkVaV0oxWjJkaFlteGxJaXdnZG1Gc2RXVTlZeTUyWVd4MVpTazdJQ0FnSUdNNlczUjVjR1U5UFNJa2FYTXRaR1ZpZFdkbllXSnNaU0pkSUQwLUlHbHpjM1ZsS0hSNWNHVTlJbWx6TFdSbFluVm5aMkZpYkdVaUxDQjJZV3gxWlQxakxuWmhiSFZsS1RzZ0lDQWdZenBiZEhsd1pUMDlJaVJ6WjNndGJYSnphV2R1WlhJaVhTQTlQaUJwYzNOMVpTaDBlWEJsUFNKelozZ3RiWEp6YVdkdVpYSWlMQ0IyWVd4MVpUMWpMblpoYkhWbEtUc2dJQ0FnWXpwYmRIbHdaVDA5SWlSelozZ3RiWEpsYm1Oc1lYWmxJbDBnUFQ0Z2FYTnpkV1VvZEhsd1pUMGljMmQ0TFcxeVpXNWpiR0YyWlNJc0lIWmhiSFZsUFdNdWRtRnNkV1VwT3lBZ0lDQmpPbHQwZVhCbFBUMGlKSEJ5YjJSMVkzUXRhV1FpWFNBOVBpQnBjM04xWlNoMGVYQmxQU0p3Y205a2RXTjBMV2xrSWl3Z2RtRnNkV1U5WXk1MllXeDFaU2s3SUNBZ0lHTTZXM1I1Y0dVOVBTSWtjM1p1SWwwZ1BUNGdhWE56ZFdVb2RIbHdaVDBpYzNadUlpd2dkbUZzZFdVOVl5NTJZV3gxWlNrN0lDQWdJR002VzNSNWNHVTlQU0lrZEdWbElsMGdQVDRnYVhOemRXVW9kSGx3WlQwaWRHVmxJaXdnZG1Gc2RXVTlZeTUyWVd4MVpTazdmVHMifQ.c0l-xqGDFQ8_kCiQ0_vvmDQYG_u544CYmoiucPNxd9MU8ZXT69UD59UgSuya2yl241NoVXA_0LaMEB2re0JnTbPD_dliJn96HnIOqnxXxRh7rKbu65ECUOMWPXbyKQMZ0I3Wjhgt_XyyhfEiQGfJfGzA95-wm6yWqrmW7dMI7JkczG9ideztnr0bsw5NRsIWBXOjVy7Bg66qooTnODS_OqeQ4iaNsN-xjMElHABUxXhpBt2htbhemDU1X41o8clQgG84aEHCgkE07pR-7IL_Fn2gWuPVC66yxAp00W1ib2L-96q78D9J52HPdeDCSFio2RL7r5lOtz8YkQnjacb6xA"' headers: Accept: - application/json @@ -763,30 +877,38 @@ interactions: - gzip, deflate Connection: - keep-alive + Content-Length: + - '2864' + Content-Type: + - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US - method: GET + method: PUT uri: https://att2000003.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0Mno0c2hrcGxwNmxtYS53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5NzkxLCAiaWF0IjogMTYwNjk2NjE5MSwgImlzcyI6ICJodHRwczovL2F0dDJ6NHNoa3BscDZsbWEud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjE5MSwgIngtbXMtcG9saWN5IjogImV5SmhiR2NpT2lKU1UwRXlOVFlpTENKNE5XTWlPbHNpVFVsSlF6RnFRME5CWWpablFYZEpRa0ZuU1VsVFVVZEVPVVZHYWtKY2RUQXdNa0paZDBSUldVcExiMXBKYUhaalRrRlJSVXhDVVVGM1NXcEZaMDFDTkVkQk1WVkZRWGhOV0ZGWVVqQmFXRTR3V1ZoU2NHSXlOVVJhV0Vvd1lWZGFjRmt5UmpCYVZFRjNTR2hqVGsxcVFYaE5WRWw2VFZSbmVVMUVWWHBYYUdOT1RXcEZlRTFVU1hwTlZHZDVUVVJWZWxkcVFXbE5VMEYzU0dkWlJGWlJVVVJGZUdSQ1pFaFNiR016VW1oa1IyeDJZbXRPYkdOdVVuQmFiV3hxV1ZoU2JFMUVRME5CVTBsM1JGRlpTa3R2V2tsb2RtTk9RVkZGUWtKUlFVUm5aMFZRUVVSRFEwRlJiME5uWjBWQ1FVcHlSV1ZOU2xvM1VFMDFWVUpGYlRob2FVTkxSR2g2WVZBMlkyeFlka2htZDBSSVVYSjVMM1YwTDNsSE1VRnVNR0ozTVZVMmJsTnZVRVZ0WTJGeU1FYzFXbVl4VFVSNGFsWk9kRUY1UWpaSldUaEtMemhhUVVkNGVGRm5WVlpzZDFkSFZtdEZlbHBHV0VKVlFUZHBOMUIwTlVSV1FUUldObHgxTURBeVFrSm5hbmhUWlRCQ1dWcEdZbWhPY1U1emRIaHJhVU55YmpZd1ZUWXdRVVUxV0Z4MU1EQXlRa0UxTTFKdlpqRlVVa055VFhOTGJEUlFWRFJRZVhBelVVdE5WVmxEYVc5R1UzZDZUa0ZRYVU4dlR5OWNkVEF3TWtKSWNXSklNWHByVTB0YVVYaDZibTVXVUdWeVlVRnlNWE5OV2twdFJIbHlVVTh2VUZsTVRIQnlNWEZ4U1VZMlNtSnNialpFZW5JemNHNXVNWGswV2k5T1R6SnBkRkJ4TWs1TmFseDFNREF5UW5FMk4xRkRibE5YT0M5eFlscHVWM1pUTlhoMlMxRjZRVlI1VlhGYU9HMVBTbk50U1RoVVUwNXJMekJNTWxCcGVTOU5RbmxwZURkbU1UWXhRMnRqUm0xTFUza3dRMEYzUlVGQllVMVJUVUUwZDBSQldVUldVakJVUWtGVmQwRjNSVUl2ZWtGT1FtZHJjV2hyYVVjNWR6QkNRVkZ6UmtGQlQwTkJVVVZCWjFaS1ZXUkNhWFJ1ZDNaTmREZHZjaTlVTWxvNGRFdENVVVpzZWpGVmNWVlNSbFJVVFRCQmNqWTJZV3gyWTJsNFZXSlpSM2d4VkhsVFNrNXBibTlYU1VKUk9VOVFhbWRNYTFkUU1rVlJSVXR2VW5oeE4xTmlkR3hxTldFMVJVUTJWalJ5T0hSc2VqUklTalkwTjNNeU0yVjBibEpGYTJvNWRFOUdiM1pOWmpoT2RGTlZlRE5HVG5CaFJVZGFiREpNVWxaSGQzZGNkVEF3TWtKc1ZUaFFkMGd6TDJJelVtVkNaSFJoUVRkclptRldOVngxTURBeVFtbDRaV1JqWkZONVMxRjFWa0ZVYlhaTlNUY3hNMUE0VmxCc05rMVhiWE5OU25SclZqTllWaTlaVFVWelVWeDFNREF5UWtkWmNVMXlOMnRMV0d3eE0zbGxkVVZtVlRKV1ZrVlJjMW92TVhSbmIyOWlaVlpMYVZGY2RUQXdNa0pVY1dJd2RUSk9aSE5jZFRBd01rSkxhbVJJZG1GTlluZ3lVamg2VEROWmRUZHBSMHBSWm5kMWFVMXRkVXhTUWxKd1NVRnhUV3hSUmt0TE5tUllPWEY2Tms5aVQwMXpVamxwY3paNlVEWkRkbXhHY0VWNmJ6VkdVVDA5SWwxOS5leUpCZEhSbGMzUmhkR2x2YmxCdmJHbGplU0k2SW1SdFZubGpNbXgyWW1vd2VFeHFRVGRaV0ZZd1lVYzVlV0ZZY0doa1IyeDJZbTVLTVdKSFZucEpTSFJxVDJ4ME1HVllRbXhRVkRCcFNrZHNla3hYVW14WmJsWnVXakpHYVdKSFZXbFlVMEZ0U21sQ1ltUnRSbk5rVjFVNVVGaFNlV1JYVm1SSlJEQXRTVWRTYkdKdWEyOUxWSE01VUdsQ2QxcFlTblJoV0ZGdlMxUjBPVTh5Ykhwak0xWm9ZbTFPYkdOdVZuTmFXRTFuWlhsQlowbERRbXBQYkhRd1pWaENiRkJVTUdsS1IyeDZURmRTYkZsdVZtNWFNa1pwWWtkVmFWaFRRVGxRYVVKd1l6Tk9NVnBUYURCbFdFSnNVRk5LVDJJelVrVmFWMG94V2pKa2FGbHRlR3hKYVhkblpHMUdjMlJYVlRsWmVUVXlXVmQ0TVZwVGF6ZEpRMEZuU1VkTk5sY3pValZqUjFVNVVGTkphMkZZVFhSYVIxWnBaRmRrYmxsWFNuTmFVMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJXeDZURmRTYkZsdVZtNWFNa1pwWWtkVmFVeERRakpaVjNneFdsUXhha3h1V21oaVNGWnNTMVJ6WjBsRFFXZFplbkJpWkVoc2QxcFVNRGxKYVZKNldqTm5kR0pZU25waFYyUjFXbGhKYVZoVFFUbFFhVUp3WXpOT01WcFRhREJsV0VKc1VGTktlbG96WjNSaVdFcDZZVmRrZFZwWVNXbE1RMEl5V1ZkNE1WcFVNV3BNYmxwb1lraFdiRXRVYzJkSlEwRm5XWHB3WW1SSWJIZGFWREE1U1dsU2Vsb3paM1JpV0Vwc1ltMU9jMWxZV214SmJEQm5VRlEwWjJGWVRucGtWMVZ2WkVoc2QxcFVNR2xqTW1RMFRGY3hlVnBYTldwaVIwWXlXbE5KYzBsSVdtaGlTRlpzVUZkTmRXUnRSbk5rVjFWd1QzbEJaMGxEUW1wUGJIUXdaVmhDYkZCVU1HbEtTRUo1WWpKU01Wa3pVWFJoVjFGcFdGTkJPVkJwUW5Cak0wNHhXbE5vTUdWWVFteFFVMHAzWTIwNWEyUlhUakJNVjJ4clNXbDNaMlJ0Um5Oa1YxVTVXWGsxTWxsWGVERmFVMnMzU1VOQlowbEhUVFpYTTFJMVkwZFZPVkJUU1d0ak0xcDFTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6TmFkVWxwZDJka2JVWnpaRmRWT1ZsNU5USlpWM2d4V2xOck4wbERRV2RKUjAwMlZ6TlNOV05IVlRsUVUwbHJaRWRXYkVsc01HZFFWRFJuWVZoT2VtUlhWVzlrU0d4M1dsUXdhV1JIVm14SmFYZG5aRzFHYzJSWFZUbFplVFV5V1ZkNE1WcFRhemRtVkhNaWZRLmMwbC14cUdERlE4X2tDaVEwX3Z2bURRWUdfdTU0NENZbW9pdWNQTnhkOU1VOFpYVDY5VUQ1OVVnU3V5YTJ5bDI0MU5vVlhBXzBMYU1FQjJyZTBKblRiUERfZGxpSm45NkhuSU9xbnhYeFJoN3JLYnU2NUVDVU9NV1BYYnlLUU1aMEkzV2poZ3RfWHl5aGZFaVFHZkpmR3pBOTUtd202eVdxcm1XN2RNSTdKa2N6RzlpZGV6dG5yMGJzdzVOUnNJV0JYT2pWeTdCZzY2cW9vVG5PRFNfT3FlUTRpYU5zTi14ak1FbEhBQlV4WGhwQnQyaHRiaGVtRFUxWDQxbzhjbFFnRzg0YUVIQ2drRTA3cFItN0lMX0ZuMmdXdVBWQzY2eXhBcDAwVzFpYjJMLTk2cTc4RDlKNTJIUGRlRENTRmlvMlJMN3I1bE90ejhZa1FuamFjYjZ4QSJ9.TzqVFHIeRCZgWwqm-RxI_OMqUtRSK6Pg3fSoRPOdQyS80ef1pfFv_NeayQS1uEkk3gg8osp0egyo8E-a-chR2iEzc7JfVK9zHTg226Y72gCbhhF3DsXvxUoXZMs7kSTiR9BZWHYrmz8Np7TbMTQrWuSiqk5dJhDf-fY_QhZ0abs"}' + string: '{"error":{"code":"InvalidOperation","message":"Attestation Enclave + operation failed with 104: Unhandled cryptographic error Error verifying certificate + chain: certificate has expired Additional Information: ()\r\n","innererror":{"code":"InvalidOperation","message":"Attestation + Enclave operation failed with 104: Unhandled cryptographic error Error verifying + certificate chain: certificate has expired Additional Information: ()\r\n"}}}' headers: - content-length: - - '4373' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:51 GMT + - Thu, 07 Jul 2022 03:15:34 GMT server: - Kestrel + transfer-encoding: + - chunked x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: - code: 200 - message: OK + code: 400 + message: Bad Request - request: body: '{"location": "westus", "properties": {"policySigningCertificates": {"keys": []}}}' @@ -806,22 +928,22 @@ interactions: ParameterSetName: - -l -n -g User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:56 GMT + - Thu, 07 Jul 2022 03:15:47 GMT expires: - '-1' location: @@ -835,9 +957,9 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' status: code: 201 message: Created @@ -855,22 +977,22 @@ interactions: ParameterSetName: - -n -g --attestation-type User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:57 GMT + - Thu, 07 Jul 2022 03:15:48 GMT expires: - '-1' pragma: @@ -886,7 +1008,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -900,26 +1022,26 @@ interactions: Connection: - keep-alive User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: GET uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODAwLCAiaWF0IjogMTYwNjk2NjIwMCwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIwMCwgIngtbXMtcG9saWN5IjogImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNklDSmtiVlo1WXpKc2RtSnFNR2ROVXpSM1R6SkdNV1JIYUhaamJXdzJXVmhTY0dJeU5YbGtWM2hzWXpOMGFrOXNkREJsV0VKc1VGUXdhVXBIYkhwTVYxSnNXVzVXYmxveVJtbGlSMVZwV0ZOQk9WQnBRbmRhV0VwMFlWaFJiMHRVZERsUE1teDZZek5XYUdKdFRteGpibFp6V2xoT04xbDZjR0prU0d4M1dsUXdPVWxwVW5CamVURnJXbGRLTVZveVpHaFpiWGhzU1d3d1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZVmhOZEZwSFZtbGtWMlJ1V1ZkS2MxcFRTWE5KU0Zwb1lraFdiRkJYVFhWa2JVWnpaRmRWY0U4eVRUWlhNMUkxWTBkVk9WQlRTV3RqTW1RMFRGY3hlV015Ykc1aWJWWjVTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6SmtORXhYTVhsak1teHVZbTFXZVVscGQyZGtiVVp6WkZkVk9WbDVOVEpaVjNneFdsTnJOMWw2Y0dKa1NHeDNXbFF3T1VscFVucGFNMmQwWWxoS2JHSnRUbk5aV0Zwc1NXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxhVnpWcVlrZEdNbHBUU1hOSlNGcG9Za2hXYkZCWFRYVmtiVVp6WkZkVmNFOHlUVFpYTTFJMVkwZFZPVkJUU1d0alNFcDJXa2hXYW1SRE1YQmFRMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJrSjVZakpTTVZrelVYUmhWMUZwVEVOQ01sbFhlREZhVkRGcVRHNWFhR0pJVm14TFZIUnFUMngwTUdWWVFteFFWREJwU2toT01tSnBTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRqSmlhVWx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE1rMDJWek5TTldOSFZUbFFVMGxyWkVkV2JFbHNNR2RRVkRSbllWaE9lbVJYVlc5a1NHeDNXbFF3YVdSSFZteEphWGRuWkcxR2MyUlhWVGxaZVRVeVdWZDRNVnBUYXpkbVZITWlmUS4ifQ.r4MJ3kN--xg5XRxPcmFttXjJ6bFY_OGqyVdte63Zy8M8ggHPTSkRRGlWsP0az7YbmqE3hK6sOhj0h0qZfhogDUZioOGQ_F4d7FE4ESOFiOF1ZOWsG-xNwv7GO26zato5jWxoWynOn_yP-56LOMdlt3xpgvKj-yBeTO9eVYmDz3U"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczNTEsImlhdCI6MTY1NzE2Mzc1MSwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzUxLCJ4LW1zLXBvbGljeSI6ImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNkltUnRWbmxqTW14Mlltb3daMDFUTkhkUE1rWXhaRWRvZG1OdGJEWlpXRkp3WWpJMWVXUlhlR3hqTTNNNVVHbENkMXBZU25SaFdGRnZTMVIwT1U4eWJIcGpNMVpvWW0xT2JHTnVWbk5hV0U0M1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZkc2VreFhVbXhaYmxadVdqSkdhV0pIVldsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbkJqZVRGcldsZEtNVm95WkdoWmJYaHNTV2wzWjJSdFJuTmtWMVU1V1hrMU1sbFhlREZhVTJzM1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZjeGVXTXliRzVpYlZaNVNXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxqTW14dVltMVdlVWxwZDJka2JVWnpaRmRWT1ZsNU5USlpWM2d4V2xOck4xbDZjR0prU0d4M1dsUXdPVWx1WjNSaVdFMTBZekprTkV4WE1YbGFWelZxWWtkR01scFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRtNWxRekYwWTIxV2RWa3llR2hrYlZWcFRFTkNNbGxYZURGYVZERnFURzVhYUdKSVZteExWSFJxVDJ4ME1HVllRbXhRVkRCcFpVTXhkR041TVhwYU0yZDBZMGhLZGxwSVZtcGtRekZ3V2tOS1pFbEVNQzFKUjJ4Nll6TldiRXRJVWpWalIxVTVTVzVDZVdJeVVqRlpNMUYwWVZkUmFVeERRakpaVjNneFdsUXhha3h1V21oaVNGWnNTMVIwYWs5c2REQmxXRUpzVUZRd2FXVkRNWFJqZVRGNldqTm5kR016V25WSmJEQm5VRlEwWjJGWVRucGtWMVZ2WkVoc2QxcFVNR2xqTTFwMVNXbDNaMlJ0Um5Oa1YxVTVXWGsxTWxsWGVERmFVMnMzV1hwd1ltUkliSGRhVkRBNVNXNW5kR0pZVFhSWldGSXdXbGhPTUZsWVVuQmlNalIwWkVoc2QxcFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVVteGFVMGx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE16QTNJbjAuIn0.WaqEGJbTJX-0BLcPc74ilXTO3W90t2OfhkpXRL-0Wy3DEYNhm83VzLdGu1R9hRxmH4bA2D_FWcaO4nhNdgJtJn7lIgQTylNZw7cwgEvuCrRA_e5h6-QQyu_uvHm2Ua5BVvpShbyAfoR3LOidFQqqBWbbF7DJLFpDVaJBi0X6D04dShTeM06u5bhJyrmGpOalFypaDaVAxqd1IhgLU7AjGkhAg7kFPxfhh1SAIQc4ztrpmkg60O7k41crCWkNxzdDbZiX6o9APSIe5sWqBVC8PkOFEFAwuhP8N2mD1FvjESE9E5S6LmdNnhV4bV5ilbBqmlpGkRvm-QGoz6SuFQ0BQw"}' headers: content-length: - - '1767' + - '1966' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:29:59 GMT + - Thu, 07 Jul 2022 03:15:50 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -937,22 +1059,22 @@ interactions: ParameterSetName: - -n -g --attestation-type -f User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:01 GMT + - Thu, 07 Jul 2022 03:15:52 GMT expires: - '-1' pragma: @@ -968,7 +1090,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -986,26 +1108,26 @@ interactions: Content-Type: - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: PUT uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODAzLCAiaWF0IjogMTYwNjk2NjIwMywgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIwMywgIngtbXMtcG9saWN5LXJlc3VsdCI6ICJVcGRhdGVkIiwgIngtbXMtcG9saWN5LXRva2VuLWhhc2giOiAiNE93a1JrUldQRmJfa0QwT0x6NGNSdlZBTkMyWnhDbWFLZUNFaDNsNXVoUSJ9.nrhjoagHQ0fsAu0-dEpMiGW8I4QsLKCpMDa4Tp-ZSMx4hxt-1bIV5Ul5o3AstZaHd0NCuhBzvEV71Frmt9YwHlDoi0idqLGsg62yurg3JFDtrOEl9vg1j9pSc28wN9QQMGc14PbNnfI7F1V-jBuKrELEUyhKoXWoWB16o3VMsl0"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczNTQsImlhdCI6MTY1NzE2Mzc1NCwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzU0LCJ4LW1zLXBvbGljeS1yZXN1bHQiOiJVcGRhdGVkIiwieC1tcy1wb2xpY3ktdG9rZW4taGFzaCI6IjRPd2tSa1JXUEZiX2tEME9MejRjUnZWQU5DMlp4Q21hS2VDRWgzbDV1aFEifQ.inSE6rUvfBFuBs1bROsjTNv5CIVf6LR5u6a9gEzohaX2nNI3MI65GrywyczQz7BBsVJIRZCn4boX2IkgJwvRa9kele5NTHbZGkW0rPPOSQSK6cAlElOA_WVsFf_iE3l1AeGE4Gx4Zoeed0OfnmQqBR2Ud4XodW1gsrTjyNIlsc_A5X2lauhDQ9yWsSgPazoLDKQM7U54dYaHPCKN-kkj9b_Xnnbs3qw53hJhyTdAcrS9WaIHv4C0t-y4q44GG78OHuh-KSJRcGMYjuJXF_n2ZxhGjBqU-EpHpp6yYjgSiuD97eRRgIYij9IC7q1Ma6SkmStOhiF-LGHu7zCEHQ_K9Q"}' headers: content-length: - - '673' + - '821' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:03 GMT + - Thu, 07 Jul 2022 03:15:53 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1023,22 +1145,22 @@ interactions: ParameterSetName: - -n -g --attestation-type -f User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:04 GMT + - Thu, 07 Jul 2022 03:15:54 GMT expires: - '-1' pragma: @@ -1054,7 +1176,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1068,26 +1190,26 @@ interactions: Connection: - keep-alive User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: GET uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODA1LCAiaWF0IjogMTYwNjk2NjIwNSwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIwNSwgIngtbXMtcG9saWN5IjogImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSnViMjVsSW4wLmV5SkJkSFJsYzNSaGRHbHZibEJ2YkdsamVTSTZJbVJ0Vm5sak1teDJZbW93WjAxVE5IZFBkM0JvWkZoU2IySXpTbkJsYlVZd1lWYzVkV051Vm5OYVdFMW5aWGR3WWtsSVVqVmpSMVU1VUZOSmEyRllUWFJhUjFacFpGZGtibGxYU25OYVUwbHpTVWhhYUdKSVZteFFWREZ0V1ZkNGVscFRRbVJEYVZsdFNVWnpaMlJJYkhkYVZEQTVTV2xTZDJOdE9XdGtWMDR3VEZkc2EwbHBkMmRrYlVaelpGZFZPVkJVVVRKTmVtdG5XRkZ2YlVwcFFtSkpTRkkxWTBkVk9WQlRTV3RpVjJ4MVRGaE9NbUpwU1hOSlNGcG9Za2hXYkZCcU1HZE5RMEprUTJsWmJVbEdjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwVEVOQ01sbFhlREZhVkRBNVNXdFZlazFWVFRWU1ZGVjNUbFZaZWs0d1JURlBSVkpHVFVScmVrMTZWWGRPZWxaSFVYcG5NVTlVUlhsT1ZGRjZUVlJPUmxGcVNYZFJhMGw0VVZSSk0xSlVWVEJPUkU1RVVYcFJNVTFGU1RKU1ZFMTZVbFJWYVZoUmJ6bFFhVUozV2xoS2RHRllVVzlMVkhOTFpsUnpTMGxIYkhwak0xWm9ZbTFPYkdOdVZuTmFXRTFuWlhkd2FrOXNjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwU1VZd1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZekprTkV4WE1YbGpNbXh1WW0xV2VVbHBkMHRrYlVaelpGZFZPVmw1TlRKWlYzZ3hXbE5yTjBOcFFtcE5WSEJpWkVoc2QxcFVNRGxKYlRGb1dWTXhiR0ZIVVdsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbWhaV0UxMFdsZG9hMGxwZDJka2JVWnpaRmRWT1ZsNlJYVmtiVVp6WkZkVmNFOTNiMmRtVkhOTFEyY2lmUS4ifQ.LIh873EIZJWK1ES1JwNQIFeEikjsKK_KTu1Oxa625PicsX4VuCNmIkb2WUwwQUDTO-0lJ0ce9l-b6ac61NZmgLcLMDpjYavM_FuG4qZZkB6Zl_XTTpc7VPbrK7pO1cd3V7WsJ3hgze1TfJNlq37nmPYBn6L7nzkpdECNkF9vHnQ"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczNTYsImlhdCI6MTY1NzE2Mzc1NiwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzU2LCJ4LW1zLXBvbGljeSI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSnViMjVsSW4wLmV5SkJkSFJsYzNSaGRHbHZibEJ2YkdsamVTSTZJbVJ0Vm5sak1teDJZbW93WjAxVE5IZFBkM0JvWkZoU2IySXpTbkJsYlVZd1lWYzVkV051Vm5OYVdFMW5aWGR3WWtsSVVqVmpSMVU1VUZOSmEyRllUWFJhUjFacFpGZGtibGxYU25OYVUwbHpTVWhhYUdKSVZteFFWREZ0V1ZkNGVscFRRbVJEYVZsdFNVWnpaMlJJYkhkYVZEQTVTV2xTZDJOdE9XdGtWMDR3VEZkc2EwbHBkMmRrYlVaelpGZFZPVkJVVVRKTmVtdG5XRkZ2YlVwcFFtSkpTRkkxWTBkVk9WQlRTV3RpVjJ4MVRGaE9NbUpwU1hOSlNGcG9Za2hXYkZCcU1HZE5RMEprUTJsWmJVbEdjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwVEVOQ01sbFhlREZhVkRBNVNXdFZlazFWVFRWU1ZGVjNUbFZaZWs0d1JURlBSVkpHVFVScmVrMTZWWGRPZWxaSFVYcG5NVTlVUlhsT1ZGRjZUVlJPUmxGcVNYZFJhMGw0VVZSSk0xSlVWVEJPUkU1RVVYcFJNVTFGU1RKU1ZFMTZVbFJWYVZoUmJ6bFFhVUozV2xoS2RHRllVVzlMVkhOTFpsUnpTMGxIYkhwak0xWm9ZbTFPYkdOdVZuTmFXRTFuWlhkd2FrOXNjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwU1VZd1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZekprTkV4WE1YbGpNbXh1WW0xV2VVbHBkMHRrYlVaelpGZFZPVmw1TlRKWlYzZ3hXbE5yTjBOcFFtcE5WSEJpWkVoc2QxcFVNRGxKYlRGb1dWTXhiR0ZIVVdsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbWhaV0UxMFdsZG9hMGxwZDJka2JVWnpaRmRWT1ZsNlJYVmtiVVp6WkZkVmNFOTNiMmRtVkhOTFEyY2lmUS4ifQ.X3zDpcHRaElAx5Dw7MV30_edsp-lxhB-QqzC3iUToLLVaBBtCyrZdXu1IK83rPplBFERpAjeimmxuxbDlTk36iIu2xulPsPaFd9oCxGPhyj7TOiM2ExS7Jf_mIhPBTvALay6anOpa3tpWzvBdkDL4NQVQ-S-kOvEVWywOyzxnHlGF0a9hUbS_Hl3lA50Xn9bQehAMV_mvn2mO8aDUFKtYX7-mf3GPpw6YgP_MN31GGHHNED6TtUA31L0xUd16UNqBy-LaBeel5DAaK9DoS_4RzueSNfS5O2H4FeecKO9kIlLjUzNpFW6mpkkmu5HDRcPVmr8d5jKEVW3pxiF6XhIKg"}' headers: content-length: - - '1671' + - '1821' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:05 GMT + - Thu, 07 Jul 2022 03:15:55 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1105,22 +1227,22 @@ interactions: ParameterSetName: - -n -g --attestation-type -f --policy-format User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:06 GMT + - Thu, 07 Jul 2022 03:15:57 GMT expires: - '-1' pragma: @@ -1136,7 +1258,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1154,26 +1276,26 @@ interactions: Content-Type: - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: PUT uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODA5LCAiaWF0IjogMTYwNjk2NjIwOSwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIwOSwgIngtbXMtcG9saWN5LXJlc3VsdCI6ICJVcGRhdGVkIiwgIngtbXMtcG9saWN5LXRva2VuLWhhc2giOiAiVDlwN25vX3FpU2dDVTVtQ1FvLTYzVVd5TFpfU0ctc0tYdThjQ20zWjNMbyJ9.Vj7wgIfWuQoWxxVrk5HcY1y1HffRlS8jO_lcri5RYL35_CjlRpvFpz5wx7VAOsJ9tUvqcPHLgPRCTUnNNYo4nWJ3oB5L8SKDqTcv_9vadkEYKHOnlwXcvLf4Mnv9Bk3ZIb3UWI4vuQWsyFKv6DTkntINBA_H-Ip3YtQSbe0_cUM"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczNzUsImlhdCI6MTY1NzE2Mzc3NSwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzc1LCJ4LW1zLXBvbGljeS1yZXN1bHQiOiJVcGRhdGVkIiwieC1tcy1wb2xpY3ktdG9rZW4taGFzaCI6IlQ5cDdub19xaVNnQ1U1bUNRby02M1VXeUxaX1NHLXNLWHU4Y0NtM1ozTG8ifQ.INdgwmPrt7g27tOjmEOAyHSu_Eby8dCr-rhk7FQJteWTQGwUTJApMvdqUqr-pQuXoG16aV6XUlK5wQbwrtvzLezi69TOkhzdEern0fToogzkKYTZnm5Ch0W89mqvRMcb9ojehPeZXuvkKRZG0GJUS9g6vwKWM62J-b6j1Uup5J89UJD6TvDput7SYB0uZbtPlbIgGIpzA9ogaTo1F5SEPgZM5EqtWDs9E3qfnmnrw9wWK613cp3StxnBpFeveySiNtzGzfBM9Cip4rQ_m6Qex6FeWd-uyHLsbVyeyWWzbScY-XWOGc7SSZ5pZae-iyw7p4PF4uB7HZvcSfBJc-_u3w"}' headers: content-length: - - '673' + - '821' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:08 GMT + - Thu, 07 Jul 2022 03:16:14 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1191,22 +1313,22 @@ interactions: ParameterSetName: - -n -g --attestation-type -f --policy-format User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:09 GMT + - Thu, 07 Jul 2022 03:16:15 GMT expires: - '-1' pragma: @@ -1222,7 +1344,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1236,26 +1358,26 @@ interactions: Connection: - keep-alive User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: GET uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODEwLCAiaWF0IjogMTYwNjk2NjIxMCwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIxMCwgIngtbXMtcG9saWN5IjogImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNklDSmtiVlo1WXpKc2RtSnFNR2ROVXpSM1R6SkdNV1JIYUhaamJXdzJXVmhTY0dJeU5YbGtWM2hzWXpOMGFrOXNkREJsV0VKc1VGUXdhVXBIYkhwTVYxSnNXVzVXYmxveVJtbGlSMVZwV0ZOQk9WQnBRbmRhV0VwMFlWaFJiMHRVZERsUE1teDZZek5XYUdKdFRteGpibFp6V2xoT04xbDZjR0prU0d4M1dsUXdPVWxwVW5CamVURnJXbGRLTVZveVpHaFpiWGhzU1d3d1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZVmhOZEZwSFZtbGtWMlJ1V1ZkS2MxcFRTWE5KU0Zwb1lraFdiRkJYVFhWa2JVWnpaRmRWY0U4eVRUWlhNMUkxWTBkVk9WQlRTV3RqTW1RMFRGY3hlV015Ykc1aWJWWjVTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6SmtORXhYTVhsak1teHVZbTFXZVVscGQyZGtiVVp6WkZkVk9WbDVOVEpaVjNneFdsTnJOMWw2Y0dKa1NHeDNXbFF3T1VscFVucGFNMmQwWWxoS2JHSnRUbk5aV0Zwc1NXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxhVnpWcVlrZEdNbHBUU1hOSlNGcG9Za2hXYkZCWFRYVmtiVVp6WkZkVmNFOHlUVFpYTTFJMVkwZFZPVkJUU1d0alNFcDJXa2hXYW1SRE1YQmFRMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJrSjVZakpTTVZrelVYUmhWMUZwVEVOQ01sbFhlREZhVkRGcVRHNWFhR0pJVm14TFZIUnFUMngwTUdWWVFteFFWREJwU2toT01tSnBTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRqSmlhVWx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE1rMDJWek5TTldOSFZUbFFVMGxyWkVkV2JFbHNNR2RRVkRSbllWaE9lbVJYVlc5a1NHeDNXbFF3YVdSSFZteEphWGRuWkcxR2MyUlhWVGxaZVRVeVdWZDRNVnBUYXpkbVZITWlmUS4ifQ.l-_bqJsGxQ33vma7XmcdVLW6RmND28dPLDKJqDEAL5glTzuRsF27UpTRMYWrxI-bZcL3DV0DyTvzWL2OBNUpbVhHN9yTLgzrW1lumunYSQN3dcsFN6tHDsV_U1rkFf9gj8R0SRuBwMLktJB5bfskNgPugLN9nE6YFwhSdIrqguo"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczNzYsImlhdCI6MTY1NzE2Mzc3NiwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzc2LCJ4LW1zLXBvbGljeSI6ImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNklDSmtiVlo1WXpKc2RtSnFNR2ROVXpSM1R6SkdNV1JIYUhaamJXdzJXVmhTY0dJeU5YbGtWM2hzWXpOMGFrOXNkREJsV0VKc1VGUXdhVXBIYkhwTVYxSnNXVzVXYmxveVJtbGlSMVZwV0ZOQk9WQnBRbmRhV0VwMFlWaFJiMHRVZERsUE1teDZZek5XYUdKdFRteGpibFp6V2xoT04xbDZjR0prU0d4M1dsUXdPVWxwVW5CamVURnJXbGRLTVZveVpHaFpiWGhzU1d3d1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZVmhOZEZwSFZtbGtWMlJ1V1ZkS2MxcFRTWE5KU0Zwb1lraFdiRkJYVFhWa2JVWnpaRmRWY0U4eVRUWlhNMUkxWTBkVk9WQlRTV3RqTW1RMFRGY3hlV015Ykc1aWJWWjVTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6SmtORXhYTVhsak1teHVZbTFXZVVscGQyZGtiVVp6WkZkVk9WbDVOVEpaVjNneFdsTnJOMWw2Y0dKa1NHeDNXbFF3T1VscFVucGFNMmQwWWxoS2JHSnRUbk5aV0Zwc1NXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxhVnpWcVlrZEdNbHBUU1hOSlNGcG9Za2hXYkZCWFRYVmtiVVp6WkZkVmNFOHlUVFpYTTFJMVkwZFZPVkJUU1d0alNFcDJXa2hXYW1SRE1YQmFRMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJrSjVZakpTTVZrelVYUmhWMUZwVEVOQ01sbFhlREZhVkRGcVRHNWFhR0pJVm14TFZIUnFUMngwTUdWWVFteFFWREJwU2toT01tSnBTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRqSmlhVWx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE1rMDJWek5TTldOSFZUbFFVMGxyWkVkV2JFbHNNR2RRVkRSbllWaE9lbVJYVlc5a1NHeDNXbFF3YVdSSFZteEphWGRuWkcxR2MyUlhWVGxaZVRVeVdWZDRNVnBUYXpkbVZITWlmUS4ifQ.cxby8k0q-_nze3h9CC5eiaqV8vIeYD_pfR5FR_N4RDcFoGJuD58my4CMBoQHYWbFFwya_M-jTpKNi-E09_kQo3N_n13MKYkT-AdXOxHeIvw8psnFGHfkGrIw-k9Tp_GZayW0m-WP-NOkPoIBSgjQbClZTpxCbnQaiNZB6_gT_ANCg38mNh8hk3xwKaIcUo1VPTe9T6peOrviGsgfGIkWfTZNJr7hUtHqp9GAeB1S-y0nFC5XZTadOsZKmh14RU6vbF4-26Ciu_YNYdtRJ1rFHU0AoM0VN0UQ7ZlFRIkcYssSXcFdwYfqwJwnVt7mfgNzQKvaxNUsAKXGYMjRNCHaqA"}' headers: content-length: - - '1767' + - '1917' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:10 GMT + - Thu, 07 Jul 2022 03:16:16 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1273,22 +1395,22 @@ interactions: ParameterSetName: - -n -g --attestation-type -f User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:11 GMT + - Thu, 07 Jul 2022 03:16:17 GMT expires: - '-1' pragma: @@ -1304,7 +1426,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1322,26 +1444,26 @@ interactions: Content-Type: - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: PUT uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODEzLCAiaWF0IjogMTYwNjk2NjIxMywgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIxMywgIngtbXMtcG9saWN5LXJlc3VsdCI6ICJVcGRhdGVkIiwgIngtbXMtcG9saWN5LXRva2VuLWhhc2giOiAiNE93a1JrUldQRmJfa0QwT0x6NGNSdlZBTkMyWnhDbWFLZUNFaDNsNXVoUSJ9.cdY6ezvBZGQX91t-aSvxhqiHxQdXHtggpzyZoZLcigCBsE2qEl9O49oFT96WCzU5lbx7Rf6_-TZREqsLSICglXClRQ2OvCjhRuMWOScP_tcWUl0vONB5xN9sddHCpkCnvf0o1RMXucZeQ5q_vcrJlLbW3SyUb-ZvRpxQ4aDvAVA"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczNzksImlhdCI6MTY1NzE2Mzc3OSwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzc5LCJ4LW1zLXBvbGljeS1yZXN1bHQiOiJVcGRhdGVkIiwieC1tcy1wb2xpY3ktdG9rZW4taGFzaCI6IjRPd2tSa1JXUEZiX2tEME9MejRjUnZWQU5DMlp4Q21hS2VDRWgzbDV1aFEifQ.PRaW1Ufpbo8r3kYQZp3kR4oIsA-2qQIlF6hyD4NkUVV7qvYbr2Q8bnU-F4smmx5dmBwDviLcED4iwC3E3SAzNJDWemhT4tYSf-uqrW5-OVQSrTSxc_EeGSKRxiARr9zZWDamFQKEqRpQ6ICyW3W-wPeyCL5xyaLSKXVbOBkdJd_bw7zoMMVM_JbQU_9R_3_wSUwQluzBBXhYpHtcYZHzTkrEb6CvJBsPo89TnV4CZKQWA4vMr8jJfCJCopCwD2--K7Qyr4Vr27kvchHMT66ZOSrm30dEd-Y1cWW4E_-OKj7k8CMTA-6Nxrq6973QmIploD2ltEJWUWrE22MKfuUZeg"}' headers: content-length: - - '673' + - '821' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:13 GMT + - Thu, 07 Jul 2022 03:16:18 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1359,22 +1481,22 @@ interactions: ParameterSetName: - -n -g --attestation-type -f User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:13 GMT + - Thu, 07 Jul 2022 03:16:21 GMT expires: - '-1' pragma: @@ -1390,7 +1512,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1404,26 +1526,26 @@ interactions: Connection: - keep-alive User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: GET uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODE1LCAiaWF0IjogMTYwNjk2NjIxNSwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIxNSwgIngtbXMtcG9saWN5IjogImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSnViMjVsSW4wLmV5SkJkSFJsYzNSaGRHbHZibEJ2YkdsamVTSTZJbVJ0Vm5sak1teDJZbW93WjAxVE5IZFBkM0JvWkZoU2IySXpTbkJsYlVZd1lWYzVkV051Vm5OYVdFMW5aWGR3WWtsSVVqVmpSMVU1VUZOSmEyRllUWFJhUjFacFpGZGtibGxYU25OYVUwbHpTVWhhYUdKSVZteFFWREZ0V1ZkNGVscFRRbVJEYVZsdFNVWnpaMlJJYkhkYVZEQTVTV2xTZDJOdE9XdGtWMDR3VEZkc2EwbHBkMmRrYlVaelpGZFZPVkJVVVRKTmVtdG5XRkZ2YlVwcFFtSkpTRkkxWTBkVk9WQlRTV3RpVjJ4MVRGaE9NbUpwU1hOSlNGcG9Za2hXYkZCcU1HZE5RMEprUTJsWmJVbEdjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwVEVOQ01sbFhlREZhVkRBNVNXdFZlazFWVFRWU1ZGVjNUbFZaZWs0d1JURlBSVkpHVFVScmVrMTZWWGRPZWxaSFVYcG5NVTlVUlhsT1ZGRjZUVlJPUmxGcVNYZFJhMGw0VVZSSk0xSlVWVEJPUkU1RVVYcFJNVTFGU1RKU1ZFMTZVbFJWYVZoUmJ6bFFhVUozV2xoS2RHRllVVzlMVkhOTFpsUnpTMGxIYkhwak0xWm9ZbTFPYkdOdVZuTmFXRTFuWlhkd2FrOXNjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwU1VZd1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZekprTkV4WE1YbGpNbXh1WW0xV2VVbHBkMHRrYlVaelpGZFZPVmw1TlRKWlYzZ3hXbE5yTjBOcFFtcE5WSEJpWkVoc2QxcFVNRGxKYlRGb1dWTXhiR0ZIVVdsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbWhaV0UxMFdsZG9hMGxwZDJka2JVWnpaRmRWT1ZsNlJYVmtiVVp6WkZkVmNFOTNiMmRtVkhOTFEyY2lmUS4ifQ.o-1glRUckFUdO3afpAoh7T2jcJG_ZxTGi5jqMz9BMZO17KUgPrdpD92FgqOlisJjfRjpzCkaY1m5fTP2JZ9ITvx3vrS7Lw-l25Ka8Ll4viL8WLsc65FAEFHB6vB0kl3oADJSAtig8slbp3e5mtIaCL3It0okERR0x9XbCeQw7N0"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczODIsImlhdCI6MTY1NzE2Mzc4MiwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzgyLCJ4LW1zLXBvbGljeSI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSnViMjVsSW4wLmV5SkJkSFJsYzNSaGRHbHZibEJ2YkdsamVTSTZJbVJ0Vm5sak1teDJZbW93WjAxVE5IZFBkM0JvWkZoU2IySXpTbkJsYlVZd1lWYzVkV051Vm5OYVdFMW5aWGR3WWtsSVVqVmpSMVU1VUZOSmEyRllUWFJhUjFacFpGZGtibGxYU25OYVUwbHpTVWhhYUdKSVZteFFWREZ0V1ZkNGVscFRRbVJEYVZsdFNVWnpaMlJJYkhkYVZEQTVTV2xTZDJOdE9XdGtWMDR3VEZkc2EwbHBkMmRrYlVaelpGZFZPVkJVVVRKTmVtdG5XRkZ2YlVwcFFtSkpTRkkxWTBkVk9WQlRTV3RpVjJ4MVRGaE9NbUpwU1hOSlNGcG9Za2hXYkZCcU1HZE5RMEprUTJsWmJVbEdjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwVEVOQ01sbFhlREZhVkRBNVNXdFZlazFWVFRWU1ZGVjNUbFZaZWs0d1JURlBSVkpHVFVScmVrMTZWWGRPZWxaSFVYcG5NVTlVUlhsT1ZGRjZUVlJPUmxGcVNYZFJhMGw0VVZSSk0xSlVWVEJPUkU1RVVYcFJNVTFGU1RKU1ZFMTZVbFJWYVZoUmJ6bFFhVUozV2xoS2RHRllVVzlMVkhOTFpsUnpTMGxIYkhwak0xWm9ZbTFPYkdOdVZuTmFXRTFuWlhkd2FrOXNjMmRrU0d4M1dsUXdPVWxwVW5wYU0yZDBZbGhLZW1GWFpIVmFXRWxwU1VZd1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZekprTkV4WE1YbGpNbXh1WW0xV2VVbHBkMHRrYlVaelpGZFZPVmw1TlRKWlYzZ3hXbE5yTjBOcFFtcE5WSEJpWkVoc2QxcFVNRGxKYlRGb1dWTXhiR0ZIVVdsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbWhaV0UxMFdsZG9hMGxwZDJka2JVWnpaRmRWT1ZsNlJYVmtiVVp6WkZkVmNFOTNiMmRtVkhOTFEyY2lmUS4ifQ.KHec8TlcmVHaDq2sVAVvsj_8HZz8Zu1j0-sMBm6kmzyN5W5ipnDl6DMU1IMyXt43k9FEOveBBAwAZ4sZajmyBzEE71QcGkqXja6Y000oBu3VxotBHAZh0_zjKClui0gFBkhKc2M1g-S4RYj13IfC2BydYIou5IK-qY2L6DF0JOilew16IYLq_EqpNQ7ELl3AVGkKtGQLSSTeRwUHxB_9Vq7-WLKXuIO07eioeDqEEY1Oh0qzVitAepzhCyMQlXQ2QZr373rcFlOppoByWCXG946iEXTzvw3O-BR1EyJu-YsBvgPMCgBP_3MxIj9nzroy5NbuK4uTXS1GmEXEqIsT1g"}' headers: content-length: - - '1671' + - '1821' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:14 GMT + - Thu, 07 Jul 2022 03:16:21 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1441,22 +1563,22 @@ interactions: ParameterSetName: - -n -g --attestation-type --new-attestation-policy --policy-format User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:15 GMT + - Thu, 07 Jul 2022 03:16:22 GMT expires: - '-1' pragma: @@ -1472,7 +1594,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1490,26 +1612,26 @@ interactions: Content-Type: - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: PUT uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODE4LCAiaWF0IjogMTYwNjk2NjIxOCwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIxOCwgIngtbXMtcG9saWN5LXJlc3VsdCI6ICJVcGRhdGVkIiwgIngtbXMtcG9saWN5LXRva2VuLWhhc2giOiAiVDlwN25vX3FpU2dDVTVtQ1FvLTYzVVd5TFpfU0ctc0tYdThjQ20zWjNMbyJ9.F_I_D2pvVbluOkrbeTXnGYjs1Ur_HxXrKAItbmjBW47OrtoUNZifQObwMeS_C-PeF4emx7f9_B9CXvTiy8MGJj1iIPUrIan84ihcqOAC-tgZP_OMj177CeAtftb0urm4yK9wQeVLKgJzFaOoFdaOoXwyQc2FgkQno97IsavS3wA"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczODQsImlhdCI6MTY1NzE2Mzc4NCwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzg0LCJ4LW1zLXBvbGljeS1yZXN1bHQiOiJVcGRhdGVkIiwieC1tcy1wb2xpY3ktdG9rZW4taGFzaCI6IlQ5cDdub19xaVNnQ1U1bUNRby02M1VXeUxaX1NHLXNLWHU4Y0NtM1ozTG8ifQ.OcBuchxntXuEwNsFiikPrkK7hbhzotq5o-zmQp4uvwmHgwY7vT-hFfdmoIvkFZxUcnhtWeHzzPoBR9MFVojbXl0DIV8ZxDn5cLv7U_FtZRtGH4Gx0F8qlorg4KvtcTuFp6744S4W0vyC3xTxObDlZPFCQFnugrX_4LFIJ5Q6GZEniLfHzgFWzebiWa9Ok_DEz3rLb7g4kYiBiWy_ncWXtkMY6lwHiZetUdfWMXOvJzEOekiDl9XEAAmRzqCLFlBWjWFEj7hVqT5QdOX02DYRMoyfjM6Ny_22if_r9W8j9dxnuaTSzNgqeUAAY9eR-QiyGE8Dz9_T7XQ2bjcrWqbILA"}' headers: content-length: - - '673' + - '821' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:17 GMT + - Thu, 07 Jul 2022 03:16:24 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1527,22 +1649,22 @@ interactions: ParameterSetName: - -n -g --attestation-type --new-attestation-policy --policy-format User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:18 GMT + - Thu, 07 Jul 2022 03:16:25 GMT expires: - '-1' pragma: @@ -1558,7 +1680,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1572,26 +1694,26 @@ interactions: Connection: - keep-alive User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: GET uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODIwLCAiaWF0IjogMTYwNjk2NjIyMCwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIyMCwgIngtbXMtcG9saWN5IjogImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNklDSmtiVlo1WXpKc2RtSnFNR2ROVXpSM1R6SkdNV1JIYUhaamJXdzJXVmhTY0dJeU5YbGtWM2hzWXpOMGFrOXNkREJsV0VKc1VGUXdhVXBIYkhwTVYxSnNXVzVXYmxveVJtbGlSMVZwV0ZOQk9WQnBRbmRhV0VwMFlWaFJiMHRVZERsUE1teDZZek5XYUdKdFRteGpibFp6V2xoT04xbDZjR0prU0d4M1dsUXdPVWxwVW5CamVURnJXbGRLTVZveVpHaFpiWGhzU1d3d1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZVmhOZEZwSFZtbGtWMlJ1V1ZkS2MxcFRTWE5KU0Zwb1lraFdiRkJYVFhWa2JVWnpaRmRWY0U4eVRUWlhNMUkxWTBkVk9WQlRTV3RqTW1RMFRGY3hlV015Ykc1aWJWWjVTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6SmtORXhYTVhsak1teHVZbTFXZVVscGQyZGtiVVp6WkZkVk9WbDVOVEpaVjNneFdsTnJOMWw2Y0dKa1NHeDNXbFF3T1VscFVucGFNMmQwWWxoS2JHSnRUbk5aV0Zwc1NXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxhVnpWcVlrZEdNbHBUU1hOSlNGcG9Za2hXYkZCWFRYVmtiVVp6WkZkVmNFOHlUVFpYTTFJMVkwZFZPVkJUU1d0alNFcDJXa2hXYW1SRE1YQmFRMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJrSjVZakpTTVZrelVYUmhWMUZwVEVOQ01sbFhlREZhVkRGcVRHNWFhR0pJVm14TFZIUnFUMngwTUdWWVFteFFWREJwU2toT01tSnBTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRqSmlhVWx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE1rMDJWek5TTldOSFZUbFFVMGxyWkVkV2JFbHNNR2RRVkRSbllWaE9lbVJYVlc5a1NHeDNXbFF3YVdSSFZteEphWGRuWkcxR2MyUlhWVGxaZVRVeVdWZDRNVnBUYXpkbVZITWlmUS4ifQ.BxDT6KF2kvp-ozcmLCnRUUDx5pF-LjjgeIYDiEnEQ101Otiz9Q5qI4A5hCxyWCYkw8SmsyxdgBNuZCQjr37Fe3P9PSKvtEqa4YmN1-yEtMR8Ya-5LIX-G6tNj-z0080MA88BNsTEBbUEEUJ0we4ilz2q6Ue-rXEWC2upApsYk24"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczODYsImlhdCI6MTY1NzE2Mzc4NiwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzg2LCJ4LW1zLXBvbGljeSI6ImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNklDSmtiVlo1WXpKc2RtSnFNR2ROVXpSM1R6SkdNV1JIYUhaamJXdzJXVmhTY0dJeU5YbGtWM2hzWXpOMGFrOXNkREJsV0VKc1VGUXdhVXBIYkhwTVYxSnNXVzVXYmxveVJtbGlSMVZwV0ZOQk9WQnBRbmRhV0VwMFlWaFJiMHRVZERsUE1teDZZek5XYUdKdFRteGpibFp6V2xoT04xbDZjR0prU0d4M1dsUXdPVWxwVW5CamVURnJXbGRLTVZveVpHaFpiWGhzU1d3d1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZVmhOZEZwSFZtbGtWMlJ1V1ZkS2MxcFRTWE5KU0Zwb1lraFdiRkJYVFhWa2JVWnpaRmRWY0U4eVRUWlhNMUkxWTBkVk9WQlRTV3RqTW1RMFRGY3hlV015Ykc1aWJWWjVTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6SmtORXhYTVhsak1teHVZbTFXZVVscGQyZGtiVVp6WkZkVk9WbDVOVEpaVjNneFdsTnJOMWw2Y0dKa1NHeDNXbFF3T1VscFVucGFNMmQwWWxoS2JHSnRUbk5aV0Zwc1NXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxhVnpWcVlrZEdNbHBUU1hOSlNGcG9Za2hXYkZCWFRYVmtiVVp6WkZkVmNFOHlUVFpYTTFJMVkwZFZPVkJUU1d0alNFcDJXa2hXYW1SRE1YQmFRMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJrSjVZakpTTVZrelVYUmhWMUZwVEVOQ01sbFhlREZhVkRGcVRHNWFhR0pJVm14TFZIUnFUMngwTUdWWVFteFFWREJwU2toT01tSnBTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRqSmlhVWx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE1rMDJWek5TTldOSFZUbFFVMGxyWkVkV2JFbHNNR2RRVkRSbllWaE9lbVJYVlc5a1NHeDNXbFF3YVdSSFZteEphWGRuWkcxR2MyUlhWVGxaZVRVeVdWZDRNVnBUYXpkbVZITWlmUS4ifQ.DpGmfSFzqDToO_JmFn6y3_o1fAl4jeDmy8i0J-GFg_XhMyico-DuQCzJLTfB6LsMqfq0_bm8LrxDrWm3qsQYZXyeZby37u5thUqPZUQppzN5Bu3dW23KLQ32vc4MQCZXvFe_qxxzdQLZlRIDyJnzlNtgph-hwsABbmO86EPcLjtZ58JogHbfTfMZdHEnPnlZXK3z4zJC5shHuUrYGPB9OVppSkBnwxW_X9uoNGarYA4TEHNdVfa6Ga_uHNx_C4BGR-8WIJlfm6L632lzgwL1wqtJSrQSkz3Q_IIy9gQZ4t9rfG5jAsXvairVsiW5bJG0V_16WnqyX-B5c1M2qhh_Yg"}' headers: content-length: - - '1767' + - '1917' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:19 GMT + - Thu, 07 Jul 2022 03:16:26 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1609,22 +1731,22 @@ interactions: ParameterSetName: - -n -g --attestation-type User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:20 GMT + - Thu, 07 Jul 2022 03:16:27 GMT expires: - '-1' pragma: @@ -1640,7 +1762,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1658,26 +1780,26 @@ interactions: Content-Type: - text/plain User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: POST uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave%3Areset?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODIzLCAiaWF0IjogMTYwNjk2NjIyMywgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIyMywgIngtbXMtcG9saWN5LXJlc3VsdCI6ICJSZW1vdmVkIn0.ufJJtqXyfbfhtAXgHhpfRr4fVIX8IIUHqwbrQ0YFaGyO59-cN1TbhQunqOzQsIwng2rOtsR4r2pOw3nH0YettLeECLHzbQNyhY4ckMAH-yE1CnlKp8JryNVbm1Q3CxRX-tTFAFZgEwaLWyDUZ0BAxXq_Cq90WxFXNucVcAqswaM"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczODksImlhdCI6MTY1NzE2Mzc4OSwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzg5LCJ4LW1zLXBvbGljeS1yZXN1bHQiOiJSZW1vdmVkIn0.Gsdq-FNdj2H0UooCO9qtwT4q7l0HseBhV_t_FjWP1F3qt3F8b_NHa-BOfPIU8-yTfyHyNiOqb2TEODUXZxk_NJ9V3-HST62rPS4T7VfwCzSLCd74E0PucyCzseRROXfkVKa2NhB-wpIgoFw3RbAomZnrgYxHzg5ZieandBqefSDhOiOsZOthUil-kcF_Km-57zW81etvc2xLROGZeHPAcDsrRK40adcW7tvdyao6W_7PymHv7nxPqCFjEYF_z-5Y26eYR69VixTi8Ly-b8juvuX1y8eEu_ERbPm2c9BA9jLa9lSuWwI8jBVmK-lQbWt_qnA6LB5ZKwGvNmyG44g6SQ"}' headers: content-length: - - '576' + - '726' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:22 GMT + - Thu, 07 Jul 2022 03:16:28 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1695,22 +1817,22 @@ interactions: ParameterSetName: - -n -g --attestation-type User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","tags":null,"properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004","name":"att3000004","type":"Microsoft.Attestation/attestationProviders","location":"westus","properties":{"trustModel":"AAD","status":"Ready","attestUri":"https://att3000004.wus.attest.azure.net"}}' headers: cache-control: - no-cache content-length: - - '442' + - '350' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:23 GMT + - Thu, 07 Jul 2022 03:16:30 GMT expires: - '-1' pragma: @@ -1726,7 +1848,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1740,26 +1862,26 @@ interactions: Connection: - keep-alive User-Agent: - - python/3.8.5 (Windows-10-10.0.19041-SP0) msrest/0.6.18 msrest_azure/0.6.3 - azure-attestation/0.1.0 Azure-SDK-For-Python + - python/3.8.1 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-attestation/0.1.0 + Azure-SDK-For-Python accept-language: - en-US method: GET uri: https://att3000004.wus.attest.azure.net/policies/SgxEnclave?api-version=2020-10-01&tee=SgxEnclave response: body: - string: '{"token":"eyJhbGciOiAiUlMyNTYiLCAiamt1IjogImh0dHBzOi8vYXR0M2JsMnd1dmQ0c3Yydi53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsICJraWQiOiAiWkZnT1JQMUdHYVlXVWhDMXRpSEVmTk5PYnZQV0RZSytNdWthTTcvbG90Yz0iLCAidHlwIjogIkpXVCJ9.eyJleHAiOiAxNjA2OTY5ODI2LCAiaWF0IjogMTYwNjk2NjIyNiwgImlzcyI6ICJodHRwczovL2F0dDNibDJ3dXZkNHN2MnYud3VzLmF0dGVzdC5henVyZS5uZXQiLCAibmJmIjogMTYwNjk2NjIyNiwgIngtbXMtcG9saWN5IjogImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNklDSmtiVlo1WXpKc2RtSnFNR2ROVXpSM1R6SkdNV1JIYUhaamJXdzJXVmhTY0dJeU5YbGtWM2hzWXpOMGFrOXNkREJsV0VKc1VGUXdhVXBIYkhwTVYxSnNXVzVXYmxveVJtbGlSMVZwV0ZOQk9WQnBRbmRhV0VwMFlWaFJiMHRVZERsUE1teDZZek5XYUdKdFRteGpibFp6V2xoT04xbDZjR0prU0d4M1dsUXdPVWxwVW5CamVURnJXbGRLTVZveVpHaFpiWGhzU1d3d1oxQlVOR2RoV0U1NlpGZFZiMlJJYkhkYVZEQnBZVmhOZEZwSFZtbGtWMlJ1V1ZkS2MxcFRTWE5KU0Zwb1lraFdiRkJYVFhWa2JVWnpaRmRWY0U4eVRUWlhNMUkxWTBkVk9WQlRTV3RqTW1RMFRGY3hlV015Ykc1aWJWWjVTV3d3WjFCVU5HZGhXRTU2WkZkVmIyUkliSGRhVkRCcFl6SmtORXhYTVhsak1teHVZbTFXZVVscGQyZGtiVVp6WkZkVk9WbDVOVEpaVjNneFdsTnJOMWw2Y0dKa1NHeDNXbFF3T1VscFVucGFNMmQwWWxoS2JHSnRUbk5aV0Zwc1NXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxhVnpWcVlrZEdNbHBUU1hOSlNGcG9Za2hXYkZCWFRYVmtiVVp6WkZkVmNFOHlUVFpYTTFJMVkwZFZPVkJUU1d0alNFcDJXa2hXYW1SRE1YQmFRMHBrU1VRd0xVbEhiSHBqTTFac1MwaFNOV05IVlRsSmJrSjVZakpTTVZrelVYUmhWMUZwVEVOQ01sbFhlREZhVkRGcVRHNWFhR0pJVm14TFZIUnFUMngwTUdWWVFteFFWREJwU2toT01tSnBTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRqSmlhVWx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE1rMDJWek5TTldOSFZUbFFVMGxyWkVkV2JFbHNNR2RRVkRSbllWaE9lbVJYVlc5a1NHeDNXbFF3YVdSSFZteEphWGRuWkcxR2MyUlhWVGxaZVRVeVdWZDRNVnBUYXpkbVZITWlmUS4ifQ.UHZ3LbcCINol8HwpD_hbHTB-qRfpvCwO_dwmsdRP5EpCiQjlj_RXHAAX1qzIpPbTGo3UYY7bxNRj2ch5Hy7zrKnNFSuBBz0tQkvhZjCCf3f7UrlenJWZ6oG0lTW9J2H-hVwEjiBdrfjvi7wQt2vebnrKt-CuN30Ap5WmoiFE4hg"}' + string: '{"token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vYXR0M3k3dHp1bGZocHB3eC53dXMuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6Ilh4UmMydkxoMUU1RnJzTmF3blJIM1B6dUZncWczcTdOdkNkbmpvSkhCR0U9IiwidHlwIjoiSldUIn0.eyJleHAiOjE2NTcxNjczOTEsImlhdCI6MTY1NzE2Mzc5MSwiaXNzIjoiaHR0cHM6Ly9hdHQzeTd0enVsZmhwcHd4Lnd1cy5hdHRlc3QuYXp1cmUubmV0IiwibmJmIjoxNjU3MTYzNzkxLCJ4LW1zLXBvbGljeSI6ImV5SmhiR2NpT2lKdWIyNWxJbjAuZXlKQmRIUmxjM1JoZEdsdmJsQnZiR2xqZVNJNkltUnRWbmxqTW14Mlltb3daMDFUTkhkUE1rWXhaRWRvZG1OdGJEWlpXRkp3WWpJMWVXUlhlR3hqTTNNNVVHbENkMXBZU25SaFdGRnZTMVIwT1U4eWJIcGpNMVpvWW0xT2JHTnVWbk5hV0U0M1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZkc2VreFhVbXhaYmxadVdqSkdhV0pIVldsWVUwRTVVR2xDY0dNelRqRmFVMmd3WlZoQ2JGQlRTbkJqZVRGcldsZEtNVm95WkdoWmJYaHNTV2wzWjJSdFJuTmtWMVU1V1hrMU1sbFhlREZhVTJzM1dYcHdZbVJJYkhkYVZEQTVTVzVuZEdKWVRYUmpNbVEwVEZjeGVXTXliRzVpYlZaNVNXd3daMUJVTkdkaFdFNTZaRmRWYjJSSWJIZGFWREJwWXpKa05FeFhNWGxqTW14dVltMVdlVWxwZDJka2JVWnpaRmRWT1ZsNU5USlpWM2d4V2xOck4xbDZjR0prU0d4M1dsUXdPVWx1WjNSaVdFMTBZekprTkV4WE1YbGFWelZxWWtkR01scFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVRtNWxRekYwWTIxV2RWa3llR2hrYlZWcFRFTkNNbGxYZURGYVZERnFURzVhYUdKSVZteExWSFJxVDJ4ME1HVllRbXhRVkRCcFpVTXhkR041TVhwYU0yZDBZMGhLZGxwSVZtcGtRekZ3V2tOS1pFbEVNQzFKUjJ4Nll6TldiRXRJVWpWalIxVTVTVzVDZVdJeVVqRlpNMUYwWVZkUmFVeERRakpaVjNneFdsUXhha3h1V21oaVNGWnNTMVIwYWs5c2REQmxXRUpzVUZRd2FXVkRNWFJqZVRGNldqTm5kR016V25WSmJEQm5VRlEwWjJGWVRucGtWMVZ2WkVoc2QxcFVNR2xqTTFwMVNXbDNaMlJ0Um5Oa1YxVTVXWGsxTWxsWGVERmFVMnMzV1hwd1ltUkliSGRhVkRBNVNXNW5kR0pZVFhSWldGSXdXbGhPTUZsWVVuQmlNalIwWkVoc2QxcFRTbVJKUkRBdFNVZHNlbU16Vm14TFNGSTFZMGRWT1VsdVVteGFVMGx6U1VoYWFHSklWbXhRVjAxMVpHMUdjMlJYVlhCUE16QTNJbjAuIn0.Kjfzf0DizROrp5ZGySzS9_L5jrSq7Ev0NYyjtmF8HpQ8SHzcOoTtW6isp3-HpuwUv8Di7MiwjOtiP_kLVhbMq2pxn-5_Pk7X1XJYOpLbEnK3Qqi-Ww1kDyjfUcfI3L2rH135sqwJmgXxoyGdz1E6cPWKknGTsDbsHVreB2NyERZve64CCHjft7vJP9hcX4SfO6amKSv4-T9JRGfRTqGKRF4VLVOyqxc3tP-Q0rgDvNwkbxW2EeS7acmrX94sOnFQpIuYkBVJ8_kyARCPoyAVPJ1suUBD8nwMEejv-jjBjiHwq9pUUDVBMyiVQ8X01_Zz5GIv8PtjU3AbO5TLgyCGNQ"}' headers: content-length: - - '1767' + - '1966' content-type: - application/json; charset=utf-8 date: - - Thu, 03 Dec 2020 03:30:26 GMT + - Thu, 07 Jul 2022 03:16:30 GMT server: - Kestrel x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 status: code: 200 message: OK @@ -1779,8 +1901,8 @@ interactions: ParameterSetName: - -n -g -y User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att1000002?api-version=2020-10-01 response: @@ -1792,7 +1914,7 @@ interactions: content-length: - '0' date: - - Thu, 03 Dec 2020 03:30:35 GMT + - Thu, 07 Jul 2022 03:16:39 GMT expires: - '-1' pragma: @@ -1804,7 +1926,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-deletes: - '14999' status: @@ -1826,8 +1948,8 @@ interactions: ParameterSetName: - -n -g -y User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att2000003?api-version=2020-10-01 response: @@ -1839,7 +1961,7 @@ interactions: content-length: - '0' date: - - Thu, 03 Dec 2020 03:30:44 GMT + - Thu, 07 Jul 2022 03:16:47 GMT expires: - '-1' pragma: @@ -1851,7 +1973,7 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-deletes: - '14999' status: @@ -1873,8 +1995,8 @@ interactions: ParameterSetName: - -n -g -y User-Agent: - - AZURECLI/2.15.1 azsdk-python-attestationmanagementclient/unknown Python/3.8.5 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-attestationmanagementclient/unknown Python/3.8.1 + (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Attestation/attestationProviders/att3000004?api-version=2020-10-01 response: @@ -1886,7 +2008,7 @@ interactions: content-length: - '0' date: - - Thu, 03 Dec 2020 03:30:52 GMT + - Thu, 07 Jul 2022 03:16:56 GMT expires: - '-1' pragma: @@ -1898,9 +2020,9 @@ interactions: x-content-type-options: - nosniff x-ms-maa-service-version: - - 1.10.01419.0005 + - 1.11.01987.157 x-ms-ratelimit-remaining-subscription-deletes: - - '14998' + - '14999' status: code: 200 message: OK diff --git a/src/attestation/azext_attestation/tests/latest/test_attestation_scenario.py b/src/attestation/azext_attestation/tests/latest/test_attestation_scenario.py index d23d3cf4c6e..004c49fcbb5 100644 --- a/src/attestation/azext_attestation/tests/latest/test_attestation_scenario.py +++ b/src/attestation/azext_attestation/tests/latest/test_attestation_scenario.py @@ -39,10 +39,10 @@ def setup(test, rg): @try_manual def step__attestationproviders_put(test, rg): test.cmd('az attestation create -l westus ' - '-n "myattestationprovider" ' + '-n "testattestationprovider" ' '--resource-group "{rg}"', checks=[ - test.check('name', 'myattestationprovider'), + test.check('name', 'testattestationprovider'), test.check('status', 'Ready'), test.check('trustModel', 'AAD') ]) @@ -52,10 +52,10 @@ def step__attestationproviders_put(test, rg): @try_manual def step__attestationproviders_get(test, rg): test.cmd('az attestation show ' - '-n "myattestationprovider" ' + '-n "testattestationprovider" ' '--resource-group "{rg}"', checks=[ - test.check('name', 'myattestationprovider'), + test.check('name', 'testattestationprovider'), test.check('status', 'Ready') ]) @@ -67,7 +67,7 @@ def step__attestationproviders_get2(test, rg): '--resource-group "{rg}"', checks=[ test.check('length(value)', 1), - test.check('value[0].name', 'myattestationprovider'), + test.check('value[0].name', 'testattestationprovider'), test.check('value[0].status', 'Ready') ]) @@ -82,7 +82,7 @@ def step__attestationproviders_get3(test, rg): @try_manual def step__attestationproviders_patch(test, rg): test.cmd('az attestation update ' - '-n "myattestationprovider" ' + '-n "testattestationprovider" ' '--resource-group "{rg}" ' '--tags Property1="Value1" Property2="Value2" Property3="Value3"', checks=[ @@ -96,7 +96,7 @@ def step__attestationproviders_patch(test, rg): @try_manual def step__attestationproviders_delete(test, rg): test.cmd('az attestation delete -y ' - '-n "myattestationprovider" ' + '-n "testattestationprovider" ' '--resource-group "{rg}"') @@ -119,6 +119,26 @@ def test_provider_with_signer_1(test, rg): test.exists('Algorithm') ]) + test.cmd('az attestation policy show -n {att1} -g {rg} --attestation-type SGX-IntelSDK', checks=[ + test.check('Algorithm', 'none'), + test.check('JwtLength', 944), + test.check('TextLength', 501), + test.exists('Jwt'), + test.exists('Text') + ]) + + from knack.util import CLIError + with test.assertRaisesRegex(CLIError, 'PolicyParsingError'): + test.cmd('az attestation policy set -n {att1} -g {rg} --attestation-type SGX-IntelSDK ' + '-f "{signed_jwt_policy1_file}" --policy-format JWT', + checks=[ + test.check('Algorithm', 'RSA256'), + test.check('JwtLength', 2862), + test.check('TextLength', 608), + test.exists('Jwt'), + test.exists('Text') + ]) + """ Bypass this since the test file can be only used on old api version test.cmd('az attestation signer add -n {att1} -g {rg} -f "{new_signer_jwt_file}"', @@ -148,21 +168,22 @@ def test_provider_with_signer_2(test, rg): test.cmd('az attestation policy show -n {att2} -g {rg} --attestation-type SGX-IntelSDK', checks=[ test.check('Algorithm', 'none'), - test.check('JwtLength', 907), - test.check('TextLength', 479), + test.check('JwtLength', 944), + test.check('TextLength', 501), test.exists('Jwt'), test.exists('Text') ]) - - test.cmd('az attestation policy set -n {att2} -g {rg} --attestation-type SGX-IntelSDK ' - '-f "{signed_jwt_policy2_file}" --policy-format JWT', - checks=[ - test.check('Algorithm', 'RSA256'), - test.check('JwtLength', 2862), - test.check('TextLength', 608), - test.exists('Jwt'), - test.exists('Text') - ]) + from knack.util import CLIError + with test.assertRaisesRegex(CLIError, 'InvalidOperation'): + test.cmd('az attestation policy set -n {att2} -g {rg} --attestation-type SGX-IntelSDK ' + '-f "{signed_jwt_policy2_file}" --policy-format JWT', + checks=[ + test.check('Algorithm', 'RSA256'), + test.check('JwtLength', 2862), + test.check('TextLength', 608), + test.exists('Jwt'), + test.exists('Text') + ]) @try_manual @@ -175,8 +196,8 @@ def test_provider_without_signer(test, rg): test.cmd('az attestation policy show -n {att3} -g {rg} --attestation-type SGX-IntelSDK', checks=[ test.check('Algorithm', 'none'), - test.check('JwtLength', 907), - test.check('TextLength', 479), + test.check('JwtLength', 944), + test.check('TextLength', 501), test.exists('Jwt'), test.exists('Text') ]) @@ -226,8 +247,8 @@ def test_provider_without_signer(test, rg): test.cmd('az attestation policy reset -n {att3} -g {rg} --attestation-type SGX-IntelSDK', checks=[ test.check('Algorithm', 'none'), - test.check('JwtLength', 907), - test.check('TextLength', 479), + test.check('JwtLength', 944), + test.check('TextLength', 501), test.exists('Jwt'), test.exists('Text') ]) diff --git a/src/attestation/azext_attestation/tests/latest/test_attestation_scenario_coverage.md b/src/attestation/azext_attestation/tests/latest/test_attestation_scenario_coverage.md index ec41b257c36..334afd4715f 100644 --- a/src/attestation/azext_attestation/tests/latest/test_attestation_scenario_coverage.md +++ b/src/attestation/azext_attestation/tests/latest/test_attestation_scenario_coverage.md @@ -1,8 +1,8 @@ |Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt| -|step__attestationproviders_put|successed||||2020-12-03 03:28:52.543286|2020-12-03 03:29:03.102490| -|step__attestationproviders_get|successed||||2020-12-03 03:29:03.103559|2020-12-03 03:29:04.356355| -|step__attestationproviders_get2|successed||||2020-12-03 03:29:04.357363|2020-12-03 03:29:05.119971| -|step__attestationproviders_get3|successed||||2020-12-03 03:29:05.121049|2020-12-03 03:29:06.630578| -|step__attestationproviders_patch|successed||||2020-12-03 03:29:06.632502|2020-12-03 03:29:11.925206| -|step__attestationproviders_delete|successed||||2020-12-03 03:29:11.926204|2020-12-03 03:29:21.153201| +|step__attestationproviders_put|successed||||2022-07-07 03:14:30.841351|2022-07-07 03:14:41.204845| +|step__attestationproviders_get|successed||||2022-07-07 03:14:41.204845|2022-07-07 03:14:42.619068| +|step__attestationproviders_get2|successed||||2022-07-07 03:14:42.619068|2022-07-07 03:14:43.900284| +|step__attestationproviders_get3|successed||||2022-07-07 03:14:43.900284|2022-07-07 03:14:45.343817| +|step__attestationproviders_patch|successed||||2022-07-07 03:14:45.343817|2022-07-07 03:14:51.774229| +|step__attestationproviders_delete|successed||||2022-07-07 03:14:51.774229|2022-07-07 03:15:02.086530| Coverage: 6/6 diff --git a/src/attestation/setup.py b/src/attestation/setup.py index 492aa6866af..5b65ae10faf 100644 --- a/src/attestation/setup.py +++ b/src/attestation/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '0.2.0' +VERSION = '0.2.1' try: from azext_attestation.manual.version import VERSION except ImportError: diff --git a/src/automation/README.md b/src/automation/README.md index 9977d16275e..da6f073ff47 100644 --- a/src/automation/README.md +++ b/src/automation/README.md @@ -31,7 +31,7 @@ az automation runbook create \ --location westus ``` -##### Set runbook content (Download [AzureAutomationTutorial.ps1](https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-automation/scripts/AzureAutomationTutorial.ps1) as an example) +##### Set runbook content (Download [AzureAutomationTutorial.ps1](https://github.com/Azure/azure-quickstart-templates/blob/master/quickstarts/microsoft.automation/101-automation/scripts/AzureAutomationTutorial.ps1) as an example) ``` az automation runbook replace-content \ --resource-group groupName \ @@ -87,4 +87,4 @@ az automation job resume \ --name jobName ``` -If you have issues, please give feedback by opening an issue at https://github.com/Azure/azure-cli-extensions/issues. \ No newline at end of file +If you have issues, please give feedback by opening an issue at https://github.com/Azure/azure-cli-extensions/issues. diff --git a/src/azure-firewall/azext_firewall/custom.py b/src/azure-firewall/azext_firewall/custom.py index 8124f0a57d6..5b975f43e2c 100644 --- a/src/azure-firewall/azext_firewall/custom.py +++ b/src/azure-firewall/azext_firewall/custom.py @@ -786,10 +786,10 @@ def update_azure_firewall_policy_rule_collection_group(instance, priority=None, def add_azure_firewall_policy_nat_rule_collection(cmd, resource_group_name, firewall_policy_name, - rule_collection_group_name, + rule_collection_group_name, ip_protocols, rule_collection_name, rule_priority, translated_address=None, translated_fqdn=None, translated_port=None, nat_action=None, - rule_name=None, description=None, ip_protocols=None, + rule_name=None, description=None, source_addresses=None, destination_addresses=None, destination_ports=None, source_ip_groups=None): FirewallPolicyNatRuleCollection, FirewallPolicyNatRuleCollectionAction, \ diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall.yaml index f20999cf4a2..9c3db99ab5a 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001","name":"cli_test_azure_firewall000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:54:27Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:54:28.9325864Z","CreationDate":"2022-05-11T19:54:28.9324446Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001","name":"cli_test_azure_firewall000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '518' + - '336' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:32 GMT + - Wed, 22 Jun 2022 11:32:36 GMT expires: - '-1' pragma: @@ -60,13 +60,13 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"80568124-4158-418c-8dc2-5ee96f743b66\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a52fcb7e-bf81-4dcb-8b8b-88552dc4dc70\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -78,7 +78,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5c5674fd-2f52-4191-8504-9f0b4abc14df?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/0e664ef7-8e60-40c1-9cd7-81e0c6992f99?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -86,7 +86,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:41 GMT + - Wed, 22 Jun 2022 11:32:45 GMT expires: - '-1' pragma: @@ -99,9 +99,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 286e310f-cbb9-42bf-a5cd-89005ee9a095 + - 785deb6a-81ec-4706-9d8e-2caf65de811a x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1197' status: code: 201 message: Created @@ -119,9 +119,9 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5c5674fd-2f52-4191-8504-9f0b4abc14df?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/0e664ef7-8e60-40c1-9cd7-81e0c6992f99?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -133,7 +133,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:52 GMT + - Wed, 22 Jun 2022 11:32:55 GMT expires: - '-1' pragma: @@ -143,14 +143,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 33a4e6b9-0d3b-4a00-9037-0a417f121efd + - 92e28611-35f2-42e6-a093-30ce63869d8b status: code: 200 message: OK @@ -168,13 +164,13 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"e56165dc-b9ed-4636-97af-ed9374bec6fa\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"cd515e14-49b1-41c1-a4b8-dc0245746328\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -190,9 +186,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:52 GMT + - Wed, 22 Jun 2022 11:32:56 GMT etag: - - W/"e56165dc-b9ed-4636-97af-ed9374bec6fa" + - W/"cd515e14-49b1-41c1-a4b8-dc0245746328" expires: - '-1' pragma: @@ -202,14 +198,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-arm-service-request-id: - - d93c0c4e-103b-448f-927a-dae8904effbf + - 858c6411-730d-47d0-8fab-f5e3431ca453 status: code: 200 message: OK @@ -227,13 +219,13 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"e56165dc-b9ed-4636-97af-ed9374bec6fa\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"cd515e14-49b1-41c1-a4b8-dc0245746328\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -249,9 +241,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:56 GMT + - Wed, 22 Jun 2022 11:32:57 GMT etag: - - W/"e56165dc-b9ed-4636-97af-ed9374bec6fa" + - W/"cd515e14-49b1-41c1-a4b8-dc0245746328" expires: - '-1' pragma: @@ -268,7 +260,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 7013835e-ba1e-48d8-9922-0025fe2222f2 + - 99d84cc5-880c-4838-b280-ee2b629d3502 status: code: 200 message: OK @@ -294,13 +286,13 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"593f3998-57fb-4e02-86e9-9920d5fb3312\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"9cd15e34-477a-4c8f-9555-4f728ba27e24\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -311,7 +303,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/cccda90c-4887-4522-9a61-82992bd7fd81?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/50aff6a6-2d71-42da-82b9-fb3140eabdbd?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -319,7 +311,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:58 GMT + - Wed, 22 Jun 2022 11:32:58 GMT expires: - '-1' pragma: @@ -336,9 +328,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 96db0b10-6bb0-4546-b041-6112ca192196 + - 1ebb7bd6-b19b-4f55-b65b-b91c6128b365 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1196' status: code: 200 message: OK @@ -356,9 +348,9 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/cccda90c-4887-4522-9a61-82992bd7fd81?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/50aff6a6-2d71-42da-82b9-fb3140eabdbd?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -370,7 +362,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:08 GMT + - Wed, 22 Jun 2022 11:33:08 GMT expires: - '-1' pragma: @@ -387,7 +379,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ee0f9052-4273-425e-9759-196c3006c977 + - 57020856-141e-4a75-8541-2c42c30f3d93 status: code: 200 message: OK @@ -405,13 +397,13 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --allow-active-ftp User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"f90d6f03-6440-4f7c-b7aa-48116c78990f\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"09e032a2-836c-49a8-a8ee-aa2ba2206fb5\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -426,9 +418,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:12 GMT + - Wed, 22 Jun 2022 11:33:08 GMT etag: - - W/"f90d6f03-6440-4f7c-b7aa-48116c78990f" + - W/"09e032a2-836c-49a8-a8ee-aa2ba2206fb5" expires: - '-1' pragma: @@ -445,7 +437,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - d1647cd0-e899-43ae-8550-92f830008a43 + - d2fdd7b4-05ae-4b4b-963f-b7c652dba482 status: code: 200 message: OK @@ -463,13 +455,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"f90d6f03-6440-4f7c-b7aa-48116c78990f\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"09e032a2-836c-49a8-a8ee-aa2ba2206fb5\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -484,9 +476,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:14 GMT + - Wed, 22 Jun 2022 11:33:10 GMT etag: - - W/"f90d6f03-6440-4f7c-b7aa-48116c78990f" + - W/"09e032a2-836c-49a8-a8ee-aa2ba2206fb5" expires: - '-1' pragma: @@ -503,7 +495,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 17a62baf-e38a-401c-9e73-6bbabdcfd0f0 + - 244a31b1-1d64-46a7-aa80-485c98105386 status: code: 200 message: OK @@ -521,14 +513,14 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls?api-version=2021-08-01 response: body: string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"f90d6f03-6440-4f7c-b7aa-48116c78990f\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"09e032a2-836c-49a8-a8ee-aa2ba2206fb5\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": @@ -544,7 +536,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:16 GMT + - Wed, 22 Jun 2022 11:33:10 GMT expires: - '-1' pragma: @@ -561,7 +553,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - f4cfe50e-f6cf-449b-8d0d-b2180c4c0179 + - d50ddaa8-4d10-44bd-880b-9e1500e88e9e status: code: 200 message: OK @@ -581,7 +573,7 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: @@ -591,17 +583,17 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/b5db0bc6-5fb3-483e-8ecc-c8dd5051577b?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ff581305-f176-4f66-a62d-b6afb5aba930?api-version=2021-08-01 cache-control: - no-cache content-length: - '0' date: - - Wed, 11 May 2022 19:55:19 GMT + - Wed, 22 Jun 2022 11:33:12 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/b5db0bc6-5fb3-483e-8ecc-c8dd5051577b?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/ff581305-f176-4f66-a62d-b6afb5aba930?api-version=2021-08-01 pragma: - no-cache server: @@ -612,9 +604,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - b32eab88-a623-472c-9a60-59a3cf7e81b7 + - 90c6460e-7a9e-46fa-8f82-637ae2b67219 x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14998' status: code: 202 message: Accepted @@ -632,9 +624,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/b5db0bc6-5fb3-483e-8ecc-c8dd5051577b?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ff581305-f176-4f66-a62d-b6afb5aba930?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -646,7 +638,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:30 GMT + - Wed, 22 Jun 2022 11:33:23 GMT expires: - '-1' pragma: @@ -663,8 +655,57 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ece2c1eb-1188-40b0-8946-a986b6cd0d6b + - 74c11eba-1374-41a0-bfa8-ac17d191cd69 status: code: 200 message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - network firewall delete + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/ff581305-f176-4f66-a62d-b6afb5aba930?api-version=2021-08-01 + response: + body: + string: '' + headers: + azure-asyncnotification: + - Enabled + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ff581305-f176-4f66-a62d-b6afb5aba930?api-version=2021-08-01 + cache-control: + - no-cache + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:33:23 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/ff581305-f176-4f66-a62d-b6afb5aba930?api-version=2021-08-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-arm-service-request-id: + - 90c6460e-7a9e-46fa-8f82-637ae2b67219 + status: + code: 204 + message: No Content version: 1 diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_ip_config.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_ip_config.yaml index b7c905502d3..81815446cdf 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_ip_config.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_ip_config.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:14 GMT + - Wed, 22 Jun 2022 11:32:35 GMT expires: - '-1' pragma: @@ -59,13 +59,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"ae2dd4c8-bc85-41ce-9ec3-fe507507bb79\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"df4f6f8b-81d8-467e-aa79-6f4151ca9d7a\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -76,7 +76,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/31c427d4-150b-4c21-bf6d-cb1b53e1daad?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c7cfdb71-d4e0-4100-89a3-327b1d085e48?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -84,7 +84,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:21 GMT + - Wed, 22 Jun 2022 11:32:42 GMT expires: - '-1' pragma: @@ -97,9 +97,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - dd7116f7-30b2-49f7-af96-9078097af89c + - 07037b7a-157b-42da-9c4f-73edb9d0c4dc x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1193' status: code: 201 message: Created @@ -117,9 +117,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/31c427d4-150b-4c21-bf6d-cb1b53e1daad?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c7cfdb71-d4e0-4100-89a3-327b1d085e48?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -131,7 +131,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:31 GMT + - Wed, 22 Jun 2022 11:32:52 GMT expires: - '-1' pragma: @@ -148,7 +148,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 72806bb4-ace9-4810-9f0d-5d2239b8c650 + - b561a965-4367-4d11-a207-cada6aa14bbd status: code: 200 message: OK @@ -166,13 +166,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bea58c97-29fc-4859-9b47-70be7ad33d46\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -187,9 +187,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:31 GMT + - Wed, 22 Jun 2022 11:32:53 GMT etag: - - W/"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede" + - W/"bea58c97-29fc-4859-9b47-70be7ad33d46" expires: - '-1' pragma: @@ -206,7 +206,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 34863d1c-c35d-4b67-bbdd-460a5a8b2fdc + - b88a48d1-8430-49f7-958c-4817cac5561a status: code: 200 message: OK @@ -224,12 +224,12 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -238,7 +238,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:32 GMT + - Wed, 22 Jun 2022 11:32:53 GMT expires: - '-1' pragma: @@ -271,15 +271,15 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip\",\r\n - \ \"etag\": \"W/\\\"34202df6-e50b-4770-87c2-f7ebaab4038f\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"9ccfb8ed-fdba-4e28-bcc7-e2f783913306\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"05ab831b-9d74-4460-a28f-d35b5de41903\",\r\n \"publicIPAddressVersion\": + \ \"resourceGuid\": \"28e4ec0a-a67d-45d0-80bf-44d477ba8223\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n @@ -288,7 +288,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/bd335b36-dc16-4ad7-a859-296289f231ce?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/0e985ff4-60a3-477d-922b-222d13591a4e?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -296,7 +296,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:39 GMT + - Wed, 22 Jun 2022 11:32:57 GMT expires: - '-1' pragma: @@ -309,9 +309,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 9ae804d3-cdf6-4360-a9ab-eec8941ef3b8 + - 59b80704-0f07-4a5b-a55a-d3735f7c1d2a x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1196' status: code: 201 message: Created @@ -329,9 +329,9 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/bd335b36-dc16-4ad7-a859-296289f231ce?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/0e985ff4-60a3-477d-922b-222d13591a4e?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -343,7 +343,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:40 GMT + - Wed, 22 Jun 2022 11:32:59 GMT expires: - '-1' pragma: @@ -353,14 +353,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 9143a970-f4a2-460a-88d2-e0e01c76ad38 + - 70aa43a4-0d97-43ec-a9ef-b1e098b15919 status: code: 200 message: OK @@ -378,16 +374,16 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip\",\r\n - \ \"etag\": \"W/\\\"92706ff3-fd1b-4dd5-9eb2-6b495e1a8258\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"7446656c-652b-4387-a5ec-13c7b6044047\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"05ab831b-9d74-4460-a28f-d35b5de41903\",\r\n \"ipAddress\": - \"20.237.145.135\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": + \ \"resourceGuid\": \"28e4ec0a-a67d-45d0-80bf-44d477ba8223\",\r\n \"ipAddress\": + \"20.237.230.213\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n \ },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n }\r\n}" @@ -399,9 +395,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:41 GMT + - Wed, 22 Jun 2022 11:33:00 GMT etag: - - W/"92706ff3-fd1b-4dd5-9eb2-6b495e1a8258" + - W/"7446656c-652b-4387-a5ec-13c7b6044047" expires: - '-1' pragma: @@ -411,14 +407,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 095d01bd-d45a-4b86-9594-ff339f33e876 + - 906364f5-0aad-416e-b8c7-bd5094f70239 status: code: 200 message: OK @@ -436,12 +428,12 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -450,7 +442,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:42 GMT + - Wed, 22 Jun 2022 11:33:00 GMT expires: - '-1' pragma: @@ -483,15 +475,15 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2\",\r\n - \ \"etag\": \"W/\\\"f9f99abc-cd57-4e51-bbaa-f5b34cf523ea\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"2139433e-d74c-459c-afcc-46c21ed77420\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"67e13921-c0ce-4d5b-ba81-ceb68cc09c58\",\r\n \"publicIPAddressVersion\": + \ \"resourceGuid\": \"33bd6abb-9df9-489f-82e9-475569ac33e0\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n @@ -500,7 +492,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/11a7e24c-604d-4d94-94c6-704c68eb766a?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/91dbe386-f6cb-4814-8af3-47cfdc1503a4?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -508,7 +500,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:48 GMT + - Wed, 22 Jun 2022 11:33:04 GMT expires: - '-1' pragma: @@ -521,9 +513,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 13d6839f-20b3-4a4b-abfe-a0beaf29caf3 + - daf77323-4331-4eb5-9666-44cc01a28523 x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1196' status: code: 201 message: Created @@ -541,9 +533,9 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/11a7e24c-604d-4d94-94c6-704c68eb766a?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/91dbe386-f6cb-4814-8af3-47cfdc1503a4?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -555,7 +547,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:49 GMT + - Wed, 22 Jun 2022 11:33:06 GMT expires: - '-1' pragma: @@ -572,7 +564,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6abda5e3-a252-4891-b70c-7439f44e1d64 + - 1abc9c8f-3b6d-4051-8202-7565851c0466 status: code: 200 message: OK @@ -590,16 +582,16 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2\",\r\n - \ \"etag\": \"W/\\\"69897067-8e63-46be-999f-fed2782ea5bd\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"923c1ca6-2a35-44e1-b2a9-8d0b25126d29\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"67e13921-c0ce-4d5b-ba81-ceb68cc09c58\",\r\n \"ipAddress\": - \"20.237.146.164\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": + \ \"resourceGuid\": \"33bd6abb-9df9-489f-82e9-475569ac33e0\",\r\n \"ipAddress\": + \"20.237.231.32\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n \ },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n }\r\n}" @@ -607,13 +599,13 @@ interactions: cache-control: - no-cache content-length: - - '688' + - '687' content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:49 GMT + - Wed, 22 Jun 2022 11:33:07 GMT etag: - - W/"69897067-8e63-46be-999f-fed2782ea5bd" + - W/"923c1ca6-2a35-44e1-b2a9-8d0b25126d29" expires: - '-1' pragma: @@ -630,7 +622,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 43190f03-c977-49e5-9ae7-925a79ae2f57 + - 3469e709-5ae6-4c5a-9d5d-1e9ff205b4ec status: code: 200 message: OK @@ -648,12 +640,12 @@ interactions: ParameterSetName: - -g -n --subnet-name --address-prefixes --subnet-prefixes User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001","name":"cli_test_azure_firewall_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -662,7 +654,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:50 GMT + - Wed, 22 Jun 2022 11:33:07 GMT expires: - '-1' pragma: @@ -697,21 +689,21 @@ interactions: ParameterSetName: - -g -n --subnet-name --address-prefixes --subnet-prefixes User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/virtualNetworks/myvnet?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"myvnet\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/virtualNetworks/myvnet\",\r\n - \ \"etag\": \"W/\\\"a8774457-6b0b-4774-9fa8-692277ca3941\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"48f73980-3078-4280-8f34-c752607c0c5c\\\"\",\r\n \"type\": \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"westus\",\r\n \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"299441d3-33a5-40a5-919c-ae536c14e3cb\",\r\n \"addressSpace\": + \ \"resourceGuid\": \"bdef685c-089c-4217-b0fe-29fea68ea3b0\",\r\n \"addressSpace\": {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n \ \"subnets\": [\r\n {\r\n \"name\": \"AzureFirewallSubnet\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/AzureFirewallSubnet\",\r\n - \ \"etag\": \"W/\\\"a8774457-6b0b-4774-9fa8-692277ca3941\\\"\",\r\n + \ \"etag\": \"W/\\\"48f73980-3078-4280-8f34-c752607c0c5c\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"addressPrefix\": \"10.0.0.0/24\",\r\n \"delegations\": [],\r\n \"privateEndpointNetworkPolicies\": \"Enabled\",\r\n \"privateLinkServiceNetworkPolicies\": @@ -722,7 +714,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/555d2dee-d394-4dc9-a89c-d8abd40f3fdf?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/f0ce9b0e-5fbf-401d-896b-5a9270001326?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -730,7 +722,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:56 GMT + - Wed, 22 Jun 2022 11:33:10 GMT expires: - '-1' pragma: @@ -743,9 +735,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 1ea1e79b-1daf-48ee-b527-8446472d95c5 + - d89b78a6-2fe8-482d-b453-91bdf8f6d66c x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1194' status: code: 201 message: Created @@ -763,9 +755,9 @@ interactions: ParameterSetName: - -g -n --subnet-name --address-prefixes --subnet-prefixes User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/555d2dee-d394-4dc9-a89c-d8abd40f3fdf?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/f0ce9b0e-5fbf-401d-896b-5a9270001326?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -777,7 +769,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:59 GMT + - Wed, 22 Jun 2022 11:33:14 GMT expires: - '-1' pragma: @@ -794,7 +786,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 76199f50-714e-4cbc-a20e-bc948ee1be14 + - d620cb26-631a-4643-9ba3-4ede95cd12b6 status: code: 200 message: OK @@ -812,21 +804,21 @@ interactions: ParameterSetName: - -g -n --subnet-name --address-prefixes --subnet-prefixes User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/virtualNetworks/myvnet?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"myvnet\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/virtualNetworks/myvnet\",\r\n - \ \"etag\": \"W/\\\"c09a292e-cb57-4a8d-8eb5-051c4992bb48\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"8a0a386e-bd2b-46c2-a741-8436b040a928\\\"\",\r\n \"type\": \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"westus\",\r\n \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"299441d3-33a5-40a5-919c-ae536c14e3cb\",\r\n \"addressSpace\": + \ \"resourceGuid\": \"bdef685c-089c-4217-b0fe-29fea68ea3b0\",\r\n \"addressSpace\": {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n \ \"subnets\": [\r\n {\r\n \"name\": \"AzureFirewallSubnet\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/AzureFirewallSubnet\",\r\n - \ \"etag\": \"W/\\\"c09a292e-cb57-4a8d-8eb5-051c4992bb48\\\"\",\r\n + \ \"etag\": \"W/\\\"8a0a386e-bd2b-46c2-a741-8436b040a928\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"addressPrefix\": \"10.0.0.0/24\",\r\n \"delegations\": [],\r\n \"privateEndpointNetworkPolicies\": \"Enabled\",\r\n \"privateLinkServiceNetworkPolicies\": @@ -841,9 +833,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:00 GMT + - Wed, 22 Jun 2022 11:33:14 GMT etag: - - W/"c09a292e-cb57-4a8d-8eb5-051c4992bb48" + - W/"8a0a386e-bd2b-46c2-a741-8436b040a928" expires: - '-1' pragma: @@ -860,7 +852,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 0033ad2a-af3e-437f-90fc-b612e8b63e20 + - 9ef6856a-e213-48c8-a787-39c18b41db98 status: code: 200 message: OK @@ -878,13 +870,13 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bea58c97-29fc-4859-9b47-70be7ad33d46\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -899,9 +891,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:02 GMT + - Wed, 22 Jun 2022 11:33:15 GMT etag: - - W/"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede" + - W/"bea58c97-29fc-4859-9b47-70be7ad33d46" expires: - '-1' pragma: @@ -918,7 +910,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 30118e60-406b-449e-a4e3-1b85cab63d0b + - 8783a274-18c6-48dc-a0ca-1f0a3c1b4df0 status: code: 200 message: OK @@ -943,13 +935,13 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bea58c97-29fc-4859-9b47-70be7ad33d46\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -960,7 +952,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3f40413d-0834-4bcf-8f85-4ded651c72b4?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1561f57f-6c50-45c0-91f8-05c4308e4405?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -968,7 +960,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:02 GMT + - Wed, 22 Jun 2022 11:33:15 GMT expires: - '-1' pragma: @@ -985,9 +977,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 42e66944-be5a-45a8-9d1d-c1021f0e4546 + - eda6ddf9-f64b-4da7-874e-786447ed44dc x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1194' status: code: 200 message: OK @@ -1005,9 +997,9 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3f40413d-0834-4bcf-8f85-4ded651c72b4?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1561f57f-6c50-45c0-91f8-05c4308e4405?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1019,7 +1011,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:32 GMT + - Wed, 22 Jun 2022 11:33:46 GMT expires: - '-1' pragma: @@ -1036,7 +1028,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6d9ec3e7-badc-465d-b457-765965b29aa9 + - 407aca94-336e-4c9e-8b45-9c78a9236959 status: code: 200 message: OK @@ -1054,13 +1046,13 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bea58c97-29fc-4859-9b47-70be7ad33d46\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1075,9 +1067,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:32 GMT + - Wed, 22 Jun 2022 11:33:46 GMT etag: - - W/"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede" + - W/"bea58c97-29fc-4859-9b47-70be7ad33d46" expires: - '-1' pragma: @@ -1094,7 +1086,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - c00f2229-a6b4-4f60-a009-aa517f603d12 + - a07ece17-695c-4ba9-afe8-2675cf9f7a3d status: code: 200 message: OK @@ -1112,13 +1104,13 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bea58c97-29fc-4859-9b47-70be7ad33d46\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1133,9 +1125,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:33 GMT + - Wed, 22 Jun 2022 11:33:47 GMT etag: - - W/"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede" + - W/"bea58c97-29fc-4859-9b47-70be7ad33d46" expires: - '-1' pragma: @@ -1152,7 +1144,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 37b961c0-be50-4938-bdda-d0f74bd9df88 + - 689da8be-f3a6-4973-9dec-2b566adda58b status: code: 200 message: OK @@ -1177,13 +1169,13 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bea58c97-29fc-4859-9b47-70be7ad33d46\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1194,7 +1186,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/00f43c1e-4845-4f67-90c0-6b9bb21b5b5f?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/29fb326e-f35b-42c7-a375-105319812163?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1202,7 +1194,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:34 GMT + - Wed, 22 Jun 2022 11:33:47 GMT expires: - '-1' pragma: @@ -1219,9 +1211,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 245ef1e7-d6d3-4872-a08a-0a44e566ae63 + - 56a4f7f9-214a-40b5-bcfe-7e3d1181508f x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1195' status: code: 200 message: OK @@ -1239,9 +1231,9 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/00f43c1e-4845-4f67-90c0-6b9bb21b5b5f?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/29fb326e-f35b-42c7-a375-105319812163?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1253,7 +1245,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:04 GMT + - Wed, 22 Jun 2022 11:34:18 GMT expires: - '-1' pragma: @@ -1270,7 +1262,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - de40b4f7-6a73-40c7-bf50-7792ea4d1d25 + - d8e58fee-db7c-4d76-8720-296fefc98fa3 status: code: 200 message: OK @@ -1288,13 +1280,13 @@ interactions: ParameterSetName: - -g -n -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bea58c97-29fc-4859-9b47-70be7ad33d46\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1309,9 +1301,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:04 GMT + - Wed, 22 Jun 2022 11:34:19 GMT etag: - - W/"abb561a3-fe9a-4aa4-b46c-5c5dd2b04ede" + - W/"bea58c97-29fc-4859-9b47-70be7ad33d46" expires: - '-1' pragma: @@ -1328,7 +1320,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 1cc83a91-93ff-4241-b02f-a3d5ebfb3706 + - aad47132-341b-4e1d-8f9d-0eea7b9761f0 status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_management_ip_config.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_management_ip_config.yaml index 695d24cacc6..1a7a185d7ab 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_management_ip_config.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_management_ip_config.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_management_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:14 GMT + - Wed, 22 Jun 2022 11:32:36 GMT expires: - '-1' pragma: @@ -59,13 +59,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"9c827aa7-aef3-4cb9-b8bc-e4d163553d78\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"11fd2243-c535-4b72-9d3d-542c5a4fac3a\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -76,7 +76,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/4d9c0e3d-4bde-470a-bada-603a2cdc3dac?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c137c37e-170b-4422-a891-3ba973782210?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -84,7 +84,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:20 GMT + - Wed, 22 Jun 2022 11:32:40 GMT expires: - '-1' pragma: @@ -97,9 +97,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6a41d684-9045-4d79-afcb-ebbd93536462 + - e496c114-83ff-4d20-9300-202e4a1a5989 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 201 message: Created @@ -117,9 +117,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/4d9c0e3d-4bde-470a-bada-603a2cdc3dac?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c137c37e-170b-4422-a891-3ba973782210?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -131,7 +131,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:31 GMT + - Wed, 22 Jun 2022 11:32:50 GMT expires: - '-1' pragma: @@ -148,7 +148,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - dd39ce46-0466-4abd-b7f8-5cf14a27b801 + - 6dec9ef0-4375-4d42-9d99-87cc126fcb1d status: code: 200 message: OK @@ -166,13 +166,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -187,9 +187,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:31 GMT + - Wed, 22 Jun 2022 11:32:50 GMT etag: - - W/"c8bbb142-0521-4704-aeb9-8c744867fbca" + - W/"709126f1-6ea7-467c-bb60-300d426cff5f" expires: - '-1' pragma: @@ -206,7 +206,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 5c86c1ee-5015-4b55-ba1e-15dee4dcc7da + - 6d8e9fa6-3071-449b-b611-d6f71d431465 status: code: 200 message: OK @@ -224,12 +224,12 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_management_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -238,7 +238,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:32 GMT + - Wed, 22 Jun 2022 11:32:52 GMT expires: - '-1' pragma: @@ -271,15 +271,15 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip\",\r\n - \ \"etag\": \"W/\\\"66f62eac-a9f0-433e-a05b-02c737af7e6b\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"c87d1462-7e9a-4a0f-a554-a4bdba5515d9\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"43ef23ab-75e5-496a-a26c-ed488ac84f35\",\r\n \"publicIPAddressVersion\": + \ \"resourceGuid\": \"b876c42a-5424-4eab-b45e-15081b54a5bb\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n @@ -288,7 +288,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a669a2ba-883d-42a1-bc76-07a76b52df21?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a685e74f-0498-470b-893a-e3b68de21591?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -296,7 +296,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:39 GMT + - Wed, 22 Jun 2022 11:32:56 GMT expires: - '-1' pragma: @@ -309,9 +309,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 491ba2b7-ef43-4ea5-acff-646134a2e608 + - f7424fa1-70af-4ebc-bce3-2f65f9ec98de x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1196' status: code: 201 message: Created @@ -329,9 +329,9 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a669a2ba-883d-42a1-bc76-07a76b52df21?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a685e74f-0498-470b-893a-e3b68de21591?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -343,7 +343,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:40 GMT + - Wed, 22 Jun 2022 11:32:58 GMT expires: - '-1' pragma: @@ -360,7 +360,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 768403a0-1e99-42e7-8956-a4707e128bb8 + - 928a4d1a-35a4-414b-9443-552a2aeba4d8 status: code: 200 message: OK @@ -378,16 +378,16 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip\",\r\n - \ \"etag\": \"W/\\\"a92b14eb-de05-4712-82d1-eb5575fec3b6\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"9841f853-9ee8-42bc-bcaf-a99fa5d874ad\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"43ef23ab-75e5-496a-a26c-ed488ac84f35\",\r\n \"ipAddress\": - \"20.237.145.107\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": + \ \"resourceGuid\": \"b876c42a-5424-4eab-b45e-15081b54a5bb\",\r\n \"ipAddress\": + \"20.237.230.198\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n \ },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n }\r\n}" @@ -399,9 +399,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:40 GMT + - Wed, 22 Jun 2022 11:32:58 GMT etag: - - W/"a92b14eb-de05-4712-82d1-eb5575fec3b6" + - W/"9841f853-9ee8-42bc-bcaf-a99fa5d874ad" expires: - '-1' pragma: @@ -418,7 +418,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ee6e01b5-446f-4002-8937-7103b6c04820 + - 7b2592fe-7734-43af-aae2-68ac39a575a1 status: code: 200 message: OK @@ -436,12 +436,12 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_management_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -450,7 +450,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:41 GMT + - Wed, 22 Jun 2022 11:32:59 GMT expires: - '-1' pragma: @@ -483,15 +483,15 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2\",\r\n - \ \"etag\": \"W/\\\"7834d329-50bb-4d78-8a36-7deb92dad7b3\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"085b0b82-1df8-4a38-affd-1afd18663427\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"193b1745-1b20-4c09-8a70-7fcd70d7c156\",\r\n \"publicIPAddressVersion\": + \ \"resourceGuid\": \"3b17e995-82ca-4187-b21a-117415f97c4b\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n @@ -500,7 +500,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/86244a63-a84d-4c89-b85e-07982dcd47b6?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/988f69ce-9331-492a-9315-0a6a9bbea4df?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -508,7 +508,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:47 GMT + - Wed, 22 Jun 2022 11:33:05 GMT expires: - '-1' pragma: @@ -521,9 +521,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 75645938-2f32-4548-8c0f-41f997f50f2e + - 30830bec-4968-47c4-8210-d69f6fe0efa5 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1197' status: code: 201 message: Created @@ -541,9 +541,9 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/86244a63-a84d-4c89-b85e-07982dcd47b6?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/988f69ce-9331-492a-9315-0a6a9bbea4df?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -555,7 +555,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:48 GMT + - Wed, 22 Jun 2022 11:33:06 GMT expires: - '-1' pragma: @@ -572,7 +572,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 103c9316-b405-41f5-847e-03d01ae39b02 + - 6d49d2c7-eaed-4a00-967c-7d451c25563f status: code: 200 message: OK @@ -590,16 +590,16 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip2\",\r\n - \ \"etag\": \"W/\\\"0c4dd2ec-754f-41ef-aa45-fd48c2595ee3\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"1b9de6ad-ea7e-4e29-9d62-7f764db067b2\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"193b1745-1b20-4c09-8a70-7fcd70d7c156\",\r\n \"ipAddress\": - \"20.237.146.146\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": + \ \"resourceGuid\": \"3b17e995-82ca-4187-b21a-117415f97c4b\",\r\n \"ipAddress\": + \"20.237.231.36\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n \ },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n }\r\n}" @@ -607,13 +607,13 @@ interactions: cache-control: - no-cache content-length: - - '695' + - '694' content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:48 GMT + - Wed, 22 Jun 2022 11:33:07 GMT etag: - - W/"0c4dd2ec-754f-41ef-aa45-fd48c2595ee3" + - W/"1b9de6ad-ea7e-4e29-9d62-7f764db067b2" expires: - '-1' pragma: @@ -630,7 +630,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 0733e1f1-6783-4e84-b7d0-b1bb01f33ff1 + - 537ac843-280c-432b-97ab-800d33b7fdcf status: code: 200 message: OK @@ -648,12 +648,12 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_management_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -662,7 +662,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:49 GMT + - Wed, 22 Jun 2022 11:33:07 GMT expires: - '-1' pragma: @@ -695,15 +695,15 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip3?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip3\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip3\",\r\n - \ \"etag\": \"W/\\\"f8311bdc-7ec7-4903-bc9d-ce150a256c3f\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"77f54c29-b744-4060-9b4c-412ce2773469\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"e7d26791-6fec-4aca-9bb6-0540d9cda5a3\",\r\n \"publicIPAddressVersion\": + \ \"resourceGuid\": \"4d691b61-5292-4fb1-867f-ae17e38d6482\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n @@ -712,7 +712,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/df8f606f-7280-472e-9a27-d0a4c2721985?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5bae745a-345c-479c-8bb7-698f4698a180?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -720,7 +720,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:55 GMT + - Wed, 22 Jun 2022 11:33:13 GMT expires: - '-1' pragma: @@ -733,9 +733,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - d22da94f-9ee4-4b3d-8193-94b7da03b4d2 + - 75a10baa-8b3a-4d19-a4a3-413bd1d20b7d x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 201 message: Created @@ -753,9 +753,9 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/df8f606f-7280-472e-9a27-d0a4c2721985?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5bae745a-345c-479c-8bb7-698f4698a180?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -767,7 +767,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:56 GMT + - Wed, 22 Jun 2022 11:33:14 GMT expires: - '-1' pragma: @@ -784,7 +784,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 822d7877-4d27-44eb-a377-2f106cb9effe + - 8ddadcd5-570d-4025-9fe3-fe942fffb491 status: code: 200 message: OK @@ -802,16 +802,16 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip3?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip3\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip3\",\r\n - \ \"etag\": \"W/\\\"48d093f8-9391-4468-ac44-2d01e60a7dbe\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"b4e79745-4a97-49a9-8fd4-14d1b8145fde\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"e7d26791-6fec-4aca-9bb6-0540d9cda5a3\",\r\n \"ipAddress\": - \"20.237.146.178\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": + \ \"resourceGuid\": \"4d691b61-5292-4fb1-867f-ae17e38d6482\",\r\n \"ipAddress\": + \"20.237.231.180\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n \ },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n }\r\n}" @@ -823,9 +823,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:57 GMT + - Wed, 22 Jun 2022 11:33:14 GMT etag: - - W/"48d093f8-9391-4468-ac44-2d01e60a7dbe" + - W/"b4e79745-4a97-49a9-8fd4-14d1b8145fde" expires: - '-1' pragma: @@ -842,7 +842,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - d8b8f3a3-1f95-426e-87a9-d2c61f44220b + - 30618cd5-493b-484e-8634-3fa0a0f8f961 status: code: 200 message: OK @@ -860,12 +860,12 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_management_ip_config000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001","name":"test_azure_firewall_management_ip_config000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:32:34Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -874,7 +874,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:58 GMT + - Wed, 22 Jun 2022 11:33:15 GMT expires: - '-1' pragma: @@ -907,15 +907,15 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip4?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip4\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip4\",\r\n - \ \"etag\": \"W/\\\"ff882f61-8da0-4fbb-abe2-4c00ef58c29d\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"9ac3ffe9-b429-4e7c-8087-bfa394ef39dd\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"e9f2bb18-50ac-4ebe-869d-f48695ed73b2\",\r\n \"publicIPAddressVersion\": + \ \"resourceGuid\": \"d42c6dad-1853-4cf9-bc36-7269dc95c395\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n @@ -924,7 +924,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/dd712de7-7594-4c0d-9b64-2c6199dec998?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/96fd5fb9-e23a-4aa7-85e7-7346cd8b143f?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -932,7 +932,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:04 GMT + - Wed, 22 Jun 2022 11:33:20 GMT expires: - '-1' pragma: @@ -945,9 +945,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 2bccf054-1d1a-49ac-8854-6c12ae50d0db + - c635dbb5-dc47-47c1-9e3d-693b1dccdecd x-ms-ratelimit-remaining-subscription-writes: - - '1195' + - '1196' status: code: 201 message: Created @@ -965,9 +965,9 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/dd712de7-7594-4c0d-9b64-2c6199dec998?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/96fd5fb9-e23a-4aa7-85e7-7346cd8b143f?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -979,7 +979,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:06 GMT + - Wed, 22 Jun 2022 11:33:22 GMT expires: - '-1' pragma: @@ -996,7 +996,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ecd908bf-ea4b-4b01-bffb-09c173057f3f + - 518b1645-7b1f-4044-9b3b-55182db64e45 status: code: 200 message: OK @@ -1014,16 +1014,16 @@ interactions: ParameterSetName: - -g -n --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip4?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip4\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/publicIPAddresses/pubip4\",\r\n - \ \"etag\": \"W/\\\"e594649d-7ebc-4c11-8a6b-b3ddbab7e44d\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"ab662554-8b4f-4135-b391-a065427c2f59\\\"\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"e9f2bb18-50ac-4ebe-869d-f48695ed73b2\",\r\n \"ipAddress\": - \"20.237.147.51\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": + \ \"resourceGuid\": \"d42c6dad-1853-4cf9-bc36-7269dc95c395\",\r\n \"ipAddress\": + \"20.237.231.206\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n \ },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n }\r\n}" @@ -1031,13 +1031,13 @@ interactions: cache-control: - no-cache content-length: - - '694' + - '695' content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:06 GMT + - Wed, 22 Jun 2022 11:33:22 GMT etag: - - W/"e594649d-7ebc-4c11-8a6b-b3ddbab7e44d" + - W/"ab662554-8b4f-4135-b391-a065427c2f59" expires: - '-1' pragma: @@ -1054,7 +1054,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 9e0349ac-cc9b-4ed0-8682-d06b73970056 + - 012924a3-db41-4cfd-bf9b-9f56002d3d74 status: code: 200 message: OK @@ -1072,13 +1072,13 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1093,9 +1093,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:07 GMT + - Wed, 22 Jun 2022 11:33:23 GMT etag: - - W/"c8bbb142-0521-4704-aeb9-8c744867fbca" + - W/"709126f1-6ea7-467c-bb60-300d426cff5f" expires: - '-1' pragma: @@ -1112,7 +1112,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 16ab3ab8-0b71-4fcf-a902-b97005e13b95 + - 96024024-0f08-49e6-92e0-2ab44cbbd5aa status: code: 200 message: OK @@ -1137,13 +1137,13 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1154,7 +1154,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/33b796eb-ce28-4738-85db-4e0873dd16e5?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/2398bd7c-720d-4d41-8e68-fc6950b0f209?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1162,7 +1162,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:08 GMT + - Wed, 22 Jun 2022 11:33:24 GMT expires: - '-1' pragma: @@ -1179,9 +1179,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 8b157725-5777-4942-ad34-d93fb91da5ce + - dfa04d34-8697-440f-a219-133a34fe3750 x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1194' status: code: 200 message: OK @@ -1199,9 +1199,9 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/33b796eb-ce28-4738-85db-4e0873dd16e5?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/2398bd7c-720d-4d41-8e68-fc6950b0f209?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1213,7 +1213,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:38 GMT + - Wed, 22 Jun 2022 11:33:54 GMT expires: - '-1' pragma: @@ -1230,7 +1230,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 457ca917-2803-4364-a2fd-7033e5c435f5 + - e25b39d2-cd98-498a-97e3-22d50caa68fc status: code: 200 message: OK @@ -1248,13 +1248,13 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1269,9 +1269,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:38 GMT + - Wed, 22 Jun 2022 11:33:54 GMT etag: - - W/"c8bbb142-0521-4704-aeb9-8c744867fbca" + - W/"709126f1-6ea7-467c-bb60-300d426cff5f" expires: - '-1' pragma: @@ -1288,7 +1288,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 37dc34e2-f091-4a84-8c1a-3cbea4506250 + - 774c7df6-2051-482f-9579-931387afe099 status: code: 200 message: OK @@ -1306,13 +1306,13 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1327,9 +1327,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:39 GMT + - Wed, 22 Jun 2022 11:33:55 GMT etag: - - W/"c8bbb142-0521-4704-aeb9-8c744867fbca" + - W/"709126f1-6ea7-467c-bb60-300d426cff5f" expires: - '-1' pragma: @@ -1346,7 +1346,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 5197402e-ebb2-45b4-a5d4-c713e81f605d + - 7a15090a-99fe-4854-bb7b-b355f324e8cd status: code: 200 message: OK @@ -1371,13 +1371,13 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1388,7 +1388,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/108fcfc8-0211-4709-ac90-0e71e3ad1bf1?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/985eb135-5e3b-4428-a8ba-e2e4517b38ac?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1396,7 +1396,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:03:40 GMT + - Wed, 22 Jun 2022 11:33:55 GMT expires: - '-1' pragma: @@ -1413,9 +1413,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 18c6ab9b-f441-4a8a-91ec-4b5d543ff681 + - 841506fb-e5f5-416b-b6a1-a8eeca937a55 x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1192' status: code: 200 message: OK @@ -1433,9 +1433,9 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/108fcfc8-0211-4709-ac90-0e71e3ad1bf1?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/985eb135-5e3b-4428-a8ba-e2e4517b38ac?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1447,7 +1447,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:09 GMT + - Wed, 22 Jun 2022 11:34:25 GMT expires: - '-1' pragma: @@ -1464,7 +1464,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 4f54071e-69c3-49ee-ac7a-5d3f322c4bcb + - 23b752b8-59b6-4841-b281-11c942829559 status: code: 200 message: OK @@ -1482,13 +1482,13 @@ interactions: ParameterSetName: - -g -f -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1503,9 +1503,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:10 GMT + - Wed, 22 Jun 2022 11:34:25 GMT etag: - - W/"c8bbb142-0521-4704-aeb9-8c744867fbca" + - W/"709126f1-6ea7-467c-bb60-300d426cff5f" expires: - '-1' pragma: @@ -1522,7 +1522,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 4cd06788-8909-4b58-94fb-f6942569782e + - 2f5fc351-709d-41c4-982d-99ea7586342e status: code: 200 message: OK @@ -1540,13 +1540,13 @@ interactions: ParameterSetName: - -g -f User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_management_ip_config000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c8bbb142-0521-4704-aeb9-8c744867fbca\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"709126f1-6ea7-467c-bb60-300d426cff5f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1561,9 +1561,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:11 GMT + - Wed, 22 Jun 2022 11:34:26 GMT etag: - - W/"c8bbb142-0521-4704-aeb9-8c744867fbca" + - W/"709126f1-6ea7-467c-bb60-300d426cff5f" expires: - '-1' pragma: @@ -1580,7 +1580,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 1f7517fd-2038-4dde-8d33-211f9dbb5852 + - 4e689017-b2bd-4330-ae86-0085a2a3c2e8 status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy.yaml index b8a3912d96c..0ee369cd60e 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy.yaml @@ -19,7 +19,7 @@ interactions: ParameterSetName: - -g -n -l --ip-addresses --fqdns --sku --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -34,10 +34,10 @@ interactions: []\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"01ed06ef-4581-4d88-a928-ad81054704fa\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"7f4fa635-68fe-4247-a86f-c401bb32c056\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/e6ec502b-e7f7-42eb-9bd3-7b965c956dce?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/f1895b58-4b48-4428-96d4-bf11dfa233e7?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -45,7 +45,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:42 GMT + - Wed, 22 Jun 2022 11:32:44 GMT expires: - '-1' pragma: @@ -57,7 +57,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1193' status: code: 201 message: Created @@ -75,9 +75,9 @@ interactions: ParameterSetName: - -g -n -l --ip-addresses --fqdns --sku --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/e6ec502b-e7f7-42eb-9bd3-7b965c956dce?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/f1895b58-4b48-4428-96d4-bf11dfa233e7?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -89,7 +89,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:54 GMT + - Wed, 22 Jun 2022 11:32:54 GMT expires: - '-1' pragma: @@ -121,7 +121,7 @@ interactions: ParameterSetName: - -g -n -l --ip-addresses --fqdns --sku --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -136,7 +136,7 @@ interactions: []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"01ed06ef-4581-4d88-a928-ad81054704fa\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"7f4fa635-68fe-4247-a86f-c401bb32c056\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -145,9 +145,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:54 GMT + - Wed, 22 Jun 2022 11:32:54 GMT etag: - - '"01ed06ef-4581-4d88-a928-ad81054704fa"' + - '"7f4fa635-68fe-4247-a86f-c401bb32c056"' expires: - '-1' pragma: @@ -179,7 +179,7 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -194,7 +194,7 @@ interactions: []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"01ed06ef-4581-4d88-a928-ad81054704fa\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"7f4fa635-68fe-4247-a86f-c401bb32c056\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -203,9 +203,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:57 GMT + - Wed, 22 Jun 2022 11:32:57 GMT etag: - - '"01ed06ef-4581-4d88-a928-ad81054704fa"' + - '"7f4fa635-68fe-4247-a86f-c401bb32c056"' expires: - '-1' pragma: @@ -237,7 +237,7 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies?api-version=2021-08-01 response: @@ -254,7 +254,7 @@ interactions: \ \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"01ed06ef-4581-4d88-a928-ad81054704fa\",\r\n \"location\": + \ \"etag\": \"7f4fa635-68fe-4247-a86f-c401bb32c056\",\r\n \"location\": \"centralus\"\r\n }\r\n ]\r\n}" headers: cache-control: @@ -264,7 +264,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:59 GMT + - Wed, 22 Jun 2022 11:32:57 GMT expires: - '-1' pragma: @@ -294,21 +294,21 @@ interactions: Connection: - keep-alive User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/firewallPolicies?api-version=2021-08-01 response: body: - string: '{"value":[{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolicyWithShimi","name":"firewallPolicyWithShimi","type":"Microsoft.Network/FirewallPolicies","etag":"1894d051-c6bb-4327-a1f4-b2cd37777ba6","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic1","name":"firewallPolic1","type":"Microsoft.Network/FirewallPolicies","etag":"2e067436-f49a-490b-b30f-e979e42df920","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic2","name":"firewallPolic2","type":"Microsoft.Network/FirewallPolicies","etag":"247ac188-d82d-42cc-b928-116a546f4d4b","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallP765olic2","name":"firewallP765olic2","type":"Microsoft.Network/FirewallPolicies","etag":"8e94ea0f-7dd0-4698-97d5-a8da350f928d","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/adi123","name":"adi123","type":"Microsoft.Network/FirewallPolicies","etag":"5cec1d46-e9b3-4f5c-b55d-5cad047a057e","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"democert","keyVaultSecretId":"https://fw-premium-psybnozbyy53c.vault.azure.net/secrets/democert/ddddbfe41cb545a1a4aef705b3c7a957"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/liz_portalTesting/providers/Microsoft.Network/azureFirewalls/lihamilt_premiumTesting_inheritance"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy"},"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01","name":"premium-insik-bugbash-01","type":"Microsoft.Network/FirewallPolicies","etag":"769ec627-fb34-48fb-8b17-a1ae566572da","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sujith-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DemoIdentity1":{"clientId":"7226a344-ae58-44cd-a8ab-28f09ddf2b92","principalId":"7ba56c8f-95ab-4472-83e1-a54f5fac574f"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Insik_TestRG/providers/Microsoft.Network/firewallPolicies/insikfirewallpolicy"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku","name":"lihamilt_testingSku","type":"Microsoft.Network/FirewallPolicies","etag":"5fd0fe10-2f67-4de3-8928-0911201d82b2","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultDnatRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/lihamilt_ruleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy","name":"lihamilt_premiumPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"2b1b699d-c566-4611-911b-e2d7c1f613b6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest10","keyVaultSecretId":"https://fw-premium-25huhucywxyzm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"0f4346a8-a9ce-44eb-ac17-df74a5f94016","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"02270c7f-874b-45d9-8a83-9555eeb3440a","principalId":"74304d77-0da4-41ba-a9f2-09d94379576b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest22","keyVaultSecretId":"https://fw-premium-rxkde7yvqiewa.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"69bf3f83-336e-4055-bdde-69ed787549d2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0ba591e0-0b50-496e-aa3e-c616c24998c0","principalId":"2aafea1f-585f-4094-b2c6-e9a3ae576be8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"7cd7f1ec-bd3d-4f63-a074-7d62837929fb","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e161bfaf-8162-4916-8734-003adedd7435","principalId":"2bb120d8-7c5e-448d-ad45-fcf33ce63082"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-23ixqaupttwxs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006","name":"test006","type":"Microsoft.Network/FirewallPolicies","etag":"4c49529e-35cd-4b93-82ad-40aa47d4fea2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Denis-perf-24/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b6743fce-8526-414a-8f2a-09c59e5a553f","principalId":"673c69ae-7885-466a-8642-575b3845df3a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-tomzrisybep6e.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["142.251.36.14"],"destinationPorts":["80","443"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"cba668a4-2adc-4eaf-a6e8-a33c6b07ff05","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e43eb4d4-9d1b-4e5d-9d3f-48847369c7aa","principalId":"46f95387-bebf-4253-be00-ef9c1eafb661"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-livoixkl5cxjo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy","name":"testPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"d55cd757-974b-4aa0-94ba-b11311276f99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"799fddf0-1b9c-4746-bb93-4ab9d3c7e2a2","principalId":"3c3526a9-2286-46ed-a455-a53ccf1aef43"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"9ba4469e-16fc-429e-8cf9-0583cc67457e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"b7afa0be-b64a-4957-b201-39172b47d5ce","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-atjt3tinrphvs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"a9483f84-e3a0-44db-8687-dc518963c42e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e5b1fe27-492b-47f9-9d1d-60710a468168","principalId":"03f348eb-e158-45d8-8bcb-a09e9c04c9a3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-zqf32efj7p626.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"168a3f27-6702-4b37-9aba-c540262314c1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"ea441d5d-4b3a-4f28-9e09-9ca7cc27130f","principalId":"33bec4c0-743c-4558-95c1-fad995a7b304"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-rm3vsljlr3a7s.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"7117e063-1517-4f75-8a89-61387520a8a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-rm3vsljlr3a7s":{"clientId":"475c0e65-b2d3-4c7f-8ea5-fb344644b1e4","principalId":"c88fa78a-2f25-45ad-b3da-f9ac870df7f5"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-f3skogsb3s4lo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"810f0bf8-f651-45ae-a2b1-a2d64730299a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3d3cb04b-fff8-43ba-902c-e6cc0ec180a4","principalId":"dc36afa4-dd47-4e47-83a7-7c92acbe2a38"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-iovui5jy3gmw6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"8033fff4-cad0-4214-8507-efc7a225bd59","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-iovui5jy3gmw6":{"clientId":"6264a47d-d07c-4251-a50e-b169cd0eab5c","principalId":"54cd7a80-51e0-444a-a16b-1f0d8a2bd8ef"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTestPurge","keyVaultSecretId":"https://fw-c-prgxurttmold6hva.vault.azure.net/secrets/cacertcprg"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250","name":"test250","type":"Microsoft.Network/FirewallPolicies","etag":"df2b593b-6ce4-42c5-a5ec-67ba5c70b681","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-purge-25/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3812e637-437c-43e1-b0ad-5492b5ea785e","principalId":"97197d35-9672-4bc7-97a2-38ffc12e0169"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7bqubu4527na2.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c9a20c7a-a1e7-4caa-a007-4ede7f904443","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"23aad456-9dd6-47c6-94f1-3c31b1a250f7","principalId":"db60e3cf-6d1d-49c8-b388-adcf4523fab8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c53a7d79-d314-4a17-b2ef-d7d56a91ae73","location":"westus2","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-ew572cqbwhcx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.Network/azureFirewalls/fw-perf"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf","name":"policy-perf","type":"Microsoft.Network/FirewallPolicies","etag":"e47b0c74-8558-4959-ac0f-d37889e54696","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-perf":{"clientId":"cbd06206-491f-41af-a616-be395fc17e1d","principalId":"a53e027e-2af9-44d0-9b09-7c477e63d77a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-b6lo3cxvj624c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-managed-id/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"61ea50c7-367d-401b-a3e8-989b96dae564","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-managed-id/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"650b503f-1ba4-466e-ac94-6b83e1d85f78","principalId":"57b4671f-4192-48e1-ba80-bc0ba49e3d68"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-z6eqstx6vkpx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.Network/firewallPolicies/test005","name":"test005","type":"Microsoft.Network/FirewallPolicies","etag":"4dd51730-bd3c-46bb-b4a0-c4f71f316553","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"58464149-c734-4217-8432-63452c47e546","principalId":"e2182021-db06-4363-9b47-d19c3dc05788"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-qpmchjx4isthm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-same-host-auth/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"0c868320-7aaa-4e68-b042-338276b8f7d5","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-same-host-auth/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"53d5e508-0cd1-4895-8b34-199249650458","principalId":"8a9c1071-c5dd-492c-9ea8-e6a7f186081a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-kb3gce25qnk5u.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-auth-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b7f59328-01d7-4e2f-82ff-cdfa5bace144","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-auth-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"1eaa595d-5fb0-4cca-a73d-5c127a7ec62c","principalId":"e2f995eb-9275-42a2-8add-1d32fcc32a61"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2000332","mode":"Off"},{"id":"2000015","mode":"Deny"},{"id":"2000345","mode":"Off"}],"bypassTrafficSettings":[]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/dikla_policy_parent","name":"dikla_policy_parent","type":"Microsoft.Network/FirewallPolicies","etag":"291e3d16-de25-4ca9-8a5c-fc9ccc4974d1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest","name":"policytest","type":"Microsoft.Network/FirewallPolicies","etag":"67b132ce-7051-49e9-be92-d8d6cadb7299","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702","name":"policytest_premium_68a702","type":"Microsoft.Network/FirewallPolicies","etag":"97732749-46d1-44ad-a042-1ba931300541","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a","name":"policytest_premium_ae848a","type":"Microsoft.Network/FirewallPolicies","etag":"727b775a-2e0a-4c43-9c10-b48d1bcc2f10","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8","name":"policytest_premium_20b5d8","type":"Microsoft.Network/FirewallPolicies","etag":"b322f9dc-b515-4252-9450-7817c3a02532","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4","name":"policytest_premium_1557a4","type":"Microsoft.Network/FirewallPolicies","etag":"1418ee00-3be1-475d-8c41-04e9c24ad174","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd","name":"policytest_premium_ac81fd","type":"Microsoft.Network/FirewallPolicies","etag":"e3080d70-a166-4916-82b4-2c355bac64db","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-kyvs233i2kwnu.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"3d0e2d94-9da6-445d-95a5-c00bb9adfdaf","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"64885563-2191-46dd-bdf5-30fc6b79ffac","principalId":"3d256820-e46a-4085-8970-b7f9bd01b740"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"76d2128b-7bc6-4957-b58a-ebe561bb0e75","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-n4xywerujpzhg.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8abda69-833e-4ffd-9689-e3adc3ff29ac","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"be131978-ae64-48c2-94bc-b0fab7a739b5","principalId":"3b64f1a9-e973-443a-85f5-b83d231ad82e"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/2"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/3"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/4"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/5"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/6"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/7"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/8"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/19"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/9"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/10"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/11"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/12"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/13"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/14"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/15"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/16"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/17"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/18"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/20"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/21"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/22"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/23"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/24"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/25"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/26"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/27"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/28"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/29"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/30"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/31"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/32"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/33"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/34"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/35"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/36"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/37"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/38"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/39"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice","name":"policy_slice","type":"Microsoft.Network/FirewallPolicies","etag":"b1b160ff-a4ee-4071-816c-a3010e73066b","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2004079","mode":"Deny"},{"id":"2000105","mode":"Deny"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/fw-policy","name":"fw-policy","type":"Microsoft.Network/FirewallPolicies","etag":"bb112786-65ea-4a7a-90a6-66239cfe25f3","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02","name":"testpolicy02","type":"Microsoft.Network/FirewallPolicies","etag":"f58fdfdc-e4e4-44cb-957d-59804c0f2b99","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03/ruleCollectionGroups/RulesCollectionGrouppp_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03","name":"testpolicy03","type":"Microsoft.Network/FirewallPolicies","etag":"4efc21d5-ac6c-4766-9ad3-e46d369bc577","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04","name":"testpolicy04","type":"Microsoft.Network/FirewallPolicies","etag":"6e1a1283-d95b-48d9-9eb5-0cb1c087f817","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child","name":"lihamilt_SQL_Redirect_Child","type":"Microsoft.Network/FirewallPolicies","etag":"1c929848-8b17-42f5-b1d1-d03265702474","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child"}],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent","name":"lihamilt_SQL_Redirect_Parent","type":"Microsoft.Network/FirewallPolicies","etag":"7adabeb6-f743-467e-80a6-68711ab9b9f1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-vpmlpyfh5dbbk.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"042ffa98-2438-4366-97cf-237144f8f4d1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"25ec5f9a-c8c4-447e-bad1-2545bd9c5b5f","principalId":"fcd6a28c-bae5-49d2-9187-14ef0571cf46"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/ProductRuleCollectionGroupDevStorage"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"369701ce-84eb-421a-812a-65357f1b3fd0","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fb54ef5f-b646-48f1-9420-331525ab1264","principalId":"109ae32a-3842-479a-81f3-5b96425d852b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"cert","keyVaultSecretId":"https://bewaters-features-mwh.vault.azure.net/secrets/cert/a9e77ff7af1e451fae03fed9fc6abb4e"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/bewaters-trusted-services-mwh","name":"bewaters-trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"8dc0daa0-8568-4602-85a6-337730b34fcd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-ma/providers/Microsoft.ManagedIdentity/userAssignedIdentities/bewaters-byok-success-ma":{"clientId":"3a73f346-1e57-4bfd-8bae-8af20dce0d3b","principalId":"e52b1619-d7ab-4f17-a1d1-be13afc9a95a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/trusted-services-mwh","name":"trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"5c56636f-4501-419b-b322-a614e0cfdb45","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testNfvrpRelease209/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy2/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testNfvrpRelease209/providers/Microsoft.Network/azureFirewalls/TestFW2"}],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testNfvrpRelease209/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy2","name":"TestFirewallPolicy2","type":"Microsoft.Network/FirewallPolicies","etag":"04456f78-3cf2-4857-afd3-d4070b3eb4e1","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/isguNfvrpImprovements/providers/Microsoft.Network/firewallPolicies/polic22","name":"polic22","type":"Microsoft.Network/FirewallPolicies","etag":"9a466aa3-6044-4dcf-b659-f79552043098","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/isguTestRuleAnalytics/providers/Microsoft.Network/firewallPolicies/policyTestRGDeprecation1","name":"policyTestRGDeprecation1","type":"Microsoft.Network/FirewallPolicies","etag":"55805402-9686-4d59-8584-3b8cc451fbd8","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testDeprecationRCG/providers/Microsoft.Network/firewallPolicies/fwPolicy1","name":"fwPolicy1","type":"Microsoft.Network/FirewallPolicies","etag":"c7380f36-4b45-4506-8ba8-50349d24740d","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testDeprecationRCG/providers/Microsoft.Network/firewallPolicies/fwPolicy2/ruleCollectionGroups/RCG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testDeprecationRCG/providers/Microsoft.Network/firewallPolicies/fwPolicy2","name":"fwPolicy2","type":"Microsoft.Network/FirewallPolicies","etag":"0183e4c1-e8a3-4400-ae9e-c69a2346aee7","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testDeprecationRCG/providers/Microsoft.Network/firewallPolicies/testBatch1","name":"testBatch1","type":"Microsoft.Network/FirewallPolicies","etag":"ba31a54c-7360-4f54-8551-83a9522a9c33","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testDeprecationRCG/providers/Microsoft.Network/firewallPolicies/policyFetchTrue","name":"policyFetchTrue","type":"Microsoft.Network/FirewallPolicies","etag":"8c23df9e-7321-4af6-9c74-1325ca28bc3e","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Deny","dnsSettings":{"servers":["8.8.18.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testDeprecationRCG/providers/Microsoft.Network/firewallPolicies/PolicyFetch2/ruleCollectionGroups/testRCG1"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testDeprecationRCG/providers/Microsoft.Network/azureFirewalls/fw2"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testDeprecationRCG/providers/Microsoft.Network/firewallPolicies/PolicyFetch2","name":"PolicyFetch2","type":"Microsoft.Network/FirewallPolicies","etag":"0b7a9ecc-1cca-46a8-a606-21e6933df8a7","location":"canadaeast"},{"properties":{"sku":{"tier":"Basic"},"threatIntelMode":"Alert","snat":{"privateRanges":["10.0.2.4","10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","100.64.0.0/10"]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Mena-resource-group/providers/Microsoft.Network/azureFirewalls/basic_firewall_Mena"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/DefaultResourceGroup-CUS/providers/Microsoft.Network/azureFirewalls/Firewall_basic_test"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ssp-slice-testing-basic/providers/Microsoft.Network/firewallPolicies/policyTestJayBasic","name":"policyTestJayBasic","type":"Microsoft.Network/FirewallPolicies","etag":"d40bcad6-30df-4a77-a06e-58906355d7c7","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inherit_errortest02RG/providers/Microsoft.Network/firewallPolicies/jammyFPBase","name":"jammyFPBase","type":"Microsoft.Network/FirewallPolicies","etag":"cea7e4bc-4762-4c7f-ac4c-514c1f4fc404","location":"canadaeast"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_0"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_2"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_3"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_4"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_5"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_6"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_7"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_8"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_9"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_10"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_11"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_12"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_13"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_14"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_15"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_16"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_17"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_18"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_19"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_20"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_21"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_22"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_23"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_24"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_25"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_26"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_27"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_28"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_29"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_30"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_31"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_32"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_33"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_34"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_35"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_36"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_37"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_38"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_39"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_40"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_41"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_42"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_43"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_44"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_45"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_46"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_47"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_48"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_49"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_50"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_51"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_52"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_53"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_54"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_56"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_57"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_58"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4/ruleCollectionGroups/policy_4-RCG_59"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_canada_east/providers/Microsoft.Network/firewallPolicies/policy_4","name":"policy_4","type":"Microsoft.Network/FirewallPolicies","etag":"c83d7cf1-a5cc-4c79-a4e0-bdeef70c326d","location":"canadaeast"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSQLCasing","name":"lihamilt_testingSQLCasing","type":"Microsoft.Network/FirewallPolicies","etag":"dadacb51-aab3-4f32-bcb4-11f442547471","location":"canadaeast","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://bewaters-byok-success-ma.vault.azure.net/secrets/interCA/a3003bed1de64f4cac7afbea98ccdfb2"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/policy/ruleCollectionGroups/RCG"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/policy","name":"policy","type":"Microsoft.Network/FirewallPolicies","etag":"adbce0f2-8533-4c67-866d-271ba05d103c","location":"southindia","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-ma/providers/Microsoft.ManagedIdentity/userAssignedIdentities/bewaters-byok-success-ma":{"clientId":"3a73f346-1e57-4bfd-8bae-8af20dce0d3b","principalId":"e52b1619-d7ab-4f17-a1d1-be13afc9a95a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://bewaters-byok-success-ma.vault.azure.net/secrets/interCA/a3003bed1de64f4cac7afbea98ccdfb2"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-ma/providers/Microsoft.Network/firewallPolicies/bewaters-byok-ma/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-ma/providers/Microsoft.Network/firewallPolicies/bewaters-byok-ma","name":"bewaters-byok-ma","type":"Microsoft.Network/FirewallPolicies","etag":"158fe807-8536-4061-bc72-da26427232fa","location":"southindia","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-ma/providers/Microsoft.ManagedIdentity/userAssignedIdentities/bewaters-byok-success-ma":{"clientId":"3a73f346-1e57-4bfd-8bae-8af20dce0d3b","principalId":"e52b1619-d7ab-4f17-a1d1-be13afc9a95a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/policy_2","name":"policy_2","type":"Microsoft.Network/FirewallPolicies","etag":"bbcd88a5-551f-4cb7-986f-90d8c71e02c6","location":"southindia","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/policy_3","name":"policy_3","type":"Microsoft.Network/FirewallPolicies","etag":"170560f8-bea6-4b67-b41c-20df838d0cbd","location":"southindia","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"transportSecurity":{"certificateAuthority":{"name":"tsName","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.Network/firewallPolicies/policy_1","name":"policy_1","type":"Microsoft.Network/FirewallPolicies","etag":"589075cd-2fea-4e9e-b524-5d577b3990d4","location":"southindia","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Deny","dnsSettings":{"servers":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/isguBB01/providers/Microsoft.Network/firewallPolicies/isguTest1","name":"isguTest1","type":"Microsoft.Network/FirewallPolicies","etag":"eb2ea486-67b4-4868-bba4-1c2427153af3","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Deny","threatIntelWhitelist":{"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/isguBB01/providers/Microsoft.Network/firewallPolicies/isguTest12","name":"isguTest12","type":"Microsoft.Network/FirewallPolicies","etag":"7cf17faa-d7b5-4afe-b832-a6704aebe549","location":"westus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Deny","threatIntelWhitelist":{"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/isguBB01/providers/Microsoft.Network/firewallPolicies/isguTest22","name":"isguTest22","type":"Microsoft.Network/FirewallPolicies","etag":"cc755c2c-ec3f-46ec-b092-85d9472836f1","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Deny","threatIntelWhitelist":{"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/isguBB01/providers/Microsoft.Network/firewallPolicies/isguTest221","name":"isguTest221","type":"Microsoft.Network/FirewallPolicies","etag":"2b756c19-48b8-4b11-81ab-1cbaf938d155","location":"westus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"6b88e30d-a80a-4f5a-8179-8a5e04e4d945","location":"westus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection2z4xtrlgsk365ul3xuvjwc37mbxx7/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy","name":"myFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"58511935-8e33-4af5-bdbc-7bedbd39a1f5","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":["10.0.2.4"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/iavor-tcpreset1/providers/Microsoft.Network/firewallPolicies/FirewallPolicy_firewall1/ruleCollectionGroups/DefaultDnatRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/iavor-tcpreset1/providers/Microsoft.Network/firewallPolicies/FirewallPolicy_firewall1/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/iavor-tcpreset1/providers/Microsoft.Network/firewallPolicies/FirewallPolicy_firewall1","name":"FirewallPolicy_firewall1","type":"Microsoft.Network/FirewallPolicies","etag":"d6d24094-19f3-47d4-881b-1c970ad0afbc","location":"eastus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRunCommand/providers/Microsoft.Network/firewallPolicies/jammyFP02/ruleCollectionGroups/rcg01"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRunCommand/providers/Microsoft.Network/azureFirewalls/firewall1"}],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRunCommand/providers/Microsoft.Network/firewallPolicies/jammyFP02","name":"jammyFP02","type":"Microsoft.Network/FirewallPolicies","etag":"22c1bd61-cb70-4de1-a9ea-f7a3b735aec4","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand/providers/Microsoft.Network/firewallPolicies/jammyFPChild"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand/providers/Microsoft.Network/firewallPolicies/jammyFPBase/ruleCollectionGroups/rcg01"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand/providers/Microsoft.Network/firewallPolicies/jammyFPBase","name":"jammyFPBase","type":"Microsoft.Network/FirewallPolicies","etag":"db6bda68-c2a2-4add-bbaa-57bfbaf53f15","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand/providers/Microsoft.Network/azureFirewalls/firewall1"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand/providers/Microsoft.Network/firewallPolicies/jammyFPBase"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand/providers/Microsoft.Network/firewallPolicies/jammyFPChild","name":"jammyFPChild","type":"Microsoft.Network/FirewallPolicies","etag":"47cae14e-32b4-4288-8f01-c143a4404e38","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand2/providers/Microsoft.Network/firewallPolicies/jammyFPChild"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand2/providers/Microsoft.Network/firewallPolicies/jammyFPBase/ruleCollectionGroups/rcg01"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand2/providers/Microsoft.Network/firewallPolicies/jammyFPBase","name":"jammyFPBase","type":"Microsoft.Network/FirewallPolicies","etag":"302f49b6-08b2-45ef-a360-dca3e2721533","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand2/providers/Microsoft.Network/azureFirewalls/firewall1"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand2/providers/Microsoft.Network/firewallPolicies/jammyFPBase"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/inheritencetestRunCommand2/providers/Microsoft.Network/firewallPolicies/jammyFPChild","name":"jammyFPChild","type":"Microsoft.Network/FirewallPolicies","etag":"bd3320b4-e173-4f62-a380-1612608d04d9","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/jagangul-dev-setup-fat-flows-april26-attempt-1/providers/Microsoft.Network/firewallpolicies/firewallPolicy1/ruleCollectionGroups/AppRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/jagangul-dev-setup-fat-flows-april26-attempt-1/providers/Microsoft.Network/firewallpolicies/firewallPolicy1/ruleCollectionGroups/NetworkRG"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/jagangul-dev-setup-fat-flows-april26-attempt-1/providers/Microsoft.Network/azureFirewalls/firewall1"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/jagangul-dev-setup-fat-flows-april26-attempt-1/providers/Microsoft.Network/firewallPolicies/firewallPolicy1","name":"firewallPolicy1","type":"Microsoft.Network/FirewallPolicies","etag":"acdf9d26-e3e7-4d9f-bdd1-03793e809aa1","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/joanna-pagination/providers/Microsoft.Network/firewallPolicies/basepolicy-eastus","name":"basepolicy-eastus","type":"Microsoft.Network/FirewallPolicies","etag":"e5e942e3-e9d7-4a7a-bfe7-86fb1546a310","location":"eastus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/policy_standard/ruleCollectionGroups/spcial_chars_RCG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/policy_standard/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/policy_standard","name":"policy_standard","type":"Microsoft.Network/FirewallPolicies","etag":"da9f5afc-54d7-4df8-801d-9263c460fd13","location":"eastus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy/ruleCollectionGroups/spcial_chars_RCG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy","name":"premium_policy","type":"Microsoft.Network/FirewallPolicies","etag":"15bcbeb6-dffc-49cd-b076-a64cb6641477","location":"eastus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy_2/ruleCollectionGroups/spcial_chars_RCG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy_2/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy_2","name":"premium_policy_2","type":"Microsoft.Network/FirewallPolicies","etag":"24367b1a-8a0f-4b93-8349-0ef2a605f0a6","location":"eastus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy_3/ruleCollectionGroups/spcial_chars_RCG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy_3/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy_3","name":"premium_policy_3","type":"Microsoft.Network/FirewallPolicies","etag":"9f8ee6b3-38ee-4ccc-91e6-d439a6292445","location":"eastus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_byok/providers/Microsoft.Network/firewallPolicies/premium_policy_choko","name":"premium_policy_choko","type":"Microsoft.Network/FirewallPolicies","etag":"5d28999e-106f-48cd-9915-ce0851b0131e","location":"eastus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Alert"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"73071c25-d249-44af-b921-1667bb8bd7c3","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test10RG/providers/Microsoft.Network/firewallPolicies/jammyFP01/ruleCollectionGroups/rcg01"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test10RG/providers/Microsoft.Network/firewallPolicies/jammyFP01","name":"jammyFP01","type":"Microsoft.Network/FirewallPolicies","etag":"ede96bb3-0640-4fdd-8cb9-e179174d1907","location":"eastus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Alert"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"79eccaa2-066f-4f20-89f8-5ae2afc31583","location":"eastus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Alert"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"76e6caf2-c377-493a-9df2-b14285af8d0a","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ssp-housekeep-leak-slice/providers/Microsoft.Network/firewallpolicies/firewallPolicy1/ruleCollectionGroups/AppRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ssp-housekeep-leak-slice/providers/Microsoft.Network/firewallpolicies/firewallPolicy1/ruleCollectionGroups/NetworkRG"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ssp-housekeep-leak-slice/providers/Microsoft.Network/azureFirewalls/firewall1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/jagangul-dev-setup-fatflows-may10/providers/Microsoft.Network/azureFirewalls/firewall1"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/ssp-housekeep-leak-slice/providers/Microsoft.Network/firewallPolicies/firewallPolicy1","name":"firewallPolicy1","type":"Microsoft.Network/FirewallPolicies","etag":"bee27983-fe91-41d0-b5e9-5b101394515d","location":"eastus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Alert"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"a186feec-2217-4f6e-bd75-fbe6a03d72ff","location":"eastus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Alert"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"d487a7ab-22c2-4742-bd63-2677f2f55953","location":"eastus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Alert"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"e13b1841-73be-44bc-8a7f-9e8bce10f386","location":"eastus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/jagangul-dev-setup-fatflows-may10/providers/Microsoft.Network/firewallpolicies/firewallPolicy1/ruleCollectionGroups/AppRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/jagangul-dev-setup-fatflows-may10/providers/Microsoft.Network/firewallpolicies/firewallPolicy1/ruleCollectionGroups/NetworkRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/jagangul-dev-setup-fatflows-may10/providers/Microsoft.Network/firewallPolicies/firewallPolicy1","name":"firewallPolicy1","type":"Microsoft.Network/FirewallPolicies","etag":"c65a5b5d-abf9-46bb-a387-872da33b9d5d","location":"eastus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Alert"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeletePremiumAzFwInHub2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"a91fa08a-e946-45bd-8f23-b9b4070f2d7e","location":"eastus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Child2"}],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Parent2","name":"lihamilt_SQL_Parent2","type":"Microsoft.Network/FirewallPolicies","etag":"68125877-e179-4b28-abae-6d4fd556cc9c","location":"westeurope","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Child2/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Child2/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Parent2"},"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Child2","name":"lihamilt_SQL_Child2","type":"Microsoft.Network/FirewallPolicies","etag":"5cf0041a-526d-47b0-862d-ba44361c1883","location":"westeurope","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolicyWithShimi","name":"firewallPolicyWithShimi","type":"Microsoft.Network/FirewallPolicies","etag":"1894d051-c6bb-4327-a1f4-b2cd37777ba6","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic1","name":"firewallPolic1","type":"Microsoft.Network/FirewallPolicies","etag":"2e067436-f49a-490b-b30f-e979e42df920","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic2","name":"firewallPolic2","type":"Microsoft.Network/FirewallPolicies","etag":"247ac188-d82d-42cc-b928-116a546f4d4b","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallP765olic2","name":"firewallP765olic2","type":"Microsoft.Network/FirewallPolicies","etag":"8e94ea0f-7dd0-4698-97d5-a8da350f928d","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/adi123","name":"adi123","type":"Microsoft.Network/FirewallPolicies","etag":"5cec1d46-e9b3-4f5c-b55d-5cad047a057e","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"democert","keyVaultSecretId":"https://fw-premium-psybnozbyy53c.vault.azure.net/secrets/democert/ddddbfe41cb545a1a4aef705b3c7a957"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/liz_portalTesting/providers/Microsoft.Network/azureFirewalls/lihamilt_premiumTesting_inheritance"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy"},"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01","name":"premium-insik-bugbash-01","type":"Microsoft.Network/FirewallPolicies","etag":"769ec627-fb34-48fb-8b17-a1ae566572da","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sujith-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DemoIdentity1":{"clientId":"7226a344-ae58-44cd-a8ab-28f09ddf2b92","principalId":"7ba56c8f-95ab-4472-83e1-a54f5fac574f"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Insik_TestRG/providers/Microsoft.Network/firewallPolicies/insikfirewallpolicy"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku","name":"lihamilt_testingSku","type":"Microsoft.Network/FirewallPolicies","etag":"5fd0fe10-2f67-4de3-8928-0911201d82b2","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultDnatRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/lihamilt_ruleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy","name":"lihamilt_premiumPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"2b1b699d-c566-4611-911b-e2d7c1f613b6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest10","keyVaultSecretId":"https://fw-premium-25huhucywxyzm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"0f4346a8-a9ce-44eb-ac17-df74a5f94016","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"02270c7f-874b-45d9-8a83-9555eeb3440a","principalId":"74304d77-0da4-41ba-a9f2-09d94379576b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest22","keyVaultSecretId":"https://fw-premium-rxkde7yvqiewa.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"69bf3f83-336e-4055-bdde-69ed787549d2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0ba591e0-0b50-496e-aa3e-c616c24998c0","principalId":"2aafea1f-585f-4094-b2c6-e9a3ae576be8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"7cd7f1ec-bd3d-4f63-a074-7d62837929fb","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e161bfaf-8162-4916-8734-003adedd7435","principalId":"2bb120d8-7c5e-448d-ad45-fcf33ce63082"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-23ixqaupttwxs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006","name":"test006","type":"Microsoft.Network/FirewallPolicies","etag":"4c49529e-35cd-4b93-82ad-40aa47d4fea2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Denis-perf-24/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b6743fce-8526-414a-8f2a-09c59e5a553f","principalId":"673c69ae-7885-466a-8642-575b3845df3a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-tomzrisybep6e.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["142.251.36.14"],"destinationPorts":["80","443"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"cba668a4-2adc-4eaf-a6e8-a33c6b07ff05","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e43eb4d4-9d1b-4e5d-9d3f-48847369c7aa","principalId":"46f95387-bebf-4253-be00-ef9c1eafb661"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-livoixkl5cxjo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy","name":"testPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"d55cd757-974b-4aa0-94ba-b11311276f99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"799fddf0-1b9c-4746-bb93-4ab9d3c7e2a2","principalId":"3c3526a9-2286-46ed-a455-a53ccf1aef43"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"9ba4469e-16fc-429e-8cf9-0583cc67457e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"b7afa0be-b64a-4957-b201-39172b47d5ce","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-atjt3tinrphvs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"a9483f84-e3a0-44db-8687-dc518963c42e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e5b1fe27-492b-47f9-9d1d-60710a468168","principalId":"03f348eb-e158-45d8-8bcb-a09e9c04c9a3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-zqf32efj7p626.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"168a3f27-6702-4b37-9aba-c540262314c1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"ea441d5d-4b3a-4f28-9e09-9ca7cc27130f","principalId":"33bec4c0-743c-4558-95c1-fad995a7b304"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-rm3vsljlr3a7s.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"7117e063-1517-4f75-8a89-61387520a8a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-rm3vsljlr3a7s":{"clientId":"475c0e65-b2d3-4c7f-8ea5-fb344644b1e4","principalId":"c88fa78a-2f25-45ad-b3da-f9ac870df7f5"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-f3skogsb3s4lo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"810f0bf8-f651-45ae-a2b1-a2d64730299a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3d3cb04b-fff8-43ba-902c-e6cc0ec180a4","principalId":"dc36afa4-dd47-4e47-83a7-7c92acbe2a38"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-iovui5jy3gmw6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"8033fff4-cad0-4214-8507-efc7a225bd59","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-iovui5jy3gmw6":{"clientId":"6264a47d-d07c-4251-a50e-b169cd0eab5c","principalId":"54cd7a80-51e0-444a-a16b-1f0d8a2bd8ef"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTestPurge","keyVaultSecretId":"https://fw-c-prgxurttmold6hva.vault.azure.net/secrets/cacertcprg"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250","name":"test250","type":"Microsoft.Network/FirewallPolicies","etag":"df2b593b-6ce4-42c5-a5ec-67ba5c70b681","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-purge-25/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3812e637-437c-43e1-b0ad-5492b5ea785e","principalId":"97197d35-9672-4bc7-97a2-38ffc12e0169"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7bqubu4527na2.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c9a20c7a-a1e7-4caa-a007-4ede7f904443","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"23aad456-9dd6-47c6-94f1-3c31b1a250f7","principalId":"db60e3cf-6d1d-49c8-b388-adcf4523fab8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c53a7d79-d314-4a17-b2ef-d7d56a91ae73","location":"westus2","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-ew572cqbwhcx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.Network/azureFirewalls/fw-perf"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf","name":"policy-perf","type":"Microsoft.Network/FirewallPolicies","etag":"e47b0c74-8558-4959-ac0f-d37889e54696","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-perf":{"clientId":"cbd06206-491f-41af-a616-be395fc17e1d","principalId":"a53e027e-2af9-44d0-9b09-7c477e63d77a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-b6lo3cxvj624c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-managed-id/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"61ea50c7-367d-401b-a3e8-989b96dae564","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-managed-id/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"650b503f-1ba4-466e-ac94-6b83e1d85f78","principalId":"57b4671f-4192-48e1-ba80-bc0ba49e3d68"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-z6eqstx6vkpx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.Network/firewallPolicies/test005","name":"test005","type":"Microsoft.Network/FirewallPolicies","etag":"4dd51730-bd3c-46bb-b4a0-c4f71f316553","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"58464149-c734-4217-8432-63452c47e546","principalId":"e2182021-db06-4363-9b47-d19c3dc05788"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-qpmchjx4isthm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-same-host-auth/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"0c868320-7aaa-4e68-b042-338276b8f7d5","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-same-host-auth/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"53d5e508-0cd1-4895-8b34-199249650458","principalId":"8a9c1071-c5dd-492c-9ea8-e6a7f186081a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-kb3gce25qnk5u.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-auth-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b7f59328-01d7-4e2f-82ff-cdfa5bace144","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-auth-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"1eaa595d-5fb0-4cca-a73d-5c127a7ec62c","principalId":"e2f995eb-9275-42a2-8add-1d32fcc32a61"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2000332","mode":"Off"},{"id":"2000015","mode":"Deny"},{"id":"2000345","mode":"Off"}],"bypassTrafficSettings":[]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/dikla_policy_parent","name":"dikla_policy_parent","type":"Microsoft.Network/FirewallPolicies","etag":"291e3d16-de25-4ca9-8a5c-fc9ccc4974d1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest","name":"policytest","type":"Microsoft.Network/FirewallPolicies","etag":"67b132ce-7051-49e9-be92-d8d6cadb7299","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702","name":"policytest_premium_68a702","type":"Microsoft.Network/FirewallPolicies","etag":"97732749-46d1-44ad-a042-1ba931300541","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a","name":"policytest_premium_ae848a","type":"Microsoft.Network/FirewallPolicies","etag":"727b775a-2e0a-4c43-9c10-b48d1bcc2f10","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8","name":"policytest_premium_20b5d8","type":"Microsoft.Network/FirewallPolicies","etag":"b322f9dc-b515-4252-9450-7817c3a02532","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4","name":"policytest_premium_1557a4","type":"Microsoft.Network/FirewallPolicies","etag":"1418ee00-3be1-475d-8c41-04e9c24ad174","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd","name":"policytest_premium_ac81fd","type":"Microsoft.Network/FirewallPolicies","etag":"e3080d70-a166-4916-82b4-2c355bac64db","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-kyvs233i2kwnu.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"3d0e2d94-9da6-445d-95a5-c00bb9adfdaf","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"64885563-2191-46dd-bdf5-30fc6b79ffac","principalId":"3d256820-e46a-4085-8970-b7f9bd01b740"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"76d2128b-7bc6-4957-b58a-ebe561bb0e75","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-n4xywerujpzhg.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8abda69-833e-4ffd-9689-e3adc3ff29ac","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"be131978-ae64-48c2-94bc-b0fab7a739b5","principalId":"3b64f1a9-e973-443a-85f5-b83d231ad82e"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/2"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/3"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/4"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/5"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/6"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/7"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/8"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/19"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/9"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/10"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/11"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/12"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/13"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/14"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/15"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/16"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/17"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/18"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/20"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/21"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/22"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/23"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/24"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/25"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/26"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/27"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/28"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/29"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/30"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/31"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/32"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/33"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/34"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/35"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/36"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/37"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/38"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/39"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice","name":"policy_slice","type":"Microsoft.Network/FirewallPolicies","etag":"b1b160ff-a4ee-4071-816c-a3010e73066b","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2004079","mode":"Deny"},{"id":"2000105","mode":"Deny"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/fw-policy","name":"fw-policy","type":"Microsoft.Network/FirewallPolicies","etag":"bb112786-65ea-4a7a-90a6-66239cfe25f3","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02","name":"testpolicy02","type":"Microsoft.Network/FirewallPolicies","etag":"f58fdfdc-e4e4-44cb-957d-59804c0f2b99","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03/ruleCollectionGroups/RulesCollectionGrouppp_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03","name":"testpolicy03","type":"Microsoft.Network/FirewallPolicies","etag":"4efc21d5-ac6c-4766-9ad3-e46d369bc577","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04","name":"testpolicy04","type":"Microsoft.Network/FirewallPolicies","etag":"6e1a1283-d95b-48d9-9eb5-0cb1c087f817","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child","name":"lihamilt_SQL_Redirect_Child","type":"Microsoft.Network/FirewallPolicies","etag":"1c929848-8b17-42f5-b1d1-d03265702474","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child"}],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent","name":"lihamilt_SQL_Redirect_Parent","type":"Microsoft.Network/FirewallPolicies","etag":"7adabeb6-f743-467e-80a6-68711ab9b9f1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-vpmlpyfh5dbbk.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"042ffa98-2438-4366-97cf-237144f8f4d1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"25ec5f9a-c8c4-447e-bad1-2545bd9c5b5f","principalId":"fcd6a28c-bae5-49d2-9187-14ef0571cf46"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/ProductRuleCollectionGroupDevStorage"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"369701ce-84eb-421a-812a-65357f1b3fd0","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fb54ef5f-b646-48f1-9420-331525ab1264","principalId":"109ae32a-3842-479a-81f3-5b96425d852b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"cert","keyVaultSecretId":"https://bewaters-features-mwh.vault.azure.net/secrets/cert/a9e77ff7af1e451fae03fed9fc6abb4e"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/bewaters-trusted-services-mwh","name":"bewaters-trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"8dc0daa0-8568-4602-85a6-337730b34fcd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-ma/providers/Microsoft.ManagedIdentity/userAssignedIdentities/bewaters-byok-success-ma":{"clientId":"3a73f346-1e57-4bfd-8bae-8af20dce0d3b","principalId":"e52b1619-d7ab-4f17-a1d1-be13afc9a95a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/trusted-services-mwh","name":"trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"5c56636f-4501-419b-b322-a614e0cfdb45","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolicyWithShimi","name":"firewallPolicyWithShimi","type":"Microsoft.Network/FirewallPolicies","etag":"1894d051-c6bb-4327-a1f4-b2cd37777ba6","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic1","name":"firewallPolic1","type":"Microsoft.Network/FirewallPolicies","etag":"2e067436-f49a-490b-b30f-e979e42df920","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic2","name":"firewallPolic2","type":"Microsoft.Network/FirewallPolicies","etag":"247ac188-d82d-42cc-b928-116a546f4d4b","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallP765olic2","name":"firewallP765olic2","type":"Microsoft.Network/FirewallPolicies","etag":"8e94ea0f-7dd0-4698-97d5-a8da350f928d","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/adi123","name":"adi123","type":"Microsoft.Network/FirewallPolicies","etag":"5cec1d46-e9b3-4f5c-b55d-5cad047a057e","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"democert","keyVaultSecretId":"https://fw-premium-psybnozbyy53c.vault.azure.net/secrets/democert/ddddbfe41cb545a1a4aef705b3c7a957"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/liz_portalTesting/providers/Microsoft.Network/azureFirewalls/lihamilt_premiumTesting_inheritance"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy"},"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01","name":"premium-insik-bugbash-01","type":"Microsoft.Network/FirewallPolicies","etag":"769ec627-fb34-48fb-8b17-a1ae566572da","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sujith-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DemoIdentity1":{"clientId":"7226a344-ae58-44cd-a8ab-28f09ddf2b92","principalId":"7ba56c8f-95ab-4472-83e1-a54f5fac574f"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Insik_TestRG/providers/Microsoft.Network/firewallPolicies/insikfirewallpolicy"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku","name":"lihamilt_testingSku","type":"Microsoft.Network/FirewallPolicies","etag":"5fd0fe10-2f67-4de3-8928-0911201d82b2","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultDnatRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/lihamilt_ruleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy","name":"lihamilt_premiumPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"2b1b699d-c566-4611-911b-e2d7c1f613b6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest10","keyVaultSecretId":"https://fw-premium-25huhucywxyzm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"0f4346a8-a9ce-44eb-ac17-df74a5f94016","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"02270c7f-874b-45d9-8a83-9555eeb3440a","principalId":"74304d77-0da4-41ba-a9f2-09d94379576b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest22","keyVaultSecretId":"https://fw-premium-rxkde7yvqiewa.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"69bf3f83-336e-4055-bdde-69ed787549d2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0ba591e0-0b50-496e-aa3e-c616c24998c0","principalId":"2aafea1f-585f-4094-b2c6-e9a3ae576be8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"7cd7f1ec-bd3d-4f63-a074-7d62837929fb","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e161bfaf-8162-4916-8734-003adedd7435","principalId":"2bb120d8-7c5e-448d-ad45-fcf33ce63082"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-23ixqaupttwxs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006","name":"test006","type":"Microsoft.Network/FirewallPolicies","etag":"4c49529e-35cd-4b93-82ad-40aa47d4fea2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Denis-perf-24/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b6743fce-8526-414a-8f2a-09c59e5a553f","principalId":"673c69ae-7885-466a-8642-575b3845df3a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-tomzrisybep6e.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["142.251.36.14"],"destinationPorts":["80","443"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"cba668a4-2adc-4eaf-a6e8-a33c6b07ff05","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e43eb4d4-9d1b-4e5d-9d3f-48847369c7aa","principalId":"46f95387-bebf-4253-be00-ef9c1eafb661"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-livoixkl5cxjo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy","name":"testPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"d55cd757-974b-4aa0-94ba-b11311276f99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"799fddf0-1b9c-4746-bb93-4ab9d3c7e2a2","principalId":"3c3526a9-2286-46ed-a455-a53ccf1aef43"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"9ba4469e-16fc-429e-8cf9-0583cc67457e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"b7afa0be-b64a-4957-b201-39172b47d5ce","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-atjt3tinrphvs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"a9483f84-e3a0-44db-8687-dc518963c42e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e5b1fe27-492b-47f9-9d1d-60710a468168","principalId":"03f348eb-e158-45d8-8bcb-a09e9c04c9a3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-zqf32efj7p626.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"168a3f27-6702-4b37-9aba-c540262314c1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"ea441d5d-4b3a-4f28-9e09-9ca7cc27130f","principalId":"33bec4c0-743c-4558-95c1-fad995a7b304"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-rm3vsljlr3a7s.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"7117e063-1517-4f75-8a89-61387520a8a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-rm3vsljlr3a7s":{"clientId":"475c0e65-b2d3-4c7f-8ea5-fb344644b1e4","principalId":"c88fa78a-2f25-45ad-b3da-f9ac870df7f5"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-f3skogsb3s4lo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"810f0bf8-f651-45ae-a2b1-a2d64730299a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3d3cb04b-fff8-43ba-902c-e6cc0ec180a4","principalId":"dc36afa4-dd47-4e47-83a7-7c92acbe2a38"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-iovui5jy3gmw6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"8033fff4-cad0-4214-8507-efc7a225bd59","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-iovui5jy3gmw6":{"clientId":"6264a47d-d07c-4251-a50e-b169cd0eab5c","principalId":"54cd7a80-51e0-444a-a16b-1f0d8a2bd8ef"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTestPurge","keyVaultSecretId":"https://fw-c-prgxurttmold6hva.vault.azure.net/secrets/cacertcprg"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250","name":"test250","type":"Microsoft.Network/FirewallPolicies","etag":"df2b593b-6ce4-42c5-a5ec-67ba5c70b681","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-purge-25/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3812e637-437c-43e1-b0ad-5492b5ea785e","principalId":"97197d35-9672-4bc7-97a2-38ffc12e0169"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7bqubu4527na2.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c9a20c7a-a1e7-4caa-a007-4ede7f904443","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"23aad456-9dd6-47c6-94f1-3c31b1a250f7","principalId":"db60e3cf-6d1d-49c8-b388-adcf4523fab8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c53a7d79-d314-4a17-b2ef-d7d56a91ae73","location":"westus2","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-ew572cqbwhcx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.Network/azureFirewalls/fw-perf"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf","name":"policy-perf","type":"Microsoft.Network/FirewallPolicies","etag":"e47b0c74-8558-4959-ac0f-d37889e54696","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-perf":{"clientId":"cbd06206-491f-41af-a616-be395fc17e1d","principalId":"a53e027e-2af9-44d0-9b09-7c477e63d77a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-b6lo3cxvj624c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-managed-id/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"61ea50c7-367d-401b-a3e8-989b96dae564","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-managed-id/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"650b503f-1ba4-466e-ac94-6b83e1d85f78","principalId":"57b4671f-4192-48e1-ba80-bc0ba49e3d68"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-z6eqstx6vkpx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.Network/firewallPolicies/test005","name":"test005","type":"Microsoft.Network/FirewallPolicies","etag":"4dd51730-bd3c-46bb-b4a0-c4f71f316553","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"58464149-c734-4217-8432-63452c47e546","principalId":"e2182021-db06-4363-9b47-d19c3dc05788"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-qpmchjx4isthm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-same-host-auth/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"0c868320-7aaa-4e68-b042-338276b8f7d5","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-same-host-auth/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"53d5e508-0cd1-4895-8b34-199249650458","principalId":"8a9c1071-c5dd-492c-9ea8-e6a7f186081a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-kb3gce25qnk5u.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-auth-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b7f59328-01d7-4e2f-82ff-cdfa5bace144","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-auth-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"1eaa595d-5fb0-4cca-a73d-5c127a7ec62c","principalId":"e2f995eb-9275-42a2-8add-1d32fcc32a61"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2000332","mode":"Off"},{"id":"2000015","mode":"Deny"},{"id":"2000345","mode":"Off"}],"bypassTrafficSettings":[]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/dikla_policy_parent","name":"dikla_policy_parent","type":"Microsoft.Network/FirewallPolicies","etag":"291e3d16-de25-4ca9-8a5c-fc9ccc4974d1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest","name":"policytest","type":"Microsoft.Network/FirewallPolicies","etag":"67b132ce-7051-49e9-be92-d8d6cadb7299","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702","name":"policytest_premium_68a702","type":"Microsoft.Network/FirewallPolicies","etag":"97732749-46d1-44ad-a042-1ba931300541","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a","name":"policytest_premium_ae848a","type":"Microsoft.Network/FirewallPolicies","etag":"727b775a-2e0a-4c43-9c10-b48d1bcc2f10","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8","name":"policytest_premium_20b5d8","type":"Microsoft.Network/FirewallPolicies","etag":"b322f9dc-b515-4252-9450-7817c3a02532","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4","name":"policytest_premium_1557a4","type":"Microsoft.Network/FirewallPolicies","etag":"1418ee00-3be1-475d-8c41-04e9c24ad174","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd","name":"policytest_premium_ac81fd","type":"Microsoft.Network/FirewallPolicies","etag":"e3080d70-a166-4916-82b4-2c355bac64db","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-kyvs233i2kwnu.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"3d0e2d94-9da6-445d-95a5-c00bb9adfdaf","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"64885563-2191-46dd-bdf5-30fc6b79ffac","principalId":"3d256820-e46a-4085-8970-b7f9bd01b740"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"76d2128b-7bc6-4957-b58a-ebe561bb0e75","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-n4xywerujpzhg.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8abda69-833e-4ffd-9689-e3adc3ff29ac","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"be131978-ae64-48c2-94bc-b0fab7a739b5","principalId":"3b64f1a9-e973-443a-85f5-b83d231ad82e"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/2"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/3"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/4"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/5"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/6"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/7"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/8"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/19"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/9"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/10"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/11"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/12"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/13"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/14"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/15"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/16"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/17"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/18"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/20"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/21"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/22"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/23"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/24"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/25"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/26"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/27"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/28"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/29"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/30"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/31"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/32"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/33"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/34"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/35"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/36"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/37"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/38"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/39"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice","name":"policy_slice","type":"Microsoft.Network/FirewallPolicies","etag":"b1b160ff-a4ee-4071-816c-a3010e73066b","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2004079","mode":"Deny"},{"id":"2000105","mode":"Deny"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/fw-policy","name":"fw-policy","type":"Microsoft.Network/FirewallPolicies","etag":"bb112786-65ea-4a7a-90a6-66239cfe25f3","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02","name":"testpolicy02","type":"Microsoft.Network/FirewallPolicies","etag":"f58fdfdc-e4e4-44cb-957d-59804c0f2b99","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03/ruleCollectionGroups/RulesCollectionGrouppp_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03","name":"testpolicy03","type":"Microsoft.Network/FirewallPolicies","etag":"4efc21d5-ac6c-4766-9ad3-e46d369bc577","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04","name":"testpolicy04","type":"Microsoft.Network/FirewallPolicies","etag":"6e1a1283-d95b-48d9-9eb5-0cb1c087f817","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child","name":"lihamilt_SQL_Redirect_Child","type":"Microsoft.Network/FirewallPolicies","etag":"1c929848-8b17-42f5-b1d1-d03265702474","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child"}],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent","name":"lihamilt_SQL_Redirect_Parent","type":"Microsoft.Network/FirewallPolicies","etag":"7adabeb6-f743-467e-80a6-68711ab9b9f1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-vpmlpyfh5dbbk.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"042ffa98-2438-4366-97cf-237144f8f4d1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"25ec5f9a-c8c4-447e-bad1-2545bd9c5b5f","principalId":"fcd6a28c-bae5-49d2-9187-14ef0571cf46"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/ProductRuleCollectionGroupDevStorage"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"369701ce-84eb-421a-812a-65357f1b3fd0","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fb54ef5f-b646-48f1-9420-331525ab1264","principalId":"109ae32a-3842-479a-81f3-5b96425d852b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"cert","keyVaultSecretId":"https://bewaters-features-mwh.vault.azure.net/secrets/cert/a9e77ff7af1e451fae03fed9fc6abb4e"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/bewaters-trusted-services-mwh","name":"bewaters-trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"8dc0daa0-8568-4602-85a6-337730b34fcd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-ma/providers/Microsoft.ManagedIdentity/userAssignedIdentities/bewaters-byok-success-ma":{"clientId":"3a73f346-1e57-4bfd-8bae-8af20dce0d3b","principalId":"e52b1619-d7ab-4f17-a1d1-be13afc9a95a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/trusted-services-mwh","name":"trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"5c56636f-4501-419b-b322-a614e0cfdb45","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolicyWithShimi","name":"firewallPolicyWithShimi","type":"Microsoft.Network/FirewallPolicies","etag":"1894d051-c6bb-4327-a1f4-b2cd37777ba6","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic1","name":"firewallPolic1","type":"Microsoft.Network/FirewallPolicies","etag":"2e067436-f49a-490b-b30f-e979e42df920","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallPolic2","name":"firewallPolic2","type":"Microsoft.Network/FirewallPolicies","etag":"247ac188-d82d-42cc-b928-116a546f4d4b","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/firewallP765olic2","name":"firewallP765olic2","type":"Microsoft.Network/FirewallPolicies","etag":"8e94ea0f-7dd0-4698-97d5-a8da350f928d","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adig-test/providers/Microsoft.Network/firewallPolicies/adi123","name":"adi123","type":"Microsoft.Network/FirewallPolicies","etag":"5cec1d46-e9b3-4f5c-b55d-5cad047a057e","location":"westus","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"democert","keyVaultSecretId":"https://fw-premium-psybnozbyy53c.vault.azure.net/secrets/democert/ddddbfe41cb545a1a4aef705b3c7a957"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/liz_portalTesting/providers/Microsoft.Network/azureFirewalls/lihamilt_premiumTesting_inheritance"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy"},"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01","name":"premium-insik-bugbash-01","type":"Microsoft.Network/FirewallPolicies","etag":"769ec627-fb34-48fb-8b17-a1ae566572da","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sujith-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DemoIdentity1":{"clientId":"7226a344-ae58-44cd-a8ab-28f09ddf2b92","principalId":"7ba56c8f-95ab-4472-83e1-a54f5fac574f"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Insik_TestRG/providers/Microsoft.Network/firewallPolicies/insikfirewallpolicy"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_testingSku","name":"lihamilt_testingSku","type":"Microsoft.Network/FirewallPolicies","etag":"5fd0fe10-2f67-4de3-8928-0911201d82b2","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/premium-insik-bugbash-01"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/DefaultDnatRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy/ruleCollectionGroups/lihamilt_ruleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_BugBash4Premium/providers/Microsoft.Network/firewallPolicies/lihamilt_premiumPolicy","name":"lihamilt_premiumPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"2b1b699d-c566-4611-911b-e2d7c1f613b6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest10","keyVaultSecretId":"https://fw-premium-25huhucywxyzm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert1337/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"0f4346a8-a9ce-44eb-ac17-df74a5f94016","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert1337/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"02270c7f-874b-45d9-8a83-9555eeb3440a","principalId":"74304d77-0da4-41ba-a9f2-09d94379576b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest22","keyVaultSecretId":"https://fw-premium-rxkde7yvqiewa.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-cbn-cert50/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"69bf3f83-336e-4055-bdde-69ed787549d2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-cbn-cert50/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0ba591e0-0b50-496e-aa3e-c616c24998c0","principalId":"2aafea1f-585f-4094-b2c6-e9a3ae576be8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"7cd7f1ec-bd3d-4f63-a074-7d62837929fb","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Yasmin-fw-premiun-rg2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e161bfaf-8162-4916-8734-003adedd7435","principalId":"2bb120d8-7c5e-448d-ad45-fcf33ce63082"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-23ixqaupttwxs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Denis-perf-24/providers/Microsoft.Network/firewallPolicies/test006","name":"test006","type":"Microsoft.Network/FirewallPolicies","etag":"4c49529e-35cd-4b93-82ad-40aa47d4fea2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Denis-perf-24/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b6743fce-8526-414a-8f2a-09c59e5a553f","principalId":"673c69ae-7885-466a-8642-575b3845df3a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-tomzrisybep6e.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["142.251.36.14"],"destinationPorts":["80","443"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"cba668a4-2adc-4eaf-a6e8-a33c6b07ff05","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e43eb4d4-9d1b-4e5d-9d3f-48847369c7aa","principalId":"46f95387-bebf-4253-be00-ef9c1eafb661"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-livoixkl5cxjo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.Network/firewallPolicies/testPolicy","name":"testPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"d55cd757-974b-4aa0-94ba-b11311276f99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/manuelberger-eastus2euap-slice-test-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"799fddf0-1b9c-4746-bb93-4ab9d3c7e2a2","principalId":"3c3526a9-2286-46ed-a455-a53ccf1aef43"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/test010","name":"test010","type":"Microsoft.Network/FirewallPolicies","etag":"9ba4469e-16fc-429e-8cf9-0583cc67457e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-xybgfzp4hvuas.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"b7afa0be-b64a-4957-b201-39172b47d5ce","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"b561b149-5b71-45a7-b967-fc65fa6e8a2a","principalId":"9dee91d8-3e3b-4789-8a22-cab9ae5ffd14"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-atjt3tinrphvs.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"a9483f84-e3a0-44db-8687-dc518963c42e","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_centraluseuap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"e5b1fe27-492b-47f9-9d1d-60710a468168","principalId":"03f348eb-e158-45d8-8bcb-a09e9c04c9a3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-zqf32efj7p626.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"168a3f27-6702-4b37-9aba-c540262314c1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_s2s_eastus2euap_rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"ea441d5d-4b3a-4f28-9e09-9ca7cc27130f","principalId":"33bec4c0-743c-4558-95c1-fad995a7b304"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-rm3vsljlr3a7s.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cbn-july-0/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"7117e063-1517-4f75-8a89-61387520a8a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cbn-july-0/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-rm3vsljlr3a7s":{"clientId":"475c0e65-b2d3-4c7f-8ea5-fb344644b1e4","principalId":"c88fa78a-2f25-45ad-b3da-f9ac870df7f5"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-f3skogsb3s4lo.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-idps-cve/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"810f0bf8-f651-45ae-a2b1-a2d64730299a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-idps-cve/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3d3cb04b-fff8-43ba-902c-e6cc0ec180a4","principalId":"dc36afa4-dd47-4e47-83a7-7c92acbe2a38"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-iovui5jy3gmw6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sgersner-slice-cdm-000/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"8033fff4-cad0-4214-8507-efc7a225bd59","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sgersner-slice-cdm-000/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-premium-iovui5jy3gmw6":{"clientId":"6264a47d-d07c-4251-a50e-b169cd0eab5c","principalId":"54cd7a80-51e0-444a-a16b-1f0d8a2bd8ef"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTestPurge","keyVaultSecretId":"https://fw-c-prgxurttmold6hva.vault.azure.net/secrets/cacertcprg"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2800985","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-purge-25/providers/Microsoft.Network/firewallPolicies/test250","name":"test250","type":"Microsoft.Network/FirewallPolicies","etag":"df2b593b-6ce4-42c5-a5ec-67ba5c70b681","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-purge-25/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"3812e637-437c-43e1-b0ad-5492b5ea785e","principalId":"97197d35-9672-4bc7-97a2-38ffc12e0169"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7bqubu4527na2.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dmanesku_premium_2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c9a20c7a-a1e7-4caa-a007-4ede7f904443","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dmanesku_premium_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"23aad456-9dd6-47c6-94f1-3c31b1a250f7","principalId":"db60e3cf-6d1d-49c8-b388-adcf4523fab8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_test_rg4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"c53a7d79-d314-4a17-b2ef-d7d56a91ae73","location":"westus2","tags":{"key1":"value1"}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-ew572cqbwhcx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.Network/azureFirewalls/fw-perf"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-perf-35/providers/Microsoft.Network/firewallPolicies/policy-perf","name":"policy-perf","type":"Microsoft.Network/FirewallPolicies","etag":"e47b0c74-8558-4959-ac0f-d37889e54696","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-perf-35/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-perf":{"clientId":"cbd06206-491f-41af-a616-be395fc17e1d","principalId":"a53e027e-2af9-44d0-9b09-7c477e63d77a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-b6lo3cxvj624c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-managed-id/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"61ea50c7-367d-401b-a3e8-989b96dae564","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-managed-id/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"650b503f-1ba4-466e-ac94-6b83e1d85f78","principalId":"57b4671f-4192-48e1-ba80-bc0ba49e3d68"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-z6eqstx6vkpx4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.Network/firewallPolicies/test005","name":"test005","type":"Microsoft.Network/FirewallPolicies","etag":"4dd51730-bd3c-46bb-b4a0-c4f71f316553","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-first-party/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"58464149-c734-4217-8432-63452c47e546","principalId":"e2182021-db06-4363-9b47-d19c3dc05788"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-qpmchjx4isthm.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-same-host-auth/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"0c868320-7aaa-4e68-b042-338276b8f7d5","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-same-host-auth/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"53d5e508-0cd1-4895-8b34-199249650458","principalId":"8a9c1071-c5dd-492c-9ea8-e6a7f186081a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-kb3gce25qnk5u.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Deny"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/aarbiv-test-auth-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b7f59328-01d7-4e2f-82ff-cdfa5bace144","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aarbiv-test-auth-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"1eaa595d-5fb0-4cca-a73d-5c127a7ec62c","principalId":"e2f995eb-9275-42a2-8add-1d32fcc32a61"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2000332","mode":"Off"},{"id":"2000015","mode":"Deny"},{"id":"2000345","mode":"Off"}],"bypassTrafficSettings":[]}},"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/dikla_policy_parent","name":"dikla_policy_parent","type":"Microsoft.Network/FirewallPolicies","etag":"291e3d16-de25-4ca9-8a5c-fc9ccc4974d1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest","name":"policytest","type":"Microsoft.Network/FirewallPolicies","etag":"67b132ce-7051-49e9-be92-d8d6cadb7299","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_68a702","name":"policytest_premium_68a702","type":"Microsoft.Network/FirewallPolicies","etag":"97732749-46d1-44ad-a042-1ba931300541","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ae848a","name":"policytest_premium_ae848a","type":"Microsoft.Network/FirewallPolicies","etag":"727b775a-2e0a-4c43-9c10-b48d1bcc2f10","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_20b5d8","name":"policytest_premium_20b5d8","type":"Microsoft.Network/FirewallPolicies","etag":"b322f9dc-b515-4252-9450-7817c3a02532","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_1557a4","name":"policytest_premium_1557a4","type":"Microsoft.Network/FirewallPolicies","etag":"1418ee00-3be1-475d-8c41-04e9c24ad174","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg101"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg102"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg103"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg104"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg105"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg106"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg107"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg108"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg109"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg110"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg111"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg112"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg113"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg114"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg115"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg116"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg117"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg118"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg119"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg120"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg121"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg122"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg124"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg125"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg126"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg127"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg128"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg129"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg130"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg131"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg132"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg133"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg134"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg135"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg137"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg138"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg139"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg140"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg141"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg142"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg143"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg144"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg145"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg146"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg147"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg148"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg149"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd/ruleCollectionGroups/rcg150"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-76/providers/Microsoft.Network/firewallPolicies/policytest_premium_ac81fd","name":"policytest_premium_ac81fd","type":"Microsoft.Network/FirewallPolicies","etag":"e3080d70-a166-4916-82b4-2c355bac64db","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-kyvs233i2kwnu.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_no_AZ_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"3d0e2d94-9da6-445d-95a5-c00bb9adfdaf","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_no_AZ_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"64885563-2191-46dd-bdf5-30fc6b79ffac","principalId":"3d256820-e46a-4085-8970-b7f9bd01b740"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/azureFirewalls/fw_premium_with_1"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_true_standard_no_az/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"76d2128b-7bc6-4957-b58a-ebe561bb0e75","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-n4xywerujpzhg.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_ff_false_2/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8abda69-833e-4ffd-9689-e3adc3ff29ac","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_ff_false_2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"be131978-ae64-48c2-94bc-b0fab7a739b5","principalId":"3b64f1a9-e973-443a-85f5-b83d231ad82e"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","snat":{"privateRanges":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/2"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/3"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/4"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/5"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/6"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/7"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/8"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/19"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/9"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/10"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/11"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/12"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/13"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/14"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/15"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/16"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/17"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/18"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/20"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/21"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/22"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/23"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/24"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/25"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/26"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/27"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/28"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/29"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/30"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/31"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/32"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/33"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/34"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/35"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/36"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/37"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/38"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice/ruleCollectionGroups/39"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_RCG_slice_5/providers/Microsoft.Network/firewallPolicies/policy_slice","name":"policy_slice","type":"Microsoft.Network/FirewallPolicies","etag":"b1b160ff-a4ee-4071-816c-a3010e73066b","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2004079","mode":"Deny"},{"id":"2000105","mode":"Deny"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Yasmin-fw-premiun-rg2/providers/Microsoft.Network/firewallPolicies/fw-policy","name":"fw-policy","type":"Microsoft.Network/FirewallPolicies","etag":"bb112786-65ea-4a7a-90a6-66239cfe25f3","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy02","name":"testpolicy02","type":"Microsoft.Network/FirewallPolicies","etag":"f58fdfdc-e4e4-44cb-957d-59804c0f2b99","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03/ruleCollectionGroups/RulesCollectionGrouppp_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy03","name":"testpolicy03","type":"Microsoft.Network/FirewallPolicies","etag":"4efc21d5-ac6c-4766-9ad3-e46d369bc577","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04/ruleCollectionGroups/RulesCollectionGroup_0"}],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/fw_deployment_slice_03-16-2022_13-25/providers/Microsoft.Network/firewallPolicies/testpolicy04","name":"testpolicy04","type":"Microsoft.Network/FirewallPolicies","etag":"6e1a1283-d95b-48d9-9eb5-0cb1c087f817","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child","name":"lihamilt_SQL_Redirect_Child","type":"Microsoft.Network/FirewallPolicies","etag":"1c929848-8b17-42f5-b1d1-d03265702474","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Child"}],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Redirect_Parent","name":"lihamilt_SQL_Redirect_Parent","type":"Microsoft.Network/FirewallPolicies","etag":"7adabeb6-f743-467e-80a6-68711ab9b9f1","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-vpmlpyfh5dbbk.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/logging-poc/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"042ffa98-2438-4366-97cf-237144f8f4d1","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/logging-poc/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"25ec5f9a-c8c4-447e-bad1-2545bd9c5b5f","principalId":"fcd6a28c-bae5-49d2-9187-14ef0571cf46"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/ProductRuleCollectionGroupDevStorage"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"369701ce-84eb-421a-812a-65357f1b3fd0","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_04-27-2022_16-30_idps_alert_debug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fb54ef5f-b646-48f1-9420-331525ab1264","principalId":"109ae32a-3842-479a-81f3-5b96425d852b"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"cert","keyVaultSecretId":"https://bewaters-features-mwh.vault.azure.net/secrets/cert/a9e77ff7af1e451fae03fed9fc6abb4e"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/bewaters-trusted-services-mwh","name":"bewaters-trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"8dc0daa0-8568-4602-85a6-337730b34fcd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-ma/providers/Microsoft.ManagedIdentity/userAssignedIdentities/bewaters-byok-success-ma":{"clientId":"3a73f346-1e57-4bfd-8bae-8af20dce0d3b","principalId":"e52b1619-d7ab-4f17-a1d1-be13afc9a95a"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/trusted-services-mwh","name":"trusted-services-mwh","type":"Microsoft.Network/FirewallPolicies","etag":"5c56636f-4501-419b-b322-a614e0cfdb45","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/adi-pp-renaming/providers/Microsoft.Network/firewallPolicies/test-service-tags/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adi-pp-renaming/providers/Microsoft.Network/azureFirewalls/fw-test-service-tags"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adi-pp-renaming/providers/Microsoft.Network/azureFirewalls/fw-test-service-tags2"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/adi-pp-renaming/providers/Microsoft.Network/firewallPolicies/test-service-tags","name":"test-service-tags","type":"Microsoft.Network/FirewallPolicies","etag":"e10c1637-c7ad-4320-8465-2e0f813e1663","location":"japaneast","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Deny","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":["8.8.8.8"]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/isguBB01/providers/Microsoft.Network/firewallPolicies/testFPPolicy1/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/isguBB01/providers/Microsoft.Network/firewallPolicies/testFPPolicy1","name":"testFPPolicy1","type":"Microsoft.Network/FirewallPolicies","etag":"1833e79d-c73f-4174-9f01-1bcb17009586","location":"eastus2euap","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ken-test-nfvrp/providers/Microsoft.Network/firewallPolicies/fwp1/ruleCollectionGroups/DefaultDnatRuleCollectionGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/ken-test-nfvrp/providers/Microsoft.Network/firewallPolicies/fwp1","name":"fwp1","type":"Microsoft.Network/FirewallPolicies","etag":"6f3d073f-d157-4730-9faa-a8e8e246ebae","location":"eastus2euap","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adgrieve-prodtest/providers/Microsoft.Network/firewallPolicies/testing123","name":"testing123","type":"Microsoft.Network/FirewallPolicies","etag":"e5efbdcd-5014-4466-b48f-0a90ae27e161","location":"centraluseuap"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adgrieve-prodtest/providers/Microsoft.Network/firewallPolicies/test123","name":"test123","type":"Microsoft.Network/FirewallPolicies","etag":"c2dd06bd-9990-4d22-9c2d-744bfaa6137a","location":"centraluseuap"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Deny"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/adgrieve-prodtest/providers/Microsoft.Network/firewallPolicies/bugbash-test1","name":"bugbash-test1","type":"Microsoft.Network/FirewallPolicies","etag":"17e1eb58-2306-48d1-9b6f-d45a6f8ab7b1","location":"eastus2euap","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"ipAddresses":[]},"dnsSettings":{"servers":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Updating"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/isguBB01/providers/Microsoft.Network/firewallPolicies/testPolic01","name":"testPolic01","type":"Microsoft.Network/FirewallPolicies","etag":"02e8e2ce-ef2b-4f11-b00d-8da9a817efd2","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-jf5w7c2nwllnm.vault.azure.net/secrets/cacert/cc00bcccaf604a0eacc6171754874a42"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/insik-rg/providers/Microsoft.Network/firewallPolicies/insik-premium-policy-base/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/insik-rg/providers/Microsoft.Network/firewallPolicies/insik-premium-policy-base","name":"insik-premium-policy-base","type":"Microsoft.Network/FirewallPolicies","etag":"ca9e976a-950e-4d23-9235-b47d0d946744","location":"centralus","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/EliranP-RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DemoIdentity":{"clientId":"a8f2cc63-38f7-4b1e-8a0e-ba382649e674","principalId":"3b9da44f-86fc-42de-9987-a09bcc09148e"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Deny","dnsSettings":{"servers":["8.8.18.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"insights":{"isEnabled":true,"retentionDays":30,"logAnalyticsResources":{"workspaces":[{"region":"eastus","workspaceId":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-cf6dd6b5-8d66-42fd-85a9-108021552699-eus"}}],"defaultWorkspaceId":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/defaultresourcegroup-suk/providers/microsoft.operationalinsights/workspaces/defaultworkspace-7a06e974-7329-4485-87e7-3211b06c15aa-suk"}}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/isguTestRuleAnalytics/providers/Microsoft.Network/firewallPolicies/develop2Policycentralus","name":"develop2Policycentralus","type":"Microsoft.Network/FirewallPolicies","etag":"9b550621-31bc-4193-97da-63eb3df806dc","location":"centralus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":false},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_child"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_parent/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_parent/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_parent","name":"lihamilt_bugBash_parent","type":"Microsoft.Network/FirewallPolicies","etag":"377ee29f-06b8-4bc1-8b79-9cbb7348f4b7","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"snat":{"privateRanges":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_child/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_parent"},"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_bugBash_child","name":"lihamilt_bugBash_child","type":"Microsoft.Network/FirewallPolicies","etag":"2204e58a-826c-4241-81c8-12e9fb225599","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_child_SQL_1/ruleCollectionGroups/DefaultNetworkRuleCollectionGroup"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_child_SQL_1/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_parent_SQL_1"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_child_SQL_1","name":"lihamilt_child_SQL_1","type":"Microsoft.Network/FirewallPolicies","etag":"0eac0cfb-2ecb-40e4-9689-dd3bd4b4d0ff","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_child_SQL_1"}],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_parent_SQL_1","name":"lihamilt_parent_SQL_1","type":"Microsoft.Network/FirewallPolicies","etag":"7fd65fee-fbcb-4055-a5b6-c8f0b4773c29","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Testing_Parent"},"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Testing","name":"lihamilt_SQL_Testing","type":"Microsoft.Network/FirewallPolicies","etag":"fb1c102d-2bbf-4abe-ab5a-37f0ccea2632","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"sql":{"allowSqlRedirect":true},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Testing"}],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/lihamilt_sql_testing/providers/Microsoft.Network/firewallPolicies/lihamilt_SQL_Testing_Parent","name":"lihamilt_SQL_Testing_Parent","type":"Microsoft.Network/FirewallPolicies","etag":"0e5a83a3-1c2b-4b8d-a774-ee855872d21e","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest4/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest4/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest4/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"76fcc88c-5d4f-4f6e-a16c-422801de0a58","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub7/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub7/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateFirewallPolicyOnAzFwInHub7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"11e2eac3-f2a2-4a94-83aa-aca93e01761d","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHub1/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"ce79183a-6e37-43af-8848-c661d92fac91","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest4/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest4/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"4ab2a57d-0e2f-465e-94ee-0018a474cfdf","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest3/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest3/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest3/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"19767bad-24b5-427c-8933-50ade9d7f84d","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["8.8.8.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"4d42f268-7b65-4493-a376-93704f0bec4c","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest3/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest3/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"b0e32bf8-20fb-4c73-be92-59c2877e0221","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/RemoveFirewallPolicyOnAzFwInHub2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"7d127c57-3920-4e6b-8ab4-136898634b1c","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub7/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub7/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateAzFwInHub7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"34bdfd07-8421-4007-86d1-3f03dd7d6740","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateAzFwInHub8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"b0bdee47-4d0a-48e9-b9c7-c5093cab1c5c","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest0/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest0/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest0/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest0/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"7e58e1c4-a18d-47d0-9bc1-e97b6a320b26","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest0/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest0/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest0/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"5b784f95-f3cb-441d-b4ff-146c41311813","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["19.1.2.5","52.2.0.0/16","30.32.73.91"]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"6e9e2095-3b4b-48bd-90be-63b7956d6134","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest2/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest2/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest2/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"03d06f61-f2ea-421d-a953-ece8ef2ab549","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["8.8.8.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"117f7bd5-016a-456a-88a3-ef15d6593691","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest2/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"f1136560-75a6-48f5-8a90-63addd9c1279","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateFirewallPolicyOnAzFwInHub8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"fedecbfc-5399-4e35-8dae-4f38e6a92d22","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub4/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub4/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateAzFwInHub4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"b91fc40b-bc94-4c6d-b945-fe499baee93e","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub4/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub4/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHub4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"82897be9-e6f6-43ba-8373-bafc19f68f0f","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest7/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest7/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest7/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"0afe7755-6377-4b40-b60e-04e07a3ffce0","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest7/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest7/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"23c1f78b-72cc-4872-982f-971036b41672","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["19.1.2.5","52.2.0.0/16","30.32.73.91"]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"caee3ecc-1eb0-4e19-8b4f-03dfac0468aa","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzFwManagerFTPTest6/providers/Microsoft.Network/azureFirewalls/AzureFirewall"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/AzFwManagerFTPTest6/providers/Microsoft.Network/firewallPolicies/fwmanagerTestPolicy","name":"fwmanagerTestPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"ca2f17ca-2b32-405e-90b7-bd40b235d6ae","location":"centralus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateAzFwInHub1/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"96edaeba-bea8-4f00-8806-371490374220","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest6/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest6/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest6/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest6/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"de69fd2d-1643-47a1-a3f6-f465551dec9d","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest6/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest6/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest6/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"472b6d1a-1b3d-428f-bc90-edf7de2a3851","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzFwManagerFTPTest4/providers/Microsoft.Network/azureFirewalls/AzureFirewall"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/AzFwManagerFTPTest4/providers/Microsoft.Network/firewallPolicies/fwmanagerTestPolicy","name":"fwmanagerTestPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"0650058e-32da-4caf-bdb8-2539be06e4de","location":"centralus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub7/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub7/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/RemoveFirewallPolicyOnAzFwInHub7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"0e54a2e7-a2cb-4363-920c-91c8edd6dbcb","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub6/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub6/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHub6/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"286a379e-4887-4c54-89d6-ae7f2510cff4","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest8/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest8/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest8/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"9da2714d-bd09-408b-9ec5-39cf3efaafa6","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHub5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"b7291e4e-5b0f-40c2-9f17-f9e87ebbecd6","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest8/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"415769fa-56f3-486b-b477-220d0728a39e","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateFirewallPolicyOnAzFwInHub2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"10913629-9a99-4a11-95e3-173690ed167c","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub6/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub6/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/RemoveFirewallPolicyOnAzFwInHub6/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"59c27d15-14da-4007-988b-d9950143ffdd","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub3/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub3/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateAzFwInHub3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"48072fbc-815a-4e14-b815-2d37c21fa3e4","location":"centralus","tags":{}}],"nextLink":"https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/firewallPolicies?api-version=2021-08-01&%24skiptoken=7Zddj6JIFIb%2fi5nZq7WtQnGwk8kGkHJgFK2CAuWOAtTiO4Da9mT%2b%2b5ba3bvZ3d6LvdqkvSCpnK86nOIN9fzolclTN%2bdl1vYef%2fQM1XGpIxlUXfUee%2fuuq9vHwaAIy3CXFEnZPYTPhyZ5iKpi0B5YGzW87nhVtoMwYTIDUtgHW6j0R3I46ivjeNxXoAIUCOUojLaDuqmOPE6adrDgUVO11bZ7sJPuVDXZYMub5BTm%2barKecST9rew5v2jiBXlv0pAgn2g9AH85VOb8dqtsqT8uppORsw%2f7eLCO0dSfmQp4AtndDK5lrPCPgaz%2fBA8Ax6vSTF3DclMlc%2bSNsWVgqXJIRbe2Ecg9CcHbzZpAn908%2b7M6dOUSbLwyHCzJrVYUyZ1OUtHts7Vnamrive25%2bg8T1VlDoM8Km0R%2b1ZFV3crRORoRkVdb4Y4m1ER92oRfVwq7VaGnCffCN6sLRDedpsH60zkJGcLXPfl5tjkneNQPN5m5OhnteZQy%2fJpxzGNNUzRy2NMVo7teNPqyYTEwc8VXOi2ReFmvOC2RagytlMKbddISa5NlxkqyS3XxRSmvqPApeE1iYcaJ6OAUUSwH8s0Q34ALrXN1iytPSvi3EzrL2YBa3btTdgLuE900WcWzMwSTlb6ZBms94DO0FlM%2bjplR%2fLk1Q58v7y1mPHNX0yGV3sma285r7Y%2fYqmYThmsyYJJ9l7UE2ct46jIO2GXRd4%2f%2bG9nJXzvn2V6Or7%2fJfR%2bfVXDXQl3JXxwJfjG9b9wV8JdCR9cCbpqq1NVN2yXqPO7Hu56%2bOh6uCmBOnct%2fC%2b1kFoG9m3NHcYj5uIhLZD2cucXzPBfeCHQqec9YypbTIprvN5rhHcazqBGgOAQDxluhjQnk3NMMcCUDB2KkOAILUH20gFIdym5xGmhYel4LfrJYs3kJx4V6BBIlC%2fLljM%2fP5hpxS925qPRZU2yDd%2bugTIH7xHTX5jKYcP4haXczHjN%2b5P1LR6RfSSoJjaejhvpxoSrXDuHPtxHZXahtr%2f7b3QiqtpHVgpKLL0bmeTkGEre4UI6%2f0Ifn4fT3s%2bfvwM%3d"}' + string: '{"value":[{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy01/providers/Microsoft.Network/azureFirewalls/myfw"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy01/providers/Microsoft.Network/firewallPolicies/mypolicy","name":"mypolicy","type":"Microsoft.Network/FirewallPolicies","etag":"806a140e-e284-45a4-ad1b-48c86e38e5f9","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy01/ruleCollectionGroups/myrcg"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy01","name":"mypolicy01","type":"Microsoft.Network/FirewallPolicies","etag":"aa9ce206-d952-4e2a-b25e-3cd805a5e941","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy02/ruleCollectionGroups/myrcg02"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy02","name":"mypolicy02","type":"Microsoft.Network/FirewallPolicies","etag":"0485ab73-4dc8-42d6-aefd-92b94c56f6c8","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy03/ruleCollectionGroups/myrcg03"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy03","name":"mypolicy03","type":"Microsoft.Network/FirewallPolicies","etag":"90ba668c-059e-4d39-ab6d-da6a6217aa81","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy04/ruleCollectionGroups/myrcg04"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nyy02/providers/Microsoft.Network/firewallPolicies/mypolicy04","name":"mypolicy04","type":"Microsoft.Network/FirewallPolicies","etag":"f0bbb534-1cd0-45f7-9e15-797d69dae3fb","location":"westus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","sql":{"allowSqlRedirect":false},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/firewallPolicies/testpolicy","name":"testpolicy","type":"Microsoft.Network/FirewallPolicies","etag":"c2084bb7-e20a-48a4-a40f-ab2d11fe24b8","location":"eastus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["101.0.0.0","101.0.0.1"]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy","name":"myclipolicy","type":"Microsoft.Network/FirewallPolicies","etag":"7f4fa635-68fe-4247-a86f-c401bb32c056","location":"centralus"}]}' headers: cache-control: - no-cache content-length: - - '552131' + - '4053' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:02 GMT + - Wed, 22 Jun 2022 11:32:59 GMT expires: - '-1' pragma: @@ -323,59 +323,6 @@ interactions: - '' - '' - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network firewall policy list - Connection: - - keep-alive - User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/firewallPolicies?api-version=2021-08-01&%24skiptoken=7Zddj6JIFIb%2Fi5nZq7WtQnGwk8kGkHJgFK2CAuWOAtTiO4Da9mT%2B%2B5ba3bvZ3d6LvdqkvSCpnK86nOIN9fzolclTN%2Bdl1vYef%2FQM1XGpIxlUXfUee%2Fuuq9vHwaAIy3CXFEnZPYTPhyZ5iKpi0B5YGzW87nhVtoMwYTIDUtgHW6j0R3I46ivjeNxXoAIUCOUojLaDuqmOPE6adrDgUVO11bZ7sJPuVDXZYMub5BTm%2BarKecST9rew5v2jiBXlv0pAgn2g9AH85VOb8dqtsqT8uppORsw%2F7eLCO0dSfmQp4AtndDK5lrPCPgaz%2FBA8Ax6vSTF3DclMlc%2BSNsWVgqXJIRbe2Ecg9CcHbzZpAn908%2B7M6dOUSbLwyHCzJrVYUyZ1OUtHts7Vnamrive25%2Bg8T1VlDoM8Km0R%2B1ZFV3crRORoRkVdb4Y4m1ER92oRfVwq7VaGnCffCN6sLRDedpsH60zkJGcLXPfl5tjkneNQPN5m5OhnteZQy%2FJpxzGNNUzRy2NMVo7teNPqyYTEwc8VXOi2ReFmvOC2RagytlMKbddISa5NlxkqyS3XxRSmvqPApeE1iYcaJ6OAUUSwH8s0Q34ALrXN1iytPSvi3EzrL2YBa3btTdgLuE900WcWzMwSTlb6ZBms94DO0FlM%2BjplR%2FLk1Q58v7y1mPHNX0yGV3sma285r7Y%2FYqmYThmsyYJJ9l7UE2ct46jIO2GXRd4%2F%2BG9nJXzvn2V6Or7%2FJfR%2BfVXDXQl3JXxwJfjG9b9wV8JdCR9cCbpqq1NVN2yXqPO7Hu56%2BOh6uCmBOnct%2FC%2B1kFoG9m3NHcYj5uIhLZD2cucXzPBfeCHQqec9YypbTIprvN5rhHcazqBGgOAQDxluhjQnk3NMMcCUDB2KkOAILUH20gFIdym5xGmhYel4LfrJYs3kJx4V6BBIlC%2FLljM%2FP5hpxS925qPRZU2yDd%2BugTIH7xHTX5jKYcP4haXczHjN%2B5P1LR6RfSSoJjaejhvpxoSrXDuHPtxHZXahtr%2F7b3QiqtpHVgpKLL0bmeTkGEre4UI6%2F0Ifn4fT3s%2BfvwM%3D - response: - body: - string: '{"value":[{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy","name":"policy","type":"Microsoft.Network/FirewallPolicies","etag":"5545800c-a3f5-4f78-8aac-f03a55d9e073","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy2","name":"policy2","type":"Microsoft.Network/FirewallPolicies","etag":"f2df616c-f7a5-482c-bbe1-68c610a31129","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy3","name":"policy3","type":"Microsoft.Network/FirewallPolicies","etag":"252d5905-fa65-4e23-9836-44caecaaaf6d","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy4","name":"policy4","type":"Microsoft.Network/FirewallPolicies","etag":"b59db942-7fa3-4119-ae44-2c346f115a3c","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy5","name":"policy5","type":"Microsoft.Network/FirewallPolicies","etag":"899a54f8-7eaf-4d13-99ff-ec7220de3ab0","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy6","name":"policy6","type":"Microsoft.Network/FirewallPolicies","etag":"f9ae2b63-a1f3-4ced-90da-5537b20f95cd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy7","name":"policy7","type":"Microsoft.Network/FirewallPolicies","etag":"b05c8037-0ca1-4fa5-bc7f-feda76df6c5f","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy8","name":"policy8","type":"Microsoft.Network/FirewallPolicies","etag":"1bb1c8da-8dc4-4fa2-8459-68c922753bb5","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_1","name":"policy_1","type":"Microsoft.Network/FirewallPolicies","etag":"fb8841f4-ac7e-486e-986d-d4e75a93fb31","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_2","name":"policy_2","type":"Microsoft.Network/FirewallPolicies","etag":"e3291f6b-7762-4d2a-8eae-ce8650a8e0a6","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy/ruleCollectionGroups/collection"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[],"privateRanges":["10.0.0.0/8","192.168.0.0/16","100.64.0.0/10"]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy","name":"Dikla_policy","type":"Microsoft.Network/FirewallPolicies","etag":"a368adca-760d-48cd-ae64-5fea578958d6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-fligkbpgtyl2i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"7d9c3060-9be2-4012-9bd5-b7954b412a99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"9b50a9d4-3158-4eaa-8917-0aa60cd6287d","principalId":"a318e460-75c9-494b-887c-c5e7b83cef4c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","dnsSettings":{"servers":[],"enableProxy":true},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-p4scs64nhuj6y.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f93ed87f-a687-4036-a6c7-de510f1829a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"4af28c35-c667-4b9f-81fd-e01ff0efc798","principalId":"56616fd7-40f3-45e0-be0d-28659fa5206c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2bn7jnzatv7n6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b95c24ce-eb62-4c91-8f9f-f62c67517163","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fc5e6872-908d-46d4-9445-2ff81225cac9","principalId":"f20257bb-3269-4a97-93de-b5a7320c718c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"fw-cert-ysON8txuiUceV","keyVaultSecretId":"https://fw-cert-kv-yson8txuiucev.vault.azure.net/secrets/fw-cert-ysON8txuiUceV/3a8287fe2693442ab8c60503f2351b59"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2/ruleCollectionGroups/aaa"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2","name":"parent_policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"05a4e34e-3c9d-472c-a7fa-7df4a5c6a819","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-cert-id-ysON8txuiUceV":{"clientId":"5939d421-cea8-4a00-897f-dc7705ab693d","principalId":"2c022e5c-acdc-429c-89fc-46f7a74e41e3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-2ipfc2vzpk74i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"617099c9-ac9c-4aa6-95d5-24a4aadd2653","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"76175755-2a16-4a44-91aa-2ca543c8c30c","principalId":"6fb5d5e4-faf0-4344-9f7e-d23124c68ae1"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s1/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"144c2e8b-71a0-4e98-932f-f9164e29cefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"6d0ff21e-6647-42a6-9838-3edeeee14985","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"7f1a66e6-b881-40c6-9410-365338f4fefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s2/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"f6809395-e45e-4f8a-a6e2-81e02ea49d40","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-f5hsk3cnwhvpa.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8917dd7-c59d-4da6-8129-b6f0ff15100f","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"d9d9e8e1-ebcf-48ce-a77a-db986268078d","principalId":"7e83c22d-c561-4368-af89-f80d90d251ba"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002"},"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child","name":"child","type":"Microsoft.Network/FirewallPolicies","etag":"abc45da6-a3cd-4034-8e01-499de8bae026","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"330a80b6-9f19-43e6-8a86-44fda4486205","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-quz5fuk4txb6c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"5fb4e660-10e4-406a-a1be-b8fbb8617cb4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/BYOK_BUG_BASH1","name":"BYOK_BUG_BASH1","type":"Microsoft.Network/FirewallPolicies","etag":"9a7ee719-7eb4-4a6d-a35d-3f07d5ff271b","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_BYOK_put/providers/Microsoft.Network/firewallPolicies/policy_westus2","name":"policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"54e2c905-54c3-413d-bab5-4014f6749749","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"90260815-db21-4564-8348-dd43a55ba8f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-k4srf6qv3ivz4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f90e5ffa-18e3-4316-a54f-e239a792551a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy"}],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy","name":"parent-policy","type":"Microsoft.Network/FirewallPolicies","etag":"49d99da0-1578-40c9-88b4-f3541a38c51d","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"e1a012ef-7143-4f61-ad7d-012ad9a750b3","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2j25i2zhe2ohq.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"06895cea-93ed-4f8e-9fef-7ab58d314d7a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-lkrgx5w3oaxtk.vault.azure.net/secrets/cacert/0c2f46a014544e01a63d0ff4eb1dc782"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy","name":"child-policy","type":"Microsoft.Network/FirewallPolicies","etag":"29f0e814-4910-4ddc-b80b-71bc47c5fc95","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-test-byok1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"83dbbdd9-e785-4d57-a0de-8bb3ce4bcdf4","principalId":"15a559e1-cc6d-4bc2-bb72-89ff62993f25"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"3d6d374b-b5a1-404b-a084-cbfface150f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"daa0a72c-c8f2-4f87-8a74-124859918ffe","principalId":"ffb92825-b46a-4eae-86dd-4014f94c1e53"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-6zmoixgwqga7o.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"3572602c-1933-4bd0-b846-7ae9661fae92","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"7a260791-078f-4588-bfea-7cb8a140b897","principalId":"53197c7f-b501-4a5c-a790-bdffed9b7447"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"c128b1b9-699e-4e60-9d23-739f1fe21d1f","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-jluizkzeptzay.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"bd666cf7-8eae-41b0-b5fa-0410a6edfe10","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"fe495093-897c-41be-8234-3bb0cc1461b9","principalId":"5b703968-72bd-4f40-932a-154b7a46c7c8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7rzm6477l544w.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"7db2681d-356d-4436-83fe-b3844fed09c2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"9c5b9192-17a4-41fa-9fba-af1c2715b92c","principalId":"c694240a-11e1-47b9-86b2-0ad34e2d1697"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"dadd66e0-7c91-4a96-b648-b773a06e9730","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["10.0.0.2","10.0.0.3"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy23nlxvt25yy63664dmgh5o6ysn24676qkb7z37fgseq2a/providers/Microsoft.Network/firewallPolicies/myclipolicy","name":"myclipolicy","type":"Microsoft.Network/FirewallPolicies","etag":"bd873d9f-79b4-403d-8ce4-c2858ba6cd4c","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy","name":"policy","type":"Microsoft.Network/FirewallPolicies","etag":"5545800c-a3f5-4f78-8aac-f03a55d9e073","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy2","name":"policy2","type":"Microsoft.Network/FirewallPolicies","etag":"f2df616c-f7a5-482c-bbe1-68c610a31129","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy3","name":"policy3","type":"Microsoft.Network/FirewallPolicies","etag":"252d5905-fa65-4e23-9836-44caecaaaf6d","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy4","name":"policy4","type":"Microsoft.Network/FirewallPolicies","etag":"b59db942-7fa3-4119-ae44-2c346f115a3c","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy5","name":"policy5","type":"Microsoft.Network/FirewallPolicies","etag":"899a54f8-7eaf-4d13-99ff-ec7220de3ab0","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy6","name":"policy6","type":"Microsoft.Network/FirewallPolicies","etag":"f9ae2b63-a1f3-4ced-90da-5537b20f95cd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy7","name":"policy7","type":"Microsoft.Network/FirewallPolicies","etag":"b05c8037-0ca1-4fa5-bc7f-feda76df6c5f","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy8","name":"policy8","type":"Microsoft.Network/FirewallPolicies","etag":"1bb1c8da-8dc4-4fa2-8459-68c922753bb5","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_1","name":"policy_1","type":"Microsoft.Network/FirewallPolicies","etag":"fb8841f4-ac7e-486e-986d-d4e75a93fb31","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_2","name":"policy_2","type":"Microsoft.Network/FirewallPolicies","etag":"e3291f6b-7762-4d2a-8eae-ce8650a8e0a6","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy/ruleCollectionGroups/collection"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[],"privateRanges":["10.0.0.0/8","192.168.0.0/16","100.64.0.0/10"]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy","name":"Dikla_policy","type":"Microsoft.Network/FirewallPolicies","etag":"a368adca-760d-48cd-ae64-5fea578958d6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-fligkbpgtyl2i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"7d9c3060-9be2-4012-9bd5-b7954b412a99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"9b50a9d4-3158-4eaa-8917-0aa60cd6287d","principalId":"a318e460-75c9-494b-887c-c5e7b83cef4c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","dnsSettings":{"servers":[],"enableProxy":true},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-p4scs64nhuj6y.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f93ed87f-a687-4036-a6c7-de510f1829a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"4af28c35-c667-4b9f-81fd-e01ff0efc798","principalId":"56616fd7-40f3-45e0-be0d-28659fa5206c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2bn7jnzatv7n6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b95c24ce-eb62-4c91-8f9f-f62c67517163","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fc5e6872-908d-46d4-9445-2ff81225cac9","principalId":"f20257bb-3269-4a97-93de-b5a7320c718c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"fw-cert-ysON8txuiUceV","keyVaultSecretId":"https://fw-cert-kv-yson8txuiucev.vault.azure.net/secrets/fw-cert-ysON8txuiUceV/3a8287fe2693442ab8c60503f2351b59"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2/ruleCollectionGroups/aaa"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2","name":"parent_policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"05a4e34e-3c9d-472c-a7fa-7df4a5c6a819","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-cert-id-ysON8txuiUceV":{"clientId":"5939d421-cea8-4a00-897f-dc7705ab693d","principalId":"2c022e5c-acdc-429c-89fc-46f7a74e41e3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-2ipfc2vzpk74i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"617099c9-ac9c-4aa6-95d5-24a4aadd2653","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"76175755-2a16-4a44-91aa-2ca543c8c30c","principalId":"6fb5d5e4-faf0-4344-9f7e-d23124c68ae1"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s1/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"144c2e8b-71a0-4e98-932f-f9164e29cefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"6d0ff21e-6647-42a6-9838-3edeeee14985","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"7f1a66e6-b881-40c6-9410-365338f4fefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s2/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"f6809395-e45e-4f8a-a6e2-81e02ea49d40","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-f5hsk3cnwhvpa.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8917dd7-c59d-4da6-8129-b6f0ff15100f","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"d9d9e8e1-ebcf-48ce-a77a-db986268078d","principalId":"7e83c22d-c561-4368-af89-f80d90d251ba"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002"},"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child","name":"child","type":"Microsoft.Network/FirewallPolicies","etag":"abc45da6-a3cd-4034-8e01-499de8bae026","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"330a80b6-9f19-43e6-8a86-44fda4486205","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-quz5fuk4txb6c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"5fb4e660-10e4-406a-a1be-b8fbb8617cb4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/BYOK_BUG_BASH1","name":"BYOK_BUG_BASH1","type":"Microsoft.Network/FirewallPolicies","etag":"9a7ee719-7eb4-4a6d-a35d-3f07d5ff271b","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_BYOK_put/providers/Microsoft.Network/firewallPolicies/policy_westus2","name":"policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"54e2c905-54c3-413d-bab5-4014f6749749","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"90260815-db21-4564-8348-dd43a55ba8f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-k4srf6qv3ivz4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f90e5ffa-18e3-4316-a54f-e239a792551a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy"}],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy","name":"parent-policy","type":"Microsoft.Network/FirewallPolicies","etag":"49d99da0-1578-40c9-88b4-f3541a38c51d","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"e1a012ef-7143-4f61-ad7d-012ad9a750b3","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2j25i2zhe2ohq.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"06895cea-93ed-4f8e-9fef-7ab58d314d7a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-lkrgx5w3oaxtk.vault.azure.net/secrets/cacert/0c2f46a014544e01a63d0ff4eb1dc782"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy","name":"child-policy","type":"Microsoft.Network/FirewallPolicies","etag":"29f0e814-4910-4ddc-b80b-71bc47c5fc95","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-test-byok1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"83dbbdd9-e785-4d57-a0de-8bb3ce4bcdf4","principalId":"15a559e1-cc6d-4bc2-bb72-89ff62993f25"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"3d6d374b-b5a1-404b-a084-cbfface150f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"daa0a72c-c8f2-4f87-8a74-124859918ffe","principalId":"ffb92825-b46a-4eae-86dd-4014f94c1e53"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-6zmoixgwqga7o.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"3572602c-1933-4bd0-b846-7ae9661fae92","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"7a260791-078f-4588-bfea-7cb8a140b897","principalId":"53197c7f-b501-4a5c-a790-bdffed9b7447"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"c128b1b9-699e-4e60-9d23-739f1fe21d1f","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-jluizkzeptzay.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"bd666cf7-8eae-41b0-b5fa-0410a6edfe10","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"fe495093-897c-41be-8234-3bb0cc1461b9","principalId":"5b703968-72bd-4f40-932a-154b7a46c7c8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7rzm6477l544w.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"7db2681d-356d-4436-83fe-b3844fed09c2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"9c5b9192-17a4-41fa-9fba-af1c2715b92c","principalId":"c694240a-11e1-47b9-86b2-0ad34e2d1697"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"dadd66e0-7c91-4a96-b648-b773a06e9730","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["10.0.0.2","10.0.0.3"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy23nlxvt25yy63664dmgh5o6ysn24676qkb7z37fgseq2a/providers/Microsoft.Network/firewallPolicies/myclipolicy","name":"myclipolicy","type":"Microsoft.Network/FirewallPolicies","etag":"bd873d9f-79b4-403d-8ce4-c2858ba6cd4c","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy","name":"policy","type":"Microsoft.Network/FirewallPolicies","etag":"5545800c-a3f5-4f78-8aac-f03a55d9e073","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy2","name":"policy2","type":"Microsoft.Network/FirewallPolicies","etag":"f2df616c-f7a5-482c-bbe1-68c610a31129","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy3","name":"policy3","type":"Microsoft.Network/FirewallPolicies","etag":"252d5905-fa65-4e23-9836-44caecaaaf6d","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy4","name":"policy4","type":"Microsoft.Network/FirewallPolicies","etag":"b59db942-7fa3-4119-ae44-2c346f115a3c","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy5","name":"policy5","type":"Microsoft.Network/FirewallPolicies","etag":"899a54f8-7eaf-4d13-99ff-ec7220de3ab0","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy6","name":"policy6","type":"Microsoft.Network/FirewallPolicies","etag":"f9ae2b63-a1f3-4ced-90da-5537b20f95cd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy7","name":"policy7","type":"Microsoft.Network/FirewallPolicies","etag":"b05c8037-0ca1-4fa5-bc7f-feda76df6c5f","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy8","name":"policy8","type":"Microsoft.Network/FirewallPolicies","etag":"1bb1c8da-8dc4-4fa2-8459-68c922753bb5","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_1","name":"policy_1","type":"Microsoft.Network/FirewallPolicies","etag":"fb8841f4-ac7e-486e-986d-d4e75a93fb31","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_2","name":"policy_2","type":"Microsoft.Network/FirewallPolicies","etag":"e3291f6b-7762-4d2a-8eae-ce8650a8e0a6","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy/ruleCollectionGroups/collection"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[],"privateRanges":["10.0.0.0/8","192.168.0.0/16","100.64.0.0/10"]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy","name":"Dikla_policy","type":"Microsoft.Network/FirewallPolicies","etag":"a368adca-760d-48cd-ae64-5fea578958d6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-fligkbpgtyl2i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"7d9c3060-9be2-4012-9bd5-b7954b412a99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"9b50a9d4-3158-4eaa-8917-0aa60cd6287d","principalId":"a318e460-75c9-494b-887c-c5e7b83cef4c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","dnsSettings":{"servers":[],"enableProxy":true},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-p4scs64nhuj6y.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f93ed87f-a687-4036-a6c7-de510f1829a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"4af28c35-c667-4b9f-81fd-e01ff0efc798","principalId":"56616fd7-40f3-45e0-be0d-28659fa5206c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2bn7jnzatv7n6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b95c24ce-eb62-4c91-8f9f-f62c67517163","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fc5e6872-908d-46d4-9445-2ff81225cac9","principalId":"f20257bb-3269-4a97-93de-b5a7320c718c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"fw-cert-ysON8txuiUceV","keyVaultSecretId":"https://fw-cert-kv-yson8txuiucev.vault.azure.net/secrets/fw-cert-ysON8txuiUceV/3a8287fe2693442ab8c60503f2351b59"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2/ruleCollectionGroups/aaa"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2","name":"parent_policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"05a4e34e-3c9d-472c-a7fa-7df4a5c6a819","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-cert-id-ysON8txuiUceV":{"clientId":"5939d421-cea8-4a00-897f-dc7705ab693d","principalId":"2c022e5c-acdc-429c-89fc-46f7a74e41e3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-2ipfc2vzpk74i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"617099c9-ac9c-4aa6-95d5-24a4aadd2653","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"76175755-2a16-4a44-91aa-2ca543c8c30c","principalId":"6fb5d5e4-faf0-4344-9f7e-d23124c68ae1"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s1/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"144c2e8b-71a0-4e98-932f-f9164e29cefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"6d0ff21e-6647-42a6-9838-3edeeee14985","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"7f1a66e6-b881-40c6-9410-365338f4fefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s2/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"f6809395-e45e-4f8a-a6e2-81e02ea49d40","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-f5hsk3cnwhvpa.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8917dd7-c59d-4da6-8129-b6f0ff15100f","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"d9d9e8e1-ebcf-48ce-a77a-db986268078d","principalId":"7e83c22d-c561-4368-af89-f80d90d251ba"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002"},"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child","name":"child","type":"Microsoft.Network/FirewallPolicies","etag":"abc45da6-a3cd-4034-8e01-499de8bae026","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"330a80b6-9f19-43e6-8a86-44fda4486205","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-quz5fuk4txb6c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"5fb4e660-10e4-406a-a1be-b8fbb8617cb4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/BYOK_BUG_BASH1","name":"BYOK_BUG_BASH1","type":"Microsoft.Network/FirewallPolicies","etag":"9a7ee719-7eb4-4a6d-a35d-3f07d5ff271b","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_BYOK_put/providers/Microsoft.Network/firewallPolicies/policy_westus2","name":"policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"54e2c905-54c3-413d-bab5-4014f6749749","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"90260815-db21-4564-8348-dd43a55ba8f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-k4srf6qv3ivz4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f90e5ffa-18e3-4316-a54f-e239a792551a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy"}],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy","name":"parent-policy","type":"Microsoft.Network/FirewallPolicies","etag":"49d99da0-1578-40c9-88b4-f3541a38c51d","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"e1a012ef-7143-4f61-ad7d-012ad9a750b3","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2j25i2zhe2ohq.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"06895cea-93ed-4f8e-9fef-7ab58d314d7a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-lkrgx5w3oaxtk.vault.azure.net/secrets/cacert/0c2f46a014544e01a63d0ff4eb1dc782"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy","name":"child-policy","type":"Microsoft.Network/FirewallPolicies","etag":"29f0e814-4910-4ddc-b80b-71bc47c5fc95","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-test-byok1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"83dbbdd9-e785-4d57-a0de-8bb3ce4bcdf4","principalId":"15a559e1-cc6d-4bc2-bb72-89ff62993f25"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"3d6d374b-b5a1-404b-a084-cbfface150f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"daa0a72c-c8f2-4f87-8a74-124859918ffe","principalId":"ffb92825-b46a-4eae-86dd-4014f94c1e53"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-6zmoixgwqga7o.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"3572602c-1933-4bd0-b846-7ae9661fae92","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"7a260791-078f-4588-bfea-7cb8a140b897","principalId":"53197c7f-b501-4a5c-a790-bdffed9b7447"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"c128b1b9-699e-4e60-9d23-739f1fe21d1f","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-jluizkzeptzay.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"bd666cf7-8eae-41b0-b5fa-0410a6edfe10","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"fe495093-897c-41be-8234-3bb0cc1461b9","principalId":"5b703968-72bd-4f40-932a-154b7a46c7c8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7rzm6477l544w.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"7db2681d-356d-4436-83fe-b3844fed09c2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"9c5b9192-17a4-41fa-9fba-af1c2715b92c","principalId":"c694240a-11e1-47b9-86b2-0ad34e2d1697"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"dadd66e0-7c91-4a96-b648-b773a06e9730","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["10.0.0.2","10.0.0.3"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy23nlxvt25yy63664dmgh5o6ysn24676qkb7z37fgseq2a/providers/Microsoft.Network/firewallPolicies/myclipolicy","name":"myclipolicy","type":"Microsoft.Network/FirewallPolicies","etag":"bd873d9f-79b4-403d-8ce4-c2858ba6cd4c","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy","name":"policy","type":"Microsoft.Network/FirewallPolicies","etag":"5545800c-a3f5-4f78-8aac-f03a55d9e073","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy2","name":"policy2","type":"Microsoft.Network/FirewallPolicies","etag":"f2df616c-f7a5-482c-bbe1-68c610a31129","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy3","name":"policy3","type":"Microsoft.Network/FirewallPolicies","etag":"252d5905-fa65-4e23-9836-44caecaaaf6d","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy4","name":"policy4","type":"Microsoft.Network/FirewallPolicies","etag":"b59db942-7fa3-4119-ae44-2c346f115a3c","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy5","name":"policy5","type":"Microsoft.Network/FirewallPolicies","etag":"899a54f8-7eaf-4d13-99ff-ec7220de3ab0","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy6","name":"policy6","type":"Microsoft.Network/FirewallPolicies","etag":"f9ae2b63-a1f3-4ced-90da-5537b20f95cd","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy7","name":"policy7","type":"Microsoft.Network/FirewallPolicies","etag":"b05c8037-0ca1-4fa5-bc7f-feda76df6c5f","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy8","name":"policy8","type":"Microsoft.Network/FirewallPolicies","etag":"1bb1c8da-8dc4-4fa2-8459-68c922753bb5","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_1","name":"policy_1","type":"Microsoft.Network/FirewallPolicies","etag":"fb8841f4-ac7e-486e-986d-d4e75a93fb31","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"interCA","keyVaultSecretId":"https://nivikeyvault.vault.azure.net/secrets/interCA/79fdc2b823d9427a8d5ad7c47f80c68d"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/bewaters-features-mwh/providers/Microsoft.Network/firewallPolicies/policy_2","name":"policy_2","type":"Microsoft.Network/FirewallPolicies","etag":"e3291f6b-7762-4d2a-8eae-ce8650a8e0a6","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_BYOK_put/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my_identity":{"clientId":"150b3516-6ff4-432f-bd8e-ffab62688ad4","principalId":"05e30182-9396-4525-bef0-15001caa5366"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy/ruleCollectionGroups/collection"}],"firewalls":[],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[],"privateRanges":["10.0.0.0/8","192.168.0.0/16","100.64.0.0/10"]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/Dikla_policy","name":"Dikla_policy","type":"Microsoft.Network/FirewallPolicies","etag":"a368adca-760d-48cd-ae64-5fea578958d6","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Off","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-prm2-fligkbpgtyl2i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/azureFirewalls/fw1"}],"intrusionDetection":{"mode":"Alert","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"},{"id":"2024898","mode":"Alert"}],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.Network/firewallPolicies/fwpolicy001","name":"fwpolicy001","type":"Microsoft.Network/FirewallPolicies","etag":"7d9c3060-9be2-4012-9bd5-b7954b412a99","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/dbalandin_rg_slice_05-02-2022_16-48_amir/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"9b50a9d4-3158-4eaa-8917-0aa60cd6287d","principalId":"a318e460-75c9-494b-887c-c5e7b83cef4c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","dnsSettings":{"servers":[],"enableProxy":true},"transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-p4scs64nhuj6y.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-3/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f93ed87f-a687-4036-a6c7-de510f1829a2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-3/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"4af28c35-c667-4b9f-81fd-e01ff0efc798","principalId":"56616fd7-40f3-45e0-be0d-28659fa5206c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2bn7jnzatv7n6.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Off","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"sourceIpGroups":[],"destinationIpGroups":[],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-webcat-4/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"b95c24ce-eb62-4c91-8f9f-f62c67517163","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-webcat-4/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"fc5e6872-908d-46d4-9445-2ff81225cac9","principalId":"f20257bb-3269-4a97-93de-b5a7320c718c"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"transportSecurity":{"certificateAuthority":{"name":"fw-cert-ysON8txuiUceV","keyVaultSecretId":"https://fw-cert-kv-yson8txuiucev.vault.azure.net/secrets/fw-cert-ysON8txuiUceV/3a8287fe2693442ab8c60503f2351b59"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2/ruleCollectionGroups/aaa"}],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug_westus2/providers/Microsoft.Network/firewallPolicies/parent_policy_westus2","name":"parent_policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"05a4e34e-3c9d-472c-a7fa-7df4a5c6a819","location":"westus2","tags":{},"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fw-cert-id-ysON8txuiUceV":{"clientId":"5939d421-cea8-4a00-897f-dc7705ab693d","principalId":"2c022e5c-acdc-429c-89fc-46f7a74e41e3"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-2ipfc2vzpk74i.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.Network/azureFirewalls/fw"}],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-60K-limit/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"617099c9-ac9c-4aa6-95d5-24a4aadd2653","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-60K-limit/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"76175755-2a16-4a44-91aa-2ca543c8c30c","principalId":"6fb5d5e4-faf0-4344-9f7e-d23124c68ae1"}}}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s1/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"144c2e8b-71a0-4e98-932f-f9164e29cefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s1/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"6d0ff21e-6647-42a6-9838-3edeeee14985","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Standard","name":"policy-scu-Standard","type":"Microsoft.Network/FirewallPolicies","etag":"7f1a66e6-b881-40c6-9410-365338f4fefe","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-scu-s2/providers/Microsoft.Network/azureFirewalls/fw-scu"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-scu-s2/providers/Microsoft.Network/firewallPolicies/policy-scu-Premium","name":"policy-scu-Premium","type":"Microsoft.Network/FirewallPolicies","etag":"f6809395-e45e-4f8a-a6e2-81e02ea49d40","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest24","keyVaultSecretId":"https://fw-premium-f5hsk3cnwhvpa.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002/ruleCollectionGroups/TestRules"}],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[{"id":"2024897","mode":"Alert"}],"bypassTrafficSettings":[{"name":"MyRule","protocol":"TCP","sourceAddresses":["10.0.10.10","10.0.10.11"],"destinationAddresses":["1.1.1.1"],"destinationPorts":["80"]}]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002","name":"test002","type":"Microsoft.Network/FirewallPolicies","etag":"e8917dd7-c59d-4da6-8129-b6f0ff15100f","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"d9d9e8e1-ebcf-48ce-a77a-db986268078d","principalId":"7e83c22d-c561-4368-af89-f80d90d251ba"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child/ruleCollectionGroups/DefaultApplicationRuleCollectionGroup"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/test002"},"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_tls_bug/providers/Microsoft.Network/firewallPolicies/child","name":"child","type":"Microsoft.Network/FirewallPolicies","etag":"abc45da6-a3cd-4034-8e01-499de8bae026","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"330a80b6-9f19-43e6-8a86-44fda4486205","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-quz5fuk4txb6c.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-1/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"5fb4e660-10e4-406a-a1be-b8fbb8617cb4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"0e728f1d-2126-4671-9748-e1d019cd8f58","principalId":"1bdf37a0-2331-4709-93ab-6d0a2dfc6913"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/dika_private_ranges_test/providers/Microsoft.Network/firewallPolicies/BYOK_BUG_BASH1","name":"BYOK_BUG_BASH1","type":"Microsoft.Network/FirewallPolicies","etag":"9a7ee719-7eb4-4a6d-a35d-3f07d5ff271b","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/nivi_BYOK_put/providers/Microsoft.Network/firewallPolicies/policy_westus2","name":"policy_westus2","type":"Microsoft.Network/FirewallPolicies","etag":"54e2c905-54c3-413d-bab5-4014f6749749","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"90260815-db21-4564-8348-dd43a55ba8f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-k4srf6qv3ivz4.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-2/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"f90e5ffa-18e3-4316-a54f-e239a792551a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"971e8369-3acf-47f4-9bf8-8a324cd86710","principalId":"f52b14ca-2933-4256-ab55-4adf1ea36777"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":[],"ipAddresses":[]},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy"}],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Off"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy","name":"parent-policy","type":"Microsoft.Network/FirewallPolicies","etag":"49d99da0-1578-40c9-88b4-f3541a38c51d","location":"westus2","tags":{}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"e1a012ef-7143-4f61-ad7d-012ad9a750b3","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-2j25i2zhe2ohq.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-5/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"06895cea-93ed-4f8e-9fef-7ab58d314d7a","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1":{"clientId":"231c354c-f28a-40f3-a55a-e8ebbe3e7526","principalId":"a8042d91-b0c4-4550-9851-5c3e53b47429"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"cacert","keyVaultSecretId":"https://fw-premium-lkrgx5w3oaxtk.vault.azure.net/secrets/cacert/0c2f46a014544e01a63d0ff4eb1dc782"}},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/parent-policy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/yasmin-test-byok1/providers/Microsoft.Network/firewallPolicies/child-policy","name":"child-policy","type":"Microsoft.Network/FirewallPolicies","etag":"29f0e814-4910-4ddc-b80b-71bc47c5fc95","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yasmin-test-byok1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity0":{"clientId":"83dbbdd9-e785-4d57-a0de-8bb3ce4bcdf4","principalId":"15a559e1-cc6d-4bc2-bb72-89ff62993f25"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"3d6d374b-b5a1-404b-a084-cbfface150f4","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"daa0a72c-c8f2-4f87-8a74-124859918ffe","principalId":"ffb92825-b46a-4eae-86dd-4014f94c1e53"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-6zmoixgwqga7o.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Failed"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-6/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"3572602c-1933-4bd0-b846-7ae9661fae92","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-6/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"7a260791-078f-4588-bfea-7cb8a140b897","principalId":"53197c7f-b501-4a5c-a790-bdffed9b7447"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"c128b1b9-699e-4e60-9d23-739f1fe21d1f","location":"westus2"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-jluizkzeptzay.vault.azure.net/secrets/cacert"}},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-7/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"bd666cf7-8eae-41b0-b5fa-0410a6edfe10","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-7/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity3":{"clientId":"fe495093-897c-41be-8234-3bb0cc1461b9","principalId":"5b703968-72bd-4f40-932a-154b7a46c7c8"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","transportSecurity":{"certificateAuthority":{"name":"caTest5","keyVaultSecretId":"https://fw-premium-7rzm6477l544w.vault.azure.net/secrets/cacert"}},"childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent/ruleCollectionGroups/TestRules"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent","name":"test001-parent","type":"Microsoft.Network/FirewallPolicies","etag":"7db2681d-356d-4436-83fe-b3844fed09c2","location":"westus2","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2":{"clientId":"9c5b9192-17a4-41fa-9fba-af1c2715b92c","principalId":"c694240a-11e1-47b9-86b2-0ad34e2d1697"}}}},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001/ruleCollectionGroups/TestRules"}],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/azureFirewalls/fw"}],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001-parent"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/denis-byok-8/providers/Microsoft.Network/firewallPolicies/test001","name":"test001","type":"Microsoft.Network/FirewallPolicies","etag":"dadd66e0-7c91-4a96-b648-b773a06e9730","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["10.0.0.2","10.0.0.3"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy23nlxvt25yy63664dmgh5o6ysn24676qkb7z37fgseq2a/providers/Microsoft.Network/firewallPolicies/myclipolicy","name":"myclipolicy","type":"Microsoft.Network/FirewallPolicies","etag":"bd873d9f-79b4-403d-8ce4-c2858ba6cd4c","location":"westus2"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["19.1.2.5","52.2.0.0/16","30.32.73.91"]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest0/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest0/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"8fed7082-6e00-4fbd-b317-467ff85e470a","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest8/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest8/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest8/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"309020df-1991-4747-9239-863193da0e42","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["8.8.8.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest1/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest1/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"8f78f0a3-1481-44c8-908a-c0a09a5e0d88","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest8/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"0a53a99c-9c76-4ec6-bc07-c761b12758e1","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzFwManagerFTPTest5/providers/Microsoft.Network/azureFirewalls/AzureFirewall"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/AzFwManagerFTPTest5/providers/Microsoft.Network/firewallPolicies/fwmanagerTestPolicy","name":"fwmanagerTestPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"6d298f58-24e2-4f4f-93be-211911e72d39","location":"centralus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHub2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"2a8d0c61-7a0a-49cf-96e1-fb8b7eab8964","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest2/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest2/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest2/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"e115ff8a-3b4a-4596-82da-be315c03ccaa","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub9/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub9/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateAzFwInHub9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"9fc70138-f59b-405d-a80a-3e89ca385e09","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest2/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest2/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest2/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"1f78d73a-342d-4e74-b62e-2e6add3e79fc","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub9/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub9/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/RemoveFirewallPolicyOnAzFwInHub9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"6138daf1-e026-401a-91fd-d919dd722390","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub3/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub3/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateFirewallPolicyOnAzFwInHub3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"af498683-96a7-4ee5-899e-54b7ef9d2931","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["8.8.8.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"fe1bd64a-aaa7-4108-a143-3dd2f16013aa","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest9/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest9/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest9/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"6463c64e-b1dc-46fc-973e-cc5e3d2ce8a8","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["19.1.2.5","52.2.0.0/16","30.32.73.91"]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"e163fc89-a162-4ede-872b-b1b41e9e92a1","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest9/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest9/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"742d9f91-4a80-462f-a060-38e3d502f314","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzFwManagerFTPTest3/providers/Microsoft.Network/azureFirewalls/AzureFirewall"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/AzFwManagerFTPTest3/providers/Microsoft.Network/firewallPolicies/fwmanagerTestPolicy","name":"fwmanagerTestPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"41776456-0412-4c74-bb38-01425835e0a2","location":"centralus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub0/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub0/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHub0/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"1ecfdc46-3c29-4e63-958d-4563a1c1e77a","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateFirewallPolicyOnAzFwInHub1/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"58560561-5623-41cd-8488-186dd88c5469","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub1/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/RemoveFirewallPolicyOnAzFwInHub1/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"8ab26fb1-c429-4047-8e4b-cb35cca878ca","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest6/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest6/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest6/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest6/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"e2e83e9a-374c-40a4-b42b-b4c94a6e3812","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest6/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest6/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest6/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"fe50d90e-7b52-4644-a7a4-b856be465aff","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["8.8.8.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest4/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"9346f608-7470-4861-9fc1-f86f6ae0d8ea","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["19.1.2.5","52.2.0.0/16","30.32.73.91"]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest9/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"34b1bdb1-0bbf-4e79-a1e6-4c1f5d2ec37b","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest0/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest0/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest0/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest0/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"338dcdb6-b5f1-419c-993d-0b1e1c4ee51f","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest0/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest0/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest0/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"2a1fad8e-f062-464a-9396-c1e2ed3ffa6b","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzFwManagerFTPTest2/providers/Microsoft.Network/azureFirewalls/AzureFirewall"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/AzFwManagerFTPTest2/providers/Microsoft.Network/firewallPolicies/fwmanagerTestPolicy","name":"fwmanagerTestPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"c7ea53d6-5a92-433d-baa6-fd50a267fe2b","location":"centralus"},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RemoveFirewallPolicyOnAzFwInHub8/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/RemoveFirewallPolicyOnAzFwInHub8/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"26db7a05-e9d1-4c9d-be5d-716eaa3bfca3","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateAzFwInHub5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateAzFwInHub5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"6f77b040-c92c-4ec6-b28f-41dbdaf6d9be","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateFirewallPolicyOnAzFwInHub5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateFirewallPolicyOnAzFwInHub5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"08088313-2feb-40c0-8593-8726962119d2","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub3/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/NetworkRG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateAndDeleteAzFwInHub3/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/AppRG"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHub3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"7a4369a0-5350-4740-b8e9-aed54a2058bd","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest5/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest5/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest5/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"5b675970-7588-46a0-8fb8-6c2d897a6641","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/FirewallPolicyInheritanceTest5/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/FirewallPolicyInheritanceTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"e3a5b338-fa6b-4ec9-913d-adc12029e3a0","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy"}],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest5/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest5/providers/Microsoft.Network/firewallpolicies/TestBaseFirewallPolicy/ruleCollectionGroups/baseRG2"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest5/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy","name":"TestBaseFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"c1c54695-8427-4c70-ae89-fa37c02e0208","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest5/providers/Microsoft.Network/firewallpolicies/TestFirewallPolicy/ruleCollectionGroups/ChildRG1"}],"firewalls":[],"basePolicy":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest5/providers/Microsoft.Network/firewallPolicies/TestBaseFirewallPolicy"},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/UpdateBaseFirewallPolicyAttachedToAzFwInHubTest5/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"2daafc0d-d8f8-4062-b732-f0afb45b663f","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","dnsSettings":{"servers":["8.8.8.8"],"enableProxy":true},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwInHubWithDNSSettingsTest3/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"1a226e8f-6514-4aba-a851-4ed3ffca6fc1","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["19.1.2.5","52.2.0.0/16","30.32.73.91"]},"childPolicies":[],"ruleCollectionGroups":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy/ruleCollectionGroups/TestRuleCollGroup"}],"firewalls":[],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/CreateAndDeleteAzFwPolicyInHubWithTIWhitelistTest7/providers/Microsoft.Network/firewallPolicies/TestFirewallPolicy","name":"TestFirewallPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"5d4a177b-89d5-4e08-86e4-3579d2164e35","location":"centralus","tags":{}},{"properties":{"sku":{"tier":"Standard"},"threatIntelMode":"Alert","childPolicies":[],"ruleCollectionGroups":[],"firewalls":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzFwManagerFTPTest1/providers/Microsoft.Network/azureFirewalls/AzureFirewall"}],"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/AzFwManagerFTPTest1/providers/Microsoft.Network/firewallPolicies/fwmanagerTestPolicy","name":"fwmanagerTestPolicy","type":"Microsoft.Network/FirewallPolicies","etag":"f62ddec9-55cb-4253-bda4-57fdcaf5ac05","location":"centralus"},{"properties":{"sku":{"tier":"Premium"},"threatIntelMode":"Alert","threatIntelWhitelist":{"fqdns":["*.microsoft.com"],"ipAddresses":["101.0.0.0","101.0.0.1"]},"childPolicies":[],"ruleCollectionGroups":[],"firewalls":[],"intrusionDetection":{"mode":"Deny","configuration":{"signatureOverrides":[],"bypassTrafficSettings":[]}},"provisioningState":"Succeeded"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy","name":"myclipolicy","type":"Microsoft.Network/FirewallPolicies","etag":"01ed06ef-4581-4d88-a928-ad81054704fa","location":"centralus"}]}' - headers: - cache-control: - - no-cache - content-length: - - '195200' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 11 May 2022 19:55:02 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-original-request-ids: - - '' - - '' - - '' - - '' - - '' status: code: 200 message: OK @@ -393,7 +340,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -408,7 +355,7 @@ interactions: []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"01ed06ef-4581-4d88-a928-ad81054704fa\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"7f4fa635-68fe-4247-a86f-c401bb32c056\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -417,9 +364,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:06 GMT + - Wed, 22 Jun 2022 11:33:00 GMT etag: - - '"01ed06ef-4581-4d88-a928-ad81054704fa"' + - '"7f4fa635-68fe-4247-a86f-c401bb32c056"' expires: - '-1' pragma: @@ -459,7 +406,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -474,11 +421,11 @@ interactions: []\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a96b7459-cef1-4e4f-8040-aba5d154eb5d\",\r\n \"location\": \"centralus\",\r\n + \ \"etag\": \"b8d94f62-7f28-47bc-bc23-f132a8fa1c2d\",\r\n \"location\": \"centralus\",\r\n \ \"identity\": {\r\n \"type\": \"None\"\r\n }\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/60f290d2-92d9-4748-99a8-b42718c4ea1e?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/5d86ac04-c42e-4e77-9ab9-17b8f9adb8ea?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -486,7 +433,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:13 GMT + - Wed, 22 Jun 2022 11:33:07 GMT expires: - '-1' pragma: @@ -502,7 +449,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 200 message: OK @@ -520,9 +467,9 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/60f290d2-92d9-4748-99a8-b42718c4ea1e?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/5d86ac04-c42e-4e77-9ab9-17b8f9adb8ea?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -534,7 +481,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:23 GMT + - Wed, 22 Jun 2022 11:33:17 GMT expires: - '-1' pragma: @@ -566,7 +513,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -581,7 +528,7 @@ interactions: []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a96b7459-cef1-4e4f-8040-aba5d154eb5d\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"b8d94f62-7f28-47bc-bc23-f132a8fa1c2d\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -590,9 +537,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:24 GMT + - Wed, 22 Jun 2022 11:33:17 GMT etag: - - '"a96b7459-cef1-4e4f-8040-aba5d154eb5d"' + - '"b8d94f62-7f28-47bc-bc23-f132a8fa1c2d"' expires: - '-1' pragma: @@ -628,7 +575,7 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -636,10 +583,10 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"791ac46d-4761-4fa3-afd5-a195382043b6\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"49547b24-c670-40c7-90aa-f11b9790ab69\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/4470bd68-21fa-48af-afa4-794fbb3ac8a5?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/4c89b47b-bd35-4f7a-9a20-e6adb6d1f428?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -647,7 +594,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:30 GMT + - Wed, 22 Jun 2022 11:33:21 GMT expires: - '-1' pragma: @@ -659,7 +606,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1194' status: code: 201 message: Created @@ -677,9 +624,9 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/4470bd68-21fa-48af-afa4-794fbb3ac8a5?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/4c89b47b-bd35-4f7a-9a20-e6adb6d1f428?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -691,7 +638,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:40 GMT + - Wed, 22 Jun 2022 11:33:31 GMT expires: - '-1' pragma: @@ -723,7 +670,7 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -731,7 +678,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"791ac46d-4761-4fa3-afd5-a195382043b6\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"49547b24-c670-40c7-90aa-f11b9790ab69\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -740,9 +687,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:41 GMT + - Wed, 22 Jun 2022 11:33:32 GMT etag: - - '"791ac46d-4761-4fa3-afd5-a195382043b6"' + - '"49547b24-c670-40c7-90aa-f11b9790ab69"' expires: - '-1' pragma: @@ -774,7 +721,7 @@ interactions: ParameterSetName: - -g --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -782,7 +729,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"791ac46d-4761-4fa3-afd5-a195382043b6\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"49547b24-c670-40c7-90aa-f11b9790ab69\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -791,9 +738,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:45 GMT + - Wed, 22 Jun 2022 11:33:33 GMT etag: - - '"791ac46d-4761-4fa3-afd5-a195382043b6"' + - '"49547b24-c670-40c7-90aa-f11b9790ab69"' expires: - '-1' pragma: @@ -825,7 +772,7 @@ interactions: ParameterSetName: - -g --policy-name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups?api-version=2021-08-01 response: @@ -834,7 +781,7 @@ interactions: 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"791ac46d-4761-4fa3-afd5-a195382043b6\",\r\n \"location\": + \ \"etag\": \"49547b24-c670-40c7-90aa-f11b9790ab69\",\r\n \"location\": \"centralus\"\r\n }\r\n ]\r\n}" headers: cache-control: @@ -844,7 +791,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:48 GMT + - Wed, 22 Jun 2022 11:33:34 GMT expires: - '-1' pragma: @@ -876,7 +823,7 @@ interactions: ParameterSetName: - -g --policy-name -n --priority User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -884,7 +831,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"791ac46d-4761-4fa3-afd5-a195382043b6\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"49547b24-c670-40c7-90aa-f11b9790ab69\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -893,9 +840,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:50 GMT + - Wed, 22 Jun 2022 11:33:36 GMT etag: - - '"791ac46d-4761-4fa3-afd5-a195382043b6"' + - '"49547b24-c670-40c7-90aa-f11b9790ab69"' expires: - '-1' pragma: @@ -933,7 +880,7 @@ interactions: ParameterSetName: - -g --policy-name -n --priority User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -941,10 +888,10 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 12000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"ba40293d-8c44-43f5-942b-a52f47d02c4f\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"84575237-be8f-48b1-97c0-2f5565d284d4\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/ab564055-61d8-4b69-ae99-2b529aef58bf?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/a561c820-a8d7-4b50-becc-b71c4d4d075c?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -952,7 +899,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:00 GMT + - Wed, 22 Jun 2022 11:33:38 GMT expires: - '-1' pragma: @@ -968,7 +915,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1194' status: code: 200 message: OK @@ -986,9 +933,9 @@ interactions: ParameterSetName: - -g --policy-name -n --priority User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/ab564055-61d8-4b69-ae99-2b529aef58bf?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/a561c820-a8d7-4b50-becc-b71c4d4d075c?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1000,7 +947,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:10 GMT + - Wed, 22 Jun 2022 11:33:48 GMT expires: - '-1' pragma: @@ -1032,7 +979,7 @@ interactions: ParameterSetName: - -g --policy-name -n --priority User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1040,7 +987,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 12000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"ba40293d-8c44-43f5-942b-a52f47d02c4f\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"84575237-be8f-48b1-97c0-2f5565d284d4\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -1049,9 +996,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:11 GMT + - Wed, 22 Jun 2022 11:33:48 GMT etag: - - '"ba40293d-8c44-43f5-942b-a52f47d02c4f"' + - '"84575237-be8f-48b1-97c0-2f5565d284d4"' expires: - '-1' pragma: @@ -1085,7 +1032,7 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1093,7 +1040,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 12000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"ba40293d-8c44-43f5-942b-a52f47d02c4f\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"84575237-be8f-48b1-97c0-2f5565d284d4\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -1102,9 +1049,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:15 GMT + - Wed, 22 Jun 2022 11:33:50 GMT etag: - - '"ba40293d-8c44-43f5-942b-a52f47d02c4f"' + - '"84575237-be8f-48b1-97c0-2f5565d284d4"' expires: - '-1' pragma: @@ -1113,10 +1060,6 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff status: @@ -1149,7 +1092,7 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1169,10 +1112,10 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"bf5c505b-16a5-4c7e-bdb6-c401773ebe4e\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"886cea3d-80ae-4561-9073-8724d7dc4a80\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/9cdf4763-24f6-4a88-8424-0d01955d1dcc?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/f8648ec1-b3d8-43f0-a9ba-d882ad5ff2b0?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1180,7 +1123,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:19 GMT + - Wed, 22 Jun 2022 11:33:52 GMT expires: - '-1' pragma: @@ -1189,14 +1132,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1195' status: code: 200 message: OK @@ -1216,9 +1155,9 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/9cdf4763-24f6-4a88-8424-0d01955d1dcc?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/f8648ec1-b3d8-43f0-a9ba-d882ad5ff2b0?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1230,7 +1169,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:30 GMT + - Wed, 22 Jun 2022 11:34:02 GMT expires: - '-1' pragma: @@ -1239,10 +1178,6 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff status: @@ -1264,7 +1199,7 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1284,7 +1219,7 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"bf5c505b-16a5-4c7e-bdb6-c401773ebe4e\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"886cea3d-80ae-4561-9073-8724d7dc4a80\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -1293,9 +1228,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:31 GMT + - Wed, 22 Jun 2022 11:34:02 GMT etag: - - '"bf5c505b-16a5-4c7e-bdb6-c401773ebe4e"' + - '"886cea3d-80ae-4561-9073-8724d7dc4a80"' expires: - '-1' pragma: @@ -1304,10 +1239,6 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff status: @@ -1329,7 +1260,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1349,7 +1280,7 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"bf5c505b-16a5-4c7e-bdb6-c401773ebe4e\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"886cea3d-80ae-4561-9073-8724d7dc4a80\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -1358,9 +1289,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:35 GMT + - Wed, 22 Jun 2022 11:34:04 GMT etag: - - '"bf5c505b-16a5-4c7e-bdb6-c401773ebe4e"' + - '"886cea3d-80ae-4561-9073-8724d7dc4a80"' expires: - '-1' pragma: @@ -1409,7 +1340,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1441,10 +1372,10 @@ interactions: \ \"priority\": 13000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"4a5ccd2c-0562-4f1d-8357-d38827b31607\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"9a8d6f99-5a85-4e53-92e3-57acc3abe93c\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/2fe13583-8ee2-4a04-a8df-0c70f32fc087?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/9df2e38c-fe15-4044-8112-655ccfbaa5d7?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1452,7 +1383,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:42 GMT + - Wed, 22 Jun 2022 11:34:06 GMT expires: - '-1' pragma: @@ -1468,7 +1399,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1195' status: code: 200 message: OK @@ -1488,9 +1419,9 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/2fe13583-8ee2-4a04-a8df-0c70f32fc087?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/9df2e38c-fe15-4044-8112-655ccfbaa5d7?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1502,7 +1433,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:53 GMT + - Wed, 22 Jun 2022 11:34:16 GMT expires: - '-1' pragma: @@ -1536,7 +1467,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1568,7 +1499,7 @@ interactions: \ \"priority\": 13000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"4a5ccd2c-0562-4f1d-8357-d38827b31607\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"9a8d6f99-5a85-4e53-92e3-57acc3abe93c\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -1577,9 +1508,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:53 GMT + - Wed, 22 Jun 2022 11:34:16 GMT etag: - - '"4a5ccd2c-0562-4f1d-8357-d38827b31607"' + - '"9a8d6f99-5a85-4e53-92e3-57acc3abe93c"' expires: - '-1' pragma: @@ -1613,7 +1544,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --protocols --fqdn-tags --target-urls --enable-tls-inspection User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1645,7 +1576,7 @@ interactions: \ \"priority\": 13000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"4a5ccd2c-0562-4f1d-8357-d38827b31607\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"9a8d6f99-5a85-4e53-92e3-57acc3abe93c\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -1654,9 +1585,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:56 GMT + - Wed, 22 Jun 2022 11:34:19 GMT etag: - - '"4a5ccd2c-0562-4f1d-8357-d38827b31607"' + - '"9a8d6f99-5a85-4e53-92e3-57acc3abe93c"' expires: - '-1' pragma: @@ -1713,7 +1644,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --protocols --fqdn-tags --target-urls --enable-tls-inspection User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1761,10 +1692,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d2459b5c-715f-44e5-9034-4bfd4fa9ce5a\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"ed919356-93c6-4352-ba77-f1a235762d77\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/f7fe28cb-f9db-4336-877b-e1580de9ea51?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/8bb9d45b-552e-436f-aca1-ca6419250238?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1772,7 +1703,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:59 GMT + - Wed, 22 Jun 2022 11:34:20 GMT expires: - '-1' pragma: @@ -1788,7 +1719,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1194' status: code: 200 message: OK @@ -1808,9 +1739,9 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --protocols --fqdn-tags --target-urls --enable-tls-inspection User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/f7fe28cb-f9db-4336-877b-e1580de9ea51?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/8bb9d45b-552e-436f-aca1-ca6419250238?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1822,7 +1753,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:10 GMT + - Wed, 22 Jun 2022 11:34:30 GMT expires: - '-1' pragma: @@ -1856,7 +1787,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-addresses --protocols --fqdn-tags --target-urls --enable-tls-inspection User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1904,7 +1835,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d2459b5c-715f-44e5-9034-4bfd4fa9ce5a\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"ed919356-93c6-4352-ba77-f1a235762d77\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -1913,9 +1844,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:11 GMT + - Wed, 22 Jun 2022 11:34:30 GMT etag: - - '"d2459b5c-715f-44e5-9034-4bfd4fa9ce5a"' + - '"ed919356-93c6-4352-ba77-f1a235762d77"' expires: - '-1' pragma: @@ -1949,7 +1880,7 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1997,7 +1928,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d2459b5c-715f-44e5-9034-4bfd4fa9ce5a\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"ed919356-93c6-4352-ba77-f1a235762d77\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -2006,9 +1937,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:13 GMT + - Wed, 22 Jun 2022 11:34:32 GMT etag: - - '"d2459b5c-715f-44e5-9034-4bfd4fa9ce5a"' + - '"ed919356-93c6-4352-ba77-f1a235762d77"' expires: - '-1' pragma: @@ -2071,7 +2002,7 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2131,10 +2062,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"e005c50f-a786-48c2-98aa-82000d6ae27f\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"54d0bdd9-9c46-435c-9e75-70056c9d9389\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/223a0223-174d-4d1f-ae76-8d25a5e71760?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/e963e889-4053-4ed3-883f-b5e1bee8ab59?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -2142,7 +2073,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:18 GMT + - Wed, 22 Jun 2022 11:34:33 GMT expires: - '-1' pragma: @@ -2158,7 +2089,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1192' status: code: 200 message: OK @@ -2178,9 +2109,9 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/223a0223-174d-4d1f-ae76-8d25a5e71760?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/e963e889-4053-4ed3-883f-b5e1bee8ab59?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -2192,7 +2123,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:27 GMT + - Wed, 22 Jun 2022 11:34:43 GMT expires: - '-1' pragma: @@ -2226,7 +2157,7 @@ interactions: --rule-name --description --destination-addresses --source-addresses --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2286,7 +2217,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"e005c50f-a786-48c2-98aa-82000d6ae27f\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"54d0bdd9-9c46-435c-9e75-70056c9d9389\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -2295,9 +2226,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:29 GMT + - Wed, 22 Jun 2022 11:34:43 GMT etag: - - '"e005c50f-a786-48c2-98aa-82000d6ae27f"' + - '"54d0bdd9-9c46-435c-9e75-70056c9d9389"' expires: - '-1' pragma: @@ -2329,7 +2260,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2389,7 +2320,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"e005c50f-a786-48c2-98aa-82000d6ae27f\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"54d0bdd9-9c46-435c-9e75-70056c9d9389\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -2398,9 +2329,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:31 GMT + - Wed, 22 Jun 2022 11:34:46 GMT etag: - - '"e005c50f-a786-48c2-98aa-82000d6ae27f"' + - '"54d0bdd9-9c46-435c-9e75-70056c9d9389"' expires: - '-1' pragma: @@ -2433,7 +2364,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2493,7 +2424,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"e005c50f-a786-48c2-98aa-82000d6ae27f\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"54d0bdd9-9c46-435c-9e75-70056c9d9389\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -2502,9 +2433,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:34 GMT + - Wed, 22 Jun 2022 11:34:47 GMT etag: - - '"e005c50f-a786-48c2-98aa-82000d6ae27f"' + - '"54d0bdd9-9c46-435c-9e75-70056c9d9389"' expires: - '-1' pragma: @@ -2570,7 +2501,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2641,10 +2572,10 @@ interactions: \ \"priority\": 1000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"db21cd4f-0d20-494b-96f7-86a2ba58f832\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"05c5d182-89a7-4dee-b397-ed9e5c8e9b9d\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/6f97dd6f-172f-4592-8e95-dffb9ad2d280?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/aa6c0756-f28d-4c10-bc01-6b0ccb76432d?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -2652,7 +2583,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:37 GMT + - Wed, 22 Jun 2022 11:34:48 GMT expires: - '-1' pragma: @@ -2668,7 +2599,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1194' status: code: 200 message: OK @@ -2687,9 +2618,9 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/6f97dd6f-172f-4592-8e95-dffb9ad2d280?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/aa6c0756-f28d-4c10-bc01-6b0ccb76432d?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -2701,7 +2632,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:47 GMT + - Wed, 22 Jun 2022 11:34:59 GMT expires: - '-1' pragma: @@ -2734,7 +2665,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2805,7 +2736,7 @@ interactions: \ \"priority\": 1000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"db21cd4f-0d20-494b-96f7-86a2ba58f832\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"05c5d182-89a7-4dee-b397-ed9e5c8e9b9d\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -2814,9 +2745,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:48 GMT + - Wed, 22 Jun 2022 11:34:59 GMT etag: - - '"db21cd4f-0d20-494b-96f7-86a2ba58f832"' + - '"05c5d182-89a7-4dee-b397-ed9e5c8e9b9d"' expires: - '-1' pragma: @@ -2849,7 +2780,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --target-urls User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2920,7 +2851,7 @@ interactions: \ \"priority\": 1000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"db21cd4f-0d20-494b-96f7-86a2ba58f832\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"05c5d182-89a7-4dee-b397-ed9e5c8e9b9d\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -2929,9 +2860,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:51 GMT + - Wed, 22 Jun 2022 11:35:01 GMT etag: - - '"db21cd4f-0d20-494b-96f7-86a2ba58f832"' + - '"05c5d182-89a7-4dee-b397-ed9e5c8e9b9d"' expires: - '-1' pragma: @@ -3001,7 +2932,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --target-urls User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3081,10 +3012,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"940c9061-57b8-48f9-b090-52d7758e32fd\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"7545e441-81a9-420e-aca9-8750fb9aabff\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/93c99c28-4294-4637-8274-3a8ea281aa7f?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/440b34ab-de9c-4c21-a278-d325043a553d?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -3092,7 +3023,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:54 GMT + - Wed, 22 Jun 2022 11:35:03 GMT expires: - '-1' pragma: @@ -3108,7 +3039,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1193' status: code: 200 message: OK @@ -3127,9 +3058,9 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --target-urls User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/93c99c28-4294-4637-8274-3a8ea281aa7f?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/440b34ab-de9c-4c21-a278-d325043a553d?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -3141,7 +3072,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:04 GMT + - Wed, 22 Jun 2022 11:35:13 GMT expires: - '-1' pragma: @@ -3174,7 +3105,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-addresses --destination-addresses --target-urls User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3254,7 +3185,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"940c9061-57b8-48f9-b090-52d7758e32fd\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"7545e441-81a9-420e-aca9-8750fb9aabff\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -3263,9 +3194,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:05 GMT + - Wed, 22 Jun 2022 11:35:13 GMT etag: - - '"940c9061-57b8-48f9-b090-52d7758e32fd"' + - '"7545e441-81a9-420e-aca9-8750fb9aabff"' expires: - '-1' pragma: @@ -3299,7 +3230,7 @@ interactions: --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3379,7 +3310,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"940c9061-57b8-48f9-b090-52d7758e32fd\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"7545e441-81a9-420e-aca9-8750fb9aabff\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -3388,9 +3319,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:08 GMT + - Wed, 22 Jun 2022 11:35:15 GMT etag: - - '"940c9061-57b8-48f9-b090-52d7758e32fd"' + - '"7545e441-81a9-420e-aca9-8750fb9aabff"' expires: - '-1' pragma: @@ -3465,7 +3396,7 @@ interactions: --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3554,10 +3485,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"ce127872-abec-4d34-8280-451dca216694\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"cfb66a44-f223-4c34-8f76-79cb889cbcd9\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/1b96f558-78c3-44e2-95ed-5d410b58823c?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/04217cf4-b352-44da-8a9f-1091c4093a9c?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -3565,7 +3496,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:10 GMT + - Wed, 22 Jun 2022 11:35:16 GMT expires: - '-1' pragma: @@ -3581,7 +3512,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1193' status: code: 200 message: OK @@ -3601,9 +3532,9 @@ interactions: --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/1b96f558-78c3-44e2-95ed-5d410b58823c?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/04217cf4-b352-44da-8a9f-1091c4093a9c?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -3615,7 +3546,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:22 GMT + - Wed, 22 Jun 2022 11:35:26 GMT expires: - '-1' pragma: @@ -3649,7 +3580,7 @@ interactions: --description --destination-addresses --source-addresses --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3738,7 +3669,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"ce127872-abec-4d34-8280-451dca216694\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"cfb66a44-f223-4c34-8f76-79cb889cbcd9\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -3747,9 +3678,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:23 GMT + - Wed, 22 Jun 2022 11:35:27 GMT etag: - - '"ce127872-abec-4d34-8280-451dca216694"' + - '"cfb66a44-f223-4c34-8f76-79cb889cbcd9"' expires: - '-1' pragma: @@ -3781,7 +3712,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3870,7 +3801,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"ce127872-abec-4d34-8280-451dca216694\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"cfb66a44-f223-4c34-8f76-79cb889cbcd9\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -3879,9 +3810,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:25 GMT + - Wed, 22 Jun 2022 11:35:29 GMT etag: - - '"ce127872-abec-4d34-8280-451dca216694"' + - '"cfb66a44-f223-4c34-8f76-79cb889cbcd9"' expires: - '-1' pragma: @@ -3951,7 +3882,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4031,10 +3962,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d6d40164-b719-4a4a-98d8-8a4f92ac4f38\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"1864cc71-77eb-4830-b055-958d7cf9d961\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/1ba18d7f-940d-4204-b5a5-3deb8cd97a93?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/3273860c-0d50-49aa-bb24-530f72a07544?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -4042,7 +3973,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:28 GMT + - Wed, 22 Jun 2022 11:35:30 GMT expires: - '-1' pragma: @@ -4076,9 +4007,9 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/1ba18d7f-940d-4204-b5a5-3deb8cd97a93?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/3273860c-0d50-49aa-bb24-530f72a07544?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -4090,7 +4021,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:38 GMT + - Wed, 22 Jun 2022 11:35:40 GMT expires: - '-1' pragma: @@ -4122,7 +4053,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4202,7 +4133,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d6d40164-b719-4a4a-98d8-8a4f92ac4f38\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"1864cc71-77eb-4830-b055-958d7cf9d961\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -4211,9 +4142,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:39 GMT + - Wed, 22 Jun 2022 11:35:40 GMT etag: - - '"d6d40164-b719-4a4a-98d8-8a4f92ac4f38"' + - '"1864cc71-77eb-4830-b055-958d7cf9d961"' expires: - '-1' pragma: @@ -4245,7 +4176,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4325,7 +4256,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d6d40164-b719-4a4a-98d8-8a4f92ac4f38\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"1864cc71-77eb-4830-b055-958d7cf9d961\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -4334,9 +4265,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:41 GMT + - Wed, 22 Jun 2022 11:35:42 GMT etag: - - '"d6d40164-b719-4a4a-98d8-8a4f92ac4f38"' + - '"1864cc71-77eb-4830-b055-958d7cf9d961"' expires: - '-1' pragma: @@ -4401,7 +4332,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4469,10 +4400,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"8fc6640e-f38d-4e86-80a7-58fc58cc2c4a\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"d42f51e8-8f0b-4f41-aea7-4de66919d2cd\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/0f3602fe-be4c-4f15-8c5e-63099e87af61?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/49d8bdab-3b11-4306-ad55-77dfe38cc079?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -4480,7 +4411,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:44 GMT + - Wed, 22 Jun 2022 11:35:43 GMT expires: - '-1' pragma: @@ -4514,9 +4445,9 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/0f3602fe-be4c-4f15-8c5e-63099e87af61?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/49d8bdab-3b11-4306-ad55-77dfe38cc079?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -4528,7 +4459,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:54 GMT + - Wed, 22 Jun 2022 11:35:54 GMT expires: - '-1' pragma: @@ -4560,7 +4491,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4628,7 +4559,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"8fc6640e-f38d-4e86-80a7-58fc58cc2c4a\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"d42f51e8-8f0b-4f41-aea7-4de66919d2cd\",\r\n \"location\": \"centralus\"\r\n}" headers: cache-control: - no-cache @@ -4637,9 +4568,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:55 GMT + - Wed, 22 Jun 2022 11:35:54 GMT etag: - - '"8fc6640e-f38d-4e86-80a7-58fc58cc2c4a"' + - '"d42f51e8-8f0b-4f41-aea7-4de66919d2cd"' expires: - '-1' pragma: @@ -4673,7 +4604,7 @@ interactions: ParameterSetName: - -g --policy-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4741,10 +4672,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Deleting\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"75960c12-bcf6-4f7b-80fe-ad684d5fbf21\",\r\n \"location\": \"centralus\"\r\n}" + \ \"etag\": \"391a43a2-065e-40b8-bfae-cb637c9dbc09\",\r\n \"location\": \"centralus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/a29f22bb-f4da-416d-8ba3-e7d9d1b64f19?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/8ff152f2-c0b5-4380-b5fc-5834770150fd?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -4752,11 +4683,11 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:00 GMT + - Wed, 22 Jun 2022 11:35:57 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperationResults/a29f22bb-f4da-416d-8ba3-e7d9d1b64f19?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperationResults/8ff152f2-c0b5-4380-b5fc-5834770150fd?api-version=2021-08-01 pragma: - no-cache server: @@ -4784,9 +4715,9 @@ interactions: ParameterSetName: - -g --policy-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/a29f22bb-f4da-416d-8ba3-e7d9d1b64f19?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperations/8ff152f2-c0b5-4380-b5fc-5834770150fd?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -4798,7 +4729,53 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:10 GMT + - Wed, 22 Jun 2022 11:36:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - network firewall policy rule-collection-group delete + Connection: + - keep-alive + ParameterSetName: + - -g --policy-name --name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/nfvOperationResults/8ff152f2-c0b5-4380-b5fc-5834770150fd?api-version=2021-08-01 + response: + body: + string: 'null' + headers: + cache-control: + - no-cache + content-length: + - '4' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:36:08 GMT expires: - '-1' pragma: @@ -4830,7 +4807,7 @@ interactions: ParameterSetName: - -g --policy-name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups?api-version=2021-08-01 response: @@ -4844,7 +4821,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:14 GMT + - Wed, 22 Jun 2022 11:36:08 GMT expires: - '-1' pragma: @@ -4878,7 +4855,7 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -4890,7 +4867,7 @@ interactions: content-length: - '0' date: - - Wed, 11 May 2022 19:59:22 GMT + - Wed, 22 Jun 2022 11:36:15 GMT expires: - '-1' pragma: diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_intrusion_detection.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_intrusion_detection.yaml index 3d8ed088b1b..d99168fe965 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_intrusion_detection.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_intrusion_detection.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n --sku --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_policy_intrusion_detection000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001","name":"test_azure_firewall_policy_intrusion_detection000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:54:27Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:54:27.8869008Z","CreationDate":"2022-05-11T19:54:27.8868316Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001","name":"test_azure_firewall_policy_intrusion_detection000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:33:28Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '564' + - '382' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:29 GMT + - Wed, 22 Jun 2022 11:33:29 GMT expires: - '-1' pragma: @@ -60,7 +60,7 @@ interactions: ParameterSetName: - -g -n --sku --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -72,10 +72,10 @@ interactions: [],\r\n \"bypassTrafficSettings\": []\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"58511935-8e33-4af5-bdbc-7bedbd39a1f5\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"77a48b78-4b54-4720-93d7-4b418bd871cb\",\r\n \"location\": \"westus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/1072817f-56da-4e3c-ab11-c41db2f57149?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/e5f32811-3939-4d77-9868-896b466b063a?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -83,7 +83,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:42 GMT + - Wed, 22 Jun 2022 11:33:36 GMT expires: - '-1' pragma: @@ -95,7 +95,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1194' status: code: 201 message: Created @@ -113,9 +113,9 @@ interactions: ParameterSetName: - -g -n --sku --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/1072817f-56da-4e3c-ab11-c41db2f57149?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/e5f32811-3939-4d77-9868-896b466b063a?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -127,7 +127,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:52 GMT + - Wed, 22 Jun 2022 11:33:46 GMT expires: - '-1' pragma: @@ -159,7 +159,7 @@ interactions: ParameterSetName: - -g -n --sku --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -171,7 +171,7 @@ interactions: [],\r\n \"bypassTrafficSettings\": []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"58511935-8e33-4af5-bdbc-7bedbd39a1f5\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"77a48b78-4b54-4720-93d7-4b418bd871cb\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -180,9 +180,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:53 GMT + - Wed, 22 Jun 2022 11:33:47 GMT etag: - - '"58511935-8e33-4af5-bdbc-7bedbd39a1f5"' + - '"77a48b78-4b54-4720-93d7-4b418bd871cb"' expires: - '-1' pragma: @@ -214,7 +214,7 @@ interactions: ParameterSetName: - -g -n --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -226,7 +226,7 @@ interactions: [],\r\n \"bypassTrafficSettings\": []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"58511935-8e33-4af5-bdbc-7bedbd39a1f5\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"77a48b78-4b54-4720-93d7-4b418bd871cb\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -235,9 +235,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:56 GMT + - Wed, 22 Jun 2022 11:33:49 GMT etag: - - '"58511935-8e33-4af5-bdbc-7bedbd39a1f5"' + - '"77a48b78-4b54-4720-93d7-4b418bd871cb"' expires: - '-1' pragma: @@ -276,7 +276,7 @@ interactions: ParameterSetName: - -g -n --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -288,11 +288,11 @@ interactions: [],\r\n \"bypassTrafficSettings\": []\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"1c9a9e3e-3724-4511-9732-f9f0311c11f1\",\r\n \"location\": \"westus\",\r\n + \ \"etag\": \"eb850270-7a49-497a-adb8-d98e3764ef40\",\r\n \"location\": \"westus\",\r\n \ \"identity\": {\r\n \"type\": \"None\"\r\n }\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/e2d4dbea-b76c-4478-9fa0-81b209089ee9?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/796901e6-2c74-49cd-b0b0-80f55e5458e9?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -300,7 +300,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:05 GMT + - Wed, 22 Jun 2022 11:33:54 GMT expires: - '-1' pragma: @@ -316,7 +316,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1197' status: code: 200 message: OK @@ -334,9 +334,9 @@ interactions: ParameterSetName: - -g -n --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/e2d4dbea-b76c-4478-9fa0-81b209089ee9?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/796901e6-2c74-49cd-b0b0-80f55e5458e9?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -348,7 +348,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:16 GMT + - Wed, 22 Jun 2022 11:34:04 GMT expires: - '-1' pragma: @@ -380,7 +380,7 @@ interactions: ParameterSetName: - -g -n --idps-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -392,7 +392,7 @@ interactions: [],\r\n \"bypassTrafficSettings\": []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"1c9a9e3e-3724-4511-9732-f9f0311c11f1\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"eb850270-7a49-497a-adb8-d98e3764ef40\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -401,9 +401,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:16 GMT + - Wed, 22 Jun 2022 11:34:04 GMT etag: - - '"1c9a9e3e-3724-4511-9732-f9f0311c11f1"' + - '"eb850270-7a49-497a-adb8-d98e3764ef40"' expires: - '-1' pragma: @@ -435,7 +435,7 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -447,7 +447,7 @@ interactions: [],\r\n \"bypassTrafficSettings\": []\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"1c9a9e3e-3724-4511-9732-f9f0311c11f1\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"eb850270-7a49-497a-adb8-d98e3764ef40\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -456,9 +456,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:19 GMT + - Wed, 22 Jun 2022 11:34:06 GMT etag: - - '"1c9a9e3e-3724-4511-9732-f9f0311c11f1"' + - '"eb850270-7a49-497a-adb8-d98e3764ef40"' expires: - '-1' pragma: @@ -498,7 +498,7 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -513,10 +513,10 @@ interactions: \ \"167.221.205.101/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"6fb3a3cf-63ad-4c02-9b74-da574a81985e\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"15a2d5bb-1655-4e4d-b9e0-7708b82b7246\",\r\n \"location\": \"westus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/f2be3e84-533d-4a73-9c98-3333b9ed7546?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/a9aed873-8eb7-4971-8f7e-92af8d21a364?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -524,7 +524,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:21 GMT + - Wed, 22 Jun 2022 11:34:10 GMT expires: - '-1' pragma: @@ -540,7 +540,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1194' status: code: 200 message: OK @@ -558,9 +558,9 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/f2be3e84-533d-4a73-9c98-3333b9ed7546?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/a9aed873-8eb7-4971-8f7e-92af8d21a364?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -572,7 +572,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:31 GMT + - Wed, 22 Jun 2022 11:34:20 GMT expires: - '-1' pragma: @@ -604,7 +604,7 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -619,7 +619,7 @@ interactions: \ \"167.221.205.101/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"6fb3a3cf-63ad-4c02-9b74-da574a81985e\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"15a2d5bb-1655-4e4d-b9e0-7708b82b7246\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -628,9 +628,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:32 GMT + - Wed, 22 Jun 2022 11:34:21 GMT etag: - - '"6fb3a3cf-63ad-4c02-9b74-da574a81985e"' + - '"15a2d5bb-1655-4e4d-b9e0-7708b82b7246"' expires: - '-1' pragma: @@ -662,7 +662,7 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -677,7 +677,7 @@ interactions: \ \"167.221.205.101/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"6fb3a3cf-63ad-4c02-9b74-da574a81985e\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"15a2d5bb-1655-4e4d-b9e0-7708b82b7246\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -686,9 +686,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:36 GMT + - Wed, 22 Jun 2022 11:34:22 GMT etag: - - '"6fb3a3cf-63ad-4c02-9b74-da574a81985e"' + - '"15a2d5bb-1655-4e4d-b9e0-7708b82b7246"' expires: - '-1' pragma: @@ -728,7 +728,7 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -744,10 +744,10 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"fc1ebcb5-2a18-4fd3-b86c-af61f1ded8d6\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"1b490a14-0d2d-4101-80de-b0f02e881417\",\r\n \"location\": \"westus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/b63447bc-6aa2-4873-b391-0fa61950d7ee?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/93cfef8c-7023-4194-a1e9-5959106d2155?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -755,7 +755,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:38 GMT + - Wed, 22 Jun 2022 11:34:23 GMT expires: - '-1' pragma: @@ -771,7 +771,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1196' status: code: 200 message: OK @@ -789,9 +789,9 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/b63447bc-6aa2-4873-b391-0fa61950d7ee?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/93cfef8c-7023-4194-a1e9-5959106d2155?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -803,7 +803,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:47 GMT + - Wed, 22 Jun 2022 11:34:33 GMT expires: - '-1' pragma: @@ -835,7 +835,7 @@ interactions: ParameterSetName: - -g --policy-name --mode --signature-id --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -851,7 +851,7 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"fc1ebcb5-2a18-4fd3-b86c-af61f1ded8d6\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"1b490a14-0d2d-4101-80de-b0f02e881417\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -860,9 +860,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:48 GMT + - Wed, 22 Jun 2022 11:34:35 GMT etag: - - '"fc1ebcb5-2a18-4fd3-b86c-af61f1ded8d6"' + - '"1b490a14-0d2d-4101-80de-b0f02e881417"' expires: - '-1' pragma: @@ -895,7 +895,7 @@ interactions: - -g --policy-name --rule-name --rule-protocol --rule-src-addresses --rule-dest-addresses --rule-dest-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -911,7 +911,7 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"fc1ebcb5-2a18-4fd3-b86c-af61f1ded8d6\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"1b490a14-0d2d-4101-80de-b0f02e881417\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -920,9 +920,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:52 GMT + - Wed, 22 Jun 2022 11:34:35 GMT etag: - - '"fc1ebcb5-2a18-4fd3-b86c-af61f1ded8d6"' + - '"1b490a14-0d2d-4101-80de-b0f02e881417"' expires: - '-1' pragma: @@ -966,7 +966,7 @@ interactions: - -g --policy-name --rule-name --rule-protocol --rule-src-addresses --rule-dest-addresses --rule-dest-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -988,10 +988,10 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a8bde084-a000-4dcd-81a9-7224f6c2c8b4\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"4acfb8d0-9f46-4155-971f-2688a8ed67df\",\r\n \"location\": \"westus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/4e29a83e-677c-4dad-ac0c-764bcd5dae15?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/b9ab9fec-eb01-4e72-8b34-a637a6349453?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -999,7 +999,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:53 GMT + - Wed, 22 Jun 2022 11:34:37 GMT expires: - '-1' pragma: @@ -1015,7 +1015,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1196' status: code: 200 message: OK @@ -1034,9 +1034,9 @@ interactions: - -g --policy-name --rule-name --rule-protocol --rule-src-addresses --rule-dest-addresses --rule-dest-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/4e29a83e-677c-4dad-ac0c-764bcd5dae15?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/b9ab9fec-eb01-4e72-8b34-a637a6349453?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1048,7 +1048,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:03 GMT + - Wed, 22 Jun 2022 11:34:47 GMT expires: - '-1' pragma: @@ -1081,7 +1081,7 @@ interactions: - -g --policy-name --rule-name --rule-protocol --rule-src-addresses --rule-dest-addresses --rule-dest-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -1103,7 +1103,7 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a8bde084-a000-4dcd-81a9-7224f6c2c8b4\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"4acfb8d0-9f46-4155-971f-2688a8ed67df\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -1112,9 +1112,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:03 GMT + - Wed, 22 Jun 2022 11:34:47 GMT etag: - - '"a8bde084-a000-4dcd-81a9-7224f6c2c8b4"' + - '"4acfb8d0-9f46-4155-971f-2688a8ed67df"' expires: - '-1' pragma: @@ -1146,7 +1146,7 @@ interactions: ParameterSetName: - -g --policy-name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -1168,7 +1168,7 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a8bde084-a000-4dcd-81a9-7224f6c2c8b4\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"4acfb8d0-9f46-4155-971f-2688a8ed67df\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -1177,9 +1177,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:05 GMT + - Wed, 22 Jun 2022 11:34:49 GMT etag: - - '"a8bde084-a000-4dcd-81a9-7224f6c2c8b4"' + - '"4acfb8d0-9f46-4155-971f-2688a8ed67df"' expires: - '-1' pragma: @@ -1211,7 +1211,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-name --signature-id User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -1233,7 +1233,7 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a8bde084-a000-4dcd-81a9-7224f6c2c8b4\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"4acfb8d0-9f46-4155-971f-2688a8ed67df\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -1242,9 +1242,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:07 GMT + - Wed, 22 Jun 2022 11:34:50 GMT etag: - - '"a8bde084-a000-4dcd-81a9-7224f6c2c8b4"' + - '"4acfb8d0-9f46-4155-971f-2688a8ed67df"' expires: - '-1' pragma: @@ -1284,7 +1284,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-name --signature-id User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -1299,10 +1299,10 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"3eb25e6e-2985-4682-b5e2-22f653dda179\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"5477fc5b-a6f7-40ae-a3e2-ccd958374573\",\r\n \"location\": \"westus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/feff5b02-88b7-4caf-9deb-c8380b15fb6a?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/17d3972f-f0a8-4066-a4cf-6b3f7df234cb?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1310,7 +1310,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:09 GMT + - Wed, 22 Jun 2022 11:34:51 GMT expires: - '-1' pragma: @@ -1326,7 +1326,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1196' status: code: 200 message: OK @@ -1344,9 +1344,9 @@ interactions: ParameterSetName: - -g --policy-name --rule-name --signature-id User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/feff5b02-88b7-4caf-9deb-c8380b15fb6a?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/17d3972f-f0a8-4066-a4cf-6b3f7df234cb?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1358,7 +1358,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:20 GMT + - Wed, 22 Jun 2022 11:35:01 GMT expires: - '-1' pragma: @@ -1390,7 +1390,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-name --signature-id User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -1405,7 +1405,7 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"3eb25e6e-2985-4682-b5e2-22f653dda179\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"5477fc5b-a6f7-40ae-a3e2-ccd958374573\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -1414,9 +1414,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:21 GMT + - Wed, 22 Jun 2022 11:35:02 GMT etag: - - '"3eb25e6e-2985-4682-b5e2-22f653dda179"' + - '"5477fc5b-a6f7-40ae-a3e2-ccd958374573"' expires: - '-1' pragma: @@ -1448,7 +1448,7 @@ interactions: ParameterSetName: - -g --policy-name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy?api-version=2021-08-01 response: @@ -1463,7 +1463,7 @@ interactions: \ \"167.221.205.102/32\"\r\n ]\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_intrusion_detection000001/providers/Microsoft.Network/firewallPolicies/myFirewallPolicy\",\r\n \ \"name\": \"myFirewallPolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"3eb25e6e-2985-4682-b5e2-22f653dda179\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"5477fc5b-a6f7-40ae-a3e2-ccd958374573\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -1472,9 +1472,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:24 GMT + - Wed, 22 Jun 2022 11:35:03 GMT etag: - - '"3eb25e6e-2985-4682-b5e2-22f653dda179"' + - '"5477fc5b-a6f7-40ae-a3e2-ccd958374573"' expires: - '-1' pragma: diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_fqdns.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_fqdns.yaml index a00a78e1366..b3c3f4fbe36 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_fqdns.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_fqdns.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_policy000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001","name":"cli_test_azure_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:54:27Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:54:29.0648143Z","CreationDate":"2022-05-11T19:54:29.0646350Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001","name":"cli_test_azure_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:34:24Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '533' + - '351' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:32 GMT + - Wed, 22 Jun 2022 11:34:24 GMT expires: - '-1' pragma: @@ -59,8 +59,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 accept-language: - en-US method: PUT @@ -71,10 +71,10 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.0\",\r\n \"10.0.0.1\"\r\n \ ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/sourceipgroup\",\r\n \ \"name\": \"sourceipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"5388f321-c57e-479a-80f7-1ca9b39f81e9\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"800c64b4-0eeb-48c7-8d60-df45b40e67ac\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/8a5793a6-d914-4658-b60c-639467546570?api-version=2019-09-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/14d35d6d-7d69-4267-bda7-0a330b79da6d?api-version=2019-09-01 cache-control: - no-cache content-length: @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:41 GMT + - Wed, 22 Jun 2022 11:34:31 GMT expires: - '-1' pragma: @@ -94,7 +94,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1195' status: code: 201 message: Created @@ -112,10 +112,10 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/8a5793a6-d914-4658-b60c-639467546570?api-version=2019-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/14d35d6d-7d69-4267-bda7-0a330b79da6d?api-version=2019-09-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -127,7 +127,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:52 GMT + - Wed, 22 Jun 2022 11:34:43 GMT expires: - '-1' pragma: @@ -159,8 +159,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/sourceipgroup?api-version=2019-09-01 response: @@ -169,7 +169,7 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.0\",\r\n \"10.0.0.1\"\r\n \ ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/sourceipgroup\",\r\n \ \"name\": \"sourceipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"5388f321-c57e-479a-80f7-1ca9b39f81e9\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"800c64b4-0eeb-48c7-8d60-df45b40e67ac\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -178,9 +178,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:54:53 GMT + - Wed, 22 Jun 2022 11:34:43 GMT etag: - - '"5388f321-c57e-479a-80f7-1ca9b39f81e9"' + - '"800c64b4-0eeb-48c7-8d60-df45b40e67ac"' expires: - '-1' pragma: @@ -217,7 +217,7 @@ interactions: ParameterSetName: - --resource-group --location --name --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -229,10 +229,10 @@ interactions: [],\r\n \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"bd873d9f-79b4-403d-8ce4-c2858ba6cd4c\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"739eb4a0-a22f-4732-86ef-7f6ef2e10fe5\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/2f32e821-6de4-4822-8025-17869f05383c?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/99b04127-01aa-41ca-a32d-1c8f7cf4c994?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -240,7 +240,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:02 GMT + - Wed, 22 Jun 2022 11:34:50 GMT expires: - '-1' pragma: @@ -252,7 +252,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1193' status: code: 201 message: Created @@ -270,9 +270,9 @@ interactions: ParameterSetName: - --resource-group --location --name --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/2f32e821-6de4-4822-8025-17869f05383c?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/99b04127-01aa-41ca-a32d-1c8f7cf4c994?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -284,7 +284,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:12 GMT + - Wed, 22 Jun 2022 11:35:00 GMT expires: - '-1' pragma: @@ -316,7 +316,7 @@ interactions: ParameterSetName: - --resource-group --location --name --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -328,7 +328,7 @@ interactions: [],\r\n \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"bd873d9f-79b4-403d-8ce4-c2858ba6cd4c\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"739eb4a0-a22f-4732-86ef-7f6ef2e10fe5\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -337,9 +337,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:12 GMT + - Wed, 22 Jun 2022 11:35:00 GMT etag: - - '"bd873d9f-79b4-403d-8ce4-c2858ba6cd4c"' + - '"739eb4a0-a22f-4732-86ef-7f6ef2e10fe5"' expires: - '-1' pragma: @@ -375,7 +375,7 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -383,10 +383,10 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"42ecb489-e42f-47fb-bc06-392ee4005752\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"256bf1c3-9e4e-4b67-bc69-d7df73866244\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/08f20332-fc15-48d2-81c1-0df964d34d1e?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/cd443eb6-8c53-4548-a83e-f79b0852132a?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -394,7 +394,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:16 GMT + - Wed, 22 Jun 2022 11:35:02 GMT expires: - '-1' pragma: @@ -406,7 +406,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1194' status: code: 201 message: Created @@ -424,9 +424,9 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/08f20332-fc15-48d2-81c1-0df964d34d1e?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/cd443eb6-8c53-4548-a83e-f79b0852132a?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -438,7 +438,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:26 GMT + - Wed, 22 Jun 2022 11:35:13 GMT expires: - '-1' pragma: @@ -470,7 +470,7 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -478,7 +478,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"42ecb489-e42f-47fb-bc06-392ee4005752\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"256bf1c3-9e4e-4b67-bc69-d7df73866244\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -487,9 +487,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:27 GMT + - Wed, 22 Jun 2022 11:35:13 GMT etag: - - '"42ecb489-e42f-47fb-bc06-392ee4005752"' + - '"256bf1c3-9e4e-4b67-bc69-d7df73866244"' expires: - '-1' pragma: @@ -523,7 +523,7 @@ interactions: --rule-name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -531,7 +531,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"42ecb489-e42f-47fb-bc06-392ee4005752\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"256bf1c3-9e4e-4b67-bc69-d7df73866244\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -540,9 +540,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:31 GMT + - Wed, 22 Jun 2022 11:35:15 GMT etag: - - '"42ecb489-e42f-47fb-bc06-392ee4005752"' + - '"256bf1c3-9e4e-4b67-bc69-d7df73866244"' expires: - '-1' pragma: @@ -586,7 +586,7 @@ interactions: --rule-name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -607,10 +607,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"97497a8e-b791-458a-b9df-ac1bae668da2\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2c491aa6-fdd5-42d2-b715-d9dcabca7271\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/c493f2f1-d79b-4657-b4ca-b86865548dfb?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/06de1fde-ae36-4b18-a392-f995c652b876?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -618,7 +618,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:33 GMT + - Wed, 22 Jun 2022 11:35:16 GMT expires: - '-1' pragma: @@ -634,7 +634,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1192' status: code: 200 message: OK @@ -654,9 +654,9 @@ interactions: --rule-name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/c493f2f1-d79b-4657-b4ca-b86865548dfb?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/06de1fde-ae36-4b18-a392-f995c652b876?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -668,7 +668,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:43 GMT + - Wed, 22 Jun 2022 11:35:26 GMT expires: - '-1' pragma: @@ -702,7 +702,7 @@ interactions: --rule-name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -723,7 +723,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"97497a8e-b791-458a-b9df-ac1bae668da2\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2c491aa6-fdd5-42d2-b715-d9dcabca7271\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -732,9 +732,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:43 GMT + - Wed, 22 Jun 2022 11:35:26 GMT etag: - - '"97497a8e-b791-458a-b9df-ac1bae668da2"' + - '"2c491aa6-fdd5-42d2-b715-d9dcabca7271"' expires: - '-1' pragma: @@ -767,7 +767,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -788,7 +788,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"97497a8e-b791-458a-b9df-ac1bae668da2\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2c491aa6-fdd5-42d2-b715-d9dcabca7271\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -797,9 +797,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:47 GMT + - Wed, 22 Jun 2022 11:35:27 GMT etag: - - '"97497a8e-b791-458a-b9df-ac1bae668da2"' + - '"2c491aa6-fdd5-42d2-b715-d9dcabca7271"' expires: - '-1' pragma: @@ -846,7 +846,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -875,10 +875,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"c82044ef-c9a5-4f04-a2b2-8c8021fa5fe3\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8dce2dab-19fa-441d-b194-ed2c1aea35a9\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/d85a260a-749e-47bd-a094-9c9749ea08f3?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/26425090-aef2-42dc-af7b-d7952c205c0a?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -886,7 +886,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:49 GMT + - Wed, 22 Jun 2022 11:35:28 GMT expires: - '-1' pragma: @@ -921,9 +921,9 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/d85a260a-749e-47bd-a094-9c9749ea08f3?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/26425090-aef2-42dc-af7b-d7952c205c0a?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -935,7 +935,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:00 GMT + - Wed, 22 Jun 2022 11:35:39 GMT expires: - '-1' pragma: @@ -968,7 +968,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --destination-fqdns --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -997,7 +997,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"c82044ef-c9a5-4f04-a2b2-8c8021fa5fe3\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8dce2dab-19fa-441d-b194-ed2c1aea35a9\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1006,9 +1006,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:00 GMT + - Wed, 22 Jun 2022 11:35:39 GMT etag: - - '"c82044ef-c9a5-4f04-a2b2-8c8021fa5fe3"' + - '"8dce2dab-19fa-441d-b194-ed2c1aea35a9"' expires: - '-1' pragma: @@ -1042,7 +1042,7 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1071,7 +1071,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"c82044ef-c9a5-4f04-a2b2-8c8021fa5fe3\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8dce2dab-19fa-441d-b194-ed2c1aea35a9\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1080,9 +1080,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:02 GMT + - Wed, 22 Jun 2022 11:35:42 GMT etag: - - '"c82044ef-c9a5-4f04-a2b2-8c8021fa5fe3"' + - '"8dce2dab-19fa-441d-b194-ed2c1aea35a9"' expires: - '-1' pragma: @@ -1136,7 +1136,7 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1176,10 +1176,10 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"b1fefb1b-a528-406f-9532-ffe6f6d5d5f0\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"bd387173-acc2-48c9-9b78-5712067050e5\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/d4251a38-02a8-45e9-9452-b5b67a5e15ea?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/f790e73c-d756-40a7-aa73-44484800bb58?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1187,7 +1187,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:04 GMT + - Wed, 22 Jun 2022 11:35:43 GMT expires: - '-1' pragma: @@ -1223,9 +1223,9 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/d4251a38-02a8-45e9-9452-b5b67a5e15ea?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/f790e73c-d756-40a7-aa73-44484800bb58?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1237,7 +1237,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:15 GMT + - Wed, 22 Jun 2022 11:35:54 GMT expires: - '-1' pragma: @@ -1271,7 +1271,7 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1311,7 +1311,7 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"b1fefb1b-a528-406f-9532-ffe6f6d5d5f0\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"bd387173-acc2-48c9-9b78-5712067050e5\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1320,9 +1320,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:16 GMT + - Wed, 22 Jun 2022 11:35:54 GMT etag: - - '"b1fefb1b-a528-406f-9532-ffe6f6d5d5f0"' + - '"bd387173-acc2-48c9-9b78-5712067050e5"' expires: - '-1' pragma: @@ -1356,7 +1356,7 @@ interactions: --description --destination-addresses --source-ip-groups --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1396,7 +1396,7 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"b1fefb1b-a528-406f-9532-ffe6f6d5d5f0\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"bd387173-acc2-48c9-9b78-5712067050e5\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1405,9 +1405,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:18 GMT + - Wed, 22 Jun 2022 11:35:55 GMT etag: - - '"b1fefb1b-a528-406f-9532-ffe6f6d5d5f0"' + - '"bd387173-acc2-48c9-9b78-5712067050e5"' expires: - '-1' pragma: @@ -1465,7 +1465,7 @@ interactions: --description --destination-addresses --source-ip-groups --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1513,10 +1513,10 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"7a99adfa-02e4-4475-ab04-3d5103b76e83\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"53f06aa8-d49b-42e2-87f4-58700b121a8b\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ab743084-ee4f-44e6-ae3f-2ab2445f4728?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/bbf7aba0-8f90-4b6d-860e-c8252ada22e7?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1524,7 +1524,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:19 GMT + - Wed, 22 Jun 2022 11:35:56 GMT expires: - '-1' pragma: @@ -1540,7 +1540,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1194' status: code: 200 message: OK @@ -1560,9 +1560,9 @@ interactions: --description --destination-addresses --source-ip-groups --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ab743084-ee4f-44e6-ae3f-2ab2445f4728?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/bbf7aba0-8f90-4b6d-860e-c8252ada22e7?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1574,7 +1574,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:30 GMT + - Wed, 22 Jun 2022 11:36:06 GMT expires: - '-1' pragma: @@ -1608,7 +1608,7 @@ interactions: --description --destination-addresses --source-ip-groups --translated-fqdn --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1656,7 +1656,7 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"7a99adfa-02e4-4475-ab04-3d5103b76e83\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"53f06aa8-d49b-42e2-87f4-58700b121a8b\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1665,9 +1665,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:30 GMT + - Wed, 22 Jun 2022 11:36:07 GMT etag: - - '"7a99adfa-02e4-4475-ab04-3d5103b76e83"' + - '"53f06aa8-d49b-42e2-87f4-58700b121a8b"' expires: - '-1' pragma: diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_ip_groups.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_ip_groups.yaml index e385811e44a..71324e3bbb6 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_ip_groups.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_rules_with_ip_groups.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_policy000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001","name":"cli_test_azure_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:55:36Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:55:37.3675601Z","CreationDate":"2022-05-11T19:55:37.3675193Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001","name":"cli_test_azure_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:34:32Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '533' + - '351' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:39 GMT + - Wed, 22 Jun 2022 11:34:33 GMT expires: - '-1' pragma: @@ -59,8 +59,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 accept-language: - en-US method: PUT @@ -71,10 +71,10 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.0\",\r\n \"10.0.0.1\"\r\n \ ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/sourceipgroup\",\r\n \ \"name\": \"sourceipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"573f1f30-a94f-4a7f-aaf7-d13dfe953d87\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2007a503-fe3e-4c8d-ac4c-6e4fb78a6cea\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/e12db164-74b4-4c2c-b2a8-ab2de4d1f688?api-version=2019-09-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/02c11335-77c0-4476-a053-fe29391d7b9b?api-version=2019-09-01 cache-control: - no-cache content-length: @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:47 GMT + - Wed, 22 Jun 2022 11:34:37 GMT expires: - '-1' pragma: @@ -94,7 +94,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1194' status: code: 201 message: Created @@ -112,10 +112,10 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/e12db164-74b4-4c2c-b2a8-ab2de4d1f688?api-version=2019-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/02c11335-77c0-4476-a053-fe29391d7b9b?api-version=2019-09-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -127,7 +127,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:58 GMT + - Wed, 22 Jun 2022 11:34:47 GMT expires: - '-1' pragma: @@ -159,8 +159,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/sourceipgroup?api-version=2019-09-01 response: @@ -169,7 +169,7 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.0\",\r\n \"10.0.0.1\"\r\n \ ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/sourceipgroup\",\r\n \ \"name\": \"sourceipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"573f1f30-a94f-4a7f-aaf7-d13dfe953d87\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2007a503-fe3e-4c8d-ac4c-6e4fb78a6cea\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -178,9 +178,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:55:59 GMT + - Wed, 22 Jun 2022 11:34:49 GMT etag: - - '"573f1f30-a94f-4a7f-aaf7-d13dfe953d87"' + - '"2007a503-fe3e-4c8d-ac4c-6e4fb78a6cea"' expires: - '-1' pragma: @@ -212,21 +212,21 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_policy000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001","name":"cli_test_azure_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:55:36Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:55:37.3675601Z","CreationDate":"2022-05-11T19:55:37.3675193Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001","name":"cli_test_azure_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:34:32Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '533' + - '351' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:00 GMT + - Wed, 22 Jun 2022 11:34:49 GMT expires: - '-1' pragma: @@ -258,8 +258,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 accept-language: - en-US method: PUT @@ -270,10 +270,10 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.2\",\r\n \"10.0.0.3\"\r\n \ ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/destinationipgroup\",\r\n \ \"name\": \"destinationipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"235d624a-62db-46ab-976a-dee3fbde928d\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"d440fb67-bc4f-481d-82b2-9854da356a16\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4243ffb7-e420-49de-af6a-a736136c8ba1?api-version=2019-09-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/6930345b-4a5e-465e-ae1f-660067f1f50a?api-version=2019-09-01 cache-control: - no-cache content-length: @@ -281,7 +281,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:08 GMT + - Wed, 22 Jun 2022 11:34:54 GMT expires: - '-1' pragma: @@ -311,10 +311,10 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4243ffb7-e420-49de-af6a-a736136c8ba1?api-version=2019-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/6930345b-4a5e-465e-ae1f-660067f1f50a?api-version=2019-09-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -326,7 +326,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:19 GMT + - Wed, 22 Jun 2022 11:35:05 GMT expires: - '-1' pragma: @@ -358,8 +358,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/destinationipgroup?api-version=2019-09-01 response: @@ -368,7 +368,7 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.2\",\r\n \"10.0.0.3\"\r\n \ ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/ipGroups/destinationipgroup\",\r\n \ \"name\": \"destinationipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"235d624a-62db-46ab-976a-dee3fbde928d\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"d440fb67-bc4f-481d-82b2-9854da356a16\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -377,9 +377,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:22 GMT + - Wed, 22 Jun 2022 11:35:06 GMT etag: - - '"235d624a-62db-46ab-976a-dee3fbde928d"' + - '"d440fb67-bc4f-481d-82b2-9854da356a16"' expires: - '-1' pragma: @@ -415,7 +415,7 @@ interactions: ParameterSetName: - -g -n -l User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -425,10 +425,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"77ac9b62-ecc8-45d1-a462-00360e04b1b0\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"062d3c15-1ecb-4d77-89b6-32f020a1c258\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/bd63dff7-8d7d-44ef-ba4b-115d154dce6a?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/baefb510-7a94-4530-a99e-e49d3316f4c0?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -436,7 +436,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:29 GMT + - Wed, 22 Jun 2022 11:35:14 GMT expires: - '-1' pragma: @@ -448,7 +448,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1198' status: code: 201 message: Created @@ -466,9 +466,9 @@ interactions: ParameterSetName: - -g -n -l User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/bd63dff7-8d7d-44ef-ba4b-115d154dce6a?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/baefb510-7a94-4530-a99e-e49d3316f4c0?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -480,7 +480,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:40 GMT + - Wed, 22 Jun 2022 11:35:24 GMT expires: - '-1' pragma: @@ -512,7 +512,7 @@ interactions: ParameterSetName: - -g -n -l User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -522,7 +522,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"77ac9b62-ecc8-45d1-a462-00360e04b1b0\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"062d3c15-1ecb-4d77-89b6-32f020a1c258\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -531,9 +531,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:41 GMT + - Wed, 22 Jun 2022 11:35:25 GMT etag: - - '"77ac9b62-ecc8-45d1-a462-00360e04b1b0"' + - '"062d3c15-1ecb-4d77-89b6-32f020a1c258"' expires: - '-1' pragma: @@ -569,7 +569,7 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -577,10 +577,10 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"450a0332-1010-4213-893c-11835d672195\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"dd220a83-eda1-44ea-b76e-0559aa646f55\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/212a1c9c-17f8-45db-a53c-0de07e4558b9?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/3e8754a7-4fd4-45fa-b8ac-3525a65f2e88?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -588,7 +588,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:47 GMT + - Wed, 22 Jun 2022 11:35:27 GMT expires: - '-1' pragma: @@ -600,7 +600,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1197' status: code: 201 message: Created @@ -618,9 +618,9 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/212a1c9c-17f8-45db-a53c-0de07e4558b9?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/3e8754a7-4fd4-45fa-b8ac-3525a65f2e88?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -632,7 +632,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:57 GMT + - Wed, 22 Jun 2022 11:35:37 GMT expires: - '-1' pragma: @@ -664,7 +664,7 @@ interactions: ParameterSetName: - -g --priority --policy-name -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -672,7 +672,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"450a0332-1010-4213-893c-11835d672195\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"dd220a83-eda1-44ea-b76e-0559aa646f55\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -681,9 +681,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:58 GMT + - Wed, 22 Jun 2022 11:35:37 GMT etag: - - '"450a0332-1010-4213-893c-11835d672195"' + - '"dd220a83-eda1-44ea-b76e-0559aa646f55"' expires: - '-1' pragma: @@ -717,7 +717,7 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -725,7 +725,7 @@ interactions: string: "{\r\n \"properties\": {\r\n \"priority\": 10000,\r\n \"ruleCollections\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"450a0332-1010-4213-893c-11835d672195\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"dd220a83-eda1-44ea-b76e-0559aa646f55\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -734,9 +734,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:01 GMT + - Wed, 22 Jun 2022 11:35:38 GMT etag: - - '"450a0332-1010-4213-893c-11835d672195"' + - '"dd220a83-eda1-44ea-b76e-0559aa646f55"' expires: - '-1' pragma: @@ -780,7 +780,7 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -800,10 +800,10 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"e03fd36b-06ec-4ff3-a7ea-4b734c3fa419\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2e3d20ff-3562-454d-a0ac-bed1a8f7a03a\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/fbbc082c-c8e4-4322-9642-5ddcc1ef89db?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/74890a8d-b42d-478e-a606-f212228a25fd?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -811,7 +811,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:03 GMT + - Wed, 22 Jun 2022 11:35:39 GMT expires: - '-1' pragma: @@ -847,9 +847,9 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/fbbc082c-c8e4-4322-9642-5ddcc1ef89db?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/74890a8d-b42d-478e-a606-f212228a25fd?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -861,7 +861,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:13 GMT + - Wed, 22 Jun 2022 11:35:50 GMT expires: - '-1' pragma: @@ -895,7 +895,7 @@ interactions: --rule-name --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -915,7 +915,7 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"e03fd36b-06ec-4ff3-a7ea-4b734c3fa419\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2e3d20ff-3562-454d-a0ac-bed1a8f7a03a\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -924,9 +924,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:13 GMT + - Wed, 22 Jun 2022 11:35:51 GMT etag: - - '"e03fd36b-06ec-4ff3-a7ea-4b734c3fa419"' + - '"2e3d20ff-3562-454d-a0ac-bed1a8f7a03a"' expires: - '-1' pragma: @@ -960,7 +960,7 @@ interactions: --rule-name --rule-type --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -980,7 +980,7 @@ interactions: \ \"priority\": 10005\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"e03fd36b-06ec-4ff3-a7ea-4b734c3fa419\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"2e3d20ff-3562-454d-a0ac-bed1a8f7a03a\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -989,9 +989,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:17 GMT + - Wed, 22 Jun 2022 11:35:52 GMT etag: - - '"e03fd36b-06ec-4ff3-a7ea-4b734c3fa419"' + - '"2e3d20ff-3562-454d-a0ac-bed1a8f7a03a"' expires: - '-1' pragma: @@ -1041,7 +1041,7 @@ interactions: --rule-name --rule-type --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1073,10 +1073,10 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"5ff7e561-6eb6-4e47-9174-4e3a34f0c13d\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"763d6c5a-6aef-4920-b6b0-206e7d80c3a4\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4e403133-2611-4438-9fe0-3ea0ca9a1a08?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/18a6d9ee-061c-4b51-89c9-7e3e2c3bf6d7?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1084,7 +1084,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:19 GMT + - Wed, 22 Jun 2022 11:35:52 GMT expires: - '-1' pragma: @@ -1100,7 +1100,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1197' status: code: 200 message: OK @@ -1120,9 +1120,9 @@ interactions: --rule-name --rule-type --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4e403133-2611-4438-9fe0-3ea0ca9a1a08?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/18a6d9ee-061c-4b51-89c9-7e3e2c3bf6d7?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1134,7 +1134,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:29 GMT + - Wed, 22 Jun 2022 11:36:03 GMT expires: - '-1' pragma: @@ -1168,7 +1168,7 @@ interactions: --rule-name --rule-type --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1200,7 +1200,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"5ff7e561-6eb6-4e47-9174-4e3a34f0c13d\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"763d6c5a-6aef-4920-b6b0-206e7d80c3a4\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1209,9 +1209,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:30 GMT + - Wed, 22 Jun 2022 11:36:03 GMT etag: - - '"5ff7e561-6eb6-4e47-9174-4e3a34f0c13d"' + - '"763d6c5a-6aef-4920-b6b0-206e7d80c3a4"' expires: - '-1' pragma: @@ -1245,7 +1245,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-ip-groups --protocols --fqdn-tags --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1277,7 +1277,7 @@ interactions: \ }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"5ff7e561-6eb6-4e47-9174-4e3a34f0c13d\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"763d6c5a-6aef-4920-b6b0-206e7d80c3a4\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1286,9 +1286,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:32 GMT + - Wed, 22 Jun 2022 11:36:04 GMT etag: - - '"5ff7e561-6eb6-4e47-9174-4e3a34f0c13d"' + - '"763d6c5a-6aef-4920-b6b0-206e7d80c3a4"' expires: - '-1' pragma: @@ -1346,7 +1346,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-ip-groups --protocols --fqdn-tags --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1393,10 +1393,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"dfa76f7f-2402-4406-8853-de322ee34db9\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"719ded69-03be-479c-8579-31d30e0eac69\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/b6e2acae-2cad-4c64-8fcd-2fadc220b492?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/9efc8fab-d037-4d7b-b3ff-06cedf69b59c?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1404,7 +1404,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:33 GMT + - Wed, 22 Jun 2022 11:36:05 GMT expires: - '-1' pragma: @@ -1420,7 +1420,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1195' status: code: 200 message: OK @@ -1440,9 +1440,9 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-ip-groups --protocols --fqdn-tags --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/b6e2acae-2cad-4c64-8fcd-2fadc220b492?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/9efc8fab-d037-4d7b-b3ff-06cedf69b59c?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1454,7 +1454,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:43 GMT + - Wed, 22 Jun 2022 11:36:15 GMT expires: - '-1' pragma: @@ -1488,7 +1488,7 @@ interactions: --rule-name --rule-type --description --destination-addresses --source-ip-groups --protocols --fqdn-tags --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1535,7 +1535,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"dfa76f7f-2402-4406-8853-de322ee34db9\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"719ded69-03be-479c-8579-31d30e0eac69\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1544,9 +1544,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:44 GMT + - Wed, 22 Jun 2022 11:36:16 GMT etag: - - '"dfa76f7f-2402-4406-8853-de322ee34db9"' + - '"719ded69-03be-479c-8579-31d30e0eac69"' expires: - '-1' pragma: @@ -1578,7 +1578,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1625,7 +1625,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"dfa76f7f-2402-4406-8853-de322ee34db9\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"719ded69-03be-479c-8579-31d30e0eac69\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1634,9 +1634,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:46 GMT + - Wed, 22 Jun 2022 11:36:16 GMT etag: - - '"dfa76f7f-2402-4406-8853-de322ee34db9"' + - '"719ded69-03be-479c-8579-31d30e0eac69"' expires: - '-1' pragma: @@ -1669,7 +1669,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-ip-groups --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1716,7 +1716,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"dfa76f7f-2402-4406-8853-de322ee34db9\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"719ded69-03be-479c-8579-31d30e0eac69\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1725,9 +1725,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:47 GMT + - Wed, 22 Jun 2022 11:36:17 GMT etag: - - '"dfa76f7f-2402-4406-8853-de322ee34db9"' + - '"719ded69-03be-479c-8579-31d30e0eac69"' expires: - '-1' pragma: @@ -1790,7 +1790,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-ip-groups --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -1849,10 +1849,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d56e3d4c-a7af-41d9-9f35-472a22d11de3\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"5f9a79dc-b04a-4752-b68c-47e1c85bc733\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/53e26099-f520-406f-b0e5-5729e575b4ce?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/33ed09bf-c811-45a7-bde7-4a3e04ccdcec?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1860,7 +1860,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:49 GMT + - Wed, 22 Jun 2022 11:36:18 GMT expires: - '-1' pragma: @@ -1876,7 +1876,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1193' status: code: 200 message: OK @@ -1895,9 +1895,9 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-ip-groups --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/53e26099-f520-406f-b0e5-5729e575b4ce?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/33ed09bf-c811-45a7-bde7-4a3e04ccdcec?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1909,7 +1909,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:00 GMT + - Wed, 22 Jun 2022 11:36:28 GMT expires: - '-1' pragma: @@ -1942,7 +1942,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --rule-type --description --source-ip-groups --destination-addresses --protocols --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2001,7 +2001,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d56e3d4c-a7af-41d9-9f35-472a22d11de3\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"5f9a79dc-b04a-4752-b68c-47e1c85bc733\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -2010,9 +2010,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:00 GMT + - Wed, 22 Jun 2022 11:36:29 GMT etag: - - '"d56e3d4c-a7af-41d9-9f35-472a22d11de3"' + - '"5f9a79dc-b04a-4752-b68c-47e1c85bc733"' expires: - '-1' pragma: @@ -2045,7 +2045,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --target-fqdns --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2104,7 +2104,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"d56e3d4c-a7af-41d9-9f35-472a22d11de3\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"5f9a79dc-b04a-4752-b68c-47e1c85bc733\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -2113,9 +2113,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:02 GMT + - Wed, 22 Jun 2022 11:36:31 GMT etag: - - '"d56e3d4c-a7af-41d9-9f35-472a22d11de3"' + - '"5f9a79dc-b04a-4752-b68c-47e1c85bc733"' expires: - '-1' pragma: @@ -2179,7 +2179,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --target-fqdns --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2240,10 +2240,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"579ceb16-d4a6-4736-ba07-f06fee8ea006\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"582026fa-7a02-4631-a9c0-fe6b020bd12e\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/072f035a-b0e3-42ae-9135-1887b16f5800?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/9310fb72-890e-4b34-8fbd-859dbc5f2dcd?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -2251,7 +2251,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:04 GMT + - Wed, 22 Jun 2022 11:36:33 GMT expires: - '-1' pragma: @@ -2286,9 +2286,9 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --target-fqdns --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/072f035a-b0e3-42ae-9135-1887b16f5800?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/9310fb72-890e-4b34-8fbd-859dbc5f2dcd?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -2300,7 +2300,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:14 GMT + - Wed, 22 Jun 2022 11:36:43 GMT expires: - '-1' pragma: @@ -2333,7 +2333,7 @@ interactions: - -g --policy-name --rule-collection-group-name --collection-name --name --target-fqdns --web-categories User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2394,7 +2394,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"579ceb16-d4a6-4736-ba07-f06fee8ea006\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"582026fa-7a02-4631-a9c0-fe6b020bd12e\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -2403,9 +2403,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:14 GMT + - Wed, 22 Jun 2022 11:36:44 GMT etag: - - '"579ceb16-d4a6-4736-ba07-f06fee8ea006"' + - '"582026fa-7a02-4631-a9c0-fe6b020bd12e"' expires: - '-1' pragma: @@ -2439,7 +2439,7 @@ interactions: --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2500,7 +2500,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"579ceb16-d4a6-4736-ba07-f06fee8ea006\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"582026fa-7a02-4631-a9c0-fe6b020bd12e\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -2509,9 +2509,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:16 GMT + - Wed, 22 Jun 2022 11:36:45 GMT etag: - - '"579ceb16-d4a6-4736-ba07-f06fee8ea006"' + - '"582026fa-7a02-4631-a9c0-fe6b020bd12e"' expires: - '-1' pragma: @@ -2580,7 +2580,7 @@ interactions: --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2649,10 +2649,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"00f8c8b9-473d-4ae3-9423-fc915e2805ce\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"faacde02-7672-4563-82e5-9393615f85cf\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4617652b-7c76-4dbc-9d2a-8695694842ab?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/f4439170-0656-4e9c-901c-4b88d9eed445?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -2660,7 +2660,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:17 GMT + - Wed, 22 Jun 2022 11:36:46 GMT expires: - '-1' pragma: @@ -2676,7 +2676,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1195' status: code: 200 message: OK @@ -2696,9 +2696,9 @@ interactions: --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4617652b-7c76-4dbc-9d2a-8695694842ab?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/f4439170-0656-4e9c-901c-4b88d9eed445?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -2710,7 +2710,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:27 GMT + - Wed, 22 Jun 2022 11:36:56 GMT expires: - '-1' pragma: @@ -2744,7 +2744,7 @@ interactions: --description --destination-ip-groups --source-ip-groups --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2813,7 +2813,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"00f8c8b9-473d-4ae3-9423-fc915e2805ce\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"faacde02-7672-4563-82e5-9393615f85cf\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -2822,9 +2822,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:28 GMT + - Wed, 22 Jun 2022 11:36:56 GMT etag: - - '"00f8c8b9-473d-4ae3-9423-fc915e2805ce"' + - '"faacde02-7672-4563-82e5-9393615f85cf"' expires: - '-1' pragma: @@ -2858,7 +2858,7 @@ interactions: --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -2927,7 +2927,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"00f8c8b9-473d-4ae3-9423-fc915e2805ce\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"faacde02-7672-4563-82e5-9393615f85cf\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -2936,9 +2936,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:29 GMT + - Wed, 22 Jun 2022 11:36:58 GMT etag: - - '"00f8c8b9-473d-4ae3-9423-fc915e2805ce"' + - '"faacde02-7672-4563-82e5-9393615f85cf"' expires: - '-1' pragma: @@ -3011,7 +3011,7 @@ interactions: --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3088,10 +3088,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"17b1f534-018c-4e05-a6fa-7bd76ccea796\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"17d369c4-93e8-4608-9373-641962e06ef7\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/2e9b8cb7-b5a5-4f58-aae8-e733f18c6463?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/85e6d025-0eee-4624-aa26-4b3e383f6a49?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -3099,7 +3099,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:30 GMT + - Wed, 22 Jun 2022 11:36:59 GMT expires: - '-1' pragma: @@ -3115,7 +3115,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1192' status: code: 200 message: OK @@ -3135,9 +3135,9 @@ interactions: --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/2e9b8cb7-b5a5-4f58-aae8-e733f18c6463?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/85e6d025-0eee-4624-aa26-4b3e383f6a49?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -3149,7 +3149,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:41 GMT + - Wed, 22 Jun 2022 11:37:09 GMT expires: - '-1' pragma: @@ -3183,7 +3183,7 @@ interactions: --description --destination-addresses --source-ip-groups --translated-address --translated-port --destination-ports --ip-protocols User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3260,7 +3260,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"17b1f534-018c-4e05-a6fa-7bd76ccea796\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"17d369c4-93e8-4608-9373-641962e06ef7\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -3269,9 +3269,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:42 GMT + - Wed, 22 Jun 2022 11:37:09 GMT etag: - - '"17b1f534-018c-4e05-a6fa-7bd76ccea796"' + - '"17d369c4-93e8-4608-9373-641962e06ef7"' expires: - '-1' pragma: @@ -3303,7 +3303,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3380,7 +3380,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"17b1f534-018c-4e05-a6fa-7bd76ccea796\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"17d369c4-93e8-4608-9373-641962e06ef7\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -3389,9 +3389,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:46 GMT + - Wed, 22 Jun 2022 11:37:11 GMT etag: - - '"17b1f534-018c-4e05-a6fa-7bd76ccea796"' + - '"17d369c4-93e8-4608-9373-641962e06ef7"' expires: - '-1' pragma: @@ -3458,7 +3458,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3527,10 +3527,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"dd8c2d21-a57c-465a-94e0-70371e202f29\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"51bb41c2-f981-4339-ac13-b3fb93505299\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/e32c7b9d-fefe-4fd8-ae51-32d0b0a731a8?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/28a50aa5-4ddb-40fd-aa34-14ab4dab96d9?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -3538,7 +3538,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:48 GMT + - Wed, 22 Jun 2022 11:37:12 GMT expires: - '-1' pragma: @@ -3554,7 +3554,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1193' status: code: 200 message: OK @@ -3572,9 +3572,9 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/e32c7b9d-fefe-4fd8-ae51-32d0b0a731a8?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/28a50aa5-4ddb-40fd-aa34-14ab4dab96d9?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -3586,7 +3586,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:59 GMT + - Wed, 22 Jun 2022 11:37:22 GMT expires: - '-1' pragma: @@ -3618,7 +3618,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3687,7 +3687,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"dd8c2d21-a57c-465a-94e0-70371e202f29\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"51bb41c2-f981-4339-ac13-b3fb93505299\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -3696,9 +3696,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:59 GMT + - Wed, 22 Jun 2022 11:37:22 GMT etag: - - '"dd8c2d21-a57c-465a-94e0-70371e202f29"' + - '"51bb41c2-f981-4339-ac13-b3fb93505299"' expires: - '-1' pragma: @@ -3730,7 +3730,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3799,7 +3799,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"dd8c2d21-a57c-465a-94e0-70371e202f29\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"51bb41c2-f981-4339-ac13-b3fb93505299\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -3808,9 +3808,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:04 GMT + - Wed, 22 Jun 2022 11:37:25 GMT etag: - - '"dd8c2d21-a57c-465a-94e0-70371e202f29"' + - '"51bb41c2-f981-4339-ac13-b3fb93505299"' expires: - '-1' pragma: @@ -3873,7 +3873,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -3934,10 +3934,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"8d84c959-d0ca-4f27-936e-7269b377c8ed\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8b793f1f-15e9-4975-83cd-1e778f425be4\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/64907115-5e31-4ea8-a9bd-ea7fa6b62a62?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/fbc391b7-9668-45ca-8af4-adc6d740e424?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -3945,7 +3945,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:05 GMT + - Wed, 22 Jun 2022 11:37:26 GMT expires: - '-1' pragma: @@ -3961,7 +3961,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 200 message: OK @@ -3979,9 +3979,9 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/64907115-5e31-4ea8-a9bd-ea7fa6b62a62?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/fbc391b7-9668-45ca-8af4-adc6d740e424?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -3993,7 +3993,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:15 GMT + - Wed, 22 Jun 2022 11:37:36 GMT expires: - '-1' pragma: @@ -4025,7 +4025,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --collection-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4086,7 +4086,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"8d84c959-d0ca-4f27-936e-7269b377c8ed\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8b793f1f-15e9-4975-83cd-1e778f425be4\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -4095,9 +4095,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:16 GMT + - Wed, 22 Jun 2022 11:37:37 GMT etag: - - '"8d84c959-d0ca-4f27-936e-7269b377c8ed"' + - '"8b793f1f-15e9-4975-83cd-1e778f425be4"' expires: - '-1' pragma: @@ -4129,7 +4129,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4190,7 +4190,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"8d84c959-d0ca-4f27-936e-7269b377c8ed\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8b793f1f-15e9-4975-83cd-1e778f425be4\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -4199,9 +4199,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:18 GMT + - Wed, 22 Jun 2022 11:37:38 GMT etag: - - '"8d84c959-d0ca-4f27-936e-7269b377c8ed"' + - '"8b793f1f-15e9-4975-83cd-1e778f425be4"' expires: - '-1' pragma: @@ -4258,7 +4258,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4307,10 +4307,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"c60fd204-bde4-4fb7-8ac8-0344bed920f5\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"a93abf59-a0a4-4a42-907e-901a85318efc\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ef3670a7-e3a9-4153-bf97-1441404d3802?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a5f8838d-0645-4efc-86f3-215a2bb5312e?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -4318,7 +4318,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:20 GMT + - Wed, 22 Jun 2022 11:37:39 GMT expires: - '-1' pragma: @@ -4334,7 +4334,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1191' status: code: 200 message: OK @@ -4352,9 +4352,9 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ef3670a7-e3a9-4153-bf97-1441404d3802?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a5f8838d-0645-4efc-86f3-215a2bb5312e?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -4366,7 +4366,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:30 GMT + - Wed, 22 Jun 2022 11:37:50 GMT expires: - '-1' pragma: @@ -4398,7 +4398,7 @@ interactions: ParameterSetName: - -g --policy-name --rule-collection-group-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4447,7 +4447,7 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"c60fd204-bde4-4fb7-8ac8-0344bed920f5\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"a93abf59-a0a4-4a42-907e-901a85318efc\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -4456,9 +4456,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:30 GMT + - Wed, 22 Jun 2022 11:37:50 GMT etag: - - '"c60fd204-bde4-4fb7-8ac8-0344bed920f5"' + - '"a93abf59-a0a4-4a42-907e-901a85318efc"' expires: - '-1' pragma: @@ -4492,7 +4492,7 @@ interactions: ParameterSetName: - -g --policy-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup?api-version=2021-08-01 response: @@ -4541,10 +4541,10 @@ interactions: \ \"priority\": 14000\r\n }\r\n ],\r\n \"provisioningState\": \"Deleting\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups/myclirulecollectiongroup\",\r\n \ \"name\": \"myclirulecollectiongroup\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies/RuleCollectionGroups\",\r\n - \ \"etag\": \"30149e26-b5fa-4d08-9185-a4fdc9b99500\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"a6150f1a-0c9d-4b67-95ff-41acf61c6792\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/9910a215-07e7-4ab3-b4e4-570b4463734d?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4507e04c-838c-4bc3-a6a2-62cacfce432b?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -4552,11 +4552,11 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:34 GMT + - Wed, 22 Jun 2022 11:37:51 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperationResults/9910a215-07e7-4ab3-b4e4-570b4463734d?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperationResults/4507e04c-838c-4bc3-a6a2-62cacfce432b?api-version=2021-08-01 pragma: - no-cache server: @@ -4566,7 +4566,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14996' + - '14997' status: code: 202 message: Accepted @@ -4584,9 +4584,9 @@ interactions: ParameterSetName: - -g --policy-name --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/9910a215-07e7-4ab3-b4e4-570b4463734d?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/4507e04c-838c-4bc3-a6a2-62cacfce432b?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -4598,7 +4598,53 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:45 GMT + - Wed, 22 Jun 2022 11:38:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - network firewall policy rule-collection-group delete + Connection: + - keep-alive + ParameterSetName: + - -g --policy-name --name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperationResults/4507e04c-838c-4bc3-a6a2-62cacfce432b?api-version=2021-08-01 + response: + body: + string: 'null' + headers: + cache-control: + - no-cache + content-length: + - '4' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:38:03 GMT expires: - '-1' pragma: @@ -4630,7 +4676,7 @@ interactions: ParameterSetName: - -g --policy-name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy/ruleCollectionGroups?api-version=2021-08-01 response: @@ -4644,7 +4690,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:49 GMT + - Wed, 22 Jun 2022 11:38:04 GMT expires: - '-1' pragma: @@ -4678,7 +4724,7 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -4690,7 +4736,7 @@ interactions: content-length: - '0' date: - - Wed, 11 May 2022 19:59:57 GMT + - Wed, 22 Jun 2022 11:38:08 GMT expires: - '-1' pragma: @@ -4702,7 +4748,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14998' status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_update_premiumonlyproperty_issue.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_update_premiumonlyproperty_issue.yaml index 0444472469c..59c872d89f9 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_update_premiumonlyproperty_issue.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_update_premiumonlyproperty_issue.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n --sku --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001","name":"test_azure_firewall_policy_update_premiumonlyproperty_issue000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:56:39Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:56:40.6761478Z","CreationDate":"2022-05-11T19:56:40.6761080Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001","name":"test_azure_firewall_policy_update_premiumonlyproperty_issue000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:36:23Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '591' + - '409' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:42 GMT + - Wed, 22 Jun 2022 11:36:26 GMT expires: - '-1' pragma: @@ -60,7 +60,7 @@ interactions: ParameterSetName: - -g -n --sku --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -70,10 +70,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"893e35d2-353f-4c96-9abf-28802b77c020\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"a1707c73-50e7-4fca-91ef-8663e47fab46\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a7423a1d-0ab6-42aa-b8b0-e3e7ca343fbf?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/84aeb517-85ab-4bf2-b016-ad470e25c501?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -81,7 +81,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:52 GMT + - Wed, 22 Jun 2022 11:36:35 GMT expires: - '-1' pragma: @@ -93,7 +93,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1192' status: code: 201 message: Created @@ -111,9 +111,9 @@ interactions: ParameterSetName: - -g -n --sku --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a7423a1d-0ab6-42aa-b8b0-e3e7ca343fbf?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/84aeb517-85ab-4bf2-b016-ad470e25c501?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -125,7 +125,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:02 GMT + - Wed, 22 Jun 2022 11:36:45 GMT expires: - '-1' pragma: @@ -157,7 +157,7 @@ interactions: ParameterSetName: - -g -n --sku --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -167,7 +167,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"893e35d2-353f-4c96-9abf-28802b77c020\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"a1707c73-50e7-4fca-91ef-8663e47fab46\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -176,9 +176,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:02 GMT + - Wed, 22 Jun 2022 11:36:45 GMT etag: - - '"893e35d2-353f-4c96-9abf-28802b77c020"' + - '"a1707c73-50e7-4fca-91ef-8663e47fab46"' expires: - '-1' pragma: @@ -210,7 +210,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -220,7 +220,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"893e35d2-353f-4c96-9abf-28802b77c020\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"a1707c73-50e7-4fca-91ef-8663e47fab46\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -229,9 +229,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:04 GMT + - Wed, 22 Jun 2022 11:36:47 GMT etag: - - '"893e35d2-353f-4c96-9abf-28802b77c020"' + - '"a1707c73-50e7-4fca-91ef-8663e47fab46"' expires: - '-1' pragma: @@ -269,7 +269,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -279,10 +279,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"8657516d-504b-4c47-b520-785100275f18\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"ba5b7491-3d87-4b12-8560-0bbebacca14e\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a77e5328-e674-44d9-95e9-bf06de32bf4a?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/7fd37428-a752-4d98-9720-3bc37c7610d8?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -290,7 +290,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:05 GMT + - Wed, 22 Jun 2022 11:36:49 GMT expires: - '-1' pragma: @@ -306,7 +306,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1192' status: code: 200 message: OK @@ -324,9 +324,9 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a77e5328-e674-44d9-95e9-bf06de32bf4a?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/7fd37428-a752-4d98-9720-3bc37c7610d8?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -338,7 +338,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:15 GMT + - Wed, 22 Jun 2022 11:37:00 GMT expires: - '-1' pragma: @@ -370,7 +370,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -380,7 +380,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_update_premiumonlyproperty_issue000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"8657516d-504b-4c47-b520-785100275f18\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"ba5b7491-3d87-4b12-8560-0bbebacca14e\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -389,9 +389,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:17 GMT + - Wed, 22 Jun 2022 11:37:00 GMT etag: - - '"8657516d-504b-4c47-b520-785100275f18"' + - '"ba5b7491-3d87-4b12-8560-0bbebacca14e"' expires: - '-1' pragma: diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_sql.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_sql.yaml index 222d9f7e9d6..3d29aaad153 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_sql.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_sql.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_policy_with_sql000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001","name":"test_azure_firewall_policy_with_sql000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2euap","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T10:03:10Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001","name":"test_azure_firewall_policy_with_sql000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2euap","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:35:09Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:12 GMT + - Wed, 22 Jun 2022 11:35:13 GMT expires: - '-1' pragma: @@ -60,7 +60,7 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -71,10 +71,10 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"58e6f17f-c051-4412-ac8a-eac4d0fdc622\",\r\n \"location\": \"eastus2euap\"\r\n}" + \ \"etag\": \"5ef7845b-27c4-47b5-9e29-54980e60e68b\",\r\n \"location\": \"eastus2euap\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/a60b2807-ebeb-4b53-99cc-bc2a2a0d2b7d?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/cf7dc114-2d35-4e8b-8631-9d3fdb18bb90?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:26 GMT + - Wed, 22 Jun 2022 11:35:22 GMT expires: - '-1' pragma: @@ -94,7 +94,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1192' status: code: 201 message: Created @@ -112,9 +112,9 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/a60b2807-ebeb-4b53-99cc-bc2a2a0d2b7d?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/cf7dc114-2d35-4e8b-8631-9d3fdb18bb90?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -126,7 +126,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:37 GMT + - Wed, 22 Jun 2022 11:35:32 GMT expires: - '-1' pragma: @@ -158,7 +158,7 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -169,7 +169,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"58e6f17f-c051-4412-ac8a-eac4d0fdc622\",\r\n \"location\": \"eastus2euap\"\r\n}" + \ \"etag\": \"5ef7845b-27c4-47b5-9e29-54980e60e68b\",\r\n \"location\": \"eastus2euap\"\r\n}" headers: cache-control: - no-cache @@ -178,9 +178,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:37 GMT + - Wed, 22 Jun 2022 11:35:33 GMT etag: - - '"58e6f17f-c051-4412-ac8a-eac4d0fdc622"' + - '"5ef7845b-27c4-47b5-9e29-54980e60e68b"' expires: - '-1' pragma: @@ -212,7 +212,7 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -223,7 +223,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"58e6f17f-c051-4412-ac8a-eac4d0fdc622\",\r\n \"location\": \"eastus2euap\"\r\n}" + \ \"etag\": \"5ef7845b-27c4-47b5-9e29-54980e60e68b\",\r\n \"location\": \"eastus2euap\"\r\n}" headers: cache-control: - no-cache @@ -232,9 +232,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:39 GMT + - Wed, 22 Jun 2022 11:35:35 GMT etag: - - '"58e6f17f-c051-4412-ac8a-eac4d0fdc622"' + - '"5ef7845b-27c4-47b5-9e29-54980e60e68b"' expires: - '-1' pragma: @@ -272,7 +272,7 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -283,10 +283,10 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a272736d-2994-4a5b-aa87-0982c6f0d989\",\r\n \"location\": \"eastus2euap\"\r\n}" + \ \"etag\": \"ec17159e-40f4-4920-941d-a4ba4c9b32a1\",\r\n \"location\": \"eastus2euap\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/3de9599e-b001-45d8-a64a-934180e97719?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/30062d98-21fb-4ea3-b874-0b4454bb1ea9?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -294,7 +294,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:41 GMT + - Wed, 22 Jun 2022 11:35:37 GMT expires: - '-1' pragma: @@ -310,7 +310,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1196' status: code: 200 message: OK @@ -328,9 +328,9 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/3de9599e-b001-45d8-a64a-934180e97719?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/nfvOperations/30062d98-21fb-4ea3-b874-0b4454bb1ea9?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -342,7 +342,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:51 GMT + - Wed, 22 Jun 2022 11:35:48 GMT expires: - '-1' pragma: @@ -374,7 +374,7 @@ interactions: ParameterSetName: - -g -n --sql User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy?api-version=2021-08-01 response: @@ -385,7 +385,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_policy_with_sql000001/providers/Microsoft.Network/firewallPolicies/testpolicy\",\r\n \ \"name\": \"testpolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a272736d-2994-4a5b-aa87-0982c6f0d989\",\r\n \"location\": \"eastus2euap\"\r\n}" + \ \"etag\": \"ec17159e-40f4-4920-941d-a4ba4c9b32a1\",\r\n \"location\": \"eastus2euap\"\r\n}" headers: cache-control: - no-cache @@ -394,9 +394,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 10:03:52 GMT + - Wed, 22 Jun 2022 11:35:48 GMT etag: - - '"a272736d-2994-4a5b-aa87-0982c6f0d989"' + - '"ec17159e-40f4-4920-941d-a4ba4c9b32a1"' expires: - '-1' pragma: diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_threat_intel_allowlist.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_threat_intel_allowlist.yaml index ad00b0fdd38..384b24d73c8 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_threat_intel_allowlist.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_policy_with_threat_intel_allowlist.yaml @@ -17,7 +17,7 @@ interactions: ParameterSetName: - -g -n --l User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -27,10 +27,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"3041123a-a010-4316-a3ff-91d1365439d1\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"1e07316c-9493-4e04-a959-b91ba33b3c3b\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/836a2f2d-d4f9-4a15-a80e-d63384894e3a?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ce013d14-baf3-4ba6-a509-e9403675144d?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -38,7 +38,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:02 GMT + - Wed, 22 Jun 2022 11:36:23 GMT expires: - '-1' pragma: @@ -50,7 +50,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1193' status: code: 201 message: Created @@ -68,9 +68,9 @@ interactions: ParameterSetName: - -g -n --l User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/836a2f2d-d4f9-4a15-a80e-d63384894e3a?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ce013d14-baf3-4ba6-a509-e9403675144d?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:13 GMT + - Wed, 22 Jun 2022 11:36:35 GMT expires: - '-1' pragma: @@ -114,7 +114,7 @@ interactions: ParameterSetName: - -g -n --l User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -124,7 +124,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"3041123a-a010-4316-a3ff-91d1365439d1\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"1e07316c-9493-4e04-a959-b91ba33b3c3b\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -133,9 +133,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:13 GMT + - Wed, 22 Jun 2022 11:36:35 GMT etag: - - '"3041123a-a010-4316-a3ff-91d1365439d1"' + - '"1e07316c-9493-4e04-a959-b91ba33b3c3b"' expires: - '-1' pragma: @@ -167,7 +167,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -177,7 +177,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"3041123a-a010-4316-a3ff-91d1365439d1\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"1e07316c-9493-4e04-a959-b91ba33b3c3b\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -186,9 +186,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:18 GMT + - Wed, 22 Jun 2022 11:36:35 GMT etag: - - '"3041123a-a010-4316-a3ff-91d1365439d1"' + - '"1e07316c-9493-4e04-a959-b91ba33b3c3b"' expires: - '-1' pragma: @@ -227,7 +227,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -239,10 +239,10 @@ interactions: \ \"childPolicies\": [],\r\n \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"790f7af0-8885-44fc-8630-34e2ee08a891\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"7fda7d76-067d-4cae-9c4c-bc704b278cc4\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/b14e6319-1346-4204-9fbf-0b81ef2399f5?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a8b3227b-de3e-4a80-bde2-fdcad4c850f8?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -250,7 +250,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:19 GMT + - Wed, 22 Jun 2022 11:36:37 GMT expires: - '-1' pragma: @@ -259,14 +259,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1194' status: code: 200 message: OK @@ -284,9 +280,9 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/b14e6319-1346-4204-9fbf-0b81ef2399f5?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/a8b3227b-de3e-4a80-bde2-fdcad4c850f8?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -298,7 +294,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:30 GMT + - Wed, 22 Jun 2022 11:36:48 GMT expires: - '-1' pragma: @@ -307,10 +303,6 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff status: @@ -330,7 +322,7 @@ interactions: ParameterSetName: - -g -n --threat-intel-mode --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -342,7 +334,7 @@ interactions: \ \"childPolicies\": [],\r\n \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_policy_with_threat_intel_allowlist000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"790f7af0-8885-44fc-8630-34e2ee08a891\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"7fda7d76-067d-4cae-9c4c-bc704b278cc4\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -351,9 +343,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:33 GMT + - Wed, 22 Jun 2022 11:36:48 GMT etag: - - '"790f7af0-8885-44fc-8630-34e2ee08a891"' + - '"7fda7d76-067d-4cae-9c4c-bc704b278cc4"' expires: - '-1' pragma: @@ -362,10 +354,6 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff status: diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules.yaml index cb62b991f8f..f8695ec51cf 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_rules000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001","name":"cli_test_azure_firewall_rules000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:59:26Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:59:27.2127460Z","CreationDate":"2022-05-11T19:59:27.2126159Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001","name":"cli_test_azure_firewall_rules000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:38:15Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '530' + - '348' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:29 GMT + - Wed, 22 Jun 2022 11:38:16 GMT expires: - '-1' pragma: @@ -59,13 +59,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"72e4f4e7-a814-41c9-981d-6cfd9abb278e\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a2d032b9-5c6c-4bc7-a45b-5a807c316701\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -76,7 +76,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/d31c8f44-7ea9-4656-bbee-8ff13e65fd78?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1c06a715-e1de-48ce-9c38-f00b04a36dbf?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -84,7 +84,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:34 GMT + - Wed, 22 Jun 2022 11:38:23 GMT expires: - '-1' pragma: @@ -97,9 +97,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6bbd674e-b0cd-4655-a4d3-1be778741670 + - 5f059c2a-a870-48da-96a2-b03fb1e2811d x-ms-ratelimit-remaining-subscription-writes: - - '1195' + - '1191' status: code: 201 message: Created @@ -117,9 +117,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/d31c8f44-7ea9-4656-bbee-8ff13e65fd78?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1c06a715-e1de-48ce-9c38-f00b04a36dbf?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -131,7 +131,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:44 GMT + - Wed, 22 Jun 2022 11:38:33 GMT expires: - '-1' pragma: @@ -148,7 +148,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ffe40f53-1d28-49ce-8816-e443f8b4a82f + - 9b089b9b-c3e7-4e31-821b-5fb20e96fe57 status: code: 200 message: OK @@ -166,13 +166,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"19a75cfe-0452-4cd4-8d77-206beed24619\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"802972f1-73fd-415e-b7cd-f1003b386680\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -187,9 +187,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:45 GMT + - Wed, 22 Jun 2022 11:38:34 GMT etag: - - W/"19a75cfe-0452-4cd4-8d77-206beed24619" + - W/"802972f1-73fd-415e-b7cd-f1003b386680" expires: - '-1' pragma: @@ -206,7 +206,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 5d586c1b-a646-415c-a5dc-beb9f29f53d2 + - 76a2fdf7-7728-4f31-bd4b-31c0ca54342b status: code: 200 message: OK @@ -225,13 +225,13 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --destination-fqdns --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"19a75cfe-0452-4cd4-8d77-206beed24619\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"802972f1-73fd-415e-b7cd-f1003b386680\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -246,9 +246,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:45 GMT + - Wed, 22 Jun 2022 11:38:36 GMT etag: - - W/"19a75cfe-0452-4cd4-8d77-206beed24619" + - W/"802972f1-73fd-415e-b7cd-f1003b386680" expires: - '-1' pragma: @@ -265,7 +265,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 74440dcc-c8fc-44e3-b6ea-5b7c3eae01be + - fd093c2b-a13f-4f22-972a-dfc75ad95d9b status: code: 200 message: OK @@ -295,20 +295,20 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --destination-fqdns --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"0d1fcb6e-9cd7-4656-9a12-5a3ff5206f0f\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a628b7cd-a1b4-4dea-8804-4fd2f7bd7ca1\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"0d1fcb6e-9cd7-4656-9a12-5a3ff5206f0f\\\"\",\r\n + \ \"etag\": \"W/\\\"a628b7cd-a1b4-4dea-8804-4fd2f7bd7ca1\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -327,7 +327,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/72fdc097-fcd0-4e80-a575-249edd3626e5?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3fd7c89d-8780-48bb-86ea-96cd5a6a2344?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -335,7 +335,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:47 GMT + - Wed, 22 Jun 2022 11:38:36 GMT expires: - '-1' pragma: @@ -352,9 +352,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - e3094ecb-8ca0-4920-9776-983307da4912 + - 55c52cb1-47af-4c36-b0a4-69d4d86975b0 x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1194' status: code: 200 message: OK @@ -373,9 +373,9 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --destination-fqdns --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/72fdc097-fcd0-4e80-a575-249edd3626e5?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3fd7c89d-8780-48bb-86ea-96cd5a6a2344?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -387,7 +387,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:56 GMT + - Wed, 22 Jun 2022 11:38:47 GMT expires: - '-1' pragma: @@ -404,7 +404,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 140cd5e4-8a0a-46da-97e2-6c10823b988b + - 0029f160-4f81-4241-a976-ddb5733aa5ae status: code: 200 message: OK @@ -423,20 +423,20 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --destination-fqdns --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"6e5072c3-52ca-49e3-a0d2-2fef476b443b\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e19882ad-f5fc-456f-ac65-b79061fa9818\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"6e5072c3-52ca-49e3-a0d2-2fef476b443b\\\"\",\r\n + \ \"etag\": \"W/\\\"e19882ad-f5fc-456f-ac65-b79061fa9818\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -459,9 +459,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:58 GMT + - Wed, 22 Jun 2022 11:38:47 GMT etag: - - W/"6e5072c3-52ca-49e3-a0d2-2fef476b443b" + - W/"e19882ad-f5fc-456f-ac65-b79061fa9818" expires: - '-1' pragma: @@ -478,7 +478,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - fd14ee02-71e8-4304-8b22-6a0035c35c2f + - bb9e2b03-ed03-470e-9e29-51bc8e401efa status: code: 200 message: OK @@ -497,20 +497,20 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"6e5072c3-52ca-49e3-a0d2-2fef476b443b\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e19882ad-f5fc-456f-ac65-b79061fa9818\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"6e5072c3-52ca-49e3-a0d2-2fef476b443b\\\"\",\r\n + \ \"etag\": \"W/\\\"e19882ad-f5fc-456f-ac65-b79061fa9818\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -533,9 +533,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:01 GMT + - Wed, 22 Jun 2022 11:38:47 GMT etag: - - W/"6e5072c3-52ca-49e3-a0d2-2fef476b443b" + - W/"e19882ad-f5fc-456f-ac65-b79061fa9818" expires: - '-1' pragma: @@ -552,7 +552,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - a2d26224-4197-4363-abc1-fb0026893af9 + - 43378afd-4142-4077-b8bf-bbed02a6a305 status: code: 200 message: OK @@ -587,20 +587,20 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"02cae13b-6c37-48a5-a94b-2a29a55221d5\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"54b682f8-72f9-4522-9059-92f55f300756\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"02cae13b-6c37-48a5-a94b-2a29a55221d5\\\"\",\r\n + \ \"etag\": \"W/\\\"54b682f8-72f9-4522-9059-92f55f300756\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -615,7 +615,7 @@ interactions: \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n }\r\n \ ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"02cae13b-6c37-48a5-a94b-2a29a55221d5\\\"\",\r\n + \ \"etag\": \"W/\\\"54b682f8-72f9-4522-9059-92f55f300756\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -633,7 +633,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a63bbbba-e8d0-4318-b1bd-4f4ec0988885?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/024f154b-e9ec-44f2-a660-51b08ae4f8eb?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -641,7 +641,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:02 GMT + - Wed, 22 Jun 2022 11:38:48 GMT expires: - '-1' pragma: @@ -658,9 +658,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 18a496b6-53e1-4ac7-932d-ba887a4e8f06 + - 5b0943c0-45c0-4bcf-9aea-a52af843dcf8 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1187' status: code: 200 message: OK @@ -679,9 +679,9 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a63bbbba-e8d0-4318-b1bd-4f4ec0988885?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/024f154b-e9ec-44f2-a660-51b08ae4f8eb?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -693,7 +693,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:13 GMT + - Wed, 22 Jun 2022 11:38:58 GMT expires: - '-1' pragma: @@ -710,7 +710,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 92284560-52ad-4849-aecb-4e1b7ae85e99 + - b9666b1a-2fe0-45ad-9f32-9b9008d09e22 status: code: 200 message: OK @@ -729,20 +729,20 @@ interactions: - -g -n -c --priority --action -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"11e7d303-8d99-4264-b5f8-344140d875f5\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"2544a730-99cd-43da-9ae1-5c0b0db67ae4\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"11e7d303-8d99-4264-b5f8-344140d875f5\\\"\",\r\n + \ \"etag\": \"W/\\\"2544a730-99cd-43da-9ae1-5c0b0db67ae4\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -757,7 +757,7 @@ interactions: \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n }\r\n \ ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"11e7d303-8d99-4264-b5f8-344140d875f5\\\"\",\r\n + \ \"etag\": \"W/\\\"2544a730-99cd-43da-9ae1-5c0b0db67ae4\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -779,9 +779,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:14 GMT + - Wed, 22 Jun 2022 11:38:58 GMT etag: - - W/"11e7d303-8d99-4264-b5f8-344140d875f5" + - W/"2544a730-99cd-43da-9ae1-5c0b0db67ae4" expires: - '-1' pragma: @@ -798,7 +798,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 1e481129-6332-45d4-a89f-5a4da28d2fa8 + - 0304f110-85e6-4023-ab3a-50015fe591dc status: code: 200 message: OK @@ -818,7 +818,7 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: @@ -828,17 +828,17 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/6092d908-acc6-45f0-b1e3-b122e41d29ed?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a122ebff-dc32-4fff-8691-743a457550fd?api-version=2021-08-01 cache-control: - no-cache content-length: - '0' date: - - Wed, 11 May 2022 20:00:16 GMT + - Wed, 22 Jun 2022 11:39:00 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/6092d908-acc6-45f0-b1e3-b122e41d29ed?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/a122ebff-dc32-4fff-8691-743a457550fd?api-version=2021-08-01 pragma: - no-cache server: @@ -849,9 +849,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 643109bb-f7d1-4ed9-bc63-67f5a4d7448c + - 4cfece1b-a825-4913-8b84-4376d2bb5e06 x-ms-ratelimit-remaining-subscription-deletes: - - '14997' + - '14995' status: code: 202 message: Accepted @@ -869,9 +869,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/6092d908-acc6-45f0-b1e3-b122e41d29ed?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a122ebff-dc32-4fff-8691-743a457550fd?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -883,7 +883,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:27 GMT + - Wed, 22 Jun 2022 11:39:11 GMT expires: - '-1' pragma: @@ -900,8 +900,57 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6abccf25-5d1a-44b2-99cf-8bf88b3b6c3c + - 6cd1c95d-321a-4c5d-a2b3-a82bbbeaf62e status: code: 200 message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - network firewall delete + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/a122ebff-dc32-4fff-8691-743a457550fd?api-version=2021-08-01 + response: + body: + string: '' + headers: + azure-asyncnotification: + - Enabled + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a122ebff-dc32-4fff-8691-743a457550fd?api-version=2021-08-01 + cache-control: + - no-cache + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:39:11 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/a122ebff-dc32-4fff-8691-743a457550fd?api-version=2021-08-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-arm-service-request-id: + - 4cfece1b-a825-4913-8b84-4376d2bb5e06 + status: + code: 204 + message: No Content version: 1 diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules_with_ipgroups.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules_with_ipgroups.yaml index b8d127a8999..ecb820c6e33 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules_with_ipgroups.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_rules_with_ipgroups.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_rules_with_ipgroups000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001","name":"cli_test_azure_firewall_rules_with_ipgroups000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:56:31Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:56:31.4629777Z","CreationDate":"2022-05-11T19:56:31.4629509Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001","name":"cli_test_azure_firewall_rules_with_ipgroups000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:35:55Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '558' + - '376' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:34 GMT + - Wed, 22 Jun 2022 11:35:56 GMT expires: - '-1' pragma: @@ -59,8 +59,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 accept-language: - en-US method: PUT @@ -71,10 +71,10 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.0\",\r\n \"10.0.0.1\"\r\n \ ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/ipGroups/sourceipgroup\",\r\n \ \"name\": \"sourceipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"36bba638-5a0c-43bf-9a6e-4b4b23922941\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"62ac1807-1340-4913-8125-0f473b8fab49\",\r\n \"location\": \"westus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/66e94ee5-2028-4b9f-ba2a-379b823b29af?api-version=2019-09-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/f12311d2-8e89-432a-838e-ec10d345ee1c?api-version=2019-09-01 cache-control: - no-cache content-length: @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:43 GMT + - Wed, 22 Jun 2022 11:36:06 GMT expires: - '-1' pragma: @@ -94,7 +94,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1195' status: code: 201 message: Created @@ -112,10 +112,10 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/66e94ee5-2028-4b9f-ba2a-379b823b29af?api-version=2019-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/f12311d2-8e89-432a-838e-ec10d345ee1c?api-version=2019-09-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -127,7 +127,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:55 GMT + - Wed, 22 Jun 2022 11:36:16 GMT expires: - '-1' pragma: @@ -159,8 +159,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/ipGroups/sourceipgroup?api-version=2019-09-01 response: @@ -169,7 +169,7 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.0\",\r\n \"10.0.0.1\"\r\n \ ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/ipGroups/sourceipgroup\",\r\n \ \"name\": \"sourceipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"36bba638-5a0c-43bf-9a6e-4b4b23922941\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"62ac1807-1340-4913-8125-0f473b8fab49\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -178,9 +178,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:58 GMT + - Wed, 22 Jun 2022 11:36:16 GMT etag: - - '"36bba638-5a0c-43bf-9a6e-4b4b23922941"' + - '"62ac1807-1340-4913-8125-0f473b8fab49"' expires: - '-1' pragma: @@ -212,21 +212,21 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_rules_with_ipgroups000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001","name":"cli_test_azure_firewall_rules_with_ipgroups000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:56:31Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:56:31.4629777Z","CreationDate":"2022-05-11T19:56:31.4629509Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001","name":"cli_test_azure_firewall_rules_with_ipgroups000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:35:55Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '558' + - '376' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:58 GMT + - Wed, 22 Jun 2022 11:36:17 GMT expires: - '-1' pragma: @@ -258,8 +258,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 accept-language: - en-US method: PUT @@ -270,10 +270,10 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.2\",\r\n \"10.0.0.3\"\r\n \ ],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/ipGroups/destinationipgroup\",\r\n \ \"name\": \"destinationipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"5017f981-a6f9-4498-8936-88149233b1c7\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"c4c044dc-c63a-4143-a1ae-e2d5dde69bdd\",\r\n \"location\": \"westus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/98f04c21-817f-42d0-ad2b-4e2532cfce84?api-version=2019-09-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/52159aa8-c26f-4e3a-9c4d-43396a6e44e5?api-version=2019-09-01 cache-control: - no-cache content-length: @@ -281,7 +281,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:06 GMT + - Wed, 22 Jun 2022 11:36:25 GMT expires: - '-1' pragma: @@ -293,7 +293,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1194' status: code: 201 message: Created @@ -311,10 +311,10 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/98f04c21-817f-42d0-ad2b-4e2532cfce84?api-version=2019-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/nfvOperations/52159aa8-c26f-4e3a-9c4d-43396a6e44e5?api-version=2019-09-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -326,7 +326,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:17 GMT + - Wed, 22 Jun 2022 11:36:36 GMT expires: - '-1' pragma: @@ -358,8 +358,8 @@ interactions: ParameterSetName: - -n -g --ip-addresses User-Agent: - - python/3.10.4 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-network/7.0.0 Azure-SDK-For-Python AZURECLI/2.35.0 + - python/3.8.9 (Windows-10-10.0.22000-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-network/7.0.0 + Azure-SDK-For-Python AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/ipGroups/destinationipgroup?api-version=2019-09-01 response: @@ -368,7 +368,7 @@ interactions: [],\r\n \"ipAddresses\": [\r\n \"10.0.0.2\",\r\n \"10.0.0.3\"\r\n \ ],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/ipGroups/destinationipgroup\",\r\n \ \"name\": \"destinationipgroup\",\r\n \"type\": \"Microsoft.Network/IpGroups\",\r\n - \ \"etag\": \"5017f981-a6f9-4498-8936-88149233b1c7\",\r\n \"location\": \"westus\"\r\n}" + \ \"etag\": \"c4c044dc-c63a-4143-a1ae-e2d5dde69bdd\",\r\n \"location\": \"westus\"\r\n}" headers: cache-control: - no-cache @@ -377,9 +377,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:19 GMT + - Wed, 22 Jun 2022 11:36:37 GMT etag: - - '"5017f981-a6f9-4498-8936-88149233b1c7"' + - '"c4c044dc-c63a-4143-a1ae-e2d5dde69bdd"' expires: - '-1' pragma: @@ -411,21 +411,21 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_rules_with_ipgroups000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001","name":"cli_test_azure_firewall_rules_with_ipgroups000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:56:31Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:56:31.4629777Z","CreationDate":"2022-05-11T19:56:31.4629509Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001","name":"cli_test_azure_firewall_rules_with_ipgroups000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:35:55Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '558' + - '376' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:20 GMT + - Wed, 22 Jun 2022 11:36:37 GMT expires: - '-1' pragma: @@ -457,13 +457,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"ca65bb90-dce0-42a6-ac55-dc09b5db39bb\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"d29b72d5-2c00-4e40-b0dd-a6e10bbb0fe1\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -474,7 +474,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1bb29212-ca56-4c8e-964f-f15fe5895f68?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/4956f1ea-21b2-4aa0-b360-b9a1720b4be9?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -482,7 +482,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:30 GMT + - Wed, 22 Jun 2022 11:36:43 GMT expires: - '-1' pragma: @@ -495,9 +495,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - a2613c1e-a58f-4c04-9a94-f6f701e24bd8 + - 0d7dfcb5-2278-43fb-ad87-76d124ea7a87 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 201 message: Created @@ -515,9 +515,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1bb29212-ca56-4c8e-964f-f15fe5895f68?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/4956f1ea-21b2-4aa0-b360-b9a1720b4be9?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -529,7 +529,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:40 GMT + - Wed, 22 Jun 2022 11:36:54 GMT expires: - '-1' pragma: @@ -546,7 +546,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 72f0707c-2173-46b2-83e6-d733dcacf69c + - 16f49d93-f09a-497b-b9a2-610f8dababff status: code: 200 message: OK @@ -564,13 +564,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"db25eed1-49ba-4a35-b78d-a704f0e6865c\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"fb410c4c-1979-4b6d-954c-3cb676de5142\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -585,9 +585,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:41 GMT + - Wed, 22 Jun 2022 11:36:55 GMT etag: - - W/"db25eed1-49ba-4a35-b78d-a704f0e6865c" + - W/"fb410c4c-1979-4b6d-954c-3cb676de5142" expires: - '-1' pragma: @@ -604,7 +604,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - d804cab6-288c-41e4-a43a-5fc256f899f7 + - edfbc474-57fe-42b1-a553-e03dc6dc584d status: code: 200 message: OK @@ -623,13 +623,13 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"db25eed1-49ba-4a35-b78d-a704f0e6865c\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"fb410c4c-1979-4b6d-954c-3cb676de5142\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -644,9 +644,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:42 GMT + - Wed, 22 Jun 2022 11:36:56 GMT etag: - - W/"db25eed1-49ba-4a35-b78d-a704f0e6865c" + - W/"fb410c4c-1979-4b6d-954c-3cb676de5142" expires: - '-1' pragma: @@ -663,7 +663,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - c2431def-1526-4313-a6ce-6bb0372770b1 + - 321d22a9-c831-4d9b-aafe-279b69035add status: code: 200 message: OK @@ -693,20 +693,20 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"0490fbae-138c-4821-bf46-19b47d26dec3\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"c8496ef3-828d-4d1a-a109-9c9bff052e24\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"0490fbae-138c-4821-bf46-19b47d26dec3\\\"\",\r\n + \ \"etag\": \"W/\\\"c8496ef3-828d-4d1a-a109-9c9bff052e24\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -724,7 +724,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/00e79441-feed-4378-b914-43bb3fa79ee8?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/32e556a3-25b1-4faf-b344-87ccf54986fb?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -732,7 +732,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:44 GMT + - Wed, 22 Jun 2022 11:36:58 GMT expires: - '-1' pragma: @@ -749,9 +749,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 9bd487b9-1765-4669-84e2-4bf07896d2f3 + - 190ad0b2-15ce-4787-bc17-5075a4c1496c x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1193' status: code: 200 message: OK @@ -770,9 +770,9 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/00e79441-feed-4378-b914-43bb3fa79ee8?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/32e556a3-25b1-4faf-b344-87ccf54986fb?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -784,7 +784,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:54 GMT + - Wed, 22 Jun 2022 11:37:09 GMT expires: - '-1' pragma: @@ -801,7 +801,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 7f3bd54c-e6fb-4dcf-a155-c5e8f43a4035 + - 6446c046-d615-483c-aa2c-84a6a9a1b700 status: code: 200 message: OK @@ -820,20 +820,20 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"2e3f0a38-d994-486a-a733-ca04be653e00\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"4cef780e-8fbe-4c67-8248-8f93a6f854ec\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"2e3f0a38-d994-486a-a733-ca04be653e00\\\"\",\r\n + \ \"etag\": \"W/\\\"4cef780e-8fbe-4c67-8248-8f93a6f854ec\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -855,9 +855,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:55 GMT + - Wed, 22 Jun 2022 11:37:09 GMT etag: - - W/"2e3f0a38-d994-486a-a733-ca04be653e00" + - W/"4cef780e-8fbe-4c67-8248-8f93a6f854ec" expires: - '-1' pragma: @@ -874,7 +874,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ac598060-de8a-4ed0-8994-5f56a07c70d6 + - d141ba61-1a97-4fcb-9f32-3699b807f39c status: code: 200 message: OK @@ -892,20 +892,20 @@ interactions: ParameterSetName: - -g -n -c -f --source-addresses --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"2e3f0a38-d994-486a-a733-ca04be653e00\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"4cef780e-8fbe-4c67-8248-8f93a6f854ec\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"2e3f0a38-d994-486a-a733-ca04be653e00\\\"\",\r\n + \ \"etag\": \"W/\\\"4cef780e-8fbe-4c67-8248-8f93a6f854ec\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -927,9 +927,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:58 GMT + - Wed, 22 Jun 2022 11:37:11 GMT etag: - - W/"2e3f0a38-d994-486a-a733-ca04be653e00" + - W/"4cef780e-8fbe-4c67-8248-8f93a6f854ec" expires: - '-1' pragma: @@ -946,7 +946,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - a0081a94-bb28-47d3-90b1-687d5a24c9a8 + - 94b7b6d5-f1ad-4c7c-8100-10803ab0c1cc status: code: 200 message: OK @@ -979,20 +979,20 @@ interactions: ParameterSetName: - -g -n -c -f --source-addresses --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"4d4e18c8-7b7d-4fbc-be52-023d259b87c8\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"ed131193-0766-47a4-92c6-efc8e0708003\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"4d4e18c8-7b7d-4fbc-be52-023d259b87c8\\\"\",\r\n + \ \"etag\": \"W/\\\"ed131193-0766-47a4-92c6-efc8e0708003\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1018,7 +1018,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3337e50b-335a-4e63-a13f-47d761056106?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3041f5f8-c6d9-477d-8d80-03cd23563d3b?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1026,7 +1026,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:59 GMT + - Wed, 22 Jun 2022 11:37:12 GMT expires: - '-1' pragma: @@ -1043,9 +1043,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - fcdd1a89-6435-480b-8ff9-0cf6464c2ef9 + - 5f3132ba-d150-4b73-bafb-98bdf5bfc6b4 x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1194' status: code: 200 message: OK @@ -1063,9 +1063,9 @@ interactions: ParameterSetName: - -g -n -c -f --source-addresses --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3337e50b-335a-4e63-a13f-47d761056106?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3041f5f8-c6d9-477d-8d80-03cd23563d3b?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1077,7 +1077,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:09 GMT + - Wed, 22 Jun 2022 11:37:22 GMT expires: - '-1' pragma: @@ -1094,7 +1094,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 8dfad3f6-d4d0-42c0-a6f9-2d10c4a21079 + - 41a449d8-91f5-4977-9c05-8799abb241f9 status: code: 200 message: OK @@ -1112,20 +1112,20 @@ interactions: ParameterSetName: - -g -n -c -f --source-addresses --protocols --destination-ip-groups --destination-ports User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"23fb0a43-1697-4b05-b57c-5d9ad30b5ced\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"20d3a150-928a-4920-b310-d919a147308d\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"23fb0a43-1697-4b05-b57c-5d9ad30b5ced\\\"\",\r\n + \ \"etag\": \"W/\\\"20d3a150-928a-4920-b310-d919a147308d\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1155,9 +1155,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:10 GMT + - Wed, 22 Jun 2022 11:37:22 GMT etag: - - W/"23fb0a43-1697-4b05-b57c-5d9ad30b5ced" + - W/"20d3a150-928a-4920-b310-d919a147308d" expires: - '-1' pragma: @@ -1174,7 +1174,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - a4f0a934-1079-426d-b4fd-19cdf56a76ab + - 1a31876b-8999-40ec-9427-d1442adff4c6 status: code: 200 message: OK @@ -1193,20 +1193,20 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"23fb0a43-1697-4b05-b57c-5d9ad30b5ced\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"20d3a150-928a-4920-b310-d919a147308d\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"23fb0a43-1697-4b05-b57c-5d9ad30b5ced\\\"\",\r\n + \ \"etag\": \"W/\\\"20d3a150-928a-4920-b310-d919a147308d\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1236,9 +1236,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:14 GMT + - Wed, 22 Jun 2022 11:37:23 GMT etag: - - W/"23fb0a43-1697-4b05-b57c-5d9ad30b5ced" + - W/"20d3a150-928a-4920-b310-d919a147308d" expires: - '-1' pragma: @@ -1255,7 +1255,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - b4ad9421-556a-45e1-ac35-05d26e26b5e5 + - e39edf50-b86a-4613-be00-0371e1732f16 status: code: 200 message: OK @@ -1294,20 +1294,20 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"7059333b-1408-4cd1-9c84-a827b6850248\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"92b86ffa-620a-4b16-a727-6504d4c0fcb3\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"7059333b-1408-4cd1-9c84-a827b6850248\\\"\",\r\n + \ \"etag\": \"W/\\\"92b86ffa-620a-4b16-a727-6504d4c0fcb3\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1329,7 +1329,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"7059333b-1408-4cd1-9c84-a827b6850248\\\"\",\r\n + \ \"etag\": \"W/\\\"92b86ffa-620a-4b16-a727-6504d4c0fcb3\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1347,7 +1347,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/9e5895d5-1228-4a65-a53e-ce20fae93f3c?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/20a99047-f54c-4967-b620-e42e850d11f1?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1355,7 +1355,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:15 GMT + - Wed, 22 Jun 2022 11:37:23 GMT expires: - '-1' pragma: @@ -1372,9 +1372,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 69e0e9ff-48c2-432d-be72-92f79d29b0ab + - 8db0471c-72cd-45bd-bfe0-606c8c62de3a x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1197' status: code: 200 message: OK @@ -1393,9 +1393,9 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/9e5895d5-1228-4a65-a53e-ce20fae93f3c?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/20a99047-f54c-4967-b620-e42e850d11f1?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1407,7 +1407,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:25 GMT + - Wed, 22 Jun 2022 11:37:34 GMT expires: - '-1' pragma: @@ -1424,7 +1424,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 0f6c2581-0b3b-46f0-ad4e-85a062a87e71 + - dd3a3d91-2345-48c3-b4e1-d14e81f31b43 status: code: 200 message: OK @@ -1443,20 +1443,20 @@ interactions: - -g -n -c --priority --action -f --source-ip-group --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"7fe80a8d-449d-4761-9709-4e8e1a11fdf4\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"acbe2bf2-c6ab-4a1e-956a-28cac9544f26\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"7fe80a8d-449d-4761-9709-4e8e1a11fdf4\\\"\",\r\n + \ \"etag\": \"W/\\\"acbe2bf2-c6ab-4a1e-956a-28cac9544f26\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1478,7 +1478,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"7fe80a8d-449d-4761-9709-4e8e1a11fdf4\\\"\",\r\n + \ \"etag\": \"W/\\\"acbe2bf2-c6ab-4a1e-956a-28cac9544f26\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1500,9 +1500,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:26 GMT + - Wed, 22 Jun 2022 11:37:35 GMT etag: - - W/"7fe80a8d-449d-4761-9709-4e8e1a11fdf4" + - W/"acbe2bf2-c6ab-4a1e-956a-28cac9544f26" expires: - '-1' pragma: @@ -1519,7 +1519,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 77139d91-cf38-4b04-8d11-96ca01be0976 + - 9a06eb50-9e37-4cfa-8d5a-918874c578ab status: code: 200 message: OK @@ -1538,20 +1538,20 @@ interactions: - -g -n -c -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"7fe80a8d-449d-4761-9709-4e8e1a11fdf4\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"acbe2bf2-c6ab-4a1e-956a-28cac9544f26\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"7fe80a8d-449d-4761-9709-4e8e1a11fdf4\\\"\",\r\n + \ \"etag\": \"W/\\\"acbe2bf2-c6ab-4a1e-956a-28cac9544f26\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1573,7 +1573,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"7fe80a8d-449d-4761-9709-4e8e1a11fdf4\\\"\",\r\n + \ \"etag\": \"W/\\\"acbe2bf2-c6ab-4a1e-956a-28cac9544f26\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1595,9 +1595,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:28 GMT + - Wed, 22 Jun 2022 11:37:36 GMT etag: - - W/"7fe80a8d-449d-4761-9709-4e8e1a11fdf4" + - W/"acbe2bf2-c6ab-4a1e-956a-28cac9544f26" expires: - '-1' pragma: @@ -1614,7 +1614,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6ec5ed4d-e167-4e79-a3cd-c962f011ec05 + - 747b9801-eb2e-4040-afbc-216e60be8a42 status: code: 200 message: OK @@ -1657,20 +1657,20 @@ interactions: - -g -n -c -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"e6006f96-b586-4d01-b567-ff73cb614ab8\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a4d0c7e4-9d66-4276-acd9-21d2ea699d06\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"e6006f96-b586-4d01-b567-ff73cb614ab8\\\"\",\r\n + \ \"etag\": \"W/\\\"a4d0c7e4-9d66-4276-acd9-21d2ea699d06\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1692,7 +1692,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"e6006f96-b586-4d01-b567-ff73cb614ab8\\\"\",\r\n + \ \"etag\": \"W/\\\"a4d0c7e4-9d66-4276-acd9-21d2ea699d06\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1719,7 +1719,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/144b0460-ff00-41f3-b904-cf073bc2d88c?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ac465500-a64f-4c1b-a746-4ece7a6448c9?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1727,7 +1727,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:29 GMT + - Wed, 22 Jun 2022 11:37:37 GMT expires: - '-1' pragma: @@ -1744,9 +1744,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 37eda496-b5f3-48fc-86da-e23ca279c266 + - 05b6efa1-f38a-45f1-a7c0-4e5b783a3ab7 x-ms-ratelimit-remaining-subscription-writes: - - '1195' + - '1194' status: code: 200 message: OK @@ -1765,9 +1765,9 @@ interactions: - -g -n -c -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/144b0460-ff00-41f3-b904-cf073bc2d88c?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ac465500-a64f-4c1b-a746-4ece7a6448c9?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1779,7 +1779,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:39 GMT + - Wed, 22 Jun 2022 11:37:47 GMT expires: - '-1' pragma: @@ -1796,7 +1796,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - e5ba2474-1cd6-48a9-bdb2-19ac170f6636 + - f9e44620-6c33-43fe-8f2b-eb981ce3a6b1 status: code: 200 message: OK @@ -1815,20 +1815,20 @@ interactions: - -g -n -c -f --source-addresses --protocols --translated-fqdn --destination-ports --destination-addresses --translated-port --source-ip-groups User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"ecda9e1f-eff9-46c3-b396-366b238eb6ae\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e0b11cb1-f601-4477-854d-fc42f0293fbf\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"ecda9e1f-eff9-46c3-b396-366b238eb6ae\\\"\",\r\n + \ \"etag\": \"W/\\\"e0b11cb1-f601-4477-854d-fc42f0293fbf\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1850,7 +1850,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"ecda9e1f-eff9-46c3-b396-366b238eb6ae\\\"\",\r\n + \ \"etag\": \"W/\\\"e0b11cb1-f601-4477-854d-fc42f0293fbf\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1881,9 +1881,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:40 GMT + - Wed, 22 Jun 2022 11:37:48 GMT etag: - - W/"ecda9e1f-eff9-46c3-b396-366b238eb6ae" + - W/"e0b11cb1-f601-4477-854d-fc42f0293fbf" expires: - '-1' pragma: @@ -1900,7 +1900,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - fde16f2c-1d59-45ef-a5b3-94b5290533ec + - edc1d2c4-80a7-4060-a6e3-9c36987bf40e status: code: 200 message: OK @@ -1918,20 +1918,20 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --priority --action --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"ecda9e1f-eff9-46c3-b396-366b238eb6ae\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e0b11cb1-f601-4477-854d-fc42f0293fbf\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"ecda9e1f-eff9-46c3-b396-366b238eb6ae\\\"\",\r\n + \ \"etag\": \"W/\\\"e0b11cb1-f601-4477-854d-fc42f0293fbf\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1953,7 +1953,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"ecda9e1f-eff9-46c3-b396-366b238eb6ae\\\"\",\r\n + \ \"etag\": \"W/\\\"e0b11cb1-f601-4477-854d-fc42f0293fbf\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -1984,9 +1984,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:42 GMT + - Wed, 22 Jun 2022 11:37:48 GMT etag: - - W/"ecda9e1f-eff9-46c3-b396-366b238eb6ae" + - W/"e0b11cb1-f601-4477-854d-fc42f0293fbf" expires: - '-1' pragma: @@ -2003,7 +2003,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 12863c28-229c-42bc-aabf-db8da73e48d9 + - 0c9ef4b9-f34a-4805-b4f7-fe9b4daa1ba2 status: code: 200 message: OK @@ -2049,20 +2049,20 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --priority --action --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"9ddce558-980b-496b-a30e-df6ed75343ea\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"b649b159-031c-45bd-b818-204a21f5c79c\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"9ddce558-980b-496b-a30e-df6ed75343ea\\\"\",\r\n + \ \"etag\": \"W/\\\"b649b159-031c-45bd-b818-204a21f5c79c\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2084,7 +2084,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [\r\n {\r\n \ \"name\": \"rc3\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/applicationRuleCollections/rc3\",\r\n - \ \"etag\": \"W/\\\"9ddce558-980b-496b-a30e-df6ed75343ea\\\"\",\r\n + \ \"etag\": \"W/\\\"b649b159-031c-45bd-b818-204a21f5c79c\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2100,7 +2100,7 @@ interactions: \"Microsoft.Network/azureFirewalls/applicationRuleCollections\"\r\n }\r\n \ ],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"9ddce558-980b-496b-a30e-df6ed75343ea\\\"\",\r\n + \ \"etag\": \"W/\\\"b649b159-031c-45bd-b818-204a21f5c79c\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2127,7 +2127,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/29635cc4-dc68-4695-95b6-bdd424f34f91?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/140d037a-c44b-47ae-a79b-a333537f1ee9?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -2135,7 +2135,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:43 GMT + - Wed, 22 Jun 2022 11:37:49 GMT expires: - '-1' pragma: @@ -2152,9 +2152,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 9b749387-6d98-4a84-8e55-11f9444f642d + - 6f2f625c-68f7-436d-a3ce-01a78da6d6de x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1191' status: code: 200 message: OK @@ -2172,9 +2172,9 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --priority --action --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/29635cc4-dc68-4695-95b6-bdd424f34f91?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/140d037a-c44b-47ae-a79b-a333537f1ee9?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -2186,7 +2186,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:54 GMT + - Wed, 22 Jun 2022 11:38:00 GMT expires: - '-1' pragma: @@ -2203,7 +2203,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 21d9836e-f926-4940-9316-03f0dd51842c + - 98247338-098b-4348-97d9-9f192f27f5a3 status: code: 200 message: OK @@ -2221,20 +2221,20 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --priority --action --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2256,7 +2256,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [\r\n {\r\n \ \"name\": \"rc3\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/applicationRuleCollections/rc3\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2272,7 +2272,7 @@ interactions: \"Microsoft.Network/azureFirewalls/applicationRuleCollections\"\r\n }\r\n \ ],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2303,9 +2303,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:56 GMT + - Wed, 22 Jun 2022 11:38:00 GMT etag: - - W/"27edea78-97c7-4466-8b75-93d6b57ad5d1" + - W/"b507f51c-2d65-47bf-9fda-7bd10b7c83c5" expires: - '-1' pragma: @@ -2322,7 +2322,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 86df7323-0cc1-45cd-bb73-7cf1ca5b20b1 + - 2d24e842-b39d-41bd-a047-23fd6c292808 status: code: 200 message: OK @@ -2340,20 +2340,20 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2375,7 +2375,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [\r\n {\r\n \ \"name\": \"rc3\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/applicationRuleCollections/rc3\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2391,7 +2391,7 @@ interactions: \"Microsoft.Network/azureFirewalls/applicationRuleCollections\"\r\n }\r\n \ ],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"27edea78-97c7-4466-8b75-93d6b57ad5d1\\\"\",\r\n + \ \"etag\": \"W/\\\"b507f51c-2d65-47bf-9fda-7bd10b7c83c5\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2422,9 +2422,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:00 GMT + - Wed, 22 Jun 2022 11:38:01 GMT etag: - - W/"27edea78-97c7-4466-8b75-93d6b57ad5d1" + - W/"b507f51c-2d65-47bf-9fda-7bd10b7c83c5" expires: - '-1' pragma: @@ -2441,7 +2441,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 12aa68f8-7eab-46ea-8d63-a702335835fc + - 4b9e84fe-6c57-43ac-90be-4708bb789ca9 status: code: 200 message: OK @@ -2490,20 +2490,20 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"3929a508-b9b3-4e52-8f18-fd4310a77020\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"6bc479dc-c6ca-4f62-895c-942f8f417bb7\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"3929a508-b9b3-4e52-8f18-fd4310a77020\\\"\",\r\n + \ \"etag\": \"W/\\\"6bc479dc-c6ca-4f62-895c-942f8f417bb7\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2525,7 +2525,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [\r\n {\r\n \ \"name\": \"rc3\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/applicationRuleCollections/rc3\",\r\n - \ \"etag\": \"W/\\\"3929a508-b9b3-4e52-8f18-fd4310a77020\\\"\",\r\n + \ \"etag\": \"W/\\\"6bc479dc-c6ca-4f62-895c-942f8f417bb7\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2550,7 +2550,7 @@ interactions: \"Microsoft.Network/azureFirewalls/applicationRuleCollections\"\r\n }\r\n \ ],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"3929a508-b9b3-4e52-8f18-fd4310a77020\\\"\",\r\n + \ \"etag\": \"W/\\\"6bc479dc-c6ca-4f62-895c-942f8f417bb7\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2577,7 +2577,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/8884e369-03dd-4966-a21a-47ba883c19cd?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3443f082-8057-4b4e-b224-3c3f194f1914?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -2585,7 +2585,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:01 GMT + - Wed, 22 Jun 2022 11:38:02 GMT expires: - '-1' pragma: @@ -2602,9 +2602,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 186b784d-93ae-40b1-907b-1d61feff0f59 + - e5499da0-4ebe-4f60-86a9-0875814197ba x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1195' status: code: 200 message: OK @@ -2622,9 +2622,9 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/8884e369-03dd-4966-a21a-47ba883c19cd?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3443f082-8057-4b4e-b224-3c3f194f1914?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -2636,7 +2636,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:11 GMT + - Wed, 22 Jun 2022 11:38:13 GMT expires: - '-1' pragma: @@ -2653,7 +2653,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 4c9cba98-c746-451c-b893-c1fd79fab4f6 + - 2d7036ed-9db9-4043-be5f-c9038a11e155 status: code: 200 message: OK @@ -2671,20 +2671,20 @@ interactions: ParameterSetName: - -f -n --protocols -g -c --source-ip-groups --target-fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"e187f03a-6d4c-4f1b-9b72-15af370048ba\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"4ec1402a-d0c4-46a5-b8ab-419748d70f5e\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": \"Alert\",\r\n \"additionalProperties\": {},\r\n \"ipConfigurations\": [],\r\n \"networkRuleCollections\": [\r\n {\r\n \"name\": \"rc1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/networkRuleCollections/rc1\",\r\n - \ \"etag\": \"W/\\\"e187f03a-6d4c-4f1b-9b72-15af370048ba\\\"\",\r\n + \ \"etag\": \"W/\\\"4ec1402a-d0c4-46a5-b8ab-419748d70f5e\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2706,7 +2706,7 @@ interactions: \ },\r\n \"type\": \"Microsoft.Network/azureFirewalls/networkRuleCollections\"\r\n \ }\r\n ],\r\n \"applicationRuleCollections\": [\r\n {\r\n \ \"name\": \"rc3\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/applicationRuleCollections/rc3\",\r\n - \ \"etag\": \"W/\\\"e187f03a-6d4c-4f1b-9b72-15af370048ba\\\"\",\r\n + \ \"etag\": \"W/\\\"4ec1402a-d0c4-46a5-b8ab-419748d70f5e\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10000,\r\n \"action\": {\r\n \"type\": \"Allow\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2731,7 +2731,7 @@ interactions: \"Microsoft.Network/azureFirewalls/applicationRuleCollections\"\r\n }\r\n \ ],\r\n \"natRuleCollections\": [\r\n {\r\n \"name\": \"rc2\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1/natRuleCollections/rc2\",\r\n - \ \"etag\": \"W/\\\"e187f03a-6d4c-4f1b-9b72-15af370048ba\\\"\",\r\n + \ \"etag\": \"W/\\\"4ec1402a-d0c4-46a5-b8ab-419748d70f5e\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"priority\": 10001,\r\n \"action\": {\r\n \"type\": \"Dnat\"\r\n },\r\n \"rules\": [\r\n {\r\n \"name\": @@ -2762,9 +2762,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:11 GMT + - Wed, 22 Jun 2022 11:38:13 GMT etag: - - W/"e187f03a-6d4c-4f1b-9b72-15af370048ba" + - W/"4ec1402a-d0c4-46a5-b8ab-419748d70f5e" expires: - '-1' pragma: @@ -2781,7 +2781,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 1fb9a0f6-aee6-475b-a37b-3eb533d7ebf8 + - c1017334-f81e-47f2-9442-5990fb9dd263 status: code: 200 message: OK @@ -2801,7 +2801,7 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_rules_with_ipgroups000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: @@ -2811,17 +2811,17 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/302f3390-4e45-4c01-874e-2a5c79d770a1?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/825e0476-8ee2-47c9-a4a5-d961e26c728d?api-version=2021-08-01 cache-control: - no-cache content-length: - '0' date: - - Wed, 11 May 2022 19:59:12 GMT + - Wed, 22 Jun 2022 11:38:14 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/302f3390-4e45-4c01-874e-2a5c79d770a1?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/825e0476-8ee2-47c9-a4a5-d961e26c728d?api-version=2021-08-01 pragma: - no-cache server: @@ -2832,7 +2832,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 50d8cb77-ff34-4561-a71e-87c2feea4d8f + - 7f74a12c-dab8-4df6-9f4f-f08faa642d05 x-ms-ratelimit-remaining-subscription-deletes: - '14999' status: @@ -2852,9 +2852,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/302f3390-4e45-4c01-874e-2a5c79d770a1?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/825e0476-8ee2-47c9-a4a5-d961e26c728d?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -2866,7 +2866,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:23 GMT + - Wed, 22 Jun 2022 11:38:25 GMT expires: - '-1' pragma: @@ -2883,8 +2883,57 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - df994d10-e622-4ae1-acdb-98ed33c22d08 + - 1dfdd6e8-70ca-4d0f-9f7f-cec3a27c0fe1 status: code: 200 message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - network firewall delete + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/825e0476-8ee2-47c9-a4a5-d961e26c728d?api-version=2021-08-01 + response: + body: + string: '' + headers: + azure-asyncnotification: + - Enabled + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/825e0476-8ee2-47c9-a4a5-d961e26c728d?api-version=2021-08-01 + cache-control: + - no-cache + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:38:25 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/825e0476-8ee2-47c9-a4a5-d961e26c728d?api-version=2021-08-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-arm-service-request-id: + - 7f74a12c-dab8-4df6-9f4f-f08faa642d05 + status: + code: 204 + message: No Content version: 1 diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_threat_intel_allowlist.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_threat_intel_allowlist.yaml index 45cd90bc43b..a2ab23c205a 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_threat_intel_allowlist.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_threat_intel_allowlist.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_threat_intel_allowlist000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001","name":"cli_test_azure_firewall_threat_intel_allowlist000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:56:34Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:56:35.3006266Z","CreationDate":"2022-05-11T19:56:35.3005907Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001","name":"cli_test_azure_firewall_threat_intel_allowlist000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:38:31Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '564' + - '382' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:36 GMT + - Wed, 22 Jun 2022 11:38:33 GMT expires: - '-1' pragma: @@ -60,13 +60,13 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"8ec35489-889f-441f-b2d4-fa9ded35fe92\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"0c56ff38-74d6-4241-ab86-e0816941e81c\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -78,7 +78,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5d64d2f2-e7b2-4faf-a03c-4a9d34232920?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/8552d8b6-89cf-4fe6-99d1-6f9b208e4db6?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -86,7 +86,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:44 GMT + - Wed, 22 Jun 2022 11:38:40 GMT expires: - '-1' pragma: @@ -99,9 +99,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - dd04839c-97d3-43a9-9901-244381ac8150 + - 1aec69c4-d5f9-4bef-a8b6-3602ff874a12 x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1192' status: code: 201 message: Created @@ -119,9 +119,9 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5d64d2f2-e7b2-4faf-a03c-4a9d34232920?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/8552d8b6-89cf-4fe6-99d1-6f9b208e4db6?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -133,7 +133,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:54 GMT + - Wed, 22 Jun 2022 11:38:50 GMT expires: - '-1' pragma: @@ -150,7 +150,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - f41762fb-2f3a-4508-a9e6-96851594d417 + - 9de24c66-42d6-4ed8-89a7-467988b3c87e status: code: 200 message: OK @@ -168,13 +168,13 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"9a4781bd-7a76-4d31-b3cd-02348c3f3079\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"d5d6a5e1-1ce4-4d42-97b9-f48ace48fd64\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -190,9 +190,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:54 GMT + - Wed, 22 Jun 2022 11:38:50 GMT etag: - - W/"9a4781bd-7a76-4d31-b3cd-02348c3f3079" + - W/"d5d6a5e1-1ce4-4d42-97b9-f48ace48fd64" expires: - '-1' pragma: @@ -209,7 +209,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 88130c6d-a9ef-499e-aa90-b7c88be6e868 + - 969d98e9-9470-4867-bd08-d76d225cf26a status: code: 200 message: OK @@ -227,13 +227,13 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"9a4781bd-7a76-4d31-b3cd-02348c3f3079\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"d5d6a5e1-1ce4-4d42-97b9-f48ace48fd64\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -249,9 +249,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:57 GMT + - Wed, 22 Jun 2022 11:38:52 GMT etag: - - W/"9a4781bd-7a76-4d31-b3cd-02348c3f3079" + - W/"d5d6a5e1-1ce4-4d42-97b9-f48ace48fd64" expires: - '-1' pragma: @@ -268,7 +268,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - b2a15d99-5d48-4108-92fa-eddf126b204c + - 1657ab37-b3e0-40a4-8ee9-7f6b446ac9b2 status: code: 200 message: OK @@ -296,13 +296,13 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"c3ede493-203f-4dea-8f3e-b4ad280d6b75\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"2bc64c4a-b02e-4589-a3f8-b1b85a684710\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -316,7 +316,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5bcd891e-ba5e-419e-b3ac-1815b4502028?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/e39d4e93-d041-4c02-9f89-a0b90b2394c1?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -324,7 +324,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:56:58 GMT + - Wed, 22 Jun 2022 11:38:52 GMT expires: - '-1' pragma: @@ -341,9 +341,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 9ee7350f-a60d-4b24-9a6b-dc058c1fd8bc + - b7d322fa-84ea-4834-ac89-99fe015f44a6 x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1195' status: code: 200 message: OK @@ -361,9 +361,9 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5bcd891e-ba5e-419e-b3ac-1815b4502028?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/e39d4e93-d041-4c02-9f89-a0b90b2394c1?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -375,7 +375,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:08 GMT + - Wed, 22 Jun 2022 11:39:03 GMT expires: - '-1' pragma: @@ -392,7 +392,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 31244b53-ef85-44c8-aff7-4e479dba4ab9 + - 0f60448d-a2e2-47b6-b38b-21b19a52c23d status: code: 200 message: OK @@ -410,13 +410,13 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"075afe2e-ca0f-4b00-b21e-ed806f55e5d5\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e391ca12-4032-41eb-aff2-2eee47f629dc\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -434,9 +434,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:09 GMT + - Wed, 22 Jun 2022 11:39:03 GMT etag: - - W/"075afe2e-ca0f-4b00-b21e-ed806f55e5d5" + - W/"e391ca12-4032-41eb-aff2-2eee47f629dc" expires: - '-1' pragma: @@ -453,7 +453,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 93ab107b-adae-470a-be87-b7973ce7a4da + - 53fa6022-db11-4047-b965-f27d1486240b status: code: 200 message: OK @@ -471,13 +471,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"075afe2e-ca0f-4b00-b21e-ed806f55e5d5\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e391ca12-4032-41eb-aff2-2eee47f629dc\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -495,9 +495,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:11 GMT + - Wed, 22 Jun 2022 11:39:03 GMT etag: - - W/"075afe2e-ca0f-4b00-b21e-ed806f55e5d5" + - W/"e391ca12-4032-41eb-aff2-2eee47f629dc" expires: - '-1' pragma: @@ -514,7 +514,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ce90a513-4213-45ae-bdd5-280b6c0e9cca + - f12a3821-40f1-4179-ba31-de52939a6b60 status: code: 200 message: OK @@ -532,13 +532,13 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"075afe2e-ca0f-4b00-b21e-ed806f55e5d5\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e391ca12-4032-41eb-aff2-2eee47f629dc\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -556,9 +556,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:15 GMT + - Wed, 22 Jun 2022 11:39:04 GMT etag: - - W/"075afe2e-ca0f-4b00-b21e-ed806f55e5d5" + - W/"e391ca12-4032-41eb-aff2-2eee47f629dc" expires: - '-1' pragma: @@ -575,7 +575,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 4d73520b-6dae-4ce6-8159-cf132aac1c7e + - 2e7db6e1-2a43-419d-a165-565bb736d688 status: code: 200 message: OK @@ -603,13 +603,13 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"42abb242-ebc7-488a-8735-9789318f65de\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"021e1fbd-e7d8-4ba4-b0f8-9a1cca90f5f0\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -623,7 +623,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/837e6c11-78fa-41f5-acd3-e6fff6445d9a?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/d76a8056-f10c-474d-a8ba-3932e549ee9e?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -631,7 +631,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:16 GMT + - Wed, 22 Jun 2022 11:39:05 GMT expires: - '-1' pragma: @@ -648,9 +648,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - caff43c2-f1bc-4880-9e56-d19e89f6f264 + - eb133eb5-6e62-46e3-ba25-4faad52e9ba2 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 200 message: OK @@ -668,9 +668,9 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/837e6c11-78fa-41f5-acd3-e6fff6445d9a?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/d76a8056-f10c-474d-a8ba-3932e549ee9e?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -682,7 +682,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:26 GMT + - Wed, 22 Jun 2022 11:39:15 GMT expires: - '-1' pragma: @@ -699,7 +699,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6fceb419-9bc5-429b-be64-ff9007745073 + - bd6742de-0e61-4a4b-90df-8451e50df279 status: code: 200 message: OK @@ -717,13 +717,13 @@ interactions: ParameterSetName: - -g -n --ip-addresses --fqdns User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"605d957f-16bf-4999-84a8-e9951425b48f\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"3ea22596-e38b-46bb-9ab6-fdb6c9cbcbf1\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -741,9 +741,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:29 GMT + - Wed, 22 Jun 2022 11:39:16 GMT etag: - - W/"605d957f-16bf-4999-84a8-e9951425b48f" + - W/"3ea22596-e38b-46bb-9ab6-fdb6c9cbcbf1" expires: - '-1' pragma: @@ -760,7 +760,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 096b68bb-856e-4ed0-bac0-c9e3158542a0 + - dcb1f169-c887-4e75-af3a-6c5aecbf8c10 status: code: 200 message: OK @@ -778,13 +778,13 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"605d957f-16bf-4999-84a8-e9951425b48f\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"3ea22596-e38b-46bb-9ab6-fdb6c9cbcbf1\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -802,9 +802,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:30 GMT + - Wed, 22 Jun 2022 11:39:16 GMT etag: - - W/"605d957f-16bf-4999-84a8-e9951425b48f" + - W/"3ea22596-e38b-46bb-9ab6-fdb6c9cbcbf1" expires: - '-1' pragma: @@ -821,7 +821,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - b90c1437-857c-4d94-a96b-b878b4b78114 + - 0380d954-218b-4e08-85f7-e44726859cc8 status: code: 200 message: OK @@ -849,13 +849,13 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"07552fea-6e78-4912-babf-cc6908b4d0dd\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"bee547a9-cbdd-403b-b396-6c2b141d373b\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -869,7 +869,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ff96f88a-4923-4a5b-9037-58fbc70f53e6?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/9b20be9a-f7c2-45cd-9e6e-08e2bbcb3725?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -877,7 +877,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:31 GMT + - Wed, 22 Jun 2022 11:39:18 GMT expires: - '-1' pragma: @@ -894,9 +894,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 06df948d-79cb-420a-930c-4e096718a782 + - d4139e66-d94d-4e40-a355-d490caa6ad7a x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1191' status: code: 200 message: OK @@ -914,9 +914,9 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ff96f88a-4923-4a5b-9037-58fbc70f53e6?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/9b20be9a-f7c2-45cd-9e6e-08e2bbcb3725?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -928,7 +928,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:42 GMT + - Wed, 22 Jun 2022 11:39:28 GMT expires: - '-1' pragma: @@ -945,7 +945,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - b6c028ff-e8a2-4d81-be97-c9bc6bdcaec6 + - 74d25f6e-53e7-444d-8dbd-fe57c3c23d76 status: code: 200 message: OK @@ -963,13 +963,13 @@ interactions: ParameterSetName: - -g -n --private-ranges User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"a739e766-d374-4290-9e0b-9f2deadbf60d\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e6cf9729-1f3b-433e-9d16-5d6ad37297a0\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -987,9 +987,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:44 GMT + - Wed, 22 Jun 2022 11:39:28 GMT etag: - - W/"a739e766-d374-4290-9e0b-9f2deadbf60d" + - W/"e6cf9729-1f3b-433e-9d16-5d6ad37297a0" expires: - '-1' pragma: @@ -1006,7 +1006,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 7c079b5c-7c4f-460f-9bb3-3843214c744a + - ccbc9e24-ef00-4cba-82c4-e8d3cc4232d7 status: code: 200 message: OK @@ -1024,13 +1024,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"a739e766-d374-4290-9e0b-9f2deadbf60d\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"e6cf9729-1f3b-433e-9d16-5d6ad37297a0\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1048,9 +1048,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:47 GMT + - Wed, 22 Jun 2022 11:39:29 GMT etag: - - W/"a739e766-d374-4290-9e0b-9f2deadbf60d" + - W/"e6cf9729-1f3b-433e-9d16-5d6ad37297a0" expires: - '-1' pragma: @@ -1067,7 +1067,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - bc76ddae-19d3-46c8-b0e1-bcdb5195b6cb + - 4f31bda8-5fae-4f46-a829-9c2aefbd7c40 status: code: 200 message: OK @@ -1093,13 +1093,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"a0b22f93-dbc8-4fe4-8c89-264d12ce1913\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"70b57871-4b59-4eae-b12d-1cbf81b88ee4\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1111,7 +1111,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/6f3ed1ca-bb5c-4f4f-9d17-570eea9c850b?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/08a9ac22-b761-46b5-a8da-d31797d0e9c4?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -1119,7 +1119,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:48 GMT + - Wed, 22 Jun 2022 11:39:30 GMT expires: - '-1' pragma: @@ -1136,9 +1136,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - b20d2e74-0cff-48f2-a915-42005e927ff5 + - 6bcb9df7-23e8-4c93-89bb-3dbacb40d8c5 x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1193' status: code: 200 message: OK @@ -1156,9 +1156,9 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/6f3ed1ca-bb5c-4f4f-9d17-570eea9c850b?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/08a9ac22-b761-46b5-a8da-d31797d0e9c4?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -1170,7 +1170,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:58 GMT + - Wed, 22 Jun 2022 11:39:40 GMT expires: - '-1' pragma: @@ -1187,7 +1187,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - da67a1e2-a934-4d31-9960-dfcf241613d0 + - e350db60-ed15-4955-a51f-0e789cb5b2a7 status: code: 200 message: OK @@ -1205,13 +1205,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_threat_intel_allowlist000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"bbb4a207-5fbf-422e-a0b1-ac2277545ee5\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a6a39bef-db59-4ebd-9f7d-61e23738b382\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -1227,9 +1227,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:57:59 GMT + - Wed, 22 Jun 2022 11:39:40 GMT etag: - - W/"bbb4a207-5fbf-422e-a0b1-ac2277545ee5" + - W/"a6a39bef-db59-4ebd-9f7d-61e23738b382" expires: - '-1' pragma: @@ -1246,7 +1246,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - db21eabf-bd1e-4c27-87fe-d02a11b27226 + - 52d75a15-8625-4913-b434-d300fea7427c status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_tier.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_tier.yaml index f862aacbf30..6f926cfde43 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_tier.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_tier.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n --sku --tier User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_tier000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_tier000001","name":"test_azure_firewall_tier000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2euap","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T20:00:02Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T20:00:03.2798994Z","CreationDate":"2022-05-11T20:00:03.2798526Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_tier000001","name":"test_azure_firewall_tier000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2euap","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:36:54Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '525' + - '343' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:05 GMT + - Wed, 22 Jun 2022 11:36:56 GMT expires: - '-1' pragma: @@ -60,13 +60,65 @@ interactions: ParameterSetName: - -g -n --sku --tier User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_tier000001/providers/Microsoft.Network/azureFirewalls/af?api-version=2021-08-01 + response: + body: + string: '{"error":{"code":"InternalServerError","message":"Encountered internal + server error. Diagnostic information: timestamp ''20220622T113711Z'', subscription + id ''0b1f6471-1bf0-4dda-aec3-cb9272f09590'', tracking id ''d17b8c1b-941f-4b86-8877-bc6e538d6445'', + request correlation id ''d17b8c1b-941f-4b86-8877-bc6e538d6445''."}}' + headers: + cache-control: + - no-cache + connection: + - close + content-length: + - '312' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:37:10 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-failure-cause: + - gateway + status: + code: 500 + message: Internal Server Error +- request: + body: '{"location": "eastus2euap", "properties": {"sku": {"name": "AZFW_VNet", + "tier": "Premium"}, "additionalProperties": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - network firewall create + Connection: + - keep-alive + Content-Length: + - '120' + Content-Type: + - application/json + ParameterSetName: + - -g -n --sku --tier + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_tier000001/providers/Microsoft.Network/azureFirewalls/af?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_tier000001/providers/Microsoft.Network/azureFirewalls/af\",\r\n - \ \"etag\": \"W/\\\"5e4c3161-b82d-4d02-a087-d31aba6881fe\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"34b517b7-1723-4a92-9ec7-5abd4e81e6a1\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"eastus2euap\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Premium\"\r\n },\r\n @@ -77,7 +129,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/operations/559d3562-3735-4e85-bbbe-62c1dce1eb2d?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/operations/b789fb80-c0cf-456d-bd8d-70745f7e301d?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -85,7 +137,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:14 GMT + - Wed, 22 Jun 2022 11:37:15 GMT expires: - '-1' pragma: @@ -98,9 +150,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 5646f430-64bf-4d57-a569-0ab4ba40188d + - 8e022668-7d9c-4c74-97c5-605c487da26c x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1192' status: code: 201 message: Created @@ -118,9 +170,9 @@ interactions: ParameterSetName: - -g -n --sku --tier User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/operations/559d3562-3735-4e85-bbbe-62c1dce1eb2d?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2euap/operations/b789fb80-c0cf-456d-bd8d-70745f7e301d?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -132,7 +184,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:24 GMT + - Wed, 22 Jun 2022 11:37:45 GMT expires: - '-1' pragma: @@ -149,7 +201,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - debabc75-dc0e-4c46-aeba-9f3b14e4971d + - 3696fcd4-9cd3-42eb-b4eb-bbe9a59c725f status: code: 200 message: OK @@ -167,13 +219,13 @@ interactions: ParameterSetName: - -g -n --sku --tier User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_tier000001/providers/Microsoft.Network/azureFirewalls/af?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_tier000001/providers/Microsoft.Network/azureFirewalls/af\",\r\n - \ \"etag\": \"W/\\\"b1c6e12c-92d7-487e-bddd-00e760d5f02e\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"ad082542-348c-46f8-8168-825fb8471fc8\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"eastus2euap\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Premium\"\r\n },\r\n @@ -188,9 +240,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 20:00:24 GMT + - Wed, 22 Jun 2022 11:37:46 GMT etag: - - W/"b1c6e12c-92d7-487e-bddd-00e760d5f02e" + - W/"ad082542-348c-46f8-8168-825fb8471fc8" expires: - '-1' pragma: @@ -207,7 +259,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - c5e32a8a-40fd-4672-a1f0-1092d2741299 + - 98baab8e-13ee-4294-8a24-99f819f5850a status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub.yaml index deda9e33378..d7611b06a0d 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_virtual_hub000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001","name":"cli_test_azure_firewall_virtual_hub000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001","name":"cli_test_azure_firewall_virtual_hub000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:37:05Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:14 GMT + - Wed, 22 Jun 2022 11:37:06 GMT expires: - '-1' pragma: @@ -59,13 +59,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan\",\r\n - \ \"etag\": \"W/\\\"48370901-eaae-420f-96b1-7d1e094d3c04\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"fe84752f-d121-47e6-92f2-8ca2878fa483\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"eastus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -74,7 +74,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/bc77a639-ffd0-4d11-b07b-988adc89211d?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/a0c503f3-93f2-42f8-a05b-2f0fe968a4f8?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:20 GMT + - Wed, 22 Jun 2022 11:37:13 GMT expires: - '-1' pragma: @@ -95,9 +95,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 3ab2980b-9c32-4e68-bc7e-d76e3d6dc59f + - 6c60e06b-dd97-40c1-b875-8e72b55b69f6 x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1193' status: code: 201 message: Created @@ -115,9 +115,9 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/bc77a639-ffd0-4d11-b07b-988adc89211d?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/a0c503f3-93f2-42f8-a05b-2f0fe968a4f8?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -129,7 +129,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:31 GMT + - Wed, 22 Jun 2022 11:37:23 GMT expires: - '-1' pragma: @@ -139,14 +139,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-arm-service-request-id: - - c99e1f80-de1e-48d4-a05d-79f8ffe26fa4 + - a3a7e111-7c34-4897-a8a1-ae2f7b5ff92f status: code: 200 message: OK @@ -164,13 +160,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan\",\r\n - \ \"etag\": \"W/\\\"cbec67d1-16cd-4ce5-9b55-d4802e8d7bb9\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"28dfef6f-869f-4d44-8a10-0b44e592934a\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"eastus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -183,9 +179,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:31 GMT + - Wed, 22 Jun 2022 11:37:24 GMT etag: - - W/"cbec67d1-16cd-4ce5-9b55-d4802e8d7bb9" + - W/"28dfef6f-869f-4d44-8a10-0b44e592934a" expires: - '-1' pragma: @@ -195,14 +191,10 @@ interactions: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 6190fd2a-f38f-4d7d-81db-4a735e8184c2 + - 678bc56e-6ac5-4d2e-bf81-ef93613a71f5 status: code: 200 message: OK @@ -220,12 +212,12 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_virtual_hub000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001","name":"cli_test_azure_firewall_virtual_hub000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001","name":"cli_test_azure_firewall_virtual_hub000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:37:05Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -234,15 +226,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:32 GMT + - Wed, 22 Jun 2022 11:37:25 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding x-content-type-options: - nosniff status: @@ -266,13 +256,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan2\",\r\n - \ \"etag\": \"W/\\\"059f0a58-3dd2-4e91-835b-d878272d0a14\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"5d993425-75e4-4e5f-9145-dedb72a8af33\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"eastus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -281,7 +271,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/8a13e04b-8fc0-4ee1-8378-cb2c882d1c64?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/f45246e5-8015-4adb-8510-ee239887fd13?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -289,7 +279,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:39 GMT + - Wed, 22 Jun 2022 11:37:31 GMT expires: - '-1' pragma: @@ -302,9 +292,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 5b9e78b0-6029-421e-b936-3acc86d12680 + - 6236b5f5-8465-49bb-8a75-ae9ed89e1c3e x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1191' status: code: 201 message: Created @@ -322,9 +312,9 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/8a13e04b-8fc0-4ee1-8378-cb2c882d1c64?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/f45246e5-8015-4adb-8510-ee239887fd13?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -336,7 +326,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:49 GMT + - Wed, 22 Jun 2022 11:37:41 GMT expires: - '-1' pragma: @@ -353,7 +343,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 11142c86-91e0-4549-9ee1-913b9248aba1 + - 75e39dad-4cb0-47fe-bb47-e18988ac1a09 status: code: 200 message: OK @@ -371,13 +361,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan2\",\r\n - \ \"etag\": \"W/\\\"98edc056-5294-4306-a047-23c4a767079b\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"c60821a6-42ba-4000-a2ed-fe34acb51064\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"eastus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -390,9 +380,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:49 GMT + - Wed, 22 Jun 2022 11:37:42 GMT etag: - - W/"98edc056-5294-4306-a047-23c4a767079b" + - W/"c60821a6-42ba-4000-a2ed-fe34acb51064" expires: - '-1' pragma: @@ -409,7 +399,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ec46da7c-c3fd-43b1-8a7b-ec65b351c5da + - 19f1c316-215b-4f01-8198-92d2877a2134 status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub_with_public_ips.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub_with_public_ips.yaml index 99217d457f3..70f07e87cc9 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub_with_public_ips.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_virtual_hub_with_public_ips.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_virtual_hub000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001","name":"cli_test_azure_firewall_virtual_hub000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:02:08Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001","name":"cli_test_azure_firewall_virtual_hub000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:37:54Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,15 +27,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:14 GMT + - Wed, 22 Jun 2022 11:37:55 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding x-content-type-options: - nosniff status: @@ -59,13 +57,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan1\",\r\n - \ \"etag\": \"W/\\\"05f12d70-c48e-429d-b7ba-e97e351c6c82\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"b032ab7f-9b61-4903-a474-e7194b8b0df1\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"eastus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -74,7 +72,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/0b74cbff-85df-497a-9f73-6aa54292c37e?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/5ccc8308-0352-448c-93bf-10f61fab25cd?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -82,7 +80,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:19 GMT + - Wed, 22 Jun 2022 11:38:00 GMT expires: - '-1' pragma: @@ -95,9 +93,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - bdf6b544-6afa-4d8b-8d6e-e07d87ad5886 + - f7afa1c5-254b-4e6c-85dd-85b8c1230d6f x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1190' status: code: 201 message: Created @@ -115,9 +113,9 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/0b74cbff-85df-497a-9f73-6aa54292c37e?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/5ccc8308-0352-448c-93bf-10f61fab25cd?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -129,7 +127,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:29 GMT + - Wed, 22 Jun 2022 11:38:10 GMT expires: - '-1' pragma: @@ -146,7 +144,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 99492ce0-6b4e-4fc9-a712-6e3cdae85386 + - 5bff5c5e-28f7-4f6d-8135-da2c266b2f56 status: code: 200 message: OK @@ -164,13 +162,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_virtual_hub000001/providers/Microsoft.Network/virtualWans/clitestvwan1\",\r\n - \ \"etag\": \"W/\\\"52761157-de96-4bd1-82bf-0f24a732f8ba\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"b77f052c-ac79-419c-aabc-3e79d7385003\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"eastus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -183,9 +181,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:02:29 GMT + - Wed, 22 Jun 2022 11:38:10 GMT etag: - - W/"52761157-de96-4bd1-82bf-0f24a732f8ba" + - W/"b77f052c-ac79-419c-aabc-3e79d7385003" expires: - '-1' pragma: @@ -202,7 +200,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - f265936b-a606-4d94-991d-67fc60ce49ef + - 6380502c-176b-467a-88c8-f15814421227 status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy.yaml index 5d5fdf5240b..16ada433ef1 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_with_firewall_policy000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001","name":"cli_test_azure_firewall_with_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:04:09Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001","name":"cli_test_azure_firewall_with_firewall_policy000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:37:50Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:13 GMT + - Wed, 22 Jun 2022 11:37:50 GMT expires: - '-1' pragma: @@ -59,13 +59,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualWans/clitestvwan?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualWans/clitestvwan\",\r\n - \ \"etag\": \"W/\\\"ece01ce1-d46b-40d1-9637-464e4b422137\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"81e775dc-01ce-45c8-be40-686af48219e7\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"westus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -74,7 +74,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/e35cab60-e3ed-4c05-a789-8d4c1d5baea5?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/7f84fea7-941b-4f38-bd2a-381ab8cd940b?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:20 GMT + - Wed, 22 Jun 2022 11:37:56 GMT expires: - '-1' pragma: @@ -95,9 +95,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 518ced19-094c-4091-947d-c616e3f8a1bd + - 614fe92b-559b-41e9-84a4-cadf6d33e57b x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1189' status: code: 201 message: Created @@ -115,9 +115,9 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/e35cab60-e3ed-4c05-a789-8d4c1d5baea5?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/7f84fea7-941b-4f38-bd2a-381ab8cd940b?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -129,7 +129,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:30 GMT + - Wed, 22 Jun 2022 11:38:06 GMT expires: - '-1' pragma: @@ -146,7 +146,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - dadc17b0-a2e4-4a84-9e67-8c0654b9d1ce + - fc19f5f1-2368-41b4-bcd7-8c98f80d9326 status: code: 200 message: OK @@ -164,13 +164,13 @@ interactions: ParameterSetName: - -n -g --type User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualWans/clitestvwan?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"clitestvwan\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualWans/clitestvwan\",\r\n - \ \"etag\": \"W/\\\"129387bb-94aa-4070-b833-f94118e8ceac\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"974fce8f-4d48-44dc-ad7c-6c3cd90030c4\\\"\",\r\n \"type\": \"Microsoft.Network/virtualWans\",\r\n \"location\": \"westus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"disableVpnEncryption\": false,\r\n \"allowBranchToBranchTraffic\": true,\r\n \"office365LocalBreakoutCategory\": @@ -183,9 +183,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:31 GMT + - Wed, 22 Jun 2022 11:38:07 GMT etag: - - W/"129387bb-94aa-4070-b833-f94118e8ceac" + - W/"974fce8f-4d48-44dc-ad7c-6c3cd90030c4" expires: - '-1' pragma: @@ -202,7 +202,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 61d7fdae-100e-487c-91d2-a126a8feee5f + - a6ea71ee-0400-4011-8ead-260f1a516440 status: code: 200 message: OK @@ -224,7 +224,7 @@ interactions: ParameterSetName: - -g -n -l User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -234,10 +234,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"03bc8a59-0e06-49ee-b1f2-bd39751ed964\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"786519e5-9c90-44a4-887b-07d062c60a32\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/d857b562-b1fe-4f26-83d8-4a5106ace7ce?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/042865f3-696e-4e96-8cac-3a59ea15a4a4?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -245,7 +245,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:39 GMT + - Wed, 22 Jun 2022 11:38:12 GMT expires: - '-1' pragma: @@ -257,7 +257,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1189' status: code: 201 message: Created @@ -275,9 +275,9 @@ interactions: ParameterSetName: - -g -n -l User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/d857b562-b1fe-4f26-83d8-4a5106ace7ce?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/042865f3-696e-4e96-8cac-3a59ea15a4a4?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -289,7 +289,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:50 GMT + - Wed, 22 Jun 2022 11:38:22 GMT expires: - '-1' pragma: @@ -321,7 +321,7 @@ interactions: ParameterSetName: - -g -n -l User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy?api-version=2021-08-01 response: @@ -331,7 +331,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy\",\r\n \ \"name\": \"myclipolicy\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"03bc8a59-0e06-49ee-b1f2-bd39751ed964\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"786519e5-9c90-44a4-887b-07d062c60a32\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -340,9 +340,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:51 GMT + - Wed, 22 Jun 2022 11:38:23 GMT etag: - - '"03bc8a59-0e06-49ee-b1f2-bd39751ed964"' + - '"786519e5-9c90-44a4-887b-07d062c60a32"' expires: - '-1' pragma: @@ -379,13 +379,13 @@ interactions: ParameterSetName: - -g -n -l --firewall-policy User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/azureFirewalls/af2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/azureFirewalls/af2\",\r\n - \ \"etag\": \"W/\\\"d90d4592-8110-4ced-b96f-f2f9a611504c\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"f7954883-46d8-42a7-bacf-4ffa3b21eda2\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus2\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n @@ -398,7 +398,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/dd04f58e-1e83-410f-be99-9959b6835980?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/0bee975a-8621-4a65-937c-ea67e485ae42?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -406,7 +406,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:59 GMT + - Wed, 22 Jun 2022 11:38:29 GMT expires: - '-1' pragma: @@ -419,9 +419,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - a917ece0-1af8-4dba-ab84-daa7645b44b8 + - 41d0f885-87dd-4983-9afc-2ee94b2f48a7 x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1194' status: code: 201 message: Created @@ -439,9 +439,9 @@ interactions: ParameterSetName: - -g -n -l --firewall-policy User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/dd04f58e-1e83-410f-be99-9959b6835980?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/0bee975a-8621-4a65-937c-ea67e485ae42?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -453,7 +453,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:10 GMT + - Wed, 22 Jun 2022 11:38:40 GMT expires: - '-1' pragma: @@ -470,7 +470,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - fdf651a7-a4e4-496f-9d77-84a9a559ee2a + - 9a5103a8-2783-4d2b-8413-c103a034d610 status: code: 200 message: OK @@ -488,13 +488,13 @@ interactions: ParameterSetName: - -g -n -l --firewall-policy User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/azureFirewalls/af2?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/azureFirewalls/af2\",\r\n - \ \"etag\": \"W/\\\"cd0799f3-c717-44e9-bd6d-de8591a509d8\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"25db6c9f-b850-4931-9b43-70bee292feda\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus2\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n @@ -511,9 +511,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:10 GMT + - Wed, 22 Jun 2022 11:38:40 GMT etag: - - W/"cd0799f3-c717-44e9-bd6d-de8591a509d8" + - W/"25db6c9f-b850-4931-9b43-70bee292feda" expires: - '-1' pragma: @@ -530,7 +530,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - ce757ea2-dfcc-4e3b-ab33-aa8134c0396c + - 79b97b0e-2a2d-4041-bccc-156796b9bab2 status: code: 200 message: OK @@ -553,15 +553,15 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/publicIPAddresses/pubip\",\r\n - \ \"etag\": \"W/\\\"e175faa9-2cae-43c8-bbf0-a7f1daecb327\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"093a6524-8507-4fa5-87f6-9ac8a47fa155\\\"\",\r\n \"location\": \"westus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"71016ff2-6c8f-4bb1-ac07-befa510b850f\",\r\n \"publicIPAddressVersion\": + \ \"resourceGuid\": \"535f3c38-6290-44ae-a975-f1490a3a43ef\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n @@ -570,7 +570,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/f29095ee-7bc0-48fe-a435-fdbe32451971?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/7fd3ac9e-5bfb-4d62-9ae2-788936ec5213?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -578,7 +578,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:17 GMT + - Wed, 22 Jun 2022 11:38:44 GMT expires: - '-1' pragma: @@ -591,9 +591,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 5c5e0a02-d7f3-4e38-8337-c49cdadf954d + - 0662ec5d-1eba-4ba8-8c94-5dfe736772d5 x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1196' status: code: 201 message: Created @@ -611,9 +611,9 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/f29095ee-7bc0-48fe-a435-fdbe32451971?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/7fd3ac9e-5bfb-4d62-9ae2-788936ec5213?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -625,7 +625,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:18 GMT + - Wed, 22 Jun 2022 11:38:45 GMT expires: - '-1' pragma: @@ -642,7 +642,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 3a195e50-0cd8-4862-b66a-39c283bc5964 + - ee089394-5ede-48d1-b93a-fd8c14c658b9 status: code: 200 message: OK @@ -660,16 +660,16 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/publicIPAddresses/pubip\",\r\n - \ \"etag\": \"W/\\\"6ab9e85e-aaff-4580-aab5-4bb8a7651742\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"2ba275b6-6fac-48e5-8206-0ddfae092138\\\"\",\r\n \"location\": \"westus2\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"71016ff2-6c8f-4bb1-ac07-befa510b850f\",\r\n \"ipAddress\": - \"20.29.209.158\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": + \ \"resourceGuid\": \"535f3c38-6290-44ae-a975-f1490a3a43ef\",\r\n \"ipAddress\": + \"20.29.195.168\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": []\r\n \ },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"Standard\",\r\n \"tier\": \"Regional\"\r\n }\r\n}" @@ -681,9 +681,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:18 GMT + - Wed, 22 Jun 2022 11:38:46 GMT etag: - - W/"6ab9e85e-aaff-4580-aab5-4bb8a7651742" + - W/"2ba275b6-6fac-48e5-8206-0ddfae092138" expires: - '-1' pragma: @@ -700,7 +700,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 77919b5f-ed97-4ab1-8359-463ce3190945 + - 2ed2ea61-d5f9-4d3b-ab91-fe947474c3f1 status: code: 200 message: OK @@ -725,21 +725,21 @@ interactions: ParameterSetName: - -g -n --subnet-name -l --address-prefixes --subnet-prefixes User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualNetworks/myvnet?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"myvnet\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualNetworks/myvnet\",\r\n - \ \"etag\": \"W/\\\"28042824-75f0-4a00-92e9-74aa152fb901\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"196ed4e4-0742-460b-ae17-ce2228893e62\\\"\",\r\n \"type\": \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"westus2\",\r\n \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n - \ \"resourceGuid\": \"398877d2-918e-499e-acf3-3e6929e275b4\",\r\n \"addressSpace\": + \ \"resourceGuid\": \"6f5585c3-a9a9-4362-b09e-6fef7028c20e\",\r\n \"addressSpace\": {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n \ \"subnets\": [\r\n {\r\n \"name\": \"AzureFirewallSubnet\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/AzureFirewallSubnet\",\r\n - \ \"etag\": \"W/\\\"28042824-75f0-4a00-92e9-74aa152fb901\\\"\",\r\n + \ \"etag\": \"W/\\\"196ed4e4-0742-460b-ae17-ce2228893e62\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \ \"addressPrefix\": \"10.0.0.0/24\",\r\n \"delegations\": [],\r\n \"privateEndpointNetworkPolicies\": \"Enabled\",\r\n \"privateLinkServiceNetworkPolicies\": @@ -750,7 +750,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/76c56ee3-c14a-459d-8799-7aeea3e985b0?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/0dc3f5bd-84f4-4546-b3db-72fa49cbbb7a?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -758,7 +758,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:25 GMT + - Wed, 22 Jun 2022 11:38:49 GMT expires: - '-1' pragma: @@ -771,9 +771,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 10ec4c60-bd97-47ef-8834-77543c7960f7 + - 95c5e1b2-102e-4a9d-bd81-eab9e74d70e4 x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1193' status: code: 201 message: Created @@ -791,9 +791,9 @@ interactions: ParameterSetName: - -g -n --subnet-name -l --address-prefixes --subnet-prefixes User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/76c56ee3-c14a-459d-8799-7aeea3e985b0?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/operations/0dc3f5bd-84f4-4546-b3db-72fa49cbbb7a?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -805,7 +805,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:29 GMT + - Wed, 22 Jun 2022 11:38:52 GMT expires: - '-1' pragma: @@ -822,7 +822,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - aa602fff-4d1e-4d39-b423-98f83ccdd12a + - da93889e-1aa9-49f7-bf5b-66875e106d00 status: code: 200 message: OK @@ -840,21 +840,21 @@ interactions: ParameterSetName: - -g -n --subnet-name -l --address-prefixes --subnet-prefixes User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualNetworks/myvnet?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"myvnet\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualNetworks/myvnet\",\r\n - \ \"etag\": \"W/\\\"682f7e00-c61f-4961-ad83-eafdc51c9992\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"b1d7e2d0-7715-4d82-8d3a-32511bbbc2b4\\\"\",\r\n \"type\": \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"westus2\",\r\n \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"resourceGuid\": \"398877d2-918e-499e-acf3-3e6929e275b4\",\r\n \"addressSpace\": + \ \"resourceGuid\": \"6f5585c3-a9a9-4362-b09e-6fef7028c20e\",\r\n \"addressSpace\": {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n \ \"subnets\": [\r\n {\r\n \"name\": \"AzureFirewallSubnet\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/AzureFirewallSubnet\",\r\n - \ \"etag\": \"W/\\\"682f7e00-c61f-4961-ad83-eafdc51c9992\\\"\",\r\n + \ \"etag\": \"W/\\\"b1d7e2d0-7715-4d82-8d3a-32511bbbc2b4\\\"\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"addressPrefix\": \"10.0.0.0/24\",\r\n \"delegations\": [],\r\n \"privateEndpointNetworkPolicies\": \"Enabled\",\r\n \"privateLinkServiceNetworkPolicies\": @@ -869,9 +869,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:29 GMT + - Wed, 22 Jun 2022 11:38:52 GMT etag: - - W/"682f7e00-c61f-4961-ad83-eafdc51c9992" + - W/"b1d7e2d0-7715-4d82-8d3a-32511bbbc2b4" expires: - '-1' pragma: @@ -888,7 +888,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - aaa9973d-8930-4344-a1b1-c54ecad167ed + - 58b9e8ba-7979-473e-b7d0-a1e83aba5087 status: code: 200 message: OK @@ -910,7 +910,7 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2?api-version=2021-08-01 response: @@ -920,10 +920,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2\",\r\n \ \"name\": \"myclipolicy2\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"0e9c187a-0238-40ee-a054-4d34ed1497cc\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8ffd0ff3-d038-4f3c-8b96-02de181c45ca\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/09006ed1-9ba8-4bd7-aa5c-0854b90e39fd?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/484f47ab-da94-43cb-8fe7-9cafeda78203?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -931,7 +931,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:40 GMT + - Wed, 22 Jun 2022 11:38:57 GMT expires: - '-1' pragma: @@ -943,7 +943,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1191' status: code: 201 message: Created @@ -961,9 +961,9 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/09006ed1-9ba8-4bd7-aa5c-0854b90e39fd?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/484f47ab-da94-43cb-8fe7-9cafeda78203?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -975,7 +975,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:50 GMT + - Wed, 22 Jun 2022 11:39:07 GMT expires: - '-1' pragma: @@ -1007,7 +1007,7 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2?api-version=2021-08-01 response: @@ -1017,7 +1017,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_with_firewall_policy000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2\",\r\n \ \"name\": \"myclipolicy2\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"0e9c187a-0238-40ee-a054-4d34ed1497cc\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"8ffd0ff3-d038-4f3c-8b96-02de181c45ca\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -1026,9 +1026,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:05:51 GMT + - Wed, 22 Jun 2022 11:39:07 GMT etag: - - '"0e9c187a-0238-40ee-a054-4d34ed1497cc"' + - '"8ffd0ff3-d038-4f3c-8b96-02de181c45ca"' expires: - '-1' pragma: diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy_premium.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy_premium.yaml index a9870320c04..d3d16146d3c 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy_premium.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_with_firewall_policy_premium.yaml @@ -17,7 +17,7 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_with_firewall_policy_premium000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2?api-version=2021-08-01 response: @@ -27,10 +27,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_with_firewall_policy_premium000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2\",\r\n \ \"name\": \"myclipolicy2\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"19e7cdc0-261a-457c-b1d9-8f245a699996\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"4afa9de8-6932-4545-af35-ca2fe0933e23\",\r\n \"location\": \"westus2\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ab8cea9e-6ef4-47e5-a074-e88eeeb2b487?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/38919aba-6bf9-4fdd-a8bf-3900dc3b4c39?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -38,7 +38,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:28 GMT + - Wed, 22 Jun 2022 11:39:20 GMT expires: - '-1' pragma: @@ -50,7 +50,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1192' status: code: 201 message: Created @@ -68,9 +68,9 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/ab8cea9e-6ef4-47e5-a074-e88eeeb2b487?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus2/nfvOperations/38919aba-6bf9-4fdd-a8bf-3900dc3b4c39?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -82,7 +82,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:39 GMT + - Wed, 22 Jun 2022 11:39:30 GMT expires: - '-1' pragma: @@ -114,7 +114,7 @@ interactions: ParameterSetName: - -g -n -l --sku User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_with_firewall_policy_premium000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2?api-version=2021-08-01 response: @@ -124,7 +124,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_with_firewall_policy_premium000001/providers/Microsoft.Network/firewallPolicies/myclipolicy2\",\r\n \ \"name\": \"myclipolicy2\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"19e7cdc0-261a-457c-b1d9-8f245a699996\",\r\n \"location\": \"westus2\"\r\n}" + \ \"etag\": \"4afa9de8-6932-4545-af35-ca2fe0933e23\",\r\n \"location\": \"westus2\"\r\n}" headers: cache-control: - no-cache @@ -133,9 +133,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:40 GMT + - Wed, 22 Jun 2022 11:39:31 GMT etag: - - '"19e7cdc0-261a-457c-b1d9-8f245a699996"' + - '"4afa9de8-6932-4545-af35-ca2fe0933e23"' expires: - '-1' pragma: @@ -167,12 +167,12 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_with_firewall_policy_premium000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_with_firewall_policy_premium000001","name":"test_azure_firewall_with_firewall_policy_premium000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-18T13:04:16Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_with_firewall_policy_premium000001","name":"test_azure_firewall_with_firewall_policy_premium000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:39:12Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -181,7 +181,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:40 GMT + - Wed, 22 Jun 2022 11:39:31 GMT expires: - '-1' pragma: @@ -213,12 +213,12 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-msi/6.0.1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-msi/6.0.1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_azure_firewall_with_firewall_policy_premium000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identitytest?api-version=2021-09-30-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_with_firewall_policy_premium000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identitytest","name":"identitytest","type":"Microsoft.ManagedIdentity/userAssignedIdentities","location":"westus2","tags":{},"properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","principalId":"dd36d57a-d54f-4a03-b949-5a2d405408ae","clientId":"43febc23-89b2-4da5-9a54-45dd22604f34"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_azure_firewall_with_firewall_policy_premium000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identitytest","name":"identitytest","type":"Microsoft.ManagedIdentity/userAssignedIdentities","location":"westus2","tags":{},"properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","principalId":"1638a6c8-8334-4f8e-9158-33b110dad11a","clientId":"0b3033b3-00e7-4b62-a460-3d6d770fe2ad"}}' headers: cache-control: - no-cache @@ -227,7 +227,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 18 May 2022 13:04:50 GMT + - Wed, 22 Jun 2022 11:39:37 GMT expires: - '-1' location: @@ -239,7 +239,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1193' status: code: 201 message: Created diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_zones.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_zones.yaml index 45a900d7d77..694b220addc 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_zones.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_azure_firewall_zones.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_azure_firewall_zones000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001","name":"cli_test_azure_firewall_zones000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:59:01Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:59:03.3098030Z","CreationDate":"2022-05-11T19:59:03.3097448Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001","name":"cli_test_azure_firewall_zones000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:38:17Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '530' + - '348' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:04 GMT + - Wed, 22 Jun 2022 11:38:21 GMT expires: - '-1' pragma: @@ -60,13 +60,13 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"147e69eb-3782-41c7-92f1-0ce5407f530a\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"748ca3ea-e3d9-4a2d-9e1b-e6adfcffcd29\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"eastus\",\r\n \"zones\": [\r\n \"1\",\r\n \"3\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": @@ -78,7 +78,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/d8c83047-5222-4b78-ad71-8923979065b8?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/9a8b3462-3aff-4302-b2db-06bc795b7b65?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -86,7 +86,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:10 GMT + - Wed, 22 Jun 2022 11:38:28 GMT expires: - '-1' pragma: @@ -99,9 +99,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 83e52043-754d-402b-bfcf-a70e32cb8ecc + - 99284e2c-1224-408e-9cc3-4f6c4fb9882e x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1193' status: code: 201 message: Created @@ -119,9 +119,9 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/d8c83047-5222-4b78-ad71-8923979065b8?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/9a8b3462-3aff-4302-b2db-06bc795b7b65?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -133,7 +133,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:21 GMT + - Wed, 22 Jun 2022 11:38:38 GMT expires: - '-1' pragma: @@ -150,7 +150,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - fb84db07-74f6-4194-b5be-e32730d7bb3e + - d299a3a7-9b42-4e17-8a28-62d4676dcb52 status: code: 200 message: OK @@ -168,13 +168,13 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"e1c14867-7244-46b2-8259-ee5e762caa5d\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"c9ff7687-f648-4250-a6ec-b9cc4bbb5551\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"eastus\",\r\n \"zones\": [\r\n \"1\",\r\n \"3\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": @@ -190,9 +190,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:21 GMT + - Wed, 22 Jun 2022 11:38:39 GMT etag: - - W/"e1c14867-7244-46b2-8259-ee5e762caa5d" + - W/"c9ff7687-f648-4250-a6ec-b9cc4bbb5551" expires: - '-1' pragma: @@ -209,7 +209,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 8cd5863c-3d9f-49c5-ab11-378ec8e97134 + - 4afc0582-2e6c-420f-bfd4-9aed08035926 status: code: 200 message: OK @@ -227,13 +227,13 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"e1c14867-7244-46b2-8259-ee5e762caa5d\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"c9ff7687-f648-4250-a6ec-b9cc4bbb5551\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"eastus\",\r\n \"zones\": [\r\n \"1\",\r\n \"3\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": @@ -249,9 +249,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:23 GMT + - Wed, 22 Jun 2022 11:38:41 GMT etag: - - W/"e1c14867-7244-46b2-8259-ee5e762caa5d" + - W/"c9ff7687-f648-4250-a6ec-b9cc4bbb5551" expires: - '-1' pragma: @@ -268,7 +268,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - f7b9d01c-8bbd-438a-aadd-279624ca53a7 + - 9efa4ada-2ab6-4d6c-840a-3775e2c686ee status: code: 200 message: OK @@ -294,13 +294,13 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"b6d06bf7-b79b-4732-a690-e3ecea11b16a\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"56bbffde-93c3-4899-9afd-0a80749d00dc\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"eastus\",\r\n \"zones\": [\r\n \"1\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": @@ -312,7 +312,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/9af0f2fb-6120-43a6-820f-cadcb0842994?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/9c8c37c1-adbf-4774-a12b-e7d6828549da?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -320,7 +320,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:26 GMT + - Wed, 22 Jun 2022 11:38:46 GMT expires: - '-1' pragma: @@ -337,9 +337,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 12c79b19-a3de-4bc6-83a4-18e62c56d086 + - f3f75c79-29c0-494b-ba2d-65373dac0aa1 x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1188' status: code: 200 message: OK @@ -357,9 +357,9 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/9af0f2fb-6120-43a6-820f-cadcb0842994?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/9c8c37c1-adbf-4774-a12b-e7d6828549da?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -371,7 +371,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:36 GMT + - Wed, 22 Jun 2022 11:38:56 GMT expires: - '-1' pragma: @@ -388,7 +388,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 48682928-c40c-4d01-8cb4-784959320c83 + - 6fa17317-025d-4504-b1e5-316cf648807c status: code: 200 message: OK @@ -406,13 +406,13 @@ interactions: ParameterSetName: - -g -n --zones User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"af1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_azure_firewall_zones000001/providers/Microsoft.Network/azureFirewalls/af1\",\r\n - \ \"etag\": \"W/\\\"6290ff11-c02c-4779-9e73-9b5e6e51d5da\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"6409a274-938b-4f98-8840-d0e1262378d3\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"eastus\",\r\n \"zones\": [\r\n \"1\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": @@ -428,9 +428,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:36 GMT + - Wed, 22 Jun 2022 11:38:56 GMT etag: - - W/"6290ff11-c02c-4779-9e73-9b5e6e51d5da" + - W/"6409a274-938b-4f98-8840-d0e1262378d3" expires: - '-1' pragma: @@ -447,7 +447,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - d7479d5b-a387-49d6-bab5-29932f94af1f + - ad3a5cdc-663b-4556-afe2-684a8ac4dbc6 status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_policy_with_dns_settings.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_policy_with_dns_settings.yaml index 388362b2993..053bc74c49e 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_policy_with_dns_settings.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_policy_with_dns_settings.yaml @@ -18,7 +18,7 @@ interactions: ParameterSetName: - --resource-group --location --name --dns-servers User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -30,10 +30,10 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"08539eea-8e1c-4efa-83f7-962ca2764a3c\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"93931ede-f427-4748-8073-d9ebfba6a9c0\",\r\n \"location\": \"eastus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/08ddcaa6-d318-467f-b97c-b8594ab50f21?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/c23e7503-40ca-453d-a705-438a1e1b2589?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -41,7 +41,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:30 GMT + - Wed, 22 Jun 2022 11:39:23 GMT expires: - '-1' pragma: @@ -53,7 +53,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 201 message: Created @@ -71,9 +71,9 @@ interactions: ParameterSetName: - --resource-group --location --name --dns-servers User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/08ddcaa6-d318-467f-b97c-b8594ab50f21?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/c23e7503-40ca-453d-a705-438a1e1b2589?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -85,7 +85,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:40 GMT + - Wed, 22 Jun 2022 11:39:33 GMT expires: - '-1' pragma: @@ -117,7 +117,7 @@ interactions: ParameterSetName: - --resource-group --location --name --dns-servers User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -129,7 +129,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"08539eea-8e1c-4efa-83f7-962ca2764a3c\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"93931ede-f427-4748-8073-d9ebfba6a9c0\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -138,9 +138,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:40 GMT + - Wed, 22 Jun 2022 11:39:33 GMT etag: - - '"08539eea-8e1c-4efa-83f7-962ca2764a3c"' + - '"93931ede-f427-4748-8073-d9ebfba6a9c0"' expires: - '-1' pragma: @@ -172,7 +172,7 @@ interactions: ParameterSetName: - --resource-group --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -184,7 +184,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"08539eea-8e1c-4efa-83f7-962ca2764a3c\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"93931ede-f427-4748-8073-d9ebfba6a9c0\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -193,9 +193,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:42 GMT + - Wed, 22 Jun 2022 11:39:35 GMT etag: - - '"08539eea-8e1c-4efa-83f7-962ca2764a3c"' + - '"93931ede-f427-4748-8073-d9ebfba6a9c0"' expires: - '-1' pragma: @@ -227,7 +227,7 @@ interactions: ParameterSetName: - --resource --name --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -239,7 +239,7 @@ interactions: \ \"ruleCollectionGroups\": [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"08539eea-8e1c-4efa-83f7-962ca2764a3c\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"93931ede-f427-4748-8073-d9ebfba6a9c0\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -248,9 +248,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:44 GMT + - Wed, 22 Jun 2022 11:39:37 GMT etag: - - '"08539eea-8e1c-4efa-83f7-962ca2764a3c"' + - '"93931ede-f427-4748-8073-d9ebfba6a9c0"' expires: - '-1' pragma: @@ -288,7 +288,7 @@ interactions: ParameterSetName: - --resource --name --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -300,10 +300,10 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"1cb9c409-5bb6-4fbb-99b8-2b3f3c6658e4\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"4f6506fd-b0be-49cf-bea7-62b177262306\",\r\n \"location\": \"eastus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/c06cd4b9-5781-4b84-8414-6a29dda22bf7?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/5c06d01f-176f-423d-9b5e-3c54de429eb9?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -311,7 +311,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:47 GMT + - Wed, 22 Jun 2022 11:39:39 GMT expires: - '-1' pragma: @@ -327,7 +327,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1190' status: code: 200 message: OK @@ -345,9 +345,9 @@ interactions: ParameterSetName: - --resource --name --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/c06cd4b9-5781-4b84-8414-6a29dda22bf7?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/5c06d01f-176f-423d-9b5e-3c54de429eb9?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -359,7 +359,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:57 GMT + - Wed, 22 Jun 2022 11:39:50 GMT expires: - '-1' pragma: @@ -391,7 +391,7 @@ interactions: ParameterSetName: - --resource --name --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -403,7 +403,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"1cb9c409-5bb6-4fbb-99b8-2b3f3c6658e4\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"4f6506fd-b0be-49cf-bea7-62b177262306\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -412,9 +412,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:59 GMT + - Wed, 22 Jun 2022 11:39:50 GMT etag: - - '"1cb9c409-5bb6-4fbb-99b8-2b3f3c6658e4"' + - '"4f6506fd-b0be-49cf-bea7-62b177262306"' expires: - '-1' pragma: @@ -446,7 +446,7 @@ interactions: ParameterSetName: - --resource-group --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -458,7 +458,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"1cb9c409-5bb6-4fbb-99b8-2b3f3c6658e4\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"4f6506fd-b0be-49cf-bea7-62b177262306\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -467,9 +467,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:02 GMT + - Wed, 22 Jun 2022 11:39:52 GMT etag: - - '"1cb9c409-5bb6-4fbb-99b8-2b3f3c6658e4"' + - '"4f6506fd-b0be-49cf-bea7-62b177262306"' expires: - '-1' pragma: @@ -501,7 +501,7 @@ interactions: ParameterSetName: - --resource --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -513,7 +513,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"1cb9c409-5bb6-4fbb-99b8-2b3f3c6658e4\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"4f6506fd-b0be-49cf-bea7-62b177262306\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -522,9 +522,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:03 GMT + - Wed, 22 Jun 2022 11:39:53 GMT etag: - - '"1cb9c409-5bb6-4fbb-99b8-2b3f3c6658e4"' + - '"4f6506fd-b0be-49cf-bea7-62b177262306"' expires: - '-1' pragma: @@ -562,7 +562,7 @@ interactions: ParameterSetName: - --resource --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -574,10 +574,10 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Updating\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a26ea70d-3028-4ca9-bf67-793338e44aac\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"61652663-02db-4a6f-96e0-6b578e86240e\",\r\n \"location\": \"eastus\"\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/d6f7f791-0c55-4e8f-aedc-c9439763dfa6?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/08d9fcab-1dcb-4ca0-b9cd-435c99f92482?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -585,7 +585,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:04 GMT + - Wed, 22 Jun 2022 11:39:56 GMT expires: - '-1' pragma: @@ -601,7 +601,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1192' status: code: 200 message: OK @@ -619,9 +619,9 @@ interactions: ParameterSetName: - --resource --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/d6f7f791-0c55-4e8f-aedc-c9439763dfa6?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/nfvOperations/08d9fcab-1dcb-4ca0-b9cd-435c99f92482?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -633,7 +633,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:14 GMT + - Wed, 22 Jun 2022 11:40:06 GMT expires: - '-1' pragma: @@ -665,7 +665,7 @@ interactions: ParameterSetName: - --resource --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -677,7 +677,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a26ea70d-3028-4ca9-bf67-793338e44aac\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"61652663-02db-4a6f-96e0-6b578e86240e\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -686,9 +686,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:17 GMT + - Wed, 22 Jun 2022 11:40:07 GMT etag: - - '"a26ea70d-3028-4ca9-bf67-793338e44aac"' + - '"61652663-02db-4a6f-96e0-6b578e86240e"' expires: - '-1' pragma: @@ -720,7 +720,7 @@ interactions: ParameterSetName: - --resource-group --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -732,7 +732,7 @@ interactions: [],\r\n \"firewalls\": [],\r\n \"provisioningState\": \"Succeeded\"\r\n \ },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01\",\r\n \ \"name\": \"fwp01\",\r\n \"type\": \"Microsoft.Network/FirewallPolicies\",\r\n - \ \"etag\": \"a26ea70d-3028-4ca9-bf67-793338e44aac\",\r\n \"location\": \"eastus\"\r\n}" + \ \"etag\": \"61652663-02db-4a6f-96e0-6b578e86240e\",\r\n \"location\": \"eastus\"\r\n}" headers: cache-control: - no-cache @@ -741,9 +741,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:18 GMT + - Wed, 22 Jun 2022 11:40:08 GMT etag: - - '"a26ea70d-3028-4ca9-bf67-793338e44aac"' + - '"61652663-02db-4a6f-96e0-6b578e86240e"' expires: - '-1' pragma: @@ -777,7 +777,7 @@ interactions: ParameterSetName: - --resource-group --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_policy_with_dns_settings000001/providers/Microsoft.Network/firewallPolicies/fwp01?api-version=2021-08-01 response: @@ -789,7 +789,7 @@ interactions: content-length: - '0' date: - - Wed, 11 May 2022 19:59:23 GMT + - Wed, 22 Jun 2022 11:40:14 GMT expires: - '-1' pragma: @@ -801,7 +801,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14996' status: code: 200 message: OK diff --git a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_with_dns_proxy.yaml b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_with_dns_proxy.yaml index e8c9263df78..16ad7f371e0 100644 --- a/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_with_dns_proxy.yaml +++ b/src/azure-firewall/azext_firewall/tests/latest/recordings/test_firewall_with_dns_proxy.yaml @@ -13,21 +13,21 @@ interactions: ParameterSetName: - -g -n --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test_firewall_with_dns_proxy000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001","name":"test_firewall_with_dns_proxy000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-11T19:58:29Z","AdminEmail":"cnfwoncall@microsoft.com","AlertDaysBeforeDeletion":"5","Created":"2022-05-11T19:58:29.8426554Z","CreationDate":"2022-05-11T19:58:29.8426424Z","DaysUntilDeletion":"20"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001","name":"test_firewall_with_dns_proxy000001","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-22T11:39:03Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '528' + - '346' content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:32 GMT + - Wed, 22 Jun 2022 11:39:03 GMT expires: - '-1' pragma: @@ -60,13 +60,13 @@ interactions: ParameterSetName: - -g -n --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"fw01\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01\",\r\n - \ \"etag\": \"W/\\\"16b9c503-9cd4-409c-ac35-83466226d1e3\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"759b1400-d30b-4cd4-a18b-cfdb9802114f\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -78,7 +78,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c966b761-2060-4add-b481-f5474226d4e7?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c986b78a-20f4-4238-9fb9-eeef6b398849?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -86,7 +86,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:39 GMT + - Wed, 22 Jun 2022 11:39:09 GMT expires: - '-1' pragma: @@ -99,7 +99,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 68e2dcd2-a553-46b9-b3c3-ac7c1cdef14b + - ae5166d5-ea9f-4802-9dac-1d0a653c5fe8 x-ms-ratelimit-remaining-subscription-writes: - '1195' status: @@ -119,9 +119,9 @@ interactions: ParameterSetName: - -g -n --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c966b761-2060-4add-b481-f5474226d4e7?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c986b78a-20f4-4238-9fb9-eeef6b398849?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -133,7 +133,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:50 GMT + - Wed, 22 Jun 2022 11:39:19 GMT expires: - '-1' pragma: @@ -150,7 +150,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - b0c339e4-67f8-4168-b991-a4857f8164ac + - 8f59c74a-1fa7-4f46-add5-43361e1242a2 status: code: 200 message: OK @@ -168,13 +168,13 @@ interactions: ParameterSetName: - -g -n --dns-servers --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"fw01\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01\",\r\n - \ \"etag\": \"W/\\\"3b6ae74a-3289-40de-938a-c0f198b14bdd\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a615699f-33c3-4a0c-9d57-a3a17b3d14cf\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -190,9 +190,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:51 GMT + - Wed, 22 Jun 2022 11:39:19 GMT etag: - - W/"3b6ae74a-3289-40de-938a-c0f198b14bdd" + - W/"a615699f-33c3-4a0c-9d57-a3a17b3d14cf" expires: - '-1' pragma: @@ -209,7 +209,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 23894af8-f39c-4df5-bb47-46d5955209ee + - 03485ca3-59e5-4cb8-837a-8cf7a90be2dc status: code: 200 message: OK @@ -227,13 +227,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"fw01\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01\",\r\n - \ \"etag\": \"W/\\\"3b6ae74a-3289-40de-938a-c0f198b14bdd\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a615699f-33c3-4a0c-9d57-a3a17b3d14cf\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -249,9 +249,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:52 GMT + - Wed, 22 Jun 2022 11:39:20 GMT etag: - - W/"3b6ae74a-3289-40de-938a-c0f198b14bdd" + - W/"a615699f-33c3-4a0c-9d57-a3a17b3d14cf" expires: - '-1' pragma: @@ -268,7 +268,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 30874743-64b9-4321-ac63-df5c8933ff57 + - e6dab341-92d2-4b6f-828c-3e4b6944ccbc status: code: 200 message: OK @@ -286,13 +286,13 @@ interactions: ParameterSetName: - -g -n --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"fw01\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01\",\r\n - \ \"etag\": \"W/\\\"3b6ae74a-3289-40de-938a-c0f198b14bdd\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"a615699f-33c3-4a0c-9d57-a3a17b3d14cf\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -308,9 +308,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:53 GMT + - Wed, 22 Jun 2022 11:39:21 GMT etag: - - W/"3b6ae74a-3289-40de-938a-c0f198b14bdd" + - W/"a615699f-33c3-4a0c-9d57-a3a17b3d14cf" expires: - '-1' pragma: @@ -327,7 +327,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 66f40549-c4ae-4ce5-9384-3e5c60b5e294 + - 9ab6697f-5f08-46c9-8219-1e1b8ab82eb9 status: code: 200 message: OK @@ -353,13 +353,13 @@ interactions: ParameterSetName: - -g -n --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"fw01\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01\",\r\n - \ \"etag\": \"W/\\\"2e575e1f-14f1-4342-864c-bcbcd7937c67\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"8b633458-3a91-42e1-960c-79eeda62c6d9\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -371,7 +371,7 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/4176d30b-f4a0-4574-b501-8a6fdb52b00e?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/22588b1e-2f5e-4564-98aa-052db6b254bd?api-version=2021-08-01 cache-control: - no-cache content-length: @@ -379,7 +379,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:58:54 GMT + - Wed, 22 Jun 2022 11:39:22 GMT expires: - '-1' pragma: @@ -396,7 +396,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 32fc2846-2a70-4f70-a193-9fbd5768bb77 + - 04834b14-d00b-4ba4-af53-6dc5d9b555fb x-ms-ratelimit-remaining-subscription-writes: - '1198' status: @@ -416,9 +416,9 @@ interactions: ParameterSetName: - -g -n --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/4176d30b-f4a0-4574-b501-8a6fdb52b00e?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/22588b1e-2f5e-4564-98aa-052db6b254bd?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -430,7 +430,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:05 GMT + - Wed, 22 Jun 2022 11:39:32 GMT expires: - '-1' pragma: @@ -447,7 +447,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 7b12a8a9-abe4-4f1a-a37f-50bc93ddd5cc + - d395f89f-c937-4060-af85-ee42226faa5e status: code: 200 message: OK @@ -465,13 +465,13 @@ interactions: ParameterSetName: - -g -n --enable-dns-proxy User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"fw01\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01\",\r\n - \ \"etag\": \"W/\\\"b8e9cd32-77f9-4ecd-b32a-0474869ca97e\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"3ee66bc0-3feb-4a6e-8023-90968d8d6573\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -487,9 +487,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:07 GMT + - Wed, 22 Jun 2022 11:39:33 GMT etag: - - W/"b8e9cd32-77f9-4ecd-b32a-0474869ca97e" + - W/"3ee66bc0-3feb-4a6e-8023-90968d8d6573" expires: - '-1' pragma: @@ -506,7 +506,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - a8ea3639-697e-49ca-9ab3-247d26789e28 + - 30c786a9-6d64-4cc5-b4eb-5a1eeaeeb940 status: code: 200 message: OK @@ -524,13 +524,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: body: string: "{\r\n \"name\": \"fw01\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01\",\r\n - \ \"etag\": \"W/\\\"b8e9cd32-77f9-4ecd-b32a-0474869ca97e\\\"\",\r\n \"type\": + \ \"etag\": \"W/\\\"3ee66bc0-3feb-4a6e-8023-90968d8d6573\\\"\",\r\n \"type\": \"Microsoft.Network/azureFirewalls\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"sku\": {\r\n \"name\": \"AZFW_VNet\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"threatIntelMode\": @@ -546,9 +546,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:09 GMT + - Wed, 22 Jun 2022 11:39:34 GMT etag: - - W/"b8e9cd32-77f9-4ecd-b32a-0474869ca97e" + - W/"3ee66bc0-3feb-4a6e-8023-90968d8d6573" expires: - '-1' pragma: @@ -565,7 +565,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - a6cf6889-5e5e-4a90-b7f7-7e34c30349aa + - 1f454759-57db-4147-8ecc-a4abc66db12e status: code: 200 message: OK @@ -585,7 +585,7 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_firewall_with_dns_proxy000001/providers/Microsoft.Network/azureFirewalls/fw01?api-version=2021-08-01 response: @@ -595,17 +595,17 @@ interactions: azure-asyncnotification: - Enabled azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ffc53a7b-708d-46a4-a63e-841f92d9b8ff?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1fc84533-22ab-4232-9fe4-2f3e1eb35529?api-version=2021-08-01 cache-control: - no-cache content-length: - '0' date: - - Wed, 11 May 2022 19:59:11 GMT + - Wed, 22 Jun 2022 11:39:35 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/ffc53a7b-708d-46a4-a63e-841f92d9b8ff?api-version=2021-08-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/1fc84533-22ab-4232-9fe4-2f3e1eb35529?api-version=2021-08-01 pragma: - no-cache server: @@ -616,9 +616,9 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 29b729b4-5121-4051-aceb-284db21a9f08 + - 0d533cf5-d071-4878-a475-f3794fb4aae2 x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14997' status: code: 202 message: Accepted @@ -636,9 +636,9 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.35.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/ffc53a7b-708d-46a4-a63e-841f92d9b8ff?api-version=2021-08-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1fc84533-22ab-4232-9fe4-2f3e1eb35529?api-version=2021-08-01 response: body: string: "{\r\n \"status\": \"Succeeded\"\r\n}" @@ -650,7 +650,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 11 May 2022 19:59:21 GMT + - Wed, 22 Jun 2022 11:39:45 GMT expires: - '-1' pragma: @@ -667,8 +667,57 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - bbfeac57-49bc-4bb1-8c70-0919b92d8093 + - a7cdb983-6729-42ce-ac23-b39a5dcb9872 status: code: 200 message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - network firewall delete + Connection: + - keep-alive + ParameterSetName: + - -g --name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/1fc84533-22ab-4232-9fe4-2f3e1eb35529?api-version=2021-08-01 + response: + body: + string: '' + headers: + azure-asyncnotification: + - Enabled + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/1fc84533-22ab-4232-9fe4-2f3e1eb35529?api-version=2021-08-01 + cache-control: + - no-cache + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Jun 2022 11:39:46 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operationResults/1fc84533-22ab-4232-9fe4-2f3e1eb35529?api-version=2021-08-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-arm-service-request-id: + - 0d533cf5-d071-4878-a475-f3794fb4aae2 + status: + code: 204 + message: No Content version: 1 diff --git a/src/blueprint/azext_blueprint/custom.py b/src/blueprint/azext_blueprint/custom.py index 5a15c98b849..b34992598c2 100644 --- a/src/blueprint/azext_blueprint/custom.py +++ b/src/blueprint/azext_blueprint/custom.py @@ -7,6 +7,7 @@ import json import os +import stat from knack.util import CLIError from azure.cli.core.util import user_confirmation from azure.core.exceptions import HttpResponseError @@ -48,12 +49,15 @@ def import_blueprint_with_artifacts(cmd, for filename in os.listdir(os.path.join(input_path, 'artifacts')): artifact_name = filename.split('.')[0] filepath = os.path.join(input_path, 'artifacts', filename) - with open(filepath) as artifact_file: - try: - artifact = json.load(artifact_file) - art_dict[artifact_name] = artifact - except json.decoder.JSONDecodeError as ex: - raise CLIError('JSON decode error for {}: {}'.format(filepath, str(ex))) from ex + # skip hidden files + if ((os.name != 'nt' and not filename.startswith('.')) or + (os.name == 'nt' and not bool(os.stat(filepath).st_file_attributes & stat.FILE_ATTRIBUTE_HIDDEN))): + with open(filepath) as artifact_file: + try: + artifact = json.load(artifact_file) + art_dict[artifact_name] = artifact + except json.decoder.JSONDecodeError as ex: + raise CLIError('JSON decode error for {}: {}'.format(filepath, str(ex))) from ex except FileNotFoundError as ex: raise CLIError('File not Found: {}'.format(str(ex))) from ex diff --git a/src/change-analysis/HISTORY.rst b/src/change-analysis/HISTORY.rst new file mode 100644 index 00000000000..8c34bccfff8 --- /dev/null +++ b/src/change-analysis/HISTORY.rst @@ -0,0 +1,8 @@ +.. :changelog: + +Release History +=============== + +0.1.0 +++++++ +* Initial release. \ No newline at end of file diff --git a/src/change-analysis/README.md b/src/change-analysis/README.md new file mode 100644 index 00000000000..9207c7c4e8d --- /dev/null +++ b/src/change-analysis/README.md @@ -0,0 +1,28 @@ +# Azure CLI ChangeAnalysis Extension # +This is an extension to Azure CLI to manage ChangeAnalysis resources. + +## How to use ## +Install this extension using the below CLI command +``` +az extension add --name change-analysis +``` +### Included Features +#### List changes for resources: + +##### List the changes of a subscription within the specific time range. + +``` +az change-analysis list --start-time '05/24/2022 8:43:36' --end-time '05/25/2022 9:46:36' +``` + +##### List the changes of a resource group within the specific time range + +``` +az change-analysis list -g [ResourceGroup] --start-time '05/24/2022 8:43:36' --end-time '05/25/2022 9:46:36' +``` + +##### List the changes of a resource within the specified time range + +``` +az change-analysis list-by-resource -r [ResourceId] --start-time '05/24/2022 8:43:36' --end-time '05/25/2022 9:46:36' +``` \ No newline at end of file diff --git a/src/change-analysis/azext_change_analysis/__init__.py b/src/change-analysis/azext_change_analysis/__init__.py new file mode 100644 index 00000000000..c847b6b7e96 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/__init__.py @@ -0,0 +1,42 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from azure.cli.core import AzCommandsLoader +from azext_change_analysis._help import helps # pylint: disable=unused-import + + +class ChangeAnalysisCommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + custom_command_type = CliCommandType( + operations_tmpl='azext_change_analysis.custom#{}') + super().__init__(cli_ctx=cli_ctx, + custom_command_type=custom_command_type) + + def load_command_table(self, args): + from azext_change_analysis.commands import load_command_table + from azure.cli.core.aaz import load_aaz_command_table + try: + from . import aaz + except ImportError: + aaz = None + if aaz: + load_aaz_command_table( + loader=self, + aaz_pkg_name=aaz.__name__, + args=args + ) + load_command_table(self, args) + return self.command_table + + def load_arguments(self, command): + from azext_change_analysis._params import load_arguments + load_arguments(self, command) + + +COMMAND_LOADER_CLS = ChangeAnalysisCommandsLoader diff --git a/src/change-analysis/azext_change_analysis/_help.py b/src/change-analysis/azext_change_analysis/_help.py new file mode 100644 index 00000000000..126d5d00714 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/_help.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=line-too-long +# pylint: disable=too-many-lines + +from knack.help_files import helps # pylint: disable=unused-import diff --git a/src/change-analysis/azext_change_analysis/_params.py b/src/change-analysis/azext_change_analysis/_params.py new file mode 100644 index 00000000000..cfcec717c9c --- /dev/null +++ b/src/change-analysis/azext_change_analysis/_params.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + + +def load_arguments(self, _): # pylint: disable=unused-argument + pass diff --git a/src/securityinsight/azext_sentinel/generated/_validators.py b/src/change-analysis/azext_change_analysis/aaz/__init__.py similarity index 55% rename from src/securityinsight/azext_sentinel/generated/_validators.py rename to src/change-analysis/azext_change_analysis/aaz/__init__.py index b33a44c1ebf..5757aea3175 100644 --- a/src/securityinsight/azext_sentinel/generated/_validators.py +++ b/src/change-analysis/azext_change_analysis/aaz/__init__.py @@ -1,9 +1,6 @@ -# -------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. +# Licensed under the MIT License. See License.txt in the project root for license information. # -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/change-analysis/azext_change_analysis/aaz/latest/__init__.py b/src/change-analysis/azext_change_analysis/aaz/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/aaz/latest/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/__cmd_group.py b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/__cmd_group.py new file mode 100644 index 00000000000..19797678fb2 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "change-analysis", +) +class __CMDGroup(AAZCommandGroup): + """List changes for resources + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/__init__.py b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/__init__.py new file mode 100644 index 00000000000..4167e108267 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/__init__.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._list import * +from ._list_by_resource import * diff --git a/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/_list.py b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/_list.py new file mode 100644 index 00000000000..f1b1976f0a1 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/_list.py @@ -0,0 +1,394 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "change-analysis list", + is_preview=True, +) +class List(AAZCommand): + """List the changes of resources in the subscription within the specified time range. Customer data will always be masked. + + :example: List the changes of a subscription within the specific time range + az change-analysis list --start-time '05/24/2022 8:43:36' --end-time '05/25/2022 9:46:36' + + :example: List the changes of a resource group within the specific time range + az change-analysis list -g [ResourceGroup] --start-time '05/24/2022 8:43:36' --end-time '05/25/2022 9:46:36' + """ + + _aaz_info = { + "version": "2021-04-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/microsoft.changeanalysis/changes", "2021-04-01"], + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.changeanalysis/changes", "2021-04-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg() + _args_schema.end_time = AAZStrArg( + options=["--end-time"], + help="Specifies the end time of the changes request.", + required=True, + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skipToken parameter that specifies a starting point to use for subsequent calls.", + ) + _args_schema.start_time = AAZStrArg( + options=["--start-time"], + help="Specifies the start time of the changes request.", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + condition_0 = has_value(self.ctx.args.resource_group) and has_value(self.ctx.subscription_id) and has_value(self.ctx.args.end_time) and has_value(self.ctx.args.start_time) + condition_1 = has_value(self.ctx.subscription_id) and has_value(self.ctx.args.end_time) and has_value(self.ctx.args.start_time) and has_value(self.ctx.args.resource_group) is not True + if condition_0: + self.ChangesListChangesByResourceGroup(ctx=self.ctx)() + if condition_1: + self.ChangesListChangesBySubscription(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class ChangesListChangesByResourceGroup(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ChangeAnalysis/changes", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$endTime", self.ctx.args.end_time, + required=True, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$startTime", self.ctx.args.start_time, + required=True, + ), + **self.serialize_query_param( + "api-version", "2021-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType() + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.change_type = AAZStrType( + serialized_name="changeType", + ) + properties.initiated_by_list = AAZListType( + serialized_name="initiatedByList", + ) + properties.property_changes = AAZListType( + serialized_name="propertyChanges", + ) + properties.resource_id = AAZStrType( + serialized_name="resourceId", + ) + properties.time_stamp = AAZStrType( + serialized_name="timeStamp", + ) + + initiated_by_list = cls._schema_on_200.value.Element.properties.initiated_by_list + initiated_by_list.Element = AAZStrType() + + property_changes = cls._schema_on_200.value.Element.properties.property_changes + property_changes.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.property_changes.Element + _element.change_category = AAZStrType( + serialized_name="changeCategory", + ) + _element.change_type = AAZStrType( + serialized_name="changeType", + ) + _element.description = AAZStrType() + _element.display_name = AAZStrType( + serialized_name="displayName", + ) + _element.is_data_masked = AAZBoolType( + serialized_name="isDataMasked", + ) + _element.json_path = AAZStrType( + serialized_name="jsonPath", + ) + _element.level = AAZStrType() + _element.new_value = AAZStrType( + serialized_name="newValue", + ) + _element.old_value = AAZStrType( + serialized_name="oldValue", + ) + + return cls._schema_on_200 + + class ChangesListChangesBySubscription(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/providers/Microsoft.ChangeAnalysis/changes", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$endTime", self.ctx.args.end_time, + required=True, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$startTime", self.ctx.args.start_time, + required=True, + ), + **self.serialize_query_param( + "api-version", "2021-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType() + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.change_type = AAZStrType( + serialized_name="changeType", + ) + properties.initiated_by_list = AAZListType( + serialized_name="initiatedByList", + ) + properties.property_changes = AAZListType( + serialized_name="propertyChanges", + ) + properties.resource_id = AAZStrType( + serialized_name="resourceId", + ) + properties.time_stamp = AAZStrType( + serialized_name="timeStamp", + ) + + initiated_by_list = cls._schema_on_200.value.Element.properties.initiated_by_list + initiated_by_list.Element = AAZStrType() + + property_changes = cls._schema_on_200.value.Element.properties.property_changes + property_changes.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.property_changes.Element + _element.change_category = AAZStrType( + serialized_name="changeCategory", + ) + _element.change_type = AAZStrType( + serialized_name="changeType", + ) + _element.description = AAZStrType() + _element.display_name = AAZStrType( + serialized_name="displayName", + ) + _element.is_data_masked = AAZBoolType( + serialized_name="isDataMasked", + ) + _element.json_path = AAZStrType( + serialized_name="jsonPath", + ) + _element.level = AAZStrType() + _element.new_value = AAZStrType( + serialized_name="newValue", + ) + _element.old_value = AAZStrType( + serialized_name="oldValue", + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/_list_by_resource.py b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/_list_by_resource.py new file mode 100644 index 00000000000..5b99a4e8246 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/aaz/latest/change_analysis/_list_by_resource.py @@ -0,0 +1,231 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "change-analysis list-by-resource", + is_preview=True, +) +class ListByResource(AAZCommand): + """List the changes of a resource within the specified time range. Customer data will be masked if the user doesn't have access. + + :example: List the changes of a resource within the specified time range + az change-analysis list-by-resource -r [ResourceId] --start-time '05/24/2022 8:43:36' --end-time '05/25/2022 9:46:36' + """ + + _aaz_info = { + "version": "2021-04-01", + "resources": [ + ["mgmt-plane", "/{resourceid}/providers/microsoft.changeanalysis/resourcechanges", "2021-04-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource = AAZStrArg( + options=["--resource", "-r"], + help="The identifier of the resource.", + required=True, + ) + _args_schema.end_time = AAZStrArg( + options=["--end-time"], + help="Specifies the end time of the changes request.", + required=True, + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skipToken parameter that specifies a starting point to use for subsequent calls.", + ) + _args_schema.start_time = AAZStrArg( + options=["--start-time"], + help="Specifies the start time of the changes request.", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.ResourceChangesList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class ResourceChangesList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/{resourceId}/providers/Microsoft.ChangeAnalysis/resourceChanges", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceId", self.ctx.args.resource, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$endTime", self.ctx.args.end_time, + required=True, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$startTime", self.ctx.args.start_time, + required=True, + ), + **self.serialize_query_param( + "api-version", "2021-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType() + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.change_type = AAZStrType( + serialized_name="changeType", + ) + properties.initiated_by_list = AAZListType( + serialized_name="initiatedByList", + ) + properties.property_changes = AAZListType( + serialized_name="propertyChanges", + ) + properties.resource_id = AAZStrType( + serialized_name="resourceId", + ) + properties.time_stamp = AAZStrType( + serialized_name="timeStamp", + ) + + initiated_by_list = cls._schema_on_200.value.Element.properties.initiated_by_list + initiated_by_list.Element = AAZStrType() + + property_changes = cls._schema_on_200.value.Element.properties.property_changes + property_changes.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.property_changes.Element + _element.change_category = AAZStrType( + serialized_name="changeCategory", + ) + _element.change_type = AAZStrType( + serialized_name="changeType", + ) + _element.description = AAZStrType() + _element.display_name = AAZStrType( + serialized_name="displayName", + ) + _element.is_data_masked = AAZBoolType( + serialized_name="isDataMasked", + ) + _element.json_path = AAZStrType( + serialized_name="jsonPath", + ) + _element.level = AAZStrType() + _element.new_value = AAZStrType( + serialized_name="newValue", + ) + _element.old_value = AAZStrType( + serialized_name="oldValue", + ) + + return cls._schema_on_200 + + +__all__ = ["ListByResource"] diff --git a/src/change-analysis/azext_change_analysis/azext_metadata.json b/src/change-analysis/azext_change_analysis/azext_metadata.json new file mode 100644 index 00000000000..e6fdc728d58 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/azext_metadata.json @@ -0,0 +1,4 @@ +{ + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0" +} \ No newline at end of file diff --git a/src/change-analysis/azext_change_analysis/commands.py b/src/change-analysis/azext_change_analysis/commands.py new file mode 100644 index 00000000000..b0d842e4993 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/commands.py @@ -0,0 +1,15 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +# from azure.cli.core.commands import CliCommandType + + +def load_command_table(self, _): # pylint: disable=unused-argument + pass diff --git a/src/change-analysis/azext_change_analysis/custom.py b/src/change-analysis/azext_change_analysis/custom.py new file mode 100644 index 00000000000..86df1e48ef5 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/custom.py @@ -0,0 +1,14 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +from knack.log import get_logger + + +logger = get_logger(__name__) diff --git a/src/change-analysis/azext_change_analysis/tests/__init__.py b/src/change-analysis/azext_change_analysis/tests/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/tests/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/change-analysis/azext_change_analysis/tests/latest/__init__.py b/src/change-analysis/azext_change_analysis/tests/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/change-analysis/azext_change_analysis/tests/latest/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/change-analysis/azext_change_analysis/tests/latest/test_change_analysis.py b/src/change-analysis/azext_change_analysis/tests/latest/test_change_analysis.py new file mode 100644 index 00000000000..33babfdc31e --- /dev/null +++ b/src/change-analysis/azext_change_analysis/tests/latest/test_change_analysis.py @@ -0,0 +1,72 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +import sys +import datetime +import time +from azure.cli.testsdk import * + + +class ChangeAnalysisScenario(LiveScenarioTest): + @ResourceGroupPreparer(name_prefix="cli_test_change_analysis_") + def test_change_analysis_list(self, resource_group): + print(resource_group) + start_time = datetime.datetime.utcnow() + str_start_time = start_time.strftime('%Y-%m-%dT%H:%M:%S') + + self.kwargs.update({ + 'vnet1': 'vnet1', + 'vnet2': 'vnet2', + 'subnet1': 'subnet1', + 'location': 'centralus', + 'rg': resource_group, + 'start_time': str_start_time, + }) + print(str_start_time) + + # prepare for some resoruce changes + self.cmd('network vnet create -g {rg} -n {vnet1} --subnet-name {subnet1} -l {location}') + self.cmd('network vnet create -g {rg} -n {vnet2} --subnet-name {subnet1} -l {location}') + + # wait for up to 5 minutes to ensure changes can get to ARG + changes = {} + for x in range(10): + time.sleep(30) + end_time = datetime.datetime.utcnow() + str_end_time = end_time.strftime('%Y-%m-%dT%H:%M:%S') + print(str_end_time) + self.kwargs.update({ + 'end_time': str_end_time, + }) + # list change for subscription + changes = self.cmd('change-analysis list --start-time {start_time} --end-time {end_time}').get_output_in_json() + print(changes) + if len(changes) > 0: + break + + assert len(changes) > 0 + self.assertIsNotNone(changes[0]['id']) + property_changes = changes[0]['properties']['propertyChanges'] + resource_id = changes[0]['properties']['resourceId'] + assert len(property_changes) > 0 + + # list changes for given resoruce group + changes = self.cmd('change-analysis list --start-time {start_time} --end-time {end_time} -g {rg}').get_output_in_json() + print(changes) + assert len(changes) > 0 + for change in changes: + self.assertEqual(change['resourceGroup'], resource_group) + + # list changes for not existed group, should not get any change + changes = self.cmd('change-analysis list --start-time {start_time} --end-time {end_time} -g foo').get_output_in_json() + assert len(changes) == 0 + + # list changes by resource id + changes = self.cmd('change-analysis list-by-resource --start-time {start_time} --end-time {end_time} --r ' + resource_id).get_output_in_json() + assert len(changes) > 0 + for change in changes: + self.assertEqual(change['properties']['resourceId'], resource_id) diff --git a/src/change-analysis/setup.cfg b/src/change-analysis/setup.cfg new file mode 100644 index 00000000000..2fdd96e5d39 --- /dev/null +++ b/src/change-analysis/setup.cfg @@ -0,0 +1 @@ +#setup.cfg \ No newline at end of file diff --git a/src/change-analysis/setup.py b/src/change-analysis/setup.py new file mode 100644 index 00000000000..05651957549 --- /dev/null +++ b/src/change-analysis/setup.py @@ -0,0 +1,49 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from codecs import open +from setuptools import setup, find_packages + + +# HISTORY.rst entry. +VERSION = '0.1.0' + +# The full list of classifiers is available at +# https://pypi.python.org/pypi?%3Aaction=list_classifiers +CLASSIFIERS = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'License :: OSI Approved :: MIT License', +] + +DEPENDENCIES = [] + +with open('README.md', 'r', encoding='utf-8') as f: + README = f.read() +with open('HISTORY.rst', 'r', encoding='utf-8') as f: + HISTORY = f.read() + +setup( + name='change-analysis', + version=VERSION, + description='Microsoft Azure Command-Line Tools ChangeAnalysis Extension.', + long_description=README + '\n\n' + HISTORY, + license='MIT', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/Azure/azure-cli-extensions/tree/main/src/change-analysis', + classifiers=CLASSIFIERS, + packages=find_packages(exclude=["tests"]), + package_data={'azext_change_analysis': ['azext_metadata.json']}, + install_requires=DEPENDENCIES +) diff --git a/src/communication/HISTORY.rst b/src/communication/HISTORY.rst index fba9fafbe16..3ea0b309ff8 100644 --- a/src/communication/HISTORY.rst +++ b/src/communication/HISTORY.rst @@ -3,6 +3,16 @@ Release History =============== +1.1.2 +++++++ +* Add support for multiple SMS recipients. + + +1.1.1 +++++++ +* Fix codestyle issues in communiction command group. + + 1.1.0 ++++++ * Add communication identity command group. diff --git a/src/communication/README.md b/src/communication/README.md index a4f8b82b116..ca5cb804b7f 100644 --- a/src/communication/README.md +++ b/src/communication/README.md @@ -7,6 +7,8 @@ Install this extension using the below CLI command az extension add --name communication ``` +Then set the `AZURE_COMMUNICATION_CONNECTION_STRING` environment variable with your ACS connection string. + ### Included Features ### ##### Create ##### @@ -58,7 +60,7 @@ az communication identity issue-access-token --scope chat voip --userid "8:acs:x ##### Send-SMS ##### ``` az communication sms send-sms --sender "+1833xxxxxxx" \ - --recipient "+1425xxxxxxx" --message "Hello there!!" + --recipient "+1425xxxxxxx" "+1426xxxxxxx" "+1427xxxxxxx" --message "Hello there!!" ``` ##### List-Phonenumbers ##### ``` diff --git a/src/communication/azext_communication/manual/_help.py b/src/communication/azext_communication/manual/_help.py index 985dc43c74d..737a049a0f4 100644 --- a/src/communication/azext_communication/manual/_help.py +++ b/src/communication/azext_communication/manual/_help.py @@ -136,12 +136,12 @@ helps['communication sms send-sms'] = """ type: command - short-summary: "Sends an SMS from the sender phone number to the recipient phone number." + short-summary: "Sends an SMS from the sender phone number to the recipient(s) phone number." examples: - name: send sms text: |- az communication sms send-sms --sender "+1833xxxxxxx" \ ---recipient "+1425xxxxxxx" --message "Hello there!!" +--recipient "+1425xxxxxxx" "+1426xxxxxxx" "+1427xxxxxxx" --message "Hello there!!" """ helps['communication phonenumbers'] = """ diff --git a/src/communication/azext_communication/manual/_params.py b/src/communication/azext_communication/manual/_params.py index c9f8ce567c9..eb085b6a3f1 100644 --- a/src/communication/azext_communication/manual/_params.py +++ b/src/communication/azext_communication/manual/_params.py @@ -15,7 +15,8 @@ def load_arguments(self, _): with self.argument_context('communication sms send-sms') as c: c.argument('sender', options_list=['--sender', '-s'], type=str, help='The sender of the SMS') - c.argument('recipient', options_list=['--recipient', '-r'], type=str, help='The recipient of the SMS') + c.argument('recipients', options_list=[ + '--recipient', '-r'], nargs='+', help='The recipient(s) of the SMS') c.argument('message', options_list=['--message', '-m'], type=str, help='The message in the SMS') with self.argument_context('communication phonenumbers show-phonenumber') as c: diff --git a/src/communication/azext_communication/manual/custom.py b/src/communication/azext_communication/manual/custom.py index d801925a668..1ea75facdb1 100644 --- a/src/communication/azext_communication/manual/custom.py +++ b/src/communication/azext_communication/manual/custom.py @@ -24,8 +24,8 @@ def issue_access_token(client, scopes, userid=None): return user_token_data -def communication_send_sms(client, sender, recipient, message): - return client.send(from_=sender, to=recipient, message=message) +def communication_send_sms(client, sender, recipients, message): + return client.send(from_=sender, to=recipients, message=message) def communication_list_phonenumbers(client): diff --git a/src/communication/azext_communication/tests/latest/recording_processors.py b/src/communication/azext_communication/tests/latest/recording_processors.py index 49c274d7f8d..7286235e088 100644 --- a/src/communication/azext_communication/tests/latest/recording_processors.py +++ b/src/communication/azext_communication/tests/latest/recording_processors.py @@ -69,6 +69,8 @@ def __init__(self, keys=None, replacement="sanitized"): def process_request(self, request): import json try: + if request.body is None: + return request body = json.loads(request.body.decode()) if 'smsRecipients' in body: for item in body["smsRecipients"]: diff --git a/src/communication/azext_communication/tests/latest/recordings/test_communication_Scenario.yaml b/src/communication/azext_communication/tests/latest/recordings/test_communication_Scenario.yaml index cca240ef61c..f451e81f600 100644 --- a/src/communication/azext_communication/tests/latest/recordings/test_communication_Scenario.yaml +++ b/src/communication/azext_communication/tests/latest/recordings/test_communication_Scenario.yaml @@ -1,660 +1,835 @@ -interactions: -- request: - body: '{"location": "Global", "properties": {"dataLocation": "United States"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication create - Connection: - - keep-alive - Content-Length: - - '71' - Content-Type: - - application/json - ParameterSetName: - - --name --location --data-location --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"kairu@microsoft.com","createdByType":"User","createdAt":"2021-07-15T05:11:28.9683653Z","lastModifiedBy":"kairu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-07-15T05:11:28.9683653Z"},"properties":{"dataLocation":"United - States","provisioningState":"Accepted"}}' - headers: - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/bb56224b-5c9b-45cd-a4f0-83d12887bd23?api-version=2020-08-20 - cache-control: - - no-cache - content-length: - - '646' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:11:33 GMT - etag: - - '"4800c903-0000-0700-0000-60efc3840000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - communication create - Connection: - - keep-alive - ParameterSetName: - - --name --location --data-location --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/bb56224b-5c9b-45cd-a4f0-83d12887bd23?api-version=2020-08-20 - response: - body: - string: '{"id":"/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/bb56224b-5c9b-45cd-a4f0-83d12887bd23","name":"bb56224b-5c9b-45cd-a4f0-83d12887bd23","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Succeeded","startTime":"2021-07-15T05:11:31.3597706Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '482' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:03 GMT - etag: - - '"1c006a18-0000-0800-0000-60efc39a0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - communication create - Connection: - - keep-alive - ParameterSetName: - - --name --location --data-location --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"kairu@microsoft.com","createdByType":"User","createdAt":"2021-07-15T05:11:28.9683653Z","lastModifiedBy":"kairu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-07-15T05:11:28.9683653Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunicau3s63ukzwwyw.communication.azure.com","immutableResourceId":"34c728a2-02c4-4560-a704-6d443f3d1304","dataLocation":"United - States"}}' - headers: - cache-control: - - no-cache - content-length: - - '769' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:04 GMT - etag: - - '"4800fb03-0000-0700-0000-60efc39a0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication wait - Connection: - - keep-alive - ParameterSetName: - - --created --name --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"kairu@microsoft.com","createdByType":"User","createdAt":"2021-07-15T05:11:28.9683653Z","lastModifiedBy":"kairu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-07-15T05:11:28.9683653Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunicau3s63ukzwwyw.communication.azure.com","immutableResourceId":"34c728a2-02c4-4560-a704-6d443f3d1304","dataLocation":"United - States"}}' - headers: - cache-control: - - no-cache - content-length: - - '769' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:05 GMT - etag: - - '"4800fb03-0000-0700-0000-60efc39a0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication show - Connection: - - keep-alive - ParameterSetName: - - --name --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"kairu@microsoft.com","createdByType":"User","createdAt":"2021-07-15T05:11:28.9683653Z","lastModifiedBy":"kairu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-07-15T05:11:28.9683653Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunicau3s63ukzwwyw.communication.azure.com","immutableResourceId":"34c728a2-02c4-4560-a704-6d443f3d1304","dataLocation":"United - States"}}' - headers: - cache-control: - - no-cache - content-length: - - '769' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:06 GMT - etag: - - '"4800fb03-0000-0700-0000-60efc39a0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication list - Connection: - - keep-alive - ParameterSetName: - - --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices?api-version=2020-08-20 - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"kairu@microsoft.com","createdByType":"User","createdAt":"2021-07-15T05:11:28.9683653Z","lastModifiedBy":"kairu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-07-15T05:11:28.9683653Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunicau3s63ukzwwyw.communication.azure.com","immutableResourceId":"34c728a2-02c4-4560-a704-6d443f3d1304","dataLocation":"United - States"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '781' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:08 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/communicationServices?api-version=2020-08-20 - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"kairu@microsoft.com","createdByType":"User","createdAt":"2021-07-15T05:11:28.9683653Z","lastModifiedBy":"kairu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-07-15T05:11:28.9683653Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunicau3s63ukzwwyw.communication.azure.com","immutableResourceId":"34c728a2-02c4-4560-a704-6d443f3d1304","dataLocation":"United - States"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '781' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:08 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: '{"tags": {"newTag": "newVal"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication update - Connection: - - keep-alive - Content-Length: - - '30' - Content-Type: - - application/json - ParameterSetName: - - --name --tags --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: PATCH - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","tags":{"newTag":"newVal"},"systemData":{"createdBy":"kairu@microsoft.com","createdByType":"User","createdAt":"2021-07-15T05:11:28.9683653Z","lastModifiedBy":"kairu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-07-15T05:12:11.1294403Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunicau3s63ukzwwyw.communication.azure.com","immutableResourceId":"34c728a2-02c4-4560-a704-6d443f3d1304","dataLocation":"United - States"}}' - headers: - cache-control: - - no-cache - content-length: - - '796' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:15 GMT - etag: - - '"48000f04-0000-0700-0000-60efc3ac0000"' - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId= - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: '{"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000002/providers/Microsoft.NotificationHubs/namespaces/MyNamespace/notificationHubs/MyHub", - "connectionString": "Endpoint=sb://MyNamespace.servicebus.windows.net/;SharedAccessKey=abcd1234"}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication link-notification-hub - Connection: - - keep-alive - Content-Length: - - '341' - Content-Type: - - application/json - ParameterSetName: - - --name --connection-string --resource-id --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001/linkNotificationHub?api-version=2020-08-20 - response: - body: - string: '{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000002/providers/Microsoft.NotificationHubs/namespaces/MyNamespace/notificationHubs/MyHub"}' - headers: - cache-control: - - no-cache - content-length: - - '242' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:17 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId= - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication list-key - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - --name --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001/listKeys?api-version=2020-08-20 - response: - body: - string: '{"primaryKey":"XXXXXXXX","secondaryKey":"XXXXXXXX","primaryConnectionString":"endpoint=https://mycommunicau3s63ukzwwyw.communication.azure.com/;accesskey=XXXXXXXX","secondaryConnectionString":"endpoint=https://mycommunicau3s63ukzwwyw.communication.azure.com/;accesskey=XXXXXXXX"}' - headers: - cache-control: - - no-cache - content-length: - - '599' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:19 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId= - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 200 - message: OK -- request: - body: '{"keyType": "Primary"}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication regenerate-key - Connection: - - keep-alive - Content-Length: - - '22' - Content-Type: - - application/json - ParameterSetName: - - --name --key-type --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001/regenerateKey?api-version=2020-08-20 - response: - body: - string: '{"primaryKey":"XXXXXXXX","primaryConnectionString":"endpoint=https://mycommunicau3s63ukzwwyw.communication.azure.com/;accesskey=XXXXXXXX"}' - headers: - cache-control: - - no-cache - content-length: - - '298' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:21 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId= - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - communication delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -y --name --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 - response: - body: - string: 'null' - headers: - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/0e4b1591-b06e-478d-91e6-5ed141c710db?api-version=2020-08-20 - cache-control: - - no-cache - content-length: - - '4' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:23 GMT - etag: - - '"48003104-0000-0700-0000-60efc3b70000"' - expires: - - '-1' - location: - - https://management.azure.com/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/0e4b1591-b06e-478d-91e6-5ed141c710db?api-version=2020-08-20 - pragma: - - no-cache - request-context: - - appId= - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - communication delete - Connection: - - keep-alive - ParameterSetName: - - -y --name --resource-group - User-Agent: - - AZURECLI/2.26.0 azsdk-python-mgmt-communication/1.0.0 Python/3.8.10 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/0e4b1591-b06e-478d-91e6-5ed141c710db?api-version=2020-08-20 - response: - body: - string: '{"id":"/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/0e4b1591-b06e-478d-91e6-5ed141c710db","name":"0e4b1591-b06e-478d-91e6-5ed141c710db","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Succeeded","startTime":"2021-07-15T05:12:23.1447165Z","endTime":"2021-07-15T05:12:25.5840953Z","percentComplete":100.0,"properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '547' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 15 Jul 2021 05:12:54 GMT - etag: - - '"1c00a018-0000-0800-0000-60efc3b90000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -version: 1 \ No newline at end of file +interactions: +- request: + body: '{"location": "Global", "properties": {"dataLocation": "United States"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication create + Connection: + - keep-alive + Content-Length: + - '71' + Content-Type: + - application/json + ParameterSetName: + - --name --location --data-location --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"lakshmans@microsoft.com","createdByType":"User","createdAt":"2022-06-08T18:00:55.6740354Z","lastModifiedBy":"lakshmans@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-08T18:00:55.6740354Z"},"properties":{"dataLocation":"United + States","provisioningState":"Accepted"}}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + cache-control: + - no-cache + content-length: + - '580' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:00:56 GMT + etag: + - '"75002503-0000-0700-0000-62a0e3d80000"' + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId= + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication create + Connection: + - keep-alive + ParameterSetName: + - --name --location --data-location --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","name":"53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Accepted","startTime":"2022-06-08T18:00:56.1908518Z"}' + headers: + cache-control: + - no-cache + content-length: + - '576' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:01:26 GMT + etag: + - '"4200fb9d-0000-0800-0000-62a0e3d80000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication create + Connection: + - keep-alive + ParameterSetName: + - --name --location --data-location --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","name":"53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Accepted","startTime":"2022-06-08T18:00:56.1908518Z"}' + headers: + cache-control: + - no-cache + content-length: + - '576' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:01:56 GMT + etag: + - '"4200fb9d-0000-0800-0000-62a0e3d80000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication create + Connection: + - keep-alive + ParameterSetName: + - --name --location --data-location --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","name":"53c3d44f-cf97-48e3-8998-caa26343bec6*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Succeeded","startTime":"2022-06-08T18:00:56.1908518Z","properties":null}' + headers: + cache-control: + - no-cache + content-length: + - '595' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:26 GMT + etag: + - '"4200339e-0000-0800-0000-62a0e41a0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication create + Connection: + - keep-alive + ParameterSetName: + - --name --location --data-location --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"lakshmans@microsoft.com","createdByType":"User","createdAt":"2022-06-08T18:00:55.6740354Z","lastModifiedBy":"lakshmans@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-08T18:00:55.6740354Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunica2mrpbter43mx.communication.azure.com","immutableResourceId":"fa754975-e1ac-4b98-b487-3a2bf7ca2477","dataLocation":"United + States"}}' + headers: + cache-control: + - no-cache + content-length: + - '703' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:26 GMT + etag: + - '"75004b03-0000-0700-0000-62a0e3de0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication wait + Connection: + - keep-alive + ParameterSetName: + - --created --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"lakshmans@microsoft.com","createdByType":"User","createdAt":"2022-06-08T18:00:55.6740354Z","lastModifiedBy":"lakshmans@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-08T18:00:55.6740354Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunica2mrpbter43mx.communication.azure.com","immutableResourceId":"fa754975-e1ac-4b98-b487-3a2bf7ca2477","dataLocation":"United + States"}}' + headers: + cache-control: + - no-cache + content-length: + - '703' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:27 GMT + etag: + - '"75004b03-0000-0700-0000-62a0e3de0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication show + Connection: + - keep-alive + ParameterSetName: + - --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"lakshmans@microsoft.com","createdByType":"User","createdAt":"2022-06-08T18:00:55.6740354Z","lastModifiedBy":"lakshmans@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-08T18:00:55.6740354Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunica2mrpbter43mx.communication.azure.com","immutableResourceId":"fa754975-e1ac-4b98-b487-3a2bf7ca2477","dataLocation":"United + States"}}' + headers: + cache-control: + - no-cache + content-length: + - '703' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:28 GMT + etag: + - '"75004b03-0000-0700-0000-62a0e3de0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication list + Connection: + - keep-alive + ParameterSetName: + - --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices?api-version=2020-08-20 + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","systemData":{"createdBy":"lakshmans@microsoft.com","createdByType":"User","createdAt":"2022-06-08T18:00:55.6740354Z","lastModifiedBy":"lakshmans@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-08T18:00:55.6740354Z"},"properties":{"provisioningState":"Succeeded","hostName":"mycommunica2mrpbter43mx.communication.azure.com","immutableResourceId":"fa754975-e1ac-4b98-b487-3a2bf7ca2477","dataLocation":"United + States"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '715' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:28 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + status: + code: 200 + message: OK +- request: + body: '{"tags": {"newTag": "newVal"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication update + Connection: + - keep-alive + Content-Length: + - '30' + Content-Type: + - application/json + ParameterSetName: + - --name --tags --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","name":"MyCommunica000001","type":"microsoft.communication/communicationservices","location":"Global","tags":{"newTag":"newVal"},"systemData":{"createdBy":"lakshmans@microsoft.com","createdByType":"User","createdAt":"2022-06-08T18:00:55.6740354Z","lastModifiedBy":"lakshmans@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-08T18:02:29.625223Z"},"properties":{"hostName":"mycommunica2mrpbter43mx.communication.azure.com","immutableResourceId":"fa754975-e1ac-4b98-b487-3a2bf7ca2477","dataLocation":"United + States","provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '729' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:29 GMT + etag: + - '"75006104-0000-0700-0000-62a0e4360000"' + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId= + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: '{"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000002/providers/Microsoft.NotificationHubs/namespaces/MyNamespace/notificationHubs/MyHub", + "connectionString": "Endpoint=sb://MyNamespace.servicebus.windows.net/;SharedAccessKey=abcd1234"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication link-notification-hub + Connection: + - keep-alive + Content-Length: + - '279' + Content-Type: + - application/json + ParameterSetName: + - --name --connection-string --resource-id --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001/linkNotificationHub?api-version=2020-08-20 + response: + body: + string: '{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000002/providers/Microsoft.NotificationHubs/namespaces/MyNamespace/notificationHubs/MyHub"}' + headers: + cache-control: + - no-cache + content-length: + - '180' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:31 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId= + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication list-key + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001/listKeys?api-version=2020-08-20 + response: + body: + string: '{"primaryKey":"XXXXXXXX","secondaryKey":"XXXXXXXX","primaryConnectionString":"endpoint=https://mycommunica2mrpbter43mx.communication.azure.com/;accesskey=XXXXXXXX","secondaryConnectionString":"endpoint=https://mycommunica2mrpbter43mx.communication.azure.com/;accesskey=XXXXXXXX"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:32 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId= + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: '{"keyType": "Primary"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication regenerate-key + Connection: + - keep-alive + Content-Length: + - '22' + Content-Type: + - application/json + ParameterSetName: + - --name --key-type --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001/regenerateKey?api-version=2020-08-20 + response: + body: + string: '{"primaryKey":"XXXXXXXX","primaryConnectionString":"endpoint=https://mycommunica2mrpbter43mx.communication.azure.com/;accesskey=XXXXXXXX"}' + headers: + cache-control: + - no-cache + content-length: + - '298' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:33 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId= + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - communication delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -y --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001?api-version=2020-08-20 + response: + body: + string: 'null' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + cache-control: + - no-cache + content-length: + - '4' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:34 GMT + etag: + - '"75007304-0000-0700-0000-62a0e43a0000"' + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication delete + Connection: + - keep-alive + ParameterSetName: + - -y --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","name":"1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Deleting","startTime":"2022-06-08T18:02:34.5102735Z"}' + headers: + cache-control: + - no-cache + content-length: + - '576' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:03:04 GMT + etag: + - '"4200689e-0000-0800-0000-62a0e43a0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication delete + Connection: + - keep-alive + ParameterSetName: + - -y --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","name":"1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Deleting","startTime":"2022-06-08T18:02:34.5102735Z"}' + headers: + cache-control: + - no-cache + content-length: + - '576' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:03:34 GMT + etag: + - '"4200689e-0000-0800-0000-62a0e43a0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication delete + Connection: + - keep-alive + ParameterSetName: + - -y --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","name":"1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Succeeded","startTime":"2022-06-08T18:02:34.5102735Z","properties":null}' + headers: + cache-control: + - no-cache + content-length: + - '595' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:04:04 GMT + etag: + - '"4200b59e-0000-0800-0000-62a0e47c0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - communication delete + Connection: + - keep-alive + ParameterSetName: + - -y --name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-communication/1.0.0 Python/3.6.7 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960?api-version=2020-08-20 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Communication/locations/WESTUS2/operationStatuses/1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","name":"1ec93f0b-63ae-47b0-8885-8ccd059c2a98*8D13F51CA89E2C4BB062051BF979196FAFD3CD94D8CFA098318864C914E2B960","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000003/providers/Microsoft.Communication/communicationServices/MyCommunica000001","status":"Succeeded","startTime":"2022-06-08T18:02:34.5102735Z","properties":null}' + headers: + cache-control: + - no-cache + content-length: + - '595' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:04:04 GMT + etag: + - '"4200b59e-0000-0800-0000-62a0e47c0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token.yaml b/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token.yaml index a2b2a920eaf..39de6eeaae6 100644 --- a/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token.yaml +++ b/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token.yaml @@ -1,54 +1,54 @@ -interactions: -- request: - body: '{"createTokenWithScopes": ["chat"]}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '35' - Content-Type: - - application/json - Date: - - Mon, 06 Dec 2021 14:07:12 GMT - User-Agent: - - azsdk-python-communication-identity/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - kWpGozyV35fifbpKdY8mbdG64VG0Pdq5upzo7YKAFM0= - x-ms-return-client-request-id: - - 'true' - method: POST - uri: https://sanitized.communication.azure.com/identities?api-version=2021-03-07 - response: - body: - string: '{"identity": {"id": "sanitized"}, "accessToken": {"token": "sanitized", - "expiresOn": "2021-12-07T14:07:13.468764+00:00"}}' - headers: - api-supported-versions: - - 2020-07-20-preview2, 2021-02-22-preview1, 2021-03-07, 2021-03-31-preview1, - 2021-10-31-preview, 2021-11-01 - content-length: - - '919' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 14:07:12 GMT - ms-cv: - - lVPrNvJU5EaYuMAuqOGE7g.2.0 - request-context: - - appId= - strict-transport-security: - - max-age=2592000 - x-azure-ref: - - 0EBmuYQAAAAB2qxxHbORwTbng1P82bMArREVMMDFFREdFMDYxNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 53ms - status: - code: 201 - message: Created -version: 1 +interactions: +- request: + body: '{"createTokenWithScopes": ["chat"]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '35' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:00:51 GMT + User-Agent: + - azsdk-python-communication-identity/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - kWpGozyV35fifbpKdY8mbdG64VG0Pdq5upzo7YKAFM0= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/identities?api-version=2021-03-07 + response: + body: + string: '{"identity": {"id": "sanitized"}, "accessToken": {"token": "sanitized", + "expiresOn": "2022-06-09T18:00:51.176298+00:00"}}' + headers: + api-supported-versions: + - 2020-07-20-preview2, 2021-02-22-preview1, 2021-03-07, 2021-10-31-preview, + 2021-11-01, 2022-06-01 + content-length: + - '121' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:00:50 GMT + ms-cv: + - eElIgNeTt0O5mbftDOJZFQ.0 + request-context: + - appId= + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 00uOgYgAAAAANw4rItbYIRri9LyqlAuPbWVZSMzExMDAwMTE2MDIxADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 186ms + status: + code: 201 + message: Created +version: 1 diff --git a/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token_with_id.yaml b/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token_with_id.yaml index 2dc0b23389a..ef861c00c3e 100644 --- a/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token_with_id.yaml +++ b/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token_with_id.yaml @@ -1,104 +1,104 @@ -interactions: -- request: - body: '{}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '2' - Content-Type: - - application/json - Date: - - Mon, 06 Dec 2021 14:07:15 GMT - User-Agent: - - azsdk-python-communication-identity/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - RBNvo1WzZ4oRRq0W9+hknpT7T8If536DEMBg9hyq/4o= - x-ms-return-client-request-id: - - 'true' - method: POST - uri: https://sanitized.communication.azure.com/identities?api-version=2021-03-07 - response: - body: - string: '{"identity": {"id": "sanitized"}}' - headers: - api-supported-versions: - - 2020-07-20-preview2, 2021-02-22-preview1, 2021-03-07, 2021-03-31-preview1, - 2021-10-31-preview, 2021-11-01 - content-length: - - '101' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 14:07:17 GMT - ms-cv: - - db5x9gldH0Oox282mizq9A.2.0 - request-context: - - appId= - strict-transport-security: - - max-age=2592000 - x-azure-ref: - - 0ExmuYQAAAAD3Vfx251tyRo6XckH+lfvVREVMMDFFREdFMDUwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 42ms - status: - code: 201 - message: Created -- request: - body: '{"scopes": ["chat"]}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '20' - Content-Type: - - application/json - Date: - - Mon, 06 Dec 2021 14:07:17 GMT - User-Agent: - - azsdk-python-communication-identity/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - sZHRO4JkAmw3HcI1PyxrC5twHvkHIWjyMLVIkauXKRA= - x-ms-return-client-request-id: - - 'true' - method: POST - uri: https://sanitized.communication.azure.com/identities/sanitized/:issueAccessToken?api-version=2021-03-07 - response: - body: - string: '{"token": "sanitized", "expiresOn": "2021-12-07T14:07:19.6772889+00:00"}' - headers: - api-supported-versions: - - 2020-07-20-preview2, 2021-02-22-preview1, 2021-03-07, 2021-03-31-preview1, - 2021-10-31-preview, 2021-11-01 - content-length: - - '804' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 14:07:18 GMT - ms-cv: - - ZeXdP0jb4kO0WUp2B31C7g.2.0 - request-context: - - appId= - strict-transport-security: - - max-age=2592000 - x-azure-ref: - - 0FhmuYQAAAAC/PBbMDZ7pSZFPgP+KVjugREVMMDFFREdFMDYyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 47ms - status: - code: 200 - message: OK -version: 1 +interactions: +- request: + body: '{}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '2' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:00:51 GMT + User-Agent: + - azsdk-python-communication-identity/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - RBNvo1WzZ4oRRq0W9+hknpT7T8If536DEMBg9hyq/4o= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/identities?api-version=2021-03-07 + response: + body: + string: '{"identity": {"id": "sanitized"}}' + headers: + api-supported-versions: + - 2020-07-20-preview2, 2021-02-22-preview1, 2021-03-07, 2021-10-31-preview, + 2021-11-01, 2022-06-01 + content-length: + - '33' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:00:51 GMT + ms-cv: + - l2JTnDME60aMsbUTOQuXKQ.0 + request-context: + - appId= + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 00uOgYgAAAADuzh9y4GprTpDLQ3dRPhyNWVZSMzExMDAwMTE2MDIzADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 109ms + status: + code: 201 + message: Created +- request: + body: '{"scopes": ["chat"]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '20' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:00:51 GMT + User-Agent: + - azsdk-python-communication-identity/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - sZHRO4JkAmw3HcI1PyxrC5twHvkHIWjyMLVIkauXKRA= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/identities/sanitized/:issueAccessToken?api-version=2021-03-07 + response: + body: + string: '{"token": "sanitized", "expiresOn": "2022-06-09T18:00:51.9039474+00:00"}' + headers: + api-supported-versions: + - 2020-07-20-preview2, 2021-02-22-preview1, 2021-03-07, 2021-10-31-preview, + 2021-11-01, 2022-06-01 + content-length: + - '72' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:00:51 GMT + ms-cv: + - dusEax8NZ0mpZZ9E46pR+A.0 + request-context: + - appId= + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 00+OgYgAAAAAcpqvANpg0SbG1xR0iRxwxWVZSMzExMDAwMTE2MDMxADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 183ms + status: + code: 200 + message: OK +version: 1 diff --git a/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token_with_multiple_scopes.yaml b/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token_with_multiple_scopes.yaml new file mode 100644 index 00000000000..6a6489c4863 --- /dev/null +++ b/src/communication/azext_communication/tests/latest/recordings/test_issue_access_token_with_multiple_scopes.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: '{"createTokenWithScopes": ["voip", "chat"]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + Date: + - Tue, 14 Jun 2022 20:12:00 GMT + User-Agent: + - azsdk-python-communication-identity/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - hlYiA5kT1yt3LwEdaupQDHzQEfodx+8svsStB5uolgw= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/identities?api-version=2021-03-07 + response: + body: + string: '{"identity": {"id": "sanitized"}, "accessToken": {"token": "sanitized", + "expiresOn": "2022-06-15T20:12:00.1595868+00:00"}}' + headers: + api-supported-versions: + - 2020-07-20-preview2, 2021-02-22-preview1, 2021-03-07, 2021-10-31-preview, + 2021-11-01, 2022-06-01 + content-length: + - '122' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 14 Jun 2022 20:11:59 GMT + ms-cv: + - AJY7HIYAo0ugHKY2dt0zDw.0 + request-context: + - appId= + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 0kOuoYgAAAABGWOKFW6mDQJSUI52TlUl/U0pDRURHRTAzMTcAOWZjN2I1MTktYThjYy00Zjg5LTkzNWUtYzkxNDhhZTA5ZTgx + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 51ms + status: + code: 201 + message: Created +version: 1 diff --git a/src/communication/azext_communication/tests/latest/recordings/test_list_phonenumbers.yaml b/src/communication/azext_communication/tests/latest/recordings/test_list_phonenumbers.yaml index 535c4011638..5611221923d 100644 --- a/src/communication/azext_communication/tests/latest/recordings/test_list_phonenumbers.yaml +++ b/src/communication/azext_communication/tests/latest/recordings/test_list_phonenumbers.yaml @@ -1,373 +1,310 @@ -interactions: -- request: - body: '{"phoneNumberType": "tollFree", "assignmentType": "application", "capabilities": - {"calling": "inbound", "sms": "inbound+outbound"}, "areaCode": "833"}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '150' - Content-Type: - - application/json - Date: - - Mon, 06 Dec 2021 14:58:52 GMT - User-Agent: - - azsdk-python-communication-phonenumbers/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - k+8I+2XWVv8hfjOcXxUS3pkWDzlyAVYSAkE9keeVQKQ= - x-ms-return-client-request-id: - - 'true' - method: POST - uri: https://sanitized.communication.azure.com/availablePhoneNumbers/countries/US/:search?api-version=2021-03-07 - response: - body: - string: '' - headers: - access-control-expose-headers: - - Location,Operation-Location,operation-id,search-id - api-supported-versions: - - '2021-03-07' - content-length: - - '0' - date: - - Mon, 06 Dec 2021 14:58:55 GMT - location: - - /availablePhoneNumbers/searchResults/5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07 - ms-cv: - - TphBgYsAx0mhayt5jm5ydg.0 - operation-id: - - search_5198a1ca-73d6-4fc9-a435-2d6fab200026 - operation-location: - - /phoneNumbers/operations/search_5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07 - request-context: - - appId= - search-id: - - 5198a1ca-73d6-4fc9-a435-2d6fab200026 - x-azure-ref: - - 0LSWuYQAAAACXHITBS5tiQrnS4SHxO5R+REVMMDFFREdFMDYyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 2154ms - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Date: - - Mon, 06 Dec 2021 14:59:26 GMT - User-Agent: - - azsdk-python-communication-phonenumbers/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= - x-ms-return-client-request-id: - - 'true' - method: GET - uri: https://sanitized.communication.azure.com/phoneNumbers/operations/search_5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07 - response: - body: - string: '{"operationType": "search", "status": "succeeded", "resourceLocation": - "/availablePhoneNumbers/searchResults/5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07", - "createdDateTime": "2021-12-06T14:58:55.7391553+00:00", "id": "sanitized", - "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' - headers: - access-control-expose-headers: - - Location - api-supported-versions: - - '2021-03-07' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 14:59:26 GMT - location: - - /availablePhoneNumbers/searchResults/5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07 - ms-cv: - - ueyyTekDV0q7YM6o4Wk8dg.0 - request-context: - - appId= - transfer-encoding: - - chunked - x-azure-ref: - - 0TiWuYQAAAAAEK1xXX1leSL0ZN+EYgzEKREVMMDFFREdFMDYyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 247ms - status: - code: 200 - message: OK - url: sanitized -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Date: - - Mon, 06 Dec 2021 14:59:26 GMT - User-Agent: - - azsdk-python-communication-phonenumbers/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= - x-ms-return-client-request-id: - - 'true' - method: GET - uri: https://sanitized.communication.azure.com/availablePhoneNumbers/searchResults/5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07 - response: - body: - string: '{"searchId": "5198a1ca-73d6-4fc9-a435-2d6fab200026", "phoneNumbers": - ["sanitized"], "phoneNumberType": "tollFree", "assignmentType": "application", - "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, "cost": - {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}, "searchExpiresBy": - "2021-12-06T15:14:58.1021432+00:00"}' - headers: - api-supported-versions: - - '2021-03-07' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 14:59:27 GMT - ms-cv: - - Qkkas7hLjUyZ2Jn2Eyz/8w.0 - request-context: - - appId= - transfer-encoding: - - chunked - x-azure-ref: - - 0TiWuYQAAAADGQyi9ZfamToBHfKhv/uwdREVMMDFFREdFMDYyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 843ms - status: - code: 200 - message: OK - url: sanitized -- request: - body: '{"searchId": "5198a1ca-73d6-4fc9-a435-2d6fab200026"}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '52' - Content-Type: - - application/json - Date: - - Mon, 06 Dec 2021 14:59:27 GMT - User-Agent: - - azsdk-python-communication-phonenumbers/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - q7k7dQmReElvco5HyMOMKjtmo0X24DIPCWqYL6+MTkY= - x-ms-return-client-request-id: - - 'true' - method: POST - uri: https://sanitized.communication.azure.com/availablePhoneNumbers/:purchase?api-version=2021-03-07 - response: - body: - string: '' - headers: - access-control-expose-headers: - - Operation-Location,operation-id,purchase-id - api-supported-versions: - - '2021-03-07' - content-length: - - '0' - date: - - Mon, 06 Dec 2021 14:59:29 GMT - ms-cv: - - KkJTT8iP0UmCc629ExcpNA.0 - operation-id: - - purchase_5198a1ca-73d6-4fc9-a435-2d6fab200026 - operation-location: - - /phoneNumbers/operations/purchase_5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07 - purchase-id: - - 5198a1ca-73d6-4fc9-a435-2d6fab200026 - request-context: - - appId= - x-azure-ref: - - 0TyWuYQAAAAA5ywhIx0IDRoxWDL+wDJJWREVMMDFFREdFMDYyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 1808ms - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Date: - - Mon, 06 Dec 2021 14:59:59 GMT - User-Agent: - - azsdk-python-communication-phonenumbers/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= - x-ms-return-client-request-id: - - 'true' - method: GET - uri: https://sanitized.communication.azure.com/phoneNumbers/operations/purchase_5198a1ca-73d6-4fc9-a435-2d6fab200026?api-version=2021-03-07 - response: - body: - string: '{"operationType": "purchase", "status": "succeeded", "resourceLocation": - null, "createdDateTime": "2021-12-06T14:58:55.7391553+00:00", "id": "sanitized", - "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' - headers: - api-supported-versions: - - '2021-03-07' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 14:59:59 GMT - ms-cv: - - 1e34DE/Vck60Ag439mDuGg.0 - request-context: - - appId= - transfer-encoding: - - chunked - x-azure-ref: - - 0cCWuYQAAAAA28NbjrOS4QJ2nZdv5YJOuREVMMDFFREdFMDYyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 308ms - status: - code: 200 - message: OK - url: sanitized -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Date: - - Mon, 06 Dec 2021 15:00:00 GMT - User-Agent: - - azsdk-python-communication-phonenumbers/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= - x-ms-return-client-request-id: - - 'true' - method: GET - uri: https://sanitized.communication.azure.com/phoneNumbers?skip=0&top=100&api-version=2021-03-07 - response: - body: - string: '{"phoneNumbers": [{"id": "sanitized", "phoneNumber": "sanitized", "countryCode": - "US", "phoneNumberType": "geographic", "capabilities": {"calling": "inbound+outbound", - "sms": "none"}, "assignmentType": "application", "purchaseDate": "2021-04-08T17:35:37.4352574+00:00", - "cost": {"amount": 1.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-11-17T11:47:47.2286877+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-12-06T14:48:37.2341582+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-12-06T14:59:45.3037046+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-12-06T14:38:13.1987611+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-08-04T09:49:45.3765116+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound+outbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-04-06T23:29:30.1082746+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound+outbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-04-08T19:23:21.6246128+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound+outbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-04-08T19:23:49.1286852+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "none", "sms": "outbound"}, "assignmentType": - "application", "purchaseDate": "2021-04-12T08:20:46.6769231+00:00", "cost": - {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, {"id": - "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "none", "sms": "outbound"}, "assignmentType": - "application", "purchaseDate": "2021-04-12T13:14:11.6087977+00:00", "cost": - {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, {"id": - "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "outbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-04-12T13:18:16.5746747+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "none", "sms": "outbound"}, "assignmentType": - "application", "purchaseDate": "2021-04-12T15:41:20.7171509+00:00", "cost": - {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, {"id": - "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-04-13T12:13:04.2873741+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-04-13T12:15:50.8017707+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-12-06T14:42:54.2122448+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}, - {"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", "phoneNumberType": - "tollFree", "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, - "assignmentType": "application", "purchaseDate": "2021-12-06T14:54:33.3820288+00:00", - "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}]}' - headers: - api-supported-versions: - - '2021-03-07' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 15:00:05 GMT - ms-cv: - - /ussJzn8ckSzlBOSdDRu5g.0 - request-context: - - appId= - transfer-encoding: - - chunked - x-azure-ref: - - 0cCWuYQAAAABQVtDD6YS/T7TMIoPNqdu9REVMMDFFREdFMDYxNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 4648ms - status: - code: 200 - message: OK - url: sanitized -version: 1 +interactions: +- request: + body: '{"phoneNumberType": "tollFree", "assignmentType": "application", "capabilities": + {"calling": "inbound", "sms": "inbound+outbound"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '131' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:00:51 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - ecyowPPqS6i2jEjg4ZPaHAki9yDR8IHa8lF+VXRefVM= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/countries/US/:search?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Location,Operation-Location,operation-id,search-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Wed, 08 Jun 2022 18:00:54 GMT + location: + - /availablePhoneNumbers/searchResults/57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07 + ms-cv: + - tNidcKnOGk6i8nmozvpySA.0 + operation-id: + - search_57ed2b65-3611-40b9-aa38-0df5f4291b2a + operation-location: + - /phoneNumbers/operations/search_57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07 + search-id: + - 57ed2b65-3611-40b9-aa38-0df5f4291b2a + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 00uOgYgAAAACESRSYtxqFTLkpacwwIWI8WVZSMzExMDAwMTE2MDM5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 3948ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:01:25 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/search_57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07 + response: + body: + string: '{"operationType": "search", "status": "succeeded", "resourceLocation": + "/availablePhoneNumbers/searchResults/57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07", + "createdDateTime": "2022-06-08T18:00:54.6717955+00:00", "id": "sanitized", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + access-control-expose-headers: + - Location + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:01:24 GMT + location: + - /availablePhoneNumbers/searchResults/57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07 + ms-cv: + - 4rhhQFobjU+zNfd6nPVCnw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 09eOgYgAAAABx7MvFB/xvQJOu2thlMlzYWVZSMzExMDAwMTE2MDM5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 391ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:01:26 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/searchResults/57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07 + response: + body: + string: '{"searchId": "57ed2b65-3611-40b9-aa38-0df5f4291b2a", "phoneNumbers": + ["sanitized"], "phoneNumberType": "tollFree", "assignmentType": "application", + "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, "cost": + {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}, "searchExpiresBy": + "2022-06-08T18:17:00.3072592+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:01:26 GMT + ms-cv: + - /P7NTDCbcEe4V+EvxJ70wA.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 09eOgYgAAAACgNKZXbd/LSKRjj7kCjtS7WVZSMzExMDAwMTE2MDM5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 1061ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"searchId": "57ed2b65-3611-40b9-aa38-0df5f4291b2a"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '52' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:01:27 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 4ztvkrPnGXN1Lms0ny44NvlCOk0qMW2/GAFb7Vkvy+k= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/:purchase?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Operation-Location,operation-id,purchase-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Wed, 08 Jun 2022 18:01:28 GMT + ms-cv: + - gHSQLQB3o0qiHLYLQoaB/Q.0 + operation-id: + - purchase_57ed2b65-3611-40b9-aa38-0df5f4291b2a + operation-location: + - /phoneNumbers/operations/purchase_57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07 + purchase-id: + - 57ed2b65-3611-40b9-aa38-0df5f4291b2a + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 09uOgYgAAAABcg5WUapHtS5XQnLop0wq3WVZSMzExMDAwMTE2MDM5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 2399ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:01:59 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/purchase_57ed2b65-3611-40b9-aa38-0df5f4291b2a?api-version=2021-03-07 + response: + body: + string: '{"operationType": "purchase", "status": "succeeded", "resourceLocation": + null, "createdDateTime": "2022-06-08T18:00:54.6717955+00:00", "id": "sanitized", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:02 GMT + ms-cv: + - 2MSgGRW+s0K8inmJxei0UQ.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0F+SgYgAAAACt2WMAMGD7TJzFt5Xpb/jUWVZSMzExMDAwMTE2MDM5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 3376ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:02:03 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers?skip=0&top=100&api-version=2021-03-07 + response: + body: + string: '{"phoneNumbers": [{"id": "sanitized", "phoneNumber": "sanitized", "countryCode": + "US", "phoneNumberType": "tollFree", "capabilities": {"calling": "inbound", + "sms": "inbound+outbound"}, "assignmentType": "application", "purchaseDate": + "2022-06-08T18:01:43.7922431+00:00", "cost": {"amount": 2.0, "currencyCode": + "USD", "billingFrequency": "monthly"}}]}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:05 GMT + ms-cv: + - yeu88UFdLEOXJ3RhBiPLPQ.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0G+SgYgAAAAAqDZN2dXA/SbZVXPJGmxDTWVZSMzExMDAwMTE2MDE3ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 2066ms + status: + code: 200 + message: OK + url: sanitized +version: 1 diff --git a/src/communication/azext_communication/tests/latest/recordings/test_send_sms.yaml b/src/communication/azext_communication/tests/latest/recordings/test_send_sms.yaml index d51f151c947..c18496a0724 100644 --- a/src/communication/azext_communication/tests/latest/recordings/test_send_sms.yaml +++ b/src/communication/azext_communication/tests/latest/recordings/test_send_sms.yaml @@ -1,54 +1,313 @@ -interactions: -- request: - body: '{"from": "sanitized", "smsRecipients": [{"to": "sanitized", "repeatabilityRequestId": - "sanitized", "repeatabilityFirstSent": "sanitized"}], "message": "Hello there!!", - "smsSendOptions": {"enableDeliveryReport": false}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '272' - Content-Type: - - application/json - Date: - - Mon, 06 Dec 2021 15:36:19 GMT - User-Agent: - - azsdk-python-communication-sms/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - sbLx+oenggMafURnlxO00AGzgCK+WSJHuexmoPo3DyA= - x-ms-return-client-request-id: - - 'true' - method: POST - uri: https://sanitized.communication.azure.com/sms?api-version=2021-03-07 - response: - body: - string: '{"value": [{"to": "sanitized", "messageId": "sanitized", "httpStatusCode": - 202, "repeatabilityResult": "accepted", "successful": true}]}' - headers: - api-supported-versions: - - 2020-07-20-preview1, 2020-08-20-preview, 2021-03-07 - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Dec 2021 15:36:20 GMT - ms-cv: - - Ughjm5n6kEilMk/999Ucjg.0 - request-context: - - appId= - transfer-encoding: - - chunked - x-azure-ref: - - 08y2uYQAAAAAV31ZEY/dhTpUOlNFrXq3mREVMMDFFREdFMDYxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 442ms - status: - code: 202 - message: Accepted - url: sanitized -version: 1 +interactions: +- request: + body: '{"phoneNumberType": "tollFree", "assignmentType": "application", "capabilities": + {"calling": "inbound", "sms": "inbound+outbound"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '131' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:02:28 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - ecyowPPqS6i2jEjg4ZPaHAki9yDR8IHa8lF+VXRefVM= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/countries/US/:search?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Location,Operation-Location,operation-id,search-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Wed, 08 Jun 2022 18:02:30 GMT + location: + - /availablePhoneNumbers/searchResults/2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07 + ms-cv: + - wc/MCoMN1keywSc8+QuPsg.0 + operation-id: + - search_2d19903b-7822-4be9-86f8-377c31f6ebd8 + operation-location: + - /phoneNumbers/operations/search_2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07 + search-id: + - 2d19903b-7822-4be9-86f8-377c31f6ebd8 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 0NOSgYgAAAAC68Dpsh9UXQpx3Q4xyPfU5WVZSMzExMDAwMTE1MDUzADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 3153ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:03:01 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/search_2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07 + response: + body: + string: '{"operationType": "search", "status": "succeeded", "resourceLocation": + "/availablePhoneNumbers/searchResults/2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07", + "createdDateTime": "2022-06-08T18:02:30.9157918+00:00", "id": "search_2d19903b-7822-4be9-86f8-377c31f6ebd8", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + access-control-expose-headers: + - Location + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:03:01 GMT + location: + - /availablePhoneNumbers/searchResults/2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07 + ms-cv: + - BkOg+uQH/0+c8J3mWA1Ntw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0VeSgYgAAAACdaRoazdmkRIwEjtG5OEeUWVZSMzExMDAwMTE1MDUzADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 440ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:03:02 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/searchResults/2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07 + response: + body: + string: '{"searchId": "2d19903b-7822-4be9-86f8-377c31f6ebd8", "phoneNumbers": + ["+18772136127"], "phoneNumberType": "tollFree", "assignmentType": "application", + "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, "cost": + {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}, "searchExpiresBy": + "2022-06-08T18:18:34.2527577+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:03:02 GMT + ms-cv: + - KftmnlmZCEuRQXGSAKSWew.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0VuSgYgAAAACzQX6HdkuVQo9jpwDikjNSWVZSMzExMDAwMTE1MDUzADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 1351ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"searchId": "2d19903b-7822-4be9-86f8-377c31f6ebd8"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '52' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:03:03 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 6KqXgRvvk0OY7unyaDWoIwxdZiw3zPrEZA+ZxnoQtiE= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/:purchase?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Operation-Location,operation-id,purchase-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Wed, 08 Jun 2022 18:03:05 GMT + ms-cv: + - cFfdSeiOBkCKoxwWgQ7Tvg.0 + operation-id: + - purchase_2d19903b-7822-4be9-86f8-377c31f6ebd8 + operation-location: + - /phoneNumbers/operations/purchase_2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07 + purchase-id: + - 2d19903b-7822-4be9-86f8-377c31f6ebd8 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 0V+SgYgAAAAC7WoZTMar7SbFI/I34BaOPWVZSMzExMDAwMTE1MDUzADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 2356ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:03:36 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/purchase_2d19903b-7822-4be9-86f8-377c31f6ebd8?api-version=2021-03-07 + response: + body: + string: '{"operationType": "purchase", "status": "succeeded", "resourceLocation": + null, "createdDateTime": "2022-06-08T18:02:30.9157918+00:00", "id": "purchase_2d19903b-7822-4be9-86f8-377c31f6ebd8", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:03:35 GMT + ms-cv: + - yK2hANyhFEWAxcVDTeQ+gw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0d+SgYgAAAACkf6llJn4PRJ7zBU8vQCrqWVZSMzExMDAwMTE1MDUzADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 605ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"from": "sanitized", "smsRecipients": [{"to": "sanitized", "repeatabilityRequestId": + "sanitized", "repeatabilityFirstSent": "sanitized"}], "message": "Hello there!!", + "smsSendOptions": {"enableDeliveryReport": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '218' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:03:37 GMT + User-Agent: + - azsdk-python-communication-sms/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - MHxiUlyEp5c1qcJx+CiIZ0pGD9nPTrRNrJLpmTrI9fE= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/sms?api-version=2021-03-07 + response: + body: + string: '{"value": [{"to": "sanitized", "messageId": "sanitized", "httpStatusCode": + 202, "repeatabilityResult": "accepted", "successful": true}]}' + headers: + api-supported-versions: + - 2020-07-20-preview1, 2020-08-20-preview, 2021-03-07 + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:03:37 GMT + ms-cv: + - caOZFxgqzEq0S5SXOsANOQ.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0eOSgYgAAAADLZumqCoXoRL4bqT/E1BTrWVZSMzExMDAwMTE1MDI1ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 147ms + status: + code: 202 + message: Accepted + url: sanitized +version: 1 diff --git a/src/communication/azext_communication/tests/latest/recordings/test_send_sms_n_recipients.yaml b/src/communication/azext_communication/tests/latest/recordings/test_send_sms_n_recipients.yaml new file mode 100644 index 00000000000..ceba458eb35 --- /dev/null +++ b/src/communication/azext_communication/tests/latest/recordings/test_send_sms_n_recipients.yaml @@ -0,0 +1,846 @@ +interactions: +- request: + body: '{"phoneNumberType": "tollFree", "assignmentType": "application", "capabilities": + {"calling": "inbound", "sms": "inbound+outbound"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '131' + Content-Type: + - application/json + Date: + - Fri, 10 Jun 2022 00:30:17 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - ecyowPPqS6i2jEjg4ZPaHAki9yDR8IHa8lF+VXRefVM= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/countries/US/:search?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Location,Operation-Location,operation-id,search-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 10 Jun 2022 00:30:22 GMT + location: + - /availablePhoneNumbers/searchResults/2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07 + ms-cv: + - +fn8wM5+S0q51QDBzbKCog.0 + operation-id: + - search_2a77a8fc-7ce6-4772-a73f-032383693ea4 + operation-location: + - /phoneNumbers/operations/search_2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07 + search-id: + - 2a77a8fc-7ce6-4772-a73f-032383693ea4 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 20220610T003017Z-vkhs01dsad2yh0kuygqupe3vh400000000yg00000003quhm + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 4685ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:30:52 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/search_2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07 + response: + body: + string: '{"operationType": "search", "status": "succeeded", "resourceLocation": + "/availablePhoneNumbers/searchResults/2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07", + "createdDateTime": "2022-06-10T00:30:21.7878417+00:00", "id": "search_2a77a8fc-7ce6-4772-a73f-032383693ea4", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + access-control-expose-headers: + - Location + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + connection: + - keep-alive + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:30:52 GMT + location: + - /availablePhoneNumbers/searchResults/2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07 + ms-cv: + - DBDSfYSCMkSu6H6XS2h1YA.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 20220610T003052Z-vkhs01dsad2yh0kuygqupe3vh400000000yg00000003r5ww + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 354ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:30:53 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/searchResults/2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07 + response: + body: + string: '{"searchId": "2a77a8fc-7ce6-4772-a73f-032383693ea4", "phoneNumbers": + ["+18772141103"], "phoneNumberType": "tollFree", "assignmentType": "application", + "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, "cost": + {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}, "searchExpiresBy": + "2022-06-10T00:46:24.0376156+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + connection: + - keep-alive + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:30:53 GMT + ms-cv: + - MXztCMP7xkK/bAxKlAOoXw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 20220610T003052Z-vkhs01dsad2yh0kuygqupe3vh400000000yg00000003r60n + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 996ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"searchId": "2a77a8fc-7ce6-4772-a73f-032383693ea4"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '52' + Content-Type: + - application/json + Date: + - Fri, 10 Jun 2022 00:30:54 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - BV6FA4pfi1Zv445E+sTv+/uYtzt/J9dNJciBRr+jECw= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/:purchase?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Operation-Location,operation-id,purchase-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 10 Jun 2022 00:30:56 GMT + ms-cv: + - tuLIr2lQ30eN1mBmaF5S9Q.0 + operation-id: + - purchase_2a77a8fc-7ce6-4772-a73f-032383693ea4 + operation-location: + - /phoneNumbers/operations/purchase_2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07 + purchase-id: + - 2a77a8fc-7ce6-4772-a73f-032383693ea4 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 20220610T003053Z-vkhs01dsad2yh0kuygqupe3vh400000000yg00000003r68w + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 2014ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:31:26 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/purchase_2a77a8fc-7ce6-4772-a73f-032383693ea4?api-version=2021-03-07 + response: + body: + string: '{"operationType": "purchase", "status": "succeeded", "resourceLocation": + null, "createdDateTime": "2022-06-10T00:30:21.7878417+00:00", "id": "purchase_2a77a8fc-7ce6-4772-a73f-032383693ea4", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + connection: + - keep-alive + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:31:26 GMT + ms-cv: + - VVi5q8hRtkWAs7yT+fXhQw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 20220610T003126Z-vkhs01dsad2yh0kuygqupe3vh400000000yg00000003re3t + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 352ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"phoneNumberType": "tollFree", "assignmentType": "application", "capabilities": + {"calling": "inbound", "sms": "inbound+outbound"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '131' + Content-Type: + - application/json + Date: + - Fri, 10 Jun 2022 00:31:26 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - ecyowPPqS6i2jEjg4ZPaHAki9yDR8IHa8lF+VXRefVM= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/countries/US/:search?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Location,Operation-Location,operation-id,search-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Fri, 10 Jun 2022 00:31:30 GMT + location: + - /availablePhoneNumbers/searchResults/9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07 + ms-cv: + - CTvU+d3B10OAyDyimusTQQ.0 + operation-id: + - search_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8 + operation-location: + - /phoneNumbers/operations/search_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07 + search-id: + - 9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 03pCiYgAAAABym+z6OLdtRIXte0D3bHvjWVZSMzExMDAwMTE1MDQ5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 3465ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:32:00 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/search_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07 + response: + body: + string: '{"operationType": "search", "status": "succeeded", "resourceLocation": + "/availablePhoneNumbers/searchResults/9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07", + "createdDateTime": "2022-06-10T00:31:29.987717+00:00", "id": "search_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + access-control-expose-headers: + - Location + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:32:00 GMT + location: + - /availablePhoneNumbers/searchResults/9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07 + ms-cv: + - RnwSeXFQAk65AzAjyoCW0A.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0AJGiYgAAAADePP3btPsUQZRuiXVk38L0WVZSMzExMDAwMTE1MDQ5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 419ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:32:01 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/searchResults/9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07 + response: + body: + string: '{"searchId": "9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8", "phoneNumbers": + ["+18772140942"], "phoneNumberType": "tollFree", "assignmentType": "application", + "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, "cost": + {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}, "searchExpiresBy": + "2022-06-10T00:47:31.6891869+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:32:01 GMT + ms-cv: + - mJ+J5laoIEaklSxJkTT0dA.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0AJGiYgAAAAAemXn6XSbjSI3mk2hCOnoiWVZSMzExMDAwMTE1MDQ5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 1318ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"searchId": "9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '52' + Content-Type: + - application/json + Date: + - Fri, 10 Jun 2022 00:32:02 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 4gT6hwYkybeyRb/nFizXtBsR2Z5JTg6RrOJHob619C8= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/:purchase?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Operation-Location,operation-id,purchase-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Fri, 10 Jun 2022 00:32:04 GMT + ms-cv: + - kvuFUQZsIEe8U5kL4tYXkQ.0 + operation-id: + - purchase_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8 + operation-location: + - /phoneNumbers/operations/purchase_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07 + purchase-id: + - 9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 0ApGiYgAAAAAi+0TobkonSaHUuNJUrsN2WVZSMzExMDAwMTE1MDQ5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 2577ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:32:35 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/purchase_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8?api-version=2021-03-07 + response: + body: + string: '{"operationType": "purchase", "status": "succeeded", "resourceLocation": + null, "createdDateTime": "2022-06-10T00:31:29.987717+00:00", "id": "purchase_9ee520b5-b3e2-4d78-a93e-9ce72f84a2d8", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:32:35 GMT + ms-cv: + - t7E+qYnrZUqhlNUAgurExw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0I5GiYgAAAABVAffr+9LHSJGE79ONoYv7WVZSMzExMDAwMTE1MDQ5ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 523ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"phoneNumberType": "tollFree", "assignmentType": "application", "capabilities": + {"calling": "inbound", "sms": "inbound+outbound"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '131' + Content-Type: + - application/json + Date: + - Fri, 10 Jun 2022 00:32:36 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - ecyowPPqS6i2jEjg4ZPaHAki9yDR8IHa8lF+VXRefVM= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/countries/US/:search?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Location,Operation-Location,operation-id,search-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Fri, 10 Jun 2022 00:32:39 GMT + location: + - /availablePhoneNumbers/searchResults/ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07 + ms-cv: + - mHXHn77MrUq/c5IGFEXqTw.0 + operation-id: + - search_ae35ad5e-1138-47ef-b1b6-ce579796d10f + operation-location: + - /phoneNumbers/operations/search_ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07 + search-id: + - ae35ad5e-1138-47ef-b1b6-ce579796d10f + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 0JJGiYgAAAAAzHwJIGxcORrGdtKls3X2FWVZSMzExMDAwMTE1MDMxADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 3047ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:33:09 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/search_ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07 + response: + body: + string: '{"operationType": "search", "status": "succeeded", "resourceLocation": + "/availablePhoneNumbers/searchResults/ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07", + "createdDateTime": "2022-06-10T00:32:39.0104623+00:00", "id": "search_ae35ad5e-1138-47ef-b1b6-ce579796d10f", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + access-control-expose-headers: + - Location + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:33:09 GMT + location: + - /availablePhoneNumbers/searchResults/ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07 + ms-cv: + - /h9iuNBSuEOBdmP5q3GFMw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0RZGiYgAAAADN8MXhG+tMTJdoN3ugIt6vWVZSMzExMDAwMTE1MDMxADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 383ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:33:10 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/searchResults/ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07 + response: + body: + string: '{"searchId": "ae35ad5e-1138-47ef-b1b6-ce579796d10f", "phoneNumbers": + ["+18772141128"], "phoneNumberType": "tollFree", "assignmentType": "application", + "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, "cost": + {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}, "searchExpiresBy": + "2022-06-10T00:48:41.0192184+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:33:10 GMT + ms-cv: + - 34BG4q70TEqPdoVVeDvQtA.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0RZGiYgAAAAAaTb4eRjM+QbswrRpuXUc3WVZSMzExMDAwMTE1MDMxADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 1052ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"searchId": "ae35ad5e-1138-47ef-b1b6-ce579796d10f"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '52' + Content-Type: + - application/json + Date: + - Fri, 10 Jun 2022 00:33:11 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - xb/h6KWvvBXU4pGpU9/e+VsfP1lIoCTUmlHew4CxKew= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/:purchase?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Operation-Location,operation-id,purchase-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Fri, 10 Jun 2022 00:33:12 GMT + ms-cv: + - r2McfMGad0m6O0OfTjpfYQ.0 + operation-id: + - purchase_ae35ad5e-1138-47ef-b1b6-ce579796d10f + operation-location: + - /phoneNumbers/operations/purchase_ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07 + purchase-id: + - ae35ad5e-1138-47ef-b1b6-ce579796d10f + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 0R5GiYgAAAACKOcURNINHS6oLMXoBnxZOWVZSMzExMDAwMTE1MDMxADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 1932ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Fri, 10 Jun 2022 00:33:43 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/purchase_ae35ad5e-1138-47ef-b1b6-ce579796d10f?api-version=2021-03-07 + response: + body: + string: '{"operationType": "purchase", "status": "succeeded", "resourceLocation": + null, "createdDateTime": "2022-06-10T00:32:39.0104623+00:00", "id": "purchase_ae35ad5e-1138-47ef-b1b6-ce579796d10f", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:33:43 GMT + ms-cv: + - bCvrtDlNo061lBh9dwzOfA.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0Z5GiYgAAAAAUai8L+74jRLA3CpgNyTtZWVZSMzExMDAwMTE1MDMxADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 505ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"from": "sanitized", "smsRecipients": [{"to": "sanitized", "repeatabilityRequestId": + "sanitized", "repeatabilityFirstSent": "sanitized"}, {"to": "sanitized", "repeatabilityRequestId": + "sanitized", "repeatabilityFirstSent": "sanitized"}], "message": "Hello there!!", + "smsSendOptions": {"enableDeliveryReport": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '317' + Content-Type: + - application/json + Date: + - Fri, 10 Jun 2022 00:33:44 GMT + User-Agent: + - azsdk-python-communication-sms/1.0.1 Python/3.6.7 (Windows-10-10.0.19041-SP0) + x-ms-content-sha256: + - 6RZC16+wt2HTn777vQeKwmnhn5prkv+gWuEl64AtAY4= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/sms?api-version=2021-03-07 + response: + body: + string: '{"value": [{"to": "sanitized", "messageId": "sanitized", "httpStatusCode": + 202, "repeatabilityResult": "accepted", "successful": true}, {"to": "sanitized", + "messageId": "sanitized", "httpStatusCode": 202, "repeatabilityResult": "accepted", + "successful": true}]}' + headers: + api-supported-versions: + - 2020-07-20-preview1, 2020-08-20-preview, 2021-03-07 + connection: + - keep-alive + content-type: + - application/json; charset=utf-8 + date: + - Fri, 10 Jun 2022 00:33:44 GMT + ms-cv: + - 693m7+l1fkW7uVBTNlo9wQ.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 20220610T003343Z-0w7e84pgat29pcfezeursvyhe400000000zg00000001ryy4 + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 300ms + status: + code: 202 + message: Accepted + url: sanitized +version: 1 diff --git a/src/communication/azext_communication/tests/latest/recordings/test_show_phonenumbers.yaml b/src/communication/azext_communication/tests/latest/recordings/test_show_phonenumbers.yaml index 7604e85beb3..d924533ff31 100644 --- a/src/communication/azext_communication/tests/latest/recordings/test_show_phonenumbers.yaml +++ b/src/communication/azext_communication/tests/latest/recordings/test_show_phonenumbers.yaml @@ -1,51 +1,309 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Date: - - Fri, 10 Dec 2021 13:47:18 GMT - User-Agent: - - azsdk-python-communication-phonenumbers/1.0.1 Python/3.8.10 (Windows-10-10.0.22000-SP0) - x-ms-content-sha256: - - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= - x-ms-return-client-request-id: - - 'true' - method: GET - uri: https://sanitized.communication.azure.com/phoneNumbers/sanitized?api-version=2021-03-07 - response: - body: - string: '{"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", - "phoneNumberType": "tollFree", "capabilities": {"calling": "inbound+outbound", - "sms": "inbound+outbound"}, "assignmentType": "application", "purchaseDate": - "2021-04-06T23:29:30.1082746+00:00", "cost": {"amount": 2.0, "currencyCode": - "USD", "billingFrequency": "monthly"}}' - headers: - api-supported-versions: - - 2021-03-07, 2022-01-11-preview - content-type: - - application/json; charset=utf-8 - date: - - Fri, 10 Dec 2021 13:47:20 GMT - ms-cv: - - t1sLcRKtiEafCidj5PG1hQ.0 - request-context: - - appId= - transfer-encoding: - - chunked - x-azure-ref: - - 0ZlqzYQAAAADKZ2o7XZjuRb2RbOfSdZtpREVMMDFFREdFMDUyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE= - x-cache: - - CONFIG_NOCACHE - x-processing-time: - - 1311ms - status: - code: 200 - message: OK - url: sanitized -version: 1 \ No newline at end of file +interactions: +- request: + body: '{"phoneNumberType": "tollFree", "assignmentType": "application", "capabilities": + {"calling": "inbound", "sms": "inbound+outbound"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '131' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:00:50 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - ecyowPPqS6i2jEjg4ZPaHAki9yDR8IHa8lF+VXRefVM= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/countries/US/:search?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Location,Operation-Location,operation-id,search-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Wed, 08 Jun 2022 18:00:54 GMT + location: + - /availablePhoneNumbers/searchResults/1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07 + ms-cv: + - +95abflzOUmlk3tSLWhRLQ.0 + operation-id: + - search_1a2d9e4f-67ac-4504-8085-bf164927bab1 + operation-location: + - /phoneNumbers/operations/search_1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07 + search-id: + - 1a2d9e4f-67ac-4504-8085-bf164927bab1 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 00uOgYgAAAAAS+y0Jx9PyRprYYcDyXUEjWVZSMzExMDAwMTE2MDE3ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 4165ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:01:25 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/search_1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07 + response: + body: + string: '{"operationType": "search", "status": "succeeded", "resourceLocation": + "/availablePhoneNumbers/searchResults/1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07", + "createdDateTime": "2022-06-08T18:00:54.7468605+00:00", "id": "sanitized", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + access-control-expose-headers: + - Location + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:01:24 GMT + location: + - /availablePhoneNumbers/searchResults/1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07 + ms-cv: + - 9+nN/zPYvEyJH6ULvl7dvw.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 09eOgYgAAAACO5C35sAplQrhPfjRIIIDkWVZSMzExMDAwMTE2MDE3ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 439ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:01:26 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/searchResults/1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07 + response: + body: + string: '{"searchId": "1a2d9e4f-67ac-4504-8085-bf164927bab1", "phoneNumbers": + ["sanitized"], "phoneNumberType": "tollFree", "assignmentType": "application", + "capabilities": {"calling": "inbound", "sms": "inbound+outbound"}, "cost": + {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}, "searchExpiresBy": + "2022-06-08T18:16:56.9281142+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:01:26 GMT + ms-cv: + - DfhdOwAgzkuRawjRAras0w.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 09eOgYgAAAACzzt9J629RQ4ozG60tJ887WVZSMzExMDAwMTE2MDE3ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 945ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: '{"searchId": "1a2d9e4f-67ac-4504-8085-bf164927bab1"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '52' + Content-Type: + - application/json + Date: + - Wed, 08 Jun 2022 18:01:27 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - v84BmvdsKwYRawMlPEH3VbuI+187cFdqCQSoJro/11E= + x-ms-return-client-request-id: + - 'true' + method: POST + uri: https://sanitized.communication.azure.com/availablePhoneNumbers/:purchase?api-version=2021-03-07 + response: + body: + string: '' + headers: + access-control-expose-headers: + - Operation-Location,operation-id,purchase-id + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-length: + - '0' + date: + - Wed, 08 Jun 2022 18:01:28 GMT + ms-cv: + - /O20/K3SKkeqgSvN2PRshw.0 + operation-id: + - purchase_1a2d9e4f-67ac-4504-8085-bf164927bab1 + operation-location: + - /phoneNumbers/operations/purchase_1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07 + purchase-id: + - 1a2d9e4f-67ac-4504-8085-bf164927bab1 + strict-transport-security: + - max-age=2592000 + x-azure-ref: + - 09uOgYgAAAADXwQN7buKLTqLYWJYgXcY2WVZSMzExMDAwMTE2MDE3ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 2091ms + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:01:59 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/operations/purchase_1a2d9e4f-67ac-4504-8085-bf164927bab1?api-version=2021-03-07 + response: + body: + string: '{"operationType": "purchase", "status": "succeeded", "resourceLocation": + null, "createdDateTime": "2022-06-08T18:00:54.7468605+00:00", "id": "sanitized", + "lastActionDateTime": "0001-01-01T00:00:00+00:00"}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:01:59 GMT + ms-cv: + - cx4cPLs0bEmoRvdTGlJGYg.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0F+SgYgAAAADOic9R8uaWTJ/mL8KB/xBVWVZSMzExMDAwMTE2MDE3ADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 384ms + status: + code: 200 + message: OK + url: sanitized +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Date: + - Wed, 08 Jun 2022 18:02:00 GMT + User-Agent: + - azsdk-python-communication-phonenumbers/1.0.1 Python/3.6.7 (Windows-10-10.0.22000-SP0) + x-ms-content-sha256: + - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + x-ms-return-client-request-id: + - 'true' + method: GET + uri: https://sanitized.communication.azure.com/phoneNumbers/sanitized?api-version=2021-03-07 + response: + body: + string: '{"id": "sanitized", "phoneNumber": "sanitized", "countryCode": "US", + "phoneNumberType": "tollFree", "capabilities": {"calling": "inbound", "sms": + "inbound+outbound"}, "assignmentType": "application", "purchaseDate": "2022-06-08T18:01:44.9739305+00:00", + "cost": {"amount": 2.0, "currencyCode": "USD", "billingFrequency": "monthly"}}' + headers: + api-supported-versions: + - 2021-03-07, 2022-01-11-preview2, 2022-06-01-preview + content-type: + - application/json; charset=utf-8 + date: + - Wed, 08 Jun 2022 18:02:01 GMT + ms-cv: + - p1Tqe4PGSUyRGbMpaAW3xg.0 + strict-transport-security: + - max-age=2592000 + transfer-encoding: + - chunked + x-azure-ref: + - 0F+SgYgAAAAA7kwsqPWzWR4qQCGjVjRalWVZSMzExMDAwMTE2MDIzADlmYzdiNTE5LWE4Y2MtNGY4OS05MzVlLWM5MTQ4YWUwOWU4MQ== + x-cache: + - CONFIG_NOCACHE + x-processing-time: + - 2459ms + status: + code: 200 + message: OK + url: sanitized +version: 1 diff --git a/src/communication/azext_communication/tests/latest/test_communication_identity_scenario.py b/src/communication/azext_communication/tests/latest/test_communication_identity_scenario.py index 0ca773a7741..3c5649ab9f1 100644 --- a/src/communication/azext_communication/tests/latest/test_communication_identity_scenario.py +++ b/src/communication/azext_communication/tests/latest/test_communication_identity_scenario.py @@ -45,3 +45,13 @@ def test_issue_access_token_with_id(self, communication_resource_info): val = self.cmd( 'az communication identity issue-access-token --scope chat --userid {id}').get_output_in_json() self.assertIsNotNone(val['token']) + + @ResourceGroupPreparer(name_prefix='clitestcommunication_MyResourceGroup'[:7], key='rg', parameter_name='rg') + @CommunicationResourcePreparer(resource_group_parameter_name='rg') + def test_issue_access_token_with_multiple_scopes(self, communication_resource_info): + + os.environ['AZURE_COMMUNICATION_CONNECTION_STRING'] = communication_resource_info[1] + + val = self.cmd( + 'az communication identity issue-access-token --scope voip chat').get_output_in_json() + self.assertIsNotNone(val['token']) \ No newline at end of file diff --git a/src/communication/azext_communication/tests/latest/test_communication_scenario.py b/src/communication/azext_communication/tests/latest/test_communication_scenario.py index 1fafcaaf46f..4f9661e2a60 100644 --- a/src/communication/azext_communication/tests/latest/test_communication_scenario.py +++ b/src/communication/azext_communication/tests/latest/test_communication_scenario.py @@ -11,6 +11,7 @@ import os from azure.cli.testsdk import ScenarioTest from azure.cli.testsdk import ResourceGroupPreparer +from azure.cli.testsdk.scenario_tests import AllowLargeResponse from .example_steps import step_create from .example_steps import step_show from .example_steps import step_list @@ -59,9 +60,6 @@ def call_scenario(test, rg_2, rg): step_list(test, rg_2, rg, checks=[ test.check('length(@)', 1), ]) - step_list2(test, rg_2, rg, checks=[ - test.check('length(@)', 1), - ]) step_update(test, rg_2, rg, checks=[ test.check("name", "{myCommunicationService}", case_sensitive=False), test.check("location", "Global", case_sensitive=False), @@ -90,6 +88,7 @@ def __init__(self, *args, **kwargs): }) + @AllowLargeResponse() @ResourceGroupPreparer(name_prefix='clitestcommunication_MyOtherResourceGroup'[:7], key='rg_2', parameter_name='rg_2') @ResourceGroupPreparer(name_prefix='clitestcommunication_MyResourceGroup'[:7], key='rg', parameter_name='rg') diff --git a/src/communication/azext_communication/tests/latest/test_communication_scenario_coverage.md b/src/communication/azext_communication/tests/latest/test_communication_scenario_coverage.md index 53d24e8680b..010115e5b32 100644 --- a/src/communication/azext_communication/tests/latest/test_communication_scenario_coverage.md +++ b/src/communication/azext_communication/tests/latest/test_communication_scenario_coverage.md @@ -1,11 +1,10 @@ -|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt| -|step_create|successed||||2021-07-15 05:28:42.600879|2021-07-15 05:28:44.014667| -|step_show|successed||||2021-07-15 05:28:44.015669|2021-07-15 05:28:44.150585| -|step_list|successed||||2021-07-15 05:28:44.151889|2021-07-15 05:28:44.335519| -|step_list2|successed||||2021-07-15 05:28:44.335519|2021-07-15 05:28:44.479516| -|step_update|successed||||2021-07-15 05:28:44.479516|2021-07-15 05:28:44.628518| -|step_link_notification_hub|successed||||2021-07-15 05:28:44.628518|2021-07-15 05:28:44.841516| -|step_list_key|successed||||2021-07-15 05:28:44.841516|2021-07-15 05:28:44.984517| -|step_regenerate_key|successed||||2021-07-15 05:28:44.985517|2021-07-15 05:28:45.130055| -|step_delete|successed||||2021-07-15 05:28:45.130055|2021-07-15 05:28:45.385899| -Coverage: 9/9 +|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt| +|step_create|successed||||2022-06-14 20:22:12.670095|2022-06-14 20:22:13.070010| +|step_show|successed||||2022-06-14 20:22:13.070010|2022-06-14 20:22:13.220678| +|step_list|successed||||2022-06-14 20:22:13.220678|2022-06-14 20:22:13.369475| +|step_update|successed||||2022-06-14 20:22:13.369475|2022-06-14 20:22:13.486456| +|step_link_notification_hub|successed||||2022-06-14 20:22:13.486456|2022-06-14 20:22:13.603087| +|step_list_key|successed||||2022-06-14 20:22:13.603087|2022-06-14 20:22:13.734181| +|step_regenerate_key|successed||||2022-06-14 20:22:13.734181|2022-06-14 20:22:13.847652| +|step_delete|successed||||2022-06-14 20:22:13.847652|2022-06-14 20:22:14.507921| +Coverage: 8/8 diff --git a/src/communication/azext_communication/tests/latest/test_communication_sms_scenarios.py b/src/communication/azext_communication/tests/latest/test_communication_sms_scenarios.py index c73087b5875..c68ad6d5701 100644 --- a/src/communication/azext_communication/tests/latest/test_communication_sms_scenarios.py +++ b/src/communication/azext_communication/tests/latest/test_communication_sms_scenarios.py @@ -48,3 +48,34 @@ def test_send_sms(self, communication_resource_info): self.check("[0].httpStatusCode", "202"), self.check("[0].successful", "True") ]) + + @ResourceGroupPreparer(name_prefix='clitestcommunication_MyResourceGroup'[:7], key='rg', parameter_name='rg') + @CommunicationResourcePreparer(resource_group_parameter_name='rg') + def test_send_sms_n_recipients(self, communication_resource_info): + + os.environ['AZURE_COMMUNICATION_CONNECTION_STRING'] = communication_resource_info[1] + + sender = get_test_source_phonenumber(self.is_live, self.in_recording) + recipient1 = get_test_recipient_phonenumber(self.is_live, self.in_recording) + recipient2 = get_test_recipient_phonenumber(self.is_live, self.in_recording) + + if sender is None: + sender = get_new_phonenumber(communication_resource_info[1]) + + if recipient1 is None: + recipient1 = get_new_phonenumber(communication_resource_info[1]) + + if recipient2 is None: + recipient2 = get_new_phonenumber(communication_resource_info[1]) + + self.kwargs.update({ + 'sender': sender, + 'recipient1': recipient1, + 'recipient2': recipient2}) + + self.cmd('az communication sms send-sms --sender \"{sender}\" \ + --recipient \"{recipient1}\" \"{recipient2}\" --message "Hello there!!"', checks=[ + self.check("[0].errorMessage", None), + self.check("[0].httpStatusCode", "202"), + self.check("[0].successful", "True") + ]) diff --git a/src/communication/azext_communication/tests/latest/utils.py b/src/communication/azext_communication/tests/latest/utils.py index 73edf756d13..fb1d112b021 100644 --- a/src/communication/azext_communication/tests/latest/utils.py +++ b/src/communication/azext_communication/tests/latest/utils.py @@ -53,8 +53,8 @@ def get_test_recipient_phonenumber(is_live, in_recording): def get_new_phonenumber(connection_string): try: - phone_numbers_client = PhoneNumbersClient.from_connection_string( - connection_string) + phone_numbers_client = PhoneNumbersClient.from_connection_string(connection_string) + capabilities = PhoneNumberCapabilities( calling=PhoneNumberCapabilityType.INBOUND, sms=PhoneNumberCapabilityType.INBOUND_OUTBOUND @@ -64,7 +64,6 @@ def get_new_phonenumber(connection_string): PhoneNumberType.TOLL_FREE, PhoneNumberAssignmentType.APPLICATION, capabilities, - area_code="833", polling=True ) search_result = search_poller.result() @@ -72,7 +71,8 @@ def get_new_phonenumber(connection_string): purchase_poller = phone_numbers_client.begin_purchase_phone_numbers( search_result.search_id, polling=True) purchase_poller.result() - if(purchase_poller.status() == 'succeeded'): + + if (purchase_poller.status() == 'succeeded'): phone_number_list = search_result.phone_numbers for phone_number in phone_number_list: return phone_number diff --git a/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_communication_service_operations.py b/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_communication_service_operations.py index 653c522839a..8cb41b97cd1 100644 --- a/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_communication_service_operations.py +++ b/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_communication_service_operations.py @@ -21,6 +21,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class CommunicationServiceOperations: """CommunicationServiceOperations async operations. @@ -508,7 +509,7 @@ async def _create_or_update_initial( deserialized = self._deserialize('CommunicationServiceResource', pipeline_response) if response.status_code == 201: - response_headers['Azure-AsyncOperation']=self._deserialize('str', response.headers.get('Azure-AsyncOperation')) + response_headers['Azure-AsyncOperation'] = self._deserialize('str', response.headers.get('Azure-AsyncOperation')) deserialized = self._deserialize('CommunicationServiceResource', pipeline_response) if cls: @@ -556,7 +557,7 @@ async def begin_create_or_update( resource_group_name=resource_group_name, communication_service_name=communication_service_name, parameters=parameters, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) @@ -566,7 +567,7 @@ async def begin_create_or_update( def get_long_running_output(pipeline_response): response_headers = {} response = pipeline_response.http_response - response_headers['Azure-AsyncOperation']=self._deserialize('str', response.headers.get('Azure-AsyncOperation')) + response_headers['Azure-AsyncOperation'] = self._deserialize('str', response.headers.get('Azure-AsyncOperation')) deserialized = self._deserialize('CommunicationServiceResource', pipeline_response) if cls: @@ -579,9 +580,12 @@ def get_long_running_output(pipeline_response): 'communicationServiceName': self._serialize.url("communication_service_name", communication_service_name, 'str', max_length=63, min_length=1, pattern=r'^[-\w]+$'), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = AsyncNoPolling() - else: polling_method = polling + if polling is True: + polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( polling_method=polling_method, @@ -635,7 +639,7 @@ async def _delete_initial( response_headers = {} if response.status_code == 202: - response_headers['location']=self._deserialize('str', response.headers.get('location')) + response_headers['location'] = self._deserialize('str', response.headers.get('location')) if cls: return cls(pipeline_response, None, response_headers) @@ -677,7 +681,7 @@ async def begin_delete( raw_result = await self._delete_initial( resource_group_name=resource_group_name, communication_service_name=communication_service_name, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) @@ -694,9 +698,12 @@ def get_long_running_output(pipeline_response): 'communicationServiceName': self._serialize.url("communication_service_name", communication_service_name, 'str', max_length=63, min_length=1, pattern=r'^[-\w]+$'), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = AsyncNoPolling() - else: polling_method = polling + if polling is True: + polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( polling_method=polling_method, diff --git a/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_operations.py b/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_operations.py index cab8774de0c..f18ef2a950b 100644 --- a/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_operations.py +++ b/src/communication/azext_communication/vendored_sdks/communication/aio/operations/_operations.py @@ -19,6 +19,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class Operations: """Operations async operations. diff --git a/src/communication/azext_communication/vendored_sdks/communication/models/_communication_service_management_client_enums.py b/src/communication/azext_communication/vendored_sdks/communication/models/_communication_service_management_client_enums.py index 6cfd385f1f3..64633bb8010 100644 --- a/src/communication/azext_communication/vendored_sdks/communication/models/_communication_service_management_client_enums.py +++ b/src/communication/azext_communication/vendored_sdks/communication/models/_communication_service_management_client_enums.py @@ -9,6 +9,7 @@ from enum import Enum, EnumMeta from six import with_metaclass + class _CaseInsensitiveEnumMeta(EnumMeta): def __getitem__(self, name): return super().__getitem__(name.upper()) @@ -32,6 +33,7 @@ class ActionType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): INTERNAL = "Internal" + class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): """The type of identity that created the resource. """ @@ -41,6 +43,7 @@ class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): MANAGED_IDENTITY = "ManagedIdentity" KEY = "Key" + class KeyType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): """The keyType to regenerate. Must be either 'primary' or 'secondary'(case-insensitive). """ @@ -48,6 +51,7 @@ class KeyType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): PRIMARY = "Primary" SECONDARY = "Secondary" + class Origin(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): """The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" @@ -57,6 +61,7 @@ class Origin(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): SYSTEM = "system" USER_SYSTEM = "user,system" + class ProvisioningState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): """Provisioning state of the resource. """ diff --git a/src/communication/azext_communication/vendored_sdks/communication/models/_models_py3.py b/src/communication/azext_communication/vendored_sdks/communication/models/_models_py3.py index 0fc54319e8a..5796a8cc733 100644 --- a/src/communication/azext_communication/vendored_sdks/communication/models/_models_py3.py +++ b/src/communication/azext_communication/vendored_sdks/communication/models/_models_py3.py @@ -12,7 +12,8 @@ from azure.core.exceptions import HttpResponseError import msrest.serialization -from ._communication_service_management_client_enums import * +from ._communication_service_management_client_enums import KeyType +from ._communication_service_management_client_enums import CreatedByType class CommunicationServiceKeys(msrest.serialization.Model): diff --git a/src/communication/azext_communication/vendored_sdks/communication/operations/_communication_service_operations.py b/src/communication/azext_communication/vendored_sdks/communication/operations/_communication_service_operations.py index fe42efc70c1..7f8ea4bf5b7 100644 --- a/src/communication/azext_communication/vendored_sdks/communication/operations/_communication_service_operations.py +++ b/src/communication/azext_communication/vendored_sdks/communication/operations/_communication_service_operations.py @@ -25,6 +25,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + class CommunicationServiceOperations(object): """CommunicationServiceOperations operations. @@ -519,7 +520,7 @@ def _create_or_update_initial( deserialized = self._deserialize('CommunicationServiceResource', pipeline_response) if response.status_code == 201: - response_headers['Azure-AsyncOperation']=self._deserialize('str', response.headers.get('Azure-AsyncOperation')) + response_headers['Azure-AsyncOperation'] = self._deserialize('str', response.headers.get('Azure-AsyncOperation')) deserialized = self._deserialize('CommunicationServiceResource', pipeline_response) if cls: @@ -568,7 +569,7 @@ def begin_create_or_update( resource_group_name=resource_group_name, communication_service_name=communication_service_name, parameters=parameters, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) @@ -578,7 +579,7 @@ def begin_create_or_update( def get_long_running_output(pipeline_response): response_headers = {} response = pipeline_response.http_response - response_headers['Azure-AsyncOperation']=self._deserialize('str', response.headers.get('Azure-AsyncOperation')) + response_headers['Azure-AsyncOperation'] = self._deserialize('str', response.headers.get('Azure-AsyncOperation')) deserialized = self._deserialize('CommunicationServiceResource', pipeline_response) if cls: @@ -591,9 +592,12 @@ def get_long_running_output(pipeline_response): 'communicationServiceName': self._serialize.url("communication_service_name", communication_service_name, 'str', max_length=63, min_length=1, pattern=r'^[-\w]+$'), } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = NoPolling() - else: polling_method = polling + if polling is True: + polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling if cont_token: return LROPoller.from_continuation_token( polling_method=polling_method, @@ -648,7 +652,7 @@ def _delete_initial( response_headers = {} if response.status_code == 202: - response_headers['location']=self._deserialize('str', response.headers.get('location')) + response_headers['location'] = self._deserialize('str', response.headers.get('location')) if cls: return cls(pipeline_response, None, response_headers) @@ -691,7 +695,7 @@ def begin_delete( raw_result = self._delete_initial( resource_group_name=resource_group_name, communication_service_name=communication_service_name, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) @@ -708,9 +712,12 @@ def get_long_running_output(pipeline_response): 'communicationServiceName': self._serialize.url("communication_service_name", communication_service_name, 'str', max_length=63, min_length=1, pattern=r'^[-\w]+$'), } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = NoPolling() - else: polling_method = polling + if polling is True: + polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling if cont_token: return LROPoller.from_continuation_token( polling_method=polling_method, diff --git a/src/communication/azext_communication/vendored_sdks/communication/operations/_operations.py b/src/communication/azext_communication/vendored_sdks/communication/operations/_operations.py index 703916fa8c0..bab4b88f962 100644 --- a/src/communication/azext_communication/vendored_sdks/communication/operations/_operations.py +++ b/src/communication/azext_communication/vendored_sdks/communication/operations/_operations.py @@ -23,6 +23,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + class Operations(object): """Operations operations. diff --git a/src/communication/setup.py b/src/communication/setup.py index 772b8164543..b58174c0e5e 100644 --- a/src/communication/setup.py +++ b/src/communication/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '1.1.0' +VERSION = '1.1.2' try: from azext_communication.manual.version import VERSION except ImportError: diff --git a/src/confidentialledger/HISTORY.rst b/src/confidentialledger/HISTORY.rst index 1c139576ba0..0b16e0213de 100644 --- a/src/confidentialledger/HISTORY.rst +++ b/src/confidentialledger/HISTORY.rst @@ -3,6 +3,10 @@ Release History =============== +1.0.0 +++++++ +* GA of the Azure Confidential Ledger Azure CLI extension. + 0.1.0 ++++++ * Initial release. diff --git a/src/confidentialledger/azext_confidentialledger/__init__.py b/src/confidentialledger/azext_confidentialledger/__init__.py index 4209c72426c..3c3ddb85c82 100644 --- a/src/confidentialledger/azext_confidentialledger/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/__init__.py @@ -15,23 +15,31 @@ class ConfidentialLedgerCommandsLoader(AzCommandsLoader): - def __init__(self, cli_ctx=None): from azure.cli.core.commands import CliCommandType - from azext_confidentialledger.generated._client_factory import cf_confidentialledger_cl + from azext_confidentialledger.generated._client_factory import ( + cf_confidentialledger_cl, + ) + confidentialledger_custom = CliCommandType( - operations_tmpl='azext_confidentialledger.custom#{}', - client_factory=cf_confidentialledger_cl) - super().__init__(cli_ctx=cli_ctx, custom_command_type=confidentialledger_custom) + operations_tmpl="azext_confidentialledger.custom#{}", + client_factory=cf_confidentialledger_cl, + ) + parent = super() + parent.__init__(cli_ctx=cli_ctx, custom_command_type=confidentialledger_custom) def load_command_table(self, args): from azext_confidentialledger.generated.commands import load_command_table + load_command_table(self, args) try: - from azext_confidentialledger.manual.commands import load_command_table as load_command_table_manual + from azext_confidentialledger.manual.commands import ( + load_command_table as load_command_table_manual, + ) + load_command_table_manual(self, args) except ImportError as e: - if e.name.endswith('manual.commands'): + if e.name.endswith("manual.commands"): pass else: raise e @@ -39,12 +47,16 @@ def load_command_table(self, args): def load_arguments(self, command): from azext_confidentialledger.generated._params import load_arguments + load_arguments(self, command) try: - from azext_confidentialledger.manual._params import load_arguments as load_arguments_manual + from azext_confidentialledger.manual._params import ( + load_arguments as load_arguments_manual, + ) + load_arguments_manual(self, command) except ImportError as e: - if e.name.endswith('manual._params'): + if e.name.endswith("manual._params"): pass else: raise e diff --git a/src/confidentialledger/azext_confidentialledger/_help.py b/src/confidentialledger/azext_confidentialledger/_help.py index 9b93f87a6e9..b683f6136df 100644 --- a/src/confidentialledger/azext_confidentialledger/_help.py +++ b/src/confidentialledger/azext_confidentialledger/_help.py @@ -11,10 +11,11 @@ # pylint: disable=unused-wildcard-import # pylint: disable=unused-import from .generated._help import helps # pylint: disable=reimported + try: from .manual._help import helps # pylint: disable=reimported except ImportError as e: - if e.name.endswith('manual._help'): + if e.name.endswith("manual._help"): pass else: raise e diff --git a/src/confidentialledger/azext_confidentialledger/action.py b/src/confidentialledger/azext_confidentialledger/action.py index 9b3d0a8a78c..d6f2d095789 100644 --- a/src/confidentialledger/azext_confidentialledger/action.py +++ b/src/confidentialledger/azext_confidentialledger/action.py @@ -11,10 +11,11 @@ # pylint: disable=unused-wildcard-import from .generated.action import * # noqa: F403 + try: from .manual.action import * # noqa: F403 except ImportError as e: - if e.name.endswith('manual.action'): + if e.name.endswith("manual.action"): pass else: raise e diff --git a/src/confidentialledger/azext_confidentialledger/azext_metadata.json b/src/confidentialledger/azext_confidentialledger/azext_metadata.json index cfc30c747c7..3695b0d7077 100644 --- a/src/confidentialledger/azext_confidentialledger/azext_metadata.json +++ b/src/confidentialledger/azext_confidentialledger/azext_metadata.json @@ -1,4 +1,3 @@ { - "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0" } \ No newline at end of file diff --git a/src/confidentialledger/azext_confidentialledger/custom.py b/src/confidentialledger/azext_confidentialledger/custom.py index 885447229d6..264ba5f368b 100644 --- a/src/confidentialledger/azext_confidentialledger/custom.py +++ b/src/confidentialledger/azext_confidentialledger/custom.py @@ -11,10 +11,11 @@ # pylint: disable=unused-wildcard-import from .generated.custom import * # noqa: F403 + try: from .manual.custom import * # noqa: F403 except ImportError as e: - if e.name.endswith('manual.custom'): + if e.name.endswith("manual.custom"): pass else: raise e diff --git a/src/confidentialledger/azext_confidentialledger/generated/__init__.py b/src/confidentialledger/azext_confidentialledger/generated/__init__.py index c9cfdc73e77..93202b7013d 100644 --- a/src/confidentialledger/azext_confidentialledger/generated/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/generated/__init__.py @@ -9,4 +9,4 @@ # regenerated. # -------------------------------------------------------------------------- -__path__ = __import__('pkgutil').extend_path(__path__, __name__) +__path__ = __import__("pkgutil").extend_path(__path__, __name__) diff --git a/src/confidentialledger/azext_confidentialledger/generated/_client_factory.py b/src/confidentialledger/azext_confidentialledger/generated/_client_factory.py index 3cb34383e90..9e3db0abb60 100644 --- a/src/confidentialledger/azext_confidentialledger/generated/_client_factory.py +++ b/src/confidentialledger/azext_confidentialledger/generated/_client_factory.py @@ -11,9 +11,11 @@ def cf_confidentialledger_cl(cli_ctx, *_): from azure.cli.core.commands.client_factory import get_mgmt_service_client - from azext_confidentialledger.vendored_sdks.confidentialledger import ConfidentialLedger - return get_mgmt_service_client(cli_ctx, - ConfidentialLedger) + from azext_confidentialledger.vendored_sdks.confidentialledger import ( + ConfidentialLedger, + ) + + return get_mgmt_service_client(cli_ctx, ConfidentialLedger) def cf_ledger(cli_ctx, *_): diff --git a/src/confidentialledger/azext_confidentialledger/generated/_help.py b/src/confidentialledger/azext_confidentialledger/generated/_help.py index b69eb6a0f9f..c3604181558 100644 --- a/src/confidentialledger/azext_confidentialledger/generated/_help.py +++ b/src/confidentialledger/azext_confidentialledger/generated/_help.py @@ -12,12 +12,16 @@ from knack.help_files import helps -helps['confidentialledger'] = ''' +helps[ + "confidentialledger" +] = """ type: group short-summary: Manage Confidential Ledger -''' +""" -helps['confidentialledger list'] = """ +helps[ + "confidentialledger list" +] = """ type: command short-summary: "Retrieves the properties of all Confidential Ledgers. And Retrieves the properties of all \ Confidential Ledgers." @@ -30,7 +34,9 @@ az confidentialledger list """ -helps['confidentialledger show'] = """ +helps[ + "confidentialledger show" +] = """ type: command short-summary: "Retrieves the properties of a Confidential Ledger." examples: @@ -39,7 +45,9 @@ az confidentialledger show --name "DummyLedgerName" --resource-group "DummyResourceGroupName" """ -helps['confidentialledger create'] = """ +helps[ + "confidentialledger create" +] = """ type: command short-summary: "Creates a Confidential Ledger with the specified ledger parameters." parameters: @@ -77,7 +85,9 @@ "DummyLedgerName" --resource-group "DummyResourceGroupName" """ -helps['confidentialledger update'] = """ +helps[ + "confidentialledger update" +] = """ type: command short-summary: "Updates properties of Confidential Ledger." parameters: @@ -120,7 +130,9 @@ --resource-group "DummyResourceGroupName" """ -helps['confidentialledger delete'] = """ +helps[ + "confidentialledger delete" +] = """ type: command short-summary: "Deletes an existing Confidential Ledger." examples: @@ -129,7 +141,9 @@ az confidentialledger delete --name "DummyLedgerName" --resource-group "DummyResourceGroupName" """ -helps['confidentialledger wait'] = """ +helps[ + "confidentialledger wait" +] = """ type: command short-summary: Place the CLI in a waiting state until a condition of the confidentialledger is met. examples: diff --git a/src/confidentialledger/azext_confidentialledger/generated/_params.py b/src/confidentialledger/azext_confidentialledger/generated/_params.py index 6523c0c243a..4aa11263124 100644 --- a/src/confidentialledger/azext_confidentialledger/generated/_params.py +++ b/src/confidentialledger/azext_confidentialledger/generated/_params.py @@ -14,61 +14,124 @@ tags_type, get_enum_type, resource_group_name_type, - get_location_type + get_location_type, ) from azure.cli.core.commands.validators import get_default_location_from_resource_group from azext_confidentialledger.action import ( AddAadBasedSecurityPrincipals, - AddCertBasedSecurityPrincipals + AddCertBasedSecurityPrincipals, ) def load_arguments(self, _): - with self.argument_context('confidentialledger list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('filter_', options_list=['--filter'], type=str, help='The filter to apply on the list operation. ' - 'eg. $filter=ledgerType eq \'Public\'') + with self.argument_context("confidentialledger list") as c: + c.argument("resource_group_name", resource_group_name_type) + c.argument( + "filter_", + options_list=["--filter"], + type=str, + help="The filter to apply on the list operation. " + "eg. $filter=ledgerType eq 'Public'", + ) - with self.argument_context('confidentialledger show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('ledger_name', options_list=['--name', '-n', '--ledger-name'], type=str, help='Name of the ' - 'Confidential Ledger', id_part='name') + with self.argument_context("confidentialledger show") as c: + c.argument("resource_group_name", resource_group_name_type) + c.argument( + "ledger_name", + options_list=["--name", "-n", "--ledger-name"], + type=str, + help="Name of the " "Confidential Ledger", + id_part="name", + ) - with self.argument_context('confidentialledger create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('ledger_name', options_list=['--name', '-n', '--ledger-name'], type=str, help='Name of the ' - 'Confidential Ledger') - c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False, - validator=get_default_location_from_resource_group) - c.argument('tags', tags_type) - c.argument('ledger_type', arg_type=get_enum_type(['Unknown', 'Public', 'Private']), help='Type of Confidential ' - 'Ledger') - c.argument('aad_based_security_principals', options_list=['--aad-based-security-principals', '--aad-based-users'], action=AddAadBasedSecurityPrincipals, nargs='+', help='Array of ' - 'all AAD-based Security Principals.') - c.argument('cert_based_security_principals', options_list=['--cert-based-security-principals', '--cert-based-users'], action=AddCertBasedSecurityPrincipals, nargs='+', help='Array of ' - 'all certificate-based Security Principals.') + with self.argument_context("confidentialledger create") as c: + c.argument("resource_group_name", resource_group_name_type) + c.argument( + "ledger_name", + options_list=["--name", "-n", "--ledger-name"], + type=str, + help="Name of the " "Confidential Ledger", + ) + c.argument( + "location", + arg_type=get_location_type(self.cli_ctx), + required=False, + validator=get_default_location_from_resource_group, + ) + c.argument("tags", tags_type) + c.argument( + "ledger_type", + arg_type=get_enum_type(["Unknown", "Public", "Private"]), + help="Type of Confidential " "Ledger", + ) + c.argument( + "aad_based_security_principals", + options_list=["--aad-based-security-principals", "--aad-based-users"], + action=AddAadBasedSecurityPrincipals, + nargs="+", + help="Array of " "all AAD based Security Principals.", + ) + c.argument( + "cert_based_security_principals", + options_list=["--cert-based-security-principals", "--cert-based-users"], + action=AddCertBasedSecurityPrincipals, + nargs="+", + help="Array of " "all cert based Security Principals.", + ) - with self.argument_context('confidentialledger update') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('ledger_name', options_list=['--name', '-n', '--ledger-name'], type=str, help='Name of the ' - 'Confidential Ledger', id_part='name') - c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False, - validator=get_default_location_from_resource_group) - c.argument('tags', tags_type) - c.argument('ledger_type', arg_type=get_enum_type(['Unknown', 'Public', 'Private']), help='Type of Confidential ' - 'Ledger') - c.argument('aad_based_security_principals', options_list=['--aad-based-security-principals', '--aad-based-users'], action=AddAadBasedSecurityPrincipals, nargs='+', help='Array of ' - 'all AAD-based Security Principals.') - c.argument('cert_based_security_principals', options_list=['--cert-based-security-principals', '--cert-based-users'], action=AddCertBasedSecurityPrincipals, nargs='+', help='Array of ' - 'all certificate-based Security Principals.') + with self.argument_context("confidentialledger update") as c: + c.argument("resource_group_name", resource_group_name_type) + c.argument( + "ledger_name", + options_list=["--name", "-n", "--ledger-name"], + type=str, + help="Name of the " "Confidential Ledger", + id_part="name", + ) + c.argument( + "location", + arg_type=get_location_type(self.cli_ctx), + required=False, + validator=get_default_location_from_resource_group, + ) + c.argument("tags", tags_type) + c.argument( + "ledger_type", + arg_type=get_enum_type(["Unknown", "Public", "Private"]), + help="Type of Confidential " "Ledger", + ) + c.argument( + "aad_based_security_principals", + options_list=["--aad-based-security-principals", "--aad-based-users"], + action=AddAadBasedSecurityPrincipals, + nargs="+", + help="Array of " "all AAD based Security Principals.", + ) + c.argument( + "cert_based_security_principals", + options_list=["--cert-based-security-principals", "--cert-based-users"], + action=AddCertBasedSecurityPrincipals, + nargs="+", + help="Array of " "all cert based Security Principals.", + ) - with self.argument_context('confidentialledger delete') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('ledger_name', options_list=['--name', '-n', '--ledger-name'], type=str, help='Name of the ' - 'Confidential Ledger', id_part='name') + with self.argument_context("confidentialledger delete") as c: + c.argument("resource_group_name", resource_group_name_type) + c.argument( + "ledger_name", + options_list=["--name", "-n", "--ledger-name"], + type=str, + help="Name of the " "Confidential Ledger", + id_part="name", + ) - with self.argument_context('confidentialledger wait') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('ledger_name', options_list=['--name', '-n', '--ledger-name'], type=str, help='Name of the ' - 'Confidential Ledger', id_part='name') + with self.argument_context("confidentialledger wait") as c: + c.argument("resource_group_name", resource_group_name_type) + c.argument( + "ledger_name", + options_list=["--name", "-n", "--ledger-name"], + type=str, + help="Name of the " "Confidential Ledger", + id_part="name", + ) diff --git a/src/confidentialledger/azext_confidentialledger/generated/action.py b/src/confidentialledger/azext_confidentialledger/generated/action.py index b5802315214..36252f980c3 100644 --- a/src/confidentialledger/azext_confidentialledger/generated/action.py +++ b/src/confidentialledger/azext_confidentialledger/generated/action.py @@ -22,34 +22,37 @@ class AddAadBasedSecurityPrincipals(argparse._AppendAction): def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) - super(AddAadBasedSecurityPrincipals, self).__call__(parser, namespace, action, option_string) + super(AddAadBasedSecurityPrincipals, self).__call__( + parser, namespace, action, option_string + ) def get_action(self, values, option_string): try: properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): + for (k, v) in (x.split("=", 1) for x in values): properties[k].append(v) properties = dict(properties) except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + raise CLIError("usage error: {} [KEY=VALUE ...]".format(option_string)) d = {} for k in properties: kl = k.lower() v = properties[k] - if kl == 'principal-id': - d['principal_id'] = v[0] + if kl == "principal-id": + d["principal_id"] = v[0] - elif kl == 'tenant-id': - d['tenant_id'] = v[0] + elif kl == "tenant-id": + d["tenant_id"] = v[0] - elif kl == 'ledger-role-name': - d['ledger_role_name'] = v[0] + elif kl == "ledger-role-name": + d["ledger_role_name"] = v[0] else: raise CLIError( - 'Unsupported Key {} is provided for parameter aad-based-security-principals. All possible keys are:' - ' principal-id, tenant-id, ledger-role-name'.format(k) + "Unsupported Key {} is provided for parameter aad-based-security-principals. All possible keys are: principal-id, tenant-id, ledger-role-name".format( + k + ) ) return d @@ -58,31 +61,34 @@ def get_action(self, values, option_string): class AddCertBasedSecurityPrincipals(argparse._AppendAction): def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) - super(AddCertBasedSecurityPrincipals, self).__call__(parser, namespace, action, option_string) + super(AddCertBasedSecurityPrincipals, self).__call__( + parser, namespace, action, option_string + ) def get_action(self, values, option_string): try: properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): + for (k, v) in (x.split("=", 1) for x in values): properties[k].append(v) properties = dict(properties) except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + raise CLIError("usage error: {} [KEY=VALUE ...]".format(option_string)) d = {} for k in properties: kl = k.lower() v = properties[k] - if kl == 'cert': - d['cert'] = v[0] + if kl == "cert": + d["cert"] = v[0] - elif kl == 'ledger-role-name': - d['ledger_role_name'] = v[0] + elif kl == "ledger-role-name": + d["ledger_role_name"] = v[0] else: raise CLIError( - 'Unsupported Key {} is provided for parameter cert-based-security-principals. All possible keys' - ' are: cert, ledger-role-name'.format(k) + "Unsupported Key {} is provided for parameter cert-based-security-principals. All possible keys are: cert, ledger-role-name".format( + k + ) ) return d diff --git a/src/confidentialledger/azext_confidentialledger/generated/commands.py b/src/confidentialledger/azext_confidentialledger/generated/commands.py index d79d6ab6357..34b08231e84 100644 --- a/src/confidentialledger/azext_confidentialledger/generated/commands.py +++ b/src/confidentialledger/azext_confidentialledger/generated/commands.py @@ -18,20 +18,24 @@ confidentialledger_ledger = CliCommandType( operations_tmpl=( - 'azext_confidentialledger.vendored_sdks.confidentialledger.operations._ledger_operations#LedgerOperations.{}' + "azext_confidentialledger.vendored_sdks.confidentialledger.operations._ledger_operations#LedgerOperations.{}" ), client_factory=cf_ledger, ) def load_command_table(self, _): - with self.command_group( - 'confidentialledger', confidentialledger_ledger, client_factory=cf_ledger, is_experimental=True + "confidentialledger", confidentialledger_ledger, client_factory=cf_ledger ) as g: - g.custom_command('list', 'confidentialledger_list') - g.custom_show_command('show', 'confidentialledger_show') - g.custom_command('create', 'confidentialledger_create', supports_no_wait=True) - g.custom_command('update', 'confidentialledger_update', supports_no_wait=True) - g.custom_command('delete', 'confidentialledger_delete', supports_no_wait=True, confirmation=True) - g.custom_wait_command('wait', 'confidentialledger_show') + g.custom_command("list", "confidentialledger_list") + g.custom_show_command("show", "confidentialledger_show") + g.custom_command("create", "confidentialledger_create", supports_no_wait=True) + g.custom_command("update", "confidentialledger_update", supports_no_wait=True) + g.custom_command( + "delete", + "confidentialledger_delete", + supports_no_wait=True, + confirmation=True, + ) + g.custom_wait_command("wait", "confidentialledger_show") diff --git a/src/confidentialledger/azext_confidentialledger/generated/custom.py b/src/confidentialledger/azext_confidentialledger/generated/custom.py index 900f7708d79..4547643e23f 100644 --- a/src/confidentialledger/azext_confidentialledger/generated/custom.py +++ b/src/confidentialledger/azext_confidentialledger/generated/custom.py @@ -12,87 +12,98 @@ from azure.cli.core.util import sdk_no_wait -def confidentialledger_list(client, - resource_group_name=None, - filter_=None): +def confidentialledger_list(client, resource_group_name=None, filter_=None): if resource_group_name: - return client.list_by_resource_group(resource_group_name=resource_group_name, - filter=filter_) + return client.list_by_resource_group( + resource_group_name=resource_group_name, filter=filter_ + ) return client.list_by_subscription(filter=filter_) -def confidentialledger_show(client, - resource_group_name, - ledger_name): - return client.get(resource_group_name=resource_group_name, - ledger_name=ledger_name) +def confidentialledger_show(client, resource_group_name, ledger_name): + return client.get(resource_group_name=resource_group_name, ledger_name=ledger_name) -def confidentialledger_create(client, - resource_group_name, - ledger_name, - location=None, - tags=None, - ledger_type=None, - aad_based_security_principals=None, - cert_based_security_principals=None, - no_wait=False): +def confidentialledger_create( + client, + resource_group_name, + ledger_name, + location=None, + tags=None, + ledger_type=None, + aad_based_security_principals=None, + cert_based_security_principals=None, + no_wait=False, +): confidential_ledger = {} if location is not None: - confidential_ledger['location'] = location + confidential_ledger["location"] = location if tags is not None: - confidential_ledger['tags'] = tags - confidential_ledger['properties'] = {} + confidential_ledger["tags"] = tags + confidential_ledger["properties"] = {} if ledger_type is not None: - confidential_ledger['properties']['ledger_type'] = ledger_type + confidential_ledger["properties"]["ledger_type"] = ledger_type if aad_based_security_principals is not None: - confidential_ledger['properties']['aad_based_security_principals'] = aad_based_security_principals + confidential_ledger["properties"][ + "aad_based_security_principals" + ] = aad_based_security_principals if cert_based_security_principals is not None: - confidential_ledger['properties']['cert_based_security_principals'] = cert_based_security_principals - if len(confidential_ledger['properties']) == 0: - del confidential_ledger['properties'] - return sdk_no_wait(no_wait, - client.begin_create, - resource_group_name=resource_group_name, - ledger_name=ledger_name, - confidential_ledger=confidential_ledger) + confidential_ledger["properties"][ + "cert_based_security_principals" + ] = cert_based_security_principals + if len(confidential_ledger["properties"]) == 0: + del confidential_ledger["properties"] + return sdk_no_wait( + no_wait, + client.begin_create, + resource_group_name=resource_group_name, + ledger_name=ledger_name, + confidential_ledger=confidential_ledger, + ) -def confidentialledger_update(client, - resource_group_name, - ledger_name, - location=None, - tags=None, - ledger_type=None, - aad_based_security_principals=None, - cert_based_security_principals=None, - no_wait=False): +def confidentialledger_update( + client, + resource_group_name, + ledger_name, + location=None, + tags=None, + ledger_type=None, + aad_based_security_principals=None, + cert_based_security_principals=None, + no_wait=False, +): confidential_ledger = {} if location is not None: - confidential_ledger['location'] = location + confidential_ledger["location"] = location if tags is not None: - confidential_ledger['tags'] = tags - confidential_ledger['properties'] = {} + confidential_ledger["tags"] = tags + confidential_ledger["properties"] = {} if ledger_type is not None: - confidential_ledger['properties']['ledger_type'] = ledger_type + confidential_ledger["properties"]["ledger_type"] = ledger_type if aad_based_security_principals is not None: - confidential_ledger['properties']['aad_based_security_principals'] = aad_based_security_principals + confidential_ledger["properties"][ + "aad_based_security_principals" + ] = aad_based_security_principals if cert_based_security_principals is not None: - confidential_ledger['properties']['cert_based_security_principals'] = cert_based_security_principals - if len(confidential_ledger['properties']) == 0: - del confidential_ledger['properties'] - return sdk_no_wait(no_wait, - client.begin_update, - resource_group_name=resource_group_name, - ledger_name=ledger_name, - confidential_ledger=confidential_ledger) + confidential_ledger["properties"][ + "cert_based_security_principals" + ] = cert_based_security_principals + if len(confidential_ledger["properties"]) == 0: + del confidential_ledger["properties"] + return sdk_no_wait( + no_wait, + client.begin_update, + resource_group_name=resource_group_name, + ledger_name=ledger_name, + confidential_ledger=confidential_ledger, + ) -def confidentialledger_delete(client, - resource_group_name, - ledger_name, - no_wait=False): - return sdk_no_wait(no_wait, - client.begin_delete, - resource_group_name=resource_group_name, - ledger_name=ledger_name) +def confidentialledger_delete(client, resource_group_name, ledger_name, no_wait=False): + return sdk_no_wait( + no_wait, + client.begin_delete, + resource_group_name=resource_group_name, + ledger_name=ledger_name, + ) diff --git a/src/confidentialledger/azext_confidentialledger/manual/__init__.py b/src/confidentialledger/azext_confidentialledger/manual/__init__.py index c9cfdc73e77..93202b7013d 100644 --- a/src/confidentialledger/azext_confidentialledger/manual/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/manual/__init__.py @@ -9,4 +9,4 @@ # regenerated. # -------------------------------------------------------------------------- -__path__ = __import__('pkgutil').extend_path(__path__, __name__) +__path__ = __import__("pkgutil").extend_path(__path__, __name__) diff --git a/src/confidentialledger/azext_confidentialledger/tests/__init__.py b/src/confidentialledger/azext_confidentialledger/tests/__init__.py index 70488e93851..f4a2b4ecdca 100644 --- a/src/confidentialledger/azext_confidentialledger/tests/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/tests/__init__.py @@ -16,12 +16,16 @@ import datetime as dt from azure.core.exceptions import AzureError -from azure.cli.testsdk.exceptions import CliTestError, CliExecutionError, JMESPathCheckAssertionError +from azure.cli.testsdk.exceptions import ( + CliTestError, + CliExecutionError, + JMESPathCheckAssertionError, +) -logger = logging.getLogger('azure.cli.testsdk') +logger = logging.getLogger("azure.cli.testsdk") logger.addHandler(logging.StreamHandler()) -__path__ = __import__('pkgutil').extend_path(__path__, __name__) +__path__ = __import__("pkgutil").extend_path(__path__, __name__) exceptions = [] test_map = dict() SUCCESSED = "successed" @@ -31,17 +35,23 @@ def try_manual(func): def import_manual_function(origin_func): from importlib import import_module + decorated_path = inspect.getfile(origin_func).lower() module_path = __path__[0].lower() if not decorated_path.startswith(module_path): raise Exception("Decorator can only be used in submodules!") - manual_path = os.path.join( - decorated_path[module_path.rfind(os.path.sep) + 1:]) + manual_path = os.path.join(decorated_path[module_path.rfind(os.path.sep) + 1 :]) manual_file_path, manual_file_name = os.path.split(manual_path) module_name, _ = os.path.splitext(manual_file_name) - manual_module = "..manual." + \ - ".".join(manual_file_path.split(os.path.sep) + [module_name, ]) - return getattr(import_module(manual_module, package=__name__), origin_func.__name__) + manual_module = "..manual." + ".".join( + manual_file_path.split(os.path.sep) + + [ + module_name, + ] + ) + return getattr( + import_module(manual_module, package=__name__), origin_func.__name__ + ) def get_func_to_call(): func_to_call = func @@ -63,16 +73,25 @@ def wrapper(*args, **kwargs): test_map[func.__name__]["error_normalized"] = "" test_map[func.__name__]["start_dt"] = dt.datetime.utcnow() ret = func_to_call(*args, **kwargs) - except (AssertionError, AzureError, CliTestError, CliExecutionError, SystemExit, - JMESPathCheckAssertionError) as e: + except ( + AssertionError, + AzureError, + CliTestError, + CliExecutionError, + SystemExit, + JMESPathCheckAssertionError, + ) as e: use_exception_cache = os.getenv("TEST_EXCEPTION_CACHE") if use_exception_cache is None or use_exception_cache.lower() != "true": raise test_map[func.__name__]["end_dt"] = dt.datetime.utcnow() test_map[func.__name__]["result"] = FAILED - test_map[func.__name__]["error_message"] = str(e).replace("\r\n", " ").replace("\n", " ")[:500] - test_map[func.__name__]["error_stack"] = traceback.format_exc().replace( - "\r\n", " ").replace("\n", " ")[:500] + test_map[func.__name__]["error_message"] = ( + str(e).replace("\r\n", " ").replace("\n", " ")[:500] + ) + test_map[func.__name__]["error_stack"] = ( + traceback.format_exc().replace("\r\n", " ").replace("\n", " ")[:500] + ) logger.info("--------------------------------------") logger.info("step exception: %s", e) logger.error("--------------------------------------") @@ -92,7 +111,9 @@ def calc_coverage(filename): filename = filename.split(".")[0] coverage_name = filename + "_coverage.md" with open(coverage_name, "w") as f: - f.write("|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt|\n") + f.write( + "|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt|\n" + ) total = len(test_map) covered = 0 for k, v in test_map.items(): @@ -101,8 +122,10 @@ def calc_coverage(filename): continue if v["result"] == SUCCESSED: covered += 1 - f.write("|{step_name}|{result}|{error_message}|{error_stack}|{error_normalized}|{start_dt}|" - "{end_dt}|\n".format(step_name=k, **v)) + f.write( + "|{step_name}|{result}|{error_message}|{error_stack}|{error_normalized}|{start_dt}|" + "{end_dt}|\n".format(step_name=k, **v) + ) f.write("Coverage: {}/{}\n".format(covered, total)) print("Create coverage\n", file=sys.stderr) @@ -111,6 +134,8 @@ def raise_if(): if exceptions: if len(exceptions) <= 1: raise exceptions[0][1][1] - message = "{}\nFollowed with exceptions in other steps:\n".format(str(exceptions[0][1][1])) + message = "{}\nFollowed with exceptions in other steps:\n".format( + str(exceptions[0][1][1]) + ) message += "\n".join(["{}: {}".format(h[0], h[1][1]) for h in exceptions[1:]]) raise exceptions[0][1][0](message).with_traceback(exceptions[0][1][2]) diff --git a/src/confidentialledger/azext_confidentialledger/tests/latest/__init__.py b/src/confidentialledger/azext_confidentialledger/tests/latest/__init__.py index c9cfdc73e77..93202b7013d 100644 --- a/src/confidentialledger/azext_confidentialledger/tests/latest/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/tests/latest/__init__.py @@ -9,4 +9,4 @@ # regenerated. # -------------------------------------------------------------------------- -__path__ = __import__('pkgutil').extend_path(__path__, __name__) +__path__ = __import__("pkgutil").extend_path(__path__, __name__) diff --git a/src/confidentialledger/azext_confidentialledger/tests/latest/example_steps.py b/src/confidentialledger/azext_confidentialledger/tests/latest/example_steps.py index 1dd006a0e88..9b9967fa80b 100644 --- a/src/confidentialledger/azext_confidentialledger/tests/latest/example_steps.py +++ b/src/confidentialledger/azext_confidentialledger/tests/latest/example_steps.py @@ -17,22 +17,24 @@ def step_create(test, checks=None): if checks is None: checks = [] - return test.cmd('az confidentialledger create ' - '--location "EastUS" ' - '--aad-based-security-principals ledger-role-name="Administrator" principal-id="34621747-6fc8-4771-a2eb-72' - 'f31c461f2e" tenant-id="bce123b9-2b7b-4975-8360-5ca0b9b1cd08" ' - '--cert-based-security-principals cert="-----BEGIN CERTIFICATE-----MIIBsjCCATigAwIBAgIUZWIbyG79TniQLd2UxJu' - 'U74tqrKcwCgYIKoZIzj0EAwMwEDEOMAwGA1UEAwwFdXNlcjAwHhcNMjEwMzE2MTgwNjExWhcNMjIwMzE2MTgwNjExWjAQMQ4wDAYDVQQD' - 'DAV1c2VyMDB2MBAGByqGSM49AgEGBSuBBAAiA2IABBiWSo/j8EFit7aUMm5lF+lUmCu+IgfnpFD+7QMgLKtxRJ3aGSqgS/GpqcYVGddnO' - 'DtSarNE/HyGKUFUolLPQ5ybHcouUk0kyfA7XMeSoUA4lBz63Wha8wmXo+NdBRo39qNTMFEwHQYDVR0OBBYEFPtuhrwgGjDFHeUUT4nGsX' - 'aZn69KMB8GA1UdIwQYMBaAFPtuhrwgGjDFHeUUT4nGsXaZn69KMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwMDaAAwZQIxAOnozm2' - 'CyqRwSSQLls5r+mUHRGRyXHXwYtM4Dcst/VEZdmS9fqvHRCHbjUlO/+HNfgIwMWZ4FmsjD3wnPxONOm9YdVn/PRD7SsPRPbOjwBiE4EBG' - 'aHDsLjYAGDSGi7NJnSkA-----END CERTIFICATE-----" ledger-role-name="Reader" ' - '--ledger-type "Public" ' - '--tags additionalProps1="additional properties" ' - '--name "{myLedger}" ' - '--resource-group "{rg}"', - checks=[]) + return test.cmd( + "az confidentialledger create " + '--location "EastUS" ' + '--aad-based-security-principals ledger-role-name="Administrator" principal-id="34621747-6fc8-4771-a2eb-72' + 'f31c461f2e" tenant-id="bce123b9-2b7b-4975-8360-5ca0b9b1cd08" ' + '--cert-based-security-principals cert="-----BEGIN CERTIFICATE-----MIIBsjCCATigAwIBAgIUZWIbyG79TniQLd2UxJu' + "U74tqrKcwCgYIKoZIzj0EAwMwEDEOMAwGA1UEAwwFdXNlcjAwHhcNMjEwMzE2MTgwNjExWhcNMjIwMzE2MTgwNjExWjAQMQ4wDAYDVQQD" + "DAV1c2VyMDB2MBAGByqGSM49AgEGBSuBBAAiA2IABBiWSo/j8EFit7aUMm5lF+lUmCu+IgfnpFD+7QMgLKtxRJ3aGSqgS/GpqcYVGddnO" + "DtSarNE/HyGKUFUolLPQ5ybHcouUk0kyfA7XMeSoUA4lBz63Wha8wmXo+NdBRo39qNTMFEwHQYDVR0OBBYEFPtuhrwgGjDFHeUUT4nGsX" + "aZn69KMB8GA1UdIwQYMBaAFPtuhrwgGjDFHeUUT4nGsXaZn69KMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwMDaAAwZQIxAOnozm2" + "CyqRwSSQLls5r+mUHRGRyXHXwYtM4Dcst/VEZdmS9fqvHRCHbjUlO/+HNfgIwMWZ4FmsjD3wnPxONOm9YdVn/PRD7SsPRPbOjwBiE4EBG" + 'aHDsLjYAGDSGi7NJnSkA-----END CERTIFICATE-----" ledger-role-name="Reader" ' + '--ledger-type "Public" ' + '--tags additionalProps1="additional properties" ' + '--name "{myLedger}" ' + '--resource-group "{rg}"', + checks=[], + ) # The `create` command already waits for resource creation. Testing the `wait` command # results in an infinite loop of GET resource -> 200 OK. @@ -43,10 +45,10 @@ def step_create(test, checks=None): def step_show(test, checks=None): if checks is None: checks = [] - return test.cmd('az confidentialledger show ' - '--name "{myLedger}" ' - '--resource-group "{rg}"', - checks=checks) + return test.cmd( + "az confidentialledger show " '--name "{myLedger}" ' '--resource-group "{rg}"', + checks=checks, + ) # EXAMPLE: /Ledger/get/ConfidentialLedgerList @@ -54,9 +56,7 @@ def step_show(test, checks=None): def step_list_by_resource_group(test, checks=None): if checks is None: checks = [] - test.cmd('az confidentialledger list ' - '--resource-group "{rg}"', - checks=checks) + test.cmd("az confidentialledger list " '--resource-group "{rg}"', checks=checks) # EXAMPLE: /Ledger/get/ConfidentialLedgerListBySub @@ -64,9 +64,7 @@ def step_list_by_resource_group(test, checks=None): def step_list_by_subscription(test, checks=None): if checks is None: checks = [] - test.cmd('az confidentialledger list ' - '-g ""', - checks=checks) + test.cmd("az confidentialledger list " '-g ""', checks=checks) # EXAMPLE: /Ledger/patch/ConfidentialLedgerUpdate @@ -83,20 +81,18 @@ def step_update(test, create_output_json, checks=None): role_name = aad_principal["ledgerRoleName"] principal_id = aad_principal["principalId"] tenant_id = aad_principal["tenantId"] - aad_based_principals += ( - f' ledger-role-name="{role_name}" principal-id="{principal_id}" tenant-id="{tenant_id}"' - ) + aad_based_principals += f' ledger-role-name="{role_name}" principal-id="{principal_id}" tenant-id="{tenant_id}"' cert_based_principals = "" - for cert_based_principal in create_output_json["properties"]["certBasedSecurityPrincipals"]: + for cert_based_principal in create_output_json["properties"][ + "certBasedSecurityPrincipals" + ]: if len(cert_based_principals) == 0: cert_based_principals = "--cert-based-security-principals" cert = cert_based_principal["cert"] role_name = cert_based_principal["ledgerRoleName"] - cert_based_principals += ( - f' cert="{cert}" ledger-role-name="{role_name}"' - ) + cert_based_principals += f' cert="{cert}" ledger-role-name="{role_name}"' location = create_output_json["location"] ledger_type = create_output_json["properties"]["ledgerType"] @@ -105,16 +101,18 @@ def step_update(test, create_output_json, checks=None): for key, value in create_output_json["tags"].items(): tags += f' {key}="{value}"' - test.cmd('az confidentialledger update ' - f'--location "{location}" ' - f'{aad_based_principals} ' - f'{cert_based_principals} ' - f'--ledger-type "{ledger_type}" ' - f'--tags {tags} ' - '--location "EastUS" ' - '--name "{myLedger}" ' - '--resource-group "{rg}"', - checks=checks) + test.cmd( + "az confidentialledger update " + f'--location "{location}" ' + f"{aad_based_principals} " + f"{cert_based_principals} " + f'--ledger-type "{ledger_type}" ' + f"--tags {tags} " + '--location "EastUS" ' + '--name "{myLedger}" ' + '--resource-group "{rg}"', + checks=checks, + ) # EXAMPLE: /Ledger/delete/ConfidentialLedgerDelete @@ -122,7 +120,9 @@ def step_update(test, create_output_json, checks=None): def step_delete(test, checks=None): if checks is None: checks = [] - test.cmd('az confidentialledger delete -y ' - '--name "{myLedger}" ' - '--resource-group "{rg}"', - checks=checks) + test.cmd( + "az confidentialledger delete -y " + '--name "{myLedger}" ' + '--resource-group "{rg}"', + checks=checks, + ) diff --git a/src/confidentialledger/azext_confidentialledger/tests/latest/recordings/test_confidentialledger_Scenario.yaml b/src/confidentialledger/azext_confidentialledger/tests/latest/recordings/test_confidentialledger_Scenario.yaml index 7d1442e2916..c3160517122 100644 --- a/src/confidentialledger/azext_confidentialledger/tests/latest/recordings/test_confidentialledger_Scenario.yaml +++ b/src/confidentialledger/azext_confidentialledger/tests/latest/recordings/test_confidentialledger_Scenario.yaml @@ -25,7 +25,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-confidentialledger/unknown Python/3.8.10 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ConfidentialLedger/ledgers/DummyLedgerName?api-version=2021-05-13-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ConfidentialLedger/ledgers/DummyLedgerName?api-version=2022-05-13 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.ConfidentialLedger/ledgers/DummyLedgerName","name":"DummyLedgerName","type":"microsoft.confidentialledger/ledgers","location":"EastUS","tags":{"additionalProps1":"additional @@ -34,7 +34,7 @@ interactions: CERTIFICATE-----","ledgerRoleName":"Reader"}],"ledgerInternalNamespace":"84616cc8-8f78-45a8-a4de-f49625aaa5cc","provisioningState":"Accepted"}}' headers: azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConfidentialLedger/locations/EASTUS/operationStatuses/de427e1f-7541-4915-8e4a-3b8dac6580a5*3E131FC5ECF663123D682641AB5024E5085A7FC61D58ED76A6D9C8425B3D1981?api-version=2021-05-13-preview + - https://management.azure.com/providers/Microsoft.ConfidentialLedger/locations/EASTUS/operationStatuses/de427e1f-7541-4915-8e4a-3b8dac6580a5*3E131FC5ECF663123D682641AB5024E5085A7FC61D58ED76A6D9C8425B3D1981?api-version=2022-05-13 cache-control: - no-cache content-length: @@ -89,7 +89,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-confidentialledger/unknown Python/3.8.10 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConfidentialLedger/locations/EASTUS/operationStatuses/de427e1f-7541-4915-8e4a-3b8dac6580a5*3E131FC5ECF663123D682641AB5024E5085A7FC61D58ED76A6D9C8425B3D1981?api-version=2021-05-13-preview + uri: https://management.azure.com/providers/Microsoft.ConfidentialLedger/locations/EASTUS/operationStatuses/de427e1f-7541-4915-8e4a-3b8dac6580a5*3E131FC5ECF663123D682641AB5024E5085A7FC61D58ED76A6D9C8425B3D1981?api-version=2022-05-13 response: body: string: ' None if not base_url: - base_url = 'https://management.azure.com' - self._config = ConfidentialLedgerConfiguration(credential, subscription_id, **kwargs) - self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + base_url = "https://management.azure.com" + self._config = ConfidentialLedgerConfiguration( + credential, subscription_id, **kwargs + ) + self._client = ARMPipelineClient( + base_url=base_url, config=self._config, **kwargs + ) - client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + client_models = { + k: v for k, v in models.__dict__.items() if isinstance(v, type) + } self._serialize = Serializer(client_models) self._serialize.client_side_validation = False self._deserialize = Deserializer(client_models) self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.ledger = LedgerOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) def close(self): # type: () -> None diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/_configuration.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/_configuration.py index 89156203680..ca5583048b8 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/_configuration.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/_configuration.py @@ -12,13 +12,14 @@ from azure.core.pipeline import policies from azure.mgmt.core.policies import ARMHttpLoggingPolicy +from ._version import VERSION + if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from typing import Any from azure.core.credentials import TokenCredential -VERSION = "unknown" class ConfidentialLedgerConfiguration(Configuration): """Configuration for ConfidentialLedger. @@ -47,24 +48,39 @@ def __init__( self.credential = credential self.subscription_id = subscription_id - self.api_version = "2021-05-13-preview" - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) - kwargs.setdefault('sdk_moniker', 'confidentialledger/{}'.format(VERSION)) + self.api_version = "2022-05-13" + self.credential_scopes = kwargs.pop( + "credential_scopes", ["https://management.azure.com/.default"] + ) + kwargs.setdefault("sdk_moniker", "mgmt-confidentialledger/{}".format(VERSION)) self._configure(**kwargs) def _configure( - self, - **kwargs # type: Any + self, **kwargs # type: Any ): # type: (...) -> None - self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) - self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) - self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) - self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) - self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) - self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) - self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) - self.authentication_policy = kwargs.get('authentication_policy') + self.user_agent_policy = kwargs.get( + "user_agent_policy" + ) or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get("headers_policy") or policies.HeadersPolicy( + **kwargs + ) + self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get( + "logging_policy" + ) or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get( + "http_logging_policy" + ) or ARMHttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get("retry_policy") or policies.RetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get( + "custom_hook_policy" + ) or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get("redirect_policy") or policies.RedirectPolicy( + **kwargs + ) + self.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: - self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = policies.BearerTokenCredentialPolicy( + self.credential, *self.credential_scopes, **kwargs + ) diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/__init__.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/_version.py similarity index 85% rename from src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/__init__.py rename to src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/_version.py index 17980852599..c47f66669f1 100644 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/_version.py @@ -6,5 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._security_insights import SecurityInsights -__all__ = ['SecurityInsights'] +VERSION = "1.0.0" diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/__init__.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/__init__.py index 5dac9fbd6c0..b5640145f5f 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/__init__.py @@ -7,4 +7,5 @@ # -------------------------------------------------------------------------- from ._confidential_ledger import ConfidentialLedger -__all__ = ['ConfidentialLedger'] + +__all__ = ["ConfidentialLedger"] diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_confidential_ledger.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_confidential_ledger.py index 6f195a5d3ab..9deb53125e3 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_confidential_ledger.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_confidential_ledger.py @@ -26,9 +26,9 @@ class ConfidentialLedger(ConfidentialLedgerOperationsMixin): """Microsoft Azure Confidential Compute Ledger Control Plane REST API version 2020-12-01-preview. :ivar operations: Operations operations - :vartype operations: confidential_ledger.aio.operations.Operations + :vartype operations: azure.mgmt.confidentialledger.aio.operations.Operations :ivar ledger: LedgerOperations operations - :vartype ledger: confidential_ledger.aio.operations.LedgerOperations + :vartype ledger: azure.mgmt.confidentialledger.aio.operations.LedgerOperations :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The Azure subscription ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). @@ -45,19 +45,27 @@ def __init__( **kwargs: Any ) -> None: if not base_url: - base_url = 'https://management.azure.com' - self._config = ConfidentialLedgerConfiguration(credential, subscription_id, **kwargs) - self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + base_url = "https://management.azure.com" + self._config = ConfidentialLedgerConfiguration( + credential, subscription_id, **kwargs + ) + self._client = AsyncARMPipelineClient( + base_url=base_url, config=self._config, **kwargs + ) - client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + client_models = { + k: v for k, v in models.__dict__.items() if isinstance(v, type) + } self._serialize = Serializer(client_models) self._serialize.client_side_validation = False self._deserialize = Deserializer(client_models) self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.ledger = LedgerOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) async def close(self) -> None: await self._client.close() diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_configuration.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_configuration.py index f2b7d190452..aeef87c1840 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_configuration.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/_configuration.py @@ -12,11 +12,12 @@ from azure.core.pipeline import policies from azure.mgmt.core.policies import ARMHttpLoggingPolicy +from .._version import VERSION + if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials_async import AsyncTokenCredential -VERSION = "unknown" class ConfidentialLedgerConfiguration(Configuration): """Configuration for ConfidentialLedger. @@ -31,10 +32,7 @@ class ConfidentialLedgerConfiguration(Configuration): """ def __init__( - self, - credential: "AsyncTokenCredential", - subscription_id: str, - **kwargs: Any + self, credential: "AsyncTokenCredential", subscription_id: str, **kwargs: Any ) -> None: if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -44,23 +42,38 @@ def __init__( self.credential = credential self.subscription_id = subscription_id - self.api_version = "2021-05-13-preview" - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) - kwargs.setdefault('sdk_moniker', 'confidentialledger/{}'.format(VERSION)) + self.api_version = "2022-05-13" + self.credential_scopes = kwargs.pop( + "credential_scopes", ["https://management.azure.com/.default"] + ) + kwargs.setdefault("sdk_moniker", "mgmt-confidentialledger/{}".format(VERSION)) self._configure(**kwargs) - def _configure( - self, - **kwargs: Any - ) -> None: - self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) - self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) - self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) - self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) - self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) - self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) - self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) - self.authentication_policy = kwargs.get('authentication_policy') + def _configure(self, **kwargs: Any) -> None: + self.user_agent_policy = kwargs.get( + "user_agent_policy" + ) or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get("headers_policy") or policies.HeadersPolicy( + **kwargs + ) + self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get( + "logging_policy" + ) or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get( + "http_logging_policy" + ) or ARMHttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get("retry_policy") or policies.AsyncRetryPolicy( + **kwargs + ) + self.custom_hook_policy = kwargs.get( + "custom_hook_policy" + ) or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get( + "redirect_policy" + ) or policies.AsyncRedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: - self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy( + self.credential, *self.credential_scopes, **kwargs + ) diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/__init__.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/__init__.py index 16166aae041..db779b6f994 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/__init__.py @@ -11,7 +11,7 @@ from ._ledger_operations import LedgerOperations __all__ = [ - 'Operations', - 'ConfidentialLedgerOperationsMixin', - 'LedgerOperations', + "Operations", + "ConfidentialLedgerOperationsMixin", + "LedgerOperations", ] diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_confidential_ledger_operations.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_confidential_ledger_operations.py index cb500c29979..061f9e1fc6a 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_confidential_ledger_operations.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_confidential_ledger_operations.py @@ -8,73 +8,102 @@ from typing import Any, Callable, Dict, Generic, Optional, TypeVar import warnings -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +T = TypeVar("T") +ClsType = Optional[ + Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any] +] -class ConfidentialLedgerOperationsMixin: +class ConfidentialLedgerOperationsMixin: async def check_name_availability( - self, - name_availability_request: "models.CheckNameAvailabilityRequest", - **kwargs + self, name_availability_request: "models.CheckNameAvailabilityRequest", **kwargs ) -> "models.CheckNameAvailabilityResponse": """To check whether a resource name is available. :param name_availability_request: Name availability request payload. - :type name_availability_request: ~confidential_ledger.models.CheckNameAvailabilityRequest + :type name_availability_request: ~azure.mgmt.confidentialledger.models.CheckNameAvailabilityRequest :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse, or the result of cls(response) - :rtype: ~confidential_ledger.models.CheckNameAvailabilityResponse + :rtype: ~azure.mgmt.confidentialledger.models.CheckNameAvailabilityResponse :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.CheckNameAvailabilityResponse"] + cls = kwargs.pop( + "cls", None + ) # type: ClsType["models.CheckNameAvailabilityResponse"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL - url = self.check_name_availability.metadata['url'] # type: ignore + url = self.check_name_availability.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Content-Type"] = self._serialize.header( + "content_type", content_type, "str" + ) + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(name_availability_request, 'CheckNameAvailabilityRequest') - body_content_kwargs['content'] = body_content - request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + body_content = self._serialize.body( + name_availability_request, "CheckNameAvailabilityRequest" + ) + body_content_kwargs["content"] = body_content + request = self._client.post( + url, query_parameters, header_parameters, **body_content_kwargs + ) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) - deserialized = self._deserialize('CheckNameAvailabilityResponse', pipeline_response) + deserialized = self._deserialize( + "CheckNameAvailabilityResponse", pipeline_response + ) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - check_name_availability.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/checkNameAvailability'} # type: ignore + + check_name_availability.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/checkNameAvailability"} # type: ignore diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_ledger_operations.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_ledger_operations.py index aec4c6e32dd..158057dbe64 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_ledger_operations.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_ledger_operations.py @@ -9,7 +9,13 @@ import warnings from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod @@ -18,8 +24,11 @@ from ... import models -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +T = TypeVar("T") +ClsType = Optional[ + Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any] +] + class LedgerOperations: """LedgerOperations async operations. @@ -28,7 +37,7 @@ class LedgerOperations: instantiates it for you and attaches it as an attribute. :ivar models: Alias to model classes used in this operation group. - :type models: ~confidential_ledger.models + :type models: ~azure.mgmt.confidentialledger.models :param client: Client for service requests. :param config: Configuration of service client. :param serializer: An object model serializer. @@ -44,10 +53,7 @@ def __init__(self, client, config, serializer, deserializer) -> None: self._config = config async def get( - self, - resource_group_name: str, - ledger_name: str, - **kwargs + self, resource_group_name: str, ledger_name: str, **kwargs ) -> "models.ConfidentialLedger": """Retrieves information about a Confidential Ledger resource. @@ -59,101 +65,136 @@ async def get( :type ledger_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: ConfidentialLedger, or the result of cls(response) - :rtype: ~confidential_ledger.models.ConfidentialLedger + :rtype: ~azure.mgmt.confidentialledger.models.ConfidentialLedger :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedger"] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedger"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" # Construct URL - url = self.get.metadata['url'] # type: ignore + url = self.get.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore async def _delete_initial( - self, - resource_group_name: str, - ledger_name: str, - **kwargs + self, resource_group_name: str, ledger_name: str, **kwargs ) -> None: - cls = kwargs.pop('cls', None) # type: ClsType[None] + cls = kwargs.pop("cls", None) # type: ClsType[None] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore + url = self._delete_initial.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore async def begin_delete( - self, - resource_group_name: str, - ledger_name: str, - **kwargs + self, resource_group_name: str, ledger_name: str, **kwargs ) -> AsyncLROPoller[None]: """Deletes a Confidential Ledger resource. @@ -173,47 +214,62 @@ async def begin_delete( :rtype: ~azure.core.polling.AsyncLROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType[None] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = await self._delete_initial( resource_group_name=resource_group_name, ledger_name=ledger_name, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = AsyncNoPolling() - else: polling_method = polling + if polling is True: + polling_method = AsyncARMPolling( + lro_delay, path_format_arguments=path_format_arguments, **kwargs + ) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + return AsyncLROPoller( + self._client, raw_result, get_long_running_output, polling_method + ) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore async def _create_initial( self, @@ -222,54 +278,81 @@ async def _create_initial( confidential_ledger: "models.ConfidentialLedger", **kwargs ) -> Optional["models.ConfidentialLedger"]: - cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.ConfidentialLedger"]] + cls = kwargs.pop( + "cls", None + ) # type: ClsType[Optional["models.ConfidentialLedger"]] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL - url = self._create_initial.metadata['url'] # type: ignore + url = self._create_initial.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Content-Type"] = self._serialize.header( + "content_type", content_type, "str" + ) + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(confidential_ledger, 'ConfidentialLedger') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + body_content = self._serialize.body(confidential_ledger, "ConfidentialLedger") + body_content_kwargs["content"] = body_content + request = self._client.put( + url, query_parameters, header_parameters, **body_content_kwargs + ) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) deserialized = None if response.status_code == 200: - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + + _create_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore async def begin_create( self, @@ -287,7 +370,7 @@ async def begin_create( :param ledger_name: Name of the Confidential Ledger. :type ledger_name: str :param confidential_ledger: Confidential Ledger Create Request Body. - :type confidential_ledger: ~confidential_ledger.models.ConfidentialLedger + :type confidential_ledger: ~azure.mgmt.confidentialledger.models.ConfidentialLedger :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: True for ARMPolling, False for no polling, or a @@ -295,54 +378,72 @@ async def begin_create( :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of AsyncLROPoller that returns either ConfidentialLedger or the result of cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~confidential_ledger.models.ConfidentialLedger] + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.confidentialledger.models.ConfidentialLedger] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedger"] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedger"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = await self._create_initial( resource_group_name=resource_group_name, ledger_name=ledger_name, confidential_ledger=confidential_ledger, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = AsyncNoPolling() - else: polling_method = polling + if polling is True: + polling_method = AsyncARMPolling( + lro_delay, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=path_format_arguments, + **kwargs + ) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + return AsyncLROPoller( + self._client, raw_result, get_long_running_output, polling_method + ) + + begin_create.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore async def _update_initial( self, @@ -351,54 +452,81 @@ async def _update_initial( confidential_ledger: "models.ConfidentialLedger", **kwargs ) -> Optional["models.ConfidentialLedger"]: - cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.ConfidentialLedger"]] + cls = kwargs.pop( + "cls", None + ) # type: ClsType[Optional["models.ConfidentialLedger"]] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL - url = self._update_initial.metadata['url'] # type: ignore + url = self._update_initial.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Content-Type"] = self._serialize.header( + "content_type", content_type, "str" + ) + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(confidential_ledger, 'ConfidentialLedger') - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + body_content = self._serialize.body(confidential_ledger, "ConfidentialLedger") + body_content_kwargs["content"] = body_content + request = self._client.patch( + url, query_parameters, header_parameters, **body_content_kwargs + ) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) deserialized = None if response.status_code == 200: - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + + _update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore async def begin_update( self, @@ -416,7 +544,7 @@ async def begin_update( :param ledger_name: Name of the Confidential Ledger. :type ledger_name: str :param confidential_ledger: Confidential Ledger request body for Updating Ledger. - :type confidential_ledger: ~confidential_ledger.models.ConfidentialLedger + :type confidential_ledger: ~azure.mgmt.confidentialledger.models.ConfidentialLedger :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: True for ARMPolling, False for no polling, or a @@ -424,60 +552,72 @@ async def begin_update( :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of AsyncLROPoller that returns either ConfidentialLedger or the result of cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~confidential_ledger.models.ConfidentialLedger] + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.confidentialledger.models.ConfidentialLedger] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedger"] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedger"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = await self._update_initial( resource_group_name=resource_group_name, ledger_name=ledger_name, confidential_ledger=confidential_ledger, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = AsyncNoPolling() - else: polling_method = polling + if polling is True: + polling_method = AsyncARMPolling( + lro_delay, path_format_arguments=path_format_arguments, **kwargs + ) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + return AsyncLROPoller( + self._client, raw_result, get_long_running_output, polling_method + ) + + begin_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def list_by_resource_group( - self, - resource_group_name: str, - filter: Optional[str] = None, - **kwargs + self, resource_group_name: str, filter: Optional[str] = None, **kwargs ) -> AsyncIterable["models.ConfidentialLedgerList"]: """Retrieves information about all Confidential Ledger resources under the given subscription and resource group. @@ -489,35 +629,53 @@ def list_by_resource_group( :type filter: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ConfidentialLedgerList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~confidential_ledger.models.ConfidentialLedgerList] + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.confidentialledger.models.ConfidentialLedgerList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedgerList"] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedgerList"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header( + "accept", accept, "str" + ) if not next_link: # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore + url = self.list_by_resource_group.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", + self._config.subscription_id, + "str", + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') + query_parameters["$filter"] = self._serialize.query( + "filter", filter, "str" + ) request = self._client.get(url, query_parameters, header_parameters) else: @@ -527,7 +685,9 @@ def prepare_request(next_link=None): return request async def extract_data(pipeline_response): - deserialized = self._deserialize('ConfidentialLedgerList', pipeline_response) + deserialized = self._deserialize( + "ConfidentialLedgerList", pipeline_response + ) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -536,25 +696,30 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: error = self._deserialize(models.ErrorResponse, response) - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + map_error( + status_code=response.status_code, + response=response, + error_map=error_map, + ) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) return pipeline_response - return AsyncItemPaged( - get_next, extract_data - ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers'} # type: ignore + return AsyncItemPaged(get_next, extract_data) + + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers"} # type: ignore def list_by_subscription( - self, - filter: Optional[str] = None, - **kwargs + self, filter: Optional[str] = None, **kwargs ) -> AsyncIterable["models.ConfidentialLedgerList"]: """Retrieves information about all Confidential Ledger resources under the given subscription. @@ -564,34 +729,46 @@ def list_by_subscription( :type filter: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ConfidentialLedgerList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~confidential_ledger.models.ConfidentialLedgerList] + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.confidentialledger.models.ConfidentialLedgerList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedgerList"] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedgerList"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header( + "accept", accept, "str" + ) if not next_link: # Construct URL - url = self.list_by_subscription.metadata['url'] # type: ignore + url = self.list_by_subscription.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", + self._config.subscription_id, + "str", + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') + query_parameters["$filter"] = self._serialize.query( + "filter", filter, "str" + ) request = self._client.get(url, query_parameters, header_parameters) else: @@ -601,7 +778,9 @@ def prepare_request(next_link=None): return request async def extract_data(pipeline_response): - deserialized = self._deserialize('ConfidentialLedgerList', pipeline_response) + deserialized = self._deserialize( + "ConfidentialLedgerList", pipeline_response + ) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -610,17 +789,24 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: error = self._deserialize(models.ErrorResponse, response) - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + map_error( + status_code=response.status_code, + response=response, + error_map=error_map, + ) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) return pipeline_response - return AsyncItemPaged( - get_next, extract_data - ) - list_by_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/ledgers/'} # type: ignore + return AsyncItemPaged(get_next, extract_data) + + list_by_subscription.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/ledgers/"} # type: ignore diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_operations.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_operations.py index 7e6e5af0a8a..84ff9caf820 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_operations.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/aio/operations/_operations.py @@ -9,15 +9,24 @@ import warnings from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +T = TypeVar("T") +ClsType = Optional[ + Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any] +] + class Operations: """Operations async operations. @@ -26,7 +35,7 @@ class Operations: instantiates it for you and attaches it as an attribute. :ivar models: Alias to model classes used in this operation group. - :type models: ~confidential_ledger.models + :type models: ~azure.mgmt.confidentialledger.models :param client: Client for service requests. :param config: Configuration of service client. :param serializer: An object model serializer. @@ -41,38 +50,43 @@ def __init__(self, client, config, serializer, deserializer) -> None: self._deserialize = deserializer self._config = config - def list( - self, - **kwargs - ) -> AsyncIterable["models.ResourceProviderOperationList"]: + def list(self, **kwargs) -> AsyncIterable["models.ResourceProviderOperationList"]: """Retrieves a list of available API operations under this Resource Provider. Retrieves a list of available API operations. :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ResourceProviderOperationList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~confidential_ledger.models.ResourceProviderOperationList] + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.confidentialledger.models.ResourceProviderOperationList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ResourceProviderOperationList"] + cls = kwargs.pop( + "cls", None + ) # type: ClsType["models.ResourceProviderOperationList"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header( + "accept", accept, "str" + ) if not next_link: # Construct URL - url = self.list.metadata['url'] # type: ignore + url = self.list.metadata["url"] # type: ignore # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) request = self._client.get(url, query_parameters, header_parameters) else: @@ -82,7 +96,9 @@ def prepare_request(next_link=None): return request async def extract_data(pipeline_response): - deserialized = self._deserialize('ResourceProviderOperationList', pipeline_response) + deserialized = self._deserialize( + "ResourceProviderOperationList", pipeline_response + ) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -91,17 +107,24 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: error = self._deserialize(models.ErrorResponse, response) - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + map_error( + status_code=response.status_code, + response=response, + error_map=error_map, + ) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) return pipeline_response - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/providers/Microsoft.ConfidentialLedger/operations'} # type: ignore + return AsyncItemPaged(get_next, extract_data) + + list.metadata = {"url": "/providers/Microsoft.ConfidentialLedger/operations"} # type: ignore diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/__init__.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/__init__.py index 8b451d3b67c..42ec21a1407 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/__init__.py @@ -52,26 +52,26 @@ ) __all__ = [ - 'AadBasedSecurityPrincipal', - 'CertBasedSecurityPrincipal', - 'CheckNameAvailabilityRequest', - 'CheckNameAvailabilityResponse', - 'ConfidentialLedger', - 'ConfidentialLedgerList', - 'ErrorAdditionalInfo', - 'ErrorDetail', - 'ErrorResponse', - 'LedgerProperties', - 'Resource', - 'ResourceLocation', - 'ResourceProviderOperationDefinition', - 'ResourceProviderOperationDisplay', - 'ResourceProviderOperationList', - 'SystemData', - 'Tags', - 'CheckNameAvailabilityReason', - 'CreatedByType', - 'LedgerRoleName', - 'LedgerType', - 'ProvisioningState', + "AadBasedSecurityPrincipal", + "CertBasedSecurityPrincipal", + "CheckNameAvailabilityRequest", + "CheckNameAvailabilityResponse", + "ConfidentialLedger", + "ConfidentialLedgerList", + "ErrorAdditionalInfo", + "ErrorDetail", + "ErrorResponse", + "LedgerProperties", + "Resource", + "ResourceLocation", + "ResourceProviderOperationDefinition", + "ResourceProviderOperationDisplay", + "ResourceProviderOperationList", + "SystemData", + "Tags", + "CheckNameAvailabilityReason", + "CreatedByType", + "LedgerRoleName", + "LedgerType", + "ProvisioningState", ] diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_confidential_ledger_enums.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_confidential_ledger_enums.py index 5f35846b403..1c2a8c39c2e 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_confidential_ledger_enums.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_confidential_ledger_enums.py @@ -9,6 +9,7 @@ from enum import Enum, EnumMeta from six import with_metaclass + class _CaseInsensitiveEnumMeta(EnumMeta): def __getitem__(self, name): return super().__getitem__(name.upper()) @@ -27,40 +28,39 @@ def __getattr__(cls, name): class CheckNameAvailabilityReason(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The reason why the given name is not available. - """ + """The reason why the given name is not available.""" INVALID = "Invalid" ALREADY_EXISTS = "AlreadyExists" + class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The type of identity that created the resource. - """ + """The type of identity that created the resource.""" USER = "User" APPLICATION = "Application" MANAGED_IDENTITY = "ManagedIdentity" KEY = "Key" + class LedgerRoleName(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """LedgerRole associated with the Security Principal of Ledger - """ + """LedgerRole associated with the Security Principal of Ledger""" READER = "Reader" CONTRIBUTOR = "Contributor" ADMINISTRATOR = "Administrator" + class LedgerType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """Type of the ledger. Private means transaction data is encrypted. - """ + """Type of the ledger. Private means transaction data is encrypted.""" UNKNOWN = "Unknown" PUBLIC = "Public" PRIVATE = "Private" + class ProvisioningState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """Object representing ProvisioningState for Confidential Ledger. - """ + """Object representing ProvisioningState for Confidential Ledger.""" UNKNOWN = "Unknown" SUCCEEDED = "Succeeded" diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models.py index 8665ef26138..cc1fb4ac067 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models.py @@ -19,23 +19,20 @@ class AadBasedSecurityPrincipal(msrest.serialization.Model): :type tenant_id: str :param ledger_role_name: LedgerRole associated with the Security Principal of Ledger. Possible values include: "Reader", "Contributor", "Administrator". - :type ledger_role_name: str or ~confidential_ledger.models.LedgerRoleName + :type ledger_role_name: str or ~azure.mgmt.confidentialledger.models.LedgerRoleName """ _attribute_map = { - 'principal_id': {'key': 'principalId', 'type': 'str'}, - 'tenant_id': {'key': 'tenantId', 'type': 'str'}, - 'ledger_role_name': {'key': 'ledgerRoleName', 'type': 'str'}, + "principal_id": {"key": "principalId", "type": "str"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + "ledger_role_name": {"key": "ledgerRoleName", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(AadBasedSecurityPrincipal, self).__init__(**kwargs) - self.principal_id = kwargs.get('principal_id', None) - self.tenant_id = kwargs.get('tenant_id', None) - self.ledger_role_name = kwargs.get('ledger_role_name', None) + self.principal_id = kwargs.get("principal_id", None) + self.tenant_id = kwargs.get("tenant_id", None) + self.ledger_role_name = kwargs.get("ledger_role_name", None) class CertBasedSecurityPrincipal(msrest.serialization.Model): @@ -45,21 +42,18 @@ class CertBasedSecurityPrincipal(msrest.serialization.Model): :type cert: str :param ledger_role_name: LedgerRole associated with the Security Principal of Ledger. Possible values include: "Reader", "Contributor", "Administrator". - :type ledger_role_name: str or ~confidential_ledger.models.LedgerRoleName + :type ledger_role_name: str or ~azure.mgmt.confidentialledger.models.LedgerRoleName """ _attribute_map = { - 'cert': {'key': 'cert', 'type': 'str'}, - 'ledger_role_name': {'key': 'ledgerRoleName', 'type': 'str'}, + "cert": {"key": "cert", "type": "str"}, + "ledger_role_name": {"key": "ledgerRoleName", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(CertBasedSecurityPrincipal, self).__init__(**kwargs) - self.cert = kwargs.get('cert', None) - self.ledger_role_name = kwargs.get('ledger_role_name', None) + self.cert = kwargs.get("cert", None) + self.ledger_role_name = kwargs.get("ledger_role_name", None) class CheckNameAvailabilityRequest(msrest.serialization.Model): @@ -72,17 +66,14 @@ class CheckNameAvailabilityRequest(msrest.serialization.Model): """ _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(CheckNameAvailabilityRequest, self).__init__(**kwargs) - self.name = kwargs.get('name', None) - self.type = kwargs.get('type', None) + self.name = kwargs.get("name", None) + self.type = kwargs.get("type", None) class CheckNameAvailabilityResponse(msrest.serialization.Model): @@ -92,25 +83,22 @@ class CheckNameAvailabilityResponse(msrest.serialization.Model): :type name_available: bool :param reason: The reason why the given name is not available. Possible values include: "Invalid", "AlreadyExists". - :type reason: str or ~confidential_ledger.models.CheckNameAvailabilityReason + :type reason: str or ~azure.mgmt.confidentialledger.models.CheckNameAvailabilityReason :param message: Detailed reason why the given name is available. :type message: str """ _attribute_map = { - 'name_available': {'key': 'nameAvailable', 'type': 'bool'}, - 'reason': {'key': 'reason', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, + "name_available": {"key": "nameAvailable", "type": "bool"}, + "reason": {"key": "reason", "type": "str"}, + "message": {"key": "message", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(CheckNameAvailabilityResponse, self).__init__(**kwargs) - self.name_available = kwargs.get('name_available', None) - self.reason = kwargs.get('reason', None) - self.message = kwargs.get('message', None) + self.name_available = kwargs.get("name_available", None) + self.reason = kwargs.get("reason", None) + self.message = kwargs.get("message", None) class Tags(msrest.serialization.Model): @@ -121,15 +109,12 @@ class Tags(msrest.serialization.Model): """ _attribute_map = { - 'tags': {'key': 'tags', 'type': '{str}'}, + "tags": {"key": "tags", "type": "{str}"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(Tags, self).__init__(**kwargs) - self.tags = kwargs.get('tags', None) + self.tags = kwargs.get("tags", None) class ResourceLocation(msrest.serialization.Model): @@ -140,15 +125,12 @@ class ResourceLocation(msrest.serialization.Model): """ _attribute_map = { - 'location': {'key': 'location', 'type': 'str'}, + "location": {"key": "location", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ResourceLocation, self).__init__(**kwargs) - self.location = kwargs.get('location', None) + self.location = kwargs.get("location", None) class Resource(msrest.serialization.Model): @@ -163,27 +145,24 @@ class Resource(msrest.serialization.Model): :ivar type: The type of the resource. :vartype type: str :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~confidential_ledger.models.SystemData + :vartype system_data: ~azure.mgmt.confidentialledger.models.SystemData """ _validation = { - 'name': {'readonly': True}, - 'id': {'readonly': True}, - 'type': {'readonly': True}, - 'system_data': {'readonly': True}, + "name": {"readonly": True}, + "id": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, } _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'id': {'key': 'id', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + "name": {"key": "name", "type": "str"}, + "id": {"key": "id", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(Resource, self).__init__(**kwargs) self.name = None self.id = None @@ -207,72 +186,66 @@ class ConfidentialLedger(Resource, ResourceLocation, Tags): :ivar type: The type of the resource. :vartype type: str :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~confidential_ledger.models.SystemData + :vartype system_data: ~azure.mgmt.confidentialledger.models.SystemData :param properties: Properties of Confidential Ledger Resource. - :type properties: ~confidential_ledger.models.LedgerProperties + :type properties: ~azure.mgmt.confidentialledger.models.LedgerProperties """ _validation = { - 'name': {'readonly': True}, - 'id': {'readonly': True}, - 'type': {'readonly': True}, - 'system_data': {'readonly': True}, + "name": {"readonly": True}, + "id": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, } _attribute_map = { - 'tags': {'key': 'tags', 'type': '{str}'}, - 'location': {'key': 'location', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'id': {'key': 'id', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'properties': {'key': 'properties', 'type': 'LedgerProperties'}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "id": {"key": "id", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "properties": {"key": "properties", "type": "LedgerProperties"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ConfidentialLedger, self).__init__(**kwargs) - self.tags = kwargs.get('tags', None) - self.location = kwargs.get('location', None) - self.properties = kwargs.get('properties', None) - self.tags = kwargs.get('tags', None) + self.tags = kwargs.get("tags", None) + self.location = kwargs.get("location", None) + self.properties = kwargs.get("properties", None) + self.tags = kwargs.get("tags", None) self.name = None self.id = None self.type = None self.system_data = None - self.properties = kwargs.get('properties', None) - self.location = kwargs.get('location', None) + self.properties = kwargs.get("properties", None) + self.location = kwargs.get("location", None) self.name = None self.id = None self.type = None self.system_data = None - self.properties = kwargs.get('properties', None) + self.properties = kwargs.get("properties", None) class ConfidentialLedgerList(msrest.serialization.Model): """Object that includes an array of Confidential Ledgers and a possible link for next set. :param value: List of Confidential Ledgers. - :type value: list[~confidential_ledger.models.ConfidentialLedger] + :type value: list[~azure.mgmt.confidentialledger.models.ConfidentialLedger] :param next_link: The URL the client should use to fetch the next page (per server side paging). :type next_link: str """ _attribute_map = { - 'value': {'key': 'value', 'type': '[ConfidentialLedger]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + "value": {"key": "value", "type": "[ConfidentialLedger]"}, + "next_link": {"key": "nextLink", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ConfidentialLedgerList, self).__init__(**kwargs) - self.value = kwargs.get('value', None) - self.next_link = kwargs.get('next_link', None) + self.value = kwargs.get("value", None) + self.next_link = kwargs.get("next_link", None) class ErrorAdditionalInfo(msrest.serialization.Model): @@ -287,19 +260,16 @@ class ErrorAdditionalInfo(msrest.serialization.Model): """ _validation = { - 'type': {'readonly': True}, - 'info': {'readonly': True}, + "type": {"readonly": True}, + "info": {"readonly": True}, } _attribute_map = { - 'type': {'key': 'type', 'type': 'str'}, - 'info': {'key': 'info', 'type': 'object'}, + "type": {"key": "type", "type": "str"}, + "info": {"key": "info", "type": "object"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ErrorAdditionalInfo, self).__init__(**kwargs) self.type = None self.info = None @@ -317,31 +287,28 @@ class ErrorDetail(msrest.serialization.Model): :ivar target: The error target. :vartype target: str :ivar details: The error details. - :vartype details: list[~confidential_ledger.models.ErrorDetail] + :vartype details: list[~azure.mgmt.confidentialledger.models.ErrorDetail] :ivar additional_info: The error additional info. - :vartype additional_info: list[~confidential_ledger.models.ErrorAdditionalInfo] + :vartype additional_info: list[~azure.mgmt.confidentialledger.models.ErrorAdditionalInfo] """ _validation = { - 'code': {'readonly': True}, - 'message': {'readonly': True}, - 'target': {'readonly': True}, - 'details': {'readonly': True}, - 'additional_info': {'readonly': True}, + "code": {"readonly": True}, + "message": {"readonly": True}, + "target": {"readonly": True}, + "details": {"readonly": True}, + "additional_info": {"readonly": True}, } _attribute_map = { - 'code': {'key': 'code', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, - 'details': {'key': 'details', 'type': '[ErrorDetail]'}, - 'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'}, + "code": {"key": "code", "type": "str"}, + "message": {"key": "message", "type": "str"}, + "target": {"key": "target", "type": "str"}, + "details": {"key": "details", "type": "[ErrorDetail]"}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ErrorDetail, self).__init__(**kwargs) self.code = None self.message = None @@ -354,19 +321,16 @@ class ErrorResponse(msrest.serialization.Model): """Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). :param error: The error object. - :type error: ~confidential_ledger.models.ErrorDetail + :type error: ~azure.mgmt.confidentialledger.models.ErrorDetail """ _attribute_map = { - 'error': {'key': 'error', 'type': 'ErrorDetail'}, + "error": {"key": "error", "type": "ErrorDetail"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ErrorResponse, self).__init__(**kwargs) - self.error = kwargs.get('error', None) + self.error = kwargs.get("error", None) class LedgerProperties(msrest.serialization.Model): @@ -384,50 +348,57 @@ class LedgerProperties(msrest.serialization.Model): :vartype ledger_internal_namespace: str :param ledger_type: Type of Confidential Ledger. Possible values include: "Unknown", "Public", "Private". - :type ledger_type: str or ~confidential_ledger.models.LedgerType + :type ledger_type: str or ~azure.mgmt.confidentialledger.models.LedgerType :ivar provisioning_state: Provisioning state of Ledger Resource. Possible values include: "Unknown", "Succeeded", "Failed", "Canceled", "Creating", "Deleting", "Updating". - :vartype provisioning_state: str or ~confidential_ledger.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.confidentialledger.models.ProvisioningState :param aad_based_security_principals: Array of all AAD based Security Principals. :type aad_based_security_principals: - list[~confidential_ledger.models.AadBasedSecurityPrincipal] + list[~azure.mgmt.confidentialledger.models.AadBasedSecurityPrincipal] :param cert_based_security_principals: Array of all cert based Security Principals. :type cert_based_security_principals: - list[~confidential_ledger.models.CertBasedSecurityPrincipal] + list[~azure.mgmt.confidentialledger.models.CertBasedSecurityPrincipal] """ _validation = { - 'ledger_name': {'readonly': True}, - 'ledger_uri': {'readonly': True}, - 'identity_service_uri': {'readonly': True}, - 'ledger_internal_namespace': {'readonly': True}, - 'provisioning_state': {'readonly': True}, + "ledger_name": {"readonly": True}, + "ledger_uri": {"readonly": True}, + "identity_service_uri": {"readonly": True}, + "ledger_internal_namespace": {"readonly": True}, + "provisioning_state": {"readonly": True}, } _attribute_map = { - 'ledger_name': {'key': 'ledgerName', 'type': 'str'}, - 'ledger_uri': {'key': 'ledgerUri', 'type': 'str'}, - 'identity_service_uri': {'key': 'identityServiceUri', 'type': 'str'}, - 'ledger_internal_namespace': {'key': 'ledgerInternalNamespace', 'type': 'str'}, - 'ledger_type': {'key': 'ledgerType', 'type': 'str'}, - 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, - 'aad_based_security_principals': {'key': 'aadBasedSecurityPrincipals', 'type': '[AadBasedSecurityPrincipal]'}, - 'cert_based_security_principals': {'key': 'certBasedSecurityPrincipals', 'type': '[CertBasedSecurityPrincipal]'}, + "ledger_name": {"key": "ledgerName", "type": "str"}, + "ledger_uri": {"key": "ledgerUri", "type": "str"}, + "identity_service_uri": {"key": "identityServiceUri", "type": "str"}, + "ledger_internal_namespace": {"key": "ledgerInternalNamespace", "type": "str"}, + "ledger_type": {"key": "ledgerType", "type": "str"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "aad_based_security_principals": { + "key": "aadBasedSecurityPrincipals", + "type": "[AadBasedSecurityPrincipal]", + }, + "cert_based_security_principals": { + "key": "certBasedSecurityPrincipals", + "type": "[CertBasedSecurityPrincipal]", + }, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(LedgerProperties, self).__init__(**kwargs) self.ledger_name = None self.ledger_uri = None self.identity_service_uri = None self.ledger_internal_namespace = None - self.ledger_type = kwargs.get('ledger_type', None) + self.ledger_type = kwargs.get("ledger_type", None) self.provisioning_state = None - self.aad_based_security_principals = kwargs.get('aad_based_security_principals', None) - self.cert_based_security_principals = kwargs.get('cert_based_security_principals', None) + self.aad_based_security_principals = kwargs.get( + "aad_based_security_principals", None + ) + self.cert_based_security_principals = kwargs.get( + "cert_based_security_principals", None + ) class ResourceProviderOperationDefinition(msrest.serialization.Model): @@ -438,23 +409,20 @@ class ResourceProviderOperationDefinition(msrest.serialization.Model): :param is_data_action: Indicates whether the operation is data action or not. :type is_data_action: bool :param display: Details about the operations. - :type display: ~confidential_ledger.models.ResourceProviderOperationDisplay + :type display: ~azure.mgmt.confidentialledger.models.ResourceProviderOperationDisplay """ _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'is_data_action': {'key': 'isDataAction', 'type': 'bool'}, - 'display': {'key': 'display', 'type': 'ResourceProviderOperationDisplay'}, + "name": {"key": "name", "type": "str"}, + "is_data_action": {"key": "isDataAction", "type": "bool"}, + "display": {"key": "display", "type": "ResourceProviderOperationDisplay"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ResourceProviderOperationDefinition, self).__init__(**kwargs) - self.name = kwargs.get('name', None) - self.is_data_action = kwargs.get('is_data_action', None) - self.display = kwargs.get('display', None) + self.name = kwargs.get("name", None) + self.is_data_action = kwargs.get("is_data_action", None) + self.display = kwargs.get("display", None) class ResourceProviderOperationDisplay(msrest.serialization.Model): @@ -471,21 +439,18 @@ class ResourceProviderOperationDisplay(msrest.serialization.Model): """ _attribute_map = { - 'provider': {'key': 'provider', 'type': 'str'}, - 'resource': {'key': 'resource', 'type': 'str'}, - 'operation': {'key': 'operation', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ResourceProviderOperationDisplay, self).__init__(**kwargs) - self.provider = kwargs.get('provider', None) - self.resource = kwargs.get('resource', None) - self.operation = kwargs.get('operation', None) - self.description = kwargs.get('description', None) + self.provider = kwargs.get("provider", None) + self.resource = kwargs.get("resource", None) + self.operation = kwargs.get("operation", None) + self.description = kwargs.get("description", None) class ResourceProviderOperationList(msrest.serialization.Model): @@ -494,26 +459,23 @@ class ResourceProviderOperationList(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. :ivar value: Resource provider operations list. - :vartype value: list[~confidential_ledger.models.ResourceProviderOperationDefinition] + :vartype value: list[~azure.mgmt.confidentialledger.models.ResourceProviderOperationDefinition] :ivar next_link: The URI that can be used to request the next page for list of Azure operations. :vartype next_link: str """ _validation = { - 'value': {'readonly': True}, - 'next_link': {'readonly': True}, + "value": {"readonly": True}, + "next_link": {"readonly": True}, } _attribute_map = { - 'value': {'key': 'value', 'type': '[ResourceProviderOperationDefinition]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + "value": {"key": "value", "type": "[ResourceProviderOperationDefinition]"}, + "next_link": {"key": "nextLink", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ResourceProviderOperationList, self).__init__(**kwargs) self.value = None self.next_link = None @@ -526,35 +488,32 @@ class SystemData(msrest.serialization.Model): :type created_by: str :param created_by_type: The type of identity that created the resource. Possible values include: "User", "Application", "ManagedIdentity", "Key". - :type created_by_type: str or ~confidential_ledger.models.CreatedByType + :type created_by_type: str or ~azure.mgmt.confidentialledger.models.CreatedByType :param created_at: The timestamp of resource creation (UTC). :type created_at: ~datetime.datetime :param last_modified_by: The identity that last modified the resource. :type last_modified_by: str :param last_modified_by_type: The type of identity that last modified the resource. Possible values include: "User", "Application", "ManagedIdentity", "Key". - :type last_modified_by_type: str or ~confidential_ledger.models.CreatedByType + :type last_modified_by_type: str or ~azure.mgmt.confidentialledger.models.CreatedByType :param last_modified_at: The timestamp of resource last modification (UTC). :type last_modified_at: ~datetime.datetime """ _attribute_map = { - 'created_by': {'key': 'createdBy', 'type': 'str'}, - 'created_by_type': {'key': 'createdByType', 'type': 'str'}, - 'created_at': {'key': 'createdAt', 'type': 'iso-8601'}, - 'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'}, - 'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'}, - 'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'}, + "created_by": {"key": "createdBy", "type": "str"}, + "created_by_type": {"key": "createdByType", "type": "str"}, + "created_at": {"key": "createdAt", "type": "iso-8601"}, + "last_modified_by": {"key": "lastModifiedBy", "type": "str"}, + "last_modified_by_type": {"key": "lastModifiedByType", "type": "str"}, + "last_modified_at": {"key": "lastModifiedAt", "type": "iso-8601"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(SystemData, self).__init__(**kwargs) - self.created_by = kwargs.get('created_by', None) - self.created_by_type = kwargs.get('created_by_type', None) - self.created_at = kwargs.get('created_at', None) - self.last_modified_by = kwargs.get('last_modified_by', None) - self.last_modified_by_type = kwargs.get('last_modified_by_type', None) - self.last_modified_at = kwargs.get('last_modified_at', None) + self.created_by = kwargs.get("created_by", None) + self.created_by_type = kwargs.get("created_by_type", None) + self.created_at = kwargs.get("created_at", None) + self.last_modified_by = kwargs.get("last_modified_by", None) + self.last_modified_by_type = kwargs.get("last_modified_by_type", None) + self.last_modified_at = kwargs.get("last_modified_at", None) diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models_py3.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models_py3.py index 36c854c6cdc..e836a457ec1 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models_py3.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/models/_models_py3.py @@ -24,13 +24,13 @@ class AadBasedSecurityPrincipal(msrest.serialization.Model): :type tenant_id: str :param ledger_role_name: LedgerRole associated with the Security Principal of Ledger. Possible values include: "Reader", "Contributor", "Administrator". - :type ledger_role_name: str or ~confidential_ledger.models.LedgerRoleName + :type ledger_role_name: str or ~azure.mgmt.confidentialledger.models.LedgerRoleName """ _attribute_map = { - 'principal_id': {'key': 'principalId', 'type': 'str'}, - 'tenant_id': {'key': 'tenantId', 'type': 'str'}, - 'ledger_role_name': {'key': 'ledgerRoleName', 'type': 'str'}, + "principal_id": {"key": "principalId", "type": "str"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + "ledger_role_name": {"key": "ledgerRoleName", "type": "str"}, } def __init__( @@ -54,12 +54,12 @@ class CertBasedSecurityPrincipal(msrest.serialization.Model): :type cert: str :param ledger_role_name: LedgerRole associated with the Security Principal of Ledger. Possible values include: "Reader", "Contributor", "Administrator". - :type ledger_role_name: str or ~confidential_ledger.models.LedgerRoleName + :type ledger_role_name: str or ~azure.mgmt.confidentialledger.models.LedgerRoleName """ _attribute_map = { - 'cert': {'key': 'cert', 'type': 'str'}, - 'ledger_role_name': {'key': 'ledgerRoleName', 'type': 'str'}, + "cert": {"key": "cert", "type": "str"}, + "ledger_role_name": {"key": "ledgerRoleName", "type": "str"}, } def __init__( @@ -84,16 +84,12 @@ class CheckNameAvailabilityRequest(msrest.serialization.Model): """ _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, } def __init__( - self, - *, - name: Optional[str] = None, - type: Optional[str] = None, - **kwargs + self, *, name: Optional[str] = None, type: Optional[str] = None, **kwargs ): super(CheckNameAvailabilityRequest, self).__init__(**kwargs) self.name = name @@ -107,15 +103,15 @@ class CheckNameAvailabilityResponse(msrest.serialization.Model): :type name_available: bool :param reason: The reason why the given name is not available. Possible values include: "Invalid", "AlreadyExists". - :type reason: str or ~confidential_ledger.models.CheckNameAvailabilityReason + :type reason: str or ~azure.mgmt.confidentialledger.models.CheckNameAvailabilityReason :param message: Detailed reason why the given name is available. :type message: str """ _attribute_map = { - 'name_available': {'key': 'nameAvailable', 'type': 'bool'}, - 'reason': {'key': 'reason', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, + "name_available": {"key": "nameAvailable", "type": "bool"}, + "reason": {"key": "reason", "type": "str"}, + "message": {"key": "message", "type": "str"}, } def __init__( @@ -140,15 +136,10 @@ class Tags(msrest.serialization.Model): """ _attribute_map = { - 'tags': {'key': 'tags', 'type': '{str}'}, + "tags": {"key": "tags", "type": "{str}"}, } - def __init__( - self, - *, - tags: Optional[Dict[str, str]] = None, - **kwargs - ): + def __init__(self, *, tags: Optional[Dict[str, str]] = None, **kwargs): super(Tags, self).__init__(**kwargs) self.tags = tags @@ -161,15 +152,10 @@ class ResourceLocation(msrest.serialization.Model): """ _attribute_map = { - 'location': {'key': 'location', 'type': 'str'}, + "location": {"key": "location", "type": "str"}, } - def __init__( - self, - *, - location: Optional[str] = None, - **kwargs - ): + def __init__(self, *, location: Optional[str] = None, **kwargs): super(ResourceLocation, self).__init__(**kwargs) self.location = location @@ -186,27 +172,24 @@ class Resource(msrest.serialization.Model): :ivar type: The type of the resource. :vartype type: str :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~confidential_ledger.models.SystemData + :vartype system_data: ~azure.mgmt.confidentialledger.models.SystemData """ _validation = { - 'name': {'readonly': True}, - 'id': {'readonly': True}, - 'type': {'readonly': True}, - 'system_data': {'readonly': True}, + "name": {"readonly": True}, + "id": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, } _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'id': {'key': 'id', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + "name": {"key": "name", "type": "str"}, + "id": {"key": "id", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(Resource, self).__init__(**kwargs) self.name = None self.id = None @@ -230,26 +213,26 @@ class ConfidentialLedger(Resource, ResourceLocation, Tags): :ivar type: The type of the resource. :vartype type: str :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~confidential_ledger.models.SystemData + :vartype system_data: ~azure.mgmt.confidentialledger.models.SystemData :param properties: Properties of Confidential Ledger Resource. - :type properties: ~confidential_ledger.models.LedgerProperties + :type properties: ~azure.mgmt.confidentialledger.models.LedgerProperties """ _validation = { - 'name': {'readonly': True}, - 'id': {'readonly': True}, - 'type': {'readonly': True}, - 'system_data': {'readonly': True}, + "name": {"readonly": True}, + "id": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, } _attribute_map = { - 'tags': {'key': 'tags', 'type': '{str}'}, - 'location': {'key': 'location', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'id': {'key': 'id', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'properties': {'key': 'properties', 'type': 'LedgerProperties'}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "id": {"key": "id", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "properties": {"key": "properties", "type": "LedgerProperties"}, } def __init__( @@ -282,15 +265,15 @@ class ConfidentialLedgerList(msrest.serialization.Model): """Object that includes an array of Confidential Ledgers and a possible link for next set. :param value: List of Confidential Ledgers. - :type value: list[~confidential_ledger.models.ConfidentialLedger] + :type value: list[~azure.mgmt.confidentialledger.models.ConfidentialLedger] :param next_link: The URL the client should use to fetch the next page (per server side paging). :type next_link: str """ _attribute_map = { - 'value': {'key': 'value', 'type': '[ConfidentialLedger]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + "value": {"key": "value", "type": "[ConfidentialLedger]"}, + "next_link": {"key": "nextLink", "type": "str"}, } def __init__( @@ -317,19 +300,16 @@ class ErrorAdditionalInfo(msrest.serialization.Model): """ _validation = { - 'type': {'readonly': True}, - 'info': {'readonly': True}, + "type": {"readonly": True}, + "info": {"readonly": True}, } _attribute_map = { - 'type': {'key': 'type', 'type': 'str'}, - 'info': {'key': 'info', 'type': 'object'}, + "type": {"key": "type", "type": "str"}, + "info": {"key": "info", "type": "object"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ErrorAdditionalInfo, self).__init__(**kwargs) self.type = None self.info = None @@ -347,31 +327,28 @@ class ErrorDetail(msrest.serialization.Model): :ivar target: The error target. :vartype target: str :ivar details: The error details. - :vartype details: list[~confidential_ledger.models.ErrorDetail] + :vartype details: list[~azure.mgmt.confidentialledger.models.ErrorDetail] :ivar additional_info: The error additional info. - :vartype additional_info: list[~confidential_ledger.models.ErrorAdditionalInfo] + :vartype additional_info: list[~azure.mgmt.confidentialledger.models.ErrorAdditionalInfo] """ _validation = { - 'code': {'readonly': True}, - 'message': {'readonly': True}, - 'target': {'readonly': True}, - 'details': {'readonly': True}, - 'additional_info': {'readonly': True}, + "code": {"readonly": True}, + "message": {"readonly": True}, + "target": {"readonly": True}, + "details": {"readonly": True}, + "additional_info": {"readonly": True}, } _attribute_map = { - 'code': {'key': 'code', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, - 'details': {'key': 'details', 'type': '[ErrorDetail]'}, - 'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'}, + "code": {"key": "code", "type": "str"}, + "message": {"key": "message", "type": "str"}, + "target": {"key": "target", "type": "str"}, + "details": {"key": "details", "type": "[ErrorDetail]"}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ErrorDetail, self).__init__(**kwargs) self.code = None self.message = None @@ -384,19 +361,14 @@ class ErrorResponse(msrest.serialization.Model): """Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). :param error: The error object. - :type error: ~confidential_ledger.models.ErrorDetail + :type error: ~azure.mgmt.confidentialledger.models.ErrorDetail """ _attribute_map = { - 'error': {'key': 'error', 'type': 'ErrorDetail'}, + "error": {"key": "error", "type": "ErrorDetail"}, } - def __init__( - self, - *, - error: Optional["ErrorDetail"] = None, - **kwargs - ): + def __init__(self, *, error: Optional["ErrorDetail"] = None, **kwargs): super(ErrorResponse, self).__init__(**kwargs) self.error = error @@ -416,43 +388,53 @@ class LedgerProperties(msrest.serialization.Model): :vartype ledger_internal_namespace: str :param ledger_type: Type of Confidential Ledger. Possible values include: "Unknown", "Public", "Private". - :type ledger_type: str or ~confidential_ledger.models.LedgerType + :type ledger_type: str or ~azure.mgmt.confidentialledger.models.LedgerType :ivar provisioning_state: Provisioning state of Ledger Resource. Possible values include: "Unknown", "Succeeded", "Failed", "Canceled", "Creating", "Deleting", "Updating". - :vartype provisioning_state: str or ~confidential_ledger.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.confidentialledger.models.ProvisioningState :param aad_based_security_principals: Array of all AAD based Security Principals. :type aad_based_security_principals: - list[~confidential_ledger.models.AadBasedSecurityPrincipal] + list[~azure.mgmt.confidentialledger.models.AadBasedSecurityPrincipal] :param cert_based_security_principals: Array of all cert based Security Principals. :type cert_based_security_principals: - list[~confidential_ledger.models.CertBasedSecurityPrincipal] + list[~azure.mgmt.confidentialledger.models.CertBasedSecurityPrincipal] """ _validation = { - 'ledger_name': {'readonly': True}, - 'ledger_uri': {'readonly': True}, - 'identity_service_uri': {'readonly': True}, - 'ledger_internal_namespace': {'readonly': True}, - 'provisioning_state': {'readonly': True}, + "ledger_name": {"readonly": True}, + "ledger_uri": {"readonly": True}, + "identity_service_uri": {"readonly": True}, + "ledger_internal_namespace": {"readonly": True}, + "provisioning_state": {"readonly": True}, } _attribute_map = { - 'ledger_name': {'key': 'ledgerName', 'type': 'str'}, - 'ledger_uri': {'key': 'ledgerUri', 'type': 'str'}, - 'identity_service_uri': {'key': 'identityServiceUri', 'type': 'str'}, - 'ledger_internal_namespace': {'key': 'ledgerInternalNamespace', 'type': 'str'}, - 'ledger_type': {'key': 'ledgerType', 'type': 'str'}, - 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, - 'aad_based_security_principals': {'key': 'aadBasedSecurityPrincipals', 'type': '[AadBasedSecurityPrincipal]'}, - 'cert_based_security_principals': {'key': 'certBasedSecurityPrincipals', 'type': '[CertBasedSecurityPrincipal]'}, + "ledger_name": {"key": "ledgerName", "type": "str"}, + "ledger_uri": {"key": "ledgerUri", "type": "str"}, + "identity_service_uri": {"key": "identityServiceUri", "type": "str"}, + "ledger_internal_namespace": {"key": "ledgerInternalNamespace", "type": "str"}, + "ledger_type": {"key": "ledgerType", "type": "str"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "aad_based_security_principals": { + "key": "aadBasedSecurityPrincipals", + "type": "[AadBasedSecurityPrincipal]", + }, + "cert_based_security_principals": { + "key": "certBasedSecurityPrincipals", + "type": "[CertBasedSecurityPrincipal]", + }, } def __init__( self, *, ledger_type: Optional[Union[str, "LedgerType"]] = None, - aad_based_security_principals: Optional[List["AadBasedSecurityPrincipal"]] = None, - cert_based_security_principals: Optional[List["CertBasedSecurityPrincipal"]] = None, + aad_based_security_principals: Optional[ + List["AadBasedSecurityPrincipal"] + ] = None, + cert_based_security_principals: Optional[ + List["CertBasedSecurityPrincipal"] + ] = None, **kwargs ): super(LedgerProperties, self).__init__(**kwargs) @@ -474,13 +456,13 @@ class ResourceProviderOperationDefinition(msrest.serialization.Model): :param is_data_action: Indicates whether the operation is data action or not. :type is_data_action: bool :param display: Details about the operations. - :type display: ~confidential_ledger.models.ResourceProviderOperationDisplay + :type display: ~azure.mgmt.confidentialledger.models.ResourceProviderOperationDisplay """ _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'is_data_action': {'key': 'isDataAction', 'type': 'bool'}, - 'display': {'key': 'display', 'type': 'ResourceProviderOperationDisplay'}, + "name": {"key": "name", "type": "str"}, + "is_data_action": {"key": "isDataAction", "type": "bool"}, + "display": {"key": "display", "type": "ResourceProviderOperationDisplay"}, } def __init__( @@ -511,10 +493,10 @@ class ResourceProviderOperationDisplay(msrest.serialization.Model): """ _attribute_map = { - 'provider': {'key': 'provider', 'type': 'str'}, - 'resource': {'key': 'resource', 'type': 'str'}, - 'operation': {'key': 'operation', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, } def __init__( @@ -539,26 +521,23 @@ class ResourceProviderOperationList(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. :ivar value: Resource provider operations list. - :vartype value: list[~confidential_ledger.models.ResourceProviderOperationDefinition] + :vartype value: list[~azure.mgmt.confidentialledger.models.ResourceProviderOperationDefinition] :ivar next_link: The URI that can be used to request the next page for list of Azure operations. :vartype next_link: str """ _validation = { - 'value': {'readonly': True}, - 'next_link': {'readonly': True}, + "value": {"readonly": True}, + "next_link": {"readonly": True}, } _attribute_map = { - 'value': {'key': 'value', 'type': '[ResourceProviderOperationDefinition]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + "value": {"key": "value", "type": "[ResourceProviderOperationDefinition]"}, + "next_link": {"key": "nextLink", "type": "str"}, } - def __init__( - self, - **kwargs - ): + def __init__(self, **kwargs): super(ResourceProviderOperationList, self).__init__(**kwargs) self.value = None self.next_link = None @@ -571,25 +550,25 @@ class SystemData(msrest.serialization.Model): :type created_by: str :param created_by_type: The type of identity that created the resource. Possible values include: "User", "Application", "ManagedIdentity", "Key". - :type created_by_type: str or ~confidential_ledger.models.CreatedByType + :type created_by_type: str or ~azure.mgmt.confidentialledger.models.CreatedByType :param created_at: The timestamp of resource creation (UTC). :type created_at: ~datetime.datetime :param last_modified_by: The identity that last modified the resource. :type last_modified_by: str :param last_modified_by_type: The type of identity that last modified the resource. Possible values include: "User", "Application", "ManagedIdentity", "Key". - :type last_modified_by_type: str or ~confidential_ledger.models.CreatedByType + :type last_modified_by_type: str or ~azure.mgmt.confidentialledger.models.CreatedByType :param last_modified_at: The timestamp of resource last modification (UTC). :type last_modified_at: ~datetime.datetime """ _attribute_map = { - 'created_by': {'key': 'createdBy', 'type': 'str'}, - 'created_by_type': {'key': 'createdByType', 'type': 'str'}, - 'created_at': {'key': 'createdAt', 'type': 'iso-8601'}, - 'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'}, - 'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'}, - 'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'}, + "created_by": {"key": "createdBy", "type": "str"}, + "created_by_type": {"key": "createdByType", "type": "str"}, + "created_at": {"key": "createdAt", "type": "iso-8601"}, + "last_modified_by": {"key": "lastModifiedBy", "type": "str"}, + "last_modified_by_type": {"key": "lastModifiedByType", "type": "str"}, + "last_modified_at": {"key": "lastModifiedAt", "type": "iso-8601"}, } def __init__( diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/__init__.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/__init__.py index 16166aae041..db779b6f994 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/__init__.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/__init__.py @@ -11,7 +11,7 @@ from ._ledger_operations import LedgerOperations __all__ = [ - 'Operations', - 'ConfidentialLedgerOperationsMixin', - 'LedgerOperations', + "Operations", + "ConfidentialLedgerOperationsMixin", + "LedgerOperations", ] diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_confidential_ledger_operations.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_confidential_ledger_operations.py index 4d8b80bcdf4..b94832caac5 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_confidential_ledger_operations.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_confidential_ledger_operations.py @@ -8,7 +8,13 @@ from typing import TYPE_CHECKING import warnings -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse from azure.mgmt.core.exceptions import ARMErrorFormat @@ -19,11 +25,13 @@ # pylint: disable=unused-import,ungrouped-imports from typing import Any, Callable, Dict, Generic, Optional, TypeVar - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + T = TypeVar("T") + ClsType = Optional[ + Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any] + ] -class ConfidentialLedgerOperationsMixin(object): +class ConfidentialLedgerOperationsMixin(object): def check_name_availability( self, name_availability_request, # type: "models.CheckNameAvailabilityRequest" @@ -33,53 +41,74 @@ def check_name_availability( """To check whether a resource name is available. :param name_availability_request: Name availability request payload. - :type name_availability_request: ~confidential_ledger.models.CheckNameAvailabilityRequest + :type name_availability_request: ~azure.mgmt.confidentialledger.models.CheckNameAvailabilityRequest :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse, or the result of cls(response) - :rtype: ~confidential_ledger.models.CheckNameAvailabilityResponse + :rtype: ~azure.mgmt.confidentialledger.models.CheckNameAvailabilityResponse :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.CheckNameAvailabilityResponse"] + cls = kwargs.pop( + "cls", None + ) # type: ClsType["models.CheckNameAvailabilityResponse"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL - url = self.check_name_availability.metadata['url'] # type: ignore + url = self.check_name_availability.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Content-Type"] = self._serialize.header( + "content_type", content_type, "str" + ) + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(name_availability_request, 'CheckNameAvailabilityRequest') - body_content_kwargs['content'] = body_content - request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + body_content = self._serialize.body( + name_availability_request, "CheckNameAvailabilityRequest" + ) + body_content_kwargs["content"] = body_content + request = self._client.post( + url, query_parameters, header_parameters, **body_content_kwargs + ) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) - deserialized = self._deserialize('CheckNameAvailabilityResponse', pipeline_response) + deserialized = self._deserialize( + "CheckNameAvailabilityResponse", pipeline_response + ) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - check_name_availability.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/checkNameAvailability'} # type: ignore + + check_name_availability.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/checkNameAvailability"} # type: ignore diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_ledger_operations.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_ledger_operations.py index ffec5176377..6219f426cd7 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_ledger_operations.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_ledger_operations.py @@ -8,7 +8,13 @@ from typing import TYPE_CHECKING import warnings -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse @@ -22,8 +28,11 @@ # pylint: disable=unused-import,ungrouped-imports from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + T = TypeVar("T") + ClsType = Optional[ + Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any] + ] + class LedgerOperations(object): """LedgerOperations operations. @@ -32,7 +41,7 @@ class LedgerOperations(object): instantiates it for you and attaches it as an attribute. :ivar models: Alias to model classes used in this operation group. - :type models: ~confidential_ledger.models + :type models: ~azure.mgmt.confidentialledger.models :param client: Client for service requests. :param config: Configuration of service client. :param serializer: An object model serializer. @@ -64,50 +73,69 @@ def get( :type ledger_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: ConfidentialLedger, or the result of cls(response) - :rtype: ~confidential_ledger.models.ConfidentialLedger + :rtype: ~azure.mgmt.confidentialledger.models.ConfidentialLedger :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedger"] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedger"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" # Construct URL - url = self.get.metadata['url'] # type: ignore + url = self.get.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") request = self._client.get(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def _delete_initial( self, @@ -116,44 +144,62 @@ def _delete_initial( **kwargs # type: Any ): # type: (...) -> None - cls = kwargs.pop('cls', None) # type: ClsType[None] + cls = kwargs.pop("cls", None) # type: ClsType[None] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore + url = self._delete_initial.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") request = self._client.delete(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def begin_delete( self, @@ -180,47 +226,62 @@ def begin_delete( :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType[None] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = self._delete_initial( resource_group_name=resource_group_name, ledger_name=ledger_name, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = NoPolling() - else: polling_method = polling + if polling is True: + polling_method = ARMPolling( + lro_delay, path_format_arguments=path_format_arguments, **kwargs + ) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling if cont_token: return LROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + return LROPoller( + self._client, raw_result, get_long_running_output, polling_method + ) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def _create_initial( self, @@ -230,54 +291,79 @@ def _create_initial( **kwargs # type: Any ): # type: (...) -> Optional["models.ConfidentialLedger"] - cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.ConfidentialLedger"]] + cls = kwargs.pop( + "cls", None + ) # type: ClsType[Optional["models.ConfidentialLedger"]] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL - url = self._create_initial.metadata['url'] # type: ignore + url = self._create_initial.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Content-Type"] = self._serialize.header( + "content_type", content_type, "str" + ) + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(confidential_ledger, 'ConfidentialLedger') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + body_content = self._serialize.body(confidential_ledger, "ConfidentialLedger") + body_content_kwargs["content"] = body_content + request = self._client.put( + url, query_parameters, header_parameters, **body_content_kwargs + ) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) deserialized = None if response.status_code == 200: - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + + _create_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def begin_create( self, @@ -296,7 +382,7 @@ def begin_create( :param ledger_name: Name of the Confidential Ledger. :type ledger_name: str :param confidential_ledger: Confidential Ledger Create Request Body. - :type confidential_ledger: ~confidential_ledger.models.ConfidentialLedger + :type confidential_ledger: ~azure.mgmt.confidentialledger.models.ConfidentialLedger :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: True for ARMPolling, False for no polling, or a @@ -304,54 +390,72 @@ def begin_create( :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of LROPoller that returns either ConfidentialLedger or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~confidential_ledger.models.ConfidentialLedger] + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.confidentialledger.models.ConfidentialLedger] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedger"] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedger"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = self._create_initial( resource_group_name=resource_group_name, ledger_name=ledger_name, confidential_ledger=confidential_ledger, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = NoPolling() - else: polling_method = polling + if polling is True: + polling_method = ARMPolling( + lro_delay, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=path_format_arguments, + **kwargs + ) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling if cont_token: return LROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + return LROPoller( + self._client, raw_result, get_long_running_output, polling_method + ) + + begin_create.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def _update_initial( self, @@ -361,54 +465,79 @@ def _update_initial( **kwargs # type: Any ): # type: (...) -> Optional["models.ConfidentialLedger"] - cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.ConfidentialLedger"]] + cls = kwargs.pop( + "cls", None + ) # type: ClsType[Optional["models.ConfidentialLedger"]] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL - url = self._update_initial.metadata['url'] # type: ignore + url = self._update_initial.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Content-Type"] = self._serialize.header( + "content_type", content_type, "str" + ) + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(confidential_ledger, 'ConfidentialLedger') - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + body_content = self._serialize.body(confidential_ledger, "ConfidentialLedger") + body_content_kwargs["content"] = body_content + request = self._client.patch( + url, query_parameters, header_parameters, **body_content_kwargs + ) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) + map_error( + status_code=response.status_code, response=response, error_map=error_map + ) error = self._deserialize(models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) deserialized = None if response.status_code == 200: - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + + _update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def begin_update( self, @@ -427,7 +556,7 @@ def begin_update( :param ledger_name: Name of the Confidential Ledger. :type ledger_name: str :param confidential_ledger: Confidential Ledger request body for Updating Ledger. - :type confidential_ledger: ~confidential_ledger.models.ConfidentialLedger + :type confidential_ledger: ~azure.mgmt.confidentialledger.models.ConfidentialLedger :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: True for ARMPolling, False for no polling, or a @@ -435,54 +564,69 @@ def begin_update( :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of LROPoller that returns either ConfidentialLedger or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~confidential_ledger.models.ConfidentialLedger] + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.confidentialledger.models.ConfidentialLedger] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedger"] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedger"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = self._update_initial( resource_group_name=resource_group_name, ledger_name=ledger_name, confidential_ledger=confidential_ledger, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('ConfidentialLedger', pipeline_response) + deserialized = self._deserialize("ConfidentialLedger", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), - 'ledgerName': self._serialize.url("ledger_name", ledger_name, 'str', pattern=r'^[a-zA-Z0-9]'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), + "ledgerName": self._serialize.url( + "ledger_name", ledger_name, "str", pattern=r"^[a-zA-Z0-9]" + ), } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = NoPolling() - else: polling_method = polling + if polling is True: + polling_method = ARMPolling( + lro_delay, path_format_arguments=path_format_arguments, **kwargs + ) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling if cont_token: return LROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}'} # type: ignore + return LROPoller( + self._client, raw_result, get_long_running_output, polling_method + ) + + begin_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers/{ledgerName}"} # type: ignore def list_by_resource_group( self, @@ -501,35 +645,53 @@ def list_by_resource_group( :type filter: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ConfidentialLedgerList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~confidential_ledger.models.ConfidentialLedgerList] + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.confidentialledger.models.ConfidentialLedgerList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedgerList"] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedgerList"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header( + "accept", accept, "str" + ) if not next_link: # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore + url = self.list_by_resource_group.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=3), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", + self._config.subscription_id, + "str", + ), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=3, + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') + query_parameters["$filter"] = self._serialize.query( + "filter", filter, "str" + ) request = self._client.get(url, query_parameters, header_parameters) else: @@ -539,7 +701,9 @@ def prepare_request(next_link=None): return request def extract_data(pipeline_response): - deserialized = self._deserialize('ConfidentialLedgerList', pipeline_response) + deserialized = self._deserialize( + "ConfidentialLedgerList", pipeline_response + ) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -548,20 +712,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: error = self._deserialize(models.ErrorResponse, response) - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + map_error( + status_code=response.status_code, + response=response, + error_map=error_map, + ) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) return pipeline_response - return ItemPaged( - get_next, extract_data - ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers'} # type: ignore + return ItemPaged(get_next, extract_data) + + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConfidentialLedger/ledgers"} # type: ignore def list_by_subscription( self, @@ -577,34 +748,46 @@ def list_by_subscription( :type filter: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ConfidentialLedgerList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~confidential_ledger.models.ConfidentialLedgerList] + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.confidentialledger.models.ConfidentialLedgerList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ConfidentialLedgerList"] + cls = kwargs.pop("cls", None) # type: ClsType["models.ConfidentialLedgerList"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header( + "accept", accept, "str" + ) if not next_link: # Construct URL - url = self.list_by_subscription.metadata['url'] # type: ignore + url = self.list_by_subscription.metadata["url"] # type: ignore path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", + self._config.subscription_id, + "str", + ), } url = self._client.format_url(url, **path_format_arguments) # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') + query_parameters["$filter"] = self._serialize.query( + "filter", filter, "str" + ) request = self._client.get(url, query_parameters, header_parameters) else: @@ -614,7 +797,9 @@ def prepare_request(next_link=None): return request def extract_data(pipeline_response): - deserialized = self._deserialize('ConfidentialLedgerList', pipeline_response) + deserialized = self._deserialize( + "ConfidentialLedgerList", pipeline_response + ) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -623,17 +808,24 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: error = self._deserialize(models.ErrorResponse, response) - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + map_error( + status_code=response.status_code, + response=response, + error_map=error_map, + ) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) return pipeline_response - return ItemPaged( - get_next, extract_data - ) - list_by_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/ledgers/'} # type: ignore + return ItemPaged(get_next, extract_data) + + list_by_subscription.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.ConfidentialLedger/ledgers/"} # type: ignore diff --git a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_operations.py b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_operations.py index 2b34beb50d4..1447b1fbbc5 100644 --- a/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_operations.py +++ b/src/confidentialledger/azext_confidentialledger/vendored_sdks/confidentialledger/operations/_operations.py @@ -8,7 +8,13 @@ from typing import TYPE_CHECKING import warnings -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse @@ -20,8 +26,11 @@ # pylint: disable=unused-import,ungrouped-imports from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + T = TypeVar("T") + ClsType = Optional[ + Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any] + ] + class Operations(object): """Operations operations. @@ -30,7 +39,7 @@ class Operations(object): instantiates it for you and attaches it as an attribute. :ivar models: Alias to model classes used in this operation group. - :type models: ~confidential_ledger.models + :type models: ~azure.mgmt.confidentialledger.models :param client: Client for service requests. :param config: Configuration of service client. :param serializer: An object model serializer. @@ -46,8 +55,7 @@ def __init__(self, client, config, serializer, deserializer): self._config = config def list( - self, - **kwargs # type: Any + self, **kwargs # type: Any ): # type: (...) -> Iterable["models.ResourceProviderOperationList"] """Retrieves a list of available API operations under this Resource Provider. @@ -56,28 +64,36 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ResourceProviderOperationList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~confidential_ledger.models.ResourceProviderOperationList] + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.confidentialledger.models.ResourceProviderOperationList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ResourceProviderOperationList"] + cls = kwargs.pop( + "cls", None + ) # type: ClsType["models.ResourceProviderOperationList"] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-05-13-preview" + error_map.update(kwargs.pop("error_map", {})) + api_version = "2022-05-13" accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + header_parameters["Accept"] = self._serialize.header( + "accept", accept, "str" + ) if not next_link: # Construct URL - url = self.list.metadata['url'] # type: ignore + url = self.list.metadata["url"] # type: ignore # Construct parameters query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + query_parameters["api-version"] = self._serialize.query( + "api_version", api_version, "str" + ) request = self._client.get(url, query_parameters, header_parameters) else: @@ -87,7 +103,9 @@ def prepare_request(next_link=None): return request def extract_data(pipeline_response): - deserialized = self._deserialize('ResourceProviderOperationList', pipeline_response) + deserialized = self._deserialize( + "ResourceProviderOperationList", pipeline_response + ) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -96,17 +114,24 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( + request, stream=False, **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: error = self._deserialize(models.ErrorResponse, response) - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + map_error( + status_code=response.status_code, + response=response, + error_map=error_map, + ) + raise HttpResponseError( + response=response, model=error, error_format=ARMErrorFormat + ) return pipeline_response - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/providers/Microsoft.ConfidentialLedger/operations'} # type: ignore + return ItemPaged(get_next, extract_data) + + list.metadata = {"url": "/providers/Microsoft.ConfidentialLedger/operations"} # type: ignore diff --git a/src/confidentialledger/gen.zip b/src/confidentialledger/gen.zip index 34e22c819c2..203bec2e11a 100644 Binary files a/src/confidentialledger/gen.zip and b/src/confidentialledger/gen.zip differ diff --git a/src/confidentialledger/setup.py b/src/confidentialledger/setup.py index ef077ba89f6..0578bceb5ca 100644 --- a/src/confidentialledger/setup.py +++ b/src/confidentialledger/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '0.1.0' +VERSION = "1.0.0" try: from azext_confidentialledger.manual.version import VERSION except ImportError: @@ -19,15 +19,15 @@ # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers CLASSIFIERS = [ - 'Development Status :: 4 - Beta', - 'Intended Audience :: Developers', - 'Intended Audience :: System Administrators', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'License :: OSI Approved :: MIT License', + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License", ] DEPENDENCIES = [] @@ -37,22 +37,22 @@ except ImportError: pass -with open('README.md', 'r', encoding='utf-8') as f: +with open("README.md", "r", encoding="utf-8") as f: README = f.read() -with open('HISTORY.rst', 'r', encoding='utf-8') as f: +with open("HISTORY.rst", "r", encoding="utf-8") as f: HISTORY = f.read() setup( - name='confidentialledger', + name="confidentialledger", version=VERSION, - description='Microsoft Azure Command-Line Tools ConfidentialLedger Extension', - author='Microsoft Corporation', - author_email='azpycli@microsoft.com', - url='https://github.com/Azure/azure-cli-extensions/tree/master/src/confidentialledger', - long_description=README + '\n\n' + HISTORY, - license='MIT', + description="Microsoft Azure Command-Line Tools ConfidentialLedger Extension", + author="Microsoft Corporation", + author_email="azpycli@microsoft.com", + url="https://github.com/Azure/azure-cli-extensions/tree/main/src/confidentialledger", + long_description=README + "\n\n" + HISTORY, + license="MIT", classifiers=CLASSIFIERS, packages=find_packages(), install_requires=DEPENDENCIES, - package_data={'azext_confidentialledger': ['azext_metadata.json']}, + package_data={"azext_confidentialledger": ["azext_metadata.json"]}, ) diff --git a/src/connectedk8s/HISTORY.rst b/src/connectedk8s/HISTORY.rst index 4dc7d81c863..b4b54a0ab57 100644 --- a/src/connectedk8s/HISTORY.rst +++ b/src/connectedk8s/HISTORY.rst @@ -2,6 +2,11 @@ Release History =============== +1.2.9 +++++++ + +* Add correlation-id parameter to internally track onboarding sources + 1.2.8 ++++++ diff --git a/src/connectedk8s/azext_connectedk8s/_constants.py b/src/connectedk8s/azext_connectedk8s/_constants.py index 0aab43c5729..7ff5b15540f 100644 --- a/src/connectedk8s/azext_connectedk8s/_constants.py +++ b/src/connectedk8s/azext_connectedk8s/_constants.py @@ -21,6 +21,8 @@ PublicCloud_OriginalName = 'AZURECLOUD' USGovCloud_OriginalName = 'AZUREUSGOVERNMENT' Dogfood_RMEndpoint = 'https://api-dogfood.resources.windows-int.net/' +Client_Request_Id_Header = 'x-ms-client-request-id' +Default_Onboarding_Source_Tracking_Guid = "77ade16b-0f55-403b-b7d2-739554a897f2" Helm_Environment_File_Fault_Type = 'helm-environment-file-error' Invalid_Location_Fault_Type = 'location-validation-error' Load_Kubeconfig_Fault_Type = 'kubeconfig-load-error' diff --git a/src/connectedk8s/azext_connectedk8s/_params.py b/src/connectedk8s/azext_connectedk8s/_params.py index 2621410e70e..b9b39edc42f 100644 --- a/src/connectedk8s/azext_connectedk8s/_params.py +++ b/src/connectedk8s/azext_connectedk8s/_params.py @@ -5,6 +5,7 @@ # pylint: disable=line-too-long import os.path +from ._validators import override_client_request_id_header from argcomplete.completers import FilesCompleter from azure.cli.core.commands.parameters import get_location_type, get_enum_type, file_type, tags_type from azure.cli.core.commands.validators import get_default_location_from_resource_group @@ -36,6 +37,7 @@ def load_arguments(self, _): c.argument('cl_oid', options_list=['--custom-locations-oid'], help="OID of 'custom-locations' app") c.argument('onboarding_timeout', options_list=['--onboarding-timeout'], arg_group='Timeout', help='Time required (in seconds) for the arc-agent pods to be installed on the kubernetes cluster. Override this value if the hardware/network constraints on your cluster requires more time for installing the arc-agent pods.') c.argument('no_wait', options_list=['--no-wait'], arg_group='Timeout', help="Do not wait for the long-running operation to finish.") + c.argument('correlation_id', options_list=['--correlation-id'], help='A guid that is used to internally track the source of cluster onboarding. Please do not modify it unless advised', validator=override_client_request_id_header) with self.argument_context('connectedk8s update') as c: c.argument('cluster_name', options_list=['--name', '-n'], id_part='name', help='The name of the connected cluster.') diff --git a/src/connectedk8s/azext_connectedk8s/_validators.py b/src/connectedk8s/azext_connectedk8s/_validators.py index d46d7e58f7e..b21f7d8f035 100644 --- a/src/connectedk8s/azext_connectedk8s/_validators.py +++ b/src/connectedk8s/azext_connectedk8s/_validators.py @@ -2,6 +2,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- +import azext_connectedk8s._constants as consts def example_name_or_id_validator(cmd, namespace): @@ -17,3 +18,10 @@ def example_name_or_id_validator(cmd, namespace): type='storageAccounts', name=namespace.storage_account ) + + +def override_client_request_id_header(cmd, namespace): + if namespace.correlation_id is not None: + cmd.cli_ctx.data['headers'][consts.Client_Request_Id_Header] = namespace.correlation_id + else: + cmd.cli_ctx.data['headers'][consts.Client_Request_Id_Header] = consts.Default_Onboarding_Source_Tracking_Guid diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index e1a03ef7d3c..71203888665 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -56,7 +56,7 @@ # pylint: disable=line-too-long -def create_connectedk8s(cmd, client, resource_group_name, cluster_name, https_proxy="", http_proxy="", no_proxy="", proxy_cert="", location=None, +def create_connectedk8s(cmd, client, resource_group_name, cluster_name, correlation_id=None, https_proxy="", http_proxy="", no_proxy="", proxy_cert="", location=None, kube_config=None, kube_context=None, no_wait=False, tags=None, distribution='auto', infrastructure='auto', disable_auto_upgrade=False, cl_oid=None, onboarding_timeout="600"): logger.warning("This operation might take a while...\n") diff --git a/src/connectedk8s/setup.py b/src/connectedk8s/setup.py index c52b83cf7aa..a05e924a6a3 100644 --- a/src/connectedk8s/setup.py +++ b/src/connectedk8s/setup.py @@ -17,7 +17,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '1.2.8' +VERSION = '1.2.9' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers diff --git a/src/connectedvmware/HISTORY.rst b/src/connectedvmware/HISTORY.rst index 5aa5fddcd11..6ca988ac398 100644 --- a/src/connectedvmware/HISTORY.rst +++ b/src/connectedvmware/HISTORY.rst @@ -3,11 +3,17 @@ Release History =============== +0.1.7 +++++++ +* Proxy support in vm guest agent. +* Deprecate support to create resource from moref id. +* [BREAKING CHANGE] Fixed guest-agent enable issue. + 0.1.6 ++++++ -* Fix vm update -* Fix inventory item show -* Add support for tagging +* Fix vm update issue. +* Fix inventory item show. +* Add support for tagging. 0.1.5 ++++++ diff --git a/src/connectedvmware/azext_connectedvmware/_actions.py b/src/connectedvmware/azext_connectedvmware/_actions.py index 433736850b8..e0a57401703 100644 --- a/src/connectedvmware/azext_connectedvmware/_actions.py +++ b/src/connectedvmware/azext_connectedvmware/_actions.py @@ -2,7 +2,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -# pylint: disable= protected-access, too-few-public-methods, raise-missing-from, no-self-use +# pylint: disable= protected-access, too-few-public-methods, raise-missing-from, no-self-use, consider-using-f-string """ This file contains actions for parsing complex arguments. diff --git a/src/connectedvmware/azext_connectedvmware/_help.py b/src/connectedvmware/azext_connectedvmware/_help.py index 23e2ea8a3ad..fbeae402062 100644 --- a/src/connectedvmware/azext_connectedvmware/_help.py +++ b/src/connectedvmware/azext_connectedvmware/_help.py @@ -31,8 +31,9 @@ - name: Create resource pool text: |- az connectedvmware resource-pool create --custom-location "custom location name" \ - --location "" --mo-ref-id "mo-ref id of the resource in vc" --name "resource pool name" \ - --resource-group "resource group name" --vcenter "name or id of the vcenter" + --location "location name" --inventory-item "name or id the inventory item" \ + --name "resource pool name" --resource-group "resource group name" \ + --vcenter "name or id of the vcenter" """ helps[ @@ -86,8 +87,9 @@ - name: Create cluster text: |- az connectedvmware cluster create --custom-location "custom location name" \ - --mo-ref-id "mo-ref id of the resource in vc" --name "cluster name" -l "location" \ - --resource-group "resource group name" --vcenter "name or id of the vcenter" + --location "location name" --inventory-item "name or id the inventory item" \ + --name "cluster name" --resource-group "resource group name" \ + --vcenter "name or id of the vcenter" """ helps[ @@ -141,8 +143,9 @@ - name: Create datastore text: |- az connectedvmware datastore create --custom-location "custom location name" \ - --mo-ref-id "mo-ref id of the resource in vc" --name "datastore name" -l "location" \ - --resource-group "resource group name" --vcenter "name or id of the vcenter" + --location "location name" --inventory-item "name or id the inventory item" \ + --name "datastore name" --resource-group "resource group name" \ + --vcenter "name or id of the vcenter" """ helps[ @@ -196,8 +199,9 @@ - name: Create host text: |- az connectedvmware host create --custom-location "custom location name" \ - --mo-ref-id "mo-ref id of the resource in vc" --name "host name" -l "location" \ - --resource-group "resource group name" --vcenter "name or id of the vcenter" + --location "location name" --inventory-item "name or id the inventory item" \ + --name "host name" --resource-group "resource group name" \ + --vcenter "name or id of the vcenter" """ helps[ @@ -252,8 +256,7 @@ text: |- az connectedvmware vcenter connect --custom-location "custom location name" \ --fqdn "vcenter fqdn/ip" --username "vcenter user name" --password "vcenter password" \ - --resource-group "resource group name" --subscription "Name or ID of subscription" \ - --location "region name" --name "vcenter name" + --resource-group "resource group name" --location "location name" --name "vcenter name" """ helps[ @@ -338,9 +341,9 @@ - name: Create virtual network text: |- az connectedvmware virtual-network create --custom-location "custom location name" \ - --location "region name" --mo-ref-id "mo-ref id of the resource in vc" --name \ - "virtual network name" --resource-group "resource group name" --vcenter "name or id of \ - the vcenter" --inventory-item "inventory item name or id" + --location "location name" --inventory-item "name or id the inventory item" \ + --name "virtual network name" --resource-group "resource group name" \ + --vcenter "name or id of the vcenter" """ helps[ @@ -393,9 +396,10 @@ examples: - name: Create vm text: |- - az connectedvmware vm create --custom-location "custom location name" --location \ - "region name" --name "virtual machine name" --resource-group "resource group name" \ - --vcenter "name or id of the vcenter" --inventory-item "inventory item name or id" + az connectedvmware vm create --custom-location "custom location name" \ + --location "location name" --inventory-item "name or id of the inventory item" \ + --name "virtual machine name" --resource-group "resource group name" \ + --vcenter "name or id of the vcenter" """ helps[ @@ -711,9 +715,9 @@ - name: Create vm template text: |- az connectedvmware vm-template create --custom-location "custom location name" \ - --location "region name" --mo-ref-id "mo-ref id of the resource in vc" --name \ - "vm template name" --resource-group "resource group name" --vcenter "name or id of \ - the vcenter" --inventory-item "inventory item name or id" + --location "location name" --inventory-item "name or id the inventory item" \ + --name "vm template name" --resource-group "resource group name" \ + --vcenter "name or id of the vcenter" """ helps[ diff --git a/src/connectedvmware/azext_connectedvmware/_params.py b/src/connectedvmware/azext_connectedvmware/_params.py index a536fcd04d9..9bafc12070d 100644 --- a/src/connectedvmware/azext_connectedvmware/_params.py +++ b/src/connectedvmware/azext_connectedvmware/_params.py @@ -31,11 +31,6 @@ def load_arguments(self, _): help='Name or ID of the vCenter that is managing this resource.', ) - mo_ref_id = CLIArgumentType( - options_list=['--mo-ref-id', '-m'], - help='VCenter MoRef (Managed Object Reference) ID for the existing resource.', - ) - inventory_item = CLIArgumentType( options_list=['--inventory-item', '-i'], help='Name or ID of the inventory item.', @@ -53,9 +48,6 @@ def load_arguments(self, _): c.argument( 'vcenter', vcenter, options_list=['--vcenter', '-v'] ) - c.argument( - 'mo_ref_id', mo_ref_id, options_list=['--mo-ref-id', '-m'] - ) c.argument( 'inventory_item', inventory_item, options_list=['--inventory-item', '-i'] ) @@ -351,6 +343,9 @@ def load_arguments(self, _): 'password', options_list=['--password'], help="Username password credentials to use for connecting to the VM.", ) + c.argument( + 'https_proxy', help="HTTPS proxy server url for the VM.", + ) with self.argument_context('connectedvmware vm guest-agent show') as c: c.argument( diff --git a/src/connectedvmware/azext_connectedvmware/custom.py b/src/connectedvmware/azext_connectedvmware/custom.py index 465eec0b8c8..5c937176c91 100644 --- a/src/connectedvmware/azext_connectedvmware/custom.py +++ b/src/connectedvmware/azext_connectedvmware/custom.py @@ -3,8 +3,8 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- # pylint: disable= too-many-lines, too-many-locals, unused-argument, too-many-branches, too-many-statements +# pylint: disable= consider-using-dict-items, consider-using-f-string -import sys from getpass import getpass from knack.util import CLIError from azext_connectedvmware.vmware_utils import get_resource_id @@ -18,7 +18,6 @@ DATASTORE_RESOURCE_TYPE, VMTEMPLATE_RESOURCE_TYPE, VIRTUALNETWORK_RESOURCE_TYPE, - DEFAULT_VCENTER_PORT, EXTENDED_LOCATION_NAMESPACE, CUSTOM_LOCATION_RESOURCE_TYPE, EXTENDED_LOCATION_TYPE, @@ -75,6 +74,7 @@ GuestAgent, GuestCredential, PlacementProfile, + HttpProxyConfiguration, ) from .vendored_sdks.operations import ( @@ -110,7 +110,7 @@ def connect_vcenter( fqdn=None, username=None, password=None, - port=DEFAULT_VCENTER_PORT, + port=None, tags=None, no_wait=False, ): @@ -123,24 +123,24 @@ def connect_vcenter( 'password': password, } if fqdn is None: - print('Please provide vcenter fqdn: ', end='', file=sys.stderr) + print('Please provide vcenter FQDN or IP address: ', end='') creds['fqdn'] = input() if username is None: - print('Please provide vcenter username: ', end='', file=sys.stderr) + print('Please provide vcenter username: ', end='') creds['username'] = input() if password is None: creds['password'] = getpass('Please provide vcenter password: ') - print('Is this OK? [Y/n]: ', end='', file=sys.stderr) + print('Confirm vcenter details? [Y/n]: ', end='') res = input().lower() if res in ['y', '']: for cred_type, cred_val in creds.items(): if not cred_val: - print(f'{cred_type} cannot be empty. Please try again.', file=sys.stderr) + print(f'{cred_type} cannot be empty. Please try again.') continue fqdn, username, password = creds['fqdn'], creds['username'], creds['password'] creds_ok = True elif res != 'n': - print('Please type y/n or leave empty.', file=sys.stderr) + print('Please type y/n or leave empty.') username_creds = VICredential(username=username, password=password) @@ -229,23 +229,12 @@ def create_resource_pool( resource_name, custom_location, location, - vcenter=None, - mo_ref_id=None, - inventory_item=None, + vcenter, + inventory_item, tags=None, no_wait=False, ): - if mo_ref_id is None and inventory_item is None: - raise CLIError( - "Missing parameter, provide either mo_ref_id or inventory_item id." - ) - - if mo_ref_id is not None and inventory_item is not None: - raise CLIError( - "mo_ref_id and inventory_item id both cannot be provided together." - ) - custom_location_id = get_resource_id( cmd, resource_group_name, @@ -258,42 +247,22 @@ def create_resource_pool( type=EXTENDED_LOCATION_TYPE, name=custom_location_id ) - inventory_item_id = None - vcenter_id = None - - if inventory_item is not None: - inventory_item_id = get_resource_id( - cmd, - resource_group_name, - VMWARE_NAMESPACE, - VCENTER_RESOURCE_TYPE, - vcenter, - INVENTORY_ITEM_TYPE, - inventory_item, - ) - else: - if vcenter is None: - raise CLIError("Missing parameter, provide vcenter name or id.") - - vcenter_id = get_resource_id( - cmd, resource_group_name, VMWARE_NAMESPACE, VCENTER_RESOURCE_TYPE, vcenter - ) + inventory_item_id = get_resource_id( + cmd, + resource_group_name, + VMWARE_NAMESPACE, + VCENTER_RESOURCE_TYPE, + vcenter, + INVENTORY_ITEM_TYPE, + inventory_item, + ) - if inventory_item_id is not None: - resource_pool = ResourcePool( - location=location, - extended_location=extended_location, - inventory_item_id=inventory_item_id, - tags=tags - ) - else: - resource_pool = ResourcePool( - location=location, - extended_location=extended_location, - v_center_id=vcenter_id, - mo_ref_id=mo_ref_id, - tags=tags - ) + resource_pool = ResourcePool( + location=location, + extended_location=extended_location, + inventory_item_id=inventory_item_id, + tags=tags + ) return sdk_no_wait( no_wait, client.begin_create, resource_group_name, resource_name, resource_pool @@ -339,23 +308,12 @@ def create_cluster( resource_name, custom_location, location, - vcenter=None, - mo_ref_id=None, - inventory_item=None, + vcenter, + inventory_item, tags=None, no_wait=False, ): - if mo_ref_id is None and inventory_item is None: - raise CLIError( - "Missing parameter, provide either mo_ref_id or inventory_item id." - ) - - if mo_ref_id is not None and inventory_item is not None: - raise CLIError( - "mo_ref_id and inventory_item id both cannot be provided together." - ) - custom_location_id = get_resource_id( cmd, resource_group_name, @@ -368,42 +326,22 @@ def create_cluster( type=EXTENDED_LOCATION_TYPE, name=custom_location_id ) - inventory_item_id = None - vcenter_id = None - - if inventory_item is not None: - inventory_item_id = get_resource_id( - cmd, - resource_group_name, - VMWARE_NAMESPACE, - VCENTER_RESOURCE_TYPE, - vcenter, - INVENTORY_ITEM_TYPE, - inventory_item, - ) - else: - if vcenter is None: - raise CLIError("Missing parameter, provide vcenter name or id.") - - vcenter_id = get_resource_id( - cmd, resource_group_name, VMWARE_NAMESPACE, VCENTER_RESOURCE_TYPE, vcenter - ) + inventory_item_id = get_resource_id( + cmd, + resource_group_name, + VMWARE_NAMESPACE, + VCENTER_RESOURCE_TYPE, + vcenter, + INVENTORY_ITEM_TYPE, + inventory_item, + ) - if inventory_item_id is not None: - cluster = Cluster( - location=location, - extended_location=extended_location, - inventory_item_id=inventory_item_id, - tags=tags - ) - else: - cluster = Cluster( - location=location, - extended_location=extended_location, - v_center_id=vcenter_id, - mo_ref_id=mo_ref_id, - tags=tags - ) + cluster = Cluster( + location=location, + extended_location=extended_location, + inventory_item_id=inventory_item_id, + tags=tags + ) return sdk_no_wait( no_wait, client.begin_create, resource_group_name, resource_name, cluster @@ -449,23 +387,12 @@ def create_datastore( resource_name, custom_location, location, - vcenter=None, - mo_ref_id=None, - inventory_item=None, + vcenter, + inventory_item, tags=None, no_wait=False, ): - if mo_ref_id is None and inventory_item is None: - raise CLIError( - "Missing parameter, provide either mo_ref_id or inventory_item id." - ) - - if mo_ref_id is not None and inventory_item is not None: - raise CLIError( - "mo_ref_id and inventory_item id both cannot be provided together." - ) - custom_location_id = get_resource_id( cmd, resource_group_name, @@ -478,42 +405,22 @@ def create_datastore( type=EXTENDED_LOCATION_TYPE, name=custom_location_id ) - inventory_item_id = None - vcenter_id = None - - if inventory_item is not None: - inventory_item_id = get_resource_id( - cmd, - resource_group_name, - VMWARE_NAMESPACE, - VCENTER_RESOURCE_TYPE, - vcenter, - INVENTORY_ITEM_TYPE, - inventory_item, - ) - else: - if vcenter is None: - raise CLIError("Missing parameter, provide vcenter name or id.") - - vcenter_id = get_resource_id( - cmd, resource_group_name, VMWARE_NAMESPACE, VCENTER_RESOURCE_TYPE, vcenter - ) + inventory_item_id = get_resource_id( + cmd, + resource_group_name, + VMWARE_NAMESPACE, + VCENTER_RESOURCE_TYPE, + vcenter, + INVENTORY_ITEM_TYPE, + inventory_item, + ) - if inventory_item_id is not None: - datastore = Datastore( - location=location, - extended_location=extended_location, - inventory_item_id=inventory_item_id, - tags=tags - ) - else: - datastore = Datastore( - location=location, - extended_location=extended_location, - v_center_id=vcenter_id, - mo_ref_id=mo_ref_id, - tags=tags - ) + datastore = Datastore( + location=location, + extended_location=extended_location, + inventory_item_id=inventory_item_id, + tags=tags + ) return sdk_no_wait( no_wait, client.begin_create, resource_group_name, resource_name, datastore @@ -559,23 +466,12 @@ def create_host( resource_name, custom_location, location, - vcenter=None, - mo_ref_id=None, - inventory_item=None, + vcenter, + inventory_item, tags=None, no_wait=False, ): - if mo_ref_id is None and inventory_item is None: - raise CLIError( - "Missing parameter, provide either mo_ref_id or inventory_item id." - ) - - if mo_ref_id is not None and inventory_item is not None: - raise CLIError( - "mo_ref_id and inventory_item id both cannot be provided together." - ) - custom_location_id = get_resource_id( cmd, resource_group_name, @@ -588,42 +484,22 @@ def create_host( type=EXTENDED_LOCATION_TYPE, name=custom_location_id ) - inventory_item_id = None - vcenter_id = None - - if inventory_item is not None: - inventory_item_id = get_resource_id( - cmd, - resource_group_name, - VMWARE_NAMESPACE, - VCENTER_RESOURCE_TYPE, - vcenter, - INVENTORY_ITEM_TYPE, - inventory_item, - ) - else: - if vcenter is None: - raise CLIError("Missing parameter, provide vcenter name or id.") - - vcenter_id = get_resource_id( - cmd, resource_group_name, VMWARE_NAMESPACE, VCENTER_RESOURCE_TYPE, vcenter - ) + inventory_item_id = get_resource_id( + cmd, + resource_group_name, + VMWARE_NAMESPACE, + VCENTER_RESOURCE_TYPE, + vcenter, + INVENTORY_ITEM_TYPE, + inventory_item, + ) - if inventory_item_id is not None: - host = Host( - location=location, - extended_location=extended_location, - inventory_item_id=inventory_item_id, - tags=tags - ) - else: - host = Host( - location=location, - extended_location=extended_location, - v_center_id=vcenter_id, - mo_ref_id=mo_ref_id, - tags=tags - ) + host = Host( + location=location, + extended_location=extended_location, + inventory_item_id=inventory_item_id, + tags=tags + ) return sdk_no_wait( no_wait, client.begin_create, resource_group_name, resource_name, host @@ -669,23 +545,12 @@ def create_virtual_network( resource_name, custom_location, location, - vcenter=None, - mo_ref_id=None, - inventory_item=None, + vcenter, + inventory_item, tags=None, no_wait=False, ): - if mo_ref_id is None and inventory_item is None: - raise CLIError( - "Missing parameter, provide either mo_ref_id or inventory_item id." - ) - - if mo_ref_id is not None and inventory_item is not None: - raise CLIError( - "mo_ref_id and inventory_item id both cannot be provided together." - ) - custom_location_id = get_resource_id( cmd, resource_group_name, @@ -698,42 +563,22 @@ def create_virtual_network( type=EXTENDED_LOCATION_TYPE, name=custom_location_id ) - inventory_item_id = None - vcenter_id = None - - if inventory_item is not None: - inventory_item_id = get_resource_id( - cmd, - resource_group_name, - VMWARE_NAMESPACE, - VCENTER_RESOURCE_TYPE, - vcenter, - INVENTORY_ITEM_TYPE, - inventory_item, - ) - else: - if vcenter is None: - raise CLIError("Missing parameter, provide vcenter name or id.") - - vcenter_id = get_resource_id( - cmd, resource_group_name, VMWARE_NAMESPACE, VCENTER_RESOURCE_TYPE, vcenter - ) + inventory_item_id = get_resource_id( + cmd, + resource_group_name, + VMWARE_NAMESPACE, + VCENTER_RESOURCE_TYPE, + vcenter, + INVENTORY_ITEM_TYPE, + inventory_item, + ) - if inventory_item_id is not None: - virtual_network = VirtualNetwork( - location=location, - extended_location=extended_location, - inventory_item_id=inventory_item_id, - tags=tags - ) - else: - virtual_network = VirtualNetwork( - location=location, - extended_location=extended_location, - v_center_id=vcenter_id, - mo_ref_id=mo_ref_id, - tags=tags - ) + virtual_network = VirtualNetwork( + location=location, + extended_location=extended_location, + inventory_item_id=inventory_item_id, + tags=tags + ) return sdk_no_wait( no_wait, @@ -785,23 +630,12 @@ def create_vm_template( resource_name, custom_location, location, - vcenter=None, - mo_ref_id=None, - inventory_item=None, + vcenter, + inventory_item, tags=None, no_wait=True, ): - if mo_ref_id is None and inventory_item is None: - raise CLIError( - "Missing parameter, provide either mo_ref_id or inventory_item id." - ) - - if mo_ref_id is not None and inventory_item is not None: - raise CLIError( - "mo_ref_id and inventory_item id both cannot be provided together." - ) - custom_location_id = get_resource_id( cmd, resource_group_name, @@ -814,42 +648,22 @@ def create_vm_template( type=EXTENDED_LOCATION_TYPE, name=custom_location_id ) - inventory_item_id = None - vcenter_id = None - - if inventory_item is not None: - inventory_item_id = get_resource_id( - cmd, - resource_group_name, - VMWARE_NAMESPACE, - VCENTER_RESOURCE_TYPE, - vcenter, - INVENTORY_ITEM_TYPE, - inventory_item, - ) - else: - if vcenter is None: - raise CLIError("Missing parameter, provide vcenter name or id.") - - vcenter_id = get_resource_id( - cmd, resource_group_name, VMWARE_NAMESPACE, VCENTER_RESOURCE_TYPE, vcenter - ) + inventory_item_id = get_resource_id( + cmd, + resource_group_name, + VMWARE_NAMESPACE, + VCENTER_RESOURCE_TYPE, + vcenter, + INVENTORY_ITEM_TYPE, + inventory_item, + ) - if inventory_item_id is not None: - vm_template = VirtualMachineTemplate( - location=location, - extended_location=extended_location, - inventory_item_id=inventory_item_id, - tags=tags - ) - else: - vm_template = VirtualMachineTemplate( - location=location, - extended_location=extended_location, - v_center_id=vcenter_id, - mo_ref_id=mo_ref_id, - tags=tags - ) + vm_template = VirtualMachineTemplate( + location=location, + extended_location=extended_location, + inventory_item_id=inventory_item_id, + tags=tags + ) return sdk_no_wait( no_wait, client.begin_create, resource_group_name, resource_name, vm_template @@ -1748,7 +1562,7 @@ def is_system_identity_enabled( vm = client.get(resource_group_name, vm_name) - if vm.identity is not None and vm.identity.type == "SystemAssigned": + if vm.identity is not None and vm.identity.type == VM_SYSTEM_ASSIGNED_INDENTITY_TYPE: return True return False @@ -1758,6 +1572,7 @@ def enable_system_identity( client: VirtualMachinesOperations, resource_group_name, vm_name, + no_wait=False, ): """ Enable system assigned identity on this vm. @@ -1768,7 +1583,7 @@ def enable_system_identity( vm_update = VirtualMachineUpdate(identity=system_identity) return sdk_no_wait( - client.begin_update, resource_group_name, vm_name, vm_update + no_wait, client.begin_update, resource_group_name, vm_name, vm_update ) @@ -1779,6 +1594,8 @@ def enable_guest_agent( vm_name, username, password, + https_proxy=None, + no_wait=False, ): """ Enable guest agent on the given virtual machine. @@ -1787,21 +1604,34 @@ def enable_guest_agent( vm_client = cf_virtual_machine(cmd.cli_ctx) if is_system_identity_enabled(vm_client, resource_group_name, vm_name) is False: - enable_system_identity(vm_client, resource_group_name, vm_name) + enable_system_identity(vm_client, resource_group_name, vm_name, no_wait) vm_creds = GuestCredential(username=username, password=password) resource_id = get_resource_id(cmd, resource_group_name, VMWARE_NAMESPACE, VIRTUALMACHINE_RESOURCE_TYPE, vm_name) + https_proxy_config = None + + if https_proxy: + https_proxy_config = HttpProxyConfiguration(https_proxy=https_proxy) + guest_agent = GuestAgent( id=resource_id, type=VIRTUALMACHINE_RESOURCE_TYPE, name=DEFAULT_GUEST_AGENT_NAME, credentials=vm_creds, provisioning_action=GUEST_AGENT_PROVISIONING_ACTION_INSTALL, + http_proxy_config=https_proxy_config, ) - return client.begin_create(resource_group_name, vm_name, DEFAULT_GUEST_AGENT_NAME, guest_agent) + return sdk_no_wait( + no_wait, + client.begin_create, + resource_group_name, + vm_name, + DEFAULT_GUEST_AGENT_NAME, + guest_agent + ) def show_guest_agent( diff --git a/src/connectedvmware/azext_connectedvmware/tests/latest/recordings/test_connectedvmware.yaml b/src/connectedvmware/azext_connectedvmware/tests/latest/recordings/test_connectedvmware.yaml index 351dfda9806..37744160a22 100644 --- a/src/connectedvmware/azext_connectedvmware/tests/latest/recordings/test_connectedvmware.yaml +++ b/src/connectedvmware/azext_connectedvmware/tests/latest/recordings/test_connectedvmware.yaml @@ -13,23 +13,23 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/vcenters/service-sdk-test-vcenter?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/vcenters/azcli-test-vc?api-version=2020-10-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/vcenters/service-sdk-test-vcenter","name":"service-sdk-test-vcenter","type":"microsoft.connectedvmwarevsphere/vcenters","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/service-sdk-test/providers/microsoft.extendedlocation/customlocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2021-12-30T10:11:24.3603755Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2021-12-30T10:21:46.9516433Z"},"properties":{"credentials":{"username":"cloudadmin@vsphere.local"},"fqdn":"10.220.0.2","port":443,"provisioningState":"Succeeded","uuid":"49817607-e8d8-4a33-a716-856879e54696","customResourceName":"49817607-e8d8-4a33-a716-856879e54696","statuses":[{"status":"True","type":"Connected","lastUpdatedAt":"2021-12-30T10:11:42Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2021-12-30T10:21:46.8792234Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2021-12-30T10:21:46.8792234Z"}],"version":"6.7.0","instanceUuid":"90dc6a44-9d08-4c0f-942d-4968dea5c526","connectionStatus":"Connected"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/vcenters/azcli-test-vc","name":"azcli-test-vc","type":"microsoft.connectedvmwarevsphere/vcenters","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azcli-test-rg/providers/microsoft.extendedlocation/customlocations/azcli-test-cl"},"tags":{},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-09T14:07:02.7602325Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-09T14:07:02.7602325Z"},"properties":{"credentials":{"username":"arcvmware"},"fqdn":"idclab-vcen67.fareast.corp.microsoft.com","port":443,"provisioningState":"Succeeded","uuid":"41d6a083-5efe-4299-aa91-2888093ce30b","statuses":[{"status":"True","type":"Connected","lastUpdatedAt":"2022-06-09T14:07:28Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-09T14:07:33.3173839Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-09T14:07:33.3173839Z"}],"customResourceName":"41d6a083-5efe-4299-aa91-2888093ce30b","version":"6.7.0","instanceUuid":"db73f8f2-624c-4a0f-905b-8c6f34442cbc","connectionStatus":"Connected"}}' headers: cache-control: - no-cache content-length: - - '1353' + - '1319' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:30:38 GMT + - Tue, 14 Jun 2022 15:19:08 GMT etag: - - '"3b00d1c3-0000-3400-0000-61cd883b0000"' + - '"9c008ddd-0000-0100-0000-62a1fea50000"' expires: - '-1' pragma: @@ -61,21 +61,21 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/vcenters?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/vcenters?api-version=2020-10-01-preview response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/vcenters/service-sdk-test-vcenter","name":"service-sdk-test-vcenter","type":"microsoft.connectedvmwarevsphere/vcenters","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/service-sdk-test/providers/microsoft.extendedlocation/customlocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2021-12-30T10:11:24.3603755Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2021-12-30T10:21:46.9516433Z"},"properties":{"credentials":{"username":"cloudadmin@vsphere.local"},"fqdn":"10.220.0.2","port":443,"provisioningState":"Succeeded","uuid":"49817607-e8d8-4a33-a716-856879e54696","customResourceName":"49817607-e8d8-4a33-a716-856879e54696","statuses":[{"status":"True","type":"Connected","lastUpdatedAt":"2021-12-30T10:11:42Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2021-12-30T10:21:46.8792234Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2021-12-30T10:21:46.8792234Z"}],"version":"6.7.0","instanceUuid":"90dc6a44-9d08-4c0f-942d-4968dea5c526","connectionStatus":"Connected"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/vcenters/azcli-test-vc","name":"azcli-test-vc","type":"microsoft.connectedvmwarevsphere/vcenters","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azcli-test-rg/providers/microsoft.extendedlocation/customlocations/azcli-test-cl"},"tags":{},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-09T14:07:02.7602325Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-09T14:07:02.7602325Z"},"properties":{"credentials":{"username":"arcvmware"},"fqdn":"idclab-vcen67.fareast.corp.microsoft.com","port":443,"provisioningState":"Succeeded","uuid":"41d6a083-5efe-4299-aa91-2888093ce30b","statuses":[{"status":"True","type":"Connected","lastUpdatedAt":"2022-06-09T14:07:28Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-09T14:07:33.3173839Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-09T14:07:33.3173839Z"}],"customResourceName":"41d6a083-5efe-4299-aa91-2888093ce30b","version":"6.7.0","instanceUuid":"db73f8f2-624c-4a0f-905b-8c6f34442cbc","connectionStatus":"Connected"}}]}' headers: cache-control: - no-cache content-length: - - '1365' + - '1331' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:30:40 GMT + - Tue, 14 Jun 2022 15:19:12 GMT expires: - '-1' pragma: @@ -87,17 +87,17 @@ interactions: x-content-type-options: - nosniff x-ms-original-request-ids: - - 397724f9-4953-48e4-880b-177bf716c28e - - 3e51dcc5-d798-48c0-bcd5-2a6b8ed6d882 - - 50c2f517-64a6-4409-845f-c5572691b770 + - 0ebd4e29-ab54-499a-954f-4e55af4aa991 + - bdcb17b0-399d-4c77-b183-0c5e963f7be8 + - 5aa7e6e4-d5fd-49aa-815e-892b01ceaaed + - 7981e847-e866-4f1b-9371-35a91e50b73f status: code: 200 message: OK - request: - body: '{"location": "eastus2euap", "extendedLocation": {"type": "CustomLocation", - "name": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"}, - "properties": {"vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter", - "moRefId": "resgroup-87723"}}' + body: '{"location": "eastus", "extendedLocation": {"type": "CustomLocation", "name": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"}, + "properties": {"inventoryItemId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/resgroup-724471"}}' headers: Accept: - application/json @@ -108,37 +108,37 @@ interactions: Connection: - keep-alive Content-Length: - - '465' + - '445' Content-Type: - application/json ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:30:47.9084269Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T16:30:47.9084269Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"resgroup-87723","provisioningState":"Accepted"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:19:20.8175406Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:19:20.8175406Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/resgroup-724471","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Accepted"}}' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/383770d1-6277-4ad4-9169-2749dead7dd9*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '986' + - '1126' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:30:51 GMT + - Tue, 14 Jun 2022 15:19:24 GMT etag: - - '"21001c0a-0000-3400-0000-61d1d33a0000"' + - '"bb04c57a-0000-0100-0000-62a8a6fb0000"' expires: - '-1' location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/ResourcePools/azcli-test-resource-pool + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/ResourcePools/azcli-test-resource-pool pragma: - no-cache strict-transport-security: @@ -164,25 +164,25 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/383770d1-6277-4ad4-9169-2749dead7dd9*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/383770d1-6277-4ad4-9169-2749dead7dd9*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC","name":"383770d1-6277-4ad4-9169-2749dead7dd9*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-06-14T15:19:23.2815445Z"}' headers: cache-control: - no-cache content-length: - - '549' + - '541' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:31:21 GMT + - Tue, 14 Jun 2022 15:19:39 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"8f0066d7-0000-0100-0000-62a8a6fb0000"' expires: - '-1' pragma: @@ -210,25 +210,25 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/383770d1-6277-4ad4-9169-2749dead7dd9*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/383770d1-6277-4ad4-9169-2749dead7dd9*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC","name":"383770d1-6277-4ad4-9169-2749dead7dd9*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Succeeded","startTime":"2022-06-14T15:19:23.2815445Z","endTime":"2022-06-14T15:19:42.6650009Z","properties":null}' headers: cache-control: - no-cache content-length: - - '549' + - '601' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:31:52 GMT + - Tue, 14 Jun 2022 15:20:10 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"8f00acd7-0000-0100-0000-62a8a70e0000"' expires: - '-1' pragma: @@ -256,25 +256,25 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:19:20.8175406Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:19:20.8175406Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/resgroup-724471","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"be8d9f62-b9fd-4de8-bc2f-82014e0457a8","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:19:42.4304469Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:19:42.4304469Z"}],"moRefId":"resgroup-724471","customResourceName":"be8d9f62-b9fd-4de8-bc2f-82014e0457a8","moName":"azcli-test-rp","cpuSharesLevel":"normal","cpuLimitMHz":-1,"memSharesLevel":"normal","memLimitMB":-1}}' headers: cache-control: - no-cache content-length: - - '549' + - '1543' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:32:23 GMT + - Tue, 14 Jun 2022 15:20:11 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"bb04ce7a-0000-0100-0000-62a8a70e0000"' expires: - '-1' pragma: @@ -287,6 +287,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -294,33 +296,33 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware resource-pool show Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:19:20.8175406Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:19:20.8175406Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/resgroup-724471","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"be8d9f62-b9fd-4de8-bc2f-82014e0457a8","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:19:42.4304469Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:19:42.4304469Z"}],"moRefId":"resgroup-724471","customResourceName":"be8d9f62-b9fd-4de8-bc2f-82014e0457a8","moName":"azcli-test-rp","cpuSharesLevel":"normal","cpuLimitMHz":-1,"memSharesLevel":"normal","memLimitMB":-1}}' headers: cache-control: - no-cache content-length: - - '549' + - '1543' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:32:53 GMT + - Tue, 14 Jun 2022 15:20:11 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"bb04ce7a-0000-0100-0000-62a8a70e0000"' expires: - '-1' pragma: @@ -333,6 +335,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -340,94 +344,107 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware resource-pool list Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:19:20.8175406Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:19:20.8175406Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/resgroup-724471","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"be8d9f62-b9fd-4de8-bc2f-82014e0457a8","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:19:42.4304469Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:19:42.4304469Z"}],"moRefId":"resgroup-724471","customResourceName":"be8d9f62-b9fd-4de8-bc2f-82014e0457a8","moName":"azcli-test-rp","cpuSharesLevel":"normal","cpuLimitMHz":-1,"memSharesLevel":"normal","memLimitMB":-1}}]}' headers: cache-control: - no-cache content-length: - - '549' + - '1555' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:33:24 GMT - etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - Tue, 14 Jun 2022 15:20:15 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked vary: - Accept-Encoding x-content-type-options: - nosniff + x-ms-original-request-ids: + - ff9a0fe0-5f8e-4277-9e17-a20a25de39c7 + - fd3189e9-9d68-4e55-ad13-83e186416285 + - 7cc9c9a9-45a0-4002-b39c-94e49d5dc46f + - c951d9be-6987-43ba-9b69-b66d060e6979 status: code: 200 message: OK - request: - body: null + body: '{"location": "eastus", "extendedLocation": {"type": "CustomLocation", "name": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"}, + "properties": {"inventoryItemId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/domain-c649660"}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware cluster create Connection: - keep-alive + Content-Length: + - '444' + Content-Type: + - application/json ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:20:22.8843089Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:20:22.8843089Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/domain-c649660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Accepted"}}' headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/c4ab0b23-5d92-42b2-88b5-60edf44fa00e*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '549' + - '1103' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:33:54 GMT + - Tue, 14 Jun 2022 15:20:27 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"4504c1f5-0000-0100-0000-62a8a73a0000"' expires: - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/Clusters/azcli-test-cluster pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' status: - code: 200 - message: OK + code: 201 + message: Created - request: body: null headers: @@ -436,29 +453,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware cluster create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/c4ab0b23-5d92-42b2-88b5-60edf44fa00e*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/c4ab0b23-5d92-42b2-88b5-60edf44fa00e*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E","name":"c4ab0b23-5d92-42b2-88b5-60edf44fa00e*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Succeeded","startTime":"2022-06-14T15:20:26.403933Z","endTime":"2022-06-14T15:20:42.8637057Z","properties":null}' headers: cache-control: - no-cache content-length: - - '549' + - '589' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:34:24 GMT + - Tue, 14 Jun 2022 15:20:43 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"8f004cd9-0000-0100-0000-62a8a74a0000"' expires: - '-1' pragma: @@ -482,29 +499,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware cluster create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:20:22.8843089Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:20:22.8843089Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/domain-c649660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"9248b396-3123-4633-bc48-b3aa16fdae7f","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:20:42.6486752Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:20:42.6486752Z"}],"customResourceName":"9248b396-3123-4633-bc48-b3aa16fdae7f","moRefId":"domain-c649660","datastoreIds":[],"networkIds":[],"moName":"Cluster1"}}' headers: cache-control: - no-cache content-length: - - '549' + - '1463' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:34:55 GMT + - Tue, 14 Jun 2022 15:20:44 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"4504d0f7-0000-0100-0000-62a8a74a0000"' expires: - '-1' pragma: @@ -517,6 +534,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -524,33 +543,33 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware cluster show Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:20:22.8843089Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:20:22.8843089Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/domain-c649660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"9248b396-3123-4633-bc48-b3aa16fdae7f","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:20:42.6486752Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:20:42.6486752Z"}],"customResourceName":"9248b396-3123-4633-bc48-b3aa16fdae7f","moRefId":"domain-c649660","datastoreIds":[],"networkIds":[],"moName":"Cluster1"}}' headers: cache-control: - no-cache content-length: - - '549' + - '1463' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:35:26 GMT + - Tue, 14 Jun 2022 15:20:48 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"4504d0f7-0000-0100-0000-62a8a74a0000"' expires: - '-1' pragma: @@ -563,6 +582,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -570,94 +591,107 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware cluster list Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:20:22.8843089Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:20:22.8843089Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/domain-c649660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"9248b396-3123-4633-bc48-b3aa16fdae7f","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:20:42.6486752Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:20:42.6486752Z"}],"customResourceName":"9248b396-3123-4633-bc48-b3aa16fdae7f","moRefId":"domain-c649660","datastoreIds":[],"networkIds":[],"moName":"Cluster1"}}]}' headers: cache-control: - no-cache content-length: - - '549' + - '1475' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:35:56 GMT - etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - Tue, 14 Jun 2022 15:20:51 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked vary: - Accept-Encoding x-content-type-options: - nosniff + x-ms-original-request-ids: + - 420ce1b0-3a15-4215-a1dd-e203792ee059 + - bf4a44bc-4ffa-4299-a5b7-4ebf74e1b8c3 + - 1788cff2-0ef3-498a-8ad4-a45c65dafed3 + - 967917f8-dcf0-4c7d-b27d-5aa83fe81213 status: code: 200 message: OK - request: - body: null + body: '{"location": "eastus", "extendedLocation": {"type": "CustomLocation", "name": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"}, + "properties": {"inventoryItemId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/datastore-563660"}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware datastore create Connection: - keep-alive + Content-Length: + - '446' + Content-Type: + - application/json ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:00.478007Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:00.478007Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/datastore-563660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Accepted"}}' headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/390500f4-4228-4281-a479-8a84e6c99fc2*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '549' + - '1111' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:36:27 GMT + - Tue, 14 Jun 2022 15:21:04 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"1000b953-0000-0100-0000-62a8a75f0000"' expires: - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/Datastores/azcli-test-datastore pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' status: - code: 200 - message: OK + code: 201 + message: Created - request: body: null headers: @@ -666,29 +700,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware datastore create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/390500f4-4228-4281-a479-8a84e6c99fc2*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/390500f4-4228-4281-a479-8a84e6c99fc2*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70","name":"390500f4-4228-4281-a479-8a84e6c99fc2*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Succeeded","startTime":"2022-06-14T15:21:03.3798315Z","endTime":"2022-06-14T15:21:15.5493336Z","properties":null}' headers: cache-control: - no-cache content-length: - - '549' + - '594' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:36:58 GMT + - Tue, 14 Jun 2022 15:21:20 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"8f00d4d9-0000-0100-0000-62a8a76b0000"' expires: - '-1' pragma: @@ -712,29 +746,30 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware datastore create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:00.478007Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:00.478007Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/datastore-563660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"d41045f4-7b79-4229-8581-ffb2045ac4e6","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:21:15.3047349Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:21:15.3047349Z"}],"customResourceName":"d41045f4-7b79-4229-8581-ffb2045ac4e6","moRefId":"datastore-563660","moName":"Shared + 15TB"}}' headers: cache-control: - no-cache content-length: - - '549' + - '1442' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:37:28 GMT + - Tue, 14 Jun 2022 15:21:21 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"1000ca53-0000-0100-0000-62a8a76b0000"' expires: - '-1' pragma: @@ -747,6 +782,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -754,33 +791,34 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware datastore show Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:00.478007Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:00.478007Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/datastore-563660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"d41045f4-7b79-4229-8581-ffb2045ac4e6","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:21:15.3047349Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:21:15.3047349Z"}],"customResourceName":"d41045f4-7b79-4229-8581-ffb2045ac4e6","moRefId":"datastore-563660","moName":"Shared + 15TB"}}' headers: cache-control: - no-cache content-length: - - '549' + - '1442' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:37:59 GMT + - Tue, 14 Jun 2022 15:21:25 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"1000ca53-0000-0100-0000-62a8a76b0000"' expires: - '-1' pragma: @@ -793,6 +831,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -800,48 +840,108 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware datastore list Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:00.478007Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:00.478007Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/datastore-563660","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"d41045f4-7b79-4229-8581-ffb2045ac4e6","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:21:15.3047349Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:21:15.3047349Z"}],"customResourceName":"d41045f4-7b79-4229-8581-ffb2045ac4e6","moRefId":"datastore-563660","moName":"Shared + 15TB"}}]}' headers: cache-control: - no-cache content-length: - - '549' + - '1454' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:38:29 GMT - etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - Tue, 14 Jun 2022 15:21:27 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked vary: - Accept-Encoding x-content-type-options: - nosniff + x-ms-original-request-ids: + - fa94e65a-c207-42a9-be6a-2f79c9062bd7 + - cec61edc-1134-4e17-b9d2-9f534361d844 + - 749d2c0d-a0cf-469d-a881-b5dd9340a04e + - 533ca426-81e4-49a0-b817-562eb7a956a4 status: code: 200 message: OK +- request: + body: '{"location": "eastus", "extendedLocation": {"type": "CustomLocation", "name": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"}, + "properties": {"inventoryItemId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/host-713902"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - connectedvmware host create + Connection: + - keep-alive + Content-Length: + - '441' + Content-Type: + - application/json + ParameterSetName: + - -g -l --custom-location --vcenter -i --name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:38.471214Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:38.471214Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/host-713902","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Accepted"}}' + headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/50435c78-cc33-4dfb-871b-d0c9096af75e*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C?api-version=2020-10-01-preview + cache-control: + - no-cache + content-length: + - '1086' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 14 Jun 2022 15:21:43 GMT + etag: + - '"2d01c0e4-0000-0100-0000-62a8a7860000"' + expires: + - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/Hosts/azcli-test-host + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created - request: body: null headers: @@ -850,29 +950,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware host create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/50435c78-cc33-4dfb-871b-d0c9096af75e*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/50435c78-cc33-4dfb-871b-d0c9096af75e*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C","name":"50435c78-cc33-4dfb-871b-d0c9096af75e*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Succeeded","startTime":"2022-06-14T15:21:41.8393902Z","endTime":"2022-06-14T15:21:58.105492Z","properties":null}' headers: cache-control: - no-cache content-length: - - '549' + - '583' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:38:59 GMT + - Tue, 14 Jun 2022 15:21:58 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"8f0066da-0000-0100-0000-62a8a7960000"' expires: - '-1' pragma: @@ -896,29 +996,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware host create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:38.471214Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:38.471214Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/host-713902","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"c3b57dd9-3680-4610-a1ea-e2c0c29eabe2","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:21:57.8831747Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:21:57.8831747Z"}],"customResourceName":"c3b57dd9-3680-4610-a1ea-e2c0c29eabe2","moRefId":"host-713902","moName":"10.150.172.144"}}' headers: cache-control: - no-cache content-length: - - '549' + - '1415' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:39:30 GMT + - Tue, 14 Jun 2022 15:21:59 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"2d01c8e4-0000-0100-0000-62a8a7960000"' expires: - '-1' pragma: @@ -931,6 +1031,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -938,33 +1040,33 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware host show Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:38.471214Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:38.471214Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/host-713902","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"c3b57dd9-3680-4610-a1ea-e2c0c29eabe2","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:21:57.8831747Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:21:57.8831747Z"}],"customResourceName":"c3b57dd9-3680-4610-a1ea-e2c0c29eabe2","moRefId":"host-713902","moName":"10.150.172.144"}}' headers: cache-control: - no-cache content-length: - - '549' + - '1415' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:40:00 GMT + - Tue, 14 Jun 2022 15:22:02 GMT etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - '"2d01c8e4-0000-0100-0000-62a8a7960000"' expires: - '-1' pragma: @@ -977,6 +1079,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -984,48 +1088,107 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware host list Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Accepted","startTime":"2022-01-02T16:30:49.9915234Z"}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:21:38.471214Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:21:38.471214Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/host-713902","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"c3b57dd9-3680-4610-a1ea-e2c0c29eabe2","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:21:57.8831747Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:21:57.8831747Z"}],"customResourceName":"c3b57dd9-3680-4610-a1ea-e2c0c29eabe2","moRefId":"host-713902","moName":"10.150.172.144"}}]}' headers: cache-control: - no-cache content-length: - - '549' + - '1427' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:40:30 GMT - etag: - - '"070021fc-0000-3400-0000-61d1d3390000"' + - Tue, 14 Jun 2022 15:22:03 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked vary: - Accept-Encoding x-content-type-options: - nosniff + x-ms-original-request-ids: + - 5191800e-efbe-4afe-b853-e803618afec0 + - a094a4f1-a3ed-4581-ac1c-c4bf2b43789e + - b9deb521-1ac8-4dd3-a5d6-438d496e5269 + - 4d616591-1c5d-436b-bef4-3e7b745df7ad status: code: 200 message: OK +- request: + body: '{"location": "eastus", "extendedLocation": {"type": "CustomLocation", "name": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"}, + "properties": {"inventoryItemId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/network-563661"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - connectedvmware virtual-network create + Connection: + - keep-alive + Content-Length: + - '444' + Content-Type: + - application/json + ParameterSetName: + - -g -l --custom-location --vcenter -i --name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:08.7063684Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:08.7063684Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/network-563661","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Accepted"}}' + headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/96d01d67-3690-43c9-af5e-a0e03bc48b09*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866?api-version=2020-10-01-preview + cache-control: + - no-cache + content-length: + - '1133' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 14 Jun 2022 15:22:11 GMT + etag: + - '"260190e8-0000-0100-0000-62a8a7a20000"' + expires: + - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + status: + code: 201 + message: Created - request: body: null headers: @@ -1034,29 +1197,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware virtual-network create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/96d01d67-3690-43c9-af5e-a0e03bc48b09*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"ed4cb8fa-27d2-4405-a309-9bcd6493b747*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Succeeded","startTime":"2022-01-02T16:30:49.9915234Z","endTime":"2022-01-02T16:41:00.4000294Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/96d01d67-3690-43c9-af5e-a0e03bc48b09*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866","name":"96d01d67-3690-43c9-af5e-a0e03bc48b09*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Succeeded","startTime":"2022-06-14T15:22:10.6031487Z","endTime":"2022-06-14T15:22:19.8709802Z","properties":null}' headers: cache-control: - no-cache content-length: - - '609' + - '605' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:41:02 GMT + - Tue, 14 Jun 2022 15:22:27 GMT etag: - - '"070077fc-0000-3400-0000-61d1d59c0000"' + - '"8f00bbda-0000-0100-0000-62a8a7ab0000"' expires: - '-1' pragma: @@ -1080,29 +1243,30 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool create + - connectedvmware virtual-network create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:30:47.9084269Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T16:41:00.1880021Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"resgroup-87723","provisioningState":"Succeeded","uuid":"21b3e03e-988f-4016-84d6-b09a433f197e","customResourceName":"21b3e03e-988f-4016-84d6-b09a433f197e","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T16:41:00.1465266Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T16:41:00.1465266Z"}],"moName":"dogfood-respool","cpuSharesLevel":"normal","cpuLimitMHz":-1,"memSharesLevel":"normal","memLimitMB":-1}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:08.7063684Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:08.7063684Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/network-563661","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"8f12491f-0651-41e6-93f7-2ae75a426387","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:22:19.6182013Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:22:19.6182013Z"}],"customResourceName":"8f12491f-0651-41e6-93f7-2ae75a426387","moRefId":"network-563661","moName":"VM + Network"}}' headers: cache-control: - no-cache content-length: - - '1397' + - '1461' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:41:03 GMT + - Tue, 14 Jun 2022 15:22:28 GMT etag: - - '"21005e0a-0000-3400-0000-61d1d59c0000"' + - '"2601bce8-0000-0100-0000-62a8a7ab0000"' expires: - '-1' pragma: @@ -1128,29 +1292,30 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool show + - connectedvmware virtual-network show Connection: - keep-alive ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:30:47.9084269Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T16:41:00.1880021Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"resgroup-87723","provisioningState":"Succeeded","uuid":"21b3e03e-988f-4016-84d6-b09a433f197e","customResourceName":"21b3e03e-988f-4016-84d6-b09a433f197e","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T16:41:00.1465266Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T16:41:00.1465266Z"}],"moName":"dogfood-respool","cpuSharesLevel":"normal","cpuLimitMHz":-1,"memSharesLevel":"normal","memLimitMB":-1}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:08.7063684Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:08.7063684Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/network-563661","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"8f12491f-0651-41e6-93f7-2ae75a426387","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:22:19.6182013Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:22:19.6182013Z"}],"customResourceName":"8f12491f-0651-41e6-93f7-2ae75a426387","moRefId":"network-563661","moName":"VM + Network"}}' headers: cache-control: - no-cache content-length: - - '1397' + - '1461' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:41:05 GMT + - Tue, 14 Jun 2022 15:22:30 GMT etag: - - '"21005e0a-0000-3400-0000-61d1d59c0000"' + - '"2601bce8-0000-0100-0000-62a8a7ab0000"' expires: - '-1' pragma: @@ -1176,27 +1341,28 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware resource-pool list + - connectedvmware virtual-network list Connection: - keep-alive ParameterSetName: - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks?api-version=2020-10-01-preview response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","name":"azcli-test-resource-pool","type":"microsoft.connectedvmwarevsphere/resourcepools","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:30:47.9084269Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T16:41:00.1880021Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"resgroup-87723","provisioningState":"Succeeded","uuid":"21b3e03e-988f-4016-84d6-b09a433f197e","customResourceName":"21b3e03e-988f-4016-84d6-b09a433f197e","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T16:41:00.1465266Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T16:41:00.1465266Z"}],"moName":"dogfood-respool","cpuSharesLevel":"normal","cpuLimitMHz":-1,"memSharesLevel":"normal","memLimitMB":-1}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:08.7063684Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:08.7063684Z"},"properties":{"inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/network-563661","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","uuid":"8f12491f-0651-41e6-93f7-2ae75a426387","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:22:19.6182013Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:22:19.6182013Z"}],"customResourceName":"8f12491f-0651-41e6-93f7-2ae75a426387","moRefId":"network-563661","moName":"VM + Network"}}]}' headers: cache-control: - no-cache content-length: - - '1409' + - '1473' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:41:07 GMT + - Tue, 14 Jun 2022 15:22:32 GMT expires: - '-1' pragma: @@ -1208,58 +1374,58 @@ interactions: x-content-type-options: - nosniff x-ms-original-request-ids: - - 9f65e734-00e5-412e-89b6-985872fbb0db - - 355c4175-9ac4-4f77-b306-b798848b9f2a - - f561afab-31e5-47d6-9a95-fbabd183e3c4 + - 06c74b1b-921f-412b-aaee-3758a74b58c6 + - 2cb57196-952f-4342-89dd-88b87b68ec10 + - 2e46e73f-7ea6-4b1c-b22b-c7d679217420 + - 40013cea-0126-4dd4-85f5-c1a56a9d0bc1 status: code: 200 message: OK - request: - body: '{"location": "eastus2euap", "extendedLocation": {"type": "CustomLocation", - "name": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"}, - "properties": {"vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter", - "moRefId": "domain-c7"}}' + body: '{"location": "eastus", "extendedLocation": {"type": "CustomLocation", "name": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"}, + "properties": {"inventoryItemId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/vmtpl-vm-651858"}}' headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm-template create Connection: - keep-alive Content-Length: - - '460' + - '445' Content-Type: - application/json ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:41:18.1642292Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T16:41:18.1642292Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"domain-c7","provisioningState":"Accepted"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:39.1900036Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:39.1900036Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/vmtpl-vm-651858","provisioningState":"Accepted"}}' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/dbfcbe1d-a6d6-48de-9004-9179c661589a*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '959' + - '1142' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:41:21 GMT + - Tue, 14 Jun 2022 15:22:43 GMT etag: - - '"12000a82-0000-3400-0000-61d1d5b00000"' + - '"cc005ec5-0000-0100-0000-62a8a7c20000"' expires: - '-1' location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/Clusters/azcli-test-cluster + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachineTemplates/azcli-test-vm-template pragma: - no-cache strict-transport-security: @@ -1269,7 +1435,7 @@ interactions: x-ms-providerhub-traffic: - 'True' x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' status: code: 201 message: Created @@ -1281,213 +1447,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm-template create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/dbfcbe1d-a6d6-48de-9004-9179c661589a*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/dbfcbe1d-a6d6-48de-9004-9179c661589a*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3","name":"dbfcbe1d-a6d6-48de-9004-9179c661589a*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-06-14T15:22:41.9604012Z"}' headers: cache-control: - no-cache content-length: - - '538' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:41:51 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' - headers: - cache-control: - - no-cache - content-length: - - '538' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:42:22 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' - headers: - cache-control: - - no-cache - content-length: - - '538' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:42:52 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' - headers: - cache-control: - - no-cache - content-length: - - '538' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:43:22 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' - headers: - cache-control: - - no-cache - content-length: - - '538' + - '549' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:43:53 GMT + - Tue, 14 Jun 2022 15:22:58 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"8f0017db-0000-0100-0000-62a8a7c10000"' expires: - '-1' pragma: @@ -1511,29 +1493,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm-template create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/dbfcbe1d-a6d6-48de-9004-9179c661589a*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/dbfcbe1d-a6d6-48de-9004-9179c661589a*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3","name":"dbfcbe1d-a6d6-48de-9004-9179c661589a*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Succeeded","startTime":"2022-06-14T15:22:41.9604012Z","endTime":"2022-06-14T15:23:00.5179283Z","properties":null}' headers: cache-control: - no-cache content-length: - - '538' + - '609' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:44:24 GMT + - Tue, 14 Jun 2022 15:23:29 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"8f0067db-0000-0100-0000-62a8a7d40000"' expires: - '-1' pragma: @@ -1557,29 +1539,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm-template create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter -i --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:39.1900036Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:39.1900036Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/vmtpl-vm-651858","provisioningState":"Succeeded","uuid":"77c16c61-5949-46d0-b114-3b1835eabd2e","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:23:00.2817511Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:23:00.2817511Z"}],"customResourceName":"77c16c61-5949-46d0-b114-3b1835eabd2e","moRefId":"vm-651858","networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:c7:08","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}],"disks":[{"diskObjectId":"1-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"moName":"azurevmwarecloudtestubuntu","memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"osType":"Linux","osName":"Ubuntu + Linux (64-bit)","folderPath":"ArcPrivateClouds-67/Templates","toolsVersionStatus":"guestToolsSupportedOld","toolsVersion":"10304"}}' headers: cache-control: - no-cache content-length: - - '538' + - '2331' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:44:53 GMT + - Tue, 14 Jun 2022 15:23:30 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"cc00a8c5-0000-0100-0000-62a8a7d40000"' expires: - '-1' pragma: @@ -1592,6 +1578,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -1599,33 +1587,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm-template show Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:39.1900036Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:39.1900036Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/vmtpl-vm-651858","provisioningState":"Succeeded","uuid":"77c16c61-5949-46d0-b114-3b1835eabd2e","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:23:00.2817511Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:23:00.2817511Z"}],"customResourceName":"77c16c61-5949-46d0-b114-3b1835eabd2e","moRefId":"vm-651858","networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:c7:08","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}],"disks":[{"diskObjectId":"1-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"moName":"azurevmwarecloudtestubuntu","memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"osType":"Linux","osName":"Ubuntu + Linux (64-bit)","folderPath":"ArcPrivateClouds-67/Templates","toolsVersionStatus":"guestToolsSupportedOld","toolsVersion":"10304"}}' headers: cache-control: - no-cache content-length: - - '538' + - '2331' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:45:24 GMT + - Tue, 14 Jun 2022 15:23:32 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"cc00a8c5-0000-0100-0000-62a8a7d40000"' expires: - '-1' pragma: @@ -1638,6 +1630,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -1645,45 +1639,50 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm-template list Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:22:39.1900036Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:22:39.1900036Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc/InventoryItems/vmtpl-vm-651858","provisioningState":"Succeeded","uuid":"77c16c61-5949-46d0-b114-3b1835eabd2e","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:23:00.2817511Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:23:00.2817511Z"}],"customResourceName":"77c16c61-5949-46d0-b114-3b1835eabd2e","moRefId":"vm-651858","networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:c7:08","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}],"disks":[{"diskObjectId":"1-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"moName":"azurevmwarecloudtestubuntu","memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"osType":"Linux","osName":"Ubuntu + Linux (64-bit)","folderPath":"ArcPrivateClouds-67/Templates","toolsVersionStatus":"guestToolsSupportedOld","toolsVersion":"10304"}}]}' headers: cache-control: - no-cache content-length: - - '538' + - '2343' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:45:55 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - Tue, 14 Jun 2022 15:23:34 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked vary: - Accept-Encoding x-content-type-options: - nosniff + x-ms-original-request-ids: + - 7b439f3f-e9b1-41b6-8dba-0601963877f2 + - 95883c2e-6110-4974-8706-05611a35e511 + - 9a5a9803-0b92-4ee1-b3ff-5d5d347f61cf + - 87f16f2b-db38-473e-980c-1c973bc4a942 status: code: 200 message: OK @@ -1691,33 +1690,33 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vcenter inventory-item show Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g --vcenter --i User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/vcenters/azcli-test-vc/inventoryItems/resgroup-724471?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VCenters/azcli-test-vc/InventoryItems/resgroup-724471","name":"resgroup-724471","type":"microsoft.connectedvmwarevsphere/vcenters/inventoryitems","kind":"ResourcePool","systemData":{"createdBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","createdByType":"Application","createdAt":"2022-06-09T14:08:15.5811607Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-06-14T15:19:37.6462196Z"},"properties":{"parent":{"moName":"Resources","inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VCenters/azcli-test-vc/InventoryItems/resgroup-649661"},"inventoryType":"ResourcePool","managedResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/ResourcePools/azcli-test-resource-pool","moRefId":"resgroup-724471","moName":"azcli-test-rp","provisioningState":"Succeeded"}}' headers: cache-control: - no-cache content-length: - - '538' + - '1123' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:46:25 GMT + - Tue, 14 Jun 2022 15:23:35 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"cf006b7f-0000-0100-0000-62a8a7090000"' expires: - '-1' pragma: @@ -1730,55 +1729,73 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK - request: - body: null + body: '{"location": "eastus", "extendedLocation": {"type": "CustomLocation", "name": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"}, + "properties": {"templateId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template", + "vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc", + "placementProfile": {"resourcePoolId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"}}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm create Connection: - keep-alive + Content-Length: + - '802' + Content-Type: + - application/json ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter --resource-pool --vm-template --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Accepted","statuses":[{"status":"False","type":"Ready","reason":"Provisioning","message":"The + resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-06-14T15:23:42.2517346Z"},{"status":"False","type":"Idle","reason":"Provisioning","message":"The + resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-06-14T15:23:42.2517346Z"}]}}' headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '538' + - '1849' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:46:56 GMT + - Tue, 14 Jun 2022 15:23:42 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"2b017bd9-0000-0100-0000-62a8a7fe0000"' expires: - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachines/azcli-test-vm pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1198' status: - code: 200 - message: OK + code: 201 + message: Created - request: body: null headers: @@ -1787,29 +1804,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter --resource-pool --vm-template --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-06-14T15:23:42.0443049Z"}' headers: cache-control: - no-cache content-length: - - '538' + - '532' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:47:27 GMT + - Tue, 14 Jun 2022 15:23:58 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"8f0002dc-0000-0100-0000-62a8a7fe0000"' expires: - '-1' pragma: @@ -1833,29 +1850,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter --resource-pool --vm-template --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-06-14T15:23:42.0443049Z"}' headers: cache-control: - no-cache content-length: - - '538' + - '532' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:47:58 GMT + - Tue, 14 Jun 2022 15:24:28 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"8f0002dc-0000-0100-0000-62a8a7fe0000"' expires: - '-1' pragma: @@ -1879,29 +1896,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter --resource-pool --vm-template --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"4606887d-9578-41ea-ad31-1bacd8e59fbd*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-06-14T15:23:42.0443049Z","endTime":"2022-06-14T15:24:56.4387339Z","properties":null}' headers: cache-control: - no-cache content-length: - - '538' + - '592' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:48:28 GMT + - Tue, 14 Jun 2022 15:24:59 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"8f000add-0000-0100-0000-62a8a8480000"' expires: - '-1' pragma: @@ -1925,29 +1942,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm create Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g -l --custom-location --vcenter --resource-pool --vm-template --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: cache-control: - no-cache content-length: - - '538' + - '3224' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:48:58 GMT + - Tue, 14 Jun 2022 15:25:00 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"2b016adb-0000-0100-0000-62a8a8480000"' expires: - '-1' pragma: @@ -1960,6 +1981,8 @@ interactions: - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: code: 200 message: OK @@ -1967,33 +1990,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware cluster create + - connectedvmware vm show Connection: - keep-alive ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name + - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: cache-control: - no-cache content-length: - - '538' + - '3224' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 16:49:28 GMT + - Tue, 14 Jun 2022 15:25:03 GMT etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' + - '"2b016adb-0000-0100-0000-62a8a8480000"' expires: - '-1' pragma: @@ -2003,8844 +2030,335 @@ interactions: transfer-encoding: - chunked vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' - headers: - cache-control: - - no-cache - content-length: - - '538' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:49:59 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' - headers: - cache-control: - - no-cache - content-length: - - '538' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:50:30 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Accepted","startTime":"2022-01-02T16:41:19.8310131Z"}' - headers: - cache-control: - - no-cache - content-length: - - '538' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:51:00 GMT - etag: - - '"070078fc-0000-3400-0000-61d1d5af0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"9ed79623-22e1-4089-9671-77647d0e2f17*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Succeeded","startTime":"2022-01-02T16:41:19.8310131Z","endTime":"2022-01-02T16:51:26.4055638Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '598' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:51:30 GMT - etag: - - '"0700c5fc-0000-3400-0000-61d1d80e0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:41:18.1642292Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T16:51:26.1839135Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"domain-c7","provisioningState":"Succeeded","uuid":"2e2a6eb8-8709-41a2-b6ca-cd19ba3b034d","customResourceName":"2e2a6eb8-8709-41a2-b6ca-cd19ba3b034d","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T16:51:26.1343017Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T16:51:26.1343017Z"}],"datastoreIds":[],"networkIds":[],"moName":"Cluster-1"}}' - headers: - cache-control: - - no-cache - content-length: - - '1313' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:51:30 GMT - etag: - - '"12001782-0000-3400-0000-61d1d80e0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster show - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:41:18.1642292Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T16:51:26.1839135Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"domain-c7","provisioningState":"Succeeded","uuid":"2e2a6eb8-8709-41a2-b6ca-cd19ba3b034d","customResourceName":"2e2a6eb8-8709-41a2-b6ca-cd19ba3b034d","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T16:51:26.1343017Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T16:51:26.1343017Z"}],"datastoreIds":[],"networkIds":[],"moName":"Cluster-1"}}' - headers: - cache-control: - - no-cache - content-length: - - '1313' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:51:32 GMT - etag: - - '"12001782-0000-3400-0000-61d1d80e0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware cluster list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters?api-version=2020-10-01-preview - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","name":"azcli-test-cluster","type":"microsoft.connectedvmwarevsphere/clusters","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:41:18.1642292Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T16:51:26.1839135Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"domain-c7","provisioningState":"Succeeded","uuid":"2e2a6eb8-8709-41a2-b6ca-cd19ba3b034d","customResourceName":"2e2a6eb8-8709-41a2-b6ca-cd19ba3b034d","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T16:51:26.1343017Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T16:51:26.1343017Z"}],"datastoreIds":[],"networkIds":[],"moName":"Cluster-1"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '1325' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:51:35 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-original-request-ids: - - 922f6b8a-546c-4393-9500-4ac09957cb27 - - aad74182-8864-4f11-ade3-6506ded55c37 - - b0a01465-d20d-403d-aaa6-07b3ab5b3a32 - status: - code: 200 - message: OK -- request: - body: '{"location": "eastus2euap", "extendedLocation": {"type": "CustomLocation", - "name": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"}, - "properties": {"vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter", - "moRefId": "datastore-11"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - Content-Length: - - '463' - Content-Type: - - application/json - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:51:44.3132077Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T16:51:44.3132077Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"datastore-11","provisioningState":"Accepted"}}' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '970' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:51:46 GMT - etag: - - '"12001982-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/Datastores/azcli-test-datastore - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:52:16 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:52:47 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:53:17 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:53:48 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:54:18 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:54:49 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:55:20 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:55:50 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:56:21 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:56:51 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:57:22 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:57:52 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:58:23 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:58:54 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:59:24 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 16:59:55 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:00:25 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:00:56 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:01:27 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Accepted","startTime":"2022-01-02T16:51:45.1186786Z"}' - headers: - cache-control: - - no-cache - content-length: - - '542' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:01:57 GMT - etag: - - '"0700c6fc-0000-3400-0000-61d1d8210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"027cf371-2d6f-4ec6-bc32-fdb728275821*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Succeeded","startTime":"2022-01-02T16:51:45.1186786Z","endTime":"2022-01-02T17:02:00.8214898Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '602' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:02:28 GMT - etag: - - '"0700e6fc-0000-3400-0000-61d1da880000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:51:44.3132077Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:02:00.6237799Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"datastore-11","provisioningState":"Succeeded","uuid":"c609d5f5-eda6-41d6-b35c-bf9024dd7be0","customResourceName":"c609d5f5-eda6-41d6-b35c-bf9024dd7be0","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:02:00.5849966Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:02:00.5849966Z"}],"moName":"vsanDatastore"}}' - headers: - cache-control: - - no-cache - content-length: - - '1294' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:02:28 GMT - etag: - - '"12004982-0000-3400-0000-61d1da880000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore show - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:51:44.3132077Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:02:00.6237799Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"datastore-11","provisioningState":"Succeeded","uuid":"c609d5f5-eda6-41d6-b35c-bf9024dd7be0","customResourceName":"c609d5f5-eda6-41d6-b35c-bf9024dd7be0","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:02:00.5849966Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:02:00.5849966Z"}],"moName":"vsanDatastore"}}' - headers: - cache-control: - - no-cache - content-length: - - '1294' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:02:30 GMT - etag: - - '"12004982-0000-3400-0000-61d1da880000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware datastore list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores?api-version=2020-10-01-preview - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","name":"azcli-test-datastore","type":"microsoft.connectedvmwarevsphere/datastores","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T16:51:44.3132077Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:02:00.6237799Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"datastore-11","provisioningState":"Succeeded","uuid":"c609d5f5-eda6-41d6-b35c-bf9024dd7be0","customResourceName":"c609d5f5-eda6-41d6-b35c-bf9024dd7be0","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:02:00.5849966Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:02:00.5849966Z"}],"moName":"vsanDatastore"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '1306' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:02:32 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-original-request-ids: - - dff6fb32-9332-490d-bdda-bc2de0fc5411 - - a7b8244f-bd61-40d2-a53a-4534e943c733 - - 2749d8fa-65eb-4f2e-bae4-37b15745e9f9 - status: - code: 200 - message: OK -- request: - body: '{"location": "eastus2euap", "extendedLocation": {"type": "CustomLocation", - "name": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"}, - "properties": {"vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter", - "moRefId": "host-33"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - Content-Length: - - '458' - Content-Type: - - application/json - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:02:42.4209654Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T17:02:42.4209654Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"host-33","provisioningState":"Accepted"}}' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '945' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:02:45 GMT - etag: - - '"4200d43a-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/Hosts/azcli-test-host - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:03:16 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:03:46 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:04:16 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:04:48 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:05:18 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:05:48 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:06:19 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:06:50 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:07:20 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:07:51 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:08:21 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:08:52 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:09:23 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:09:53 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:10:23 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:10:54 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:11:25 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:11:54 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:12:25 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Accepted","startTime":"2022-01-02T17:02:44.0536242Z"}' - headers: - cache-control: - - no-cache - content-length: - - '532' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:12:56 GMT - etag: - - '"0700eafc-0000-3400-0000-61d1dab40000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"23ca106b-7f20-4b2f-8161-862d9de0aaf5*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Succeeded","startTime":"2022-01-02T17:02:44.0536242Z","endTime":"2022-01-02T17:12:56.7257852Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '592' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:13:26 GMT - etag: - - '"070014fd-0000-3400-0000-61d1dd180000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:02:42.4209654Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:12:56.4928438Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"host-33","provisioningState":"Succeeded","uuid":"f0689bf8-c94b-4464-87ee-8794ba9003ee","customResourceName":"f0689bf8-c94b-4464-87ee-8794ba9003ee","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:12:56.4526849Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:12:56.4526849Z"}],"moName":"esx19-r06.p01.f71506e8bc3e432e9ec20.southcentralus.avs.azure.com"}}' - headers: - cache-control: - - no-cache - content-length: - - '1320' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:13:26 GMT - etag: - - '"4200433e-0000-3400-0000-61d1dd180000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host show - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:02:42.4209654Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:12:56.4928438Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"host-33","provisioningState":"Succeeded","uuid":"f0689bf8-c94b-4464-87ee-8794ba9003ee","customResourceName":"f0689bf8-c94b-4464-87ee-8794ba9003ee","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:12:56.4526849Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:12:56.4526849Z"}],"moName":"esx19-r06.p01.f71506e8bc3e432e9ec20.southcentralus.avs.azure.com"}}' - headers: - cache-control: - - no-cache - content-length: - - '1320' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:13:28 GMT - etag: - - '"4200433e-0000-3400-0000-61d1dd180000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware host list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts?api-version=2020-10-01-preview - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","name":"azcli-test-host","type":"microsoft.connectedvmwarevsphere/hosts","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:02:42.4209654Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:12:56.4928438Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"host-33","provisioningState":"Succeeded","uuid":"f0689bf8-c94b-4464-87ee-8794ba9003ee","customResourceName":"f0689bf8-c94b-4464-87ee-8794ba9003ee","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:12:56.4526849Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:12:56.4526849Z"}],"moName":"esx19-r06.p01.f71506e8bc3e432e9ec20.southcentralus.avs.azure.com"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '1332' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:13:30 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-original-request-ids: - - 90788ae0-3e4b-4f33-abf6-d8b352b5550f - - 49eccb27-c85f-4447-9211-a2387492fc4b - - 64a6de28-148e-4ec6-b45f-eec025942e81 - status: - code: 200 - message: OK -- request: - body: '{"location": "eastus2euap", "extendedLocation": {"type": "CustomLocation", - "name": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"}, - "properties": {"vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter", - "moRefId": "network-o61"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - Content-Length: - - '462' - Content-Type: - - application/json - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:13:44.7780039Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T17:13:44.7780039Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"network-o61","provisioningState":"Accepted"}}' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '991' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:13:46 GMT - etag: - - '"3f00b5d9-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:14:17 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:14:47 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:15:18 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:15:49 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:16:19 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:16:49 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:17:20 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:17:50 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:18:21 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:18:51 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:19:22 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:19:54 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:20:24 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:20:54 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:21:26 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:21:56 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:22:27 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:22:58 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Accepted","startTime":"2022-01-02T17:13:45.6622688Z"}' - headers: - cache-control: - - no-cache - content-length: - - '553' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:23:28 GMT - etag: - - '"07001dfd-0000-3400-0000-61d1dd490000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"05d3d30f-5630-41d5-949e-de8151fdcfce*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Succeeded","startTime":"2022-01-02T17:13:45.6622688Z","endTime":"2022-01-02T17:23:58.3243288Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '613' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:23:59 GMT - etag: - - '"07003efd-0000-3400-0000-61d1dfae0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:13:44.7780039Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:23:58.1145418Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"network-o61","provisioningState":"Succeeded","uuid":"a1d42c85-73d8-43d0-8de1-bf88a09397ce","customResourceName":"a1d42c85-73d8-43d0-8de1-bf88a09397ce","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:23:58.0801255Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:23:58.0801255Z"}],"moName":"Segment-1"}}' - headers: - cache-control: - - no-cache - content-length: - - '1311' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:23:59 GMT - etag: - - '"3f0027db-0000-3400-0000-61d1dfae0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network show - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:13:44.7780039Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:23:58.1145418Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"network-o61","provisioningState":"Succeeded","uuid":"a1d42c85-73d8-43d0-8de1-bf88a09397ce","customResourceName":"a1d42c85-73d8-43d0-8de1-bf88a09397ce","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:23:58.0801255Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:23:58.0801255Z"}],"moName":"Segment-1"}}' - headers: - cache-control: - - no-cache - content-length: - - '1311' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:24:01 GMT - etag: - - '"3f0027db-0000-3400-0000-61d1dfae0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware virtual-network list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks?api-version=2020-10-01-preview - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","name":"azcli-test-virtual-network","type":"microsoft.connectedvmwarevsphere/virtualnetworks","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:13:44.7780039Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:23:58.1145418Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"network-o61","provisioningState":"Succeeded","uuid":"a1d42c85-73d8-43d0-8de1-bf88a09397ce","customResourceName":"a1d42c85-73d8-43d0-8de1-bf88a09397ce","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:23:58.0801255Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:23:58.0801255Z"}],"moName":"Segment-1"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '1323' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:24:02 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-original-request-ids: - - f6f3cffc-9956-4718-a9f3-357896b9135e - - 98bf275e-fa77-4298-96bf-79c29ec3c3ba - - 8a207ea3-1daf-4095-8db4-11533b64aeea - status: - code: 200 - message: OK -- request: - body: '{"location": "eastus2euap", "extendedLocation": {"type": "CustomLocation", - "name": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"}, - "properties": {"vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter", - "moRefId": "vm-141"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - Content-Length: - - '457' - Content-Type: - - application/json - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:24:10.7396585Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T17:24:10.7396585Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"vm-141","provisioningState":"Accepted"}}' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '994' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:24:13 GMT - etag: - - '"0c008d3f-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachineTemplates/azcli-test-vm-template - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:24:43 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:25:14 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:25:45 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:26:15 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:26:45 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:27:16 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:27:47 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:28:17 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:28:47 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:29:18 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:29:49 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:30:19 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:30:52 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:31:22 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:31:52 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:32:23 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:32:53 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:33:23 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Accepted","startTime":"2022-01-02T17:24:12.1217125Z"}' - headers: - cache-control: - - no-cache - content-length: - - '557' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:33:54 GMT - etag: - - '"07003ffd-0000-3400-0000-61d1dfbc0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"7b623ef6-3109-41b7-9bee-268c13117bb6*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Succeeded","startTime":"2022-01-02T17:24:12.1217125Z","endTime":"2022-01-02T17:34:25.5660609Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '617' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:34:25 GMT - etag: - - '"07009dfd-0000-3400-0000-61d1e2210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --mo-ref-id --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:24:10.7396585Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:34:25.333521Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"vm-141","provisioningState":"Succeeded","uuid":"e07241c5-0aa4-4b2c-ae9d-531207a1751d","customResourceName":"e07241c5-0aa4-4b2c-ae9d-531207a1751d","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:34:25.2909876Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:34:25.2909876Z"}],"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","macAddress":"00:50:56:a9:7d:06","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","ipAddress":"172.16.0.31","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.31","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:7d06","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}],"disks":[{"diskObjectId":"6307-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"moName":"azurevmwarecloudtestubuntu","memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"osType":"Linux","osName":"Ubuntu - Linux (64-bit)","folderPath":"SDDC-Datacenter/Templates","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"}}' - headers: - cache-control: - - no-cache - content-length: - - '2401' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:34:26 GMT - etag: - - '"0c00d43f-0000-3400-0000-61d1e2210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template show - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:24:10.7396585Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:34:25.333521Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"vm-141","provisioningState":"Succeeded","uuid":"e07241c5-0aa4-4b2c-ae9d-531207a1751d","customResourceName":"e07241c5-0aa4-4b2c-ae9d-531207a1751d","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:34:25.2909876Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:34:25.2909876Z"}],"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","macAddress":"00:50:56:a9:7d:06","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","ipAddress":"172.16.0.31","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.31","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:7d06","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}],"disks":[{"diskObjectId":"6307-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"moName":"azurevmwarecloudtestubuntu","memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"osType":"Linux","osName":"Ubuntu - Linux (64-bit)","folderPath":"SDDC-Datacenter/Templates","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"}}' - headers: - cache-control: - - no-cache - content-length: - - '2401' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:34:28 GMT - etag: - - '"0c00d43f-0000-3400-0000-61d1e2210000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm-template list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates?api-version=2020-10-01-preview - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","name":"azcli-test-vm-template","type":"microsoft.connectedvmwarevsphere/virtualmachinetemplates","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:24:10.7396585Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:34:25.333521Z"},"properties":{"vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","moRefId":"vm-141","provisioningState":"Succeeded","uuid":"e07241c5-0aa4-4b2c-ae9d-531207a1751d","customResourceName":"e07241c5-0aa4-4b2c-ae9d-531207a1751d","statuses":[{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:34:25.2909876Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:34:25.2909876Z"}],"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","macAddress":"00:50:56:a9:7d:06","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","ipAddress":"172.16.0.31","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.31","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:7d06","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}],"disks":[{"diskObjectId":"6307-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"moName":"azurevmwarecloudtestubuntu","memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"osType":"Linux","osName":"Ubuntu - Linux (64-bit)","folderPath":"SDDC-Datacenter/Templates","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '2413' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:34:30 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-original-request-ids: - - 2843645c-5579-4b0f-aff6-afc9366007f6 - - a8afc42d-c9f1-4756-a66c-e4c2ad7ad0df - - dd5e629e-c7db-40b7-a1d8-fe2a945bd310 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vcenter inventory-item show - Connection: - - keep-alive - ParameterSetName: - - -g --vcenter --inventory-item - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/vcenters/service-sdk-test-vcenter/inventoryItems/resgroup-87723?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VCenters/service-sdk-test-vcenter/InventoryItems/resgroup-87723","name":"resgroup-87723","type":"microsoft.connectedvmwarevsphere/vcenters/inventoryitems","kind":"ResourcePool","systemData":{"createdBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","createdByType":"Application","createdAt":"2022-01-01T10:22:02.8771079Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-01T10:24:33.0646518Z"},"properties":{"parent":{"moName":"Resources","inventoryItemId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VCenters/service-sdk-test-vcenter/InventoryItems/resgroup-8"},"inventoryType":"ResourcePool","managedResourceId":"","moRefId":"resgroup-87723","moName":"dogfood-respool","provisioningState":"Succeeded"}}' - headers: - cache-control: - - no-cache - content-length: - - '983' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:34:31 GMT - etag: - - '"2d008e90-0000-3400-0000-61d02be10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: '{"location": "eastus2euap", "extendedLocation": {"type": "CustomLocation", - "name": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"}, - "properties": {"templateId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template", - "vCenterId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter", - "placementProfile": {"resourcePoolId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - Content-Length: - - '836' - Content-Type: - - application/json - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T17:34:41.1713312Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Accepted","statuses":[{"status":"False","type":"Ready","reason":"Provisioning","message":"The - resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-01-02T17:34:43.0906678Z"},{"status":"False","type":"Idle","reason":"Provisioning","message":"The - resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-01-02T17:34:43.0906678Z"}]}}' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '1889' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:34:44 GMT - etag: - - '"df015781-0000-3400-0000-61d1e2330000"' - expires: - - '-1' - location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachines/azcli-test-vm - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:35:14 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:35:45 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:36:15 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:36:46 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:37:16 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:37:46 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:38:17 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:38:47 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:39:18 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:39:48 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:40:18 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:40:49 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:41:20 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:41:50 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:42:20 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:42:51 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:43:22 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:43:52 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:34:42.8787968Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:44:23 GMT - etag: - - '"07009efd-0000-3400-0000-61d1e2320000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"c1daf164-e695-45ad-91e7-3cc1d1a44a0b*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-01-02T17:34:42.8787968Z","endTime":"2022-01-02T17:44:51.095067Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '599' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:44:54 GMT - etag: - - '"0700befd-0000-3400-0000-61d1e4930000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm create - Connection: - - keep-alive - ParameterSetName: - - -g -l --custom-location --vcenter --resource-pool --vm-template --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:44:50.8990446Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - cache-control: - - no-cache - content-length: - - '3600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:44:54 GMT - etag: - - '"df01e694-0000-3400-0000-61d1e4930000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm show - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:44:50.8990446Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - cache-control: - - no-cache - content-length: - - '3600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:44:56 GMT - etag: - - '"df01e694-0000-3400-0000-61d1e4930000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines?api-version=2020-10-01-preview - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:44:50.8990446Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '3612' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:44:58 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-original-request-ids: - - fce1489a-b517-4834-988b-15ed43254e93 - - 18a746a0-7c9f-4fd3-8eee-90f8b316bbd1 - - 7249f72e-4b81-48cf-9e23-426d7f11c406 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm nic show - Connection: - - keep-alive - ParameterSetName: - - -g --vm-name --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:44:50.8990446Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - cache-control: - - no-cache - content-length: - - '3600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:44:59 GMT - etag: - - '"df01e694-0000-3400-0000-61d1e4930000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm nic list - Connection: - - keep-alive - ParameterSetName: - - -g --vm-name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:44:50.8990446Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - cache-control: - - no-cache - content-length: - - '3600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:45:01 GMT - etag: - - '"df01e694-0000-3400-0000-61d1e4930000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm disk show - Connection: - - keep-alive - ParameterSetName: - - -g --vm-name --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:44:50.8990446Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - cache-control: - - no-cache - content-length: - - '3600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:45:02 GMT - etag: - - '"df01e694-0000-3400-0000-61d1e4930000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm disk list - Connection: - - keep-alive - ParameterSetName: - - -g --vm-name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:44:50.8990446Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:44:50.8638113Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - cache-control: - - no-cache - content-length: - - '3600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:45:04 GMT - etag: - - '"df01e694-0000-3400-0000-61d1e4930000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: '{"properties": {"hardwareProfile": {"memorySizeMB": 2048, "numCPUs": 2}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - Content-Length: - - '73' - Content-Type: - - application/json - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: PATCH - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-02T17:45:05.2476844Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Accepted","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"False","type":"Ready","reason":"Provisioning","message":"The - resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-01-02T17:45:05.8602678Z"},{"status":"False","type":"Idle","reason":"Provisioning","message":"The - resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-01-02T17:45:05.8602678Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":2048,"numCPUs":2,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '3759' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:45:05 GMT - etag: - - '"df014c95-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachines/azcli-test-vm - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:45:35 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:46:06 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:46:37 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:47:08 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:47:38 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:48:08 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:48:39 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:49:10 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:49:40 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:50:11 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:50:42 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:51:12 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:51:42 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:52:13 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:52:44 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:53:14 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:53:44 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:54:15 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:54:46 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:45:05.6966924Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:55:17 GMT - etag: - - '"0700c4fd-0000-3400-0000-61d1e4a10000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"36934090-5e9e-4cf3-a65d-660cb89ceb9c*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-01-02T17:45:05.6966924Z","endTime":"2022-01-02T17:55:18.8698709Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:55:47 GMT - etag: - - '"0700e8fd-0000-3400-0000-61d1e7060000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm update - Connection: - - keep-alive - ParameterSetName: - - -g --name --memory-size --num-CPUs - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus2euap","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ExtendedLocation/CustomLocations/service-sdk-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-01-02T17:34:41.1713312Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-01-02T17:55:18.6614679Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVmwarevSphere/vcenters/service-sdk-test-vcenter","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-01-02T17:35:39Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-01-02T17:55:18.6200944Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-01-02T17:55:18.6200944Z"}],"customResourceName":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","vmId":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network - adapter 1","ipAddresses":["172.16.0.154","fe80::250:56ff:fea9:cdb9"],"macAddress":"00:50:56:a9:cd:b9","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-o61","networkMoName":"Segment-1","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["172.16.0.1"],"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0","ipAddressInfo":[{"ipAddress":"172.16.0.154","subnetMask":"255.255.252.0"},{"ipAddress":"fe80::250:56ff:fea9:cdb9","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"4982-2000","name":"disk_1","label":"Hard - disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu - Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"11269"},"hardwareProfile":{"memorySizeMB":2048,"numCPUs":2,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"moRefId":"vm-132813","moName":"azcli-test-vm","folderPath":"SDDC-Datacenter","instanceUuid":"bb01a5da-5999-41c1-a5c0-4f002e5cf746","smbiosUuid":"4229b8dd-e98c-f2e6-2cdc-d92f67ad51d4","firmwareType":"bios","powerState":"poweredOn"}}' - headers: - cache-control: - - no-cache - content-length: - - '3600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:55:47 GMT - etag: - - '"df0125a5-0000-3400-0000-61d1e7060000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: '{"skipShutdown": false}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - Content-Length: - - '23' - Content-Type: - - application/json - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm/stop?api-version=2020-10-01-preview - response: - body: - string: 'null' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '4' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:55:49 GMT - expires: - - '-1' - location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:56:20 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:56:51 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:57:21 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:57:51 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:58:22 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:58:53 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:59:23 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 17:59:53 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:00:24 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:00:54 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:01:25 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:01:56 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:02:26 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:02:57 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:03:27 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:03:58 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:04:28 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:04:59 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:05:29 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T17:55:50.1431065Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:05:59 GMT - etag: - - '"0700eefd-0000-3400-0000-61d1e7260000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-01-02T17:55:50.1431065Z","endTime":"2022-01-02T18:06:05.7355824Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:06:30 GMT - etag: - - '"070030fe-0000-3400-0000-61d1e98d0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm stop - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"de8af121-cb02-4be0-aa4b-1a1e380819a0*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-01-02T17:55:50.1431065Z","endTime":"2022-01-02T18:06:05.7355824Z","properties":null}' - headers: - cache-control: - - no-cache - content-length: - - '600' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:06:31 GMT - etag: - - '"070030fe-0000-3400-0000-61d1e98d0000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm start - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm/start?api-version=2020-10-01-preview - response: - body: - string: 'null' - headers: - api-supported-versions: - - 2020-10-01-preview - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - cache-control: - - no-cache - content-length: - - '4' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:06:33 GMT - expires: - - '-1' - location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm start - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:07:03 GMT - etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm start - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:07:34 GMT - etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm start - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:08:04 GMT - etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - connectedvmware vm start - Connection: - - keep-alive - ParameterSetName: - - -g --name - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview - response: - body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' - headers: - cache-control: - - no-cache - content-length: - - '540' - content-type: - - application/json; charset=utf-8 - date: - - Sun, 02 Jan 2022 18:08:35 GMT - etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains + - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm list Connection: - keep-alive ParameterSetName: - - -g --name + - -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}]}' headers: cache-control: - no-cache content-length: - - '540' + - '3236' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:09:05 GMT - etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - Tue, 14 Jun 2022 15:25:06 GMT expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding x-content-type-options: - nosniff + x-ms-original-request-ids: + - ec6d2a40-61e0-424b-8453-9f42bc0fb7fc + - 910ac4ef-5b0e-4873-b91c-3144cf123180 + - 8a79ab16-6994-4e47-bf8e-9f85c7e4a3b9 + - 14fd3874-8ad8-4520-86c5-38ea7d8c3558 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm nic show Connection: - keep-alive ParameterSetName: - - -g --name + - -g --vm-name --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: cache-control: - no-cache content-length: - - '540' + - '3224' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:09:36 GMT + - Tue, 14 Jun 2022 15:25:09 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"2b016adb-0000-0100-0000-62a8a8480000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm nic list Connection: - keep-alive ParameterSetName: - - -g --name + - -g --vm-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: cache-control: - no-cache content-length: - - '540' + - '3224' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:10:06 GMT + - Tue, 14 Jun 2022 15:25:11 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"2b016adb-0000-0100-0000-62a8a8480000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm disk show Connection: - keep-alive ParameterSetName: - - -g --name + - -g --vm-name --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: cache-control: - no-cache content-length: - - '540' + - '3224' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:10:37 GMT + - Tue, 14 Jun 2022 15:25:13 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"2b016adb-0000-0100-0000-62a8a8480000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm disk list Connection: - keep-alive ParameterSetName: - - -g --name + - -g --vm-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:23:41.3119921Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:24:56.1462284Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":1024,"numCPUs":1,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: cache-control: - no-cache content-length: - - '540' + - '3224' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:11:08 GMT + - Tue, 14 Jun 2022 15:25:15 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"2b016adb-0000-0100-0000-62a8a8480000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: - code: 202 - message: Accepted + code: 200 + message: OK - request: - body: null + body: '{"properties": {"hardwareProfile": {"memorySizeMB": 2048, "numCPUs": 2}}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm update Connection: - keep-alive + Content-Length: + - '73' + Content-Type: + - application/json ParameterSetName: - - -g --name + - -g --name --memory-size --num-CPUs User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"sanmishra@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-14T15:25:17.3992319Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Accepted","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"False","type":"Ready","reason":"Provisioning","message":"The + resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-06-14T15:25:18.4592745Z"},{"status":"False","type":"Idle","reason":"Provisioning","message":"The + resource is being provisioned.","severity":"Info","lastUpdatedAt":"2022-06-14T15:25:18.4592745Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset"}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsNotRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":2048,"numCPUs":2,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/724cf03f-4545-4c6a-9feb-21ad39b64d58*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '540' + - '3403' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:11:39 GMT + - Tue, 14 Jun 2022 15:25:22 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"2b011edc-0000-0100-0000-62a8a85e0000"' expires: - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachines/azcli-test-vm pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' status: - code: 202 - message: Accepted + code: 201 + message: Created - request: body: null headers: @@ -10849,40 +2367,44 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm update Connection: - keep-alive ParameterSetName: - - -g --name + - -g --name --memory-size --num-CPUs User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/724cf03f-4545-4c6a-9feb-21ad39b64d58*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/724cf03f-4545-4c6a-9feb-21ad39b64d58*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"724cf03f-4545-4c6a-9feb-21ad39b64d58*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-06-14T15:25:18.3684464Z"}' headers: cache-control: - no-cache content-length: - - '540' + - '532' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:12:10 GMT + - Tue, 14 Jun 2022 15:25:37 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"8f0050dd-0000-0100-0000-62a8a85e0000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -10891,40 +2413,44 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm update Connection: - keep-alive ParameterSetName: - - -g --name + - -g --name --memory-size --num-CPUs User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/724cf03f-4545-4c6a-9feb-21ad39b64d58*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/724cf03f-4545-4c6a-9feb-21ad39b64d58*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"724cf03f-4545-4c6a-9feb-21ad39b64d58*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-06-14T15:25:18.3684464Z","endTime":"2022-06-14T15:25:42.1153993Z","properties":null}' headers: cache-control: - no-cache content-length: - - '540' + - '592' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:12:41 GMT + - Tue, 14 Jun 2022 15:26:08 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"8f00a6dd-0000-0100-0000-62a8a8760000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -10933,79 +2459,101 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm update Connection: - keep-alive ParameterSetName: - - -g --name + - -g --name --memory-size --num-CPUs User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","name":"azcli-test-vm","type":"microsoft.connectedvmwarevsphere/virtualmachines","kind":"VMware","location":"eastus","extendedLocation":{"type":"CustomLocation","name":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ExtendedLocation/CustomLocations/azcli-test-cl"},"systemData":{"createdBy":"sanmishra@microsoft.com","createdByType":"User","createdAt":"2022-06-14T15:23:41.3119921Z","lastModifiedBy":"ac9dc5fe-b644-4832-9d03-d9f1ab70c5f7","lastModifiedByType":"Application","lastModifiedAt":"2022-06-14T15:26:09.2344437Z"},"properties":{"placementProfile":{"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool"},"resourcePoolId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/resourcePools/azcli-test-resource-pool","templateId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/virtualmachineTemplates/azcli-test-vm-template","vCenterId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVmwarevSphere/vcenters/azcli-test-vc","provisioningState":"Succeeded","statuses":[{"status":"True","type":"CustomizationCompleted","lastUpdatedAt":"2022-06-14T15:24:50Z"},{"status":"True","type":"Ready","lastUpdatedAt":"2022-06-14T15:25:40.2284223Z"},{"status":"True","type":"Idle","lastUpdatedAt":"2022-06-14T15:25:40.2284223Z"}],"vmId":"831dc695-badc-459b-9485-9b48f9e0b03e","customResourceName":"831dc695-badc-459b-9485-9b48f9e0b03e","networkProfile":{"networkInterfaces":[{"name":"nic_1","label":"Network + adapter 1","ipAddresses":["10.150.171.188","fe80::250:56ff:fe95:2c8b","2404:f801:4800:18:250:56ff:fe95:2c8b"],"macAddress":"00:50:56:95:2c:8b","networkId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/azcli-test-virtual-network","networkMoRefId":"network-563661","networkMoName":"VM + Network","nicType":"vmxnet3","deviceKey":4000,"powerOnBoot":"enabled","ipSettings":{"allocationMethod":"unset","gateway":["10.150.168.1","fe80::12f3:11ff:fe3b:55d3","fe80::12f3:11ff:fe36:994b"],"ipAddress":"10.150.171.188","subnetMask":"255.255.248.0","ipAddressInfo":[{"ipAddress":"10.150.171.188","subnetMask":"255.255.248.0"},{"ipAddress":"fe80::250:56ff:fe95:2c8b","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"},{"ipAddress":"2404:f801:4800:18:250:56ff:fe95:2c8b","subnetMask":"ffff:ffff:ffff:ffff:0000:0000:0000:0000"}]}}]},"storageProfile":{"disks":[{"diskObjectId":"1211-2000","name":"disk_1","label":"Hard + disk 1","diskSizeGB":10,"deviceKey":2000,"diskMode":"persistent","controllerKey":1000,"unitNumber":0,"diskType":"flat"}],"scsiControllers":[{"type":"lsilogic","controllerKey":1000,"scsiCtlrUnitNumber":7,"sharing":"noSharing"}]},"osProfile":{"computerName":"azcli-test-vm","osType":"Linux","osName":"Ubuntu + Linux (64-bit)","toolsRunningStatus":"guestToolsRunning","toolsVersionStatus":"guestToolsUnmanaged","toolsVersion":"10304"},"hardwareProfile":{"memorySizeMB":2048,"numCPUs":2,"numCoresPerSocket":1,"cpuHotAddEnabled":true,"cpuHotRemoveEnabled":false,"memoryHotAddEnabled":true},"instanceUuid":"831dc695-badc-459b-9485-9b48f9e0b03e","moRefId":"vm-731238","moName":"azcli-test-vm","folderPath":"ArcPrivateClouds-67","smbiosUuid":"4215bf71-1ae1-1b9d-7ca9-220e15c5133a","firmwareType":"bios","powerState":"poweredOn"}}' headers: cache-control: - no-cache content-length: - - '540' + - '3776' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:13:10 GMT + - Tue, 14 Jun 2022 15:26:09 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"2b01a1dd-0000-0100-0000-62a8a8910000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' status: - code: 202 - message: Accepted + code: 200 + message: OK - request: - body: null + body: '{"skipShutdown": false}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm stop Connection: - keep-alive + Content-Length: + - '23' + Content-Type: + - application/json ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm/stop?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: 'null' headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '540' + - '4' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:13:41 GMT - etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - Tue, 14 Jun 2022 15:26:12 GMT expires: - '-1' + location: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' status: code: 202 message: Accepted @@ -11017,29 +2565,29 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm stop Connection: - keep-alive ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-06-14T15:26:12.3551561Z"}' headers: cache-control: - no-cache content-length: - - '540' + - '532' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:14:11 GMT + - Tue, 14 Jun 2022 15:26:28 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"8f00ffdd-0000-0100-0000-62a8a8940000"' expires: - '-1' pragma: @@ -11059,40 +2607,44 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm stop Connection: - keep-alive ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-06-14T15:26:12.3551561Z","endTime":"2022-06-14T15:26:29.640323Z","properties":null}' headers: cache-control: - no-cache content-length: - - '540' + - '591' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:14:42 GMT + - Tue, 14 Jun 2022 15:26:58 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"8f0038de-0000-0100-0000-62a8a8a50000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -11101,79 +2653,93 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - connectedvmware vm start + - connectedvmware vm stop Connection: - keep-alive ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"370e27f2-51ab-43c3-b591-33931a8940a4*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-06-14T15:26:12.3551561Z","endTime":"2022-06-14T15:26:29.640323Z","properties":null}' headers: cache-control: - no-cache content-length: - - '540' + - '591' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:15:12 GMT + - Tue, 14 Jun 2022 15:26:59 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"8f0038de-0000-0100-0000-62a8a8a50000"' expires: - '-1' pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - connectedvmware vm start Connection: - keep-alive + Content-Length: + - '0' ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) - method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm/start?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: 'null' headers: + api-supported-versions: + - 2020-10-01-preview, 2022-01-10-preview + azure-asyncoperation: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview cache-control: - no-cache content-length: - - '540' + - '4' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:15:43 GMT - etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - Tue, 14 Jun 2022 15:27:01 GMT expires: - '-1' + location: + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: - max-age=31536000; includeSubDomains x-content-type-options: - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' status: code: 202 message: Accepted @@ -11191,23 +2757,23 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-01-02T18:06:33.2563136Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Accepted","startTime":"2022-06-14T15:27:02.1655963Z"}' headers: cache-control: - no-cache content-length: - - '540' + - '532' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:16:13 GMT + - Tue, 14 Jun 2022 15:27:17 GMT etag: - - '"070031fe-0000-3400-0000-61d1e9a90000"' + - '"8f0093de-0000-0100-0000-62a8a8c60000"' expires: - '-1' pragma: @@ -11233,23 +2799,23 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-01-02T18:06:33.2563136Z","endTime":"2022-01-02T18:16:41.9662291Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-06-14T15:27:02.1655963Z","endTime":"2022-06-14T15:27:19.6105116Z","properties":null}' headers: cache-control: - no-cache content-length: - - '600' + - '592' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:16:45 GMT + - Tue, 14 Jun 2022 15:27:47 GMT etag: - - '"070065fe-0000-3400-0000-61d1ec090000"' + - '"8f00cfde-0000-0100-0000-62a8a8d70000"' expires: - '-1' pragma: @@ -11279,23 +2845,23 @@ interactions: ParameterSetName: - -g --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"160369ad-9467-4add-b8c8-1762594b64f1*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-01-02T18:06:33.2563136Z","endTime":"2022-01-02T18:16:41.9662291Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"e1ac2e14-10c2-4a3f-9340-3092a06b2c1e*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-06-14T15:27:02.1655963Z","endTime":"2022-06-14T15:27:19.6105116Z","properties":null}' headers: cache-control: - no-cache content-length: - - '600' + - '592' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:16:45 GMT + - Tue, 14 Jun 2022 15:27:48 GMT etag: - - '"070065fe-0000-3400-0000-61d1ec090000"' + - '"8f00cfde-0000-0100-0000-62a8a8d70000"' expires: - '-1' pragma: @@ -11327,17 +2893,17 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview&force=false + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm?api-version=2020-10-01-preview&force=false response: body: string: 'null' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview cache-control: - no-cache content-length: @@ -11345,13 +2911,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:16:50 GMT + - Tue, 14 Jun 2022 15:27:50 GMT etag: - - '"df0169c9-0000-3400-0000-61d1ec120000"' + - '"2b01e6df-0000-0100-0000-62a8a8f70000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: @@ -11379,23 +2945,65 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview + response: + body: + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Deleting","startTime":"2022-06-14T15:27:51.1676208Z"}' + headers: + cache-control: + - no-cache + content-length: + - '532' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 14 Jun 2022 15:28:22 GMT + etag: + - '"8f0042df-0000-0100-0000-62a8a8f70000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - connectedvmware vm delete + Connection: + - keep-alive + ParameterSetName: + - -g --name -y + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Deleting","startTime":"2022-01-02T18:16:49.899107Z"}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Deleting","startTime":"2022-06-14T15:27:51.1676208Z"}' headers: cache-control: - no-cache content-length: - - '539' + - '532' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:17:21 GMT + - Tue, 14 Jun 2022 15:28:52 GMT etag: - - '"070066fe-0000-3400-0000-61d1ec110000"' + - '"8f0042df-0000-0100-0000-62a8a8f70000"' expires: - '-1' pragma: @@ -11421,23 +3029,23 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","name":"e9bfb50e-2b5b-435b-8dac-c21572ad5e08*27A4663327F16509580BE98C70A84C1007619D69DE80D444A54FD4B62742CBCA","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-01-02T18:16:49.899107Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","name":"fbdd490f-156e-4389-b5ba-a279f7972f66*8C24F2E947DEC83F8FA8A160B4EB9CF89800D9D0046AB1D69E82BD6A56D025D2","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/azcli-test-vm","status":"Succeeded","startTime":"2022-06-14T15:27:51.1676208Z","properties":null}' headers: cache-control: - no-cache content-length: - - '558' + - '551' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:17:50 GMT + - Tue, 14 Jun 2022 15:29:23 GMT etag: - - '"07006afe-0000-3400-0000-61d1ec360000"' + - '"8f0061e0-0000-0100-0000-62a8a93a0000"' expires: - '-1' pragma: @@ -11469,17 +3077,17 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview&force=false + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool?api-version=2020-10-01-preview&force=false response: body: string: 'null' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2b0ccb88-5834-4f82-969a-d63aea6c968e*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/38ca0033-c7b7-4725-97ce-2bdfd7905234*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC?api-version=2020-10-01-preview cache-control: - no-cache content-length: @@ -11487,13 +3095,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:17:55 GMT + - Tue, 14 Jun 2022 15:29:29 GMT etag: - - '"21008f0f-0000-3400-0000-61d1ec530000"' + - '"bb04d07b-0000-0100-0000-62a8a9590000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2b0ccb88-5834-4f82-969a-d63aea6c968e*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/38ca0033-c7b7-4725-97ce-2bdfd7905234*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: @@ -11521,23 +3129,23 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2b0ccb88-5834-4f82-969a-d63aea6c968e*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/38ca0033-c7b7-4725-97ce-2bdfd7905234*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2b0ccb88-5834-4f82-969a-d63aea6c968e*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","name":"2b0ccb88-5834-4f82-969a-d63aea6c968e*B6DC13EC3C7F224A64B53890CAA2EC53DEAFAFDB3B381AEB58C5521D8EC954E0","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Succeeded","startTime":"2022-01-02T18:17:55.5766938Z","endTime":"2022-01-02T18:17:56.8559109Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/38ca0033-c7b7-4725-97ce-2bdfd7905234*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC","name":"38ca0033-c7b7-4725-97ce-2bdfd7905234*E33D395D76158BAF7C5815D334D05A902D2A49219B7EE04A2C06FA58A8E43EFC","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/azcli-test-resource-pool","status":"Succeeded","startTime":"2022-06-14T15:29:29.4895821Z","endTime":"2022-06-14T15:29:32.4393125Z","properties":null}' headers: cache-control: - no-cache content-length: - - '609' + - '601' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:18:25 GMT + - Tue, 14 Jun 2022 15:29:45 GMT etag: - - '"07006ffe-0000-3400-0000-61d1ec540000"' + - '"8f0064e1-0000-0100-0000-62a8a95c0000"' expires: - '-1' pragma: @@ -11569,17 +3177,17 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview&force=false + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster?api-version=2020-10-01-preview&force=false response: body: string: 'null' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/24f55528-84c6-4c5b-93de-e87f0d66a86e*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/923060b8-3af1-48e5-9f24-768649347d58*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E?api-version=2020-10-01-preview cache-control: - no-cache content-length: @@ -11587,13 +3195,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:18:28 GMT + - Tue, 14 Jun 2022 15:29:49 GMT etag: - - '"12009283-0000-3400-0000-61d1ec750000"' + - '"4604ca33-0000-0100-0000-62a8a96d0000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/24f55528-84c6-4c5b-93de-e87f0d66a86e*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/923060b8-3af1-48e5-9f24-768649347d58*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: @@ -11621,23 +3229,23 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/24f55528-84c6-4c5b-93de-e87f0d66a86e*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/923060b8-3af1-48e5-9f24-768649347d58*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/24f55528-84c6-4c5b-93de-e87f0d66a86e*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","name":"24f55528-84c6-4c5b-93de-e87f0d66a86e*2DE4E76FA24305843212B71FEC56B7EAF28C6FE6E4BD29D47462C1D65F5DF845","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Succeeded","startTime":"2022-01-02T18:18:29.0260112Z","endTime":"2022-01-02T18:18:30.571773Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/923060b8-3af1-48e5-9f24-768649347d58*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E","name":"923060b8-3af1-48e5-9f24-768649347d58*BA7D5BCC10B0E3C8353A43CFDD3238340013F133409368F1AB6C672583FED47E","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/clusters/azcli-test-cluster","status":"Succeeded","startTime":"2022-06-14T15:29:49.3443311Z","endTime":"2022-06-14T15:29:51.0262696Z","properties":null}' headers: cache-control: - no-cache content-length: - - '597' + - '590' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:18:59 GMT + - Tue, 14 Jun 2022 15:30:04 GMT etag: - - '"070072fe-0000-3400-0000-61d1ec760000"' + - '"8f00f5e1-0000-0100-0000-62a8a96f0000"' expires: - '-1' pragma: @@ -11669,17 +3277,17 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview&force=false + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore?api-version=2020-10-01-preview&force=false response: body: string: 'null' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/51102dd4-1e56-41b3-82ea-3a3ca06a5df3*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/253e9a41-fa6b-43b2-881a-1786fe7fc49e*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70?api-version=2020-10-01-preview cache-control: - no-cache content-length: @@ -11687,13 +3295,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:19:03 GMT + - Tue, 14 Jun 2022 15:30:09 GMT etag: - - '"12009483-0000-3400-0000-61d1ec970000"' + - '"10000855-0000-0100-0000-62a8a9810000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/51102dd4-1e56-41b3-82ea-3a3ca06a5df3*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/253e9a41-fa6b-43b2-881a-1786fe7fc49e*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: @@ -11721,23 +3329,23 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/51102dd4-1e56-41b3-82ea-3a3ca06a5df3*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/253e9a41-fa6b-43b2-881a-1786fe7fc49e*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/51102dd4-1e56-41b3-82ea-3a3ca06a5df3*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","name":"51102dd4-1e56-41b3-82ea-3a3ca06a5df3*E82D9FE75A9EC419A32A447F28124AD9B2D5E9C40EE854CDDD75E8B3042E87B4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Succeeded","startTime":"2022-01-02T18:19:03.4624486Z","endTime":"2022-01-02T18:19:05.3830233Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/253e9a41-fa6b-43b2-881a-1786fe7fc49e*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70","name":"253e9a41-fa6b-43b2-881a-1786fe7fc49e*0BA3195A388F8E68B2BCA768784A2C477B581CF3750C51FB69057C6907EB9D70","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/datastores/azcli-test-datastore","status":"Succeeded","startTime":"2022-06-14T15:30:09.0960546Z","endTime":"2022-06-14T15:30:12.6376934Z","properties":null}' headers: cache-control: - no-cache content-length: - - '602' + - '594' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:19:34 GMT + - Tue, 14 Jun 2022 15:30:24 GMT etag: - - '"070074fe-0000-3400-0000-61d1ec990000"' + - '"8f0080e2-0000-0100-0000-62a8a9840000"' expires: - '-1' pragma: @@ -11769,17 +3377,17 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview&force=false + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host?api-version=2020-10-01-preview&force=false response: body: string: 'null' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/5eeec913-0e80-4ee4-aecc-6c80211a65a6*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/f4bdc936-8c5a-4ac3-bdd0-a33079dce0cc*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C?api-version=2020-10-01-preview cache-control: - no-cache content-length: @@ -11787,13 +3395,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:19:37 GMT + - Tue, 14 Jun 2022 15:30:26 GMT etag: - - '"42003951-0000-3400-0000-61d1ecb90000"' + - '"2d01a8e6-0000-0100-0000-62a8a9930000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/5eeec913-0e80-4ee4-aecc-6c80211a65a6*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/f4bdc936-8c5a-4ac3-bdd0-a33079dce0cc*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: @@ -11821,23 +3429,23 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/5eeec913-0e80-4ee4-aecc-6c80211a65a6*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/f4bdc936-8c5a-4ac3-bdd0-a33079dce0cc*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/5eeec913-0e80-4ee4-aecc-6c80211a65a6*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","name":"5eeec913-0e80-4ee4-aecc-6c80211a65a6*ACFF0FD476EBE47F6C4C5D448D8ECCF8C651264ABA7F43BC6F829750A9C1615A","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Succeeded","startTime":"2022-01-02T18:19:37.6768389Z","endTime":"2022-01-02T18:19:38.6593367Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/f4bdc936-8c5a-4ac3-bdd0-a33079dce0cc*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C","name":"f4bdc936-8c5a-4ac3-bdd0-a33079dce0cc*B55A001CADA037E0E2ED8E056C839E3102437398BD45444965294749D0CB7C3C","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/hosts/azcli-test-host","status":"Succeeded","startTime":"2022-06-14T15:30:27.7375069Z","endTime":"2022-06-14T15:30:29.605743Z","properties":null}' headers: cache-control: - no-cache content-length: - - '592' + - '583' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:20:07 GMT + - Tue, 14 Jun 2022 15:30:43 GMT etag: - - '"070077fe-0000-3400-0000-61d1ecba0000"' + - '"8f0007e3-0000-0100-0000-62a8a9950000"' expires: - '-1' pragma: @@ -11869,17 +3477,17 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview&force=false + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network?api-version=2020-10-01-preview&force=false response: body: string: 'null' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/b6aa51fc-03ed-4446-bd13-05c509d32f73*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e08960bd-d53c-47a9-9383-c264247842ef*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866?api-version=2020-10-01-preview cache-control: - no-cache content-length: @@ -11887,13 +3495,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:20:16 GMT + - Tue, 14 Jun 2022 15:30:45 GMT etag: - - '"3f009be2-0000-3400-0000-61d1ece00000"' + - '"260112f2-0000-0100-0000-62a8a9a60000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/b6aa51fc-03ed-4446-bd13-05c509d32f73*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e08960bd-d53c-47a9-9383-c264247842ef*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: @@ -11921,23 +3529,23 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/b6aa51fc-03ed-4446-bd13-05c509d32f73*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e08960bd-d53c-47a9-9383-c264247842ef*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/b6aa51fc-03ed-4446-bd13-05c509d32f73*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","name":"b6aa51fc-03ed-4446-bd13-05c509d32f73*70D74FF2085582ECAD0A36284BA981A52D437766A94B293686286A8ABC8563F4","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Succeeded","startTime":"2022-01-02T18:20:16.7063355Z","endTime":"2022-01-02T18:20:18.1944828Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/e08960bd-d53c-47a9-9383-c264247842ef*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866","name":"e08960bd-d53c-47a9-9383-c264247842ef*CB0A480FE4EF7C13EBE7E6D61E1DABA694436AED00BC4B639CBD00E8ACDF3866","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/azcli-test-virtual-network","status":"Succeeded","startTime":"2022-06-14T15:30:46.5285208Z","endTime":"2022-06-14T15:30:48.2888879Z","properties":null}' headers: cache-control: - no-cache content-length: - - '613' + - '605' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:20:47 GMT + - Tue, 14 Jun 2022 15:31:02 GMT etag: - - '"07007efe-0000-3400-0000-61d1ece20000"' + - '"8f00a2e3-0000-0100-0000-62a8a9a80000"' expires: - '-1' pragma: @@ -11969,17 +3577,17 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview&force=false + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template?api-version=2020-10-01-preview&force=false response: body: string: 'null' headers: api-supported-versions: - - 2020-10-01-preview + - 2020-10-01-preview, 2022-01-10-preview azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2370b2b0-2815-4d56-9bbe-b4b3c77dc40f*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/196bafef-070d-41e5-9eff-d0fe2f6831fe*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3?api-version=2020-10-01-preview cache-control: - no-cache content-length: @@ -11987,13 +3595,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:20:49 GMT + - Tue, 14 Jun 2022 15:31:03 GMT etag: - - '"0c004b42-0000-3400-0000-61d1ed010000"' + - '"cc0077cd-0000-0100-0000-62a8a9b80000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2370b2b0-2815-4d56-9bbe-b4b3c77dc40f*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview + - https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/196bafef-070d-41e5-9eff-d0fe2f6831fe*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3?api-version=2020-10-01-preview pragma: - no-cache strict-transport-security: @@ -12021,23 +3629,23 @@ interactions: ParameterSetName: - -g --name -y User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.6 (Linux-5.10.60.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + - AZURECLI/2.37.0 azsdk-python-mgmt-connectedvmware/0.1.1 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2370b2b0-2815-4d56-9bbe-b4b3c77dc40f*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072?api-version=2020-10-01-preview + uri: https://management.azure.com/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/196bafef-070d-41e5-9eff-d0fe2f6831fe*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3?api-version=2020-10-01-preview response: body: - string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS2EUAP/operationStatuses/2370b2b0-2815-4d56-9bbe-b4b3c77dc40f*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","name":"2370b2b0-2815-4d56-9bbe-b4b3c77dc40f*6768394BC7536EAEE7A6C955E1E9DF9FA3FD70EDE83866BEA0C66F0E2B360072","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/service-sdk-test/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Succeeded","startTime":"2022-01-02T18:20:49.8460913Z","endTime":"2022-01-02T18:20:51.1265358Z","properties":null}' + string: '{"id":"/providers/Microsoft.ConnectedVMwarevSphere/locations/EASTUS/operationStatuses/196bafef-070d-41e5-9eff-d0fe2f6831fe*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3","name":"196bafef-070d-41e5-9eff-d0fe2f6831fe*04EA61613559B90D23ED3ECFACDF2E6D1E27A0B3817A66B3F21A8114E2761CF3","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azcli-test-rg/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/azcli-test-vm-template","status":"Succeeded","startTime":"2022-06-14T15:31:04.4681165Z","endTime":"2022-06-14T15:31:07.2447307Z","properties":null}' headers: cache-control: - no-cache content-length: - - '617' + - '609' content-type: - application/json; charset=utf-8 date: - - Sun, 02 Jan 2022 18:21:20 GMT + - Tue, 14 Jun 2022 15:31:20 GMT etag: - - '"070087fe-0000-3400-0000-61d1ed030000"' + - '"8f005ce4-0000-0100-0000-62a8a9bb0000"' expires: - '-1' pragma: diff --git a/src/connectedvmware/azext_connectedvmware/tests/latest/test_connectedvmware_scenario.py b/src/connectedvmware/azext_connectedvmware/tests/latest/test_connectedvmware_scenario.py index 7cf7757dcdf..38a631e7567 100644 --- a/src/connectedvmware/azext_connectedvmware/tests/latest/test_connectedvmware_scenario.py +++ b/src/connectedvmware/azext_connectedvmware/tests/latest/test_connectedvmware_scenario.py @@ -18,21 +18,21 @@ class ConnectedvmwareScenarioTest(ScenarioTest): def test_connectedvmware(self): self.kwargs.update( { - 'rg': 'service-sdk-test', - 'loc': 'eastus2euap', - 'cus_loc': 'service-sdk-test-cl', - 'vc_name': 'service-sdk-test-vcenter', - 'rp_morefid': 'resgroup-87723', + 'rg': 'azcli-test-rg', + 'loc': 'eastus', + 'cus_loc': 'azcli-test-cl', + 'vc_name': 'azcli-test-vc', + 'rp_inventory_item': 'resgroup-724471', 'rp_name': 'azcli-test-resource-pool', - 'cluster_morefid': 'domain-c7', + 'cluster_inventory_item': 'domain-c649660', 'cluster_name': 'azcli-test-cluster', - 'datastore_morefid': 'datastore-11', + 'datastore_inventory_item': 'datastore-563660', 'datastore_name': 'azcli-test-datastore', - 'host_morefid': 'host-33', + 'host_inventory_item': 'host-713902', 'host_name': 'azcli-test-host', - 'vnet_morefid': 'network-o61', + 'vnet_inventory_item': 'network-563661', 'vnet_name': 'azcli-test-virtual-network', - 'vmtpl_morefid': 'vm-141', + 'vmtpl_inventory_item': 'vmtpl-vm-651858', 'vmtpl_name': 'azcli-test-vm-template', 'vm_name': 'azcli-test-vm', 'nic_name': 'nic_1', @@ -57,7 +57,7 @@ def test_connectedvmware(self): # Create resource-pool resource. self.cmd( - 'az connectedvmware resource-pool create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} --mo-ref-id {rp_morefid} --name {rp_name}' + 'az connectedvmware resource-pool create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} -i {rp_inventory_item} --name {rp_name}' ) # Validate the show command output with resource-pool name. @@ -77,7 +77,7 @@ def test_connectedvmware(self): # Create cluster resource. self.cmd( - 'az connectedvmware cluster create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} --mo-ref-id {cluster_morefid} --name {cluster_name}' + 'az connectedvmware cluster create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} -i {cluster_inventory_item} --name {cluster_name}' ) # Validate the show command output with cluster name. @@ -97,7 +97,7 @@ def test_connectedvmware(self): # Create datastore resource. self.cmd( - 'az connectedvmware datastore create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} --mo-ref-id {datastore_morefid} --name {datastore_name}' + 'az connectedvmware datastore create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} -i {datastore_inventory_item} --name {datastore_name}' ) # Validate the show command output with datastore name. @@ -117,7 +117,7 @@ def test_connectedvmware(self): # Create host resource. self.cmd( - 'az connectedvmware host create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} --mo-ref-id {host_morefid} --name {host_name}' + 'az connectedvmware host create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} -i {host_inventory_item} --name {host_name}' ) # Validate the show command output with host name. @@ -137,7 +137,7 @@ def test_connectedvmware(self): # Create virtual-network resource. self.cmd( - 'az connectedvmware virtual-network create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} --mo-ref-id {vnet_morefid} --name {vnet_name}' + 'az connectedvmware virtual-network create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} -i {vnet_inventory_item} --name {vnet_name}' ) # Validate the show command output with virtual-network name. @@ -157,7 +157,7 @@ def test_connectedvmware(self): # Create vm-template resource. self.cmd( - 'az connectedvmware vm-template create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} --mo-ref-id {vmtpl_morefid} --name {vmtpl_name}' + 'az connectedvmware vm-template create -g {rg} -l {loc} --custom-location {cus_loc} --vcenter {vc_name} -i {vmtpl_inventory_item} --name {vmtpl_name}' ) # Validate the show command output with vm-template name. @@ -177,9 +177,9 @@ def test_connectedvmware(self): # Validate the show command output with inventory-item name. self.cmd( - 'az connectedvmware vcenter inventory-item show -g {rg} --vcenter {vc_name} --inventory-item {rp_morefid}', + 'az connectedvmware vcenter inventory-item show -g {rg} --vcenter {vc_name} --i {rp_inventory_item}', checks=[ - self.check('name', '{rp_morefid}'), + self.check('name', '{rp_inventory_item}'), ], ) diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/__init__.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/__init__.py index 6e74ac1787a..11059dcb4dc 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/__init__.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/__init__.py @@ -12,8 +12,7 @@ __version__ = VERSION __all__ = ['AzureArcVMwareManagementServiceAPI'] -try: - from ._patch import patch_sdk # type: ignore - patch_sdk() -except ImportError: - pass +# `._patch.py` is used for handwritten extensions to the generated code +# Example: https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md +from ._patch import patch_sdk +patch_sdk() diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/_azure_arc_vmware_management_service_api.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_azure_arc_vmware_management_service_api.py index 20aef933dee..38a5f12e2f8 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/_azure_arc_vmware_management_service_api.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_azure_arc_vmware_management_service_api.py @@ -6,36 +6,25 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +from copy import deepcopy from typing import TYPE_CHECKING -from azure.mgmt.core import ARMPipelineClient from msrest import Deserializer, Serializer +from azure.mgmt.core import ARMPipelineClient + +from . import models +from ._configuration import AzureArcVMwareManagementServiceAPIConfiguration +from .operations import ClustersOperations, DatastoresOperations, GuestAgentsOperations, HostsOperations, HybridIdentityMetadataOperations, InventoryItemsOperations, MachineExtensionsOperations, Operations, ResourcePoolsOperations, VCentersOperations, VirtualMachineTemplatesOperations, VirtualMachinesOperations, VirtualNetworksOperations + if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Optional + from typing import Any from azure.core.credentials import TokenCredential - from azure.core.pipeline.transport import HttpRequest, HttpResponse - -from ._configuration import AzureArcVMwareManagementServiceAPIConfiguration -from .operations import Operations -from .operations import ResourcePoolsOperations -from .operations import ClustersOperations -from .operations import HostsOperations -from .operations import DatastoresOperations -from .operations import VCentersOperations -from .operations import VirtualMachinesOperations -from .operations import VirtualMachineTemplatesOperations -from .operations import VirtualNetworksOperations -from .operations import InventoryItemsOperations -from .operations import HybridIdentityMetadataOperations -from .operations import MachineExtensionsOperations -from .operations import GuestAgentsOperations -from . import models - + from azure.core.rest import HttpRequest, HttpResponse -class AzureArcVMwareManagementServiceAPI(object): +class AzureArcVMwareManagementServiceAPI(object): # pylint: disable=too-many-instance-attributes """Self service experience for VMware. :ivar operations: Operations operations @@ -53,13 +42,15 @@ class AzureArcVMwareManagementServiceAPI(object): :ivar virtual_machines: VirtualMachinesOperations operations :vartype virtual_machines: azure.mgmt.connectedvmware.operations.VirtualMachinesOperations :ivar virtual_machine_templates: VirtualMachineTemplatesOperations operations - :vartype virtual_machine_templates: azure.mgmt.connectedvmware.operations.VirtualMachineTemplatesOperations + :vartype virtual_machine_templates: + azure.mgmt.connectedvmware.operations.VirtualMachineTemplatesOperations :ivar virtual_networks: VirtualNetworksOperations operations :vartype virtual_networks: azure.mgmt.connectedvmware.operations.VirtualNetworksOperations :ivar inventory_items: InventoryItemsOperations operations :vartype inventory_items: azure.mgmt.connectedvmware.operations.InventoryItemsOperations :ivar hybrid_identity_metadata: HybridIdentityMetadataOperations operations - :vartype hybrid_identity_metadata: azure.mgmt.connectedvmware.operations.HybridIdentityMetadataOperations + :vartype hybrid_identity_metadata: + azure.mgmt.connectedvmware.operations.HybridIdentityMetadataOperations :ivar machine_extensions: MachineExtensionsOperations operations :vartype machine_extensions: azure.mgmt.connectedvmware.operations.MachineExtensionsOperations :ivar guest_agents: GuestAgentsOperations operations @@ -68,72 +59,71 @@ class AzureArcVMwareManagementServiceAPI(object): :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The Subscription ID. :type subscription_id: str - :param str base_url: Service URL - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :param base_url: Service URL. Default value is 'https://management.azure.com'. + :type base_url: str + :keyword api_version: Api Version. The default value is "2020-10-01-preview". Note that + overriding this default value may result in unsupported behavior. + :paramtype api_version: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. """ def __init__( self, credential, # type: "TokenCredential" subscription_id, # type: str - base_url=None, # type: Optional[str] + base_url="https://management.azure.com", # type: str **kwargs # type: Any ): # type: (...) -> None - if not base_url: - base_url = 'https://management.azure.com' - self._config = AzureArcVMwareManagementServiceAPIConfiguration(credential, subscription_id, **kwargs) + self._config = AzureArcVMwareManagementServiceAPIConfiguration(credential=credential, subscription_id=subscription_id, **kwargs) self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) - self._serialize.client_side_validation = False self._deserialize = Deserializer(client_models) - - self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize) - self.resource_pools = ResourcePoolsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.clusters = ClustersOperations( - self._client, self._config, self._serialize, self._deserialize) - self.hosts = HostsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.datastores = DatastoresOperations( - self._client, self._config, self._serialize, self._deserialize) - self.vcenters = VCentersOperations( - self._client, self._config, self._serialize, self._deserialize) - self.virtual_machines = VirtualMachinesOperations( - self._client, self._config, self._serialize, self._deserialize) - self.virtual_machine_templates = VirtualMachineTemplatesOperations( - self._client, self._config, self._serialize, self._deserialize) - self.virtual_networks = VirtualNetworksOperations( - self._client, self._config, self._serialize, self._deserialize) - self.inventory_items = InventoryItemsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.hybrid_identity_metadata = HybridIdentityMetadataOperations( - self._client, self._config, self._serialize, self._deserialize) - self.machine_extensions = MachineExtensionsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.guest_agents = GuestAgentsOperations( - self._client, self._config, self._serialize, self._deserialize) - - def _send_request(self, http_request, **kwargs): - # type: (HttpRequest, Any) -> HttpResponse + self._serialize.client_side_validation = False + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.resource_pools = ResourcePoolsOperations(self._client, self._config, self._serialize, self._deserialize) + self.clusters = ClustersOperations(self._client, self._config, self._serialize, self._deserialize) + self.hosts = HostsOperations(self._client, self._config, self._serialize, self._deserialize) + self.datastores = DatastoresOperations(self._client, self._config, self._serialize, self._deserialize) + self.vcenters = VCentersOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_machines = VirtualMachinesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_machine_templates = VirtualMachineTemplatesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_networks = VirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) + self.inventory_items = InventoryItemsOperations(self._client, self._config, self._serialize, self._deserialize) + self.hybrid_identity_metadata = HybridIdentityMetadataOperations(self._client, self._config, self._serialize, self._deserialize) + self.machine_extensions = MachineExtensionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.guest_agents = GuestAgentsOperations(self._client, self._config, self._serialize, self._deserialize) + + + def _send_request( + self, + request, # type: HttpRequest + **kwargs # type: Any + ): + # type: (...) -> HttpResponse """Runs the network request through the client's chained policies. - :param http_request: The network request you want to make. Required. - :type http_request: ~azure.core.pipeline.transport.HttpRequest - :keyword bool stream: Whether the response payload will be streamed. Defaults to True. + >>> from azure.core.rest import HttpRequest + >>> request = HttpRequest("GET", "https://www.example.org/") + + >>> response = client._send_request(request) + + + For more information on this code flow, see https://aka.ms/azsdk/python/protocol/quickstart + + :param request: The network request you want to make. Required. + :type request: ~azure.core.rest.HttpRequest + :keyword bool stream: Whether the response payload will be streamed. Defaults to False. :return: The response of your network call. Does not do error handling on your response. - :rtype: ~azure.core.pipeline.transport.HttpResponse + :rtype: ~azure.core.rest.HttpResponse """ - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - http_request.url = self._client.format_url(http_request.url, **path_format_arguments) - stream = kwargs.pop("stream", True) - pipeline_response = self._client._pipeline.run(http_request, stream=stream, **kwargs) - return pipeline_response.http_response + + request_copy = deepcopy(request) + request_copy.url = self._client.format_url(request_copy.url) + return self._client.send_request(request_copy, **kwargs) def close(self): # type: () -> None diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/_configuration.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_configuration.py index 34eaaa58200..8c0fcbeb174 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/_configuration.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_configuration.py @@ -10,7 +10,7 @@ from azure.core.configuration import Configuration from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy +from azure.mgmt.core.policies import ARMChallengeAuthenticationPolicy, ARMHttpLoggingPolicy from ._version import VERSION @@ -21,7 +21,7 @@ from azure.core.credentials import TokenCredential -class AzureArcVMwareManagementServiceAPIConfiguration(Configuration): +class AzureArcVMwareManagementServiceAPIConfiguration(Configuration): # pylint: disable=too-many-instance-attributes """Configuration for AzureArcVMwareManagementServiceAPI. Note that all parameters used to create this instance are saved as instance @@ -31,6 +31,9 @@ class AzureArcVMwareManagementServiceAPIConfiguration(Configuration): :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The Subscription ID. :type subscription_id: str + :keyword api_version: Api Version. The default value is "2020-10-01-preview". Note that + overriding this default value may result in unsupported behavior. + :paramtype api_version: str """ def __init__( @@ -40,15 +43,17 @@ def __init__( **kwargs # type: Any ): # type: (...) -> None + super(AzureArcVMwareManagementServiceAPIConfiguration, self).__init__(**kwargs) + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: raise ValueError("Parameter 'subscription_id' must not be None.") - super(AzureArcVMwareManagementServiceAPIConfiguration, self).__init__(**kwargs) self.credential = credential self.subscription_id = subscription_id - self.api_version = "2020-10-01-preview" + self.api_version = api_version self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-connectedvmware/{}'.format(VERSION)) self._configure(**kwargs) @@ -68,4 +73,4 @@ def _configure( self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') if self.credential and not self.authentication_policy: - self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = ARMChallengeAuthenticationPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/_patch.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_patch.py new file mode 100644 index 00000000000..74e48ecd07c --- /dev/null +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_patch.py @@ -0,0 +1,31 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the ""Software""), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# -------------------------------------------------------------------------- + +# This file is used for handwritten extensions to the generated code. Example: +# https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md +def patch_sdk(): + pass \ No newline at end of file diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/_vendor.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_vendor.py new file mode 100644 index 00000000000..138f663c53a --- /dev/null +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/_vendor.py @@ -0,0 +1,27 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.core.pipeline.transport import HttpRequest + +def _convert_request(request, files=None): + data = request.content if not files else None + request = HttpRequest(method=request.method, url=request.url, headers=request.headers, data=data) + if files: + request.set_formdata_body(files) + return request + +def _format_url_section(template, **kwargs): + components = template.split("/") + while components: + try: + return template.format(**kwargs) + except KeyError as key: + formatted_components = template.split("/") + components = [ + c for c in formatted_components if "{}".format(key.args[0]) not in c + ] + template = "/".join(components) diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/__init__.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/__init__.py index 9bee3ede0eb..76f7deaaea6 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/__init__.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/__init__.py @@ -8,3 +8,8 @@ from ._azure_arc_vmware_management_service_api import AzureArcVMwareManagementServiceAPI __all__ = ['AzureArcVMwareManagementServiceAPI'] + +# `._patch.py` is used for handwritten extensions to the generated code +# Example: https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md +from ._patch import patch_sdk +patch_sdk() diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_azure_arc_vmware_management_service_api.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_azure_arc_vmware_management_service_api.py index af1a589c110..ec58e23df91 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_azure_arc_vmware_management_service_api.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_azure_arc_vmware_management_service_api.py @@ -6,34 +6,23 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Optional, TYPE_CHECKING +from copy import deepcopy +from typing import Any, Awaitable, TYPE_CHECKING -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core import AsyncARMPipelineClient from msrest import Deserializer, Serializer -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials_async import AsyncTokenCredential +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.mgmt.core import AsyncARMPipelineClient -from ._configuration import AzureArcVMwareManagementServiceAPIConfiguration -from .operations import Operations -from .operations import ResourcePoolsOperations -from .operations import ClustersOperations -from .operations import HostsOperations -from .operations import DatastoresOperations -from .operations import VCentersOperations -from .operations import VirtualMachinesOperations -from .operations import VirtualMachineTemplatesOperations -from .operations import VirtualNetworksOperations -from .operations import InventoryItemsOperations -from .operations import HybridIdentityMetadataOperations -from .operations import MachineExtensionsOperations -from .operations import GuestAgentsOperations from .. import models +from ._configuration import AzureArcVMwareManagementServiceAPIConfiguration +from .operations import ClustersOperations, DatastoresOperations, GuestAgentsOperations, HostsOperations, HybridIdentityMetadataOperations, InventoryItemsOperations, MachineExtensionsOperations, Operations, ResourcePoolsOperations, VCentersOperations, VirtualMachineTemplatesOperations, VirtualMachinesOperations, VirtualNetworksOperations +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential -class AzureArcVMwareManagementServiceAPI(object): +class AzureArcVMwareManagementServiceAPI: # pylint: disable=too-many-instance-attributes """Self service experience for VMware. :ivar operations: Operations operations @@ -51,85 +40,87 @@ class AzureArcVMwareManagementServiceAPI(object): :ivar virtual_machines: VirtualMachinesOperations operations :vartype virtual_machines: azure.mgmt.connectedvmware.aio.operations.VirtualMachinesOperations :ivar virtual_machine_templates: VirtualMachineTemplatesOperations operations - :vartype virtual_machine_templates: azure.mgmt.connectedvmware.aio.operations.VirtualMachineTemplatesOperations + :vartype virtual_machine_templates: + azure.mgmt.connectedvmware.aio.operations.VirtualMachineTemplatesOperations :ivar virtual_networks: VirtualNetworksOperations operations :vartype virtual_networks: azure.mgmt.connectedvmware.aio.operations.VirtualNetworksOperations :ivar inventory_items: InventoryItemsOperations operations :vartype inventory_items: azure.mgmt.connectedvmware.aio.operations.InventoryItemsOperations :ivar hybrid_identity_metadata: HybridIdentityMetadataOperations operations - :vartype hybrid_identity_metadata: azure.mgmt.connectedvmware.aio.operations.HybridIdentityMetadataOperations + :vartype hybrid_identity_metadata: + azure.mgmt.connectedvmware.aio.operations.HybridIdentityMetadataOperations :ivar machine_extensions: MachineExtensionsOperations operations - :vartype machine_extensions: azure.mgmt.connectedvmware.aio.operations.MachineExtensionsOperations + :vartype machine_extensions: + azure.mgmt.connectedvmware.aio.operations.MachineExtensionsOperations :ivar guest_agents: GuestAgentsOperations operations :vartype guest_agents: azure.mgmt.connectedvmware.aio.operations.GuestAgentsOperations :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The Subscription ID. :type subscription_id: str - :param str base_url: Service URL - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :param base_url: Service URL. Default value is 'https://management.azure.com'. + :type base_url: str + :keyword api_version: Api Version. The default value is "2020-10-01-preview". Note that + overriding this default value may result in unsupported behavior. + :paramtype api_version: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. """ def __init__( self, credential: "AsyncTokenCredential", subscription_id: str, - base_url: Optional[str] = None, + base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: - if not base_url: - base_url = 'https://management.azure.com' - self._config = AzureArcVMwareManagementServiceAPIConfiguration(credential, subscription_id, **kwargs) + self._config = AzureArcVMwareManagementServiceAPIConfiguration(credential=credential, subscription_id=subscription_id, **kwargs) self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) - self._serialize.client_side_validation = False self._deserialize = Deserializer(client_models) + self._serialize.client_side_validation = False + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.resource_pools = ResourcePoolsOperations(self._client, self._config, self._serialize, self._deserialize) + self.clusters = ClustersOperations(self._client, self._config, self._serialize, self._deserialize) + self.hosts = HostsOperations(self._client, self._config, self._serialize, self._deserialize) + self.datastores = DatastoresOperations(self._client, self._config, self._serialize, self._deserialize) + self.vcenters = VCentersOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_machines = VirtualMachinesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_machine_templates = VirtualMachineTemplatesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_networks = VirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) + self.inventory_items = InventoryItemsOperations(self._client, self._config, self._serialize, self._deserialize) + self.hybrid_identity_metadata = HybridIdentityMetadataOperations(self._client, self._config, self._serialize, self._deserialize) + self.machine_extensions = MachineExtensionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.guest_agents = GuestAgentsOperations(self._client, self._config, self._serialize, self._deserialize) - self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize) - self.resource_pools = ResourcePoolsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.clusters = ClustersOperations( - self._client, self._config, self._serialize, self._deserialize) - self.hosts = HostsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.datastores = DatastoresOperations( - self._client, self._config, self._serialize, self._deserialize) - self.vcenters = VCentersOperations( - self._client, self._config, self._serialize, self._deserialize) - self.virtual_machines = VirtualMachinesOperations( - self._client, self._config, self._serialize, self._deserialize) - self.virtual_machine_templates = VirtualMachineTemplatesOperations( - self._client, self._config, self._serialize, self._deserialize) - self.virtual_networks = VirtualNetworksOperations( - self._client, self._config, self._serialize, self._deserialize) - self.inventory_items = InventoryItemsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.hybrid_identity_metadata = HybridIdentityMetadataOperations( - self._client, self._config, self._serialize, self._deserialize) - self.machine_extensions = MachineExtensionsOperations( - self._client, self._config, self._serialize, self._deserialize) - self.guest_agents = GuestAgentsOperations( - self._client, self._config, self._serialize, self._deserialize) - - async def _send_request(self, http_request: HttpRequest, **kwargs: Any) -> AsyncHttpResponse: + + def _send_request( + self, + request: HttpRequest, + **kwargs: Any + ) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. - :param http_request: The network request you want to make. Required. - :type http_request: ~azure.core.pipeline.transport.HttpRequest - :keyword bool stream: Whether the response payload will be streamed. Defaults to True. + >>> from azure.core.rest import HttpRequest + >>> request = HttpRequest("GET", "https://www.example.org/") + + >>> response = await client._send_request(request) + + + For more information on this code flow, see https://aka.ms/azsdk/python/protocol/quickstart + + :param request: The network request you want to make. Required. + :type request: ~azure.core.rest.HttpRequest + :keyword bool stream: Whether the response payload will be streamed. Defaults to False. :return: The response of your network call. Does not do error handling on your response. - :rtype: ~azure.core.pipeline.transport.AsyncHttpResponse + :rtype: ~azure.core.rest.AsyncHttpResponse """ - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - http_request.url = self._client.format_url(http_request.url, **path_format_arguments) - stream = kwargs.pop("stream", True) - pipeline_response = await self._client._pipeline.run(http_request, stream=stream, **kwargs) - return pipeline_response.http_response + + request_copy = deepcopy(request) + request_copy.url = self._client.format_url(request_copy.url) + return self._client.send_request(request_copy, **kwargs) async def close(self) -> None: await self._client.close() diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_configuration.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_configuration.py index bd68e0905e7..23a6b884f5d 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_configuration.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_configuration.py @@ -10,7 +10,7 @@ from azure.core.configuration import Configuration from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy +from azure.mgmt.core.policies import ARMHttpLoggingPolicy, AsyncARMChallengeAuthenticationPolicy from .._version import VERSION @@ -19,7 +19,7 @@ from azure.core.credentials_async import AsyncTokenCredential -class AzureArcVMwareManagementServiceAPIConfiguration(Configuration): +class AzureArcVMwareManagementServiceAPIConfiguration(Configuration): # pylint: disable=too-many-instance-attributes """Configuration for AzureArcVMwareManagementServiceAPI. Note that all parameters used to create this instance are saved as instance @@ -29,6 +29,9 @@ class AzureArcVMwareManagementServiceAPIConfiguration(Configuration): :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The Subscription ID. :type subscription_id: str + :keyword api_version: Api Version. The default value is "2020-10-01-preview". Note that + overriding this default value may result in unsupported behavior. + :paramtype api_version: str """ def __init__( @@ -37,15 +40,17 @@ def __init__( subscription_id: str, **kwargs: Any ) -> None: + super(AzureArcVMwareManagementServiceAPIConfiguration, self).__init__(**kwargs) + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: raise ValueError("Parameter 'subscription_id' must not be None.") - super(AzureArcVMwareManagementServiceAPIConfiguration, self).__init__(**kwargs) self.credential = credential self.subscription_id = subscription_id - self.api_version = "2020-10-01-preview" + self.api_version = api_version self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-connectedvmware/{}'.format(VERSION)) self._configure(**kwargs) @@ -64,4 +69,4 @@ def _configure( self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') if self.credential and not self.authentication_policy: - self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = AsyncARMChallengeAuthenticationPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_patch.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_patch.py new file mode 100644 index 00000000000..74e48ecd07c --- /dev/null +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/_patch.py @@ -0,0 +1,31 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the ""Software""), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# -------------------------------------------------------------------------- + +# This file is used for handwritten extensions to the generated code. Example: +# https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md +def patch_sdk(): + pass \ No newline at end of file diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_clusters_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_clusters_operations.py index 2759532e00e..e6c74ce39a8 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_clusters_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_clusters_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._clusters_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_update_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'Cluster') + _json = self._serialize.body(body, 'Cluster') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('Cluster', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,19 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.Cluster :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either Cluster or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Cluster or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.Cluster"] lro_delay = kwargs.pop( @@ -143,27 +150,22 @@ async def begin_create( resource_group_name=resource_group_name, cluster_name=cluster_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('Cluster', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +175,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +204,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Cluster', pipeline_response) @@ -236,8 +236,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + + @distributed_trace_async async def update( self, resource_group_name: str, @@ -265,41 +268,37 @@ async def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Cluster', pipeline_response) @@ -308,9 +307,11 @@ async def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore - async def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, cluster_name: str, @@ -322,43 +323,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, cluster_name: str, @@ -377,14 +375,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -397,24 +398,18 @@ async def begin_delete( resource_group_name=resource_group_name, cluster_name=cluster_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -424,10 +419,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -438,42 +434,42 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ClustersList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ClustersList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ClustersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ClustersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('ClustersList', pipeline_response) + deserialized = self._deserialize("ClustersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -482,21 +478,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/clusters'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/clusters"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -510,43 +512,44 @@ def list_by_resource_group( :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ClustersList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ClustersList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ClustersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ClustersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('ClustersList', pipeline_response) + deserialized = self._deserialize("ClustersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -555,17 +558,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_datastores_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_datastores_operations.py index 2bc7a9fe757..18aaa08385c 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_datastores_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_datastores_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._datastores_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_update_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'Datastore') + _json = self._serialize.body(body, 'Datastore') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('Datastore', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,19 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.Datastore :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either Datastore or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Datastore or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.Datastore] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.Datastore"] lro_delay = kwargs.pop( @@ -143,27 +150,22 @@ async def begin_create( resource_group_name=resource_group_name, datastore_name=datastore_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('Datastore', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +175,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +204,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Datastore', pipeline_response) @@ -236,8 +236,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + + @distributed_trace_async async def update( self, resource_group_name: str, @@ -265,41 +268,37 @@ async def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Datastore', pipeline_response) @@ -308,9 +307,11 @@ async def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore - async def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, datastore_name: str, @@ -322,43 +323,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, datastore_name: str, @@ -377,14 +375,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -397,24 +398,18 @@ async def begin_delete( resource_group_name=resource_group_name, datastore_name=datastore_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -424,10 +419,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -438,42 +434,42 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either DatastoresList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.DatastoresList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.DatastoresList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.DatastoresList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('DatastoresList', pipeline_response) + deserialized = self._deserialize("DatastoresList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -482,21 +478,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/datastores'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/datastores"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -510,43 +512,44 @@ def list_by_resource_group( :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either DatastoresList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.DatastoresList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.DatastoresList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.DatastoresList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('DatastoresList', pipeline_response) + deserialized = self._deserialize("DatastoresList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -555,17 +558,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_guest_agents_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_guest_agents_operations.py index 3f25196fc2f..cc8fee0164c 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_guest_agents_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_guest_agents_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._guest_agents_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_vm_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -56,43 +60,38 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'GuestAgent') + _json = self._serialize.body(body, 'GuestAgent') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + name=name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('GuestAgent', pipeline_response) @@ -104,8 +103,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -128,14 +130,19 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.GuestAgent :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either GuestAgent or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either GuestAgent or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.GuestAgent] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.GuestAgent"] lro_delay = kwargs.pop( @@ -149,28 +156,22 @@ async def begin_create( virtual_machine_name=virtual_machine_name, name=name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('GuestAgent', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -180,10 +181,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -211,34 +213,31 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + name=name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('GuestAgent', pipeline_response) @@ -247,9 +246,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore - async def _delete_initial( + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -261,42 +262,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + name=name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -315,14 +314,17 @@ async def begin_delete( :type name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -335,25 +337,18 @@ async def begin_delete( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, name=name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -363,10 +358,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + @distributed_trace def list_by_vm( self, resource_group_name: str, @@ -383,44 +379,46 @@ def list_by_vm( :type virtual_machine_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either GuestAgentList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.GuestAgentList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.GuestAgentList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.GuestAgentList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_vm.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self.list_by_vm.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('GuestAgentList', pipeline_response) + deserialized = self._deserialize("GuestAgentList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -429,17 +427,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_vm.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents'} # type: ignore + list_by_vm.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hosts_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hosts_operations.py index 342b008d0b4..e326b8ef9e1 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hosts_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hosts_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._hosts_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_update_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'Host') + _json = self._serialize.body(body, 'Host') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('Host', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,18 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.Host :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either Host or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.Host] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.Host"] lro_delay = kwargs.pop( @@ -143,27 +149,22 @@ async def begin_create( resource_group_name=resource_group_name, host_name=host_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('Host', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +174,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +203,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Host', pipeline_response) @@ -236,8 +235,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + + @distributed_trace_async async def update( self, resource_group_name: str, @@ -265,41 +267,37 @@ async def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Host', pipeline_response) @@ -308,9 +306,11 @@ async def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore - async def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, host_name: str, @@ -322,43 +322,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, host_name: str, @@ -377,14 +374,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -397,24 +397,18 @@ async def begin_delete( resource_group_name=resource_group_name, host_name=host_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -424,10 +418,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -441,39 +436,38 @@ def list( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.HostsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.HostsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('HostsList', pipeline_response) + deserialized = self._deserialize("HostsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -482,21 +476,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/hosts'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/hosts"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -513,40 +513,40 @@ def list_by_resource_group( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.HostsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.HostsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('HostsList', pipeline_response) + deserialized = self._deserialize("HostsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -555,17 +555,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hybrid_identity_metadata_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hybrid_identity_metadata_operations.py index d8a86e3a989..a89201049f5 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hybrid_identity_metadata_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_hybrid_identity_metadata_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,17 +6,20 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._hybrid_identity_metadata_operations import build_create_request, build_delete_request, build_get_request, build_list_by_vm_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -41,6 +45,7 @@ def __init__(self, client, config, serializer, deserializer) -> None: self._deserialize = deserializer self._config = config + @distributed_trace_async async def create( self, resource_group_name: str, @@ -71,42 +76,38 @@ async def create( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'metadataName': self._serialize.url("metadata_name", metadata_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'HybridIdentityMetadata') + _json = self._serialize.body(body, 'HybridIdentityMetadata') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + metadata_name=metadata_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('HybridIdentityMetadata', pipeline_response) @@ -115,8 +116,11 @@ async def create( return cls(pipeline_response, deserialized, {}) return deserialized - create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}'} # type: ignore + create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}"} # type: ignore + + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -144,34 +148,31 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'metadataName': self._serialize.url("metadata_name", metadata_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + metadata_name=metadata_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('HybridIdentityMetadata', pipeline_response) @@ -180,9 +181,12 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}'} # type: ignore - async def delete( + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}"} # type: ignore + + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -209,41 +213,40 @@ async def delete( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'metadataName': self._serialize.url("metadata_name", metadata_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + metadata_name=metadata_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}'} # type: ignore + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}"} # type: ignore + + @distributed_trace def list_by_vm( self, resource_group_name: str, @@ -259,45 +262,48 @@ def list_by_vm( :param virtual_machine_name: Name of the vm. :type virtual_machine_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either HybridIdentityMetadataList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.HybridIdentityMetadataList] + :return: An iterator like instance of either HybridIdentityMetadataList or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.HybridIdentityMetadataList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.HybridIdentityMetadataList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_vm.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self.list_by_vm.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('HybridIdentityMetadataList', pipeline_response) + deserialized = self._deserialize("HybridIdentityMetadataList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -306,17 +312,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_vm.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata'} # type: ignore + list_by_vm.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_inventory_items_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_inventory_items_operations.py index 056f35faa07..2cadb077453 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_inventory_items_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_inventory_items_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,17 +6,20 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._inventory_items_operations import build_create_request, build_delete_request, build_get_request, build_list_by_v_center_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -41,6 +45,7 @@ def __init__(self, client, config, serializer, deserializer) -> None: self._deserialize = deserializer self._config = config + @distributed_trace_async async def create( self, resource_group_name: str, @@ -71,42 +76,38 @@ async def create( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - 'inventoryItemName': self._serialize.url("inventory_item_name", inventory_item_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'InventoryItem') + _json = self._serialize.body(body, 'InventoryItem') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + inventory_item_name=inventory_item_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('InventoryItem', pipeline_response) @@ -115,8 +116,11 @@ async def create( return cls(pipeline_response, deserialized, {}) return deserialized - create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}'} # type: ignore + create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}"} # type: ignore + + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -144,34 +148,31 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - 'inventoryItemName': self._serialize.url("inventory_item_name", inventory_item_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + inventory_item_name=inventory_item_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('InventoryItem', pipeline_response) @@ -180,9 +181,12 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}'} # type: ignore - async def delete( + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}"} # type: ignore + + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, vcenter_name: str, @@ -209,41 +213,40 @@ async def delete( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - 'inventoryItemName': self._serialize.url("inventory_item_name", inventory_item_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + inventory_item_name=inventory_item_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}'} # type: ignore + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}"} # type: ignore + + @distributed_trace def list_by_v_center( self, resource_group_name: str, @@ -260,44 +263,46 @@ def list_by_v_center( :type vcenter_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either InventoryItemsList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.InventoryItemsList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.InventoryItemsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.InventoryItemsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_v_center.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_v_center_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + template_url=self.list_by_v_center.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_v_center_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('InventoryItemsList', pipeline_response) + deserialized = self._deserialize("InventoryItemsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -306,17 +311,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_v_center.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems'} # type: ignore + list_by_v_center.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_machine_extensions_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_machine_extensions_operations.py index d07f35c6c0e..df43f3d772b 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_machine_extensions_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_machine_extensions_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._machine_extensions_operations import build_create_or_update_request_initial, build_delete_request_initial, build_get_request, build_list_request, build_update_request_initial T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -56,40 +60,35 @@ async def _create_or_update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_or_update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(extension_parameters, 'MachineExtension') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(extension_parameters, 'MachineExtension') + + request = build_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('MachineExtension', pipeline_response) @@ -101,8 +100,11 @@ async def _create_or_update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + + @distributed_trace_async async def begin_create_or_update( self, resource_group_name: str, @@ -123,14 +125,19 @@ async def begin_create_or_update( :type extension_parameters: ~azure.mgmt.connectedvmware.models.MachineExtension :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either MachineExtension or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either MachineExtension or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.MachineExtension] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.MachineExtension"] lro_delay = kwargs.pop( @@ -144,28 +151,22 @@ async def begin_create_or_update( name=name, extension_name=extension_name, extension_parameters=extension_parameters, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('MachineExtension', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -175,9 +176,9 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore async def _update_initial( self, @@ -192,40 +193,35 @@ async def _update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(extension_parameters, 'MachineExtensionUpdate') - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(extension_parameters, 'MachineExtensionUpdate') + + request = build_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('MachineExtension', pipeline_response) @@ -237,8 +233,11 @@ async def _update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + + @distributed_trace_async async def begin_update( self, resource_group_name: str, @@ -259,14 +258,19 @@ async def begin_update( :type extension_parameters: ~azure.mgmt.connectedvmware.models.MachineExtensionUpdate :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either MachineExtension or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either MachineExtension or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.MachineExtension] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.MachineExtension"] lro_delay = kwargs.pop( @@ -280,28 +284,22 @@ async def begin_update( name=name, extension_name=extension_name, extension_parameters=extension_parameters, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('MachineExtension', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -311,11 +309,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore - async def _delete_initial( + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, name: str, @@ -327,42 +325,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, name: str, @@ -379,14 +375,17 @@ async def begin_delete( :type extension_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -399,25 +398,18 @@ async def begin_delete( resource_group_name=resource_group_name, name=name, extension_name=extension_name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -427,10 +419,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -456,34 +449,31 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('MachineExtension', pipeline_response) @@ -492,8 +482,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + + @distributed_trace def list( self, resource_group_name: str, @@ -510,47 +503,50 @@ def list( :param expand: The expand expression to apply on the operation. :type expand: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either MachineExtensionsListResult or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.MachineExtensionsListResult] + :return: An iterator like instance of either MachineExtensionsListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.MachineExtensionsListResult] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.MachineExtensionsListResult"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if expand is not None: - query_parameters['$expand'] = self._serialize.query("expand", expand, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + api_version=api_version, + expand=expand, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + api_version=api_version, + expand=expand, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('MachineExtensionsListResult', pipeline_response) + deserialized = self._deserialize("MachineExtensionsListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -559,17 +555,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_operations.py index 8c28a2ae19d..06a94a727d6 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,17 +6,19 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._operations import build_list_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -41,6 +44,7 @@ def __init__(self, client, config, serializer, deserializer) -> None: self._deserialize = deserializer self._config = config + @distributed_trace def list( self, **kwargs: Any @@ -49,38 +53,40 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either OperationsList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.OperationsList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.OperationsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.OperationsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = build_list_request( + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('OperationsList', pipeline_response) + deserialized = self._deserialize("OperationsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -89,17 +95,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/providers/Microsoft.ConnectedVMwarevSphere/operations'} # type: ignore + list.metadata = {'url': "/providers/Microsoft.ConnectedVMwarevSphere/operations"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_resource_pools_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_resource_pools_operations.py index 05d871c51c7..536ee9b968c 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_resource_pools_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_resource_pools_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._resource_pools_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_update_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePool') + _json = self._serialize.body(body, 'ResourcePool') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('ResourcePool', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,19 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.ResourcePool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either ResourcePool or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ResourcePool or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.ResourcePool] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourcePool"] lro_delay = kwargs.pop( @@ -143,27 +150,22 @@ async def begin_create( resource_group_name=resource_group_name, resource_pool_name=resource_pool_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('ResourcePool', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +175,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +204,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('ResourcePool', pipeline_response) @@ -236,8 +236,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + + @distributed_trace_async async def update( self, resource_group_name: str, @@ -265,41 +268,37 @@ async def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('ResourcePool', pipeline_response) @@ -308,9 +307,11 @@ async def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore - async def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, resource_pool_name: str, @@ -322,43 +323,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, resource_pool_name: str, @@ -377,14 +375,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -397,24 +398,18 @@ async def begin_delete( resource_group_name=resource_group_name, resource_pool_name=resource_pool_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -424,10 +419,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -438,42 +434,42 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ResourcePoolsList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ResourcePoolsList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ResourcePoolsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourcePoolsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('ResourcePoolsList', pipeline_response) + deserialized = self._deserialize("ResourcePoolsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -482,21 +478,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -510,43 +512,44 @@ def list_by_resource_group( :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ResourcePoolsList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ResourcePoolsList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.ResourcePoolsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourcePoolsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('ResourcePoolsList', pipeline_response) + deserialized = self._deserialize("ResourcePoolsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -555,17 +558,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_vcenters_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_vcenters_operations.py index 94d34c43821..02a0af9dfd5 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_vcenters_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_vcenters_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._vcenters_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_update_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VCenter') + _json = self._serialize.body(body, 'VCenter') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VCenter', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,19 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VCenter :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either VCenter or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VCenter or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.VCenter] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VCenter"] lro_delay = kwargs.pop( @@ -143,27 +150,22 @@ async def begin_create( resource_group_name=resource_group_name, vcenter_name=vcenter_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VCenter', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +175,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +204,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VCenter', pipeline_response) @@ -236,8 +236,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + + @distributed_trace_async async def update( self, resource_group_name: str, @@ -265,41 +268,37 @@ async def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VCenter', pipeline_response) @@ -308,9 +307,11 @@ async def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore - async def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, vcenter_name: str, @@ -322,43 +323,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, vcenter_name: str, @@ -377,14 +375,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -397,24 +398,18 @@ async def begin_delete( resource_group_name=resource_group_name, vcenter_name=vcenter_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -424,10 +419,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -438,42 +434,42 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either VCentersList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VCentersList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VCentersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VCentersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VCentersList', pipeline_response) + deserialized = self._deserialize("VCentersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -482,21 +478,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/vcenters'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/vcenters"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -510,43 +512,44 @@ def list_by_resource_group( :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either VCentersList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VCentersList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VCentersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VCentersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VCentersList', pipeline_response) + deserialized = self._deserialize("VCentersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -555,17 +558,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machine_templates_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machine_templates_operations.py index 6b829b6d708..8184134933d 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machine_templates_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machine_templates_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._virtual_machine_templates_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_update_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualMachineTemplate') + _json = self._serialize.body(body, 'VirtualMachineTemplate') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,20 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VirtualMachineTemplate :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either VirtualMachineTemplate or the result of cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] - :raises ~azure.core.exceptions.HttpResponseError: + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualMachineTemplate or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachineTemplate"] lro_delay = kwargs.pop( @@ -143,27 +151,22 @@ async def begin_create( resource_group_name=resource_group_name, virtual_machine_template_name=virtual_machine_template_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +176,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +205,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) @@ -236,8 +237,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + + @distributed_trace_async async def update( self, resource_group_name: str, @@ -265,41 +269,37 @@ async def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) @@ -308,9 +308,11 @@ async def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore - async def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_template_name: str, @@ -322,43 +324,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_template_name: str, @@ -377,14 +376,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -397,24 +399,18 @@ async def begin_delete( resource_group_name=resource_group_name, virtual_machine_template_name=virtual_machine_template_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -424,10 +420,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -437,43 +434,44 @@ def list( List of virtualMachineTemplates in a subscription. :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VirtualMachineTemplatesList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] + :return: An iterator like instance of either VirtualMachineTemplatesList or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachineTemplatesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachineTemplatesList', pipeline_response) + deserialized = self._deserialize("VirtualMachineTemplatesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -482,21 +480,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -509,44 +513,46 @@ def list_by_resource_group( :param resource_group_name: The Resource Group Name. :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VirtualMachineTemplatesList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] + :return: An iterator like instance of either VirtualMachineTemplatesList or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachineTemplatesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachineTemplatesList', pipeline_response) + deserialized = self._deserialize("VirtualMachineTemplatesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -555,17 +561,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machines_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machines_operations.py index 87786f136f6..478adc846c0 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machines_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_machines_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._virtual_machines_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_restart_request_initial, build_start_request_initial, build_stop_request_initial, build_update_request_initial T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualMachine') + _json = self._serialize.body(body, 'VirtualMachine') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VirtualMachine', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,19 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VirtualMachine :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either VirtualMachine or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualMachine or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.VirtualMachine] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachine"] lro_delay = kwargs.pop( @@ -143,27 +150,22 @@ async def begin_create( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualMachine', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +175,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +204,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualMachine', pipeline_response) @@ -236,7 +236,9 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + async def _update_initial( self, @@ -244,49 +246,45 @@ async def _update_initial( virtual_machine_name: str, body: Optional["_models.VirtualMachineUpdate"] = None, **kwargs: Any - ) -> "_models.VirtualMachine": - cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachine"] + ) -> Optional["_models.VirtualMachine"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualMachine"]] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualMachineUpdate') + _json = self._serialize.body(body, 'VirtualMachineUpdate') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response - if response.status_code not in [200, 201]: + if response.status_code not in [200, 201, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + deserialized = None if response.status_code == 200: deserialized = self._deserialize('VirtualMachine', pipeline_response) @@ -297,8 +295,11 @@ async def _update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + + + @distributed_trace_async async def begin_update( self, resource_group_name: str, @@ -318,14 +319,19 @@ async def begin_update( :type body: ~azure.mgmt.connectedvmware.models.VirtualMachineUpdate :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either VirtualMachine or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualMachine or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.VirtualMachine] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachine"] lro_delay = kwargs.pop( @@ -338,27 +344,22 @@ async def begin_update( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualMachine', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -368,11 +369,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore - async def _delete_initial( + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -384,43 +385,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -439,14 +437,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -459,24 +460,18 @@ async def begin_delete( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -486,11 +481,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - async def _stop_initial( + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + + async def _stop_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -502,49 +497,46 @@ async def _stop_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._stop_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'StopVirtualMachineOptions') + _json = self._serialize.body(body, 'StopVirtualMachineOptions') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_stop_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _stop_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop'} # type: ignore + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop"} # type: ignore + - async def begin_stop( + @distributed_trace_async + async def begin_stop( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -563,14 +555,18 @@ async def begin_stop( :type body: ~azure.mgmt.connectedvmware.models.StopVirtualMachineOptions :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -583,24 +579,19 @@ async def begin_stop( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -610,11 +601,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_stop.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - async def _start_initial( + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop"} # type: ignore + + async def _start_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -625,41 +616,39 @@ async def _start_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._start_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_start_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self._start_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.post(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _start_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start'} # type: ignore + _start_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start"} # type: ignore + - async def begin_start( + @distributed_trace_async + async def begin_start( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -675,14 +664,17 @@ async def begin_start( :type virtual_machine_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -694,24 +686,18 @@ async def begin_start( raw_result = await self._start_initial( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -721,11 +707,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_start.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start"} # type: ignore - async def _restart_initial( + async def _restart_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -736,41 +722,39 @@ async def _restart_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._restart_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_restart_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self._restart_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.post(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _restart_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart'} # type: ignore + _restart_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart"} # type: ignore - async def begin_restart( + + @distributed_trace_async + async def begin_restart( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_machine_name: str, @@ -786,14 +770,17 @@ async def begin_restart( :type virtual_machine_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -805,24 +792,18 @@ async def begin_restart( raw_result = await self._restart_initial( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -832,10 +813,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_restart.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_restart.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -846,42 +828,42 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either VirtualMachinesList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachinesList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachinesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachinesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachinesList', pipeline_response) + deserialized = self._deserialize("VirtualMachinesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -890,21 +872,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -918,43 +906,44 @@ def list_by_resource_group( :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either VirtualMachinesList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachinesList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachinesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachinesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachinesList', pipeline_response) + deserialized = self._deserialize("VirtualMachinesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -963,17 +952,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_networks_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_networks_operations.py index 36bd2c41584..ebd6d739fb4 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_networks_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/aio/operations/_virtual_networks_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,19 +6,22 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._virtual_networks_operations import build_create_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_request, build_update_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -55,42 +59,37 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualNetwork') + _json = self._serialize.body(body, 'VirtualNetwork') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VirtualNetwork', pipeline_response) @@ -102,8 +101,11 @@ async def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace_async async def begin_create( self, resource_group_name: str, @@ -123,14 +125,19 @@ async def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VirtualNetwork :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either VirtualNetwork or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetwork or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.connectedvmware.models.VirtualNetwork] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] lro_delay = kwargs.pop( @@ -143,27 +150,22 @@ async def begin_create( resource_group_name=resource_group_name, virtual_network_name=virtual_network_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualNetwork', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -173,10 +175,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + @distributed_trace_async async def get( self, resource_group_name: str, @@ -201,33 +204,30 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualNetwork', pipeline_response) @@ -236,8 +236,11 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace_async async def update( self, resource_group_name: str, @@ -265,41 +268,37 @@ async def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualNetwork', pipeline_response) @@ -308,9 +307,11 @@ async def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore - async def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_network_name: str, @@ -322,43 +323,40 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + - async def begin_delete( + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, virtual_network_name: str, @@ -377,14 +375,17 @@ async def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -397,24 +398,18 @@ async def begin_delete( resource_group_name=resource_group_name, virtual_network_name=virtual_network_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -424,10 +419,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + @distributed_trace def list( self, **kwargs: Any @@ -438,42 +434,42 @@ def list( :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either VirtualNetworksList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualNetworksList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualNetworksList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworksList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualNetworksList', pipeline_response) + deserialized = self._deserialize("VirtualNetworksList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -482,21 +478,27 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, @@ -510,43 +512,44 @@ def list_by_resource_group( :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either VirtualNetworksList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualNetworksList] + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.connectedvmware.models.VirtualNetworksList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworksList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualNetworksList', pipeline_response) + deserialized = self._deserialize("VirtualNetworksList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -555,17 +558,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_azure_arc_vmware_management_service_api_enums.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_azure_arc_vmware_management_service_api_enums.py index 9a15a80b6c8..6d7ccd29d1c 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_azure_arc_vmware_management_service_api_enums.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_azure_arc_vmware_management_service_api_enums.py @@ -6,27 +6,12 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from enum import Enum, EnumMeta +from enum import Enum from six import with_metaclass +from azure.core import CaseInsensitiveEnumMeta -class _CaseInsensitiveEnumMeta(EnumMeta): - def __getitem__(self, name): - return super().__getitem__(name.upper()) - def __getattr__(cls, name): - """Return the enum member matching `name` - We use __getattr__ instead of descriptors or inserting into the enum - class' __dict__ in order to support `name` and `value` being both - properties for enum members (which live in the class' __dict__) and - enum members themselves. - """ - try: - return cls._member_map_[name.upper()] - except KeyError: - raise AttributeError(name) - - -class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class CreatedByType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The type of identity that created the resource. """ @@ -35,7 +20,7 @@ class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): MANAGED_IDENTITY = "ManagedIdentity" KEY = "Key" -class DiskMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class DiskMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Defines the different types of disk modes. """ @@ -43,7 +28,7 @@ class DiskMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): INDEPENDENT_PERSISTENT = "independent_persistent" INDEPENDENT_NONPERSISTENT = "independent_nonpersistent" -class DiskType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class DiskType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Defines the different types of disks. """ @@ -55,21 +40,21 @@ class DiskType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): SESPARSE = "sesparse" UNKNOWN = "unknown" -class FirmwareType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class FirmwareType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Firmware type """ BIOS = "bios" EFI = "efi" -class IdentityType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class IdentityType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The type of managed service identity. """ NONE = "None" SYSTEM_ASSIGNED = "SystemAssigned" -class InventoryType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class InventoryType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The inventory type. """ @@ -81,7 +66,7 @@ class InventoryType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): DATASTORE = "Datastore" HOST = "Host" -class IPAddressAllocationMethod(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class IPAddressAllocationMethod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """IP address allocation method. """ @@ -92,7 +77,7 @@ class IPAddressAllocationMethod(with_metaclass(_CaseInsensitiveEnumMeta, str, En RANDOM = "random" OTHER = "other" -class NICType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class NICType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """NIC type """ @@ -103,7 +88,7 @@ class NICType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): E1000_E = "e1000e" PCNET32 = "pcnet32" -class OsType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class OsType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Defines the different types of VM guest operating systems. """ @@ -111,14 +96,14 @@ class OsType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): LINUX = "Linux" OTHER = "Other" -class PowerOnBootOption(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class PowerOnBootOption(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Defines the options for power on boot. """ ENABLED = "enabled" DISABLED = "disabled" -class ProvisioningAction(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class ProvisioningAction(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Defines the different types of operations for guest agent. """ @@ -126,7 +111,7 @@ class ProvisioningAction(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): UNINSTALL = "uninstall" REPAIR = "repair" -class ProvisioningState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class ProvisioningState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The current deployment state of resource. """ @@ -139,7 +124,7 @@ class ProvisioningState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): ACCEPTED = "Accepted" CREATED = "Created" -class SCSIControllerType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class SCSIControllerType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Defines the different types of SCSI controllers. """ @@ -148,7 +133,7 @@ class SCSIControllerType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): PVSCSI = "pvscsi" LSILOGICSAS = "lsilogicsas" -class StatusLevelTypes(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class StatusLevelTypes(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The level code. """ @@ -156,7 +141,7 @@ class StatusLevelTypes(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): WARNING = "Warning" ERROR = "Error" -class StatusTypes(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class StatusTypes(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The status of the hybrid machine agent. """ @@ -164,7 +149,7 @@ class StatusTypes(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): DISCONNECTED = "Disconnected" ERROR = "Error" -class VirtualSCSISharing(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class VirtualSCSISharing(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Defines the sharing mode for sharing the SCSI bus. """ diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models.py index b932b37bd4d..0ae0717a7e9 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models.py @@ -17,33 +17,33 @@ class Cluster(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this cluster + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this cluster resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the cluster. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the cluster. - :type inventory_item_id: str + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the cluster. + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the cluster. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the cluster. :vartype mo_name: str :ivar statuses: The resource status information. @@ -98,6 +98,26 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this cluster + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + cluster. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the cluster. + :paramtype inventory_item_id: str + """ super(Cluster, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -129,17 +149,17 @@ class InventoryItemProperties(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -165,6 +185,16 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(InventoryItemProperties, self).__init__(**kwargs) self.inventory_type = None # type: Optional[str] self.managed_resource_id = kwargs.get('managed_resource_id', None) @@ -180,17 +210,17 @@ class ClusterInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -212,6 +242,16 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(ClusterInventoryItem, self).__init__(**kwargs) self.inventory_type = 'Cluster' # type: str @@ -221,10 +261,10 @@ class ClustersList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of Clusters. - :type next_link: str - :param value: Required. Array of Clusters. - :type value: list[~azure.mgmt.connectedvmware.models.Cluster] + :ivar next_link: Url to follow for getting next page of Clusters. + :vartype next_link: str + :ivar value: Required. Array of Clusters. + :vartype value: list[~azure.mgmt.connectedvmware.models.Cluster] """ _validation = { @@ -240,6 +280,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of Clusters. + :paramtype next_link: str + :keyword value: Required. Array of Clusters. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Cluster] + """ super(ClustersList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -278,6 +324,8 @@ def __init__( self, **kwargs ): + """ + """ super(Condition, self).__init__(**kwargs) self.status = None self.reason = None @@ -292,34 +340,34 @@ class Datastore(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this datastore + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this datastore resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the datastore. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the datastore. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the datastore. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the datastore. :vartype mo_name: str :ivar statuses: The resource status information. @@ -368,6 +416,26 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this datastore + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + datastore. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the datastore. + :paramtype inventory_item_id: str + """ super(Datastore, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -394,23 +462,23 @@ class DatastoreInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param capacity_gb: Gets or sets Maximum capacity of this datastore, in GBs. - :type capacity_gb: long - :param free_space_gb: Gets or sets Available space of this datastore, in GBs. - :type free_space_gb: long + :ivar capacity_gb: Gets or sets Maximum capacity of this datastore, in GBs. + :vartype capacity_gb: long + :ivar free_space_gb: Gets or sets Available space of this datastore, in GBs. + :vartype free_space_gb: long """ _validation = { @@ -432,6 +500,20 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword capacity_gb: Gets or sets Maximum capacity of this datastore, in GBs. + :paramtype capacity_gb: long + :keyword free_space_gb: Gets or sets Available space of this datastore, in GBs. + :paramtype free_space_gb: long + """ super(DatastoreInventoryItem, self).__init__(**kwargs) self.inventory_type = 'Datastore' # type: str self.capacity_gb = kwargs.get('capacity_gb', None) @@ -443,10 +525,10 @@ class DatastoresList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of Datastores. - :type next_link: str - :param value: Required. Array of Datastores. - :type value: list[~azure.mgmt.connectedvmware.models.Datastore] + :ivar next_link: Url to follow for getting next page of Datastores. + :vartype next_link: str + :ivar value: Required. Array of Datastores. + :vartype value: list[~azure.mgmt.connectedvmware.models.Datastore] """ _validation = { @@ -462,6 +544,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of Datastores. + :paramtype next_link: str + :keyword value: Required. Array of Datastores. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Datastore] + """ super(DatastoresList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -496,6 +584,8 @@ def __init__( self, **kwargs ): + """ + """ super(ErrorDefinition, self).__init__(**kwargs) self.code = None self.message = None @@ -507,14 +597,14 @@ class ErrorDetail(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param code: Required. The error's code. - :type code: str - :param message: Required. A human readable error message. - :type message: str - :param target: Indicates which property in the request is responsible for the error. - :type target: str - :param details: Additional error details. - :type details: list[~azure.mgmt.connectedvmware.models.ErrorDetail] + :ivar code: Required. The error's code. + :vartype code: str + :ivar message: Required. A human readable error message. + :vartype message: str + :ivar target: Indicates which property in the request is responsible for the error. + :vartype target: str + :ivar details: Additional error details. + :vartype details: list[~azure.mgmt.connectedvmware.models.ErrorDetail] """ _validation = { @@ -533,6 +623,16 @@ def __init__( self, **kwargs ): + """ + :keyword code: Required. The error's code. + :paramtype code: str + :keyword message: Required. A human readable error message. + :paramtype message: str + :keyword target: Indicates which property in the request is responsible for the error. + :paramtype target: str + :keyword details: Additional error details. + :paramtype details: list[~azure.mgmt.connectedvmware.models.ErrorDetail] + """ super(ErrorDetail, self).__init__(**kwargs) self.code = kwargs['code'] self.message = kwargs['message'] @@ -543,8 +643,8 @@ def __init__( class ErrorResponse(msrest.serialization.Model): """Error response. - :param error: The error details. - :type error: ~azure.mgmt.connectedvmware.models.ErrorDefinition + :ivar error: The error details. + :vartype error: ~azure.mgmt.connectedvmware.models.ErrorDefinition """ _attribute_map = { @@ -555,6 +655,10 @@ def __init__( self, **kwargs ): + """ + :keyword error: The error details. + :paramtype error: ~azure.mgmt.connectedvmware.models.ErrorDefinition + """ super(ErrorResponse, self).__init__(**kwargs) self.error = kwargs.get('error', None) @@ -562,10 +666,10 @@ def __init__( class ExtendedLocation(msrest.serialization.Model): """The extended location. - :param type: The extended location type. - :type type: str - :param name: The extended location name. - :type name: str + :ivar type: The extended location type. + :vartype type: str + :ivar name: The extended location name. + :vartype name: str """ _attribute_map = { @@ -577,6 +681,12 @@ def __init__( self, **kwargs ): + """ + :keyword type: The extended location type. + :paramtype type: str + :keyword name: The extended location name. + :paramtype name: str + """ super(ExtendedLocation, self).__init__(**kwargs) self.type = kwargs.get('type', None) self.name = kwargs.get('name', None) @@ -613,6 +723,8 @@ def __init__( self, **kwargs ): + """ + """ super(Resource, self).__init__(**kwargs) self.id = None self.name = None @@ -650,6 +762,8 @@ def __init__( self, **kwargs ): + """ + """ super(ProxyResource, self).__init__(**kwargs) @@ -670,13 +784,13 @@ class GuestAgent(ProxyResource): :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param credentials: Username / Password Credentials to provision guest agent. - :type credentials: ~azure.mgmt.connectedvmware.models.GuestCredential - :param http_proxy_config: HTTP Proxy configuration for the VM. - :type http_proxy_config: ~azure.mgmt.connectedvmware.models.HttpProxyConfiguration - :param provisioning_action: Gets or sets the guest agent provisioning action. Possible values + :ivar credentials: Username / Password Credentials to provision guest agent. + :vartype credentials: ~azure.mgmt.connectedvmware.models.GuestCredential + :ivar http_proxy_config: HTTP Proxy configuration for the VM. + :vartype http_proxy_config: ~azure.mgmt.connectedvmware.models.HttpProxyConfiguration + :ivar provisioning_action: Gets or sets the guest agent provisioning action. Possible values include: "install", "uninstall", "repair". - :type provisioning_action: str or ~azure.mgmt.connectedvmware.models.ProvisioningAction + :vartype provisioning_action: str or ~azure.mgmt.connectedvmware.models.ProvisioningAction :ivar status: Gets or sets the guest agent status. :vartype status: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. @@ -718,6 +832,15 @@ def __init__( self, **kwargs ): + """ + :keyword credentials: Username / Password Credentials to provision guest agent. + :paramtype credentials: ~azure.mgmt.connectedvmware.models.GuestCredential + :keyword http_proxy_config: HTTP Proxy configuration for the VM. + :paramtype http_proxy_config: ~azure.mgmt.connectedvmware.models.HttpProxyConfiguration + :keyword provisioning_action: Gets or sets the guest agent provisioning action. Possible values + include: "install", "uninstall", "repair". + :paramtype provisioning_action: str or ~azure.mgmt.connectedvmware.models.ProvisioningAction + """ super(GuestAgent, self).__init__(**kwargs) self.system_data = None self.uuid = None @@ -735,10 +858,10 @@ class GuestAgentList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of GuestAgent. - :type next_link: str - :param value: Required. Array of GuestAgent. - :type value: list[~azure.mgmt.connectedvmware.models.GuestAgent] + :ivar next_link: Url to follow for getting next page of GuestAgent. + :vartype next_link: str + :ivar value: Required. Array of GuestAgent. + :vartype value: list[~azure.mgmt.connectedvmware.models.GuestAgent] """ _validation = { @@ -754,6 +877,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of GuestAgent. + :paramtype next_link: str + :keyword value: Required. Array of GuestAgent. + :paramtype value: list[~azure.mgmt.connectedvmware.models.GuestAgent] + """ super(GuestAgentList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -797,6 +926,8 @@ def __init__( self, **kwargs ): + """ + """ super(GuestAgentProfile, self).__init__(**kwargs) self.vm_uuid = None self.status = None @@ -808,10 +939,10 @@ def __init__( class GuestCredential(msrest.serialization.Model): """Username / Password Credentials to connect to guest. - :param username: Gets or sets username to connect with the guest. - :type username: str - :param password: Gets or sets the password to connect with the guest. - :type password: str + :ivar username: Gets or sets username to connect with the guest. + :vartype username: str + :ivar password: Gets or sets the password to connect with the guest. + :vartype password: str """ _attribute_map = { @@ -823,6 +954,12 @@ def __init__( self, **kwargs ): + """ + :keyword username: Gets or sets username to connect with the guest. + :paramtype username: str + :keyword password: Gets or sets the password to connect with the guest. + :paramtype password: str + """ super(GuestCredential, self).__init__(**kwargs) self.username = kwargs.get('username', None) self.password = kwargs.get('password', None) @@ -833,13 +970,13 @@ class HardwareProfile(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param memory_size_mb: Gets or sets memory size in MBs for the vm. - :type memory_size_mb: int - :param num_cp_us: Gets or sets the number of vCPUs for the vm. - :type num_cp_us: int - :param num_cores_per_socket: Gets or sets the number of cores per socket for the vm. Defaults - to 1 if unspecified. - :type num_cores_per_socket: int + :ivar memory_size_mb: Gets or sets memory size in MBs for the vm. + :vartype memory_size_mb: int + :ivar num_cp_us: Gets or sets the number of vCPUs for the vm. + :vartype num_cp_us: int + :ivar num_cores_per_socket: Gets or sets the number of cores per socket for the vm. Defaults to + 1 if unspecified. + :vartype num_cores_per_socket: int :ivar cpu_hot_add_enabled: Gets or sets a value indicating whether virtual processors can be added while this virtual machine is running. :vartype cpu_hot_add_enabled: bool @@ -870,6 +1007,15 @@ def __init__( self, **kwargs ): + """ + :keyword memory_size_mb: Gets or sets memory size in MBs for the vm. + :paramtype memory_size_mb: int + :keyword num_cp_us: Gets or sets the number of vCPUs for the vm. + :paramtype num_cp_us: int + :keyword num_cores_per_socket: Gets or sets the number of cores per socket for the vm. Defaults + to 1 if unspecified. + :paramtype num_cores_per_socket: int + """ super(HardwareProfile, self).__init__(**kwargs) self.memory_size_mb = kwargs.get('memory_size_mb', None) self.num_cp_us = kwargs.get('num_cp_us', None) @@ -886,32 +1032,32 @@ class Host(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this host resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the host. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the host. - :type inventory_item_id: str + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this host resides. + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the host. + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the host. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the host. :vartype mo_name: str :ivar statuses: The resource status information. @@ -958,6 +1104,25 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this host + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the host. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the host. + :paramtype inventory_item_id: str + """ super(Host, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -984,21 +1149,21 @@ class HostInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param parent: Parent host inventory resource details. - :type parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar parent: Parent host inventory resource details. + :vartype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails """ _validation = { @@ -1019,6 +1184,18 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword parent: Parent host inventory resource details. + :paramtype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + """ super(HostInventoryItem, self).__init__(**kwargs) self.inventory_type = 'Host' # type: str self.parent = kwargs.get('parent', None) @@ -1029,10 +1206,10 @@ class HostsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of Hosts. - :type next_link: str - :param value: Required. Array of Hosts. - :type value: list[~azure.mgmt.connectedvmware.models.Host] + :ivar next_link: Url to follow for getting next page of Hosts. + :vartype next_link: str + :ivar value: Required. Array of Hosts. + :vartype value: list[~azure.mgmt.connectedvmware.models.Host] """ _validation = { @@ -1048,6 +1225,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of Hosts. + :paramtype next_link: str + :keyword value: Required. Array of Hosts. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Host] + """ super(HostsList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -1056,8 +1239,8 @@ def __init__( class HttpProxyConfiguration(msrest.serialization.Model): """HTTP Proxy configuration for the VM. - :param https_proxy: Gets or sets httpsProxy url. - :type https_proxy: str + :ivar https_proxy: Gets or sets httpsProxy url. + :vartype https_proxy: str """ _attribute_map = { @@ -1068,6 +1251,10 @@ def __init__( self, **kwargs ): + """ + :keyword https_proxy: Gets or sets httpsProxy url. + :paramtype https_proxy: str + """ super(HttpProxyConfiguration, self).__init__(**kwargs) self.https_proxy = kwargs.get('https_proxy', None) @@ -1087,10 +1274,10 @@ class HybridIdentityMetadata(ProxyResource): :vartype type: str :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param vm_id: Gets or sets the Vm Id. - :type vm_id: str - :param public_key: Gets or sets the Public Key. - :type public_key: str + :ivar vm_id: Gets or sets the Vm Id. + :vartype vm_id: str + :ivar public_key: Gets or sets the Public Key. + :vartype public_key: str :ivar identity: The identity of the resource. :vartype identity: ~azure.mgmt.connectedvmware.models.Identity :ivar provisioning_state: Gets or sets the provisioning state. @@ -1121,6 +1308,12 @@ def __init__( self, **kwargs ): + """ + :keyword vm_id: Gets or sets the Vm Id. + :paramtype vm_id: str + :keyword public_key: Gets or sets the Public Key. + :paramtype public_key: str + """ super(HybridIdentityMetadata, self).__init__(**kwargs) self.system_data = None self.vm_id = kwargs.get('vm_id', None) @@ -1134,10 +1327,10 @@ class HybridIdentityMetadataList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of HybridIdentityMetadata. - :type next_link: str - :param value: Required. Array of HybridIdentityMetadata. - :type value: list[~azure.mgmt.connectedvmware.models.HybridIdentityMetadata] + :ivar next_link: Url to follow for getting next page of HybridIdentityMetadata. + :vartype next_link: str + :ivar value: Required. Array of HybridIdentityMetadata. + :vartype value: list[~azure.mgmt.connectedvmware.models.HybridIdentityMetadata] """ _validation = { @@ -1153,6 +1346,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of HybridIdentityMetadata. + :paramtype next_link: str + :keyword value: Required. Array of HybridIdentityMetadata. + :paramtype value: list[~azure.mgmt.connectedvmware.models.HybridIdentityMetadata] + """ super(HybridIdentityMetadataList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -1169,9 +1368,9 @@ class Identity(msrest.serialization.Model): :vartype principal_id: str :ivar tenant_id: The tenant of managed service identity. :vartype tenant_id: str - :param type: Required. The type of managed service identity. Possible values include: "None", + :ivar type: Required. The type of managed service identity. Possible values include: "None", "SystemAssigned". - :type type: str or ~azure.mgmt.connectedvmware.models.IdentityType + :vartype type: str or ~azure.mgmt.connectedvmware.models.IdentityType """ _validation = { @@ -1190,6 +1389,11 @@ def __init__( self, **kwargs ): + """ + :keyword type: Required. The type of managed service identity. Possible values include: "None", + "SystemAssigned". + :paramtype type: str or ~azure.mgmt.connectedvmware.models.IdentityType + """ super(Identity, self).__init__(**kwargs) self.principal_id = None self.tenant_id = None @@ -1213,21 +1417,21 @@ class InventoryItem(ProxyResource): :vartype type: str :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :vartype kind: str + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -1258,6 +1462,20 @@ def __init__( self, **kwargs ): + """ + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(InventoryItem, self).__init__(**kwargs) self.system_data = None self.kind = kwargs.get('kind', None) @@ -1271,10 +1489,10 @@ def __init__( class InventoryItemDetails(msrest.serialization.Model): """Defines the resource properties. - :param inventory_item_id: Gets or sets the inventory Item ID for the resource. - :type inventory_item_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the resource. - :type mo_name: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the resource. + :vartype inventory_item_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the resource. + :vartype mo_name: str """ _attribute_map = { @@ -1286,6 +1504,12 @@ def __init__( self, **kwargs ): + """ + :keyword inventory_item_id: Gets or sets the inventory Item ID for the resource. + :paramtype inventory_item_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the resource. + :paramtype mo_name: str + """ super(InventoryItemDetails, self).__init__(**kwargs) self.inventory_item_id = kwargs.get('inventory_item_id', None) self.mo_name = kwargs.get('mo_name', None) @@ -1296,10 +1520,10 @@ class InventoryItemsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of InventoryItems. - :type next_link: str - :param value: Required. Array of InventoryItems. - :type value: list[~azure.mgmt.connectedvmware.models.InventoryItem] + :ivar next_link: Url to follow for getting next page of InventoryItems. + :vartype next_link: str + :ivar value: Required. Array of InventoryItems. + :vartype value: list[~azure.mgmt.connectedvmware.models.InventoryItem] """ _validation = { @@ -1315,6 +1539,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of InventoryItems. + :paramtype next_link: str + :keyword value: Required. Array of InventoryItems. + :paramtype value: list[~azure.mgmt.connectedvmware.models.InventoryItem] + """ super(InventoryItemsList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -1325,41 +1555,42 @@ class MachineExtension(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param location: Gets or sets the location. - :type location: str + :ivar location: Gets or sets the location. + :vartype location: str :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param force_update_tag: How the extension handler should be forced to update even if the + :ivar force_update_tag: How the extension handler should be forced to update even if the extension configuration has not changed. - :type force_update_tag: str - :param publisher: The name of the extension handler publisher. - :type publisher: str - :param type_properties_type: Specifies the type of the extension; an example is + :vartype force_update_tag: str + :ivar publisher: The name of the extension handler publisher. + :vartype publisher: str + :ivar type_properties_type: Specifies the type of the extension; an example is "CustomScriptExtension". - :type type_properties_type: str - :param type_handler_version: Specifies the version of the script handler. - :type type_handler_version: str - :param auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + :vartype type_properties_type: str + :ivar type_handler_version: Specifies the version of the script handler. + :vartype type_handler_version: str + :ivar auto_upgrade_minor_version: Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true. - :type auto_upgrade_minor_version: bool - :param settings: Json formatted public settings for the extension. - :type settings: any - :param protected_settings: The extension can contain either protectedSettings or + :vartype auto_upgrade_minor_version: bool + :ivar settings: Json formatted public settings for the extension. + :vartype settings: any + :ivar protected_settings: The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all. - :type protected_settings: any + :vartype protected_settings: any :ivar provisioning_state: The provisioning state, which only appears in the response. :vartype provisioning_state: str - :param instance_view: The machine extension instance view. - :type instance_view: ~azure.mgmt.connectedvmware.models.MachineExtensionPropertiesInstanceView + :ivar instance_view: The machine extension instance view. + :vartype instance_view: + ~azure.mgmt.connectedvmware.models.MachineExtensionPropertiesInstanceView """ _validation = { @@ -1392,6 +1623,34 @@ def __init__( self, **kwargs ): + """ + :keyword location: Gets or sets the location. + :paramtype location: str + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword force_update_tag: How the extension handler should be forced to update even if the + extension configuration has not changed. + :paramtype force_update_tag: str + :keyword publisher: The name of the extension handler publisher. + :paramtype publisher: str + :keyword type_properties_type: Specifies the type of the extension; an example is + "CustomScriptExtension". + :paramtype type_properties_type: str + :keyword type_handler_version: Specifies the version of the script handler. + :paramtype type_handler_version: str + :keyword auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + version if one is available at deployment time. Once deployed, however, the extension will not + upgrade minor versions unless redeployed, even with this property set to true. + :paramtype auto_upgrade_minor_version: bool + :keyword settings: Json formatted public settings for the extension. + :paramtype settings: any + :keyword protected_settings: The extension can contain either protectedSettings or + protectedSettingsFromKeyVault or no protected settings at all. + :paramtype protected_settings: any + :keyword instance_view: The machine extension instance view. + :paramtype instance_view: + ~azure.mgmt.connectedvmware.models.MachineExtensionPropertiesInstanceView + """ super(MachineExtension, self).__init__(**kwargs) self.location = kwargs.get('location', None) self.system_data = None @@ -1421,8 +1680,8 @@ class MachineExtensionInstanceView(msrest.serialization.Model): :vartype type: str :ivar type_handler_version: Specifies the version of the script handler. :vartype type_handler_version: str - :param status: Instance view status. - :type status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + :ivar status: Instance view status. + :vartype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus """ _validation = { @@ -1442,6 +1701,10 @@ def __init__( self, **kwargs ): + """ + :keyword status: Instance view status. + :paramtype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + """ super(MachineExtensionInstanceView, self).__init__(**kwargs) self.name = None self.type = None @@ -1486,6 +1749,8 @@ def __init__( self, **kwargs ): + """ + """ super(MachineExtensionInstanceViewStatus, self).__init__(**kwargs) self.code = None self.level = None @@ -1505,8 +1770,8 @@ class MachineExtensionPropertiesInstanceView(MachineExtensionInstanceView): :vartype type: str :ivar type_handler_version: Specifies the version of the script handler. :vartype type_handler_version: str - :param status: Instance view status. - :type status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + :ivar status: Instance view status. + :vartype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus """ _validation = { @@ -1526,17 +1791,21 @@ def __init__( self, **kwargs ): + """ + :keyword status: Instance view status. + :paramtype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + """ super(MachineExtensionPropertiesInstanceView, self).__init__(**kwargs) class MachineExtensionsListResult(msrest.serialization.Model): """Describes the Machine Extensions List Result. - :param value: The list of extensions. - :type value: list[~azure.mgmt.connectedvmware.models.MachineExtension] - :param next_link: The uri to fetch the next page of machine extensions. Call ListNext() with + :ivar value: The list of extensions. + :vartype value: list[~azure.mgmt.connectedvmware.models.MachineExtension] + :ivar next_link: The uri to fetch the next page of machine extensions. Call ListNext() with this to fetch the next page of extensions. - :type next_link: str + :vartype next_link: str """ _attribute_map = { @@ -1548,6 +1817,13 @@ def __init__( self, **kwargs ): + """ + :keyword value: The list of extensions. + :paramtype value: list[~azure.mgmt.connectedvmware.models.MachineExtension] + :keyword next_link: The uri to fetch the next page of machine extensions. Call ListNext() with + this to fetch the next page of extensions. + :paramtype next_link: str + """ super(MachineExtensionsListResult, self).__init__(**kwargs) self.value = kwargs.get('value', None) self.next_link = kwargs.get('next_link', None) @@ -1556,8 +1832,8 @@ def __init__( class ResourcePatch(msrest.serialization.Model): """Object containing updates for patch operations. - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] """ _attribute_map = { @@ -1568,6 +1844,10 @@ def __init__( self, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ super(ResourcePatch, self).__init__(**kwargs) self.tags = kwargs.get('tags', None) @@ -1575,26 +1855,26 @@ def __init__( class MachineExtensionUpdate(ResourcePatch): """Describes a Machine Extension Update. - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] - :param force_update_tag: How the extension handler should be forced to update even if the + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar force_update_tag: How the extension handler should be forced to update even if the extension configuration has not changed. - :type force_update_tag: str - :param publisher: The name of the extension handler publisher. - :type publisher: str - :param type: Specifies the type of the extension; an example is "CustomScriptExtension". - :type type: str - :param type_handler_version: Specifies the version of the script handler. - :type type_handler_version: str - :param auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + :vartype force_update_tag: str + :ivar publisher: The name of the extension handler publisher. + :vartype publisher: str + :ivar type: Specifies the type of the extension; an example is "CustomScriptExtension". + :vartype type: str + :ivar type_handler_version: Specifies the version of the script handler. + :vartype type_handler_version: str + :ivar auto_upgrade_minor_version: Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true. - :type auto_upgrade_minor_version: bool - :param settings: Json formatted public settings for the extension. - :type settings: any - :param protected_settings: The extension can contain either protectedSettings or + :vartype auto_upgrade_minor_version: bool + :ivar settings: Json formatted public settings for the extension. + :vartype settings: any + :ivar protected_settings: The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all. - :type protected_settings: any + :vartype protected_settings: any """ _attribute_map = { @@ -1612,6 +1892,28 @@ def __init__( self, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword force_update_tag: How the extension handler should be forced to update even if the + extension configuration has not changed. + :paramtype force_update_tag: str + :keyword publisher: The name of the extension handler publisher. + :paramtype publisher: str + :keyword type: Specifies the type of the extension; an example is "CustomScriptExtension". + :paramtype type: str + :keyword type_handler_version: Specifies the version of the script handler. + :paramtype type_handler_version: str + :keyword auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + version if one is available at deployment time. Once deployed, however, the extension will not + upgrade minor versions unless redeployed, even with this property set to true. + :paramtype auto_upgrade_minor_version: bool + :keyword settings: Json formatted public settings for the extension. + :paramtype settings: any + :keyword protected_settings: The extension can contain either protectedSettings or + protectedSettingsFromKeyVault or no protected settings at all. + :paramtype protected_settings: any + """ super(MachineExtensionUpdate, self).__init__(**kwargs) self.force_update_tag = kwargs.get('force_update_tag', None) self.publisher = kwargs.get('publisher', None) @@ -1627,8 +1929,8 @@ class NetworkInterface(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param name: Gets or sets the name of the network interface. - :type name: str + :ivar name: Gets or sets the name of the network interface. + :vartype name: str :ivar label: Gets or sets the label of the virtual network in vCenter that the nic is connected to. :vartype label: str @@ -1636,15 +1938,15 @@ class NetworkInterface(msrest.serialization.Model): :vartype ip_addresses: list[str] :ivar mac_address: Gets or sets the NIC MAC address. :vartype mac_address: str - :param network_id: Gets or sets the ARM Id of the network resource to connect the virtual + :ivar network_id: Gets or sets the ARM Id of the network resource to connect the virtual machine. - :type network_id: str - :param nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + :vartype network_id: str + :ivar nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", "e1000e", "pcnet32". - :type nic_type: str or ~azure.mgmt.connectedvmware.models.NICType - :param power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + :vartype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :ivar power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", "disabled". - :type power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :vartype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption :ivar network_mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID of the virtual network that the nic is connected to. @@ -1652,10 +1954,10 @@ class NetworkInterface(msrest.serialization.Model): :ivar network_mo_name: Gets or sets the name of the virtual network in vCenter that the nic is connected to. :vartype network_mo_name: str - :param device_key: Gets or sets the device key value. - :type device_key: int - :param ip_settings: Gets or sets the ipsettings. - :type ip_settings: ~azure.mgmt.connectedvmware.models.NicIPSettings + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int + :ivar ip_settings: Gets or sets the ipsettings. + :vartype ip_settings: ~azure.mgmt.connectedvmware.models.NicIPSettings """ _validation = { @@ -1684,6 +1986,23 @@ def __init__( self, **kwargs ): + """ + :keyword name: Gets or sets the name of the network interface. + :paramtype name: str + :keyword network_id: Gets or sets the ARM Id of the network resource to connect the virtual + machine. + :paramtype network_id: str + :keyword nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + "e1000e", "pcnet32". + :paramtype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :keyword power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + "disabled". + :paramtype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + :keyword ip_settings: Gets or sets the ipsettings. + :paramtype ip_settings: ~azure.mgmt.connectedvmware.models.NicIPSettings + """ super(NetworkInterface, self).__init__(**kwargs) self.name = kwargs.get('name', None) self.label = None @@ -1701,19 +2020,19 @@ def __init__( class NetworkInterfaceUpdate(msrest.serialization.Model): """Defines the network interface update. - :param name: Gets or sets the name of the network interface. - :type name: str - :param network_id: Gets or sets the ARM Id of the network resource to connect the virtual + :ivar name: Gets or sets the name of the network interface. + :vartype name: str + :ivar network_id: Gets or sets the ARM Id of the network resource to connect the virtual machine. - :type network_id: str - :param nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + :vartype network_id: str + :ivar nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", "e1000e", "pcnet32". - :type nic_type: str or ~azure.mgmt.connectedvmware.models.NICType - :param power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + :vartype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :ivar power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", "disabled". - :type power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption - :param device_key: Gets or sets the device key value. - :type device_key: int + :vartype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int """ _attribute_map = { @@ -1728,6 +2047,21 @@ def __init__( self, **kwargs ): + """ + :keyword name: Gets or sets the name of the network interface. + :paramtype name: str + :keyword network_id: Gets or sets the ARM Id of the network resource to connect the virtual + machine. + :paramtype network_id: str + :keyword nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + "e1000e", "pcnet32". + :paramtype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :keyword power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + "disabled". + :paramtype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + """ super(NetworkInterfaceUpdate, self).__init__(**kwargs) self.name = kwargs.get('name', None) self.network_id = kwargs.get('network_id', None) @@ -1739,9 +2073,9 @@ def __init__( class NetworkProfile(msrest.serialization.Model): """Defines the resource properties. - :param network_interfaces: Gets or sets the list of network interfaces associated with the + :ivar network_interfaces: Gets or sets the list of network interfaces associated with the virtual machine. - :type network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterface] + :vartype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterface] """ _attribute_map = { @@ -1752,6 +2086,11 @@ def __init__( self, **kwargs ): + """ + :keyword network_interfaces: Gets or sets the list of network interfaces associated with the + virtual machine. + :paramtype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterface] + """ super(NetworkProfile, self).__init__(**kwargs) self.network_interfaces = kwargs.get('network_interfaces', None) @@ -1759,9 +2098,9 @@ def __init__( class NetworkProfileUpdate(msrest.serialization.Model): """Defines the update resource properties. - :param network_interfaces: Gets or sets the list of network interfaces associated with the + :ivar network_interfaces: Gets or sets the list of network interfaces associated with the virtual machine. - :type network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterfaceUpdate] + :vartype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterfaceUpdate] """ _attribute_map = { @@ -1772,6 +2111,11 @@ def __init__( self, **kwargs ): + """ + :keyword network_interfaces: Gets or sets the list of network interfaces associated with the + virtual machine. + :paramtype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterfaceUpdate] + """ super(NetworkProfileUpdate, self).__init__(**kwargs) self.network_interfaces = kwargs.get('network_interfaces', None) @@ -1805,6 +2149,8 @@ def __init__( self, **kwargs ): + """ + """ super(NicIPAddressSettings, self).__init__(**kwargs) self.allocation_method = None self.ip_address = None @@ -1816,17 +2162,17 @@ class NicIPSettings(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param allocation_method: Gets or sets the nic allocation method. Possible values include: + :ivar allocation_method: Gets or sets the nic allocation method. Possible values include: "unset", "dynamic", "static", "linklayer", "random", "other". - :type allocation_method: str or ~azure.mgmt.connectedvmware.models.IPAddressAllocationMethod - :param dns_servers: Gets or sets the dns servers. - :type dns_servers: list[str] - :param gateway: Gets or sets the gateway. - :type gateway: list[str] - :param ip_address: Gets or sets the ip address for the nic. - :type ip_address: str - :param subnet_mask: Gets or sets the mask. - :type subnet_mask: str + :vartype allocation_method: str or ~azure.mgmt.connectedvmware.models.IPAddressAllocationMethod + :ivar dns_servers: Gets or sets the dns servers. + :vartype dns_servers: list[str] + :ivar gateway: Gets or sets the gateway. + :vartype gateway: list[str] + :ivar ip_address: Gets or sets the ip address for the nic. + :vartype ip_address: str + :ivar subnet_mask: Gets or sets the mask. + :vartype subnet_mask: str :ivar primary_wins_server: Gets or sets the primary server. :vartype primary_wins_server: str :ivar secondary_wins_server: Gets or sets the secondary server. @@ -1857,6 +2203,20 @@ def __init__( self, **kwargs ): + """ + :keyword allocation_method: Gets or sets the nic allocation method. Possible values include: + "unset", "dynamic", "static", "linklayer", "random", "other". + :paramtype allocation_method: str or + ~azure.mgmt.connectedvmware.models.IPAddressAllocationMethod + :keyword dns_servers: Gets or sets the dns servers. + :paramtype dns_servers: list[str] + :keyword gateway: Gets or sets the gateway. + :paramtype gateway: list[str] + :keyword ip_address: Gets or sets the ip address for the nic. + :paramtype ip_address: str + :keyword subnet_mask: Gets or sets the mask. + :paramtype subnet_mask: str + """ super(NicIPSettings, self).__init__(**kwargs) self.allocation_method = kwargs.get('allocation_method', None) self.dns_servers = kwargs.get('dns_servers', None) @@ -1871,12 +2231,12 @@ def __init__( class Operation(msrest.serialization.Model): """Operation provided by provider. - :param name: Name of the operation. - :type name: str - :param is_data_action: Indicates whether the operation is data action or not. - :type is_data_action: bool - :param display: Properties of the operation. - :type display: ~azure.mgmt.connectedvmware.models.OperationDisplay + :ivar name: Name of the operation. + :vartype name: str + :ivar is_data_action: Indicates whether the operation is data action or not. + :vartype is_data_action: bool + :ivar display: Properties of the operation. + :vartype display: ~azure.mgmt.connectedvmware.models.OperationDisplay """ _attribute_map = { @@ -1889,6 +2249,14 @@ def __init__( self, **kwargs ): + """ + :keyword name: Name of the operation. + :paramtype name: str + :keyword is_data_action: Indicates whether the operation is data action or not. + :paramtype is_data_action: bool + :keyword display: Properties of the operation. + :paramtype display: ~azure.mgmt.connectedvmware.models.OperationDisplay + """ super(Operation, self).__init__(**kwargs) self.name = kwargs.get('name', None) self.is_data_action = kwargs.get('is_data_action', None) @@ -1898,14 +2266,14 @@ def __init__( class OperationDisplay(msrest.serialization.Model): """Properties of the operation. - :param provider: Provider name. - :type provider: str - :param resource: Resource name. - :type resource: str - :param operation: Operation name. - :type operation: str - :param description: Description of the operation. - :type description: str + :ivar provider: Provider name. + :vartype provider: str + :ivar resource: Resource name. + :vartype resource: str + :ivar operation: Operation name. + :vartype operation: str + :ivar description: Description of the operation. + :vartype description: str """ _attribute_map = { @@ -1919,6 +2287,16 @@ def __init__( self, **kwargs ): + """ + :keyword provider: Provider name. + :paramtype provider: str + :keyword resource: Resource name. + :paramtype resource: str + :keyword operation: Operation name. + :paramtype operation: str + :keyword description: Description of the operation. + :paramtype description: str + """ super(OperationDisplay, self).__init__(**kwargs) self.provider = kwargs.get('provider', None) self.resource = kwargs.get('resource', None) @@ -1931,10 +2309,10 @@ class OperationsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of operations. - :type next_link: str - :param value: Required. Array of operations. - :type value: list[~azure.mgmt.connectedvmware.models.Operation] + :ivar next_link: Url to follow for getting next page of operations. + :vartype next_link: str + :ivar value: Required. Array of operations. + :vartype value: list[~azure.mgmt.connectedvmware.models.Operation] """ _validation = { @@ -1950,6 +2328,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of operations. + :paramtype next_link: str + :keyword value: Required. Array of operations. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Operation] + """ super(OperationsList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -1960,15 +2344,15 @@ class OsProfile(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param computer_name: Gets or sets computer name. - :type computer_name: str - :param admin_username: Gets or sets administrator username. - :type admin_username: str - :param admin_password: Gets or sets administrator password. - :type admin_password: str - :param os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + :ivar computer_name: Gets or sets computer name. + :vartype computer_name: str + :ivar admin_username: Gets or sets administrator username. + :vartype admin_username: str + :ivar admin_password: Gets or sets administrator password. + :vartype admin_password: str + :ivar os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", "Other". - :type os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :vartype os_type: str or ~azure.mgmt.connectedvmware.models.OsType :ivar os_name: Gets or sets os name. :vartype os_name: str :ivar tools_running_status: Gets or sets the current running status of VMware Tools running in @@ -2003,6 +2387,17 @@ def __init__( self, **kwargs ): + """ + :keyword computer_name: Gets or sets computer name. + :paramtype computer_name: str + :keyword admin_username: Gets or sets administrator username. + :paramtype admin_username: str + :keyword admin_password: Gets or sets administrator password. + :paramtype admin_password: str + :keyword os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + "Other". + :paramtype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + """ super(OsProfile, self).__init__(**kwargs) self.computer_name = kwargs.get('computer_name', None) self.admin_username = kwargs.get('admin_username', None) @@ -2017,18 +2412,18 @@ def __init__( class PlacementProfile(msrest.serialization.Model): """Defines the resource properties. - :param resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + :ivar resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this virtual machine will deploy. - :type resource_pool_id: str - :param cluster_id: Gets or sets the ARM Id of the cluster resource on which this virtual - machine will deploy. - :type cluster_id: str - :param host_id: Gets or sets the ARM Id of the host resource on which this virtual machine will + :vartype resource_pool_id: str + :ivar cluster_id: Gets or sets the ARM Id of the cluster resource on which this virtual machine + will deploy. + :vartype cluster_id: str + :ivar host_id: Gets or sets the ARM Id of the host resource on which this virtual machine will deploy. - :type host_id: str - :param datastore_id: Gets or sets the ARM Id of the datastore resource on which the data for - the virtual machine will be kept. - :type datastore_id: str + :vartype host_id: str + :ivar datastore_id: Gets or sets the ARM Id of the datastore resource on which the data for the + virtual machine will be kept. + :vartype datastore_id: str """ _attribute_map = { @@ -2042,6 +2437,20 @@ def __init__( self, **kwargs ): + """ + :keyword resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + virtual machine will deploy. + :paramtype resource_pool_id: str + :keyword cluster_id: Gets or sets the ARM Id of the cluster resource on which this virtual + machine will deploy. + :paramtype cluster_id: str + :keyword host_id: Gets or sets the ARM Id of the host resource on which this virtual machine + will deploy. + :paramtype host_id: str + :keyword datastore_id: Gets or sets the ARM Id of the datastore resource on which the data for + the virtual machine will be kept. + :paramtype datastore_id: str + """ super(PlacementProfile, self).__init__(**kwargs) self.resource_pool_id = kwargs.get('resource_pool_id', None) self.cluster_id = kwargs.get('cluster_id', None) @@ -2056,34 +2465,34 @@ class ResourcePool(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the resource + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the resource pool. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the resource pool. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the resource pool. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the resource pool. :vartype mo_name: str :ivar cpu_shares_level: Gets or sets CPUSharesLevel which specifies the CPU allocation level @@ -2164,6 +2573,26 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource + pool resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + resource pool. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the resource pool. + :paramtype inventory_item_id: str + """ super(ResourcePool, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -2196,21 +2625,21 @@ class ResourcePoolInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param parent: Parent resourcePool inventory resource details. - :type parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar parent: Parent resourcePool inventory resource details. + :vartype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails """ _validation = { @@ -2231,6 +2660,18 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword parent: Parent resourcePool inventory resource details. + :paramtype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + """ super(ResourcePoolInventoryItem, self).__init__(**kwargs) self.inventory_type = 'ResourcePool' # type: str self.parent = kwargs.get('parent', None) @@ -2241,10 +2682,10 @@ class ResourcePoolsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of ResourcePools. - :type next_link: str - :param value: Required. Array of ResourcePools. - :type value: list[~azure.mgmt.connectedvmware.models.ResourcePool] + :ivar next_link: Url to follow for getting next page of ResourcePools. + :vartype next_link: str + :ivar value: Required. Array of ResourcePools. + :vartype value: list[~azure.mgmt.connectedvmware.models.ResourcePool] """ _validation = { @@ -2260,6 +2701,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of ResourcePools. + :paramtype next_link: str + :keyword value: Required. Array of ResourcePools. + :paramtype value: list[~azure.mgmt.connectedvmware.models.ResourcePool] + """ super(ResourcePoolsList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -2306,6 +2753,8 @@ def __init__( self, **kwargs ): + """ + """ super(ResourceStatus, self).__init__(**kwargs) self.type = None self.status = None @@ -2318,10 +2767,10 @@ def __init__( class StopVirtualMachineOptions(msrest.serialization.Model): """Defines the stop action properties. - :param skip_shutdown: Gets or sets a value indicating whether to request non-graceful VM + :ivar skip_shutdown: Gets or sets a value indicating whether to request non-graceful VM shutdown. True value for this flag indicates non-graceful shutdown whereas false indicates otherwise. Defaults to false. - :type skip_shutdown: bool + :vartype skip_shutdown: bool """ _attribute_map = { @@ -2332,6 +2781,12 @@ def __init__( self, **kwargs ): + """ + :keyword skip_shutdown: Gets or sets a value indicating whether to request non-graceful VM + shutdown. True value for this flag indicates non-graceful shutdown whereas false indicates + otherwise. Defaults to false. + :paramtype skip_shutdown: bool + """ super(StopVirtualMachineOptions, self).__init__(**kwargs) self.skip_shutdown = kwargs.get('skip_shutdown', False) @@ -2341,8 +2796,8 @@ class StorageProfile(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param disks: Gets or sets the list of virtual disks associated with the virtual machine. - :type disks: list[~azure.mgmt.connectedvmware.models.VirtualDisk] + :ivar disks: Gets or sets the list of virtual disks associated with the virtual machine. + :vartype disks: list[~azure.mgmt.connectedvmware.models.VirtualDisk] :ivar scsi_controllers: Gets or sets the list of virtual SCSI controllers associated with the virtual machine. :vartype scsi_controllers: list[~azure.mgmt.connectedvmware.models.VirtualSCSIController] @@ -2361,6 +2816,10 @@ def __init__( self, **kwargs ): + """ + :keyword disks: Gets or sets the list of virtual disks associated with the virtual machine. + :paramtype disks: list[~azure.mgmt.connectedvmware.models.VirtualDisk] + """ super(StorageProfile, self).__init__(**kwargs) self.disks = kwargs.get('disks', None) self.scsi_controllers = None @@ -2369,8 +2828,8 @@ def __init__( class StorageProfileUpdate(msrest.serialization.Model): """Defines the resource update properties. - :param disks: Gets or sets the list of virtual disks associated with the virtual machine. - :type disks: list[~azure.mgmt.connectedvmware.models.VirtualDiskUpdate] + :ivar disks: Gets or sets the list of virtual disks associated with the virtual machine. + :vartype disks: list[~azure.mgmt.connectedvmware.models.VirtualDiskUpdate] """ _attribute_map = { @@ -2381,6 +2840,10 @@ def __init__( self, **kwargs ): + """ + :keyword disks: Gets or sets the list of virtual disks associated with the virtual machine. + :paramtype disks: list[~azure.mgmt.connectedvmware.models.VirtualDiskUpdate] + """ super(StorageProfileUpdate, self).__init__(**kwargs) self.disks = kwargs.get('disks', None) @@ -2388,20 +2851,20 @@ def __init__( class SystemData(msrest.serialization.Model): """Metadata pertaining to creation and last modification of the resource. - :param created_by: The identity that created the resource. - :type created_by: str - :param created_by_type: The type of identity that created the resource. Possible values - include: "User", "Application", "ManagedIdentity", "Key". - :type created_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType - :param created_at: The timestamp of resource creation (UTC). - :type created_at: ~datetime.datetime - :param last_modified_by: The identity that last modified the resource. - :type last_modified_by: str - :param last_modified_by_type: The type of identity that last modified the resource. Possible + :ivar created_by: The identity that created the resource. + :vartype created_by: str + :ivar created_by_type: The type of identity that created the resource. Possible values include: + "User", "Application", "ManagedIdentity", "Key". + :vartype created_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :ivar created_at: The timestamp of resource creation (UTC). + :vartype created_at: ~datetime.datetime + :ivar last_modified_by: The identity that last modified the resource. + :vartype last_modified_by: str + :ivar last_modified_by_type: The type of identity that last modified the resource. Possible values include: "User", "Application", "ManagedIdentity", "Key". - :type last_modified_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType - :param last_modified_at: The timestamp of resource last modification (UTC). - :type last_modified_at: ~datetime.datetime + :vartype last_modified_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :ivar last_modified_at: The timestamp of resource last modification (UTC). + :vartype last_modified_at: ~datetime.datetime """ _attribute_map = { @@ -2417,6 +2880,22 @@ def __init__( self, **kwargs ): + """ + :keyword created_by: The identity that created the resource. + :paramtype created_by: str + :keyword created_by_type: The type of identity that created the resource. Possible values + include: "User", "Application", "ManagedIdentity", "Key". + :paramtype created_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :keyword created_at: The timestamp of resource creation (UTC). + :paramtype created_at: ~datetime.datetime + :keyword last_modified_by: The identity that last modified the resource. + :paramtype last_modified_by: str + :keyword last_modified_by_type: The type of identity that last modified the resource. Possible + values include: "User", "Application", "ManagedIdentity", "Key". + :paramtype last_modified_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :keyword last_modified_at: The timestamp of resource last modification (UTC). + :paramtype last_modified_at: ~datetime.datetime + """ super(SystemData, self).__init__(**kwargs) self.created_by = kwargs.get('created_by', None) self.created_by_type = kwargs.get('created_by_type', None) @@ -2433,30 +2912,30 @@ class VCenter(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param fqdn: Required. Gets or sets the FQDN/IPAddress of the vCenter. - :type fqdn: str - :param port: Gets or sets the port of the vCenter. - :type port: int + :ivar fqdn: Required. Gets or sets the FQDN/IPAddress of the vCenter. + :vartype fqdn: str + :ivar port: Gets or sets the port of the vCenter. + :vartype port: int :ivar version: Gets or sets the version of the vCenter. :vartype version: str :ivar instance_uuid: Gets or sets the instance UUID of the vCenter. @@ -2465,8 +2944,8 @@ class VCenter(msrest.serialization.Model): :vartype connection_status: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. :vartype custom_resource_name: str - :param credentials: Username / Password Credentials to connect to vcenter. - :type credentials: ~azure.mgmt.connectedvmware.models.VICredential + :ivar credentials: Username / Password Credentials to connect to vcenter. + :vartype credentials: ~azure.mgmt.connectedvmware.models.VICredential :ivar statuses: The resource status information. :vartype statuses: list[~azure.mgmt.connectedvmware.models.ResourceStatus] :ivar provisioning_state: Gets or sets the provisioning state. @@ -2515,6 +2994,24 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword fqdn: Required. Gets or sets the FQDN/IPAddress of the vCenter. + :paramtype fqdn: str + :keyword port: Gets or sets the port of the vCenter. + :paramtype port: int + :keyword credentials: Username / Password Credentials to connect to vcenter. + :paramtype credentials: ~azure.mgmt.connectedvmware.models.VICredential + """ super(VCenter, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -2541,10 +3038,10 @@ class VCentersList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VCenters. - :type next_link: str - :param value: Required. Array of VCenters. - :type value: list[~azure.mgmt.connectedvmware.models.VCenter] + :ivar next_link: Url to follow for getting next page of VCenters. + :vartype next_link: str + :ivar value: Required. Array of VCenters. + :vartype value: list[~azure.mgmt.connectedvmware.models.VCenter] """ _validation = { @@ -2560,6 +3057,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VCenters. + :paramtype next_link: str + :keyword value: Required. Array of VCenters. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VCenter] + """ super(VCentersList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -2568,10 +3071,10 @@ def __init__( class VICredential(msrest.serialization.Model): """Username / Password Credentials to connect to vcenter. - :param username: Gets or sets username to connect with the vCenter. - :type username: str - :param password: Gets or sets the password to connect with the vCenter. - :type password: str + :ivar username: Gets or sets username to connect with the vCenter. + :vartype username: str + :ivar password: Gets or sets the password to connect with the vCenter. + :vartype password: str """ _attribute_map = { @@ -2583,6 +3086,12 @@ def __init__( self, **kwargs ): + """ + :keyword username: Gets or sets username to connect with the vCenter. + :paramtype username: str + :keyword password: Gets or sets the password to connect with the vCenter. + :paramtype password: str + """ super(VICredential, self).__init__(**kwargs) self.username = kwargs.get('username', None) self.password = kwargs.get('password', None) @@ -2593,28 +3102,28 @@ class VirtualDisk(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param name: Gets or sets the name of the virtual disk. - :type name: str + :ivar name: Gets or sets the name of the virtual disk. + :vartype name: str :ivar label: Gets or sets the label of the virtual disk in vCenter. :vartype label: str :ivar disk_object_id: Gets or sets the disk object id. :vartype disk_object_id: str - :param disk_size_gb: Gets or sets the disk total size. - :type disk_size_gb: int - :param device_key: Gets or sets the device key value. - :type device_key: int - :param disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + :ivar disk_size_gb: Gets or sets the disk total size. + :vartype disk_size_gb: int + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int + :ivar disk_mode: Gets or sets the disk mode. Possible values include: "persistent", "independent_persistent", "independent_nonpersistent". - :type disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode - :param controller_key: Gets or sets the controller id. - :type controller_key: int - :param unit_number: Gets or sets the unit number of the disk on the controller. - :type unit_number: int - :param device_name: Gets or sets the device name. - :type device_name: str - :param disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", + :vartype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :ivar controller_key: Gets or sets the controller id. + :vartype controller_key: int + :ivar unit_number: Gets or sets the unit number of the disk on the controller. + :vartype unit_number: int + :ivar device_name: Gets or sets the device name. + :vartype device_name: str + :ivar disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". - :type disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + :vartype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType """ _validation = { @@ -2639,6 +3148,26 @@ def __init__( self, **kwargs ): + """ + :keyword name: Gets or sets the name of the virtual disk. + :paramtype name: str + :keyword disk_size_gb: Gets or sets the disk total size. + :paramtype disk_size_gb: int + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + :keyword disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + "independent_persistent", "independent_nonpersistent". + :paramtype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :keyword controller_key: Gets or sets the controller id. + :paramtype controller_key: int + :keyword unit_number: Gets or sets the unit number of the disk on the controller. + :paramtype unit_number: int + :keyword device_name: Gets or sets the device name. + :paramtype device_name: str + :keyword disk_type: Gets or sets the disk backing type. Possible values include: "flat", + "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". + :paramtype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + """ super(VirtualDisk, self).__init__(**kwargs) self.name = kwargs.get('name', None) self.label = None @@ -2655,24 +3184,24 @@ def __init__( class VirtualDiskUpdate(msrest.serialization.Model): """Defines the virtual disk update. - :param name: Gets or sets the name of the virtual disk. - :type name: str - :param disk_size_gb: Gets or sets the disk total size. - :type disk_size_gb: int - :param device_key: Gets or sets the device key value. - :type device_key: int - :param disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + :ivar name: Gets or sets the name of the virtual disk. + :vartype name: str + :ivar disk_size_gb: Gets or sets the disk total size. + :vartype disk_size_gb: int + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int + :ivar disk_mode: Gets or sets the disk mode. Possible values include: "persistent", "independent_persistent", "independent_nonpersistent". - :type disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode - :param controller_key: Gets or sets the controller id. - :type controller_key: int - :param unit_number: Gets or sets the unit number of the disk on the controller. - :type unit_number: int - :param device_name: Gets or sets the device name. - :type device_name: str - :param disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", + :vartype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :ivar controller_key: Gets or sets the controller id. + :vartype controller_key: int + :ivar unit_number: Gets or sets the unit number of the disk on the controller. + :vartype unit_number: int + :ivar device_name: Gets or sets the device name. + :vartype device_name: str + :ivar disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". - :type disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + :vartype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType """ _attribute_map = { @@ -2690,6 +3219,26 @@ def __init__( self, **kwargs ): + """ + :keyword name: Gets or sets the name of the virtual disk. + :paramtype name: str + :keyword disk_size_gb: Gets or sets the disk total size. + :paramtype disk_size_gb: int + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + :keyword disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + "independent_persistent", "independent_nonpersistent". + :paramtype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :keyword controller_key: Gets or sets the controller id. + :paramtype controller_key: int + :keyword unit_number: Gets or sets the unit number of the disk on the controller. + :paramtype unit_number: int + :keyword device_name: Gets or sets the device name. + :paramtype device_name: str + :keyword disk_type: Gets or sets the disk backing type. Possible values include: "flat", + "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". + :paramtype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + """ super(VirtualDiskUpdate, self).__init__(**kwargs) self.name = kwargs.get('name', None) self.disk_size_gb = kwargs.get('disk_size_gb', None) @@ -2708,63 +3257,63 @@ class VirtualMachine(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str - :param identity: The identity of the resource. - :type identity: ~azure.mgmt.connectedvmware.models.Identity - :param resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + :vartype kind: str + :ivar identity: The identity of the resource. + :vartype identity: ~azure.mgmt.connectedvmware.models.Identity + :ivar resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this virtual machine will deploy. - :type resource_pool_id: str - :param template_id: Gets or sets the ARM Id of the template resource to deploy the virtual + :vartype resource_pool_id: str + :ivar template_id: Gets or sets the ARM Id of the template resource to deploy the virtual machine. - :type template_id: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool + :vartype template_id: str + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool resides. - :type v_center_id: str - :param placement_profile: Placement properties. - :type placement_profile: ~azure.mgmt.connectedvmware.models.PlacementProfile - :param os_profile: OS properties. - :type os_profile: ~azure.mgmt.connectedvmware.models.OsProfile - :param hardware_profile: Hardware properties. - :type hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile - :param network_profile: Network properties. - :type network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfile - :param storage_profile: Storage properties. - :type storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfile - :param guest_agent_profile: Guest agent status properties. - :type guest_agent_profile: ~azure.mgmt.connectedvmware.models.GuestAgentProfile - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual + :vartype v_center_id: str + :ivar placement_profile: Placement properties. + :vartype placement_profile: ~azure.mgmt.connectedvmware.models.PlacementProfile + :ivar os_profile: OS properties. + :vartype os_profile: ~azure.mgmt.connectedvmware.models.OsProfile + :ivar hardware_profile: Hardware properties. + :vartype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :ivar network_profile: Network properties. + :vartype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfile + :ivar storage_profile: Storage properties. + :vartype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfile + :ivar guest_agent_profile: Guest agent status properties. + :vartype guest_agent_profile: ~azure.mgmt.connectedvmware.models.GuestAgentProfile + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual machine. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the virtual machine. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the virtual machine. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the virtual machine. :vartype mo_name: str :ivar folder_path: Gets or sets the folder path of the vm. :vartype folder_path: str :ivar instance_uuid: Gets or sets the instance uuid of the vm. :vartype instance_uuid: str - :param smbios_uuid: Gets or sets the SMBIOS UUID of the vm. - :type smbios_uuid: str - :param firmware_type: Firmware type. Possible values include: "bios", "efi". - :type firmware_type: str or ~azure.mgmt.connectedvmware.models.FirmwareType + :ivar smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :vartype smbios_uuid: str + :ivar firmware_type: Firmware type. Possible values include: "bios", "efi". + :vartype firmware_type: str or ~azure.mgmt.connectedvmware.models.FirmwareType :ivar power_state: Gets the power state of the virtual machine. :vartype power_state: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. @@ -2834,6 +3383,51 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword identity: The identity of the resource. + :paramtype identity: ~azure.mgmt.connectedvmware.models.Identity + :keyword resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + virtual machine will + deploy. + :paramtype resource_pool_id: str + :keyword template_id: Gets or sets the ARM Id of the template resource to deploy the virtual + machine. + :paramtype template_id: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource + pool resides. + :paramtype v_center_id: str + :keyword placement_profile: Placement properties. + :paramtype placement_profile: ~azure.mgmt.connectedvmware.models.PlacementProfile + :keyword os_profile: OS properties. + :paramtype os_profile: ~azure.mgmt.connectedvmware.models.OsProfile + :keyword hardware_profile: Hardware properties. + :paramtype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :keyword network_profile: Network properties. + :paramtype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfile + :keyword storage_profile: Storage properties. + :paramtype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfile + :keyword guest_agent_profile: Guest agent status properties. + :paramtype guest_agent_profile: ~azure.mgmt.connectedvmware.models.GuestAgentProfile + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + virtual machine. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the virtual machine. + :paramtype inventory_item_id: str + :keyword smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :paramtype smbios_uuid: str + :keyword firmware_type: Firmware type. Possible values include: "bios", "efi". + :paramtype firmware_type: str or ~azure.mgmt.connectedvmware.models.FirmwareType + """ super(VirtualMachine, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -2875,36 +3469,36 @@ class VirtualMachineInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + :ivar os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", "Other". - :type os_type: str or ~azure.mgmt.connectedvmware.models.OsType - :param os_name: Gets or sets os name. - :type os_name: str - :param ip_addresses: Gets or sets the nic ip addresses. - :type ip_addresses: list[str] - :param folder_path: Gets or sets the folder path of the vm. - :type folder_path: str - :param host: Host inventory resource details. - :type host: ~azure.mgmt.connectedvmware.models.InventoryItemDetails - :param resource_pool: ResourcePool inventory resource details. - :type resource_pool: ~azure.mgmt.connectedvmware.models.InventoryItemDetails - :param instance_uuid: Gets or sets the instance uuid of the vm. - :type instance_uuid: str - :param smbios_uuid: Gets or sets the SMBIOS UUID of the vm. - :type smbios_uuid: str + :vartype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :ivar os_name: Gets or sets os name. + :vartype os_name: str + :ivar ip_addresses: Gets or sets the nic ip addresses. + :vartype ip_addresses: list[str] + :ivar folder_path: Gets or sets the folder path of the vm. + :vartype folder_path: str + :ivar host: Host inventory resource details. + :vartype host: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar resource_pool: ResourcePool inventory resource details. + :vartype resource_pool: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar instance_uuid: Gets or sets the instance uuid of the vm. + :vartype instance_uuid: str + :ivar smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :vartype smbios_uuid: str :ivar power_state: Gets the power state of the virtual machine. :vartype power_state: str :ivar tools_running_status: Gets or sets the current running status of VMware Tools running in @@ -2950,6 +3544,33 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + "Other". + :paramtype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :keyword os_name: Gets or sets os name. + :paramtype os_name: str + :keyword ip_addresses: Gets or sets the nic ip addresses. + :paramtype ip_addresses: list[str] + :keyword folder_path: Gets or sets the folder path of the vm. + :paramtype folder_path: str + :keyword host: Host inventory resource details. + :paramtype host: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :keyword resource_pool: ResourcePool inventory resource details. + :paramtype resource_pool: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :keyword instance_uuid: Gets or sets the instance uuid of the vm. + :paramtype instance_uuid: str + :keyword smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :paramtype smbios_uuid: str + """ super(VirtualMachineInventoryItem, self).__init__(**kwargs) self.inventory_type = 'VirtualMachine' # type: str self.os_type = kwargs.get('os_type', None) @@ -2971,10 +3592,10 @@ class VirtualMachinesList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VirtualMachines. - :type next_link: str - :param value: Required. Array of VirtualMachines. - :type value: list[~azure.mgmt.connectedvmware.models.VirtualMachine] + :ivar next_link: Url to follow for getting next page of VirtualMachines. + :vartype next_link: str + :ivar value: Required. Array of VirtualMachines. + :vartype value: list[~azure.mgmt.connectedvmware.models.VirtualMachine] """ _validation = { @@ -2990,6 +3611,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VirtualMachines. + :paramtype next_link: str + :keyword value: Required. Array of VirtualMachines. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VirtualMachine] + """ super(VirtualMachinesList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -3002,35 +3629,35 @@ class VirtualMachineTemplate(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual machine template. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the virtual machine template. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the virtual machine template. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the virtual machine template. :vartype mo_name: str :ivar memory_size_mb: Gets or sets memory size in MBs for the template. @@ -3124,6 +3751,28 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + virtual machine + template. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the virtual machine + template. + :paramtype inventory_item_id: str + """ super(VirtualMachineTemplate, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -3161,33 +3810,33 @@ class VirtualMachineTemplateInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param memory_size_mb: Gets or sets memory size in MBs for the template. - :type memory_size_mb: int - :param num_cp_us: Gets or sets the number of vCPUs for the template. - :type num_cp_us: int - :param num_cores_per_socket: Gets or sets the number of cores per socket for the template. + :ivar memory_size_mb: Gets or sets memory size in MBs for the template. + :vartype memory_size_mb: int + :ivar num_cp_us: Gets or sets the number of vCPUs for the template. + :vartype num_cp_us: int + :ivar num_cores_per_socket: Gets or sets the number of cores per socket for the template. Defaults to 1 if unspecified. - :type num_cores_per_socket: int - :param os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + :vartype num_cores_per_socket: int + :ivar os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", "Other". - :type os_type: str or ~azure.mgmt.connectedvmware.models.OsType - :param os_name: Gets or sets os name. - :type os_name: str - :param folder_path: Gets or sets the folder path of the template. - :type folder_path: str + :vartype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :ivar os_name: Gets or sets os name. + :vartype os_name: str + :ivar folder_path: Gets or sets the folder path of the template. + :vartype folder_path: str """ _validation = { @@ -3213,6 +3862,30 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword memory_size_mb: Gets or sets memory size in MBs for the template. + :paramtype memory_size_mb: int + :keyword num_cp_us: Gets or sets the number of vCPUs for the template. + :paramtype num_cp_us: int + :keyword num_cores_per_socket: Gets or sets the number of cores per socket for the template. + Defaults to 1 if unspecified. + :paramtype num_cores_per_socket: int + :keyword os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + "Other". + :paramtype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :keyword os_name: Gets or sets os name. + :paramtype os_name: str + :keyword folder_path: Gets or sets the folder path of the template. + :paramtype folder_path: str + """ super(VirtualMachineTemplateInventoryItem, self).__init__(**kwargs) self.inventory_type = 'VirtualMachineTemplate' # type: str self.memory_size_mb = kwargs.get('memory_size_mb', None) @@ -3228,10 +3901,10 @@ class VirtualMachineTemplatesList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VirtualMachineTemplates. - :type next_link: str - :param value: Required. Array of VirtualMachineTemplates. - :type value: list[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] + :ivar next_link: Url to follow for getting next page of VirtualMachineTemplates. + :vartype next_link: str + :ivar value: Required. Array of VirtualMachineTemplates. + :vartype value: list[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] """ _validation = { @@ -3247,6 +3920,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VirtualMachineTemplates. + :paramtype next_link: str + :keyword value: Required. Array of VirtualMachineTemplates. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] + """ super(VirtualMachineTemplatesList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -3255,16 +3934,16 @@ def __init__( class VirtualMachineUpdate(msrest.serialization.Model): """Defines the virtualMachineUpdate. - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] - :param identity: The identity of the resource. - :type identity: ~azure.mgmt.connectedvmware.models.Identity - :param hardware_profile: Defines the resource properties. - :type hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile - :param storage_profile: Defines the resource update properties. - :type storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfileUpdate - :param network_profile: Defines the update resource properties. - :type network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfileUpdate + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] + :ivar identity: The identity of the resource. + :vartype identity: ~azure.mgmt.connectedvmware.models.Identity + :ivar hardware_profile: Defines the resource properties. + :vartype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :ivar storage_profile: Defines the resource update properties. + :vartype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfileUpdate + :ivar network_profile: Defines the update resource properties. + :vartype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfileUpdate """ _attribute_map = { @@ -3279,6 +3958,18 @@ def __init__( self, **kwargs ): + """ + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword identity: The identity of the resource. + :paramtype identity: ~azure.mgmt.connectedvmware.models.Identity + :keyword hardware_profile: Defines the resource properties. + :paramtype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :keyword storage_profile: Defines the resource update properties. + :paramtype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfileUpdate + :keyword network_profile: Defines the update resource properties. + :paramtype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfileUpdate + """ super(VirtualMachineUpdate, self).__init__(**kwargs) self.tags = kwargs.get('tags', None) self.identity = kwargs.get('identity', None) @@ -3294,34 +3985,34 @@ class VirtualNetwork(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual network. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the virtual network. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the virtual network. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the virtual network. :vartype mo_name: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. @@ -3368,6 +4059,26 @@ def __init__( self, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + virtual network. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the virtual network. + :paramtype inventory_item_id: str + """ super(VirtualNetwork, self).__init__(**kwargs) self.location = kwargs['location'] self.extended_location = kwargs.get('extended_location', None) @@ -3394,17 +4105,17 @@ class VirtualNetworkInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -3426,6 +4137,16 @@ def __init__( self, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(VirtualNetworkInventoryItem, self).__init__(**kwargs) self.inventory_type = 'VirtualNetwork' # type: str @@ -3435,10 +4156,10 @@ class VirtualNetworksList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VirtualNetworks. - :type next_link: str - :param value: Required. Array of VirtualNetworks. - :type value: list[~azure.mgmt.connectedvmware.models.VirtualNetwork] + :ivar next_link: Url to follow for getting next page of VirtualNetworks. + :vartype next_link: str + :ivar value: Required. Array of VirtualNetworks. + :vartype value: list[~azure.mgmt.connectedvmware.models.VirtualNetwork] """ _validation = { @@ -3454,6 +4175,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VirtualNetworks. + :paramtype next_link: str + :keyword value: Required. Array of VirtualNetworks. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VirtualNetwork] + """ super(VirtualNetworksList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -3462,18 +4189,18 @@ def __init__( class VirtualSCSIController(msrest.serialization.Model): """This data object type contains the properties of a SCSI controller device attached to a virtual machine that is reported by the controller. - :param type: Gets or sets the controller type. Possible values include: "lsilogic", "buslogic", + :ivar type: Gets or sets the controller type. Possible values include: "lsilogic", "buslogic", "pvscsi", "lsilogicsas". - :type type: str or ~azure.mgmt.connectedvmware.models.SCSIControllerType - :param controller_key: Gets or sets the key of the controller. - :type controller_key: int - :param bus_number: Gets or sets the bus number of the controller. - :type bus_number: int - :param scsi_ctlr_unit_number: Gets or sets the SCSI controller unit number. - :type scsi_ctlr_unit_number: int - :param sharing: Gets or sets the sharing mode. Possible values include: "noSharing", + :vartype type: str or ~azure.mgmt.connectedvmware.models.SCSIControllerType + :ivar controller_key: Gets or sets the key of the controller. + :vartype controller_key: int + :ivar bus_number: Gets or sets the bus number of the controller. + :vartype bus_number: int + :ivar scsi_ctlr_unit_number: Gets or sets the SCSI controller unit number. + :vartype scsi_ctlr_unit_number: int + :ivar sharing: Gets or sets the sharing mode. Possible values include: "noSharing", "physicalSharing", "virtualSharing". - :type sharing: str or ~azure.mgmt.connectedvmware.models.VirtualSCSISharing + :vartype sharing: str or ~azure.mgmt.connectedvmware.models.VirtualSCSISharing """ _attribute_map = { @@ -3488,6 +4215,20 @@ def __init__( self, **kwargs ): + """ + :keyword type: Gets or sets the controller type. Possible values include: "lsilogic", + "buslogic", "pvscsi", "lsilogicsas". + :paramtype type: str or ~azure.mgmt.connectedvmware.models.SCSIControllerType + :keyword controller_key: Gets or sets the key of the controller. + :paramtype controller_key: int + :keyword bus_number: Gets or sets the bus number of the controller. + :paramtype bus_number: int + :keyword scsi_ctlr_unit_number: Gets or sets the SCSI controller unit number. + :paramtype scsi_ctlr_unit_number: int + :keyword sharing: Gets or sets the sharing mode. Possible values include: "noSharing", + "physicalSharing", "virtualSharing". + :paramtype sharing: str or ~azure.mgmt.connectedvmware.models.VirtualSCSISharing + """ super(VirtualSCSIController, self).__init__(**kwargs) self.type = kwargs.get('type', None) self.controller_key = kwargs.get('controller_key', None) diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models_py3.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models_py3.py index b89102973d6..3e9a1e398f6 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models_py3.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/models/_models_py3.py @@ -22,33 +22,33 @@ class Cluster(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this cluster + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this cluster resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the cluster. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the cluster. - :type inventory_item_id: str + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the cluster. + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the cluster. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the cluster. :vartype mo_name: str :ivar statuses: The resource status information. @@ -111,6 +111,26 @@ def __init__( inventory_item_id: Optional[str] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this cluster + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + cluster. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the cluster. + :paramtype inventory_item_id: str + """ super(Cluster, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -142,17 +162,17 @@ class InventoryItemProperties(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -182,6 +202,16 @@ def __init__( mo_name: Optional[str] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(InventoryItemProperties, self).__init__(**kwargs) self.inventory_type = None # type: Optional[str] self.managed_resource_id = managed_resource_id @@ -197,17 +227,17 @@ class ClusterInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -233,6 +263,16 @@ def __init__( mo_name: Optional[str] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(ClusterInventoryItem, self).__init__(managed_resource_id=managed_resource_id, mo_ref_id=mo_ref_id, mo_name=mo_name, **kwargs) self.inventory_type = 'Cluster' # type: str @@ -242,10 +282,10 @@ class ClustersList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of Clusters. - :type next_link: str - :param value: Required. Array of Clusters. - :type value: list[~azure.mgmt.connectedvmware.models.Cluster] + :ivar next_link: Url to follow for getting next page of Clusters. + :vartype next_link: str + :ivar value: Required. Array of Clusters. + :vartype value: list[~azure.mgmt.connectedvmware.models.Cluster] """ _validation = { @@ -264,6 +304,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of Clusters. + :paramtype next_link: str + :keyword value: Required. Array of Clusters. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Cluster] + """ super(ClustersList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -302,6 +348,8 @@ def __init__( self, **kwargs ): + """ + """ super(Condition, self).__init__(**kwargs) self.status = None self.reason = None @@ -316,34 +364,34 @@ class Datastore(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this datastore + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this datastore resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the datastore. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the datastore. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the datastore. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the datastore. :vartype mo_name: str :ivar statuses: The resource status information. @@ -400,6 +448,26 @@ def __init__( inventory_item_id: Optional[str] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this datastore + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + datastore. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the datastore. + :paramtype inventory_item_id: str + """ super(Datastore, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -426,23 +494,23 @@ class DatastoreInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param capacity_gb: Gets or sets Maximum capacity of this datastore, in GBs. - :type capacity_gb: long - :param free_space_gb: Gets or sets Available space of this datastore, in GBs. - :type free_space_gb: long + :ivar capacity_gb: Gets or sets Maximum capacity of this datastore, in GBs. + :vartype capacity_gb: long + :ivar free_space_gb: Gets or sets Available space of this datastore, in GBs. + :vartype free_space_gb: long """ _validation = { @@ -470,6 +538,20 @@ def __init__( free_space_gb: Optional[int] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword capacity_gb: Gets or sets Maximum capacity of this datastore, in GBs. + :paramtype capacity_gb: long + :keyword free_space_gb: Gets or sets Available space of this datastore, in GBs. + :paramtype free_space_gb: long + """ super(DatastoreInventoryItem, self).__init__(managed_resource_id=managed_resource_id, mo_ref_id=mo_ref_id, mo_name=mo_name, **kwargs) self.inventory_type = 'Datastore' # type: str self.capacity_gb = capacity_gb @@ -481,10 +563,10 @@ class DatastoresList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of Datastores. - :type next_link: str - :param value: Required. Array of Datastores. - :type value: list[~azure.mgmt.connectedvmware.models.Datastore] + :ivar next_link: Url to follow for getting next page of Datastores. + :vartype next_link: str + :ivar value: Required. Array of Datastores. + :vartype value: list[~azure.mgmt.connectedvmware.models.Datastore] """ _validation = { @@ -503,6 +585,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of Datastores. + :paramtype next_link: str + :keyword value: Required. Array of Datastores. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Datastore] + """ super(DatastoresList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -537,6 +625,8 @@ def __init__( self, **kwargs ): + """ + """ super(ErrorDefinition, self).__init__(**kwargs) self.code = None self.message = None @@ -548,14 +638,14 @@ class ErrorDetail(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param code: Required. The error's code. - :type code: str - :param message: Required. A human readable error message. - :type message: str - :param target: Indicates which property in the request is responsible for the error. - :type target: str - :param details: Additional error details. - :type details: list[~azure.mgmt.connectedvmware.models.ErrorDetail] + :ivar code: Required. The error's code. + :vartype code: str + :ivar message: Required. A human readable error message. + :vartype message: str + :ivar target: Indicates which property in the request is responsible for the error. + :vartype target: str + :ivar details: Additional error details. + :vartype details: list[~azure.mgmt.connectedvmware.models.ErrorDetail] """ _validation = { @@ -579,6 +669,16 @@ def __init__( details: Optional[List["ErrorDetail"]] = None, **kwargs ): + """ + :keyword code: Required. The error's code. + :paramtype code: str + :keyword message: Required. A human readable error message. + :paramtype message: str + :keyword target: Indicates which property in the request is responsible for the error. + :paramtype target: str + :keyword details: Additional error details. + :paramtype details: list[~azure.mgmt.connectedvmware.models.ErrorDetail] + """ super(ErrorDetail, self).__init__(**kwargs) self.code = code self.message = message @@ -589,8 +689,8 @@ def __init__( class ErrorResponse(msrest.serialization.Model): """Error response. - :param error: The error details. - :type error: ~azure.mgmt.connectedvmware.models.ErrorDefinition + :ivar error: The error details. + :vartype error: ~azure.mgmt.connectedvmware.models.ErrorDefinition """ _attribute_map = { @@ -603,6 +703,10 @@ def __init__( error: Optional["ErrorDefinition"] = None, **kwargs ): + """ + :keyword error: The error details. + :paramtype error: ~azure.mgmt.connectedvmware.models.ErrorDefinition + """ super(ErrorResponse, self).__init__(**kwargs) self.error = error @@ -610,10 +714,10 @@ def __init__( class ExtendedLocation(msrest.serialization.Model): """The extended location. - :param type: The extended location type. - :type type: str - :param name: The extended location name. - :type name: str + :ivar type: The extended location type. + :vartype type: str + :ivar name: The extended location name. + :vartype name: str """ _attribute_map = { @@ -628,6 +732,12 @@ def __init__( name: Optional[str] = None, **kwargs ): + """ + :keyword type: The extended location type. + :paramtype type: str + :keyword name: The extended location name. + :paramtype name: str + """ super(ExtendedLocation, self).__init__(**kwargs) self.type = type self.name = name @@ -664,6 +774,8 @@ def __init__( self, **kwargs ): + """ + """ super(Resource, self).__init__(**kwargs) self.id = None self.name = None @@ -701,6 +813,8 @@ def __init__( self, **kwargs ): + """ + """ super(ProxyResource, self).__init__(**kwargs) @@ -721,13 +835,13 @@ class GuestAgent(ProxyResource): :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param credentials: Username / Password Credentials to provision guest agent. - :type credentials: ~azure.mgmt.connectedvmware.models.GuestCredential - :param http_proxy_config: HTTP Proxy configuration for the VM. - :type http_proxy_config: ~azure.mgmt.connectedvmware.models.HttpProxyConfiguration - :param provisioning_action: Gets or sets the guest agent provisioning action. Possible values + :ivar credentials: Username / Password Credentials to provision guest agent. + :vartype credentials: ~azure.mgmt.connectedvmware.models.GuestCredential + :ivar http_proxy_config: HTTP Proxy configuration for the VM. + :vartype http_proxy_config: ~azure.mgmt.connectedvmware.models.HttpProxyConfiguration + :ivar provisioning_action: Gets or sets the guest agent provisioning action. Possible values include: "install", "uninstall", "repair". - :type provisioning_action: str or ~azure.mgmt.connectedvmware.models.ProvisioningAction + :vartype provisioning_action: str or ~azure.mgmt.connectedvmware.models.ProvisioningAction :ivar status: Gets or sets the guest agent status. :vartype status: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. @@ -773,6 +887,15 @@ def __init__( provisioning_action: Optional[Union[str, "ProvisioningAction"]] = None, **kwargs ): + """ + :keyword credentials: Username / Password Credentials to provision guest agent. + :paramtype credentials: ~azure.mgmt.connectedvmware.models.GuestCredential + :keyword http_proxy_config: HTTP Proxy configuration for the VM. + :paramtype http_proxy_config: ~azure.mgmt.connectedvmware.models.HttpProxyConfiguration + :keyword provisioning_action: Gets or sets the guest agent provisioning action. Possible values + include: "install", "uninstall", "repair". + :paramtype provisioning_action: str or ~azure.mgmt.connectedvmware.models.ProvisioningAction + """ super(GuestAgent, self).__init__(**kwargs) self.system_data = None self.uuid = None @@ -790,10 +913,10 @@ class GuestAgentList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of GuestAgent. - :type next_link: str - :param value: Required. Array of GuestAgent. - :type value: list[~azure.mgmt.connectedvmware.models.GuestAgent] + :ivar next_link: Url to follow for getting next page of GuestAgent. + :vartype next_link: str + :ivar value: Required. Array of GuestAgent. + :vartype value: list[~azure.mgmt.connectedvmware.models.GuestAgent] """ _validation = { @@ -812,6 +935,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of GuestAgent. + :paramtype next_link: str + :keyword value: Required. Array of GuestAgent. + :paramtype value: list[~azure.mgmt.connectedvmware.models.GuestAgent] + """ super(GuestAgentList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -855,6 +984,8 @@ def __init__( self, **kwargs ): + """ + """ super(GuestAgentProfile, self).__init__(**kwargs) self.vm_uuid = None self.status = None @@ -866,10 +997,10 @@ def __init__( class GuestCredential(msrest.serialization.Model): """Username / Password Credentials to connect to guest. - :param username: Gets or sets username to connect with the guest. - :type username: str - :param password: Gets or sets the password to connect with the guest. - :type password: str + :ivar username: Gets or sets username to connect with the guest. + :vartype username: str + :ivar password: Gets or sets the password to connect with the guest. + :vartype password: str """ _attribute_map = { @@ -884,6 +1015,12 @@ def __init__( password: Optional[str] = None, **kwargs ): + """ + :keyword username: Gets or sets username to connect with the guest. + :paramtype username: str + :keyword password: Gets or sets the password to connect with the guest. + :paramtype password: str + """ super(GuestCredential, self).__init__(**kwargs) self.username = username self.password = password @@ -894,13 +1031,13 @@ class HardwareProfile(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param memory_size_mb: Gets or sets memory size in MBs for the vm. - :type memory_size_mb: int - :param num_cp_us: Gets or sets the number of vCPUs for the vm. - :type num_cp_us: int - :param num_cores_per_socket: Gets or sets the number of cores per socket for the vm. Defaults - to 1 if unspecified. - :type num_cores_per_socket: int + :ivar memory_size_mb: Gets or sets memory size in MBs for the vm. + :vartype memory_size_mb: int + :ivar num_cp_us: Gets or sets the number of vCPUs for the vm. + :vartype num_cp_us: int + :ivar num_cores_per_socket: Gets or sets the number of cores per socket for the vm. Defaults to + 1 if unspecified. + :vartype num_cores_per_socket: int :ivar cpu_hot_add_enabled: Gets or sets a value indicating whether virtual processors can be added while this virtual machine is running. :vartype cpu_hot_add_enabled: bool @@ -935,6 +1072,15 @@ def __init__( num_cores_per_socket: Optional[int] = None, **kwargs ): + """ + :keyword memory_size_mb: Gets or sets memory size in MBs for the vm. + :paramtype memory_size_mb: int + :keyword num_cp_us: Gets or sets the number of vCPUs for the vm. + :paramtype num_cp_us: int + :keyword num_cores_per_socket: Gets or sets the number of cores per socket for the vm. Defaults + to 1 if unspecified. + :paramtype num_cores_per_socket: int + """ super(HardwareProfile, self).__init__(**kwargs) self.memory_size_mb = memory_size_mb self.num_cp_us = num_cp_us @@ -951,32 +1097,32 @@ class Host(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this host resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the host. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the host. - :type inventory_item_id: str + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this host resides. + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the host. + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the host. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the host. :vartype mo_name: str :ivar statuses: The resource status information. @@ -1031,6 +1177,25 @@ def __init__( inventory_item_id: Optional[str] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this host + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the host. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the host. + :paramtype inventory_item_id: str + """ super(Host, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -1057,21 +1222,21 @@ class HostInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param parent: Parent host inventory resource details. - :type parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar parent: Parent host inventory resource details. + :vartype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails """ _validation = { @@ -1097,6 +1262,18 @@ def __init__( parent: Optional["InventoryItemDetails"] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword parent: Parent host inventory resource details. + :paramtype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + """ super(HostInventoryItem, self).__init__(managed_resource_id=managed_resource_id, mo_ref_id=mo_ref_id, mo_name=mo_name, **kwargs) self.inventory_type = 'Host' # type: str self.parent = parent @@ -1107,10 +1284,10 @@ class HostsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of Hosts. - :type next_link: str - :param value: Required. Array of Hosts. - :type value: list[~azure.mgmt.connectedvmware.models.Host] + :ivar next_link: Url to follow for getting next page of Hosts. + :vartype next_link: str + :ivar value: Required. Array of Hosts. + :vartype value: list[~azure.mgmt.connectedvmware.models.Host] """ _validation = { @@ -1129,6 +1306,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of Hosts. + :paramtype next_link: str + :keyword value: Required. Array of Hosts. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Host] + """ super(HostsList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -1137,8 +1320,8 @@ def __init__( class HttpProxyConfiguration(msrest.serialization.Model): """HTTP Proxy configuration for the VM. - :param https_proxy: Gets or sets httpsProxy url. - :type https_proxy: str + :ivar https_proxy: Gets or sets httpsProxy url. + :vartype https_proxy: str """ _attribute_map = { @@ -1151,6 +1334,10 @@ def __init__( https_proxy: Optional[str] = None, **kwargs ): + """ + :keyword https_proxy: Gets or sets httpsProxy url. + :paramtype https_proxy: str + """ super(HttpProxyConfiguration, self).__init__(**kwargs) self.https_proxy = https_proxy @@ -1170,10 +1357,10 @@ class HybridIdentityMetadata(ProxyResource): :vartype type: str :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param vm_id: Gets or sets the Vm Id. - :type vm_id: str - :param public_key: Gets or sets the Public Key. - :type public_key: str + :ivar vm_id: Gets or sets the Vm Id. + :vartype vm_id: str + :ivar public_key: Gets or sets the Public Key. + :vartype public_key: str :ivar identity: The identity of the resource. :vartype identity: ~azure.mgmt.connectedvmware.models.Identity :ivar provisioning_state: Gets or sets the provisioning state. @@ -1207,6 +1394,12 @@ def __init__( public_key: Optional[str] = None, **kwargs ): + """ + :keyword vm_id: Gets or sets the Vm Id. + :paramtype vm_id: str + :keyword public_key: Gets or sets the Public Key. + :paramtype public_key: str + """ super(HybridIdentityMetadata, self).__init__(**kwargs) self.system_data = None self.vm_id = vm_id @@ -1220,10 +1413,10 @@ class HybridIdentityMetadataList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of HybridIdentityMetadata. - :type next_link: str - :param value: Required. Array of HybridIdentityMetadata. - :type value: list[~azure.mgmt.connectedvmware.models.HybridIdentityMetadata] + :ivar next_link: Url to follow for getting next page of HybridIdentityMetadata. + :vartype next_link: str + :ivar value: Required. Array of HybridIdentityMetadata. + :vartype value: list[~azure.mgmt.connectedvmware.models.HybridIdentityMetadata] """ _validation = { @@ -1242,6 +1435,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of HybridIdentityMetadata. + :paramtype next_link: str + :keyword value: Required. Array of HybridIdentityMetadata. + :paramtype value: list[~azure.mgmt.connectedvmware.models.HybridIdentityMetadata] + """ super(HybridIdentityMetadataList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -1258,9 +1457,9 @@ class Identity(msrest.serialization.Model): :vartype principal_id: str :ivar tenant_id: The tenant of managed service identity. :vartype tenant_id: str - :param type: Required. The type of managed service identity. Possible values include: "None", + :ivar type: Required. The type of managed service identity. Possible values include: "None", "SystemAssigned". - :type type: str or ~azure.mgmt.connectedvmware.models.IdentityType + :vartype type: str or ~azure.mgmt.connectedvmware.models.IdentityType """ _validation = { @@ -1281,6 +1480,11 @@ def __init__( type: Union[str, "IdentityType"], **kwargs ): + """ + :keyword type: Required. The type of managed service identity. Possible values include: "None", + "SystemAssigned". + :paramtype type: str or ~azure.mgmt.connectedvmware.models.IdentityType + """ super(Identity, self).__init__(**kwargs) self.principal_id = None self.tenant_id = None @@ -1304,21 +1508,21 @@ class InventoryItem(ProxyResource): :vartype type: str :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :vartype kind: str + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -1354,6 +1558,20 @@ def __init__( mo_name: Optional[str] = None, **kwargs ): + """ + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(InventoryItem, self).__init__(**kwargs) self.system_data = None self.kind = kind @@ -1367,10 +1585,10 @@ def __init__( class InventoryItemDetails(msrest.serialization.Model): """Defines the resource properties. - :param inventory_item_id: Gets or sets the inventory Item ID for the resource. - :type inventory_item_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the resource. - :type mo_name: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the resource. + :vartype inventory_item_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the resource. + :vartype mo_name: str """ _attribute_map = { @@ -1385,6 +1603,12 @@ def __init__( mo_name: Optional[str] = None, **kwargs ): + """ + :keyword inventory_item_id: Gets or sets the inventory Item ID for the resource. + :paramtype inventory_item_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the resource. + :paramtype mo_name: str + """ super(InventoryItemDetails, self).__init__(**kwargs) self.inventory_item_id = inventory_item_id self.mo_name = mo_name @@ -1395,10 +1619,10 @@ class InventoryItemsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of InventoryItems. - :type next_link: str - :param value: Required. Array of InventoryItems. - :type value: list[~azure.mgmt.connectedvmware.models.InventoryItem] + :ivar next_link: Url to follow for getting next page of InventoryItems. + :vartype next_link: str + :ivar value: Required. Array of InventoryItems. + :vartype value: list[~azure.mgmt.connectedvmware.models.InventoryItem] """ _validation = { @@ -1417,6 +1641,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of InventoryItems. + :paramtype next_link: str + :keyword value: Required. Array of InventoryItems. + :paramtype value: list[~azure.mgmt.connectedvmware.models.InventoryItem] + """ super(InventoryItemsList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -1427,41 +1657,42 @@ class MachineExtension(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param location: Gets or sets the location. - :type location: str + :ivar location: Gets or sets the location. + :vartype location: str :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param force_update_tag: How the extension handler should be forced to update even if the + :ivar force_update_tag: How the extension handler should be forced to update even if the extension configuration has not changed. - :type force_update_tag: str - :param publisher: The name of the extension handler publisher. - :type publisher: str - :param type_properties_type: Specifies the type of the extension; an example is + :vartype force_update_tag: str + :ivar publisher: The name of the extension handler publisher. + :vartype publisher: str + :ivar type_properties_type: Specifies the type of the extension; an example is "CustomScriptExtension". - :type type_properties_type: str - :param type_handler_version: Specifies the version of the script handler. - :type type_handler_version: str - :param auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + :vartype type_properties_type: str + :ivar type_handler_version: Specifies the version of the script handler. + :vartype type_handler_version: str + :ivar auto_upgrade_minor_version: Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true. - :type auto_upgrade_minor_version: bool - :param settings: Json formatted public settings for the extension. - :type settings: any - :param protected_settings: The extension can contain either protectedSettings or + :vartype auto_upgrade_minor_version: bool + :ivar settings: Json formatted public settings for the extension. + :vartype settings: any + :ivar protected_settings: The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all. - :type protected_settings: any + :vartype protected_settings: any :ivar provisioning_state: The provisioning state, which only appears in the response. :vartype provisioning_state: str - :param instance_view: The machine extension instance view. - :type instance_view: ~azure.mgmt.connectedvmware.models.MachineExtensionPropertiesInstanceView + :ivar instance_view: The machine extension instance view. + :vartype instance_view: + ~azure.mgmt.connectedvmware.models.MachineExtensionPropertiesInstanceView """ _validation = { @@ -1505,6 +1736,34 @@ def __init__( instance_view: Optional["MachineExtensionPropertiesInstanceView"] = None, **kwargs ): + """ + :keyword location: Gets or sets the location. + :paramtype location: str + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword force_update_tag: How the extension handler should be forced to update even if the + extension configuration has not changed. + :paramtype force_update_tag: str + :keyword publisher: The name of the extension handler publisher. + :paramtype publisher: str + :keyword type_properties_type: Specifies the type of the extension; an example is + "CustomScriptExtension". + :paramtype type_properties_type: str + :keyword type_handler_version: Specifies the version of the script handler. + :paramtype type_handler_version: str + :keyword auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + version if one is available at deployment time. Once deployed, however, the extension will not + upgrade minor versions unless redeployed, even with this property set to true. + :paramtype auto_upgrade_minor_version: bool + :keyword settings: Json formatted public settings for the extension. + :paramtype settings: any + :keyword protected_settings: The extension can contain either protectedSettings or + protectedSettingsFromKeyVault or no protected settings at all. + :paramtype protected_settings: any + :keyword instance_view: The machine extension instance view. + :paramtype instance_view: + ~azure.mgmt.connectedvmware.models.MachineExtensionPropertiesInstanceView + """ super(MachineExtension, self).__init__(**kwargs) self.location = location self.system_data = None @@ -1534,8 +1793,8 @@ class MachineExtensionInstanceView(msrest.serialization.Model): :vartype type: str :ivar type_handler_version: Specifies the version of the script handler. :vartype type_handler_version: str - :param status: Instance view status. - :type status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + :ivar status: Instance view status. + :vartype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus """ _validation = { @@ -1557,6 +1816,10 @@ def __init__( status: Optional["MachineExtensionInstanceViewStatus"] = None, **kwargs ): + """ + :keyword status: Instance view status. + :paramtype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + """ super(MachineExtensionInstanceView, self).__init__(**kwargs) self.name = None self.type = None @@ -1601,6 +1864,8 @@ def __init__( self, **kwargs ): + """ + """ super(MachineExtensionInstanceViewStatus, self).__init__(**kwargs) self.code = None self.level = None @@ -1620,8 +1885,8 @@ class MachineExtensionPropertiesInstanceView(MachineExtensionInstanceView): :vartype type: str :ivar type_handler_version: Specifies the version of the script handler. :vartype type_handler_version: str - :param status: Instance view status. - :type status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + :ivar status: Instance view status. + :vartype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus """ _validation = { @@ -1643,17 +1908,21 @@ def __init__( status: Optional["MachineExtensionInstanceViewStatus"] = None, **kwargs ): + """ + :keyword status: Instance view status. + :paramtype status: ~azure.mgmt.connectedvmware.models.MachineExtensionInstanceViewStatus + """ super(MachineExtensionPropertiesInstanceView, self).__init__(status=status, **kwargs) class MachineExtensionsListResult(msrest.serialization.Model): """Describes the Machine Extensions List Result. - :param value: The list of extensions. - :type value: list[~azure.mgmt.connectedvmware.models.MachineExtension] - :param next_link: The uri to fetch the next page of machine extensions. Call ListNext() with + :ivar value: The list of extensions. + :vartype value: list[~azure.mgmt.connectedvmware.models.MachineExtension] + :ivar next_link: The uri to fetch the next page of machine extensions. Call ListNext() with this to fetch the next page of extensions. - :type next_link: str + :vartype next_link: str """ _attribute_map = { @@ -1668,6 +1937,13 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword value: The list of extensions. + :paramtype value: list[~azure.mgmt.connectedvmware.models.MachineExtension] + :keyword next_link: The uri to fetch the next page of machine extensions. Call ListNext() with + this to fetch the next page of extensions. + :paramtype next_link: str + """ super(MachineExtensionsListResult, self).__init__(**kwargs) self.value = value self.next_link = next_link @@ -1676,8 +1952,8 @@ def __init__( class ResourcePatch(msrest.serialization.Model): """Object containing updates for patch operations. - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] """ _attribute_map = { @@ -1690,6 +1966,10 @@ def __init__( tags: Optional[Dict[str, str]] = None, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ super(ResourcePatch, self).__init__(**kwargs) self.tags = tags @@ -1697,26 +1977,26 @@ def __init__( class MachineExtensionUpdate(ResourcePatch): """Describes a Machine Extension Update. - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] - :param force_update_tag: How the extension handler should be forced to update even if the + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar force_update_tag: How the extension handler should be forced to update even if the extension configuration has not changed. - :type force_update_tag: str - :param publisher: The name of the extension handler publisher. - :type publisher: str - :param type: Specifies the type of the extension; an example is "CustomScriptExtension". - :type type: str - :param type_handler_version: Specifies the version of the script handler. - :type type_handler_version: str - :param auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + :vartype force_update_tag: str + :ivar publisher: The name of the extension handler publisher. + :vartype publisher: str + :ivar type: Specifies the type of the extension; an example is "CustomScriptExtension". + :vartype type: str + :ivar type_handler_version: Specifies the version of the script handler. + :vartype type_handler_version: str + :ivar auto_upgrade_minor_version: Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true. - :type auto_upgrade_minor_version: bool - :param settings: Json formatted public settings for the extension. - :type settings: any - :param protected_settings: The extension can contain either protectedSettings or + :vartype auto_upgrade_minor_version: bool + :ivar settings: Json formatted public settings for the extension. + :vartype settings: any + :ivar protected_settings: The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all. - :type protected_settings: any + :vartype protected_settings: any """ _attribute_map = { @@ -1743,6 +2023,28 @@ def __init__( protected_settings: Optional[Any] = None, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword force_update_tag: How the extension handler should be forced to update even if the + extension configuration has not changed. + :paramtype force_update_tag: str + :keyword publisher: The name of the extension handler publisher. + :paramtype publisher: str + :keyword type: Specifies the type of the extension; an example is "CustomScriptExtension". + :paramtype type: str + :keyword type_handler_version: Specifies the version of the script handler. + :paramtype type_handler_version: str + :keyword auto_upgrade_minor_version: Indicates whether the extension should use a newer minor + version if one is available at deployment time. Once deployed, however, the extension will not + upgrade minor versions unless redeployed, even with this property set to true. + :paramtype auto_upgrade_minor_version: bool + :keyword settings: Json formatted public settings for the extension. + :paramtype settings: any + :keyword protected_settings: The extension can contain either protectedSettings or + protectedSettingsFromKeyVault or no protected settings at all. + :paramtype protected_settings: any + """ super(MachineExtensionUpdate, self).__init__(tags=tags, **kwargs) self.force_update_tag = force_update_tag self.publisher = publisher @@ -1758,8 +2060,8 @@ class NetworkInterface(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param name: Gets or sets the name of the network interface. - :type name: str + :ivar name: Gets or sets the name of the network interface. + :vartype name: str :ivar label: Gets or sets the label of the virtual network in vCenter that the nic is connected to. :vartype label: str @@ -1767,15 +2069,15 @@ class NetworkInterface(msrest.serialization.Model): :vartype ip_addresses: list[str] :ivar mac_address: Gets or sets the NIC MAC address. :vartype mac_address: str - :param network_id: Gets or sets the ARM Id of the network resource to connect the virtual + :ivar network_id: Gets or sets the ARM Id of the network resource to connect the virtual machine. - :type network_id: str - :param nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + :vartype network_id: str + :ivar nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", "e1000e", "pcnet32". - :type nic_type: str or ~azure.mgmt.connectedvmware.models.NICType - :param power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + :vartype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :ivar power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", "disabled". - :type power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :vartype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption :ivar network_mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID of the virtual network that the nic is connected to. @@ -1783,10 +2085,10 @@ class NetworkInterface(msrest.serialization.Model): :ivar network_mo_name: Gets or sets the name of the virtual network in vCenter that the nic is connected to. :vartype network_mo_name: str - :param device_key: Gets or sets the device key value. - :type device_key: int - :param ip_settings: Gets or sets the ipsettings. - :type ip_settings: ~azure.mgmt.connectedvmware.models.NicIPSettings + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int + :ivar ip_settings: Gets or sets the ipsettings. + :vartype ip_settings: ~azure.mgmt.connectedvmware.models.NicIPSettings """ _validation = { @@ -1822,6 +2124,23 @@ def __init__( ip_settings: Optional["NicIPSettings"] = None, **kwargs ): + """ + :keyword name: Gets or sets the name of the network interface. + :paramtype name: str + :keyword network_id: Gets or sets the ARM Id of the network resource to connect the virtual + machine. + :paramtype network_id: str + :keyword nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + "e1000e", "pcnet32". + :paramtype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :keyword power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + "disabled". + :paramtype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + :keyword ip_settings: Gets or sets the ipsettings. + :paramtype ip_settings: ~azure.mgmt.connectedvmware.models.NicIPSettings + """ super(NetworkInterface, self).__init__(**kwargs) self.name = name self.label = None @@ -1839,19 +2158,19 @@ def __init__( class NetworkInterfaceUpdate(msrest.serialization.Model): """Defines the network interface update. - :param name: Gets or sets the name of the network interface. - :type name: str - :param network_id: Gets or sets the ARM Id of the network resource to connect the virtual + :ivar name: Gets or sets the name of the network interface. + :vartype name: str + :ivar network_id: Gets or sets the ARM Id of the network resource to connect the virtual machine. - :type network_id: str - :param nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + :vartype network_id: str + :ivar nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", "e1000e", "pcnet32". - :type nic_type: str or ~azure.mgmt.connectedvmware.models.NICType - :param power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + :vartype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :ivar power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", "disabled". - :type power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption - :param device_key: Gets or sets the device key value. - :type device_key: int + :vartype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int """ _attribute_map = { @@ -1872,6 +2191,21 @@ def __init__( device_key: Optional[int] = None, **kwargs ): + """ + :keyword name: Gets or sets the name of the network interface. + :paramtype name: str + :keyword network_id: Gets or sets the ARM Id of the network resource to connect the virtual + machine. + :paramtype network_id: str + :keyword nic_type: NIC type. Possible values include: "vmxnet3", "vmxnet2", "vmxnet", "e1000", + "e1000e", "pcnet32". + :paramtype nic_type: str or ~azure.mgmt.connectedvmware.models.NICType + :keyword power_on_boot: Gets or sets the power on boot. Possible values include: "enabled", + "disabled". + :paramtype power_on_boot: str or ~azure.mgmt.connectedvmware.models.PowerOnBootOption + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + """ super(NetworkInterfaceUpdate, self).__init__(**kwargs) self.name = name self.network_id = network_id @@ -1883,9 +2217,9 @@ def __init__( class NetworkProfile(msrest.serialization.Model): """Defines the resource properties. - :param network_interfaces: Gets or sets the list of network interfaces associated with the + :ivar network_interfaces: Gets or sets the list of network interfaces associated with the virtual machine. - :type network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterface] + :vartype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterface] """ _attribute_map = { @@ -1898,6 +2232,11 @@ def __init__( network_interfaces: Optional[List["NetworkInterface"]] = None, **kwargs ): + """ + :keyword network_interfaces: Gets or sets the list of network interfaces associated with the + virtual machine. + :paramtype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterface] + """ super(NetworkProfile, self).__init__(**kwargs) self.network_interfaces = network_interfaces @@ -1905,9 +2244,9 @@ def __init__( class NetworkProfileUpdate(msrest.serialization.Model): """Defines the update resource properties. - :param network_interfaces: Gets or sets the list of network interfaces associated with the + :ivar network_interfaces: Gets or sets the list of network interfaces associated with the virtual machine. - :type network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterfaceUpdate] + :vartype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterfaceUpdate] """ _attribute_map = { @@ -1920,6 +2259,11 @@ def __init__( network_interfaces: Optional[List["NetworkInterfaceUpdate"]] = None, **kwargs ): + """ + :keyword network_interfaces: Gets or sets the list of network interfaces associated with the + virtual machine. + :paramtype network_interfaces: list[~azure.mgmt.connectedvmware.models.NetworkInterfaceUpdate] + """ super(NetworkProfileUpdate, self).__init__(**kwargs) self.network_interfaces = network_interfaces @@ -1953,6 +2297,8 @@ def __init__( self, **kwargs ): + """ + """ super(NicIPAddressSettings, self).__init__(**kwargs) self.allocation_method = None self.ip_address = None @@ -1964,17 +2310,17 @@ class NicIPSettings(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param allocation_method: Gets or sets the nic allocation method. Possible values include: + :ivar allocation_method: Gets or sets the nic allocation method. Possible values include: "unset", "dynamic", "static", "linklayer", "random", "other". - :type allocation_method: str or ~azure.mgmt.connectedvmware.models.IPAddressAllocationMethod - :param dns_servers: Gets or sets the dns servers. - :type dns_servers: list[str] - :param gateway: Gets or sets the gateway. - :type gateway: list[str] - :param ip_address: Gets or sets the ip address for the nic. - :type ip_address: str - :param subnet_mask: Gets or sets the mask. - :type subnet_mask: str + :vartype allocation_method: str or ~azure.mgmt.connectedvmware.models.IPAddressAllocationMethod + :ivar dns_servers: Gets or sets the dns servers. + :vartype dns_servers: list[str] + :ivar gateway: Gets or sets the gateway. + :vartype gateway: list[str] + :ivar ip_address: Gets or sets the ip address for the nic. + :vartype ip_address: str + :ivar subnet_mask: Gets or sets the mask. + :vartype subnet_mask: str :ivar primary_wins_server: Gets or sets the primary server. :vartype primary_wins_server: str :ivar secondary_wins_server: Gets or sets the secondary server. @@ -2011,6 +2357,20 @@ def __init__( subnet_mask: Optional[str] = None, **kwargs ): + """ + :keyword allocation_method: Gets or sets the nic allocation method. Possible values include: + "unset", "dynamic", "static", "linklayer", "random", "other". + :paramtype allocation_method: str or + ~azure.mgmt.connectedvmware.models.IPAddressAllocationMethod + :keyword dns_servers: Gets or sets the dns servers. + :paramtype dns_servers: list[str] + :keyword gateway: Gets or sets the gateway. + :paramtype gateway: list[str] + :keyword ip_address: Gets or sets the ip address for the nic. + :paramtype ip_address: str + :keyword subnet_mask: Gets or sets the mask. + :paramtype subnet_mask: str + """ super(NicIPSettings, self).__init__(**kwargs) self.allocation_method = allocation_method self.dns_servers = dns_servers @@ -2025,12 +2385,12 @@ def __init__( class Operation(msrest.serialization.Model): """Operation provided by provider. - :param name: Name of the operation. - :type name: str - :param is_data_action: Indicates whether the operation is data action or not. - :type is_data_action: bool - :param display: Properties of the operation. - :type display: ~azure.mgmt.connectedvmware.models.OperationDisplay + :ivar name: Name of the operation. + :vartype name: str + :ivar is_data_action: Indicates whether the operation is data action or not. + :vartype is_data_action: bool + :ivar display: Properties of the operation. + :vartype display: ~azure.mgmt.connectedvmware.models.OperationDisplay """ _attribute_map = { @@ -2047,6 +2407,14 @@ def __init__( display: Optional["OperationDisplay"] = None, **kwargs ): + """ + :keyword name: Name of the operation. + :paramtype name: str + :keyword is_data_action: Indicates whether the operation is data action or not. + :paramtype is_data_action: bool + :keyword display: Properties of the operation. + :paramtype display: ~azure.mgmt.connectedvmware.models.OperationDisplay + """ super(Operation, self).__init__(**kwargs) self.name = name self.is_data_action = is_data_action @@ -2056,14 +2424,14 @@ def __init__( class OperationDisplay(msrest.serialization.Model): """Properties of the operation. - :param provider: Provider name. - :type provider: str - :param resource: Resource name. - :type resource: str - :param operation: Operation name. - :type operation: str - :param description: Description of the operation. - :type description: str + :ivar provider: Provider name. + :vartype provider: str + :ivar resource: Resource name. + :vartype resource: str + :ivar operation: Operation name. + :vartype operation: str + :ivar description: Description of the operation. + :vartype description: str """ _attribute_map = { @@ -2082,6 +2450,16 @@ def __init__( description: Optional[str] = None, **kwargs ): + """ + :keyword provider: Provider name. + :paramtype provider: str + :keyword resource: Resource name. + :paramtype resource: str + :keyword operation: Operation name. + :paramtype operation: str + :keyword description: Description of the operation. + :paramtype description: str + """ super(OperationDisplay, self).__init__(**kwargs) self.provider = provider self.resource = resource @@ -2094,10 +2472,10 @@ class OperationsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of operations. - :type next_link: str - :param value: Required. Array of operations. - :type value: list[~azure.mgmt.connectedvmware.models.Operation] + :ivar next_link: Url to follow for getting next page of operations. + :vartype next_link: str + :ivar value: Required. Array of operations. + :vartype value: list[~azure.mgmt.connectedvmware.models.Operation] """ _validation = { @@ -2116,6 +2494,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of operations. + :paramtype next_link: str + :keyword value: Required. Array of operations. + :paramtype value: list[~azure.mgmt.connectedvmware.models.Operation] + """ super(OperationsList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -2126,15 +2510,15 @@ class OsProfile(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param computer_name: Gets or sets computer name. - :type computer_name: str - :param admin_username: Gets or sets administrator username. - :type admin_username: str - :param admin_password: Gets or sets administrator password. - :type admin_password: str - :param os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + :ivar computer_name: Gets or sets computer name. + :vartype computer_name: str + :ivar admin_username: Gets or sets administrator username. + :vartype admin_username: str + :ivar admin_password: Gets or sets administrator password. + :vartype admin_password: str + :ivar os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", "Other". - :type os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :vartype os_type: str or ~azure.mgmt.connectedvmware.models.OsType :ivar os_name: Gets or sets os name. :vartype os_name: str :ivar tools_running_status: Gets or sets the current running status of VMware Tools running in @@ -2174,6 +2558,17 @@ def __init__( os_type: Optional[Union[str, "OsType"]] = None, **kwargs ): + """ + :keyword computer_name: Gets or sets computer name. + :paramtype computer_name: str + :keyword admin_username: Gets or sets administrator username. + :paramtype admin_username: str + :keyword admin_password: Gets or sets administrator password. + :paramtype admin_password: str + :keyword os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + "Other". + :paramtype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + """ super(OsProfile, self).__init__(**kwargs) self.computer_name = computer_name self.admin_username = admin_username @@ -2188,18 +2583,18 @@ def __init__( class PlacementProfile(msrest.serialization.Model): """Defines the resource properties. - :param resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + :ivar resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this virtual machine will deploy. - :type resource_pool_id: str - :param cluster_id: Gets or sets the ARM Id of the cluster resource on which this virtual - machine will deploy. - :type cluster_id: str - :param host_id: Gets or sets the ARM Id of the host resource on which this virtual machine will + :vartype resource_pool_id: str + :ivar cluster_id: Gets or sets the ARM Id of the cluster resource on which this virtual machine + will deploy. + :vartype cluster_id: str + :ivar host_id: Gets or sets the ARM Id of the host resource on which this virtual machine will deploy. - :type host_id: str - :param datastore_id: Gets or sets the ARM Id of the datastore resource on which the data for - the virtual machine will be kept. - :type datastore_id: str + :vartype host_id: str + :ivar datastore_id: Gets or sets the ARM Id of the datastore resource on which the data for the + virtual machine will be kept. + :vartype datastore_id: str """ _attribute_map = { @@ -2218,6 +2613,20 @@ def __init__( datastore_id: Optional[str] = None, **kwargs ): + """ + :keyword resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + virtual machine will deploy. + :paramtype resource_pool_id: str + :keyword cluster_id: Gets or sets the ARM Id of the cluster resource on which this virtual + machine will deploy. + :paramtype cluster_id: str + :keyword host_id: Gets or sets the ARM Id of the host resource on which this virtual machine + will deploy. + :paramtype host_id: str + :keyword datastore_id: Gets or sets the ARM Id of the datastore resource on which the data for + the virtual machine will be kept. + :paramtype datastore_id: str + """ super(PlacementProfile, self).__init__(**kwargs) self.resource_pool_id = resource_pool_id self.cluster_id = cluster_id @@ -2232,34 +2641,34 @@ class ResourcePool(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the resource + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the resource pool. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the resource pool. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the resource pool. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the resource pool. :vartype mo_name: str :ivar cpu_shares_level: Gets or sets CPUSharesLevel which specifies the CPU allocation level @@ -2348,6 +2757,26 @@ def __init__( inventory_item_id: Optional[str] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource + pool resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + resource pool. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the resource pool. + :paramtype inventory_item_id: str + """ super(ResourcePool, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -2380,21 +2809,21 @@ class ResourcePoolInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param parent: Parent resourcePool inventory resource details. - :type parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar parent: Parent resourcePool inventory resource details. + :vartype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails """ _validation = { @@ -2420,6 +2849,18 @@ def __init__( parent: Optional["InventoryItemDetails"] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword parent: Parent resourcePool inventory resource details. + :paramtype parent: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + """ super(ResourcePoolInventoryItem, self).__init__(managed_resource_id=managed_resource_id, mo_ref_id=mo_ref_id, mo_name=mo_name, **kwargs) self.inventory_type = 'ResourcePool' # type: str self.parent = parent @@ -2430,10 +2871,10 @@ class ResourcePoolsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of ResourcePools. - :type next_link: str - :param value: Required. Array of ResourcePools. - :type value: list[~azure.mgmt.connectedvmware.models.ResourcePool] + :ivar next_link: Url to follow for getting next page of ResourcePools. + :vartype next_link: str + :ivar value: Required. Array of ResourcePools. + :vartype value: list[~azure.mgmt.connectedvmware.models.ResourcePool] """ _validation = { @@ -2452,6 +2893,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of ResourcePools. + :paramtype next_link: str + :keyword value: Required. Array of ResourcePools. + :paramtype value: list[~azure.mgmt.connectedvmware.models.ResourcePool] + """ super(ResourcePoolsList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -2498,6 +2945,8 @@ def __init__( self, **kwargs ): + """ + """ super(ResourceStatus, self).__init__(**kwargs) self.type = None self.status = None @@ -2510,10 +2959,10 @@ def __init__( class StopVirtualMachineOptions(msrest.serialization.Model): """Defines the stop action properties. - :param skip_shutdown: Gets or sets a value indicating whether to request non-graceful VM + :ivar skip_shutdown: Gets or sets a value indicating whether to request non-graceful VM shutdown. True value for this flag indicates non-graceful shutdown whereas false indicates otherwise. Defaults to false. - :type skip_shutdown: bool + :vartype skip_shutdown: bool """ _attribute_map = { @@ -2526,6 +2975,12 @@ def __init__( skip_shutdown: Optional[bool] = False, **kwargs ): + """ + :keyword skip_shutdown: Gets or sets a value indicating whether to request non-graceful VM + shutdown. True value for this flag indicates non-graceful shutdown whereas false indicates + otherwise. Defaults to false. + :paramtype skip_shutdown: bool + """ super(StopVirtualMachineOptions, self).__init__(**kwargs) self.skip_shutdown = skip_shutdown @@ -2535,8 +2990,8 @@ class StorageProfile(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param disks: Gets or sets the list of virtual disks associated with the virtual machine. - :type disks: list[~azure.mgmt.connectedvmware.models.VirtualDisk] + :ivar disks: Gets or sets the list of virtual disks associated with the virtual machine. + :vartype disks: list[~azure.mgmt.connectedvmware.models.VirtualDisk] :ivar scsi_controllers: Gets or sets the list of virtual SCSI controllers associated with the virtual machine. :vartype scsi_controllers: list[~azure.mgmt.connectedvmware.models.VirtualSCSIController] @@ -2557,6 +3012,10 @@ def __init__( disks: Optional[List["VirtualDisk"]] = None, **kwargs ): + """ + :keyword disks: Gets or sets the list of virtual disks associated with the virtual machine. + :paramtype disks: list[~azure.mgmt.connectedvmware.models.VirtualDisk] + """ super(StorageProfile, self).__init__(**kwargs) self.disks = disks self.scsi_controllers = None @@ -2565,8 +3024,8 @@ def __init__( class StorageProfileUpdate(msrest.serialization.Model): """Defines the resource update properties. - :param disks: Gets or sets the list of virtual disks associated with the virtual machine. - :type disks: list[~azure.mgmt.connectedvmware.models.VirtualDiskUpdate] + :ivar disks: Gets or sets the list of virtual disks associated with the virtual machine. + :vartype disks: list[~azure.mgmt.connectedvmware.models.VirtualDiskUpdate] """ _attribute_map = { @@ -2579,6 +3038,10 @@ def __init__( disks: Optional[List["VirtualDiskUpdate"]] = None, **kwargs ): + """ + :keyword disks: Gets or sets the list of virtual disks associated with the virtual machine. + :paramtype disks: list[~azure.mgmt.connectedvmware.models.VirtualDiskUpdate] + """ super(StorageProfileUpdate, self).__init__(**kwargs) self.disks = disks @@ -2586,20 +3049,20 @@ def __init__( class SystemData(msrest.serialization.Model): """Metadata pertaining to creation and last modification of the resource. - :param created_by: The identity that created the resource. - :type created_by: str - :param created_by_type: The type of identity that created the resource. Possible values - include: "User", "Application", "ManagedIdentity", "Key". - :type created_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType - :param created_at: The timestamp of resource creation (UTC). - :type created_at: ~datetime.datetime - :param last_modified_by: The identity that last modified the resource. - :type last_modified_by: str - :param last_modified_by_type: The type of identity that last modified the resource. Possible + :ivar created_by: The identity that created the resource. + :vartype created_by: str + :ivar created_by_type: The type of identity that created the resource. Possible values include: + "User", "Application", "ManagedIdentity", "Key". + :vartype created_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :ivar created_at: The timestamp of resource creation (UTC). + :vartype created_at: ~datetime.datetime + :ivar last_modified_by: The identity that last modified the resource. + :vartype last_modified_by: str + :ivar last_modified_by_type: The type of identity that last modified the resource. Possible values include: "User", "Application", "ManagedIdentity", "Key". - :type last_modified_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType - :param last_modified_at: The timestamp of resource last modification (UTC). - :type last_modified_at: ~datetime.datetime + :vartype last_modified_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :ivar last_modified_at: The timestamp of resource last modification (UTC). + :vartype last_modified_at: ~datetime.datetime """ _attribute_map = { @@ -2622,6 +3085,22 @@ def __init__( last_modified_at: Optional[datetime.datetime] = None, **kwargs ): + """ + :keyword created_by: The identity that created the resource. + :paramtype created_by: str + :keyword created_by_type: The type of identity that created the resource. Possible values + include: "User", "Application", "ManagedIdentity", "Key". + :paramtype created_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :keyword created_at: The timestamp of resource creation (UTC). + :paramtype created_at: ~datetime.datetime + :keyword last_modified_by: The identity that last modified the resource. + :paramtype last_modified_by: str + :keyword last_modified_by_type: The type of identity that last modified the resource. Possible + values include: "User", "Application", "ManagedIdentity", "Key". + :paramtype last_modified_by_type: str or ~azure.mgmt.connectedvmware.models.CreatedByType + :keyword last_modified_at: The timestamp of resource last modification (UTC). + :paramtype last_modified_at: ~datetime.datetime + """ super(SystemData, self).__init__(**kwargs) self.created_by = created_by self.created_by_type = created_by_type @@ -2638,30 +3117,30 @@ class VCenter(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param fqdn: Required. Gets or sets the FQDN/IPAddress of the vCenter. - :type fqdn: str - :param port: Gets or sets the port of the vCenter. - :type port: int + :ivar fqdn: Required. Gets or sets the FQDN/IPAddress of the vCenter. + :vartype fqdn: str + :ivar port: Gets or sets the port of the vCenter. + :vartype port: int :ivar version: Gets or sets the version of the vCenter. :vartype version: str :ivar instance_uuid: Gets or sets the instance UUID of the vCenter. @@ -2670,8 +3149,8 @@ class VCenter(msrest.serialization.Model): :vartype connection_status: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. :vartype custom_resource_name: str - :param credentials: Username / Password Credentials to connect to vcenter. - :type credentials: ~azure.mgmt.connectedvmware.models.VICredential + :ivar credentials: Username / Password Credentials to connect to vcenter. + :vartype credentials: ~azure.mgmt.connectedvmware.models.VICredential :ivar statuses: The resource status information. :vartype statuses: list[~azure.mgmt.connectedvmware.models.ResourceStatus] :ivar provisioning_state: Gets or sets the provisioning state. @@ -2728,6 +3207,24 @@ def __init__( credentials: Optional["VICredential"] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword fqdn: Required. Gets or sets the FQDN/IPAddress of the vCenter. + :paramtype fqdn: str + :keyword port: Gets or sets the port of the vCenter. + :paramtype port: int + :keyword credentials: Username / Password Credentials to connect to vcenter. + :paramtype credentials: ~azure.mgmt.connectedvmware.models.VICredential + """ super(VCenter, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -2754,10 +3251,10 @@ class VCentersList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VCenters. - :type next_link: str - :param value: Required. Array of VCenters. - :type value: list[~azure.mgmt.connectedvmware.models.VCenter] + :ivar next_link: Url to follow for getting next page of VCenters. + :vartype next_link: str + :ivar value: Required. Array of VCenters. + :vartype value: list[~azure.mgmt.connectedvmware.models.VCenter] """ _validation = { @@ -2776,6 +3273,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VCenters. + :paramtype next_link: str + :keyword value: Required. Array of VCenters. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VCenter] + """ super(VCentersList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -2784,10 +3287,10 @@ def __init__( class VICredential(msrest.serialization.Model): """Username / Password Credentials to connect to vcenter. - :param username: Gets or sets username to connect with the vCenter. - :type username: str - :param password: Gets or sets the password to connect with the vCenter. - :type password: str + :ivar username: Gets or sets username to connect with the vCenter. + :vartype username: str + :ivar password: Gets or sets the password to connect with the vCenter. + :vartype password: str """ _attribute_map = { @@ -2802,6 +3305,12 @@ def __init__( password: Optional[str] = None, **kwargs ): + """ + :keyword username: Gets or sets username to connect with the vCenter. + :paramtype username: str + :keyword password: Gets or sets the password to connect with the vCenter. + :paramtype password: str + """ super(VICredential, self).__init__(**kwargs) self.username = username self.password = password @@ -2812,28 +3321,28 @@ class VirtualDisk(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param name: Gets or sets the name of the virtual disk. - :type name: str + :ivar name: Gets or sets the name of the virtual disk. + :vartype name: str :ivar label: Gets or sets the label of the virtual disk in vCenter. :vartype label: str :ivar disk_object_id: Gets or sets the disk object id. :vartype disk_object_id: str - :param disk_size_gb: Gets or sets the disk total size. - :type disk_size_gb: int - :param device_key: Gets or sets the device key value. - :type device_key: int - :param disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + :ivar disk_size_gb: Gets or sets the disk total size. + :vartype disk_size_gb: int + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int + :ivar disk_mode: Gets or sets the disk mode. Possible values include: "persistent", "independent_persistent", "independent_nonpersistent". - :type disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode - :param controller_key: Gets or sets the controller id. - :type controller_key: int - :param unit_number: Gets or sets the unit number of the disk on the controller. - :type unit_number: int - :param device_name: Gets or sets the device name. - :type device_name: str - :param disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", + :vartype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :ivar controller_key: Gets or sets the controller id. + :vartype controller_key: int + :ivar unit_number: Gets or sets the unit number of the disk on the controller. + :vartype unit_number: int + :ivar device_name: Gets or sets the device name. + :vartype device_name: str + :ivar disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". - :type disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + :vartype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType """ _validation = { @@ -2867,6 +3376,26 @@ def __init__( disk_type: Optional[Union[str, "DiskType"]] = None, **kwargs ): + """ + :keyword name: Gets or sets the name of the virtual disk. + :paramtype name: str + :keyword disk_size_gb: Gets or sets the disk total size. + :paramtype disk_size_gb: int + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + :keyword disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + "independent_persistent", "independent_nonpersistent". + :paramtype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :keyword controller_key: Gets or sets the controller id. + :paramtype controller_key: int + :keyword unit_number: Gets or sets the unit number of the disk on the controller. + :paramtype unit_number: int + :keyword device_name: Gets or sets the device name. + :paramtype device_name: str + :keyword disk_type: Gets or sets the disk backing type. Possible values include: "flat", + "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". + :paramtype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + """ super(VirtualDisk, self).__init__(**kwargs) self.name = name self.label = None @@ -2883,24 +3412,24 @@ def __init__( class VirtualDiskUpdate(msrest.serialization.Model): """Defines the virtual disk update. - :param name: Gets or sets the name of the virtual disk. - :type name: str - :param disk_size_gb: Gets or sets the disk total size. - :type disk_size_gb: int - :param device_key: Gets or sets the device key value. - :type device_key: int - :param disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + :ivar name: Gets or sets the name of the virtual disk. + :vartype name: str + :ivar disk_size_gb: Gets or sets the disk total size. + :vartype disk_size_gb: int + :ivar device_key: Gets or sets the device key value. + :vartype device_key: int + :ivar disk_mode: Gets or sets the disk mode. Possible values include: "persistent", "independent_persistent", "independent_nonpersistent". - :type disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode - :param controller_key: Gets or sets the controller id. - :type controller_key: int - :param unit_number: Gets or sets the unit number of the disk on the controller. - :type unit_number: int - :param device_name: Gets or sets the device name. - :type device_name: str - :param disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", + :vartype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :ivar controller_key: Gets or sets the controller id. + :vartype controller_key: int + :ivar unit_number: Gets or sets the unit number of the disk on the controller. + :vartype unit_number: int + :ivar device_name: Gets or sets the device name. + :vartype device_name: str + :ivar disk_type: Gets or sets the disk backing type. Possible values include: "flat", "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". - :type disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + :vartype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType """ _attribute_map = { @@ -2927,6 +3456,26 @@ def __init__( disk_type: Optional[Union[str, "DiskType"]] = None, **kwargs ): + """ + :keyword name: Gets or sets the name of the virtual disk. + :paramtype name: str + :keyword disk_size_gb: Gets or sets the disk total size. + :paramtype disk_size_gb: int + :keyword device_key: Gets or sets the device key value. + :paramtype device_key: int + :keyword disk_mode: Gets or sets the disk mode. Possible values include: "persistent", + "independent_persistent", "independent_nonpersistent". + :paramtype disk_mode: str or ~azure.mgmt.connectedvmware.models.DiskMode + :keyword controller_key: Gets or sets the controller id. + :paramtype controller_key: int + :keyword unit_number: Gets or sets the unit number of the disk on the controller. + :paramtype unit_number: int + :keyword device_name: Gets or sets the device name. + :paramtype device_name: str + :keyword disk_type: Gets or sets the disk backing type. Possible values include: "flat", + "pmem", "rawphysical", "rawvirtual", "sparse", "sesparse", "unknown". + :paramtype disk_type: str or ~azure.mgmt.connectedvmware.models.DiskType + """ super(VirtualDiskUpdate, self).__init__(**kwargs) self.name = name self.disk_size_gb = disk_size_gb @@ -2945,63 +3494,63 @@ class VirtualMachine(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str - :param identity: The identity of the resource. - :type identity: ~azure.mgmt.connectedvmware.models.Identity - :param resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + :vartype kind: str + :ivar identity: The identity of the resource. + :vartype identity: ~azure.mgmt.connectedvmware.models.Identity + :ivar resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this virtual machine will deploy. - :type resource_pool_id: str - :param template_id: Gets or sets the ARM Id of the template resource to deploy the virtual + :vartype resource_pool_id: str + :ivar template_id: Gets or sets the ARM Id of the template resource to deploy the virtual machine. - :type template_id: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool + :vartype template_id: str + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource pool resides. - :type v_center_id: str - :param placement_profile: Placement properties. - :type placement_profile: ~azure.mgmt.connectedvmware.models.PlacementProfile - :param os_profile: OS properties. - :type os_profile: ~azure.mgmt.connectedvmware.models.OsProfile - :param hardware_profile: Hardware properties. - :type hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile - :param network_profile: Network properties. - :type network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfile - :param storage_profile: Storage properties. - :type storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfile - :param guest_agent_profile: Guest agent status properties. - :type guest_agent_profile: ~azure.mgmt.connectedvmware.models.GuestAgentProfile - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual + :vartype v_center_id: str + :ivar placement_profile: Placement properties. + :vartype placement_profile: ~azure.mgmt.connectedvmware.models.PlacementProfile + :ivar os_profile: OS properties. + :vartype os_profile: ~azure.mgmt.connectedvmware.models.OsProfile + :ivar hardware_profile: Hardware properties. + :vartype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :ivar network_profile: Network properties. + :vartype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfile + :ivar storage_profile: Storage properties. + :vartype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfile + :ivar guest_agent_profile: Guest agent status properties. + :vartype guest_agent_profile: ~azure.mgmt.connectedvmware.models.GuestAgentProfile + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual machine. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the virtual machine. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the virtual machine. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the virtual machine. :vartype mo_name: str :ivar folder_path: Gets or sets the folder path of the vm. :vartype folder_path: str :ivar instance_uuid: Gets or sets the instance uuid of the vm. :vartype instance_uuid: str - :param smbios_uuid: Gets or sets the SMBIOS UUID of the vm. - :type smbios_uuid: str - :param firmware_type: Firmware type. Possible values include: "bios", "efi". - :type firmware_type: str or ~azure.mgmt.connectedvmware.models.FirmwareType + :ivar smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :vartype smbios_uuid: str + :ivar firmware_type: Firmware type. Possible values include: "bios", "efi". + :vartype firmware_type: str or ~azure.mgmt.connectedvmware.models.FirmwareType :ivar power_state: Gets the power state of the virtual machine. :vartype power_state: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. @@ -3090,6 +3639,51 @@ def __init__( firmware_type: Optional[Union[str, "FirmwareType"]] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword identity: The identity of the resource. + :paramtype identity: ~azure.mgmt.connectedvmware.models.Identity + :keyword resource_pool_id: Gets or sets the ARM Id of the resourcePool resource on which this + virtual machine will + deploy. + :paramtype resource_pool_id: str + :keyword template_id: Gets or sets the ARM Id of the template resource to deploy the virtual + machine. + :paramtype template_id: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this resource + pool resides. + :paramtype v_center_id: str + :keyword placement_profile: Placement properties. + :paramtype placement_profile: ~azure.mgmt.connectedvmware.models.PlacementProfile + :keyword os_profile: OS properties. + :paramtype os_profile: ~azure.mgmt.connectedvmware.models.OsProfile + :keyword hardware_profile: Hardware properties. + :paramtype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :keyword network_profile: Network properties. + :paramtype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfile + :keyword storage_profile: Storage properties. + :paramtype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfile + :keyword guest_agent_profile: Guest agent status properties. + :paramtype guest_agent_profile: ~azure.mgmt.connectedvmware.models.GuestAgentProfile + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + virtual machine. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the virtual machine. + :paramtype inventory_item_id: str + :keyword smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :paramtype smbios_uuid: str + :keyword firmware_type: Firmware type. Possible values include: "bios", "efi". + :paramtype firmware_type: str or ~azure.mgmt.connectedvmware.models.FirmwareType + """ super(VirtualMachine, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -3131,36 +3725,36 @@ class VirtualMachineInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + :ivar os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", "Other". - :type os_type: str or ~azure.mgmt.connectedvmware.models.OsType - :param os_name: Gets or sets os name. - :type os_name: str - :param ip_addresses: Gets or sets the nic ip addresses. - :type ip_addresses: list[str] - :param folder_path: Gets or sets the folder path of the vm. - :type folder_path: str - :param host: Host inventory resource details. - :type host: ~azure.mgmt.connectedvmware.models.InventoryItemDetails - :param resource_pool: ResourcePool inventory resource details. - :type resource_pool: ~azure.mgmt.connectedvmware.models.InventoryItemDetails - :param instance_uuid: Gets or sets the instance uuid of the vm. - :type instance_uuid: str - :param smbios_uuid: Gets or sets the SMBIOS UUID of the vm. - :type smbios_uuid: str + :vartype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :ivar os_name: Gets or sets os name. + :vartype os_name: str + :ivar ip_addresses: Gets or sets the nic ip addresses. + :vartype ip_addresses: list[str] + :ivar folder_path: Gets or sets the folder path of the vm. + :vartype folder_path: str + :ivar host: Host inventory resource details. + :vartype host: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar resource_pool: ResourcePool inventory resource details. + :vartype resource_pool: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :ivar instance_uuid: Gets or sets the instance uuid of the vm. + :vartype instance_uuid: str + :ivar smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :vartype smbios_uuid: str :ivar power_state: Gets the power state of the virtual machine. :vartype power_state: str :ivar tools_running_status: Gets or sets the current running status of VMware Tools running in @@ -3218,6 +3812,33 @@ def __init__( smbios_uuid: Optional[str] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + "Other". + :paramtype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :keyword os_name: Gets or sets os name. + :paramtype os_name: str + :keyword ip_addresses: Gets or sets the nic ip addresses. + :paramtype ip_addresses: list[str] + :keyword folder_path: Gets or sets the folder path of the vm. + :paramtype folder_path: str + :keyword host: Host inventory resource details. + :paramtype host: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :keyword resource_pool: ResourcePool inventory resource details. + :paramtype resource_pool: ~azure.mgmt.connectedvmware.models.InventoryItemDetails + :keyword instance_uuid: Gets or sets the instance uuid of the vm. + :paramtype instance_uuid: str + :keyword smbios_uuid: Gets or sets the SMBIOS UUID of the vm. + :paramtype smbios_uuid: str + """ super(VirtualMachineInventoryItem, self).__init__(managed_resource_id=managed_resource_id, mo_ref_id=mo_ref_id, mo_name=mo_name, **kwargs) self.inventory_type = 'VirtualMachine' # type: str self.os_type = os_type @@ -3239,10 +3860,10 @@ class VirtualMachinesList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VirtualMachines. - :type next_link: str - :param value: Required. Array of VirtualMachines. - :type value: list[~azure.mgmt.connectedvmware.models.VirtualMachine] + :ivar next_link: Url to follow for getting next page of VirtualMachines. + :vartype next_link: str + :ivar value: Required. Array of VirtualMachines. + :vartype value: list[~azure.mgmt.connectedvmware.models.VirtualMachine] """ _validation = { @@ -3261,6 +3882,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VirtualMachines. + :paramtype next_link: str + :keyword value: Required. Array of VirtualMachines. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VirtualMachine] + """ super(VirtualMachinesList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -3273,35 +3900,35 @@ class VirtualMachineTemplate(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual machine template. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the virtual machine template. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the virtual machine template. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the virtual machine template. :vartype mo_name: str :ivar memory_size_mb: Gets or sets memory size in MBs for the template. @@ -3403,6 +4030,28 @@ def __init__( inventory_item_id: Optional[str] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + virtual machine + template. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the virtual machine + template. + :paramtype inventory_item_id: str + """ super(VirtualMachineTemplate, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -3440,33 +4089,33 @@ class VirtualMachineTemplateInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str - :param memory_size_mb: Gets or sets memory size in MBs for the template. - :type memory_size_mb: int - :param num_cp_us: Gets or sets the number of vCPUs for the template. - :type num_cp_us: int - :param num_cores_per_socket: Gets or sets the number of cores per socket for the template. + :ivar memory_size_mb: Gets or sets memory size in MBs for the template. + :vartype memory_size_mb: int + :ivar num_cp_us: Gets or sets the number of vCPUs for the template. + :vartype num_cp_us: int + :ivar num_cores_per_socket: Gets or sets the number of cores per socket for the template. Defaults to 1 if unspecified. - :type num_cores_per_socket: int - :param os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + :vartype num_cores_per_socket: int + :ivar os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", "Other". - :type os_type: str or ~azure.mgmt.connectedvmware.models.OsType - :param os_name: Gets or sets os name. - :type os_name: str - :param folder_path: Gets or sets the folder path of the template. - :type folder_path: str + :vartype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :ivar os_name: Gets or sets os name. + :vartype os_name: str + :ivar folder_path: Gets or sets the folder path of the template. + :vartype folder_path: str """ _validation = { @@ -3502,6 +4151,30 @@ def __init__( folder_path: Optional[str] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + :keyword memory_size_mb: Gets or sets memory size in MBs for the template. + :paramtype memory_size_mb: int + :keyword num_cp_us: Gets or sets the number of vCPUs for the template. + :paramtype num_cp_us: int + :keyword num_cores_per_socket: Gets or sets the number of cores per socket for the template. + Defaults to 1 if unspecified. + :paramtype num_cores_per_socket: int + :keyword os_type: Gets or sets the type of the os. Possible values include: "Windows", "Linux", + "Other". + :paramtype os_type: str or ~azure.mgmt.connectedvmware.models.OsType + :keyword os_name: Gets or sets os name. + :paramtype os_name: str + :keyword folder_path: Gets or sets the folder path of the template. + :paramtype folder_path: str + """ super(VirtualMachineTemplateInventoryItem, self).__init__(managed_resource_id=managed_resource_id, mo_ref_id=mo_ref_id, mo_name=mo_name, **kwargs) self.inventory_type = 'VirtualMachineTemplate' # type: str self.memory_size_mb = memory_size_mb @@ -3517,10 +4190,10 @@ class VirtualMachineTemplatesList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VirtualMachineTemplates. - :type next_link: str - :param value: Required. Array of VirtualMachineTemplates. - :type value: list[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] + :ivar next_link: Url to follow for getting next page of VirtualMachineTemplates. + :vartype next_link: str + :ivar value: Required. Array of VirtualMachineTemplates. + :vartype value: list[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] """ _validation = { @@ -3539,6 +4212,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VirtualMachineTemplates. + :paramtype next_link: str + :keyword value: Required. Array of VirtualMachineTemplates. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] + """ super(VirtualMachineTemplatesList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -3547,16 +4226,16 @@ def __init__( class VirtualMachineUpdate(msrest.serialization.Model): """Defines the virtualMachineUpdate. - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] - :param identity: The identity of the resource. - :type identity: ~azure.mgmt.connectedvmware.models.Identity - :param hardware_profile: Defines the resource properties. - :type hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile - :param storage_profile: Defines the resource update properties. - :type storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfileUpdate - :param network_profile: Defines the update resource properties. - :type network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfileUpdate + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] + :ivar identity: The identity of the resource. + :vartype identity: ~azure.mgmt.connectedvmware.models.Identity + :ivar hardware_profile: Defines the resource properties. + :vartype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :ivar storage_profile: Defines the resource update properties. + :vartype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfileUpdate + :ivar network_profile: Defines the update resource properties. + :vartype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfileUpdate """ _attribute_map = { @@ -3577,6 +4256,18 @@ def __init__( network_profile: Optional["NetworkProfileUpdate"] = None, **kwargs ): + """ + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword identity: The identity of the resource. + :paramtype identity: ~azure.mgmt.connectedvmware.models.Identity + :keyword hardware_profile: Defines the resource properties. + :paramtype hardware_profile: ~azure.mgmt.connectedvmware.models.HardwareProfile + :keyword storage_profile: Defines the resource update properties. + :paramtype storage_profile: ~azure.mgmt.connectedvmware.models.StorageProfileUpdate + :keyword network_profile: Defines the update resource properties. + :paramtype network_profile: ~azure.mgmt.connectedvmware.models.NetworkProfileUpdate + """ super(VirtualMachineUpdate, self).__init__(**kwargs) self.tags = tags self.identity = identity @@ -3592,34 +4283,34 @@ class VirtualNetwork(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param location: Required. Gets or sets the location. - :type location: str - :param extended_location: Gets or sets the extended location. - :type extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :ivar location: Required. Gets or sets the location. + :vartype location: str + :ivar extended_location: Gets or sets the extended location. + :vartype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation :ivar system_data: The system data. :vartype system_data: ~azure.mgmt.connectedvmware.models.SystemData - :param tags: A set of tags. Gets or sets the Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Gets or sets the Resource tags. + :vartype tags: dict[str, str] :ivar name: Gets or sets the name. :vartype name: str :ivar id: Gets or sets the Id. :vartype id: str :ivar type: Gets or sets the type of the resource. :vartype type: str - :param kind: Metadata used by portal/tooling/etc to render different UX experiences for + :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value. - :type kind: str + :vartype kind: str :ivar uuid: Gets or sets a unique identifier for this resource. :vartype uuid: str - :param v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + :ivar v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template resides. - :type v_center_id: str - :param mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual + :vartype v_center_id: str + :ivar mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the virtual network. - :type mo_ref_id: str - :param inventory_item_id: Gets or sets the inventory Item ID for the virtual network. - :type inventory_item_id: str + :vartype mo_ref_id: str + :ivar inventory_item_id: Gets or sets the inventory Item ID for the virtual network. + :vartype inventory_item_id: str :ivar mo_name: Gets or sets the vCenter Managed Object name for the virtual network. :vartype mo_name: str :ivar custom_resource_name: Gets the name of the corresponding resource in Kubernetes. @@ -3674,6 +4365,26 @@ def __init__( inventory_item_id: Optional[str] = None, **kwargs ): + """ + :keyword location: Required. Gets or sets the location. + :paramtype location: str + :keyword extended_location: Gets or sets the extended location. + :paramtype extended_location: ~azure.mgmt.connectedvmware.models.ExtendedLocation + :keyword tags: A set of tags. Gets or sets the Resource tags. + :paramtype tags: dict[str, str] + :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for + resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, + the resource provider must validate and persist this value. + :paramtype kind: str + :keyword v_center_id: Gets or sets the ARM Id of the vCenter resource in which this template + resides. + :paramtype v_center_id: str + :keyword mo_ref_id: Gets or sets the vCenter MoRef (Managed Object Reference) ID for the + virtual network. + :paramtype mo_ref_id: str + :keyword inventory_item_id: Gets or sets the inventory Item ID for the virtual network. + :paramtype inventory_item_id: str + """ super(VirtualNetwork, self).__init__(**kwargs) self.location = location self.extended_location = extended_location @@ -3700,17 +4411,17 @@ class VirtualNetworkInventoryItem(InventoryItemProperties): All required parameters must be populated in order to send to Azure. - :param inventory_type: Required. They inventory type.Constant filled by server. Possible - values include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", + :ivar inventory_type: Required. They inventory type.Constant filled by server. Possible values + include: "ResourcePool", "VirtualMachine", "VirtualMachineTemplate", "VirtualNetwork", "Cluster", "Datastore", "Host". - :type inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType - :param managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory + :vartype inventory_type: str or ~azure.mgmt.connectedvmware.models.InventoryType + :ivar managed_resource_id: Gets or sets the tracked resource id corresponding to the inventory resource. - :type managed_resource_id: str - :param mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. - :type mo_ref_id: str - :param mo_name: Gets or sets the vCenter Managed Object name for the inventory item. - :type mo_name: str + :vartype managed_resource_id: str + :ivar mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory item. + :vartype mo_ref_id: str + :ivar mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :vartype mo_name: str :ivar provisioning_state: Gets or sets the provisioning state. :vartype provisioning_state: str """ @@ -3736,6 +4447,16 @@ def __init__( mo_name: Optional[str] = None, **kwargs ): + """ + :keyword managed_resource_id: Gets or sets the tracked resource id corresponding to the + inventory resource. + :paramtype managed_resource_id: str + :keyword mo_ref_id: Gets or sets the MoRef (Managed Object Reference) ID for the inventory + item. + :paramtype mo_ref_id: str + :keyword mo_name: Gets or sets the vCenter Managed Object name for the inventory item. + :paramtype mo_name: str + """ super(VirtualNetworkInventoryItem, self).__init__(managed_resource_id=managed_resource_id, mo_ref_id=mo_ref_id, mo_name=mo_name, **kwargs) self.inventory_type = 'VirtualNetwork' # type: str @@ -3745,10 +4466,10 @@ class VirtualNetworksList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of VirtualNetworks. - :type next_link: str - :param value: Required. Array of VirtualNetworks. - :type value: list[~azure.mgmt.connectedvmware.models.VirtualNetwork] + :ivar next_link: Url to follow for getting next page of VirtualNetworks. + :vartype next_link: str + :ivar value: Required. Array of VirtualNetworks. + :vartype value: list[~azure.mgmt.connectedvmware.models.VirtualNetwork] """ _validation = { @@ -3767,6 +4488,12 @@ def __init__( next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of VirtualNetworks. + :paramtype next_link: str + :keyword value: Required. Array of VirtualNetworks. + :paramtype value: list[~azure.mgmt.connectedvmware.models.VirtualNetwork] + """ super(VirtualNetworksList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -3775,18 +4502,18 @@ def __init__( class VirtualSCSIController(msrest.serialization.Model): """This data object type contains the properties of a SCSI controller device attached to a virtual machine that is reported by the controller. - :param type: Gets or sets the controller type. Possible values include: "lsilogic", "buslogic", + :ivar type: Gets or sets the controller type. Possible values include: "lsilogic", "buslogic", "pvscsi", "lsilogicsas". - :type type: str or ~azure.mgmt.connectedvmware.models.SCSIControllerType - :param controller_key: Gets or sets the key of the controller. - :type controller_key: int - :param bus_number: Gets or sets the bus number of the controller. - :type bus_number: int - :param scsi_ctlr_unit_number: Gets or sets the SCSI controller unit number. - :type scsi_ctlr_unit_number: int - :param sharing: Gets or sets the sharing mode. Possible values include: "noSharing", + :vartype type: str or ~azure.mgmt.connectedvmware.models.SCSIControllerType + :ivar controller_key: Gets or sets the key of the controller. + :vartype controller_key: int + :ivar bus_number: Gets or sets the bus number of the controller. + :vartype bus_number: int + :ivar scsi_ctlr_unit_number: Gets or sets the SCSI controller unit number. + :vartype scsi_ctlr_unit_number: int + :ivar sharing: Gets or sets the sharing mode. Possible values include: "noSharing", "physicalSharing", "virtualSharing". - :type sharing: str or ~azure.mgmt.connectedvmware.models.VirtualSCSISharing + :vartype sharing: str or ~azure.mgmt.connectedvmware.models.VirtualSCSISharing """ _attribute_map = { @@ -3807,6 +4534,20 @@ def __init__( sharing: Optional[Union[str, "VirtualSCSISharing"]] = None, **kwargs ): + """ + :keyword type: Gets or sets the controller type. Possible values include: "lsilogic", + "buslogic", "pvscsi", "lsilogicsas". + :paramtype type: str or ~azure.mgmt.connectedvmware.models.SCSIControllerType + :keyword controller_key: Gets or sets the key of the controller. + :paramtype controller_key: int + :keyword bus_number: Gets or sets the bus number of the controller. + :paramtype bus_number: int + :keyword scsi_ctlr_unit_number: Gets or sets the SCSI controller unit number. + :paramtype scsi_ctlr_unit_number: int + :keyword sharing: Gets or sets the sharing mode. Possible values include: "noSharing", + "physicalSharing", "virtualSharing". + :paramtype sharing: str or ~azure.mgmt.connectedvmware.models.VirtualSCSISharing + """ super(VirtualSCSIController, self).__init__(**kwargs) self.type = type self.controller_key = controller_key diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_clusters_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_clusters_operations.py index 5fa8af04a2c..3a0941b97d0 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_clusters_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_clusters_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,257 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + cluster_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + cluster_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request( + subscription_id, # type: str + resource_group_name, # type: str + cluster_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + cluster_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/clusters") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class ClustersOperations(object): """ClustersOperations operations. @@ -60,42 +293,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'Cluster') + _json = self._serialize.body(body, 'Cluster') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('Cluster', pipeline_response) @@ -107,8 +335,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +360,18 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.Cluster :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either Cluster or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.Cluster"] lro_delay = kwargs.pop( @@ -149,27 +384,22 @@ def begin_create( resource_group_name=resource_group_name, cluster_name=cluster_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('Cluster', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +409,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +439,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Cluster', pipeline_response) @@ -243,8 +471,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + + @distributed_trace def update( self, resource_group_name, # type: str @@ -273,41 +504,37 @@ def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Cluster', pipeline_response) @@ -316,9 +543,11 @@ def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore - def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str cluster_name, # type: str @@ -331,43 +560,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str cluster_name, # type: str @@ -387,14 +613,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -407,24 +636,18 @@ def begin_delete( resource_group_name=resource_group_name, cluster_name=cluster_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -434,10 +657,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters/{clusterName}"} # type: ignore + @distributed_trace def list( self, **kwargs # type: Any @@ -452,39 +676,38 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.ClustersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ClustersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('ClustersList', pipeline_response) + deserialized = self._deserialize("ClustersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -493,21 +716,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/clusters'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/clusters"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -525,40 +754,40 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.ClustersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ClustersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('ClustersList', pipeline_response) + deserialized = self._deserialize("ClustersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -567,17 +796,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/clusters"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_datastores_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_datastores_operations.py index d5f88939bed..4f81f336d32 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_datastores_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_datastores_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,257 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + datastore_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "datastoreName": _SERIALIZER.url("datastore_name", datastore_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + datastore_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "datastoreName": _SERIALIZER.url("datastore_name", datastore_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request( + subscription_id, # type: str + resource_group_name, # type: str + datastore_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "datastoreName": _SERIALIZER.url("datastore_name", datastore_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + datastore_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "datastoreName": _SERIALIZER.url("datastore_name", datastore_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/datastores") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class DatastoresOperations(object): """DatastoresOperations operations. @@ -60,42 +293,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'Datastore') + _json = self._serialize.body(body, 'Datastore') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('Datastore', pipeline_response) @@ -107,8 +335,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +360,18 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.Datastore :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either Datastore or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.Datastore] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.Datastore"] lro_delay = kwargs.pop( @@ -149,27 +384,22 @@ def begin_create( resource_group_name=resource_group_name, datastore_name=datastore_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('Datastore', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +409,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +439,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Datastore', pipeline_response) @@ -243,8 +471,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + + @distributed_trace def update( self, resource_group_name, # type: str @@ -273,41 +504,37 @@ def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Datastore', pipeline_response) @@ -316,9 +543,11 @@ def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore - def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str datastore_name, # type: str @@ -331,43 +560,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + datastore_name=datastore_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str datastore_name, # type: str @@ -387,14 +613,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -407,24 +636,18 @@ def begin_delete( resource_group_name=resource_group_name, datastore_name=datastore_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'datastoreName': self._serialize.url("datastore_name", datastore_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -434,10 +657,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores/{datastoreName}"} # type: ignore + @distributed_trace def list( self, **kwargs # type: Any @@ -452,39 +676,38 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.DatastoresList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.DatastoresList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('DatastoresList', pipeline_response) + deserialized = self._deserialize("DatastoresList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -493,21 +716,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/datastores'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/datastores"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -525,40 +754,40 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.DatastoresList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.DatastoresList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('DatastoresList', pipeline_response) + deserialized = self._deserialize("DatastoresList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -567,17 +796,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/datastores"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_guest_agents_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_guest_agents_operations.py index 07d175b6d9c..ffd467c188e 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_guest_agents_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_guest_agents_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,189 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_vm_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class GuestAgentsOperations(object): """GuestAgentsOperations operations. @@ -61,43 +226,38 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'GuestAgent') + _json = self._serialize.body(body, 'GuestAgent') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + name=name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('GuestAgent', pipeline_response) @@ -109,8 +269,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -134,14 +297,18 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.GuestAgent :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either GuestAgent or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.GuestAgent] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.GuestAgent"] lro_delay = kwargs.pop( @@ -155,28 +322,22 @@ def begin_create( virtual_machine_name=virtual_machine_name, name=name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('GuestAgent', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -186,10 +347,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + @distributed_trace def get( self, resource_group_name, # type: str @@ -218,34 +380,31 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + name=name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('GuestAgent', pipeline_response) @@ -254,9 +413,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore - def _delete_initial( + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -269,42 +430,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + name=name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -324,14 +483,17 @@ def begin_delete( :type name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -344,25 +506,18 @@ def begin_delete( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, name=name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -372,10 +527,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents/{name}"} # type: ignore + @distributed_trace def list_by_vm( self, resource_group_name, # type: str @@ -396,41 +552,42 @@ def list_by_vm( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.GuestAgentList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.GuestAgentList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_vm.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self.list_by_vm.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('GuestAgentList', pipeline_response) + deserialized = self._deserialize("GuestAgentList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -439,17 +596,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_vm.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents'} # type: ignore + list_by_vm.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/guestAgents"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hosts_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hosts_operations.py index 94d7caa8278..06b1f9408a8 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hosts_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hosts_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,257 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + host_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "hostName": _SERIALIZER.url("host_name", host_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + host_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "hostName": _SERIALIZER.url("host_name", host_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request( + subscription_id, # type: str + resource_group_name, # type: str + host_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "hostName": _SERIALIZER.url("host_name", host_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + host_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "hostName": _SERIALIZER.url("host_name", host_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/hosts") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class HostsOperations(object): """HostsOperations operations. @@ -60,42 +293,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'Host') + _json = self._serialize.body(body, 'Host') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('Host', pipeline_response) @@ -107,8 +335,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +360,18 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.Host :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either Host or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.Host] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.Host"] lro_delay = kwargs.pop( @@ -149,27 +384,22 @@ def begin_create( resource_group_name=resource_group_name, host_name=host_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('Host', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +409,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +439,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Host', pipeline_response) @@ -243,8 +471,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + + @distributed_trace def update( self, resource_group_name, # type: str @@ -273,41 +504,37 @@ def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('Host', pipeline_response) @@ -316,9 +543,11 @@ def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore - def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str host_name, # type: str @@ -331,43 +560,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + host_name=host_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str host_name, # type: str @@ -387,14 +613,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -407,24 +636,18 @@ def begin_delete( resource_group_name=resource_group_name, host_name=host_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'hostName': self._serialize.url("host_name", host_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -434,10 +657,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts/{hostName}"} # type: ignore + @distributed_trace def list( self, **kwargs # type: Any @@ -452,39 +676,38 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.HostsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.HostsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('HostsList', pipeline_response) + deserialized = self._deserialize("HostsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -493,21 +716,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/hosts'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/hosts"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -525,40 +754,40 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.HostsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.HostsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('HostsList', pipeline_response) + deserialized = self._deserialize("HostsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -567,17 +796,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/hosts"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hybrid_identity_metadata_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hybrid_identity_metadata_operations.py index 3c9de2f0868..5d5794ea1eb 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hybrid_identity_metadata_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_hybrid_identity_metadata_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,23 +7,187 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + metadata_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + "metadataName": _SERIALIZER.url("metadata_name", metadata_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + metadata_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + "metadataName": _SERIALIZER.url("metadata_name", metadata_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + metadata_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + "metadataName": _SERIALIZER.url("metadata_name", metadata_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_vm_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class HybridIdentityMetadataOperations(object): """HybridIdentityMetadataOperations operations. @@ -45,6 +210,7 @@ def __init__(self, client, config, serializer, deserializer): self._deserialize = deserializer self._config = config + @distributed_trace def create( self, resource_group_name, # type: str @@ -76,42 +242,38 @@ def create( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'metadataName': self._serialize.url("metadata_name", metadata_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'HybridIdentityMetadata') + _json = self._serialize.body(body, 'HybridIdentityMetadata') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + metadata_name=metadata_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('HybridIdentityMetadata', pipeline_response) @@ -120,8 +282,11 @@ def create( return cls(pipeline_response, deserialized, {}) return deserialized - create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}'} # type: ignore + create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}"} # type: ignore + + + @distributed_trace def get( self, resource_group_name, # type: str @@ -150,34 +315,31 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'metadataName': self._serialize.url("metadata_name", metadata_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + metadata_name=metadata_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('HybridIdentityMetadata', pipeline_response) @@ -186,9 +348,12 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}'} # type: ignore - def delete( + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}"} # type: ignore + + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -216,41 +381,40 @@ def delete( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - 'metadataName': self._serialize.url("metadata_name", metadata_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + metadata_name=metadata_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}'} # type: ignore + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata/{metadataName}"} # type: ignore + + @distributed_trace def list_by_vm( self, resource_group_name, # type: str @@ -267,45 +431,48 @@ def list_by_vm( :param virtual_machine_name: Name of the vm. :type virtual_machine_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either HybridIdentityMetadataList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.HybridIdentityMetadataList] + :return: An iterator like instance of either HybridIdentityMetadataList or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.HybridIdentityMetadataList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.HybridIdentityMetadataList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_vm.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self.list_by_vm.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_vm_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('HybridIdentityMetadataList', pipeline_response) + deserialized = self._deserialize("HybridIdentityMetadataList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -314,17 +481,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_vm.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata'} # type: ignore + list_by_vm.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/hybridIdentityMetadata"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_inventory_items_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_inventory_items_operations.py index 1cdcbb485fc..3ba1872bd55 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_inventory_items_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_inventory_items_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,23 +7,187 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + inventory_item_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + "inventoryItemName": _SERIALIZER.url("inventory_item_name", inventory_item_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + inventory_item_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + "inventoryItemName": _SERIALIZER.url("inventory_item_name", inventory_item_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + inventory_item_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + "inventoryItemName": _SERIALIZER.url("inventory_item_name", inventory_item_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_v_center_request( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class InventoryItemsOperations(object): """InventoryItemsOperations operations. @@ -45,6 +210,7 @@ def __init__(self, client, config, serializer, deserializer): self._deserialize = deserializer self._config = config + @distributed_trace def create( self, resource_group_name, # type: str @@ -76,42 +242,38 @@ def create( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - 'inventoryItemName': self._serialize.url("inventory_item_name", inventory_item_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'InventoryItem') + _json = self._serialize.body(body, 'InventoryItem') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + inventory_item_name=inventory_item_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('InventoryItem', pipeline_response) @@ -120,8 +282,11 @@ def create( return cls(pipeline_response, deserialized, {}) return deserialized - create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}'} # type: ignore + create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}"} # type: ignore + + + @distributed_trace def get( self, resource_group_name, # type: str @@ -150,34 +315,31 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - 'inventoryItemName': self._serialize.url("inventory_item_name", inventory_item_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + inventory_item_name=inventory_item_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('InventoryItem', pipeline_response) @@ -186,9 +348,12 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}'} # type: ignore - def delete( + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}"} # type: ignore + + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str vcenter_name, # type: str @@ -216,41 +381,40 @@ def delete( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - 'inventoryItemName': self._serialize.url("inventory_item_name", inventory_item_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + inventory_item_name=inventory_item_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}'} # type: ignore + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems/{inventoryItemName}"} # type: ignore + + @distributed_trace def list_by_v_center( self, resource_group_name, # type: str @@ -271,41 +435,42 @@ def list_by_v_center( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.InventoryItemsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.InventoryItemsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_v_center.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_v_center_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + template_url=self.list_by_v_center.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_v_center_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('InventoryItemsList', pipeline_response) + deserialized = self._deserialize("InventoryItemsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -314,17 +479,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_v_center.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems'} # type: ignore + list_by_v_center.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}/inventoryItems"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_machine_extensions_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_machine_extensions_operations.py index cb85d62c88c..cab4b527e3c 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_machine_extensions_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_machine_extensions_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,234 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_or_update_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + name, # type: str + extension_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + "extensionName": _SERIALIZER.url("extension_name", extension_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + name, # type: str + extension_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + "extensionName": _SERIALIZER.url("extension_name", extension_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + name, # type: str + extension_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + "extensionName": _SERIALIZER.url("extension_name", extension_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + name, # type: str + extension_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + "extensionName": _SERIALIZER.url("extension_name", extension_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + resource_group_name, # type: str + name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + expand = kwargs.pop('expand', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "name": _SERIALIZER.url("name", name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class MachineExtensionsOperations(object): """MachineExtensionsOperations operations. @@ -61,40 +271,35 @@ def _create_or_update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_or_update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(extension_parameters, 'MachineExtension') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(extension_parameters, 'MachineExtension') + + request = build_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('MachineExtension', pipeline_response) @@ -106,8 +311,11 @@ def _create_or_update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + + @distributed_trace def begin_create_or_update( self, resource_group_name, # type: str @@ -129,14 +337,19 @@ def begin_create_or_update( :type extension_parameters: ~azure.mgmt.connectedvmware.models.MachineExtension :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either MachineExtension or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either MachineExtension or the result of + cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.MachineExtension] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.MachineExtension"] lro_delay = kwargs.pop( @@ -150,28 +363,22 @@ def begin_create_or_update( name=name, extension_name=extension_name, extension_parameters=extension_parameters, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('MachineExtension', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -181,9 +388,9 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore def _update_initial( self, @@ -199,40 +406,35 @@ def _update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(extension_parameters, 'MachineExtensionUpdate') - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(extension_parameters, 'MachineExtensionUpdate') + + request = build_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('MachineExtension', pipeline_response) @@ -244,8 +446,11 @@ def _update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + + @distributed_trace def begin_update( self, resource_group_name, # type: str @@ -267,14 +472,19 @@ def begin_update( :type extension_parameters: ~azure.mgmt.connectedvmware.models.MachineExtensionUpdate :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either MachineExtension or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either MachineExtension or the result of + cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.MachineExtension] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.MachineExtension"] lro_delay = kwargs.pop( @@ -288,28 +498,22 @@ def begin_update( name=name, extension_name=extension_name, extension_parameters=extension_parameters, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('MachineExtension', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -319,11 +523,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore - def _delete_initial( + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str name, # type: str @@ -336,42 +540,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str name, # type: str @@ -389,14 +591,17 @@ def begin_delete( :type extension_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -409,25 +614,18 @@ def begin_delete( resource_group_name=resource_group_name, name=name, extension_name=extension_name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -437,10 +635,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -467,34 +666,31 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - 'extensionName': self._serialize.url("extension_name", extension_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + extension_name=extension_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('MachineExtension', pipeline_response) @@ -503,8 +699,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions/{extensionName}"} # type: ignore + + + @distributed_trace def list( self, resource_group_name, # type: str @@ -522,47 +721,50 @@ def list( :param expand: The expand expression to apply on the operation. :type expand: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either MachineExtensionsListResult or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.MachineExtensionsListResult] + :return: An iterator like instance of either MachineExtensionsListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.MachineExtensionsListResult] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.MachineExtensionsListResult"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'name': self._serialize.url("name", name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if expand is not None: - query_parameters['$expand'] = self._serialize.query("expand", expand, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + api_version=api_version, + expand=expand, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + name=name, + api_version=api_version, + expand=expand, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('MachineExtensionsListResult', pipeline_response) + deserialized = self._deserialize("MachineExtensionsListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -571,17 +773,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{name}/extensions"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_operations.py index d9ee0445a02..4658de28228 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,23 +7,57 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._vendor import _convert_request if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_list_request( + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/providers/Microsoft.ConnectedVMwarevSphere/operations") + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class Operations(object): """Operations operations. @@ -45,6 +80,7 @@ def __init__(self, client, config, serializer, deserializer): self._deserialize = deserializer self._config = config + @distributed_trace def list( self, **kwargs # type: Any @@ -57,35 +93,36 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.OperationsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.OperationsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = build_list_request( + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('OperationsList', pipeline_response) + deserialized = self._deserialize("OperationsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -94,17 +131,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/providers/Microsoft.ConnectedVMwarevSphere/operations'} # type: ignore + list.metadata = {'url': "/providers/Microsoft.ConnectedVMwarevSphere/operations"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_resource_pools_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_resource_pools_operations.py index 5a7f67c6035..3db59b98fd4 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_resource_pools_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_resource_pools_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,257 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + resource_pool_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "resourcePoolName": _SERIALIZER.url("resource_pool_name", resource_pool_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + resource_pool_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "resourcePoolName": _SERIALIZER.url("resource_pool_name", resource_pool_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request( + subscription_id, # type: str + resource_group_name, # type: str + resource_pool_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "resourcePoolName": _SERIALIZER.url("resource_pool_name", resource_pool_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + resource_pool_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "resourcePoolName": _SERIALIZER.url("resource_pool_name", resource_pool_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class ResourcePoolsOperations(object): """ResourcePoolsOperations operations. @@ -60,42 +293,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePool') + _json = self._serialize.body(body, 'ResourcePool') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('ResourcePool', pipeline_response) @@ -107,8 +335,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +360,19 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.ResourcePool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either ResourcePool or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ResourcePool or the result of + cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.ResourcePool] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourcePool"] lro_delay = kwargs.pop( @@ -149,27 +385,22 @@ def begin_create( resource_group_name=resource_group_name, resource_pool_name=resource_pool_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('ResourcePool', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +410,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +440,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('ResourcePool', pipeline_response) @@ -243,8 +472,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + + @distributed_trace def update( self, resource_group_name, # type: str @@ -273,41 +505,37 @@ def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('ResourcePool', pipeline_response) @@ -316,9 +544,11 @@ def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore - def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str resource_pool_name, # type: str @@ -331,43 +561,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + resource_pool_name=resource_pool_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str resource_pool_name, # type: str @@ -387,14 +614,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -407,24 +637,18 @@ def begin_delete( resource_group_name=resource_group_name, resource_pool_name=resource_pool_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'resourcePoolName': self._serialize.url("resource_pool_name", resource_pool_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -434,10 +658,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools/{resourcePoolName}"} # type: ignore + @distributed_trace def list( self, **kwargs # type: Any @@ -452,39 +677,38 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.ResourcePoolsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourcePoolsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('ResourcePoolsList', pipeline_response) + deserialized = self._deserialize("ResourcePoolsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -493,21 +717,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -525,40 +755,40 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.ResourcePoolsList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourcePoolsList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('ResourcePoolsList', pipeline_response) + deserialized = self._deserialize("ResourcePoolsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -567,17 +797,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/resourcePools"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_vcenters_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_vcenters_operations.py index d959200f8ae..a5d19e22342 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_vcenters_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_vcenters_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,257 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + vcenter_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vcenterName": _SERIALIZER.url("vcenter_name", vcenter_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/vcenters") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class VCentersOperations(object): """VCentersOperations operations. @@ -60,42 +293,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VCenter') + _json = self._serialize.body(body, 'VCenter') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VCenter', pipeline_response) @@ -107,8 +335,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +360,18 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VCenter :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either VCenter or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.VCenter] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VCenter"] lro_delay = kwargs.pop( @@ -149,27 +384,22 @@ def begin_create( resource_group_name=resource_group_name, vcenter_name=vcenter_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VCenter', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +409,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +439,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VCenter', pipeline_response) @@ -243,8 +471,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + + @distributed_trace def update( self, resource_group_name, # type: str @@ -273,41 +504,37 @@ def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VCenter', pipeline_response) @@ -316,9 +543,11 @@ def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore - def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str vcenter_name, # type: str @@ -331,43 +560,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vcenter_name=vcenter_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str vcenter_name, # type: str @@ -387,14 +613,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -407,24 +636,18 @@ def begin_delete( resource_group_name=resource_group_name, vcenter_name=vcenter_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vcenterName': self._serialize.url("vcenter_name", vcenter_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -434,10 +657,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters/{vcenterName}"} # type: ignore + @distributed_trace def list( self, **kwargs # type: Any @@ -452,39 +676,38 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VCentersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VCentersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VCentersList', pipeline_response) + deserialized = self._deserialize("VCentersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -493,21 +716,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/vcenters'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/vcenters"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -525,40 +754,40 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VCentersList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VCentersList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VCentersList', pipeline_response) + deserialized = self._deserialize("VCentersList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -567,17 +796,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/vcenters"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machine_templates_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machine_templates_operations.py index 27f8bdcf311..b3bae1f2bc2 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machine_templates_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machine_templates_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,257 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_template_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineTemplateName": _SERIALIZER.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_template_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineTemplateName": _SERIALIZER.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_template_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineTemplateName": _SERIALIZER.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_template_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineTemplateName": _SERIALIZER.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class VirtualMachineTemplatesOperations(object): """VirtualMachineTemplatesOperations operations. @@ -60,42 +293,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualMachineTemplate') + _json = self._serialize.body(body, 'VirtualMachineTemplate') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) @@ -107,8 +335,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +360,20 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VirtualMachineTemplate :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either VirtualMachineTemplate or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] - :raises ~azure.core.exceptions.HttpResponseError: + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualMachineTemplate or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.VirtualMachineTemplate] + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachineTemplate"] lro_delay = kwargs.pop( @@ -149,27 +386,22 @@ def begin_create( resource_group_name=resource_group_name, virtual_machine_template_name=virtual_machine_template_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +411,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +441,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) @@ -243,8 +473,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + + @distributed_trace def update( self, resource_group_name, # type: str @@ -273,41 +506,37 @@ def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualMachineTemplate', pipeline_response) @@ -316,9 +545,11 @@ def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore - def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_template_name, # type: str @@ -331,43 +562,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_template_name=virtual_machine_template_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_template_name, # type: str @@ -387,14 +615,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -407,24 +638,18 @@ def begin_delete( resource_group_name=resource_group_name, virtual_machine_template_name=virtual_machine_template_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineTemplateName': self._serialize.url("virtual_machine_template_name", virtual_machine_template_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -434,10 +659,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates/{virtualMachineTemplateName}"} # type: ignore + @distributed_trace def list( self, **kwargs # type: Any @@ -448,43 +674,44 @@ def list( List of virtualMachineTemplates in a subscription. :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VirtualMachineTemplatesList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] + :return: An iterator like instance of either VirtualMachineTemplatesList or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachineTemplatesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachineTemplatesList', pipeline_response) + deserialized = self._deserialize("VirtualMachineTemplatesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -493,21 +720,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -521,44 +754,46 @@ def list_by_resource_group( :param resource_group_name: The Resource Group Name. :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VirtualMachineTemplatesList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] + :return: An iterator like instance of either VirtualMachineTemplatesList or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachineTemplatesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachineTemplatesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachineTemplatesList', pipeline_response) + deserialized = self._deserialize("VirtualMachineTemplatesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -567,17 +802,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachineTemplates"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machines_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machines_operations.py index 15163c2eac4..d7c4b30ee32 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machines_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_machines_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,371 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_stop_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_start_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_restart_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_machine_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineName": _SERIALIZER.url("virtual_machine_name", virtual_machine_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class VirtualMachinesOperations(object): """VirtualMachinesOperations operations. @@ -60,42 +407,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualMachine') + _json = self._serialize.body(body, 'VirtualMachine') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VirtualMachine', pipeline_response) @@ -107,8 +449,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +474,19 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VirtualMachine :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either VirtualMachine or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualMachine or the result of + cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.VirtualMachine] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachine"] lro_delay = kwargs.pop( @@ -149,27 +499,22 @@ def begin_create( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualMachine', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +524,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +554,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualMachine', pipeline_response) @@ -243,7 +586,9 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + def _update_initial( self, @@ -252,49 +597,45 @@ def _update_initial( body=None, # type: Optional["_models.VirtualMachineUpdate"] **kwargs # type: Any ): - # type: (...) -> "_models.VirtualMachine" - cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachine"] + # type: (...) -> Optional["_models.VirtualMachine"] + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualMachine"]] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualMachineUpdate') + _json = self._serialize.body(body, 'VirtualMachineUpdate') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response - if response.status_code not in [200, 201]: + if response.status_code not in [200, 201, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + deserialized = None if response.status_code == 200: deserialized = self._deserialize('VirtualMachine', pipeline_response) @@ -305,8 +646,11 @@ def _update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + + + @distributed_trace def begin_update( self, resource_group_name, # type: str @@ -327,14 +671,19 @@ def begin_update( :type body: ~azure.mgmt.connectedvmware.models.VirtualMachineUpdate :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either VirtualMachine or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualMachine or the result of + cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.VirtualMachine] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachine"] lro_delay = kwargs.pop( @@ -347,27 +696,22 @@ def begin_update( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualMachine', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -377,11 +721,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - def _delete_initial( + begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -394,43 +738,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -450,14 +791,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -470,24 +814,18 @@ def begin_delete( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -497,11 +835,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}"} # type: ignore - def _stop_initial( + def _stop_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -514,49 +852,46 @@ def _stop_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._stop_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'StopVirtualMachineOptions') + _json = self._serialize.body(body, 'StopVirtualMachineOptions') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_stop_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _stop_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop'} # type: ignore + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop"} # type: ignore + - def begin_stop( + @distributed_trace + def begin_stop( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -576,14 +911,18 @@ def begin_stop( :type body: ~azure.mgmt.connectedvmware.models.StopVirtualMachineOptions :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -596,24 +935,19 @@ def begin_stop( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -623,11 +957,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_stop.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/stop"} # type: ignore - def _start_initial( + def _start_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -639,41 +973,39 @@ def _start_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._start_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_start_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self._start_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.post(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _start_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start'} # type: ignore + _start_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start"} # type: ignore - def begin_start( + + @distributed_trace + def begin_start( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -690,14 +1022,17 @@ def begin_start( :type virtual_machine_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -709,24 +1044,18 @@ def begin_start( raw_result = self._start_initial( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -736,11 +1065,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_start.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/start"} # type: ignore - def _restart_initial( + def _restart_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -752,41 +1081,39 @@ def _restart_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._restart_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_restart_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_machine_name=virtual_machine_name, + api_version=api_version, + template_url=self._restart_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.post(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _restart_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart'} # type: ignore + _restart_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart"} # type: ignore + - def begin_restart( + @distributed_trace + def begin_restart( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_machine_name, # type: str @@ -803,14 +1130,17 @@ def begin_restart( :type virtual_machine_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -822,24 +1152,18 @@ def begin_restart( raw_result = self._restart_initial( resource_group_name=resource_group_name, virtual_machine_name=virtual_machine_name, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualMachineName': self._serialize.url("virtual_machine_name", virtual_machine_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -849,10 +1173,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_restart.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_restart.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines/{virtualMachineName}/restart"} # type: ignore + + @distributed_trace def list( self, **kwargs # type: Any @@ -867,39 +1192,38 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachinesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachinesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachinesList', pipeline_response) + deserialized = self._deserialize("VirtualMachinesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -908,21 +1232,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -940,40 +1270,40 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualMachinesList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualMachinesList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualMachinesList', pipeline_response) + deserialized = self._deserialize("VirtualMachinesList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -982,17 +1312,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualMachines"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_networks_operations.py b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_networks_operations.py index c0d69a60878..8109887988a 100644 --- a/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_networks_operations.py +++ b/src/connectedvmware/azext_connectedvmware/vendored_sdks/operations/_virtual_networks_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,25 +7,257 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_create_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_network_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_get_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_network_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_update_request( + subscription_id, # type: str + resource_group_name, # type: str + virtual_network_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_delete_request_initial( + subscription_id, # type: str + resource_group_name, # type: str + virtual_network_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + force = kwargs.pop('force', None) # type: Optional[bool] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_by_resource_group_request( + subscription_id, # type: str + resource_group_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +# fmt: on class VirtualNetworksOperations(object): """VirtualNetworksOperations operations. @@ -60,42 +293,37 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'VirtualNetwork') + _json = self._serialize.body(body, 'VirtualNetwork') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_create_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('VirtualNetwork', pipeline_response) @@ -107,8 +335,11 @@ def _create_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace def begin_create( self, resource_group_name, # type: str @@ -129,14 +360,19 @@ def begin_create( :type body: ~azure.mgmt.connectedvmware.models.VirtualNetwork :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either VirtualNetwork or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetwork or the result of + cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.connectedvmware.models.VirtualNetwork] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] lro_delay = kwargs.pop( @@ -149,27 +385,22 @@ def begin_create( resource_group_name=resource_group_name, virtual_network_name=virtual_network_name, body=body, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): + response = pipeline_response.http_response deserialized = self._deserialize('VirtualNetwork', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -179,10 +410,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + @distributed_trace def get( self, resource_group_name, # type: str @@ -208,33 +440,30 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualNetwork', pipeline_response) @@ -243,8 +472,11 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace def update( self, resource_group_name, # type: str @@ -273,41 +505,37 @@ def update( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - body_content_kwargs = {} # type: Dict[str, Any] if body is not None: - body_content = self._serialize.body(body, 'ResourcePatch') + _json = self._serialize.body(body, 'ResourcePatch') else: - body_content = None - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + _json = None + + request = build_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('VirtualNetwork', pipeline_response) @@ -316,9 +544,11 @@ def update( return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore - def _delete_initial( + update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_network_name, # type: str @@ -331,43 +561,40 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if force is not None: - query_parameters['force'] = self._serialize.query("force", force, 'bool') + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str virtual_network_name, # type: str @@ -387,14 +614,17 @@ def begin_delete( :type force: bool :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType[None] lro_delay = kwargs.pop( @@ -407,24 +637,18 @@ def begin_delete( resource_group_name=resource_group_name, virtual_network_name=virtual_network_name, force=force, + api_version=api_version, cls=lambda x,y,z: x, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'virtualNetworkName': self._serialize.url("virtual_network_name", virtual_network_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = ARMPolling(lro_delay, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -434,10 +658,11 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks/{virtualNetworkName}"} # type: ignore + @distributed_trace def list( self, **kwargs # type: Any @@ -452,39 +677,38 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualNetworksList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworksList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualNetworksList', pipeline_response) + deserialized = self._deserialize("VirtualNetworksList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -493,21 +717,27 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str @@ -525,40 +755,40 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.connectedvmware.models.VirtualNetworksList] :raises: ~azure.core.exceptions.HttpResponseError """ + api_version = kwargs.pop('api_version', "2020-10-01-preview") # type: str + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworksList"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-10-01-preview" - accept = "application/json" - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('VirtualNetworksList', pipeline_response) + deserialized = self._deserialize("VirtualNetworksList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -567,17 +797,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ConnectedVMwarevSphere/virtualNetworks"} # type: ignore diff --git a/src/connectedvmware/azext_connectedvmware/vmware_constants.py b/src/connectedvmware/azext_connectedvmware/vmware_constants.py index 027dc25af54..cc438b60777 100644 --- a/src/connectedvmware/azext_connectedvmware/vmware_constants.py +++ b/src/connectedvmware/azext_connectedvmware/vmware_constants.py @@ -24,8 +24,6 @@ NAME_PARAMETER = "name" DEVICE_KEY = "device-key" -DEFAULT_VCENTER_PORT = 443 - # Nic parameters. NETWORK = "network" NIC_TYPE = "nic-type" diff --git a/src/connectedvmware/azext_connectedvmware/vmware_utils.py b/src/connectedvmware/azext_connectedvmware/vmware_utils.py index 19af0d9d0b1..d3b7a794030 100644 --- a/src/connectedvmware/azext_connectedvmware/vmware_utils.py +++ b/src/connectedvmware/azext_connectedvmware/vmware_utils.py @@ -61,6 +61,6 @@ def create_dictionary_from_arg_string(values, option_string=None): params_dict[key.lower()] = value except ValueError as item_no_exist: raise CLIError( - 'usage error: {} KEY=VALUE [KEY=VALUE ...]'.format(option_string) + f'usage error: {option_string} KEY=VALUE [KEY=VALUE ...]' ) from item_no_exist return params_dict diff --git a/src/connectedvmware/setup.py b/src/connectedvmware/setup.py index 9710d7c12c6..a03d54e87ba 100644 --- a/src/connectedvmware/setup.py +++ b/src/connectedvmware/setup.py @@ -19,7 +19,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '0.1.6' +VERSION = '0.1.7' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers @@ -49,8 +49,7 @@ description='Microsoft Azure Command-Line Tools Connectedvmware Extension', # TODO: Update author and email, if applicable author='Microsoft Corporation', - author_email='azpycli@microsoft.com', - # TODO: consider pointing directly to your source code instead of the generic repo + author_email='arcprivatecloudsfte@microsoft.com', url='https://github.com/Azure/azure-cli-extensions/tree/main/src/connectedvmware', long_description=README + '\n\n' + HISTORY, license='MIT', diff --git a/src/containerapp-compose/HISTORY.rst b/src/containerapp-compose/HISTORY.rst index 8c34bccfff8..f0216c2fe85 100644 --- a/src/containerapp-compose/HISTORY.rst +++ b/src/containerapp-compose/HISTORY.rst @@ -3,6 +3,11 @@ Release History =============== +0.2.0 +++++++ +* Add basic build support for compose services +* Fix bug in specifying memory + 0.1.0 ++++++ -* Initial release. \ No newline at end of file +* Initial release. diff --git a/src/containerapp-compose/azext_containerapp_compose/_monkey_patch.py b/src/containerapp-compose/azext_containerapp_compose/_monkey_patch.py index 04104c4c78b..625c4656721 100644 --- a/src/containerapp-compose/azext_containerapp_compose/_monkey_patch.py +++ b/src/containerapp-compose/azext_containerapp_compose/_monkey_patch.py @@ -3,8 +3,6 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -import sys - from knack.log import get_logger from azure.cli.core.azclierror import AzCLIError @@ -16,44 +14,6 @@ def __init__(self, error_msg) -> None: super().__init__(error_msg, recommendation) -def uncache(exclude): - pkgs = [] - for mod in exclude: - pkg = mod.split('.', 1)[0] - pkgs.append(pkg) - to_uncache = [] - for mod in sys.modules: - if mod in exclude: - continue - if mod in pkgs: - to_uncache.append(mod) - continue - for pkg in pkgs: - if mod.startswith(pkg + '.'): - to_uncache.append(mod) - break - for mod in to_uncache: - del sys.modules[mod] - - -# Monkey patch for the PollingAnimation -# removes the spinner and message written to standard out -# which breaks the ability to re-use output from the -# the containerapp compose create command -# example: -# `URL=$(az containerapp compose create -e myenv -g myrg --query [0].properties.configuration.ingress.fqdn -o tsv)` -# In that example, the URL variable would include a number of lines with the polling animation, -# making it difficult to reusue the output from the CLI command. -def tick(self): - self.currTicker += 1 - self.currTicker = self.currTicker % len(self.tickers) - - -# Monkey patch for the PollingAnimation (see above) -def flush(self): # noqa: W0613 pylint: disable=unused-argument - pass - - logger = get_logger(__name__) @@ -65,12 +25,14 @@ def log_containerapp_extension_required(): try: - from azext_containerapp import custom # pylint: disable=unused-import - from azext_containerapp import _utils # pylint: disable=unused-import - from azext_containerapp import _clients # pylint: disable=unused-import - _clients.PollingAnimation.tick = tick - _clients.PollingAnimation.flush = flush - uncache("azext_containerapp._clients") + from azext_containerapp import custom + from azext_containerapp import _utils + from azext_containerapp._up_utils import (ContainerApp, + ContainerAppEnvironment, + ResourceGroup, + _get_registry_from_app, + _get_registry_details, + ) # pylint: disable=unused-import from azext_containerapp import _clients # pylint: disable=unused-import from azext_containerapp._clients import ManagedEnvironmentClient # pylint: disable=unused-import except ModuleNotFoundError: @@ -101,6 +63,52 @@ def create_containerapps_compose_environment(cmd, tags=tags) +def build_containerapp_from_compose_service(cmd, + name, + source, + dockerfile, + resource_group_name, + managed_env, + location, + image, + target_port, + ingress, + registry_server, + registry_user, + registry_pass, + env_vars, + logs_key=None, + logs_customer_id=None): + + resource_group = ResourceGroup(cmd, name=resource_group_name, location=location) + env = ContainerAppEnvironment(cmd, + managed_env, + resource_group, + location=location, + logs_key=logs_key, + logs_customer_id=logs_customer_id) + app = ContainerApp(cmd, + name, + resource_group, + None, + image, + env, + target_port, + registry_server, + registry_user, + registry_pass, + env_vars, + ingress) + + if not registry_server: + _get_registry_from_app(app, True) # if the app exists, get the registry + _get_registry_details(cmd, app, True) # fetch ACR creds from arguments registry arguments + + app.create_acr_if_needed() + app.run_acr_build(dockerfile, source, False) + return app.image, app.registry_server, app.registry_user, app.registry_pass + + def create_containerapp_from_service(*args, **kwargs): return custom.create_containerapp(*args, **kwargs) diff --git a/src/containerapp-compose/azext_containerapp_compose/custom.py b/src/containerapp-compose/azext_containerapp_compose/custom.py index 6e42b6e1b6e..6c087bda3a6 100644 --- a/src/containerapp-compose/azext_containerapp_compose/custom.py +++ b/src/containerapp-compose/azext_containerapp_compose/custom.py @@ -14,7 +14,9 @@ logger = get_logger(__name__) -def resolve_configuration_element_list(compose_service, unsupported_configuration): +def resolve_configuration_element_list(compose_service, unsupported_configuration, area=None): + if area is not None: + compose_service = getattr(compose_service, area) config_list = [] for configuration_element in unsupported_configuration: try: @@ -27,11 +29,18 @@ def resolve_configuration_element_list(compose_service, unsupported_configuratio def warn_about_unsupported_build_configuration(compose_service): + unsupported_configuration = ["args", "ssh", "cache_from", "cache_to", "extra_hosts", + "isolation", "labels", "no_cache", "pull", "shm_size", + "target", "secrets", "tags"] if compose_service.build is not None: - message = f"Build configuration for {compose_service.build.compose_path} is not currently supported." - message += " Work is planned to add that capability." + config_list = resolve_configuration_element_list(compose_service, unsupported_configuration, 'build') + message = "These build configuration settings from the docker-compose file are yet supported." + message += " Currently, we support supplying a build context and optionally target Dockerfile for a service." message += " See https://aka.ms/containerapp/compose/build_support for more information or to add feedback." - logger.warning(message) + if len(config_list) >= 1: + logger.warning(message) + for item in config_list: + logger.warning(" %s", item) def warn_about_unsupported_runtime_host_configuration(compose_service): @@ -110,6 +119,7 @@ def create_containerapps_from_compose(cmd, # pylint: disable=R0914 from ._monkey_patch import ( create_containerapp_from_service, create_containerapps_compose_environment, + build_containerapp_from_compose_service, load_yaml_file, show_managed_environment) @@ -142,6 +152,7 @@ def create_containerapps_from_compose(cmd, # pylint: disable=R0914 message = "Unsupported platform found. " message += "Azure Container Apps only supports linux/amd64 container images." raise InvalidArgumentValueError(message) + image = service.image warn_about_unsupported_elements(service) logger.info( # pylint: disable=W1203 f"Creating the Container Apps instance for {service_name} under {resource_group_name} in {location}.") @@ -161,11 +172,34 @@ def create_containerapps_from_compose(cmd, # pylint: disable=R0914 elif secret_env_ref is not None: environment = secret_env_ref + if service.build is not None: + logger.warning("Build configuration defined for this service.") + logger.warning("The build will be performed by Azure Container Registry.") + context = service.build.context + dockerfile = "Dockerfile" + if service.build.dockerfile is not None: + dockerfile = service.build.dockerfile + image, registry, registry_username, registry_password = build_containerapp_from_compose_service( + cmd, + service_name, + context, + dockerfile, + resource_group_name, + managed_env, + location, + image, + target_port, + ingress_type, + registry, + registry_username, + registry_password, + environment) + containerapps_from_compose.append( create_containerapp_from_service(cmd, service_name, resource_group_name, - image=service.image, + image=image, container_name=service.container_name, managed_env=managed_environment["id"], ingress=ingress_type, @@ -327,9 +361,9 @@ def resolve_memory_configuration_from_service(service): if service_deploy_resources_exists(service): resources = service.deploy.resources if resources.reservations is not None and resources.reservations.memory is not None: - memory = str(resources.reservations.memory.gigabytes()) + memory = str(resources.reservations.memory.as_gigabytes()) elif service.mem_reservation is not None: - memory = str(service.mem_reservation.gigabytes()) + memory = str(service.mem_reservation.as_gigabytes()) return memory diff --git a/src/containerapp-compose/azext_containerapp_compose/tests/latest/common.py b/src/containerapp-compose/azext_containerapp_compose/tests/latest/common.py index 2a4a05e4207..032c7be52ba 100644 --- a/src/containerapp-compose/azext_containerapp_compose/tests/latest/common.py +++ b/src/containerapp-compose/azext_containerapp_compose/tests/latest/common.py @@ -22,5 +22,5 @@ def clean_up_test_file(filename): class ContainerappComposePreviewScenarioTest(ScenarioTest): def setUp(self): - self.cmd("extension add --name containerapp") + self.cmd("extension add --name containerapp --upgrade --yes") return super().setUp() diff --git a/src/containerapp-compose/setup.py b/src/containerapp-compose/setup.py index 8f863a41cd0..86684546554 100644 --- a/src/containerapp-compose/setup.py +++ b/src/containerapp-compose/setup.py @@ -16,7 +16,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '0.1.0' +VERSION = '0.2.0' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers @@ -32,7 +32,7 @@ 'License :: OSI Approved :: MIT License', ] -DEPENDENCIES = ['pycomposefile>=0.0.26'] +DEPENDENCIES = ['pycomposefile>=0.0.29'] with open('README.rst', 'r', encoding='utf-8') as f: README = f.read() diff --git a/src/containerapp/HISTORY.rst b/src/containerapp/HISTORY.rst index 8d14caf9feb..d9409ec49b5 100644 --- a/src/containerapp/HISTORY.rst +++ b/src/containerapp/HISTORY.rst @@ -3,6 +3,23 @@ Release History =============== +0.3.7 +++++++ +* Fixed bug with 'az containerapp up' where --registry-server was ignored +* 'az containerapp env create': fixed bug where "--internal-only" didn't work +* 'az containerapp registry set': remove username/password if setting identity and vice versa + +0.3.6 +++++++ +* BREAKING CHANGE: 'az containerapp revision list' now shows only active revisions by default, added flag --all to show all revisions +* BREAKING CHANGE: 'az containerapp env certificate upload' does not prompt by default when re-uploading an existing certificate. Added --show-prompt to show prompts on re-upload. +* Added parameter --environment to 'az containerapp list' +* Added 'az containerapp revision label swap' to swap traffic labels +* Fixed bug with 'az containerapp up' where custom domains would be removed when updating existing containerapp +* Fixed bug with 'az containerapp auth update' when using --unauthenticated-client-action +* Fixed bug with 'az containerapp env certificate upload' where it shows a misleading message for invalid certificate name +* 'az containerapp registry set': allow authenticating with managed identity (MSI) instead of ACR username & password + 0.3.5 ++++++ * Add parameter --zone-redundant to 'az containerapp env create' diff --git a/src/containerapp/azext_containerapp/_constants.py b/src/containerapp/azext_containerapp/_constants.py index 1ba84998feb..ef78b3bfaa7 100644 --- a/src/containerapp/azext_containerapp/_constants.py +++ b/src/containerapp/azext_containerapp/_constants.py @@ -9,6 +9,8 @@ SHORT_POLLING_INTERVAL_SECS = 3 LONG_POLLING_INTERVAL_SECS = 10 +ACR_IMAGE_SUFFIX = ".azurecr.io" + LOG_ANALYTICS_RP = "Microsoft.OperationalInsights" CONTAINER_APPS_RP = "Microsoft.App" @@ -21,6 +23,9 @@ MSA_SECRET_SETTING_NAME = "msa-provider-authentication-secret" TWITTER_SECRET_SETTING_NAME = "twitter-provider-authentication-secret" APPLE_SECRET_SETTING_NAME = "apple-provider-authentication-secret" -UNAUTHENTICATED_CLIENT_ACTION = ['RedirectToLoginPage', 'AllowAnonymous', 'RejectWith401', 'RejectWith404'] +UNAUTHENTICATED_CLIENT_ACTION = ['RedirectToLoginPage', 'AllowAnonymous', 'Return401', 'Return403'] FORWARD_PROXY_CONVENTION = ['NoProxy', 'Standard', 'Custom'] CHECK_CERTIFICATE_NAME_AVAILABILITY_TYPE = "Microsoft.App/managedEnvironments/certificates" + +NAME_INVALID = "Invalid" +NAME_ALREADY_EXISTS = "AlreadyExists" diff --git a/src/containerapp/azext_containerapp/_help.py b/src/containerapp/azext_containerapp/_help.py index 7631b07a2bb..7bf0dbad415 100644 --- a/src/containerapp/azext_containerapp/_help.py +++ b/src/containerapp/azext_containerapp/_help.py @@ -289,6 +289,15 @@ az containerapp revision label remove -n MyContainerapp -g MyResourceGroup --label myLabel """ +helps['containerapp revision label swap'] = """ + type: command + short-summary: Swap a revision label between two revisions with associated traffic weights. + examples: + - name: Swap a revision label between two revisions. + text: | + az containerapp revision label swap -n MyContainerapp -g MyResourceGroup --source myLabel1 --target myLabel2 +""" + # Environment Commands helps['containerapp env'] = """ type: group @@ -303,6 +312,10 @@ text: | az containerapp env create -n MyContainerappEnvironment -g MyResourceGroup \\ --location eastus2 + - name: Create a zone-redundant environment + text: | + az containerapp env create -n MyContainerappEnvironment -g MyResourceGroup \\ + --location eastus2 --zone-redundant - name: Create an environment with an existing Log Analytics workspace. text: | az containerapp env create -n MyContainerappEnvironment -g MyResourceGroup \\ diff --git a/src/containerapp/azext_containerapp/_params.py b/src/containerapp/azext_containerapp/_params.py index 83b0ea33504..694e59288cd 100644 --- a/src/containerapp/azext_containerapp/_params.py +++ b/src/containerapp/azext_containerapp/_params.py @@ -125,7 +125,7 @@ def load_arguments(self, _): c.argument('tags', arg_type=tags_type) with self.argument_context('containerapp env', arg_group='Log Analytics') as c: - c.argument('logs_customer_id', options_list=['--logs-workspace-id'], help='Name or resource ID of the Log Analytics workspace to send diagnostics logs to. You can use \"az monitor log-analytics workspace create\" to create one. Extra billing may apply.') + c.argument('logs_customer_id', options_list=['--logs-workspace-id'], help='Workspace ID of the Log Analytics workspace to send diagnostics logs to. You can use \"az monitor log-analytics workspace create\" to create one. Extra billing may apply.') c.argument('logs_key', options_list=['--logs-workspace-key'], help='Log Analytics workspace key to configure your Log Analytics workspace. You can use \"az monitor log-analytics workspace get-shared-keys\" to retrieve the key.') with self.argument_context('containerapp env', arg_group='Dapr') as c: @@ -155,6 +155,7 @@ def load_arguments(self, _): c.argument('certificate_file', options_list=['--certificate-file', '-f'], help='The filepath of the .pfx or .pem file') c.argument('certificate_name', options_list=['--certificate-name', '-c'], help='Name of the certificate which should be unique within the Container Apps environment.') c.argument('certificate_password', options_list=['--password', '-p'], help='The certificate file password') + c.argument('prompt', options_list=['--show-prompt'], action='store_true', help='Show prompt to upload an existing certificate.') with self.argument_context('containerapp env certificate list') as c: c.argument('name', id_part=None) @@ -200,6 +201,7 @@ def load_arguments(self, _): with self.argument_context('containerapp revision') as c: c.argument('revision_name', options_list=['--revision'], help='Name of the revision.') + c.argument('all', help='Show inactive revisions.', action='store_true') with self.argument_context('containerapp revision copy') as c: c.argument('from_revision', help='Revision to copy from. Default: latest revision.') @@ -209,6 +211,11 @@ def load_arguments(self, _): c.argument('name', id_part=None) c.argument('revision', help='Name of the revision.') c.argument('label', help='Name of the label.') + c.argument('yes', options_list=['--no-prompt', '--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') + + with self.argument_context('containerapp revision label') as c: + c.argument('source_label', options_list=['--source'], help='Source label to be swapped.') + c.argument('target_label', options_list=['--target'], help='Target label to be swapped to.') with self.argument_context('containerapp ingress') as c: c.argument('allow_insecure', help='Allow insecure connections for ingress traffic.') @@ -241,6 +248,7 @@ def load_arguments(self, _): c.argument('server', help="The container registry server, e.g. myregistry.azurecr.io") c.argument('username', help='The username of the registry. If using Azure Container Registry, we will try to infer the credentials if not supplied') c.argument('password', help='The password of the registry. If using Azure Container Registry, we will try to infer the credentials if not supplied') + c.argument('identity', help="The managed identity with which to authenticate to the Azure Container Registry (instead of username/password). Use 'system' for a system-defined identity or a resource id for a user-defined identity. The managed identity should have been assigned acrpull permissions on the ACR before deployment (use 'az role assignment create --role acrpull ...').") with self.argument_context('containerapp registry list') as c: c.argument('name', id_part=None) @@ -262,7 +270,7 @@ def load_arguments(self, _): c.argument('browse', help='Open the app in a web browser after creation and deployment, if possible.') with self.argument_context('containerapp up', arg_group='Log Analytics (Environment)') as c: - c.argument('logs_customer_id', options_list=['--logs-workspace-id'], help='Name or resource ID of the Log Analytics workspace to send diagnostics logs to. You can use \"az monitor log-analytics workspace create\" to create one. Extra billing may apply.') + c.argument('logs_customer_id', options_list=['--logs-workspace-id'], help='Workspace ID of the Log Analytics workspace to send diagnostics logs to. You can use \"az monitor log-analytics workspace create\" to create one. Extra billing may apply.') c.argument('logs_key', options_list=['--logs-workspace-key'], help='Log Analytics workspace key to configure your Log Analytics workspace. You can use \"az monitor log-analytics workspace get-shared-keys\" to retrieve the key.') c.ignore('no_wait') diff --git a/src/containerapp/azext_containerapp/_up_utils.py b/src/containerapp/azext_containerapp/_up_utils.py index a81de528bbf..da5b69b8cd4 100644 --- a/src/containerapp/azext_containerapp/_up_utils.py +++ b/src/containerapp/azext_containerapp/_up_utils.py @@ -46,7 +46,7 @@ register_provider_if_needed ) -from ._constants import MAXIMUM_SECRET_LENGTH, LOG_ANALYTICS_RP, CONTAINER_APPS_RP +from ._constants import MAXIMUM_SECRET_LENGTH, LOG_ANALYTICS_RP, CONTAINER_APPS_RP, ACR_IMAGE_SUFFIX from .custom import ( create_managed_environment, @@ -297,7 +297,7 @@ def create_acr_if_needed(self): def create_acr(self): registry_rg = self.resource_group url = self.registry_server - registry_name = url[: url.rindex(".azurecr.io")] + registry_name = url[: url.rindex(ACR_IMAGE_SUFFIX)] location = "eastus" if self.env.location and self.env.location.lower() != "northcentralusstage": location = self.env.location @@ -592,28 +592,23 @@ def _get_acr_from_image(cmd, app): ) -def _get_registry_from_app(app): +def _get_registry_from_app(app, source): containerapp_def = app.get() + existing_registries = safe_get(containerapp_def, "properties", "configuration", "registries", default=[]) + if source: + existing_registries = [r for r in existing_registries if ACR_IMAGE_SUFFIX in r["server"]] if containerapp_def: - if ( - len( - safe_get( - containerapp_def, - "properties", - "configuration", - "registries", - default=[], - ) - ) - == 1 - ): - app.registry_server = containerapp_def["properties"]["configuration"][ - "registries" - ][0]["server"] + if len(existing_registries) == 1: + app.registry_server = existing_registries[0]["server"] + elif len(existing_registries) > 1: # default to registry in image if possible, otherwise don't infer + containers = safe_get(containerapp_def, "properties", "template", "containers", default=[]) + image_server = next(c["image"] for c in containers if c["name"].lower() == app.name.lower()).split('/')[0] + if image_server in [r["server"] for r in existing_registries]: + app.registry_server = image_server def _get_acr_rg(app): - registry_name = app.registry_server[: app.registry_server.rindex(".azurecr.io")] + registry_name = app.registry_server[: app.registry_server.rindex(ACR_IMAGE_SUFFIX)] client = get_mgmt_service_client( app.cmd.cli_ctx, ContainerRegistryManagementClient ).registries @@ -663,11 +658,11 @@ def _get_registry_details(cmd, app: "ContainerApp", source): registry_name, registry_rg = find_existing_acr(cmd, app) if registry_name and registry_rg: _set_acr_creds(cmd, app, registry_name) - app.registry_server = registry_name + ".azurecr.io" + app.registry_server = registry_name + ACR_IMAGE_SUFFIX else: registry_rg = app.resource_group.name registry_name = _get_default_registry_name(app) - app.registry_server = registry_name + ".azurecr.io" + app.registry_server = registry_name + ACR_IMAGE_SUFFIX app.should_create_acr = True app.acr = AzureContainerRegistry( diff --git a/src/containerapp/azext_containerapp/_utils.py b/src/containerapp/azext_containerapp/_utils.py index b291d6da9ee..22fcc7f3020 100644 --- a/src/containerapp/azext_containerapp/_utils.py +++ b/src/containerapp/azext_containerapp/_utils.py @@ -12,7 +12,7 @@ from datetime import datetime from dateutil.relativedelta import relativedelta from azure.cli.core.azclierror import (ValidationError, RequiredArgumentMissingError, CLIInternalError, - ResourceNotFoundError, ArgumentUsageError, FileOperationError, CLIError) + ResourceNotFoundError, FileOperationError, CLIError) from azure.cli.core.commands.client_factory import get_subscription_id from azure.cli.command_modules.appservice.utils import _normalize_location from azure.cli.command_modules.network._client_factory import network_client_factory @@ -23,7 +23,7 @@ from ._clients import ContainerAppClient, ManagedEnvironmentClient from ._client_factory import handle_raw_exception, providers_client_factory, cf_resource_groups, log_analytics_client_factory, log_analytics_shared_key_client_factory from ._constants import (MAXIMUM_CONTAINER_APP_NAME_LENGTH, SHORT_POLLING_INTERVAL_SECS, LONG_POLLING_INTERVAL_SECS, - LOG_ANALYTICS_RP, CONTAINER_APPS_RP, CHECK_CERTIFICATE_NAME_AVAILABILITY_TYPE) + LOG_ANALYTICS_RP, CONTAINER_APPS_RP, CHECK_CERTIFICATE_NAME_AVAILABILITY_TYPE, ACR_IMAGE_SUFFIX) from ._models import (ContainerAppCustomDomainEnvelope as ContainerAppCustomDomainEnvelopeModel) logger = get_logger(__name__) @@ -70,7 +70,7 @@ def _create_application(client, display_name): if 'insufficient privileges' in str(ex).lower(): link = 'https://docs.microsoft.com/azure/azure-resource-manager/resource-group-create-service-principal-portal' # pylint: disable=line-too-long raise ValidationError("Directory permission is needed for the current user to register the application. " - "For how to configure, please refer '{}'. Original error: {}".format(link, ex)) + "For how to configure, please refer '{}'. Original error: {}".format(link, ex)) from ex raise return result @@ -292,24 +292,25 @@ def _ensure_location_allowed(cmd, location, resource_provider, resource_type): providers_client = None try: providers_client = providers_client_factory(cmd.cli_ctx, get_subscription_id(cmd.cli_ctx)) + except Exception as ex: + handle_raw_exception(ex) - if providers_client is not None: + if providers_client is not None: + try: resource_types = getattr(providers_client.get(resource_provider), 'resource_types', []) - res_locations = [] - for res in resource_types: - if res and getattr(res, 'resource_type', "") == resource_type: - res_locations = getattr(res, 'locations', []) - - res_locations = [res_loc.lower().replace(" ", "").replace("(", "").replace(")", "") for res_loc in res_locations if res_loc.strip()] - - location_formatted = location.lower().replace(" ", "") - if location_formatted not in res_locations: - raise ValidationError("Location '{}' is not currently supported. To get list of supported locations, run `az provider show -n {} --query \"resourceTypes[?resourceType=='{}'].locations\"`".format( - location, resource_provider, resource_type)) - except ValidationError as ex: - raise ex - except Exception: # pylint: disable=broad-except - pass + except Exception as ex: + handle_raw_exception(ex) + + res_locations = [] + for res in resource_types: + if res and getattr(res, 'resource_type', "") == resource_type: + res_locations = getattr(res, 'locations', []) + + res_locations = [res_loc.lower().replace(" ", "").replace("(", "").replace(")", "") for res_loc in res_locations if res_loc.strip()] + + location_formatted = location.lower().replace(" ", "") + if location_formatted not in res_locations: + raise ValidationError(f"Location '{location}' is not currently supported. To get list of supported locations, run `az provider show -n {resource_provider} --query \"resourceTypes[?resourceType=='{resource_type}'].locations\"`") def parse_env_var_flags(env_list, is_update_containerapp=False): @@ -531,33 +532,40 @@ def _generate_log_analytics_if_not_provided(cmd, logs_customer_id, logs_key, loc if logs_customer_id is None and logs_key is None: logger.warning("No Log Analytics workspace provided.") _validate_subscription_registered(cmd, LOG_ANALYTICS_RP) + try: log_analytics_client = log_analytics_client_factory(cmd.cli_ctx) log_analytics_shared_key_client = log_analytics_shared_key_client_factory(cmd.cli_ctx) + except Exception as ex: + handle_raw_exception(ex) - log_analytics_location = location - try: - _ensure_location_allowed(cmd, log_analytics_location, LOG_ANALYTICS_RP, "workspaces") - except Exception: # pylint: disable=broad-except - log_analytics_location = _get_default_log_analytics_location(cmd) + log_analytics_location = location + try: + _ensure_location_allowed(cmd, log_analytics_location, LOG_ANALYTICS_RP, "workspaces") + except ValidationError: # pylint: disable=broad-except + log_analytics_location = _get_default_log_analytics_location(cmd) - from azure.cli.core.commands import LongRunningOperation - from azure.mgmt.loganalytics.models import Workspace + from azure.cli.core.commands import LongRunningOperation + from azure.mgmt.loganalytics.models import Workspace - workspace_name = _generate_log_analytics_workspace_name(resource_group_name) - workspace_instance = Workspace(location=log_analytics_location) - logger.warning("Generating a Log Analytics workspace with name \"{}\"".format(workspace_name)) # pylint: disable=logging-format-interpolation + workspace_name = _generate_log_analytics_workspace_name(resource_group_name) + workspace_instance = Workspace(location=log_analytics_location) + logger.warning("Generating a Log Analytics workspace with name \"{}\"".format(workspace_name)) # pylint: disable=logging-format-interpolation + try: poller = log_analytics_client.begin_create_or_update(resource_group_name, workspace_name, workspace_instance) log_analytics_workspace = LongRunningOperation(cmd.cli_ctx)(poller) + except Exception as ex: + handle_raw_exception(ex) - logs_customer_id = log_analytics_workspace.customer_id + logs_customer_id = log_analytics_workspace.customer_id + try: logs_key = log_analytics_shared_key_client.get_shared_keys( workspace_name=workspace_name, resource_group_name=resource_group_name).primary_shared_key - except Exception as ex: - raise ValidationError("Unable to generate a Log Analytics workspace. You can use \"az monitor log-analytics workspace create\" to create one and supply --logs-customer-id and --logs-key") from ex + handle_raw_exception(ex) + elif logs_customer_id is None: raise ValidationError("Usage error: Supply the --logs-customer-id associated with the --logs-key") elif logs_key is None: # Try finding the logs-key @@ -566,7 +574,11 @@ def _generate_log_analytics_if_not_provided(cmd, logs_customer_id, logs_key, loc log_analytics_name = None log_analytics_rg = None - log_analytics = log_analytics_client.list() + + try: + log_analytics = log_analytics_client.list() + except Exception as ex: + handle_raw_exception(ex) for la in log_analytics: if la.customer_id and la.customer_id.lower() == logs_customer_id.lower(): @@ -577,7 +589,10 @@ def _generate_log_analytics_if_not_provided(cmd, logs_customer_id, logs_key, loc if log_analytics_name is None: raise ValidationError('Usage error: Supply the --logs-key associated with the --logs-customer-id') - shared_keys = log_analytics_shared_key_client.get_shared_keys(workspace_name=log_analytics_name, resource_group_name=log_analytics_rg) + try: + shared_keys = log_analytics_shared_key_client.get_shared_keys(workspace_name=log_analytics_name, resource_group_name=log_analytics_rg) + except Exception as ex: + handle_raw_exception(ex) if not shared_keys or not shared_keys.primary_shared_key: raise ValidationError('Usage error: Supply the --logs-key associated with the --logs-customer-id') @@ -857,6 +872,19 @@ def _update_revision_weights(containerapp_def, list_weights): return old_weight_sum +def _validate_revision_name(cmd, revision, resource_group_name, name): + if revision.lower() == "latest": + return + revision_def = None + try: + revision_def = ContainerAppClient.show_revision(cmd, resource_group_name, name, revision) + except: # pylint: disable=bare-except + pass + + if not revision_def: + raise ValidationError(f"Revision '{revision}' is not a valid revision name.") + + def _append_label_weights(containerapp_def, label_weights, revision_weights): if "traffic" not in containerapp_def["properties"]["configuration"]["ingress"]: containerapp_def["properties"]["configuration"]["ingress"]["traffic"] = [] @@ -864,6 +892,7 @@ def _append_label_weights(containerapp_def, label_weights, revision_weights): if not label_weights: return + bad_labels = [] revision_weight_names = [w.split('=', 1)[0].lower() for w in revision_weights] # this is to check if we already have that revision weight passed for new_weight in label_weights: key_val = new_weight.split('=', 1) @@ -885,7 +914,10 @@ def _append_label_weights(containerapp_def, label_weights, revision_weights): break if not is_existing: - raise ValidationError(f"No label {label} assigned to any traffic weight.") + bad_labels.append(label) + + if len(bad_labels) > 0: + raise ValidationError(f"No labels '{', '.join(bad_labels)}' assigned to any traffic weight.") def _update_weights(containerapp_def, revision_weights, old_weight_sum): @@ -893,7 +925,6 @@ def _update_weights(containerapp_def, revision_weights, old_weight_sum): new_weight_sum = sum([int(w.split('=', 1)[1]) for w in revision_weights]) revision_weight_names = [w.split('=', 1)[0].lower() for w in revision_weights] divisor = sum([int(w["weight"]) for w in containerapp_def["properties"]["configuration"]["ingress"]["traffic"]]) - new_weight_sum - round_up = True # if there is no change to be made, don't even try (also can't divide by zero) if divisor == 0: return @@ -903,18 +934,17 @@ def _update_weights(containerapp_def, revision_weights, old_weight_sum): for existing_weight in containerapp_def["properties"]["configuration"]["ingress"]["traffic"]: if "latestRevision" in existing_weight and existing_weight["latestRevision"]: if "latest" not in revision_weight_names: - existing_weight["weight"], round_up = _round(scale_factor * existing_weight["weight"], round_up) + existing_weight["weight"] = round(scale_factor * existing_weight["weight"]) elif "revisionName" in existing_weight and existing_weight["revisionName"].lower() not in revision_weight_names: - existing_weight["weight"], round_up = _round(scale_factor * existing_weight["weight"], round_up) + existing_weight["weight"] = round(scale_factor * existing_weight["weight"]) - -# required because what if .5, .5? We need sum to be 100, so can't round up or down both times -def _round(number, round_up): - import math - number = round(number, 2) # required because we are dealing with floats - if round_up: - return math.ceil(number), not round_up - return math.floor(number), not round_up + total_sum = sum([int(w["weight"]) for w in containerapp_def["properties"]["configuration"]["ingress"]["traffic"]]) + index = 0 + while total_sum < 100: + weight = containerapp_def["properties"]["configuration"]["ingress"]["traffic"][index % len(containerapp_def["properties"]["configuration"]["ingress"]["traffic"])] + index += 1 + total_sum += 1 + weight["weight"] += 1 def _validate_traffic_sum(revision_weights): @@ -936,7 +966,7 @@ def _get_app_from_revision(revision): def _infer_acr_credentials(cmd, registry_server, disable_warnings=False): # If registry is Azure Container Registry, we can try inferring credentials - if '.azurecr.io' not in registry_server: + if ACR_IMAGE_SUFFIX not in registry_server: raise RequiredArgumentMissingError('Registry username and password are required if not using Azure Container Registry.') not disable_warnings and logger.warning('No credential was provided to access Azure Container Registry. Trying to look up credentials...') parsed = urlparse(registry_server) @@ -962,6 +992,8 @@ def _registry_exists(containerapp_def, registry_server): # get a value from nested dict without getting IndexError (returns None instead) # for example, model["key1"]["key2"]["key3"] would become safe_get(model, "key1", "key2", "key3") def safe_get(model, *keys, default=None): + if not model: + return default for k in keys[:-1]: model = model.get(k, {}) return model.get(keys[-1], default) @@ -1262,7 +1294,7 @@ def check_cert_name_availability(cmd, resource_group_name, name, cert_name): r = ManagedEnvironmentClient.check_name_availability(cmd, resource_group_name, name, name_availability_request) except CLIError as e: handle_raw_exception(e) - return r["nameAvailable"] + return r def validate_hostname(cmd, resource_group_name, name, hostname): @@ -1309,3 +1341,63 @@ def get_custom_domains(cmd, resource_group_name, name, location=None, environmen except CLIError as e: handle_raw_exception(e) return custom_domains + + +def set_managed_identity(cmd, resource_group_name, containerapp_def, system_assigned=False, user_assigned=None): + assign_system_identity = system_assigned + if not user_assigned: + user_assigned = [] + assign_user_identities = [x.lower() for x in user_assigned] + + # If identity not returned + try: + containerapp_def["identity"] + containerapp_def["identity"]["type"] + except: + containerapp_def["identity"] = {} + containerapp_def["identity"]["type"] = "None" + + if assign_system_identity and containerapp_def["identity"]["type"].__contains__("SystemAssigned"): + logger.warning("System identity is already assigned to containerapp") + + # Assign correct type + try: + if containerapp_def["identity"]["type"] != "None": + if containerapp_def["identity"]["type"] == "SystemAssigned" and assign_user_identities: + containerapp_def["identity"]["type"] = "SystemAssigned,UserAssigned" + if containerapp_def["identity"]["type"] == "UserAssigned" and assign_system_identity: + containerapp_def["identity"]["type"] = "SystemAssigned,UserAssigned" + else: + if assign_system_identity and assign_user_identities: + containerapp_def["identity"]["type"] = "SystemAssigned,UserAssigned" + elif assign_system_identity: + containerapp_def["identity"]["type"] = "SystemAssigned" + elif assign_user_identities: + containerapp_def["identity"]["type"] = "UserAssigned" + except: + # Always returns "type": "None" when CA has no previous identities + pass + + if assign_user_identities: + try: + containerapp_def["identity"]["userAssignedIdentities"] + except: + containerapp_def["identity"]["userAssignedIdentities"] = {} + + subscription_id = get_subscription_id(cmd.cli_ctx) + + for r in assign_user_identities: + r = _ensure_identity_resource_id(subscription_id, resource_group_name, r).replace("resourceGroup", "resourcegroup") + isExisting = False + + if not containerapp_def["identity"].get("userAssignedIdentities"): + containerapp_def["identity"]["userAssignedIdentities"] = {} + + for old_user_identity in containerapp_def["identity"]["userAssignedIdentities"]: + if old_user_identity.lower() == r.lower(): + isExisting = True + logger.warning("User identity %s is already assigned to containerapp", old_user_identity) + break + + if not isExisting: + containerapp_def["identity"]["userAssignedIdentities"][r] = {} diff --git a/src/containerapp/azext_containerapp/_validators.py b/src/containerapp/azext_containerapp/_validators.py index 9c1e53ed50e..9a70fce3616 100644 --- a/src/containerapp/azext_containerapp/_validators.py +++ b/src/containerapp/azext_containerapp/_validators.py @@ -9,6 +9,7 @@ from ._clients import ContainerAppClient from ._ssh_utils import ping_container_app from ._utils import safe_get +from ._constants import ACR_IMAGE_SUFFIX def _is_number(s): @@ -61,21 +62,21 @@ def validate_registry_server(namespace): if "create" in namespace.command.lower(): if namespace.registry_server: if not namespace.registry_user or not namespace.registry_pass: - if ".azurecr.io" not in namespace.registry_server: + if ACR_IMAGE_SUFFIX not in namespace.registry_server: raise ValidationError("Usage error: --registry-server, --registry-password and --registry-username are required together if not using Azure Container Registry") def validate_registry_user(namespace): if "create" in namespace.command.lower(): if namespace.registry_user: - if not namespace.registry_server or (not namespace.registry_pass and ".azurecr.io" not in namespace.registry_server): + if not namespace.registry_server or (not namespace.registry_pass and ACR_IMAGE_SUFFIX not in namespace.registry_server): raise ValidationError("Usage error: --registry-server, --registry-password and --registry-username are required together if not using Azure Container Registry") def validate_registry_pass(namespace): if "create" in namespace.command.lower(): if namespace.registry_pass: - if not namespace.registry_server or (not namespace.registry_user and ".azurecr.io" not in namespace.registry_server): + if not namespace.registry_server or (not namespace.registry_user and ACR_IMAGE_SUFFIX not in namespace.registry_server): raise ValidationError("Usage error: --registry-server, --registry-password and --registry-username are required together if not using Azure Container Registry") diff --git a/src/containerapp/azext_containerapp/commands.py b/src/containerapp/azext_containerapp/commands.py index f485af2fdda..fe284926d95 100644 --- a/src/containerapp/azext_containerapp/commands.py +++ b/src/containerapp/azext_containerapp/commands.py @@ -106,6 +106,7 @@ def load_command_table(self, _): with self.command_group('containerapp revision label') as g: g.custom_command('add', 'add_revision_label') g.custom_command('remove', 'remove_revision_label') + g.custom_command('swap', 'swap_revision_label') with self.command_group('containerapp ingress') as g: g.custom_command('enable', 'enable_ingress', exception_handler=ex_handler_factory()) diff --git a/src/containerapp/azext_containerapp/custom.py b/src/containerapp/azext_containerapp/custom.py index a32d50cbba8..58f5f65dd49 100644 --- a/src/containerapp/azext_containerapp/custom.py +++ b/src/containerapp/azext_containerapp/custom.py @@ -17,7 +17,8 @@ CLIError, CLIInternalError, InvalidArgumentValueError, - ArgumentUsageError) + ArgumentUsageError, + MutuallyExclusiveArgumentError) from azure.cli.core.commands.client_factory import get_subscription_id from azure.cli.core.util import open_page_in_browser from azure.cli.command_modules.appservice.utils import _normalize_location @@ -62,12 +63,14 @@ _update_revision_env_secretrefs, _get_acr_cred, safe_get, await_github_action, repo_url_to_name, validate_container_app_name, _update_weights, get_vnet_location, register_provider_if_needed, generate_randomized_cert_name, _get_name, load_cert_file, check_cert_name_availability, - validate_hostname, patch_new_custom_domain, get_custom_domains) + validate_hostname, patch_new_custom_domain, get_custom_domains, _validate_revision_name, set_managed_identity) + from ._ssh_utils import (SSH_DEFAULT_ENCODING, WebSocketConnection, read_ssh, get_stdin_writer, SSH_CTRL_C_MSG, SSH_BACKUP_ENCODING) from ._constants import (MAXIMUM_SECRET_LENGTH, MICROSOFT_SECRET_SETTING_NAME, FACEBOOK_SECRET_SETTING_NAME, GITHUB_SECRET_SETTING_NAME, - GOOGLE_SECRET_SETTING_NAME, TWITTER_SECRET_SETTING_NAME, APPLE_SECRET_SETTING_NAME, CONTAINER_APPS_RP) + GOOGLE_SECRET_SETTING_NAME, TWITTER_SECRET_SETTING_NAME, APPLE_SECRET_SETTING_NAME, CONTAINER_APPS_RP, + NAME_INVALID, NAME_ALREADY_EXISTS, ACR_IMAGE_SUFFIX) logger = get_logger(__name__) @@ -724,7 +727,7 @@ def show_containerapp(cmd, name, resource_group_name): handle_raw_exception(e) -def list_containerapp(cmd, resource_group_name=None): +def list_containerapp(cmd, resource_group_name=None, managed_env=None): _validate_subscription_registered(cmd, CONTAINER_APPS_RP) try: @@ -734,6 +737,14 @@ def list_containerapp(cmd, resource_group_name=None): else: containerapps = ContainerAppClient.list_by_resource_group(cmd=cmd, resource_group_name=resource_group_name) + if managed_env: + env_name = parse_resource_id(managed_env)["name"].lower() + if "resource_group" in parse_resource_id(managed_env): + ManagedEnvironmentClient.show(cmd, parse_resource_id(managed_env)["resource_group"], parse_resource_id(managed_env)["name"]) + containerapps = [c for c in containerapps if c["properties"]["managedEnvironmentId"].lower() == managed_env.lower()] + else: + containerapps = [c for c in containerapps if parse_resource_id(c["properties"]["managedEnvironmentId"])["name"].lower() == env_name] + return containerapps except CLIError as e: handle_raw_exception(e) @@ -796,7 +807,6 @@ def create_managed_environment(cmd, managed_env_def = ManagedEnvironmentModel managed_env_def["location"] = location - managed_env_def["properties"]["internalLoadBalancerEnabled"] = False managed_env_def["properties"]["appLogsConfiguration"] = app_logs_config_def managed_env_def["tags"] = tags managed_env_def["properties"]["zoneRedundant"] = zone_redundant @@ -824,7 +834,7 @@ def create_managed_environment(cmd, if internal_only: if not infrastructure_subnet_resource_id: raise ValidationError('Infrastructure subnet resource ID needs to be supplied for internal only environments.') - managed_env_def["properties"]["internalLoadBalancerEnabled"] = True + managed_env_def["properties"]["vnetConfiguration"]["internal"] = True try: r = ManagedEnvironmentClient.create( @@ -883,12 +893,6 @@ def delete_managed_environment(cmd, name, resource_group_name, no_wait=False): def assign_managed_identity(cmd, name, resource_group_name, system_assigned=False, user_assigned=None, no_wait=False): _validate_subscription_registered(cmd, CONTAINER_APPS_RP) - - assign_system_identity = system_assigned - if not user_assigned: - user_assigned = [] - assign_user_identities = [x.lower() for x in user_assigned] - containerapp_def = None # Get containerapp properties of CA we are updating @@ -901,56 +905,7 @@ def assign_managed_identity(cmd, name, resource_group_name, system_assigned=Fals raise ResourceNotFoundError("The containerapp '{}' does not exist".format(name)) _get_existing_secrets(cmd, resource_group_name, name, containerapp_def) - - # If identity not returned - try: - containerapp_def["identity"] - containerapp_def["identity"]["type"] - except: - containerapp_def["identity"] = {} - containerapp_def["identity"]["type"] = "None" - - if assign_system_identity and containerapp_def["identity"]["type"].__contains__("SystemAssigned"): - logger.warning("System identity is already assigned to containerapp") - - # Assign correct type - try: - if containerapp_def["identity"]["type"] != "None": - if containerapp_def["identity"]["type"] == "SystemAssigned" and assign_user_identities: - containerapp_def["identity"]["type"] = "SystemAssigned,UserAssigned" - if containerapp_def["identity"]["type"] == "UserAssigned" and assign_system_identity: - containerapp_def["identity"]["type"] = "SystemAssigned,UserAssigned" - else: - if assign_system_identity and assign_user_identities: - containerapp_def["identity"]["type"] = "SystemAssigned,UserAssigned" - elif assign_system_identity: - containerapp_def["identity"]["type"] = "SystemAssigned" - elif assign_user_identities: - containerapp_def["identity"]["type"] = "UserAssigned" - except: - # Always returns "type": "None" when CA has no previous identities - pass - - if assign_user_identities: - try: - containerapp_def["identity"]["userAssignedIdentities"] - except: - containerapp_def["identity"]["userAssignedIdentities"] = {} - - subscription_id = get_subscription_id(cmd.cli_ctx) - - for r in assign_user_identities: - r = _ensure_identity_resource_id(subscription_id, resource_group_name, r).replace("resourceGroup", "resourcegroup") - isExisting = False - - for old_user_identity in containerapp_def["identity"]["userAssignedIdentities"]: - if old_user_identity.lower() == r.lower(): - isExisting = True - logger.warning("User identity {} is already assigned to containerapp".format(old_user_identity)) - break - - if not isExisting: - containerapp_def["identity"]["userAssignedIdentities"][r] = {} + set_managed_identity(cmd, resource_group_name, containerapp_def, system_assigned, user_assigned) try: r = ContainerAppClient.create_or_update(cmd=cmd, resource_group_name=resource_group_name, name=name, container_app_envelope=containerapp_def, no_wait=no_wait) @@ -1145,7 +1100,7 @@ def create_or_update_github_action(cmd, # Registry if registry_username is None or registry_password is None: # If registry is Azure Container Registry, we can try inferring credentials - if not registry_url or '.azurecr.io' not in registry_url: + if not registry_url or ACR_IMAGE_SUFFIX not in registry_url: raise RequiredArgumentMissingError('Registry url is required if using Azure Container Registry, otherwise Registry username and password are required if using Dockerhub') logger.warning('No credential was provided to access Azure Container Registry. Trying to look up...') parsed = urlparse(registry_url) @@ -1246,9 +1201,12 @@ def delete_github_action(cmd, name, resource_group_name, token=None, login_with_ handle_raw_exception(e) -def list_revisions(cmd, name, resource_group_name): +def list_revisions(cmd, name, resource_group_name, all=False): try: - return ContainerAppClient.list_revisions(cmd=cmd, resource_group_name=resource_group_name, name=name) + revision_list = ContainerAppClient.list_revisions(cmd=cmd, resource_group_name=resource_group_name, name=name) + if all: + return revision_list + return [r for r in revision_list if r["properties"]["active"]] except CLIError as e: handle_raw_exception(e) @@ -1368,7 +1326,7 @@ def set_revision_mode(cmd, resource_group_name, name, mode, no_wait=False): handle_raw_exception(e) -def add_revision_label(cmd, resource_group_name, revision, label, name=None, no_wait=False): +def add_revision_label(cmd, resource_group_name, revision, label, name=None, no_wait=False, yes=False): _validate_subscription_registered(cmd, CONTAINER_APPS_RP) if not name: @@ -1383,26 +1341,93 @@ def add_revision_label(cmd, resource_group_name, revision, label, name=None, no_ if not containerapp_def: raise ResourceNotFoundError(f"The containerapp '{name}' does not exist in group '{resource_group_name}'") - if "ingress" not in containerapp_def['properties']['configuration'] and "traffic" not in containerapp_def['properties']['configuration']['ingress']: - raise ValidationError("Ingress and traffic weights are required to set labels.") + if "ingress" not in containerapp_def['properties']['configuration'] or "traffic" not in containerapp_def['properties']['configuration']['ingress']: + raise ValidationError("Ingress and traffic weights are required to add labels.") - traffic_weight = containerapp_def['properties']['configuration']['ingress']['traffic'] + traffic_weight = containerapp_def['properties']['configuration']['ingress']['traffic'] if 'traffic' in containerapp_def['properties']['configuration']['ingress'] else {} + + _validate_revision_name(cmd, revision, resource_group_name, name) label_added = False for weight in traffic_weight: + if "label" in weight and weight["label"].lower() == label.lower(): + r_name = "latest" if "latestRevision" in weight and weight["latestRevision"] else weight["revisionName"] + if not yes and r_name.lower() != revision.lower(): + msg = f"A weight with the label '{label}' already exists. Remove existing label '{label}' from '{r_name}' and add to '{revision}'?" + if not prompt_y_n(msg, default="n"): + raise ArgumentUsageError(f"Usage Error: cannot specify existing label without agreeing to remove existing label '{label}' from '{r_name}' and add to '{revision}'.") + weight["label"] = None + if "latestRevision" in weight: if revision.lower() == "latest" and weight["latestRevision"]: label_added = True weight["label"] = label - break else: if revision.lower() == weight["revisionName"].lower(): label_added = True weight["label"] = label - break if not label_added: - raise ValidationError("Please specify a revision name with an associated traffic weight.") + containerapp_def["properties"]["configuration"]["ingress"]["traffic"].append({ + "revisionName": revision if revision.lower() != "latest" else None, + "weight": 0, + "latestRevision": revision.lower() == "latest", + "label": label + }) + + containerapp_patch_def = {} + containerapp_patch_def['properties'] = {} + containerapp_patch_def['properties']['configuration'] = {} + containerapp_patch_def['properties']['configuration']['ingress'] = {} + + containerapp_patch_def['properties']['configuration']['ingress']['traffic'] = traffic_weight + + try: + r = ContainerAppClient.update( + cmd=cmd, resource_group_name=resource_group_name, name=name, container_app_envelope=containerapp_patch_def, no_wait=no_wait) + return r['properties']['configuration']['ingress']['traffic'] + except Exception as e: + handle_raw_exception(e) + + +def swap_revision_label(cmd, name, resource_group_name, source_label, target_label, no_wait=False): + _validate_subscription_registered(cmd, CONTAINER_APPS_RP) + + if source_label == target_label: + raise ArgumentUsageError("Label names to be swapped must be different.") + + containerapp_def = None + try: + containerapp_def = ContainerAppClient.show(cmd=cmd, resource_group_name=resource_group_name, name=name) + except: + pass + + if not containerapp_def: + raise ResourceNotFoundError(f"The containerapp '{name}' does not exist in group '{resource_group_name}'") + + if "ingress" not in containerapp_def['properties']['configuration'] or "traffic" not in containerapp_def['properties']['configuration']['ingress']: + raise ValidationError("Ingress and traffic weights are required to swap labels.") + + traffic_weight = containerapp_def['properties']['configuration']['ingress']['traffic'] if 'traffic' in containerapp_def['properties']['configuration']['ingress'] else {} + + source_label_found = False + target_label_found = False + for weight in traffic_weight: + if "label" in weight: + if weight["label"].lower() == source_label.lower(): + if not source_label_found: + source_label_found = True + weight["label"] = target_label + elif weight["label"].lower() == target_label.lower(): + if not target_label_found: + target_label_found = True + weight["label"] = source_label + if not source_label_found and not target_label_found: + raise ArgumentUsageError(f"Could not find label '{source_label}' nor label '{target_label}' in traffic.") + if not source_label_found: + raise ArgumentUsageError(f"Could not find label '{source_label}' in traffic.") + if not target_label_found: + raise ArgumentUsageError(f"Could not find label '{target_label}' in traffic.") containerapp_patch_def = {} containerapp_patch_def['properties'] = {} @@ -1431,8 +1456,8 @@ def remove_revision_label(cmd, resource_group_name, name, label, no_wait=False): if not containerapp_def: raise ResourceNotFoundError(f"The containerapp '{name}' does not exist in group '{resource_group_name}'") - if "ingress" not in containerapp_def['properties']['configuration'] and "traffic" not in containerapp_def['properties']['configuration']['ingress']: - raise ValidationError("Ingress and traffic weights are required to set labels.") + if "ingress" not in containerapp_def['properties']['configuration'] or "traffic" not in containerapp_def['properties']['configuration']['ingress']: + raise ValidationError("Ingress and traffic weights are required to remove labels.") traffic_weight = containerapp_def['properties']['configuration']['ingress']['traffic'] @@ -1557,6 +1582,9 @@ def set_ingress_traffic(cmd, name, resource_group_name, label_weights=None, revi if not containerapp_def: raise ResourceNotFoundError(f"The containerapp '{name}' does not exist in group '{resource_group_name}'") + if containerapp_def["properties"]["configuration"]["activeRevisionsMode"].lower() == "single": + raise ValidationError(f"Containerapp '{name}' is configured for single revision. Set revision mode to multiple in order to set ingress traffic. Try `az containerapp revision set-mode -h` for more details.") + try: containerapp_def["properties"]["configuration"]["ingress"] containerapp_def["properties"]["configuration"]["ingress"]["traffic"] @@ -1575,6 +1603,10 @@ def set_ingress_traffic(cmd, name, resource_group_name, label_weights=None, revi # update revision weights to containerapp, get the old weight sum old_weight_sum = _update_revision_weights(containerapp_def, revision_weights) + # validate revision names + for revision in revision_weights: + _validate_revision_name(cmd, revision.split('=')[0], resource_group_name, name) + _update_weights(containerapp_def, revision_weights, old_weight_sum) containerapp_patch_def = {} @@ -1652,8 +1684,10 @@ def list_registry(cmd, name, resource_group_name): raise ValidationError("The containerapp {} has no assigned registries.".format(name)) from e -def set_registry(cmd, name, resource_group_name, server, username=None, password=None, disable_warnings=False, no_wait=False): +def set_registry(cmd, name, resource_group_name, server, username=None, password=None, disable_warnings=False, identity=None, no_wait=False): _validate_subscription_registered(cmd, CONTAINER_APPS_RP) + if (username or password) and identity: + raise MutuallyExclusiveArgumentError("Use either identity or username/password.") containerapp_def = None try: @@ -1674,9 +1708,9 @@ def set_registry(cmd, name, resource_group_name, server, username=None, password registries_def = containerapp_def["properties"]["configuration"]["registries"] - if not username or not password: + if (not username or not password) and not identity: # If registry is Azure Container Registry, we can try inferring credentials - if '.azurecr.io' not in server: + if ACR_IMAGE_SUFFIX not in server: raise RequiredArgumentMissingError('Registry username and password are required if you are not using Azure Container Registry.') not disable_warnings and logger.warning('No credential was provided to access Azure Container Registry. Trying to look up...') parsed = urlparse(server) @@ -1695,6 +1729,7 @@ def set_registry(cmd, name, resource_group_name, server, username=None, password updating_existing_registry = True if username: r["username"] = username + r["identity"] = None if password: r["passwordSecretRef"] = store_as_secret_and_return_secret_ref( containerapp_def["properties"]["configuration"]["secrets"], @@ -1702,21 +1737,34 @@ def set_registry(cmd, name, resource_group_name, server, username=None, password r["server"], password, update_existing_secret=True) + r["identity"] = None + if identity: + r["identity"] = identity + r["username"] = None + r["passwordSecretRef"] = None # If not updating existing registry, add as new registry if not updating_existing_registry: registry = RegistryCredentialsModel registry["server"] = server - registry["username"] = username - registry["passwordSecretRef"] = store_as_secret_and_return_secret_ref( - containerapp_def["properties"]["configuration"]["secrets"], - username, - server, - password, - update_existing_secret=True) + if not identity: + registry["username"] = username + registry["passwordSecretRef"] = store_as_secret_and_return_secret_ref( + containerapp_def["properties"]["configuration"]["secrets"], + username, + server, + password, + update_existing_secret=True) + else: + registry["identity"] = identity registries_def.append(registry) + if identity: + system_assigned_identity = identity.lower() == "system" + user_assigned = None if system_assigned_identity else [identity] + set_managed_identity(cmd, resource_group_name, containerapp_def, system_assigned_identity, user_assigned) + try: r = ContainerAppClient.create_or_update( cmd=cmd, resource_group_name=resource_group_name, name=name, container_app_envelope=containerapp_def, no_wait=no_wait) @@ -2189,7 +2237,8 @@ def containerapp_up(cmd, env.create_if_needed(name) if source or repo: - _get_registry_from_app(app) # if the app exists, get the registry + if not registry_server: + _get_registry_from_app(app, source) # if the app exists, get the registry _get_registry_details(cmd, app, source) # fetch ACR creds from arguments registry arguments app.create_acr_if_needed() @@ -2255,7 +2304,10 @@ def containerapp_up_logic(cmd, resource_group_name, name, managed_env, image, en ingress_def = None if target_port is not None and ingress is not None: - ingress_def = IngressModel + if ca_exists: + ingress_def = containerapp_def["properties"]["configuration"]["ingress"] + else: + ingress_def = IngressModel ingress_def["external"] = external_ingress ingress_def["targetPort"] = target_port containerapp_def["properties"]["configuration"]["ingress"] = ingress_def @@ -2295,7 +2347,7 @@ def containerapp_up_logic(cmd, resource_group_name, name, managed_env, image, en if registry_server: if not registry_pass or not registry_user: - if '.azurecr.io' not in registry_server: + if ACR_IMAGE_SUFFIX not in registry_server: raise RequiredArgumentMissingError('Registry url is required if using Azure Container Registry, otherwise Registry username and password are required if using Dockerhub') logger.warning('No credential was provided to access Azure Container Registry. Trying to look up...') parsed = urlparse(registry_server) @@ -2370,25 +2422,36 @@ def both_match(c): handle_raw_exception(e) -def upload_certificate(cmd, name, resource_group_name, certificate_file, certificate_name=None, certificate_password=None, location=None): +def upload_certificate(cmd, name, resource_group_name, certificate_file, certificate_name=None, certificate_password=None, location=None, prompt=False): _validate_subscription_registered(cmd, CONTAINER_APPS_RP) blob, thumbprint = load_cert_file(certificate_file, certificate_password) cert_name = None if certificate_name: - if not check_cert_name_availability(cmd, resource_group_name, name, certificate_name): - msg = 'A certificate with the name {} already exists in {}. If continue with this name, it will be overwritten by the new certificate file.\nOverwrite?' - overwrite = prompt_y_n(msg.format(certificate_name, name)) - if overwrite: - cert_name = certificate_name + name_availability = check_cert_name_availability(cmd, resource_group_name, name, certificate_name) + if not name_availability["nameAvailable"]: + if name_availability["reason"] == NAME_ALREADY_EXISTS: + msg = '{}. If continue with this name, it will be overwritten by the new certificate file.\nOverwrite?' + overwrite = True + if prompt: + overwrite = prompt_y_n(msg.format(name_availability["message"])) + else: + logger.warning('{}. It will be overwritten by the new certificate file.'.format(name_availability["message"])) + if overwrite: + cert_name = certificate_name + else: + raise ValidationError(name_availability["message"]) else: cert_name = certificate_name while not cert_name: random_name = generate_randomized_cert_name(thumbprint, name, resource_group_name) - if check_cert_name_availability(cmd, resource_group_name, name, random_name): + check_result = check_cert_name_availability(cmd, resource_group_name, name, random_name) + if check_result["nameAvailable"]: cert_name = random_name + elif not check_result["nameAvailable"] and (check_result["reason"] == NAME_INVALID): + raise ValidationError(check_result["message"]) certificate = ContainerAppCertificateEnvelopeModel certificate["properties"]["password"] = certificate_password diff --git a/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_ingress_traffic_e2e.yaml b/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_ingress_traffic_e2e.yaml index 6849ebe7131..8452a887bdf 100644 --- a/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_ingress_traffic_e2e.yaml +++ b/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_ingress_traffic_e2e.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-12T21:01:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-06T16:35:29Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:05 GMT + - Mon, 06 Jun 2022 16:35:30 GMT expires: - '-1' pragma: @@ -60,22 +60,22 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004?api-version=2021-12-01-preview response: body: string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": - \"e0436bf1-a4ad-41b2-a33f-1c7c15897075\",\r\n \"provisioningState\": \"Creating\",\r\n + \"68beba8c-b911-4f9c-a964-769fb3966fad\",\r\n \"provisioningState\": \"Creating\",\r\n \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": - \"Thu, 12 May 2022 21:01:10 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \"Mon, 06 Jun 2022 16:35:34 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": - \"Fri, 13 May 2022 03:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \"Tue, 07 Jun 2022 06:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": - \"Enabled\",\r\n \"createdDate\": \"Thu, 12 May 2022 21:01:10 GMT\",\r\n - \ \"modifiedDate\": \"Thu, 12 May 2022 21:01:10 GMT\"\r\n },\r\n \"id\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 06 Jun 2022 16:35:34 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 06 Jun 2022 16:35:34 GMT\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/microsoft.operationalinsights/workspaces/containerapp-env000004\",\r\n \ \"name\": \"containerapp-env000004\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n \ \"location\": \"eastus2\"\r\n}" @@ -89,7 +89,7 @@ interactions: content-type: - application/json date: - - Thu, 12 May 2022 21:01:10 GMT + - Mon, 06 Jun 2022 16:35:35 GMT pragma: - no-cache request-context: @@ -122,22 +122,22 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004?api-version=2021-12-01-preview response: body: string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": - \"e0436bf1-a4ad-41b2-a33f-1c7c15897075\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \"68beba8c-b911-4f9c-a964-769fb3966fad\",\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": - \"Thu, 12 May 2022 21:01:10 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \"Mon, 06 Jun 2022 16:35:34 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": - \"Fri, 13 May 2022 03:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \"Tue, 07 Jun 2022 06:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": - \"Enabled\",\r\n \"createdDate\": \"Thu, 12 May 2022 21:01:10 GMT\",\r\n - \ \"modifiedDate\": \"Thu, 12 May 2022 21:01:11 GMT\"\r\n },\r\n \"id\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 06 Jun 2022 16:35:34 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 06 Jun 2022 16:35:35 GMT\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/microsoft.operationalinsights/workspaces/containerapp-env000004\",\r\n \ \"name\": \"containerapp-env000004\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n \ \"location\": \"eastus2\"\r\n}" @@ -151,7 +151,7 @@ interactions: content-type: - application/json date: - - Thu, 12 May 2022 21:01:41 GMT + - Mon, 06 Jun 2022 16:36:05 GMT pragma: - no-cache request-context: @@ -188,13 +188,13 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: POST uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004/sharedKeys?api-version=2020-08-01 response: body: - string: "{\r\n \"primarySharedKey\": \"V2wuc/uGdQbPRVLMmgpYqkmIQ0bPCSjAsuSptDic2bDVo5jSaMyhRwjXSV2yEVr8c3goXcuHXhr60g5p5APvow==\",\r\n - \ \"secondarySharedKey\": \"lrYrkpZtC+boaTK9TabnAatLONNtdpkBhW9yFFv+LvRA+l/K+COezbdFcUg24paRla73OsYQJRkzsY8GdT/3NQ==\"\r\n}" + string: "{\r\n \"primarySharedKey\": \"nAvC6eD35sVmVPCa2hdVxToZJEfrosQac9gLHizXu1bNCoVYi9vCuGKjy/AJlR8awYQTbNNPaQcHsMsJUBwEWQ==\",\r\n + \ \"secondarySharedKey\": \"ihrxc/DYz6cPvPU3E9Yh6JEecbo0JLGjnIEgi7EYaSnAtthwKTM/AS5lfuBKIU1NevzjzOS0kXe4WDZqWCTyJA==\"\r\n}" headers: access-control-allow-origin: - '*' @@ -207,7 +207,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:43 GMT + - Mon, 06 Jun 2022 16:36:07 GMT expires: - '-1' pragma: @@ -248,12 +248,12 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-05-12T21:01:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-06T16:35:29Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -262,7 +262,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:44 GMT + - Mon, 06 Jun 2022 16:36:09 GMT expires: - '-1' pragma: @@ -290,41 +290,49 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:43 GMT + - Mon, 06 Jun 2022 16:36:09 GMT expires: - '-1' pragma: @@ -352,41 +360,49 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:44 GMT + - Mon, 06 Jun 2022 16:36:10 GMT expires: - '-1' pragma: @@ -404,7 +420,8 @@ interactions: body: '{"location": "eastus2", "tags": null, "properties": {"daprAIInstrumentationKey": null, "vnetConfiguration": null, "internalLoadBalancerEnabled": false, "appLogsConfiguration": {"destination": "log-analytics", "logAnalyticsConfiguration": {"customerId": - "e0436bf1-a4ad-41b2-a33f-1c7c15897075", "sharedKey": "V2wuc/uGdQbPRVLMmgpYqkmIQ0bPCSjAsuSptDic2bDVo5jSaMyhRwjXSV2yEVr8c3goXcuHXhr60g5p5APvow=="}}}}' + "68beba8c-b911-4f9c-a964-769fb3966fad", "sharedKey": "nAvC6eD35sVmVPCa2hdVxToZJEfrosQac9gLHizXu1bNCoVYi9vCuGKjy/AJlR8awYQTbNNPaQcHsMsJUBwEWQ=="}}, + "zoneRedundant": false}}' headers: Accept: - '*/*' @@ -415,23 +432,23 @@ interactions: Connection: - keep-alive Content-Length: - - '400' + - '424' Content-Type: - application/json ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074Z"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676Z"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/managedEnvironmentOperationStatuses/f7dbfebb-0577-46d0-a1c1-3e30ad3e56c2?api-version=2022-03-01&azureAsyncOperation=true + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/managedEnvironmentOperationStatuses/78f28acf-cb38-4a6c-b101-c6d304532261?api-version=2022-03-01&azureAsyncOperation=true cache-control: - no-cache content-length: @@ -439,7 +456,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:47 GMT + - Mon, 06 Jun 2022 16:36:14 GMT expires: - '-1' pragma: @@ -473,15 +490,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -489,7 +506,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:50 GMT + - Mon, 06 Jun 2022 16:36:15 GMT expires: - '-1' pragma: @@ -523,15 +540,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -539,7 +556,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:53 GMT + - Mon, 06 Jun 2022 16:36:19 GMT expires: - '-1' pragma: @@ -573,15 +590,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -589,7 +606,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:01:57 GMT + - Mon, 06 Jun 2022 16:36:21 GMT expires: - '-1' pragma: @@ -623,15 +640,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -639,7 +656,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:00 GMT + - Mon, 06 Jun 2022 16:36:25 GMT expires: - '-1' pragma: @@ -673,15 +690,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -689,7 +706,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:03 GMT + - Mon, 06 Jun 2022 16:36:28 GMT expires: - '-1' pragma: @@ -723,15 +740,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -739,7 +756,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:05 GMT + - Mon, 06 Jun 2022 16:36:31 GMT expires: - '-1' pragma: @@ -773,15 +790,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -789,7 +806,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:08 GMT + - Mon, 06 Jun 2022 16:36:34 GMT expires: - '-1' pragma: @@ -823,15 +840,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -839,7 +856,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:11 GMT + - Mon, 06 Jun 2022 16:36:38 GMT expires: - '-1' pragma: @@ -873,15 +890,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -889,7 +906,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:14 GMT + - Mon, 06 Jun 2022 16:36:41 GMT expires: - '-1' pragma: @@ -923,15 +940,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -939,7 +956,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:18 GMT + - Mon, 06 Jun 2022 16:36:45 GMT expires: - '-1' pragma: @@ -973,15 +990,15 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Waiting","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -989,7 +1006,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:20 GMT + - Mon, 06 Jun 2022 16:36:48 GMT expires: - '-1' pragma: @@ -1023,23 +1040,23 @@ interactions: ParameterSetName: - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Succeeded","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '795' + - '793' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:24 GMT + - Mon, 06 Jun 2022 16:36:51 GMT expires: - '-1' pragma: @@ -1063,61 +1080,49 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - containerapp env show + - containerapp env create Connection: - keep-alive ParameterSetName: - - -g -n + - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North - Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, - CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North - Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, - CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North - Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, - CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, - SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North - Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North - Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North - Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North - Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North - Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '2863' + - '793' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:24 GMT + - Mon, 06 Jun 2022 16:36:53 GMT expires: - '-1' pragma: - no-cache + server: + - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-powered-by: + - ASP.NET status: code: 200 message: OK @@ -1129,21 +1134,71 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - containerapp env show + - containerapp env create Connection: - keep-alive ParameterSetName: - - -g -n + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Waiting","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '793' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 06 Jun 2022 16:36:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Succeeded","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Succeeded","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -1151,7 +1206,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:26 GMT + - Mon, 06 Jun 2022 16:37:00 GMT expires: - '-1' pragma: @@ -1179,47 +1234,55 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - containerapp create + - containerapp env show Connection: - keep-alive ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:27 GMT + - Mon, 06 Jun 2022 16:37:00 GMT expires: - '-1' pragma: @@ -1241,21 +1304,21 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - containerapp create + - containerapp env show Connection: - keep-alive ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:01:47.5652074","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:01:47.5652074"},"properties":{"provisioningState":"Succeeded","defaultDomain":"calmflower-c354f0e7.eastus2.azurecontainerapps.io","staticIp":"20.85.19.167","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"e0436bf1-a4ad-41b2-a33f-1c7c15897075"}},"zoneRedundant":false}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Succeeded","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: @@ -1263,7 +1326,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:27 GMT + - Mon, 06 Jun 2022 16:37:01 GMT expires: - '-1' pragma: @@ -1295,43 +1358,51 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n --environment --ingress --target-port --revisions-mode User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:27 GMT + - Mon, 06 Jun 2022 16:37:02 GMT expires: - '-1' pragma: @@ -1346,14 +1417,7 @@ interactions: code: 200 message: OK - request: - body: '{"location": "eastus2", "identity": {"type": "None", "userAssignedIdentities": - null}, "properties": {"managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002", - "configuration": {"secrets": null, "activeRevisionsMode": "single", "ingress": - {"fqdn": null, "external": true, "targetPort": 80, "transport": "auto", "traffic": - null, "customDomains": null}, "dapr": null, "registries": null}, "template": - {"revisionSuffix": null, "containers": [{"image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", - "name": "containerapp000003", "command": null, "args": null, "env": null, "resources": - null, "volumeMounts": null}], "scale": null, "volumes": null}}, "tags": null}' + body: null headers: Accept: - '*/*' @@ -1363,33 +1427,26 @@ interactions: - containerapp create Connection: - keep-alive - Content-Length: - - '795' - Content-Type: - - application/json ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n --environment --ingress --target-port --revisions-mode User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"","latestRevisionFqdn":"","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"eastus2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:36:13.2620676","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:36:13.2620676"},"properties":{"provisioningState":"Succeeded","defaultDomain":"ashyocean-a385731e.eastus2.azurecontainerapps.io","staticIp":"20.97.221.223","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"68beba8c-b911-4f9c-a964-769fb3966fad"}},"zoneRedundant":false}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/edfe8c69-6e4d-4f69-8b9a-4ebd8b05cedd?api-version=2022-03-01&azureAsyncOperation=true + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1398' + - '795' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:33 GMT + - Mon, 06 Jun 2022 16:37:03 GMT expires: - '-1' pragma: @@ -1398,22 +1455,22 @@ interactions: - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-async-operation-timeout: - - PT15M - x-ms-ratelimit-remaining-subscription-resource-requests: - - '498' x-powered-by: - ASP.NET status: - code: 201 - message: Created + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: @@ -1421,47 +1478,73 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n --environment --ingress --target-port --revisions-mode User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: - api-supported-versions: - - 2022-01-01-preview, 2022-03-01 cache-control: - no-cache content-length: - - '1500' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:34 GMT + - Mon, 06 Jun 2022 16:37:04 GMT expires: - '-1' pragma: - no-cache - server: - - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked vary: - - Accept-Encoding,Accept-Encoding + - Accept-Encoding x-content-type-options: - nosniff - x-powered-by: - - ASP.NET status: code: 200 message: OK - request: - body: null + body: '{"location": "eastus2", "identity": {"type": "None", "userAssignedIdentities": + null}, "properties": {"managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002", + "configuration": {"secrets": null, "activeRevisionsMode": "multiple", "ingress": + {"fqdn": null, "external": true, "targetPort": 80, "transport": "auto", "traffic": + null, "customDomains": null}, "dapr": null, "registries": null}, "template": + {"revisionSuffix": null, "containers": [{"image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", + "name": "containerapp000003", "command": null, "args": null, "env": null, "resources": + null, "volumeMounts": null}], "scale": null, "volumes": null}}, "tags": null}' headers: Accept: - '*/*' @@ -1471,27 +1554,33 @@ interactions: - containerapp create Connection: - keep-alive + Content-Length: + - '797' + Content-Type: + - application/json ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n --environment --ingress --target-port --revisions-mode User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 - method: GET + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:07.2526715Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"","latestRevisionFqdn":"","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/2322728b-2b7b-42d2-a74a-4f1dbaa6be18?api-version=2022-03-01&azureAsyncOperation=true cache-control: - no-cache content-length: - - '1500' + - '1401' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:37 GMT + - Mon, 06 Jun 2022 16:37:10 GMT expires: - '-1' pragma: @@ -1500,17 +1589,17 @@ interactions: - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' x-powered-by: - ASP.NET status: - code: 200 - message: OK + code: 201 + message: Created - request: body: null headers: @@ -1523,26 +1612,26 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n --environment --ingress --target-port --revisions-mode User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:07.2526715"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1500' + - '1502' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:41 GMT + - Mon, 06 Jun 2022 16:37:12 GMT expires: - '-1' pragma: @@ -1574,26 +1663,26 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n --environment --ingress --target-port --revisions-mode User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:07.2526715"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1500' + - '1502' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:44 GMT + - Mon, 06 Jun 2022 16:37:16 GMT expires: - '-1' pragma: @@ -1625,26 +1714,26 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --environment --ingress --target-port + - -g -n --environment --ingress --target-port --revisions-mode User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:07.2526715"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1499' + - '1501' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:48 GMT + - Mon, 06 Jun 2022 16:37:19 GMT expires: - '-1' pragma: @@ -1678,41 +1767,49 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:48 GMT + - Mon, 06 Jun 2022 16:37:20 GMT expires: - '-1' pragma: @@ -1740,24 +1837,24 @@ interactions: ParameterSetName: - -g -n User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:07.2526715"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1499' + - '1501' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:49 GMT + - Mon, 06 Jun 2022 16:37:20 GMT expires: - '-1' pragma: @@ -1791,41 +1888,49 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:49 GMT + - Mon, 06 Jun 2022 16:37:21 GMT expires: - '-1' pragma: @@ -1853,24 +1958,24 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:30.9785689"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:07.2526715"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1499' + - '1501' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:50 GMT + - Mon, 06 Jun 2022 16:37:22 GMT expires: - '-1' pragma: @@ -1909,7 +2014,7 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: PATCH uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: @@ -1917,17 +2022,17 @@ interactions: string: '' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - '0' date: - - Thu, 12 May 2022 21:02:51 GMT + - Mon, 06 Jun 2022 16:37:23 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/7945b049-f3b3-4238-b814-73e4c01485ce?api-version=2022-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/4122c42f-91cf-4a09-a17a-dc6372bbb1e6?api-version=2022-03-01 pragma: - no-cache server: @@ -1957,24 +2062,24 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:51.3812617"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:23.2331875"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1500' + - '1502' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:52 GMT + - Mon, 06 Jun 2022 16:37:25 GMT expires: - '-1' pragma: @@ -2008,24 +2113,24 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:51.3812617"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:23.2331875"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1500' + - '1502' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:55 GMT + - Mon, 06 Jun 2022 16:37:27 GMT expires: - '-1' pragma: @@ -2059,24 +2164,24 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:51.3812617"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:23.2331875"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1499' + - '1501' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:59 GMT + - Mon, 06 Jun 2022 16:37:30 GMT expires: - '-1' pragma: @@ -2110,41 +2215,49 @@ interactions: ParameterSetName: - -g -n --cpu --memory User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:59 GMT + - Mon, 06 Jun 2022 16:37:31 GMT expires: - '-1' pragma: @@ -2172,41 +2285,49 @@ interactions: ParameterSetName: - -g -n --cpu --memory User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:02:59 GMT + - Mon, 06 Jun 2022 16:37:31 GMT expires: - '-1' pragma: @@ -2234,24 +2355,24 @@ interactions: ParameterSetName: - -g -n --cpu --memory User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:02:51.3812617"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:23.2331875"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1499' + - '1501' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:00 GMT + - Mon, 06 Jun 2022 16:37:31 GMT expires: - '-1' pragma: @@ -2275,13 +2396,13 @@ interactions: body: '{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003", "name": "containerapp000003", "type": "Microsoft.App/containerApps", "location": "East US 2", "systemData": {"createdBy": "silasstrawn@microsoft.com", "createdByType": - "User", "createdAt": "2022-05-12T21:02:30.9785689", "lastModifiedBy": "silasstrawn@microsoft.com", - "lastModifiedByType": "User", "lastModifiedAt": "2022-05-12T21:02:51.3812617"}, + "User", "createdAt": "2022-06-06T16:37:07.2526715", "lastModifiedBy": "silasstrawn@microsoft.com", + "lastModifiedByType": "User", "lastModifiedAt": "2022-06-06T16:37:23.2331875"}, "properties": {"provisioningState": "Succeeded", "managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002", - "outboundIpAddresses": ["20.72.95.165", "20.72.95.136", "20.72.95.156"], "latestRevisionName": - "containerapp000003--1wzx3g0", "latestRevisionFqdn": "containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io", + "outboundIpAddresses": ["52.177.145.132", "52.247.83.237", "52.247.84.7"], "latestRevisionName": + "containerapp000003--j941xgh", "latestRevisionFqdn": "containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io", "customDomainVerificationId": "333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7", - "configuration": {"activeRevisionsMode": "Single", "ingress": {"fqdn": "containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io", + "configuration": {"activeRevisionsMode": "Multiple", "ingress": {"fqdn": "containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io", "external": true, "targetPort": 80, "transport": "Auto", "traffic": [{"weight": 100, "latestRevision": true}], "allowInsecure": false}, "secrets": []}, "template": {"containers": [{"image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", @@ -2297,32 +2418,32 @@ interactions: Connection: - keep-alive Content-Length: - - '1585' + - '1587' Content-Type: - application/json ParameterSetName: - -g -n --cpu --memory User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:02.2877448Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--1wzx3g0","latestRevisionFqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:33.2884749Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--j941xgh","latestRevisionFqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/753263ca-c001-49a8-b689-4f78efc71350?api-version=2022-03-01&azureAsyncOperation=true + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/00a93fb0-0ce0-4f67-a77f-0e645205699a?api-version=2022-03-01&azureAsyncOperation=true cache-control: - no-cache content-length: - - '1501' + - '1503' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:04 GMT + - Mon, 06 Jun 2022 16:37:34 GMT expires: - '-1' pragma: @@ -2356,24 +2477,24 @@ interactions: ParameterSetName: - -g -n --cpu --memory User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:02.2877448"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:33.2884749"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1500' + - '1502' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:05 GMT + - Mon, 06 Jun 2022 16:37:36 GMT expires: - '-1' pragma: @@ -2407,24 +2528,24 @@ interactions: ParameterSetName: - -g -n --cpu --memory User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:02.2877448"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:33.2884749"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1500' + - '1502' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:08 GMT + - Mon, 06 Jun 2022 16:37:39 GMT expires: - '-1' pragma: @@ -2458,24 +2579,24 @@ interactions: ParameterSetName: - -g -n --cpu --memory User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:02.2877448"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:33.2884749"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1500' + - '1502' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:11 GMT + - Mon, 06 Jun 2022 16:37:42 GMT expires: - '-1' pragma: @@ -2509,24 +2630,24 @@ interactions: ParameterSetName: - -g -n --cpu --memory User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:02.2877448"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:33.2884749"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1499' + - '1501' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:16 GMT + - Mon, 06 Jun 2022 16:37:45 GMT expires: - '-1' pragma: @@ -2560,23 +2681,23 @@ interactions: ParameterSetName: - -g -n User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions?api-version=2022-03-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--1wzx3g0","name":"containerapp000003--1wzx3g0","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-12T21:02:33+00:00","fqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":false,"replicas":0,"trafficWeight":0,"healthState":"Healthy","provisioningState":"Provisioned"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--4oxhqgb","name":"containerapp000003--4oxhqgb","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-12T21:03:02+00:00","fqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.00,"memory":"2Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":100,"healthState":"Healthy","provisioningState":"Provisioned"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--j941xgh","name":"containerapp000003--j941xgh","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-06-06T16:37:09+00:00","fqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":0,"healthState":"Healthy","provisioningState":"Provisioned"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--teqbk0k","name":"containerapp000003--teqbk0k","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-06-06T16:37:33+00:00","fqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.00,"memory":"2Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":100,"healthState":"Healthy","provisioningState":"Provisioned"}}]}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1466' + - '1463' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:17 GMT + - Mon, 06 Jun 2022 16:37:47 GMT expires: - '-1' pragma: @@ -2610,41 +2731,49 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:18 GMT + - Mon, 06 Jun 2022 16:37:47 GMT expires: - '-1' pragma: @@ -2672,24 +2801,74 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:02.2877448"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:33.2884749"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1501' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 06 Jun 2022 16:37:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision-weight + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--j941xgh?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--j941xgh","name":"containerapp000003--j941xgh","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-06-06T16:37:09+00:00","fqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":0,"healthState":"Healthy","provisioningState":"Provisioned"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1499' + - '724' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:19 GMT + - Mon, 06 Jun 2022 16:37:51 GMT expires: - '-1' pragma: @@ -2711,7 +2890,7 @@ interactions: message: OK - request: body: '{"properties": {"configuration": {"ingress": {"traffic": [{"weight": "50", - "latestRevision": true}, {"revisionName": "containerapp000003--1wzx3g0", "weight": + "latestRevision": true}, {"revisionName": "containerapp000003--j941xgh", "weight": 50, "latestRevision": false}]}}}}' headers: Accept: @@ -2729,7 +2908,7 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: PATCH uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: @@ -2737,17 +2916,17 @@ interactions: string: '' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - '0' date: - - Thu, 12 May 2022 21:03:20 GMT + - Mon, 06 Jun 2022 16:37:52 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/243f0dfc-7395-4e49-9b47-00c4112ce3a6?api-version=2022-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/eastus2/containerappOperationStatuses/d8e0c653-00e7-4fb2-9c3a-599eca4a6e6a?api-version=2022-03-01 pragma: - no-cache server: @@ -2777,24 +2956,24 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:20.6822715"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--1wzx3g0","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:52.1475449"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--j941xgh","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1558' + - '1560' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:22 GMT + - Mon, 06 Jun 2022 16:37:53 GMT expires: - '-1' pragma: @@ -2828,24 +3007,24 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:20.6822715"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--1wzx3g0","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:52.1475449"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--j941xgh","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1558' + - '1560' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:24 GMT + - Mon, 06 Jun 2022 16:37:56 GMT expires: - '-1' pragma: @@ -2879,24 +3058,24 @@ interactions: ParameterSetName: - -g -n --revision-weight User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:20.6822715"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--1wzx3g0","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:52.1475449"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--j941xgh","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1557' + - '1559' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:28 GMT + - Mon, 06 Jun 2022 16:37:59 GMT expires: - '-1' pragma: @@ -2930,41 +3109,49 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North Central US (Stage)","Canada Central","West Europe","North Europe","East US","East - US 2","Central US EUAP"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North Central US (Stage)","Central US EUAP","Canada Central","West Europe","North - Europe","East US","East US 2"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' headers: cache-control: - no-cache content-length: - - '2863' + - '3551' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:28 GMT + - Mon, 06 Jun 2022 16:38:00 GMT expires: - '-1' pragma: @@ -2992,24 +3179,24 @@ interactions: ParameterSetName: - -g -n User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"East - US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T21:02:30.9785689","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T21:03:20.6822715"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["20.72.95.165","20.72.95.136","20.72.95.156"],"latestRevisionName":"containerapp000003--4oxhqgb","latestRevisionFqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.calmflower-c354f0e7.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--1wzx3g0","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + US 2","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-06T16:37:07.2526715","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-06T16:37:52.1475449"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["52.177.145.132","52.247.83.237","52.247.84.7"],"latestRevisionName":"containerapp000003--teqbk0k","latestRevisionFqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.ashyocean-a385731e.eastus2.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--j941xgh","weight":50}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.0,"memory":"2Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1557' + - '1559' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:29 GMT + - Mon, 06 Jun 2022 16:38:01 GMT expires: - '-1' pragma: @@ -3043,23 +3230,23 @@ interactions: ParameterSetName: - -g -n User-Agent: - - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.36.0 + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions?api-version=2022-03-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--1wzx3g0","name":"containerapp000003--1wzx3g0","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-12T21:02:33+00:00","fqdn":"containerapp000003--1wzx3g0.calmflower-c354f0e7.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":false,"replicas":0,"trafficWeight":50,"healthState":"Healthy","provisioningState":"Provisioned"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--4oxhqgb","name":"containerapp000003--4oxhqgb","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-12T21:03:02+00:00","fqdn":"containerapp000003--4oxhqgb.calmflower-c354f0e7.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.00,"memory":"2Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":50,"healthState":"Healthy","provisioningState":"Provisioned"}}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--j941xgh","name":"containerapp000003--j941xgh","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-06-06T16:37:09+00:00","fqdn":"containerapp000003--j941xgh.ashyocean-a385731e.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":50,"healthState":"Healthy","provisioningState":"Provisioned"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--teqbk0k","name":"containerapp000003--teqbk0k","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-06-06T16:37:33+00:00","fqdn":"containerapp000003--teqbk0k.ashyocean-a385731e.eastus2.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":1.00,"memory":"2Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":50,"healthState":"Healthy","provisioningState":"Provisioned"}}]}' headers: api-supported-versions: - - 2022-01-01-preview, 2022-03-01 + - 2022-01-01-preview, 2022-03-01, 2022-05-01 cache-control: - no-cache content-length: - - '1466' + - '1463' content-type: - application/json; charset=utf-8 date: - - Thu, 12 May 2022 21:03:31 GMT + - Mon, 06 Jun 2022 16:38:02 GMT expires: - '-1' pragma: diff --git a/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_registry_msi.yaml b/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_registry_msi.yaml new file mode 100644 index 00000000000..9ad77af5ebb --- /dev/null +++ b/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_registry_msi.yaml @@ -0,0 +1,2967 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"northeurope","tags":{"product":"azurecli","cause":"automation","date":"2022-06-16T23:50:00Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '315' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:03 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "properties": {"sku": {"name": "PerGB2018"}, + "retentionInDays": 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '120' + Content-Type: + - application/json + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/logs000003?api-version=2021-12-01-preview + response: + body: + string: '{"properties":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7","provisioningState":"Creating","sku":{"name":"PerGB2018","lastSkuUpdate":"2022-06-16T23:50:10.0050018Z"},"retentionInDays":30,"features":{"legacy":0,"searchVersion":1,"enableLogAccessUsingOnlyResourcePermissions":true},"workspaceCapping":{"dailyQuotaGb":-1.0,"quotaNextResetTime":"2022-06-17T03:00:00Z","dataIngestionStatus":"RespectQuota"},"publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled","createdDate":"2022-06-16T23:50:10.0050018Z","modifiedDate":"2022-06-16T23:50:10.0050018Z"},"location":"northeurope","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/logs000003","name":"logs000003","type":"Microsoft.OperationalInsights/workspaces"}' + headers: + access-control-allow-origin: + - '*' + api-supported-versions: + - 2021-12-01-preview + cache-control: + - no-cache + content-length: + - '832' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:13 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/logs000003?api-version=2021-12-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/logs000003?api-version=2021-12-01-preview + response: + body: + string: '{"properties":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7","provisioningState":"Succeeded","sku":{"name":"PerGB2018","lastSkuUpdate":"2022-06-16T23:50:10.0050018Z"},"retentionInDays":30,"features":{"legacy":0,"searchVersion":1,"enableLogAccessUsingOnlyResourcePermissions":true},"workspaceCapping":{"dailyQuotaGb":-1.0,"quotaNextResetTime":"2022-06-17T03:00:00Z","dataIngestionStatus":"RespectQuota"},"publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled","createdDate":"2022-06-16T23:50:10.0050018Z","modifiedDate":"2022-06-16T23:50:10.0050018Z"},"location":"northeurope","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/logs000003","name":"logs000003","type":"Microsoft.OperationalInsights/workspaces"}' + headers: + access-control-allow-origin: + - '*' + api-supported-versions: + - 2021-12-01-preview + cache-control: + - no-cache + content-length: + - '833' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:44 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace get-shared-keys + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/logs000003/sharedKeys?api-version=2020-08-01 + response: + body: + string: '{"primarySharedKey":"hrdp9gU3pAFvR7Est0bACxABWuHt0Ow8dXGy2A3UGh/tuiRiHh3PPJGoIE81Nuzp4I7Csrz+7J0wh/RySLNO+Q==","secondarySharedKey":"n5mQ60rsKissqM2WFjnksDS5iy4RxqWhazrr7YHZ8zWrMSBeZYclaplFSxammk5mD1gllOAccb6zDYkxH4f6HQ=="}' + headers: + access-control-allow-origin: + - '*' + api-supported-versions: + - 2015-03-20, 2020-08-01, 2020-10-01, 2021-06-01 + cache-control: + - no-cache + content-length: + - '223' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:46 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"northeurope","tags":{"product":"azurecli","cause":"automation","date":"2022-06-16T23:50:00Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '315' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:47 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:48 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:47 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "tags": null, "properties": {"daprAIInstrumentationKey": + null, "vnetConfiguration": null, "internalLoadBalancerEnabled": null, "appLogsConfiguration": + {"destination": "log-analytics", "logAnalyticsConfiguration": {"customerId": + "af6be2cb-1637-490d-bd2b-4a36cfe14df7", "sharedKey": "hrdp9gU3pAFvR7Est0bACxABWuHt0Ow8dXGy2A3UGh/tuiRiHh3PPJGoIE81Nuzp4I7Csrz+7J0wh/RySLNO+Q=="}}, + "zoneRedundant": false}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + Content-Length: + - '427' + Content-Type: + - application/json + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228Z"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/managedEnvironmentOperationStatuses/f12c4922-282b-41de-8367-7e600a3fe924?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '776' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:50:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:05 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:10 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:37 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Waiting","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '774' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Succeeded","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '776' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:46 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Succeeded","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '776' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --min-replicas --ingress --target-port + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:48 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --min-replicas --ingress --target-port + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","name":"env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:50:54.5156228","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:50:54.5156228"},"properties":{"provisioningState":"Succeeded","defaultDomain":"graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","staticIp":"20.67.144.22","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"af6be2cb-1637-490d-bd2b-4a36cfe14df7"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '776' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --min-replicas --ingress --target-port + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:49 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "identity": {"type": "None", "userAssignedIdentities": + null}, "properties": {"managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002", + "configuration": {"secrets": null, "activeRevisionsMode": "single", "ingress": + {"fqdn": null, "external": true, "targetPort": 80, "transport": "auto", "traffic": + null, "customDomains": null}, "dapr": null, "registries": null}, "template": + {"revisionSuffix": null, "containers": [{"image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", + "name": "app000004", "command": null, "args": null, "env": null, "resources": + null, "volumeMounts": null}], "scale": {"minReplicas": 1, "maxReplicas": null, + "rules": []}, "volumes": null}}, "tags": null}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + Content-Length: + - '825' + Content-Type: + - application/json + ParameterSetName: + - -g -n --environment --min-replicas --ingress --target-port + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:51:56.4359694Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"","latestRevisionFqdn":"","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/956de59e-9eef-47c3-84be-f4c8ad13f386?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '1372' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:51:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --min-replicas --ingress --target-port + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:51:56.4359694"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1459' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:01 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --min-replicas --ingress --target-port + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:51:56.4359694"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1458' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:05 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - acr create + Connection: + - keep-alive + ParameterSetName: + - -g -n --sku --admin-enabled + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"northeurope","tags":{"product":"azurecli","cause":"automation","date":"2022-06-16T23:50:00Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '315' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:04 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "sku": {"name": "Basic"}, "properties": {"adminUserEnabled": + true, "anonymousPullEnabled": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - acr create + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - application/json + ParameterSetName: + - -g -n --sku --admin-enabled + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerregistry/8.2.0 Python/3.8.6 + (macOS-10.16-x86_64-i386-64bit) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005?api-version=2021-08-01-preview + response: + body: + string: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005","name":"acr000005","location":"northeurope","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:52:11.9664578+00:00","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:11.9664578+00:00"},"properties":{"loginServer":"acr000005.azurecr.io","creationDate":"2022-06-16T23:52:11.9664578Z","provisioningState":"Creating","adminUserEnabled":true,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2022-06-16T23:52:13.8446995+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + api-supported-versions: + - 2021-08-01-preview + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005/operationStatuses/registries-536530e8-edcf-11ec-9859-6c96cfda2705?api-version=2021-08-01-preview + cache-control: + - no-cache + content-length: + - '1195' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - acr create + Connection: + - keep-alive + ParameterSetName: + - -g -n --sku --admin-enabled + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerregistry/8.2.0 Python/3.8.6 + (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005/operationStatuses/registries-536530e8-edcf-11ec-9859-6c96cfda2705?api-version=2021-08-01-preview + response: + body: + string: '{"status":"Succeeded"}' + headers: + api-supported-versions: + - 2021-08-01-preview + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005/operationStatuses/registries-536530e8-edcf-11ec-9859-6c96cfda2705?api-version=2021-08-01-preview + cache-control: + - no-cache + content-length: + - '22' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - acr create + Connection: + - keep-alive + ParameterSetName: + - -g -n --sku --admin-enabled + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerregistry/8.2.0 Python/3.8.6 + (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005?api-version=2021-08-01-preview + response: + body: + string: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005","name":"acr000005","location":"northeurope","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:52:11.9664578+00:00","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:11.9664578+00:00"},"properties":{"loginServer":"acr000005.azurecr.io","creationDate":"2022-06-16T23:52:11.9664578Z","provisioningState":"Succeeded","adminUserEnabled":true,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2022-06-16T23:52:13.8446995+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + api-supported-versions: + - 2021-08-01-preview + cache-control: + - no-cache + content-length: + - '1196' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:25 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:51:56.4359694"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1458' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?$filter=resourceType%20eq%20%27Microsoft.ContainerRegistry%2Fregistries%27&api-version=2021-04-01 + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_group/providers/Microsoft.ContainerRegistry/registries/sstrawn","name":"sstrawn","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Standard","tier":"Standard"},"location":"eastus","identity":{"principalId":"1028f703-a01c-4e12-950f-48cd91546125","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2021-09-22T22:03:42.8389144Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-02T23:24:40.1837616Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli-demo/providers/Microsoft.ContainerRegistry/registries/cac27b381be5acr","name":"cac27b381be5acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"canadacentral","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-27T23:04:14.616133Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-27T23:04:14.616133Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demo/providers/Microsoft.ContainerRegistry/registries/caa3f0888d80acr","name":"caa3f0888d80acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"canadacentral","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-27T23:26:04.3914073Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-27T23:26:04.3914073Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demo/providers/Microsoft.ContainerRegistry/registries/ca23814953e5acr","name":"ca23814953e5acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus2","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-27T23:29:53.7442354Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-27T23:29:53.7442354Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/silasstrawn_rg_2383/providers/Microsoft.ContainerRegistry/registries/caeastus2envacr","name":"caeastus2envacr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus2","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-28T16:22:24.9172522Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-28T16:22:24.9172522Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/silasstrawn_rg_1695/providers/Microsoft.ContainerRegistry/registries/ca14b59080fcacr","name":"ca14b59080fcacr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus2","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-28T19:23:15.370456Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-28T19:23:15.370456Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/caeuap118944acr","name":"caeuap118944acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T00:28:29.0854527Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T00:28:29.0854527Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/caeuap123456acr","name":"caeuap123456acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"westus2","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T00:29:40.1662942Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T00:29:40.1662942Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/caeuap716260acr","name":"caeuap716260acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T00:34:06.743482Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T00:34:06.743482Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/ca6649860915acr","name":"ca6649860915acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T00:42:10.6755073Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T00:42:10.6755073Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/ca7171630273acr","name":"ca7171630273acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T00:42:42.5138005Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T00:42:42.5138005Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/caeuap818336acr","name":"caeuap818336acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T00:46:15.1159592Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T00:46:15.1159592Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/caeuap474445acr","name":"caeuap474445acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T00:55:35.2925278Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T00:55:35.2925278Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/scsscar","name":"scsscar","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"westus2","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T16:22:33.9053983Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T16:30:45.7801524Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/cagh563669744341acr","name":"cagh563669744341acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T16:48:58.3375519Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T16:48:58.3375519Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/castage62404acr","name":"castage62404acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T17:27:31.2200745Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T17:27:31.2200745Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/cauapa9e5460acr","name":"cauapa9e5460acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T17:31:15.849617Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T17:31:15.849617Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/caeaf455b151acr","name":"caeaf455b151acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-28T23:16:13.2013519Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-28T23:16:13.2013519Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/cae08cc6369dacr","name":"cae08cc6369dacr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-28T23:16:52.810344Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-28T23:16:52.810344Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/kjladsfkljdasjkf","name":"kjladsfkljdasjkf","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"westus2","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-02T19:53:09.2708037Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T19:53:09.2708037Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sca/providers/Microsoft.ContainerRegistry/registries/ca2312c761bcacr","name":"ca2312c761bcacr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-06T17:54:54.728464Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-06T17:54:54.728464Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/catest/providers/Microsoft.ContainerRegistry/registries/caf966e443a2acr","name":"caf966e443a2acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-02T19:25:01.1414612Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T19:25:01.1414612Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps/providers/Microsoft.ContainerRegistry/registries/cascscr0acd6acr","name":"cascscr0acd6acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-27T02:29:02.7744209Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-27T02:29:02.7744209Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps/providers/Microsoft.ContainerRegistry/registries/cacae407bdccacr","name":"cacae407bdccacr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-04-29T17:34:53.4366822Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-29T17:34:53.4366822Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps/providers/Microsoft.ContainerRegistry/registries/ca9bdb5876bcacr","name":"ca9bdb5876bcacr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"westeurope","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-03T18:46:12.1365564Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-03T18:46:12.1365564Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps/providers/Microsoft.ContainerRegistry/registries/caaa065f13cbacr","name":"caaa065f13cbacr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-12T23:26:01.3107281Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-12T23:26:01.3107281Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps_new/providers/Microsoft.ContainerRegistry/registries/ca5d25a927b5acr","name":"ca5d25a927b5acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"northeurope","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-22T22:52:26.6523381Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-22T22:52:26.6523381Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps/providers/Microsoft.ContainerRegistry/registries/ca8a296b2511acr","name":"ca8a296b2511acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-05-17T17:49:59.9020183Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-17T17:49:59.9020183Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005","name":"acr000005","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"northeurope","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:52:11.9664578Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:11.9664578Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps/providers/Microsoft.ContainerRegistry/registries/caf0b1e7fc47acr","name":"caf0b1e7fc47acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-03T14:53:15.7379815Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-03T14:53:15.7379815Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/container_apps/providers/Microsoft.ContainerRegistry/registries/ca9ab1f9a758acr","name":"ca9ab1f9a758acr","type":"Microsoft.ContainerRegistry/registries","sku":{"name":"Basic","tier":"Basic"},"location":"eastus","tags":{},"systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-10T16:37:39.7457032Z","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-10T16:37:39.7457032Z"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '16672' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:29 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerregistry/8.2.0 Python/3.8.6 + (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005?api-version=2019-05-01 + response: + body: + string: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005","name":"acr000005","location":"northeurope","tags":{},"properties":{"loginServer":"acr000005.azurecr.io","creationDate":"2022-06-16T23:52:11.9664578Z","provisioningState":"Succeeded","adminUserEnabled":true,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2022-06-16T23:52:13.8446995+00:00","status":"disabled"}}}}' + headers: + api-supported-versions: + - '2019-05-01' + cache-control: + - no-cache + content-length: + - '654' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --server -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-containerregistry/8.2.0 Python/3.8.6 + (macOS-10.16-x86_64-i386-64bit) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.ContainerRegistry/registries/acr000005/listCredentials?api-version=2019-05-01 + response: + body: + string: '{"username":"acr000005","passwords":[{"name":"password","value":"Um62toiPubWGt7W4Uk44KvIAllr+HHNV"},{"name":"password2","value":"YUGxdGO0+zsgyiDtt8w2CXPdPU2C5uAm"}]}' + headers: + api-supported-versions: + - '2019-05-01' + cache-control: + - no-cache + content-length: + - '165' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: '{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004", + "name": "app000004", "type": "Microsoft.App/containerApps", "location": "North + Europe", "systemData": {"createdBy": "silasstrawn@microsoft.com", "createdByType": + "User", "createdAt": "2022-06-16T23:51:56.4359694", "lastModifiedBy": "silasstrawn@microsoft.com", + "lastModifiedByType": "User", "lastModifiedAt": "2022-06-16T23:51:56.4359694"}, + "properties": {"provisioningState": "Succeeded", "managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002", + "outboundIpAddresses": ["20.223.35.227", "20.223.37.134", "20.223.38.5"], "latestRevisionName": + "app000004--qggcsjb", "latestRevisionFqdn": "app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io", + "customDomainVerificationId": "333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7", + "configuration": {"activeRevisionsMode": "Single", "ingress": {"fqdn": "app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io", + "external": true, "targetPort": 80, "transport": "Auto", "traffic": [{"weight": + 100, "latestRevision": true}], "allowInsecure": false}, "secrets": [{"name": + "acr000005azurecrio-acr000005", "value": "Um62toiPubWGt7W4Uk44KvIAllr+HHNV"}], + "registries": [{"server": "acr000005.azurecr.io", "username": "acr000005", "passwordSecretRef": + "acr000005azurecrio-acr000005"}]}, "template": {"containers": [{"image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", + "name": "app000004", "resources": {"cpu": 0.5, "memory": "1Gi"}}], "scale": + {"minReplicas": 1, "maxReplicas": 10}}}, "identity": {"type": "None"}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + Content-Length: + - '1761' + Content-Type: + - application/json + ParameterSetName: + - --server -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:35.0848142Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","username":"acr000005","passwordSecretRef":"acr000005azurecrio-acr000005"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/0a2fae64-90cb-4d16-8236-54d145c6908a?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '1635' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:38 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:35.0848142"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","username":"acr000005","passwordSecretRef":"acr000005azurecrio-acr000005"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1634' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:40 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:35.0848142"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","username":"acr000005","passwordSecretRef":"acr000005azurecrio-acr000005"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1634' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:44 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:35.0848142"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","username":"acr000005","passwordSecretRef":"acr000005azurecrio-acr000005"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1634' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:35.0848142"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","username":"acr000005","passwordSecretRef":"acr000005azurecrio-acr000005"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1633' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:53 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:35.0848142"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","username":"acr000005","passwordSecretRef":"acr000005azurecrio-acr000005"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1633' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n --identity + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:56 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n --identity + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:52:35.0848142"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","username":"acr000005","passwordSecretRef":"acr000005azurecrio-acr000005"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1633' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:52:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --server -g -n --identity + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004/listSecrets?api-version=2022-03-01 + response: + body: + string: '{"value":[{"name":"acr000005azurecrio-acr000005","value":"Um62toiPubWGt7W4Uk44KvIAllr+HHNV"}]}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '94' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004", + "name": "app000004", "type": "Microsoft.App/containerApps", "location": "North + Europe", "systemData": {"createdBy": "silasstrawn@microsoft.com", "createdByType": + "User", "createdAt": "2022-06-16T23:51:56.4359694", "lastModifiedBy": "silasstrawn@microsoft.com", + "lastModifiedByType": "User", "lastModifiedAt": "2022-06-16T23:52:35.0848142"}, + "properties": {"provisioningState": "Succeeded", "managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002", + "outboundIpAddresses": ["20.223.35.227", "20.223.37.134", "20.223.38.5"], "latestRevisionName": + "app000004--qggcsjb", "latestRevisionFqdn": "app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io", + "customDomainVerificationId": "333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7", + "configuration": {"secrets": [{"name": "acr000005azurecrio-acr000005", "value": + "Um62toiPubWGt7W4Uk44KvIAllr+HHNV"}], "activeRevisionsMode": "Single", "ingress": + {"fqdn": "app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io", "external": + true, "targetPort": 80, "transport": "Auto", "traffic": [{"weight": 100, "latestRevision": + true}], "allowInsecure": false}, "registries": [{"server": "acr000005.azurecr.io", + "username": null, "passwordSecretRef": null, "identity": "system"}]}, "template": + {"containers": [{"image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", + "name": "app000004", "resources": {"cpu": 0.5, "memory": "1Gi"}}], "scale": + {"minReplicas": 1, "maxReplicas": 10}}}, "identity": {"type": "SystemAssigned"}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + Content-Length: + - '1760' + Content-Type: + - application/json + ParameterSetName: + - --server -g -n --identity + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:53:01.8991515Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","identity":"system"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"SystemAssigned","principalId":"5136d227-a02a-499a-887a-58f49befae0f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/35b5b166-7c04-4c41-82cf-c7224c31d373?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '1694' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:05 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n --identity + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:53:01.8991515"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","identity":"system"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"SystemAssigned","principalId":"5136d227-a02a-499a-887a-58f49befae0f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1693' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n --identity + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:53:01.8991515"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","identity":"system"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"SystemAssigned","principalId":"5136d227-a02a-499a-887a-58f49befae0f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1693' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:12 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n --identity + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:53:01.8991515"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","identity":"system"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"SystemAssigned","principalId":"5136d227-a02a-499a-887a-58f49befae0f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1693' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp registry set + Connection: + - keep-alive + ParameterSetName: + - --server -g -n --identity + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:53:01.8991515"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","identity":"system"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"SystemAssigned","principalId":"5136d227-a02a-499a-887a-58f49befae0f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1692' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.6 (macOS-10.16-x86_64-i386-64bit) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:19 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - python/3.8.6 (macOS-10.16-x86_64-i386-64bit) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/app000004","name":"app000004","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"silasstrawn@microsoft.com","createdByType":"User","createdAt":"2022-06-16T23:51:56.4359694","lastModifiedBy":"silasstrawn@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-16T23:53:01.8991515"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/env000002","outboundIpAddresses":["20.223.35.227","20.223.37.134","20.223.38.5"],"latestRevisionName":"app000004--qggcsjb","latestRevisionFqdn":"app000004--qggcsjb.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","customDomainVerificationId":"333646C25EDA7C903C86F0F0D0193C412978B2E48FA0B4F1461D339FBBAE3EB7","configuration":{"secrets":[{"name":"acr000005azurecrio-acr000005"}],"activeRevisionsMode":"Single","ingress":{"fqdn":"app000004.graysmoke-0eb19cf5.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false},"registries":[{"server":"acr000005.azurecr.io","identity":"system"}]},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"app000004","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"minReplicas":1,"maxReplicas":10}}},"identity":{"type":"SystemAssigned","principalId":"5136d227-a02a-499a-887a-58f49befae0f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1692' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 16 Jun 2022 23:53:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +version: 1 diff --git a/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_revision_label_e2e.yaml b/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_revision_label_e2e.yaml new file mode 100644 index 00000000000..86f477461b7 --- /dev/null +++ b/src/containerapp/azext_containerapp/tests/latest/recordings/test_containerapp_revision_label_e2e.yaml @@ -0,0 +1,5246 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"northeurope","tags":{"product":"azurecli","cause":"automation","date":"2022-05-26T22:46:23Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '315' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:46:26 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "properties": {"sku": {"name": "PerGB2018"}, + "retentionInDays": 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '120' + Content-Type: + - application/json + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004?api-version=2021-12-01-preview + response: + body: + string: '{"properties":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b","provisioningState":"Creating","sku":{"name":"PerGB2018","lastSkuUpdate":"2022-05-26T22:46:31.2820632Z"},"retentionInDays":30,"features":{"legacy":0,"searchVersion":1,"enableLogAccessUsingOnlyResourcePermissions":true},"workspaceCapping":{"dailyQuotaGb":-1.0,"quotaNextResetTime":"2022-05-27T14:00:00Z","dataIngestionStatus":"RespectQuota"},"publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled","createdDate":"2022-05-26T22:46:31.2820632Z","modifiedDate":"2022-05-26T22:46:31.2820632Z"},"location":"northeurope","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004","name":"containerapp-env000004","type":"Microsoft.OperationalInsights/workspaces"}' + headers: + access-control-allow-origin: + - '*' + api-supported-versions: + - 2021-12-01-preview + cache-control: + - no-cache + content-length: + - '856' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:46:32 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004?api-version=2021-12-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004?api-version=2021-12-01-preview + response: + body: + string: '{"properties":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b","provisioningState":"Succeeded","sku":{"name":"PerGB2018","lastSkuUpdate":"2022-05-26T22:46:31.2820632Z"},"retentionInDays":30,"features":{"legacy":0,"searchVersion":1,"enableLogAccessUsingOnlyResourcePermissions":true},"workspaceCapping":{"dailyQuotaGb":-1.0,"quotaNextResetTime":"2022-05-27T14:00:00Z","dataIngestionStatus":"RespectQuota"},"publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled","createdDate":"2022-05-26T22:46:31.2820632Z","modifiedDate":"2022-05-26T22:46:31.2820632Z"},"location":"northeurope","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004","name":"containerapp-env000004","type":"Microsoft.OperationalInsights/workspaces"}' + headers: + access-control-allow-origin: + - '*' + api-supported-versions: + - 2021-12-01-preview + cache-control: + - no-cache + content-length: + - '857' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:02 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace get-shared-keys + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.OperationalInsights/workspaces/containerapp-env000004/sharedKeys?api-version=2020-08-01 + response: + body: + string: '{"primarySharedKey":"jqp641ZYmljIcLPwXVjYn39ad5IGN+8XELoB7rRC0/EOYB8IXCAiG7d75VAXcXlmXvbO+SpA5jmlT9bLQgQNfg==","secondarySharedKey":"Rk0cnP2aDe2b1v6BW2e1rvg+RHrcwaHfMIfKLFA9v849JZRFDzGYbOyuvdQXFifXt3+rT55X5XMLQJi/6jO7bA=="}' + headers: + access-control-allow-origin: + - '*' + api-supported-versions: + - 2015-03-20, 2020-08-01, 2020-10-01, 2021-06-01 + cache-control: + - no-cache + content-length: + - '223' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:05 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","type":"Microsoft.Resources/resourceGroups","location":"northeurope","tags":{"product":"azurecli","cause":"automation","date":"2022-05-26T22:46:23Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '315' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:06 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:06 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:07 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "tags": null, "properties": {"daprAIInstrumentationKey": + null, "vnetConfiguration": null, "internalLoadBalancerEnabled": false, "appLogsConfiguration": + {"destination": "log-analytics", "logAnalyticsConfiguration": {"customerId": + "6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b", "sharedKey": "jqp641ZYmljIcLPwXVjYn39ad5IGN+8XELoB7rRC0/EOYB8IXCAiG7d75VAXcXlmXvbO+SpA5jmlT9bLQgQNfg=="}}, + "zoneRedundant": false}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + Content-Length: + - '428' + Content-Type: + - application/json + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265Z","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265Z"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/managedEnvironmentOperationStatuses/f94f87c7-c435-49f2-b983-5ddb2af6ba43?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '807' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:12 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:34 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:38 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:41 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:45 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Waiting","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '805' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:47:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env create + Connection: + - keep-alive + ParameterSetName: + - -g -n --logs-workspace-id --logs-workspace-key + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Succeeded","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '807' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:01 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp env show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Succeeded","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '807' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:04 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Succeeded","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '807' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:07 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "identity": {"type": "None", "userAssignedIdentities": + null}, "properties": {"managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002", + "configuration": {"secrets": null, "activeRevisionsMode": "single", "ingress": + {"fqdn": null, "external": true, "targetPort": 80, "transport": "auto", "traffic": + null, "customDomains": null}, "dapr": null, "registries": null}, "template": + {"revisionSuffix": null, "containers": [{"image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", + "name": "containerapp000003", "command": null, "args": null, "env": null, "resources": + null, "volumeMounts": null}], "scale": null, "volumes": null}}, "tags": null}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + Content-Length: + - '799' + Content-Type: + - application/json + ParameterSetName: + - -g -n --environment --ingress --target-port + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888Z","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:11.527888Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"","latestRevisionFqdn":"","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/39d00265-9582-4ac5-80da-c6d7301861af?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '1408' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:13 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:11.527888"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--ie56ifz","latestRevisionFqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1515' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:11.527888"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--ie56ifz","latestRevisionFqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1515' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:11.527888"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--ie56ifz","latestRevisionFqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1514' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:26 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:11.527888"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--ie56ifz","latestRevisionFqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1514' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:28 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","name":"containerapp-env000002","type":"Microsoft.App/managedEnvironments","location":"northeurope","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:47:11.7103265","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:47:11.7103265"},"properties":{"provisioningState":"Succeeded","defaultDomain":"wittyforest-5acee1e7.northeurope.azurecontainerapps.io","staticIp":"20.107.155.53","appLogsConfiguration":{"destination":"log-analytics","logAnalyticsConfiguration":{"customerId":"6d5e7bb1-20f4-4ed7-9045-75cf8d280d8b"}},"zoneRedundant":false}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '807' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:30 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "northeurope", "identity": {"type": "None", "userAssignedIdentities": + null}, "properties": {"managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002", + "configuration": {"secrets": null, "activeRevisionsMode": "single", "ingress": + {"fqdn": null, "external": true, "targetPort": 80, "transport": "auto", "traffic": + null, "customDomains": null}, "dapr": null, "registries": null}, "template": + {"revisionSuffix": null, "containers": [{"image": "nginx", "name": "containerapp000003", + "command": null, "args": null, "env": null, "resources": null, "volumeMounts": + null}], "scale": null, "volumes": null}}, "tags": null}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + Content-Length: + - '745' + Content-Type: + - application/json + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:32.5518193Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--ie56ifz","latestRevisionFqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/62906bb4-85d5-411f-b774-d8414da7197f?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '1463' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:32.5518193"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1462' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:32.5518193"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1462' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:40 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:32.5518193"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1462' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:44 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp create + Connection: + - keep-alive + ParameterSetName: + - -g -n --environment --ingress --target-port --image + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:32.5518193"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1461' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision set-mode + Connection: + - keep-alive + ParameterSetName: + - -g -n --mode + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:49 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision set-mode + Connection: + - keep-alive + ParameterSetName: + - -g -n --mode + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:32.5518193"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Single","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1461' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003", + "name": "containerapp000003", "type": "Microsoft.App/containerApps", "location": + "North Europe", "systemData": {"createdBy": "haroonfeisal@microsoft.com", "createdByType": + "User", "createdAt": "2022-05-26T22:48:11.527888", "lastModifiedBy": "haroonfeisal@microsoft.com", + "lastModifiedByType": "User", "lastModifiedAt": "2022-05-26T22:48:32.5518193"}, + "properties": {"provisioningState": "Succeeded", "managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002", + "outboundIpAddresses": ["40.67.250.25", "40.67.250.221", "40.67.252.230"], "latestRevisionName": + "containerapp000003--aixgh10", "latestRevisionFqdn": "containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io", + "customDomainVerificationId": "99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E", + "configuration": {"activeRevisionsMode": "multiple", "ingress": {"fqdn": "containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io", + "external": true, "targetPort": 80, "transport": "Auto", "traffic": [{"weight": + 100, "latestRevision": true}], "allowInsecure": false}, "secrets": []}, "template": + {"containers": [{"image": "nginx", "name": "containerapp000003", "resources": + {"cpu": 0.5, "memory": "1Gi"}}], "scale": {"maxReplicas": 10}}}, "identity": + {"type": "None"}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision set-mode + Connection: + - keep-alive + Content-Length: + - '1549' + Content-Type: + - application/json + ParameterSetName: + - -g -n --mode + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:53.3572831Z"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/8ba7356c-e643-4fc8-83e1-cefce15cf4e5?api-version=2022-03-01&azureAsyncOperation=true + cache-control: + - no-cache + content-length: + - '1465' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-async-operation-timeout: + - PT15M + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision set-mode + Connection: + - keep-alive + ParameterSetName: + - -g -n --mode + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:53.3572831"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1464' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:48:58 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision set-mode + Connection: + - keep-alive + ParameterSetName: + - -g -n --mode + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:53.3572831"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1464' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:01 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision set-mode + Connection: + - keep-alive + ParameterSetName: + - -g -n --mode + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:53.3572831"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1463' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision list + Connection: + - keep-alive + ParameterSetName: + - -g -n --all --query + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions?api-version=2022-03-01 + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--ie56ifz","name":"containerapp000003--ie56ifz","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-26T22:48:14+00:00","fqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":false,"replicas":0,"trafficWeight":0,"healthState":"Healthy","provisioningState":"Provisioned"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--aixgh10","name":"containerapp000003--aixgh10","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-26T22:48:34+00:00","fqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":100,"healthState":"Healthy","provisioningState":"Provisioned"}}]}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1422' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:07 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:48:53.3572831"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1463' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:08 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--ie56ifz?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--ie56ifz","name":"containerapp000003--ie56ifz","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-26T22:48:14+00:00","fqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":false,"replicas":0,"trafficWeight":0,"healthState":"Healthy","provisioningState":"Provisioned"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '731' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:11 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"configuration": {"ingress": {"traffic": [{"weight": 100, + "latestRevision": true}, {"revisionName": "containerapp000003--ie56ifz", "weight": + 0, "latestRevision": false, "label": "label000005"}]}}}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + Content-Length: + - '213' + Content-Type: + - application/json + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 26 May 2022 22:49:13 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/5c4acb65-a941-4e24-af03-599071067fb6?api-version=2022-03-01 + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:11.855859"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1543' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:11.855859"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1543' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:11.855859"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1542' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:22 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:11.855859"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1542' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--aixgh10?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--aixgh10","name":"containerapp000003--aixgh10","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-26T22:48:34+00:00","fqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":100,"healthState":"Healthy","provisioningState":"Provisioned"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '678' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"configuration": {"ingress": {"traffic": [{"weight": 100, + "latestRevision": true}, {"revisionName": "containerapp000003--ie56ifz", "weight": + 0, "label": "label000005"}, {"revisionName": "containerapp000003--aixgh10", + "weight": 0, "latestRevision": false, "label": "label000006"}]}}}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + Content-Length: + - '299' + Content-Type: + - application/json + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 26 May 2022 22:49:27 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/b63208a4-94cf-4583-8e6e-1052cd4b53da?api-version=2022-03-01 + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:33 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:40 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label add + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1623' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:47 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1623' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision-weight --label-weight + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:49 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision-weight --label-weight + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:26.8621609"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":100,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":0,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":0,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1623' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision-weight --label-weight + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--ie56ifz?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--ie56ifz","name":"containerapp000003--ie56ifz","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-26T22:48:14+00:00","fqdn":"containerapp000003--ie56ifz.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","template":{"containers":[{"image":"mcr.microsoft.com/azuredocs/containerapps-helloworld:latest","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":false,"replicas":0,"trafficWeight":0,"healthState":"Healthy","provisioningState":"Provisioned"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '731' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision-weight --label-weight + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--aixgh10?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003/revisions/containerapp000003--aixgh10","name":"containerapp000003--aixgh10","type":"Microsoft.App/containerapps/revisions","properties":{"createdTime":"2022-05-26T22:48:34+00:00","fqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.50,"memory":"1Gi"},"probes":[]}],"scale":{"maxReplicas":10}},"active":true,"replicas":1,"trafficWeight":100,"healthState":"Healthy","provisioningState":"Provisioned"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '678' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"configuration": {"ingress": {"traffic": [{"weight": "50", + "latestRevision": true}, {"revisionName": "containerapp000003--ie56ifz", "weight": + "25", "label": "label000005"}, {"revisionName": "containerapp000003--aixgh10", + "weight": "25", "label": "label000006"}]}}}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + Content-Length: + - '281' + Content-Type: + - application/json + ParameterSetName: + - -g -n --revision-weight --label-weight + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 26 May 2022 22:49:55 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/440c433c-bedb-4a69-acd7-b1be15f7a380?api-version=2022-03-01 + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision-weight --label-weight + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:54.1108946"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1625' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:49:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic set + Connection: + - keep-alive + ParameterSetName: + - -g -n --revision-weight --label-weight + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:54.1108946"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:01 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:54.1108946"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label swap + Connection: + - keep-alive + ParameterSetName: + - -g -n --labels + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:04 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label swap + Connection: + - keep-alive + ParameterSetName: + - -g -n --labels + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:49:54.1108946"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000005"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000006"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"configuration": {"ingress": {"traffic": [{"weight": 50, + "latestRevision": true}, {"revisionName": "containerapp000003--ie56ifz", "weight": + 25, "label": "label000006"}, {"revisionName": "containerapp000003--aixgh10", + "weight": 25, "label": "label000005"}]}}}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label swap + Connection: + - keep-alive + Content-Length: + - '275' + Content-Type: + - application/json + ParameterSetName: + - -g -n --labels + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 26 May 2022 22:50:08 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/db24023e-333c-4998-a287-12389fb6243f?api-version=2022-03-01 + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label swap + Connection: + - keep-alive + ParameterSetName: + - -g -n --labels + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:07.8057897"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1625' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:11 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label swap + Connection: + - keep-alive + ParameterSetName: + - -g -n --labels + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:07.8057897"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1625' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label swap + Connection: + - keep-alive + ParameterSetName: + - -g -n --labels + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:07.8057897"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:18 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:07.8057897"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25,"label":"label000005"}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1624' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"configuration": {"ingress": {"traffic": [{"weight": 50, + "latestRevision": true}, {"revisionName": "containerapp000003--ie56ifz", "weight": + 25, "label": "label000006"}, {"revisionName": "containerapp000003--aixgh10", + "weight": 25, "label": null}]}}}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + Content-Length: + - '266' + Content-Type: + - application/json + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 26 May 2022 22:50:23 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/d576d524-00ef-4cb3-a1b8-fb40801aeef3?api-version=2022-03-01 + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:22.0741046"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1603' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:22.0741046"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1603' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:22.0741046"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1602' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:32 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:22.0741046"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25,"label":"label000006"},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1602' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:33 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"configuration": {"ingress": {"traffic": [{"weight": 50, + "latestRevision": true}, {"revisionName": "containerapp000003--ie56ifz", "weight": + 25, "label": null}, {"revisionName": "containerapp000003--aixgh10", "weight": + 25}]}}}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + Content-Length: + - '242' + Content-Type: + - application/json + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 26 May 2022 22:50:36 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App/locations/northeurope/containerappOperationStatuses/1f059768-29cc-4bb0-aaa1-335cf2706fc4?api-version=2022-03-01 + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:35.1008765"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1581' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:38 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:35.1008765"},"properties":{"provisioningState":"InProgress","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1581' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:41 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp revision label remove + Connection: + - keep-alive + ParameterSetName: + - -g -n --label + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:35.1008765"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1580' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:45 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.App","namespace":"Microsoft.App","authorizations":[{"applicationId":"7e3bc4fd-85a3-4192-b177-5b8bfc87f42c","roleDefinitionId":"39a74f72-b40f-4bdc-b639-562fe2260bf0"},{"applicationId":"3734c1a4-2bed-4998-a37a-ff1a9e7bf019","roleDefinitionId":"5c779a4f-5cb2-4547-8c41-478d9be8ba90"}],"resourceTypes":[{"resourceType":"managedEnvironments","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"managedEnvironments/certificates","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"},{"resourceType":"containerApps","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove, SystemAssignedResourceIdentity, SupportsTags, + SupportsLocation"},{"resourceType":"locations","locations":[],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/managedEnvironmentOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationResults","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"locations/containerappOperationStatuses","locations":["North + Central US (Stage)","Canada Central","West Europe","North Europe","East US","East + US 2","Central US EUAP","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"},{"resourceType":"operations","locations":["North + Central US (Stage)","Central US EUAP","Canada Central","West Europe","North + Europe","East US","East US 2","East Asia","Australia East","Germany West Central","Japan + East","UK South","West US"],"apiVersions":["2022-03-01","2022-01-01-preview"],"capabilities":"None"}],"registrationState":"Registered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '3551' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:46 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - containerapp ingress traffic show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) AZURECLI/2.37.0 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003?api-version=2022-03-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/containerApps/containerapp000003","name":"containerapp000003","type":"Microsoft.App/containerApps","location":"North + Europe","systemData":{"createdBy":"haroonfeisal@microsoft.com","createdByType":"User","createdAt":"2022-05-26T22:48:11.527888","lastModifiedBy":"haroonfeisal@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-26T22:50:35.1008765"},"properties":{"provisioningState":"Succeeded","managedEnvironmentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.App/managedEnvironments/containerapp-env000002","outboundIpAddresses":["40.67.250.25","40.67.250.221","40.67.252.230"],"latestRevisionName":"containerapp000003--aixgh10","latestRevisionFqdn":"containerapp000003--aixgh10.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","customDomainVerificationId":"99A6464610F70E526E50B6B7BECF7E0698398F28CB03C7A235D70FDF654D411E","configuration":{"activeRevisionsMode":"Multiple","ingress":{"fqdn":"containerapp000003.wittyforest-5acee1e7.northeurope.azurecontainerapps.io","external":true,"targetPort":80,"transport":"Auto","traffic":[{"weight":50,"latestRevision":true},{"revisionName":"containerapp000003--ie56ifz","weight":25},{"revisionName":"containerapp000003--aixgh10","weight":25}],"allowInsecure":false}},"template":{"containers":[{"image":"nginx","name":"containerapp000003","resources":{"cpu":0.5,"memory":"1Gi"}}],"scale":{"maxReplicas":10}}},"identity":{"type":"None"}}' + headers: + api-supported-versions: + - 2022-01-01-preview, 2022-03-01, 2022-05-01 + cache-control: + - no-cache + content-length: + - '1580' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 26 May 2022 22:50:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +version: 1 diff --git a/src/containerapp/azext_containerapp/tests/latest/test_containerapp_commands.py b/src/containerapp/azext_containerapp/tests/latest/test_containerapp_commands.py index fca9efa8353..2bac10073b3 100644 --- a/src/containerapp/azext_containerapp/tests/latest/test_containerapp_commands.py +++ b/src/containerapp/azext_containerapp/tests/latest/test_containerapp_commands.py @@ -162,7 +162,6 @@ def test_containerapp_identity_user(self, resource_group): ]) - class ContainerappIngressTests(ScenarioTest): @AllowLargeResponse(8192) @ResourceGroupPreparer(location="eastus2") @@ -229,7 +228,7 @@ def test_containerapp_ingress_traffic_e2e(self, resource_group): time.sleep(5) containerapp_env = self.cmd('containerapp env show -g {} -n {}'.format(resource_group, env_name)).get_output_in_json() - self.cmd('containerapp create -g {} -n {} --environment {} --ingress external --target-port 80'.format(resource_group, ca_name, env_name)) + self.cmd('containerapp create -g {} -n {} --environment {} --ingress external --target-port 80 --revisions-mode multiple'.format(resource_group, ca_name, env_name)) self.cmd('containerapp ingress show -g {} -n {}'.format(resource_group, ca_name), checks=[ JMESPathCheck('external', True), @@ -392,6 +391,7 @@ def test_containerapp_custom_domains_e2e(self, resource_group): JMESPathCheck('length(@)', 0), ]).get_output_in_json() + class ContainerappDaprTests(ScenarioTest): @AllowLargeResponse(8192) @ResourceGroupPreparer(location="eastus2") @@ -441,6 +441,7 @@ def test_containerapp_dapr_e2e(self, resource_group): JMESPathCheck('properties.configuration.dapr.enabled', False), ]) + class ContainerappEnvStorageTests(ScenarioTest): @AllowLargeResponse(8192) @ResourceGroupPreparer(location="eastus") @@ -483,3 +484,78 @@ def test_containerapp_env_storage(self, resource_group): self.cmd('containerapp env storage list -g {} -n {}'.format(resource_group, env_name), checks=[ JMESPathCheck('length(@)', 0), ]) + + +class ContainerappRevisionTests(ScenarioTest): + @AllowLargeResponse(8192) + @ResourceGroupPreparer(location="northeurope") + def test_containerapp_revision_label_e2e(self, resource_group): + env_name = self.create_random_name(prefix='containerapp-env', length=24) + ca_name = self.create_random_name(prefix='containerapp', length=24) + logs_workspace_name = self.create_random_name(prefix='containerapp-env', length=24) + + logs_workspace_id = self.cmd('monitor log-analytics workspace create -g {} -n {}'.format(resource_group, logs_workspace_name)).get_output_in_json()["customerId"] + logs_workspace_key = self.cmd('monitor log-analytics workspace get-shared-keys -g {} -n {}'.format(resource_group, logs_workspace_name)).get_output_in_json()["primarySharedKey"] + + self.cmd('containerapp env create -g {} -n {} --logs-workspace-id {} --logs-workspace-key {}'.format(resource_group, env_name, logs_workspace_id, logs_workspace_key)) + + containerapp_env = self.cmd('containerapp env show -g {} -n {}'.format(resource_group, env_name)).get_output_in_json() + + while containerapp_env["properties"]["provisioningState"].lower() == "waiting": + time.sleep(5) + containerapp_env = self.cmd('containerapp env show -g {} -n {}'.format(resource_group, env_name)).get_output_in_json() + + self.cmd('containerapp create -g {} -n {} --environment {} --ingress external --target-port 80'.format(resource_group, ca_name, env_name)) + + self.cmd('containerapp ingress show -g {} -n {}'.format(resource_group, ca_name, env_name), checks=[ + JMESPathCheck('external', True), + JMESPathCheck('targetPort', 80), + ]) + + self.cmd('containerapp create -g {} -n {} --environment {} --ingress external --target-port 80 --image nginx'.format(resource_group, ca_name, env_name)) + + self.cmd('containerapp revision set-mode -g {} -n {} --mode multiple'.format(resource_group, ca_name, env_name)) + + revision_names = self.cmd(f"containerapp revision list -g {resource_group} -n {ca_name} --all --query '[].name'").get_output_in_json() + + self.assertEqual(len(revision_names), 2) + + labels = [] + for revision in revision_names: + label = self.create_random_name(prefix='label', length=12) + labels.append(label) + self.cmd(f"containerapp revision label add -g {resource_group} -n {ca_name} --revision {revision} --label {label}") + + traffic_weight = self.cmd(f"containerapp ingress traffic show -g {resource_group} -n {ca_name} --query '[].name'").get_output_in_json() + + for traffic in traffic_weight: + if "label" in traffic: + self.assertEqual(traffic["label"] in labels, True) + + self.cmd(f"containerapp ingress traffic set -g {resource_group} -n {ca_name} --revision-weight latest=50 --label-weight {labels[0]}=25 {labels[1]}=25") + + traffic_weight = self.cmd(f"containerapp ingress traffic show -g {resource_group} -n {ca_name} --query '[].name'").get_output_in_json() + + for traffic in traffic_weight: + if "label" in traffic: + self.assertEqual(traffic["weight"], 25) + else: + self.assertEqual(traffic["weight"], 50) + + traffic_weight = self.cmd(f"containerapp revision label swap -g {resource_group} -n {ca_name} --source {labels[0]} --target {labels[1]}").get_output_in_json() + + for revision in revision_names: + traffic = [w for w in traffic_weight if "revisionName" in w and w["revisionName"] == revision][0] + self.assertEqual(traffic["label"], labels[(revision_names.index(revision) + 1) % 2]) + + self.cmd(f"containerapp revision label remove -g {resource_group} -n {ca_name} --label {labels[0]}", checks=[ + JMESPathCheck('length(@)', 3), + ]) + + self.cmd(f"containerapp revision label remove -g {resource_group} -n {ca_name} --label {labels[1]}", checks=[ + JMESPathCheck('length(@)', 3), + ]) + + traffic_weight = self.cmd(f"containerapp ingress traffic show -g {resource_group} -n {ca_name}").get_output_in_json() + + self.assertEqual(len([w for w in traffic_weight if "label" in w]), 0) diff --git a/src/containerapp/azext_containerapp/tests/latest/test_containerapp_env_commands.py b/src/containerapp/azext_containerapp/tests/latest/test_containerapp_env_commands.py index 0bee02cc9ae..5fafa7ebc93 100644 --- a/src/containerapp/azext_containerapp/tests/latest/test_containerapp_env_commands.py +++ b/src/containerapp/azext_containerapp/tests/latest/test_containerapp_env_commands.py @@ -39,10 +39,8 @@ def test_containerapp_env_e2e(self, resource_group): JMESPathCheck('name', env_name), ]) - # Sleep in case containerapp create takes a while self.cmd('containerapp env delete -g {} -n {} --yes'.format(resource_group, env_name)) - # Sleep in case env delete takes a while self.cmd('containerapp env list -g {}'.format(resource_group), checks=[ JMESPathCheck('length(@)', 0), ]) @@ -168,7 +166,7 @@ def test_containerapp_env_certificate_e2e(self, resource_group): cert_name_2 = cert_2["name"] cert_id_2 = cert_2["id"] cert_thumbprint_2 = cert_2["properties"]["thumbprint"] - + # list certs with a wrong location self.cmd('containerapp env certificate upload -g {} -n {} --certificate-file "{}" -l "{}"'.format(resource_group, env_name, pem_file, "eastus2"), expect_failure=True) @@ -210,4 +208,32 @@ def test_containerapp_env_certificate_e2e(self, resource_group): self.cmd('containerapp env certificate list -g {} -n {}'.format(resource_group, env_name), checks=[ JMESPathCheck('length(@)', 0), - ]) \ No newline at end of file + ]) + + + @AllowLargeResponse(8192) + @ResourceGroupPreparer(location="northeurope") + @live_only() # passes live but hits CannotOverwriteExistingCassetteException when run from recording + def test_containerapp_env_internal_only_e2e(self, resource_group): + env = self.create_random_name(prefix='env', length=24) + logs = self.create_random_name(prefix='logs', length=24) + vnet = self.create_random_name(prefix='name', length=24) + + self.cmd(f"az network vnet create --address-prefixes '14.0.0.0/23' -g {resource_group} -n {vnet}") + sub_id = self.cmd(f"az network vnet subnet create --address-prefixes '14.0.0.0/23' -n sub -g {resource_group} --vnet-name {vnet}").get_output_in_json()["id"] + + logs_id = self.cmd(f"monitor log-analytics workspace create -g {resource_group} -n {logs}").get_output_in_json()["customerId"] + logs_key = self.cmd(f'monitor log-analytics workspace get-shared-keys -g {resource_group} -n {logs}').get_output_in_json()["primarySharedKey"] + + self.cmd(f'containerapp env create -g {resource_group} -n {env} --logs-workspace-id {logs_id} --logs-workspace-key {logs_key} --internal-only -s {sub_id}') + + containerapp_env = self.cmd(f'containerapp env show -g {resource_group} -n {env}').get_output_in_json() + + while containerapp_env["properties"]["provisioningState"].lower() == "waiting": + time.sleep(5) + containerapp_env = self.cmd(f'containerapp env show -g {resource_group} -n {env}').get_output_in_json() + + self.cmd(f'containerapp env show -n {env} -g {resource_group}', checks=[ + JMESPathCheck('name', env), + JMESPathCheck('properties.vnetConfiguration.internal', True), + ]) diff --git a/src/containerapp/azext_containerapp/tests/latest/test_containerapp_scenario.py b/src/containerapp/azext_containerapp/tests/latest/test_containerapp_scenario.py index 32a4011644d..f7af0221792 100644 --- a/src/containerapp/azext_containerapp/tests/latest/test_containerapp_scenario.py +++ b/src/containerapp/azext_containerapp/tests/latest/test_containerapp_scenario.py @@ -85,6 +85,7 @@ def test_containerapp_e2e(self, resource_group): ]) + # TODO rename @AllowLargeResponse(8192) @ResourceGroupPreparer(location="eastus2") def test_container_acr(self, resource_group): @@ -126,6 +127,7 @@ def test_container_acr(self, resource_group): ]) + # TODO rename @AllowLargeResponse(8192) @ResourceGroupPreparer(location="westeurope") def test_containerapp_update(self, resource_group): @@ -193,6 +195,7 @@ def test_containerapp_update(self, resource_group): ]) + # TODO rename @AllowLargeResponse(8192) @ResourceGroupPreparer(location="eastus2") def test_container_acr(self, resource_group): @@ -258,6 +261,7 @@ def test_container_acr(self, resource_group): # Removing ACR password should fail since it is needed for ACR self.cmd('containerapp secret remove -g {} -n {} --secret-names {}'.format(resource_group, containerapp_name, secret_name)) + # TODO rename @AllowLargeResponse(8192) @ResourceGroupPreparer(location="northeurope") def test_containerapp_update(self, resource_group): @@ -329,6 +333,7 @@ def test_containerapp_update(self, resource_group): JMESPathCheck('properties.template.containers[1].resources.memory', '1.5Gi'), ]) + # TODO fix and enable @unittest.skip("API only on stage currently") @live_only() # VCR.py can't seem to handle websockets (only --live works) # @ResourceGroupPreparer(location="centraluseuap") @@ -392,7 +397,6 @@ class Namespace: pass for line in expected_output: self.assertIn(line, expected_output) - @ResourceGroupPreparer(location="northeurope") def test_containerapp_logstream(self, resource_group): containerapp_name = self.create_random_name(prefix='capp', length=24) @@ -411,4 +415,39 @@ def test_containerapp_logstream(self, resource_group): self.cmd(f'containerapp create -g {resource_group} -n {containerapp_name} --environment {env_name} --min-replicas 1 --ingress external --target-port 80') - self.cmd(f'containerapp logs show -n {containerapp_name} -g {resource_group}') \ No newline at end of file + self.cmd(f'containerapp logs show -n {containerapp_name} -g {resource_group}') + + @ResourceGroupPreparer(location="northeurope") + def test_containerapp_registry_msi(self, resource_group): + env = self.create_random_name(prefix='env', length=24) + logs = self.create_random_name(prefix='logs', length=24) + app = self.create_random_name(prefix='app', length=24) + acr = self.create_random_name(prefix='acr', length=24) + + logs_id = self.cmd(f"monitor log-analytics workspace create -g {resource_group} -n {logs}").get_output_in_json()["customerId"] + logs_key = self.cmd(f'monitor log-analytics workspace get-shared-keys -g {resource_group} -n {logs}').get_output_in_json()["primarySharedKey"] + + self.cmd(f'containerapp env create -g {resource_group} -n {env} --logs-workspace-id {logs_id} --logs-workspace-key {logs_key}') + + containerapp_env = self.cmd(f'containerapp env show -g {resource_group} -n {env}').get_output_in_json() + + while containerapp_env["properties"]["provisioningState"].lower() == "waiting": + time.sleep(5) + containerapp_env = self.cmd(f'containerapp env show -g {resource_group} -n {env}').get_output_in_json() + + self.cmd(f'containerapp create -g {resource_group} -n {app} --environment {env} --min-replicas 1 --ingress external --target-port 80') + self.cmd(f'acr create -g {resource_group} -n {acr} --sku basic --admin-enabled') + # self.cmd(f'acr credential renew -n {acr} ') + self.cmd(f'containerapp registry set --server {acr}.azurecr.io -g {resource_group} -n {app}') + app_data = self.cmd(f'containerapp show -g {resource_group} -n {app}').get_output_in_json() + self.assertEqual(app_data["properties"]["configuration"]["registries"][0].get("server"), f'{acr}.azurecr.io') + self.assertIsNotNone(app_data["properties"]["configuration"]["registries"][0].get("passwordSecretRef")) + self.assertIsNotNone(app_data["properties"]["configuration"]["registries"][0].get("username")) + self.assertIsNone(app_data["properties"]["configuration"]["registries"][0].get("identity")) + + self.cmd(f'containerapp registry set --server {acr}.azurecr.io -g {resource_group} -n {app} --identity system') + app_data = self.cmd(f'containerapp show -g {resource_group} -n {app}').get_output_in_json() + self.assertEqual(app_data["properties"]["configuration"]["registries"][0].get("server"), f'{acr}.azurecr.io') + self.assertIsNone(app_data["properties"]["configuration"]["registries"][0].get("passwordSecretRef")) + self.assertIsNone(app_data["properties"]["configuration"]["registries"][0].get("username")) + self.assertEqual(app_data["properties"]["configuration"]["registries"][0].get("identity"), "system") diff --git a/src/containerapp/setup.py b/src/containerapp/setup.py index 1d484ae339c..6663c882dd6 100644 --- a/src/containerapp/setup.py +++ b/src/containerapp/setup.py @@ -17,7 +17,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '0.3.5' +VERSION = '0.3.7' # The full list of classifiers is available at diff --git a/src/dataprotection/HISTORY.rst b/src/dataprotection/HISTORY.rst index 5bec40fb466..39559a9ea10 100644 --- a/src/dataprotection/HISTORY.rst +++ b/src/dataprotection/HISTORY.rst @@ -2,6 +2,10 @@ Release History =============== +0.5.0 +++++++ +* `az dataprotection backup-instance update-msi-permissions`: New command to grant missing permissions to backup vault MSI +* `az dataprotection backup-instance initialize`: Added optional `--snapshot-resource-group-name` parameter 0.4.0 ++++++ diff --git a/src/dataprotection/azext_dataprotection/manual/Manifests/AzureBlob.py b/src/dataprotection/azext_dataprotection/manual/Manifests/AzureBlob.py index 6856273f2d1..2101ba8e46a 100644 --- a/src/dataprotection/azext_dataprotection/manual/Manifests/AzureBlob.py +++ b/src/dataprotection/azext_dataprotection/manual/Manifests/AzureBlob.py @@ -13,6 +13,12 @@ "allowedRestoreTargetTypes": [ "OriginalLocation" ], "itemLevelRecoveyEnabled": true, "supportSecretStoreAuthentication": false, + "backupVaultPermissions": [ + { + "roleDefinitionName": "Storage Account Backup Contributor", + "type": "DataSource" + } + ], "policySettings": { "supportedRetentionTags": [], "supportedDatastoreTypes": [ "OperationalStore" ], diff --git a/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDatabaseForPostgreSQL.py b/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDatabaseForPostgreSQL.py index 736e02f865e..63128b2f139 100644 --- a/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDatabaseForPostgreSQL.py +++ b/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDatabaseForPostgreSQL.py @@ -13,6 +13,24 @@ "allowedRestoreTargetTypes": [ "AlternateLocation", "RestoreAsFiles" ], "itemLevelRecoveyEnabled": false, "supportSecretStoreAuthentication": true, + "backupVaultPermissions": [ + { + "roleDefinitionName": "Reader", + "type": "DataSource" + } + ], + "secretStorePermissions": { + "rbacModel": { + "roleDefinitionName": "Key Vault Secrets User" + }, + "vaultAccessPolicyModel": { + "accessPolicies": { + "permissions": { + "secrets": [ "Get", "List" ] + } + } + } + }, "policySettings": { "supportedRetentionTags": [ "Weekly", "Monthly", "Yearly" ], "supportedDatastoreTypes": [ "VaultStore", "ArchiveStore" ], diff --git a/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDisk.py b/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDisk.py index 3ca3d9b3bbc..6714bb3e8c4 100644 --- a/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDisk.py +++ b/src/dataprotection/azext_dataprotection/manual/Manifests/AzureDisk.py @@ -13,6 +13,16 @@ "allowedRestoreTargetTypes": [ "AlternateLocation" ], "itemLevelRecoveyEnabled": false, "supportSecretStoreAuthentication": false, + "backupVaultPermissions": [ + { + "roleDefinitionName": "Disk Backup Reader", + "type": "DataSource" + }, + { + "roleDefinitionName": "Disk Snapshot Contributor", + "type": "SnapshotRG" + } + ], "policySettings": { "supportedRetentionTags": [ "Daily", "Weekly" ], "supportedDatastoreTypes": [ "OperationalStore" ], diff --git a/src/dataprotection/azext_dataprotection/manual/_help.py b/src/dataprotection/azext_dataprotection/manual/_help.py index 3693ec403a6..7f420505d78 100644 --- a/src/dataprotection/azext_dataprotection/manual/_help.py +++ b/src/dataprotection/azext_dataprotection/manual/_help.py @@ -55,6 +55,14 @@ text: az dataprotection backup-instance list-from-resourcegraph --resource-groups resourceGroup --vaults vault --protection-status ProtectionError --datasource-type AzureDisk """ +helps['dataprotection backup-instance update-msi-permissions'] = """ + type: command + short-summary: Assign the required permissions needed to successfully enable backup for the datasource. + examples: + - name: Assign the required permissions needed to successfully enable backup for the datasource. + text: az dataprotection backup-instance update-msi-permissions --backup-instance backup_inst.json --resource-group samarth_resource_group --vault-name samarthbackupvault --datasource-type AzureDisk --operation Backup --permissions-scope ResourceGroup +""" + helps['dataprotection backup-policy get-default-policy-template'] = """ type: command short-summary: Get default policy template for a given datasource type. diff --git a/src/dataprotection/azext_dataprotection/manual/_params.py b/src/dataprotection/azext_dataprotection/manual/_params.py index 545b8b363af..15ad5cbedec 100644 --- a/src/dataprotection/azext_dataprotection/manual/_params.py +++ b/src/dataprotection/azext_dataprotection/manual/_params.py @@ -35,6 +35,8 @@ get_datasource_types, get_rehydration_priority_values, get_secret_store_type_values, + get_backup_operation_values, + get_permission_scope_values, get_resource_type_values, get_critical_operation_values ) @@ -56,6 +58,7 @@ def load_arguments(self, _): c.argument('policy_id', type=str, help="Id of the backup policy the datasource will be associated") c.argument('secret_store_type', arg_type=get_enum_type(get_secret_store_type_values()), help="Specify the secret store type to use for authentication") c.argument('secret_store_uri', type=str, help="specify the secret store uri to use for authentication") + c.argument('snapshot_resource_group_name', options_list=['--snapshot-resource-group-name', '--snapshot-rg'], type=str, help="Name of the resource group in which the backup snapshots should be stored") with self.argument_context('dataprotection backup-instance update-policy') as c: c.argument('backup_instance_name', type=str, help="Backup instance name.") @@ -83,6 +86,16 @@ def load_arguments(self, _): c.argument('protection_status', arg_type=get_enum_type(get_protection_status_values()), nargs='+', help="specify protection status.") c.argument('datasource_id', type=str, nargs='+', help="specify datasource id filter to apply.") + with self.argument_context('dataprotection backup-instance update-msi-permissions') as c: + c.argument('operation', arg_type=get_enum_type(get_backup_operation_values()), help="List of possible operations") + c.argument('datasource_type', arg_type=get_enum_type(get_datasource_types()), help="Specify the datasource type of the resource to be backed up") + c.argument('vault_name', type=str, help="Name of the vault.") + c.argument('permissions_scope', arg_type=get_enum_type(get_permission_scope_values()), help="Scope for assigning permissions to the backup vault") + c.argument('keyvault_id', type=str, help='ARM id of the key vault. Required when --datasource-type is AzureDatabaseForPostgreSQL') + c.argument('yes', options_list=['--yes', '-y'], help='Do not prompt for confirmation.', action='store_true') + c.argument('backup_instance', type=validate_file_or_dict, help='Request body for operation Expected value: ' + 'json-string/@json-file. Required when --operation is Backup') + with self.argument_context('dataprotection job list-from-resourcegraph') as c: c.argument('subscriptions', type=str, nargs='+', help="List of subscription Ids.") c.argument('resource_groups', type=str, nargs='+', help="List of resource groups.") diff --git a/src/dataprotection/azext_dataprotection/manual/commands.py b/src/dataprotection/azext_dataprotection/manual/commands.py index a6cb5bd4e47..47a3cb0191e 100644 --- a/src/dataprotection/azext_dataprotection/manual/commands.py +++ b/src/dataprotection/azext_dataprotection/manual/commands.py @@ -30,6 +30,7 @@ def load_command_table(self, _): g.custom_command('restore trigger', 'dataprotection_backup_instance_restore_trigger', supports_no_wait=True) g.custom_command('update-policy', "dataprotection_backup_instance_update_policy", supports_no_wait=True) g.custom_command('list-from-resourcegraph', 'dataprotection_backup_instance_list_from_resourcegraph', client_factory=cf_resource_graph_client) + g.custom_command('update-msi-permissions', 'dataprotection_backup_instance_update_msi_permissions', client_factory=cf_backup_vault) with self.command_group('dataprotection backup-policy', exception_handler=exception_handler) as g: g.custom_command('get-default-policy-template', "dataprotection_backup_policy_get_default_policy_template") diff --git a/src/dataprotection/azext_dataprotection/manual/custom.py b/src/dataprotection/azext_dataprotection/manual/custom.py index 380d33c563f..045b629a7f4 100644 --- a/src/dataprotection/azext_dataprotection/manual/custom.py +++ b/src/dataprotection/azext_dataprotection/manual/custom.py @@ -11,6 +11,7 @@ import uuid import copy import re +import time from knack.util import CLIError from knack.log import get_logger from azure.cli.core.util import sdk_no_wait @@ -170,7 +171,8 @@ def dataprotection_backup_instance_validate_for_backup(client, vault_name, resou def dataprotection_backup_instance_initialize(datasource_type, datasource_id, datasource_location, policy_id, - secret_store_type=None, secret_store_uri=None): + secret_store_type=None, secret_store_uri=None, + snapshot_resource_group_name=None): datasource_info = helper.get_datasource_info(datasource_type, datasource_id, datasource_location) datasourceset_info = None manifest = helper.load_manifest(datasource_type) @@ -185,11 +187,16 @@ def dataprotection_backup_instance_initialize(datasource_type, datasource_id, da { "object_type": "AzureOperationalStoreParameters", "data_store_type": "OperationalStore", - "resource_group_id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}" + "resource_group_id": helper.get_rg_id_from_arm_id(datasource_id) } ] } + if snapshot_resource_group_name: + disk_sub_id = helper.get_sub_id_from_arm_id(datasource_id) + policy_parameters["data_store_parameters_list"][0]["resource_group_id"] = (disk_sub_id + "/resourceGroups/" + + snapshot_resource_group_name) + datasource_auth_credentials_info = None if manifest["supportSecretStoreAuthentication"]: if secret_store_uri and secret_store_type: @@ -255,6 +262,185 @@ def dataprotection_backup_instance_list_from_resourcegraph(client, datasource_ty return response.data +def dataprotection_backup_instance_update_msi_permissions(cmd, client, resource_group_name, datasource_type, vault_name, operation, permissions_scope, backup_instance=None, keyvault_id=None, yes=False): + from msrestazure.tools import is_valid_resource_id, parse_resource_id + + if operation == 'Backup' and backup_instance is None: + raise CLIError("--backup-instance needs to be given when --operation is given as Backup") + + if datasource_type == 'AzureDatabaseForPostgreSQL': + if not keyvault_id: + raise CLIError("--keyvault-id needs to be given when --datasource-type is AzureDatabaseForPostgreSQL") + + if not is_valid_resource_id(keyvault_id): + raise CLIError("Please provide a valid keyvault ID") + + datasource_map = { + "AzureDisk": "Microsoft.Compute/disks", + "AzureBlob": "Microsoft.Storage/storageAccounts/blobServices", + "AzureDatabaseForPostgreSQL": "Microsoft.DBforPostgreSQL/servers/databases" + } + + if datasource_map[datasource_type] != backup_instance["properties"]["data_source_info"]["datasource_type"]: + raise CLIError("--backup-instance provided is not compatible with the --datasource-type.") + + from azure.cli.core.commands.client_factory import get_mgmt_service_client + + from knack.prompting import prompt_y_n + msg = helper.get_help_text_on_grant_permissions(datasource_type) + if not yes and not prompt_y_n(msg): + return None + + backup_vault = client.get(resource_group_name=resource_group_name, + vault_name=vault_name) + principal_id = backup_vault.identity.principal_id + + role_assignments_arr = [] + + if backup_instance['properties']['data_source_info']['resource_location'] != backup_vault.location: + raise CLIError("Location of data source needs to be the same as backup vault.\nMake sure the datasource " + "and vault are chosen properly") + + from azure.cli.command_modules.role.custom import list_role_assignments, create_role_assignment + + manifest = helper.load_manifest(datasource_type) + + keyvault_client = None + keyvault = None + keyvault_subscription = None + keyvault_name = None + keyvault_rg = None + if manifest['supportSecretStoreAuthentication']: + cmd.command_kwargs['operation_group'] = 'vaults' + keyvault_update = False + + from azure.cli.core.profiles import ResourceType + from azure.cli.command_modules.keyvault._client_factory import Clients, get_client + + keyvault_params = parse_resource_id(keyvault_id) + keyvault_subscription = keyvault_params['subscription'] + keyvault_name = keyvault_params['name'] + keyvault_rg = keyvault_params['resource_group'] + + keyvault_client = getattr(get_mgmt_service_client(cmd.cli_ctx, ResourceType.MGMT_KEYVAULT, subscription_id=keyvault_subscription), Clients.vaults) + + keyvault = keyvault_client.get(resource_group_name=keyvault_rg, vault_name=keyvault_name) + + # Check if keyvault is not publicly accessible + if keyvault.properties.public_network_access == 'Disabled': + raise CLIError("Keyvault has public access disabled. Please enable public access, or grant access to your client IP") + + # Check if the secret URI provided in backup instance is a valid secret + data_entity = get_client(cmd.cli_ctx, ResourceType.DATA_KEYVAULT) + data_client = data_entity.client_factory(cmd.cli_ctx, None) + secrets_list = data_client.get_secrets(vault_base_url=keyvault.properties.vault_uri) + given_secret_uri = backup_instance['properties']['datasource_auth_credentials']['secret_store_resource']['uri'] + given_secret_id = helper.get_secret_params_from_uri(given_secret_uri)['secret_id'] + valid_secret = False + for secret in secrets_list: + if given_secret_id == secret.id: + valid_secret = True + break + + if not valid_secret: + raise CLIError("The secret URI provided in the --backup-instance is not associated with the " + "--keyvault-id provided. Please input a valid combination of secret URI and " + "--keyvault-id.") + + keyvault_permission_models = manifest['secretStorePermissions'] + if keyvault.properties.enable_rbac_authorization: + role = keyvault_permission_models['rbacModel']['roleDefinitionName'] + + keyvault_assignment_scope = helper.truncate_id_using_scope(keyvault_id, permissions_scope) + + role_assignment = list_role_assignments(cmd, assignee=principal_id, role=role, scope=keyvault_id, include_inherited=True) + if not role_assignment: + assignment = create_role_assignment(cmd, assignee=principal_id, role=role, scope=keyvault_assignment_scope) + role_assignments_arr.append(helper.get_permission_object_from_role_object(assignment)) + + else: + from azure.cli.command_modules.keyvault.custom import set_policy + vault_secret_permissions = (keyvault_permission_models['vaultAccessPolicyModel'] + ['accessPolicies'] + ['permissions'] + ['secrets']) + + secrets_array = [] + for policy in keyvault.properties.access_policies: + if policy.object_id == principal_id: + secrets_array = policy.permissions.secrets + break + + permissions_set = True + for permission in vault_secret_permissions: + if permission not in secrets_array: + permissions_set = False + secrets_array.append(permission) + + if not permissions_set: + keyvault_update = True + keyvault = set_policy(cmd, keyvault_client, keyvault_rg, keyvault_name, object_id=principal_id, secret_permissions=secrets_array) + keyvault = keyvault.result() + + from azure.cli.command_modules.keyvault.custom import update_vault_setter + + if keyvault.properties.network_acls: + if keyvault.properties.network_acls.bypass == 'None': + keyvault_update = True + keyvault.properties.network_acls.bypass = 'AzureServices' + update_vault_setter(cmd, keyvault_client, keyvault, resource_group_name=keyvault_rg, vault_name=keyvault_name) + + if keyvault_update: + role_assignments_arr.append(helper.get_permission_object_from_keyvault(keyvault)) + + for role_object in manifest['backupVaultPermissions']: + resource_id = helper.get_resource_id_from_backup_instance(backup_instance, role_object['type']) + resource_id = helper.truncate_id_using_scope(resource_id, "Resource") + + assignment_scope = helper.truncate_id_using_scope(resource_id, permissions_scope) + + role_assignments = list_role_assignments(cmd, assignee=principal_id, role=role_object['roleDefinitionName'], + scope=resource_id, include_inherited=True) + if not role_assignments: + assignment = create_role_assignment(cmd, assignee=principal_id, role=role_object['roleDefinitionName'], + scope=assignment_scope) + role_assignments_arr.append(helper.get_permission_object_from_role_object(assignment)) + + # Network line of sight access on server, if that is the datasource type + if datasource_type == 'AzureDatabaseForPostgreSQL': + server_params = parse_resource_id(backup_instance['properties']['data_source_info']['resource_id']) + server_sub = server_params['subscription'] + server_name = server_params['name'] + server_rg = server_params['resource_group'] + + from azure.mgmt.rdbms.postgresql import PostgreSQLManagementClient + postgres_firewall_client = getattr(get_mgmt_service_client(cmd.cli_ctx, PostgreSQLManagementClient, subscription_id=server_sub), 'firewall_rules') + + firewall_rule_list = postgres_firewall_client.list_by_server(resource_group_name=server_rg, server_name=server_name) + + allow_access_to_azure_ips = False + for rule in firewall_rule_list: + if rule.start_ip_address == rule.end_ip_address and rule.start_ip_address == '0.0.0.0': + allow_access_to_azure_ips = True + break + + if not allow_access_to_azure_ips: + firewall_rule_name = 'AllowAllWindowsAzureIps' + parameters = {'name': firewall_rule_name, 'start_ip_address': '0.0.0.0', 'end_ip_address': '0.0.0.0'} + + rule = postgres_firewall_client.begin_create_or_update(server_rg, server_name, firewall_rule_name, parameters) + role_assignments_arr.append(helper.get_permission_object_from_server_firewall_rule(rule.result())) + + if not role_assignments_arr: + logger.warning("The required permissions are already assigned!") + else: + # Wait for 60 seconds to let the role assignments propagate + logger.warning("Waiting for 60 seconds for permissions to propagate") + time.sleep(60) + + return role_assignments_arr + + def dataprotection_job_list_from_resourcegraph(client, datasource_type, resource_groups=None, vaults=None, subscriptions=None, start_time=None, end_time=None, status=None, operation=None, datasource_id=None): diff --git a/src/dataprotection/azext_dataprotection/manual/enums.py b/src/dataprotection/azext_dataprotection/manual/enums.py index 150fbced70b..2588ce82705 100644 --- a/src/dataprotection/azext_dataprotection/manual/enums.py +++ b/src/dataprotection/azext_dataprotection/manual/enums.py @@ -65,6 +65,14 @@ def get_secret_store_type_values(): return ['AzureKeyVault'] +def get_backup_operation_values(): + return ['Backup'] + + +def get_permission_scope_values(): + return ['Resource', 'ResourceGroup', 'Subscription'] + + def get_resource_type_values(): return ['Microsoft.RecoveryServices/vaults'] diff --git a/src/dataprotection/azext_dataprotection/manual/helpers.py b/src/dataprotection/azext_dataprotection/manual/helpers.py index d4cabec91ca..63b8e84f892 100644 --- a/src/dataprotection/azext_dataprotection/manual/helpers.py +++ b/src/dataprotection/azext_dataprotection/manual/helpers.py @@ -6,6 +6,7 @@ import json from importlib import import_module from knack.util import CLIError +from msrestazure.tools import is_valid_resource_id, parse_resource_id critical_operation_map = {"deleteProtection": "/backupFabrics/protectionContainers/protectedItems/delete", "updateProtection": "/backupFabrics/protectionContainers/protectedItems/write", @@ -92,3 +93,131 @@ def get_backup_frequency_from_time_interval(repeating_time_intervals): def get_tagging_priority(name): priorityMap = {"Default": 99, "Daily": 25, "Weekly": 20, "Monthly": 15, "Yearly": 10} return priorityMap[name] + + +def truncate_id_using_scope(arm_id, scope): + if not is_valid_resource_id(arm_id): + raise CLIError("Please give a valid ARM ID") + + resource_params = parse_resource_id(arm_id) + result_id = "" + + if "subscription" in resource_params: + result_id += "/subscriptions/" + resource_params["subscription"] + + if scope == "Subscription": + return result_id + + if "resource_group" in resource_params: + result_id += "/resourceGroups/" + resource_params["resource_group"] + + if scope == "ResourceGroup": + return result_id + + if "name" in resource_params: + result_id += "/providers/" + resource_params["namespace"] + "/" + resource_params["type"] + "/" + result_id += resource_params["name"] + + return result_id + + +def get_sub_id_from_arm_id(arm_id): + return truncate_id_using_scope(arm_id, "Subscription") + + +def get_rg_id_from_arm_id(arm_id): + return truncate_id_using_scope(arm_id, "ResourceGroup") + + +def get_resource_id_from_backup_instance(backup_instance, role_type): + resource_id = None + + if role_type == 'DataSource': + resource_id = backup_instance['properties']['data_source_info']['resource_id'] + elif role_type == 'SnapshotRG': + data_stores = backup_instance['properties']['policy_info']['policy_parameters']['data_store_parameters_list'] + resource_id = data_stores[0]['resource_group_id'] + + return resource_id + + +def get_secret_params_from_uri(secret_uri): + secret_params = {} + + secret_params_arr = secret_uri.split("/") + secret_params['name'] = secret_params_arr[4] + + if len(secret_params_arr) >= 6: + secret_params['version'] = secret_params_arr[5] + + secret_params['secret_id'] = "/".join(secret_params_arr[:5]) + return secret_params + + +def get_help_text_on_grant_permissions(datasource_type): + help_text = "This command will attempt to automatically grant the following access to the backup vault:\n" + + if datasource_type == 'AzureDatabaseForPostgreSQL': + help_text += ("1. Backup vault's identity access on the Postgres server and the key vault\n" + "2. 'Allow all Azure Services' under network connectivity in the Postgres server\n" + "3. 'Allow Trusted Azure Services' under network connectivity in the Key vault") + + if datasource_type == 'AzureBlob': + help_text += "Backup vault's identity access on the storage account" + + if datasource_type == 'AzureDisk': + help_text += "Backup vault's identity access on the disk and snapshot resource group" + + help_text += "\nAre you sure you want to continue?" + return help_text + + +def get_permission_object_from_role_object(role_object): + permission_object = {} + if hasattr(role_object, 'type'): + permission_object['ResourceType'] = role_object.type + if hasattr(role_object, 'name'): + permission_object['Name'] = role_object.name + + permission_object['Properties'] = {} + properties = permission_object['Properties'] + if hasattr(role_object, 'role_definition_id'): + properties['roleDefinitionId'] = role_object.role_definition_id + if hasattr(role_object, 'principal_id'): + properties['principalId'] = role_object.principal_id + if hasattr(role_object, 'scope'): + properties['scope'] = role_object.scope + if hasattr(role_object, 'principal_type'): + properties['principalType'] = role_object.principal_type + + return permission_object + + +def get_permission_object_from_server_firewall_rule(rule): + permission_object = {} + permission_object['Properties'] = {} + properties = permission_object['Properties'] + if hasattr(rule, 'type'): + permission_object['ResourceType'] = rule.type + if hasattr(rule, 'name'): + permission_object['Name'] = rule.name + properties['description'] = rule.name + + if hasattr(rule, 'start_ip_address'): + properties['startIpAddress'] = rule.start_ip_address + if hasattr(rule, 'end_ip_address'): + properties['endIpAddress'] = rule.end_ip_address + + return permission_object + + +def get_permission_object_from_keyvault(keyvault): + permission_object = {} + if hasattr(keyvault, 'type'): + permission_object['ResourceType'] = keyvault.type + if hasattr(keyvault, 'name'): + permission_object['Name'] = keyvault.name + if hasattr(keyvault, 'properties'): + permission_object['Properties'] = keyvault.properties + + return permission_object diff --git a/src/dataprotection/azext_dataprotection/manual/tests/latest/test_dataprotection_scenario.py b/src/dataprotection/azext_dataprotection/manual/tests/latest/test_dataprotection_scenario.py index bcf82e209da..e54096f5a3f 100644 --- a/src/dataprotection/azext_dataprotection/manual/tests/latest/test_dataprotection_scenario.py +++ b/src/dataprotection/azext_dataprotection/manual/tests/latest/test_dataprotection_scenario.py @@ -14,7 +14,20 @@ def setup(test): "diskname": "cli-test-disk-new", "restorediskname": "cli-test-disk-new-restored", "policyname": "diskpolicy", - "resourceGuardName": "cli-test-resource-guard" + "storagepolicyname": "storagepolicy", + "resourceGuardName": "cli-test-resource-guard", + "storageaccountname": "cliteststoreaccount", + "ossserver": "oss-clitest-server", + "ossdb": "postgres", + "ossdbid": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/databases/postgres", + "serverpolicyid": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/backupPolicies/oss-clitest-policy", + "secretstoreuri": "https://oss-clitest-keyvault.vault.azure.net/secrets/oss-clitest-secret", + "serverrgname": "oss-clitest-rg", + "servervaultname": "oss-clitest-vault", + "keyvaultid": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault", + "keyvaultname": "oss-clitest-keyvault", + "serverid": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server", + "servervaultprincipalid": "b864e281-c12e-45c6-a0c7-6046a7de5481" }) account_res = test.cmd('az account show').get_output_in_json() vault_res = test.cmd('az dataprotection backup-vault create ' @@ -32,17 +45,18 @@ def setup(test): ]) disk_response = test.cmd('az disk create -g "{rg}" -n "{diskname}" --size-gb 4').get_output_in_json() + storage_account_response = test.cmd('az storage account create -g "{rg}" -n "{storageaccountname}" -l centraluseuap').get_output_in_json() test.kwargs.update({ "principalId": vault_res["identity"]["principalId"], "diskid": disk_response["id"], + "storageaccountid": storage_account_response["id"], "rgid": "/subscriptions/" + account_res["id"] + "/resourceGroups/sarath-rg" }) # run the below commands only in record mode - # time.sleep(180) + time.sleep(10) # test.cmd('az role assignment create --assignee "{principalId}" --role "Disk Backup Reader" --scope "{diskid}"') # test.cmd('az role assignment create --assignee "{principalId}" --role "Disk Snapshot Contributor" --scope "{rgid}"') - # test.cmd('az role assignment create --assignee "{principalId}" --role "Disk Restore Operator" --scope "{rgid}"') def test_resource_guard(test): @@ -69,9 +83,16 @@ def create_policy(test): test.kwargs.update({"policyjson": policy_json}) test.cmd('az dataprotection backup-policy create -n "{policyname}" --policy "{policyjson}" -g "{rg}" --vault-name "{vaultName}"') + storage_policy_json = test.cmd('az dataprotection backup-policy get-default-policy-template --datasource-type AzureBlob').get_output_in_json() + test.kwargs.update({"storagepolicyjson": storage_policy_json}) + test.cmd('az dataprotection backup-policy create -n "{storagepolicyname}" --policy "{storagepolicyjson}" -g "{rg}" --vault-name "{vaultName}"') + policy_id = test.cmd('az dataprotection backup-policy show -g "{rg}" --vault-name "{vaultName}" -n "{policyname}" --query "id"').get_output_in_json() test.kwargs.update({"policyid": policy_id}) + storage_policy_id = test.cmd('az dataprotection backup-policy show -g "{rg}" --vault-name "{vaultName}" -n "{storagepolicyname}" --query "id"').get_output_in_json() + test.kwargs.update({"storagepolicyid": storage_policy_id}) + lifecycle_json = test.cmd('az dataprotection backup-policy retention-rule create-lifecycle' ' --count 12 --type Days --source-datastore OperationalStore').get_output_in_json() test.kwargs.update({"lifecycle": lifecycle_json}) @@ -161,16 +182,58 @@ def trigger_disk_restore(test): raise Exception("Undefined job status received") -def configure_backup(test): +def initialize_backup_instance(test): backup_instance_guid = "b7e6f082-b310-11eb-8f55-9cfce85d4fae" backup_instance_json = test.cmd('az dataprotection backup-instance initialize --datasource-type AzureDisk' - ' -l centraluseuap --policy-id "{policyid}" --datasource-id "{diskid}"').get_output_in_json() - backup_instance_json["properties"]["policy_info"]["policy_parameters"]["data_store_parameters_list"][0]["resource_group_id"] = test.kwargs["rgid"] + ' -l centraluseuap --policy-id "{policyid}" --datasource-id "{diskid}" --snapshot-rg "{rg}"').get_output_in_json() backup_instance_json["backup_instance_name"] = test.kwargs['diskname'] + "-" + test.kwargs['diskname'] + "-" + backup_instance_guid test.kwargs.update({ "backup_instance_json": backup_instance_json, "backup_instance_name": backup_instance_json["backup_instance_name"] }) + + backup_instance_json = test.cmd('az dataprotection backup-instance initialize --datasource-type AzureBlob' + ' -l centraluseuap --policy-id "{storagepolicyid}" --datasource-id "{storageaccountid}"').get_output_in_json() + backup_instance_json["backup_instance_name"] = test.kwargs['storageaccountname'] + "-" + test.kwargs['storageaccountname'] + "-" + backup_instance_guid + test.kwargs.update({ + "storage_backup_instance_json": backup_instance_json, + "storage_backup_instance_name": backup_instance_json["backup_instance_name"] + }) + + backup_instance_guid = "faec6818-0720-11ec-bd1b-c8f750f92764" + backup_instance_json = test.cmd('az dataprotection backup-instance initialize --datasource-type AzureDatabaseForPostgreSQL' + ' -l centraluseuap --policy-id "{serverpolicyid}" --datasource-id "{ossdbid}" --secret-store-type AzureKeyVault --secret-store-uri "{secretstoreuri}"').get_output_in_json() + backup_instance_json["backup_instance_name"] = test.kwargs['ossserver'] + "-" + test.kwargs['ossdb'] + "-" + backup_instance_guid + test.kwargs.update({ + "server_backup_instance_json": backup_instance_json, + "server_backup_instance_name": backup_instance_json["backup_instance_name"] + }) + + +def assign_permissions_and_validate(test): + test.cmd('az dataprotection backup-instance validate-for-backup -g "{rg}" --vault-name "{vaultName}" --backup-instance "{backup_instance_json}"', expect_failure=True) + test.cmd('az dataprotection backup-instance validate-for-backup -g "{rg}" --vault-name "{vaultName}" --backup-instance "{storage_backup_instance_json}"', expect_failure=True) + test.cmd('az dataprotection backup-instance validate-for-backup -g "{serverrgname}" --vault-name "{servervaultname}" --backup-instance "{server_backup_instance_json}"', expect_failure=True) + # test.cmd('az dataprotection backup-instance update-msi-permissions --datasource-type AzureDisk --operation Backup --permissions-scope Resource -g "{rg}" --vault-name "{vaultName}" --backup-instance "{backup_instance_json}" --yes').get_output_in_json() + # test.cmd('az dataprotection backup-instance update-msi-permissions --datasource-type AzureBlob --operation Backup --permissions-scope Resource -g "{rg}" --vault-name "{vaultName}" --backup-instance "{storage_backup_instance_json}" --yes').get_output_in_json() + # test.cmd('az dataprotection backup-instance update-msi-permissions --datasource-type AzureDatabaseForPostgreSQL --permissions-scope Resource -g "{serverrgname}" --vault-name "{servervaultname}" --operation Backup --backup-instance "{server_backup_instance_json}" --keyvault-id "{keyvaultid}" --yes') + # test.cmd('az role assignment create --assignee "{principalId}" --role "Disk Restore Operator" --scope "{rgid}"') + # time.sleep(120) # Wait for permissions to propagate + test.cmd('az dataprotection backup-instance validate-for-backup -g "{rg}" --vault-name "{vaultName}" --backup-instance "{backup_instance_json}"', checks=[ + test.check('objectType', 'OperationJobExtendedInfo') + ]) + test.cmd('az dataprotection backup-instance validate-for-backup -g "{rg}" --vault-name "{vaultName}" --backup-instance "{storage_backup_instance_json}"', checks=[ + test.check('objectType', 'OperationJobExtendedInfo') + ]) + test.cmd('az dataprotection backup-instance validate-for-backup -g "{serverrgname}" --vault-name "{servervaultname}" --backup-instance "{server_backup_instance_json}"', checks=[ + test.check('objectType', 'OperationJobExtendedInfo') + ]) + # test.cmd('az role assignment delete --assignee "{servervaultprincipalid}" --role Reader --scope "{serverid}"') + test.cmd('az postgres server firewall-rule delete -g "{serverrgname}" -s "{ossserver}" -n AllowAllWindowsAzureIps --yes') + # test.cmd('az keyvault delete-policy -g "{serverrgname}" -n "{keyvaultname}" --object-id "{servervaultprincipalid}"') + + +def configure_backup(test): test.cmd('az dataprotection backup-instance create -g "{rg}" --vault-name "{vaultName}" --backup-instance "{backup_instance_json}"') backup_instance_res = test.cmd('az dataprotection backup-instance list -g "{rg}" --vault-name "{vaultName}" --query "[0].properties.protectionStatus"').get_output_in_json() @@ -181,12 +244,15 @@ def configure_backup(test): backup_instance_res = test.cmd('az dataprotection backup-instance list -g "{rg}" --vault-name "{vaultName}" --query "[0].properties.protectionStatus"').get_output_in_json() protection_status = backup_instance_res["status"] + test.cmd('az dataprotection backup-instance create -g "{rg}" --vault-name "{vaultName}" --backup-instance "{storage_backup_instance_json}"') + # run the below line only in record mode time.sleep(30) def delete_backup(test): test.cmd('az dataprotection backup-instance delete -g "{rg}" --vault-name "{vaultName}" -n "{backup_instance_name}" --yes') + test.cmd('az dataprotection backup-instance delete -g "{rg}" --vault-name "{vaultName}" -n "{storage_backup_instance_name}" --yes') def cleanup(test): @@ -196,6 +262,7 @@ def cleanup(test): ' -g "{rg}" --vault-name "{vaultName}" --yes') test.cmd('az disk delete --name "{diskname}" --resource-group "{rg}" --yes') test.cmd('az disk delete --name "{restorediskname}" --resource-group "{rg}" --yes') + test.cmd('az storage account delete --name "{storageaccountname}" --resource-group "{rg}" --yes') @AllowLargeResponse() @@ -204,6 +271,8 @@ def call_scenario(test): try: test_resource_guard(test) create_policy(test) + initialize_backup_instance(test) + assign_permissions_and_validate(test) configure_backup(test) stop_resume_protection(test) trigger_disk_backup(test) diff --git a/src/dataprotection/azext_dataprotection/manual/version.py b/src/dataprotection/azext_dataprotection/manual/version.py index a585476b420..6ca96787a6c 100644 --- a/src/dataprotection/azext_dataprotection/manual/version.py +++ b/src/dataprotection/azext_dataprotection/manual/version.py @@ -8,4 +8,4 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "0.4.0" +VERSION = "0.5.0" diff --git a/src/dataprotection/azext_dataprotection/tests/latest/recordings/test_dataprotection_Scenario.yaml b/src/dataprotection/azext_dataprotection/tests/latest/recordings/test_dataprotection_Scenario.yaml index 6dfc7c1a228..a559fa2140c 100644 --- a/src/dataprotection/azext_dataprotection/tests/latest/recordings/test_dataprotection_Scenario.yaml +++ b/src/dataprotection/azext_dataprotection/tests/latest/recordings/test_dataprotection_Scenario.yaml @@ -1,9555 +1,11878 @@ -interactions: -- request: - body: '{"identity": {"type": "SystemAssigned"}, "location": "centraluseuap", "properties": - {"storageSettings": [{"datastoreType": "VaultStore", "type": "LocallyRedundant"}]}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault create - Connection: - - keep-alive - Content-Length: - - '167' - Content-Type: - - application/json - ParameterSetName: - - -g --vault-name -l --storage-settings --type - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 - response: - body: - string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false,"monitoringSettings":{"azureMonitorAlertSettings":{"alertsForAllJobFailures":"Disabled"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' - headers: - cache-control: - - no-cache - content-length: - - '648' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:08:30 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-arm-resource-system-data: - - '{"lastModifiedBy":"akneema@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-24T12:08:22.3508236Z"}' - x-ms-ratelimit-remaining-subscription-resource-requests: - - '99' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"monitoringSettings": {"azureMonitorAlertSettings": {"alertsForAllJobFailures": - "Enabled"}}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault update - Connection: - - keep-alive - Content-Length: - - '109' - Content-Type: - - application/json - ParameterSetName: - - -g --vault-name --azure-monitor-alerts-for-job-failures - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PATCH - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzExZGU2ODAxLWFkNjctNDc3ZS04ODZmLTBhYzVlNjkwODhjZg==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:08:33 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzExZGU2ODAxLWFkNjctNDc3ZS04ODZmLTBhYzVlNjkwODhjZg==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-arm-resource-system-data: - - '{"lastModifiedBy":"akneema@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-24T12:08:31.2991454Z"}' - x-ms-ratelimit-remaining-subscription-resource-requests: - - '99' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault update - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --azure-monitor-alerts-for-job-failures - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzExZGU2ODAxLWFkNjctNDc3ZS04ODZmLTBhYzVlNjkwODhjZg==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzExZGU2ODAxLWFkNjctNDc3ZS04ODZmLTBhYzVlNjkwODhjZg==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzExZGU2ODAxLWFkNjctNDc3ZS04ODZmLTBhYzVlNjkwODhjZg==","status":"Succeeded","startTime":"2022-05-24T12:08:32.9773222Z","endTime":"2022-05-24T12:08:33Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:08:46 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault update - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --azure-monitor-alerts-for-job-failures - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 - response: - body: - string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false,"monitoringSettings":{"azureMonitorAlertSettings":{"alertsForAllJobFailures":"Enabled"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' - headers: - cache-control: - - no-cache - content-length: - - '647' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:08:47 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"monitoringSettings": {"azureMonitorAlertSettings": {"alertsForAllJobFailures": - "Disabled"}}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault update - Connection: - - keep-alive - Content-Length: - - '110' - Content-Type: - - application/json - ParameterSetName: - - -g --vault-name --azure-monitor-alerts-for-job-failures - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PATCH - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzYxYzcyNWM2LTJmZDktNDZmMS05ODIyLWQ0NTgyMWM3YWE2Zg==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:08:51 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzYxYzcyNWM2LTJmZDktNDZmMS05ODIyLWQ0NTgyMWM3YWE2Zg==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-arm-resource-system-data: - - '{"lastModifiedBy":"akneema@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-24T12:08:49.6066339Z"}' - x-ms-ratelimit-remaining-subscription-resource-requests: - - '99' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault update - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --azure-monitor-alerts-for-job-failures - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzYxYzcyNWM2LTJmZDktNDZmMS05ODIyLWQ0NTgyMWM3YWE2Zg==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzYxYzcyNWM2LTJmZDktNDZmMS05ODIyLWQ0NTgyMWM3YWE2Zg==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzYxYzcyNWM2LTJmZDktNDZmMS05ODIyLWQ0NTgyMWM3YWE2Zg==","status":"Succeeded","startTime":"2022-05-24T12:08:51.1342655Z","endTime":"2022-05-24T12:08:51Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:09:02 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault update - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --azure-monitor-alerts-for-job-failures - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 - response: - body: - string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false,"monitoringSettings":{"azureMonitorAlertSettings":{"alertsForAllJobFailures":"Disabled"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' - headers: - cache-control: - - no-cache - content-length: - - '648' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:09:03 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - disk create - Connection: - - keep-alive - ParameterSetName: - - -g -n --size-gb - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","name":"sarath-rg","type":"Microsoft.Resources/resourceGroups","location":"centraluseuap","tags":{},"properties":{"provisioningState":"Succeeded"}}' - headers: - cache-control: - - no-cache - content-length: - - '232' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:09:04 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"location": "centraluseuap", "tags": {}, "sku": {"name": "Premium_LRS"}, - "properties": {"hyperVGeneration": "V1", "creationData": {"createOption": "Empty"}, - "diskSizeGB": 4}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - disk create - Connection: - - keep-alive - Content-Length: - - '175' - Content-Type: - - application/json - ParameterSetName: - - -g -n --size-gb - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-compute/26.1.0 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new?api-version=2021-12-01 - response: - body: - string: "{\r\n \"name\": \"cli-test-disk-new\",\r\n \"location\": \"centraluseuap\",\r\n - \ \"tags\": {},\r\n \"sku\": {\r\n \"name\": \"Premium_LRS\"\r\n },\r\n - \ \"properties\": {\r\n \"hyperVGeneration\": \"V1\",\r\n \"creationData\": - {\r\n \"createOption\": \"Empty\"\r\n },\r\n \"diskSizeGB\": 4,\r\n - \ \"provisioningState\": \"Updating\",\r\n \"isArmResource\": true,\r\n - \ \"colocationConstraints\": {},\r\n \"tier\": \"P1\"\r\n }\r\n}" - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/8701b797-6318-46f3-91c7-2e51136e843b?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2021-12-01 - cache-control: - - no-cache - content-length: - - '385' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:09:08 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/8701b797-6318-46f3-91c7-2e51136e843b?p=814d4482-f746-4961-be2b-b822c13856d2&monitor=true&api-version=2021-12-01 - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/CreateUpdateDisks3Min;999,Microsoft.Compute/CreateUpdateDisks30Min;7998 - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - disk create - Connection: - - keep-alive - ParameterSetName: - - -g -n --size-gb - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-compute/26.1.0 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/8701b797-6318-46f3-91c7-2e51136e843b?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2021-12-01 - response: - body: - string: "{\r\n \"startTime\": \"2022-05-24T12:09:09.0797793+00:00\",\r\n \"endTime\": - \"2022-05-24T12:09:09.2203897+00:00\",\r\n \"status\": \"Succeeded\",\r\n - \ \"properties\": {\r\n \"output\": {\r\n \"name\": \"cli-test-disk-new\",\r\n - \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new\",\r\n - \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"centraluseuap\",\r\n - \ \"tags\": {},\r\n \"sku\": {\r\n \"name\": \"Premium_LRS\",\r\n \"tier\": - \"Premium\"\r\n },\r\n \"properties\": {\r\n \"hyperVGeneration\": \"V1\",\r\n - \ \"creationData\": {\r\n \"createOption\": \"Empty\"\r\n },\r\n - \ \"diskSizeGB\": 4,\r\n \"diskIOPSReadWrite\": 120,\r\n \"diskMBpsReadWrite\": - 25,\r\n \"encryption\": {\r\n \"type\": \"EncryptionAtRestWithPlatformKey\"\r\n - \ },\r\n \"networkAccessPolicy\": \"AllowAll\",\r\n \"publicNetworkAccess\": - \"Enabled\",\r\n \"timeCreated\": \"2022-05-24T11:51:06.8517906+00:00\",\r\n - \ \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n - \ \"diskSizeBytes\": 4294967296,\r\n \"uniqueId\": \"cb847622-272d-4844-94ad-9d077d7b8c32\",\r\n - \ \"tier\": \"P1\"\r\n }\r\n}\r\n },\r\n \"name\": \"8701b797-6318-46f3-91c7-2e51136e843b\"\r\n}" - headers: - cache-control: - - no-cache - content-length: - - '1150' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:09:11 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/GetOperation3Min;49999,Microsoft.Compute/GetOperation30Min;399993 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - disk create - Connection: - - keep-alive - ParameterSetName: - - -g -n --size-gb - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-compute/26.1.0 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new?api-version=2021-12-01 - response: - body: - string: "{\r\n \"name\": \"cli-test-disk-new\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new\",\r\n - \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"centraluseuap\",\r\n - \ \"tags\": {},\r\n \"sku\": {\r\n \"name\": \"Premium_LRS\",\r\n \"tier\": - \"Premium\"\r\n },\r\n \"properties\": {\r\n \"hyperVGeneration\": \"V1\",\r\n - \ \"creationData\": {\r\n \"createOption\": \"Empty\"\r\n },\r\n - \ \"diskSizeGB\": 4,\r\n \"diskIOPSReadWrite\": 120,\r\n \"diskMBpsReadWrite\": - 25,\r\n \"encryption\": {\r\n \"type\": \"EncryptionAtRestWithPlatformKey\"\r\n - \ },\r\n \"networkAccessPolicy\": \"AllowAll\",\r\n \"publicNetworkAccess\": - \"Enabled\",\r\n \"timeCreated\": \"2022-05-24T11:51:06.8517906+00:00\",\r\n - \ \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n - \ \"diskSizeBytes\": 4294967296,\r\n \"uniqueId\": \"cb847622-272d-4844-94ad-9d077d7b8c32\",\r\n - \ \"tier\": \"P1\"\r\n }\r\n}" - headers: - cache-control: - - no-cache - content-length: - - '925' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:09:12 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/LowCostGet3Min;14999,Microsoft.Compute/LowCostGet30Min;119972 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: GET - uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames/any(c:c%20eq%20'0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7') - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' - headers: - cache-control: - - no-cache - content-length: - - '92' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:12 GMT - odata-version: - - '4.0' - request-id: - - 4b54db15-65a5-4e66-80f7-899e8d9bc364 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002515"}}' - x-ms-resource-unit: - - '1' - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:12 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - ce836c61-cfb7-4f09-98ce-c53f792d551d - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002972"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Backup%20Reader%27&api-version=2018-01-01-preview - response: - body: - string: '{"value":[{"properties":{"roleName":"Disk Backup Reader","type":"BuiltInRole","description":"Provides - permission to backup vault to perform disk backup.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Compute/disks/read","Microsoft.Compute/disks/beginGetAccess/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T07:39:03.8394514Z","updatedOn":"2021-11-11T20:14:56.0178737Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","type":"Microsoft.Authorization/roleDefinitions","name":"3e5e47e6-65f7-47ef-90b5-e5dd4d455f24"}]}' - headers: - cache-control: - - no-cache - content-length: - - '738' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:12 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24", - "principalId": "0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7", "principalType": "ServicePrincipal"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '270' - Content-Type: - - application/json; charset=utf-8 - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleAssignments/0c7d146b-87cf-4812-accf-134b2f9029e9?api-version=2020-04-01-preview - response: - body: - string: '{"error":{"code":"RoleAssignmentExists","message":"The role assignment - already exists."}}' - headers: - cache-control: - - no-cache - content-length: - - '89' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:14 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1197' - status: - code: 409 - message: Conflict -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: GET - uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames/any(c:c%20eq%20'0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7') - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' - headers: - cache-control: - - no-cache - content-length: - - '92' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:15 GMT - odata-version: - - '4.0' - request-id: - - c3524bed-38df-4f26-904b-f1fe64f09c06 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF0000298C"}}' - x-ms-resource-unit: - - '1' - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:15 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 449635a1-a0a0-4e85-94d5-f27cf7dba0c3 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF000014E4"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview - response: - body: - string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:49.6216206Z","updatedOn":"2022-04-12T12:46:49.6216206Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/85cc2dff-c5d4-42a3-acb6-255cd4208ef4","type":"Microsoft.Authorization/roleAssignments","name":"85cc2dff-c5d4-42a3-acb6-255cd4208ef4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:57.1459341Z","updatedOn":"2022-04-12T12:46:57.1459341Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aba8e90d-d951-4cb5-a346-b71e478f4d1b","type":"Microsoft.Authorization/roleAssignments","name":"aba8e90d-d951-4cb5-a346-b71e478f4d1b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:28.3678603Z","updatedOn":"2022-04-12T13:09:28.3678603Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/79d87d90-f984-4f53-a169-2eca51c00104","type":"Microsoft.Authorization/roleAssignments","name":"79d87d90-f984-4f53-a169-2eca51c00104"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:33.3916295Z","updatedOn":"2022-04-12T13:09:33.3916295Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/5e185742-c91a-4efe-b0d8-db9524685ec5","type":"Microsoft.Authorization/roleAssignments","name":"5e185742-c91a-4efe-b0d8-db9524685ec5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:02.2689248Z","updatedOn":"2022-04-13T07:01:02.2689248Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c9b4f9ab-d687-4a65-910a-5bcb2f974bfe","type":"Microsoft.Authorization/roleAssignments","name":"c9b4f9ab-d687-4a65-910a-5bcb2f974bfe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:09.3571703Z","updatedOn":"2022-04-13T07:01:09.3571703Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/8bedf13c-aa1a-4191-aa97-573f14fd97ee","type":"Microsoft.Authorization/roleAssignments","name":"8bedf13c-aa1a-4191-aa97-573f14fd97ee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:04.6456354Z","updatedOn":"2022-04-13T07:43:04.6456354Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bd0fc30a-6ccf-4c22-a26b-0e31aba16035","type":"Microsoft.Authorization/roleAssignments","name":"bd0fc30a-6ccf-4c22-a26b-0e31aba16035"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:10.1186881Z","updatedOn":"2022-04-13T07:43:10.1186881Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0","type":"Microsoft.Authorization/roleAssignments","name":"dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:58:57.7706882Z","updatedOn":"2022-04-13T08:58:57.7706882Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9e3d10bf-9bfa-4a97-9ab1-b972a348abd0","type":"Microsoft.Authorization/roleAssignments","name":"9e3d10bf-9bfa-4a97-9ab1-b972a348abd0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:59:03.2414961Z","updatedOn":"2022-04-13T08:59:03.2414961Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/66eefd94-4bda-46df-9c61-7e92f83d91e7","type":"Microsoft.Authorization/roleAssignments","name":"66eefd94-4bda-46df-9c61-7e92f83d91e7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:35.8887781Z","updatedOn":"2022-04-13T10:17:35.8887781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/77f4f7a3-a377-49f7-a094-945b82b2bfff","type":"Microsoft.Authorization/roleAssignments","name":"77f4f7a3-a377-49f7-a094-945b82b2bfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:41.2233089Z","updatedOn":"2022-04-13T10:17:41.2233089Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1a71aac6-e9ce-40ff-a39f-7594df2ea6e9","type":"Microsoft.Authorization/roleAssignments","name":"1a71aac6-e9ce-40ff-a39f-7594df2ea6e9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:19.4532093Z","updatedOn":"2022-04-21T06:57:19.4532093Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/eede4548-9f71-44b7-8077-c49aa44894b4","type":"Microsoft.Authorization/roleAssignments","name":"eede4548-9f71-44b7-8077-c49aa44894b4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:24.3439247Z","updatedOn":"2022-04-21T06:57:24.3439247Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c011acd2-8b5d-45d6-b6c1-4ffe1867ce31","type":"Microsoft.Authorization/roleAssignments","name":"c011acd2-8b5d-45d6-b6c1-4ffe1867ce31"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:16.3194737Z","updatedOn":"2022-05-24T11:54:16.3194737Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleAssignments/c2d104aa-ee2c-4838-8e9a-8f2b34e7f9db","type":"Microsoft.Authorization/roleAssignments","name":"c2d104aa-ee2c-4838-8e9a-8f2b34e7f9db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:25.7258076Z","updatedOn":"2022-05-24T11:54:25.7258076Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9a7dc348-d24e-438b-84b0-c7cda5bf92c4","type":"Microsoft.Authorization/roleAssignments","name":"9a7dc348-d24e-438b-84b0-c7cda5bf92c4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:29.8931759Z","updatedOn":"2022-05-24T11:54:29.8931759Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aeb54d04-84b8-4530-bd7e-fe01dafd82ab","type":"Microsoft.Authorization/roleAssignments","name":"aeb54d04-84b8-4530-bd7e-fe01dafd82ab"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7c567124-5292-4819-aa73-0224bf1c42e1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-23T13:38:54.7542852Z","updatedOn":"2021-05-23T13:38:54.7542852Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0809d692-f58f-43f2-b597-7f115957407e","type":"Microsoft.Authorization/roleAssignments","name":"0809d692-f58f-43f2-b597-7f115957407e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"955c9d1b-0cb6-4ff6-91c9-f4aadf67ffe8","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:45:08.3835615Z","updatedOn":"2021-05-24T16:45:08.3835615Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1b1ac6ab-19e7-4c4f-91d2-5be73096da2c","type":"Microsoft.Authorization/roleAssignments","name":"1b1ac6ab-19e7-4c4f-91d2-5be73096da2c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7221c906-782c-44a0-ab2f-f23d8a95ce25","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:56:16.2751421Z","updatedOn":"2021-05-24T16:56:16.2751421Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/ca8f2433-76dc-49fa-828d-9cd2861ec25c","type":"Microsoft.Authorization/roleAssignments","name":"ca8f2433-76dc-49fa-828d-9cd2861ec25c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:53.5542743Z","updatedOn":"2021-06-04T06:40:53.5542743Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9d9ac2a8-dbac-41bb-9f17-c473f02c6370","type":"Microsoft.Authorization/roleAssignments","name":"9d9ac2a8-dbac-41bb-9f17-c473f02c6370"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:57.1326805Z","updatedOn":"2021-06-04T06:40:57.1326805Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/14b1338c-95f6-44f9-ad22-395f8ebbb1fe","type":"Microsoft.Authorization/roleAssignments","name":"14b1338c-95f6-44f9-ad22-395f8ebbb1fe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:18.2829699Z","updatedOn":"2021-06-04T07:02:18.2829699Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93","type":"Microsoft.Authorization/roleAssignments","name":"bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:22.4343547Z","updatedOn":"2021-06-04T07:02:22.4343547Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/26bab283-0772-4c03-8dc1-a50c8ffa597d","type":"Microsoft.Authorization/roleAssignments","name":"26bab283-0772-4c03-8dc1-a50c8ffa597d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:08.8293677Z","updatedOn":"2021-06-04T07:19:08.8293677Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/d972f611-a4bd-4b80-9e78-980984602450","type":"Microsoft.Authorization/roleAssignments","name":"d972f611-a4bd-4b80-9e78-980984602450"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:12.8400651Z","updatedOn":"2021-06-04T07:19:12.8400651Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/b9393755-f5ca-41ef-a631-fb62184c57a8","type":"Microsoft.Authorization/roleAssignments","name":"b9393755-f5ca-41ef-a631-fb62184c57a8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:15.2633798Z","updatedOn":"2021-06-04T09:14:15.2633798Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/094981c0-d59c-4f5b-9581-72c08da65454","type":"Microsoft.Authorization/roleAssignments","name":"094981c0-d59c-4f5b-9581-72c08da65454"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:19.9554484Z","updatedOn":"2021-06-04T09:14:19.9554484Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0cac59e0-0464-4bf6-9bef-f1fadc2b08f4","type":"Microsoft.Authorization/roleAssignments","name":"0cac59e0-0464-4bf6-9bef-f1fadc2b08f4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:52.6766200Z","updatedOn":"2021-08-30T06:31:52.6766200Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/f67c65e2-e609-4ffe-b504-294b00cbd2fd","type":"Microsoft.Authorization/roleAssignments","name":"f67c65e2-e609-4ffe-b504-294b00cbd2fd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:57.1552781Z","updatedOn":"2021-08-30T06:31:57.1552781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aaeab926-d6e2-4bb6-9e9e-0607e75cc75f","type":"Microsoft.Authorization/roleAssignments","name":"aaeab926-d6e2-4bb6-9e9e-0607e75cc75f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"2ab5fb95-b72e-4d12-948b-4223754d8ffa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-09-08T08:24:19.3547440Z","updatedOn":"2021-09-08T08:24:19.3547440Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/43ee13b8-5abd-51e0-88e3-ae84049da70e","type":"Microsoft.Authorization/roleAssignments","name":"43ee13b8-5abd-51e0-88e3-ae84049da70e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for - temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' - headers: - cache-control: - - no-cache - content-length: - - '85747' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:20 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Backup%20Reader%27&api-version=2018-01-01-preview - response: - body: - string: '{"value":[{"properties":{"roleName":"Disk Backup Reader","type":"BuiltInRole","description":"Provides - permission to backup vault to perform disk backup.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Compute/disks/read","Microsoft.Compute/disks/beginGetAccess/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T07:39:03.8394514Z","updatedOn":"2021-11-11T20:14:56.0178737Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","type":"Microsoft.Authorization/roleDefinitions","name":"3e5e47e6-65f7-47ef-90b5-e5dd4d455f24"}]}' - headers: - cache-control: - - no-cache - content-length: - - '738' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:20 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleDefinitions?api-version=2018-01-01-preview - response: - body: - string: "{\"value\":[{\"properties\":{\"roleName\":\"Avere Cluster Create\",\"type\":\"CustomRole\",\"description\":\"Avere - cluster create role used by the Avere controller to create a vFXT cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.Authorization/roleDefinitions/*\",\"Microsoft.Compute/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Network/*/read\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\",\"Microsoft.Storage/*/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-11-29T18:46:55.0492387Z\",\"updatedOn\":\"2018-11-29T18:46:55.0492387Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7b1b19a-0e83-4fe5-935c-faaefbfd18c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7b1b19a-0e83-4fe5-935c-faaefbfd18c3\"},{\"properties\":{\"roleName\":\"Avere - Cluster Runtime Operator\",\"type\":\"CustomRole\",\"description\":\"Avere - cluster runtime role used by Avere clusters running in subscriptions, for - the purpose of failing over IP addresses, accessing BLOB storage, etc\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/routes/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-26T00:41:26.2170858Z\",\"updatedOn\":\"2018-08-26T00:41:26.2170858Z\",\"createdBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\",\"updatedBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e078ab98-ef3a-4c9a-aba7-12f5172b45d0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e078ab98-ef3a-4c9a-aba7-12f5172b45d0\"},{\"properties\":{\"roleName\":\"Azure - Service Deploy Release Management Contributor\",\"type\":\"CustomRole\",\"description\":\"Contributor - role for services deploying through Azure Service Deploy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-02-04T02:26:31.5413362Z\",\"updatedOn\":\"2018-01-08T20:20:16.3660174Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21d96096-b162-414a-8302-d8354f9d91b2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21d96096-b162-414a-8302-d8354f9d91b2\"},{\"properties\":{\"roleName\":\"CAL-Custom-Role\",\"type\":\"CustomRole\",\"description\":\"Lets - SAP Cloud Appliance Library application manage Network and Compute services, - manage Resource Groups and Management locks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/locks/*\",\"Microsoft.Authorization/roleDefinitions/*\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.Compute/*\",\"Microsoft.Network/*\",\"Microsoft.Resources/*\",\"Microsoft.Storage/*\",\"Microsoft.ContainerService/*\",\"Microsoft.ContainerRegistry/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-05-14T19:30:51.0664585Z\",\"updatedOn\":\"2019-02-19T19:11:57.5963229Z\",\"createdBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\",\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7b266cd7-0bba-4ae2-8423-90ede5e1e898\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7b266cd7-0bba-4ae2-8423-90ede5e1e898\"},{\"properties\":{\"roleName\":\"Dsms - Role (deprecated)\",\"type\":\"CustomRole\",\"description\":\"Custom role - used by Dsms to perform operations. Can list and regnerate storage account - keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regenerateKey/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-17T18:02:11.1225951Z\",\"updatedOn\":\"2018-01-13T00:21:52.7211696Z\",\"createdBy\":\"ca5f3715-e7dd-427b-b2db-45b6a4a2df87\",\"updatedBy\":\"ca5f3715-e7dd-427b-b2db-45b6a4a2df87\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b91f4c0b-46e3-47bb-a242-eecfe23b3b5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b91f4c0b-46e3-47bb-a242-eecfe23b3b5b\"},{\"properties\":{\"roleName\":\"Dsms - Role (do not use)\",\"type\":\"CustomRole\",\"description\":\"Custom role - used by Dsms to perform operations. Can list and regnerate storage account - keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regenerateKey/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-02-01T07:56:12.5880222Z\",\"updatedOn\":\"2018-08-09T17:53:48.5432297Z\",\"createdBy\":\"becb4b6b-fe16-413b-a5c3-90355e0b2982\",\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7aff565e-6c55-448d-83db-ccf482c6da2f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7aff565e-6c55-448d-83db-ccf482c6da2f\"},{\"properties\":{\"roleName\":\"ExpressRoute - Administrator\",\"type\":\"CustomRole\",\"description\":\"Can create, delete - and manage ExpressRoutes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/locks/*\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.EventGrid/*\",\"Microsoft.Insights/*\",\"Microsoft.Network/*\",\"Microsoft.Resources/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-31T03:51:32.2843055Z\",\"updatedOn\":\"2019-03-20T22:55:18.8222085Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a48d7896-14b4-4889-afef-fbb65a96e5a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a48d7896-14b4-4889-afef-fbb65a96e5a2\"},{\"properties\":{\"roleName\":\"GenevaWarmPathResourceContributor\",\"type\":\"CustomRole\",\"description\":\"Can - manage service bus and storage accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/*\",\"Microsoft.Resources/subscriptions/resourceGroups/*\",\"Microsoft.ServiceBus/namespaces/*\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Storage/storageAccounts/managementPolicies/write\",\"Microsoft.Storage/storageAccounts/managementPolicies/read\",\"Microsoft.Storage/storageAccounts/managementPolicies/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-03-14T22:30:10.1999436Z\",\"updatedOn\":\"2022-02-28T23:26:40.0052537Z\",\"createdBy\":null,\"updatedBy\":\"acis\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9f15f5f5-77bd-413a-aa88-4b9c68b1e7bc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9f15f5f5-77bd-413a-aa88-4b9c68b1e7bc\"},{\"properties\":{\"roleName\":\"masterreader\",\"type\":\"CustomRole\",\"description\":\"Lets - you view everything, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-11-14T23:38:05.3353858Z\",\"updatedOn\":\"2017-11-14T23:38:05.3353858Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a48d7796-14b4-4889-afef-fbb65a93e5a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a48d7796-14b4-4889-afef-fbb65a93e5a2\"},{\"properties\":{\"roleName\":\"Microsoft - OneAsset Reader\",\"type\":\"CustomRole\",\"description\":\"This role is for - Microsoft OneAsset team (CSEO) to track internal security compliance and resource - utilization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-27T23:51:08.6333052Z\",\"updatedOn\":\"2019-04-02T20:35:43.3396263Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd1bb084-1503-4bd2-99c0-630220046786\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd1bb084-1503-4bd2-99c0-630220046786\"},{\"properties\":{\"roleName\":\"Office - DevOps\",\"type\":\"CustomRole\",\"description\":\"Custom access for developers - to operations but not secrets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachineScaleSets/restart/action\",\"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/restart/action\",\"Microsoft.Sql/servers/databases/replicationLinks/delete\",\"Microsoft.Sql/servers/databases/replicationLinks/failover/action\",\"Microsoft.Sql/servers/databases/replicationLinks/forceFailoverAllowDataLoss/action\",\"Microsoft.Sql/servers/databases/replicationLinks/operationResults/read\",\"Microsoft.Sql/servers/databases/replicationLinks/read\",\"Microsoft.Sql/servers/databases/replicationLinks/unlink/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-10-07T08:11:46.1639398Z\",\"updatedOn\":\"2017-03-16T18:43:08.3234306Z\",\"createdBy\":\"25aea6be-b605-4347-a92d-33e178e412ec\",\"updatedBy\":\"25aea6be-b605-4347-a92d-33e178e412ec\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7fd64851-3279-459b-b614-e2b2ba760f5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7fd64851-3279-459b-b614-e2b2ba760f5b\"},{\"properties\":{\"roleName\":\"GenevaWarmPathStorageBlobContributor\",\"type\":\"CustomRole\",\"description\":\"Geneva - Warm Path Storage Blob Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/lease/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/lock/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/extend/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete\",\"Microsoft.Storage/storageAccounts/managementPolicies/write\",\"Microsoft.Storage/storageAccounts/managementPolicies/read\",\"Microsoft.Storage/storageAccounts/managementPolicies/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-12-06T22:46:27.1365630Z\",\"updatedOn\":\"2022-02-28T23:26:40.4152515Z\",\"createdBy\":null,\"updatedBy\":\"acis\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a16c43ca-2d67-4dcd-9ded-6412f5edc51a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a16c43ca-2d67-4dcd-9ded-6412f5edc51a\"},{\"properties\":{\"roleName\":\"Azure - Service Deploy Release Management Restricted Owner\",\"type\":\"CustomRole\",\"description\":\"Restricted - owner role for services deploying through Azure Service Deploy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\"],\"dataActions\":[],\"notDataActions\":[]},{\"actions\":[\"Microsoft.Authorization/roleAssignments/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]},{\"actions\":[\"Microsoft.Authorization/locks/write\",\"Microsoft.Authorization/policyassignments/write\",\"Microsoft.Authorization/policydefinitions/write\",\"Microsoft.Authorization/policysetdefinitions/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-07T22:16:06.8803898Z\",\"updatedOn\":\"2022-03-07T22:16:06.8803898Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/94ddc4bc-25f5-4f3e-b527-c587da93cfe4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"94ddc4bc-25f5-4f3e-b527-c587da93cfe4\"},{\"properties\":{\"roleName\":\"AcrPush\",\"type\":\"BuiltInRole\",\"description\":\"acr - push\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/pull/read\",\"Microsoft.ContainerRegistry/registries/push/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-29T17:52:32.5201177Z\",\"updatedOn\":\"2021-11-11T20:13:07.4993029Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8311e382-0749-4cb8-b61a-304f252e45ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8311e382-0749-4cb8-b61a-304f252e45ec\"},{\"properties\":{\"roleName\":\"API - Management Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage service and the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8650193Z\",\"updatedOn\":\"2021-11-11T20:13:08.3179618Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/312a565d-c81f-4fd8-895a-4e21e48d571c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"312a565d-c81f-4fd8-895a-4e21e48d571c\"},{\"properties\":{\"roleName\":\"AcrPull\",\"type\":\"BuiltInRole\",\"description\":\"acr - pull\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/pull/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-22T19:01:56.8227182Z\",\"updatedOn\":\"2021-11-11T20:13:08.8779328Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f951dda-4ed3-4680-a7ca-43fe172d538d\"},{\"properties\":{\"roleName\":\"AcrImageSigner\",\"type\":\"BuiltInRole\",\"description\":\"acr - image signer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/sign/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/trustedCollections/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-15T23:23:08.4038322Z\",\"updatedOn\":\"2021-11-11T20:13:09.6070759Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6cef56e8-d556-48e5-a04f-b8e64114680f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6cef56e8-d556-48e5-a04f-b8e64114680f\"},{\"properties\":{\"roleName\":\"AcrDelete\",\"type\":\"BuiltInRole\",\"description\":\"acr - delete\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/artifacts/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-11T20:19:31.6682804Z\",\"updatedOn\":\"2021-11-11T20:13:09.9631744Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c2f4ef07-c644-48eb-af81-4b1b4947fb11\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c2f4ef07-c644-48eb-af81-4b1b4947fb11\"},{\"properties\":{\"roleName\":\"AcrQuarantineReader\",\"type\":\"BuiltInRole\",\"description\":\"acr - quarantine data reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/quarantine/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-16T00:27:39.9596835Z\",\"updatedOn\":\"2021-11-11T20:13:10.3188052Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cdda3590-29a3-44f6-95f2-9f980659eb04\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cdda3590-29a3-44f6-95f2-9f980659eb04\"},{\"properties\":{\"roleName\":\"AcrQuarantineWriter\",\"type\":\"BuiltInRole\",\"description\":\"acr - quarantine data writer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/quarantine/read\",\"Microsoft.ContainerRegistry/registries/quarantine/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/read\",\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-16T00:26:37.5871820Z\",\"updatedOn\":\"2021-11-11T20:13:11.3488079Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c8d4ff99-41c3-41a8-9f60-21dfdad59608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d4ff99-41c3-41a8-9f60-21dfdad59608\"},{\"properties\":{\"roleName\":\"API - Management Service Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage service but not the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/backup/action\",\"Microsoft.ApiManagement/service/delete\",\"Microsoft.ApiManagement/service/managedeployments/action\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.ApiManagement/service/restore/action\",\"Microsoft.ApiManagement/service/updatecertificate/action\",\"Microsoft.ApiManagement/service/updatehostname/action\",\"Microsoft.ApiManagement/service/write\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-11-09T00:03:42.1194019Z\",\"updatedOn\":\"2021-11-11T20:13:11.5244023Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e022efe7-f5ba-4159-bbe4-b44f577e9b61\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e022efe7-f5ba-4159-bbe4-b44f577e9b61\"},{\"properties\":{\"roleName\":\"API - Management Service Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - access to service and APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-11-09T00:26:45.1540473Z\",\"updatedOn\":\"2021-11-11T20:13:11.8704466Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/71522526-b88f-4d52-b57f-d31fc3546d0d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"71522526-b88f-4d52-b57f-d31fc3546d0d\"},{\"properties\":{\"roleName\":\"Application - Insights Component Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage Application Insights components\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/generateLiveToken/read\",\"Microsoft.Insights/metricAlerts/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.Insights/topology/read\",\"Microsoft.Insights/transactions/read\",\"Microsoft.Insights/webtests/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:12.6428401Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ae349356-3a1b-4a5e-921d-050484c6347e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ae349356-3a1b-4a5e-921d-050484c6347e\"},{\"properties\":{\"roleName\":\"Application - Insights Snapshot Debugger\",\"type\":\"BuiltInRole\",\"description\":\"Gives - user permission to use Application Insights Snapshot Debugger features\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T21:25:12.3728747Z\",\"updatedOn\":\"2021-11-11T20:13:13.0034435Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/08954f03-6346-4c2e-81c0-ec3a5cfae23b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"08954f03-6346-4c2e-81c0-ec3a5cfae23b\"},{\"properties\":{\"roleName\":\"Attestation - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read the attestation - provider properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Attestation/attestationProviders/attestation/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-25T19:42:59.1576710Z\",\"updatedOn\":\"2021-11-11T20:13:13.3634724Z\",\"createdBy\":null,\"updatedBy\":\"SYSTEM\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd1bd22b-8476-40bc-a0bc-69b95687b9f3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd1bd22b-8476-40bc-a0bc-69b95687b9f3\"},{\"properties\":{\"roleName\":\"Automation - Job Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create and Manage - Jobs using Automation Runbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T20:52:41.0020018Z\",\"updatedOn\":\"2021-11-11T20:13:13.7065660Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4fe576fe-1146-4730-92eb-48519fa6bf9f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fe576fe-1146-4730-92eb-48519fa6bf9f\"},{\"properties\":{\"roleName\":\"Automation - Runbook Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read Runbook - properties - to be able to create Jobs of the runbook.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T20:47:49.5640674Z\",\"updatedOn\":\"2021-11-11T20:13:13.8815461Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\"},{\"properties\":{\"roleName\":\"Automation - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Automation Operators - are able to start, stop, suspend, and resume jobs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobSchedules/read\",\"Microsoft.Automation/automationAccounts/jobSchedules/write\",\"Microsoft.Automation/automationAccounts/linkedWorkspace/read\",\"Microsoft.Automation/automationAccounts/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Automation/automationAccounts/schedules/read\",\"Microsoft.Automation/automationAccounts/schedules/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-08-18T01:05:03.3916130Z\",\"updatedOn\":\"2021-11-11T20:13:14.0515408Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d3881f73-407a-4167-8283-e981cbba0404\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d3881f73-407a-4167-8283-e981cbba0404\"},{\"properties\":{\"roleName\":\"Avere - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can create and manage - an Avere vFXT cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/proximityPlacementGroups/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/disks/*\",\"Microsoft.Network/*/read\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/*/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2019-03-18T20:00:58.9207889Z\",\"updatedOn\":\"2021-11-11T20:13:14.2265665Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4f8fab4f-1852-4a58-a46a-8eaf358af14a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4f8fab4f-1852-4a58-a46a-8eaf358af14a\"},{\"properties\":{\"roleName\":\"Avere - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Used by the Avere vFXT - cluster to manage the cluster\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2019-03-18T20:02:38.3399857Z\",\"updatedOn\":\"2021-11-11T20:13:15.1065886Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c025889f-8102-4ebf-b32c-fc0c6f0c6bd9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c025889f-8102-4ebf-b32c-fc0c6f0c6bd9\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Cluster Admin Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster admin credential action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action\",\"Microsoft.ContainerService/managedClusters/accessProfiles/listCredential/action\",\"Microsoft.ContainerService/managedClusters/read\",\"Microsoft.ContainerService/managedClusters/runcommand/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-15T21:38:18.5953853Z\",\"updatedOn\":\"2022-05-16T21:40:14.0457546Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0ab0b1a8-8aac-4efd-b8c2-3ee1fb270be8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0ab0b1a8-8aac-4efd-b8c2-3ee1fb270be8\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Cluster User Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster user credential action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\",\"Microsoft.ContainerService/managedClusters/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-15T22:04:53.4037241Z\",\"updatedOn\":\"2021-11-11T20:13:20.4351976Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4abbcc35-e782-43d8-92c5-2d3f1bd2253f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4abbcc35-e782-43d8-92c5-2d3f1bd2253f\"},{\"properties\":{\"roleName\":\"Azure - Maps Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants access - to read map related data from an Azure maps account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-10-05T19:47:03.4723070Z\",\"updatedOn\":\"2021-11-11T20:13:20.9582685Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/423170ca-a8f6-4b0f-8487-9e4eb8f49bfa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"423170ca-a8f6-4b0f-8487-9e4eb8f49bfa\"},{\"properties\":{\"roleName\":\"Azure - Stack Registration Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Azure Stack registrations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureStack/edgeSubscriptions/read\",\"Microsoft.AzureStack/registrations/products/*/action\",\"Microsoft.AzureStack/registrations/products/read\",\"Microsoft.AzureStack/registrations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-11-13T23:42:06.2161827Z\",\"updatedOn\":\"2021-11-11T20:13:23.2957820Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6f12a6df-dd06-4f3e-bcb1-ce8be600526a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6f12a6df-dd06-4f3e-bcb1-ce8be600526a\"},{\"properties\":{\"roleName\":\"Backup - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup - service,but can't create vaults and give access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupSecurityPIN/*\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/*\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/Vaults/usages/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectableContainers/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/locations/backupPreValidateProtection/action\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.Support/*\",\"Microsoft.DataProtection/locations/getBackupStatus/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/write\",\"Microsoft.DataProtection/backupVaults/backupInstances/delete\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/backup/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/validateRestore/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/restore/action\",\"Microsoft.DataProtection/backupVaults/backupPolicies/write\",\"Microsoft.DataProtection/backupVaults/backupPolicies/delete\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/write\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/locations/checkNameAvailability/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/backupVaults/validateForBackup/action\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:12:15.7321344Z\",\"updatedOn\":\"2021-11-11T20:13:24.3657611Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5e467623-bb1f-42f4-a55d-6e525e11384b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e467623-bb1f-42f4-a55d-6e525e11384b\"},{\"properties\":{\"roleName\":\"Billing - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows read access to - billing data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Billing/*/read\",\"Microsoft.Commerce/*/read\",\"Microsoft.Consumption/*/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.CostManagement/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-25T02:13:38.9054151Z\",\"updatedOn\":\"2021-11-11T20:13:24.5342563Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\"},{\"properties\":{\"roleName\":\"Backup - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup - services, except removal of backup, vault creation and giving access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/backup/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/provisionInstantItemRecovery/action\",\"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/accessToken/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/restore/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/revokeInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/write\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/write\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/backupTriggerValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperationsStatuses/read\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operations/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/inquire/action\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectableContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/items/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/locations/backupPreValidateProtection/action\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/locations/backupAadProperties/read\",\"Microsoft.RecoveryServices/locations/backupCrrJobs/action\",\"Microsoft.RecoveryServices/locations/backupCrrJob/action\",\"Microsoft.RecoveryServices/locations/backupCrossRegionRestore/action\",\"Microsoft.RecoveryServices/locations/backupCrrOperationResults/read\",\"Microsoft.RecoveryServices/locations/backupCrrOperationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.Support/*\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:21:11.8947640Z\",\"updatedOn\":\"2021-12-16T12:53:00.0624003Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00c29273-979b-4161-815c-10b084fb9324\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00c29273-979b-4161-815c-10b084fb9324\"},{\"properties\":{\"roleName\":\"Backup - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view backup services, - but can't make changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operations/read\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/items/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/locations/backupCrrJobs/action\",\"Microsoft.RecoveryServices/locations/backupCrrJob/action\",\"Microsoft.RecoveryServices/locations/backupCrrOperationResults/read\",\"Microsoft.RecoveryServices/locations/backupCrrOperationsStatus/read\",\"Microsoft.DataProtection/locations/getBackupStatus/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/write\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/backup/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/validateRestore/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/restore/action\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/backupVaults/validateForBackup/action\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:18:41.3893065Z\",\"updatedOn\":\"2021-11-11T20:13:24.8792711Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a795c7a0-d4a2-40c1-ae25-d81f01202912\"},{\"properties\":{\"roleName\":\"Blockchain - Member Node Access (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for access to Blockchain Member nodes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Blockchain/blockchainMembers/transactionNodes/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Blockchain/blockchainMembers/transactionNodes/connect/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T10:33:01.9604839Z\",\"updatedOn\":\"2021-11-11T20:13:25.0558920Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/31a002a1-acaf-453e-8a5b-297c9ca1ea24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"31a002a1-acaf-453e-8a5b-297c9ca1ea24\"},{\"properties\":{\"roleName\":\"BizTalk - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage BizTalk - services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BizTalkServices/BizTalk/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:25.2359269Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5e3c6656-6cfa-4708-81fe-0de47ac73342\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e3c6656-6cfa-4708-81fe-0de47ac73342\"},{\"properties\":{\"roleName\":\"CDN - Endpoint Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - CDN endpoints, but can\u2019t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:25.4059314Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/426e0c7f-0c7e-4658-b36f-ff54d6c29b45\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"426e0c7f-0c7e-4658-b36f-ff54d6c29b45\"},{\"properties\":{\"roleName\":\"CDN - Endpoint Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN - endpoints, but can\u2019t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*/read\",\"Microsoft.Cdn/profiles/afdendpoints/validateCustomDomain/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2022-01-26T19:51:29.2636610Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/871e35f6-b5c1-49cc-a043-bde969a0f2cd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"871e35f6-b5c1-49cc-a043-bde969a0f2cd\"},{\"properties\":{\"roleName\":\"CDN - Profile Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - CDN profiles and their endpoints, but can\u2019t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:25.9224344Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ec156ff8-a8d1-4d15-830c-5b80698ca432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ec156ff8-a8d1-4d15-830c-5b80698ca432\"},{\"properties\":{\"roleName\":\"CDN - Profile Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN profiles - and their endpoints, but can\u2019t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:26.0983652Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8f96442b-4075-438f-813d-ad51ab4019af\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f96442b-4075-438f-813d-ad51ab4019af\"},{\"properties\":{\"roleName\":\"Classic - Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage classic networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:26.4433301Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b34d265f-36f7-4a0d-a4d4-e158ca92e90f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b34d265f-36f7-4a0d-a4d4-e158ca92e90f\"},{\"properties\":{\"roleName\":\"Classic - Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage classic storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:26.6183566Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/86e8f5dc-a6e9-4c67-9d15-de283e8eac25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86e8f5dc-a6e9-4c67-9d15-de283e8eac25\"},{\"properties\":{\"roleName\":\"Classic - Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Classic - Storage Account Key Operators are allowed to list and regenerate keys on Classic - Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listkeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-13T18:22:52.1461100Z\",\"updatedOn\":\"2021-11-11T20:13:26.9796021Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/985d6b00-f706-48f5-a6fe-d0ca12fb668d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"985d6b00-f706-48f5-a6fe-d0ca12fb668d\"},{\"properties\":{\"roleName\":\"ClearDB - MySQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage ClearDB MySQL databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"successbricks.cleardb/databases/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:27.1646373Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9106cda0-8a86-4e81-b686-29a22c54effe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9106cda0-8a86-4e81-b686-29a22c54effe\"},{\"properties\":{\"roleName\":\"Classic - Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage classic virtual machines, but not access to them, and not the virtual - network or storage account they\u2019re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/domainNames/*\",\"Microsoft.ClassicCompute/virtualMachines/*\",\"Microsoft.ClassicNetwork/networkSecurityGroups/join/action\",\"Microsoft.ClassicNetwork/reservedIps/link/action\",\"Microsoft.ClassicNetwork/reservedIps/read\",\"Microsoft.ClassicNetwork/virtualNetworks/join/action\",\"Microsoft.ClassicNetwork/virtualNetworks/read\",\"Microsoft.ClassicStorage/storageAccounts/disks/read\",\"Microsoft.ClassicStorage/storageAccounts/images/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-04-25T00:37:56.5416086Z\",\"updatedOn\":\"2021-11-11T20:13:27.3446332Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d73bb868-a0df-4d4d-bd69-98a00b01fccb\"},{\"properties\":{\"roleName\":\"Cognitive - Services User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read and - list keys of Cognitive Services.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Insights/logDefinitions/read\",\"Microsoft.Insights/metricdefinitions/read\",\"Microsoft.Insights/metrics/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-08T23:23:43.7701274Z\",\"updatedOn\":\"2021-11-11T20:13:27.5316443Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a97b65f3-24c7-4388-baec-2e87135dc908\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a97b65f3-24c7-4388-baec-2e87135dc908\"},{\"properties\":{\"roleName\":\"Cognitive - Services Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read Cognitive Services data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-02-13T20:02:12.6849986Z\",\"updatedOn\":\"2021-11-11T20:13:27.7138054Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b59867f0-fa02-499b-be73-45a86b5b3e1c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b59867f0-fa02-499b-be73-45a86b5b3e1c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - create, read, update, delete and manage keys of Cognitive Services.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.CognitiveServices/*\",\"Microsoft.Features/features/read\",\"Microsoft.Features/providers/features/read\",\"Microsoft.Features/providers/features/register/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logDefinitions/read\",\"Microsoft.Insights/metricdefinitions/read\",\"Microsoft.Insights/metrics/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-08T23:18:39.2257848Z\",\"updatedOn\":\"2021-11-11T20:13:27.9116230Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68\"},{\"properties\":{\"roleName\":\"CosmosBackupOperator\",\"type\":\"BuiltInRole\",\"description\":\"Can - submit restore request for a Cosmos DB database or a container for an account\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDB/databaseAccounts/backup/action\",\"Microsoft.DocumentDB/databaseAccounts/restore/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-12-07T19:47:14.9651560Z\",\"updatedOn\":\"2021-11-11T20:13:28.4333692Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/db7b14f2-5adf-42da-9f96-f2ee17bab5cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"db7b14f2-5adf-42da-9f96-f2ee17bab5cb\"},{\"properties\":{\"roleName\":\"Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to manage all resources, but does not allow you to assign roles - in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\",\"Microsoft.Authorization/elevateAccess/Action\",\"Microsoft.Blueprint/blueprintAssignments/write\",\"Microsoft.Blueprint/blueprintAssignments/delete\",\"Microsoft.Compute/galleries/share/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:28.6061853Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b24988ac-6180-42a0-ab88-20f7382dd24c\"},{\"properties\":{\"roleName\":\"Cosmos - DB Account Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Can read - Azure Cosmos DB Accounts data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDB/*/read\",\"Microsoft.DocumentDB/databaseAccounts/readonlykeys/action\",\"Microsoft.Insights/MetricDefinitions/read\",\"Microsoft.Insights/Metrics/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-10-30T17:53:54.6005577Z\",\"updatedOn\":\"2021-11-11T20:13:28.7911765Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fbdf93bf-df7d-467e-a4d2-9458aa1360c8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fbdf93bf-df7d-467e-a4d2-9458aa1360c8\"},{\"properties\":{\"roleName\":\"Cost - Management Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can view - costs and manage cost configuration (e.g. budgets, exports)\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Consumption/*\",\"Microsoft.CostManagement/*\",\"Microsoft.Billing/billingPeriods/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Advisor/configurations/read\",\"Microsoft.Advisor/recommendations/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Billing/billingProperty/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-14T16:09:22.8834827Z\",\"updatedOn\":\"2021-11-11T20:13:29.4851851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/434105ed-43f6-45c7-a02f-909b2ba83430\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"434105ed-43f6-45c7-a02f-909b2ba83430\"},{\"properties\":{\"roleName\":\"Cost - Management Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view cost - data and configuration (e.g. budgets, exports)\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Consumption/*/read\",\"Microsoft.CostManagement/*/read\",\"Microsoft.Billing/billingPeriods/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Advisor/configurations/read\",\"Microsoft.Advisor/recommendations/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Billing/billingProperty/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-14T16:09:22.8834827Z\",\"updatedOn\":\"2021-11-11T20:13:29.6601800Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/72fafb9e-0641-4937-9268-a91bfd8191a3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"72fafb9e-0641-4937-9268-a91bfd8191a3\"},{\"properties\":{\"roleName\":\"Data - Box Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - everything under Data Box Service except giving access to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Databox/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T08:28:42.7140210Z\",\"updatedOn\":\"2021-11-11T20:13:30.3737856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/add466c9-e687-43fc-8d98-dfcf8d720be5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"add466c9-e687-43fc-8d98-dfcf8d720be5\"},{\"properties\":{\"roleName\":\"Data - Box Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Data - Box Service except creating order or editing order details and giving access - to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Databox/*/read\",\"Microsoft.Databox/jobs/listsecrets/action\",\"Microsoft.Databox/jobs/listcredentials/action\",\"Microsoft.Databox/locations/availableSkus/action\",\"Microsoft.Databox/locations/validateInputs/action\",\"Microsoft.Databox/locations/regionConfiguration/action\",\"Microsoft.Databox/locations/validateAddress/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T08:26:21.9284772Z\",\"updatedOn\":\"2021-11-11T20:13:30.5546117Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/028f4ed7-e2a9-465e-a8f4-9c0ffdfdc027\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"028f4ed7-e2a9-465e-a8f4-9c0ffdfdc027\"},{\"properties\":{\"roleName\":\"Data - Factory Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create and - manage data factories, as well as child resources within them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DataFactory/dataFactories/*\",\"Microsoft.DataFactory/factories/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.EventGrid/eventSubscriptions/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:30.7420174Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/673868aa-7521-48a0-acc6-0f60742d39f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"673868aa-7521-48a0-acc6-0f60742d39f5\"},{\"properties\":{\"roleName\":\"Data - Purger\",\"type\":\"BuiltInRole\",\"description\":\"Can purge analytics data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/components/*/read\",\"Microsoft.Insights/components/purge/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/purge/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-04-30T22:39:49.6167700Z\",\"updatedOn\":\"2021-11-11T20:13:31.2788395Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/150f5e0c-0603-4f03-8c7f-cf70034c4e90\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"150f5e0c-0603-4f03-8c7f-cf70034c4e90\"},{\"properties\":{\"roleName\":\"Data - Lake Analytics Developer\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you submit, monitor, and manage your own jobs but not create or delete Data - Lake Analytics accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BigAnalytics/accounts/*\",\"Microsoft.DataLakeAnalytics/accounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.BigAnalytics/accounts/Delete\",\"Microsoft.BigAnalytics/accounts/TakeOwnership/action\",\"Microsoft.BigAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/TakeOwnership/action\",\"Microsoft.DataLakeAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Write\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Delete\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Write\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-20T00:33:29.3115234Z\",\"updatedOn\":\"2021-11-11T20:13:31.4688491Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/47b7735b-770e-4598-a7da-8b91488b4c88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"47b7735b-770e-4598-a7da-8b91488b4c88\"},{\"properties\":{\"roleName\":\"DevTest - Labs User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you connect, start, - restart, and shutdown your virtual machines in your Azure DevTest Labs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.Compute/virtualMachines/deallocate/action\",\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Compute/virtualMachines/restart/action\",\"Microsoft.Compute/virtualMachines/start/action\",\"Microsoft.DevTestLab/*/read\",\"Microsoft.DevTestLab/labs/claimAnyVm/action\",\"Microsoft.DevTestLab/labs/createEnvironment/action\",\"Microsoft.DevTestLab/labs/ensureCurrentUserProfile/action\",\"Microsoft.DevTestLab/labs/formulas/delete\",\"Microsoft.DevTestLab/labs/formulas/read\",\"Microsoft.DevTestLab/labs/formulas/write\",\"Microsoft.DevTestLab/labs/policySets/evaluatePolicies/action\",\"Microsoft.DevTestLab/labs/virtualMachines/claim/action\",\"Microsoft.DevTestLab/labs/virtualmachines/listApplicableSchedules/action\",\"Microsoft.DevTestLab/labs/virtualMachines/getRdpFileContents/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/networkInterfaces/*/read\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/publicIPAddresses/*/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[\"Microsoft.Compute/virtualMachines/vmSizes/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-08T21:52:45.0657582Z\",\"updatedOn\":\"2021-11-11T20:13:32.1746507Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/76283e04-6283-4c54-8f91-bcf1374a3c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76283e04-6283-4c54-8f91-bcf1374a3c64\"},{\"properties\":{\"roleName\":\"DocumentDB - Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage DocumentDB accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:32.3496502Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5bd9cd88-fe45-4216-938b-f97437e15450\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5bd9cd88-fe45-4216-938b-f97437e15450\"},{\"properties\":{\"roleName\":\"DNS - Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - DNS zones and record sets in Azure DNS, but does not let you control who has - access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/dnsZones/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2021-11-11T20:13:32.5233957Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"befefa01-2a29-4197-83a8-272ff33ce314\"},{\"properties\":{\"roleName\":\"EventGrid - EventSubscription Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage EventGrid event subscription operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/eventSubscriptions/*\",\"Microsoft.EventGrid/topicTypes/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-08T23:27:28.3130743Z\",\"updatedOn\":\"2021-11-11T20:13:33.4166738Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/428e0ff0-5e57-4d9c-a221-2c70d0e0a443\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"428e0ff0-5e57-4d9c-a221-2c70d0e0a443\"},{\"properties\":{\"roleName\":\"EventGrid - EventSubscription Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read EventGrid event subscriptions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/eventSubscriptions/read\",\"Microsoft.EventGrid/topicTypes/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-09T17:29:28.1417894Z\",\"updatedOn\":\"2021-11-11T20:13:33.7846748Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2414bbcf-6497-4faf-8c65-045460748405\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2414bbcf-6497-4faf-8c65-045460748405\"},{\"properties\":{\"roleName\":\"Graph - Owner\",\"type\":\"BuiltInRole\",\"description\":\"Create and manage all aspects - of the Enterprise Graph - Ontology, Schema mapping, Conflation and Conversational - AI and Ingestions\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EnterpriseKnowledgeGraph/services/conflation/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/conflation/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/sourceschema/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/sourceschema/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/intentclassification/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/intentclassification/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/ingestion/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/ingestion/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/ontology/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/ontology/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/delete\",\"Microsoft.EnterpriseKnowledgeGraph/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-02-23T21:07:22.5844236Z\",\"updatedOn\":\"2021-11-11T20:13:34.6707886Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b60367af-1334-4454-b71e-769d9a4f83d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b60367af-1334-4454-b71e-769d9a4f83d9\"},{\"properties\":{\"roleName\":\"HDInsight - Domain Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - Read, Create, Modify and Delete Domain Services related operations needed - for HDInsight Enterprise Security Package\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AAD/*/read\",\"Microsoft.AAD/domainServices/*/read\",\"Microsoft.AAD/domainServices/oucontainer/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-09-12T22:42:51.7451109Z\",\"updatedOn\":\"2021-11-11T20:13:35.3921342Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8d8d5a11-05d3-4bda-a417-a08778121c7c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8d8d5a11-05d3-4bda-a417-a08778121c7c\"},{\"properties\":{\"roleName\":\"Intelligent - Systems Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Intelligent Systems accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.IntelligentSystems/accounts/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:35.9371582Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/03a6d094-3444-4b3d-88af-7477090a9e5e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"03a6d094-3444-4b3d-88af-7477090a9e5e\"},{\"properties\":{\"roleName\":\"Key - Vault Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - key vaults, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.KeyVault/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.KeyVault/locations/deletedVaults/purge/action\",\"Microsoft.KeyVault/hsmPools/*\",\"Microsoft.KeyVault/managedHsms/*\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-02-25T17:08:28.5184971Z\",\"updatedOn\":\"2021-11-11T20:13:36.1170988Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f25e0fa2-a7c8-4377-a976-54943a77a395\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f25e0fa2-a7c8-4377-a976-54943a77a395\"},{\"properties\":{\"roleName\":\"Knowledge - Consumer\",\"type\":\"BuiltInRole\",\"description\":\"Knowledge Read permission - to consume Enterprise Graph Knowledge using entity search and graph query\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-02-23T21:23:31.4037552Z\",\"updatedOn\":\"2021-11-11T20:13:37.0021342Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ee361c5d-f7b5-4119-b4b6-892157c8f64c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ee361c5d-f7b5-4119-b4b6-892157c8f64c\"},{\"properties\":{\"roleName\":\"Lab - Creator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create new labs - under your Azure Lab Accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.LabServices/labAccounts/*/read\",\"Microsoft.LabServices/labAccounts/createLab/action\",\"Microsoft.LabServices/labAccounts/getPricingAndAvailability/action\",\"Microsoft.LabServices/labAccounts/getRestrictionsAndUsage/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-01-18T23:38:58.1036141Z\",\"updatedOn\":\"2021-11-11T20:13:37.1821588Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\"},{\"properties\":{\"roleName\":\"Log - Analytics Reader\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics - Reader can view and search all monitoring data as well as and view monitoring - settings, including viewing the configuration of Azure diagnostics on all - Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.OperationalInsights/workspaces/sharedKeys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-02T00:20:28.1449012Z\",\"updatedOn\":\"2021-11-11T20:13:37.7071371Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/73c42c96-874c-492b-b04d-ab87d138a893\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"73c42c96-874c-492b-b04d-ab87d138a893\"},{\"properties\":{\"roleName\":\"Log - Analytics Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics - Contributor can read all monitoring data and edit monitoring settings. Editing - monitoring settings includes adding the VM extension to VMs; reading storage - account keys to be able to configure collection of logs from Azure Storage; - adding solutions; and configuring Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.ClassicCompute/virtualMachines/extensions/*\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.Compute/virtualMachines/extensions/*\",\"Microsoft.HybridCompute/machines/extensions/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/*\",\"Microsoft.OperationsManagement/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-25T21:51:45.3174711Z\",\"updatedOn\":\"2021-11-11T20:13:37.8823618Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"92aaf0da-9dab-42b6-94a3-d43ce8d16293\"},{\"properties\":{\"roleName\":\"Logic - App Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read, enable - and disable logic app.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*/read\",\"Microsoft.Insights/metricAlerts/*/read\",\"Microsoft.Insights/diagnosticSettings/*/read\",\"Microsoft.Insights/metricDefinitions/*/read\",\"Microsoft.Logic/*/read\",\"Microsoft.Logic/workflows/disable/action\",\"Microsoft.Logic/workflows/enable/action\",\"Microsoft.Logic/workflows/validate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*/read\",\"Microsoft.Web/connections/*/read\",\"Microsoft.Web/customApis/*/read\",\"Microsoft.Web/serverFarms/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2021-11-11T20:13:38.0573444Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\"},{\"properties\":{\"roleName\":\"Logic - App Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - logic app, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metricAlerts/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logdefinitions/*\",\"Microsoft.Insights/metricDefinitions/*\",\"Microsoft.Logic/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*\",\"Microsoft.Web/connections/*\",\"Microsoft.Web/customApis/*\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/functions/listSecrets/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2021-11-11T20:13:38.2523833Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/87a39d53-fc1b-424a-814c-f7e04687dc9e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"87a39d53-fc1b-424a-814c-f7e04687dc9e\"},{\"properties\":{\"roleName\":\"Managed - Application Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read and perform actions on Managed Application resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Solutions/applications/read\",\"Microsoft.Solutions/*/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T00:59:33.7988813Z\",\"updatedOn\":\"2021-11-11T20:13:38.5973763Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c7393b34-138c-406f-901b-d8cf2b17e6ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c7393b34-138c-406f-901b-d8cf2b17e6ae\"},{\"properties\":{\"roleName\":\"Managed - Applications Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - read resources in a managed app and request JIT access.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Solutions/jitRequests/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-09-06T00:33:58.3651522Z\",\"updatedOn\":\"2021-11-11T20:13:38.7723523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b9331d33-8a36-4f8c-b097-4f54124fdb44\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b9331d33-8a36-4f8c-b097-4f54124fdb44\"},{\"properties\":{\"roleName\":\"Managed - Identity Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and Assign - User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-12-14T19:52:04.3924594Z\",\"updatedOn\":\"2021-11-11T20:13:38.9523759Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f1a07417-d97a-45cb-824c-7a7467783830\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f1a07417-d97a-45cb-824c-7a7467783830\"},{\"properties\":{\"roleName\":\"Managed - Identity Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, - Read, Update, and Delete User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/write\",\"Microsoft.ManagedIdentity/userAssignedIdentities/delete\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-12-14T19:53:42.8804692Z\",\"updatedOn\":\"2021-11-11T20:13:39.3023761Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\"},{\"properties\":{\"roleName\":\"Management - Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Management - Group Contributor Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/delete\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/delete\",\"Microsoft.Management/managementGroups/subscriptions/write\",\"Microsoft.Management/managementGroups/write\",\"Microsoft.Management/managementGroups/subscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-06-22T00:28:29.0523964Z\",\"updatedOn\":\"2021-11-11T20:13:39.6573851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\"},{\"properties\":{\"roleName\":\"Management - Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Management Group - Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-06-22T00:31:03.4295347Z\",\"updatedOn\":\"2021-11-11T20:13:39.8274007Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ac63b705-f282-497d-ac71-919bf39d939d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ac63b705-f282-497d-ac71-919bf39d939d\"},{\"properties\":{\"roleName\":\"Monitoring - Metrics Publisher\",\"type\":\"BuiltInRole\",\"description\":\"Enables publishing - metrics against Azure resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/Register/Action\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Insights/Metrics/Write\",\"Microsoft.Insights/Telemetry/Write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-14T00:36:16.5610279Z\",\"updatedOn\":\"2022-01-04T00:38:04.0289073Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3913510d-42f4-4e42-8a64-420c390055eb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3913510d-42f4-4e42-8a64-420c390055eb\"},{\"properties\":{\"roleName\":\"Monitoring - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-09-21T19:19:52.4939376Z\",\"updatedOn\":\"2021-11-11T20:13:44.4578442Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/43d0d8ad-25c7-4714-9337-8ba259a9fe05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"43d0d8ad-25c7-4714-9337-8ba259a9fe05\"},{\"properties\":{\"roleName\":\"Network - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage networks, - but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:44.6328966Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4d97b98b-1d4f-4787-a291-c67834d212e7\"},{\"properties\":{\"roleName\":\"Monitoring - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring - data and update monitoring settings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.AlertsManagement/alerts/*\",\"Microsoft.AlertsManagement/alertsSummary/*\",\"Microsoft.Insights/actiongroups/*\",\"Microsoft.Insights/activityLogAlerts/*\",\"Microsoft.Insights/AlertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/createNotifications/*\",\"Microsoft.Insights/dataCollectionEndpoints/*\",\"Microsoft.Insights/dataCollectionRules/*\",\"Microsoft.Insights/dataCollectionRuleAssociations/*\",\"Microsoft.Insights/DiagnosticSettings/*\",\"Microsoft.Insights/eventtypes/*\",\"Microsoft.Insights/LogDefinitions/*\",\"Microsoft.Insights/metricalerts/*\",\"Microsoft.Insights/MetricDefinitions/*\",\"Microsoft.Insights/Metrics/*\",\"Microsoft.Insights/notificationStatus/*\",\"Microsoft.Insights/Register/Action\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.Insights/webtests/*\",\"Microsoft.Insights/workbooks/*\",\"Microsoft.Insights/workbooktemplates/*\",\"Microsoft.Insights/privateLinkScopes/*\",\"Microsoft.Insights/privateLinkScopeOperationStatuses/*\",\"Microsoft.OperationalInsights/workspaces/write\",\"Microsoft.OperationalInsights/workspaces/intelligencepacks/*\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\",\"Microsoft.OperationalInsights/workspaces/storageinsightconfigs/*\",\"Microsoft.Support/*\",\"Microsoft.WorkloadMonitor/monitors/*\",\"Microsoft.AlertsManagement/smartDetectorAlertRules/*\",\"Microsoft.AlertsManagement/actionRules/*\",\"Microsoft.AlertsManagement/smartGroups/*\",\"Microsoft.AlertsManagement/migrateFromSmartDetection/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-09-21T19:21:08.4345976Z\",\"updatedOn\":\"2022-03-11T00:34:18.2670392Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749f88d5-cbae-40b8-bcfc-e573ddc772fa\"},{\"properties\":{\"roleName\":\"New - Relic APM Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage New Relic Application Performance Management accounts and applications, - but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"NewRelic.APM/accounts/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:45.7178576Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d28c62d-5b37-4476-8438-e587778df237\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d28c62d-5b37-4476-8438-e587778df237\"},{\"properties\":{\"roleName\":\"Owner\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to manage all resources, including the ability to assign roles - in Azure RBAC.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:45.8978856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"},{\"properties\":{\"roleName\":\"Reader\",\"type\":\"BuiltInRole\",\"description\":\"View - all resources, but does not allow you to make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:47.8628684Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"acdd72a7-3385-48ef-bd42-f606fba81ae7\"},{\"properties\":{\"roleName\":\"Redis - Cache Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - Redis caches, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cache/register/action\",\"Microsoft.Cache/redis/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:48.0528671Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e0f68234-74aa-48ed-b826-c38b57376e17\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e0f68234-74aa-48ed-b826-c38b57376e17\"},{\"properties\":{\"roleName\":\"Reader - and Data Access\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view - everything but will not let you delete or create a storage account or contained - resource. It will also allow read/write access to all data contained in a - storage account via access to storage account keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/ListAccountSas/action\",\"Microsoft.Storage/storageAccounts/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-27T23:20:46.1498906Z\",\"updatedOn\":\"2021-11-11T20:13:48.2278951Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c12c1c16-33a1-487b-954d-41c89c60f349\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c12c1c16-33a1-487b-954d-41c89c60f349\"},{\"properties\":{\"roleName\":\"Resource - Policy Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Users with - rights to create/modify resource policy, create support ticket and read resources/hierarchy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/policyassignments/*\",\"Microsoft.Authorization/policydefinitions/*\",\"Microsoft.Authorization/policyexemptions/*\",\"Microsoft.Authorization/policysetdefinitions/*\",\"Microsoft.PolicyInsights/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-08-25T19:08:01.3861639Z\",\"updatedOn\":\"2021-11-11T20:13:49.6679217Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"36243c78-bf99-498c-9df9-86d9f8d28608\"},{\"properties\":{\"roleName\":\"Scheduler - Job Collections Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Scheduler job collections, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Scheduler/jobcollections/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:49.8429293Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/188a0f2f-5c9e-469b-ae67-2aa5ce574b94\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"188a0f2f-5c9e-469b-ae67-2aa5ce574b94\"},{\"properties\":{\"roleName\":\"Search - Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Search services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Search/searchServices/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:50.0229309Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7ca78c08-252a-4471-8644-bb5ff32d4ba0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ca78c08-252a-4471-8644-bb5ff32d4ba0\"},{\"properties\":{\"roleName\":\"Security - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Security Admin Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/policyExemptions/*\",\"Microsoft.Authorization/policySetDefinitions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.IoTSecurity/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-03T07:51:23.0917487Z\",\"updatedOn\":\"2021-11-15T06:42:49.8263550Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fb1c8493-542b-48eb-b624-b4c8fea62acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb1c8493-542b-48eb-b624-b4c8fea62acd\"},{\"properties\":{\"roleName\":\"Security - Manager (Legacy)\",\"type\":\"BuiltInRole\",\"description\":\"This is a legacy - role. Please use Security Administrator instead\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/*/read\",\"Microsoft.ClassicCompute/virtualMachines/*/write\",\"Microsoft.ClassicNetwork/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-22T17:45:15.8986455Z\",\"updatedOn\":\"2021-11-11T20:13:50.5729549Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e3d13bf0-dd5a-482e-ba6b-9b8433878d10\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e3d13bf0-dd5a-482e-ba6b-9b8433878d10\"},{\"properties\":{\"roleName\":\"Security - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Security Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\",\"Microsoft.IoTSecurity/*/read\",\"Microsoft.Support/*/read\",\"Microsoft.Security/iotDefenderSettings/packageDownloads/action\",\"Microsoft.Security/iotDefenderSettings/downloadManagerActivation/action\",\"Microsoft.Security/iotSensors/downloadResetPassword/action\",\"Microsoft.IoTSecurity/defenderSettings/packageDownloads/action\",\"Microsoft.IoTSecurity/defenderSettings/downloadManagerActivation/action\",\"Microsoft.Management/managementGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-03T07:48:49.0516559Z\",\"updatedOn\":\"2021-11-11T20:13:50.7479015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/39bc4728-0917-49c7-9d2c-d95423bc2eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"39bc4728-0917-49c7-9d2c-d95423bc2eb4\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage spatial anchors in your account, but not delete them\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/create/action\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:41.1420864Z\",\"updatedOn\":\"2021-11-11T20:13:52.2829400Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8bbe83f1-e2a6-4df7-8cb4-4e04d4e5c827\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8bbe83f1-e2a6-4df7-8cb4-4e04d4e5c827\"},{\"properties\":{\"roleName\":\"Site - Recovery Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Site Recovery service except vault creation and role assignment\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/*\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/*\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/*\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/*\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/*\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/vaults/replicationOperationStatus/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:46:17.4592776Z\",\"updatedOn\":\"2021-11-11T20:13:52.4579503Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6670b86e-a3f7-4917-ac9b-5d6ab1be4567\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6670b86e-a3f7-4917-ac9b-5d6ab1be4567\"},{\"properties\":{\"roleName\":\"Site - Recovery Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you failover - and failback but not perform other Site Recovery management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/checkConsistency/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/reassociateGateway/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/renewcertificate/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/applyRecoveryPoint/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/repairReplication/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/switchprotection/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/updateMobilityService/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/refreshProvider/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:47:50.1341148Z\",\"updatedOn\":\"2021-11-11T20:13:52.6263418Z\",\"createdBy\":null,\"updatedBy\":\"\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/494ae006-db33-4328-bf46-533a6560a3ca\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494ae006-db33-4328-bf46-533a6560a3ca\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - locate and read properties of spatial anchors in your account\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:42.9271004Z\",\"updatedOn\":\"2021-11-11T20:13:52.8013467Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d51204f-eb77-4b1c-b86a-2ec626c49413\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d51204f-eb77-4b1c-b86a-2ec626c49413\"},{\"properties\":{\"roleName\":\"Site - Recovery Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view - Site Recovery status but not perform other management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/read\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:35:40.0093634Z\",\"updatedOn\":\"2021-11-11T20:13:52.9763366Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dbaa88c4-0c30-4179-9fb3-46319faa6149\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dbaa88c4-0c30-4179-9fb3-46319faa6149\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage spatial anchors in your account, including deleting them\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/create/action\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/delete\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:43.5489832Z\",\"updatedOn\":\"2021-11-11T20:13:53.1663250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/70bbe301-9835-447d-afdd-19eb3167307c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"70bbe301-9835-447d-afdd-19eb3167307c\"},{\"properties\":{\"roleName\":\"SQL - Managed Instance Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage SQL Managed Instances and required network configuration, but can\u2019t - give access to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Network/networkSecurityGroups/*\",\"Microsoft.Network/routeTables/*\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/locations/instanceFailoverGroups/*\",\"Microsoft.Sql/managedInstances/*\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/*\",\"Microsoft.Network/virtualNetworks/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/delete\",\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-12-10T22:57:14.2937983Z\",\"updatedOn\":\"2021-11-11T20:13:53.3513507Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4939a1f6-9ae0-4e48-a1e0-f2cbe897382d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4939a1f6-9ae0-4e48-a1e0-f2cbe897382d\"},{\"properties\":{\"roleName\":\"SQL - DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - SQL databases, but not access to them. Also, you can't manage their security-related - policies or their parent SQL servers.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/databases/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/servers/databases/ledgerDigestUploads/write\",\"Microsoft.Sql/servers/databases/ledgerDigestUploads/disable/action\",\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:53.5363219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\"},{\"properties\":{\"roleName\":\"SQL - Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - the security-related policies of SQL servers and databases, but not access - to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/administratorAzureAsyncOperation/read\",\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/transparentDataEncryption/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/read\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/read\",\"Microsoft.Sql/servers/databases/read\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/read\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/transparentDataEncryption/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/devOpsAuditingSettings/*\",\"Microsoft.Sql/servers/firewallRules/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\",\"Microsoft.Support/*\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/*\",\"Microsoft.Sql/managedInstances/read\",\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/*\",\"Microsoft.Security/sqlVulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/administrators/read\",\"Microsoft.Sql/servers/administrators/read\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-16T18:44:40.4607572Z\",\"updatedOn\":\"2022-04-27T21:08:08.4474437Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/056cd41c-7e88-42e1-933e-88ba6a50c9c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"056cd41c-7e88-42e1-933e-88ba6a50c9c3\"},{\"properties\":{\"roleName\":\"Storage - Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage storage accounts, including accessing storage account keys which provide - full access to storage account data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:54.2363539Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"17d1049b-9a84-46fb-8f53-869881c3d3ab\"},{\"properties\":{\"roleName\":\"SQL - Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - SQL servers and databases, but not access to them, and not their security - -related policies.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/*\",\"Microsoft.Support/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/devOpsAuditingSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/delete\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/write\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/delete\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2022-04-28T19:00:53.9963035Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\"},{\"properties\":{\"roleName\":\"Storage - Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Storage - Account Key Operators are allowed to list and regenerate keys on Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-13T18:26:11.5770570Z\",\"updatedOn\":\"2021-11-11T20:13:54.7697481Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"81a9662b-bebf-436f-a333-f67b29880f12\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write and delete access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:54.9397456Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ba92f5b4-2d11-453d-a403-e96b0029c9fe\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full - access to Azure Storage blob containers and data, including assigning POSIX - access control.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/*\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/*\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-04T07:02:58.2775257Z\",\"updatedOn\":\"2021-11-11T20:13:55.1225062Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b7e6dc6d-f1e8-4753-8033-0f276bb0955b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b7e6dc6d-f1e8-4753-8033-0f276bb0955b\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read - access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:55.2975076Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, and delete access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/write\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:55.4725469Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/974c5e8b-45b9-4653-ba55-5f855dd0fb88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"974c5e8b-45b9-4653-ba55-5f855dd0fb88\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Message Processor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for peek, receive, and delete access to Azure Storage queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-01-28T22:27:04.8947111Z\",\"updatedOn\":\"2021-11-11T20:13:55.6575408Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8a0f0c08-91a1-4084-bc3d-661d67233fed\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8a0f0c08-91a1-4084-bc3d-661d67233fed\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Message Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for sending of Azure Storage queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-01-28T22:28:34.7459724Z\",\"updatedOn\":\"2021-11-11T20:13:55.8325508Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c6a89b2d-59bc-44d0-9896-0f6e12d7b80a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c6a89b2d-59bc-44d0-9896-0f6e12d7b80a\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:56.0178497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/19e7f393-937e-4f77-808e-94535e297925\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"19e7f393-937e-4f77-808e-94535e297925\"},{\"properties\":{\"roleName\":\"Support - Request Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - create and manage Support requests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-06-22T22:25:37.8053068Z\",\"updatedOn\":\"2021-11-11T20:13:56.7444481Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\"},{\"properties\":{\"roleName\":\"Traffic - Manager Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Traffic Manager profiles, but does not let you control who has access - to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/trafficManagerProfiles/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2021-11-11T20:13:57.2744497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\"},{\"properties\":{\"roleName\":\"Virtual - Machine Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"View - Virtual Machines in the portal and login as administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/virtualMachines/login/action\",\"Microsoft.Compute/virtualMachines/loginAsAdmin/action\",\"Microsoft.HybridCompute/machines/login/action\",\"Microsoft.HybridCompute/machines/loginAsAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2021-11-18T00:56:53.8134295Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1c0163c0-47e6-4577-8991-ea5c82e286e4\"},{\"properties\":{\"roleName\":\"User - Access Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage user access to Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:57.7932023Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\"},{\"properties\":{\"roleName\":\"Virtual - Machine User Login\",\"type\":\"BuiltInRole\",\"description\":\"View Virtual - Machines in the portal and login as a regular user.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/virtualMachines/login/action\",\"Microsoft.HybridCompute/machines/login/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2021-11-18T00:55:50.6185845Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb879df8-f326-4884-b1cf-06f3ad86be52\"},{\"properties\":{\"roleName\":\"Virtual - Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage virtual machines, but not access to them, and not the virtual network - or storage account they're connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/locations/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/virtualMachineScaleSets/*\",\"Microsoft.Compute/cloudServices/*\",\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\",\"Microsoft.Compute/disks/delete\",\"Microsoft.DevTestLab/schedules/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/applicationGateways/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/loadBalancers/probes/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/locations/*\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.SerialConsole/serialPorts/connect/action\",\"Microsoft.SqlVirtualMachine/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:58.3176075Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9980e02c-c2be-4d73-94e8-173b1dc7cf3c\"},{\"properties\":{\"roleName\":\"Web - Plan Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - the web plans for websites, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/serverFarms/*\",\"Microsoft.Web/hostingEnvironments/Join/Action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:58.4926099Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\"},{\"properties\":{\"roleName\":\"Website - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage websites - (not web plans), but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/certificates/*\",\"Microsoft.Web/listSitesAssignedToHostName/read\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-05-12T23:10:23.6193952Z\",\"updatedOn\":\"2021-11-11T20:13:58.6655647Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/de139f84-1756-47ae-9be6-808fbbe84772\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"de139f84-1756-47ae-9be6-808fbbe84772\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*\"],\"notDataActions\":[]}],\"createdOn\":\"2019-04-16T21:33:36.7445745Z\",\"updatedOn\":\"2021-11-11T20:13:59.2005807Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/090c5cfd-751d-490a-894a-3ce6f1109419\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"090c5cfd-751d-490a-894a-3ce6f1109419\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*\"],\"notDataActions\":[]}],\"createdOn\":\"2019-04-16T21:34:29.8656362Z\",\"updatedOn\":\"2021-11-11T20:13:59.3721538Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f526a384-b230-433a-b45c-95f59c4a2dec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f526a384-b230-433a-b45c-95f59c4a2dec\"},{\"properties\":{\"roleName\":\"Attestation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read write or - delete the attestation provider instance\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Attestation/attestationProviders/attestation/read\",\"Microsoft.Attestation/attestationProviders/attestation/write\",\"Microsoft.Attestation/attestationProviders/attestation/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-19T00:24:09.3354177Z\",\"updatedOn\":\"2021-11-11T20:13:59.7271218Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bbf86eb8-f7b4-4cce-96e4-18cddf81d86e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bbf86eb8-f7b4-4cce-96e4-18cddf81d86e\"},{\"properties\":{\"roleName\":\"HDInsight - Cluster Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read - and modify HDInsight cluster configurations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HDInsight/*/read\",\"Microsoft.HDInsight/clusters/getGatewaySettings/action\",\"Microsoft.HDInsight/clusters/updateGatewaySettings/action\",\"Microsoft.HDInsight/clusters/configurations/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-20T00:03:01.7110732Z\",\"updatedOn\":\"2021-11-11T20:13:59.9052180Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/61ed4efc-fab3-44fd-b111-e24485cc132a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"61ed4efc-fab3-44fd-b111-e24485cc132a\"},{\"properties\":{\"roleName\":\"Cosmos - DB Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Azure - Cosmos DB accounts, but not access data in them. Prevents access to account - keys and connection strings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\"],\"notActions\":[\"Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*\",\"Microsoft.DocumentDB/databaseAccounts/regenerateKey/*\",\"Microsoft.DocumentDB/databaseAccounts/listKeys/*\",\"Microsoft.DocumentDB/databaseAccounts/listConnectionStrings/*\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/delete\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-26T17:01:17.0169383Z\",\"updatedOn\":\"2021-11-11T20:14:00.0802032Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"230815da-be43-4aae-9cb4-875f7bd000aa\"},{\"properties\":{\"roleName\":\"Hybrid - Server Resource Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Can - read, write, delete, and re-onboard Hybrid servers to the Hybrid Resource - Provider.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*\",\"Microsoft.HybridCompute/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-29T21:39:32.3132923Z\",\"updatedOn\":\"2021-11-11T20:14:00.2548257Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/48b40c6e-82e0-4eb3-90d5-19e40f49b624\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"48b40c6e-82e0-4eb3-90d5-19e40f49b624\"},{\"properties\":{\"roleName\":\"Hybrid - Server Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Can onboard - new Hybrid servers to the Hybrid Resource Provider.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-29T22:36:28.1873756Z\",\"updatedOn\":\"2021-11-11T20:14:00.4308999Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d1e5ee4-7c68-4a71-ac8b-0739630a3dfb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d1e5ee4-7c68-4a71-ac8b-0739630a3dfb\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Receiver\",\"type\":\"BuiltInRole\",\"description\":\"Allows - receive access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*/eventhubs/consumergroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*/receive/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:25:21.1056666Z\",\"updatedOn\":\"2021-11-11T20:14:01.3225169Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a638d3c7-ab3a-418d-83e6-5f17a39d4fde\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a638d3c7-ab3a-418d-83e6-5f17a39d4fde\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - send access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*/eventhubs/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:26:12.4673714Z\",\"updatedOn\":\"2021-11-11T20:14:01.4925583Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2b629674-e913-4c01-ae53-ef4638d8f975\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2b629674-e913-4c01-ae53-ef4638d8f975\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Receiver\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for receive access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*/queues/read\",\"Microsoft.ServiceBus/*/topics/read\",\"Microsoft.ServiceBus/*/topics/subscriptions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*/receive/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:43:01.6343849Z\",\"updatedOn\":\"2021-11-11T20:14:01.6629685Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4f6d3b9b-027b-4f4c-9142-0e5a2a2247e0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4f6d3b9b-027b-4f4c-9142-0e5a2a2247e0\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for send access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*/queues/read\",\"Microsoft.ServiceBus/*/topics/read\",\"Microsoft.ServiceBus/*/topics/subscriptions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:43:46.7046934Z\",\"updatedOn\":\"2021-11-11T20:14:01.8479199Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/69a216fc-b8fb-44d8-bc22-1f3c2cd27a39\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"69a216fc-b8fb-44d8-bc22-1f3c2cd27a39\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read access to Azure File Share over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-07-01T20:19:31.8620471Z\",\"updatedOn\":\"2021-11-11T20:14:04.3642909Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/aba4ae5f-2193-4029-9191-0cb91df5e314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"aba4ae5f-2193-4029-9191-0cb91df5e314\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, and delete access in Azure Storage file shares over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-07-01T20:54:35.4834310Z\",\"updatedOn\":\"2021-11-11T20:14:04.5443323Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb\"},{\"properties\":{\"roleName\":\"Private - DNS Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage private DNS zone resources, but not the virtual networks they are linked - to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/privateDnsZones/*\",\"Microsoft.Network/privateDnsOperationResults/*\",\"Microsoft.Network/privateDnsOperationStatuses/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Authorization/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-07-10T19:31:15.5645518Z\",\"updatedOn\":\"2021-11-11T20:14:04.7342851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b12aa53e-6015-4669-85d0-8515ebb3ae7f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b12aa53e-6015-4669-85d0-8515ebb3ae7f\"},{\"properties\":{\"roleName\":\"Storage - Blob Delegator\",\"type\":\"BuiltInRole\",\"description\":\"Allows for generation - of a user delegation key which can be used to sign SAS tokens\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-07-23T00:51:16.3376761Z\",\"updatedOn\":\"2021-11-11T20:14:05.4321714Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/db58b8e5-c6ad-4a2a-8342-4190687cbf4a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"db58b8e5-c6ad-4a2a-8342-4190687cbf4a\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization User\",\"type\":\"BuiltInRole\",\"description\":\"Allows user - to use the applications in an application group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DesktopVirtualization/applicationGroups/useApplications/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-08-07T00:29:03.8727621Z\",\"updatedOn\":\"2021-11-11T20:14:05.9821791Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Elevated Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, delete and modify NTFS permission access in Azure Storage - file shares over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-08-07T01:35:36.9935457Z\",\"updatedOn\":\"2021-11-11T20:14:06.1571744Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7264617-510b-434b-a828-9731dc254ea7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7264617-510b-434b-a828-9731dc254ea7\"},{\"properties\":{\"roleName\":\"Blueprint - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage blueprint - definitions, but not assign them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Blueprint/blueprints/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-14T21:55:16.9683949Z\",\"updatedOn\":\"2021-11-11T20:14:06.5171828Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/41077137-e803-4205-871c-5a86e6a753b4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"41077137-e803-4205-871c-5a86e6a753b4\"},{\"properties\":{\"roleName\":\"Blueprint - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Can assign existing - published blueprints, but cannot create new blueprints. NOTE: this only works - if the assignment is done with a user-assigned managed identity.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Blueprint/blueprintAssignments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-14T21:56:48.7897875Z\",\"updatedOn\":\"2021-11-11T20:14:06.6971401Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/437d2ced-4a38-4302-8479-ed2bcb43d090\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"437d2ced-4a38-4302-8479-ed2bcb43d090\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.Insights/workbooks/*\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:39:03.8725173Z\",\"updatedOn\":\"2021-11-11T20:14:07.2371450Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ab8e14d6-4a74-4a29-9ba8-549422addade\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ab8e14d6-4a74-4a29-9ba8-549422addade\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Responder\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Responder\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*/read\",\"Microsoft.SecurityInsights/dataConnectorsCheckRequirements/action\",\"Microsoft.SecurityInsights/automationRules/*\",\"Microsoft.SecurityInsights/cases/*\",\"Microsoft.SecurityInsights/incidents/*\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/appendTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/query/action\",\"Microsoft.SecurityInsights/threatIntelligence/bulkTag/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/appendTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/replaceTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/queryIndicators/action\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/read\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.SecurityInsights/cases/*/Delete\",\"Microsoft.SecurityInsights/incidents/*/Delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:54:07.6467264Z\",\"updatedOn\":\"2021-11-11T20:14:07.4171916Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e150937-b8fe-4cfb-8069-0eaf05ecd056\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3e150937-b8fe-4cfb-8069-0eaf05ecd056\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Reader\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft Sentinel - Reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*/read\",\"Microsoft.SecurityInsights/dataConnectorsCheckRequirements/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/query/action\",\"Microsoft.SecurityInsights/threatIntelligence/queryIndicators/action\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/LinkedServices/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/read\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/templateSpecs/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:58:50.1132117Z\",\"updatedOn\":\"2022-05-06T20:39:57.5331324Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8d289c81-5878-46d4-8554-54e1e3d8b5cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8d289c81-5878-46d4-8554-54e1e3d8b5cb\"},{\"properties\":{\"roleName\":\"Workbook - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read workbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.insights/workbooks/read\",\"microsoft.insights/workbooktemplates/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T20:56:17.6808140Z\",\"updatedOn\":\"2022-01-03T19:15:12.6968428Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b279062a-9be3-42a0-92ae-8b3cf002ec4d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b279062a-9be3-42a0-92ae-8b3cf002ec4d\"},{\"properties\":{\"roleName\":\"Workbook - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can save shared workbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/workbooks/write\",\"Microsoft.Insights/workbooks/delete\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/workbooktemplates/write\",\"Microsoft.Insights/workbooktemplates/delete\",\"Microsoft.Insights/workbooktemplates/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T20:59:42.4820277Z\",\"updatedOn\":\"2022-01-03T19:14:31.2372561Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e8ddcd69-c73f-4f9f-9844-4100522f16ad\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e8ddcd69-c73f-4f9f-9844-4100522f16ad\"},{\"properties\":{\"roleName\":\"Policy - Insights Data Writer (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read access to resource policies and write access to resource component policy - events.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/policyassignments/read\",\"Microsoft.Authorization/policydefinitions/read\",\"Microsoft.Authorization/policyexemptions/read\",\"Microsoft.Authorization/policysetdefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.PolicyInsights/checkDataPolicyCompliance/action\",\"Microsoft.PolicyInsights/policyEvents/logDataEvents/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-09-19T19:35:20.9504127Z\",\"updatedOn\":\"2021-11-11T20:14:09.4235132Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/66bb4e9e-b016-4a94-8249-4c0511c2be84\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"66bb4e9e-b016-4a94-8249-4c0511c2be84\"},{\"properties\":{\"roleName\":\"SignalR - AccessKey Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read SignalR - Service Access Keys\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SignalRService/*/read\",\"Microsoft.SignalRService/SignalR/listkeys/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-09-20T09:33:19.6236874Z\",\"updatedOn\":\"2021-11-11T20:14:09.6134860Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/04165923-9d83-45d5-8227-78b77b0a687e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"04165923-9d83-45d5-8227-78b77b0a687e\"},{\"properties\":{\"roleName\":\"SignalR/Web - PubSub Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, Read, - Update, and Delete SignalR service resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SignalRService/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-09-20T09:58:09.0009662Z\",\"updatedOn\":\"2021-11-11T20:14:09.7884765Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8cf5e20a-e4b2-4e9d-b3a1-5ceb692c2761\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8cf5e20a-e4b2-4e9d-b3a1-5ceb692c2761\"},{\"properties\":{\"roleName\":\"Azure - Connected Machine Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Can - onboard Azure Connected Machines.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\",\"Microsoft.HybridCompute/privateLinkScopes/read\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T20:15:07.1372870Z\",\"updatedOn\":\"2021-11-11T20:14:10.8735219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b64e21ea-ac4e-4cdf-9dc9-5b892992bee7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b64e21ea-ac4e-4cdf-9dc9-5b892992bee7\"},{\"properties\":{\"roleName\":\"Azure - Connected Machine Resource Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Can - read, write, delete and re-onboard Azure Connected Machines.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\",\"Microsoft.HybridCompute/machines/delete\",\"Microsoft.HybridCompute/machines/UpgradeExtensions/action\",\"Microsoft.HybridCompute/machines/extensions/read\",\"Microsoft.HybridCompute/machines/extensions/write\",\"Microsoft.HybridCompute/machines/extensions/delete\",\"Microsoft.HybridCompute/privateLinkScopes/*\",\"Microsoft.HybridCompute/*/read\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T20:24:59.1474607Z\",\"updatedOn\":\"2021-12-15T16:10:25.5898511Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cd570a14-e51a-42ad-bac8-bafd67325302\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cd570a14-e51a-42ad-bac8-bafd67325302\"},{\"properties\":{\"roleName\":\"Managed - Services Registration assignment Delete Role\",\"type\":\"BuiltInRole\",\"description\":\"Managed - Services Registration Assignment Delete Role allows the managing tenant users - to delete the registration assignment assigned to their tenant.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedServices/registrationAssignments/read\",\"Microsoft.ManagedServices/registrationAssignments/delete\",\"Microsoft.ManagedServices/operationStatuses/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T22:33:33.1183469Z\",\"updatedOn\":\"2021-11-11T20:14:11.2336400Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/91c1777a-f3dc-4fae-b103-61d183457e46\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"91c1777a-f3dc-4fae-b103-61d183457e46\"},{\"properties\":{\"roleName\":\"App - Configuration Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - full access to App Configuration data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppConfiguration/configurationStores/*/read\",\"Microsoft.AppConfiguration/configurationStores/*/write\",\"Microsoft.AppConfiguration/configurationStores/*/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-10-25T18:41:40.1185063Z\",\"updatedOn\":\"2021-11-11T20:14:11.4035314Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5ae67dd6-50cb-40e7-96ff-dc2bfa4b606b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5ae67dd6-50cb-40e7-96ff-dc2bfa4b606b\"},{\"properties\":{\"roleName\":\"App - Configuration Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read access to App Configuration data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppConfiguration/configurationStores/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-10-25T18:45:33.7975332Z\",\"updatedOn\":\"2021-11-11T20:14:11.5885341Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/516239f1-63e1-4d78-a4de-a74fb236a071\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"516239f1-63e1-4d78-a4de-a74fb236a071\"},{\"properties\":{\"roleName\":\"Kubernetes - Cluster - Azure Arc Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Role - definition to authorize any user/service to create connectedClusters resource\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Kubernetes/connectedClusters/Write\",\"Microsoft.Kubernetes/connectedClusters/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-11-18T17:00:02.2087147Z\",\"updatedOn\":\"2021-11-11T20:14:12.4685303Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/34e09817-6cbe-4d01-b1a2-e0eac5743d41\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"34e09817-6cbe-4d01-b1a2-e0eac5743d41\"},{\"properties\":{\"roleName\":\"Experimentation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/write\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/delete\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experiment/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/emergencystop/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/write\",\"Microsoft.Experimentation/experimentWorkspaces/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-13T00:08:08.6679591Z\",\"updatedOn\":\"2021-11-11T20:14:14.6454147Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f646f1b-fa08-80eb-a22b-edd6ce5c915c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f646f1b-fa08-80eb-a22b-edd6ce5c915c\"},{\"properties\":{\"roleName\":\"Cognitive - Services QnA Maker Reader\",\"type\":\"BuiltInRole\",\"description\":\"Let\u2019s - you read and test a KB only.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-17T18:26:12.3329439Z\",\"updatedOn\":\"2021-11-11T20:14:14.8254033Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/466ccd10-b268-4a11-b098-b4849f024126\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"466ccd10-b268-4a11-b098-b4849f024126\"},{\"properties\":{\"roleName\":\"Cognitive - Services QnA Maker Editor\",\"type\":\"BuiltInRole\",\"description\":\"Let\u2019s - you create, edit, import and export a KB. You cannot publish or delete a KB.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/operations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/operations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/operations/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-17T18:27:30.6434556Z\",\"updatedOn\":\"2021-11-11T20:14:14.9961559Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f4cc2bf9-21be-47a1-bdf1-5c5804381025\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f4cc2bf9-21be-47a1-bdf1-5c5804381025\"},{\"properties\":{\"roleName\":\"Experimentation - Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation - Administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/admin/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/write\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/delete\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experimentadmin/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experiment/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/emergencystop/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/write\",\"Microsoft.Experimentation/experimentWorkspaces/delete\",\"Microsoft.Experimentation/experimentWorkspaces/admin/action\",\"Microsoft.Experimentation/experimentWorkspaces/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/metricwrite/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-18T22:46:33.1116612Z\",\"updatedOn\":\"2021-11-11T20:14:15.1811577Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f646f1b-fa08-80eb-a33b-edd6ce5c915c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f646f1b-fa08-80eb-a33b-edd6ce5c915c\"},{\"properties\":{\"roleName\":\"Remote - Rendering Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with conversion, manage session, rendering and diagnostics capabilities - for Azure Remote Rendering\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/render/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/diagnostic/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-01-23T18:15:31.3450348Z\",\"updatedOn\":\"2021-11-11T20:14:16.7621737Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3df8b902-2a6f-47c7-8cc5-360e9b272a7e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3df8b902-2a6f-47c7-8cc5-360e9b272a7e\"},{\"properties\":{\"roleName\":\"Remote - Rendering Client\",\"type\":\"BuiltInRole\",\"description\":\"Provides user - with manage session, rendering and diagnostics capabilities for Azure Remote - Rendering.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/render/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/diagnostic/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-01-23T18:32:52.7069824Z\",\"updatedOn\":\"2021-11-11T20:14:16.9421512Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d39065c4-c120-43c9-ab0a-63eed9795f0a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d39065c4-c120-43c9-ab0a-63eed9795f0a\"},{\"properties\":{\"roleName\":\"Managed - Application Contributor Role\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for creating managed application resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Solutions/applications/*\",\"Microsoft.Solutions/register/action\",\"Microsoft.Resources/subscriptions/resourceGroups/*\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-08T03:39:11.8933879Z\",\"updatedOn\":\"2021-11-11T20:14:19.1271536Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/641177b8-a67a-45b9-a033-47bc880bb21e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"641177b8-a67a-45b9-a033-47bc880bb21e\"},{\"properties\":{\"roleName\":\"Security - Assessment Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - push assessments to Security Center\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Security/assessments/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-13T08:23:47.7656161Z\",\"updatedOn\":\"2021-11-11T20:14:19.3021974Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/612c2aa1-cb24-443b-ac28-3ab7272de6f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"612c2aa1-cb24-443b-ac28-3ab7272de6f5\"},{\"properties\":{\"roleName\":\"Tag - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage tags - on entities, without providing access to the entities themselves.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\",\"Microsoft.Resources/subscriptions/resources/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\",\"Microsoft.Resources/tags/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-18T23:19:19.2977644Z\",\"updatedOn\":\"2021-11-11T20:14:20.0172041Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4a9ae827-6dc8-4573-8ac7-8239d42aa03f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4a9ae827-6dc8-4573-8ac7-8239d42aa03f\"},{\"properties\":{\"roleName\":\"Integration - Service Environment Developer\",\"type\":\"BuiltInRole\",\"description\":\"Allows - developers to create and update workflows, integration accounts and API connections - in integration service environments.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Logic/integrationServiceEnvironments/read\",\"Microsoft.Logic/integrationServiceEnvironments/*/join/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-20T21:09:00.5627875Z\",\"updatedOn\":\"2021-11-11T20:14:20.1871986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c7aa55d3-1abb-444a-a5ca-5e51e485d6ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c7aa55d3-1abb-444a-a5ca-5e51e485d6ec\"},{\"properties\":{\"roleName\":\"Integration - Service Environment Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage integration service environments, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Logic/integrationServiceEnvironments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-20T21:10:44.4008319Z\",\"updatedOn\":\"2021-11-11T20:14:20.3622058Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a41e2c5b-bd99-4a07-88f4-9bf657a760b8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a41e2c5b-bd99-4a07-88f4-9bf657a760b8\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Contributor Role\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to read and write Azure Kubernetes Service clusters\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/read\",\"Microsoft.ContainerService/managedClusters/write\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-27T19:27:15.0739970Z\",\"updatedOn\":\"2021-11-11T20:14:21.2621727Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ed7f3fbd-7b88-4dd4-9017-9adb7ce333f8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ed7f3fbd-7b88-4dd4-9017-9adb7ce333f8\"},{\"properties\":{\"roleName\":\"Azure - Digital Twins Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - role for Digital Twins data-plane properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DigitalTwins/digitaltwins/read\",\"Microsoft.DigitalTwins/digitaltwins/relationships/read\",\"Microsoft.DigitalTwins/eventroutes/read\",\"Microsoft.DigitalTwins/models/read\",\"Microsoft.DigitalTwins/query/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-10T23:48:14.7057381Z\",\"updatedOn\":\"2021-11-11T20:14:22.3621788Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d57506d4-4c8d-48b1-8587-93c323f6a5a3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d57506d4-4c8d-48b1-8587-93c323f6a5a3\"},{\"properties\":{\"roleName\":\"Azure - Digital Twins Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full - access role for Digital Twins data-plane\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DigitalTwins/eventroutes/*\",\"Microsoft.DigitalTwins/digitaltwins/*\",\"Microsoft.DigitalTwins/digitaltwins/commands/*\",\"Microsoft.DigitalTwins/digitaltwins/relationships/*\",\"Microsoft.DigitalTwins/models/*\",\"Microsoft.DigitalTwins/query/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-10T23:49:33.7821930Z\",\"updatedOn\":\"2021-11-11T20:14:22.5471888Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bcd981a7-7f74-457b-83e1-cceb9e632ffe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bcd981a7-7f74-457b-83e1-cceb9e632ffe\"},{\"properties\":{\"roleName\":\"Hierarchy - Settings Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Allows - users to edit and delete Hierarchy Settings\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/settings/write\",\"Microsoft.Management/managementGroups/settings/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-03-13T23:55:11.0212387Z\",\"updatedOn\":\"2021-11-11T20:14:23.0882347Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/350f8d15-c687-4448-8ae1-157740a3936d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"350f8d15-c687-4448-8ae1-157740a3936d\"},{\"properties\":{\"roleName\":\"FHIR - Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Role allows - user or principal full access to FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/*\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:35:04.4949547Z\",\"updatedOn\":\"2021-11-11T20:14:23.6235473Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5a1fc7df-4bf1-4951-a576-89034ee01acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5a1fc7df-4bf1-4951-a576-89034ee01acd\"},{\"properties\":{\"roleName\":\"FHIR - Data Exporter\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and export FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/read\",\"Microsoft.HealthcareApis/services/fhir/resources/export/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/export/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:45:01.9764073Z\",\"updatedOn\":\"2021-11-11T20:14:23.7992557Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3db33094-8700-4567-8da5-1501d4e7e843\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3db33094-8700-4567-8da5-1501d4e7e843\"},{\"properties\":{\"roleName\":\"FHIR - Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:49:04.8353499Z\",\"updatedOn\":\"2021-11-11T20:14:23.9692275Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4c8d0bbc-75d3-4935-991f-5f3c56d81508\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4c8d0bbc-75d3-4935-991f-5f3c56d81508\"},{\"properties\":{\"roleName\":\"FHIR - Data Writer\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and write FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/*\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/*\"],\"notDataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/hardDelete/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/hardDelete/action\"]}],\"createdOn\":\"2020-03-17T18:55:35.2413335Z\",\"updatedOn\":\"2021-11-11T20:14:24.1442783Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3f88fce4-5892-4214-ae73-ba5294559913\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3f88fce4-5892-4214-ae73-ba5294559913\"},{\"properties\":{\"roleName\":\"Experimentation - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation Reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-25T18:05:14.8375678Z\",\"updatedOn\":\"2021-11-11T20:14:24.5042390Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49632ef5-d9ac-41f4-b8e7-bbe587fa74a1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49632ef5-d9ac-41f4-b8e7-bbe587fa74a1\"},{\"properties\":{\"roleName\":\"Object - Understanding Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with ingestion capabilities for Azure Object Understanding.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/action\",\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-04-22T19:15:09.0697923Z\",\"updatedOn\":\"2021-11-11T20:14:26.8743132Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4dd61c23-6743-42fe-a388-d8bdd41cb745\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4dd61c23-6743-42fe-a388-d8bdd41cb745\"},{\"properties\":{\"roleName\":\"Azure - Maps Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to read, write, and delete access to map related data from an Azure - maps account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/*/read\",\"Microsoft.Maps/accounts/*/write\",\"Microsoft.Maps/accounts/*/delete\",\"Microsoft.Maps/accounts/*/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-07T20:55:05.0645410Z\",\"updatedOn\":\"2021-11-11T20:14:28.3092598Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8f5e0ce6-4f7b-4dcf-bddf-e6f48634a204\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f5e0ce6-4f7b-4dcf-bddf-e6f48634a204\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to the project, including the ability to view, create, edit, or delete - projects.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-08T23:47:07.0779345Z\",\"updatedOn\":\"2021-11-11T20:14:28.8342655Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c1ff6cc2-c111-46fe-8896-e0ef812ad9f3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c1ff6cc2-c111-46fe-8896-e0ef812ad9f3\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Deployment\",\"type\":\"BuiltInRole\",\"description\":\"Publish, - unpublish or export models. Deployment can view the project but can\u2019t - update.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/iterations/publish/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/iterations/export/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/quicktest/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/classify/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/detect/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:31:05.9528620Z\",\"updatedOn\":\"2021-11-11T20:14:29.0142669Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5c4089e1-6d96-4d2f-b296-c1bc7137275f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5c4089e1-6d96-4d2f-b296-c1bc7137275f\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Labeler\",\"type\":\"BuiltInRole\",\"description\":\"View, - edit training images and create, add, remove, or delete the image tags. Labelers - can view the project but can\u2019t update anything other than training images - and tags.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/query/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/images/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/tags/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/images/suggested/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/tagsandregions/suggestions/action\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:33:20.8278896Z\",\"updatedOn\":\"2021-11-11T20:14:29.1892871Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/88424f51-ebe7-446f-bc41-7fa16989e96c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"88424f51-ebe7-446f-bc41-7fa16989e96c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - actions in the project. Readers can\u2019t create or update the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/query/action\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:34:18.5328818Z\",\"updatedOn\":\"2021-11-11T20:14:29.3642707Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/93586559-c37d-4a6b-ba08-b9f0940c2d73\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"93586559-c37d-4a6b-ba08-b9f0940c2d73\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Trainer\",\"type\":\"BuiltInRole\",\"description\":\"View, - edit projects and train the models, including the ability to publish, unpublish, - export the models. Trainers can\u2019t create or delete the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/delete\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/import/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:35:13.8147804Z\",\"updatedOn\":\"2021-11-11T20:14:29.5442713Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0a5ae4ab-0d65-4eeb-be61-29fc9b54394b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0a5ae4ab-0d65-4eeb-be61-29fc9b54394b\"},{\"properties\":{\"roleName\":\"Key - Vault Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Perform all - data plane operations on a key vault and all objects in it, including certificates, - keys, and secrets. Cannot manage key vault resources or manage role assignments. - Only works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:46.2349235Z\",\"updatedOn\":\"2021-11-11T20:14:30.2542755Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00482a5a-887f-4fb3-b363-3b7fe8e74483\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00482a5a-887f-4fb3-b363-3b7fe8e74483\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the keys of a key vault, except manage permissions. Only works - for key vaults that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/*\",\"Microsoft.KeyVault/vaults/keyrotationpolicies/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.0099249Z\",\"updatedOn\":\"2022-01-06T23:21:17.9760884Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/14b46e9e-c2b7-41b4-b07b-48a6ebf60603\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"14b46e9e-c2b7-41b4-b07b-48a6ebf60603\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto User\",\"type\":\"BuiltInRole\",\"description\":\"Perform cryptographic - operations using keys. Only works for key vaults that use the 'Azure role-based - access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/read\",\"Microsoft.KeyVault/vaults/keys/update/action\",\"Microsoft.KeyVault/vaults/keys/backup/action\",\"Microsoft.KeyVault/vaults/keys/encrypt/action\",\"Microsoft.KeyVault/vaults/keys/decrypt/action\",\"Microsoft.KeyVault/vaults/keys/wrap/action\",\"Microsoft.KeyVault/vaults/keys/unwrap/action\",\"Microsoft.KeyVault/vaults/keys/sign/action\",\"Microsoft.KeyVault/vaults/keys/verify/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.0699268Z\",\"updatedOn\":\"2021-11-11T20:14:30.6042921Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/12338af0-0e69-4776-bea7-57ae8d297424\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"12338af0-0e69-4776-bea7-57ae8d297424\"},{\"properties\":{\"roleName\":\"Key - Vault Secrets Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the secrets of a key vault, except manage permissions. Only - works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/secrets/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.1449242Z\",\"updatedOn\":\"2021-11-11T20:14:30.7793470Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b86a8fe4-44ce-4948-aee5-eccb2c155cd7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b86a8fe4-44ce-4948-aee5-eccb2c155cd7\"},{\"properties\":{\"roleName\":\"Key - Vault Secrets User\",\"type\":\"BuiltInRole\",\"description\":\"Read secret - contents. Only works for key vaults that use the 'Azure role-based access - control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/secrets/getSecret/action\",\"Microsoft.KeyVault/vaults/secrets/readMetadata/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2049241Z\",\"updatedOn\":\"2021-11-11T20:14:30.9542829Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4633458b-17de-408a-b874-0445c86b69e6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4633458b-17de-408a-b874-0445c86b69e6\"},{\"properties\":{\"roleName\":\"Key - Vault Certificates Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the certificates of a key vault, except manage permissions. - Only works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/certificatecas/*\",\"Microsoft.KeyVault/vaults/certificates/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2499247Z\",\"updatedOn\":\"2021-11-11T20:14:31.1292967Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a4417e6f-fecd-4de8-b567-7b0420556985\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4417e6f-fecd-4de8-b567-7b0420556985\"},{\"properties\":{\"roleName\":\"Key - Vault Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read metadata of - key vaults and its certificates, keys, and secrets. Cannot read sensitive - values such as secret contents or key material. Only works for key vaults - that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/vaults/secrets/readMetadata/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2949294Z\",\"updatedOn\":\"2021-11-11T20:14:31.3043292Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21090545-7ca7-4776-b22c-e363652d74d2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21090545-7ca7-4776-b22c-e363652d74d2\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto Service Encryption User\",\"type\":\"BuiltInRole\",\"description\":\"Read - metadata of keys and perform wrap/unwrap operations. Only works for key vaults - that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventGrid/eventSubscriptions/write\",\"Microsoft.EventGrid/eventSubscriptions/read\",\"Microsoft.EventGrid/eventSubscriptions/delete\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/read\",\"Microsoft.KeyVault/vaults/keys/wrap/action\",\"Microsoft.KeyVault/vaults/keys/unwrap/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-20T20:55:19.2398470Z\",\"updatedOn\":\"2021-11-11T20:14:31.8443056Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e147488a-f6f5-4113-8e2d-b22465e65bf6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e147488a-f6f5-4113-8e2d-b22465e65bf6\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Viewer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - view all resources in cluster/namespace, except secrets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/read\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/read\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/read\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/read\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/read\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/read\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/read\",\"Microsoft.Kubernetes/connectedClusters/configmaps/read\",\"Microsoft.Kubernetes/connectedClusters/endpoints/read\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/read\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/read\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/read\",\"Microsoft.Kubernetes/connectedClusters/pods/read\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/read\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/read\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/read\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/read\",\"Microsoft.Kubernetes/connectedClusters/services/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:51:12.8801199Z\",\"updatedOn\":\"2021-11-11T20:14:33.8193353Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/63f0a09d-1495-4db4-a681-037d84835eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"63f0a09d-1495-4db4-a681-037d84835eb4\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Writer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - update everything in cluster/namespace, except (cluster)roles and (cluster)role - bindings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/*\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/*\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/*\",\"Microsoft.Kubernetes/connectedClusters/configmaps/*\",\"Microsoft.Kubernetes/connectedClusters/endpoints/*\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/*\",\"Microsoft.Kubernetes/connectedClusters/pods/*\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/secrets/*\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/*\",\"Microsoft.Kubernetes/connectedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:53:50.6749823Z\",\"updatedOn\":\"2021-11-11T20:14:34.0043462Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5b999177-9696-4545-85c7-50de3797e5a1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5b999177-9696-4545-85c7-50de3797e5a1\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Cluster Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources in the cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:55:30.9910462Z\",\"updatedOn\":\"2021-11-11T20:14:34.1743694Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8393591c-06b9-48a2-a542-1bd6b377f6a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8393591c-06b9-48a2-a542-1bd6b377f6a2\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage all resources under cluster/namespace, except update or delete resource - quotas and namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/*\",\"Microsoft.Kubernetes/connectedClusters/authorization.k8s.io/localsubjectaccessreviews/write\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/*\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/*\",\"Microsoft.Kubernetes/connectedClusters/configmaps/*\",\"Microsoft.Kubernetes/connectedClusters/endpoints/*\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/*\",\"Microsoft.Kubernetes/connectedClusters/pods/*\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.Kubernetes/connectedClusters/rbac.authorization.k8s.io/rolebindings/*\",\"Microsoft.Kubernetes/connectedClusters/rbac.authorization.k8s.io/roles/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/secrets/*\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/*\",\"Microsoft.Kubernetes/connectedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:57:06.0391177Z\",\"updatedOn\":\"2021-11-11T20:14:34.3593384Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dffb1e0c-446f-4dde-a09f-99eb5cc68b96\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dffb1e0c-446f-4dde-a09f-99eb5cc68b96\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Cluster Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources in the cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:47:24.4071415Z\",\"updatedOn\":\"2021-11-11T20:14:35.5993607Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources under cluster/namespace, except update or delete - resource quotas and namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/*\"],\"notDataActions\":[\"Microsoft.ContainerService/managedClusters/resourcequotas/write\",\"Microsoft.ContainerService/managedClusters/resourcequotas/delete\",\"Microsoft.ContainerService/managedClusters/namespaces/write\",\"Microsoft.ContainerService/managedClusters/namespaces/delete\"]}],\"createdOn\":\"2020-07-02T17:50:30.4020311Z\",\"updatedOn\":\"2021-11-11T20:14:35.7743651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3498e952-d568-435e-9b2c-8d77e338d7f7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3498e952-d568-435e-9b2c-8d77e338d7f7\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read-only access to see most objects in a namespace. It does not allow viewing - roles or role bindings. This role does not allow viewing Secrets, since reading - the contents of Secrets enables access to ServiceAccount credentials in the - namespace, which would allow API access as any ServiceAccount in the namespace - (a form of privilege escalation). Applying this role at cluster scope will - give access across all namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/apps/controllerrevisions/read\",\"Microsoft.ContainerService/managedClusters/apps/daemonsets/read\",\"Microsoft.ContainerService/managedClusters/apps/deployments/read\",\"Microsoft.ContainerService/managedClusters/apps/replicasets/read\",\"Microsoft.ContainerService/managedClusters/apps/statefulsets/read\",\"Microsoft.ContainerService/managedClusters/autoscaling/horizontalpodautoscalers/read\",\"Microsoft.ContainerService/managedClusters/batch/cronjobs/read\",\"Microsoft.ContainerService/managedClusters/batch/jobs/read\",\"Microsoft.ContainerService/managedClusters/configmaps/read\",\"Microsoft.ContainerService/managedClusters/endpoints/read\",\"Microsoft.ContainerService/managedClusters/events.k8s.io/events/read\",\"Microsoft.ContainerService/managedClusters/events/read\",\"Microsoft.ContainerService/managedClusters/extensions/daemonsets/read\",\"Microsoft.ContainerService/managedClusters/extensions/deployments/read\",\"Microsoft.ContainerService/managedClusters/extensions/ingresses/read\",\"Microsoft.ContainerService/managedClusters/extensions/networkpolicies/read\",\"Microsoft.ContainerService/managedClusters/extensions/replicasets/read\",\"Microsoft.ContainerService/managedClusters/limitranges/read\",\"Microsoft.ContainerService/managedClusters/namespaces/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/ingresses/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/read\",\"Microsoft.ContainerService/managedClusters/persistentvolumeclaims/read\",\"Microsoft.ContainerService/managedClusters/pods/read\",\"Microsoft.ContainerService/managedClusters/policy/poddisruptionbudgets/read\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/read\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/read\",\"Microsoft.ContainerService/managedClusters/resourcequotas/read\",\"Microsoft.ContainerService/managedClusters/serviceaccounts/read\",\"Microsoft.ContainerService/managedClusters/services/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:53:05.5728294Z\",\"updatedOn\":\"2021-11-11T20:14:35.9544048Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f6c6a51-bcf8-42ba-9220-52d62157d7db\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f6c6a51-bcf8-42ba-9220-52d62157d7db\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Writer\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read/write access to most objects in a namespace.This role does not allow - viewing or modifying roles or role bindings. However, this role allows accessing - Secrets and running Pods as any ServiceAccount in the namespace, so it can - be used to gain the API access levels of any ServiceAccount in the namespace. - Applying this role at cluster scope will give access across all namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/apps/controllerrevisions/read\",\"Microsoft.ContainerService/managedClusters/apps/daemonsets/*\",\"Microsoft.ContainerService/managedClusters/apps/deployments/*\",\"Microsoft.ContainerService/managedClusters/apps/replicasets/*\",\"Microsoft.ContainerService/managedClusters/apps/statefulsets/*\",\"Microsoft.ContainerService/managedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.ContainerService/managedClusters/batch/cronjobs/*\",\"Microsoft.ContainerService/managedClusters/batch/jobs/*\",\"Microsoft.ContainerService/managedClusters/configmaps/*\",\"Microsoft.ContainerService/managedClusters/endpoints/*\",\"Microsoft.ContainerService/managedClusters/events.k8s.io/events/read\",\"Microsoft.ContainerService/managedClusters/events/read\",\"Microsoft.ContainerService/managedClusters/extensions/daemonsets/*\",\"Microsoft.ContainerService/managedClusters/extensions/deployments/*\",\"Microsoft.ContainerService/managedClusters/extensions/ingresses/*\",\"Microsoft.ContainerService/managedClusters/extensions/networkpolicies/*\",\"Microsoft.ContainerService/managedClusters/extensions/replicasets/*\",\"Microsoft.ContainerService/managedClusters/limitranges/read\",\"Microsoft.ContainerService/managedClusters/namespaces/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.ContainerService/managedClusters/persistentvolumeclaims/*\",\"Microsoft.ContainerService/managedClusters/pods/*\",\"Microsoft.ContainerService/managedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/*\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/*\",\"Microsoft.ContainerService/managedClusters/resourcequotas/read\",\"Microsoft.ContainerService/managedClusters/secrets/*\",\"Microsoft.ContainerService/managedClusters/serviceaccounts/*\",\"Microsoft.ContainerService/managedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:54:51.9644983Z\",\"updatedOn\":\"2021-11-11T20:14:36.1293406Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7ffa36f-339b-4b5c-8bdf-e2c188b2c0eb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7ffa36f-339b-4b5c-8bdf-e2c188b2c0eb\"},{\"properties\":{\"roleName\":\"Services - Hub Operator\",\"type\":\"BuiltInRole\",\"description\":\"Services Hub Operator - allows you to perform all read, write, and deletion operations related to - Services Hub Connectors.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.ServicesHub/connectors/write\",\"Microsoft.ServicesHub/connectors/read\",\"Microsoft.ServicesHub/connectors/delete\",\"Microsoft.ServicesHub/connectors/checkAssessmentEntitlement/action\",\"Microsoft.ServicesHub/supportOfferingEntitlement/read\",\"Microsoft.ServicesHub/workspaces/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-07-20T17:57:22.0644902Z\",\"updatedOn\":\"2021-11-11T20:14:37.5544021Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/82200a5b-e217-47a5-b665-6d8765ee745b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"82200a5b-e217-47a5-b665-6d8765ee745b\"},{\"properties\":{\"roleName\":\"Object - Understanding Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read ingestion jobs for an object understanding account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-23T19:16:31.9929119Z\",\"updatedOn\":\"2021-11-11T20:14:37.9070085Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d18777c0-1514-4662-8490-608db7d334b6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d18777c0-1514-4662-8490-608db7d334b6\"},{\"properties\":{\"roleName\":\"Azure - Arc Enabled Kubernetes Cluster User Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster user credentials action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Kubernetes/connectedClusters/listClusterUserCredentials/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\",\"Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-07-28T17:37:00.7637445Z\",\"updatedOn\":\"2022-02-17T02:29:05.1000798Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00493d72-78f6-4148-b6c5-d3ce8e4799dd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00493d72-78f6-4148-b6c5-d3ce8e4799dd\"},{\"properties\":{\"roleName\":\"SignalR - App Server\",\"type\":\"BuiltInRole\",\"description\":\"Lets your app server - access SignalR Service with AAD auth options.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/accessKey/action\",\"Microsoft.SignalRService/SignalR/serverConnection/write\",\"Microsoft.SignalRService/SignalR/clientConnection/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-29T06:54:40.1201435Z\",\"updatedOn\":\"2021-11-16T05:19:04.8579948Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/420fcaa2-552c-430f-98ca-3264be4806c7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"420fcaa2-552c-430f-98ca-3264be4806c7\"},{\"properties\":{\"roleName\":\"SignalR - REST API Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to - Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/clientToken/action\",\"Microsoft.SignalRService/SignalR/hub/send/action\",\"Microsoft.SignalRService/SignalR/group/send/action\",\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/group/write\",\"Microsoft.SignalRService/SignalR/clientConnection/send/action\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/clientConnection/write\",\"Microsoft.SignalRService/SignalR/user/send/action\",\"Microsoft.SignalRService/SignalR/user/read\",\"Microsoft.SignalRService/SignalR/user/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-29T09:35:32.2764751Z\",\"updatedOn\":\"2021-11-11T20:14:38.8028020Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd53cd77-2268-407a-8f46-7e7863d0f521\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd53cd77-2268-407a-8f46-7e7863d0f521\"},{\"properties\":{\"roleName\":\"Collaborative - Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage data - packages of a collaborative.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/*/read\",\"Microsoft.IndustryDataLifecycle/memberCollaboratives/*/read\",\"Microsoft.IndustryDataLifecycle/locations/dataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/receivedDataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/rejectDataPackage/action\",\"Microsoft.IndustryDataLifecycle/memberCollaboratives/sharedDataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/dataModels/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/auditLogs/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-08-14T11:58:31.8973556Z\",\"updatedOn\":\"2021-11-11T20:14:40.2428145Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/daa9e50b-21df-454c-94a6-a8050adab352\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"daa9e50b-21df-454c-94a6-a8050adab352\"},{\"properties\":{\"roleName\":\"Device - Update Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives you read - access to management and content operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:40:19.2373610Z\",\"updatedOn\":\"2021-11-11T20:14:40.7922672Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e9dba6fb-3d52-4cf0-bce3-f06ce71b9e0f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e9dba6fb-3d52-4cf0-bce3-f06ce71b9e0f\"},{\"properties\":{\"roleName\":\"Device - Update Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives you - full access to management and content operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/write\",\"Microsoft.DeviceUpdate/accounts/instances/updates/delete\",\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/write\",\"Microsoft.DeviceUpdate/accounts/instances/management/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:56:22.3520510Z\",\"updatedOn\":\"2021-11-11T20:14:40.9672678Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/02ca0879-e8e4-47a5-a61e-5c618b76e64a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"02ca0879-e8e4-47a5-a61e-5c618b76e64a\"},{\"properties\":{\"roleName\":\"Device - Update Content Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you full access to content operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/write\",\"Microsoft.DeviceUpdate/accounts/instances/updates/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:58:18.4255500Z\",\"updatedOn\":\"2021-11-11T20:14:41.1433368Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0378884a-3af5-44ab-8323-f5b22f9f3c98\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0378884a-3af5-44ab-8323-f5b22f9f3c98\"},{\"properties\":{\"roleName\":\"Device - Update Deployments Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you full access to management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/write\",\"Microsoft.DeviceUpdate/accounts/instances/management/delete\",\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:59:52.1001666Z\",\"updatedOn\":\"2022-01-13T01:59:19.4616366Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e4237640-0e3d-4a46-8fda-70bc94856432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e4237640-0e3d-4a46-8fda-70bc94856432\"},{\"properties\":{\"roleName\":\"Device - Update Deployments Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you read access to management operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-22T00:01:34.7053630Z\",\"updatedOn\":\"2022-01-13T01:35:51.6463216Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49e2f5d2-7741-4835-8efa-19e1fe35e47f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49e2f5d2-7741-4835-8efa-19e1fe35e47f\"},{\"properties\":{\"roleName\":\"Device - Update Content Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives you - read access to content operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-22T00:02:43.3299181Z\",\"updatedOn\":\"2021-11-11T20:14:41.6754856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d1ee9a80-8b14-47f0-bdc2-f4a351625a7b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d1ee9a80-8b14-47f0-bdc2-f4a351625a7b\"},{\"properties\":{\"roleName\":\"Cognitive - Services Metrics Advisor Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to the project, including the system level configuration.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-10T07:46:47.5804491Z\",\"updatedOn\":\"2021-11-11T20:14:43.6930781Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cb43c632-a144-4ec5-977c-e80c4affc34a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cb43c632-a144-4ec5-977c-e80c4affc34a\"},{\"properties\":{\"roleName\":\"Cognitive - Services Metrics Advisor User\",\"type\":\"BuiltInRole\",\"description\":\"Access - to the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/stats/*\"]}],\"createdOn\":\"2020-09-10T07:47:59.6195639Z\",\"updatedOn\":\"2021-11-11T20:14:43.8780761Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3b20f47b-3825-43cb-8114-4bd2201156a8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3b20f47b-3825-43cb-8114-4bd2201156a8\"},{\"properties\":{\"roleName\":\"Schema - Registry Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read - and list Schema Registry groups and schemas.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/schemagroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/namespaces/schemas/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-13T06:31:38.0272740Z\",\"updatedOn\":\"2021-11-11T20:14:44.6350450Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2c56ea50-c6b3-40a6-83c0-9d98858bc7d2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2c56ea50-c6b3-40a6-83c0-9d98858bc7d2\"},{\"properties\":{\"roleName\":\"Schema - Registry Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read, - write, and delete Schema Registry groups and schemas.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/schemagroups/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/namespaces/schemas/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-13T06:48:26.6032931Z\",\"updatedOn\":\"2021-11-11T20:14:44.8200370Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5dffeca3-4936-4216-b2bc-10343a5abb25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5dffeca3-4936-4216-b2bc-10343a5abb25\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides - read access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-14T10:21:08.9138820Z\",\"updatedOn\":\"2021-11-11T20:14:45.0056815Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7ec7ccdc-f61e-41fe-9aaf-980df0a44eba\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ec7ccdc-f61e-41fe-9aaf-980df0a44eba\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - contribute access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*/action\",\"Microsoft.AgFoodPlatform/*/read\",\"Microsoft.AgFoodPlatform/*/write\"],\"notDataActions\":[\"Microsoft.AgFoodPlatform/farmers/write\",\"Microsoft.AgFoodPlatform/deletionJobs/*/write\"]}],\"createdOn\":\"2020-09-14T10:21:09.7239169Z\",\"updatedOn\":\"2021-11-11T20:14:45.1806787Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8508508a-4469-4e45-963b-2518ee0bb728\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8508508a-4469-4e45-963b-2518ee0bb728\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Admin\",\"type\":\"BuiltInRole\",\"description\":\"Provides - admin access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-14T10:21:09.8039209Z\",\"updatedOn\":\"2021-11-11T20:14:45.3613128Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f8da80de-1ff9-4747-ad80-a19b7f6079e3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f8da80de-1ff9-4747-ad80-a19b7f6079e3\"},{\"properties\":{\"roleName\":\"Managed - HSM contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - managed HSM pools, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.KeyVault/managedHSMs/*\",\"Microsoft.KeyVault/deletedManagedHsms/read\",\"Microsoft.KeyVault/locations/deletedManagedHsms/read\",\"Microsoft.KeyVault/locations/deletedManagedHsms/purge/action\",\"Microsoft.KeyVault/locations/managedHsmOperationResults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-09-16T21:47:01.1291104Z\",\"updatedOn\":\"2022-03-07T20:20:03.1782149Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18500a29-7fe2-46b2-a342-b16a415e101d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18500a29-7fe2-46b2-a342-b16a415e101d\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Submitter\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to create submissions to Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/delete\",\"Microsoft.SecurityDetonation/chambers/submissions/write\",\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\",\"Microsoft.SecurityDetonation/chambers/submissions/accesskeyview/read\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-01T08:55:21.3980274Z\",\"updatedOn\":\"2021-11-11T20:14:47.5471350Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0b555d9b-b4a7-4f43-b330-627f0e5be8f0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0b555d9b-b4a7-4f43-b330-627f0e5be8f0\"},{\"properties\":{\"roleName\":\"SignalR - REST API Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only access - to Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/user/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-13T09:19:05.6463616Z\",\"updatedOn\":\"2021-11-11T20:14:48.7902970Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ddde6b66-c0df-4114-a159-3618637b3035\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ddde6b66-c0df-4114-a159-3618637b3035\"},{\"properties\":{\"roleName\":\"SignalR - Service Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to - Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/accessKey/action\",\"Microsoft.SignalRService/SignalR/auth/clientToken/action\",\"Microsoft.SignalRService/SignalR/hub/send/action\",\"Microsoft.SignalRService/SignalR/group/send/action\",\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/group/write\",\"Microsoft.SignalRService/SignalR/clientConnection/send/action\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/clientConnection/write\",\"Microsoft.SignalRService/SignalR/serverConnection/write\",\"Microsoft.SignalRService/SignalR/user/send/action\",\"Microsoft.SignalRService/SignalR/user/read\",\"Microsoft.SignalRService/SignalR/user/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-13T09:20:32.1501410Z\",\"updatedOn\":\"2021-11-11T20:14:48.9653162Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7e4f1700-ea5a-4f59-8f37-079cfe29dce3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7e4f1700-ea5a-4f59-8f37-079cfe29dce3\"},{\"properties\":{\"roleName\":\"Reservation - Purchaser\",\"type\":\"BuiltInRole\",\"description\":\"Lets you purchase reservations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Capacity/catalogs/read\",\"Microsoft.Capacity/register/action\",\"Microsoft.Compute/register/action\",\"Microsoft.Consumption/register/action\",\"Microsoft.Consumption/reservationRecommendationDetails/read\",\"Microsoft.Consumption/reservationRecommendations/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.SQL/register/action\",\"Microsoft.Support/supporttickets/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-10-23T20:22:48.9217751Z\",\"updatedOn\":\"2022-04-25T20:55:26.9790121Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f7b75c60-3036-4b75-91c3-6b41c27c1689\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f7b75c60-3036-4b75-91c3-6b41c27c1689\"},{\"properties\":{\"roleName\":\"AzureML - Metrics Writer (preview)\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you write metrics to AzureML workspace\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.MachineLearningServices/workspaces/metrics/*/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-10-27T16:55:19.5664950Z\",\"updatedOn\":\"2021-11-11T20:14:49.8655015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/635dd51f-9968-44d3-b7fb-6d9a6bd613ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"635dd51f-9968-44d3-b7fb-6d9a6bd613ae\"},{\"properties\":{\"roleName\":\"Storage - Account Backup Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you perform backup and restore operations using Azure Backup on the storage - account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/locks/read\",\"Microsoft.Authorization/locks/write\",\"Microsoft.Authorization/locks/delete\",\"Microsoft.Features/features/read\",\"Microsoft.Features/providers/features/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/operations/read\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/delete\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/read\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/write\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/restorePointMarkers/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/read\",\"Microsoft.Storage/storageAccounts/blobServices/write\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Storage/storageAccounts/restoreBlobRanges/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-11-02T23:32:50.4203469Z\",\"updatedOn\":\"2022-04-20T01:44:53.5887074Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1\"},{\"properties\":{\"roleName\":\"Experimentation - Metric Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - creation, writes and reads to the metric set via the metrics service APIs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-10T20:07:53.7535885Z\",\"updatedOn\":\"2021-11-11T20:14:50.9524177Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6188b7c9-7d01-4f99-a59f-c88b630326c0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6188b7c9-7d01-4f99-a59f-c88b630326c0\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Curator\",\"type\":\"BuiltInRole\",\"description\":\"The Microsoft.ProjectBabylon - data curator can create, read, modify and delete catalog data objects and - establish relationships between objects. This role is in preview and subject - to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/data/read\",\"Microsoft.ProjectBabylon/accounts/data/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:31:33.7988825Z\",\"updatedOn\":\"2021-11-11T20:14:51.4929515Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9ef4ef9c-a049-46b0-82ab-dd8ac094c889\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9ef4ef9c-a049-46b0-82ab-dd8ac094c889\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"The Microsoft.ProjectBabylon - data reader can read catalog data objects. This role is in preview and subject - to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/data/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:33:13.5342351Z\",\"updatedOn\":\"2021-11-11T20:14:51.6729667Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c8d896ba-346d-4f50-bc1d-7d1c84130446\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d896ba-346d-4f50-bc1d-7d1c84130446\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Source Administrator\",\"type\":\"BuiltInRole\",\"description\":\"The - Microsoft.ProjectBabylon data source administrator can manage data sources - and data scans. This role is in preview and subject to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/scan/read\",\"Microsoft.ProjectBabylon/accounts/scan/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:34:01.8401954Z\",\"updatedOn\":\"2021-11-11T20:14:51.8529643Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/05b7651b-dc44-475e-b74d-df3db49fae0f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"05b7651b-dc44-475e-b74d-df3db49fae0f\"},{\"properties\":{\"roleName\":\"Purview - role 1 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/data/read\",\"Microsoft.Purview/accounts/data/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:37:15.0123345Z\",\"updatedOn\":\"2022-01-04T00:43:15.6924286Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8a3c2885-9b38-4fd2-9d99-91af537c1347\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8a3c2885-9b38-4fd2-9d99-91af537c1347\"},{\"properties\":{\"roleName\":\"Purview - role 3 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/data/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:39:22.2344740Z\",\"updatedOn\":\"2022-01-04T00:48:08.2844802Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ff100721-1b9d-43d8-af52-42b69c1272db\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ff100721-1b9d-43d8-af52-42b69c1272db\"},{\"properties\":{\"roleName\":\"Purview - role 2 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/scan/read\",\"Microsoft.Purview/accounts/scan/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:40:05.0975648Z\",\"updatedOn\":\"2022-01-04T00:47:22.9678219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/200bba9e-f0c8-430f-892b-6f0794863803\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"200bba9e-f0c8-430f-892b-6f0794863803\"},{\"properties\":{\"roleName\":\"Application - Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.DesktopVirtualization/workspaces/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-03T23:26:00.2784962Z\",\"updatedOn\":\"2021-11-11T20:14:52.9432015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ca6382a4-1721-4bcf-a114-ff0c70227b6b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ca6382a4-1721-4bcf-a114-ff0c70227b6b\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of Desktop Virtualization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:36:19.0140629Z\",\"updatedOn\":\"2021-11-11T20:14:54.0407838Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49a72310-ab8d-41df-bbb0-79b649203868\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49a72310-ab8d-41df-bbb0-79b649203868\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of Desktop Virtualization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:37:16.2910337Z\",\"updatedOn\":\"2021-11-11T20:14:54.2107872Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/082f0a83-3be5-4ba1-904c-961cca79b387\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"082f0a83-3be5-4ba1-904c-961cca79b387\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Workspace Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Workspace.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/workspaces/*\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:38:29.6089216Z\",\"updatedOn\":\"2021-11-11T20:14:54.3907854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21efdde3-836f-432b-bf3d-3e8e734d4b2b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21efdde3-836f-432b-bf3d-3e8e734d4b2b\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization User Session Operator\",\"type\":\"BuiltInRole\",\"description\":\"Operator - of the Desktop Virtualization Uesr Session.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:39:16.9100273Z\",\"updatedOn\":\"2021-11-11T20:14:54.5657970Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ea4bfff8-7fb4-485a-aadd-d4129a0ffaa6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ea4bfff8-7fb4-485a-aadd-d4129a0ffaa6\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Session Host Operator\",\"type\":\"BuiltInRole\",\"description\":\"Operator - of the Desktop Virtualization Session Host.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:39:53.2569741Z\",\"updatedOn\":\"2021-11-11T20:14:54.7508042Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2ad6aaab-ead9-4eaa-8ac5-da422f562408\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2ad6aaab-ead9-4eaa-8ac5-da422f562408\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Host Pool Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Host Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/*/read\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:40:33.1430834Z\",\"updatedOn\":\"2021-11-11T20:14:54.9257967Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ceadfde2-b300-400a-ab7b-6143895aa822\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ceadfde2-b300-400a-ab7b-6143895aa822\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Host Pool Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Host Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:40:57.2976187Z\",\"updatedOn\":\"2021-11-11T20:14:55.1057701Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e307426c-f9b6-4e81-87de-d99efb3c32bc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e307426c-f9b6-4e81-87de-d99efb3c32bc\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Application Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*/read\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:18.0287398Z\",\"updatedOn\":\"2021-11-11T20:14:55.2858006Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/aebf23d0-b568-4e86-b8f9-fe83a2c6ab55\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"aebf23d0-b568-4e86-b8f9-fe83a2c6ab55\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Application Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:38.6205531Z\",\"updatedOn\":\"2021-11-11T20:14:55.4677136Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/86240b0e-9422-4c43-887b-b61143f32ba8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86240b0e-9422-4c43-887b-b61143f32ba8\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Workspace Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Workspace.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/workspaces/read\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:58.1892707Z\",\"updatedOn\":\"2021-11-11T20:14:55.6577168Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0fa44ee9-7a7d-466b-9bb2-2bf446b1204d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0fa44ee9-7a7d-466b-9bb2-2bf446b1204d\"},{\"properties\":{\"roleName\":\"Disk - Backup Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides permission - to backup vault to perform disk backup.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/disks/read\",\"Microsoft.Compute/disks/beginGetAccess/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T07:39:03.8394514Z\",\"updatedOn\":\"2021-11-11T20:14:56.0178737Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3e5e47e6-65f7-47ef-90b5-e5dd4d455f24\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - permissions to upload and manage new Autonomous Development Platform measurements.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/discoveries/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/uploads/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurements/states/new/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurementCollections/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/measurementCollections/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/discoveries/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/uploads/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurements/states/new/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurementCollections/*\"],\"notDataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurements/states/new/changeState/action\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurements/states/new/changeState/action\"]}],\"createdOn\":\"2020-12-15T11:30:01.7459379Z\",\"updatedOn\":\"2022-01-04T13:19:41.5458536Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b8b15564-4fa6-4a59-ab12-03e1d9594795\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b8b15564-4fa6-4a59-ab12-03e1d9594795\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - read access to Autonomous Development Platform data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:11:31.9843256Z\",\"updatedOn\":\"2022-01-04T13:21:04.3207709Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d63b75f7-47ea-4f27-92ac-e0d173aaf093\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d63b75f7-47ea-4f27-92ac-e0d173aaf093\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Owner (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to Autonomous Development Platform data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:13:59.9702378Z\",\"updatedOn\":\"2022-01-04T13:20:26.2040404Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/27f8b550-c507-4db9-86f2-f4b8e816d59d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"27f8b550-c507-4db9-86f2-f4b8e816d59d\"},{\"properties\":{\"roleName\":\"Disk - Restore Operator\",\"type\":\"BuiltInRole\",\"description\":\"Provides permission - to backup vault to perform disk restore.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:18:31.8481619Z\",\"updatedOn\":\"2021-11-11T20:14:56.7408912Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b50d9833-a0cb-478e-945f-707fcc997c13\"},{\"properties\":{\"roleName\":\"Disk - Snapshot Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - permission to backup vault to manage disk snapshots.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Compute/snapshots/delete\",\"Microsoft.Compute/snapshots/write\",\"Microsoft.Compute/snapshots/read\",\"Microsoft.Compute/snapshots/beginGetAccess/action\",\"Microsoft.Compute/snapshots/endGetAccess/action\",\"Microsoft.Compute/disks/beginGetAccess/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/write\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Storage/storageAccounts/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:18:51.4471411Z\",\"updatedOn\":\"2021-11-11T20:14:56.9158814Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7efff54f-a5b4-42b5-a1c5-5411624893ce\"},{\"properties\":{\"roleName\":\"Microsoft.Kubernetes - connected cluster role\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft.Kubernetes - connected cluster role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Kubernetes/connectedClusters/read\",\"Microsoft.Kubernetes/connectedClusters/write\",\"Microsoft.Kubernetes/connectedClusters/delete\",\"Microsoft.Kubernetes/registeredSubscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-07T23:57:10.9923232Z\",\"updatedOn\":\"2021-11-11T20:14:58.2039838Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5548b2cf-c94c-4228-90ba-30851930a12f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5548b2cf-c94c-4228-90ba-30851930a12f\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Submission Manager\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to create and manage submissions to Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/delete\",\"Microsoft.SecurityDetonation/chambers/submissions/write\",\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\",\"Microsoft.SecurityDetonation/chambers/submissions/accesskeyview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/adminview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/analystview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/publicview/read\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-18T09:35:36.5739297Z\",\"updatedOn\":\"2021-11-11T20:14:58.3939604Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a37b566d-3efa-4beb-a2f2-698963fa42ce\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a37b566d-3efa-4beb-a2f2-698963fa42ce\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Publisher\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to publish and modify platforms, workflows and toolsets to Security Detonation - Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/platforms/read\",\"Microsoft.SecurityDetonation/chambers/platforms/write\",\"Microsoft.SecurityDetonation/chambers/platforms/delete\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/read\",\"Microsoft.SecurityDetonation/chambers/workflows/write\",\"Microsoft.SecurityDetonation/chambers/workflows/delete\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/write\",\"Microsoft.SecurityDetonation/chambers/toolsets/delete\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\",\"Microsoft.SecurityDetonation/chambers/publishRequests/read\",\"Microsoft.SecurityDetonation/chambers/publishRequests/cancel/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-18T11:43:14.0858184Z\",\"updatedOn\":\"2021-11-11T20:14:58.5639749Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/352470b3-6a9c-4686-b503-35deb827e500\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"352470b3-6a9c-4686-b503-35deb827e500\"},{\"properties\":{\"roleName\":\"Collaborative - Runtime Operator\",\"type\":\"BuiltInRole\",\"description\":\"Can manage resources - created by AICS at runtime\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.IndustryDataLifecycle/derivedModels/*\",\"Microsoft.IndustryDataLifecycle/pipelineSets/*\",\"Microsoft.IndustryDataLifecycle/modelMappings/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-19T10:00:27.3464971Z\",\"updatedOn\":\"2021-11-11T20:14:58.7442136Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7a6f0e70-c033-4fb1-828c-08514e5f4102\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7a6f0e70-c033-4fb1-828c-08514e5f4102\"},{\"properties\":{\"roleName\":\"CosmosRestoreOperator\",\"type\":\"BuiltInRole\",\"description\":\"Can - perform restore action for Cosmos DB database account with continuous backup - mode\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action\",\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read\",\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-21T19:51:35.3884884Z\",\"updatedOn\":\"2021-11-11T20:14:59.4892686Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5432c526-bc82-444a-b7ba-57c5b0b5b34f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5432c526-bc82-444a-b7ba-57c5b0b5b34f\"},{\"properties\":{\"roleName\":\"FHIR - Data Converter\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to convert data from legacy format to FHIR\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/convertData/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/convertData/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-22T19:39:01.1601069Z\",\"updatedOn\":\"2021-11-11T20:14:59.8605937Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a1705bd2-3a8f-45a5-8683-466fcfd5cc24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a1705bd2-3a8f-45a5-8683-466fcfd5cc24\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Automation Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Automation Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Logic/workflows/triggers/read\",\"Microsoft.Logic/workflows/triggers/listCallbackUrl/action\",\"Microsoft.Logic/workflows/runs/read\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/triggers/read\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/triggers/listCallbackUrl/action\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/runs/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-24T08:50:52.0382991Z\",\"updatedOn\":\"2022-01-26T09:25:00.4699337Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f4c81013-99ee-4d62-a7ee-b3f1f648599a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f4c81013-99ee-4d62-a7ee-b3f1f648599a\"},{\"properties\":{\"roleName\":\"Quota - Request Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and create - quota requests, get quota request status, and create support tickets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Capacity/resourceProviders/locations/serviceLimits/read\",\"Microsoft.Capacity/resourceProviders/locations/serviceLimits/write\",\"Microsoft.Capacity/resourceProviders/locations/serviceLimitsRequests/read\",\"Microsoft.Capacity/register/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-02-03T00:06:35.8404575Z\",\"updatedOn\":\"2021-11-11T20:15:00.9583919Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0e5f05e5-9ab9-446b-b98d-1e2157c94125\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0e5f05e5-9ab9-446b-b98d-1e2157c94125\"},{\"properties\":{\"roleName\":\"EventGrid - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage EventGrid - operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-02-08T18:46:18.8999557Z\",\"updatedOn\":\"2021-11-11T20:15:01.6867802Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1e241071-0855-49ea-94dc-649edcd759de\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1e241071-0855-49ea-94dc-649edcd759de\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to query submission info and files from Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-01T14:06:46.2814905Z\",\"updatedOn\":\"2021-11-11T20:15:03.3274090Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/28241645-39f8-410b-ad48-87863e2951d5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"28241645-39f8-410b-ad48-87863e2951d5\"},{\"properties\":{\"roleName\":\"Object - Anchors Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - read ingestion jobs for an object anchors account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-02T01:20:47.0279813Z\",\"updatedOn\":\"2021-11-11T20:15:03.5006082Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4a167cdf-cb95-4554-9203-2347fe489bd9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4a167cdf-cb95-4554-9203-2347fe489bd9\"},{\"properties\":{\"roleName\":\"Object - Anchors Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with ingestion capabilities for an object anchors account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/action\",\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-02T01:42:02.0014737Z\",\"updatedOn\":\"2021-11-11T20:15:03.6855873Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ca0835dd-bacc-42dd-8ed2-ed5e7230d15b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ca0835dd-bacc-42dd-8ed2-ed5e7230d15b\"},{\"properties\":{\"roleName\":\"WorkloadBuilder - Migration Agent Role\",\"type\":\"BuiltInRole\",\"description\":\"WorkloadBuilder - Migration Agent Role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.WorkloadBuilder/migrationAgents/Read\",\"Microsoft.WorkloadBuilder/migrationAgents/Write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-03-11T17:07:20.0828003Z\",\"updatedOn\":\"2021-11-11T20:15:04.2456706Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d17ce0a2-0697-43bc-aac5-9113337ab61c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d17ce0a2-0697-43bc-aac5-9113337ab61c\"},{\"properties\":{\"roleName\":\"Web - PubSub Service Owner (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to Azure Web PubSub Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/WebPubSub/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-24T09:10:11.8335180Z\",\"updatedOn\":\"2021-11-16T05:16:52.6491279Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/12cf5a90-567b-43ae-8102-96cf46c7d9b4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"12cf5a90-567b-43ae-8102-96cf46c7d9b4\"},{\"properties\":{\"roleName\":\"Web - PubSub Service Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - access to Azure Web PubSub Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/WebPubSub/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-24T09:11:12.6235436Z\",\"updatedOn\":\"2021-11-16T05:17:12.8340953Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bfb1c7d2-fb1a-466b-b2ba-aee63b92deaf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bfb1c7d2-fb1a-466b-b2ba-aee63b92deaf\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-25T11:12:12.6786010Z\",\"updatedOn\":\"2021-11-11T20:15:05.3368606Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b5537268-8956-4941-a8f0-646150406f0c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b5537268-8956-4941-a8f0-646150406f0c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Speech User\",\"type\":\"BuiltInRole\",\"description\":\"Access to - the real-time speech recognition and batch transcription APIs, real-time speech - synthesis and long audio APIs, as well as to read the data/test/model/endpoint - for custom models, but can\u2019t create, delete or modify the data/test/model/endpoint - for custom models.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/SpeechServices/*/read\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/read\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/write\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/delete\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/frontend/action\",\"Microsoft.CognitiveServices/accounts/SpeechServices/text-dependent/*/action\",\"Microsoft.CognitiveServices/accounts/SpeechServices/text-independent/*/action\",\"Microsoft.CognitiveServices/accounts/CustomVoice/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVoice/evaluations/*\",\"Microsoft.CognitiveServices/accounts/CustomVoice/longaudiosynthesis/*\",\"Microsoft.CognitiveServices/accounts/AudioContentCreation/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVoice/datasets/files/read\",\"Microsoft.CognitiveServices/accounts/CustomVoice/datasets/utterances/read\"]}],\"createdOn\":\"2021-03-30T11:28:27.4339032Z\",\"updatedOn\":\"2022-05-23T15:08:46.2082116Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f2dc8367-1007-4938-bd23-fe263f013447\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f2dc8367-1007-4938-bd23-fe263f013447\"},{\"properties\":{\"roleName\":\"Cognitive - Services Speech Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to Speech projects, including read, write and delete all entities, - for real-time speech recognition and batch transcription tasks, real-time - speech synthesis and long audio tasks, custom speech and custom voice.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/SpeechServices/*\",\"Microsoft.CognitiveServices/accounts/CustomVoice/*\",\"Microsoft.CognitiveServices/accounts/AudioContentCreation/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-30T11:28:49.7826633Z\",\"updatedOn\":\"2022-05-23T15:08:46.1925859Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0e75ca1e-0464-4b4d-8b93-68208a576181\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0e75ca1e-0464-4b4d-8b93-68208a576181\"},{\"properties\":{\"roleName\":\"Cognitive - Services Face Recognizer\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you perform detect, verify, identify, group, and find similar operations on - Face API. This role does not allow create or delete operations, which makes - it well suited for endpoints that only need inferencing capabilities, following - 'least privilege' best practices.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/Face/detect/action\",\"Microsoft.CognitiveServices/accounts/Face/verify/action\",\"Microsoft.CognitiveServices/accounts/Face/identify/action\",\"Microsoft.CognitiveServices/accounts/Face/group/action\",\"Microsoft.CognitiveServices/accounts/Face/findsimilars/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-31T01:51:41.3557295Z\",\"updatedOn\":\"2021-11-11T20:15:05.8818362Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9894cab4-e18a-44aa-828b-cb588cd6f2d7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9894cab4-e18a-44aa-828b-cb588cd6f2d7\"},{\"properties\":{\"roleName\":\"Media - Services Account Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Media Services accounts; read-only access to other - Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/write\",\"Microsoft.Media/mediaservices/delete\",\"Microsoft.Media/mediaservices/privateEndpointConnectionsApproval/action\",\"Microsoft.Media/mediaservices/privateEndpointConnections/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:20:32.2956636Z\",\"updatedOn\":\"2021-11-11T20:15:07.1518844Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/054126f8-9a2b-4f1c-a9ad-eca461f08466\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"054126f8-9a2b-4f1c-a9ad-eca461f08466\"},{\"properties\":{\"roleName\":\"Media - Services Live Events Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Live Events, Assets, Asset Filters, and Streaming - Locators; read-only access to other Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/*\",\"Microsoft.Media/mediaservices/assets/assetfilters/*\",\"Microsoft.Media/mediaservices/streamingLocators/*\",\"Microsoft.Media/mediaservices/liveEvents/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/assets/getEncryptionKey/action\",\"Microsoft.Media/mediaservices/streamingLocators/listContentKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:00.6119555Z\",\"updatedOn\":\"2021-11-11T20:15:07.3318873Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/532bc159-b25e-42c0-969e-a1d439f60d77\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"532bc159-b25e-42c0-969e-a1d439f60d77\"},{\"properties\":{\"roleName\":\"Media - Services Media Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Assets, Asset Filters, Streaming Locators, and Jobs; - read-only access to other Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/*\",\"Microsoft.Media/mediaservices/assets/assetfilters/*\",\"Microsoft.Media/mediaservices/streamingLocators/*\",\"Microsoft.Media/mediaservices/transforms/jobs/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/assets/getEncryptionKey/action\",\"Microsoft.Media/mediaservices/streamingLocators/listContentKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:23.2236495Z\",\"updatedOn\":\"2021-11-11T20:15:07.5068487Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e4395492-1534-4db2-bedf-88c14621589c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e4395492-1534-4db2-bedf-88c14621589c\"},{\"properties\":{\"roleName\":\"Media - Services Policy Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Account Filters, Streaming Policies, Content Key - Policies, and Transforms; read-only access to other Media Services resources. - Cannot create Jobs, Assets or Streaming resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/accountFilters/*\",\"Microsoft.Media/mediaservices/streamingPolicies/*\",\"Microsoft.Media/mediaservices/contentKeyPolicies/*\",\"Microsoft.Media/mediaservices/transforms/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/contentKeyPolicies/getPolicyPropertiesWithSecrets/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:46.9534330Z\",\"updatedOn\":\"2021-11-11T20:15:07.6968496Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c4bba371-dacd-4a26-b320-7250bca963ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c4bba371-dacd-4a26-b320-7250bca963ae\"},{\"properties\":{\"roleName\":\"Media - Services Streaming Endpoints Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Streaming Endpoints; read-only access to other Media - Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/streamingEndpoints/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:22:04.4594851Z\",\"updatedOn\":\"2021-11-11T20:15:07.8718907Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/99dba123-b5fe-44d5-874c-ced7199a5804\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"99dba123-b5fe-44d5-874c-ced7199a5804\"},{\"properties\":{\"roleName\":\"Stream - Analytics Query Tester\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - perform query testing without creating a stream analytics job first\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.StreamAnalytics/locations/TestQuery/action\",\"Microsoft.StreamAnalytics/locations/OperationResults/read\",\"Microsoft.StreamAnalytics/locations/SampleInput/action\",\"Microsoft.StreamAnalytics/locations/CompileQuery/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-20T17:33:24.5727870Z\",\"updatedOn\":\"2021-11-11T20:15:08.0481551Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1ec5b3c1-b17e-4e25-8312-2acb3c3c5abf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1ec5b3c1-b17e-4e25-8312-2acb3c3c5abf\"},{\"properties\":{\"roleName\":\"AnyBuild - Builder\",\"type\":\"BuiltInRole\",\"description\":\"Basic user role for AnyBuild. - This role allows listing of agent information and execution of remote build - capabilities.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AnyBuild/clusters/build/write\",\"Microsoft.AnyBuild/clusters/build/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-20T22:07:00.4963853Z\",\"updatedOn\":\"2021-11-11T20:15:08.4254134Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a2138dac-4907-4679-a376-736901ed8ad8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a2138dac-4907-4679-a376-736901ed8ad8\"},{\"properties\":{\"roleName\":\"IoT - Hub Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full - read access to IoT Hub data-plane properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/*/read\",\"Microsoft.Devices/IotHubs/fileUpload/notifications/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T18:03:29.8843192Z\",\"updatedOn\":\"2021-11-11T20:15:08.6054154Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b447c946-2db7-41ec-983d-d8bf3b1c77e3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b447c946-2db7-41ec-983d-d8bf3b1c77e3\"},{\"properties\":{\"roleName\":\"IoT - Hub Twin Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read and write access to all IoT Hub device and module twins.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/twins/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:36:10.1136903Z\",\"updatedOn\":\"2021-11-11T20:15:08.7855063Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/494bdba2-168f-4f31-a0a1-191d2f7c028c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494bdba2-168f-4f31-a0a1-191d2f7c028c\"},{\"properties\":{\"roleName\":\"IoT - Hub Registry Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to IoT Hub device registry.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/devices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:36:47.5532704Z\",\"updatedOn\":\"2021-11-11T20:15:08.9804295Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4ea46cd5-c1b2-4a8e-910b-273211f9ce47\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4ea46cd5-c1b2-4a8e-910b-273211f9ce47\"},{\"properties\":{\"roleName\":\"IoT - Hub Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - full access to IoT Hub data plane operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:37:16.9927761Z\",\"updatedOn\":\"2021-11-11T20:15:09.1754206Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4fc6c259-987e-4a07-842e-c321cc9d413f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fc6c259-987e-4a07-842e-c321cc9d413f\"},{\"properties\":{\"roleName\":\"Test - Base Reader\",\"type\":\"BuiltInRole\",\"description\":\"Let you view and - download packages and test results.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.TestBase/testBaseAccounts/packages/testResults/getDownloadUrl/action\",\"Microsoft.TestBase/testBaseAccounts/packages/testResults/getVideoDownloadUrl/action\",\"Microsoft.TestBase/testBaseAccounts/packages/getDownloadUrl/action\",\"Microsoft.TestBase/*/read\",\"Microsoft.TestBase/testBaseAccounts/customerEvents/write\",\"Microsoft.TestBase/testBaseAccounts/customerEvents/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-05-11T23:41:33.1038367Z\",\"updatedOn\":\"2021-11-11T20:15:10.8004347Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/15e0f5a1-3450-4248-8e25-e2afe88a9e85\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"15e0f5a1-3450-4248-8e25-e2afe88a9e85\"},{\"properties\":{\"roleName\":\"Search - Index Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants read - access to Azure Cognitive Search index data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Search/searchServices/indexes/documents/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-01T20:26:13.4850461Z\",\"updatedOn\":\"2021-11-11T20:15:11.3604371Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1407120a-92aa-4202-b7e9-c0e197c71c8f\"},{\"properties\":{\"roleName\":\"Search - Index Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to Azure Cognitive Search index data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Search/searchServices/indexes/documents/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-01T22:15:16.5388472Z\",\"updatedOn\":\"2021-11-11T20:15:11.5504385Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8ebe5a00-799e-43f5-93ac-243d3dce84a7\"},{\"properties\":{\"roleName\":\"Storage - Table Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read access to Azure Storage tables and entities\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-15T06:40:54.9150717Z\",\"updatedOn\":\"2021-11-11T20:15:12.1005298Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/76199698-9eea-4c19-bc75-cec21354c6b6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76199698-9eea-4c19-bc75-cec21354c6b6\"},{\"properties\":{\"roleName\":\"Storage - Table Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write and delete access to Azure Storage tables and entities\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/read\",\"Microsoft.Storage/storageAccounts/tableServices/tables/write\",\"Microsoft.Storage/storageAccounts/tableServices/tables/delete\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/read\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/write\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/delete\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/add/action\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/update/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-15T06:51:59.8207610Z\",\"updatedOn\":\"2021-11-11T20:15:12.2854966Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3\"},{\"properties\":{\"roleName\":\"DICOM - Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read and search DICOM - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/dicomservices/resources/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-17T20:58:30.1630494Z\",\"updatedOn\":\"2021-11-11T20:15:13.0154948Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e89c7a3c-2f64-4fa1-a847-3e4c9ba4283a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e89c7a3c-2f64-4fa1-a847-3e4c9ba4283a\"},{\"properties\":{\"roleName\":\"DICOM - Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to DICOM - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/dicomservices/resources/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-17T20:59:30.8659515Z\",\"updatedOn\":\"2021-11-11T20:15:13.1904985Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/58a3b984-7adf-4c20-983a-32417c86fbc8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"58a3b984-7adf-4c20-983a-32417c86fbc8\"},{\"properties\":{\"roleName\":\"EventGrid - Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows send access - to event grid events.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/topics/read\",\"Microsoft.EventGrid/domains/read\",\"Microsoft.EventGrid/partnerNamespaces/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventGrid/events/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-02T21:55:40.4847495Z\",\"updatedOn\":\"2021-11-11T20:15:13.5605134Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d5a91429-5739-47e2-a06b-3470a27159e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d5a91429-5739-47e2-a06b-3470a27159e7\"},{\"properties\":{\"roleName\":\"Disk - Pool Operator\",\"type\":\"BuiltInRole\",\"description\":\"Used by the StoragePool - Resource Provider to manage Disks added to a Disk Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-08T17:26:05.1079972Z\",\"updatedOn\":\"2021-11-11T20:15:13.9154612Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/60fc6e62-5479-42d4-8bf4-67625fcc2840\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"60fc6e62-5479-42d4-8bf4-67625fcc2840\"},{\"properties\":{\"roleName\":\"AzureML - Data Scientist\",\"type\":\"BuiltInRole\",\"description\":\"Can perform all - actions within an Azure Machine Learning workspace, except for creating or - deleting compute resources and modifying the workspace itself.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.MachineLearningServices/workspaces/*/read\",\"Microsoft.MachineLearningServices/workspaces/*/action\",\"Microsoft.MachineLearningServices/workspaces/*/delete\",\"Microsoft.MachineLearningServices/workspaces/*/write\"],\"notActions\":[\"Microsoft.MachineLearningServices/workspaces/delete\",\"Microsoft.MachineLearningServices/workspaces/write\",\"Microsoft.MachineLearningServices/workspaces/computes/*/write\",\"Microsoft.MachineLearningServices/workspaces/computes/*/delete\",\"Microsoft.MachineLearningServices/workspaces/computes/listKeys/action\",\"Microsoft.MachineLearningServices/workspaces/listKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-14T21:51:06.0361218Z\",\"updatedOn\":\"2021-11-11T20:15:14.6405263Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f6c7c914-8db3-469d-8ca1-694a8f32e121\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f6c7c914-8db3-469d-8ca1-694a8f32e121\"},{\"properties\":{\"roleName\":\"Grafana - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana admin - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-15T21:32:35.3802340Z\",\"updatedOn\":\"2021-11-11T20:15:14.8104670Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22926164-76b3-42b3-bc55-97df8dab3e41\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"22926164-76b3-42b3-bc55-97df8dab3e41\"},{\"properties\":{\"roleName\":\"Azure - Connected SQL Server Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft.AzureArcData\_service\_role\_to\_access\_the\_resources\_of\_Microsoft.AzureArcData\_stored\_with\_RPSAAS.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureArcData/sqlServerInstances/read\",\"Microsoft.AzureArcData/sqlServerInstances/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-19T23:52:15.8885739Z\",\"updatedOn\":\"2021-11-11T20:15:15.1754742Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e8113dce-c529-4d33-91fa-e9b972617508\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e8113dce-c529-4d33-91fa-e9b972617508\"},{\"properties\":{\"roleName\":\"Azure - Relay Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows for send - access to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*/wcfRelays/read\",\"Microsoft.Relay/*/hybridConnections/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T15:37:20.7558643Z\",\"updatedOn\":\"2021-11-11T20:15:15.5454755Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/26baccc8-eea7-41f1-98f4-1762cc7f685d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"26baccc8-eea7-41f1-98f4-1762cc7f685d\"},{\"properties\":{\"roleName\":\"Azure - Relay Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full access - to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T15:44:26.3023126Z\",\"updatedOn\":\"2021-11-11T20:15:15.7154782Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2787bf04-f1f5-4bfe-8383-c8a24483ee38\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2787bf04-f1f5-4bfe-8383-c8a24483ee38\"},{\"properties\":{\"roleName\":\"Azure - Relay Listener\",\"type\":\"BuiltInRole\",\"description\":\"Allows for listen - access to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*/wcfRelays/read\",\"Microsoft.Relay/*/hybridConnections/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*/listen/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T18:38:03.1437496Z\",\"updatedOn\":\"2021-11-11T20:15:15.9005232Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/26e0b698-aa6d-4085-9386-aadae190014d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"26e0b698-aa6d-4085-9386-aadae190014d\"},{\"properties\":{\"roleName\":\"Grafana - Viewer\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana Viewer - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaViewer/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-05T16:36:18.7737511Z\",\"updatedOn\":\"2021-11-11T20:15:16.9904932Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/60921a7e-fef1-4a43-9b16-a26c52ad4769\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"60921a7e-fef1-4a43-9b16-a26c52ad4769\"},{\"properties\":{\"roleName\":\"Grafana - Editor\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana Editor - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaEditor/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-05T16:37:32.5299593Z\",\"updatedOn\":\"2021-11-11T20:15:17.1805426Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a79a5197-3a5c-4973-a920-486035ffd60f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a79a5197-3a5c-4973-a920-486035ffd60f\"},{\"properties\":{\"roleName\":\"Automation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Manage azure automation - resources and other resources using azure automation.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Automation/automationAccounts/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/ActionGroups/*\",\"Microsoft.Insights/ActivityLogAlerts/*\",\"Microsoft.Insights/MetricAlerts/*\",\"Microsoft.Insights/ScheduledQueryRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T10:18:19.1054699Z\",\"updatedOn\":\"2021-11-11T20:15:17.7304954Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f353d9bd-d4a6-484e-a77a-8050b599b867\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f353d9bd-d4a6-484e-a77a-8050b599b867\"},{\"properties\":{\"roleName\":\"Kubernetes - Extension Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can create, - update, get, list and delete Kubernetes Extensions, and get extension async - operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.KubernetesConfiguration/extensions/write\",\"Microsoft.KubernetesConfiguration/extensions/read\",\"Microsoft.KubernetesConfiguration/extensions/delete\",\"Microsoft.KubernetesConfiguration/extensions/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:47:50.6828896Z\",\"updatedOn\":\"2021-11-11T20:15:17.9155393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/85cb6faf-e071-4c9b-8136-154b5a04f717\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"85cb6faf-e071-4c9b-8136-154b5a04f717\"},{\"properties\":{\"roleName\":\"Device - Provisioning Service Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full read access to Device Provisioning Service data-plane properties.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/provisioningServices/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:53:12.1374732Z\",\"updatedOn\":\"2021-11-11T20:15:18.0905503Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/10745317-c249-44a1-a5ce-3a4353c0bbd8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"10745317-c249-44a1-a5ce-3a4353c0bbd8\"},{\"properties\":{\"roleName\":\"Device - Provisioning Service Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Device Provisioning Service data-plane operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/provisioningServices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:54:03.2783227Z\",\"updatedOn\":\"2021-11-11T20:15:18.2605302Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dfce44e4-17b7-4bd1-a6d1-04996ec95633\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dfce44e4-17b7-4bd1-a6d1-04996ec95633\"},{\"properties\":{\"roleName\":\"CodeSigning - Certificate Profile Signer\",\"type\":\"BuiltInRole\",\"description\":\"Sign - files with a certificate profile. This role is in preview and subject to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CodeSigning/certificateProfiles/Sign/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-16T23:17:53.0002693Z\",\"updatedOn\":\"2021-11-11T20:15:18.6105679Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2837e146-70d7-4cfd-ad55-7efa6464f958\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2837e146-70d7-4cfd-ad55-7efa6464f958\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Service Registry Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Service Registry\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/eurekaService/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-20T04:40:17.9785063Z\",\"updatedOn\":\"2021-11-11T20:15:18.9655101Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cff1b556-2399-4e7e-856d-a8f754be7b65\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cff1b556-2399-4e7e-856d-a8f754be7b65\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Service Registry Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read, write and delete access to Azure Spring Cloud Service Registry\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/eurekaService/read\",\"Microsoft.AppPlatform/Spring/eurekaService/write\",\"Microsoft.AppPlatform/Spring/eurekaService/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-20T04:42:38.9153779Z\",\"updatedOn\":\"2021-11-11T20:15:19.1405497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f5880b48-c26d-48be-b172-7927bfa1c8f1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f5880b48-c26d-48be-b172-7927bfa1c8f1\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Config Server Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Config Server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/configService/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-26T01:50:51.5123701Z\",\"updatedOn\":\"2021-11-11T20:15:19.3155517Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d04c6db6-4947-4782-9e91-30a88feb7be7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d04c6db6-4947-4782-9e91-30a88feb7be7\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Config Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read, write and delete access to Azure Spring Cloud Config Server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/configService/read\",\"Microsoft.AppPlatform/Spring/configService/write\",\"Microsoft.AppPlatform/Spring/configService/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2021-09-06T02:30:47.8611580Z\",\"updatedOn\":\"2021-11-11T20:15:20.0405208Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a06f5c24-21a7-4e1a-aa2b-f19eb6684f5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a06f5c24-21a7-4e1a-aa2b-f19eb6684f5b\"},{\"properties\":{\"roleName\":\"Azure - VM Managed identities restore Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Azure - VM Managed identities restore Contributors are allowed to perform Azure VM - Restores with managed identities both user and system\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-09-13T05:27:59.2180214Z\",\"updatedOn\":\"2021-11-11T20:15:20.5805266Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6ae96244-5829-4925-a7d3-5975537d91dd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6ae96244-5829-4925-a7d3-5975537d91dd\"},{\"properties\":{\"roleName\":\"Azure - Maps Search and Render Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to very limited set of data APIs for common visual web SDK scenarios. - Specifically, render and search data APIs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/services/render/read\",\"Microsoft.Maps/accounts/services/search/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-10-01T22:17:50.5178931Z\",\"updatedOn\":\"2021-11-11T20:15:22.0455410Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6be48352-4f82-47c9-ad5e-0acacefdb005\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6be48352-4f82-47c9-ad5e-0acacefdb005\"},{\"properties\":{\"roleName\":\"Azure - Maps Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants access - all Azure Maps resource management.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Maps/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-01T22:19:13.1357904Z\",\"updatedOn\":\"2021-11-11T20:15:22.2455414Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dba33070-676a-4fb0-87fa-064dc56ff7fb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dba33070-676a-4fb0-87fa-064dc56ff7fb\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware VM Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Arc - VMware VM Contributor has permissions to perform all VM actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/virtualmachines/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-18T20:19:53.0087024Z\",\"updatedOn\":\"2021-11-11T20:15:23.8706020Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b748a06d-6150-4f8a-aaa9-ce3940cd96cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b748a06d-6150-4f8a-aaa9-ce3940cd96cb\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Private Cloud User\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc VMware Private Cloud User has permissions to use the VMware cloud resources - to deploy VMs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.ConnectedVMwarevSphere/virtualnetworks/join/action\",\"Microsoft.ConnectedVMwarevSphere/virtualnetworks/Read\",\"Microsoft.ConnectedVMwarevSphere/virtualmachinetemplates/clone/action\",\"Microsoft.ConnectedVMwarevSphere/virtualmachinetemplates/Read\",\"Microsoft.ConnectedVMwarevSphere/resourcepools/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/resourcepools/Read\",\"Microsoft.ConnectedVMwarevSphere/hosts/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/hosts/Read\",\"Microsoft.ConnectedVMwarevSphere/clusters/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/clusters/Read\",\"Microsoft.ConnectedVMwarevSphere/datastores/allocateSpace/action\",\"Microsoft.ConnectedVMwarevSphere/datastores/Read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-18T20:20:46.5105444Z\",\"updatedOn\":\"2021-11-11T20:15:24.0456080Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ce551c02-7c42-47e0-9deb-e3b6fc3a9a83\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ce551c02-7c42-47e0-9deb-e3b6fc3a9a83\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Administrator role \",\"type\":\"BuiltInRole\",\"description\":\"Arc - VMware VM Contributor has permissions to perform all connected VMwarevSphere - actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-01T17:12:42.6172725Z\",\"updatedOn\":\"2021-11-11T20:15:25.1275776Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ddc140ed-e463-4246-9145-7c664192013f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ddc140ed-e463-4246-9145-7c664192013f\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Private Clouds Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc VMware Private Clouds Onboarding role has permissions to provision all - the required resources for onboard and deboard vCenter instances to Azure.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/vcenters/Write\",\"Microsoft.ConnectedVMwarevSphere/vcenters/Read\",\"Microsoft.ConnectedVMwarevSphere/vcenters/Delete\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.KubernetesConfiguration/extensions/Write\",\"Microsoft.KubernetesConfiguration/extensions/Read\",\"Microsoft.KubernetesConfiguration/extensions/Delete\",\"Microsoft.KubernetesConfiguration/operations/read\",\"Microsoft.ExtendedLocation/customLocations/Read\",\"Microsoft.ExtendedLocation/customLocations/Write\",\"Microsoft.ExtendedLocation/customLocations/Delete\",\"Microsoft.ExtendedLocation/customLocations/deploy/action\",\"Microsoft.ResourceConnector/appliances/Read\",\"Microsoft.ResourceConnector/appliances/Write\",\"Microsoft.ResourceConnector/appliances/Delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-01T22:18:08.4480747Z\",\"updatedOn\":\"2022-01-14T02:51:08.7237156Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/67d33e57-3129-45e6-bb0b-7cc522f762fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"67d33e57-3129-45e6-bb0b-7cc522f762fa\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Owner\",\"type\":\"BuiltInRole\",\"description\":\" Has access - to all Read, Test, Write, Deploy and Delete functions under LUIS\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T03:28:02.9611800Z\",\"updatedOn\":\"2021-11-11T20:15:25.4884913Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f72c8140-2111-481c-87ff-72b910f6e3f8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f72c8140-2111-481c-87ff-72b910f6e3f8\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Reader\",\"type\":\"BuiltInRole\",\"description\":\"Has - access to Read and Test functions under Language portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*/read\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*/read\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/projects/export/action\",\"Microsoft.CognitiveServices/accounts/Language/*/read\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/export/action\",\"Microsoft.CognitiveServices/accounts/Language/query-text/action\",\"Microsoft.CognitiveServices/accounts/Language/query-knowledgebases/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\"]}],\"createdOn\":\"2021-11-04T03:29:14.7643336Z\",\"updatedOn\":\"2022-03-29T18:02:09.1378280Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7628b7b8-a8b2-4cdc-b46f-e9b35248918e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7628b7b8-a8b2-4cdc-b46f-e9b35248918e\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Writer\",\"type\":\"BuiltInRole\",\"description\":\" Has - access to all Read, Test, and Write functions under Language Portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*\",\"Microsoft.CognitiveServices/accounts/Language/*\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/projects/publish/action\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/projects/deployments/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/delete\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/write\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/delete\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/swap/action\"]}],\"createdOn\":\"2021-11-04T03:29:39.5761019Z\",\"updatedOn\":\"2022-03-29T18:03:23.4902754Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f2310ca1-dc64-4889-bb49-c8e0fa3d47a8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f2310ca1-dc64-4889-bb49-c8e0fa3d47a8\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Owner\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to all Read, Test, Write, Deploy and Delete functions under Language portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*\",\"Microsoft.CognitiveServices/accounts/Language/*\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\"]}],\"createdOn\":\"2021-11-04T03:30:07.6173528Z\",\"updatedOn\":\"2022-03-29T18:03:46.5617184Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f07febfe-79bc-46b1-8b37-790e26e6e498\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f07febfe-79bc-46b1-8b37-790e26e6e498\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Reader\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to Read and Test functions under LUIS.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*/read\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/testdatasets/write\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T03:30:31.2704834Z\",\"updatedOn\":\"2021-11-11T20:15:26.2134821Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18e81cdc-4e98-4e29-a639-e7d10c5a6226\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18e81cdc-4e98-4e29-a639-e7d10c5a6226\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Writer\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to all Read, Test, and Write functions under LUIS\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/apps/delete\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/move/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/publish/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/settings/write\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/azureaccounts/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/azureaccounts/delete\"]}],\"createdOn\":\"2021-11-04T03:31:12.1580052Z\",\"updatedOn\":\"2021-11-11T20:15:26.3934523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6322a993-d5c9-4bed-b113-e49bbea25b27\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6322a993-d5c9-4bed-b113-e49bbea25b27\"},{\"properties\":{\"roleName\":\"PlayFab - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides read access to - PlayFab resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.PlayFab/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T23:26:57.2248605Z\",\"updatedOn\":\"2021-11-11T20:15:26.5784834Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a9a19cc5-31f4-447c-901f-56c0bb18fcaf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a9a19cc5-31f4-447c-901f-56c0bb18fcaf\"},{\"properties\":{\"roleName\":\"Load - Test Contributor\",\"type\":\"BuiltInRole\",\"description\":\"View, create, - update, delete and execute load tests. View and list load test resources but - can not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/loadtests/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-09T08:11:21.0936461Z\",\"updatedOn\":\"2021-11-11T20:15:27.1189225Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/749a398d-560b-491b-bb21-08924219302e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749a398d-560b-491b-bb21-08924219302e\"},{\"properties\":{\"roleName\":\"Load - Test Owner\",\"type\":\"BuiltInRole\",\"description\":\"Execute all operations - on load test resources and load tests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-09T08:12:24.5500195Z\",\"updatedOn\":\"2021-11-11T20:15:27.2897153Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/45bb0b16-2f0c-4e78-afaa-a07599b003f6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"45bb0b16-2f0c-4e78-afaa-a07599b003f6\"},{\"properties\":{\"roleName\":\"PlayFab - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides contributor - access to PlayFab resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.PlayFab/*/read\",\"Microsoft.PlayFab/*/write\",\"Microsoft.PlayFab/*/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T00:55:37.3326276Z\",\"updatedOn\":\"2021-11-11T20:15:28.0547167Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0c8b84dc-067c-4039-9615-fa1a4b77c726\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0c8b84dc-067c-4039-9615-fa1a4b77c726\"},{\"properties\":{\"roleName\":\"Load - Test Reader\",\"type\":\"BuiltInRole\",\"description\":\"View and list all - load tests and load test resources but can not make any changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/loadtests/readTest/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T06:14:08.3903105Z\",\"updatedOn\":\"2021-11-11T20:15:28.2297181Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3ae3fb29-0000-4ccd-bf80-542e7b26e081\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3ae3fb29-0000-4ccd-bf80-542e7b26e081\"},{\"properties\":{\"roleName\":\"Cognitive - Services Immersive Reader User\",\"type\":\"BuiltInRole\",\"description\":\"Provides - access to create Immersive Reader sessions and call APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/ImmersiveReader/getcontentmodelforreader/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T19:52:14.4487503Z\",\"updatedOn\":\"2021-11-11T20:15:28.4146975Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b2de6794-95db-4659-8781-7e080d3f2b9d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b2de6794-95db-4659-8781-7e080d3f2b9d\"},{\"properties\":{\"roleName\":\"Lab - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"The lab - services contributor role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LabServices/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:51:03.3308981Z\",\"updatedOn\":\"2021-11-11T20:15:28.7792013Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f69b8690-cc87-41d6-b77a-a4bc3c0a966f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f69b8690-cc87-41d6-b77a-a4bc3c0a966f\"},{\"properties\":{\"roleName\":\"Lab - Services Reader\",\"type\":\"BuiltInRole\",\"description\":\"The lab services - reader role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LabServices/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:55:30.4208618Z\",\"updatedOn\":\"2021-11-11T20:15:28.9592032Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2a5c394f-5eb7-4d4f-9c8e-e8eae39faebc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a5c394f-5eb7-4d4f-9c8e-e8eae39faebc\"},{\"properties\":{\"roleName\":\"Lab - Assistant\",\"type\":\"BuiltInRole\",\"description\":\"The lab assistant role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:56:10.4295443Z\",\"updatedOn\":\"2021-11-11T20:15:29.1442530Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ce40b423-cede-4313-a93f-9b28290b72e1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ce40b423-cede-4313-a93f-9b28290b72e1\"},{\"properties\":{\"roleName\":\"Lab - Operator\",\"type\":\"BuiltInRole\",\"description\":\"The lab operator role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/publish/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/schedules/write\",\"Microsoft.LabServices/labs/schedules/delete\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/write\",\"Microsoft.LabServices/labs/users/delete\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/labs/virtualMachines/resetPassword/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:56:41.9942935Z\",\"updatedOn\":\"2021-11-11T20:15:29.3242664Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a36e6959-b6be-4b12-8e9f-ef4b474d304d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a36e6959-b6be-4b12-8e9f-ef4b474d304d\"},{\"properties\":{\"roleName\":\"Lab - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"The lab contributor - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/write\",\"Microsoft.LabServices/labs/delete\",\"Microsoft.LabServices/labs/publish/action\",\"Microsoft.LabServices/labs/syncGroup/action\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/schedules/write\",\"Microsoft.LabServices/labs/schedules/delete\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/write\",\"Microsoft.LabServices/labs/users/delete\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/labs/virtualMachines/resetPassword/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:57:05.9018065Z\",\"updatedOn\":\"2021-11-11T20:15:29.4992096Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5daaa2af-1fe8-407c-9122-bba179798270\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5daaa2af-1fe8-407c-9122-bba179798270\"},{\"properties\":{\"roleName\":\"Chamber - User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything - under your HPC Workbench chamber, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HpcWorkbench/instances/chambers/*/read\",\"Microsoft.HpcWorkbench/instances/chambers/workloads/*\",\"Microsoft.HpcWorkbench/instances/chambers/getUploadUri/action\",\"Microsoft.HpcWorkbench/instances/consortiums/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-12-15T20:51:06.2119764Z\",\"updatedOn\":\"2022-01-27T04:54:22.9559555Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4447db05-44ed-4da3-ae60-6cbece780e32\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4447db05-44ed-4da3-ae60-6cbece780e32\"},{\"properties\":{\"roleName\":\"Chamber - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything - under your HPC Workbench chamber.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HpcWorkbench/*/read\",\"Microsoft.HpcWorkbench/instances/chambers/*\",\"Microsoft.HpcWorkbench/instances/consortiums/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-12-15T20:53:14.4428297Z\",\"updatedOn\":\"2022-01-20T05:04:48.3694000Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4e9b8407-af2e-495b-ae54-bb60a55b1b5a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4e9b8407-af2e-495b-ae54-bb60a55b1b5a\"},{\"properties\":{\"roleName\":\"Windows - Admin Center Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"Let's - you manage the OS of your resource via Windows Admin Center as an administrator.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridCompute/machines/extensions/*\",\"Microsoft.HybridCompute/machines/upgradeExtensions/action\",\"Microsoft.HybridCompute/operations/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkWatchers/securityGroupView/action\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/write\",\"Microsoft.HybridConnectivity/endpoints/write\",\"Microsoft.HybridConnectivity/endpoints/read\",\"Microsoft.HybridConnectivity/endpoints/listManagedProxyDetails/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.HybridCompute/machines/WACLoginAsAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-01-12T00:51:19.5581155Z\",\"updatedOn\":\"2022-05-03T20:59:23.1425428Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a6333a3e-0164-44c3-b281-7a577aff287f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a6333a3e-0164-44c3-b281-7a577aff287f\"},{\"properties\":{\"roleName\":\"Guest - Configuration Resource Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read, write Guest Configuration Resource.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.GuestConfiguration/guestConfigurationAssignments/write\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/read\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/*/read\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-01-13T21:31:41.9626667Z\",\"updatedOn\":\"2022-02-10T19:22:44.9057916Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/088ab73d-1256-47ae-bea9-9de8e7131f31\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"088ab73d-1256-47ae-bea9-9de8e7131f31\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Policy Add-on Deployment\",\"type\":\"BuiltInRole\",\"description\":\"Deploy - the Azure Policy add-on on Azure Kubernetes Service clusters\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/deployments/*\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/publicIPPrefixes/join/action\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Compute/diskEncryptionSets/read\",\"Microsoft.Compute/proximityPlacementGroups/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-07T20:51:48.5662807Z\",\"updatedOn\":\"2022-03-15T19:19:25.6182575Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18ed5180-3e48-46fd-8541-4ea054d57064\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18ed5180-3e48-46fd-8541-4ea054d57064\"},{\"properties\":{\"roleName\":\"Domain - Services Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view Azure - AD Domain Services and related network configurations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.AAD/domainServices/read\",\"Microsoft.AAD/domainServices/oucontainer/read\",\"Microsoft.AAD/domainServices/OutboundNetworkDependenciesEndpoints/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/logDefinitions/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Network/azureFirewalls/read\",\"Microsoft.Network/ddosProtectionPlans/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/loadBalancers/*/read\",\"Microsoft.Network/natGateways/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/routes/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-15T19:38:46.9043170Z\",\"updatedOn\":\"2022-02-23T00:41:52.2906373Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/361898ef-9ed1-48c2-849c-a832951106bb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"361898ef-9ed1-48c2-849c-a832951106bb\"},{\"properties\":{\"roleName\":\"Domain - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - Azure AD Domain Services and related network configurations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.AAD/register/action\",\"Microsoft.AAD/unregister/action\",\"Microsoft.AAD/domainServices/read\",\"Microsoft.AAD/domainServices/write\",\"Microsoft.AAD/domainServices/delete\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/write\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/logDefinitions/read\",\"Microsoft.AAD/domainServices/oucontainer/read\",\"Microsoft.AAD/domainServices/oucontainer/write\",\"Microsoft.AAD/domainServices/oucontainer/delete\",\"Microsoft.Network/register/action\",\"Microsoft.Network/unregister/action\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/write\",\"Microsoft.Network/virtualNetworks/delete\",\"Microsoft.Network/virtualNetworks/peer/action\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/write\",\"Microsoft.Network/virtualNetworks/subnets/delete\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/delete\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Network/azureFirewalls/read\",\"Microsoft.Network/ddosProtectionPlans/read\",\"Microsoft.Network/ddosProtectionPlans/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/loadBalancers/delete\",\"Microsoft.Network/loadBalancers/*/read\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/natGateways/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/networkInterfaces/delete\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/write\",\"Microsoft.Network/networkSecurityGroups/delete\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/write\",\"Microsoft.Network/networkSecurityGroups/securityRules/delete\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/write\",\"Microsoft.Network/routeTables/delete\",\"Microsoft.Network/routeTables/join/action\",\"Microsoft.Network/routeTables/routes/read\",\"Microsoft.Network/routeTables/routes/write\",\"Microsoft.Network/routeTables/routes/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-15T19:40:22.3943189Z\",\"updatedOn\":\"2022-02-23T00:43:08.3207354Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/eeaeda52-9324-47f6-8069-5d5bade478b2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"eeaeda52-9324-47f6-8069-5d5bade478b2\"},{\"properties\":{\"roleName\":\"DNS - Resolver Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage DNS resolver resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/dnsResolvers/read\",\"Microsoft.Network/dnsResolvers/write\",\"Microsoft.Network/dnsResolvers/delete\",\"Microsoft.Network/dnsResolvers/join/action\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/read\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/write\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/delete\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/join/action\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/read\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/write\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/delete\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/join/action\",\"Microsoft.Network/dnsForwardingRulesets/read\",\"Microsoft.Network/dnsForwardingRulesets/write\",\"Microsoft.Network/dnsForwardingRulesets/delete\",\"Microsoft.Network/dnsForwardingRulesets/join/action\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/read\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/write\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/delete\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/read\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/write\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/delete\",\"Microsoft.Network/locations/dnsResolverOperationResults/read\",\"Microsoft.Network/locations/dnsResolverOperationStatuses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/write\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/joinLoadBalancer/action\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action\",\"Microsoft.Network/natGateways/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/routeTables/join/action\",\"Microsoft.Network/serviceEndpointPolicies/join/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-16T23:25:04.4308795Z\",\"updatedOn\":\"2022-03-11T20:54:15.0659022Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0f2ebee7-ffd4-4fc0-b3b7-664099fdad5d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0f2ebee7-ffd4-4fc0-b3b7-664099fdad5d\"},{\"properties\":{\"roleName\":\"Data - Operator for Managed Disks\",\"type\":\"BuiltInRole\",\"description\":\"Provides - permissions to upload data to empty managed disks, read, or export data of - managed disks (not attached to running VMs) and snapshots using SAS URIs and - Azure AD authentication.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/disks/download/action\",\"Microsoft.Compute/disks/upload/action\",\"Microsoft.Compute/snapshots/download/action\",\"Microsoft.Compute/snapshots/upload/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-01T01:28:16.0862180Z\",\"updatedOn\":\"2022-03-01T01:28:16.0862180Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/959f8984-c045-4866-89c7-12bf9737be2e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"959f8984-c045-4866-89c7-12bf9737be2e\"},{\"properties\":{\"roleName\":\"AgFood - Platform Sensor Partner Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - contribute access to manage sensor related entities in AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/sensorPartnerScope/*\"],\"notDataActions\":[\"Microsoft.AgFoodPlatform/sensorPartnerScope/sensors/delete\"]}],\"createdOn\":\"2022-03-09T04:58:18.4183393Z\",\"updatedOn\":\"2022-03-09T04:58:18.4183393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6b77f0a0-0d89-41cc-acd1-579c22c17a67\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6b77f0a0-0d89-41cc-acd1-579c22c17a67\"},{\"properties\":{\"roleName\":\"Compute - Gallery Sharing Admin\",\"type\":\"BuiltInRole\",\"description\":\"This role - allows user to share gallery to another subscription/tenant or share it to - the public.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/galleries/share/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-10T00:33:23.4134686Z\",\"updatedOn\":\"2022-03-25T20:36:59.8004672Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1ef6a3be-d0ac-425d-8c01-acb62866290b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1ef6a3be-d0ac-425d-8c01-acb62866290b\"},{\"properties\":{\"roleName\":\"Scheduled - Patching Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - access to manage maintenance configurations with maintenance scope InGuestPatch - and corresponding configuration assignments\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Maintenance/maintenanceConfigurations/read\",\"Microsoft.Maintenance/maintenanceConfigurations/write\",\"Microsoft.Maintenance/maintenanceConfigurations/delete\",\"Microsoft.Maintenance/configurationAssignments/read\",\"Microsoft.Maintenance/configurationAssignments/write\",\"Microsoft.Maintenance/configurationAssignments/delete\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/read\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/write\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/delete\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/read\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/write\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-21T10:27:57.4429306Z\",\"updatedOn\":\"2022-04-13T08:04:30.2446363Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cd08ab90-6b14-449c-ad9a-8f8e549482c6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cd08ab90-6b14-449c-ad9a-8f8e549482c6\"},{\"properties\":{\"roleName\":\"DevCenter - Dev Box User\",\"type\":\"BuiltInRole\",\"description\":\"Provides access - to create and manage dev boxes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Fidalgo/projects/read\",\"Microsoft.Fidalgo/projects/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Fidalgo/projects/users/virtualMachines/userStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userGetRdpFileContent/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userDelete/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-30T19:23:03.9063898Z\",\"updatedOn\":\"2022-03-30T19:23:03.9063898Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/45d50f46-0b78-4001-a660-4198cbe8cd05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"45d50f46-0b78-4001-a660-4198cbe8cd05\"},{\"properties\":{\"roleName\":\"DevCenter - Project Admin\",\"type\":\"BuiltInRole\",\"description\":\"Provides access - to manage project resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Fidalgo/projects/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[\"Microsoft.Fidalgo/projects/write\",\"Microsoft.Fidalgo/projects/delete\"],\"dataActions\":[\"Microsoft.Fidalgo/projects/users/virtualMachines/adminStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminDelete/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userGetRdpFileContent/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userDelete/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-31T19:42:53.1063939Z\",\"updatedOn\":\"2022-03-31T19:42:53.1063939Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/331c37c6-af14-46d9-b9f4-e1909e1b95a0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"331c37c6-af14-46d9-b9f4-e1909e1b95a0\"},{\"properties\":{\"roleName\":\"Virtual - Machine Local User Login\",\"type\":\"BuiltInRole\",\"description\":\"View - Virtual Machines in the portal and login as a local user configured on the - arc server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-06T23:57:08.4960876Z\",\"updatedOn\":\"2022-04-16T18:55:22.3226785Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/602da2ba-a5c2-41da-b01d-5360126ab525\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"602da2ba-a5c2-41da-b01d-5360126ab525\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm VM Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Arc - ScVmm VM Contributor has permissions to perform all VM actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.scvmm/virtualmachines/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:19:43.4978394Z\",\"updatedOn\":\"2022-05-05T20:21:52.7065718Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e582369a-e17b-42a5-b10c-874c387c530b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e582369a-e17b-42a5-b10c-874c387c530b\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Private Clouds Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc ScVmm Private Clouds Onboarding role has permissions to provision all - the required resources for onboard and deboard vmm server instances to Azure.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.scvmm/vmmservers/Read\",\"microsoft.scvmm/vmmservers/Write\",\"microsoft.scvmm/vmmservers/Delete\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:20:22.0259391Z\",\"updatedOn\":\"2022-05-05T20:21:42.0160634Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6aac74c4-6311-40d2-bbdd-7d01e7c6e3a9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6aac74c4-6311-40d2-bbdd-7d01e7c6e3a9\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Private Cloud User\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc ScVmm Private Cloud User has permissions to use the ScVmm resources to - deploy VMs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"microsoft.scvmm/virtualnetworks/join/action\",\"microsoft.scvmm/virtualnetworks/Read\",\"microsoft.scvmm/virtualmachinetemplates/clone/action\",\"microsoft.scvmm/virtualmachinetemplates/Read\",\"microsoft.scvmm/clouds/deploy/action\",\"microsoft.scvmm/clouds/Read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:21:31.8768952Z\",\"updatedOn\":\"2022-05-05T20:22:10.3489590Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c0781e91-8102-4553-8951-97c6d4243cda\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c0781e91-8102-4553-8951-97c6d4243cda\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Administrator role\",\"type\":\"BuiltInRole\",\"description\":\"Arc - ScVmm VM Administrator has permissions to perform all ScVmm actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ScVmm/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:23:34.5429371Z\",\"updatedOn\":\"2022-05-05T20:23:15.0154893Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a92dfd61-77f9-4aec-a531-19858b406c87\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a92dfd61-77f9-4aec-a531-19858b406c87\"},{\"properties\":{\"roleName\":\"FHIR - Data Importer\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and import FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/import/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-04-19T07:59:47.5802132Z\",\"updatedOn\":\"2022-04-21T09:08:14.6059986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4465e953-8ced-4406-a58e-0f6e3f3b530b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4465e953-8ced-4406-a58e-0f6e3f3b530b\"},{\"properties\":{\"roleName\":\"API - Management Developer Portal Content Editor\",\"type\":\"BuiltInRole\",\"description\":\"Can - customize the developer portal, edit its content, and publish it.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/portalRevisions/read\",\"Microsoft.ApiManagement/service/portalRevisions/write\",\"Microsoft.ApiManagement/service/contentTypes/read\",\"Microsoft.ApiManagement/service/contentTypes/delete\",\"Microsoft.ApiManagement/service/contentTypes/write\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/read\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/write\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-05-06T17:39:17.7581243Z\",\"updatedOn\":\"2022-05-10T21:30:34.1382013Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c031e6a8-4391-4de0-8d69-4706a7ed3729\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c031e6a8-4391-4de0-8d69-4706a7ed3729\"}]}" - headers: - cache-control: - - no-cache - content-length: - - '397418' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:21 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:22 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 4bf04855-2073-4e62-9402-355586d77818 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF0000298D"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: GET - uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames/any(c:c%20eq%20'0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7') - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' - headers: - cache-control: - - no-cache - content-length: - - '92' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:23 GMT - odata-version: - - '4.0' - request-id: - - 282e5582-ea7d-4ae2-bf06-0cd25cb1ffe4 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002516"}}' - x-ms-resource-unit: - - '1' - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:22 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 1188bcae-bbaa-444a-a486-8750b6d1b1ea - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002973"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Snapshot%20Contributor%27&api-version=2018-01-01-preview - response: - body: - string: '{"value":[{"properties":{"roleName":"Disk Snapshot Contributor","type":"BuiltInRole","description":"Provides - permission to backup vault to manage disk snapshots.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Compute/snapshots/delete","Microsoft.Compute/snapshots/write","Microsoft.Compute/snapshots/read","Microsoft.Compute/snapshots/beginGetAccess/action","Microsoft.Compute/snapshots/endGetAccess/action","Microsoft.Compute/disks/beginGetAccess/action","Microsoft.Storage/storageAccounts/listkeys/action","Microsoft.Storage/storageAccounts/write","Microsoft.Storage/storageAccounts/read","Microsoft.Storage/storageAccounts/delete"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T12:18:51.4471411Z","updatedOn":"2021-11-11T20:14:56.9158814Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","type":"Microsoft.Authorization/roleDefinitions","name":"7efff54f-a5b4-42b5-a1c5-5411624893ce"}]}' - headers: - cache-control: - - no-cache - content-length: - - '1160' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:22 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce", - "principalId": "0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7", "principalType": "ServicePrincipal"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '270' - Content-Type: - - application/json; charset=utf-8 - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/ef1d4193-3fa2-485d-ba71-432667ee79be?api-version=2020-04-01-preview - response: - body: - string: '{"error":{"code":"RoleAssignmentExists","message":"The role assignment - already exists."}}' - headers: - cache-control: - - no-cache - content-length: - - '89' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:24 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 409 - message: Conflict -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: GET - uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames/any(c:c%20eq%20'0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7') - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' - headers: - cache-control: - - no-cache - content-length: - - '92' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:25 GMT - odata-version: - - '4.0' - request-id: - - b3e929b1-569b-4259-b449-241c3598efcf - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002516"}}' - x-ms-resource-unit: - - '1' - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:25 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 0a52008a-1030-44f4-807a-1e3d45b7fd9a - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002733"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview - response: - body: - string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:49.6216206Z","updatedOn":"2022-04-12T12:46:49.6216206Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/85cc2dff-c5d4-42a3-acb6-255cd4208ef4","type":"Microsoft.Authorization/roleAssignments","name":"85cc2dff-c5d4-42a3-acb6-255cd4208ef4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:57.1459341Z","updatedOn":"2022-04-12T12:46:57.1459341Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aba8e90d-d951-4cb5-a346-b71e478f4d1b","type":"Microsoft.Authorization/roleAssignments","name":"aba8e90d-d951-4cb5-a346-b71e478f4d1b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:28.3678603Z","updatedOn":"2022-04-12T13:09:28.3678603Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/79d87d90-f984-4f53-a169-2eca51c00104","type":"Microsoft.Authorization/roleAssignments","name":"79d87d90-f984-4f53-a169-2eca51c00104"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:33.3916295Z","updatedOn":"2022-04-12T13:09:33.3916295Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/5e185742-c91a-4efe-b0d8-db9524685ec5","type":"Microsoft.Authorization/roleAssignments","name":"5e185742-c91a-4efe-b0d8-db9524685ec5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:02.2689248Z","updatedOn":"2022-04-13T07:01:02.2689248Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c9b4f9ab-d687-4a65-910a-5bcb2f974bfe","type":"Microsoft.Authorization/roleAssignments","name":"c9b4f9ab-d687-4a65-910a-5bcb2f974bfe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:09.3571703Z","updatedOn":"2022-04-13T07:01:09.3571703Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/8bedf13c-aa1a-4191-aa97-573f14fd97ee","type":"Microsoft.Authorization/roleAssignments","name":"8bedf13c-aa1a-4191-aa97-573f14fd97ee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:04.6456354Z","updatedOn":"2022-04-13T07:43:04.6456354Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bd0fc30a-6ccf-4c22-a26b-0e31aba16035","type":"Microsoft.Authorization/roleAssignments","name":"bd0fc30a-6ccf-4c22-a26b-0e31aba16035"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:10.1186881Z","updatedOn":"2022-04-13T07:43:10.1186881Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0","type":"Microsoft.Authorization/roleAssignments","name":"dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:58:57.7706882Z","updatedOn":"2022-04-13T08:58:57.7706882Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9e3d10bf-9bfa-4a97-9ab1-b972a348abd0","type":"Microsoft.Authorization/roleAssignments","name":"9e3d10bf-9bfa-4a97-9ab1-b972a348abd0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:59:03.2414961Z","updatedOn":"2022-04-13T08:59:03.2414961Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/66eefd94-4bda-46df-9c61-7e92f83d91e7","type":"Microsoft.Authorization/roleAssignments","name":"66eefd94-4bda-46df-9c61-7e92f83d91e7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:35.8887781Z","updatedOn":"2022-04-13T10:17:35.8887781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/77f4f7a3-a377-49f7-a094-945b82b2bfff","type":"Microsoft.Authorization/roleAssignments","name":"77f4f7a3-a377-49f7-a094-945b82b2bfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:41.2233089Z","updatedOn":"2022-04-13T10:17:41.2233089Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1a71aac6-e9ce-40ff-a39f-7594df2ea6e9","type":"Microsoft.Authorization/roleAssignments","name":"1a71aac6-e9ce-40ff-a39f-7594df2ea6e9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:19.4532093Z","updatedOn":"2022-04-21T06:57:19.4532093Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/eede4548-9f71-44b7-8077-c49aa44894b4","type":"Microsoft.Authorization/roleAssignments","name":"eede4548-9f71-44b7-8077-c49aa44894b4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:24.3439247Z","updatedOn":"2022-04-21T06:57:24.3439247Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c011acd2-8b5d-45d6-b6c1-4ffe1867ce31","type":"Microsoft.Authorization/roleAssignments","name":"c011acd2-8b5d-45d6-b6c1-4ffe1867ce31"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:25.7258076Z","updatedOn":"2022-05-24T11:54:25.7258076Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9a7dc348-d24e-438b-84b0-c7cda5bf92c4","type":"Microsoft.Authorization/roleAssignments","name":"9a7dc348-d24e-438b-84b0-c7cda5bf92c4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:29.8931759Z","updatedOn":"2022-05-24T11:54:29.8931759Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aeb54d04-84b8-4530-bd7e-fe01dafd82ab","type":"Microsoft.Authorization/roleAssignments","name":"aeb54d04-84b8-4530-bd7e-fe01dafd82ab"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7c567124-5292-4819-aa73-0224bf1c42e1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-23T13:38:54.7542852Z","updatedOn":"2021-05-23T13:38:54.7542852Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0809d692-f58f-43f2-b597-7f115957407e","type":"Microsoft.Authorization/roleAssignments","name":"0809d692-f58f-43f2-b597-7f115957407e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"955c9d1b-0cb6-4ff6-91c9-f4aadf67ffe8","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:45:08.3835615Z","updatedOn":"2021-05-24T16:45:08.3835615Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1b1ac6ab-19e7-4c4f-91d2-5be73096da2c","type":"Microsoft.Authorization/roleAssignments","name":"1b1ac6ab-19e7-4c4f-91d2-5be73096da2c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7221c906-782c-44a0-ab2f-f23d8a95ce25","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:56:16.2751421Z","updatedOn":"2021-05-24T16:56:16.2751421Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/ca8f2433-76dc-49fa-828d-9cd2861ec25c","type":"Microsoft.Authorization/roleAssignments","name":"ca8f2433-76dc-49fa-828d-9cd2861ec25c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:53.5542743Z","updatedOn":"2021-06-04T06:40:53.5542743Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9d9ac2a8-dbac-41bb-9f17-c473f02c6370","type":"Microsoft.Authorization/roleAssignments","name":"9d9ac2a8-dbac-41bb-9f17-c473f02c6370"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:57.1326805Z","updatedOn":"2021-06-04T06:40:57.1326805Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/14b1338c-95f6-44f9-ad22-395f8ebbb1fe","type":"Microsoft.Authorization/roleAssignments","name":"14b1338c-95f6-44f9-ad22-395f8ebbb1fe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:18.2829699Z","updatedOn":"2021-06-04T07:02:18.2829699Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93","type":"Microsoft.Authorization/roleAssignments","name":"bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:22.4343547Z","updatedOn":"2021-06-04T07:02:22.4343547Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/26bab283-0772-4c03-8dc1-a50c8ffa597d","type":"Microsoft.Authorization/roleAssignments","name":"26bab283-0772-4c03-8dc1-a50c8ffa597d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:08.8293677Z","updatedOn":"2021-06-04T07:19:08.8293677Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/d972f611-a4bd-4b80-9e78-980984602450","type":"Microsoft.Authorization/roleAssignments","name":"d972f611-a4bd-4b80-9e78-980984602450"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:12.8400651Z","updatedOn":"2021-06-04T07:19:12.8400651Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/b9393755-f5ca-41ef-a631-fb62184c57a8","type":"Microsoft.Authorization/roleAssignments","name":"b9393755-f5ca-41ef-a631-fb62184c57a8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:15.2633798Z","updatedOn":"2021-06-04T09:14:15.2633798Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/094981c0-d59c-4f5b-9581-72c08da65454","type":"Microsoft.Authorization/roleAssignments","name":"094981c0-d59c-4f5b-9581-72c08da65454"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:19.9554484Z","updatedOn":"2021-06-04T09:14:19.9554484Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0cac59e0-0464-4bf6-9bef-f1fadc2b08f4","type":"Microsoft.Authorization/roleAssignments","name":"0cac59e0-0464-4bf6-9bef-f1fadc2b08f4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:52.6766200Z","updatedOn":"2021-08-30T06:31:52.6766200Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/f67c65e2-e609-4ffe-b504-294b00cbd2fd","type":"Microsoft.Authorization/roleAssignments","name":"f67c65e2-e609-4ffe-b504-294b00cbd2fd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:57.1552781Z","updatedOn":"2021-08-30T06:31:57.1552781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aaeab926-d6e2-4bb6-9e9e-0607e75cc75f","type":"Microsoft.Authorization/roleAssignments","name":"aaeab926-d6e2-4bb6-9e9e-0607e75cc75f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"2ab5fb95-b72e-4d12-948b-4223754d8ffa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-09-08T08:24:19.3547440Z","updatedOn":"2021-09-08T08:24:19.3547440Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/43ee13b8-5abd-51e0-88e3-ae84049da70e","type":"Microsoft.Authorization/roleAssignments","name":"43ee13b8-5abd-51e0-88e3-ae84049da70e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for - temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' - headers: - cache-control: - - no-cache - content-length: - - '84735' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:26 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Snapshot%20Contributor%27&api-version=2018-01-01-preview - response: - body: - string: '{"value":[{"properties":{"roleName":"Disk Snapshot Contributor","type":"BuiltInRole","description":"Provides - permission to backup vault to manage disk snapshots.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Compute/snapshots/delete","Microsoft.Compute/snapshots/write","Microsoft.Compute/snapshots/read","Microsoft.Compute/snapshots/beginGetAccess/action","Microsoft.Compute/snapshots/endGetAccess/action","Microsoft.Compute/disks/beginGetAccess/action","Microsoft.Storage/storageAccounts/listkeys/action","Microsoft.Storage/storageAccounts/write","Microsoft.Storage/storageAccounts/read","Microsoft.Storage/storageAccounts/delete"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T12:18:51.4471411Z","updatedOn":"2021-11-11T20:14:56.9158814Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","type":"Microsoft.Authorization/roleDefinitions","name":"7efff54f-a5b4-42b5-a1c5-5411624893ce"}]}' - headers: - cache-control: - - no-cache - content-length: - - '1160' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:26 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?api-version=2018-01-01-preview - response: - body: - string: "{\"value\":[{\"properties\":{\"roleName\":\"Avere Cluster Create\",\"type\":\"CustomRole\",\"description\":\"Avere - cluster create role used by the Avere controller to create a vFXT cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.Authorization/roleDefinitions/*\",\"Microsoft.Compute/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Network/*/read\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\",\"Microsoft.Storage/*/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-11-29T18:46:55.0492387Z\",\"updatedOn\":\"2018-11-29T18:46:55.0492387Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7b1b19a-0e83-4fe5-935c-faaefbfd18c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7b1b19a-0e83-4fe5-935c-faaefbfd18c3\"},{\"properties\":{\"roleName\":\"Avere - Cluster Runtime Operator\",\"type\":\"CustomRole\",\"description\":\"Avere - cluster runtime role used by Avere clusters running in subscriptions, for - the purpose of failing over IP addresses, accessing BLOB storage, etc\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/routes/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-26T00:41:26.2170858Z\",\"updatedOn\":\"2018-08-26T00:41:26.2170858Z\",\"createdBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\",\"updatedBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e078ab98-ef3a-4c9a-aba7-12f5172b45d0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e078ab98-ef3a-4c9a-aba7-12f5172b45d0\"},{\"properties\":{\"roleName\":\"Azure - Service Deploy Release Management Contributor\",\"type\":\"CustomRole\",\"description\":\"Contributor - role for services deploying through Azure Service Deploy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-02-04T02:26:31.5413362Z\",\"updatedOn\":\"2018-01-08T20:20:16.3660174Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21d96096-b162-414a-8302-d8354f9d91b2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21d96096-b162-414a-8302-d8354f9d91b2\"},{\"properties\":{\"roleName\":\"CAL-Custom-Role\",\"type\":\"CustomRole\",\"description\":\"Lets - SAP Cloud Appliance Library application manage Network and Compute services, - manage Resource Groups and Management locks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/locks/*\",\"Microsoft.Authorization/roleDefinitions/*\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.Compute/*\",\"Microsoft.Network/*\",\"Microsoft.Resources/*\",\"Microsoft.Storage/*\",\"Microsoft.ContainerService/*\",\"Microsoft.ContainerRegistry/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-05-14T19:30:51.0664585Z\",\"updatedOn\":\"2019-02-19T19:11:57.5963229Z\",\"createdBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\",\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7b266cd7-0bba-4ae2-8423-90ede5e1e898\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7b266cd7-0bba-4ae2-8423-90ede5e1e898\"},{\"properties\":{\"roleName\":\"Dsms - Role (deprecated)\",\"type\":\"CustomRole\",\"description\":\"Custom role - used by Dsms to perform operations. Can list and regnerate storage account - keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regenerateKey/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-17T18:02:11.1225951Z\",\"updatedOn\":\"2018-01-13T00:21:52.7211696Z\",\"createdBy\":\"ca5f3715-e7dd-427b-b2db-45b6a4a2df87\",\"updatedBy\":\"ca5f3715-e7dd-427b-b2db-45b6a4a2df87\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b91f4c0b-46e3-47bb-a242-eecfe23b3b5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b91f4c0b-46e3-47bb-a242-eecfe23b3b5b\"},{\"properties\":{\"roleName\":\"Dsms - Role (do not use)\",\"type\":\"CustomRole\",\"description\":\"Custom role - used by Dsms to perform operations. Can list and regnerate storage account - keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regenerateKey/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-02-01T07:56:12.5880222Z\",\"updatedOn\":\"2018-08-09T17:53:48.5432297Z\",\"createdBy\":\"becb4b6b-fe16-413b-a5c3-90355e0b2982\",\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7aff565e-6c55-448d-83db-ccf482c6da2f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7aff565e-6c55-448d-83db-ccf482c6da2f\"},{\"properties\":{\"roleName\":\"ExpressRoute - Administrator\",\"type\":\"CustomRole\",\"description\":\"Can create, delete - and manage ExpressRoutes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/locks/*\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.EventGrid/*\",\"Microsoft.Insights/*\",\"Microsoft.Network/*\",\"Microsoft.Resources/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-31T03:51:32.2843055Z\",\"updatedOn\":\"2019-03-20T22:55:18.8222085Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a48d7896-14b4-4889-afef-fbb65a96e5a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a48d7896-14b4-4889-afef-fbb65a96e5a2\"},{\"properties\":{\"roleName\":\"GenevaWarmPathResourceContributor\",\"type\":\"CustomRole\",\"description\":\"Can - manage service bus and storage accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/*\",\"Microsoft.Resources/subscriptions/resourceGroups/*\",\"Microsoft.ServiceBus/namespaces/*\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Storage/storageAccounts/managementPolicies/write\",\"Microsoft.Storage/storageAccounts/managementPolicies/read\",\"Microsoft.Storage/storageAccounts/managementPolicies/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-03-14T22:30:10.1999436Z\",\"updatedOn\":\"2022-02-28T23:26:40.0052537Z\",\"createdBy\":null,\"updatedBy\":\"acis\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9f15f5f5-77bd-413a-aa88-4b9c68b1e7bc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9f15f5f5-77bd-413a-aa88-4b9c68b1e7bc\"},{\"properties\":{\"roleName\":\"masterreader\",\"type\":\"CustomRole\",\"description\":\"Lets - you view everything, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-11-14T23:38:05.3353858Z\",\"updatedOn\":\"2017-11-14T23:38:05.3353858Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a48d7796-14b4-4889-afef-fbb65a93e5a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a48d7796-14b4-4889-afef-fbb65a93e5a2\"},{\"properties\":{\"roleName\":\"Microsoft - OneAsset Reader\",\"type\":\"CustomRole\",\"description\":\"This role is for - Microsoft OneAsset team (CSEO) to track internal security compliance and resource - utilization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-27T23:51:08.6333052Z\",\"updatedOn\":\"2019-04-02T20:35:43.3396263Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd1bb084-1503-4bd2-99c0-630220046786\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd1bb084-1503-4bd2-99c0-630220046786\"},{\"properties\":{\"roleName\":\"Office - DevOps\",\"type\":\"CustomRole\",\"description\":\"Custom access for developers - to operations but not secrets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachineScaleSets/restart/action\",\"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/restart/action\",\"Microsoft.Sql/servers/databases/replicationLinks/delete\",\"Microsoft.Sql/servers/databases/replicationLinks/failover/action\",\"Microsoft.Sql/servers/databases/replicationLinks/forceFailoverAllowDataLoss/action\",\"Microsoft.Sql/servers/databases/replicationLinks/operationResults/read\",\"Microsoft.Sql/servers/databases/replicationLinks/read\",\"Microsoft.Sql/servers/databases/replicationLinks/unlink/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-10-07T08:11:46.1639398Z\",\"updatedOn\":\"2017-03-16T18:43:08.3234306Z\",\"createdBy\":\"25aea6be-b605-4347-a92d-33e178e412ec\",\"updatedBy\":\"25aea6be-b605-4347-a92d-33e178e412ec\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7fd64851-3279-459b-b614-e2b2ba760f5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7fd64851-3279-459b-b614-e2b2ba760f5b\"},{\"properties\":{\"roleName\":\"GenevaWarmPathStorageBlobContributor\",\"type\":\"CustomRole\",\"description\":\"Geneva - Warm Path Storage Blob Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/lease/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/lock/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/extend/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete\",\"Microsoft.Storage/storageAccounts/managementPolicies/write\",\"Microsoft.Storage/storageAccounts/managementPolicies/read\",\"Microsoft.Storage/storageAccounts/managementPolicies/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-12-06T22:46:27.1365630Z\",\"updatedOn\":\"2022-02-28T23:26:40.4152515Z\",\"createdBy\":null,\"updatedBy\":\"acis\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a16c43ca-2d67-4dcd-9ded-6412f5edc51a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a16c43ca-2d67-4dcd-9ded-6412f5edc51a\"},{\"properties\":{\"roleName\":\"Azure - Service Deploy Release Management Restricted Owner\",\"type\":\"CustomRole\",\"description\":\"Restricted - owner role for services deploying through Azure Service Deploy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\"],\"dataActions\":[],\"notDataActions\":[]},{\"actions\":[\"Microsoft.Authorization/roleAssignments/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]},{\"actions\":[\"Microsoft.Authorization/locks/write\",\"Microsoft.Authorization/policyassignments/write\",\"Microsoft.Authorization/policydefinitions/write\",\"Microsoft.Authorization/policysetdefinitions/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-07T22:16:06.8803898Z\",\"updatedOn\":\"2022-03-07T22:16:06.8803898Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/94ddc4bc-25f5-4f3e-b527-c587da93cfe4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"94ddc4bc-25f5-4f3e-b527-c587da93cfe4\"},{\"properties\":{\"roleName\":\"AcrPush\",\"type\":\"BuiltInRole\",\"description\":\"acr - push\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/pull/read\",\"Microsoft.ContainerRegistry/registries/push/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-29T17:52:32.5201177Z\",\"updatedOn\":\"2021-11-11T20:13:07.4993029Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8311e382-0749-4cb8-b61a-304f252e45ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8311e382-0749-4cb8-b61a-304f252e45ec\"},{\"properties\":{\"roleName\":\"API - Management Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage service and the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8650193Z\",\"updatedOn\":\"2021-11-11T20:13:08.3179618Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/312a565d-c81f-4fd8-895a-4e21e48d571c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"312a565d-c81f-4fd8-895a-4e21e48d571c\"},{\"properties\":{\"roleName\":\"AcrPull\",\"type\":\"BuiltInRole\",\"description\":\"acr - pull\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/pull/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-22T19:01:56.8227182Z\",\"updatedOn\":\"2021-11-11T20:13:08.8779328Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f951dda-4ed3-4680-a7ca-43fe172d538d\"},{\"properties\":{\"roleName\":\"AcrImageSigner\",\"type\":\"BuiltInRole\",\"description\":\"acr - image signer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/sign/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/trustedCollections/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-15T23:23:08.4038322Z\",\"updatedOn\":\"2021-11-11T20:13:09.6070759Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6cef56e8-d556-48e5-a04f-b8e64114680f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6cef56e8-d556-48e5-a04f-b8e64114680f\"},{\"properties\":{\"roleName\":\"AcrDelete\",\"type\":\"BuiltInRole\",\"description\":\"acr - delete\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/artifacts/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-11T20:19:31.6682804Z\",\"updatedOn\":\"2021-11-11T20:13:09.9631744Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c2f4ef07-c644-48eb-af81-4b1b4947fb11\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c2f4ef07-c644-48eb-af81-4b1b4947fb11\"},{\"properties\":{\"roleName\":\"AcrQuarantineReader\",\"type\":\"BuiltInRole\",\"description\":\"acr - quarantine data reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/quarantine/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-16T00:27:39.9596835Z\",\"updatedOn\":\"2021-11-11T20:13:10.3188052Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cdda3590-29a3-44f6-95f2-9f980659eb04\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cdda3590-29a3-44f6-95f2-9f980659eb04\"},{\"properties\":{\"roleName\":\"AcrQuarantineWriter\",\"type\":\"BuiltInRole\",\"description\":\"acr - quarantine data writer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/quarantine/read\",\"Microsoft.ContainerRegistry/registries/quarantine/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/read\",\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-16T00:26:37.5871820Z\",\"updatedOn\":\"2021-11-11T20:13:11.3488079Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c8d4ff99-41c3-41a8-9f60-21dfdad59608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d4ff99-41c3-41a8-9f60-21dfdad59608\"},{\"properties\":{\"roleName\":\"API - Management Service Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage service but not the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/backup/action\",\"Microsoft.ApiManagement/service/delete\",\"Microsoft.ApiManagement/service/managedeployments/action\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.ApiManagement/service/restore/action\",\"Microsoft.ApiManagement/service/updatecertificate/action\",\"Microsoft.ApiManagement/service/updatehostname/action\",\"Microsoft.ApiManagement/service/write\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-11-09T00:03:42.1194019Z\",\"updatedOn\":\"2021-11-11T20:13:11.5244023Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e022efe7-f5ba-4159-bbe4-b44f577e9b61\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e022efe7-f5ba-4159-bbe4-b44f577e9b61\"},{\"properties\":{\"roleName\":\"API - Management Service Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - access to service and APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-11-09T00:26:45.1540473Z\",\"updatedOn\":\"2021-11-11T20:13:11.8704466Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/71522526-b88f-4d52-b57f-d31fc3546d0d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"71522526-b88f-4d52-b57f-d31fc3546d0d\"},{\"properties\":{\"roleName\":\"Application - Insights Component Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage Application Insights components\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/generateLiveToken/read\",\"Microsoft.Insights/metricAlerts/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.Insights/topology/read\",\"Microsoft.Insights/transactions/read\",\"Microsoft.Insights/webtests/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:12.6428401Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ae349356-3a1b-4a5e-921d-050484c6347e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ae349356-3a1b-4a5e-921d-050484c6347e\"},{\"properties\":{\"roleName\":\"Application - Insights Snapshot Debugger\",\"type\":\"BuiltInRole\",\"description\":\"Gives - user permission to use Application Insights Snapshot Debugger features\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T21:25:12.3728747Z\",\"updatedOn\":\"2021-11-11T20:13:13.0034435Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/08954f03-6346-4c2e-81c0-ec3a5cfae23b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"08954f03-6346-4c2e-81c0-ec3a5cfae23b\"},{\"properties\":{\"roleName\":\"Attestation - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read the attestation - provider properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Attestation/attestationProviders/attestation/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-25T19:42:59.1576710Z\",\"updatedOn\":\"2021-11-11T20:13:13.3634724Z\",\"createdBy\":null,\"updatedBy\":\"SYSTEM\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd1bd22b-8476-40bc-a0bc-69b95687b9f3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd1bd22b-8476-40bc-a0bc-69b95687b9f3\"},{\"properties\":{\"roleName\":\"Automation - Job Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create and Manage - Jobs using Automation Runbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T20:52:41.0020018Z\",\"updatedOn\":\"2021-11-11T20:13:13.7065660Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4fe576fe-1146-4730-92eb-48519fa6bf9f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fe576fe-1146-4730-92eb-48519fa6bf9f\"},{\"properties\":{\"roleName\":\"Automation - Runbook Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read Runbook - properties - to be able to create Jobs of the runbook.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T20:47:49.5640674Z\",\"updatedOn\":\"2021-11-11T20:13:13.8815461Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\"},{\"properties\":{\"roleName\":\"Automation - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Automation Operators - are able to start, stop, suspend, and resume jobs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobSchedules/read\",\"Microsoft.Automation/automationAccounts/jobSchedules/write\",\"Microsoft.Automation/automationAccounts/linkedWorkspace/read\",\"Microsoft.Automation/automationAccounts/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Automation/automationAccounts/schedules/read\",\"Microsoft.Automation/automationAccounts/schedules/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-08-18T01:05:03.3916130Z\",\"updatedOn\":\"2021-11-11T20:13:14.0515408Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d3881f73-407a-4167-8283-e981cbba0404\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d3881f73-407a-4167-8283-e981cbba0404\"},{\"properties\":{\"roleName\":\"Avere - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can create and manage - an Avere vFXT cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/proximityPlacementGroups/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/disks/*\",\"Microsoft.Network/*/read\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/*/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2019-03-18T20:00:58.9207889Z\",\"updatedOn\":\"2021-11-11T20:13:14.2265665Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4f8fab4f-1852-4a58-a46a-8eaf358af14a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4f8fab4f-1852-4a58-a46a-8eaf358af14a\"},{\"properties\":{\"roleName\":\"Avere - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Used by the Avere vFXT - cluster to manage the cluster\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2019-03-18T20:02:38.3399857Z\",\"updatedOn\":\"2021-11-11T20:13:15.1065886Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c025889f-8102-4ebf-b32c-fc0c6f0c6bd9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c025889f-8102-4ebf-b32c-fc0c6f0c6bd9\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Cluster Admin Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster admin credential action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action\",\"Microsoft.ContainerService/managedClusters/accessProfiles/listCredential/action\",\"Microsoft.ContainerService/managedClusters/read\",\"Microsoft.ContainerService/managedClusters/runcommand/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-15T21:38:18.5953853Z\",\"updatedOn\":\"2022-05-16T21:40:14.0457546Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0ab0b1a8-8aac-4efd-b8c2-3ee1fb270be8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0ab0b1a8-8aac-4efd-b8c2-3ee1fb270be8\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Cluster User Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster user credential action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\",\"Microsoft.ContainerService/managedClusters/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-15T22:04:53.4037241Z\",\"updatedOn\":\"2021-11-11T20:13:20.4351976Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4abbcc35-e782-43d8-92c5-2d3f1bd2253f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4abbcc35-e782-43d8-92c5-2d3f1bd2253f\"},{\"properties\":{\"roleName\":\"Azure - Maps Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants access - to read map related data from an Azure maps account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-10-05T19:47:03.4723070Z\",\"updatedOn\":\"2021-11-11T20:13:20.9582685Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/423170ca-a8f6-4b0f-8487-9e4eb8f49bfa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"423170ca-a8f6-4b0f-8487-9e4eb8f49bfa\"},{\"properties\":{\"roleName\":\"Azure - Stack Registration Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Azure Stack registrations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureStack/edgeSubscriptions/read\",\"Microsoft.AzureStack/registrations/products/*/action\",\"Microsoft.AzureStack/registrations/products/read\",\"Microsoft.AzureStack/registrations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-11-13T23:42:06.2161827Z\",\"updatedOn\":\"2021-11-11T20:13:23.2957820Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6f12a6df-dd06-4f3e-bcb1-ce8be600526a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6f12a6df-dd06-4f3e-bcb1-ce8be600526a\"},{\"properties\":{\"roleName\":\"Backup - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup - service,but can't create vaults and give access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupSecurityPIN/*\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/*\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/Vaults/usages/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectableContainers/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/locations/backupPreValidateProtection/action\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.Support/*\",\"Microsoft.DataProtection/locations/getBackupStatus/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/write\",\"Microsoft.DataProtection/backupVaults/backupInstances/delete\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/backup/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/validateRestore/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/restore/action\",\"Microsoft.DataProtection/backupVaults/backupPolicies/write\",\"Microsoft.DataProtection/backupVaults/backupPolicies/delete\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/write\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/locations/checkNameAvailability/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/backupVaults/validateForBackup/action\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:12:15.7321344Z\",\"updatedOn\":\"2021-11-11T20:13:24.3657611Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5e467623-bb1f-42f4-a55d-6e525e11384b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e467623-bb1f-42f4-a55d-6e525e11384b\"},{\"properties\":{\"roleName\":\"Billing - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows read access to - billing data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Billing/*/read\",\"Microsoft.Commerce/*/read\",\"Microsoft.Consumption/*/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.CostManagement/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-25T02:13:38.9054151Z\",\"updatedOn\":\"2021-11-11T20:13:24.5342563Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\"},{\"properties\":{\"roleName\":\"Backup - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup - services, except removal of backup, vault creation and giving access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/backup/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/provisionInstantItemRecovery/action\",\"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/accessToken/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/restore/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/revokeInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/write\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/write\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/backupTriggerValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperationsStatuses/read\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operations/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/inquire/action\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectableContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/items/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/locations/backupPreValidateProtection/action\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/locations/backupAadProperties/read\",\"Microsoft.RecoveryServices/locations/backupCrrJobs/action\",\"Microsoft.RecoveryServices/locations/backupCrrJob/action\",\"Microsoft.RecoveryServices/locations/backupCrossRegionRestore/action\",\"Microsoft.RecoveryServices/locations/backupCrrOperationResults/read\",\"Microsoft.RecoveryServices/locations/backupCrrOperationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.Support/*\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:21:11.8947640Z\",\"updatedOn\":\"2021-12-16T12:53:00.0624003Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00c29273-979b-4161-815c-10b084fb9324\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00c29273-979b-4161-815c-10b084fb9324\"},{\"properties\":{\"roleName\":\"Backup - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view backup services, - but can't make changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operations/read\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/items/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/locations/backupCrrJobs/action\",\"Microsoft.RecoveryServices/locations/backupCrrJob/action\",\"Microsoft.RecoveryServices/locations/backupCrrOperationResults/read\",\"Microsoft.RecoveryServices/locations/backupCrrOperationsStatus/read\",\"Microsoft.DataProtection/locations/getBackupStatus/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/write\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/backup/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/validateRestore/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/restore/action\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/backupVaults/validateForBackup/action\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:18:41.3893065Z\",\"updatedOn\":\"2021-11-11T20:13:24.8792711Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a795c7a0-d4a2-40c1-ae25-d81f01202912\"},{\"properties\":{\"roleName\":\"Blockchain - Member Node Access (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for access to Blockchain Member nodes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Blockchain/blockchainMembers/transactionNodes/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Blockchain/blockchainMembers/transactionNodes/connect/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T10:33:01.9604839Z\",\"updatedOn\":\"2021-11-11T20:13:25.0558920Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/31a002a1-acaf-453e-8a5b-297c9ca1ea24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"31a002a1-acaf-453e-8a5b-297c9ca1ea24\"},{\"properties\":{\"roleName\":\"BizTalk - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage BizTalk - services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BizTalkServices/BizTalk/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:25.2359269Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5e3c6656-6cfa-4708-81fe-0de47ac73342\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e3c6656-6cfa-4708-81fe-0de47ac73342\"},{\"properties\":{\"roleName\":\"CDN - Endpoint Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - CDN endpoints, but can\u2019t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:25.4059314Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/426e0c7f-0c7e-4658-b36f-ff54d6c29b45\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"426e0c7f-0c7e-4658-b36f-ff54d6c29b45\"},{\"properties\":{\"roleName\":\"CDN - Endpoint Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN - endpoints, but can\u2019t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*/read\",\"Microsoft.Cdn/profiles/afdendpoints/validateCustomDomain/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2022-01-26T19:51:29.2636610Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/871e35f6-b5c1-49cc-a043-bde969a0f2cd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"871e35f6-b5c1-49cc-a043-bde969a0f2cd\"},{\"properties\":{\"roleName\":\"CDN - Profile Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - CDN profiles and their endpoints, but can\u2019t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:25.9224344Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ec156ff8-a8d1-4d15-830c-5b80698ca432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ec156ff8-a8d1-4d15-830c-5b80698ca432\"},{\"properties\":{\"roleName\":\"CDN - Profile Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN profiles - and their endpoints, but can\u2019t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:26.0983652Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8f96442b-4075-438f-813d-ad51ab4019af\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f96442b-4075-438f-813d-ad51ab4019af\"},{\"properties\":{\"roleName\":\"Classic - Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage classic networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:26.4433301Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b34d265f-36f7-4a0d-a4d4-e158ca92e90f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b34d265f-36f7-4a0d-a4d4-e158ca92e90f\"},{\"properties\":{\"roleName\":\"Classic - Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage classic storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:26.6183566Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/86e8f5dc-a6e9-4c67-9d15-de283e8eac25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86e8f5dc-a6e9-4c67-9d15-de283e8eac25\"},{\"properties\":{\"roleName\":\"Classic - Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Classic - Storage Account Key Operators are allowed to list and regenerate keys on Classic - Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listkeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-13T18:22:52.1461100Z\",\"updatedOn\":\"2021-11-11T20:13:26.9796021Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/985d6b00-f706-48f5-a6fe-d0ca12fb668d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"985d6b00-f706-48f5-a6fe-d0ca12fb668d\"},{\"properties\":{\"roleName\":\"ClearDB - MySQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage ClearDB MySQL databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"successbricks.cleardb/databases/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:27.1646373Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9106cda0-8a86-4e81-b686-29a22c54effe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9106cda0-8a86-4e81-b686-29a22c54effe\"},{\"properties\":{\"roleName\":\"Classic - Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage classic virtual machines, but not access to them, and not the virtual - network or storage account they\u2019re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/domainNames/*\",\"Microsoft.ClassicCompute/virtualMachines/*\",\"Microsoft.ClassicNetwork/networkSecurityGroups/join/action\",\"Microsoft.ClassicNetwork/reservedIps/link/action\",\"Microsoft.ClassicNetwork/reservedIps/read\",\"Microsoft.ClassicNetwork/virtualNetworks/join/action\",\"Microsoft.ClassicNetwork/virtualNetworks/read\",\"Microsoft.ClassicStorage/storageAccounts/disks/read\",\"Microsoft.ClassicStorage/storageAccounts/images/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-04-25T00:37:56.5416086Z\",\"updatedOn\":\"2021-11-11T20:13:27.3446332Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d73bb868-a0df-4d4d-bd69-98a00b01fccb\"},{\"properties\":{\"roleName\":\"Cognitive - Services User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read and - list keys of Cognitive Services.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Insights/logDefinitions/read\",\"Microsoft.Insights/metricdefinitions/read\",\"Microsoft.Insights/metrics/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-08T23:23:43.7701274Z\",\"updatedOn\":\"2021-11-11T20:13:27.5316443Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a97b65f3-24c7-4388-baec-2e87135dc908\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a97b65f3-24c7-4388-baec-2e87135dc908\"},{\"properties\":{\"roleName\":\"Cognitive - Services Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read Cognitive Services data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-02-13T20:02:12.6849986Z\",\"updatedOn\":\"2021-11-11T20:13:27.7138054Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b59867f0-fa02-499b-be73-45a86b5b3e1c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b59867f0-fa02-499b-be73-45a86b5b3e1c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - create, read, update, delete and manage keys of Cognitive Services.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.CognitiveServices/*\",\"Microsoft.Features/features/read\",\"Microsoft.Features/providers/features/read\",\"Microsoft.Features/providers/features/register/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logDefinitions/read\",\"Microsoft.Insights/metricdefinitions/read\",\"Microsoft.Insights/metrics/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-08T23:18:39.2257848Z\",\"updatedOn\":\"2021-11-11T20:13:27.9116230Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68\"},{\"properties\":{\"roleName\":\"CosmosBackupOperator\",\"type\":\"BuiltInRole\",\"description\":\"Can - submit restore request for a Cosmos DB database or a container for an account\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDB/databaseAccounts/backup/action\",\"Microsoft.DocumentDB/databaseAccounts/restore/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-12-07T19:47:14.9651560Z\",\"updatedOn\":\"2021-11-11T20:13:28.4333692Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/db7b14f2-5adf-42da-9f96-f2ee17bab5cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"db7b14f2-5adf-42da-9f96-f2ee17bab5cb\"},{\"properties\":{\"roleName\":\"Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to manage all resources, but does not allow you to assign roles - in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\",\"Microsoft.Authorization/elevateAccess/Action\",\"Microsoft.Blueprint/blueprintAssignments/write\",\"Microsoft.Blueprint/blueprintAssignments/delete\",\"Microsoft.Compute/galleries/share/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:28.6061853Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b24988ac-6180-42a0-ab88-20f7382dd24c\"},{\"properties\":{\"roleName\":\"Cosmos - DB Account Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Can read - Azure Cosmos DB Accounts data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDB/*/read\",\"Microsoft.DocumentDB/databaseAccounts/readonlykeys/action\",\"Microsoft.Insights/MetricDefinitions/read\",\"Microsoft.Insights/Metrics/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-10-30T17:53:54.6005577Z\",\"updatedOn\":\"2021-11-11T20:13:28.7911765Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fbdf93bf-df7d-467e-a4d2-9458aa1360c8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fbdf93bf-df7d-467e-a4d2-9458aa1360c8\"},{\"properties\":{\"roleName\":\"Cost - Management Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can view - costs and manage cost configuration (e.g. budgets, exports)\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Consumption/*\",\"Microsoft.CostManagement/*\",\"Microsoft.Billing/billingPeriods/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Advisor/configurations/read\",\"Microsoft.Advisor/recommendations/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Billing/billingProperty/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-14T16:09:22.8834827Z\",\"updatedOn\":\"2021-11-11T20:13:29.4851851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/434105ed-43f6-45c7-a02f-909b2ba83430\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"434105ed-43f6-45c7-a02f-909b2ba83430\"},{\"properties\":{\"roleName\":\"Cost - Management Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view cost - data and configuration (e.g. budgets, exports)\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Consumption/*/read\",\"Microsoft.CostManagement/*/read\",\"Microsoft.Billing/billingPeriods/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Advisor/configurations/read\",\"Microsoft.Advisor/recommendations/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Billing/billingProperty/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-14T16:09:22.8834827Z\",\"updatedOn\":\"2021-11-11T20:13:29.6601800Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/72fafb9e-0641-4937-9268-a91bfd8191a3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"72fafb9e-0641-4937-9268-a91bfd8191a3\"},{\"properties\":{\"roleName\":\"Data - Box Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - everything under Data Box Service except giving access to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Databox/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T08:28:42.7140210Z\",\"updatedOn\":\"2021-11-11T20:13:30.3737856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/add466c9-e687-43fc-8d98-dfcf8d720be5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"add466c9-e687-43fc-8d98-dfcf8d720be5\"},{\"properties\":{\"roleName\":\"Data - Box Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Data - Box Service except creating order or editing order details and giving access - to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Databox/*/read\",\"Microsoft.Databox/jobs/listsecrets/action\",\"Microsoft.Databox/jobs/listcredentials/action\",\"Microsoft.Databox/locations/availableSkus/action\",\"Microsoft.Databox/locations/validateInputs/action\",\"Microsoft.Databox/locations/regionConfiguration/action\",\"Microsoft.Databox/locations/validateAddress/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T08:26:21.9284772Z\",\"updatedOn\":\"2021-11-11T20:13:30.5546117Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/028f4ed7-e2a9-465e-a8f4-9c0ffdfdc027\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"028f4ed7-e2a9-465e-a8f4-9c0ffdfdc027\"},{\"properties\":{\"roleName\":\"Data - Factory Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create and - manage data factories, as well as child resources within them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DataFactory/dataFactories/*\",\"Microsoft.DataFactory/factories/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.EventGrid/eventSubscriptions/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:30.7420174Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/673868aa-7521-48a0-acc6-0f60742d39f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"673868aa-7521-48a0-acc6-0f60742d39f5\"},{\"properties\":{\"roleName\":\"Data - Purger\",\"type\":\"BuiltInRole\",\"description\":\"Can purge analytics data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/components/*/read\",\"Microsoft.Insights/components/purge/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/purge/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-04-30T22:39:49.6167700Z\",\"updatedOn\":\"2021-11-11T20:13:31.2788395Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/150f5e0c-0603-4f03-8c7f-cf70034c4e90\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"150f5e0c-0603-4f03-8c7f-cf70034c4e90\"},{\"properties\":{\"roleName\":\"Data - Lake Analytics Developer\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you submit, monitor, and manage your own jobs but not create or delete Data - Lake Analytics accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BigAnalytics/accounts/*\",\"Microsoft.DataLakeAnalytics/accounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.BigAnalytics/accounts/Delete\",\"Microsoft.BigAnalytics/accounts/TakeOwnership/action\",\"Microsoft.BigAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/TakeOwnership/action\",\"Microsoft.DataLakeAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Write\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Delete\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Write\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-20T00:33:29.3115234Z\",\"updatedOn\":\"2021-11-11T20:13:31.4688491Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/47b7735b-770e-4598-a7da-8b91488b4c88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"47b7735b-770e-4598-a7da-8b91488b4c88\"},{\"properties\":{\"roleName\":\"DevTest - Labs User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you connect, start, - restart, and shutdown your virtual machines in your Azure DevTest Labs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.Compute/virtualMachines/deallocate/action\",\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Compute/virtualMachines/restart/action\",\"Microsoft.Compute/virtualMachines/start/action\",\"Microsoft.DevTestLab/*/read\",\"Microsoft.DevTestLab/labs/claimAnyVm/action\",\"Microsoft.DevTestLab/labs/createEnvironment/action\",\"Microsoft.DevTestLab/labs/ensureCurrentUserProfile/action\",\"Microsoft.DevTestLab/labs/formulas/delete\",\"Microsoft.DevTestLab/labs/formulas/read\",\"Microsoft.DevTestLab/labs/formulas/write\",\"Microsoft.DevTestLab/labs/policySets/evaluatePolicies/action\",\"Microsoft.DevTestLab/labs/virtualMachines/claim/action\",\"Microsoft.DevTestLab/labs/virtualmachines/listApplicableSchedules/action\",\"Microsoft.DevTestLab/labs/virtualMachines/getRdpFileContents/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/networkInterfaces/*/read\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/publicIPAddresses/*/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[\"Microsoft.Compute/virtualMachines/vmSizes/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-08T21:52:45.0657582Z\",\"updatedOn\":\"2021-11-11T20:13:32.1746507Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/76283e04-6283-4c54-8f91-bcf1374a3c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76283e04-6283-4c54-8f91-bcf1374a3c64\"},{\"properties\":{\"roleName\":\"DocumentDB - Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage DocumentDB accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:32.3496502Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5bd9cd88-fe45-4216-938b-f97437e15450\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5bd9cd88-fe45-4216-938b-f97437e15450\"},{\"properties\":{\"roleName\":\"DNS - Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - DNS zones and record sets in Azure DNS, but does not let you control who has - access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/dnsZones/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2021-11-11T20:13:32.5233957Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"befefa01-2a29-4197-83a8-272ff33ce314\"},{\"properties\":{\"roleName\":\"EventGrid - EventSubscription Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage EventGrid event subscription operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/eventSubscriptions/*\",\"Microsoft.EventGrid/topicTypes/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-08T23:27:28.3130743Z\",\"updatedOn\":\"2021-11-11T20:13:33.4166738Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/428e0ff0-5e57-4d9c-a221-2c70d0e0a443\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"428e0ff0-5e57-4d9c-a221-2c70d0e0a443\"},{\"properties\":{\"roleName\":\"EventGrid - EventSubscription Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read EventGrid event subscriptions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/eventSubscriptions/read\",\"Microsoft.EventGrid/topicTypes/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-09T17:29:28.1417894Z\",\"updatedOn\":\"2021-11-11T20:13:33.7846748Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2414bbcf-6497-4faf-8c65-045460748405\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2414bbcf-6497-4faf-8c65-045460748405\"},{\"properties\":{\"roleName\":\"Graph - Owner\",\"type\":\"BuiltInRole\",\"description\":\"Create and manage all aspects - of the Enterprise Graph - Ontology, Schema mapping, Conflation and Conversational - AI and Ingestions\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EnterpriseKnowledgeGraph/services/conflation/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/conflation/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/sourceschema/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/sourceschema/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/intentclassification/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/intentclassification/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/ingestion/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/ingestion/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/ontology/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/ontology/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/delete\",\"Microsoft.EnterpriseKnowledgeGraph/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-02-23T21:07:22.5844236Z\",\"updatedOn\":\"2021-11-11T20:13:34.6707886Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b60367af-1334-4454-b71e-769d9a4f83d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b60367af-1334-4454-b71e-769d9a4f83d9\"},{\"properties\":{\"roleName\":\"HDInsight - Domain Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - Read, Create, Modify and Delete Domain Services related operations needed - for HDInsight Enterprise Security Package\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AAD/*/read\",\"Microsoft.AAD/domainServices/*/read\",\"Microsoft.AAD/domainServices/oucontainer/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-09-12T22:42:51.7451109Z\",\"updatedOn\":\"2021-11-11T20:13:35.3921342Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8d8d5a11-05d3-4bda-a417-a08778121c7c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8d8d5a11-05d3-4bda-a417-a08778121c7c\"},{\"properties\":{\"roleName\":\"Intelligent - Systems Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Intelligent Systems accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.IntelligentSystems/accounts/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:35.9371582Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/03a6d094-3444-4b3d-88af-7477090a9e5e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"03a6d094-3444-4b3d-88af-7477090a9e5e\"},{\"properties\":{\"roleName\":\"Key - Vault Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - key vaults, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.KeyVault/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.KeyVault/locations/deletedVaults/purge/action\",\"Microsoft.KeyVault/hsmPools/*\",\"Microsoft.KeyVault/managedHsms/*\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-02-25T17:08:28.5184971Z\",\"updatedOn\":\"2021-11-11T20:13:36.1170988Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f25e0fa2-a7c8-4377-a976-54943a77a395\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f25e0fa2-a7c8-4377-a976-54943a77a395\"},{\"properties\":{\"roleName\":\"Knowledge - Consumer\",\"type\":\"BuiltInRole\",\"description\":\"Knowledge Read permission - to consume Enterprise Graph Knowledge using entity search and graph query\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-02-23T21:23:31.4037552Z\",\"updatedOn\":\"2021-11-11T20:13:37.0021342Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ee361c5d-f7b5-4119-b4b6-892157c8f64c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ee361c5d-f7b5-4119-b4b6-892157c8f64c\"},{\"properties\":{\"roleName\":\"Lab - Creator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create new labs - under your Azure Lab Accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.LabServices/labAccounts/*/read\",\"Microsoft.LabServices/labAccounts/createLab/action\",\"Microsoft.LabServices/labAccounts/getPricingAndAvailability/action\",\"Microsoft.LabServices/labAccounts/getRestrictionsAndUsage/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-01-18T23:38:58.1036141Z\",\"updatedOn\":\"2021-11-11T20:13:37.1821588Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\"},{\"properties\":{\"roleName\":\"Log - Analytics Reader\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics - Reader can view and search all monitoring data as well as and view monitoring - settings, including viewing the configuration of Azure diagnostics on all - Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.OperationalInsights/workspaces/sharedKeys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-02T00:20:28.1449012Z\",\"updatedOn\":\"2021-11-11T20:13:37.7071371Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/73c42c96-874c-492b-b04d-ab87d138a893\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"73c42c96-874c-492b-b04d-ab87d138a893\"},{\"properties\":{\"roleName\":\"Log - Analytics Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics - Contributor can read all monitoring data and edit monitoring settings. Editing - monitoring settings includes adding the VM extension to VMs; reading storage - account keys to be able to configure collection of logs from Azure Storage; - adding solutions; and configuring Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.ClassicCompute/virtualMachines/extensions/*\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.Compute/virtualMachines/extensions/*\",\"Microsoft.HybridCompute/machines/extensions/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/*\",\"Microsoft.OperationsManagement/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-25T21:51:45.3174711Z\",\"updatedOn\":\"2021-11-11T20:13:37.8823618Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"92aaf0da-9dab-42b6-94a3-d43ce8d16293\"},{\"properties\":{\"roleName\":\"Logic - App Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read, enable - and disable logic app.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*/read\",\"Microsoft.Insights/metricAlerts/*/read\",\"Microsoft.Insights/diagnosticSettings/*/read\",\"Microsoft.Insights/metricDefinitions/*/read\",\"Microsoft.Logic/*/read\",\"Microsoft.Logic/workflows/disable/action\",\"Microsoft.Logic/workflows/enable/action\",\"Microsoft.Logic/workflows/validate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*/read\",\"Microsoft.Web/connections/*/read\",\"Microsoft.Web/customApis/*/read\",\"Microsoft.Web/serverFarms/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2021-11-11T20:13:38.0573444Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\"},{\"properties\":{\"roleName\":\"Logic - App Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - logic app, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metricAlerts/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logdefinitions/*\",\"Microsoft.Insights/metricDefinitions/*\",\"Microsoft.Logic/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*\",\"Microsoft.Web/connections/*\",\"Microsoft.Web/customApis/*\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/functions/listSecrets/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2021-11-11T20:13:38.2523833Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/87a39d53-fc1b-424a-814c-f7e04687dc9e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"87a39d53-fc1b-424a-814c-f7e04687dc9e\"},{\"properties\":{\"roleName\":\"Managed - Application Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read and perform actions on Managed Application resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Solutions/applications/read\",\"Microsoft.Solutions/*/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T00:59:33.7988813Z\",\"updatedOn\":\"2021-11-11T20:13:38.5973763Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c7393b34-138c-406f-901b-d8cf2b17e6ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c7393b34-138c-406f-901b-d8cf2b17e6ae\"},{\"properties\":{\"roleName\":\"Managed - Applications Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - read resources in a managed app and request JIT access.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Solutions/jitRequests/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-09-06T00:33:58.3651522Z\",\"updatedOn\":\"2021-11-11T20:13:38.7723523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b9331d33-8a36-4f8c-b097-4f54124fdb44\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b9331d33-8a36-4f8c-b097-4f54124fdb44\"},{\"properties\":{\"roleName\":\"Managed - Identity Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and Assign - User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-12-14T19:52:04.3924594Z\",\"updatedOn\":\"2021-11-11T20:13:38.9523759Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f1a07417-d97a-45cb-824c-7a7467783830\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f1a07417-d97a-45cb-824c-7a7467783830\"},{\"properties\":{\"roleName\":\"Managed - Identity Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, - Read, Update, and Delete User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/write\",\"Microsoft.ManagedIdentity/userAssignedIdentities/delete\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-12-14T19:53:42.8804692Z\",\"updatedOn\":\"2021-11-11T20:13:39.3023761Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\"},{\"properties\":{\"roleName\":\"Management - Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Management - Group Contributor Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/delete\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/delete\",\"Microsoft.Management/managementGroups/subscriptions/write\",\"Microsoft.Management/managementGroups/write\",\"Microsoft.Management/managementGroups/subscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-06-22T00:28:29.0523964Z\",\"updatedOn\":\"2021-11-11T20:13:39.6573851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\"},{\"properties\":{\"roleName\":\"Management - Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Management Group - Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-06-22T00:31:03.4295347Z\",\"updatedOn\":\"2021-11-11T20:13:39.8274007Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ac63b705-f282-497d-ac71-919bf39d939d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ac63b705-f282-497d-ac71-919bf39d939d\"},{\"properties\":{\"roleName\":\"Monitoring - Metrics Publisher\",\"type\":\"BuiltInRole\",\"description\":\"Enables publishing - metrics against Azure resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/Register/Action\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Insights/Metrics/Write\",\"Microsoft.Insights/Telemetry/Write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-14T00:36:16.5610279Z\",\"updatedOn\":\"2022-01-04T00:38:04.0289073Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3913510d-42f4-4e42-8a64-420c390055eb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3913510d-42f4-4e42-8a64-420c390055eb\"},{\"properties\":{\"roleName\":\"Monitoring - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-09-21T19:19:52.4939376Z\",\"updatedOn\":\"2021-11-11T20:13:44.4578442Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/43d0d8ad-25c7-4714-9337-8ba259a9fe05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"43d0d8ad-25c7-4714-9337-8ba259a9fe05\"},{\"properties\":{\"roleName\":\"Network - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage networks, - but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:44.6328966Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4d97b98b-1d4f-4787-a291-c67834d212e7\"},{\"properties\":{\"roleName\":\"Monitoring - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring - data and update monitoring settings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.AlertsManagement/alerts/*\",\"Microsoft.AlertsManagement/alertsSummary/*\",\"Microsoft.Insights/actiongroups/*\",\"Microsoft.Insights/activityLogAlerts/*\",\"Microsoft.Insights/AlertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/createNotifications/*\",\"Microsoft.Insights/dataCollectionEndpoints/*\",\"Microsoft.Insights/dataCollectionRules/*\",\"Microsoft.Insights/dataCollectionRuleAssociations/*\",\"Microsoft.Insights/DiagnosticSettings/*\",\"Microsoft.Insights/eventtypes/*\",\"Microsoft.Insights/LogDefinitions/*\",\"Microsoft.Insights/metricalerts/*\",\"Microsoft.Insights/MetricDefinitions/*\",\"Microsoft.Insights/Metrics/*\",\"Microsoft.Insights/notificationStatus/*\",\"Microsoft.Insights/Register/Action\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.Insights/webtests/*\",\"Microsoft.Insights/workbooks/*\",\"Microsoft.Insights/workbooktemplates/*\",\"Microsoft.Insights/privateLinkScopes/*\",\"Microsoft.Insights/privateLinkScopeOperationStatuses/*\",\"Microsoft.OperationalInsights/workspaces/write\",\"Microsoft.OperationalInsights/workspaces/intelligencepacks/*\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\",\"Microsoft.OperationalInsights/workspaces/storageinsightconfigs/*\",\"Microsoft.Support/*\",\"Microsoft.WorkloadMonitor/monitors/*\",\"Microsoft.AlertsManagement/smartDetectorAlertRules/*\",\"Microsoft.AlertsManagement/actionRules/*\",\"Microsoft.AlertsManagement/smartGroups/*\",\"Microsoft.AlertsManagement/migrateFromSmartDetection/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-09-21T19:21:08.4345976Z\",\"updatedOn\":\"2022-03-11T00:34:18.2670392Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749f88d5-cbae-40b8-bcfc-e573ddc772fa\"},{\"properties\":{\"roleName\":\"New - Relic APM Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage New Relic Application Performance Management accounts and applications, - but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"NewRelic.APM/accounts/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:45.7178576Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d28c62d-5b37-4476-8438-e587778df237\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d28c62d-5b37-4476-8438-e587778df237\"},{\"properties\":{\"roleName\":\"Owner\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to manage all resources, including the ability to assign roles - in Azure RBAC.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:45.8978856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"},{\"properties\":{\"roleName\":\"Reader\",\"type\":\"BuiltInRole\",\"description\":\"View - all resources, but does not allow you to make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:47.8628684Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"acdd72a7-3385-48ef-bd42-f606fba81ae7\"},{\"properties\":{\"roleName\":\"Redis - Cache Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - Redis caches, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cache/register/action\",\"Microsoft.Cache/redis/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:48.0528671Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e0f68234-74aa-48ed-b826-c38b57376e17\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e0f68234-74aa-48ed-b826-c38b57376e17\"},{\"properties\":{\"roleName\":\"Reader - and Data Access\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view - everything but will not let you delete or create a storage account or contained - resource. It will also allow read/write access to all data contained in a - storage account via access to storage account keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/ListAccountSas/action\",\"Microsoft.Storage/storageAccounts/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-27T23:20:46.1498906Z\",\"updatedOn\":\"2021-11-11T20:13:48.2278951Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c12c1c16-33a1-487b-954d-41c89c60f349\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c12c1c16-33a1-487b-954d-41c89c60f349\"},{\"properties\":{\"roleName\":\"Resource - Policy Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Users with - rights to create/modify resource policy, create support ticket and read resources/hierarchy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/policyassignments/*\",\"Microsoft.Authorization/policydefinitions/*\",\"Microsoft.Authorization/policyexemptions/*\",\"Microsoft.Authorization/policysetdefinitions/*\",\"Microsoft.PolicyInsights/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-08-25T19:08:01.3861639Z\",\"updatedOn\":\"2021-11-11T20:13:49.6679217Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"36243c78-bf99-498c-9df9-86d9f8d28608\"},{\"properties\":{\"roleName\":\"Scheduler - Job Collections Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Scheduler job collections, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Scheduler/jobcollections/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:49.8429293Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/188a0f2f-5c9e-469b-ae67-2aa5ce574b94\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"188a0f2f-5c9e-469b-ae67-2aa5ce574b94\"},{\"properties\":{\"roleName\":\"Search - Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Search services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Search/searchServices/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:50.0229309Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7ca78c08-252a-4471-8644-bb5ff32d4ba0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ca78c08-252a-4471-8644-bb5ff32d4ba0\"},{\"properties\":{\"roleName\":\"Security - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Security Admin Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/policyExemptions/*\",\"Microsoft.Authorization/policySetDefinitions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.IoTSecurity/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-03T07:51:23.0917487Z\",\"updatedOn\":\"2021-11-15T06:42:49.8263550Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fb1c8493-542b-48eb-b624-b4c8fea62acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb1c8493-542b-48eb-b624-b4c8fea62acd\"},{\"properties\":{\"roleName\":\"Security - Manager (Legacy)\",\"type\":\"BuiltInRole\",\"description\":\"This is a legacy - role. Please use Security Administrator instead\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/*/read\",\"Microsoft.ClassicCompute/virtualMachines/*/write\",\"Microsoft.ClassicNetwork/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-22T17:45:15.8986455Z\",\"updatedOn\":\"2021-11-11T20:13:50.5729549Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e3d13bf0-dd5a-482e-ba6b-9b8433878d10\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e3d13bf0-dd5a-482e-ba6b-9b8433878d10\"},{\"properties\":{\"roleName\":\"Security - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Security Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\",\"Microsoft.IoTSecurity/*/read\",\"Microsoft.Support/*/read\",\"Microsoft.Security/iotDefenderSettings/packageDownloads/action\",\"Microsoft.Security/iotDefenderSettings/downloadManagerActivation/action\",\"Microsoft.Security/iotSensors/downloadResetPassword/action\",\"Microsoft.IoTSecurity/defenderSettings/packageDownloads/action\",\"Microsoft.IoTSecurity/defenderSettings/downloadManagerActivation/action\",\"Microsoft.Management/managementGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-03T07:48:49.0516559Z\",\"updatedOn\":\"2021-11-11T20:13:50.7479015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/39bc4728-0917-49c7-9d2c-d95423bc2eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"39bc4728-0917-49c7-9d2c-d95423bc2eb4\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage spatial anchors in your account, but not delete them\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/create/action\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:41.1420864Z\",\"updatedOn\":\"2021-11-11T20:13:52.2829400Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8bbe83f1-e2a6-4df7-8cb4-4e04d4e5c827\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8bbe83f1-e2a6-4df7-8cb4-4e04d4e5c827\"},{\"properties\":{\"roleName\":\"Site - Recovery Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Site Recovery service except vault creation and role assignment\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/*\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/*\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/*\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/*\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/*\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/vaults/replicationOperationStatus/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:46:17.4592776Z\",\"updatedOn\":\"2021-11-11T20:13:52.4579503Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6670b86e-a3f7-4917-ac9b-5d6ab1be4567\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6670b86e-a3f7-4917-ac9b-5d6ab1be4567\"},{\"properties\":{\"roleName\":\"Site - Recovery Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you failover - and failback but not perform other Site Recovery management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/checkConsistency/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/reassociateGateway/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/renewcertificate/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/applyRecoveryPoint/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/repairReplication/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/switchprotection/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/updateMobilityService/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/refreshProvider/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:47:50.1341148Z\",\"updatedOn\":\"2021-11-11T20:13:52.6263418Z\",\"createdBy\":null,\"updatedBy\":\"\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/494ae006-db33-4328-bf46-533a6560a3ca\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494ae006-db33-4328-bf46-533a6560a3ca\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - locate and read properties of spatial anchors in your account\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:42.9271004Z\",\"updatedOn\":\"2021-11-11T20:13:52.8013467Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d51204f-eb77-4b1c-b86a-2ec626c49413\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d51204f-eb77-4b1c-b86a-2ec626c49413\"},{\"properties\":{\"roleName\":\"Site - Recovery Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view - Site Recovery status but not perform other management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/read\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:35:40.0093634Z\",\"updatedOn\":\"2021-11-11T20:13:52.9763366Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dbaa88c4-0c30-4179-9fb3-46319faa6149\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dbaa88c4-0c30-4179-9fb3-46319faa6149\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage spatial anchors in your account, including deleting them\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/create/action\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/delete\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:43.5489832Z\",\"updatedOn\":\"2021-11-11T20:13:53.1663250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/70bbe301-9835-447d-afdd-19eb3167307c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"70bbe301-9835-447d-afdd-19eb3167307c\"},{\"properties\":{\"roleName\":\"SQL - Managed Instance Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage SQL Managed Instances and required network configuration, but can\u2019t - give access to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Network/networkSecurityGroups/*\",\"Microsoft.Network/routeTables/*\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/locations/instanceFailoverGroups/*\",\"Microsoft.Sql/managedInstances/*\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/*\",\"Microsoft.Network/virtualNetworks/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/delete\",\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-12-10T22:57:14.2937983Z\",\"updatedOn\":\"2021-11-11T20:13:53.3513507Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4939a1f6-9ae0-4e48-a1e0-f2cbe897382d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4939a1f6-9ae0-4e48-a1e0-f2cbe897382d\"},{\"properties\":{\"roleName\":\"SQL - DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - SQL databases, but not access to them. Also, you can't manage their security-related - policies or their parent SQL servers.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/databases/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/servers/databases/ledgerDigestUploads/write\",\"Microsoft.Sql/servers/databases/ledgerDigestUploads/disable/action\",\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:53.5363219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\"},{\"properties\":{\"roleName\":\"SQL - Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - the security-related policies of SQL servers and databases, but not access - to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/administratorAzureAsyncOperation/read\",\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/transparentDataEncryption/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/read\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/read\",\"Microsoft.Sql/servers/databases/read\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/read\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/transparentDataEncryption/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/devOpsAuditingSettings/*\",\"Microsoft.Sql/servers/firewallRules/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\",\"Microsoft.Support/*\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/*\",\"Microsoft.Sql/managedInstances/read\",\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/*\",\"Microsoft.Security/sqlVulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/administrators/read\",\"Microsoft.Sql/servers/administrators/read\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-16T18:44:40.4607572Z\",\"updatedOn\":\"2022-04-27T21:08:08.4474437Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/056cd41c-7e88-42e1-933e-88ba6a50c9c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"056cd41c-7e88-42e1-933e-88ba6a50c9c3\"},{\"properties\":{\"roleName\":\"Storage - Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage storage accounts, including accessing storage account keys which provide - full access to storage account data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:54.2363539Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"17d1049b-9a84-46fb-8f53-869881c3d3ab\"},{\"properties\":{\"roleName\":\"SQL - Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - SQL servers and databases, but not access to them, and not their security - -related policies.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/*\",\"Microsoft.Support/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/devOpsAuditingSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/delete\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/write\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/delete\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2022-04-28T19:00:53.9963035Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\"},{\"properties\":{\"roleName\":\"Storage - Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Storage - Account Key Operators are allowed to list and regenerate keys on Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-13T18:26:11.5770570Z\",\"updatedOn\":\"2021-11-11T20:13:54.7697481Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"81a9662b-bebf-436f-a333-f67b29880f12\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write and delete access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:54.9397456Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ba92f5b4-2d11-453d-a403-e96b0029c9fe\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full - access to Azure Storage blob containers and data, including assigning POSIX - access control.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/*\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/*\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-04T07:02:58.2775257Z\",\"updatedOn\":\"2021-11-11T20:13:55.1225062Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b7e6dc6d-f1e8-4753-8033-0f276bb0955b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b7e6dc6d-f1e8-4753-8033-0f276bb0955b\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read - access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:55.2975076Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, and delete access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/write\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:55.4725469Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/974c5e8b-45b9-4653-ba55-5f855dd0fb88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"974c5e8b-45b9-4653-ba55-5f855dd0fb88\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Message Processor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for peek, receive, and delete access to Azure Storage queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-01-28T22:27:04.8947111Z\",\"updatedOn\":\"2021-11-11T20:13:55.6575408Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8a0f0c08-91a1-4084-bc3d-661d67233fed\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8a0f0c08-91a1-4084-bc3d-661d67233fed\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Message Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for sending of Azure Storage queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-01-28T22:28:34.7459724Z\",\"updatedOn\":\"2021-11-11T20:13:55.8325508Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c6a89b2d-59bc-44d0-9896-0f6e12d7b80a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c6a89b2d-59bc-44d0-9896-0f6e12d7b80a\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:56.0178497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/19e7f393-937e-4f77-808e-94535e297925\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"19e7f393-937e-4f77-808e-94535e297925\"},{\"properties\":{\"roleName\":\"Support - Request Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - create and manage Support requests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-06-22T22:25:37.8053068Z\",\"updatedOn\":\"2021-11-11T20:13:56.7444481Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\"},{\"properties\":{\"roleName\":\"Traffic - Manager Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Traffic Manager profiles, but does not let you control who has access - to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/trafficManagerProfiles/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2021-11-11T20:13:57.2744497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\"},{\"properties\":{\"roleName\":\"Virtual - Machine Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"View - Virtual Machines in the portal and login as administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/virtualMachines/login/action\",\"Microsoft.Compute/virtualMachines/loginAsAdmin/action\",\"Microsoft.HybridCompute/machines/login/action\",\"Microsoft.HybridCompute/machines/loginAsAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2021-11-18T00:56:53.8134295Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1c0163c0-47e6-4577-8991-ea5c82e286e4\"},{\"properties\":{\"roleName\":\"User - Access Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage user access to Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:57.7932023Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\"},{\"properties\":{\"roleName\":\"Virtual - Machine User Login\",\"type\":\"BuiltInRole\",\"description\":\"View Virtual - Machines in the portal and login as a regular user.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/virtualMachines/login/action\",\"Microsoft.HybridCompute/machines/login/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2021-11-18T00:55:50.6185845Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb879df8-f326-4884-b1cf-06f3ad86be52\"},{\"properties\":{\"roleName\":\"Virtual - Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage virtual machines, but not access to them, and not the virtual network - or storage account they're connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/locations/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/virtualMachineScaleSets/*\",\"Microsoft.Compute/cloudServices/*\",\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\",\"Microsoft.Compute/disks/delete\",\"Microsoft.DevTestLab/schedules/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/applicationGateways/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/loadBalancers/probes/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/locations/*\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.SerialConsole/serialPorts/connect/action\",\"Microsoft.SqlVirtualMachine/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:58.3176075Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9980e02c-c2be-4d73-94e8-173b1dc7cf3c\"},{\"properties\":{\"roleName\":\"Web - Plan Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - the web plans for websites, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/serverFarms/*\",\"Microsoft.Web/hostingEnvironments/Join/Action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:58.4926099Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\"},{\"properties\":{\"roleName\":\"Website - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage websites - (not web plans), but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/certificates/*\",\"Microsoft.Web/listSitesAssignedToHostName/read\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-05-12T23:10:23.6193952Z\",\"updatedOn\":\"2021-11-11T20:13:58.6655647Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/de139f84-1756-47ae-9be6-808fbbe84772\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"de139f84-1756-47ae-9be6-808fbbe84772\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*\"],\"notDataActions\":[]}],\"createdOn\":\"2019-04-16T21:33:36.7445745Z\",\"updatedOn\":\"2021-11-11T20:13:59.2005807Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/090c5cfd-751d-490a-894a-3ce6f1109419\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"090c5cfd-751d-490a-894a-3ce6f1109419\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*\"],\"notDataActions\":[]}],\"createdOn\":\"2019-04-16T21:34:29.8656362Z\",\"updatedOn\":\"2021-11-11T20:13:59.3721538Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f526a384-b230-433a-b45c-95f59c4a2dec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f526a384-b230-433a-b45c-95f59c4a2dec\"},{\"properties\":{\"roleName\":\"Attestation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read write or - delete the attestation provider instance\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Attestation/attestationProviders/attestation/read\",\"Microsoft.Attestation/attestationProviders/attestation/write\",\"Microsoft.Attestation/attestationProviders/attestation/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-19T00:24:09.3354177Z\",\"updatedOn\":\"2021-11-11T20:13:59.7271218Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bbf86eb8-f7b4-4cce-96e4-18cddf81d86e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bbf86eb8-f7b4-4cce-96e4-18cddf81d86e\"},{\"properties\":{\"roleName\":\"HDInsight - Cluster Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read - and modify HDInsight cluster configurations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HDInsight/*/read\",\"Microsoft.HDInsight/clusters/getGatewaySettings/action\",\"Microsoft.HDInsight/clusters/updateGatewaySettings/action\",\"Microsoft.HDInsight/clusters/configurations/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-20T00:03:01.7110732Z\",\"updatedOn\":\"2021-11-11T20:13:59.9052180Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/61ed4efc-fab3-44fd-b111-e24485cc132a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"61ed4efc-fab3-44fd-b111-e24485cc132a\"},{\"properties\":{\"roleName\":\"Cosmos - DB Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Azure - Cosmos DB accounts, but not access data in them. Prevents access to account - keys and connection strings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\"],\"notActions\":[\"Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*\",\"Microsoft.DocumentDB/databaseAccounts/regenerateKey/*\",\"Microsoft.DocumentDB/databaseAccounts/listKeys/*\",\"Microsoft.DocumentDB/databaseAccounts/listConnectionStrings/*\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/delete\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-26T17:01:17.0169383Z\",\"updatedOn\":\"2021-11-11T20:14:00.0802032Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"230815da-be43-4aae-9cb4-875f7bd000aa\"},{\"properties\":{\"roleName\":\"Hybrid - Server Resource Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Can - read, write, delete, and re-onboard Hybrid servers to the Hybrid Resource - Provider.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*\",\"Microsoft.HybridCompute/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-29T21:39:32.3132923Z\",\"updatedOn\":\"2021-11-11T20:14:00.2548257Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/48b40c6e-82e0-4eb3-90d5-19e40f49b624\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"48b40c6e-82e0-4eb3-90d5-19e40f49b624\"},{\"properties\":{\"roleName\":\"Hybrid - Server Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Can onboard - new Hybrid servers to the Hybrid Resource Provider.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-29T22:36:28.1873756Z\",\"updatedOn\":\"2021-11-11T20:14:00.4308999Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d1e5ee4-7c68-4a71-ac8b-0739630a3dfb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d1e5ee4-7c68-4a71-ac8b-0739630a3dfb\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Receiver\",\"type\":\"BuiltInRole\",\"description\":\"Allows - receive access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*/eventhubs/consumergroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*/receive/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:25:21.1056666Z\",\"updatedOn\":\"2021-11-11T20:14:01.3225169Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a638d3c7-ab3a-418d-83e6-5f17a39d4fde\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a638d3c7-ab3a-418d-83e6-5f17a39d4fde\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - send access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*/eventhubs/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:26:12.4673714Z\",\"updatedOn\":\"2021-11-11T20:14:01.4925583Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2b629674-e913-4c01-ae53-ef4638d8f975\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2b629674-e913-4c01-ae53-ef4638d8f975\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Receiver\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for receive access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*/queues/read\",\"Microsoft.ServiceBus/*/topics/read\",\"Microsoft.ServiceBus/*/topics/subscriptions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*/receive/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:43:01.6343849Z\",\"updatedOn\":\"2021-11-11T20:14:01.6629685Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4f6d3b9b-027b-4f4c-9142-0e5a2a2247e0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4f6d3b9b-027b-4f4c-9142-0e5a2a2247e0\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for send access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*/queues/read\",\"Microsoft.ServiceBus/*/topics/read\",\"Microsoft.ServiceBus/*/topics/subscriptions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:43:46.7046934Z\",\"updatedOn\":\"2021-11-11T20:14:01.8479199Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/69a216fc-b8fb-44d8-bc22-1f3c2cd27a39\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"69a216fc-b8fb-44d8-bc22-1f3c2cd27a39\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read access to Azure File Share over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-07-01T20:19:31.8620471Z\",\"updatedOn\":\"2021-11-11T20:14:04.3642909Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/aba4ae5f-2193-4029-9191-0cb91df5e314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"aba4ae5f-2193-4029-9191-0cb91df5e314\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, and delete access in Azure Storage file shares over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-07-01T20:54:35.4834310Z\",\"updatedOn\":\"2021-11-11T20:14:04.5443323Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb\"},{\"properties\":{\"roleName\":\"Private - DNS Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage private DNS zone resources, but not the virtual networks they are linked - to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/privateDnsZones/*\",\"Microsoft.Network/privateDnsOperationResults/*\",\"Microsoft.Network/privateDnsOperationStatuses/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Authorization/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-07-10T19:31:15.5645518Z\",\"updatedOn\":\"2021-11-11T20:14:04.7342851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b12aa53e-6015-4669-85d0-8515ebb3ae7f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b12aa53e-6015-4669-85d0-8515ebb3ae7f\"},{\"properties\":{\"roleName\":\"Storage - Blob Delegator\",\"type\":\"BuiltInRole\",\"description\":\"Allows for generation - of a user delegation key which can be used to sign SAS tokens\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-07-23T00:51:16.3376761Z\",\"updatedOn\":\"2021-11-11T20:14:05.4321714Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/db58b8e5-c6ad-4a2a-8342-4190687cbf4a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"db58b8e5-c6ad-4a2a-8342-4190687cbf4a\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization User\",\"type\":\"BuiltInRole\",\"description\":\"Allows user - to use the applications in an application group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DesktopVirtualization/applicationGroups/useApplications/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-08-07T00:29:03.8727621Z\",\"updatedOn\":\"2021-11-11T20:14:05.9821791Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Elevated Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, delete and modify NTFS permission access in Azure Storage - file shares over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-08-07T01:35:36.9935457Z\",\"updatedOn\":\"2021-11-11T20:14:06.1571744Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7264617-510b-434b-a828-9731dc254ea7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7264617-510b-434b-a828-9731dc254ea7\"},{\"properties\":{\"roleName\":\"Blueprint - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage blueprint - definitions, but not assign them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Blueprint/blueprints/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-14T21:55:16.9683949Z\",\"updatedOn\":\"2021-11-11T20:14:06.5171828Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/41077137-e803-4205-871c-5a86e6a753b4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"41077137-e803-4205-871c-5a86e6a753b4\"},{\"properties\":{\"roleName\":\"Blueprint - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Can assign existing - published blueprints, but cannot create new blueprints. NOTE: this only works - if the assignment is done with a user-assigned managed identity.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Blueprint/blueprintAssignments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-14T21:56:48.7897875Z\",\"updatedOn\":\"2021-11-11T20:14:06.6971401Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/437d2ced-4a38-4302-8479-ed2bcb43d090\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"437d2ced-4a38-4302-8479-ed2bcb43d090\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.Insights/workbooks/*\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:39:03.8725173Z\",\"updatedOn\":\"2021-11-11T20:14:07.2371450Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ab8e14d6-4a74-4a29-9ba8-549422addade\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ab8e14d6-4a74-4a29-9ba8-549422addade\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Responder\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Responder\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*/read\",\"Microsoft.SecurityInsights/dataConnectorsCheckRequirements/action\",\"Microsoft.SecurityInsights/automationRules/*\",\"Microsoft.SecurityInsights/cases/*\",\"Microsoft.SecurityInsights/incidents/*\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/appendTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/query/action\",\"Microsoft.SecurityInsights/threatIntelligence/bulkTag/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/appendTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/replaceTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/queryIndicators/action\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/read\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.SecurityInsights/cases/*/Delete\",\"Microsoft.SecurityInsights/incidents/*/Delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:54:07.6467264Z\",\"updatedOn\":\"2021-11-11T20:14:07.4171916Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e150937-b8fe-4cfb-8069-0eaf05ecd056\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3e150937-b8fe-4cfb-8069-0eaf05ecd056\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Reader\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft Sentinel - Reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*/read\",\"Microsoft.SecurityInsights/dataConnectorsCheckRequirements/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/query/action\",\"Microsoft.SecurityInsights/threatIntelligence/queryIndicators/action\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/LinkedServices/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/read\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/templateSpecs/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:58:50.1132117Z\",\"updatedOn\":\"2022-05-06T20:39:57.5331324Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8d289c81-5878-46d4-8554-54e1e3d8b5cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8d289c81-5878-46d4-8554-54e1e3d8b5cb\"},{\"properties\":{\"roleName\":\"Workbook - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read workbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.insights/workbooks/read\",\"microsoft.insights/workbooktemplates/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T20:56:17.6808140Z\",\"updatedOn\":\"2022-01-03T19:15:12.6968428Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b279062a-9be3-42a0-92ae-8b3cf002ec4d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b279062a-9be3-42a0-92ae-8b3cf002ec4d\"},{\"properties\":{\"roleName\":\"Workbook - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can save shared workbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/workbooks/write\",\"Microsoft.Insights/workbooks/delete\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/workbooktemplates/write\",\"Microsoft.Insights/workbooktemplates/delete\",\"Microsoft.Insights/workbooktemplates/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T20:59:42.4820277Z\",\"updatedOn\":\"2022-01-03T19:14:31.2372561Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e8ddcd69-c73f-4f9f-9844-4100522f16ad\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e8ddcd69-c73f-4f9f-9844-4100522f16ad\"},{\"properties\":{\"roleName\":\"Policy - Insights Data Writer (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read access to resource policies and write access to resource component policy - events.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/policyassignments/read\",\"Microsoft.Authorization/policydefinitions/read\",\"Microsoft.Authorization/policyexemptions/read\",\"Microsoft.Authorization/policysetdefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.PolicyInsights/checkDataPolicyCompliance/action\",\"Microsoft.PolicyInsights/policyEvents/logDataEvents/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-09-19T19:35:20.9504127Z\",\"updatedOn\":\"2021-11-11T20:14:09.4235132Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/66bb4e9e-b016-4a94-8249-4c0511c2be84\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"66bb4e9e-b016-4a94-8249-4c0511c2be84\"},{\"properties\":{\"roleName\":\"SignalR - AccessKey Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read SignalR - Service Access Keys\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SignalRService/*/read\",\"Microsoft.SignalRService/SignalR/listkeys/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-09-20T09:33:19.6236874Z\",\"updatedOn\":\"2021-11-11T20:14:09.6134860Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/04165923-9d83-45d5-8227-78b77b0a687e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"04165923-9d83-45d5-8227-78b77b0a687e\"},{\"properties\":{\"roleName\":\"SignalR/Web - PubSub Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, Read, - Update, and Delete SignalR service resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SignalRService/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-09-20T09:58:09.0009662Z\",\"updatedOn\":\"2021-11-11T20:14:09.7884765Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8cf5e20a-e4b2-4e9d-b3a1-5ceb692c2761\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8cf5e20a-e4b2-4e9d-b3a1-5ceb692c2761\"},{\"properties\":{\"roleName\":\"Azure - Connected Machine Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Can - onboard Azure Connected Machines.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\",\"Microsoft.HybridCompute/privateLinkScopes/read\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T20:15:07.1372870Z\",\"updatedOn\":\"2021-11-11T20:14:10.8735219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b64e21ea-ac4e-4cdf-9dc9-5b892992bee7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b64e21ea-ac4e-4cdf-9dc9-5b892992bee7\"},{\"properties\":{\"roleName\":\"Azure - Connected Machine Resource Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Can - read, write, delete and re-onboard Azure Connected Machines.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\",\"Microsoft.HybridCompute/machines/delete\",\"Microsoft.HybridCompute/machines/UpgradeExtensions/action\",\"Microsoft.HybridCompute/machines/extensions/read\",\"Microsoft.HybridCompute/machines/extensions/write\",\"Microsoft.HybridCompute/machines/extensions/delete\",\"Microsoft.HybridCompute/privateLinkScopes/*\",\"Microsoft.HybridCompute/*/read\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T20:24:59.1474607Z\",\"updatedOn\":\"2021-12-15T16:10:25.5898511Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cd570a14-e51a-42ad-bac8-bafd67325302\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cd570a14-e51a-42ad-bac8-bafd67325302\"},{\"properties\":{\"roleName\":\"Managed - Services Registration assignment Delete Role\",\"type\":\"BuiltInRole\",\"description\":\"Managed - Services Registration Assignment Delete Role allows the managing tenant users - to delete the registration assignment assigned to their tenant.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedServices/registrationAssignments/read\",\"Microsoft.ManagedServices/registrationAssignments/delete\",\"Microsoft.ManagedServices/operationStatuses/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T22:33:33.1183469Z\",\"updatedOn\":\"2021-11-11T20:14:11.2336400Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/91c1777a-f3dc-4fae-b103-61d183457e46\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"91c1777a-f3dc-4fae-b103-61d183457e46\"},{\"properties\":{\"roleName\":\"App - Configuration Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - full access to App Configuration data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppConfiguration/configurationStores/*/read\",\"Microsoft.AppConfiguration/configurationStores/*/write\",\"Microsoft.AppConfiguration/configurationStores/*/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-10-25T18:41:40.1185063Z\",\"updatedOn\":\"2021-11-11T20:14:11.4035314Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5ae67dd6-50cb-40e7-96ff-dc2bfa4b606b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5ae67dd6-50cb-40e7-96ff-dc2bfa4b606b\"},{\"properties\":{\"roleName\":\"App - Configuration Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read access to App Configuration data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppConfiguration/configurationStores/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-10-25T18:45:33.7975332Z\",\"updatedOn\":\"2021-11-11T20:14:11.5885341Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/516239f1-63e1-4d78-a4de-a74fb236a071\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"516239f1-63e1-4d78-a4de-a74fb236a071\"},{\"properties\":{\"roleName\":\"Kubernetes - Cluster - Azure Arc Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Role - definition to authorize any user/service to create connectedClusters resource\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Kubernetes/connectedClusters/Write\",\"Microsoft.Kubernetes/connectedClusters/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-11-18T17:00:02.2087147Z\",\"updatedOn\":\"2021-11-11T20:14:12.4685303Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/34e09817-6cbe-4d01-b1a2-e0eac5743d41\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"34e09817-6cbe-4d01-b1a2-e0eac5743d41\"},{\"properties\":{\"roleName\":\"Experimentation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/write\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/delete\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experiment/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/emergencystop/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/write\",\"Microsoft.Experimentation/experimentWorkspaces/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-13T00:08:08.6679591Z\",\"updatedOn\":\"2021-11-11T20:14:14.6454147Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f646f1b-fa08-80eb-a22b-edd6ce5c915c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f646f1b-fa08-80eb-a22b-edd6ce5c915c\"},{\"properties\":{\"roleName\":\"Cognitive - Services QnA Maker Reader\",\"type\":\"BuiltInRole\",\"description\":\"Let\u2019s - you read and test a KB only.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-17T18:26:12.3329439Z\",\"updatedOn\":\"2021-11-11T20:14:14.8254033Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/466ccd10-b268-4a11-b098-b4849f024126\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"466ccd10-b268-4a11-b098-b4849f024126\"},{\"properties\":{\"roleName\":\"Cognitive - Services QnA Maker Editor\",\"type\":\"BuiltInRole\",\"description\":\"Let\u2019s - you create, edit, import and export a KB. You cannot publish or delete a KB.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/operations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/operations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/operations/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-17T18:27:30.6434556Z\",\"updatedOn\":\"2021-11-11T20:14:14.9961559Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f4cc2bf9-21be-47a1-bdf1-5c5804381025\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f4cc2bf9-21be-47a1-bdf1-5c5804381025\"},{\"properties\":{\"roleName\":\"Experimentation - Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation - Administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/admin/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/write\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/delete\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experimentadmin/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experiment/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/emergencystop/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/write\",\"Microsoft.Experimentation/experimentWorkspaces/delete\",\"Microsoft.Experimentation/experimentWorkspaces/admin/action\",\"Microsoft.Experimentation/experimentWorkspaces/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/metricwrite/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-18T22:46:33.1116612Z\",\"updatedOn\":\"2021-11-11T20:14:15.1811577Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f646f1b-fa08-80eb-a33b-edd6ce5c915c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f646f1b-fa08-80eb-a33b-edd6ce5c915c\"},{\"properties\":{\"roleName\":\"Remote - Rendering Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with conversion, manage session, rendering and diagnostics capabilities - for Azure Remote Rendering\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/render/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/diagnostic/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-01-23T18:15:31.3450348Z\",\"updatedOn\":\"2021-11-11T20:14:16.7621737Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3df8b902-2a6f-47c7-8cc5-360e9b272a7e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3df8b902-2a6f-47c7-8cc5-360e9b272a7e\"},{\"properties\":{\"roleName\":\"Remote - Rendering Client\",\"type\":\"BuiltInRole\",\"description\":\"Provides user - with manage session, rendering and diagnostics capabilities for Azure Remote - Rendering.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/render/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/diagnostic/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-01-23T18:32:52.7069824Z\",\"updatedOn\":\"2021-11-11T20:14:16.9421512Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d39065c4-c120-43c9-ab0a-63eed9795f0a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d39065c4-c120-43c9-ab0a-63eed9795f0a\"},{\"properties\":{\"roleName\":\"Managed - Application Contributor Role\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for creating managed application resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Solutions/applications/*\",\"Microsoft.Solutions/register/action\",\"Microsoft.Resources/subscriptions/resourceGroups/*\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-08T03:39:11.8933879Z\",\"updatedOn\":\"2021-11-11T20:14:19.1271536Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/641177b8-a67a-45b9-a033-47bc880bb21e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"641177b8-a67a-45b9-a033-47bc880bb21e\"},{\"properties\":{\"roleName\":\"Security - Assessment Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - push assessments to Security Center\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Security/assessments/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-13T08:23:47.7656161Z\",\"updatedOn\":\"2021-11-11T20:14:19.3021974Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/612c2aa1-cb24-443b-ac28-3ab7272de6f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"612c2aa1-cb24-443b-ac28-3ab7272de6f5\"},{\"properties\":{\"roleName\":\"Tag - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage tags - on entities, without providing access to the entities themselves.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\",\"Microsoft.Resources/subscriptions/resources/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\",\"Microsoft.Resources/tags/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-18T23:19:19.2977644Z\",\"updatedOn\":\"2021-11-11T20:14:20.0172041Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4a9ae827-6dc8-4573-8ac7-8239d42aa03f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4a9ae827-6dc8-4573-8ac7-8239d42aa03f\"},{\"properties\":{\"roleName\":\"Integration - Service Environment Developer\",\"type\":\"BuiltInRole\",\"description\":\"Allows - developers to create and update workflows, integration accounts and API connections - in integration service environments.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Logic/integrationServiceEnvironments/read\",\"Microsoft.Logic/integrationServiceEnvironments/*/join/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-20T21:09:00.5627875Z\",\"updatedOn\":\"2021-11-11T20:14:20.1871986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c7aa55d3-1abb-444a-a5ca-5e51e485d6ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c7aa55d3-1abb-444a-a5ca-5e51e485d6ec\"},{\"properties\":{\"roleName\":\"Integration - Service Environment Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage integration service environments, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Logic/integrationServiceEnvironments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-20T21:10:44.4008319Z\",\"updatedOn\":\"2021-11-11T20:14:20.3622058Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a41e2c5b-bd99-4a07-88f4-9bf657a760b8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a41e2c5b-bd99-4a07-88f4-9bf657a760b8\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Contributor Role\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to read and write Azure Kubernetes Service clusters\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/read\",\"Microsoft.ContainerService/managedClusters/write\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-27T19:27:15.0739970Z\",\"updatedOn\":\"2021-11-11T20:14:21.2621727Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ed7f3fbd-7b88-4dd4-9017-9adb7ce333f8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ed7f3fbd-7b88-4dd4-9017-9adb7ce333f8\"},{\"properties\":{\"roleName\":\"Azure - Digital Twins Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - role for Digital Twins data-plane properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DigitalTwins/digitaltwins/read\",\"Microsoft.DigitalTwins/digitaltwins/relationships/read\",\"Microsoft.DigitalTwins/eventroutes/read\",\"Microsoft.DigitalTwins/models/read\",\"Microsoft.DigitalTwins/query/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-10T23:48:14.7057381Z\",\"updatedOn\":\"2021-11-11T20:14:22.3621788Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d57506d4-4c8d-48b1-8587-93c323f6a5a3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d57506d4-4c8d-48b1-8587-93c323f6a5a3\"},{\"properties\":{\"roleName\":\"Azure - Digital Twins Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full - access role for Digital Twins data-plane\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DigitalTwins/eventroutes/*\",\"Microsoft.DigitalTwins/digitaltwins/*\",\"Microsoft.DigitalTwins/digitaltwins/commands/*\",\"Microsoft.DigitalTwins/digitaltwins/relationships/*\",\"Microsoft.DigitalTwins/models/*\",\"Microsoft.DigitalTwins/query/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-10T23:49:33.7821930Z\",\"updatedOn\":\"2021-11-11T20:14:22.5471888Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bcd981a7-7f74-457b-83e1-cceb9e632ffe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bcd981a7-7f74-457b-83e1-cceb9e632ffe\"},{\"properties\":{\"roleName\":\"Hierarchy - Settings Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Allows - users to edit and delete Hierarchy Settings\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/settings/write\",\"Microsoft.Management/managementGroups/settings/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-03-13T23:55:11.0212387Z\",\"updatedOn\":\"2021-11-11T20:14:23.0882347Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/350f8d15-c687-4448-8ae1-157740a3936d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"350f8d15-c687-4448-8ae1-157740a3936d\"},{\"properties\":{\"roleName\":\"FHIR - Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Role allows - user or principal full access to FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/*\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:35:04.4949547Z\",\"updatedOn\":\"2021-11-11T20:14:23.6235473Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5a1fc7df-4bf1-4951-a576-89034ee01acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5a1fc7df-4bf1-4951-a576-89034ee01acd\"},{\"properties\":{\"roleName\":\"FHIR - Data Exporter\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and export FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/read\",\"Microsoft.HealthcareApis/services/fhir/resources/export/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/export/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:45:01.9764073Z\",\"updatedOn\":\"2021-11-11T20:14:23.7992557Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3db33094-8700-4567-8da5-1501d4e7e843\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3db33094-8700-4567-8da5-1501d4e7e843\"},{\"properties\":{\"roleName\":\"FHIR - Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:49:04.8353499Z\",\"updatedOn\":\"2021-11-11T20:14:23.9692275Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4c8d0bbc-75d3-4935-991f-5f3c56d81508\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4c8d0bbc-75d3-4935-991f-5f3c56d81508\"},{\"properties\":{\"roleName\":\"FHIR - Data Writer\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and write FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/*\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/*\"],\"notDataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/hardDelete/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/hardDelete/action\"]}],\"createdOn\":\"2020-03-17T18:55:35.2413335Z\",\"updatedOn\":\"2021-11-11T20:14:24.1442783Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3f88fce4-5892-4214-ae73-ba5294559913\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3f88fce4-5892-4214-ae73-ba5294559913\"},{\"properties\":{\"roleName\":\"Experimentation - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation Reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-25T18:05:14.8375678Z\",\"updatedOn\":\"2021-11-11T20:14:24.5042390Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49632ef5-d9ac-41f4-b8e7-bbe587fa74a1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49632ef5-d9ac-41f4-b8e7-bbe587fa74a1\"},{\"properties\":{\"roleName\":\"Object - Understanding Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with ingestion capabilities for Azure Object Understanding.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/action\",\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-04-22T19:15:09.0697923Z\",\"updatedOn\":\"2021-11-11T20:14:26.8743132Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4dd61c23-6743-42fe-a388-d8bdd41cb745\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4dd61c23-6743-42fe-a388-d8bdd41cb745\"},{\"properties\":{\"roleName\":\"Azure - Maps Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to read, write, and delete access to map related data from an Azure - maps account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/*/read\",\"Microsoft.Maps/accounts/*/write\",\"Microsoft.Maps/accounts/*/delete\",\"Microsoft.Maps/accounts/*/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-07T20:55:05.0645410Z\",\"updatedOn\":\"2021-11-11T20:14:28.3092598Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8f5e0ce6-4f7b-4dcf-bddf-e6f48634a204\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f5e0ce6-4f7b-4dcf-bddf-e6f48634a204\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to the project, including the ability to view, create, edit, or delete - projects.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-08T23:47:07.0779345Z\",\"updatedOn\":\"2021-11-11T20:14:28.8342655Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c1ff6cc2-c111-46fe-8896-e0ef812ad9f3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c1ff6cc2-c111-46fe-8896-e0ef812ad9f3\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Deployment\",\"type\":\"BuiltInRole\",\"description\":\"Publish, - unpublish or export models. Deployment can view the project but can\u2019t - update.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/iterations/publish/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/iterations/export/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/quicktest/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/classify/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/detect/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:31:05.9528620Z\",\"updatedOn\":\"2021-11-11T20:14:29.0142669Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5c4089e1-6d96-4d2f-b296-c1bc7137275f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5c4089e1-6d96-4d2f-b296-c1bc7137275f\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Labeler\",\"type\":\"BuiltInRole\",\"description\":\"View, - edit training images and create, add, remove, or delete the image tags. Labelers - can view the project but can\u2019t update anything other than training images - and tags.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/query/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/images/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/tags/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/images/suggested/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/tagsandregions/suggestions/action\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:33:20.8278896Z\",\"updatedOn\":\"2021-11-11T20:14:29.1892871Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/88424f51-ebe7-446f-bc41-7fa16989e96c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"88424f51-ebe7-446f-bc41-7fa16989e96c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - actions in the project. Readers can\u2019t create or update the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/query/action\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:34:18.5328818Z\",\"updatedOn\":\"2021-11-11T20:14:29.3642707Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/93586559-c37d-4a6b-ba08-b9f0940c2d73\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"93586559-c37d-4a6b-ba08-b9f0940c2d73\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Trainer\",\"type\":\"BuiltInRole\",\"description\":\"View, - edit projects and train the models, including the ability to publish, unpublish, - export the models. Trainers can\u2019t create or delete the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/delete\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/import/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:35:13.8147804Z\",\"updatedOn\":\"2021-11-11T20:14:29.5442713Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0a5ae4ab-0d65-4eeb-be61-29fc9b54394b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0a5ae4ab-0d65-4eeb-be61-29fc9b54394b\"},{\"properties\":{\"roleName\":\"Key - Vault Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Perform all - data plane operations on a key vault and all objects in it, including certificates, - keys, and secrets. Cannot manage key vault resources or manage role assignments. - Only works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:46.2349235Z\",\"updatedOn\":\"2021-11-11T20:14:30.2542755Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00482a5a-887f-4fb3-b363-3b7fe8e74483\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00482a5a-887f-4fb3-b363-3b7fe8e74483\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the keys of a key vault, except manage permissions. Only works - for key vaults that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/*\",\"Microsoft.KeyVault/vaults/keyrotationpolicies/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.0099249Z\",\"updatedOn\":\"2022-01-06T23:21:17.9760884Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/14b46e9e-c2b7-41b4-b07b-48a6ebf60603\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"14b46e9e-c2b7-41b4-b07b-48a6ebf60603\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto User\",\"type\":\"BuiltInRole\",\"description\":\"Perform cryptographic - operations using keys. Only works for key vaults that use the 'Azure role-based - access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/read\",\"Microsoft.KeyVault/vaults/keys/update/action\",\"Microsoft.KeyVault/vaults/keys/backup/action\",\"Microsoft.KeyVault/vaults/keys/encrypt/action\",\"Microsoft.KeyVault/vaults/keys/decrypt/action\",\"Microsoft.KeyVault/vaults/keys/wrap/action\",\"Microsoft.KeyVault/vaults/keys/unwrap/action\",\"Microsoft.KeyVault/vaults/keys/sign/action\",\"Microsoft.KeyVault/vaults/keys/verify/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.0699268Z\",\"updatedOn\":\"2021-11-11T20:14:30.6042921Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/12338af0-0e69-4776-bea7-57ae8d297424\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"12338af0-0e69-4776-bea7-57ae8d297424\"},{\"properties\":{\"roleName\":\"Key - Vault Secrets Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the secrets of a key vault, except manage permissions. Only - works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/secrets/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.1449242Z\",\"updatedOn\":\"2021-11-11T20:14:30.7793470Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b86a8fe4-44ce-4948-aee5-eccb2c155cd7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b86a8fe4-44ce-4948-aee5-eccb2c155cd7\"},{\"properties\":{\"roleName\":\"Key - Vault Secrets User\",\"type\":\"BuiltInRole\",\"description\":\"Read secret - contents. Only works for key vaults that use the 'Azure role-based access - control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/secrets/getSecret/action\",\"Microsoft.KeyVault/vaults/secrets/readMetadata/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2049241Z\",\"updatedOn\":\"2021-11-11T20:14:30.9542829Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4633458b-17de-408a-b874-0445c86b69e6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4633458b-17de-408a-b874-0445c86b69e6\"},{\"properties\":{\"roleName\":\"Key - Vault Certificates Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the certificates of a key vault, except manage permissions. - Only works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/certificatecas/*\",\"Microsoft.KeyVault/vaults/certificates/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2499247Z\",\"updatedOn\":\"2021-11-11T20:14:31.1292967Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a4417e6f-fecd-4de8-b567-7b0420556985\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4417e6f-fecd-4de8-b567-7b0420556985\"},{\"properties\":{\"roleName\":\"Key - Vault Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read metadata of - key vaults and its certificates, keys, and secrets. Cannot read sensitive - values such as secret contents or key material. Only works for key vaults - that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/vaults/secrets/readMetadata/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2949294Z\",\"updatedOn\":\"2021-11-11T20:14:31.3043292Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21090545-7ca7-4776-b22c-e363652d74d2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21090545-7ca7-4776-b22c-e363652d74d2\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto Service Encryption User\",\"type\":\"BuiltInRole\",\"description\":\"Read - metadata of keys and perform wrap/unwrap operations. Only works for key vaults - that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventGrid/eventSubscriptions/write\",\"Microsoft.EventGrid/eventSubscriptions/read\",\"Microsoft.EventGrid/eventSubscriptions/delete\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/read\",\"Microsoft.KeyVault/vaults/keys/wrap/action\",\"Microsoft.KeyVault/vaults/keys/unwrap/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-20T20:55:19.2398470Z\",\"updatedOn\":\"2021-11-11T20:14:31.8443056Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e147488a-f6f5-4113-8e2d-b22465e65bf6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e147488a-f6f5-4113-8e2d-b22465e65bf6\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Viewer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - view all resources in cluster/namespace, except secrets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/read\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/read\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/read\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/read\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/read\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/read\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/read\",\"Microsoft.Kubernetes/connectedClusters/configmaps/read\",\"Microsoft.Kubernetes/connectedClusters/endpoints/read\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/read\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/read\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/read\",\"Microsoft.Kubernetes/connectedClusters/pods/read\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/read\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/read\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/read\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/read\",\"Microsoft.Kubernetes/connectedClusters/services/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:51:12.8801199Z\",\"updatedOn\":\"2021-11-11T20:14:33.8193353Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/63f0a09d-1495-4db4-a681-037d84835eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"63f0a09d-1495-4db4-a681-037d84835eb4\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Writer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - update everything in cluster/namespace, except (cluster)roles and (cluster)role - bindings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/*\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/*\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/*\",\"Microsoft.Kubernetes/connectedClusters/configmaps/*\",\"Microsoft.Kubernetes/connectedClusters/endpoints/*\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/*\",\"Microsoft.Kubernetes/connectedClusters/pods/*\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/secrets/*\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/*\",\"Microsoft.Kubernetes/connectedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:53:50.6749823Z\",\"updatedOn\":\"2021-11-11T20:14:34.0043462Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5b999177-9696-4545-85c7-50de3797e5a1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5b999177-9696-4545-85c7-50de3797e5a1\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Cluster Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources in the cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:55:30.9910462Z\",\"updatedOn\":\"2021-11-11T20:14:34.1743694Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8393591c-06b9-48a2-a542-1bd6b377f6a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8393591c-06b9-48a2-a542-1bd6b377f6a2\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage all resources under cluster/namespace, except update or delete resource - quotas and namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/*\",\"Microsoft.Kubernetes/connectedClusters/authorization.k8s.io/localsubjectaccessreviews/write\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/*\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/*\",\"Microsoft.Kubernetes/connectedClusters/configmaps/*\",\"Microsoft.Kubernetes/connectedClusters/endpoints/*\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/*\",\"Microsoft.Kubernetes/connectedClusters/pods/*\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.Kubernetes/connectedClusters/rbac.authorization.k8s.io/rolebindings/*\",\"Microsoft.Kubernetes/connectedClusters/rbac.authorization.k8s.io/roles/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/secrets/*\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/*\",\"Microsoft.Kubernetes/connectedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:57:06.0391177Z\",\"updatedOn\":\"2021-11-11T20:14:34.3593384Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dffb1e0c-446f-4dde-a09f-99eb5cc68b96\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dffb1e0c-446f-4dde-a09f-99eb5cc68b96\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Cluster Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources in the cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:47:24.4071415Z\",\"updatedOn\":\"2021-11-11T20:14:35.5993607Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources under cluster/namespace, except update or delete - resource quotas and namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/*\"],\"notDataActions\":[\"Microsoft.ContainerService/managedClusters/resourcequotas/write\",\"Microsoft.ContainerService/managedClusters/resourcequotas/delete\",\"Microsoft.ContainerService/managedClusters/namespaces/write\",\"Microsoft.ContainerService/managedClusters/namespaces/delete\"]}],\"createdOn\":\"2020-07-02T17:50:30.4020311Z\",\"updatedOn\":\"2021-11-11T20:14:35.7743651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3498e952-d568-435e-9b2c-8d77e338d7f7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3498e952-d568-435e-9b2c-8d77e338d7f7\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read-only access to see most objects in a namespace. It does not allow viewing - roles or role bindings. This role does not allow viewing Secrets, since reading - the contents of Secrets enables access to ServiceAccount credentials in the - namespace, which would allow API access as any ServiceAccount in the namespace - (a form of privilege escalation). Applying this role at cluster scope will - give access across all namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/apps/controllerrevisions/read\",\"Microsoft.ContainerService/managedClusters/apps/daemonsets/read\",\"Microsoft.ContainerService/managedClusters/apps/deployments/read\",\"Microsoft.ContainerService/managedClusters/apps/replicasets/read\",\"Microsoft.ContainerService/managedClusters/apps/statefulsets/read\",\"Microsoft.ContainerService/managedClusters/autoscaling/horizontalpodautoscalers/read\",\"Microsoft.ContainerService/managedClusters/batch/cronjobs/read\",\"Microsoft.ContainerService/managedClusters/batch/jobs/read\",\"Microsoft.ContainerService/managedClusters/configmaps/read\",\"Microsoft.ContainerService/managedClusters/endpoints/read\",\"Microsoft.ContainerService/managedClusters/events.k8s.io/events/read\",\"Microsoft.ContainerService/managedClusters/events/read\",\"Microsoft.ContainerService/managedClusters/extensions/daemonsets/read\",\"Microsoft.ContainerService/managedClusters/extensions/deployments/read\",\"Microsoft.ContainerService/managedClusters/extensions/ingresses/read\",\"Microsoft.ContainerService/managedClusters/extensions/networkpolicies/read\",\"Microsoft.ContainerService/managedClusters/extensions/replicasets/read\",\"Microsoft.ContainerService/managedClusters/limitranges/read\",\"Microsoft.ContainerService/managedClusters/namespaces/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/ingresses/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/read\",\"Microsoft.ContainerService/managedClusters/persistentvolumeclaims/read\",\"Microsoft.ContainerService/managedClusters/pods/read\",\"Microsoft.ContainerService/managedClusters/policy/poddisruptionbudgets/read\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/read\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/read\",\"Microsoft.ContainerService/managedClusters/resourcequotas/read\",\"Microsoft.ContainerService/managedClusters/serviceaccounts/read\",\"Microsoft.ContainerService/managedClusters/services/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:53:05.5728294Z\",\"updatedOn\":\"2021-11-11T20:14:35.9544048Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f6c6a51-bcf8-42ba-9220-52d62157d7db\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f6c6a51-bcf8-42ba-9220-52d62157d7db\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Writer\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read/write access to most objects in a namespace.This role does not allow - viewing or modifying roles or role bindings. However, this role allows accessing - Secrets and running Pods as any ServiceAccount in the namespace, so it can - be used to gain the API access levels of any ServiceAccount in the namespace. - Applying this role at cluster scope will give access across all namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/apps/controllerrevisions/read\",\"Microsoft.ContainerService/managedClusters/apps/daemonsets/*\",\"Microsoft.ContainerService/managedClusters/apps/deployments/*\",\"Microsoft.ContainerService/managedClusters/apps/replicasets/*\",\"Microsoft.ContainerService/managedClusters/apps/statefulsets/*\",\"Microsoft.ContainerService/managedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.ContainerService/managedClusters/batch/cronjobs/*\",\"Microsoft.ContainerService/managedClusters/batch/jobs/*\",\"Microsoft.ContainerService/managedClusters/configmaps/*\",\"Microsoft.ContainerService/managedClusters/endpoints/*\",\"Microsoft.ContainerService/managedClusters/events.k8s.io/events/read\",\"Microsoft.ContainerService/managedClusters/events/read\",\"Microsoft.ContainerService/managedClusters/extensions/daemonsets/*\",\"Microsoft.ContainerService/managedClusters/extensions/deployments/*\",\"Microsoft.ContainerService/managedClusters/extensions/ingresses/*\",\"Microsoft.ContainerService/managedClusters/extensions/networkpolicies/*\",\"Microsoft.ContainerService/managedClusters/extensions/replicasets/*\",\"Microsoft.ContainerService/managedClusters/limitranges/read\",\"Microsoft.ContainerService/managedClusters/namespaces/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.ContainerService/managedClusters/persistentvolumeclaims/*\",\"Microsoft.ContainerService/managedClusters/pods/*\",\"Microsoft.ContainerService/managedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/*\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/*\",\"Microsoft.ContainerService/managedClusters/resourcequotas/read\",\"Microsoft.ContainerService/managedClusters/secrets/*\",\"Microsoft.ContainerService/managedClusters/serviceaccounts/*\",\"Microsoft.ContainerService/managedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:54:51.9644983Z\",\"updatedOn\":\"2021-11-11T20:14:36.1293406Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7ffa36f-339b-4b5c-8bdf-e2c188b2c0eb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7ffa36f-339b-4b5c-8bdf-e2c188b2c0eb\"},{\"properties\":{\"roleName\":\"Services - Hub Operator\",\"type\":\"BuiltInRole\",\"description\":\"Services Hub Operator - allows you to perform all read, write, and deletion operations related to - Services Hub Connectors.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.ServicesHub/connectors/write\",\"Microsoft.ServicesHub/connectors/read\",\"Microsoft.ServicesHub/connectors/delete\",\"Microsoft.ServicesHub/connectors/checkAssessmentEntitlement/action\",\"Microsoft.ServicesHub/supportOfferingEntitlement/read\",\"Microsoft.ServicesHub/workspaces/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-07-20T17:57:22.0644902Z\",\"updatedOn\":\"2021-11-11T20:14:37.5544021Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/82200a5b-e217-47a5-b665-6d8765ee745b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"82200a5b-e217-47a5-b665-6d8765ee745b\"},{\"properties\":{\"roleName\":\"Object - Understanding Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read ingestion jobs for an object understanding account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-23T19:16:31.9929119Z\",\"updatedOn\":\"2021-11-11T20:14:37.9070085Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d18777c0-1514-4662-8490-608db7d334b6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d18777c0-1514-4662-8490-608db7d334b6\"},{\"properties\":{\"roleName\":\"Azure - Arc Enabled Kubernetes Cluster User Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster user credentials action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Kubernetes/connectedClusters/listClusterUserCredentials/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\",\"Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-07-28T17:37:00.7637445Z\",\"updatedOn\":\"2022-02-17T02:29:05.1000798Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00493d72-78f6-4148-b6c5-d3ce8e4799dd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00493d72-78f6-4148-b6c5-d3ce8e4799dd\"},{\"properties\":{\"roleName\":\"SignalR - App Server\",\"type\":\"BuiltInRole\",\"description\":\"Lets your app server - access SignalR Service with AAD auth options.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/accessKey/action\",\"Microsoft.SignalRService/SignalR/serverConnection/write\",\"Microsoft.SignalRService/SignalR/clientConnection/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-29T06:54:40.1201435Z\",\"updatedOn\":\"2021-11-16T05:19:04.8579948Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/420fcaa2-552c-430f-98ca-3264be4806c7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"420fcaa2-552c-430f-98ca-3264be4806c7\"},{\"properties\":{\"roleName\":\"SignalR - REST API Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to - Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/clientToken/action\",\"Microsoft.SignalRService/SignalR/hub/send/action\",\"Microsoft.SignalRService/SignalR/group/send/action\",\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/group/write\",\"Microsoft.SignalRService/SignalR/clientConnection/send/action\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/clientConnection/write\",\"Microsoft.SignalRService/SignalR/user/send/action\",\"Microsoft.SignalRService/SignalR/user/read\",\"Microsoft.SignalRService/SignalR/user/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-29T09:35:32.2764751Z\",\"updatedOn\":\"2021-11-11T20:14:38.8028020Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd53cd77-2268-407a-8f46-7e7863d0f521\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd53cd77-2268-407a-8f46-7e7863d0f521\"},{\"properties\":{\"roleName\":\"Collaborative - Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage data - packages of a collaborative.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/*/read\",\"Microsoft.IndustryDataLifecycle/memberCollaboratives/*/read\",\"Microsoft.IndustryDataLifecycle/locations/dataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/receivedDataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/rejectDataPackage/action\",\"Microsoft.IndustryDataLifecycle/memberCollaboratives/sharedDataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/dataModels/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/auditLogs/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-08-14T11:58:31.8973556Z\",\"updatedOn\":\"2021-11-11T20:14:40.2428145Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/daa9e50b-21df-454c-94a6-a8050adab352\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"daa9e50b-21df-454c-94a6-a8050adab352\"},{\"properties\":{\"roleName\":\"Device - Update Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives you read - access to management and content operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:40:19.2373610Z\",\"updatedOn\":\"2021-11-11T20:14:40.7922672Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e9dba6fb-3d52-4cf0-bce3-f06ce71b9e0f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e9dba6fb-3d52-4cf0-bce3-f06ce71b9e0f\"},{\"properties\":{\"roleName\":\"Device - Update Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives you - full access to management and content operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/write\",\"Microsoft.DeviceUpdate/accounts/instances/updates/delete\",\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/write\",\"Microsoft.DeviceUpdate/accounts/instances/management/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:56:22.3520510Z\",\"updatedOn\":\"2021-11-11T20:14:40.9672678Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/02ca0879-e8e4-47a5-a61e-5c618b76e64a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"02ca0879-e8e4-47a5-a61e-5c618b76e64a\"},{\"properties\":{\"roleName\":\"Device - Update Content Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you full access to content operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/write\",\"Microsoft.DeviceUpdate/accounts/instances/updates/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:58:18.4255500Z\",\"updatedOn\":\"2021-11-11T20:14:41.1433368Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0378884a-3af5-44ab-8323-f5b22f9f3c98\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0378884a-3af5-44ab-8323-f5b22f9f3c98\"},{\"properties\":{\"roleName\":\"Device - Update Deployments Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you full access to management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/write\",\"Microsoft.DeviceUpdate/accounts/instances/management/delete\",\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:59:52.1001666Z\",\"updatedOn\":\"2022-01-13T01:59:19.4616366Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e4237640-0e3d-4a46-8fda-70bc94856432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e4237640-0e3d-4a46-8fda-70bc94856432\"},{\"properties\":{\"roleName\":\"Device - Update Deployments Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you read access to management operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-22T00:01:34.7053630Z\",\"updatedOn\":\"2022-01-13T01:35:51.6463216Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49e2f5d2-7741-4835-8efa-19e1fe35e47f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49e2f5d2-7741-4835-8efa-19e1fe35e47f\"},{\"properties\":{\"roleName\":\"Device - Update Content Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives you - read access to content operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-22T00:02:43.3299181Z\",\"updatedOn\":\"2021-11-11T20:14:41.6754856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d1ee9a80-8b14-47f0-bdc2-f4a351625a7b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d1ee9a80-8b14-47f0-bdc2-f4a351625a7b\"},{\"properties\":{\"roleName\":\"Cognitive - Services Metrics Advisor Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to the project, including the system level configuration.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-10T07:46:47.5804491Z\",\"updatedOn\":\"2021-11-11T20:14:43.6930781Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cb43c632-a144-4ec5-977c-e80c4affc34a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cb43c632-a144-4ec5-977c-e80c4affc34a\"},{\"properties\":{\"roleName\":\"Cognitive - Services Metrics Advisor User\",\"type\":\"BuiltInRole\",\"description\":\"Access - to the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/stats/*\"]}],\"createdOn\":\"2020-09-10T07:47:59.6195639Z\",\"updatedOn\":\"2021-11-11T20:14:43.8780761Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3b20f47b-3825-43cb-8114-4bd2201156a8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3b20f47b-3825-43cb-8114-4bd2201156a8\"},{\"properties\":{\"roleName\":\"Schema - Registry Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read - and list Schema Registry groups and schemas.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/schemagroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/namespaces/schemas/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-13T06:31:38.0272740Z\",\"updatedOn\":\"2021-11-11T20:14:44.6350450Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2c56ea50-c6b3-40a6-83c0-9d98858bc7d2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2c56ea50-c6b3-40a6-83c0-9d98858bc7d2\"},{\"properties\":{\"roleName\":\"Schema - Registry Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read, - write, and delete Schema Registry groups and schemas.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/schemagroups/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/namespaces/schemas/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-13T06:48:26.6032931Z\",\"updatedOn\":\"2021-11-11T20:14:44.8200370Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5dffeca3-4936-4216-b2bc-10343a5abb25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5dffeca3-4936-4216-b2bc-10343a5abb25\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides - read access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-14T10:21:08.9138820Z\",\"updatedOn\":\"2021-11-11T20:14:45.0056815Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7ec7ccdc-f61e-41fe-9aaf-980df0a44eba\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ec7ccdc-f61e-41fe-9aaf-980df0a44eba\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - contribute access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*/action\",\"Microsoft.AgFoodPlatform/*/read\",\"Microsoft.AgFoodPlatform/*/write\"],\"notDataActions\":[\"Microsoft.AgFoodPlatform/farmers/write\",\"Microsoft.AgFoodPlatform/deletionJobs/*/write\"]}],\"createdOn\":\"2020-09-14T10:21:09.7239169Z\",\"updatedOn\":\"2021-11-11T20:14:45.1806787Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8508508a-4469-4e45-963b-2518ee0bb728\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8508508a-4469-4e45-963b-2518ee0bb728\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Admin\",\"type\":\"BuiltInRole\",\"description\":\"Provides - admin access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-14T10:21:09.8039209Z\",\"updatedOn\":\"2021-11-11T20:14:45.3613128Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f8da80de-1ff9-4747-ad80-a19b7f6079e3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f8da80de-1ff9-4747-ad80-a19b7f6079e3\"},{\"properties\":{\"roleName\":\"Managed - HSM contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - managed HSM pools, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.KeyVault/managedHSMs/*\",\"Microsoft.KeyVault/deletedManagedHsms/read\",\"Microsoft.KeyVault/locations/deletedManagedHsms/read\",\"Microsoft.KeyVault/locations/deletedManagedHsms/purge/action\",\"Microsoft.KeyVault/locations/managedHsmOperationResults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-09-16T21:47:01.1291104Z\",\"updatedOn\":\"2022-03-07T20:20:03.1782149Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18500a29-7fe2-46b2-a342-b16a415e101d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18500a29-7fe2-46b2-a342-b16a415e101d\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Submitter\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to create submissions to Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/delete\",\"Microsoft.SecurityDetonation/chambers/submissions/write\",\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\",\"Microsoft.SecurityDetonation/chambers/submissions/accesskeyview/read\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-01T08:55:21.3980274Z\",\"updatedOn\":\"2021-11-11T20:14:47.5471350Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0b555d9b-b4a7-4f43-b330-627f0e5be8f0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0b555d9b-b4a7-4f43-b330-627f0e5be8f0\"},{\"properties\":{\"roleName\":\"SignalR - REST API Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only access - to Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/user/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-13T09:19:05.6463616Z\",\"updatedOn\":\"2021-11-11T20:14:48.7902970Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ddde6b66-c0df-4114-a159-3618637b3035\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ddde6b66-c0df-4114-a159-3618637b3035\"},{\"properties\":{\"roleName\":\"SignalR - Service Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to - Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/accessKey/action\",\"Microsoft.SignalRService/SignalR/auth/clientToken/action\",\"Microsoft.SignalRService/SignalR/hub/send/action\",\"Microsoft.SignalRService/SignalR/group/send/action\",\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/group/write\",\"Microsoft.SignalRService/SignalR/clientConnection/send/action\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/clientConnection/write\",\"Microsoft.SignalRService/SignalR/serverConnection/write\",\"Microsoft.SignalRService/SignalR/user/send/action\",\"Microsoft.SignalRService/SignalR/user/read\",\"Microsoft.SignalRService/SignalR/user/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-13T09:20:32.1501410Z\",\"updatedOn\":\"2021-11-11T20:14:48.9653162Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7e4f1700-ea5a-4f59-8f37-079cfe29dce3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7e4f1700-ea5a-4f59-8f37-079cfe29dce3\"},{\"properties\":{\"roleName\":\"Reservation - Purchaser\",\"type\":\"BuiltInRole\",\"description\":\"Lets you purchase reservations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Capacity/catalogs/read\",\"Microsoft.Capacity/register/action\",\"Microsoft.Compute/register/action\",\"Microsoft.Consumption/register/action\",\"Microsoft.Consumption/reservationRecommendationDetails/read\",\"Microsoft.Consumption/reservationRecommendations/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.SQL/register/action\",\"Microsoft.Support/supporttickets/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-10-23T20:22:48.9217751Z\",\"updatedOn\":\"2022-04-25T20:55:26.9790121Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f7b75c60-3036-4b75-91c3-6b41c27c1689\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f7b75c60-3036-4b75-91c3-6b41c27c1689\"},{\"properties\":{\"roleName\":\"AzureML - Metrics Writer (preview)\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you write metrics to AzureML workspace\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.MachineLearningServices/workspaces/metrics/*/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-10-27T16:55:19.5664950Z\",\"updatedOn\":\"2021-11-11T20:14:49.8655015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/635dd51f-9968-44d3-b7fb-6d9a6bd613ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"635dd51f-9968-44d3-b7fb-6d9a6bd613ae\"},{\"properties\":{\"roleName\":\"Storage - Account Backup Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you perform backup and restore operations using Azure Backup on the storage - account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/locks/read\",\"Microsoft.Authorization/locks/write\",\"Microsoft.Authorization/locks/delete\",\"Microsoft.Features/features/read\",\"Microsoft.Features/providers/features/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/operations/read\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/delete\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/read\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/write\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/restorePointMarkers/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/read\",\"Microsoft.Storage/storageAccounts/blobServices/write\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Storage/storageAccounts/restoreBlobRanges/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-11-02T23:32:50.4203469Z\",\"updatedOn\":\"2022-04-20T01:44:53.5887074Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1\"},{\"properties\":{\"roleName\":\"Experimentation - Metric Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - creation, writes and reads to the metric set via the metrics service APIs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-10T20:07:53.7535885Z\",\"updatedOn\":\"2021-11-11T20:14:50.9524177Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6188b7c9-7d01-4f99-a59f-c88b630326c0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6188b7c9-7d01-4f99-a59f-c88b630326c0\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Curator\",\"type\":\"BuiltInRole\",\"description\":\"The Microsoft.ProjectBabylon - data curator can create, read, modify and delete catalog data objects and - establish relationships between objects. This role is in preview and subject - to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/data/read\",\"Microsoft.ProjectBabylon/accounts/data/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:31:33.7988825Z\",\"updatedOn\":\"2021-11-11T20:14:51.4929515Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9ef4ef9c-a049-46b0-82ab-dd8ac094c889\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9ef4ef9c-a049-46b0-82ab-dd8ac094c889\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"The Microsoft.ProjectBabylon - data reader can read catalog data objects. This role is in preview and subject - to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/data/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:33:13.5342351Z\",\"updatedOn\":\"2021-11-11T20:14:51.6729667Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c8d896ba-346d-4f50-bc1d-7d1c84130446\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d896ba-346d-4f50-bc1d-7d1c84130446\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Source Administrator\",\"type\":\"BuiltInRole\",\"description\":\"The - Microsoft.ProjectBabylon data source administrator can manage data sources - and data scans. This role is in preview and subject to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/scan/read\",\"Microsoft.ProjectBabylon/accounts/scan/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:34:01.8401954Z\",\"updatedOn\":\"2021-11-11T20:14:51.8529643Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/05b7651b-dc44-475e-b74d-df3db49fae0f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"05b7651b-dc44-475e-b74d-df3db49fae0f\"},{\"properties\":{\"roleName\":\"Purview - role 1 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/data/read\",\"Microsoft.Purview/accounts/data/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:37:15.0123345Z\",\"updatedOn\":\"2022-01-04T00:43:15.6924286Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8a3c2885-9b38-4fd2-9d99-91af537c1347\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8a3c2885-9b38-4fd2-9d99-91af537c1347\"},{\"properties\":{\"roleName\":\"Purview - role 3 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/data/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:39:22.2344740Z\",\"updatedOn\":\"2022-01-04T00:48:08.2844802Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ff100721-1b9d-43d8-af52-42b69c1272db\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ff100721-1b9d-43d8-af52-42b69c1272db\"},{\"properties\":{\"roleName\":\"Purview - role 2 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/scan/read\",\"Microsoft.Purview/accounts/scan/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:40:05.0975648Z\",\"updatedOn\":\"2022-01-04T00:47:22.9678219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/200bba9e-f0c8-430f-892b-6f0794863803\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"200bba9e-f0c8-430f-892b-6f0794863803\"},{\"properties\":{\"roleName\":\"Application - Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.DesktopVirtualization/workspaces/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-03T23:26:00.2784962Z\",\"updatedOn\":\"2021-11-11T20:14:52.9432015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ca6382a4-1721-4bcf-a114-ff0c70227b6b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ca6382a4-1721-4bcf-a114-ff0c70227b6b\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of Desktop Virtualization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:36:19.0140629Z\",\"updatedOn\":\"2021-11-11T20:14:54.0407838Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49a72310-ab8d-41df-bbb0-79b649203868\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49a72310-ab8d-41df-bbb0-79b649203868\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of Desktop Virtualization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:37:16.2910337Z\",\"updatedOn\":\"2021-11-11T20:14:54.2107872Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/082f0a83-3be5-4ba1-904c-961cca79b387\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"082f0a83-3be5-4ba1-904c-961cca79b387\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Workspace Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Workspace.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/workspaces/*\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:38:29.6089216Z\",\"updatedOn\":\"2021-11-11T20:14:54.3907854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21efdde3-836f-432b-bf3d-3e8e734d4b2b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21efdde3-836f-432b-bf3d-3e8e734d4b2b\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization User Session Operator\",\"type\":\"BuiltInRole\",\"description\":\"Operator - of the Desktop Virtualization Uesr Session.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:39:16.9100273Z\",\"updatedOn\":\"2021-11-11T20:14:54.5657970Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ea4bfff8-7fb4-485a-aadd-d4129a0ffaa6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ea4bfff8-7fb4-485a-aadd-d4129a0ffaa6\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Session Host Operator\",\"type\":\"BuiltInRole\",\"description\":\"Operator - of the Desktop Virtualization Session Host.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:39:53.2569741Z\",\"updatedOn\":\"2021-11-11T20:14:54.7508042Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2ad6aaab-ead9-4eaa-8ac5-da422f562408\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2ad6aaab-ead9-4eaa-8ac5-da422f562408\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Host Pool Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Host Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/*/read\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:40:33.1430834Z\",\"updatedOn\":\"2021-11-11T20:14:54.9257967Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ceadfde2-b300-400a-ab7b-6143895aa822\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ceadfde2-b300-400a-ab7b-6143895aa822\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Host Pool Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Host Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:40:57.2976187Z\",\"updatedOn\":\"2021-11-11T20:14:55.1057701Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e307426c-f9b6-4e81-87de-d99efb3c32bc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e307426c-f9b6-4e81-87de-d99efb3c32bc\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Application Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*/read\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:18.0287398Z\",\"updatedOn\":\"2021-11-11T20:14:55.2858006Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/aebf23d0-b568-4e86-b8f9-fe83a2c6ab55\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"aebf23d0-b568-4e86-b8f9-fe83a2c6ab55\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Application Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:38.6205531Z\",\"updatedOn\":\"2021-11-11T20:14:55.4677136Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/86240b0e-9422-4c43-887b-b61143f32ba8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86240b0e-9422-4c43-887b-b61143f32ba8\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Workspace Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Workspace.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/workspaces/read\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:58.1892707Z\",\"updatedOn\":\"2021-11-11T20:14:55.6577168Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0fa44ee9-7a7d-466b-9bb2-2bf446b1204d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0fa44ee9-7a7d-466b-9bb2-2bf446b1204d\"},{\"properties\":{\"roleName\":\"Disk - Backup Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides permission - to backup vault to perform disk backup.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/disks/read\",\"Microsoft.Compute/disks/beginGetAccess/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T07:39:03.8394514Z\",\"updatedOn\":\"2021-11-11T20:14:56.0178737Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3e5e47e6-65f7-47ef-90b5-e5dd4d455f24\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - permissions to upload and manage new Autonomous Development Platform measurements.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/discoveries/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/uploads/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurements/states/new/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurementCollections/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/measurementCollections/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/discoveries/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/uploads/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurements/states/new/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurementCollections/*\"],\"notDataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurements/states/new/changeState/action\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurements/states/new/changeState/action\"]}],\"createdOn\":\"2020-12-15T11:30:01.7459379Z\",\"updatedOn\":\"2022-01-04T13:19:41.5458536Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b8b15564-4fa6-4a59-ab12-03e1d9594795\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b8b15564-4fa6-4a59-ab12-03e1d9594795\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - read access to Autonomous Development Platform data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:11:31.9843256Z\",\"updatedOn\":\"2022-01-04T13:21:04.3207709Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d63b75f7-47ea-4f27-92ac-e0d173aaf093\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d63b75f7-47ea-4f27-92ac-e0d173aaf093\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Owner (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to Autonomous Development Platform data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:13:59.9702378Z\",\"updatedOn\":\"2022-01-04T13:20:26.2040404Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/27f8b550-c507-4db9-86f2-f4b8e816d59d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"27f8b550-c507-4db9-86f2-f4b8e816d59d\"},{\"properties\":{\"roleName\":\"Disk - Restore Operator\",\"type\":\"BuiltInRole\",\"description\":\"Provides permission - to backup vault to perform disk restore.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:18:31.8481619Z\",\"updatedOn\":\"2021-11-11T20:14:56.7408912Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b50d9833-a0cb-478e-945f-707fcc997c13\"},{\"properties\":{\"roleName\":\"Disk - Snapshot Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - permission to backup vault to manage disk snapshots.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Compute/snapshots/delete\",\"Microsoft.Compute/snapshots/write\",\"Microsoft.Compute/snapshots/read\",\"Microsoft.Compute/snapshots/beginGetAccess/action\",\"Microsoft.Compute/snapshots/endGetAccess/action\",\"Microsoft.Compute/disks/beginGetAccess/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/write\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Storage/storageAccounts/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:18:51.4471411Z\",\"updatedOn\":\"2021-11-11T20:14:56.9158814Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7efff54f-a5b4-42b5-a1c5-5411624893ce\"},{\"properties\":{\"roleName\":\"Microsoft.Kubernetes - connected cluster role\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft.Kubernetes - connected cluster role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Kubernetes/connectedClusters/read\",\"Microsoft.Kubernetes/connectedClusters/write\",\"Microsoft.Kubernetes/connectedClusters/delete\",\"Microsoft.Kubernetes/registeredSubscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-07T23:57:10.9923232Z\",\"updatedOn\":\"2021-11-11T20:14:58.2039838Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5548b2cf-c94c-4228-90ba-30851930a12f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5548b2cf-c94c-4228-90ba-30851930a12f\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Submission Manager\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to create and manage submissions to Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/delete\",\"Microsoft.SecurityDetonation/chambers/submissions/write\",\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\",\"Microsoft.SecurityDetonation/chambers/submissions/accesskeyview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/adminview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/analystview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/publicview/read\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-18T09:35:36.5739297Z\",\"updatedOn\":\"2021-11-11T20:14:58.3939604Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a37b566d-3efa-4beb-a2f2-698963fa42ce\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a37b566d-3efa-4beb-a2f2-698963fa42ce\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Publisher\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to publish and modify platforms, workflows and toolsets to Security Detonation - Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/platforms/read\",\"Microsoft.SecurityDetonation/chambers/platforms/write\",\"Microsoft.SecurityDetonation/chambers/platforms/delete\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/read\",\"Microsoft.SecurityDetonation/chambers/workflows/write\",\"Microsoft.SecurityDetonation/chambers/workflows/delete\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/write\",\"Microsoft.SecurityDetonation/chambers/toolsets/delete\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\",\"Microsoft.SecurityDetonation/chambers/publishRequests/read\",\"Microsoft.SecurityDetonation/chambers/publishRequests/cancel/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-18T11:43:14.0858184Z\",\"updatedOn\":\"2021-11-11T20:14:58.5639749Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/352470b3-6a9c-4686-b503-35deb827e500\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"352470b3-6a9c-4686-b503-35deb827e500\"},{\"properties\":{\"roleName\":\"Collaborative - Runtime Operator\",\"type\":\"BuiltInRole\",\"description\":\"Can manage resources - created by AICS at runtime\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.IndustryDataLifecycle/derivedModels/*\",\"Microsoft.IndustryDataLifecycle/pipelineSets/*\",\"Microsoft.IndustryDataLifecycle/modelMappings/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-19T10:00:27.3464971Z\",\"updatedOn\":\"2021-11-11T20:14:58.7442136Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7a6f0e70-c033-4fb1-828c-08514e5f4102\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7a6f0e70-c033-4fb1-828c-08514e5f4102\"},{\"properties\":{\"roleName\":\"CosmosRestoreOperator\",\"type\":\"BuiltInRole\",\"description\":\"Can - perform restore action for Cosmos DB database account with continuous backup - mode\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action\",\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read\",\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-21T19:51:35.3884884Z\",\"updatedOn\":\"2021-11-11T20:14:59.4892686Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5432c526-bc82-444a-b7ba-57c5b0b5b34f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5432c526-bc82-444a-b7ba-57c5b0b5b34f\"},{\"properties\":{\"roleName\":\"FHIR - Data Converter\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to convert data from legacy format to FHIR\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/convertData/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/convertData/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-22T19:39:01.1601069Z\",\"updatedOn\":\"2021-11-11T20:14:59.8605937Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a1705bd2-3a8f-45a5-8683-466fcfd5cc24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a1705bd2-3a8f-45a5-8683-466fcfd5cc24\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Automation Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Automation Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Logic/workflows/triggers/read\",\"Microsoft.Logic/workflows/triggers/listCallbackUrl/action\",\"Microsoft.Logic/workflows/runs/read\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/triggers/read\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/triggers/listCallbackUrl/action\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/runs/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-24T08:50:52.0382991Z\",\"updatedOn\":\"2022-01-26T09:25:00.4699337Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f4c81013-99ee-4d62-a7ee-b3f1f648599a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f4c81013-99ee-4d62-a7ee-b3f1f648599a\"},{\"properties\":{\"roleName\":\"Quota - Request Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and create - quota requests, get quota request status, and create support tickets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Capacity/resourceProviders/locations/serviceLimits/read\",\"Microsoft.Capacity/resourceProviders/locations/serviceLimits/write\",\"Microsoft.Capacity/resourceProviders/locations/serviceLimitsRequests/read\",\"Microsoft.Capacity/register/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-02-03T00:06:35.8404575Z\",\"updatedOn\":\"2021-11-11T20:15:00.9583919Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0e5f05e5-9ab9-446b-b98d-1e2157c94125\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0e5f05e5-9ab9-446b-b98d-1e2157c94125\"},{\"properties\":{\"roleName\":\"EventGrid - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage EventGrid - operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-02-08T18:46:18.8999557Z\",\"updatedOn\":\"2021-11-11T20:15:01.6867802Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1e241071-0855-49ea-94dc-649edcd759de\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1e241071-0855-49ea-94dc-649edcd759de\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to query submission info and files from Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-01T14:06:46.2814905Z\",\"updatedOn\":\"2021-11-11T20:15:03.3274090Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/28241645-39f8-410b-ad48-87863e2951d5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"28241645-39f8-410b-ad48-87863e2951d5\"},{\"properties\":{\"roleName\":\"Object - Anchors Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - read ingestion jobs for an object anchors account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-02T01:20:47.0279813Z\",\"updatedOn\":\"2021-11-11T20:15:03.5006082Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4a167cdf-cb95-4554-9203-2347fe489bd9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4a167cdf-cb95-4554-9203-2347fe489bd9\"},{\"properties\":{\"roleName\":\"Object - Anchors Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with ingestion capabilities for an object anchors account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/action\",\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-02T01:42:02.0014737Z\",\"updatedOn\":\"2021-11-11T20:15:03.6855873Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ca0835dd-bacc-42dd-8ed2-ed5e7230d15b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ca0835dd-bacc-42dd-8ed2-ed5e7230d15b\"},{\"properties\":{\"roleName\":\"WorkloadBuilder - Migration Agent Role\",\"type\":\"BuiltInRole\",\"description\":\"WorkloadBuilder - Migration Agent Role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.WorkloadBuilder/migrationAgents/Read\",\"Microsoft.WorkloadBuilder/migrationAgents/Write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-03-11T17:07:20.0828003Z\",\"updatedOn\":\"2021-11-11T20:15:04.2456706Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d17ce0a2-0697-43bc-aac5-9113337ab61c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d17ce0a2-0697-43bc-aac5-9113337ab61c\"},{\"properties\":{\"roleName\":\"Web - PubSub Service Owner (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to Azure Web PubSub Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/WebPubSub/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-24T09:10:11.8335180Z\",\"updatedOn\":\"2021-11-16T05:16:52.6491279Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/12cf5a90-567b-43ae-8102-96cf46c7d9b4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"12cf5a90-567b-43ae-8102-96cf46c7d9b4\"},{\"properties\":{\"roleName\":\"Web - PubSub Service Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - access to Azure Web PubSub Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/WebPubSub/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-24T09:11:12.6235436Z\",\"updatedOn\":\"2021-11-16T05:17:12.8340953Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bfb1c7d2-fb1a-466b-b2ba-aee63b92deaf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bfb1c7d2-fb1a-466b-b2ba-aee63b92deaf\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-25T11:12:12.6786010Z\",\"updatedOn\":\"2021-11-11T20:15:05.3368606Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b5537268-8956-4941-a8f0-646150406f0c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b5537268-8956-4941-a8f0-646150406f0c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Speech User\",\"type\":\"BuiltInRole\",\"description\":\"Access to - the real-time speech recognition and batch transcription APIs, real-time speech - synthesis and long audio APIs, as well as to read the data/test/model/endpoint - for custom models, but can\u2019t create, delete or modify the data/test/model/endpoint - for custom models.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/SpeechServices/*/read\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/read\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/write\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/delete\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/frontend/action\",\"Microsoft.CognitiveServices/accounts/SpeechServices/text-dependent/*/action\",\"Microsoft.CognitiveServices/accounts/SpeechServices/text-independent/*/action\",\"Microsoft.CognitiveServices/accounts/CustomVoice/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVoice/evaluations/*\",\"Microsoft.CognitiveServices/accounts/CustomVoice/longaudiosynthesis/*\",\"Microsoft.CognitiveServices/accounts/AudioContentCreation/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVoice/datasets/files/read\",\"Microsoft.CognitiveServices/accounts/CustomVoice/datasets/utterances/read\"]}],\"createdOn\":\"2021-03-30T11:28:27.4339032Z\",\"updatedOn\":\"2022-05-23T15:08:46.2082116Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f2dc8367-1007-4938-bd23-fe263f013447\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f2dc8367-1007-4938-bd23-fe263f013447\"},{\"properties\":{\"roleName\":\"Cognitive - Services Speech Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to Speech projects, including read, write and delete all entities, - for real-time speech recognition and batch transcription tasks, real-time - speech synthesis and long audio tasks, custom speech and custom voice.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/SpeechServices/*\",\"Microsoft.CognitiveServices/accounts/CustomVoice/*\",\"Microsoft.CognitiveServices/accounts/AudioContentCreation/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-30T11:28:49.7826633Z\",\"updatedOn\":\"2022-05-23T15:08:46.1925859Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0e75ca1e-0464-4b4d-8b93-68208a576181\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0e75ca1e-0464-4b4d-8b93-68208a576181\"},{\"properties\":{\"roleName\":\"Cognitive - Services Face Recognizer\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you perform detect, verify, identify, group, and find similar operations on - Face API. This role does not allow create or delete operations, which makes - it well suited for endpoints that only need inferencing capabilities, following - 'least privilege' best practices.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/Face/detect/action\",\"Microsoft.CognitiveServices/accounts/Face/verify/action\",\"Microsoft.CognitiveServices/accounts/Face/identify/action\",\"Microsoft.CognitiveServices/accounts/Face/group/action\",\"Microsoft.CognitiveServices/accounts/Face/findsimilars/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-31T01:51:41.3557295Z\",\"updatedOn\":\"2021-11-11T20:15:05.8818362Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9894cab4-e18a-44aa-828b-cb588cd6f2d7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9894cab4-e18a-44aa-828b-cb588cd6f2d7\"},{\"properties\":{\"roleName\":\"Media - Services Account Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Media Services accounts; read-only access to other - Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/write\",\"Microsoft.Media/mediaservices/delete\",\"Microsoft.Media/mediaservices/privateEndpointConnectionsApproval/action\",\"Microsoft.Media/mediaservices/privateEndpointConnections/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:20:32.2956636Z\",\"updatedOn\":\"2021-11-11T20:15:07.1518844Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/054126f8-9a2b-4f1c-a9ad-eca461f08466\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"054126f8-9a2b-4f1c-a9ad-eca461f08466\"},{\"properties\":{\"roleName\":\"Media - Services Live Events Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Live Events, Assets, Asset Filters, and Streaming - Locators; read-only access to other Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/*\",\"Microsoft.Media/mediaservices/assets/assetfilters/*\",\"Microsoft.Media/mediaservices/streamingLocators/*\",\"Microsoft.Media/mediaservices/liveEvents/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/assets/getEncryptionKey/action\",\"Microsoft.Media/mediaservices/streamingLocators/listContentKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:00.6119555Z\",\"updatedOn\":\"2021-11-11T20:15:07.3318873Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/532bc159-b25e-42c0-969e-a1d439f60d77\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"532bc159-b25e-42c0-969e-a1d439f60d77\"},{\"properties\":{\"roleName\":\"Media - Services Media Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Assets, Asset Filters, Streaming Locators, and Jobs; - read-only access to other Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/*\",\"Microsoft.Media/mediaservices/assets/assetfilters/*\",\"Microsoft.Media/mediaservices/streamingLocators/*\",\"Microsoft.Media/mediaservices/transforms/jobs/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/assets/getEncryptionKey/action\",\"Microsoft.Media/mediaservices/streamingLocators/listContentKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:23.2236495Z\",\"updatedOn\":\"2021-11-11T20:15:07.5068487Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e4395492-1534-4db2-bedf-88c14621589c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e4395492-1534-4db2-bedf-88c14621589c\"},{\"properties\":{\"roleName\":\"Media - Services Policy Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Account Filters, Streaming Policies, Content Key - Policies, and Transforms; read-only access to other Media Services resources. - Cannot create Jobs, Assets or Streaming resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/accountFilters/*\",\"Microsoft.Media/mediaservices/streamingPolicies/*\",\"Microsoft.Media/mediaservices/contentKeyPolicies/*\",\"Microsoft.Media/mediaservices/transforms/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/contentKeyPolicies/getPolicyPropertiesWithSecrets/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:46.9534330Z\",\"updatedOn\":\"2021-11-11T20:15:07.6968496Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c4bba371-dacd-4a26-b320-7250bca963ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c4bba371-dacd-4a26-b320-7250bca963ae\"},{\"properties\":{\"roleName\":\"Media - Services Streaming Endpoints Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Streaming Endpoints; read-only access to other Media - Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/streamingEndpoints/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:22:04.4594851Z\",\"updatedOn\":\"2021-11-11T20:15:07.8718907Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/99dba123-b5fe-44d5-874c-ced7199a5804\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"99dba123-b5fe-44d5-874c-ced7199a5804\"},{\"properties\":{\"roleName\":\"Stream - Analytics Query Tester\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - perform query testing without creating a stream analytics job first\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.StreamAnalytics/locations/TestQuery/action\",\"Microsoft.StreamAnalytics/locations/OperationResults/read\",\"Microsoft.StreamAnalytics/locations/SampleInput/action\",\"Microsoft.StreamAnalytics/locations/CompileQuery/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-20T17:33:24.5727870Z\",\"updatedOn\":\"2021-11-11T20:15:08.0481551Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1ec5b3c1-b17e-4e25-8312-2acb3c3c5abf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1ec5b3c1-b17e-4e25-8312-2acb3c3c5abf\"},{\"properties\":{\"roleName\":\"AnyBuild - Builder\",\"type\":\"BuiltInRole\",\"description\":\"Basic user role for AnyBuild. - This role allows listing of agent information and execution of remote build - capabilities.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AnyBuild/clusters/build/write\",\"Microsoft.AnyBuild/clusters/build/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-20T22:07:00.4963853Z\",\"updatedOn\":\"2021-11-11T20:15:08.4254134Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a2138dac-4907-4679-a376-736901ed8ad8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a2138dac-4907-4679-a376-736901ed8ad8\"},{\"properties\":{\"roleName\":\"IoT - Hub Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full - read access to IoT Hub data-plane properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/*/read\",\"Microsoft.Devices/IotHubs/fileUpload/notifications/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T18:03:29.8843192Z\",\"updatedOn\":\"2021-11-11T20:15:08.6054154Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b447c946-2db7-41ec-983d-d8bf3b1c77e3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b447c946-2db7-41ec-983d-d8bf3b1c77e3\"},{\"properties\":{\"roleName\":\"IoT - Hub Twin Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read and write access to all IoT Hub device and module twins.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/twins/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:36:10.1136903Z\",\"updatedOn\":\"2021-11-11T20:15:08.7855063Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/494bdba2-168f-4f31-a0a1-191d2f7c028c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494bdba2-168f-4f31-a0a1-191d2f7c028c\"},{\"properties\":{\"roleName\":\"IoT - Hub Registry Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to IoT Hub device registry.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/devices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:36:47.5532704Z\",\"updatedOn\":\"2021-11-11T20:15:08.9804295Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4ea46cd5-c1b2-4a8e-910b-273211f9ce47\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4ea46cd5-c1b2-4a8e-910b-273211f9ce47\"},{\"properties\":{\"roleName\":\"IoT - Hub Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - full access to IoT Hub data plane operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:37:16.9927761Z\",\"updatedOn\":\"2021-11-11T20:15:09.1754206Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4fc6c259-987e-4a07-842e-c321cc9d413f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fc6c259-987e-4a07-842e-c321cc9d413f\"},{\"properties\":{\"roleName\":\"Test - Base Reader\",\"type\":\"BuiltInRole\",\"description\":\"Let you view and - download packages and test results.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.TestBase/testBaseAccounts/packages/testResults/getDownloadUrl/action\",\"Microsoft.TestBase/testBaseAccounts/packages/testResults/getVideoDownloadUrl/action\",\"Microsoft.TestBase/testBaseAccounts/packages/getDownloadUrl/action\",\"Microsoft.TestBase/*/read\",\"Microsoft.TestBase/testBaseAccounts/customerEvents/write\",\"Microsoft.TestBase/testBaseAccounts/customerEvents/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-05-11T23:41:33.1038367Z\",\"updatedOn\":\"2021-11-11T20:15:10.8004347Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/15e0f5a1-3450-4248-8e25-e2afe88a9e85\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"15e0f5a1-3450-4248-8e25-e2afe88a9e85\"},{\"properties\":{\"roleName\":\"Search - Index Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants read - access to Azure Cognitive Search index data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Search/searchServices/indexes/documents/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-01T20:26:13.4850461Z\",\"updatedOn\":\"2021-11-11T20:15:11.3604371Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1407120a-92aa-4202-b7e9-c0e197c71c8f\"},{\"properties\":{\"roleName\":\"Search - Index Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to Azure Cognitive Search index data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Search/searchServices/indexes/documents/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-01T22:15:16.5388472Z\",\"updatedOn\":\"2021-11-11T20:15:11.5504385Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8ebe5a00-799e-43f5-93ac-243d3dce84a7\"},{\"properties\":{\"roleName\":\"Storage - Table Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read access to Azure Storage tables and entities\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-15T06:40:54.9150717Z\",\"updatedOn\":\"2021-11-11T20:15:12.1005298Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/76199698-9eea-4c19-bc75-cec21354c6b6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76199698-9eea-4c19-bc75-cec21354c6b6\"},{\"properties\":{\"roleName\":\"Storage - Table Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write and delete access to Azure Storage tables and entities\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/read\",\"Microsoft.Storage/storageAccounts/tableServices/tables/write\",\"Microsoft.Storage/storageAccounts/tableServices/tables/delete\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/read\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/write\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/delete\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/add/action\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/update/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-15T06:51:59.8207610Z\",\"updatedOn\":\"2021-11-11T20:15:12.2854966Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3\"},{\"properties\":{\"roleName\":\"DICOM - Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read and search DICOM - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/dicomservices/resources/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-17T20:58:30.1630494Z\",\"updatedOn\":\"2021-11-11T20:15:13.0154948Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e89c7a3c-2f64-4fa1-a847-3e4c9ba4283a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e89c7a3c-2f64-4fa1-a847-3e4c9ba4283a\"},{\"properties\":{\"roleName\":\"DICOM - Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to DICOM - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/dicomservices/resources/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-17T20:59:30.8659515Z\",\"updatedOn\":\"2021-11-11T20:15:13.1904985Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/58a3b984-7adf-4c20-983a-32417c86fbc8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"58a3b984-7adf-4c20-983a-32417c86fbc8\"},{\"properties\":{\"roleName\":\"EventGrid - Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows send access - to event grid events.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/topics/read\",\"Microsoft.EventGrid/domains/read\",\"Microsoft.EventGrid/partnerNamespaces/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventGrid/events/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-02T21:55:40.4847495Z\",\"updatedOn\":\"2021-11-11T20:15:13.5605134Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d5a91429-5739-47e2-a06b-3470a27159e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d5a91429-5739-47e2-a06b-3470a27159e7\"},{\"properties\":{\"roleName\":\"Disk - Pool Operator\",\"type\":\"BuiltInRole\",\"description\":\"Used by the StoragePool - Resource Provider to manage Disks added to a Disk Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-08T17:26:05.1079972Z\",\"updatedOn\":\"2021-11-11T20:15:13.9154612Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/60fc6e62-5479-42d4-8bf4-67625fcc2840\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"60fc6e62-5479-42d4-8bf4-67625fcc2840\"},{\"properties\":{\"roleName\":\"AzureML - Data Scientist\",\"type\":\"BuiltInRole\",\"description\":\"Can perform all - actions within an Azure Machine Learning workspace, except for creating or - deleting compute resources and modifying the workspace itself.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.MachineLearningServices/workspaces/*/read\",\"Microsoft.MachineLearningServices/workspaces/*/action\",\"Microsoft.MachineLearningServices/workspaces/*/delete\",\"Microsoft.MachineLearningServices/workspaces/*/write\"],\"notActions\":[\"Microsoft.MachineLearningServices/workspaces/delete\",\"Microsoft.MachineLearningServices/workspaces/write\",\"Microsoft.MachineLearningServices/workspaces/computes/*/write\",\"Microsoft.MachineLearningServices/workspaces/computes/*/delete\",\"Microsoft.MachineLearningServices/workspaces/computes/listKeys/action\",\"Microsoft.MachineLearningServices/workspaces/listKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-14T21:51:06.0361218Z\",\"updatedOn\":\"2021-11-11T20:15:14.6405263Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f6c7c914-8db3-469d-8ca1-694a8f32e121\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f6c7c914-8db3-469d-8ca1-694a8f32e121\"},{\"properties\":{\"roleName\":\"Grafana - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana admin - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-15T21:32:35.3802340Z\",\"updatedOn\":\"2021-11-11T20:15:14.8104670Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22926164-76b3-42b3-bc55-97df8dab3e41\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"22926164-76b3-42b3-bc55-97df8dab3e41\"},{\"properties\":{\"roleName\":\"Azure - Connected SQL Server Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft.AzureArcData\_service\_role\_to\_access\_the\_resources\_of\_Microsoft.AzureArcData\_stored\_with\_RPSAAS.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureArcData/sqlServerInstances/read\",\"Microsoft.AzureArcData/sqlServerInstances/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-19T23:52:15.8885739Z\",\"updatedOn\":\"2021-11-11T20:15:15.1754742Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e8113dce-c529-4d33-91fa-e9b972617508\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e8113dce-c529-4d33-91fa-e9b972617508\"},{\"properties\":{\"roleName\":\"Azure - Relay Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows for send - access to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*/wcfRelays/read\",\"Microsoft.Relay/*/hybridConnections/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T15:37:20.7558643Z\",\"updatedOn\":\"2021-11-11T20:15:15.5454755Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/26baccc8-eea7-41f1-98f4-1762cc7f685d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"26baccc8-eea7-41f1-98f4-1762cc7f685d\"},{\"properties\":{\"roleName\":\"Azure - Relay Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full access - to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T15:44:26.3023126Z\",\"updatedOn\":\"2021-11-11T20:15:15.7154782Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2787bf04-f1f5-4bfe-8383-c8a24483ee38\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2787bf04-f1f5-4bfe-8383-c8a24483ee38\"},{\"properties\":{\"roleName\":\"Azure - Relay Listener\",\"type\":\"BuiltInRole\",\"description\":\"Allows for listen - access to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*/wcfRelays/read\",\"Microsoft.Relay/*/hybridConnections/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*/listen/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T18:38:03.1437496Z\",\"updatedOn\":\"2021-11-11T20:15:15.9005232Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/26e0b698-aa6d-4085-9386-aadae190014d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"26e0b698-aa6d-4085-9386-aadae190014d\"},{\"properties\":{\"roleName\":\"Grafana - Viewer\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana Viewer - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaViewer/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-05T16:36:18.7737511Z\",\"updatedOn\":\"2021-11-11T20:15:16.9904932Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/60921a7e-fef1-4a43-9b16-a26c52ad4769\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"60921a7e-fef1-4a43-9b16-a26c52ad4769\"},{\"properties\":{\"roleName\":\"Grafana - Editor\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana Editor - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaEditor/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-05T16:37:32.5299593Z\",\"updatedOn\":\"2021-11-11T20:15:17.1805426Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a79a5197-3a5c-4973-a920-486035ffd60f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a79a5197-3a5c-4973-a920-486035ffd60f\"},{\"properties\":{\"roleName\":\"Automation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Manage azure automation - resources and other resources using azure automation.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Automation/automationAccounts/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/ActionGroups/*\",\"Microsoft.Insights/ActivityLogAlerts/*\",\"Microsoft.Insights/MetricAlerts/*\",\"Microsoft.Insights/ScheduledQueryRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T10:18:19.1054699Z\",\"updatedOn\":\"2021-11-11T20:15:17.7304954Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f353d9bd-d4a6-484e-a77a-8050b599b867\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f353d9bd-d4a6-484e-a77a-8050b599b867\"},{\"properties\":{\"roleName\":\"Kubernetes - Extension Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can create, - update, get, list and delete Kubernetes Extensions, and get extension async - operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.KubernetesConfiguration/extensions/write\",\"Microsoft.KubernetesConfiguration/extensions/read\",\"Microsoft.KubernetesConfiguration/extensions/delete\",\"Microsoft.KubernetesConfiguration/extensions/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:47:50.6828896Z\",\"updatedOn\":\"2021-11-11T20:15:17.9155393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/85cb6faf-e071-4c9b-8136-154b5a04f717\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"85cb6faf-e071-4c9b-8136-154b5a04f717\"},{\"properties\":{\"roleName\":\"Device - Provisioning Service Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full read access to Device Provisioning Service data-plane properties.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/provisioningServices/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:53:12.1374732Z\",\"updatedOn\":\"2021-11-11T20:15:18.0905503Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/10745317-c249-44a1-a5ce-3a4353c0bbd8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"10745317-c249-44a1-a5ce-3a4353c0bbd8\"},{\"properties\":{\"roleName\":\"Device - Provisioning Service Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Device Provisioning Service data-plane operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/provisioningServices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:54:03.2783227Z\",\"updatedOn\":\"2021-11-11T20:15:18.2605302Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dfce44e4-17b7-4bd1-a6d1-04996ec95633\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dfce44e4-17b7-4bd1-a6d1-04996ec95633\"},{\"properties\":{\"roleName\":\"CodeSigning - Certificate Profile Signer\",\"type\":\"BuiltInRole\",\"description\":\"Sign - files with a certificate profile. This role is in preview and subject to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CodeSigning/certificateProfiles/Sign/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-16T23:17:53.0002693Z\",\"updatedOn\":\"2021-11-11T20:15:18.6105679Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2837e146-70d7-4cfd-ad55-7efa6464f958\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2837e146-70d7-4cfd-ad55-7efa6464f958\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Service Registry Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Service Registry\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/eurekaService/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-20T04:40:17.9785063Z\",\"updatedOn\":\"2021-11-11T20:15:18.9655101Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cff1b556-2399-4e7e-856d-a8f754be7b65\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cff1b556-2399-4e7e-856d-a8f754be7b65\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Service Registry Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read, write and delete access to Azure Spring Cloud Service Registry\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/eurekaService/read\",\"Microsoft.AppPlatform/Spring/eurekaService/write\",\"Microsoft.AppPlatform/Spring/eurekaService/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-20T04:42:38.9153779Z\",\"updatedOn\":\"2021-11-11T20:15:19.1405497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f5880b48-c26d-48be-b172-7927bfa1c8f1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f5880b48-c26d-48be-b172-7927bfa1c8f1\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Config Server Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Config Server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/configService/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-26T01:50:51.5123701Z\",\"updatedOn\":\"2021-11-11T20:15:19.3155517Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d04c6db6-4947-4782-9e91-30a88feb7be7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d04c6db6-4947-4782-9e91-30a88feb7be7\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Config Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read, write and delete access to Azure Spring Cloud Config Server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/configService/read\",\"Microsoft.AppPlatform/Spring/configService/write\",\"Microsoft.AppPlatform/Spring/configService/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2021-09-06T02:30:47.8611580Z\",\"updatedOn\":\"2021-11-11T20:15:20.0405208Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a06f5c24-21a7-4e1a-aa2b-f19eb6684f5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a06f5c24-21a7-4e1a-aa2b-f19eb6684f5b\"},{\"properties\":{\"roleName\":\"Azure - VM Managed identities restore Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Azure - VM Managed identities restore Contributors are allowed to perform Azure VM - Restores with managed identities both user and system\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-09-13T05:27:59.2180214Z\",\"updatedOn\":\"2021-11-11T20:15:20.5805266Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6ae96244-5829-4925-a7d3-5975537d91dd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6ae96244-5829-4925-a7d3-5975537d91dd\"},{\"properties\":{\"roleName\":\"Azure - Maps Search and Render Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to very limited set of data APIs for common visual web SDK scenarios. - Specifically, render and search data APIs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/services/render/read\",\"Microsoft.Maps/accounts/services/search/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-10-01T22:17:50.5178931Z\",\"updatedOn\":\"2021-11-11T20:15:22.0455410Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6be48352-4f82-47c9-ad5e-0acacefdb005\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6be48352-4f82-47c9-ad5e-0acacefdb005\"},{\"properties\":{\"roleName\":\"Azure - Maps Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants access - all Azure Maps resource management.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Maps/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-01T22:19:13.1357904Z\",\"updatedOn\":\"2021-11-11T20:15:22.2455414Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dba33070-676a-4fb0-87fa-064dc56ff7fb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dba33070-676a-4fb0-87fa-064dc56ff7fb\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware VM Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Arc - VMware VM Contributor has permissions to perform all VM actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/virtualmachines/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-18T20:19:53.0087024Z\",\"updatedOn\":\"2021-11-11T20:15:23.8706020Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b748a06d-6150-4f8a-aaa9-ce3940cd96cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b748a06d-6150-4f8a-aaa9-ce3940cd96cb\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Private Cloud User\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc VMware Private Cloud User has permissions to use the VMware cloud resources - to deploy VMs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.ConnectedVMwarevSphere/virtualnetworks/join/action\",\"Microsoft.ConnectedVMwarevSphere/virtualnetworks/Read\",\"Microsoft.ConnectedVMwarevSphere/virtualmachinetemplates/clone/action\",\"Microsoft.ConnectedVMwarevSphere/virtualmachinetemplates/Read\",\"Microsoft.ConnectedVMwarevSphere/resourcepools/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/resourcepools/Read\",\"Microsoft.ConnectedVMwarevSphere/hosts/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/hosts/Read\",\"Microsoft.ConnectedVMwarevSphere/clusters/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/clusters/Read\",\"Microsoft.ConnectedVMwarevSphere/datastores/allocateSpace/action\",\"Microsoft.ConnectedVMwarevSphere/datastores/Read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-18T20:20:46.5105444Z\",\"updatedOn\":\"2021-11-11T20:15:24.0456080Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ce551c02-7c42-47e0-9deb-e3b6fc3a9a83\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ce551c02-7c42-47e0-9deb-e3b6fc3a9a83\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Administrator role \",\"type\":\"BuiltInRole\",\"description\":\"Arc - VMware VM Contributor has permissions to perform all connected VMwarevSphere - actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-01T17:12:42.6172725Z\",\"updatedOn\":\"2021-11-11T20:15:25.1275776Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ddc140ed-e463-4246-9145-7c664192013f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ddc140ed-e463-4246-9145-7c664192013f\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Private Clouds Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc VMware Private Clouds Onboarding role has permissions to provision all - the required resources for onboard and deboard vCenter instances to Azure.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/vcenters/Write\",\"Microsoft.ConnectedVMwarevSphere/vcenters/Read\",\"Microsoft.ConnectedVMwarevSphere/vcenters/Delete\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.KubernetesConfiguration/extensions/Write\",\"Microsoft.KubernetesConfiguration/extensions/Read\",\"Microsoft.KubernetesConfiguration/extensions/Delete\",\"Microsoft.KubernetesConfiguration/operations/read\",\"Microsoft.ExtendedLocation/customLocations/Read\",\"Microsoft.ExtendedLocation/customLocations/Write\",\"Microsoft.ExtendedLocation/customLocations/Delete\",\"Microsoft.ExtendedLocation/customLocations/deploy/action\",\"Microsoft.ResourceConnector/appliances/Read\",\"Microsoft.ResourceConnector/appliances/Write\",\"Microsoft.ResourceConnector/appliances/Delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-01T22:18:08.4480747Z\",\"updatedOn\":\"2022-01-14T02:51:08.7237156Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/67d33e57-3129-45e6-bb0b-7cc522f762fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"67d33e57-3129-45e6-bb0b-7cc522f762fa\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Owner\",\"type\":\"BuiltInRole\",\"description\":\" Has access - to all Read, Test, Write, Deploy and Delete functions under LUIS\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T03:28:02.9611800Z\",\"updatedOn\":\"2021-11-11T20:15:25.4884913Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f72c8140-2111-481c-87ff-72b910f6e3f8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f72c8140-2111-481c-87ff-72b910f6e3f8\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Reader\",\"type\":\"BuiltInRole\",\"description\":\"Has - access to Read and Test functions under Language portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*/read\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*/read\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/projects/export/action\",\"Microsoft.CognitiveServices/accounts/Language/*/read\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/export/action\",\"Microsoft.CognitiveServices/accounts/Language/query-text/action\",\"Microsoft.CognitiveServices/accounts/Language/query-knowledgebases/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\"]}],\"createdOn\":\"2021-11-04T03:29:14.7643336Z\",\"updatedOn\":\"2022-03-29T18:02:09.1378280Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7628b7b8-a8b2-4cdc-b46f-e9b35248918e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7628b7b8-a8b2-4cdc-b46f-e9b35248918e\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Writer\",\"type\":\"BuiltInRole\",\"description\":\" Has - access to all Read, Test, and Write functions under Language Portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*\",\"Microsoft.CognitiveServices/accounts/Language/*\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/projects/publish/action\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/projects/deployments/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/delete\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/write\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/delete\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/swap/action\"]}],\"createdOn\":\"2021-11-04T03:29:39.5761019Z\",\"updatedOn\":\"2022-03-29T18:03:23.4902754Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f2310ca1-dc64-4889-bb49-c8e0fa3d47a8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f2310ca1-dc64-4889-bb49-c8e0fa3d47a8\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Owner\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to all Read, Test, Write, Deploy and Delete functions under Language portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*\",\"Microsoft.CognitiveServices/accounts/Language/*\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\"]}],\"createdOn\":\"2021-11-04T03:30:07.6173528Z\",\"updatedOn\":\"2022-03-29T18:03:46.5617184Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f07febfe-79bc-46b1-8b37-790e26e6e498\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f07febfe-79bc-46b1-8b37-790e26e6e498\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Reader\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to Read and Test functions under LUIS.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*/read\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/testdatasets/write\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T03:30:31.2704834Z\",\"updatedOn\":\"2021-11-11T20:15:26.2134821Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18e81cdc-4e98-4e29-a639-e7d10c5a6226\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18e81cdc-4e98-4e29-a639-e7d10c5a6226\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Writer\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to all Read, Test, and Write functions under LUIS\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/apps/delete\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/move/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/publish/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/settings/write\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/azureaccounts/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/azureaccounts/delete\"]}],\"createdOn\":\"2021-11-04T03:31:12.1580052Z\",\"updatedOn\":\"2021-11-11T20:15:26.3934523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6322a993-d5c9-4bed-b113-e49bbea25b27\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6322a993-d5c9-4bed-b113-e49bbea25b27\"},{\"properties\":{\"roleName\":\"PlayFab - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides read access to - PlayFab resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.PlayFab/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T23:26:57.2248605Z\",\"updatedOn\":\"2021-11-11T20:15:26.5784834Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a9a19cc5-31f4-447c-901f-56c0bb18fcaf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a9a19cc5-31f4-447c-901f-56c0bb18fcaf\"},{\"properties\":{\"roleName\":\"Load - Test Contributor\",\"type\":\"BuiltInRole\",\"description\":\"View, create, - update, delete and execute load tests. View and list load test resources but - can not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/loadtests/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-09T08:11:21.0936461Z\",\"updatedOn\":\"2021-11-11T20:15:27.1189225Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/749a398d-560b-491b-bb21-08924219302e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749a398d-560b-491b-bb21-08924219302e\"},{\"properties\":{\"roleName\":\"Load - Test Owner\",\"type\":\"BuiltInRole\",\"description\":\"Execute all operations - on load test resources and load tests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-09T08:12:24.5500195Z\",\"updatedOn\":\"2021-11-11T20:15:27.2897153Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/45bb0b16-2f0c-4e78-afaa-a07599b003f6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"45bb0b16-2f0c-4e78-afaa-a07599b003f6\"},{\"properties\":{\"roleName\":\"PlayFab - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides contributor - access to PlayFab resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.PlayFab/*/read\",\"Microsoft.PlayFab/*/write\",\"Microsoft.PlayFab/*/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T00:55:37.3326276Z\",\"updatedOn\":\"2021-11-11T20:15:28.0547167Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0c8b84dc-067c-4039-9615-fa1a4b77c726\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0c8b84dc-067c-4039-9615-fa1a4b77c726\"},{\"properties\":{\"roleName\":\"Load - Test Reader\",\"type\":\"BuiltInRole\",\"description\":\"View and list all - load tests and load test resources but can not make any changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/loadtests/readTest/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T06:14:08.3903105Z\",\"updatedOn\":\"2021-11-11T20:15:28.2297181Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3ae3fb29-0000-4ccd-bf80-542e7b26e081\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3ae3fb29-0000-4ccd-bf80-542e7b26e081\"},{\"properties\":{\"roleName\":\"Cognitive - Services Immersive Reader User\",\"type\":\"BuiltInRole\",\"description\":\"Provides - access to create Immersive Reader sessions and call APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/ImmersiveReader/getcontentmodelforreader/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T19:52:14.4487503Z\",\"updatedOn\":\"2021-11-11T20:15:28.4146975Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b2de6794-95db-4659-8781-7e080d3f2b9d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b2de6794-95db-4659-8781-7e080d3f2b9d\"},{\"properties\":{\"roleName\":\"Lab - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"The lab - services contributor role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LabServices/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:51:03.3308981Z\",\"updatedOn\":\"2021-11-11T20:15:28.7792013Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f69b8690-cc87-41d6-b77a-a4bc3c0a966f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f69b8690-cc87-41d6-b77a-a4bc3c0a966f\"},{\"properties\":{\"roleName\":\"Lab - Services Reader\",\"type\":\"BuiltInRole\",\"description\":\"The lab services - reader role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LabServices/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:55:30.4208618Z\",\"updatedOn\":\"2021-11-11T20:15:28.9592032Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2a5c394f-5eb7-4d4f-9c8e-e8eae39faebc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a5c394f-5eb7-4d4f-9c8e-e8eae39faebc\"},{\"properties\":{\"roleName\":\"Lab - Assistant\",\"type\":\"BuiltInRole\",\"description\":\"The lab assistant role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:56:10.4295443Z\",\"updatedOn\":\"2021-11-11T20:15:29.1442530Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ce40b423-cede-4313-a93f-9b28290b72e1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ce40b423-cede-4313-a93f-9b28290b72e1\"},{\"properties\":{\"roleName\":\"Lab - Operator\",\"type\":\"BuiltInRole\",\"description\":\"The lab operator role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/publish/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/schedules/write\",\"Microsoft.LabServices/labs/schedules/delete\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/write\",\"Microsoft.LabServices/labs/users/delete\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/labs/virtualMachines/resetPassword/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:56:41.9942935Z\",\"updatedOn\":\"2021-11-11T20:15:29.3242664Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a36e6959-b6be-4b12-8e9f-ef4b474d304d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a36e6959-b6be-4b12-8e9f-ef4b474d304d\"},{\"properties\":{\"roleName\":\"Lab - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"The lab contributor - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/write\",\"Microsoft.LabServices/labs/delete\",\"Microsoft.LabServices/labs/publish/action\",\"Microsoft.LabServices/labs/syncGroup/action\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/schedules/write\",\"Microsoft.LabServices/labs/schedules/delete\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/write\",\"Microsoft.LabServices/labs/users/delete\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/labs/virtualMachines/resetPassword/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:57:05.9018065Z\",\"updatedOn\":\"2021-11-11T20:15:29.4992096Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5daaa2af-1fe8-407c-9122-bba179798270\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5daaa2af-1fe8-407c-9122-bba179798270\"},{\"properties\":{\"roleName\":\"Chamber - User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything - under your HPC Workbench chamber, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HpcWorkbench/instances/chambers/*/read\",\"Microsoft.HpcWorkbench/instances/chambers/workloads/*\",\"Microsoft.HpcWorkbench/instances/chambers/getUploadUri/action\",\"Microsoft.HpcWorkbench/instances/consortiums/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-12-15T20:51:06.2119764Z\",\"updatedOn\":\"2022-01-27T04:54:22.9559555Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4447db05-44ed-4da3-ae60-6cbece780e32\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4447db05-44ed-4da3-ae60-6cbece780e32\"},{\"properties\":{\"roleName\":\"Chamber - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything - under your HPC Workbench chamber.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HpcWorkbench/*/read\",\"Microsoft.HpcWorkbench/instances/chambers/*\",\"Microsoft.HpcWorkbench/instances/consortiums/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-12-15T20:53:14.4428297Z\",\"updatedOn\":\"2022-01-20T05:04:48.3694000Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4e9b8407-af2e-495b-ae54-bb60a55b1b5a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4e9b8407-af2e-495b-ae54-bb60a55b1b5a\"},{\"properties\":{\"roleName\":\"Windows - Admin Center Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"Let's - you manage the OS of your resource via Windows Admin Center as an administrator.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridCompute/machines/extensions/*\",\"Microsoft.HybridCompute/machines/upgradeExtensions/action\",\"Microsoft.HybridCompute/operations/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkWatchers/securityGroupView/action\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/write\",\"Microsoft.HybridConnectivity/endpoints/write\",\"Microsoft.HybridConnectivity/endpoints/read\",\"Microsoft.HybridConnectivity/endpoints/listManagedProxyDetails/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.HybridCompute/machines/WACLoginAsAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-01-12T00:51:19.5581155Z\",\"updatedOn\":\"2022-05-03T20:59:23.1425428Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a6333a3e-0164-44c3-b281-7a577aff287f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a6333a3e-0164-44c3-b281-7a577aff287f\"},{\"properties\":{\"roleName\":\"Guest - Configuration Resource Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read, write Guest Configuration Resource.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.GuestConfiguration/guestConfigurationAssignments/write\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/read\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/*/read\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-01-13T21:31:41.9626667Z\",\"updatedOn\":\"2022-02-10T19:22:44.9057916Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/088ab73d-1256-47ae-bea9-9de8e7131f31\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"088ab73d-1256-47ae-bea9-9de8e7131f31\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Policy Add-on Deployment\",\"type\":\"BuiltInRole\",\"description\":\"Deploy - the Azure Policy add-on on Azure Kubernetes Service clusters\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/deployments/*\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/publicIPPrefixes/join/action\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Compute/diskEncryptionSets/read\",\"Microsoft.Compute/proximityPlacementGroups/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-07T20:51:48.5662807Z\",\"updatedOn\":\"2022-03-15T19:19:25.6182575Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18ed5180-3e48-46fd-8541-4ea054d57064\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18ed5180-3e48-46fd-8541-4ea054d57064\"},{\"properties\":{\"roleName\":\"Domain - Services Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view Azure - AD Domain Services and related network configurations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.AAD/domainServices/read\",\"Microsoft.AAD/domainServices/oucontainer/read\",\"Microsoft.AAD/domainServices/OutboundNetworkDependenciesEndpoints/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/logDefinitions/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Network/azureFirewalls/read\",\"Microsoft.Network/ddosProtectionPlans/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/loadBalancers/*/read\",\"Microsoft.Network/natGateways/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/routes/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-15T19:38:46.9043170Z\",\"updatedOn\":\"2022-02-23T00:41:52.2906373Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/361898ef-9ed1-48c2-849c-a832951106bb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"361898ef-9ed1-48c2-849c-a832951106bb\"},{\"properties\":{\"roleName\":\"Domain - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - Azure AD Domain Services and related network configurations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.AAD/register/action\",\"Microsoft.AAD/unregister/action\",\"Microsoft.AAD/domainServices/read\",\"Microsoft.AAD/domainServices/write\",\"Microsoft.AAD/domainServices/delete\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/write\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/logDefinitions/read\",\"Microsoft.AAD/domainServices/oucontainer/read\",\"Microsoft.AAD/domainServices/oucontainer/write\",\"Microsoft.AAD/domainServices/oucontainer/delete\",\"Microsoft.Network/register/action\",\"Microsoft.Network/unregister/action\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/write\",\"Microsoft.Network/virtualNetworks/delete\",\"Microsoft.Network/virtualNetworks/peer/action\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/write\",\"Microsoft.Network/virtualNetworks/subnets/delete\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/delete\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Network/azureFirewalls/read\",\"Microsoft.Network/ddosProtectionPlans/read\",\"Microsoft.Network/ddosProtectionPlans/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/loadBalancers/delete\",\"Microsoft.Network/loadBalancers/*/read\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/natGateways/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/networkInterfaces/delete\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/write\",\"Microsoft.Network/networkSecurityGroups/delete\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/write\",\"Microsoft.Network/networkSecurityGroups/securityRules/delete\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/write\",\"Microsoft.Network/routeTables/delete\",\"Microsoft.Network/routeTables/join/action\",\"Microsoft.Network/routeTables/routes/read\",\"Microsoft.Network/routeTables/routes/write\",\"Microsoft.Network/routeTables/routes/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-15T19:40:22.3943189Z\",\"updatedOn\":\"2022-02-23T00:43:08.3207354Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/eeaeda52-9324-47f6-8069-5d5bade478b2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"eeaeda52-9324-47f6-8069-5d5bade478b2\"},{\"properties\":{\"roleName\":\"DNS - Resolver Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage DNS resolver resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/dnsResolvers/read\",\"Microsoft.Network/dnsResolvers/write\",\"Microsoft.Network/dnsResolvers/delete\",\"Microsoft.Network/dnsResolvers/join/action\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/read\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/write\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/delete\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/join/action\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/read\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/write\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/delete\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/join/action\",\"Microsoft.Network/dnsForwardingRulesets/read\",\"Microsoft.Network/dnsForwardingRulesets/write\",\"Microsoft.Network/dnsForwardingRulesets/delete\",\"Microsoft.Network/dnsForwardingRulesets/join/action\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/read\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/write\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/delete\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/read\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/write\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/delete\",\"Microsoft.Network/locations/dnsResolverOperationResults/read\",\"Microsoft.Network/locations/dnsResolverOperationStatuses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/write\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/joinLoadBalancer/action\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action\",\"Microsoft.Network/natGateways/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/routeTables/join/action\",\"Microsoft.Network/serviceEndpointPolicies/join/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-16T23:25:04.4308795Z\",\"updatedOn\":\"2022-03-11T20:54:15.0659022Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0f2ebee7-ffd4-4fc0-b3b7-664099fdad5d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0f2ebee7-ffd4-4fc0-b3b7-664099fdad5d\"},{\"properties\":{\"roleName\":\"Data - Operator for Managed Disks\",\"type\":\"BuiltInRole\",\"description\":\"Provides - permissions to upload data to empty managed disks, read, or export data of - managed disks (not attached to running VMs) and snapshots using SAS URIs and - Azure AD authentication.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/disks/download/action\",\"Microsoft.Compute/disks/upload/action\",\"Microsoft.Compute/snapshots/download/action\",\"Microsoft.Compute/snapshots/upload/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-01T01:28:16.0862180Z\",\"updatedOn\":\"2022-03-01T01:28:16.0862180Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/959f8984-c045-4866-89c7-12bf9737be2e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"959f8984-c045-4866-89c7-12bf9737be2e\"},{\"properties\":{\"roleName\":\"AgFood - Platform Sensor Partner Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - contribute access to manage sensor related entities in AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/sensorPartnerScope/*\"],\"notDataActions\":[\"Microsoft.AgFoodPlatform/sensorPartnerScope/sensors/delete\"]}],\"createdOn\":\"2022-03-09T04:58:18.4183393Z\",\"updatedOn\":\"2022-03-09T04:58:18.4183393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6b77f0a0-0d89-41cc-acd1-579c22c17a67\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6b77f0a0-0d89-41cc-acd1-579c22c17a67\"},{\"properties\":{\"roleName\":\"Compute - Gallery Sharing Admin\",\"type\":\"BuiltInRole\",\"description\":\"This role - allows user to share gallery to another subscription/tenant or share it to - the public.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/galleries/share/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-10T00:33:23.4134686Z\",\"updatedOn\":\"2022-03-25T20:36:59.8004672Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1ef6a3be-d0ac-425d-8c01-acb62866290b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1ef6a3be-d0ac-425d-8c01-acb62866290b\"},{\"properties\":{\"roleName\":\"Scheduled - Patching Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - access to manage maintenance configurations with maintenance scope InGuestPatch - and corresponding configuration assignments\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Maintenance/maintenanceConfigurations/read\",\"Microsoft.Maintenance/maintenanceConfigurations/write\",\"Microsoft.Maintenance/maintenanceConfigurations/delete\",\"Microsoft.Maintenance/configurationAssignments/read\",\"Microsoft.Maintenance/configurationAssignments/write\",\"Microsoft.Maintenance/configurationAssignments/delete\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/read\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/write\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/delete\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/read\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/write\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-21T10:27:57.4429306Z\",\"updatedOn\":\"2022-04-13T08:04:30.2446363Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cd08ab90-6b14-449c-ad9a-8f8e549482c6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cd08ab90-6b14-449c-ad9a-8f8e549482c6\"},{\"properties\":{\"roleName\":\"DevCenter - Dev Box User\",\"type\":\"BuiltInRole\",\"description\":\"Provides access - to create and manage dev boxes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Fidalgo/projects/read\",\"Microsoft.Fidalgo/projects/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Fidalgo/projects/users/virtualMachines/userStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userGetRdpFileContent/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userDelete/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-30T19:23:03.9063898Z\",\"updatedOn\":\"2022-03-30T19:23:03.9063898Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/45d50f46-0b78-4001-a660-4198cbe8cd05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"45d50f46-0b78-4001-a660-4198cbe8cd05\"},{\"properties\":{\"roleName\":\"DevCenter - Project Admin\",\"type\":\"BuiltInRole\",\"description\":\"Provides access - to manage project resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Fidalgo/projects/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[\"Microsoft.Fidalgo/projects/write\",\"Microsoft.Fidalgo/projects/delete\"],\"dataActions\":[\"Microsoft.Fidalgo/projects/users/virtualMachines/adminStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminDelete/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userGetRdpFileContent/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userDelete/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-31T19:42:53.1063939Z\",\"updatedOn\":\"2022-03-31T19:42:53.1063939Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/331c37c6-af14-46d9-b9f4-e1909e1b95a0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"331c37c6-af14-46d9-b9f4-e1909e1b95a0\"},{\"properties\":{\"roleName\":\"Virtual - Machine Local User Login\",\"type\":\"BuiltInRole\",\"description\":\"View - Virtual Machines in the portal and login as a local user configured on the - arc server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-06T23:57:08.4960876Z\",\"updatedOn\":\"2022-04-16T18:55:22.3226785Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/602da2ba-a5c2-41da-b01d-5360126ab525\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"602da2ba-a5c2-41da-b01d-5360126ab525\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm VM Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Arc - ScVmm VM Contributor has permissions to perform all VM actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.scvmm/virtualmachines/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:19:43.4978394Z\",\"updatedOn\":\"2022-05-05T20:21:52.7065718Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e582369a-e17b-42a5-b10c-874c387c530b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e582369a-e17b-42a5-b10c-874c387c530b\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Private Clouds Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc ScVmm Private Clouds Onboarding role has permissions to provision all - the required resources for onboard and deboard vmm server instances to Azure.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.scvmm/vmmservers/Read\",\"microsoft.scvmm/vmmservers/Write\",\"microsoft.scvmm/vmmservers/Delete\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:20:22.0259391Z\",\"updatedOn\":\"2022-05-05T20:21:42.0160634Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6aac74c4-6311-40d2-bbdd-7d01e7c6e3a9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6aac74c4-6311-40d2-bbdd-7d01e7c6e3a9\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Private Cloud User\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc ScVmm Private Cloud User has permissions to use the ScVmm resources to - deploy VMs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"microsoft.scvmm/virtualnetworks/join/action\",\"microsoft.scvmm/virtualnetworks/Read\",\"microsoft.scvmm/virtualmachinetemplates/clone/action\",\"microsoft.scvmm/virtualmachinetemplates/Read\",\"microsoft.scvmm/clouds/deploy/action\",\"microsoft.scvmm/clouds/Read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:21:31.8768952Z\",\"updatedOn\":\"2022-05-05T20:22:10.3489590Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c0781e91-8102-4553-8951-97c6d4243cda\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c0781e91-8102-4553-8951-97c6d4243cda\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Administrator role\",\"type\":\"BuiltInRole\",\"description\":\"Arc - ScVmm VM Administrator has permissions to perform all ScVmm actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ScVmm/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:23:34.5429371Z\",\"updatedOn\":\"2022-05-05T20:23:15.0154893Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a92dfd61-77f9-4aec-a531-19858b406c87\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a92dfd61-77f9-4aec-a531-19858b406c87\"},{\"properties\":{\"roleName\":\"FHIR - Data Importer\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and import FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/import/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-04-19T07:59:47.5802132Z\",\"updatedOn\":\"2022-04-21T09:08:14.6059986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4465e953-8ced-4406-a58e-0f6e3f3b530b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4465e953-8ced-4406-a58e-0f6e3f3b530b\"},{\"properties\":{\"roleName\":\"API - Management Developer Portal Content Editor\",\"type\":\"BuiltInRole\",\"description\":\"Can - customize the developer portal, edit its content, and publish it.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/portalRevisions/read\",\"Microsoft.ApiManagement/service/portalRevisions/write\",\"Microsoft.ApiManagement/service/contentTypes/read\",\"Microsoft.ApiManagement/service/contentTypes/delete\",\"Microsoft.ApiManagement/service/contentTypes/write\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/read\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/write\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-05-06T17:39:17.7581243Z\",\"updatedOn\":\"2022-05-10T21:30:34.1382013Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c031e6a8-4391-4de0-8d69-4706a7ed3729\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c031e6a8-4391-4de0-8d69-4706a7ed3729\"}]}" - headers: - cache-control: - - no-cache - content-length: - - '397418' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:26 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:26 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 6ea289cc-5c45-46d8-8eab-c37a2631ac53 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002971"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: GET - uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames/any(c:c%20eq%20'0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7') - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' - headers: - cache-control: - - no-cache - content-length: - - '92' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:27 GMT - odata-version: - - '4.0' - request-id: - - 52c4b6e4-6c0f-4204-8848-f756e898e765 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF0000298C"}}' - x-ms-resource-unit: - - '1' - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:27 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 12bdda35-50ad-4b09-bd63-abdfd7ed5361 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002515"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Restore%20Operator%27&api-version=2018-01-01-preview - response: - body: - string: '{"value":[{"properties":{"roleName":"Disk Restore Operator","type":"BuiltInRole","description":"Provides - permission to backup vault to perform disk restore.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Compute/disks/write","Microsoft.Compute/disks/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T12:18:31.8481619Z","updatedOn":"2021-11-11T20:14:56.7408912Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","type":"Microsoft.Authorization/roleDefinitions","name":"b50d9833-a0cb-478e-945f-707fcc997c13"}]}' - headers: - cache-control: - - no-cache - content-length: - - '782' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:27 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13", - "principalId": "0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7", "principalType": "ServicePrincipal"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '270' - Content-Type: - - application/json; charset=utf-8 - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/14baf340-6b2f-4bd7-93a7-e9fa2bcef876?api-version=2020-04-01-preview - response: - body: - string: '{"error":{"code":"RoleAssignmentExists","message":"The role assignment - already exists."}}' - headers: - cache-control: - - no-cache - content-length: - - '89' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:30 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 409 - message: Conflict -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: GET - uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames/any(c:c%20eq%20'0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7') - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' - headers: - cache-control: - - no-cache - content-length: - - '92' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:30 GMT - odata-version: - - '4.0' - request-id: - - 2f58ea7d-f4f9-4e44-85aa-e76346959481 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002731"}}' - x-ms-resource-unit: - - '1' - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:30 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 07b9a7f5-60e3-4532-9c6e-42f47c34c694 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF0000146B"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview - response: - body: - string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:49.6216206Z","updatedOn":"2022-04-12T12:46:49.6216206Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/85cc2dff-c5d4-42a3-acb6-255cd4208ef4","type":"Microsoft.Authorization/roleAssignments","name":"85cc2dff-c5d4-42a3-acb6-255cd4208ef4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:57.1459341Z","updatedOn":"2022-04-12T12:46:57.1459341Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aba8e90d-d951-4cb5-a346-b71e478f4d1b","type":"Microsoft.Authorization/roleAssignments","name":"aba8e90d-d951-4cb5-a346-b71e478f4d1b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:28.3678603Z","updatedOn":"2022-04-12T13:09:28.3678603Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/79d87d90-f984-4f53-a169-2eca51c00104","type":"Microsoft.Authorization/roleAssignments","name":"79d87d90-f984-4f53-a169-2eca51c00104"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:33.3916295Z","updatedOn":"2022-04-12T13:09:33.3916295Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/5e185742-c91a-4efe-b0d8-db9524685ec5","type":"Microsoft.Authorization/roleAssignments","name":"5e185742-c91a-4efe-b0d8-db9524685ec5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:02.2689248Z","updatedOn":"2022-04-13T07:01:02.2689248Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c9b4f9ab-d687-4a65-910a-5bcb2f974bfe","type":"Microsoft.Authorization/roleAssignments","name":"c9b4f9ab-d687-4a65-910a-5bcb2f974bfe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:09.3571703Z","updatedOn":"2022-04-13T07:01:09.3571703Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/8bedf13c-aa1a-4191-aa97-573f14fd97ee","type":"Microsoft.Authorization/roleAssignments","name":"8bedf13c-aa1a-4191-aa97-573f14fd97ee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:04.6456354Z","updatedOn":"2022-04-13T07:43:04.6456354Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bd0fc30a-6ccf-4c22-a26b-0e31aba16035","type":"Microsoft.Authorization/roleAssignments","name":"bd0fc30a-6ccf-4c22-a26b-0e31aba16035"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:10.1186881Z","updatedOn":"2022-04-13T07:43:10.1186881Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0","type":"Microsoft.Authorization/roleAssignments","name":"dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:58:57.7706882Z","updatedOn":"2022-04-13T08:58:57.7706882Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9e3d10bf-9bfa-4a97-9ab1-b972a348abd0","type":"Microsoft.Authorization/roleAssignments","name":"9e3d10bf-9bfa-4a97-9ab1-b972a348abd0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:59:03.2414961Z","updatedOn":"2022-04-13T08:59:03.2414961Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/66eefd94-4bda-46df-9c61-7e92f83d91e7","type":"Microsoft.Authorization/roleAssignments","name":"66eefd94-4bda-46df-9c61-7e92f83d91e7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:35.8887781Z","updatedOn":"2022-04-13T10:17:35.8887781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/77f4f7a3-a377-49f7-a094-945b82b2bfff","type":"Microsoft.Authorization/roleAssignments","name":"77f4f7a3-a377-49f7-a094-945b82b2bfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:41.2233089Z","updatedOn":"2022-04-13T10:17:41.2233089Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1a71aac6-e9ce-40ff-a39f-7594df2ea6e9","type":"Microsoft.Authorization/roleAssignments","name":"1a71aac6-e9ce-40ff-a39f-7594df2ea6e9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:19.4532093Z","updatedOn":"2022-04-21T06:57:19.4532093Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/eede4548-9f71-44b7-8077-c49aa44894b4","type":"Microsoft.Authorization/roleAssignments","name":"eede4548-9f71-44b7-8077-c49aa44894b4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:24.3439247Z","updatedOn":"2022-04-21T06:57:24.3439247Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c011acd2-8b5d-45d6-b6c1-4ffe1867ce31","type":"Microsoft.Authorization/roleAssignments","name":"c011acd2-8b5d-45d6-b6c1-4ffe1867ce31"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:25.7258076Z","updatedOn":"2022-05-24T11:54:25.7258076Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9a7dc348-d24e-438b-84b0-c7cda5bf92c4","type":"Microsoft.Authorization/roleAssignments","name":"9a7dc348-d24e-438b-84b0-c7cda5bf92c4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:29.8931759Z","updatedOn":"2022-05-24T11:54:29.8931759Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aeb54d04-84b8-4530-bd7e-fe01dafd82ab","type":"Microsoft.Authorization/roleAssignments","name":"aeb54d04-84b8-4530-bd7e-fe01dafd82ab"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7c567124-5292-4819-aa73-0224bf1c42e1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-23T13:38:54.7542852Z","updatedOn":"2021-05-23T13:38:54.7542852Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0809d692-f58f-43f2-b597-7f115957407e","type":"Microsoft.Authorization/roleAssignments","name":"0809d692-f58f-43f2-b597-7f115957407e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"955c9d1b-0cb6-4ff6-91c9-f4aadf67ffe8","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:45:08.3835615Z","updatedOn":"2021-05-24T16:45:08.3835615Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1b1ac6ab-19e7-4c4f-91d2-5be73096da2c","type":"Microsoft.Authorization/roleAssignments","name":"1b1ac6ab-19e7-4c4f-91d2-5be73096da2c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7221c906-782c-44a0-ab2f-f23d8a95ce25","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:56:16.2751421Z","updatedOn":"2021-05-24T16:56:16.2751421Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/ca8f2433-76dc-49fa-828d-9cd2861ec25c","type":"Microsoft.Authorization/roleAssignments","name":"ca8f2433-76dc-49fa-828d-9cd2861ec25c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:53.5542743Z","updatedOn":"2021-06-04T06:40:53.5542743Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9d9ac2a8-dbac-41bb-9f17-c473f02c6370","type":"Microsoft.Authorization/roleAssignments","name":"9d9ac2a8-dbac-41bb-9f17-c473f02c6370"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:57.1326805Z","updatedOn":"2021-06-04T06:40:57.1326805Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/14b1338c-95f6-44f9-ad22-395f8ebbb1fe","type":"Microsoft.Authorization/roleAssignments","name":"14b1338c-95f6-44f9-ad22-395f8ebbb1fe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:18.2829699Z","updatedOn":"2021-06-04T07:02:18.2829699Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93","type":"Microsoft.Authorization/roleAssignments","name":"bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:22.4343547Z","updatedOn":"2021-06-04T07:02:22.4343547Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/26bab283-0772-4c03-8dc1-a50c8ffa597d","type":"Microsoft.Authorization/roleAssignments","name":"26bab283-0772-4c03-8dc1-a50c8ffa597d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:08.8293677Z","updatedOn":"2021-06-04T07:19:08.8293677Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/d972f611-a4bd-4b80-9e78-980984602450","type":"Microsoft.Authorization/roleAssignments","name":"d972f611-a4bd-4b80-9e78-980984602450"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:12.8400651Z","updatedOn":"2021-06-04T07:19:12.8400651Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/b9393755-f5ca-41ef-a631-fb62184c57a8","type":"Microsoft.Authorization/roleAssignments","name":"b9393755-f5ca-41ef-a631-fb62184c57a8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:15.2633798Z","updatedOn":"2021-06-04T09:14:15.2633798Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/094981c0-d59c-4f5b-9581-72c08da65454","type":"Microsoft.Authorization/roleAssignments","name":"094981c0-d59c-4f5b-9581-72c08da65454"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:19.9554484Z","updatedOn":"2021-06-04T09:14:19.9554484Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0cac59e0-0464-4bf6-9bef-f1fadc2b08f4","type":"Microsoft.Authorization/roleAssignments","name":"0cac59e0-0464-4bf6-9bef-f1fadc2b08f4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:52.6766200Z","updatedOn":"2021-08-30T06:31:52.6766200Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/f67c65e2-e609-4ffe-b504-294b00cbd2fd","type":"Microsoft.Authorization/roleAssignments","name":"f67c65e2-e609-4ffe-b504-294b00cbd2fd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:57.1552781Z","updatedOn":"2021-08-30T06:31:57.1552781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aaeab926-d6e2-4bb6-9e9e-0607e75cc75f","type":"Microsoft.Authorization/roleAssignments","name":"aaeab926-d6e2-4bb6-9e9e-0607e75cc75f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"2ab5fb95-b72e-4d12-948b-4223754d8ffa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-09-08T08:24:19.3547440Z","updatedOn":"2021-09-08T08:24:19.3547440Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/43ee13b8-5abd-51e0-88e3-ae84049da70e","type":"Microsoft.Authorization/roleAssignments","name":"43ee13b8-5abd-51e0-88e3-ae84049da70e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for - temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' - headers: - cache-control: - - no-cache - content-length: - - '84735' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:32 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Restore%20Operator%27&api-version=2018-01-01-preview - response: - body: - string: '{"value":[{"properties":{"roleName":"Disk Restore Operator","type":"BuiltInRole","description":"Provides - permission to backup vault to perform disk restore.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Compute/disks/write","Microsoft.Compute/disks/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T12:18:31.8481619Z","updatedOn":"2021-11-11T20:14:56.7408912Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","type":"Microsoft.Authorization/roleDefinitions","name":"b50d9833-a0cb-478e-945f-707fcc997c13"}]}' - headers: - cache-control: - - no-cache - content-length: - - '782' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:32 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Cookie: - - x-ms-gateway-slice=Production - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.36.0 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?api-version=2018-01-01-preview - response: - body: - string: "{\"value\":[{\"properties\":{\"roleName\":\"Avere Cluster Create\",\"type\":\"CustomRole\",\"description\":\"Avere - cluster create role used by the Avere controller to create a vFXT cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.Authorization/roleDefinitions/*\",\"Microsoft.Compute/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Network/*/read\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\",\"Microsoft.Storage/*/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-11-29T18:46:55.0492387Z\",\"updatedOn\":\"2018-11-29T18:46:55.0492387Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7b1b19a-0e83-4fe5-935c-faaefbfd18c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7b1b19a-0e83-4fe5-935c-faaefbfd18c3\"},{\"properties\":{\"roleName\":\"Avere - Cluster Runtime Operator\",\"type\":\"CustomRole\",\"description\":\"Avere - cluster runtime role used by Avere clusters running in subscriptions, for - the purpose of failing over IP addresses, accessing BLOB storage, etc\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/routes/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-26T00:41:26.2170858Z\",\"updatedOn\":\"2018-08-26T00:41:26.2170858Z\",\"createdBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\",\"updatedBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e078ab98-ef3a-4c9a-aba7-12f5172b45d0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e078ab98-ef3a-4c9a-aba7-12f5172b45d0\"},{\"properties\":{\"roleName\":\"Azure - Service Deploy Release Management Contributor\",\"type\":\"CustomRole\",\"description\":\"Contributor - role for services deploying through Azure Service Deploy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-02-04T02:26:31.5413362Z\",\"updatedOn\":\"2018-01-08T20:20:16.3660174Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21d96096-b162-414a-8302-d8354f9d91b2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21d96096-b162-414a-8302-d8354f9d91b2\"},{\"properties\":{\"roleName\":\"CAL-Custom-Role\",\"type\":\"CustomRole\",\"description\":\"Lets - SAP Cloud Appliance Library application manage Network and Compute services, - manage Resource Groups and Management locks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/locks/*\",\"Microsoft.Authorization/roleDefinitions/*\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.Compute/*\",\"Microsoft.Network/*\",\"Microsoft.Resources/*\",\"Microsoft.Storage/*\",\"Microsoft.ContainerService/*\",\"Microsoft.ContainerRegistry/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-05-14T19:30:51.0664585Z\",\"updatedOn\":\"2019-02-19T19:11:57.5963229Z\",\"createdBy\":\"dda50086-5e3d-4a4b-b8bc-f54771104d89\",\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7b266cd7-0bba-4ae2-8423-90ede5e1e898\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7b266cd7-0bba-4ae2-8423-90ede5e1e898\"},{\"properties\":{\"roleName\":\"Dsms - Role (deprecated)\",\"type\":\"CustomRole\",\"description\":\"Custom role - used by Dsms to perform operations. Can list and regnerate storage account - keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regenerateKey/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-17T18:02:11.1225951Z\",\"updatedOn\":\"2018-01-13T00:21:52.7211696Z\",\"createdBy\":\"ca5f3715-e7dd-427b-b2db-45b6a4a2df87\",\"updatedBy\":\"ca5f3715-e7dd-427b-b2db-45b6a4a2df87\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b91f4c0b-46e3-47bb-a242-eecfe23b3b5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b91f4c0b-46e3-47bb-a242-eecfe23b3b5b\"},{\"properties\":{\"roleName\":\"Dsms - Role (do not use)\",\"type\":\"CustomRole\",\"description\":\"Custom role - used by Dsms to perform operations. Can list and regnerate storage account - keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regenerateKey/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-02-01T07:56:12.5880222Z\",\"updatedOn\":\"2018-08-09T17:53:48.5432297Z\",\"createdBy\":\"becb4b6b-fe16-413b-a5c3-90355e0b2982\",\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7aff565e-6c55-448d-83db-ccf482c6da2f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7aff565e-6c55-448d-83db-ccf482c6da2f\"},{\"properties\":{\"roleName\":\"ExpressRoute - Administrator\",\"type\":\"CustomRole\",\"description\":\"Can create, delete - and manage ExpressRoutes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/locks/*\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/roleAssignments/*\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.EventGrid/*\",\"Microsoft.Insights/*\",\"Microsoft.Network/*\",\"Microsoft.Resources/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-31T03:51:32.2843055Z\",\"updatedOn\":\"2019-03-20T22:55:18.8222085Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a48d7896-14b4-4889-afef-fbb65a96e5a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a48d7896-14b4-4889-afef-fbb65a96e5a2\"},{\"properties\":{\"roleName\":\"GenevaWarmPathResourceContributor\",\"type\":\"CustomRole\",\"description\":\"Can - manage service bus and storage accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/*\",\"Microsoft.Resources/subscriptions/resourceGroups/*\",\"Microsoft.ServiceBus/namespaces/*\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Storage/storageAccounts/managementPolicies/write\",\"Microsoft.Storage/storageAccounts/managementPolicies/read\",\"Microsoft.Storage/storageAccounts/managementPolicies/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-03-14T22:30:10.1999436Z\",\"updatedOn\":\"2022-02-28T23:26:40.0052537Z\",\"createdBy\":null,\"updatedBy\":\"acis\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9f15f5f5-77bd-413a-aa88-4b9c68b1e7bc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9f15f5f5-77bd-413a-aa88-4b9c68b1e7bc\"},{\"properties\":{\"roleName\":\"masterreader\",\"type\":\"CustomRole\",\"description\":\"Lets - you view everything, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-11-14T23:38:05.3353858Z\",\"updatedOn\":\"2017-11-14T23:38:05.3353858Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a48d7796-14b4-4889-afef-fbb65a93e5a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a48d7796-14b4-4889-afef-fbb65a93e5a2\"},{\"properties\":{\"roleName\":\"Microsoft - OneAsset Reader\",\"type\":\"CustomRole\",\"description\":\"This role is for - Microsoft OneAsset team (CSEO) to track internal security compliance and resource - utilization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-27T23:51:08.6333052Z\",\"updatedOn\":\"2019-04-02T20:35:43.3396263Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd1bb084-1503-4bd2-99c0-630220046786\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd1bb084-1503-4bd2-99c0-630220046786\"},{\"properties\":{\"roleName\":\"Office - DevOps\",\"type\":\"CustomRole\",\"description\":\"Custom access for developers - to operations but not secrets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachineScaleSets/restart/action\",\"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/restart/action\",\"Microsoft.Sql/servers/databases/replicationLinks/delete\",\"Microsoft.Sql/servers/databases/replicationLinks/failover/action\",\"Microsoft.Sql/servers/databases/replicationLinks/forceFailoverAllowDataLoss/action\",\"Microsoft.Sql/servers/databases/replicationLinks/operationResults/read\",\"Microsoft.Sql/servers/databases/replicationLinks/read\",\"Microsoft.Sql/servers/databases/replicationLinks/unlink/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-10-07T08:11:46.1639398Z\",\"updatedOn\":\"2017-03-16T18:43:08.3234306Z\",\"createdBy\":\"25aea6be-b605-4347-a92d-33e178e412ec\",\"updatedBy\":\"25aea6be-b605-4347-a92d-33e178e412ec\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7fd64851-3279-459b-b614-e2b2ba760f5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7fd64851-3279-459b-b614-e2b2ba760f5b\"},{\"properties\":{\"roleName\":\"GenevaWarmPathStorageBlobContributor\",\"type\":\"CustomRole\",\"description\":\"Geneva - Warm Path Storage Blob Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/lease/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/lock/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/extend/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete\",\"Microsoft.Storage/storageAccounts/managementPolicies/write\",\"Microsoft.Storage/storageAccounts/managementPolicies/read\",\"Microsoft.Storage/storageAccounts/managementPolicies/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-12-06T22:46:27.1365630Z\",\"updatedOn\":\"2022-02-28T23:26:40.4152515Z\",\"createdBy\":null,\"updatedBy\":\"acis\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a16c43ca-2d67-4dcd-9ded-6412f5edc51a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a16c43ca-2d67-4dcd-9ded-6412f5edc51a\"},{\"properties\":{\"roleName\":\"Azure - Service Deploy Release Management Restricted Owner\",\"type\":\"CustomRole\",\"description\":\"Restricted - owner role for services deploying through Azure Service Deploy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\"],\"dataActions\":[],\"notDataActions\":[]},{\"actions\":[\"Microsoft.Authorization/roleAssignments/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]},{\"actions\":[\"Microsoft.Authorization/locks/write\",\"Microsoft.Authorization/policyassignments/write\",\"Microsoft.Authorization/policydefinitions/write\",\"Microsoft.Authorization/policysetdefinitions/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-07T22:16:06.8803898Z\",\"updatedOn\":\"2022-03-07T22:16:06.8803898Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/94ddc4bc-25f5-4f3e-b527-c587da93cfe4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"94ddc4bc-25f5-4f3e-b527-c587da93cfe4\"},{\"properties\":{\"roleName\":\"AcrPush\",\"type\":\"BuiltInRole\",\"description\":\"acr - push\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/pull/read\",\"Microsoft.ContainerRegistry/registries/push/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-29T17:52:32.5201177Z\",\"updatedOn\":\"2021-11-11T20:13:07.4993029Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8311e382-0749-4cb8-b61a-304f252e45ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8311e382-0749-4cb8-b61a-304f252e45ec\"},{\"properties\":{\"roleName\":\"API - Management Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage service and the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8650193Z\",\"updatedOn\":\"2021-11-11T20:13:08.3179618Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/312a565d-c81f-4fd8-895a-4e21e48d571c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"312a565d-c81f-4fd8-895a-4e21e48d571c\"},{\"properties\":{\"roleName\":\"AcrPull\",\"type\":\"BuiltInRole\",\"description\":\"acr - pull\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/pull/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-22T19:01:56.8227182Z\",\"updatedOn\":\"2021-11-11T20:13:08.8779328Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f951dda-4ed3-4680-a7ca-43fe172d538d\"},{\"properties\":{\"roleName\":\"AcrImageSigner\",\"type\":\"BuiltInRole\",\"description\":\"acr - image signer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/sign/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/trustedCollections/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-15T23:23:08.4038322Z\",\"updatedOn\":\"2021-11-11T20:13:09.6070759Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6cef56e8-d556-48e5-a04f-b8e64114680f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6cef56e8-d556-48e5-a04f-b8e64114680f\"},{\"properties\":{\"roleName\":\"AcrDelete\",\"type\":\"BuiltInRole\",\"description\":\"acr - delete\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/artifacts/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-11T20:19:31.6682804Z\",\"updatedOn\":\"2021-11-11T20:13:09.9631744Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c2f4ef07-c644-48eb-af81-4b1b4947fb11\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c2f4ef07-c644-48eb-af81-4b1b4947fb11\"},{\"properties\":{\"roleName\":\"AcrQuarantineReader\",\"type\":\"BuiltInRole\",\"description\":\"acr - quarantine data reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/quarantine/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-16T00:27:39.9596835Z\",\"updatedOn\":\"2021-11-11T20:13:10.3188052Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cdda3590-29a3-44f6-95f2-9f980659eb04\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cdda3590-29a3-44f6-95f2-9f980659eb04\"},{\"properties\":{\"roleName\":\"AcrQuarantineWriter\",\"type\":\"BuiltInRole\",\"description\":\"acr - quarantine data writer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/quarantine/read\",\"Microsoft.ContainerRegistry/registries/quarantine/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/read\",\"Microsoft.ContainerRegistry/registries/quarantinedArtifacts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-03-16T00:26:37.5871820Z\",\"updatedOn\":\"2021-11-11T20:13:11.3488079Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c8d4ff99-41c3-41a8-9f60-21dfdad59608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d4ff99-41c3-41a8-9f60-21dfdad59608\"},{\"properties\":{\"roleName\":\"API - Management Service Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage service but not the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/backup/action\",\"Microsoft.ApiManagement/service/delete\",\"Microsoft.ApiManagement/service/managedeployments/action\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.ApiManagement/service/restore/action\",\"Microsoft.ApiManagement/service/updatecertificate/action\",\"Microsoft.ApiManagement/service/updatehostname/action\",\"Microsoft.ApiManagement/service/write\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-11-09T00:03:42.1194019Z\",\"updatedOn\":\"2021-11-11T20:13:11.5244023Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e022efe7-f5ba-4159-bbe4-b44f577e9b61\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e022efe7-f5ba-4159-bbe4-b44f577e9b61\"},{\"properties\":{\"roleName\":\"API - Management Service Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - access to service and APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-11-09T00:26:45.1540473Z\",\"updatedOn\":\"2021-11-11T20:13:11.8704466Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/71522526-b88f-4d52-b57f-d31fc3546d0d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"71522526-b88f-4d52-b57f-d31fc3546d0d\"},{\"properties\":{\"roleName\":\"Application - Insights Component Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - manage Application Insights components\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/generateLiveToken/read\",\"Microsoft.Insights/metricAlerts/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.Insights/topology/read\",\"Microsoft.Insights/transactions/read\",\"Microsoft.Insights/webtests/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:12.6428401Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ae349356-3a1b-4a5e-921d-050484c6347e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ae349356-3a1b-4a5e-921d-050484c6347e\"},{\"properties\":{\"roleName\":\"Application - Insights Snapshot Debugger\",\"type\":\"BuiltInRole\",\"description\":\"Gives - user permission to use Application Insights Snapshot Debugger features\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T21:25:12.3728747Z\",\"updatedOn\":\"2021-11-11T20:13:13.0034435Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/08954f03-6346-4c2e-81c0-ec3a5cfae23b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"08954f03-6346-4c2e-81c0-ec3a5cfae23b\"},{\"properties\":{\"roleName\":\"Attestation - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read the attestation - provider properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Attestation/attestationProviders/attestation/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-03-25T19:42:59.1576710Z\",\"updatedOn\":\"2021-11-11T20:13:13.3634724Z\",\"createdBy\":null,\"updatedBy\":\"SYSTEM\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd1bd22b-8476-40bc-a0bc-69b95687b9f3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd1bd22b-8476-40bc-a0bc-69b95687b9f3\"},{\"properties\":{\"roleName\":\"Automation - Job Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create and Manage - Jobs using Automation Runbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T20:52:41.0020018Z\",\"updatedOn\":\"2021-11-11T20:13:13.7065660Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4fe576fe-1146-4730-92eb-48519fa6bf9f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fe576fe-1146-4730-92eb-48519fa6bf9f\"},{\"properties\":{\"roleName\":\"Automation - Runbook Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read Runbook - properties - to be able to create Jobs of the runbook.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-19T20:47:49.5640674Z\",\"updatedOn\":\"2021-11-11T20:13:13.8815461Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\"},{\"properties\":{\"roleName\":\"Automation - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Automation Operators - are able to start, stop, suspend, and resume jobs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobSchedules/read\",\"Microsoft.Automation/automationAccounts/jobSchedules/write\",\"Microsoft.Automation/automationAccounts/linkedWorkspace/read\",\"Microsoft.Automation/automationAccounts/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Automation/automationAccounts/schedules/read\",\"Microsoft.Automation/automationAccounts/schedules/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-08-18T01:05:03.3916130Z\",\"updatedOn\":\"2021-11-11T20:13:14.0515408Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d3881f73-407a-4167-8283-e981cbba0404\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d3881f73-407a-4167-8283-e981cbba0404\"},{\"properties\":{\"roleName\":\"Avere - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can create and manage - an Avere vFXT cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/proximityPlacementGroups/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/disks/*\",\"Microsoft.Network/*/read\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/*/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2019-03-18T20:00:58.9207889Z\",\"updatedOn\":\"2021-11-11T20:13:14.2265665Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4f8fab4f-1852-4a58-a46a-8eaf358af14a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4f8fab4f-1852-4a58-a46a-8eaf358af14a\"},{\"properties\":{\"roleName\":\"Avere - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Used by the Avere vFXT - cluster to manage the cluster\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\"],\"notDataActions\":[]}],\"createdOn\":\"2019-03-18T20:02:38.3399857Z\",\"updatedOn\":\"2021-11-11T20:13:15.1065886Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c025889f-8102-4ebf-b32c-fc0c6f0c6bd9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c025889f-8102-4ebf-b32c-fc0c6f0c6bd9\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Cluster Admin Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster admin credential action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action\",\"Microsoft.ContainerService/managedClusters/accessProfiles/listCredential/action\",\"Microsoft.ContainerService/managedClusters/read\",\"Microsoft.ContainerService/managedClusters/runcommand/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-15T21:38:18.5953853Z\",\"updatedOn\":\"2022-05-16T21:40:14.0457546Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0ab0b1a8-8aac-4efd-b8c2-3ee1fb270be8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0ab0b1a8-8aac-4efd-b8c2-3ee1fb270be8\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Cluster User Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster user credential action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\",\"Microsoft.ContainerService/managedClusters/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-15T22:04:53.4037241Z\",\"updatedOn\":\"2021-11-11T20:13:20.4351976Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4abbcc35-e782-43d8-92c5-2d3f1bd2253f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4abbcc35-e782-43d8-92c5-2d3f1bd2253f\"},{\"properties\":{\"roleName\":\"Azure - Maps Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants access - to read map related data from an Azure maps account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-10-05T19:47:03.4723070Z\",\"updatedOn\":\"2021-11-11T20:13:20.9582685Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/423170ca-a8f6-4b0f-8487-9e4eb8f49bfa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"423170ca-a8f6-4b0f-8487-9e4eb8f49bfa\"},{\"properties\":{\"roleName\":\"Azure - Stack Registration Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Azure Stack registrations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureStack/edgeSubscriptions/read\",\"Microsoft.AzureStack/registrations/products/*/action\",\"Microsoft.AzureStack/registrations/products/read\",\"Microsoft.AzureStack/registrations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-11-13T23:42:06.2161827Z\",\"updatedOn\":\"2021-11-11T20:13:23.2957820Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6f12a6df-dd06-4f3e-bcb1-ce8be600526a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6f12a6df-dd06-4f3e-bcb1-ce8be600526a\"},{\"properties\":{\"roleName\":\"Backup - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup - service,but can't create vaults and give access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupSecurityPIN/*\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/*\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/Vaults/usages/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectableContainers/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/locations/backupPreValidateProtection/action\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.Support/*\",\"Microsoft.DataProtection/locations/getBackupStatus/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/write\",\"Microsoft.DataProtection/backupVaults/backupInstances/delete\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/backup/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/validateRestore/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/restore/action\",\"Microsoft.DataProtection/backupVaults/backupPolicies/write\",\"Microsoft.DataProtection/backupVaults/backupPolicies/delete\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/write\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/locations/checkNameAvailability/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/backupVaults/validateForBackup/action\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:12:15.7321344Z\",\"updatedOn\":\"2021-11-11T20:13:24.3657611Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5e467623-bb1f-42f4-a55d-6e525e11384b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e467623-bb1f-42f4-a55d-6e525e11384b\"},{\"properties\":{\"roleName\":\"Billing - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows read access to - billing data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Billing/*/read\",\"Microsoft.Commerce/*/read\",\"Microsoft.Consumption/*/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.CostManagement/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-25T02:13:38.9054151Z\",\"updatedOn\":\"2021-11-11T20:13:24.5342563Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\"},{\"properties\":{\"roleName\":\"Backup - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup - services, except removal of backup, vault creation and giving access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/backup/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/provisionInstantItemRecovery/action\",\"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/accessToken/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/restore/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/revokeInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/write\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/write\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/backupTriggerValidateOperation/action\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupValidateOperationsStatuses/read\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operations/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/inquire/action\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectableContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/items/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/locations/backupPreValidateProtection/action\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/locations/backupAadProperties/read\",\"Microsoft.RecoveryServices/locations/backupCrrJobs/action\",\"Microsoft.RecoveryServices/locations/backupCrrJob/action\",\"Microsoft.RecoveryServices/locations/backupCrossRegionRestore/action\",\"Microsoft.RecoveryServices/locations/backupCrrOperationResults/read\",\"Microsoft.RecoveryServices/locations/backupCrrOperationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.Support/*\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:21:11.8947640Z\",\"updatedOn\":\"2021-12-16T12:53:00.0624003Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00c29273-979b-4161-815c-10b084fb9324\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00c29273-979b-4161-815c-10b084fb9324\"},{\"properties\":{\"roleName\":\"Backup - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view backup services, - but can't make changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/backupstorageconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupOperations/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operations/read\",\"Microsoft.RecoveryServices/Vaults/backupEngines/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/items/read\",\"Microsoft.RecoveryServices/locations/backupStatus/action\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/write\",\"Microsoft.RecoveryServices/operations/read\",\"Microsoft.RecoveryServices/locations/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionIntents/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/locations/backupValidateFeatures/action\",\"Microsoft.RecoveryServices/locations/backupCrrJobs/action\",\"Microsoft.RecoveryServices/locations/backupCrrJob/action\",\"Microsoft.RecoveryServices/locations/backupCrrOperationResults/read\",\"Microsoft.RecoveryServices/locations/backupCrrOperationsStatus/read\",\"Microsoft.DataProtection/locations/getBackupStatus/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/write\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/backup/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/validateRestore/action\",\"Microsoft.DataProtection/backupVaults/backupInstances/restore/action\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupPolicies/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints/read\",\"Microsoft.DataProtection/backupVaults/backupInstances/findRestorableTimeRanges/action\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/operationResults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/backupVaults/read\",\"Microsoft.DataProtection/locations/operationStatus/read\",\"Microsoft.DataProtection/locations/operationResults/read\",\"Microsoft.DataProtection/backupVaults/validateForBackup/action\",\"Microsoft.DataProtection/providers/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-01-03T13:18:41.3893065Z\",\"updatedOn\":\"2021-11-11T20:13:24.8792711Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a795c7a0-d4a2-40c1-ae25-d81f01202912\"},{\"properties\":{\"roleName\":\"Blockchain - Member Node Access (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for access to Blockchain Member nodes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Blockchain/blockchainMembers/transactionNodes/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Blockchain/blockchainMembers/transactionNodes/connect/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T10:33:01.9604839Z\",\"updatedOn\":\"2021-11-11T20:13:25.0558920Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/31a002a1-acaf-453e-8a5b-297c9ca1ea24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"31a002a1-acaf-453e-8a5b-297c9ca1ea24\"},{\"properties\":{\"roleName\":\"BizTalk - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage BizTalk - services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BizTalkServices/BizTalk/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:25.2359269Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5e3c6656-6cfa-4708-81fe-0de47ac73342\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e3c6656-6cfa-4708-81fe-0de47ac73342\"},{\"properties\":{\"roleName\":\"CDN - Endpoint Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - CDN endpoints, but can\u2019t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:25.4059314Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/426e0c7f-0c7e-4658-b36f-ff54d6c29b45\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"426e0c7f-0c7e-4658-b36f-ff54d6c29b45\"},{\"properties\":{\"roleName\":\"CDN - Endpoint Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN - endpoints, but can\u2019t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*/read\",\"Microsoft.Cdn/profiles/afdendpoints/validateCustomDomain/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2022-01-26T19:51:29.2636610Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/871e35f6-b5c1-49cc-a043-bde969a0f2cd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"871e35f6-b5c1-49cc-a043-bde969a0f2cd\"},{\"properties\":{\"roleName\":\"CDN - Profile Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - CDN profiles and their endpoints, but can\u2019t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:25.9224344Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ec156ff8-a8d1-4d15-830c-5b80698ca432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ec156ff8-a8d1-4d15-830c-5b80698ca432\"},{\"properties\":{\"roleName\":\"CDN - Profile Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN profiles - and their endpoints, but can\u2019t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2021-11-11T20:13:26.0983652Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8f96442b-4075-438f-813d-ad51ab4019af\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f96442b-4075-438f-813d-ad51ab4019af\"},{\"properties\":{\"roleName\":\"Classic - Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage classic networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:26.4433301Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b34d265f-36f7-4a0d-a4d4-e158ca92e90f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b34d265f-36f7-4a0d-a4d4-e158ca92e90f\"},{\"properties\":{\"roleName\":\"Classic - Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage classic storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:26.6183566Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/86e8f5dc-a6e9-4c67-9d15-de283e8eac25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86e8f5dc-a6e9-4c67-9d15-de283e8eac25\"},{\"properties\":{\"roleName\":\"Classic - Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Classic - Storage Account Key Operators are allowed to list and regenerate keys on Classic - Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listkeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-13T18:22:52.1461100Z\",\"updatedOn\":\"2021-11-11T20:13:26.9796021Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/985d6b00-f706-48f5-a6fe-d0ca12fb668d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"985d6b00-f706-48f5-a6fe-d0ca12fb668d\"},{\"properties\":{\"roleName\":\"ClearDB - MySQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage ClearDB MySQL databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"successbricks.cleardb/databases/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:27.1646373Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9106cda0-8a86-4e81-b686-29a22c54effe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9106cda0-8a86-4e81-b686-29a22c54effe\"},{\"properties\":{\"roleName\":\"Classic - Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage classic virtual machines, but not access to them, and not the virtual - network or storage account they\u2019re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/domainNames/*\",\"Microsoft.ClassicCompute/virtualMachines/*\",\"Microsoft.ClassicNetwork/networkSecurityGroups/join/action\",\"Microsoft.ClassicNetwork/reservedIps/link/action\",\"Microsoft.ClassicNetwork/reservedIps/read\",\"Microsoft.ClassicNetwork/virtualNetworks/join/action\",\"Microsoft.ClassicNetwork/virtualNetworks/read\",\"Microsoft.ClassicStorage/storageAccounts/disks/read\",\"Microsoft.ClassicStorage/storageAccounts/images/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-04-25T00:37:56.5416086Z\",\"updatedOn\":\"2021-11-11T20:13:27.3446332Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d73bb868-a0df-4d4d-bd69-98a00b01fccb\"},{\"properties\":{\"roleName\":\"Cognitive - Services User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read and - list keys of Cognitive Services.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Insights/logDefinitions/read\",\"Microsoft.Insights/metricdefinitions/read\",\"Microsoft.Insights/metrics/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-08T23:23:43.7701274Z\",\"updatedOn\":\"2021-11-11T20:13:27.5316443Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a97b65f3-24c7-4388-baec-2e87135dc908\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a97b65f3-24c7-4388-baec-2e87135dc908\"},{\"properties\":{\"roleName\":\"Cognitive - Services Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read Cognitive Services data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-02-13T20:02:12.6849986Z\",\"updatedOn\":\"2021-11-11T20:13:27.7138054Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b59867f0-fa02-499b-be73-45a86b5b3e1c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b59867f0-fa02-499b-be73-45a86b5b3e1c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - create, read, update, delete and manage keys of Cognitive Services.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.CognitiveServices/*\",\"Microsoft.Features/features/read\",\"Microsoft.Features/providers/features/read\",\"Microsoft.Features/providers/features/register/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logDefinitions/read\",\"Microsoft.Insights/metricdefinitions/read\",\"Microsoft.Insights/metrics/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-08-08T23:18:39.2257848Z\",\"updatedOn\":\"2021-11-11T20:13:27.9116230Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68\"},{\"properties\":{\"roleName\":\"CosmosBackupOperator\",\"type\":\"BuiltInRole\",\"description\":\"Can - submit restore request for a Cosmos DB database or a container for an account\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDB/databaseAccounts/backup/action\",\"Microsoft.DocumentDB/databaseAccounts/restore/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-12-07T19:47:14.9651560Z\",\"updatedOn\":\"2021-11-11T20:13:28.4333692Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/db7b14f2-5adf-42da-9f96-f2ee17bab5cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"db7b14f2-5adf-42da-9f96-f2ee17bab5cb\"},{\"properties\":{\"roleName\":\"Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to manage all resources, but does not allow you to assign roles - in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\",\"Microsoft.Authorization/elevateAccess/Action\",\"Microsoft.Blueprint/blueprintAssignments/write\",\"Microsoft.Blueprint/blueprintAssignments/delete\",\"Microsoft.Compute/galleries/share/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:28.6061853Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b24988ac-6180-42a0-ab88-20f7382dd24c\"},{\"properties\":{\"roleName\":\"Cosmos - DB Account Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Can read - Azure Cosmos DB Accounts data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDB/*/read\",\"Microsoft.DocumentDB/databaseAccounts/readonlykeys/action\",\"Microsoft.Insights/MetricDefinitions/read\",\"Microsoft.Insights/Metrics/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-10-30T17:53:54.6005577Z\",\"updatedOn\":\"2021-11-11T20:13:28.7911765Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fbdf93bf-df7d-467e-a4d2-9458aa1360c8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fbdf93bf-df7d-467e-a4d2-9458aa1360c8\"},{\"properties\":{\"roleName\":\"Cost - Management Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can view - costs and manage cost configuration (e.g. budgets, exports)\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Consumption/*\",\"Microsoft.CostManagement/*\",\"Microsoft.Billing/billingPeriods/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Advisor/configurations/read\",\"Microsoft.Advisor/recommendations/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Billing/billingProperty/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-14T16:09:22.8834827Z\",\"updatedOn\":\"2021-11-11T20:13:29.4851851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/434105ed-43f6-45c7-a02f-909b2ba83430\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"434105ed-43f6-45c7-a02f-909b2ba83430\"},{\"properties\":{\"roleName\":\"Cost - Management Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view cost - data and configuration (e.g. budgets, exports)\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Consumption/*/read\",\"Microsoft.CostManagement/*/read\",\"Microsoft.Billing/billingPeriods/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Advisor/configurations/read\",\"Microsoft.Advisor/recommendations/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Billing/billingProperty/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-14T16:09:22.8834827Z\",\"updatedOn\":\"2021-11-11T20:13:29.6601800Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/72fafb9e-0641-4937-9268-a91bfd8191a3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"72fafb9e-0641-4937-9268-a91bfd8191a3\"},{\"properties\":{\"roleName\":\"Data - Box Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - everything under Data Box Service except giving access to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Databox/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T08:28:42.7140210Z\",\"updatedOn\":\"2021-11-11T20:13:30.3737856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/add466c9-e687-43fc-8d98-dfcf8d720be5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"add466c9-e687-43fc-8d98-dfcf8d720be5\"},{\"properties\":{\"roleName\":\"Data - Box Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Data - Box Service except creating order or editing order details and giving access - to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Databox/*/read\",\"Microsoft.Databox/jobs/listsecrets/action\",\"Microsoft.Databox/jobs/listcredentials/action\",\"Microsoft.Databox/locations/availableSkus/action\",\"Microsoft.Databox/locations/validateInputs/action\",\"Microsoft.Databox/locations/regionConfiguration/action\",\"Microsoft.Databox/locations/validateAddress/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T08:26:21.9284772Z\",\"updatedOn\":\"2021-11-11T20:13:30.5546117Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/028f4ed7-e2a9-465e-a8f4-9c0ffdfdc027\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"028f4ed7-e2a9-465e-a8f4-9c0ffdfdc027\"},{\"properties\":{\"roleName\":\"Data - Factory Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create and - manage data factories, as well as child resources within them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DataFactory/dataFactories/*\",\"Microsoft.DataFactory/factories/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.EventGrid/eventSubscriptions/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:30.7420174Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/673868aa-7521-48a0-acc6-0f60742d39f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"673868aa-7521-48a0-acc6-0f60742d39f5\"},{\"properties\":{\"roleName\":\"Data - Purger\",\"type\":\"BuiltInRole\",\"description\":\"Can purge analytics data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/components/*/read\",\"Microsoft.Insights/components/purge/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/purge/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-04-30T22:39:49.6167700Z\",\"updatedOn\":\"2021-11-11T20:13:31.2788395Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/150f5e0c-0603-4f03-8c7f-cf70034c4e90\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"150f5e0c-0603-4f03-8c7f-cf70034c4e90\"},{\"properties\":{\"roleName\":\"Data - Lake Analytics Developer\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you submit, monitor, and manage your own jobs but not create or delete Data - Lake Analytics accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BigAnalytics/accounts/*\",\"Microsoft.DataLakeAnalytics/accounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.BigAnalytics/accounts/Delete\",\"Microsoft.BigAnalytics/accounts/TakeOwnership/action\",\"Microsoft.BigAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/TakeOwnership/action\",\"Microsoft.DataLakeAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Write\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Delete\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Write\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-20T00:33:29.3115234Z\",\"updatedOn\":\"2021-11-11T20:13:31.4688491Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/47b7735b-770e-4598-a7da-8b91488b4c88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"47b7735b-770e-4598-a7da-8b91488b4c88\"},{\"properties\":{\"roleName\":\"DevTest - Labs User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you connect, start, - restart, and shutdown your virtual machines in your Azure DevTest Labs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.Compute/virtualMachines/deallocate/action\",\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Compute/virtualMachines/restart/action\",\"Microsoft.Compute/virtualMachines/start/action\",\"Microsoft.DevTestLab/*/read\",\"Microsoft.DevTestLab/labs/claimAnyVm/action\",\"Microsoft.DevTestLab/labs/createEnvironment/action\",\"Microsoft.DevTestLab/labs/ensureCurrentUserProfile/action\",\"Microsoft.DevTestLab/labs/formulas/delete\",\"Microsoft.DevTestLab/labs/formulas/read\",\"Microsoft.DevTestLab/labs/formulas/write\",\"Microsoft.DevTestLab/labs/policySets/evaluatePolicies/action\",\"Microsoft.DevTestLab/labs/virtualMachines/claim/action\",\"Microsoft.DevTestLab/labs/virtualmachines/listApplicableSchedules/action\",\"Microsoft.DevTestLab/labs/virtualMachines/getRdpFileContents/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/networkInterfaces/*/read\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/publicIPAddresses/*/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[\"Microsoft.Compute/virtualMachines/vmSizes/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-08T21:52:45.0657582Z\",\"updatedOn\":\"2021-11-11T20:13:32.1746507Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/76283e04-6283-4c54-8f91-bcf1374a3c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76283e04-6283-4c54-8f91-bcf1374a3c64\"},{\"properties\":{\"roleName\":\"DocumentDB - Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage DocumentDB accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:32.3496502Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5bd9cd88-fe45-4216-938b-f97437e15450\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5bd9cd88-fe45-4216-938b-f97437e15450\"},{\"properties\":{\"roleName\":\"DNS - Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - DNS zones and record sets in Azure DNS, but does not let you control who has - access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/dnsZones/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2021-11-11T20:13:32.5233957Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"befefa01-2a29-4197-83a8-272ff33ce314\"},{\"properties\":{\"roleName\":\"EventGrid - EventSubscription Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage EventGrid event subscription operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/eventSubscriptions/*\",\"Microsoft.EventGrid/topicTypes/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-08T23:27:28.3130743Z\",\"updatedOn\":\"2021-11-11T20:13:33.4166738Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/428e0ff0-5e57-4d9c-a221-2c70d0e0a443\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"428e0ff0-5e57-4d9c-a221-2c70d0e0a443\"},{\"properties\":{\"roleName\":\"EventGrid - EventSubscription Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read EventGrid event subscriptions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/eventSubscriptions/read\",\"Microsoft.EventGrid/topicTypes/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/eventSubscriptions/read\",\"Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-10-09T17:29:28.1417894Z\",\"updatedOn\":\"2021-11-11T20:13:33.7846748Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2414bbcf-6497-4faf-8c65-045460748405\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2414bbcf-6497-4faf-8c65-045460748405\"},{\"properties\":{\"roleName\":\"Graph - Owner\",\"type\":\"BuiltInRole\",\"description\":\"Create and manage all aspects - of the Enterprise Graph - Ontology, Schema mapping, Conflation and Conversational - AI and Ingestions\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EnterpriseKnowledgeGraph/services/conflation/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/conflation/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/sourceschema/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/sourceschema/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/intentclassification/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/intentclassification/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/ingestion/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/ingestion/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/ontology/read\",\"Microsoft.EnterpriseKnowledgeGraph/services/ontology/write\",\"Microsoft.EnterpriseKnowledgeGraph/services/delete\",\"Microsoft.EnterpriseKnowledgeGraph/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-02-23T21:07:22.5844236Z\",\"updatedOn\":\"2021-11-11T20:13:34.6707886Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b60367af-1334-4454-b71e-769d9a4f83d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b60367af-1334-4454-b71e-769d9a4f83d9\"},{\"properties\":{\"roleName\":\"HDInsight - Domain Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can - Read, Create, Modify and Delete Domain Services related operations needed - for HDInsight Enterprise Security Package\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AAD/*/read\",\"Microsoft.AAD/domainServices/*/read\",\"Microsoft.AAD/domainServices/oucontainer/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-09-12T22:42:51.7451109Z\",\"updatedOn\":\"2021-11-11T20:13:35.3921342Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8d8d5a11-05d3-4bda-a417-a08778121c7c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8d8d5a11-05d3-4bda-a417-a08778121c7c\"},{\"properties\":{\"roleName\":\"Intelligent - Systems Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Intelligent Systems accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.IntelligentSystems/accounts/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:35.9371582Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/03a6d094-3444-4b3d-88af-7477090a9e5e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"03a6d094-3444-4b3d-88af-7477090a9e5e\"},{\"properties\":{\"roleName\":\"Key - Vault Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - key vaults, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.KeyVault/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.KeyVault/locations/deletedVaults/purge/action\",\"Microsoft.KeyVault/hsmPools/*\",\"Microsoft.KeyVault/managedHsms/*\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-02-25T17:08:28.5184971Z\",\"updatedOn\":\"2021-11-11T20:13:36.1170988Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f25e0fa2-a7c8-4377-a976-54943a77a395\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f25e0fa2-a7c8-4377-a976-54943a77a395\"},{\"properties\":{\"roleName\":\"Knowledge - Consumer\",\"type\":\"BuiltInRole\",\"description\":\"Knowledge Read permission - to consume Enterprise Graph Knowledge using entity search and graph query\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EnterpriseKnowledgeGraph/services/knowledge/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-02-23T21:23:31.4037552Z\",\"updatedOn\":\"2021-11-11T20:13:37.0021342Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ee361c5d-f7b5-4119-b4b6-892157c8f64c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ee361c5d-f7b5-4119-b4b6-892157c8f64c\"},{\"properties\":{\"roleName\":\"Lab - Creator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create new labs - under your Azure Lab Accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.LabServices/labAccounts/*/read\",\"Microsoft.LabServices/labAccounts/createLab/action\",\"Microsoft.LabServices/labAccounts/getPricingAndAvailability/action\",\"Microsoft.LabServices/labAccounts/getRestrictionsAndUsage/action\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-01-18T23:38:58.1036141Z\",\"updatedOn\":\"2021-11-11T20:13:37.1821588Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\"},{\"properties\":{\"roleName\":\"Log - Analytics Reader\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics - Reader can view and search all monitoring data as well as and view monitoring - settings, including viewing the configuration of Azure diagnostics on all - Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.OperationalInsights/workspaces/sharedKeys/read\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-02T00:20:28.1449012Z\",\"updatedOn\":\"2021-11-11T20:13:37.7071371Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/73c42c96-874c-492b-b04d-ab87d138a893\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"73c42c96-874c-492b-b04d-ab87d138a893\"},{\"properties\":{\"roleName\":\"Log - Analytics Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics - Contributor can read all monitoring data and edit monitoring settings. Editing - monitoring settings includes adding the VM extension to VMs; reading storage - account keys to be able to configure collection of logs from Azure Storage; - adding solutions; and configuring Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.ClassicCompute/virtualMachines/extensions/*\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.Compute/virtualMachines/extensions/*\",\"Microsoft.HybridCompute/machines/extensions/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/*\",\"Microsoft.OperationsManagement/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-25T21:51:45.3174711Z\",\"updatedOn\":\"2021-11-11T20:13:37.8823618Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"92aaf0da-9dab-42b6-94a3-d43ce8d16293\"},{\"properties\":{\"roleName\":\"Logic - App Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read, enable - and disable logic app.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*/read\",\"Microsoft.Insights/metricAlerts/*/read\",\"Microsoft.Insights/diagnosticSettings/*/read\",\"Microsoft.Insights/metricDefinitions/*/read\",\"Microsoft.Logic/*/read\",\"Microsoft.Logic/workflows/disable/action\",\"Microsoft.Logic/workflows/enable/action\",\"Microsoft.Logic/workflows/validate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*/read\",\"Microsoft.Web/connections/*/read\",\"Microsoft.Web/customApis/*/read\",\"Microsoft.Web/serverFarms/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2021-11-11T20:13:38.0573444Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\"},{\"properties\":{\"roleName\":\"Logic - App Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - logic app, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metricAlerts/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logdefinitions/*\",\"Microsoft.Insights/metricDefinitions/*\",\"Microsoft.Logic/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*\",\"Microsoft.Web/connections/*\",\"Microsoft.Web/customApis/*\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/functions/listSecrets/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2021-11-11T20:13:38.2523833Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/87a39d53-fc1b-424a-814c-f7e04687dc9e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"87a39d53-fc1b-424a-814c-f7e04687dc9e\"},{\"properties\":{\"roleName\":\"Managed - Application Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read and perform actions on Managed Application resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Solutions/applications/read\",\"Microsoft.Solutions/*/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-07-27T00:59:33.7988813Z\",\"updatedOn\":\"2021-11-11T20:13:38.5973763Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c7393b34-138c-406f-901b-d8cf2b17e6ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c7393b34-138c-406f-901b-d8cf2b17e6ae\"},{\"properties\":{\"roleName\":\"Managed - Applications Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - read resources in a managed app and request JIT access.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Solutions/jitRequests/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-09-06T00:33:58.3651522Z\",\"updatedOn\":\"2021-11-11T20:13:38.7723523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b9331d33-8a36-4f8c-b097-4f54124fdb44\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b9331d33-8a36-4f8c-b097-4f54124fdb44\"},{\"properties\":{\"roleName\":\"Managed - Identity Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and Assign - User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-12-14T19:52:04.3924594Z\",\"updatedOn\":\"2021-11-11T20:13:38.9523759Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f1a07417-d97a-45cb-824c-7a7467783830\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f1a07417-d97a-45cb-824c-7a7467783830\"},{\"properties\":{\"roleName\":\"Managed - Identity Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, - Read, Update, and Delete User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/write\",\"Microsoft.ManagedIdentity/userAssignedIdentities/delete\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-12-14T19:53:42.8804692Z\",\"updatedOn\":\"2021-11-11T20:13:39.3023761Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\"},{\"properties\":{\"roleName\":\"Management - Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Management - Group Contributor Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/delete\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/delete\",\"Microsoft.Management/managementGroups/subscriptions/write\",\"Microsoft.Management/managementGroups/write\",\"Microsoft.Management/managementGroups/subscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-06-22T00:28:29.0523964Z\",\"updatedOn\":\"2021-11-11T20:13:39.6573851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\"},{\"properties\":{\"roleName\":\"Management - Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Management Group - Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-06-22T00:31:03.4295347Z\",\"updatedOn\":\"2021-11-11T20:13:39.8274007Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ac63b705-f282-497d-ac71-919bf39d939d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ac63b705-f282-497d-ac71-919bf39d939d\"},{\"properties\":{\"roleName\":\"Monitoring - Metrics Publisher\",\"type\":\"BuiltInRole\",\"description\":\"Enables publishing - metrics against Azure resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/Register/Action\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Insights/Metrics/Write\",\"Microsoft.Insights/Telemetry/Write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-08-14T00:36:16.5610279Z\",\"updatedOn\":\"2022-01-04T00:38:04.0289073Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3913510d-42f4-4e42-8a64-420c390055eb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3913510d-42f4-4e42-8a64-420c390055eb\"},{\"properties\":{\"roleName\":\"Monitoring - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-09-21T19:19:52.4939376Z\",\"updatedOn\":\"2021-11-11T20:13:44.4578442Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/43d0d8ad-25c7-4714-9337-8ba259a9fe05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"43d0d8ad-25c7-4714-9337-8ba259a9fe05\"},{\"properties\":{\"roleName\":\"Network - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage networks, - but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:44.6328966Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4d97b98b-1d4f-4787-a291-c67834d212e7\"},{\"properties\":{\"roleName\":\"Monitoring - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring - data and update monitoring settings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.AlertsManagement/alerts/*\",\"Microsoft.AlertsManagement/alertsSummary/*\",\"Microsoft.Insights/actiongroups/*\",\"Microsoft.Insights/activityLogAlerts/*\",\"Microsoft.Insights/AlertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/createNotifications/*\",\"Microsoft.Insights/dataCollectionEndpoints/*\",\"Microsoft.Insights/dataCollectionRules/*\",\"Microsoft.Insights/dataCollectionRuleAssociations/*\",\"Microsoft.Insights/DiagnosticSettings/*\",\"Microsoft.Insights/eventtypes/*\",\"Microsoft.Insights/LogDefinitions/*\",\"Microsoft.Insights/metricalerts/*\",\"Microsoft.Insights/MetricDefinitions/*\",\"Microsoft.Insights/Metrics/*\",\"Microsoft.Insights/notificationStatus/*\",\"Microsoft.Insights/Register/Action\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.Insights/webtests/*\",\"Microsoft.Insights/workbooks/*\",\"Microsoft.Insights/workbooktemplates/*\",\"Microsoft.Insights/privateLinkScopes/*\",\"Microsoft.Insights/privateLinkScopeOperationStatuses/*\",\"Microsoft.OperationalInsights/workspaces/write\",\"Microsoft.OperationalInsights/workspaces/intelligencepacks/*\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\",\"Microsoft.OperationalInsights/workspaces/storageinsightconfigs/*\",\"Microsoft.Support/*\",\"Microsoft.WorkloadMonitor/monitors/*\",\"Microsoft.AlertsManagement/smartDetectorAlertRules/*\",\"Microsoft.AlertsManagement/actionRules/*\",\"Microsoft.AlertsManagement/smartGroups/*\",\"Microsoft.AlertsManagement/migrateFromSmartDetection/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2016-09-21T19:21:08.4345976Z\",\"updatedOn\":\"2022-03-11T00:34:18.2670392Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749f88d5-cbae-40b8-bcfc-e573ddc772fa\"},{\"properties\":{\"roleName\":\"New - Relic APM Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage New Relic Application Performance Management accounts and applications, - but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"NewRelic.APM/accounts/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:45.7178576Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d28c62d-5b37-4476-8438-e587778df237\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d28c62d-5b37-4476-8438-e587778df237\"},{\"properties\":{\"roleName\":\"Owner\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to manage all resources, including the ability to assign roles - in Azure RBAC.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:45.8978856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"},{\"properties\":{\"roleName\":\"Reader\",\"type\":\"BuiltInRole\",\"description\":\"View - all resources, but does not allow you to make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:47.8628684Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"acdd72a7-3385-48ef-bd42-f606fba81ae7\"},{\"properties\":{\"roleName\":\"Redis - Cache Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - Redis caches, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cache/register/action\",\"Microsoft.Cache/redis/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:48.0528671Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e0f68234-74aa-48ed-b826-c38b57376e17\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e0f68234-74aa-48ed-b826-c38b57376e17\"},{\"properties\":{\"roleName\":\"Reader - and Data Access\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view - everything but will not let you delete or create a storage account or contained - resource. It will also allow read/write access to all data contained in a - storage account via access to storage account keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/ListAccountSas/action\",\"Microsoft.Storage/storageAccounts/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-03-27T23:20:46.1498906Z\",\"updatedOn\":\"2021-11-11T20:13:48.2278951Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c12c1c16-33a1-487b-954d-41c89c60f349\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c12c1c16-33a1-487b-954d-41c89c60f349\"},{\"properties\":{\"roleName\":\"Resource - Policy Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Users with - rights to create/modify resource policy, create support ticket and read resources/hierarchy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/policyassignments/*\",\"Microsoft.Authorization/policydefinitions/*\",\"Microsoft.Authorization/policyexemptions/*\",\"Microsoft.Authorization/policysetdefinitions/*\",\"Microsoft.PolicyInsights/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-08-25T19:08:01.3861639Z\",\"updatedOn\":\"2021-11-11T20:13:49.6679217Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"36243c78-bf99-498c-9df9-86d9f8d28608\"},{\"properties\":{\"roleName\":\"Scheduler - Job Collections Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage Scheduler job collections, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Scheduler/jobcollections/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:49.8429293Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/188a0f2f-5c9e-469b-ae67-2aa5ce574b94\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"188a0f2f-5c9e-469b-ae67-2aa5ce574b94\"},{\"properties\":{\"roleName\":\"Search - Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Search services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Search/searchServices/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:50.0229309Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7ca78c08-252a-4471-8644-bb5ff32d4ba0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ca78c08-252a-4471-8644-bb5ff32d4ba0\"},{\"properties\":{\"roleName\":\"Security - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Security Admin Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/policyExemptions/*\",\"Microsoft.Authorization/policySetDefinitions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.IoTSecurity/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-03T07:51:23.0917487Z\",\"updatedOn\":\"2021-11-15T06:42:49.8263550Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fb1c8493-542b-48eb-b624-b4c8fea62acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb1c8493-542b-48eb-b624-b4c8fea62acd\"},{\"properties\":{\"roleName\":\"Security - Manager (Legacy)\",\"type\":\"BuiltInRole\",\"description\":\"This is a legacy - role. Please use Security Administrator instead\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/*/read\",\"Microsoft.ClassicCompute/virtualMachines/*/write\",\"Microsoft.ClassicNetwork/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-22T17:45:15.8986455Z\",\"updatedOn\":\"2021-11-11T20:13:50.5729549Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e3d13bf0-dd5a-482e-ba6b-9b8433878d10\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e3d13bf0-dd5a-482e-ba6b-9b8433878d10\"},{\"properties\":{\"roleName\":\"Security - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Security Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\",\"Microsoft.IoTSecurity/*/read\",\"Microsoft.Support/*/read\",\"Microsoft.Security/iotDefenderSettings/packageDownloads/action\",\"Microsoft.Security/iotDefenderSettings/downloadManagerActivation/action\",\"Microsoft.Security/iotSensors/downloadResetPassword/action\",\"Microsoft.IoTSecurity/defenderSettings/packageDownloads/action\",\"Microsoft.IoTSecurity/defenderSettings/downloadManagerActivation/action\",\"Microsoft.Management/managementGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-03T07:48:49.0516559Z\",\"updatedOn\":\"2021-11-11T20:13:50.7479015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/39bc4728-0917-49c7-9d2c-d95423bc2eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"39bc4728-0917-49c7-9d2c-d95423bc2eb4\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage spatial anchors in your account, but not delete them\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/create/action\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:41.1420864Z\",\"updatedOn\":\"2021-11-11T20:13:52.2829400Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8bbe83f1-e2a6-4df7-8cb4-4e04d4e5c827\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8bbe83f1-e2a6-4df7-8cb4-4e04d4e5c827\"},{\"properties\":{\"roleName\":\"Site - Recovery Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Site Recovery service except vault creation and role assignment\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/*\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/*\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/*\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/*\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/*\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/vaults/replicationOperationStatus/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:46:17.4592776Z\",\"updatedOn\":\"2021-11-11T20:13:52.4579503Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6670b86e-a3f7-4917-ac9b-5d6ab1be4567\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6670b86e-a3f7-4917-ac9b-5d6ab1be4567\"},{\"properties\":{\"roleName\":\"Site - Recovery Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you failover - and failback but not perform other Site Recovery management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/checkConsistency/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/reassociateGateway/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/renewcertificate/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/applyRecoveryPoint/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/repairReplication/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/switchprotection/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/updateMobilityService/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/refreshProvider/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:47:50.1341148Z\",\"updatedOn\":\"2021-11-11T20:13:52.6263418Z\",\"createdBy\":null,\"updatedBy\":\"\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/494ae006-db33-4328-bf46-533a6560a3ca\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494ae006-db33-4328-bf46-533a6560a3ca\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - locate and read properties of spatial anchors in your account\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:42.9271004Z\",\"updatedOn\":\"2021-11-11T20:13:52.8013467Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d51204f-eb77-4b1c-b86a-2ec626c49413\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d51204f-eb77-4b1c-b86a-2ec626c49413\"},{\"properties\":{\"roleName\":\"Site - Recovery Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view - Site Recovery status but not perform other management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/read\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationVaultSettings/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-05-19T13:35:40.0093634Z\",\"updatedOn\":\"2021-11-11T20:13:52.9763366Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dbaa88c4-0c30-4179-9fb3-46319faa6149\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dbaa88c4-0c30-4179-9fb3-46319faa6149\"},{\"properties\":{\"roleName\":\"Spatial - Anchors Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage spatial anchors in your account, including deleting them\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/SpatialAnchorsAccounts/create/action\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/delete\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/discovery/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/properties/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/query/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/submitdiag/read\",\"Microsoft.MixedReality/SpatialAnchorsAccounts/write\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-21T17:57:43.5489832Z\",\"updatedOn\":\"2021-11-11T20:13:53.1663250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/70bbe301-9835-447d-afdd-19eb3167307c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"70bbe301-9835-447d-afdd-19eb3167307c\"},{\"properties\":{\"roleName\":\"SQL - Managed Instance Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage SQL Managed Instances and required network configuration, but can\u2019t - give access to others.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Network/networkSecurityGroups/*\",\"Microsoft.Network/routeTables/*\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/locations/instanceFailoverGroups/*\",\"Microsoft.Sql/managedInstances/*\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/*\",\"Microsoft.Network/virtualNetworks/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/delete\",\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2018-12-10T22:57:14.2937983Z\",\"updatedOn\":\"2021-11-11T20:13:53.3513507Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4939a1f6-9ae0-4e48-a1e0-f2cbe897382d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4939a1f6-9ae0-4e48-a1e0-f2cbe897382d\"},{\"properties\":{\"roleName\":\"SQL - DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - SQL databases, but not access to them. Also, you can't manage their security-related - policies or their parent SQL servers.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/databases/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/servers/databases/ledgerDigestUploads/write\",\"Microsoft.Sql/servers/databases/ledgerDigestUploads/disable/action\",\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:53.5363219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\"},{\"properties\":{\"roleName\":\"SQL - Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - the security-related policies of SQL servers and databases, but not access - to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/administratorAzureAsyncOperation/read\",\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/transparentDataEncryption/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/read\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/read\",\"Microsoft.Sql/servers/databases/read\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/read\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/transparentDataEncryption/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/devOpsAuditingSettings/*\",\"Microsoft.Sql/servers/firewallRules/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\",\"Microsoft.Support/*\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/*\",\"Microsoft.Sql/managedInstances/read\",\"Microsoft.Sql/managedInstances/azureADOnlyAuthentications/*\",\"Microsoft.Security/sqlVulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/administrators/read\",\"Microsoft.Sql/servers/administrators/read\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-16T18:44:40.4607572Z\",\"updatedOn\":\"2022-04-27T21:08:08.4474437Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/056cd41c-7e88-42e1-933e-88ba6a50c9c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"056cd41c-7e88-42e1-933e-88ba6a50c9c3\"},{\"properties\":{\"roleName\":\"Storage - Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage storage accounts, including accessing storage account keys which provide - full access to storage account data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:54.2363539Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"17d1049b-9a84-46fb-8f53-869881c3d3ab\"},{\"properties\":{\"roleName\":\"SQL - Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - SQL servers and databases, but not access to them, and not their security - -related policies.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/*\",\"Microsoft.Support/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\"],\"notActions\":[\"Microsoft.Sql/managedInstances/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/databases/sensitivityLabels/*\",\"Microsoft.Sql/managedInstances/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/managedInstances/securityAlertPolicies/*\",\"Microsoft.Sql/managedInstances/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/currentSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/recommendedSensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/devOpsAuditingSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Sql/servers/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/delete\",\"Microsoft.Sql/servers/azureADOnlyAuthentications/write\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/delete\",\"Microsoft.Sql/servers/externalPolicyBasedAuthorizations/write\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2022-04-28T19:00:53.9963035Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\"},{\"properties\":{\"roleName\":\"Storage - Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Storage - Account Key Operators are allowed to list and regenerate keys on Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-04-13T18:26:11.5770570Z\",\"updatedOn\":\"2021-11-11T20:13:54.7697481Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"81a9662b-bebf-436f-a333-f67b29880f12\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write and delete access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action\",\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:54.9397456Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ba92f5b4-2d11-453d-a403-e96b0029c9fe\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full - access to Azure Storage blob containers and data, including assigning POSIX - access control.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/*\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/*\"],\"notDataActions\":[]}],\"createdOn\":\"2018-12-04T07:02:58.2775257Z\",\"updatedOn\":\"2021-11-11T20:13:55.1225062Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b7e6dc6d-f1e8-4753-8033-0f276bb0955b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b7e6dc6d-f1e8-4753-8033-0f276bb0955b\"},{\"properties\":{\"roleName\":\"Storage - Blob Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read - access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:55.2975076Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, and delete access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/write\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/write\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:55.4725469Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/974c5e8b-45b9-4653-ba55-5f855dd0fb88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"974c5e8b-45b9-4653-ba55-5f855dd0fb88\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Message Processor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for peek, receive, and delete access to Azure Storage queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-01-28T22:27:04.8947111Z\",\"updatedOn\":\"2021-11-11T20:13:55.6575408Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8a0f0c08-91a1-4084-bc3d-661d67233fed\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8a0f0c08-91a1-4084-bc3d-661d67233fed\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Message Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for sending of Azure Storage queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-01-28T22:28:34.7459724Z\",\"updatedOn\":\"2021-11-11T20:13:55.8325508Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c6a89b2d-59bc-44d0-9896-0f6e12d7b80a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c6a89b2d-59bc-44d0-9896-0f6e12d7b80a\"},{\"properties\":{\"roleName\":\"Storage - Queue Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/messages/read\"],\"notDataActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2021-11-11T20:13:56.0178497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/19e7f393-937e-4f77-808e-94535e297925\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"19e7f393-937e-4f77-808e-94535e297925\"},{\"properties\":{\"roleName\":\"Support - Request Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - create and manage Support requests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2017-06-22T22:25:37.8053068Z\",\"updatedOn\":\"2021-11-11T20:13:56.7444481Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\"},{\"properties\":{\"roleName\":\"Traffic - Manager Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage Traffic Manager profiles, but does not let you control who has access - to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/trafficManagerProfiles/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2021-11-11T20:13:57.2744497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\"},{\"properties\":{\"roleName\":\"Virtual - Machine Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"View - Virtual Machines in the portal and login as administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/virtualMachines/login/action\",\"Microsoft.Compute/virtualMachines/loginAsAdmin/action\",\"Microsoft.HybridCompute/machines/login/action\",\"Microsoft.HybridCompute/machines/loginAsAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2021-11-18T00:56:53.8134295Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1c0163c0-47e6-4577-8991-ea5c82e286e4\"},{\"properties\":{\"roleName\":\"User - Access Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage user access to Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:57.7932023Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\"},{\"properties\":{\"roleName\":\"Virtual - Machine User Login\",\"type\":\"BuiltInRole\",\"description\":\"View Virtual - Machines in the portal and login as a regular user.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/virtualMachines/login/action\",\"Microsoft.HybridCompute/machines/login/action\"],\"notDataActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2021-11-18T00:55:50.6185845Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb879df8-f326-4884-b1cf-06f3ad86be52\"},{\"properties\":{\"roleName\":\"Virtual - Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage virtual machines, but not access to them, and not the virtual network - or storage account they're connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/locations/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/virtualMachineScaleSets/*\",\"Microsoft.Compute/cloudServices/*\",\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\",\"Microsoft.Compute/disks/delete\",\"Microsoft.DevTestLab/schedules/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/applicationGateways/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/loadBalancers/probes/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/locations/*\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.SerialConsole/serialPorts/connect/action\",\"Microsoft.SqlVirtualMachine/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2021-11-11T20:13:58.3176075Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9980e02c-c2be-4d73-94e8-173b1dc7cf3c\"},{\"properties\":{\"roleName\":\"Web - Plan Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - the web plans for websites, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/serverFarms/*\",\"Microsoft.Web/hostingEnvironments/Join/Action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-02-02T21:55:09.8806423Z\",\"updatedOn\":\"2021-11-11T20:13:58.4926099Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\"},{\"properties\":{\"roleName\":\"Website - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage websites - (not web plans), but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/certificates/*\",\"Microsoft.Web/listSitesAssignedToHostName/read\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2015-05-12T23:10:23.6193952Z\",\"updatedOn\":\"2021-11-11T20:13:58.6655647Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/de139f84-1756-47ae-9be6-808fbbe84772\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"de139f84-1756-47ae-9be6-808fbbe84772\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*\"],\"notDataActions\":[]}],\"createdOn\":\"2019-04-16T21:33:36.7445745Z\",\"updatedOn\":\"2021-11-11T20:13:59.2005807Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/090c5cfd-751d-490a-894a-3ce6f1109419\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"090c5cfd-751d-490a-894a-3ce6f1109419\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*\"],\"notDataActions\":[]}],\"createdOn\":\"2019-04-16T21:34:29.8656362Z\",\"updatedOn\":\"2021-11-11T20:13:59.3721538Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f526a384-b230-433a-b45c-95f59c4a2dec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f526a384-b230-433a-b45c-95f59c4a2dec\"},{\"properties\":{\"roleName\":\"Attestation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read write or - delete the attestation provider instance\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Attestation/attestationProviders/attestation/read\",\"Microsoft.Attestation/attestationProviders/attestation/write\",\"Microsoft.Attestation/attestationProviders/attestation/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-19T00:24:09.3354177Z\",\"updatedOn\":\"2021-11-11T20:13:59.7271218Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bbf86eb8-f7b4-4cce-96e4-18cddf81d86e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bbf86eb8-f7b4-4cce-96e4-18cddf81d86e\"},{\"properties\":{\"roleName\":\"HDInsight - Cluster Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read - and modify HDInsight cluster configurations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HDInsight/*/read\",\"Microsoft.HDInsight/clusters/getGatewaySettings/action\",\"Microsoft.HDInsight/clusters/updateGatewaySettings/action\",\"Microsoft.HDInsight/clusters/configurations/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-20T00:03:01.7110732Z\",\"updatedOn\":\"2021-11-11T20:13:59.9052180Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/61ed4efc-fab3-44fd-b111-e24485cc132a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"61ed4efc-fab3-44fd-b111-e24485cc132a\"},{\"properties\":{\"roleName\":\"Cosmos - DB Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Azure - Cosmos DB accounts, but not access data in them. Prevents access to account - keys and connection strings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\"],\"notActions\":[\"Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*\",\"Microsoft.DocumentDB/databaseAccounts/regenerateKey/*\",\"Microsoft.DocumentDB/databaseAccounts/listKeys/*\",\"Microsoft.DocumentDB/databaseAccounts/listConnectionStrings/*\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/delete\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write\",\"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-26T17:01:17.0169383Z\",\"updatedOn\":\"2021-11-11T20:14:00.0802032Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"230815da-be43-4aae-9cb4-875f7bd000aa\"},{\"properties\":{\"roleName\":\"Hybrid - Server Resource Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Can - read, write, delete, and re-onboard Hybrid servers to the Hybrid Resource - Provider.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*\",\"Microsoft.HybridCompute/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-29T21:39:32.3132923Z\",\"updatedOn\":\"2021-11-11T20:14:00.2548257Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/48b40c6e-82e0-4eb3-90d5-19e40f49b624\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"48b40c6e-82e0-4eb3-90d5-19e40f49b624\"},{\"properties\":{\"roleName\":\"Hybrid - Server Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Can onboard - new Hybrid servers to the Hybrid Resource Provider.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-04-29T22:36:28.1873756Z\",\"updatedOn\":\"2021-11-11T20:14:00.4308999Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5d1e5ee4-7c68-4a71-ac8b-0739630a3dfb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d1e5ee4-7c68-4a71-ac8b-0739630a3dfb\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Receiver\",\"type\":\"BuiltInRole\",\"description\":\"Allows - receive access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*/eventhubs/consumergroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*/receive/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:25:21.1056666Z\",\"updatedOn\":\"2021-11-11T20:14:01.3225169Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a638d3c7-ab3a-418d-83e6-5f17a39d4fde\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a638d3c7-ab3a-418d-83e6-5f17a39d4fde\"},{\"properties\":{\"roleName\":\"Azure - Event Hubs Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - send access to Azure Event Hubs resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/*/eventhubs/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:26:12.4673714Z\",\"updatedOn\":\"2021-11-11T20:14:01.4925583Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2b629674-e913-4c01-ae53-ef4638d8f975\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2b629674-e913-4c01-ae53-ef4638d8f975\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Receiver\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for receive access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*/queues/read\",\"Microsoft.ServiceBus/*/topics/read\",\"Microsoft.ServiceBus/*/topics/subscriptions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*/receive/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:43:01.6343849Z\",\"updatedOn\":\"2021-11-11T20:14:01.6629685Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4f6d3b9b-027b-4f4c-9142-0e5a2a2247e0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4f6d3b9b-027b-4f4c-9142-0e5a2a2247e0\"},{\"properties\":{\"roleName\":\"Azure - Service Bus Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for send access to Azure Service Bus resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ServiceBus/*/queues/read\",\"Microsoft.ServiceBus/*/topics/read\",\"Microsoft.ServiceBus/*/topics/subscriptions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ServiceBus/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-05-10T06:43:46.7046934Z\",\"updatedOn\":\"2021-11-11T20:14:01.8479199Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/69a216fc-b8fb-44d8-bc22-1f3c2cd27a39\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"69a216fc-b8fb-44d8-bc22-1f3c2cd27a39\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read access to Azure File Share over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-07-01T20:19:31.8620471Z\",\"updatedOn\":\"2021-11-11T20:14:04.3642909Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/aba4ae5f-2193-4029-9191-0cb91df5e314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"aba4ae5f-2193-4029-9191-0cb91df5e314\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, and delete access in Azure Storage file shares over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-07-01T20:54:35.4834310Z\",\"updatedOn\":\"2021-11-11T20:14:04.5443323Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb\"},{\"properties\":{\"roleName\":\"Private - DNS Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage private DNS zone resources, but not the virtual networks they are linked - to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Network/privateDnsZones/*\",\"Microsoft.Network/privateDnsOperationResults/*\",\"Microsoft.Network/privateDnsOperationStatuses/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Authorization/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-07-10T19:31:15.5645518Z\",\"updatedOn\":\"2021-11-11T20:14:04.7342851Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b12aa53e-6015-4669-85d0-8515ebb3ae7f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b12aa53e-6015-4669-85d0-8515ebb3ae7f\"},{\"properties\":{\"roleName\":\"Storage - Blob Delegator\",\"type\":\"BuiltInRole\",\"description\":\"Allows for generation - of a user delegation key which can be used to sign SAS tokens\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-07-23T00:51:16.3376761Z\",\"updatedOn\":\"2021-11-11T20:14:05.4321714Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/db58b8e5-c6ad-4a2a-8342-4190687cbf4a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"db58b8e5-c6ad-4a2a-8342-4190687cbf4a\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization User\",\"type\":\"BuiltInRole\",\"description\":\"Allows user - to use the applications in an application group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DesktopVirtualization/applicationGroups/useApplications/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-08-07T00:29:03.8727621Z\",\"updatedOn\":\"2021-11-11T20:14:05.9821791Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63\"},{\"properties\":{\"roleName\":\"Storage - File Data SMB Share Elevated Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write, delete and modify NTFS permission access in Azure Storage - file shares over SMB\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete\",\"Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-08-07T01:35:36.9935457Z\",\"updatedOn\":\"2021-11-11T20:14:06.1571744Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7264617-510b-434b-a828-9731dc254ea7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7264617-510b-434b-a828-9731dc254ea7\"},{\"properties\":{\"roleName\":\"Blueprint - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage blueprint - definitions, but not assign them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Blueprint/blueprints/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-14T21:55:16.9683949Z\",\"updatedOn\":\"2021-11-11T20:14:06.5171828Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/41077137-e803-4205-871c-5a86e6a753b4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"41077137-e803-4205-871c-5a86e6a753b4\"},{\"properties\":{\"roleName\":\"Blueprint - Operator\",\"type\":\"BuiltInRole\",\"description\":\"Can assign existing - published blueprints, but cannot create new blueprints. NOTE: this only works - if the assignment is done with a user-assigned managed identity.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Blueprint/blueprintAssignments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-14T21:56:48.7897875Z\",\"updatedOn\":\"2021-11-11T20:14:06.6971401Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/437d2ced-4a38-4302-8479-ed2bcb43d090\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"437d2ced-4a38-4302-8479-ed2bcb43d090\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.Insights/workbooks/*\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:39:03.8725173Z\",\"updatedOn\":\"2021-11-11T20:14:07.2371450Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ab8e14d6-4a74-4a29-9ba8-549422addade\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ab8e14d6-4a74-4a29-9ba8-549422addade\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Responder\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Responder\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*/read\",\"Microsoft.SecurityInsights/dataConnectorsCheckRequirements/action\",\"Microsoft.SecurityInsights/automationRules/*\",\"Microsoft.SecurityInsights/cases/*\",\"Microsoft.SecurityInsights/incidents/*\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/appendTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/query/action\",\"Microsoft.SecurityInsights/threatIntelligence/bulkTag/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/appendTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/replaceTags/action\",\"Microsoft.SecurityInsights/threatIntelligence/queryIndicators/action\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/read\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.SecurityInsights/cases/*/Delete\",\"Microsoft.SecurityInsights/incidents/*/Delete\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:54:07.6467264Z\",\"updatedOn\":\"2021-11-11T20:14:07.4171916Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e150937-b8fe-4cfb-8069-0eaf05ecd056\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3e150937-b8fe-4cfb-8069-0eaf05ecd056\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Reader\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft Sentinel - Reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SecurityInsights/*/read\",\"Microsoft.SecurityInsights/dataConnectorsCheckRequirements/action\",\"Microsoft.SecurityInsights/threatIntelligence/indicators/query/action\",\"Microsoft.SecurityInsights/threatIntelligence/queryIndicators/action\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/LinkedServices/read\",\"Microsoft.OperationalInsights/workspaces/savedSearches/read\",\"Microsoft.OperationsManagement/solutions/read\",\"Microsoft.OperationalInsights/workspaces/query/read\",\"Microsoft.OperationalInsights/workspaces/query/*/read\",\"Microsoft.OperationalInsights/querypacks/*/read\",\"Microsoft.OperationalInsights/workspaces/dataSources/read\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/myworkbooks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/templateSpecs/*/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T16:58:50.1132117Z\",\"updatedOn\":\"2022-05-06T20:39:57.5331324Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8d289c81-5878-46d4-8554-54e1e3d8b5cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8d289c81-5878-46d4-8554-54e1e3d8b5cb\"},{\"properties\":{\"roleName\":\"Workbook - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read workbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.insights/workbooks/read\",\"microsoft.insights/workbooktemplates/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T20:56:17.6808140Z\",\"updatedOn\":\"2022-01-03T19:15:12.6968428Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b279062a-9be3-42a0-92ae-8b3cf002ec4d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b279062a-9be3-42a0-92ae-8b3cf002ec4d\"},{\"properties\":{\"roleName\":\"Workbook - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can save shared workbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/workbooks/write\",\"Microsoft.Insights/workbooks/delete\",\"Microsoft.Insights/workbooks/read\",\"Microsoft.Insights/workbooktemplates/write\",\"Microsoft.Insights/workbooktemplates/delete\",\"Microsoft.Insights/workbooktemplates/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-08-28T20:59:42.4820277Z\",\"updatedOn\":\"2022-01-03T19:14:31.2372561Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e8ddcd69-c73f-4f9f-9844-4100522f16ad\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e8ddcd69-c73f-4f9f-9844-4100522f16ad\"},{\"properties\":{\"roleName\":\"Policy - Insights Data Writer (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read access to resource policies and write access to resource component policy - events.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/policyassignments/read\",\"Microsoft.Authorization/policydefinitions/read\",\"Microsoft.Authorization/policyexemptions/read\",\"Microsoft.Authorization/policysetdefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.PolicyInsights/checkDataPolicyCompliance/action\",\"Microsoft.PolicyInsights/policyEvents/logDataEvents/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-09-19T19:35:20.9504127Z\",\"updatedOn\":\"2021-11-11T20:14:09.4235132Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/66bb4e9e-b016-4a94-8249-4c0511c2be84\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"66bb4e9e-b016-4a94-8249-4c0511c2be84\"},{\"properties\":{\"roleName\":\"SignalR - AccessKey Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read SignalR - Service Access Keys\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SignalRService/*/read\",\"Microsoft.SignalRService/SignalR/listkeys/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-09-20T09:33:19.6236874Z\",\"updatedOn\":\"2021-11-11T20:14:09.6134860Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/04165923-9d83-45d5-8227-78b77b0a687e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"04165923-9d83-45d5-8227-78b77b0a687e\"},{\"properties\":{\"roleName\":\"SignalR/Web - PubSub Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, Read, - Update, and Delete SignalR service resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.SignalRService/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-09-20T09:58:09.0009662Z\",\"updatedOn\":\"2021-11-11T20:14:09.7884765Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8cf5e20a-e4b2-4e9d-b3a1-5ceb692c2761\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8cf5e20a-e4b2-4e9d-b3a1-5ceb692c2761\"},{\"properties\":{\"roleName\":\"Azure - Connected Machine Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Can - onboard Azure Connected Machines.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\",\"Microsoft.HybridCompute/privateLinkScopes/read\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T20:15:07.1372870Z\",\"updatedOn\":\"2021-11-11T20:14:10.8735219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b64e21ea-ac4e-4cdf-9dc9-5b892992bee7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b64e21ea-ac4e-4cdf-9dc9-5b892992bee7\"},{\"properties\":{\"roleName\":\"Azure - Connected Machine Resource Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Can - read, write, delete and re-onboard Azure Connected Machines.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/read\",\"Microsoft.HybridCompute/machines/write\",\"Microsoft.HybridCompute/machines/delete\",\"Microsoft.HybridCompute/machines/UpgradeExtensions/action\",\"Microsoft.HybridCompute/machines/extensions/read\",\"Microsoft.HybridCompute/machines/extensions/write\",\"Microsoft.HybridCompute/machines/extensions/delete\",\"Microsoft.HybridCompute/privateLinkScopes/*\",\"Microsoft.HybridCompute/*/read\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T20:24:59.1474607Z\",\"updatedOn\":\"2021-12-15T16:10:25.5898511Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cd570a14-e51a-42ad-bac8-bafd67325302\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cd570a14-e51a-42ad-bac8-bafd67325302\"},{\"properties\":{\"roleName\":\"Managed - Services Registration assignment Delete Role\",\"type\":\"BuiltInRole\",\"description\":\"Managed - Services Registration Assignment Delete Role allows the managing tenant users - to delete the registration assignment assigned to their tenant.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedServices/registrationAssignments/read\",\"Microsoft.ManagedServices/registrationAssignments/delete\",\"Microsoft.ManagedServices/operationStatuses/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-10-23T22:33:33.1183469Z\",\"updatedOn\":\"2021-11-11T20:14:11.2336400Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/91c1777a-f3dc-4fae-b103-61d183457e46\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"91c1777a-f3dc-4fae-b103-61d183457e46\"},{\"properties\":{\"roleName\":\"App - Configuration Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows - full access to App Configuration data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppConfiguration/configurationStores/*/read\",\"Microsoft.AppConfiguration/configurationStores/*/write\",\"Microsoft.AppConfiguration/configurationStores/*/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-10-25T18:41:40.1185063Z\",\"updatedOn\":\"2021-11-11T20:14:11.4035314Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5ae67dd6-50cb-40e7-96ff-dc2bfa4b606b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5ae67dd6-50cb-40e7-96ff-dc2bfa4b606b\"},{\"properties\":{\"roleName\":\"App - Configuration Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read access to App Configuration data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppConfiguration/configurationStores/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-10-25T18:45:33.7975332Z\",\"updatedOn\":\"2021-11-11T20:14:11.5885341Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/516239f1-63e1-4d78-a4de-a74fb236a071\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"516239f1-63e1-4d78-a4de-a74fb236a071\"},{\"properties\":{\"roleName\":\"Kubernetes - Cluster - Azure Arc Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Role - definition to authorize any user/service to create connectedClusters resource\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Kubernetes/connectedClusters/Write\",\"Microsoft.Kubernetes/connectedClusters/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2019-11-18T17:00:02.2087147Z\",\"updatedOn\":\"2021-11-11T20:14:12.4685303Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/34e09817-6cbe-4d01-b1a2-e0eac5743d41\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"34e09817-6cbe-4d01-b1a2-e0eac5743d41\"},{\"properties\":{\"roleName\":\"Experimentation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/write\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/delete\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experiment/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/emergencystop/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/write\",\"Microsoft.Experimentation/experimentWorkspaces/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-13T00:08:08.6679591Z\",\"updatedOn\":\"2021-11-11T20:14:14.6454147Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f646f1b-fa08-80eb-a22b-edd6ce5c915c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f646f1b-fa08-80eb-a22b-edd6ce5c915c\"},{\"properties\":{\"roleName\":\"Cognitive - Services QnA Maker Reader\",\"type\":\"BuiltInRole\",\"description\":\"Let\u2019s - you read and test a KB only.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-17T18:26:12.3329439Z\",\"updatedOn\":\"2021-11-11T20:14:14.8254033Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/466ccd10-b268-4a11-b098-b4849f024126\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"466ccd10-b268-4a11-b098-b4849f024126\"},{\"properties\":{\"roleName\":\"Cognitive - Services QnA Maker Editor\",\"type\":\"BuiltInRole\",\"description\":\"Let\u2019s - you create, edit, import and export a KB. You cannot publish or delete a KB.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/alterations/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker/operations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/alterations/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/QnAMaker.v2/operations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/download/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/create/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/generateanswer/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/knowledgebases/train/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/alterations/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointkeys/refreshkeys/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/read\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/endpointsettings/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnAMaker/operations/read\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-17T18:27:30.6434556Z\",\"updatedOn\":\"2021-11-11T20:14:14.9961559Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f4cc2bf9-21be-47a1-bdf1-5c5804381025\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f4cc2bf9-21be-47a1-bdf1-5c5804381025\"},{\"properties\":{\"roleName\":\"Experimentation - Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation - Administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/admin/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/write\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/delete\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experimentadmin/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/experiment/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/emergencystop/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/write\",\"Microsoft.Experimentation/experimentWorkspaces/delete\",\"Microsoft.Experimentation/experimentWorkspaces/admin/action\",\"Microsoft.Experimentation/experimentWorkspaces/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/metricwrite/action\"],\"notDataActions\":[]}],\"createdOn\":\"2019-12-18T22:46:33.1116612Z\",\"updatedOn\":\"2021-11-11T20:14:15.1811577Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f646f1b-fa08-80eb-a33b-edd6ce5c915c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f646f1b-fa08-80eb-a33b-edd6ce5c915c\"},{\"properties\":{\"roleName\":\"Remote - Rendering Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with conversion, manage session, rendering and diagnostics capabilities - for Azure Remote Rendering\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/convert/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/render/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/diagnostic/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-01-23T18:15:31.3450348Z\",\"updatedOn\":\"2021-11-11T20:14:16.7621737Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3df8b902-2a6f-47c7-8cc5-360e9b272a7e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3df8b902-2a6f-47c7-8cc5-360e9b272a7e\"},{\"properties\":{\"roleName\":\"Remote - Rendering Client\",\"type\":\"BuiltInRole\",\"description\":\"Provides user - with manage session, rendering and diagnostics capabilities for Azure Remote - Rendering.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/action\",\"Microsoft.MixedReality/RemoteRenderingAccounts/managesessions/delete\",\"Microsoft.MixedReality/RemoteRenderingAccounts/render/read\",\"Microsoft.MixedReality/RemoteRenderingAccounts/diagnostic/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-01-23T18:32:52.7069824Z\",\"updatedOn\":\"2021-11-11T20:14:16.9421512Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d39065c4-c120-43c9-ab0a-63eed9795f0a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d39065c4-c120-43c9-ab0a-63eed9795f0a\"},{\"properties\":{\"roleName\":\"Managed - Application Contributor Role\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for creating managed application resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Solutions/applications/*\",\"Microsoft.Solutions/register/action\",\"Microsoft.Resources/subscriptions/resourceGroups/*\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-08T03:39:11.8933879Z\",\"updatedOn\":\"2021-11-11T20:14:19.1271536Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/641177b8-a67a-45b9-a033-47bc880bb21e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"641177b8-a67a-45b9-a033-47bc880bb21e\"},{\"properties\":{\"roleName\":\"Security - Assessment Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - push assessments to Security Center\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Security/assessments/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-13T08:23:47.7656161Z\",\"updatedOn\":\"2021-11-11T20:14:19.3021974Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/612c2aa1-cb24-443b-ac28-3ab7272de6f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"612c2aa1-cb24-443b-ac28-3ab7272de6f5\"},{\"properties\":{\"roleName\":\"Tag - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage tags - on entities, without providing access to the entities themselves.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/resources/read\",\"Microsoft.Resources/subscriptions/resources/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\",\"Microsoft.Resources/tags/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-18T23:19:19.2977644Z\",\"updatedOn\":\"2021-11-11T20:14:20.0172041Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4a9ae827-6dc8-4573-8ac7-8239d42aa03f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4a9ae827-6dc8-4573-8ac7-8239d42aa03f\"},{\"properties\":{\"roleName\":\"Integration - Service Environment Developer\",\"type\":\"BuiltInRole\",\"description\":\"Allows - developers to create and update workflows, integration accounts and API connections - in integration service environments.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Logic/integrationServiceEnvironments/read\",\"Microsoft.Logic/integrationServiceEnvironments/*/join/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-20T21:09:00.5627875Z\",\"updatedOn\":\"2021-11-11T20:14:20.1871986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c7aa55d3-1abb-444a-a5ca-5e51e485d6ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c7aa55d3-1abb-444a-a5ca-5e51e485d6ec\"},{\"properties\":{\"roleName\":\"Integration - Service Environment Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage integration service environments, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Logic/integrationServiceEnvironments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-20T21:10:44.4008319Z\",\"updatedOn\":\"2021-11-11T20:14:20.3622058Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a41e2c5b-bd99-4a07-88f4-9bf657a760b8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a41e2c5b-bd99-4a07-88f4-9bf657a760b8\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Contributor Role\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to read and write Azure Kubernetes Service clusters\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerService/managedClusters/read\",\"Microsoft.ContainerService/managedClusters/write\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-02-27T19:27:15.0739970Z\",\"updatedOn\":\"2021-11-11T20:14:21.2621727Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ed7f3fbd-7b88-4dd4-9017-9adb7ce333f8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ed7f3fbd-7b88-4dd4-9017-9adb7ce333f8\"},{\"properties\":{\"roleName\":\"Azure - Digital Twins Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - role for Digital Twins data-plane properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DigitalTwins/digitaltwins/read\",\"Microsoft.DigitalTwins/digitaltwins/relationships/read\",\"Microsoft.DigitalTwins/eventroutes/read\",\"Microsoft.DigitalTwins/models/read\",\"Microsoft.DigitalTwins/query/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-10T23:48:14.7057381Z\",\"updatedOn\":\"2021-11-11T20:14:22.3621788Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d57506d4-4c8d-48b1-8587-93c323f6a5a3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d57506d4-4c8d-48b1-8587-93c323f6a5a3\"},{\"properties\":{\"roleName\":\"Azure - Digital Twins Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full - access role for Digital Twins data-plane\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.DigitalTwins/eventroutes/*\",\"Microsoft.DigitalTwins/digitaltwins/*\",\"Microsoft.DigitalTwins/digitaltwins/commands/*\",\"Microsoft.DigitalTwins/digitaltwins/relationships/*\",\"Microsoft.DigitalTwins/models/*\",\"Microsoft.DigitalTwins/query/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-10T23:49:33.7821930Z\",\"updatedOn\":\"2021-11-11T20:14:22.5471888Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bcd981a7-7f74-457b-83e1-cceb9e632ffe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bcd981a7-7f74-457b-83e1-cceb9e632ffe\"},{\"properties\":{\"roleName\":\"Hierarchy - Settings Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Allows - users to edit and delete Hierarchy Settings\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/settings/write\",\"Microsoft.Management/managementGroups/settings/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-03-13T23:55:11.0212387Z\",\"updatedOn\":\"2021-11-11T20:14:23.0882347Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/350f8d15-c687-4448-8ae1-157740a3936d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"350f8d15-c687-4448-8ae1-157740a3936d\"},{\"properties\":{\"roleName\":\"FHIR - Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Role allows - user or principal full access to FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/*\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:35:04.4949547Z\",\"updatedOn\":\"2021-11-11T20:14:23.6235473Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5a1fc7df-4bf1-4951-a576-89034ee01acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5a1fc7df-4bf1-4951-a576-89034ee01acd\"},{\"properties\":{\"roleName\":\"FHIR - Data Exporter\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and export FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/read\",\"Microsoft.HealthcareApis/services/fhir/resources/export/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/export/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:45:01.9764073Z\",\"updatedOn\":\"2021-11-11T20:14:23.7992557Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3db33094-8700-4567-8da5-1501d4e7e843\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3db33094-8700-4567-8da5-1501d4e7e843\"},{\"properties\":{\"roleName\":\"FHIR - Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-17T18:49:04.8353499Z\",\"updatedOn\":\"2021-11-11T20:14:23.9692275Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4c8d0bbc-75d3-4935-991f-5f3c56d81508\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4c8d0bbc-75d3-4935-991f-5f3c56d81508\"},{\"properties\":{\"roleName\":\"FHIR - Data Writer\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and write FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/*\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/*\"],\"notDataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/hardDelete/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/hardDelete/action\"]}],\"createdOn\":\"2020-03-17T18:55:35.2413335Z\",\"updatedOn\":\"2021-11-11T20:14:24.1442783Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3f88fce4-5892-4214-ae73-ba5294559913\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3f88fce4-5892-4214-ae73-ba5294559913\"},{\"properties\":{\"roleName\":\"Experimentation - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Experimentation Reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-03-25T18:05:14.8375678Z\",\"updatedOn\":\"2021-11-11T20:14:24.5042390Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49632ef5-d9ac-41f4-b8e7-bbe587fa74a1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49632ef5-d9ac-41f4-b8e7-bbe587fa74a1\"},{\"properties\":{\"roleName\":\"Object - Understanding Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with ingestion capabilities for Azure Object Understanding.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/action\",\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-04-22T19:15:09.0697923Z\",\"updatedOn\":\"2021-11-11T20:14:26.8743132Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4dd61c23-6743-42fe-a388-d8bdd41cb745\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4dd61c23-6743-42fe-a388-d8bdd41cb745\"},{\"properties\":{\"roleName\":\"Azure - Maps Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to read, write, and delete access to map related data from an Azure - maps account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/*/read\",\"Microsoft.Maps/accounts/*/write\",\"Microsoft.Maps/accounts/*/delete\",\"Microsoft.Maps/accounts/*/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-07T20:55:05.0645410Z\",\"updatedOn\":\"2021-11-11T20:14:28.3092598Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8f5e0ce6-4f7b-4dcf-bddf-e6f48634a204\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f5e0ce6-4f7b-4dcf-bddf-e6f48634a204\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to the project, including the ability to view, create, edit, or delete - projects.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-08T23:47:07.0779345Z\",\"updatedOn\":\"2021-11-11T20:14:28.8342655Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c1ff6cc2-c111-46fe-8896-e0ef812ad9f3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c1ff6cc2-c111-46fe-8896-e0ef812ad9f3\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Deployment\",\"type\":\"BuiltInRole\",\"description\":\"Publish, - unpublish or export models. Deployment can view the project but can\u2019t - update.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/iterations/publish/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/iterations/export/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/quicktest/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/classify/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/detect/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:31:05.9528620Z\",\"updatedOn\":\"2021-11-11T20:14:29.0142669Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5c4089e1-6d96-4d2f-b296-c1bc7137275f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5c4089e1-6d96-4d2f-b296-c1bc7137275f\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Labeler\",\"type\":\"BuiltInRole\",\"description\":\"View, - edit training images and create, add, remove, or delete the image tags. Labelers - can view the project but can\u2019t update anything other than training images - and tags.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/query/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/images/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/tags/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/images/suggested/*\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/tagsandregions/suggestions/action\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:33:20.8278896Z\",\"updatedOn\":\"2021-11-11T20:14:29.1892871Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/88424f51-ebe7-446f-bc41-7fa16989e96c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"88424f51-ebe7-446f-bc41-7fa16989e96c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - actions in the project. Readers can\u2019t create or update the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/predictions/query/action\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:34:18.5328818Z\",\"updatedOn\":\"2021-11-11T20:14:29.3642707Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/93586559-c37d-4a6b-ba08-b9f0940c2d73\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"93586559-c37d-4a6b-ba08-b9f0940c2d73\"},{\"properties\":{\"roleName\":\"Cognitive - Services Custom Vision Trainer\",\"type\":\"BuiltInRole\",\"description\":\"View, - edit projects and train the models, including the ability to publish, unpublish, - export the models. Trainers can\u2019t create or delete the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVision/projects/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/delete\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/import/action\",\"Microsoft.CognitiveServices/accounts/CustomVision/projects/export/read\"]}],\"createdOn\":\"2020-05-09T01:35:13.8147804Z\",\"updatedOn\":\"2021-11-11T20:14:29.5442713Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0a5ae4ab-0d65-4eeb-be61-29fc9b54394b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0a5ae4ab-0d65-4eeb-be61-29fc9b54394b\"},{\"properties\":{\"roleName\":\"Key - Vault Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Perform all - data plane operations on a key vault and all objects in it, including certificates, - keys, and secrets. Cannot manage key vault resources or manage role assignments. - Only works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:46.2349235Z\",\"updatedOn\":\"2021-11-11T20:14:30.2542755Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00482a5a-887f-4fb3-b363-3b7fe8e74483\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00482a5a-887f-4fb3-b363-3b7fe8e74483\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the keys of a key vault, except manage permissions. Only works - for key vaults that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/*\",\"Microsoft.KeyVault/vaults/keyrotationpolicies/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.0099249Z\",\"updatedOn\":\"2022-01-06T23:21:17.9760884Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/14b46e9e-c2b7-41b4-b07b-48a6ebf60603\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"14b46e9e-c2b7-41b4-b07b-48a6ebf60603\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto User\",\"type\":\"BuiltInRole\",\"description\":\"Perform cryptographic - operations using keys. Only works for key vaults that use the 'Azure role-based - access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/read\",\"Microsoft.KeyVault/vaults/keys/update/action\",\"Microsoft.KeyVault/vaults/keys/backup/action\",\"Microsoft.KeyVault/vaults/keys/encrypt/action\",\"Microsoft.KeyVault/vaults/keys/decrypt/action\",\"Microsoft.KeyVault/vaults/keys/wrap/action\",\"Microsoft.KeyVault/vaults/keys/unwrap/action\",\"Microsoft.KeyVault/vaults/keys/sign/action\",\"Microsoft.KeyVault/vaults/keys/verify/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.0699268Z\",\"updatedOn\":\"2021-11-11T20:14:30.6042921Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/12338af0-0e69-4776-bea7-57ae8d297424\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"12338af0-0e69-4776-bea7-57ae8d297424\"},{\"properties\":{\"roleName\":\"Key - Vault Secrets Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the secrets of a key vault, except manage permissions. Only - works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/secrets/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.1449242Z\",\"updatedOn\":\"2021-11-11T20:14:30.7793470Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b86a8fe4-44ce-4948-aee5-eccb2c155cd7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b86a8fe4-44ce-4948-aee5-eccb2c155cd7\"},{\"properties\":{\"roleName\":\"Key - Vault Secrets User\",\"type\":\"BuiltInRole\",\"description\":\"Read secret - contents. Only works for key vaults that use the 'Azure role-based access - control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/secrets/getSecret/action\",\"Microsoft.KeyVault/vaults/secrets/readMetadata/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2049241Z\",\"updatedOn\":\"2021-11-11T20:14:30.9542829Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4633458b-17de-408a-b874-0445c86b69e6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4633458b-17de-408a-b874-0445c86b69e6\"},{\"properties\":{\"roleName\":\"Key - Vault Certificates Officer\",\"type\":\"BuiltInRole\",\"description\":\"Perform - any action on the certificates of a key vault, except manage permissions. - Only works for key vaults that use the 'Azure role-based access control' permission - model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/certificatecas/*\",\"Microsoft.KeyVault/vaults/certificates/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2499247Z\",\"updatedOn\":\"2021-11-11T20:14:31.1292967Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a4417e6f-fecd-4de8-b567-7b0420556985\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4417e6f-fecd-4de8-b567-7b0420556985\"},{\"properties\":{\"roleName\":\"Key - Vault Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read metadata of - key vaults and its certificates, keys, and secrets. Cannot read sensitive - values such as secret contents or key material. Only works for key vaults - that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.KeyVault/checkNameAvailability/read\",\"Microsoft.KeyVault/deletedVaults/read\",\"Microsoft.KeyVault/locations/*/read\",\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/operations/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/*/read\",\"Microsoft.KeyVault/vaults/secrets/readMetadata/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-19T17:52:47.2949294Z\",\"updatedOn\":\"2021-11-11T20:14:31.3043292Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21090545-7ca7-4776-b22c-e363652d74d2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21090545-7ca7-4776-b22c-e363652d74d2\"},{\"properties\":{\"roleName\":\"Key - Vault Crypto Service Encryption User\",\"type\":\"BuiltInRole\",\"description\":\"Read - metadata of keys and perform wrap/unwrap operations. Only works for key vaults - that use the 'Azure role-based access control' permission model.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventGrid/eventSubscriptions/write\",\"Microsoft.EventGrid/eventSubscriptions/read\",\"Microsoft.EventGrid/eventSubscriptions/delete\"],\"notActions\":[],\"dataActions\":[\"Microsoft.KeyVault/vaults/keys/read\",\"Microsoft.KeyVault/vaults/keys/wrap/action\",\"Microsoft.KeyVault/vaults/keys/unwrap/action\"],\"notDataActions\":[]}],\"createdOn\":\"2020-05-20T20:55:19.2398470Z\",\"updatedOn\":\"2021-11-11T20:14:31.8443056Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e147488a-f6f5-4113-8e2d-b22465e65bf6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e147488a-f6f5-4113-8e2d-b22465e65bf6\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Viewer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - view all resources in cluster/namespace, except secrets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/read\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/read\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/read\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/read\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/read\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/read\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/read\",\"Microsoft.Kubernetes/connectedClusters/configmaps/read\",\"Microsoft.Kubernetes/connectedClusters/endpoints/read\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/read\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/read\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/read\",\"Microsoft.Kubernetes/connectedClusters/pods/read\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/read\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/read\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/read\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/read\",\"Microsoft.Kubernetes/connectedClusters/services/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:51:12.8801199Z\",\"updatedOn\":\"2021-11-11T20:14:33.8193353Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/63f0a09d-1495-4db4-a681-037d84835eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"63f0a09d-1495-4db4-a681-037d84835eb4\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Writer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - update everything in cluster/namespace, except (cluster)roles and (cluster)role - bindings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/*\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/*\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/*\",\"Microsoft.Kubernetes/connectedClusters/configmaps/*\",\"Microsoft.Kubernetes/connectedClusters/endpoints/*\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/*\",\"Microsoft.Kubernetes/connectedClusters/pods/*\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/secrets/*\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/*\",\"Microsoft.Kubernetes/connectedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:53:50.6749823Z\",\"updatedOn\":\"2021-11-11T20:14:34.0043462Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5b999177-9696-4545-85c7-50de3797e5a1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5b999177-9696-4545-85c7-50de3797e5a1\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Cluster Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources in the cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:55:30.9910462Z\",\"updatedOn\":\"2021-11-11T20:14:34.1743694Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8393591c-06b9-48a2-a542-1bd6b377f6a2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8393591c-06b9-48a2-a542-1bd6b377f6a2\"},{\"properties\":{\"roleName\":\"Azure - Arc Kubernetes Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage all resources under cluster/namespace, except update or delete resource - quotas and namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Kubernetes/connectedClusters/apps/controllerrevisions/read\",\"Microsoft.Kubernetes/connectedClusters/apps/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/apps/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/apps/statefulsets/*\",\"Microsoft.Kubernetes/connectedClusters/authorization.k8s.io/localsubjectaccessreviews/write\",\"Microsoft.Kubernetes/connectedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.Kubernetes/connectedClusters/batch/cronjobs/*\",\"Microsoft.Kubernetes/connectedClusters/batch/jobs/*\",\"Microsoft.Kubernetes/connectedClusters/configmaps/*\",\"Microsoft.Kubernetes/connectedClusters/endpoints/*\",\"Microsoft.Kubernetes/connectedClusters/events.k8s.io/events/read\",\"Microsoft.Kubernetes/connectedClusters/events/read\",\"Microsoft.Kubernetes/connectedClusters/extensions/daemonsets/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/deployments/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/extensions/replicasets/*\",\"Microsoft.Kubernetes/connectedClusters/limitranges/read\",\"Microsoft.Kubernetes/connectedClusters/namespaces/read\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.Kubernetes/connectedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.Kubernetes/connectedClusters/persistentvolumeclaims/*\",\"Microsoft.Kubernetes/connectedClusters/pods/*\",\"Microsoft.Kubernetes/connectedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.Kubernetes/connectedClusters/rbac.authorization.k8s.io/rolebindings/*\",\"Microsoft.Kubernetes/connectedClusters/rbac.authorization.k8s.io/roles/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/replicationcontrollers/*\",\"Microsoft.Kubernetes/connectedClusters/resourcequotas/read\",\"Microsoft.Kubernetes/connectedClusters/secrets/*\",\"Microsoft.Kubernetes/connectedClusters/serviceaccounts/*\",\"Microsoft.Kubernetes/connectedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-06-12T20:57:06.0391177Z\",\"updatedOn\":\"2021-11-11T20:14:34.3593384Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dffb1e0c-446f-4dde-a09f-99eb5cc68b96\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dffb1e0c-446f-4dde-a09f-99eb5cc68b96\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Cluster Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources in the cluster.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:47:24.4071415Z\",\"updatedOn\":\"2021-11-11T20:14:35.5993607Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you manage all resources under cluster/namespace, except update or delete - resource quotas and namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.ContainerService/managedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/*\"],\"notDataActions\":[\"Microsoft.ContainerService/managedClusters/resourcequotas/write\",\"Microsoft.ContainerService/managedClusters/resourcequotas/delete\",\"Microsoft.ContainerService/managedClusters/namespaces/write\",\"Microsoft.ContainerService/managedClusters/namespaces/delete\"]}],\"createdOn\":\"2020-07-02T17:50:30.4020311Z\",\"updatedOn\":\"2021-11-11T20:14:35.7743651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3498e952-d568-435e-9b2c-8d77e338d7f7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3498e952-d568-435e-9b2c-8d77e338d7f7\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read-only access to see most objects in a namespace. It does not allow viewing - roles or role bindings. This role does not allow viewing Secrets, since reading - the contents of Secrets enables access to ServiceAccount credentials in the - namespace, which would allow API access as any ServiceAccount in the namespace - (a form of privilege escalation). Applying this role at cluster scope will - give access across all namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/apps/controllerrevisions/read\",\"Microsoft.ContainerService/managedClusters/apps/daemonsets/read\",\"Microsoft.ContainerService/managedClusters/apps/deployments/read\",\"Microsoft.ContainerService/managedClusters/apps/replicasets/read\",\"Microsoft.ContainerService/managedClusters/apps/statefulsets/read\",\"Microsoft.ContainerService/managedClusters/autoscaling/horizontalpodautoscalers/read\",\"Microsoft.ContainerService/managedClusters/batch/cronjobs/read\",\"Microsoft.ContainerService/managedClusters/batch/jobs/read\",\"Microsoft.ContainerService/managedClusters/configmaps/read\",\"Microsoft.ContainerService/managedClusters/endpoints/read\",\"Microsoft.ContainerService/managedClusters/events.k8s.io/events/read\",\"Microsoft.ContainerService/managedClusters/events/read\",\"Microsoft.ContainerService/managedClusters/extensions/daemonsets/read\",\"Microsoft.ContainerService/managedClusters/extensions/deployments/read\",\"Microsoft.ContainerService/managedClusters/extensions/ingresses/read\",\"Microsoft.ContainerService/managedClusters/extensions/networkpolicies/read\",\"Microsoft.ContainerService/managedClusters/extensions/replicasets/read\",\"Microsoft.ContainerService/managedClusters/limitranges/read\",\"Microsoft.ContainerService/managedClusters/namespaces/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/ingresses/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/read\",\"Microsoft.ContainerService/managedClusters/persistentvolumeclaims/read\",\"Microsoft.ContainerService/managedClusters/pods/read\",\"Microsoft.ContainerService/managedClusters/policy/poddisruptionbudgets/read\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/read\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/read\",\"Microsoft.ContainerService/managedClusters/resourcequotas/read\",\"Microsoft.ContainerService/managedClusters/serviceaccounts/read\",\"Microsoft.ContainerService/managedClusters/services/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:53:05.5728294Z\",\"updatedOn\":\"2021-11-11T20:14:35.9544048Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7f6c6a51-bcf8-42ba-9220-52d62157d7db\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7f6c6a51-bcf8-42ba-9220-52d62157d7db\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service RBAC Writer\",\"type\":\"BuiltInRole\",\"description\":\"Allows - read/write access to most objects in a namespace.This role does not allow - viewing or modifying roles or role bindings. However, this role allows accessing - Secrets and running Pods as any ServiceAccount in the namespace, so it can - be used to gain the API access levels of any ServiceAccount in the namespace. - Applying this role at cluster scope will give access across all namespaces.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ContainerService/managedClusters/apps/controllerrevisions/read\",\"Microsoft.ContainerService/managedClusters/apps/daemonsets/*\",\"Microsoft.ContainerService/managedClusters/apps/deployments/*\",\"Microsoft.ContainerService/managedClusters/apps/replicasets/*\",\"Microsoft.ContainerService/managedClusters/apps/statefulsets/*\",\"Microsoft.ContainerService/managedClusters/autoscaling/horizontalpodautoscalers/*\",\"Microsoft.ContainerService/managedClusters/batch/cronjobs/*\",\"Microsoft.ContainerService/managedClusters/batch/jobs/*\",\"Microsoft.ContainerService/managedClusters/configmaps/*\",\"Microsoft.ContainerService/managedClusters/endpoints/*\",\"Microsoft.ContainerService/managedClusters/events.k8s.io/events/read\",\"Microsoft.ContainerService/managedClusters/events/read\",\"Microsoft.ContainerService/managedClusters/extensions/daemonsets/*\",\"Microsoft.ContainerService/managedClusters/extensions/deployments/*\",\"Microsoft.ContainerService/managedClusters/extensions/ingresses/*\",\"Microsoft.ContainerService/managedClusters/extensions/networkpolicies/*\",\"Microsoft.ContainerService/managedClusters/extensions/replicasets/*\",\"Microsoft.ContainerService/managedClusters/limitranges/read\",\"Microsoft.ContainerService/managedClusters/namespaces/read\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/ingresses/*\",\"Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/*\",\"Microsoft.ContainerService/managedClusters/persistentvolumeclaims/*\",\"Microsoft.ContainerService/managedClusters/pods/*\",\"Microsoft.ContainerService/managedClusters/policy/poddisruptionbudgets/*\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/*\",\"Microsoft.ContainerService/managedClusters/replicationcontrollers/*\",\"Microsoft.ContainerService/managedClusters/resourcequotas/read\",\"Microsoft.ContainerService/managedClusters/secrets/*\",\"Microsoft.ContainerService/managedClusters/serviceaccounts/*\",\"Microsoft.ContainerService/managedClusters/services/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-02T17:54:51.9644983Z\",\"updatedOn\":\"2021-11-11T20:14:36.1293406Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a7ffa36f-339b-4b5c-8bdf-e2c188b2c0eb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a7ffa36f-339b-4b5c-8bdf-e2c188b2c0eb\"},{\"properties\":{\"roleName\":\"Services - Hub Operator\",\"type\":\"BuiltInRole\",\"description\":\"Services Hub Operator - allows you to perform all read, write, and deletion operations related to - Services Hub Connectors.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.ServicesHub/connectors/write\",\"Microsoft.ServicesHub/connectors/read\",\"Microsoft.ServicesHub/connectors/delete\",\"Microsoft.ServicesHub/connectors/checkAssessmentEntitlement/action\",\"Microsoft.ServicesHub/supportOfferingEntitlement/read\",\"Microsoft.ServicesHub/workspaces/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-07-20T17:57:22.0644902Z\",\"updatedOn\":\"2021-11-11T20:14:37.5544021Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/82200a5b-e217-47a5-b665-6d8765ee745b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"82200a5b-e217-47a5-b665-6d8765ee745b\"},{\"properties\":{\"roleName\":\"Object - Understanding Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read ingestion jobs for an object understanding account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectUnderstandingAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-23T19:16:31.9929119Z\",\"updatedOn\":\"2021-11-11T20:14:37.9070085Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d18777c0-1514-4662-8490-608db7d334b6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d18777c0-1514-4662-8490-608db7d334b6\"},{\"properties\":{\"roleName\":\"Azure - Arc Enabled Kubernetes Cluster User Role\",\"type\":\"BuiltInRole\",\"description\":\"List - cluster user credentials action.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Kubernetes/connectedClusters/listClusterUserCredentials/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\",\"Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-07-28T17:37:00.7637445Z\",\"updatedOn\":\"2022-02-17T02:29:05.1000798Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00493d72-78f6-4148-b6c5-d3ce8e4799dd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00493d72-78f6-4148-b6c5-d3ce8e4799dd\"},{\"properties\":{\"roleName\":\"SignalR - App Server\",\"type\":\"BuiltInRole\",\"description\":\"Lets your app server - access SignalR Service with AAD auth options.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/accessKey/action\",\"Microsoft.SignalRService/SignalR/serverConnection/write\",\"Microsoft.SignalRService/SignalR/clientConnection/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-29T06:54:40.1201435Z\",\"updatedOn\":\"2021-11-16T05:19:04.8579948Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/420fcaa2-552c-430f-98ca-3264be4806c7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"420fcaa2-552c-430f-98ca-3264be4806c7\"},{\"properties\":{\"roleName\":\"SignalR - REST API Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to - Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/clientToken/action\",\"Microsoft.SignalRService/SignalR/hub/send/action\",\"Microsoft.SignalRService/SignalR/group/send/action\",\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/group/write\",\"Microsoft.SignalRService/SignalR/clientConnection/send/action\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/clientConnection/write\",\"Microsoft.SignalRService/SignalR/user/send/action\",\"Microsoft.SignalRService/SignalR/user/read\",\"Microsoft.SignalRService/SignalR/user/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-07-29T09:35:32.2764751Z\",\"updatedOn\":\"2021-11-11T20:14:38.8028020Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/fd53cd77-2268-407a-8f46-7e7863d0f521\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fd53cd77-2268-407a-8f46-7e7863d0f521\"},{\"properties\":{\"roleName\":\"Collaborative - Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage data - packages of a collaborative.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/*/read\",\"Microsoft.IndustryDataLifecycle/memberCollaboratives/*/read\",\"Microsoft.IndustryDataLifecycle/locations/dataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/receivedDataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/rejectDataPackage/action\",\"Microsoft.IndustryDataLifecycle/memberCollaboratives/sharedDataPackages/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/dataModels/*\",\"Microsoft.IndustryDataLifecycle/custodianCollaboratives/auditLogs/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-08-14T11:58:31.8973556Z\",\"updatedOn\":\"2021-11-11T20:14:40.2428145Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/daa9e50b-21df-454c-94a6-a8050adab352\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"daa9e50b-21df-454c-94a6-a8050adab352\"},{\"properties\":{\"roleName\":\"Device - Update Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives you read - access to management and content operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:40:19.2373610Z\",\"updatedOn\":\"2021-11-11T20:14:40.7922672Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e9dba6fb-3d52-4cf0-bce3-f06ce71b9e0f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e9dba6fb-3d52-4cf0-bce3-f06ce71b9e0f\"},{\"properties\":{\"roleName\":\"Device - Update Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives you - full access to management and content operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/write\",\"Microsoft.DeviceUpdate/accounts/instances/updates/delete\",\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/write\",\"Microsoft.DeviceUpdate/accounts/instances/management/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:56:22.3520510Z\",\"updatedOn\":\"2021-11-11T20:14:40.9672678Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/02ca0879-e8e4-47a5-a61e-5c618b76e64a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"02ca0879-e8e4-47a5-a61e-5c618b76e64a\"},{\"properties\":{\"roleName\":\"Device - Update Content Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you full access to content operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/write\",\"Microsoft.DeviceUpdate/accounts/instances/updates/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:58:18.4255500Z\",\"updatedOn\":\"2021-11-11T20:14:41.1433368Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0378884a-3af5-44ab-8323-f5b22f9f3c98\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0378884a-3af5-44ab-8323-f5b22f9f3c98\"},{\"properties\":{\"roleName\":\"Device - Update Deployments Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you full access to management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/management/write\",\"Microsoft.DeviceUpdate/accounts/instances/management/delete\",\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-21T23:59:52.1001666Z\",\"updatedOn\":\"2022-01-13T01:59:19.4616366Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e4237640-0e3d-4a46-8fda-70bc94856432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e4237640-0e3d-4a46-8fda-70bc94856432\"},{\"properties\":{\"roleName\":\"Device - Update Deployments Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives - you read access to management operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/management/read\",\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-22T00:01:34.7053630Z\",\"updatedOn\":\"2022-01-13T01:35:51.6463216Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49e2f5d2-7741-4835-8efa-19e1fe35e47f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49e2f5d2-7741-4835-8efa-19e1fe35e47f\"},{\"properties\":{\"roleName\":\"Device - Update Content Reader\",\"type\":\"BuiltInRole\",\"description\":\"Gives you - read access to content operations, but does not allow making changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.DeviceUpdate/accounts/instances/updates/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-08-22T00:02:43.3299181Z\",\"updatedOn\":\"2021-11-11T20:14:41.6754856Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d1ee9a80-8b14-47f0-bdc2-f4a351625a7b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d1ee9a80-8b14-47f0-bdc2-f4a351625a7b\"},{\"properties\":{\"roleName\":\"Cognitive - Services Metrics Advisor Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to the project, including the system level configuration.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-10T07:46:47.5804491Z\",\"updatedOn\":\"2021-11-11T20:14:43.6930781Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cb43c632-a144-4ec5-977c-e80c4affc34a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cb43c632-a144-4ec5-977c-e80c4affc34a\"},{\"properties\":{\"roleName\":\"Cognitive - Services Metrics Advisor User\",\"type\":\"BuiltInRole\",\"description\":\"Access - to the project.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/MetricsAdvisor/stats/*\"]}],\"createdOn\":\"2020-09-10T07:47:59.6195639Z\",\"updatedOn\":\"2021-11-11T20:14:43.8780761Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3b20f47b-3825-43cb-8114-4bd2201156a8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3b20f47b-3825-43cb-8114-4bd2201156a8\"},{\"properties\":{\"roleName\":\"Schema - Registry Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read - and list Schema Registry groups and schemas.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/schemagroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/namespaces/schemas/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-13T06:31:38.0272740Z\",\"updatedOn\":\"2021-11-11T20:14:44.6350450Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2c56ea50-c6b3-40a6-83c0-9d98858bc7d2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2c56ea50-c6b3-40a6-83c0-9d98858bc7d2\"},{\"properties\":{\"roleName\":\"Schema - Registry Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read, - write, and delete Schema Registry groups and schemas.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.EventHub/namespaces/schemagroups/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventHub/namespaces/schemas/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-13T06:48:26.6032931Z\",\"updatedOn\":\"2021-11-11T20:14:44.8200370Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5dffeca3-4936-4216-b2bc-10343a5abb25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5dffeca3-4936-4216-b2bc-10343a5abb25\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides - read access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-14T10:21:08.9138820Z\",\"updatedOn\":\"2021-11-11T20:14:45.0056815Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7ec7ccdc-f61e-41fe-9aaf-980df0a44eba\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ec7ccdc-f61e-41fe-9aaf-980df0a44eba\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - contribute access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*/action\",\"Microsoft.AgFoodPlatform/*/read\",\"Microsoft.AgFoodPlatform/*/write\"],\"notDataActions\":[\"Microsoft.AgFoodPlatform/farmers/write\",\"Microsoft.AgFoodPlatform/deletionJobs/*/write\"]}],\"createdOn\":\"2020-09-14T10:21:09.7239169Z\",\"updatedOn\":\"2021-11-11T20:14:45.1806787Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8508508a-4469-4e45-963b-2518ee0bb728\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8508508a-4469-4e45-963b-2518ee0bb728\"},{\"properties\":{\"roleName\":\"AgFood - Platform Service Admin\",\"type\":\"BuiltInRole\",\"description\":\"Provides - admin access to AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-09-14T10:21:09.8039209Z\",\"updatedOn\":\"2021-11-11T20:14:45.3613128Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f8da80de-1ff9-4747-ad80-a19b7f6079e3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f8da80de-1ff9-4747-ad80-a19b7f6079e3\"},{\"properties\":{\"roleName\":\"Managed - HSM contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage - managed HSM pools, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.KeyVault/managedHSMs/*\",\"Microsoft.KeyVault/deletedManagedHsms/read\",\"Microsoft.KeyVault/locations/deletedManagedHsms/read\",\"Microsoft.KeyVault/locations/deletedManagedHsms/purge/action\",\"Microsoft.KeyVault/locations/managedHsmOperationResults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-09-16T21:47:01.1291104Z\",\"updatedOn\":\"2022-03-07T20:20:03.1782149Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18500a29-7fe2-46b2-a342-b16a415e101d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18500a29-7fe2-46b2-a342-b16a415e101d\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Submitter\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to create submissions to Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/delete\",\"Microsoft.SecurityDetonation/chambers/submissions/write\",\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\",\"Microsoft.SecurityDetonation/chambers/submissions/accesskeyview/read\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-01T08:55:21.3980274Z\",\"updatedOn\":\"2021-11-11T20:14:47.5471350Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0b555d9b-b4a7-4f43-b330-627f0e5be8f0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0b555d9b-b4a7-4f43-b330-627f0e5be8f0\"},{\"properties\":{\"roleName\":\"SignalR - REST API Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read-only access - to Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/user/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-13T09:19:05.6463616Z\",\"updatedOn\":\"2021-11-11T20:14:48.7902970Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ddde6b66-c0df-4114-a159-3618637b3035\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ddde6b66-c0df-4114-a159-3618637b3035\"},{\"properties\":{\"roleName\":\"SignalR - Service Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to - Azure SignalR Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/SignalR/auth/accessKey/action\",\"Microsoft.SignalRService/SignalR/auth/clientToken/action\",\"Microsoft.SignalRService/SignalR/hub/send/action\",\"Microsoft.SignalRService/SignalR/group/send/action\",\"Microsoft.SignalRService/SignalR/group/read\",\"Microsoft.SignalRService/SignalR/group/write\",\"Microsoft.SignalRService/SignalR/clientConnection/send/action\",\"Microsoft.SignalRService/SignalR/clientConnection/read\",\"Microsoft.SignalRService/SignalR/clientConnection/write\",\"Microsoft.SignalRService/SignalR/serverConnection/write\",\"Microsoft.SignalRService/SignalR/user/send/action\",\"Microsoft.SignalRService/SignalR/user/read\",\"Microsoft.SignalRService/SignalR/user/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-10-13T09:20:32.1501410Z\",\"updatedOn\":\"2021-11-11T20:14:48.9653162Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7e4f1700-ea5a-4f59-8f37-079cfe29dce3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7e4f1700-ea5a-4f59-8f37-079cfe29dce3\"},{\"properties\":{\"roleName\":\"Reservation - Purchaser\",\"type\":\"BuiltInRole\",\"description\":\"Lets you purchase reservations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Capacity/catalogs/read\",\"Microsoft.Capacity/register/action\",\"Microsoft.Compute/register/action\",\"Microsoft.Consumption/register/action\",\"Microsoft.Consumption/reservationRecommendationDetails/read\",\"Microsoft.Consumption/reservationRecommendations/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.SQL/register/action\",\"Microsoft.Support/supporttickets/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-10-23T20:22:48.9217751Z\",\"updatedOn\":\"2022-04-25T20:55:26.9790121Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f7b75c60-3036-4b75-91c3-6b41c27c1689\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f7b75c60-3036-4b75-91c3-6b41c27c1689\"},{\"properties\":{\"roleName\":\"AzureML - Metrics Writer (preview)\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you write metrics to AzureML workspace\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.MachineLearningServices/workspaces/metrics/*/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-10-27T16:55:19.5664950Z\",\"updatedOn\":\"2021-11-11T20:14:49.8655015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/635dd51f-9968-44d3-b7fb-6d9a6bd613ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"635dd51f-9968-44d3-b7fb-6d9a6bd613ae\"},{\"properties\":{\"roleName\":\"Storage - Account Backup Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you perform backup and restore operations using Azure Backup on the storage - account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/locks/read\",\"Microsoft.Authorization/locks/write\",\"Microsoft.Authorization/locks/delete\",\"Microsoft.Features/features/read\",\"Microsoft.Features/providers/features/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/operations/read\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/delete\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/read\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/write\",\"Microsoft.Storage/storageAccounts/objectReplicationPolicies/restorePointMarkers/write\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\",\"Microsoft.Storage/storageAccounts/blobServices/read\",\"Microsoft.Storage/storageAccounts/blobServices/write\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Storage/storageAccounts/restoreBlobRanges/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-11-02T23:32:50.4203469Z\",\"updatedOn\":\"2022-04-20T01:44:53.5887074Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1\"},{\"properties\":{\"roleName\":\"Experimentation - Metric Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - creation, writes and reads to the metric set via the metrics service APIs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/read\",\"Microsoft.Experimentation/experimentWorkspaces/experimentationGroups/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/metricwrite/action\",\"Microsoft.Experimentation/experimentWorkspaces/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-10T20:07:53.7535885Z\",\"updatedOn\":\"2021-11-11T20:14:50.9524177Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6188b7c9-7d01-4f99-a59f-c88b630326c0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6188b7c9-7d01-4f99-a59f-c88b630326c0\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Curator\",\"type\":\"BuiltInRole\",\"description\":\"The Microsoft.ProjectBabylon - data curator can create, read, modify and delete catalog data objects and - establish relationships between objects. This role is in preview and subject - to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/data/read\",\"Microsoft.ProjectBabylon/accounts/data/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:31:33.7988825Z\",\"updatedOn\":\"2021-11-11T20:14:51.4929515Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9ef4ef9c-a049-46b0-82ab-dd8ac094c889\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9ef4ef9c-a049-46b0-82ab-dd8ac094c889\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"The Microsoft.ProjectBabylon - data reader can read catalog data objects. This role is in preview and subject - to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/data/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:33:13.5342351Z\",\"updatedOn\":\"2021-11-11T20:14:51.6729667Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c8d896ba-346d-4f50-bc1d-7d1c84130446\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d896ba-346d-4f50-bc1d-7d1c84130446\"},{\"properties\":{\"roleName\":\"Project - Babylon Data Source Administrator\",\"type\":\"BuiltInRole\",\"description\":\"The - Microsoft.ProjectBabylon data source administrator can manage data sources - and data scans. This role is in preview and subject to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ProjectBabylon/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.ProjectBabylon/accounts/scan/read\",\"Microsoft.ProjectBabylon/accounts/scan/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:34:01.8401954Z\",\"updatedOn\":\"2021-11-11T20:14:51.8529643Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/05b7651b-dc44-475e-b74d-df3db49fae0f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"05b7651b-dc44-475e-b74d-df3db49fae0f\"},{\"properties\":{\"roleName\":\"Purview - role 1 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/data/read\",\"Microsoft.Purview/accounts/data/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:37:15.0123345Z\",\"updatedOn\":\"2022-01-04T00:43:15.6924286Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8a3c2885-9b38-4fd2-9d99-91af537c1347\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8a3c2885-9b38-4fd2-9d99-91af537c1347\"},{\"properties\":{\"roleName\":\"Purview - role 3 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/data/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:39:22.2344740Z\",\"updatedOn\":\"2022-01-04T00:48:08.2844802Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ff100721-1b9d-43d8-af52-42b69c1272db\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ff100721-1b9d-43d8-af52-42b69c1272db\"},{\"properties\":{\"roleName\":\"Purview - role 2 (Deprecated)\",\"type\":\"BuiltInRole\",\"description\":\"Deprecated - role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Purview/accounts/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Purview/accounts/scan/read\",\"Microsoft.Purview/accounts/scan/write\"],\"notDataActions\":[]}],\"createdOn\":\"2020-11-14T02:40:05.0975648Z\",\"updatedOn\":\"2022-01-04T00:47:22.9678219Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/200bba9e-f0c8-430f-892b-6f0794863803\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"200bba9e-f0c8-430f-892b-6f0794863803\"},{\"properties\":{\"roleName\":\"Application - Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.DesktopVirtualization/workspaces/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-03T23:26:00.2784962Z\",\"updatedOn\":\"2021-11-11T20:14:52.9432015Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ca6382a4-1721-4bcf-a114-ff0c70227b6b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ca6382a4-1721-4bcf-a114-ff0c70227b6b\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of Desktop Virtualization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:36:19.0140629Z\",\"updatedOn\":\"2021-11-11T20:14:54.0407838Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/49a72310-ab8d-41df-bbb0-79b649203868\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"49a72310-ab8d-41df-bbb0-79b649203868\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of Desktop Virtualization.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:37:16.2910337Z\",\"updatedOn\":\"2021-11-11T20:14:54.2107872Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/082f0a83-3be5-4ba1-904c-961cca79b387\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"082f0a83-3be5-4ba1-904c-961cca79b387\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Workspace Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Workspace.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/workspaces/*\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:38:29.6089216Z\",\"updatedOn\":\"2021-11-11T20:14:54.3907854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/21efdde3-836f-432b-bf3d-3e8e734d4b2b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"21efdde3-836f-432b-bf3d-3e8e734d4b2b\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization User Session Operator\",\"type\":\"BuiltInRole\",\"description\":\"Operator - of the Desktop Virtualization Uesr Session.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:39:16.9100273Z\",\"updatedOn\":\"2021-11-11T20:14:54.5657970Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ea4bfff8-7fb4-485a-aadd-d4129a0ffaa6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ea4bfff8-7fb4-485a-aadd-d4129a0ffaa6\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Session Host Operator\",\"type\":\"BuiltInRole\",\"description\":\"Operator - of the Desktop Virtualization Session Host.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:39:53.2569741Z\",\"updatedOn\":\"2021-11-11T20:14:54.7508042Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2ad6aaab-ead9-4eaa-8ac5-da422f562408\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2ad6aaab-ead9-4eaa-8ac5-da422f562408\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Host Pool Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Host Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/*/read\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:40:33.1430834Z\",\"updatedOn\":\"2021-11-11T20:14:54.9257967Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ceadfde2-b300-400a-ab7b-6143895aa822\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ceadfde2-b300-400a-ab7b-6143895aa822\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Host Pool Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Host Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/hostpools/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:40:57.2976187Z\",\"updatedOn\":\"2021-11-11T20:14:55.1057701Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e307426c-f9b6-4e81-87de-d99efb3c32bc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e307426c-f9b6-4e81-87de-d99efb3c32bc\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Application Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*/read\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:18.0287398Z\",\"updatedOn\":\"2021-11-11T20:14:55.2858006Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/aebf23d0-b568-4e86-b8f9-fe83a2c6ab55\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"aebf23d0-b568-4e86-b8f9-fe83a2c6ab55\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Application Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Contributor - of the Desktop Virtualization Application Group.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/applicationgroups/*\",\"Microsoft.DesktopVirtualization/hostpools/read\",\"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:38.6205531Z\",\"updatedOn\":\"2021-11-11T20:14:55.4677136Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/86240b0e-9422-4c43-887b-b61143f32ba8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86240b0e-9422-4c43-887b-b61143f32ba8\"},{\"properties\":{\"roleName\":\"Desktop - Virtualization Workspace Reader\",\"type\":\"BuiltInRole\",\"description\":\"Reader - of the Desktop Virtualization Workspace.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DesktopVirtualization/workspaces/read\",\"Microsoft.DesktopVirtualization/applicationgroups/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-11T21:41:58.1892707Z\",\"updatedOn\":\"2021-11-11T20:14:55.6577168Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0fa44ee9-7a7d-466b-9bb2-2bf446b1204d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0fa44ee9-7a7d-466b-9bb2-2bf446b1204d\"},{\"properties\":{\"roleName\":\"Disk - Backup Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides permission - to backup vault to perform disk backup.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/disks/read\",\"Microsoft.Compute/disks/beginGetAccess/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T07:39:03.8394514Z\",\"updatedOn\":\"2021-11-11T20:14:56.0178737Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3e5e47e6-65f7-47ef-90b5-e5dd4d455f24\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - permissions to upload and manage new Autonomous Development Platform measurements.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/discoveries/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/uploads/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurements/states/new/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurementCollections/*\",\"Microsoft.AutonomousDevelopmentPlatform/accounts/measurementCollections/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/discoveries/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/uploads/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurements/states/new/*\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurementCollections/*\"],\"notDataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/accounts/dataPools/measurements/states/new/changeState/action\",\"Microsoft.AutonomousDevelopmentPlatform/workspaces/measurements/states/new/changeState/action\"]}],\"createdOn\":\"2020-12-15T11:30:01.7459379Z\",\"updatedOn\":\"2022-01-04T13:19:41.5458536Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b8b15564-4fa6-4a59-ab12-03e1d9594795\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b8b15564-4fa6-4a59-ab12-03e1d9594795\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - read access to Autonomous Development Platform data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:11:31.9843256Z\",\"updatedOn\":\"2022-01-04T13:21:04.3207709Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d63b75f7-47ea-4f27-92ac-e0d173aaf093\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d63b75f7-47ea-4f27-92ac-e0d173aaf093\"},{\"properties\":{\"roleName\":\"Autonomous - Development Platform Data Owner (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to Autonomous Development Platform data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AutonomousDevelopmentPlatform/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.AutonomousDevelopmentPlatform/*\"],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:13:59.9702378Z\",\"updatedOn\":\"2022-01-04T13:20:26.2040404Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/27f8b550-c507-4db9-86f2-f4b8e816d59d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"27f8b550-c507-4db9-86f2-f4b8e816d59d\"},{\"properties\":{\"roleName\":\"Disk - Restore Operator\",\"type\":\"BuiltInRole\",\"description\":\"Provides permission - to backup vault to perform disk restore.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:18:31.8481619Z\",\"updatedOn\":\"2021-11-11T20:14:56.7408912Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b50d9833-a0cb-478e-945f-707fcc997c13\"},{\"properties\":{\"roleName\":\"Disk - Snapshot Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - permission to backup vault to manage disk snapshots.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Compute/snapshots/delete\",\"Microsoft.Compute/snapshots/write\",\"Microsoft.Compute/snapshots/read\",\"Microsoft.Compute/snapshots/beginGetAccess/action\",\"Microsoft.Compute/snapshots/endGetAccess/action\",\"Microsoft.Compute/disks/beginGetAccess/action\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/write\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Storage/storageAccounts/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2020-12-15T12:18:51.4471411Z\",\"updatedOn\":\"2021-11-11T20:14:56.9158814Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7efff54f-a5b4-42b5-a1c5-5411624893ce\"},{\"properties\":{\"roleName\":\"Microsoft.Kubernetes - connected cluster role\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft.Kubernetes - connected cluster role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Kubernetes/connectedClusters/read\",\"Microsoft.Kubernetes/connectedClusters/write\",\"Microsoft.Kubernetes/connectedClusters/delete\",\"Microsoft.Kubernetes/registeredSubscriptions/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-07T23:57:10.9923232Z\",\"updatedOn\":\"2021-11-11T20:14:58.2039838Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5548b2cf-c94c-4228-90ba-30851930a12f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5548b2cf-c94c-4228-90ba-30851930a12f\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Submission Manager\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to create and manage submissions to Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/delete\",\"Microsoft.SecurityDetonation/chambers/submissions/write\",\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\",\"Microsoft.SecurityDetonation/chambers/submissions/accesskeyview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/adminview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/analystview/read\",\"Microsoft.SecurityDetonation/chambers/submissions/publicview/read\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-18T09:35:36.5739297Z\",\"updatedOn\":\"2021-11-11T20:14:58.3939604Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a37b566d-3efa-4beb-a2f2-698963fa42ce\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a37b566d-3efa-4beb-a2f2-698963fa42ce\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Publisher\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to publish and modify platforms, workflows and toolsets to Security Detonation - Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/platforms/read\",\"Microsoft.SecurityDetonation/chambers/platforms/write\",\"Microsoft.SecurityDetonation/chambers/platforms/delete\",\"Microsoft.SecurityDetonation/chambers/platforms/metadata/read\",\"Microsoft.SecurityDetonation/chambers/workflows/read\",\"Microsoft.SecurityDetonation/chambers/workflows/write\",\"Microsoft.SecurityDetonation/chambers/workflows/delete\",\"Microsoft.SecurityDetonation/chambers/workflows/metadata/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/read\",\"Microsoft.SecurityDetonation/chambers/toolsets/write\",\"Microsoft.SecurityDetonation/chambers/toolsets/delete\",\"Microsoft.SecurityDetonation/chambers/toolsets/metadata/read\",\"Microsoft.SecurityDetonation/chambers/publishRequests/read\",\"Microsoft.SecurityDetonation/chambers/publishRequests/cancel/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-18T11:43:14.0858184Z\",\"updatedOn\":\"2021-11-11T20:14:58.5639749Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/352470b3-6a9c-4686-b503-35deb827e500\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"352470b3-6a9c-4686-b503-35deb827e500\"},{\"properties\":{\"roleName\":\"Collaborative - Runtime Operator\",\"type\":\"BuiltInRole\",\"description\":\"Can manage resources - created by AICS at runtime\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.IndustryDataLifecycle/derivedModels/*\",\"Microsoft.IndustryDataLifecycle/pipelineSets/*\",\"Microsoft.IndustryDataLifecycle/modelMappings/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-19T10:00:27.3464971Z\",\"updatedOn\":\"2021-11-11T20:14:58.7442136Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7a6f0e70-c033-4fb1-828c-08514e5f4102\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7a6f0e70-c033-4fb1-828c-08514e5f4102\"},{\"properties\":{\"roleName\":\"CosmosRestoreOperator\",\"type\":\"BuiltInRole\",\"description\":\"Can - perform restore action for Cosmos DB database account with continuous backup - mode\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action\",\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read\",\"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-21T19:51:35.3884884Z\",\"updatedOn\":\"2021-11-11T20:14:59.4892686Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5432c526-bc82-444a-b7ba-57c5b0b5b34f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5432c526-bc82-444a-b7ba-57c5b0b5b34f\"},{\"properties\":{\"roleName\":\"FHIR - Data Converter\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to convert data from legacy format to FHIR\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/services/fhir/resources/convertData/action\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/convertData/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-01-22T19:39:01.1601069Z\",\"updatedOn\":\"2021-11-11T20:14:59.8605937Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a1705bd2-3a8f-45a5-8683-466fcfd5cc24\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a1705bd2-3a8f-45a5-8683-466fcfd5cc24\"},{\"properties\":{\"roleName\":\"Microsoft - Sentinel Automation Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft - Sentinel Automation Contributor\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Logic/workflows/triggers/read\",\"Microsoft.Logic/workflows/triggers/listCallbackUrl/action\",\"Microsoft.Logic/workflows/runs/read\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/triggers/read\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/triggers/listCallbackUrl/action\",\"Microsoft.Web/sites/hostruntime/webhooks/api/workflows/runs/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-01-24T08:50:52.0382991Z\",\"updatedOn\":\"2022-01-26T09:25:00.4699337Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f4c81013-99ee-4d62-a7ee-b3f1f648599a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f4c81013-99ee-4d62-a7ee-b3f1f648599a\"},{\"properties\":{\"roleName\":\"Quota - Request Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and create - quota requests, get quota request status, and create support tickets.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Capacity/resourceProviders/locations/serviceLimits/read\",\"Microsoft.Capacity/resourceProviders/locations/serviceLimits/write\",\"Microsoft.Capacity/resourceProviders/locations/serviceLimitsRequests/read\",\"Microsoft.Capacity/register/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-02-03T00:06:35.8404575Z\",\"updatedOn\":\"2021-11-11T20:15:00.9583919Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0e5f05e5-9ab9-446b-b98d-1e2157c94125\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0e5f05e5-9ab9-446b-b98d-1e2157c94125\"},{\"properties\":{\"roleName\":\"EventGrid - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage EventGrid - operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-02-08T18:46:18.8999557Z\",\"updatedOn\":\"2021-11-11T20:15:01.6867802Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1e241071-0855-49ea-94dc-649edcd759de\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1e241071-0855-49ea-94dc-649edcd759de\"},{\"properties\":{\"roleName\":\"Security - Detonation Chamber Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allowed - to query submission info and files from Security Detonation Chamber\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SecurityDetonation/chambers/submissions/read\",\"Microsoft.SecurityDetonation/chambers/submissions/files/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-01T14:06:46.2814905Z\",\"updatedOn\":\"2021-11-11T20:15:03.3274090Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/28241645-39f8-410b-ad48-87863e2951d5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"28241645-39f8-410b-ad48-87863e2951d5\"},{\"properties\":{\"roleName\":\"Object - Anchors Account Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - read ingestion jobs for an object anchors account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-02T01:20:47.0279813Z\",\"updatedOn\":\"2021-11-11T20:15:03.5006082Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4a167cdf-cb95-4554-9203-2347fe489bd9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4a167cdf-cb95-4554-9203-2347fe489bd9\"},{\"properties\":{\"roleName\":\"Object - Anchors Account Owner\",\"type\":\"BuiltInRole\",\"description\":\"Provides - user with ingestion capabilities for an object anchors account.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/action\",\"Microsoft.MixedReality/ObjectAnchorsAccounts/ingest/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-02T01:42:02.0014737Z\",\"updatedOn\":\"2021-11-11T20:15:03.6855873Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ca0835dd-bacc-42dd-8ed2-ed5e7230d15b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ca0835dd-bacc-42dd-8ed2-ed5e7230d15b\"},{\"properties\":{\"roleName\":\"WorkloadBuilder - Migration Agent Role\",\"type\":\"BuiltInRole\",\"description\":\"WorkloadBuilder - Migration Agent Role.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.WorkloadBuilder/migrationAgents/Read\",\"Microsoft.WorkloadBuilder/migrationAgents/Write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-03-11T17:07:20.0828003Z\",\"updatedOn\":\"2021-11-11T20:15:04.2456706Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d17ce0a2-0697-43bc-aac5-9113337ab61c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d17ce0a2-0697-43bc-aac5-9113337ab61c\"},{\"properties\":{\"roleName\":\"Web - PubSub Service Owner (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to Azure Web PubSub Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/WebPubSub/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-24T09:10:11.8335180Z\",\"updatedOn\":\"2021-11-16T05:16:52.6491279Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/12cf5a90-567b-43ae-8102-96cf46c7d9b4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"12cf5a90-567b-43ae-8102-96cf46c7d9b4\"},{\"properties\":{\"roleName\":\"Web - PubSub Service Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Read-only - access to Azure Web PubSub Service REST APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.SignalRService/WebPubSub/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-24T09:11:12.6235436Z\",\"updatedOn\":\"2021-11-16T05:17:12.8340953Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/bfb1c7d2-fb1a-466b-b2ba-aee63b92deaf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"bfb1c7d2-fb1a-466b-b2ba-aee63b92deaf\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-25T11:12:12.6786010Z\",\"updatedOn\":\"2021-11-11T20:15:05.3368606Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b5537268-8956-4941-a8f0-646150406f0c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b5537268-8956-4941-a8f0-646150406f0c\"},{\"properties\":{\"roleName\":\"Cognitive - Services Speech User\",\"type\":\"BuiltInRole\",\"description\":\"Access to - the real-time speech recognition and batch transcription APIs, real-time speech - synthesis and long audio APIs, as well as to read the data/test/model/endpoint - for custom models, but can\u2019t create, delete or modify the data/test/model/endpoint - for custom models.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/SpeechServices/*/read\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/read\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/write\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/transcriptions/delete\",\"Microsoft.CognitiveServices/accounts/SpeechServices/*/frontend/action\",\"Microsoft.CognitiveServices/accounts/SpeechServices/text-dependent/*/action\",\"Microsoft.CognitiveServices/accounts/SpeechServices/text-independent/*/action\",\"Microsoft.CognitiveServices/accounts/CustomVoice/*/read\",\"Microsoft.CognitiveServices/accounts/CustomVoice/evaluations/*\",\"Microsoft.CognitiveServices/accounts/CustomVoice/longaudiosynthesis/*\",\"Microsoft.CognitiveServices/accounts/AudioContentCreation/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/CustomVoice/datasets/files/read\",\"Microsoft.CognitiveServices/accounts/CustomVoice/datasets/utterances/read\"]}],\"createdOn\":\"2021-03-30T11:28:27.4339032Z\",\"updatedOn\":\"2022-05-23T15:08:46.2082116Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f2dc8367-1007-4938-bd23-fe263f013447\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f2dc8367-1007-4938-bd23-fe263f013447\"},{\"properties\":{\"roleName\":\"Cognitive - Services Speech Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Full - access to Speech projects, including read, write and delete all entities, - for real-time speech recognition and batch transcription tasks, real-time - speech synthesis and long audio tasks, custom speech and custom voice.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/SpeechServices/*\",\"Microsoft.CognitiveServices/accounts/CustomVoice/*\",\"Microsoft.CognitiveServices/accounts/AudioContentCreation/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-30T11:28:49.7826633Z\",\"updatedOn\":\"2022-05-23T15:08:46.1925859Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0e75ca1e-0464-4b4d-8b93-68208a576181\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0e75ca1e-0464-4b4d-8b93-68208a576181\"},{\"properties\":{\"roleName\":\"Cognitive - Services Face Recognizer\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you perform detect, verify, identify, group, and find similar operations on - Face API. This role does not allow create or delete operations, which makes - it well suited for endpoints that only need inferencing capabilities, following - 'least privilege' best practices.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/Face/detect/action\",\"Microsoft.CognitiveServices/accounts/Face/verify/action\",\"Microsoft.CognitiveServices/accounts/Face/identify/action\",\"Microsoft.CognitiveServices/accounts/Face/group/action\",\"Microsoft.CognitiveServices/accounts/Face/findsimilars/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-03-31T01:51:41.3557295Z\",\"updatedOn\":\"2021-11-11T20:15:05.8818362Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9894cab4-e18a-44aa-828b-cb588cd6f2d7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9894cab4-e18a-44aa-828b-cb588cd6f2d7\"},{\"properties\":{\"roleName\":\"Media - Services Account Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Media Services accounts; read-only access to other - Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/write\",\"Microsoft.Media/mediaservices/delete\",\"Microsoft.Media/mediaservices/privateEndpointConnectionsApproval/action\",\"Microsoft.Media/mediaservices/privateEndpointConnections/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:20:32.2956636Z\",\"updatedOn\":\"2021-11-11T20:15:07.1518844Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/054126f8-9a2b-4f1c-a9ad-eca461f08466\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"054126f8-9a2b-4f1c-a9ad-eca461f08466\"},{\"properties\":{\"roleName\":\"Media - Services Live Events Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Live Events, Assets, Asset Filters, and Streaming - Locators; read-only access to other Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/*\",\"Microsoft.Media/mediaservices/assets/assetfilters/*\",\"Microsoft.Media/mediaservices/streamingLocators/*\",\"Microsoft.Media/mediaservices/liveEvents/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/assets/getEncryptionKey/action\",\"Microsoft.Media/mediaservices/streamingLocators/listContentKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:00.6119555Z\",\"updatedOn\":\"2021-11-11T20:15:07.3318873Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/532bc159-b25e-42c0-969e-a1d439f60d77\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"532bc159-b25e-42c0-969e-a1d439f60d77\"},{\"properties\":{\"roleName\":\"Media - Services Media Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Assets, Asset Filters, Streaming Locators, and Jobs; - read-only access to other Media Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/*\",\"Microsoft.Media/mediaservices/assets/assetfilters/*\",\"Microsoft.Media/mediaservices/streamingLocators/*\",\"Microsoft.Media/mediaservices/transforms/jobs/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/assets/getEncryptionKey/action\",\"Microsoft.Media/mediaservices/streamingLocators/listContentKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:23.2236495Z\",\"updatedOn\":\"2021-11-11T20:15:07.5068487Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e4395492-1534-4db2-bedf-88c14621589c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e4395492-1534-4db2-bedf-88c14621589c\"},{\"properties\":{\"roleName\":\"Media - Services Policy Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Account Filters, Streaming Policies, Content Key - Policies, and Transforms; read-only access to other Media Services resources. - Cannot create Jobs, Assets or Streaming resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/accountFilters/*\",\"Microsoft.Media/mediaservices/streamingPolicies/*\",\"Microsoft.Media/mediaservices/contentKeyPolicies/*\",\"Microsoft.Media/mediaservices/transforms/*\"],\"notActions\":[\"Microsoft.Media/mediaservices/contentKeyPolicies/getPolicyPropertiesWithSecrets/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:21:46.9534330Z\",\"updatedOn\":\"2021-11-11T20:15:07.6968496Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c4bba371-dacd-4a26-b320-7250bca963ae\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c4bba371-dacd-4a26-b320-7250bca963ae\"},{\"properties\":{\"roleName\":\"Media - Services Streaming Endpoints Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Create, - read, modify, and delete Streaming Endpoints; read-only access to other Media - Services resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/metrics/read\",\"Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Media/mediaservices/*/read\",\"Microsoft.Media/mediaservices/assets/listStreamingLocators/action\",\"Microsoft.Media/mediaservices/streamingLocators/listPaths/action\",\"Microsoft.Media/mediaservices/streamingEndpoints/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-19T23:22:04.4594851Z\",\"updatedOn\":\"2021-11-11T20:15:07.8718907Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/99dba123-b5fe-44d5-874c-ced7199a5804\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"99dba123-b5fe-44d5-874c-ced7199a5804\"},{\"properties\":{\"roleName\":\"Stream - Analytics Query Tester\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - perform query testing without creating a stream analytics job first\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.StreamAnalytics/locations/TestQuery/action\",\"Microsoft.StreamAnalytics/locations/OperationResults/read\",\"Microsoft.StreamAnalytics/locations/SampleInput/action\",\"Microsoft.StreamAnalytics/locations/CompileQuery/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-04-20T17:33:24.5727870Z\",\"updatedOn\":\"2021-11-11T20:15:08.0481551Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1ec5b3c1-b17e-4e25-8312-2acb3c3c5abf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1ec5b3c1-b17e-4e25-8312-2acb3c3c5abf\"},{\"properties\":{\"roleName\":\"AnyBuild - Builder\",\"type\":\"BuiltInRole\",\"description\":\"Basic user role for AnyBuild. - This role allows listing of agent information and execution of remote build - capabilities.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AnyBuild/clusters/build/write\",\"Microsoft.AnyBuild/clusters/build/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-20T22:07:00.4963853Z\",\"updatedOn\":\"2021-11-11T20:15:08.4254134Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a2138dac-4907-4679-a376-736901ed8ad8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a2138dac-4907-4679-a376-736901ed8ad8\"},{\"properties\":{\"roleName\":\"IoT - Hub Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full - read access to IoT Hub data-plane properties\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/*/read\",\"Microsoft.Devices/IotHubs/fileUpload/notifications/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T18:03:29.8843192Z\",\"updatedOn\":\"2021-11-11T20:15:08.6054154Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b447c946-2db7-41ec-983d-d8bf3b1c77e3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b447c946-2db7-41ec-983d-d8bf3b1c77e3\"},{\"properties\":{\"roleName\":\"IoT - Hub Twin Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read and write access to all IoT Hub device and module twins.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/twins/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:36:10.1136903Z\",\"updatedOn\":\"2021-11-11T20:15:08.7855063Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/494bdba2-168f-4f31-a0a1-191d2f7c028c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494bdba2-168f-4f31-a0a1-191d2f7c028c\"},{\"properties\":{\"roleName\":\"IoT - Hub Registry Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to IoT Hub device registry.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/devices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:36:47.5532704Z\",\"updatedOn\":\"2021-11-11T20:15:08.9804295Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4ea46cd5-c1b2-4a8e-910b-273211f9ce47\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4ea46cd5-c1b2-4a8e-910b-273211f9ce47\"},{\"properties\":{\"roleName\":\"IoT - Hub Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - full access to IoT Hub data plane operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/IotHubs/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-04-22T20:37:16.9927761Z\",\"updatedOn\":\"2021-11-11T20:15:09.1754206Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4fc6c259-987e-4a07-842e-c321cc9d413f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fc6c259-987e-4a07-842e-c321cc9d413f\"},{\"properties\":{\"roleName\":\"Test - Base Reader\",\"type\":\"BuiltInRole\",\"description\":\"Let you view and - download packages and test results.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.TestBase/testBaseAccounts/packages/testResults/getDownloadUrl/action\",\"Microsoft.TestBase/testBaseAccounts/packages/testResults/getVideoDownloadUrl/action\",\"Microsoft.TestBase/testBaseAccounts/packages/getDownloadUrl/action\",\"Microsoft.TestBase/*/read\",\"Microsoft.TestBase/testBaseAccounts/customerEvents/write\",\"Microsoft.TestBase/testBaseAccounts/customerEvents/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-05-11T23:41:33.1038367Z\",\"updatedOn\":\"2021-11-11T20:15:10.8004347Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/15e0f5a1-3450-4248-8e25-e2afe88a9e85\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"15e0f5a1-3450-4248-8e25-e2afe88a9e85\"},{\"properties\":{\"roleName\":\"Search - Index Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants read - access to Azure Cognitive Search index data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Search/searchServices/indexes/documents/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-01T20:26:13.4850461Z\",\"updatedOn\":\"2021-11-11T20:15:11.3604371Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1407120a-92aa-4202-b7e9-c0e197c71c8f\"},{\"properties\":{\"roleName\":\"Search - Index Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants - full access to Azure Cognitive Search index data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Search/searchServices/indexes/documents/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-01T22:15:16.5388472Z\",\"updatedOn\":\"2021-11-11T20:15:11.5504385Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8ebe5a00-799e-43f5-93ac-243d3dce84a7\"},{\"properties\":{\"roleName\":\"Storage - Table Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows for - read access to Azure Storage tables and entities\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-15T06:40:54.9150717Z\",\"updatedOn\":\"2021-11-11T20:15:12.1005298Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/76199698-9eea-4c19-bc75-cec21354c6b6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76199698-9eea-4c19-bc75-cec21354c6b6\"},{\"properties\":{\"roleName\":\"Storage - Table Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for read, write and delete access to Azure Storage tables and entities\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/read\",\"Microsoft.Storage/storageAccounts/tableServices/tables/write\",\"Microsoft.Storage/storageAccounts/tableServices/tables/delete\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/read\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/write\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/delete\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/add/action\",\"Microsoft.Storage/storageAccounts/tableServices/tables/entities/update/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-15T06:51:59.8207610Z\",\"updatedOn\":\"2021-11-11T20:15:12.2854966Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3\"},{\"properties\":{\"roleName\":\"DICOM - Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Read and search DICOM - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/dicomservices/resources/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-17T20:58:30.1630494Z\",\"updatedOn\":\"2021-11-11T20:15:13.0154948Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e89c7a3c-2f64-4fa1-a847-3e4c9ba4283a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e89c7a3c-2f64-4fa1-a847-3e4c9ba4283a\"},{\"properties\":{\"roleName\":\"DICOM - Data Owner\",\"type\":\"BuiltInRole\",\"description\":\"Full access to DICOM - data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/dicomservices/resources/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-06-17T20:59:30.8659515Z\",\"updatedOn\":\"2021-11-11T20:15:13.1904985Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/58a3b984-7adf-4c20-983a-32417c86fbc8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"58a3b984-7adf-4c20-983a-32417c86fbc8\"},{\"properties\":{\"roleName\":\"EventGrid - Data Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows send access - to event grid events.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.EventGrid/topics/read\",\"Microsoft.EventGrid/domains/read\",\"Microsoft.EventGrid/partnerNamespaces/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.EventGrid/events/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-02T21:55:40.4847495Z\",\"updatedOn\":\"2021-11-11T20:15:13.5605134Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d5a91429-5739-47e2-a06b-3470a27159e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d5a91429-5739-47e2-a06b-3470a27159e7\"},{\"properties\":{\"roleName\":\"Disk - Pool Operator\",\"type\":\"BuiltInRole\",\"description\":\"Used by the StoragePool - Resource Provider to manage Disks added to a Disk Pool.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/disks/write\",\"Microsoft.Compute/disks/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-08T17:26:05.1079972Z\",\"updatedOn\":\"2021-11-11T20:15:13.9154612Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/60fc6e62-5479-42d4-8bf4-67625fcc2840\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"60fc6e62-5479-42d4-8bf4-67625fcc2840\"},{\"properties\":{\"roleName\":\"AzureML - Data Scientist\",\"type\":\"BuiltInRole\",\"description\":\"Can perform all - actions within an Azure Machine Learning workspace, except for creating or - deleting compute resources and modifying the workspace itself.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.MachineLearningServices/workspaces/*/read\",\"Microsoft.MachineLearningServices/workspaces/*/action\",\"Microsoft.MachineLearningServices/workspaces/*/delete\",\"Microsoft.MachineLearningServices/workspaces/*/write\"],\"notActions\":[\"Microsoft.MachineLearningServices/workspaces/delete\",\"Microsoft.MachineLearningServices/workspaces/write\",\"Microsoft.MachineLearningServices/workspaces/computes/*/write\",\"Microsoft.MachineLearningServices/workspaces/computes/*/delete\",\"Microsoft.MachineLearningServices/workspaces/computes/listKeys/action\",\"Microsoft.MachineLearningServices/workspaces/listKeys/action\"],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-14T21:51:06.0361218Z\",\"updatedOn\":\"2021-11-11T20:15:14.6405263Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f6c7c914-8db3-469d-8ca1-694a8f32e121\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f6c7c914-8db3-469d-8ca1-694a8f32e121\"},{\"properties\":{\"roleName\":\"Grafana - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana admin - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-15T21:32:35.3802340Z\",\"updatedOn\":\"2021-11-11T20:15:14.8104670Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22926164-76b3-42b3-bc55-97df8dab3e41\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"22926164-76b3-42b3-bc55-97df8dab3e41\"},{\"properties\":{\"roleName\":\"Azure - Connected SQL Server Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Microsoft.AzureArcData\_service\_role\_to\_access\_the\_resources\_of\_Microsoft.AzureArcData\_stored\_with\_RPSAAS.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureArcData/sqlServerInstances/read\",\"Microsoft.AzureArcData/sqlServerInstances/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-07-19T23:52:15.8885739Z\",\"updatedOn\":\"2021-11-11T20:15:15.1754742Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e8113dce-c529-4d33-91fa-e9b972617508\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e8113dce-c529-4d33-91fa-e9b972617508\"},{\"properties\":{\"roleName\":\"Azure - Relay Sender\",\"type\":\"BuiltInRole\",\"description\":\"Allows for send - access to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*/wcfRelays/read\",\"Microsoft.Relay/*/hybridConnections/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*/send/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T15:37:20.7558643Z\",\"updatedOn\":\"2021-11-11T20:15:15.5454755Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/26baccc8-eea7-41f1-98f4-1762cc7f685d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"26baccc8-eea7-41f1-98f4-1762cc7f685d\"},{\"properties\":{\"roleName\":\"Azure - Relay Owner\",\"type\":\"BuiltInRole\",\"description\":\"Allows for full access - to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T15:44:26.3023126Z\",\"updatedOn\":\"2021-11-11T20:15:15.7154782Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2787bf04-f1f5-4bfe-8383-c8a24483ee38\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2787bf04-f1f5-4bfe-8383-c8a24483ee38\"},{\"properties\":{\"roleName\":\"Azure - Relay Listener\",\"type\":\"BuiltInRole\",\"description\":\"Allows for listen - access to Azure Relay resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Relay/*/wcfRelays/read\",\"Microsoft.Relay/*/hybridConnections/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Relay/*/listen/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-07-20T18:38:03.1437496Z\",\"updatedOn\":\"2021-11-11T20:15:15.9005232Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/26e0b698-aa6d-4085-9386-aadae190014d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"26e0b698-aa6d-4085-9386-aadae190014d\"},{\"properties\":{\"roleName\":\"Grafana - Viewer\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana Viewer - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaViewer/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-05T16:36:18.7737511Z\",\"updatedOn\":\"2021-11-11T20:15:16.9904932Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/60921a7e-fef1-4a43-9b16-a26c52ad4769\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"60921a7e-fef1-4a43-9b16-a26c52ad4769\"},{\"properties\":{\"roleName\":\"Grafana - Editor\",\"type\":\"BuiltInRole\",\"description\":\"Built-in Grafana Editor - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Dashboard/grafana/ActAsGrafanaEditor/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-05T16:37:32.5299593Z\",\"updatedOn\":\"2021-11-11T20:15:17.1805426Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a79a5197-3a5c-4973-a920-486035ffd60f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a79a5197-3a5c-4973-a920-486035ffd60f\"},{\"properties\":{\"roleName\":\"Automation - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Manage azure automation - resources and other resources using azure automation.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Automation/automationAccounts/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Insights/ActionGroups/*\",\"Microsoft.Insights/ActivityLogAlerts/*\",\"Microsoft.Insights/MetricAlerts/*\",\"Microsoft.Insights/ScheduledQueryRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T10:18:19.1054699Z\",\"updatedOn\":\"2021-11-11T20:15:17.7304954Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f353d9bd-d4a6-484e-a77a-8050b599b867\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f353d9bd-d4a6-484e-a77a-8050b599b867\"},{\"properties\":{\"roleName\":\"Kubernetes - Extension Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can create, - update, get, list and delete Kubernetes Extensions, and get extension async - operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.KubernetesConfiguration/extensions/write\",\"Microsoft.KubernetesConfiguration/extensions/read\",\"Microsoft.KubernetesConfiguration/extensions/delete\",\"Microsoft.KubernetesConfiguration/extensions/operations/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:47:50.6828896Z\",\"updatedOn\":\"2021-11-11T20:15:17.9155393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/85cb6faf-e071-4c9b-8136-154b5a04f717\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"85cb6faf-e071-4c9b-8136-154b5a04f717\"},{\"properties\":{\"roleName\":\"Device - Provisioning Service Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full read access to Device Provisioning Service data-plane properties.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/provisioningServices/*/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:53:12.1374732Z\",\"updatedOn\":\"2021-11-11T20:15:18.0905503Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/10745317-c249-44a1-a5ce-3a4353c0bbd8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"10745317-c249-44a1-a5ce-3a4353c0bbd8\"},{\"properties\":{\"roleName\":\"Device - Provisioning Service Data Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allows - for full access to Device Provisioning Service data-plane operations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Devices/provisioningServices/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-09T19:54:03.2783227Z\",\"updatedOn\":\"2021-11-11T20:15:18.2605302Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dfce44e4-17b7-4bd1-a6d1-04996ec95633\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dfce44e4-17b7-4bd1-a6d1-04996ec95633\"},{\"properties\":{\"roleName\":\"CodeSigning - Certificate Profile Signer\",\"type\":\"BuiltInRole\",\"description\":\"Sign - files with a certificate profile. This role is in preview and subject to change.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CodeSigning/certificateProfiles/Sign/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-16T23:17:53.0002693Z\",\"updatedOn\":\"2021-11-11T20:15:18.6105679Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2837e146-70d7-4cfd-ad55-7efa6464f958\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2837e146-70d7-4cfd-ad55-7efa6464f958\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Service Registry Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Service Registry\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/eurekaService/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-20T04:40:17.9785063Z\",\"updatedOn\":\"2021-11-11T20:15:18.9655101Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cff1b556-2399-4e7e-856d-a8f754be7b65\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cff1b556-2399-4e7e-856d-a8f754be7b65\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Service Registry Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read, write and delete access to Azure Spring Cloud Service Registry\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/eurekaService/read\",\"Microsoft.AppPlatform/Spring/eurekaService/write\",\"Microsoft.AppPlatform/Spring/eurekaService/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-20T04:42:38.9153779Z\",\"updatedOn\":\"2021-11-11T20:15:19.1405497Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f5880b48-c26d-48be-b172-7927bfa1c8f1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f5880b48-c26d-48be-b172-7927bfa1c8f1\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Config Server Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read access to Azure Spring Cloud Config Server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/configService/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-08-26T01:50:51.5123701Z\",\"updatedOn\":\"2021-11-11T20:15:19.3155517Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d04c6db6-4947-4782-9e91-30a88feb7be7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d04c6db6-4947-4782-9e91-30a88feb7be7\"},{\"properties\":{\"roleName\":\"Azure - Spring Cloud Config Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Allow - read, write and delete access to Azure Spring Cloud Config Server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AppPlatform/Spring/configService/read\",\"Microsoft.AppPlatform/Spring/configService/write\",\"Microsoft.AppPlatform/Spring/configService/delete\"],\"notDataActions\":[]}],\"createdOn\":\"2021-09-06T02:30:47.8611580Z\",\"updatedOn\":\"2021-11-11T20:15:20.0405208Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a06f5c24-21a7-4e1a-aa2b-f19eb6684f5b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a06f5c24-21a7-4e1a-aa2b-f19eb6684f5b\"},{\"properties\":{\"roleName\":\"Azure - VM Managed identities restore Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Azure - VM Managed identities restore Contributors are allowed to perform Azure VM - Restores with managed identities both user and system\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-09-13T05:27:59.2180214Z\",\"updatedOn\":\"2021-11-11T20:15:20.5805266Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6ae96244-5829-4925-a7d3-5975537d91dd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6ae96244-5829-4925-a7d3-5975537d91dd\"},{\"properties\":{\"roleName\":\"Azure - Maps Search and Render Data Reader\",\"type\":\"BuiltInRole\",\"description\":\"Grants - access to very limited set of data APIs for common visual web SDK scenarios. - Specifically, render and search data APIs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Maps/accounts/services/render/read\",\"Microsoft.Maps/accounts/services/search/read\"],\"notDataActions\":[]}],\"createdOn\":\"2021-10-01T22:17:50.5178931Z\",\"updatedOn\":\"2021-11-11T20:15:22.0455410Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6be48352-4f82-47c9-ad5e-0acacefdb005\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6be48352-4f82-47c9-ad5e-0acacefdb005\"},{\"properties\":{\"roleName\":\"Azure - Maps Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Grants access - all Azure Maps resource management.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Maps/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-01T22:19:13.1357904Z\",\"updatedOn\":\"2021-11-11T20:15:22.2455414Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/dba33070-676a-4fb0-87fa-064dc56ff7fb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dba33070-676a-4fb0-87fa-064dc56ff7fb\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware VM Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Arc - VMware VM Contributor has permissions to perform all VM actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/virtualmachines/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-18T20:19:53.0087024Z\",\"updatedOn\":\"2021-11-11T20:15:23.8706020Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b748a06d-6150-4f8a-aaa9-ce3940cd96cb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b748a06d-6150-4f8a-aaa9-ce3940cd96cb\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Private Cloud User\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc VMware Private Cloud User has permissions to use the VMware cloud resources - to deploy VMs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.ConnectedVMwarevSphere/virtualnetworks/join/action\",\"Microsoft.ConnectedVMwarevSphere/virtualnetworks/Read\",\"Microsoft.ConnectedVMwarevSphere/virtualmachinetemplates/clone/action\",\"Microsoft.ConnectedVMwarevSphere/virtualmachinetemplates/Read\",\"Microsoft.ConnectedVMwarevSphere/resourcepools/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/resourcepools/Read\",\"Microsoft.ConnectedVMwarevSphere/hosts/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/hosts/Read\",\"Microsoft.ConnectedVMwarevSphere/clusters/deploy/action\",\"Microsoft.ConnectedVMwarevSphere/clusters/Read\",\"Microsoft.ConnectedVMwarevSphere/datastores/allocateSpace/action\",\"Microsoft.ConnectedVMwarevSphere/datastores/Read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-10-18T20:20:46.5105444Z\",\"updatedOn\":\"2021-11-11T20:15:24.0456080Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ce551c02-7c42-47e0-9deb-e3b6fc3a9a83\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ce551c02-7c42-47e0-9deb-e3b6fc3a9a83\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Administrator role \",\"type\":\"BuiltInRole\",\"description\":\"Arc - VMware VM Contributor has permissions to perform all connected VMwarevSphere - actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-01T17:12:42.6172725Z\",\"updatedOn\":\"2021-11-11T20:15:25.1275776Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ddc140ed-e463-4246-9145-7c664192013f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ddc140ed-e463-4246-9145-7c664192013f\"},{\"properties\":{\"roleName\":\"Azure - Arc VMware Private Clouds Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc VMware Private Clouds Onboarding role has permissions to provision all - the required resources for onboard and deboard vCenter instances to Azure.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ConnectedVMwarevSphere/vcenters/Write\",\"Microsoft.ConnectedVMwarevSphere/vcenters/Read\",\"Microsoft.ConnectedVMwarevSphere/vcenters/Delete\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.KubernetesConfiguration/extensions/Write\",\"Microsoft.KubernetesConfiguration/extensions/Read\",\"Microsoft.KubernetesConfiguration/extensions/Delete\",\"Microsoft.KubernetesConfiguration/operations/read\",\"Microsoft.ExtendedLocation/customLocations/Read\",\"Microsoft.ExtendedLocation/customLocations/Write\",\"Microsoft.ExtendedLocation/customLocations/Delete\",\"Microsoft.ExtendedLocation/customLocations/deploy/action\",\"Microsoft.ResourceConnector/appliances/Read\",\"Microsoft.ResourceConnector/appliances/Write\",\"Microsoft.ResourceConnector/appliances/Delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-01T22:18:08.4480747Z\",\"updatedOn\":\"2022-01-14T02:51:08.7237156Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/67d33e57-3129-45e6-bb0b-7cc522f762fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"67d33e57-3129-45e6-bb0b-7cc522f762fa\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Owner\",\"type\":\"BuiltInRole\",\"description\":\" Has access - to all Read, Test, Write, Deploy and Delete functions under LUIS\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T03:28:02.9611800Z\",\"updatedOn\":\"2021-11-11T20:15:25.4884913Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f72c8140-2111-481c-87ff-72b910f6e3f8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f72c8140-2111-481c-87ff-72b910f6e3f8\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Reader\",\"type\":\"BuiltInRole\",\"description\":\"Has - access to Read and Test functions under Language portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*/read\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*/read\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/projects/export/action\",\"Microsoft.CognitiveServices/accounts/Language/*/read\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/export/action\",\"Microsoft.CognitiveServices/accounts/Language/query-text/action\",\"Microsoft.CognitiveServices/accounts/Language/query-knowledgebases/action\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\"]}],\"createdOn\":\"2021-11-04T03:29:14.7643336Z\",\"updatedOn\":\"2022-03-29T18:02:09.1378280Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7628b7b8-a8b2-4cdc-b46f-e9b35248918e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7628b7b8-a8b2-4cdc-b46f-e9b35248918e\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Writer\",\"type\":\"BuiltInRole\",\"description\":\" Has - access to all Read, Test, and Write functions under Language Portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*\",\"Microsoft.CognitiveServices/accounts/Language/*\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/projects/publish/action\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/projects/deployments/write\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/delete\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/write\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/delete\",\"Microsoft.CognitiveServices/accounts/Language/*/projects/deployments/swap/action\"]}],\"createdOn\":\"2021-11-04T03:29:39.5761019Z\",\"updatedOn\":\"2022-03-29T18:03:23.4902754Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f2310ca1-dc64-4889-bb49-c8e0fa3d47a8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f2310ca1-dc64-4889-bb49-c8e0fa3d47a8\"},{\"properties\":{\"roleName\":\"Cognitive - Services Language Owner\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to all Read, Test, Write, Deploy and Delete functions under Language portal\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.CognitiveServices/accounts/listkeys/action\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LanguageAuthoring/*\",\"Microsoft.CognitiveServices/accounts/ConversationalLanguageUnderstanding/*\",\"Microsoft.CognitiveServices/accounts/Language/*\",\"Microsoft.CognitiveServices/accounts/TextAnalytics/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/TextAnalytics/QnaMaker/*\"]}],\"createdOn\":\"2021-11-04T03:30:07.6173528Z\",\"updatedOn\":\"2022-03-29T18:03:46.5617184Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f07febfe-79bc-46b1-8b37-790e26e6e498\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f07febfe-79bc-46b1-8b37-790e26e6e498\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Reader\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to Read and Test functions under LUIS.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*/read\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/testdatasets/write\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T03:30:31.2704834Z\",\"updatedOn\":\"2021-11-11T20:15:26.2134821Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18e81cdc-4e98-4e29-a639-e7d10c5a6226\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18e81cdc-4e98-4e29-a639-e7d10c5a6226\"},{\"properties\":{\"roleName\":\"Cognitive - Services LUIS Writer\",\"type\":\"BuiltInRole\",\"description\":\"Has access - to all Read, Test, and Write functions under LUIS\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.CognitiveServices/*/read\",\"Microsoft.Authorization/roleAssignments/read\",\"Microsoft.Authorization/roleDefinitions/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/*\"],\"notDataActions\":[\"Microsoft.CognitiveServices/accounts/LUIS/apps/delete\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/move/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/publish/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/settings/write\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/azureaccounts/action\",\"Microsoft.CognitiveServices/accounts/LUIS/apps/azureaccounts/delete\"]}],\"createdOn\":\"2021-11-04T03:31:12.1580052Z\",\"updatedOn\":\"2021-11-11T20:15:26.3934523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6322a993-d5c9-4bed-b113-e49bbea25b27\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6322a993-d5c9-4bed-b113-e49bbea25b27\"},{\"properties\":{\"roleName\":\"PlayFab - Reader\",\"type\":\"BuiltInRole\",\"description\":\"Provides read access to - PlayFab resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.PlayFab/*/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-04T23:26:57.2248605Z\",\"updatedOn\":\"2021-11-11T20:15:26.5784834Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a9a19cc5-31f4-447c-901f-56c0bb18fcaf\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a9a19cc5-31f4-447c-901f-56c0bb18fcaf\"},{\"properties\":{\"roleName\":\"Load - Test Contributor\",\"type\":\"BuiltInRole\",\"description\":\"View, create, - update, delete and execute load tests. View and list load test resources but - can not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/loadtests/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-09T08:11:21.0936461Z\",\"updatedOn\":\"2021-11-11T20:15:27.1189225Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/749a398d-560b-491b-bb21-08924219302e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749a398d-560b-491b-bb21-08924219302e\"},{\"properties\":{\"roleName\":\"Load - Test Owner\",\"type\":\"BuiltInRole\",\"description\":\"Execute all operations - on load test resources and load tests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/*\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-09T08:12:24.5500195Z\",\"updatedOn\":\"2021-11-11T20:15:27.2897153Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/45bb0b16-2f0c-4e78-afaa-a07599b003f6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"45bb0b16-2f0c-4e78-afaa-a07599b003f6\"},{\"properties\":{\"roleName\":\"PlayFab - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides contributor - access to PlayFab resources\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.PlayFab/*/read\",\"Microsoft.PlayFab/*/write\",\"Microsoft.PlayFab/*/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T00:55:37.3326276Z\",\"updatedOn\":\"2021-11-11T20:15:28.0547167Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0c8b84dc-067c-4039-9615-fa1a4b77c726\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0c8b84dc-067c-4039-9615-fa1a4b77c726\"},{\"properties\":{\"roleName\":\"Load - Test Reader\",\"type\":\"BuiltInRole\",\"description\":\"View and list all - load tests and load test resources but can not make any changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LoadTestService/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/alertRules/*\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LoadTestService/loadtests/readTest/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T06:14:08.3903105Z\",\"updatedOn\":\"2021-11-11T20:15:28.2297181Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3ae3fb29-0000-4ccd-bf80-542e7b26e081\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"3ae3fb29-0000-4ccd-bf80-542e7b26e081\"},{\"properties\":{\"roleName\":\"Cognitive - Services Immersive Reader User\",\"type\":\"BuiltInRole\",\"description\":\"Provides - access to create Immersive Reader sessions and call APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.CognitiveServices/accounts/ImmersiveReader/getcontentmodelforreader/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-10T19:52:14.4487503Z\",\"updatedOn\":\"2021-11-11T20:15:28.4146975Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b2de6794-95db-4659-8781-7e080d3f2b9d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b2de6794-95db-4659-8781-7e080d3f2b9d\"},{\"properties\":{\"roleName\":\"Lab - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"The lab - services contributor role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LabServices/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:51:03.3308981Z\",\"updatedOn\":\"2021-11-11T20:15:28.7792013Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/f69b8690-cc87-41d6-b77a-a4bc3c0a966f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f69b8690-cc87-41d6-b77a-a4bc3c0a966f\"},{\"properties\":{\"roleName\":\"Lab - Services Reader\",\"type\":\"BuiltInRole\",\"description\":\"The lab services - reader role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.LabServices/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:55:30.4208618Z\",\"updatedOn\":\"2021-11-11T20:15:28.9592032Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/2a5c394f-5eb7-4d4f-9c8e-e8eae39faebc\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a5c394f-5eb7-4d4f-9c8e-e8eae39faebc\"},{\"properties\":{\"roleName\":\"Lab - Assistant\",\"type\":\"BuiltInRole\",\"description\":\"The lab assistant role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:56:10.4295443Z\",\"updatedOn\":\"2021-11-11T20:15:29.1442530Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/ce40b423-cede-4313-a93f-9b28290b72e1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ce40b423-cede-4313-a93f-9b28290b72e1\"},{\"properties\":{\"roleName\":\"Lab - Operator\",\"type\":\"BuiltInRole\",\"description\":\"The lab operator role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/publish/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/schedules/write\",\"Microsoft.LabServices/labs/schedules/delete\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/write\",\"Microsoft.LabServices/labs/users/delete\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/labs/virtualMachines/resetPassword/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:56:41.9942935Z\",\"updatedOn\":\"2021-11-11T20:15:29.3242664Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a36e6959-b6be-4b12-8e9f-ef4b474d304d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a36e6959-b6be-4b12-8e9f-ef4b474d304d\"},{\"properties\":{\"roleName\":\"Lab - Contributor\",\"type\":\"BuiltInRole\",\"description\":\"The lab contributor - role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.LabServices/labPlans/images/read\",\"Microsoft.LabServices/labPlans/read\",\"Microsoft.LabServices/labPlans/saveImage/action\",\"Microsoft.LabServices/labs/read\",\"Microsoft.LabServices/labs/write\",\"Microsoft.LabServices/labs/delete\",\"Microsoft.LabServices/labs/publish/action\",\"Microsoft.LabServices/labs/syncGroup/action\",\"Microsoft.LabServices/labs/schedules/read\",\"Microsoft.LabServices/labs/schedules/write\",\"Microsoft.LabServices/labs/schedules/delete\",\"Microsoft.LabServices/labs/users/read\",\"Microsoft.LabServices/labs/users/write\",\"Microsoft.LabServices/labs/users/delete\",\"Microsoft.LabServices/labs/users/invite/action\",\"Microsoft.LabServices/labs/virtualMachines/read\",\"Microsoft.LabServices/labs/virtualMachines/start/action\",\"Microsoft.LabServices/labs/virtualMachines/stop/action\",\"Microsoft.LabServices/labs/virtualMachines/reimage/action\",\"Microsoft.LabServices/labs/virtualMachines/redeploy/action\",\"Microsoft.LabServices/labs/virtualMachines/resetPassword/action\",\"Microsoft.LabServices/locations/usages/read\",\"Microsoft.LabServices/skus/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.LabServices/labPlans/createLab/action\"],\"notDataActions\":[]}],\"createdOn\":\"2021-11-11T00:57:05.9018065Z\",\"updatedOn\":\"2021-11-11T20:15:29.4992096Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/5daaa2af-1fe8-407c-9122-bba179798270\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5daaa2af-1fe8-407c-9122-bba179798270\"},{\"properties\":{\"roleName\":\"Chamber - User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything - under your HPC Workbench chamber, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HpcWorkbench/instances/chambers/*/read\",\"Microsoft.HpcWorkbench/instances/chambers/workloads/*\",\"Microsoft.HpcWorkbench/instances/chambers/getUploadUri/action\",\"Microsoft.HpcWorkbench/instances/consortiums/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-12-15T20:51:06.2119764Z\",\"updatedOn\":\"2022-01-27T04:54:22.9559555Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4447db05-44ed-4da3-ae60-6cbece780e32\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4447db05-44ed-4da3-ae60-6cbece780e32\"},{\"properties\":{\"roleName\":\"Chamber - Admin\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything - under your HPC Workbench chamber.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HpcWorkbench/*/read\",\"Microsoft.HpcWorkbench/instances/chambers/*\",\"Microsoft.HpcWorkbench/instances/consortiums/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2021-12-15T20:53:14.4428297Z\",\"updatedOn\":\"2022-01-20T05:04:48.3694000Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4e9b8407-af2e-495b-ae54-bb60a55b1b5a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4e9b8407-af2e-495b-ae54-bb60a55b1b5a\"},{\"properties\":{\"roleName\":\"Windows - Admin Center Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"Let's - you manage the OS of your resource via Windows Admin Center as an administrator.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridCompute/machines/extensions/*\",\"Microsoft.HybridCompute/machines/upgradeExtensions/action\",\"Microsoft.HybridCompute/operations/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkWatchers/securityGroupView/action\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/write\",\"Microsoft.HybridConnectivity/endpoints/write\",\"Microsoft.HybridConnectivity/endpoints/read\",\"Microsoft.HybridConnectivity/endpoints/listManagedProxyDetails/action\"],\"notActions\":[],\"dataActions\":[\"Microsoft.HybridCompute/machines/WACLoginAsAdmin/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-01-12T00:51:19.5581155Z\",\"updatedOn\":\"2022-05-03T20:59:23.1425428Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a6333a3e-0164-44c3-b281-7a577aff287f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a6333a3e-0164-44c3-b281-7a577aff287f\"},{\"properties\":{\"roleName\":\"Guest - Configuration Resource Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets - you read, write Guest Configuration Resource.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.GuestConfiguration/guestConfigurationAssignments/write\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/read\",\"Microsoft.GuestConfiguration/guestConfigurationAssignments/*/read\",\"Microsoft.Resources/deployments/*\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-01-13T21:31:41.9626667Z\",\"updatedOn\":\"2022-02-10T19:22:44.9057916Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/088ab73d-1256-47ae-bea9-9de8e7131f31\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"088ab73d-1256-47ae-bea9-9de8e7131f31\"},{\"properties\":{\"roleName\":\"Azure - Kubernetes Service Policy Add-on Deployment\",\"type\":\"BuiltInRole\",\"description\":\"Deploy - the Azure Policy add-on on Azure Kubernetes Service clusters\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Resources/deployments/*\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/publicIPPrefixes/join/action\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Compute/diskEncryptionSets/read\",\"Microsoft.Compute/proximityPlacementGroups/write\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-07T20:51:48.5662807Z\",\"updatedOn\":\"2022-03-15T19:19:25.6182575Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18ed5180-3e48-46fd-8541-4ea054d57064\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18ed5180-3e48-46fd-8541-4ea054d57064\"},{\"properties\":{\"roleName\":\"Domain - Services Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view Azure - AD Domain Services and related network configurations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.AAD/domainServices/read\",\"Microsoft.AAD/domainServices/oucontainer/read\",\"Microsoft.AAD/domainServices/OutboundNetworkDependenciesEndpoints/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/logDefinitions/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Network/azureFirewalls/read\",\"Microsoft.Network/ddosProtectionPlans/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/loadBalancers/*/read\",\"Microsoft.Network/natGateways/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/routes/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-15T19:38:46.9043170Z\",\"updatedOn\":\"2022-02-23T00:41:52.2906373Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/361898ef-9ed1-48c2-849c-a832951106bb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"361898ef-9ed1-48c2-849c-a832951106bb\"},{\"properties\":{\"roleName\":\"Domain - Services Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage - Azure AD Domain Services and related network configurations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.AAD/register/action\",\"Microsoft.AAD/unregister/action\",\"Microsoft.AAD/domainServices/read\",\"Microsoft.AAD/domainServices/write\",\"Microsoft.AAD/domainServices/delete\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/diagnosticSettings/write\",\"Microsoft.AAD/domainServices/providers/Microsoft.Insights/logDefinitions/read\",\"Microsoft.AAD/domainServices/oucontainer/read\",\"Microsoft.AAD/domainServices/oucontainer/write\",\"Microsoft.AAD/domainServices/oucontainer/delete\",\"Microsoft.Network/register/action\",\"Microsoft.Network/unregister/action\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/write\",\"Microsoft.Network/virtualNetworks/delete\",\"Microsoft.Network/virtualNetworks/peer/action\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/write\",\"Microsoft.Network/virtualNetworks/subnets/delete\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write\",\"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/delete\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/diagnosticSettings/read\",\"Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/metricDefinitions/read\",\"Microsoft.Network/azureFirewalls/read\",\"Microsoft.Network/ddosProtectionPlans/read\",\"Microsoft.Network/ddosProtectionPlans/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/loadBalancers/delete\",\"Microsoft.Network/loadBalancers/*/read\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/natGateways/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/networkInterfaces/delete\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/networkSecurityGroups/write\",\"Microsoft.Network/networkSecurityGroups/delete\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/securityRules/read\",\"Microsoft.Network/networkSecurityGroups/securityRules/write\",\"Microsoft.Network/networkSecurityGroups/securityRules/delete\",\"Microsoft.Network/routeTables/read\",\"Microsoft.Network/routeTables/write\",\"Microsoft.Network/routeTables/delete\",\"Microsoft.Network/routeTables/join/action\",\"Microsoft.Network/routeTables/routes/read\",\"Microsoft.Network/routeTables/routes/write\",\"Microsoft.Network/routeTables/routes/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-15T19:40:22.3943189Z\",\"updatedOn\":\"2022-02-23T00:43:08.3207354Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/eeaeda52-9324-47f6-8069-5d5bade478b2\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"eeaeda52-9324-47f6-8069-5d5bade478b2\"},{\"properties\":{\"roleName\":\"DNS - Resolver Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you - manage DNS resolver resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/dnsResolvers/read\",\"Microsoft.Network/dnsResolvers/write\",\"Microsoft.Network/dnsResolvers/delete\",\"Microsoft.Network/dnsResolvers/join/action\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/read\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/write\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/delete\",\"Microsoft.Network/dnsResolvers/inboundEndpoints/join/action\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/read\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/write\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/delete\",\"Microsoft.Network/dnsResolvers/outboundEndpoints/join/action\",\"Microsoft.Network/dnsForwardingRulesets/read\",\"Microsoft.Network/dnsForwardingRulesets/write\",\"Microsoft.Network/dnsForwardingRulesets/delete\",\"Microsoft.Network/dnsForwardingRulesets/join/action\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/read\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/write\",\"Microsoft.Network/dnsForwardingRulesets/forwardingRules/delete\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/read\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/write\",\"Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/delete\",\"Microsoft.Network/locations/dnsResolverOperationResults/read\",\"Microsoft.Network/locations/dnsResolverOperationStatuses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/subnets/read\",\"Microsoft.Network/virtualNetworks/subnets/write\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/join/action\",\"Microsoft.Network/virtualNetworks/joinLoadBalancer/action\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action\",\"Microsoft.Network/natGateways/join/action\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/routeTables/join/action\",\"Microsoft.Network/serviceEndpointPolicies/join/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-02-16T23:25:04.4308795Z\",\"updatedOn\":\"2022-03-11T20:54:15.0659022Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/0f2ebee7-ffd4-4fc0-b3b7-664099fdad5d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"0f2ebee7-ffd4-4fc0-b3b7-664099fdad5d\"},{\"properties\":{\"roleName\":\"Data - Operator for Managed Disks\",\"type\":\"BuiltInRole\",\"description\":\"Provides - permissions to upload data to empty managed disks, read, or export data of - managed disks (not attached to running VMs) and snapshots using SAS URIs and - Azure AD authentication.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.Compute/disks/download/action\",\"Microsoft.Compute/disks/upload/action\",\"Microsoft.Compute/snapshots/download/action\",\"Microsoft.Compute/snapshots/upload/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-01T01:28:16.0862180Z\",\"updatedOn\":\"2022-03-01T01:28:16.0862180Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/959f8984-c045-4866-89c7-12bf9737be2e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"959f8984-c045-4866-89c7-12bf9737be2e\"},{\"properties\":{\"roleName\":\"AgFood - Platform Sensor Partner Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - contribute access to manage sensor related entities in AgFood Platform Service\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.AgFoodPlatform/sensorPartnerScope/*\"],\"notDataActions\":[\"Microsoft.AgFoodPlatform/sensorPartnerScope/sensors/delete\"]}],\"createdOn\":\"2022-03-09T04:58:18.4183393Z\",\"updatedOn\":\"2022-03-09T04:58:18.4183393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6b77f0a0-0d89-41cc-acd1-579c22c17a67\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6b77f0a0-0d89-41cc-acd1-579c22c17a67\"},{\"properties\":{\"roleName\":\"Compute - Gallery Sharing Admin\",\"type\":\"BuiltInRole\",\"description\":\"This role - allows user to share gallery to another subscription/tenant or share it to - the public.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Compute/galleries/share/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-10T00:33:23.4134686Z\",\"updatedOn\":\"2022-03-25T20:36:59.8004672Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/1ef6a3be-d0ac-425d-8c01-acb62866290b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1ef6a3be-d0ac-425d-8c01-acb62866290b\"},{\"properties\":{\"roleName\":\"Scheduled - Patching Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Provides - access to manage maintenance configurations with maintenance scope InGuestPatch - and corresponding configuration assignments\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Maintenance/maintenanceConfigurations/read\",\"Microsoft.Maintenance/maintenanceConfigurations/write\",\"Microsoft.Maintenance/maintenanceConfigurations/delete\",\"Microsoft.Maintenance/configurationAssignments/read\",\"Microsoft.Maintenance/configurationAssignments/write\",\"Microsoft.Maintenance/configurationAssignments/delete\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/read\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/write\",\"Microsoft.Maintenance/configurationAssignments/maintenanceScope/InGuestPatch/delete\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/read\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/write\",\"Microsoft.Maintenance/maintenanceConfigurations/maintenanceScope/InGuestPatch/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-03-21T10:27:57.4429306Z\",\"updatedOn\":\"2022-04-13T08:04:30.2446363Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/cd08ab90-6b14-449c-ad9a-8f8e549482c6\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cd08ab90-6b14-449c-ad9a-8f8e549482c6\"},{\"properties\":{\"roleName\":\"DevCenter - Dev Box User\",\"type\":\"BuiltInRole\",\"description\":\"Provides access - to create and manage dev boxes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Fidalgo/projects/read\",\"Microsoft.Fidalgo/projects/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[],\"dataActions\":[\"Microsoft.Fidalgo/projects/users/virtualMachines/userStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userGetRdpFileContent/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userDelete/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-30T19:23:03.9063898Z\",\"updatedOn\":\"2022-03-30T19:23:03.9063898Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/45d50f46-0b78-4001-a660-4198cbe8cd05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"45d50f46-0b78-4001-a660-4198cbe8cd05\"},{\"properties\":{\"roleName\":\"DevCenter - Project Admin\",\"type\":\"BuiltInRole\",\"description\":\"Provides access - to manage project resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Fidalgo/projects/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\"],\"notActions\":[\"Microsoft.Fidalgo/projects/write\",\"Microsoft.Fidalgo/projects/delete\"],\"dataActions\":[\"Microsoft.Fidalgo/projects/users/virtualMachines/adminStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/adminDelete/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStop/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userStart/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userGetRdpFileContent/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userRead/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userWrite/action\",\"Microsoft.Fidalgo/projects/users/virtualMachines/userDelete/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-03-31T19:42:53.1063939Z\",\"updatedOn\":\"2022-03-31T19:42:53.1063939Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/331c37c6-af14-46d9-b9f4-e1909e1b95a0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"331c37c6-af14-46d9-b9f4-e1909e1b95a0\"},{\"properties\":{\"roleName\":\"Virtual - Machine Local User Login\",\"type\":\"BuiltInRole\",\"description\":\"View - Virtual Machines in the portal and login as a local user configured on the - arc server\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.HybridCompute/machines/*/read\",\"Microsoft.HybridConnectivity/endpoints/listCredentials/action\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-06T23:57:08.4960876Z\",\"updatedOn\":\"2022-04-16T18:55:22.3226785Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/602da2ba-a5c2-41da-b01d-5360126ab525\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"602da2ba-a5c2-41da-b01d-5360126ab525\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm VM Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Arc - ScVmm VM Contributor has permissions to perform all VM actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.scvmm/virtualmachines/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:19:43.4978394Z\",\"updatedOn\":\"2022-05-05T20:21:52.7065718Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e582369a-e17b-42a5-b10c-874c387c530b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e582369a-e17b-42a5-b10c-874c387c530b\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Private Clouds Onboarding\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc ScVmm Private Clouds Onboarding role has permissions to provision all - the required resources for onboard and deboard vmm server instances to Azure.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"microsoft.scvmm/vmmservers/Read\",\"microsoft.scvmm/vmmservers/Write\",\"microsoft.scvmm/vmmservers/Delete\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:20:22.0259391Z\",\"updatedOn\":\"2022-05-05T20:21:42.0160634Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/6aac74c4-6311-40d2-bbdd-7d01e7c6e3a9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6aac74c4-6311-40d2-bbdd-7d01e7c6e3a9\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Private Cloud User\",\"type\":\"BuiltInRole\",\"description\":\"Azure - Arc ScVmm Private Cloud User has permissions to use the ScVmm resources to - deploy VMs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"microsoft.scvmm/virtualnetworks/join/action\",\"microsoft.scvmm/virtualnetworks/Read\",\"microsoft.scvmm/virtualmachinetemplates/clone/action\",\"microsoft.scvmm/virtualmachinetemplates/Read\",\"microsoft.scvmm/clouds/deploy/action\",\"microsoft.scvmm/clouds/Read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:21:31.8768952Z\",\"updatedOn\":\"2022-05-05T20:22:10.3489590Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c0781e91-8102-4553-8951-97c6d4243cda\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c0781e91-8102-4553-8951-97c6d4243cda\"},{\"properties\":{\"roleName\":\"Azure - Arc ScVmm Administrator role\",\"type\":\"BuiltInRole\",\"description\":\"Arc - ScVmm VM Administrator has permissions to perform all ScVmm actions.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ScVmm/*\",\"Microsoft.Insights/AlertRules/Write\",\"Microsoft.Insights/AlertRules/Delete\",\"Microsoft.Insights/AlertRules/Read\",\"Microsoft.Insights/AlertRules/Activated/Action\",\"Microsoft.Insights/AlertRules/Resolved/Action\",\"Microsoft.Insights/AlertRules/Throttled/Action\",\"Microsoft.Insights/AlertRules/Incidents/Read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/deployments/write\",\"Microsoft.Resources/deployments/delete\",\"Microsoft.Resources/deployments/cancel/action\",\"Microsoft.Resources/deployments/validate/action\",\"Microsoft.Resources/deployments/whatIf/action\",\"Microsoft.Resources/deployments/exportTemplate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/operationstatuses/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/write\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/subscriptions/operationresults/read\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-04-13T17:23:34.5429371Z\",\"updatedOn\":\"2022-05-05T20:23:15.0154893Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/a92dfd61-77f9-4aec-a531-19858b406c87\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a92dfd61-77f9-4aec-a531-19858b406c87\"},{\"properties\":{\"roleName\":\"FHIR - Data Importer\",\"type\":\"BuiltInRole\",\"description\":\"Role allows user - or principal to read and import FHIR Data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[],\"notActions\":[],\"dataActions\":[\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/read\",\"Microsoft.HealthcareApis/workspaces/fhirservices/resources/import/action\"],\"notDataActions\":[]}],\"createdOn\":\"2022-04-19T07:59:47.5802132Z\",\"updatedOn\":\"2022-04-21T09:08:14.6059986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4465e953-8ced-4406-a58e-0f6e3f3b530b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4465e953-8ced-4406-a58e-0f6e3f3b530b\"},{\"properties\":{\"roleName\":\"API - Management Developer Portal Content Editor\",\"type\":\"BuiltInRole\",\"description\":\"Can - customize the developer portal, edit its content, and publish it.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/portalRevisions/read\",\"Microsoft.ApiManagement/service/portalRevisions/write\",\"Microsoft.ApiManagement/service/contentTypes/read\",\"Microsoft.ApiManagement/service/contentTypes/delete\",\"Microsoft.ApiManagement/service/contentTypes/write\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/read\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/write\",\"Microsoft.ApiManagement/service/contentTypes/contentItems/delete\"],\"notActions\":[],\"dataActions\":[],\"notDataActions\":[]}],\"createdOn\":\"2022-05-06T17:39:17.7581243Z\",\"updatedOn\":\"2022-05-10T21:30:34.1382013Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/c031e6a8-4391-4de0-8d69-4706a7ed3729\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c031e6a8-4391-4de0-8d69-4706a7ed3729\"}]}" - headers: - cache-control: - - no-cache - content-length: - - '397418' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:32 GMT - expires: - - '-1' - pragma: - - no-cache - set-cookie: - - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"ids": ["0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7"], "types": ["user", "group", - "servicePrincipal", "directoryObjectPartnerReference"]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - role assignment create - Connection: - - keep-alive - Content-Length: - - '132' - Content-Type: - - application/json - ParameterSetName: - - --assignee --role --scope - User-Agent: - - python/3.8.5 (Windows-10-10.0.22000-SP0) AZURECLI/2.36.0 - method: POST - uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds - response: - body: - string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"e9a0c741-6333-46f7-86fe-5192f5d4bbc5","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-05-24T11:50:03Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["e9a0c741-6333-46f7-86fe-5192f5d4bbc5","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"7DC4E6931C5F85E71F4A5BEB5A59EE2FA1D9FA86","displayName":"CN=e9a0c741-6333-46f7-86fe-5192f5d4bbc5","endDateTime":"2022-08-22T11:45:00Z","key":null,"keyId":"77543e9f-1f8a-416d-948a-0e477d25855d","startDateTime":"2022-05-24T11:45:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' - headers: - cache-control: - - no-cache - content-length: - - '1730' - content-type: - - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 - date: - - Tue, 24 May 2022 12:12:33 GMT - location: - - https://graph.microsoft.com - odata-version: - - '4.0' - request-id: - - 8cc86e0d-c584-4340-8fb2-0c295f890ce2 - strict-transport-security: - - max-age=31536000 - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-ms-ags-diagnostic: - - '{"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF00002516"}}' - x-ms-resource-unit: - - '3' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection resource-guard create - Connection: - - keep-alive - ParameterSetName: - - -g -n - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","name":"sarath-rg","type":"Microsoft.Resources/resourceGroups","location":"centraluseuap","tags":{},"properties":{"provisioningState":"Succeeded"}}' - headers: - cache-control: - - no-cache - content-length: - - '232' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:12:33 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"location": "centraluseuap", "properties": {}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection resource-guard create - Connection: - - keep-alive - Content-Length: - - '47' - Content-Type: - - application/json - ParameterSetName: - - -g -n - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 - response: - body: - string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupSecurityPIN/action","requestResourceType":"Microsoft.DataProtection/resourceGuards/getBackupSecurityPINRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":[],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' - headers: - cache-control: - - no-cache - content-length: - - '1931' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:41 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '99' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection resource-guard list - Connection: - - keep-alive - ParameterSetName: - - -g - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards?api-version=2022-04-01 - response: - body: - string: '{"value":[{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupSecurityPIN/action","requestResourceType":"Microsoft.DataProtection/resourceGuards/getBackupSecurityPINRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":[],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/akneema-resource-guardd","name":"akneema-resource-guardd","type":"Microsoft.DataProtection/resourceGuards"},{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupSecurityPIN/action","requestResourceType":"Microsoft.DataProtection/resourceGuards/getBackupSecurityPINRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":[],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}]}' - headers: - cache-control: - - no-cache - content-length: - - '3875' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:43 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection resource-guard update - Connection: - - keep-alive - ParameterSetName: - - -g -n --resource-type --critical-operation-exclusion-list - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 - response: - body: - string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupSecurityPIN/action","requestResourceType":"Microsoft.DataProtection/resourceGuards/getBackupSecurityPINRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":[],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' - headers: - cache-control: - - no-cache - content-length: - - '1931' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:45 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"location": "centraluseuap", "properties": {"vaultCriticalOperationExclusionList": - ["Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete", - "Microsoft.RecoveryServices/vaults/backupSecurityPIN/action"]}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection resource-guard update - Connection: - - keep-alive - Content-Length: - - '242' - Content-Type: - - application/json - ParameterSetName: - - -g -n --resource-type --critical-operation-exclusion-list - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 - response: - body: - string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":["Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","Microsoft.RecoveryServices/vaults/backupSecurityPIN/action"],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' - headers: - cache-control: - - no-cache - content-length: - - '1691' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:46 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '99' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection resource-guard list-protected-operations - Connection: - - keep-alive - ParameterSetName: - - -g -n --resource-type - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 - response: - body: - string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":["Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","Microsoft.RecoveryServices/vaults/backupSecurityPIN/action"],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' - headers: - cache-control: - - no-cache - content-length: - - '1691' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:50 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"datasourceTypes": ["Microsoft.Compute/disks"], "objectType": - "BackupPolicy", "policyRules": [{"name": "BackupHourly", "objectType": "AzureBackupRule", - "backupParameters": {"objectType": "AzureBackupParams", "backupType": "Incremental"}, - "dataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}, - "trigger": {"objectType": "ScheduleBasedTriggerContext", "schedule": {"repeatingTimeIntervals": - ["R/2020-04-05T13:00:00+00:00/PT4H"]}, "taggingCriteria": [{"isDefault": true, - "taggingPriority": 99, "tagInfo": {"tagName": "Default"}}]}}, {"name": "Default", - "objectType": "AzureRetentionRule", "isDefault": true, "lifecycles": [{"deleteAfter": - {"duration": "P7D", "objectType": "AbsoluteDeleteOption"}, "sourceDataStore": - {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}}]}]}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-policy create - Connection: - - keep-alive - Content-Length: - - '840' - Content-Type: - - application/json - ParameterSetName: - - -n --policy -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy?api-version=2022-04-01 - response: - body: - string: '{"properties":{"policyRules":[{"backupParameters":{"backupType":"Incremental","objectType":"AzureBackupParams"},"trigger":{"schedule":{"repeatingTimeIntervals":["R/2020-04-05T13:00:00+00:00/PT4H"]},"taggingCriteria":[{"tagInfo":{"tagName":"Default","id":"Default_"},"taggingPriority":99,"isDefault":true}],"objectType":"ScheduleBasedTriggerContext"},"dataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"},"name":"BackupHourly","objectType":"AzureBackupRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P7D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Compute/disks"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","name":"diskpolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' - headers: - cache-control: - - no-cache - content-length: - - '1065' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:54 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-policy show - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --query - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy?api-version=2022-04-01 - response: - body: - string: '{"properties":{"policyRules":[{"backupParameters":{"backupType":"Incremental","objectType":"AzureBackupParams"},"trigger":{"schedule":{"repeatingTimeIntervals":["R/2020-04-05T13:00:00+00:00/PT4H"]},"taggingCriteria":[{"tagInfo":{"tagName":"Default","id":"Default_"},"taggingPriority":99,"isDefault":true}],"objectType":"ScheduleBasedTriggerContext"},"dataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"},"name":"BackupHourly","objectType":"AzureBackupRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P7D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Compute/disks"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","name":"diskpolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' - headers: - cache-control: - - no-cache - content-length: - - '1065' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:56 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"datasourceTypes": ["Microsoft.Compute/disks"], "objectType": - "BackupPolicy", "policyRules": [{"name": "BackupHourly", "objectType": "AzureBackupRule", - "backupParameters": {"objectType": "AzureBackupParams", "backupType": "Incremental"}, - "dataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}, - "trigger": {"objectType": "ScheduleBasedTriggerContext", "schedule": {"repeatingTimeIntervals": - ["R/2021-05-02T05:30:00+00:00/PT6H"]}, "taggingCriteria": [{"isDefault": true, - "taggingPriority": 99, "tagInfo": {"tagName": "Default"}}, {"criteria": [{"objectType": - "ScheduleBasedBackupCriteria", "absoluteCriteria": ["FirstOfDay"]}], "isDefault": - false, "taggingPriority": 25, "tagInfo": {"tagName": "Daily"}}]}}, {"name": - "Default", "objectType": "AzureRetentionRule", "isDefault": true, "lifecycles": - [{"deleteAfter": {"duration": "P7D", "objectType": "AbsoluteDeleteOption"}, - "sourceDataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}}]}, - {"name": "Daily", "objectType": "AzureRetentionRule", "isDefault": false, "lifecycles": - [{"deleteAfter": {"duration": "P12D", "objectType": "AbsoluteDeleteOption"}, - "sourceDataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}}]}]}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-policy create - Connection: - - keep-alive - Content-Length: - - '1276' - Content-Type: - - application/json - ParameterSetName: - - -n --policy -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskhourlypolicy?api-version=2022-04-01 - response: - body: - string: '{"properties":{"policyRules":[{"backupParameters":{"backupType":"Incremental","objectType":"AzureBackupParams"},"trigger":{"schedule":{"repeatingTimeIntervals":["R/2021-05-02T05:30:00+00:00/PT6H"]},"taggingCriteria":[{"tagInfo":{"tagName":"Default","id":"Default_"},"taggingPriority":99,"isDefault":true},{"tagInfo":{"tagName":"Daily","id":"Daily_"},"taggingPriority":25,"isDefault":false,"criteria":[{"absoluteCriteria":["FirstOfDay"],"objectType":"ScheduleBasedBackupCriteria"}]}],"objectType":"ScheduleBasedTriggerContext"},"dataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"},"name":"BackupHourly","objectType":"AzureBackupRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P7D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P12D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":false,"name":"Daily","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Compute/disks"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskhourlypolicy","name":"diskhourlypolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' - headers: - cache-control: - - no-cache - content-length: - - '1498' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:12:57 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.Compute/disks", - "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new", - "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new", "resourceType": - "Microsoft.Compute/disks", "resourceUri": ""}, "policyInfo": {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy", - "policyParameters": {"dataStoreParametersList": [{"objectType": "AzureOperationalStoreParameters", - "dataStoreType": "OperationalStore", "resourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}}, - "objectType": "BackupInstance"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance create - Connection: - - keep-alive - Content-Length: - - '866' - Content-Type: - - application/json - ParameterSetName: - - -g --vault-name --backup-instance - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/validateForBackup?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:12:59 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance create - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --backup-instance - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==","status":"Inprogress","startTime":"2022-05-24T12:12:59.8270687Z","endTime":"0001-01-01T00:00:00Z"}' - headers: - cache-control: - - no-cache - content-length: - - '477' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:13:10 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance create - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --backup-instance - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==","status":"Succeeded","startTime":"2022-05-24T12:12:59.8270687Z","endTime":"2022-05-24T12:13:31Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:13:40 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance create - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --backup-instance - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==?api-version=2022-04-01 - response: - body: - string: '{"objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2U1ZGY5M2ViLTNjOGQtNGNiOS05MTM4LTI3ZjAwYWNkMmE0MQ==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '41' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:13:41 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"dataSourceInfo": {"datasourceType": "Microsoft.Compute/disks", - "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new", - "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new", "resourceType": - "Microsoft.Compute/disks", "resourceUri": ""}, "policyInfo": {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy", - "policyParameters": {"dataStoreParametersList": [{"objectType": "AzureOperationalStoreParameters", - "dataStoreType": "OperationalStore", "resourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}}, - "objectType": "BackupInstance"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance create - Connection: - - keep-alive - Content-Length: - - '862' - Content-Type: - - application/json - ParameterSetName: - - -g --vault-name --backup-instance - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 - response: - body: - string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Provisioning","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzk4MzRkYWRlLTA5MTItNDhjZi04OTM5LWRhNmIwNzE4OGMzNw==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '1392' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:13:42 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - x-powered-by: - - ASP.NET - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance create - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --backup-instance - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzk4MzRkYWRlLTA5MTItNDhjZi04OTM5LWRhNmIwNzE4OGMzNw==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzk4MzRkYWRlLTA5MTItNDhjZi04OTM5LWRhNmIwNzE4OGMzNw==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzk4MzRkYWRlLTA5MTItNDhjZi04OTM5LWRhNmIwNzE4OGMzNw==","status":"Succeeded","startTime":"2022-05-24T12:13:43.0946079Z","endTime":"2022-05-24T12:13:45Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:13:58 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance create - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --backup-instance - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 - response: - body: - string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' - headers: - cache-control: - - no-cache - content-length: - - '1389' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:13:59 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance list - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --query - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances?api-version=2022-04-01 - response: - body: - string: '{"value":[{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}]}' - headers: - cache-control: - - no-cache - content-length: - - '1401' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:14:03 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance list - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --query - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances?api-version=2022-04-01 - response: - body: - string: '{"value":[{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}]}' - headers: - cache-control: - - no-cache - content-length: - - '1401' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:14:15 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance list - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name --query - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances?api-version=2022-04-01 - response: - body: - string: '{"value":[{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionConfigured"},"currentProtectionState":"ProtectionConfigured","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}]}' - headers: - cache-control: - - no-cache - content-length: - - '1399' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:14:30 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance stop-protection - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/stopProtection?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2YyOWQ3ODJhLThlMTMtNDkwYS04NGVlLTRlNTczNTNkM2JmOA==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:15:06 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2YyOWQ3ODJhLThlMTMtNDkwYS04NGVlLTRlNTczNTNkM2JmOA==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance stop-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2YyOWQ3ODJhLThlMTMtNDkwYS04NGVlLTRlNTczNTNkM2JmOA==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2YyOWQ3ODJhLThlMTMtNDkwYS04NGVlLTRlNTczNTNkM2JmOA==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2YyOWQ3ODJhLThlMTMtNDkwYS04NGVlLTRlNTczNTNkM2JmOA==","status":"Succeeded","startTime":"2022-05-24T12:15:06.5854996Z","endTime":"2022-05-24T12:15:19Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:15:21 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance stop-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2YyOWQ3ODJhLThlMTMtNDkwYS04NGVlLTRlNTczNTNkM2JmOA==?api-version=2022-04-01 - response: - body: - string: '{"objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2YyOWQ3ODJhLThlMTMtNDkwYS04NGVlLTRlNTczNTNkM2JmOA==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '41' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:15:22 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance show - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 - response: - body: - string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionStopped"},"currentProtectionState":"ProtectionStopped","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' - headers: - cache-control: - - no-cache - content-length: - - '1381' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:15:26 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/resumeProtection?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:15:28 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==","status":"Inprogress","startTime":"2022-05-24T12:15:28.8575077Z","endTime":"0001-01-01T00:00:00Z"}' - headers: - cache-control: - - no-cache - content-length: - - '477' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:15:46 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==","status":"Succeeded","startTime":"2022-05-24T12:15:28.8575077Z","endTime":"2022-05-24T12:16:01Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:16:16 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==?api-version=2022-04-01 - response: - body: - string: '{"objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2IyZGNiYzUzLWM2ZDAtNDUwNy1hZGQ2LWViNGFmNzBkYzY2MA==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '41' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:16:16 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance show - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 - response: - body: - string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionConfigured"},"currentProtectionState":"ProtectionConfigured","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' - headers: - cache-control: - - no-cache - content-length: - - '1387' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:16:23 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance suspend-backup - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/suspendBackups?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2ZkZWUzOGNiLTI3NTUtNDZlNS04MmNhLWZhZjJjNmY4MmZlMQ==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:16:29 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2ZkZWUzOGNiLTI3NTUtNDZlNS04MmNhLWZhZjJjNmY4MmZlMQ==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance suspend-backup - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2ZkZWUzOGNiLTI3NTUtNDZlNS04MmNhLWZhZjJjNmY4MmZlMQ==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2ZkZWUzOGNiLTI3NTUtNDZlNS04MmNhLWZhZjJjNmY4MmZlMQ==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2ZkZWUzOGNiLTI3NTUtNDZlNS04MmNhLWZhZjJjNmY4MmZlMQ==","status":"Succeeded","startTime":"2022-05-24T12:16:29.1363431Z","endTime":"2022-05-24T12:16:41Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:16:45 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance suspend-backup - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2ZkZWUzOGNiLTI3NTUtNDZlNS04MmNhLWZhZjJjNmY4MmZlMQ==?api-version=2022-04-01 - response: - body: - string: '{"objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2ZkZWUzOGNiLTI3NTUtNDZlNS04MmNhLWZhZjJjNmY4MmZlMQ==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '41' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:16:45 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance show - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 - response: - body: - string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"BackupsSuspended"},"currentProtectionState":"BackupsSuspended","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' - headers: - cache-control: - - no-cache - content-length: - - '1379' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:16:50 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/resumeProtection?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:16:53 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==","status":"Inprogress","startTime":"2022-05-24T12:16:53.5611604Z","endTime":"0001-01-01T00:00:00Z"}' - headers: - cache-control: - - no-cache - content-length: - - '477' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:17:08 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==","status":"Succeeded","startTime":"2022-05-24T12:16:53.5611604Z","endTime":"2022-05-24T12:17:26Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:17:40 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance resume-protection - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==?api-version=2022-04-01 - response: - body: - string: '{"objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhmZTc4YTdkLWZhODUtNDU0Ny05ODk5LWQ3ODNkM2ZhNTZhMw==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '41' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:17:40 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance show - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 - response: - body: - string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionConfigured"},"currentProtectionState":"ProtectionConfigured","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' - headers: - cache-control: - - no-cache - content-length: - - '1387' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:17:46 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"backupRuleOptions": {"ruleName": "BackupHourly", "triggerOption": {"retentionTagOverride": - "Default"}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance adhoc-backup - Connection: - - keep-alive - Content-Length: - - '105' - Content-Type: - - application/json - ParameterSetName: - - -n -g --vault-name --rule-name --retention-tag-override - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/backup?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzFmNmUzNDdjLWY0MTItNDdjMC1iMGIxLTRkOTA2NDQ3OTQ1Mg==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:17:52 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzFmNmUzNDdjLWY0MTItNDdjMC1iMGIxLTRkOTA2NDQ3OTQ1Mg==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance adhoc-backup - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name --rule-name --retention-tag-override - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzFmNmUzNDdjLWY0MTItNDdjMC1iMGIxLTRkOTA2NDQ3OTQ1Mg==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzFmNmUzNDdjLWY0MTItNDdjMC1iMGIxLTRkOTA2NDQ3OTQ1Mg==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzFmNmUzNDdjLWY0MTItNDdjMC1iMGIxLTRkOTA2NDQ3OTQ1Mg==","status":"Succeeded","startTime":"2022-05-24T12:17:52.6819272Z","endTime":"2022-05-24T12:17:56Z","properties":{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","objectType":"OperationJobExtendedInfo"}}' - headers: - cache-control: - - no-cache - content-length: - - '733' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:18:23 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance adhoc-backup - Connection: - - keep-alive - ParameterSetName: - - -n -g --vault-name --rule-name --retention-tag-override - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzFmNmUzNDdjLWY0MTItNDdjMC1iMGIxLTRkOTA2NDQ3OTQ1Mg==?api-version=2022-04-01 - response: - body: - string: '{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzFmNmUzNDdjLWY0MTItNDdjMC1iMGIxLTRkOTA2NDQ3OTQ1Mg==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '243' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:18:23 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:18:39 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:18:51 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:19:04 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:19:16 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:19:32 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:19:48 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:20:03 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:20:19 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:20:33 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:20:49 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:21:05 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:21:20 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:21:33 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:21:45 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:22:01 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:22:14 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A17%3A54.9824534Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2101' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:22:25 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"855a4783-db5b-11ec-9917-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":"OperationalTierStore","progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A22%3A28.8779179Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:17:52.9912904Z","endTime":"2022-05-24T12:22:28.3617378Z","dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"Completed","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT4M35.3704474S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"0001-01-01T00:00:00Z"},"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger - Backup","taskStatus":"Completed","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/ea9c729c-2f59-44ff-ad12-e30a4705fcf3","name":"ea9c729c-2f59-44ff-ad12-e30a4705fcf3","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2247' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:22:41 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection recovery-point list - Connection: - - keep-alive - ParameterSetName: - - --backup-instance-name -g --vault-name - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/recoveryPoints?api-version=2022-04-01&$filter= - response: - body: - string: '{"value":[{"properties":{"objectType":"AzureBackupDiscreteRecoveryPoint","recoveryPointId":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z","recoveryPointType":"Incremental","friendlyName":"270dfaf2-511e-4cbb-818b-5a1710e01fc5","recoveryPointDataStoresDetails":[{"id":"9d927e2e-3675-46c3-ae7a-23218aa625b1","type":"OperationalStore","creationTime":"2022-05-24T12:19:47.5880771Z","expiryTime":null,"metaData":null,"visible":true,"state":"COMMITTED","rehydrationExpiryTime":null,"rehydrationStatus":null}],"retentionTagName":"Default","retentionTagVersion":"637889912225789592","policyName":"diskpolicy","policyVersion":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/recoveryPoints/e566380dfa7f48bcbb086d5a96387a41","name":"e566380dfa7f48bcbb086d5a96387a41","type":"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints"}]}' - headers: - cache-control: - - no-cache - content-length: - - '1071' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:22:46 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"restoreRequestObject": {"objectType": "AzureBackupRecoveryPointBasedRestoreRequest", - "restoreTargetInfo": {"objectType": "RestoreTargetInfo", "recoveryOption": "FailIfExists", - "restoreLocation": "centraluseuap", "datasourceInfo": {"datasourceType": "Microsoft.Compute/disks", - "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored", - "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new-restored", - "resourceType": "Microsoft.Compute/disks", "resourceUri": ""}}, "sourceDataStoreType": - "OperationalStore", "recoveryPointId": "e566380dfa7f48bcbb086d5a96387a41"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance validate-for-restore - Connection: - - keep-alive - Content-Length: - - '706' - Content-Type: - - application/json - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/validateRestore?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:22:49 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance validate-for-restore - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==","status":"Inprogress","startTime":"2022-05-24T12:22:49.4386343Z","endTime":"0001-01-01T00:00:00Z"}' - headers: - cache-control: - - no-cache - content-length: - - '477' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:23:00 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance validate-for-restore - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==","status":"Inprogress","startTime":"2022-05-24T12:22:49.4386343Z","endTime":"0001-01-01T00:00:00Z"}' - headers: - cache-control: - - no-cache - content-length: - - '477' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:23:30 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance validate-for-restore - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==","status":"Succeeded","startTime":"2022-05-24T12:22:49.4386343Z","endTime":"2022-05-24T12:23:52Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:24:01 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance validate-for-restore - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==?api-version=2022-04-01 - response: - body: - string: '{"objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzhjMWQ3ZmUxLTM2N2YtNDhkOS04NmNhLWQ0MmM3MWM3ZjU3Ng==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '41' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:24:01 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"objectType": "AzureBackupRecoveryPointBasedRestoreRequest", "restoreTargetInfo": - {"objectType": "RestoreTargetInfo", "recoveryOption": "FailIfExists", "restoreLocation": - "centraluseuap", "datasourceInfo": {"datasourceType": "Microsoft.Compute/disks", - "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored", - "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new-restored", - "resourceType": "Microsoft.Compute/disks", "resourceUri": ""}}, "sourceDataStoreType": - "OperationalStore", "recoveryPointId": "e566380dfa7f48bcbb086d5a96387a41"}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance restore trigger - Connection: - - keep-alive - Content-Length: - - '680' - Content-Type: - - application/json - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/restore?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2Y2MmJiY2JiLWU5ZmYtNDk1Yi1iMjg3LWUzNzA5YjA2N2JkNQ==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:24:09 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2Y2MmJiY2JiLWU5ZmYtNDk1Yi1iMjg3LWUzNzA5YjA2N2JkNQ==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance restore trigger - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2Y2MmJiY2JiLWU5ZmYtNDk1Yi1iMjg3LWUzNzA5YjA2N2JkNQ==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2Y2MmJiY2JiLWU5ZmYtNDk1Yi1iMjg3LWUzNzA5YjA2N2JkNQ==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2Y2MmJiY2JiLWU5ZmYtNDk1Yi1iMjg3LWUzNzA5YjA2N2JkNQ==","status":"Succeeded","startTime":"2022-05-24T12:24:09.0690372Z","endTime":"2022-05-24T12:24:11Z","properties":{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","objectType":"OperationJobExtendedInfo"}}' - headers: - cache-control: - - no-cache - content-length: - - '733' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:24:39 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance restore trigger - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --restore-request-object - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2Y2MmJiY2JiLWU5ZmYtNDk1Yi1iMjg3LWUzNzA5YjA2N2JkNQ==?api-version=2022-04-01 - response: - body: - string: '{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","objectType":"OperationJobExtendedInfo"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlO2Y2MmJiY2JiLWU5ZmYtNDk1Yi1iMjg3LWUzNzA5YjA2N2JkNQ==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '243' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:24:40 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:24:52 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:25:08 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:25:25 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:25:38 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:25:49 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:26:04 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:26:18 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:26:34 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:26:47 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:26:59 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:27:11 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:27:26 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:27:39 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:27:50 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:28:02 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:28:18 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:28:33 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:28:49 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:29:03 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:29:17 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:29:29 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:29:43 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:29:55 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A24%3A09.8744698Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2318' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:30:08 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection job show - Connection: - - keep-alive - ParameterSetName: - - --ids - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad?api-version=2022-04-01 - response: - body: - string: '{"properties":{"activityID":"6585dc27-db5c-11ec-8f68-c8f750f92764","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-05-24T12%3A30%3A13.9589231Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-05-24T12:24:09.4879792Z","endTime":"2022-05-24T12:30:13.6888353Z","dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"Completed","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT6M4.2008561S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"e566380dfa7f48bcbb086d5a96387a41","recoveryPointTime":"2022-05-24T12:19:47.5880771Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger - Restore","taskStatus":"Completed","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/407a5f43-56ab-417d-ae67-a80687210bad","name":"407a5f43-56ab-417d-ae67-a80687210bad","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' - headers: - cache-control: - - no-cache - content-length: - - '2352' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:30:21 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -g --vault-name -n --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:30:23 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance delete - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==","status":"Inprogress","startTime":"2022-05-24T12:30:23.1786149Z","endTime":"0001-01-01T00:00:00Z"}' - headers: - cache-control: - - no-cache - content-length: - - '477' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:30:53 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance delete - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==","status":"Inprogress","startTime":"2022-05-24T12:30:23.1786149Z","endTime":"0001-01-01T00:00:00Z"}' - headers: - cache-control: - - no-cache - content-length: - - '477' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:31:24 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-instance delete - Connection: - - keep-alive - ParameterSetName: - - -g --vault-name -n --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==?api-version=2022-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==","name":"MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzU4ZDQxMjk4LTZkYjYtNDJmMS1hMmNkLWNkZGUzMDRlZDQ2NA==","status":"Succeeded","startTime":"2022-05-24T12:30:23.1786149Z","endTime":"2022-05-24T12:31:29Z"}' - headers: - cache-control: - - no-cache - content-length: - - '476' - content-type: - - application/json - date: - - Tue, 24 May 2022 12:31:55 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection resource-guard delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -g -n -y - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 - response: - body: - string: '' - headers: - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:32:03 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '99' - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - dataprotection backup-vault delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -g --vault-name --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzZjZDljZTgwLWFlNmYtNDhlZC1hMjA2LWU4NTIwZjNjMTc4ZA==?api-version=2022-04-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:32:09 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/MGIxN2E0MGYtODBkMy00NDFmLWE0YzUtMDMwNTg1ODRlZTFlOzZjZDljZTgwLWFlNmYtNDhlZC1hMjA2LWU4NTIwZjNjMTc4ZA==?api-version=2022-04-01 - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '99' - x-powered-by: - - ASP.NET - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - disk delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - --name --resource-group --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-compute/26.1.0 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new?api-version=2021-12-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/99d203a8-3324-459a-9a58-4a6e3f4b4224?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2021-12-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:32:15 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/99d203a8-3324-459a-9a58-4a6e3f4b4224?p=814d4482-f746-4961-be2b-b822c13856d2&monitor=true&api-version=2021-12-01 - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/DeleteDisks3Min;2998,Microsoft.Compute/DeleteDisks30Min;23997 - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - disk delete - Connection: - - keep-alive - ParameterSetName: - - --name --resource-group --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-compute/26.1.0 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/99d203a8-3324-459a-9a58-4a6e3f4b4224?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2021-12-01 - response: - body: - string: "{\r\n \"startTime\": \"2022-05-24T12:32:15.3740329+00:00\",\r\n \"endTime\": - \"2022-05-24T12:32:15.5771198+00:00\",\r\n \"status\": \"Succeeded\",\r\n - \ \"name\": \"99d203a8-3324-459a-9a58-4a6e3f4b4224\"\r\n}" - headers: - cache-control: - - no-cache - content-length: - - '184' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:32:45 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/GetOperation3Min;49996,Microsoft.Compute/GetOperation30Min;399977 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - disk delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - --name --resource-group --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-compute/26.1.0 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored?api-version=2021-12-01 - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/5e610093-aabf-482f-ac18-5c6b9b7e83a4?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2021-12-01 - cache-control: - - no-cache - content-length: - - '0' - date: - - Tue, 24 May 2022 12:32:47 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/5e610093-aabf-482f-ac18-5c6b9b7e83a4?p=814d4482-f746-4961-be2b-b822c13856d2&monitor=true&api-version=2021-12-01 - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/DeleteDisks3Min;2997,Microsoft.Compute/DeleteDisks30Min;23996 - x-ms-ratelimit-remaining-subscription-deletes: - - '14998' - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - disk delete - Connection: - - keep-alive - ParameterSetName: - - --name --resource-group --yes - User-Agent: - - AZURECLI/2.36.0 azsdk-python-azure-mgmt-compute/26.1.0 Python/3.8.5 (Windows-10-10.0.22000-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/5e610093-aabf-482f-ac18-5c6b9b7e83a4?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2021-12-01 - response: - body: - string: "{\r\n \"startTime\": \"2022-05-24T12:32:48.3116135+00:00\",\r\n \"endTime\": - \"2022-05-24T12:32:48.5459652+00:00\",\r\n \"status\": \"Succeeded\",\r\n - \ \"name\": \"5e610093-aabf-482f-ac18-5c6b9b7e83a4\"\r\n}" - headers: - cache-control: - - no-cache - content-length: - - '184' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 24 May 2022 12:33:18 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/GetOperation3Min;49994,Microsoft.Compute/GetOperation30Min;399975 - status: - code: 200 - message: OK -version: 1 +interactions: +- request: + body: '{"identity": {"type": "SystemAssigned"}, "location": "centraluseuap", "properties": + {"storageSettings": [{"datastoreType": "VaultStore", "type": "LocallyRedundant"}]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault create + Connection: + - keep-alive + Content-Length: + - '167' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name -l --storage-settings --type + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","properties":{"provisioningState":"Provisioning","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg4ZWNiMmI4LWY2YjMtNDYzOS1hODBhLWI5MDQ4ZWYxYWUxOQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '421' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:15:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-arm-resource-system-data: + - '{"createdBy":"t-smayya@microsoft.com","createdByType":"User","createdAt":"2022-06-21T12:15:51.6014841Z","lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:15:51.6014841Z"}' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -l --storage-settings --type + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg4ZWNiMmI4LWY2YjMtNDYzOS1hODBhLWI5MDQ4ZWYxYWUxOQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg4ZWNiMmI4LWY2YjMtNDYzOS1hODBhLWI5MDQ4ZWYxYWUxOQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg4ZWNiMmI4LWY2YjMtNDYzOS1hODBhLWI5MDQ4ZWYxYWUxOQ==","status":"Succeeded","startTime":"2022-06-21T12:15:52.4672437Z","endTime":"2022-06-21T12:15:53Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:16:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -l --storage-settings --type + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' + headers: + cache-control: + - no-cache + content-length: + - '558' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:16:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"monitoringSettings": {"azureMonitorAlertSettings": {"alertsForAllJobFailures": + "Enabled"}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault update + Connection: + - keep-alive + Content-Length: + - '109' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --azure-monitor-alerts-for-job-failures + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzQ5NDQzODdhLTdlMjctNGNmZC1hMmQ1LWM1M2JlMTYyMGVhZQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:16:04 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzQ5NDQzODdhLTdlMjctNGNmZC1hMmQ1LWM1M2JlMTYyMGVhZQ==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-arm-resource-system-data: + - '{"lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:16:04.2011039Z"}' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault update + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --azure-monitor-alerts-for-job-failures + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzQ5NDQzODdhLTdlMjctNGNmZC1hMmQ1LWM1M2JlMTYyMGVhZQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzQ5NDQzODdhLTdlMjctNGNmZC1hMmQ1LWM1M2JlMTYyMGVhZQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzQ5NDQzODdhLTdlMjctNGNmZC1hMmQ1LWM1M2JlMTYyMGVhZQ==","status":"Succeeded","startTime":"2022-06-21T12:16:04.5133217Z","endTime":"2022-06-21T12:16:05Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:16:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '996' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault update + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --azure-monitor-alerts-for-job-failures + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false,"monitoringSettings":{"azureMonitorAlertSettings":{"alertsForAllJobFailures":"Enabled"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' + headers: + cache-control: + - no-cache + content-length: + - '647' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:16:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"monitoringSettings": {"azureMonitorAlertSettings": {"alertsForAllJobFailures": + "Disabled"}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault update + Connection: + - keep-alive + Content-Length: + - '110' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --azure-monitor-alerts-for-job-failures + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2UzMTNiOGJlLWNhN2EtNGMxMC04MGI5LTkzOTUyN2QxZmIyMA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:16:16 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2UzMTNiOGJlLWNhN2EtNGMxMC04MGI5LTkzOTUyN2QxZmIyMA==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-arm-resource-system-data: + - '{"lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:16:16.065224Z"}' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault update + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --azure-monitor-alerts-for-job-failures + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2UzMTNiOGJlLWNhN2EtNGMxMC04MGI5LTkzOTUyN2QxZmIyMA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2UzMTNiOGJlLWNhN2EtNGMxMC04MGI5LTkzOTUyN2QxZmIyMA==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2UzMTNiOGJlLWNhN2EtNGMxMC04MGI5LTkzOTUyN2QxZmIyMA==","status":"Succeeded","startTime":"2022-06-21T12:16:16.3195423Z","endTime":"2022-06-21T12:16:17Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:16:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault update + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --azure-monitor-alerts-for-job-failures + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false,"monitoringSettings":{"azureMonitorAlertSettings":{"alertsForAllJobFailures":"Disabled"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' + headers: + cache-control: + - no-cache + content-length: + - '648' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:16:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - disk create + Connection: + - keep-alive + ParameterSetName: + - -g -n --size-gb + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","name":"sarath-rg","type":"Microsoft.Resources/resourceGroups","location":"centraluseuap","tags":{},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '232' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:16:28 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "tags": {}, "sku": {"name": "Premium_LRS"}, + "properties": {"hyperVGeneration": "V1", "creationData": {"createOption": "Empty"}, + "diskSizeGB": 4}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - disk create + Connection: + - keep-alive + Content-Length: + - '175' + Content-Type: + - application/json + ParameterSetName: + - -g -n --size-gb + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.1.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new?api-version=2022-03-02 + response: + body: + string: "{\r\n \"name\": \"cli-test-disk-new\",\r\n \"location\": \"centraluseuap\",\r\n + \ \"tags\": {},\r\n \"sku\": {\r\n \"name\": \"Premium_LRS\"\r\n },\r\n + \ \"properties\": {\r\n \"hyperVGeneration\": \"V1\",\r\n \"creationData\": + {\r\n \"createOption\": \"Empty\"\r\n },\r\n \"diskSizeGB\": 4,\r\n + \ \"provisioningState\": \"Updating\",\r\n \"isArmResource\": true\r\n + \ }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/e9f0032a-7049-4d20-a5ad-2347b411a0f1?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2022-03-02 + cache-control: + - no-cache + content-length: + - '332' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:16:30 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/e9f0032a-7049-4d20-a5ad-2347b411a0f1?p=814d4482-f746-4961-be2b-b822c13856d2&monitor=true&api-version=2022-03-02 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/CreateUpdateDisks3Min;999,Microsoft.Compute/CreateUpdateDisks30Min;7998 + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - disk create + Connection: + - keep-alive + ParameterSetName: + - -g -n --size-gb + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.1.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/e9f0032a-7049-4d20-a5ad-2347b411a0f1?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2022-03-02 + response: + body: + string: "{\r\n \"startTime\": \"2022-06-21T12:16:30.3484464+00:00\",\r\n \"endTime\": + \"2022-06-21T12:16:30.4734271+00:00\",\r\n \"status\": \"Succeeded\",\r\n + \ \"properties\": {\r\n \"output\": {\r\n \"name\": \"cli-test-disk-new\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new\",\r\n + \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"centraluseuap\",\r\n + \ \"tags\": {},\r\n \"sku\": {\r\n \"name\": \"Premium_LRS\",\r\n \"tier\": + \"Premium\"\r\n },\r\n \"properties\": {\r\n \"hyperVGeneration\": \"V1\",\r\n + \ \"creationData\": {\r\n \"createOption\": \"Empty\"\r\n },\r\n + \ \"diskSizeGB\": 4,\r\n \"diskIOPSReadWrite\": 120,\r\n \"diskMBpsReadWrite\": + 25,\r\n \"encryption\": {\r\n \"type\": \"EncryptionAtRestWithPlatformKey\"\r\n + \ },\r\n \"networkAccessPolicy\": \"AllowAll\",\r\n \"publicNetworkAccess\": + \"Enabled\",\r\n \"timeCreated\": \"2022-06-21T12:16:30.3484464+00:00\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n + \ \"diskSizeBytes\": 4294967296,\r\n \"uniqueId\": \"4f8ba0cc-0166-437f-8ae6-7ff6f25fd42e\",\r\n + \ \"tier\": \"P1\"\r\n }\r\n}\r\n },\r\n \"name\": \"e9f0032a-7049-4d20-a5ad-2347b411a0f1\"\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '1150' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:16:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetOperation3Min;49999,Microsoft.Compute/GetOperation30Min;399993 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - disk create + Connection: + - keep-alive + ParameterSetName: + - -g -n --size-gb + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.1.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new?api-version=2022-03-02 + response: + body: + string: "{\r\n \"name\": \"cli-test-disk-new\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new\",\r\n + \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"centraluseuap\",\r\n + \ \"tags\": {},\r\n \"sku\": {\r\n \"name\": \"Premium_LRS\",\r\n \"tier\": + \"Premium\"\r\n },\r\n \"properties\": {\r\n \"hyperVGeneration\": \"V1\",\r\n + \ \"creationData\": {\r\n \"createOption\": \"Empty\"\r\n },\r\n + \ \"diskSizeGB\": 4,\r\n \"diskIOPSReadWrite\": 120,\r\n \"diskMBpsReadWrite\": + 25,\r\n \"encryption\": {\r\n \"type\": \"EncryptionAtRestWithPlatformKey\"\r\n + \ },\r\n \"networkAccessPolicy\": \"AllowAll\",\r\n \"publicNetworkAccess\": + \"Enabled\",\r\n \"timeCreated\": \"2022-06-21T12:16:30.3484464+00:00\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n + \ \"diskSizeBytes\": 4294967296,\r\n \"uniqueId\": \"4f8ba0cc-0166-437f-8ae6-7ff6f25fd42e\",\r\n + \ \"tier\": \"P1\"\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '925' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:16:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/LowCostGet3Min;14999,Microsoft.Compute/LowCostGet30Min;119573 + status: + code: 200 + message: OK +- request: + body: '{"sku": {"name": "Standard_RAGRS"}, "kind": "StorageV2", "location": "centraluseuap", + "properties": {"encryption": {"services": {"blob": {}}, "keySource": "Microsoft.Storage"}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + Content-Length: + - '177' + Content-Type: + - application/json + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount?api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:16:37 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:16:54 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:16:57 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:00 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:03 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:06 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:09 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:12 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:15 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:18 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:21 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:24 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:28 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:31 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:34 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:37 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:40 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:43 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:46 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:49 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:52 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:55 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:17:58 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:18:01 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account create + Connection: + - keep-alive + ParameterSetName: + - -g -n -l + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/centraluseuap/asyncoperations/ad689d81-b59a-432a-9ca1-d00206e673c5?monitor=true&api-version=2021-09-01 + response: + body: + string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount","name":"cliteststoreaccount","type":"Microsoft.Storage/storageAccounts","location":"centraluseuap","tags":{},"properties":{"keyCreationTime":{"key1":"2022-06-21T12:16:35.4736552Z","key2":"2022-06-21T12:16:35.4736552Z"},"privateEndpointConnections":[],"minimumTlsVersion":"TLS1_0","allowBlobPublicAccess":true,"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":true,"encryption":{"services":{"file":{"keyType":"Account","enabled":true,"lastEnabledTime":"2022-06-21T12:16:35.4736552Z"},"blob":{"keyType":"Account","enabled":true,"lastEnabledTime":"2022-06-21T12:16:35.4736552Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2022-06-21T12:16:35.4111786Z","primaryEndpoints":{"dfs":"https://cliteststoreaccount.dfs.core.windows.net/","web":"https://cliteststoreaccount.z2.web.core.windows.net/","blob":"https://cliteststoreaccount.blob.core.windows.net/","queue":"https://cliteststoreaccount.queue.core.windows.net/","table":"https://cliteststoreaccount.table.core.windows.net/","file":"https://cliteststoreaccount.file.core.windows.net/"},"primaryLocation":"centraluseuap","statusOfPrimary":"available","secondaryLocation":"eastus2euap","statusOfSecondary":"available","secondaryEndpoints":{"dfs":"https://cliteststoreaccount-secondary.dfs.core.windows.net/","web":"https://cliteststoreaccount-secondary.z2.web.core.windows.net/","blob":"https://cliteststoreaccount-secondary.blob.core.windows.net/","queue":"https://cliteststoreaccount-secondary.queue.core.windows.net/","table":"https://cliteststoreaccount-secondary.table.core.windows.net/"}}}' + headers: + cache-control: + - no-cache + content-length: + - '1896' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection resource-guard create + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","name":"sarath-rg","type":"Microsoft.Resources/resourceGroups","location":"centraluseuap","tags":{},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '232' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:18:16 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "properties": {}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection resource-guard create + Connection: + - keep-alive + Content-Length: + - '47' + Content-Type: + - application/json + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupSecurityPIN/action","requestResourceType":"Microsoft.DataProtection/resourceGuards/getBackupSecurityPINRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":[],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' + headers: + cache-control: + - no-cache + content-length: + - '1931' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection resource-guard list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards?api-version=2022-04-01 + response: + body: + string: '{"value":[{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":["Microsoft.RecoveryServices/vaults/backupSecurityPIN/action"],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/akneema-resource-guardd","name":"akneema-resource-guardd","type":"Microsoft.DataProtection/resourceGuards"},{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupSecurityPIN/action","requestResourceType":"Microsoft.DataProtection/resourceGuards/getBackupSecurityPINRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":[],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}]}' + headers: + cache-control: + - no-cache + content-length: + - '3754' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection resource-guard update + Connection: + - keep-alive + ParameterSetName: + - -g -n --resource-type --critical-operation-exclusion-list + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupSecurityPIN/action","requestResourceType":"Microsoft.DataProtection/resourceGuards/getBackupSecurityPINRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":[],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' + headers: + cache-control: + - no-cache + content-length: + - '1931' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "properties": {"vaultCriticalOperationExclusionList": + ["Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete", + "Microsoft.RecoveryServices/vaults/backupSecurityPIN/action"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection resource-guard update + Connection: + - keep-alive + Content-Length: + - '242' + Content-Type: + - application/json + ParameterSetName: + - -g -n --resource-type --critical-operation-exclusion-list + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":["Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","Microsoft.RecoveryServices/vaults/backupSecurityPIN/action"],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' + headers: + cache-control: + - no-cache + content-length: + - '1691' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection resource-guard list-protected-operations + Connection: + - keep-alive + ParameterSetName: + - -g -n --resource-type + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","properties":{"provisioningState":"Succeeded","resourceGuardOperations":[{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectedItemRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupPolicies/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/updateProtectionPolicyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/resourceGuards/deleteResourceGuardProxyRequests"},{"vaultCriticalOperation":"Microsoft.RecoveryServices/vaults/backupconfig/write","requestResourceType":"Microsoft.DataProtection/resourceGuards/disableSoftDeleteRequests"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupInstances/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupInstances/delete"},{"vaultCriticalOperation":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete","requestResourceType":"Microsoft.DataProtection/backupVaults/backupResourceGuardProxies/delete"}],"vaultCriticalOperationExclusionList":["Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/delete","Microsoft.RecoveryServices/vaults/backupSecurityPIN/action"],"allowAutoApprovals":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard","name":"cli-test-resource-guard","type":"Microsoft.DataProtection/resourceGuards"}' + headers: + cache-control: + - no-cache + content-length: + - '1691' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"datasourceTypes": ["Microsoft.Compute/disks"], "objectType": + "BackupPolicy", "policyRules": [{"name": "BackupHourly", "objectType": "AzureBackupRule", + "backupParameters": {"objectType": "AzureBackupParams", "backupType": "Incremental"}, + "dataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}, + "trigger": {"objectType": "ScheduleBasedTriggerContext", "schedule": {"repeatingTimeIntervals": + ["R/2020-04-05T13:00:00+00:00/PT4H"]}, "taggingCriteria": [{"isDefault": true, + "taggingPriority": 99, "tagInfo": {"tagName": "Default"}}]}}, {"name": "Default", + "objectType": "AzureRetentionRule", "isDefault": true, "lifecycles": [{"deleteAfter": + {"duration": "P7D", "objectType": "AbsoluteDeleteOption"}, "sourceDataStore": + {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}}]}]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-policy create + Connection: + - keep-alive + Content-Length: + - '840' + Content-Type: + - application/json + ParameterSetName: + - -n --policy -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy?api-version=2022-04-01 + response: + body: + string: '{"properties":{"policyRules":[{"backupParameters":{"backupType":"Incremental","objectType":"AzureBackupParams"},"trigger":{"schedule":{"repeatingTimeIntervals":["R/2020-04-05T13:00:00+00:00/PT4H"]},"taggingCriteria":[{"tagInfo":{"tagName":"Default","id":"Default_"},"taggingPriority":99,"isDefault":true}],"objectType":"ScheduleBasedTriggerContext"},"dataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"},"name":"BackupHourly","objectType":"AzureBackupRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P7D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Compute/disks"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","name":"diskpolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' + headers: + cache-control: + - no-cache + content-length: + - '1065' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"datasourceTypes": ["Microsoft.Storage/storageAccounts/blobServices"], + "objectType": "BackupPolicy", "policyRules": [{"name": "Default", "objectType": + "AzureRetentionRule", "isDefault": true, "lifecycles": [{"deleteAfter": {"duration": + "P30D", "objectType": "AbsoluteDeleteOption"}, "sourceDataStore": {"dataStoreType": + "OperationalStore", "objectType": "DataStoreInfoBase"}}]}]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-policy create + Connection: + - keep-alive + Content-Length: + - '396' + Content-Type: + - application/json + ParameterSetName: + - -n --policy -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy?api-version=2022-04-01 + response: + body: + string: '{"properties":{"policyRules":[{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P30D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Storage/storageAccounts/blobServices"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy","name":"storagepolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' + headers: + cache-control: + - no-cache + content-length: + - '639' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-policy show + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --query + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy?api-version=2022-04-01 + response: + body: + string: '{"properties":{"policyRules":[{"backupParameters":{"backupType":"Incremental","objectType":"AzureBackupParams"},"trigger":{"schedule":{"repeatingTimeIntervals":["R/2020-04-05T13:00:00+00:00/PT4H"]},"taggingCriteria":[{"tagInfo":{"tagName":"Default","id":"Default_"},"taggingPriority":99,"isDefault":true}],"objectType":"ScheduleBasedTriggerContext"},"dataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"},"name":"BackupHourly","objectType":"AzureBackupRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P7D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Compute/disks"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","name":"diskpolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' + headers: + cache-control: + - no-cache + content-length: + - '1065' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-policy show + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --query + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy?api-version=2022-04-01 + response: + body: + string: '{"properties":{"policyRules":[{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P30D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Storage/storageAccounts/blobServices"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy","name":"storagepolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' + headers: + cache-control: + - no-cache + content-length: + - '639' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"datasourceTypes": ["Microsoft.Compute/disks"], "objectType": + "BackupPolicy", "policyRules": [{"name": "BackupHourly", "objectType": "AzureBackupRule", + "backupParameters": {"objectType": "AzureBackupParams", "backupType": "Incremental"}, + "dataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}, + "trigger": {"objectType": "ScheduleBasedTriggerContext", "schedule": {"repeatingTimeIntervals": + ["R/2021-05-02T05:30:00+00:00/PT6H"]}, "taggingCriteria": [{"isDefault": true, + "taggingPriority": 99, "tagInfo": {"tagName": "Default"}}, {"criteria": [{"objectType": + "ScheduleBasedBackupCriteria", "absoluteCriteria": ["FirstOfDay"]}], "isDefault": + false, "taggingPriority": 25, "tagInfo": {"tagName": "Daily"}}]}}, {"name": + "Default", "objectType": "AzureRetentionRule", "isDefault": true, "lifecycles": + [{"deleteAfter": {"duration": "P7D", "objectType": "AbsoluteDeleteOption"}, + "sourceDataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}}]}, + {"name": "Daily", "objectType": "AzureRetentionRule", "isDefault": false, "lifecycles": + [{"deleteAfter": {"duration": "P12D", "objectType": "AbsoluteDeleteOption"}, + "sourceDataStore": {"dataStoreType": "OperationalStore", "objectType": "DataStoreInfoBase"}}]}]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-policy create + Connection: + - keep-alive + Content-Length: + - '1276' + Content-Type: + - application/json + ParameterSetName: + - -n --policy -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskhourlypolicy?api-version=2022-04-01 + response: + body: + string: '{"properties":{"policyRules":[{"backupParameters":{"backupType":"Incremental","objectType":"AzureBackupParams"},"trigger":{"schedule":{"repeatingTimeIntervals":["R/2021-05-02T05:30:00+00:00/PT6H"]},"taggingCriteria":[{"tagInfo":{"tagName":"Default","id":"Default_"},"taggingPriority":99,"isDefault":true},{"tagInfo":{"tagName":"Daily","id":"Daily_"},"taggingPriority":25,"isDefault":false,"criteria":[{"absoluteCriteria":["FirstOfDay"],"objectType":"ScheduleBasedBackupCriteria"}]}],"objectType":"ScheduleBasedTriggerContext"},"dataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"},"name":"BackupHourly","objectType":"AzureBackupRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P7D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":true,"name":"Default","objectType":"AzureRetentionRule"},{"lifecycles":[{"deleteAfter":{"objectType":"AbsoluteDeleteOption","duration":"P12D"},"sourceDataStore":{"dataStoreType":"OperationalStore","objectType":"DataStoreInfoBase"}}],"isDefault":false,"name":"Daily","objectType":"AzureRetentionRule"}],"datasourceTypes":["Microsoft.Compute/disks"],"objectType":"BackupPolicy"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskhourlypolicy","name":"diskhourlypolicy","type":"Microsoft.DataProtection/backupVaults/backupPolicies"}' + headers: + cache-control: + - no-cache + content-length: + - '1498' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.Compute/disks", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new", + "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new", "resourceType": + "Microsoft.Compute/disks", "resourceUri": ""}, "policyInfo": {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy", + "policyParameters": {"dataStoreParametersList": [{"objectType": "AzureOperationalStoreParameters", + "dataStoreType": "OperationalStore", "resourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + Content-Length: + - '866' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:18:28 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==","status":"Inprogress","startTime":"2022-06-21T12:18:28.8336152Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:18:38 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==","status":"Inprogress","startTime":"2022-06-21T12:18:28.8336152Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:19:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA3YTQ3MjFmLWQxMzItNDg0Yi05ZjUzLTlhZjcxYzAzMDRhNA==","status":"Failed","error":{"additionalInfo":[{"type":"UserFacingError","info":{"message":"Could + not perform the operation as Disk and Snapshot Data store Resource Group no + longer exists. Or Azure Backup Service requires additional permissions on + the Snapshot Data store Resource Group and Disk to do this operation.","recommendedAction":["Please + create Resource Group and grant Backup Vault managed identity appropriate + permissions on the Snapshot Data store Resource Group. Snapshot Data store + Resource Group is the location where the disk snapshots are stored.If the + disk is not deleted or moved, grant Backup Vault managed identity appropriate + permissions on the Disk. Refer documentation to understand which is the Resource + Group, what permissions are required by the Backup Vault managed identity + and how to provide it - https://aka.ms/diskbackupdoc-backup "],"code":"UserErrorDiskAndSnapshotRGOrMSIPermissionsNotPresent","target":"","isRetryable":false,"isUserError":false,"properties":{"ActivityId":"414e0438-f15c-11ec-9933-000d3a071c11"}}}],"code":"UserErrorDiskAndSnapshotRGOrMSIPermissionsNotPresent","message":"Could + not perform the operation as Disk and Snapshot Data store Resource Group no + longer exists. Or Azure Backup Service requires additional permissions on + the Snapshot Data store Resource Group and Disk to do this operation."},"startTime":"2022-06-21T12:18:28.8336152Z","endTime":"2022-06-21T12:19:20Z"}' + headers: + cache-control: + - no-cache + content-length: + - '1806' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:19:39 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '997' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.Storage/storageAccounts/blobServices", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount", + "resourceLocation": "centraluseuap", "resourceName": "cliteststoreaccount", + "resourceType": "Microsoft.Storage/storageAccounts", "resourceUri": ""}, "policyInfo": + {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy"}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + Content-Length: + - '678' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:19:40 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==","status":"Inprogress","startTime":"2022-06-21T12:19:40.8997315Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:19:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzA5NzE1Y2EzLWE0YzItNGM4OS05NzNlLTZiZWU5ODNlMTRiYw==","status":"Failed","error":{"additionalInfo":[{"type":"UserFacingError","info":{"message":"Appropriate + permissions to perform the operation is missing.","recommendedAction":["Grant + appropriate permissions to perform this operation as mentioned at https://aka.ms/UserErrorMissingRequiredPermissions + and retry the operation."],"code":"UserErrorMissingRequiredPermissions","target":"","innerError":{"code":"UserErrorMissingRequiredPermissions","additionalInfo":{"DetailedNonLocalisedMessage":"Validate + for Protection failed. Exception Message: The client ''1831aada-7907-4673-a5e2-b11217764c9e'' + with object id ''1831aada-7907-4673-a5e2-b11217764c9e'' does not have authorization + to perform action ''Microsoft.Authorization/roleAssignments/read'' over scope + ''/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount/providers/Microsoft.Authorization'' + or the scope is invalid. If access was recently granted, please refresh your + credentials."}},"isRetryable":false,"isUserError":false,"properties":{"ActivityId":"6c6383b8-f15c-11ec-8af6-000d3a071c11"}}}],"code":"UserErrorMissingRequiredPermissions","message":"Appropriate + permissions to perform the operation is missing."},"startTime":"2022-06-21T12:19:40.8997315Z","endTime":"2022-06-21T12:20:12Z"}' + headers: + cache-control: + - no-cache + content-length: + - '1702' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:20:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/databases/postgres", + "resourceLocation": "centraluseuap", "resourceName": "postgres", "resourceType": + "Microsoft.DBforPostgreSQL/servers/databases", "resourceUri": ""}, "dataSourceSetInfo": + {"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases", "objectType": + "DatasourceSet", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server", + "resourceLocation": "centraluseuap", "resourceName": "oss-clitest-server", "resourceType": + "Microsoft.DBforPostgreSQL/servers", "resourceUri": ""}, "policyInfo": {"policyId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/backupPolicies/oss-clitest-policy"}, + "datasourceAuthCredentials": {"objectType": "SecretStoreBasedAuthCredentials", + "secretStoreResource": {"uri": "https://oss-clitest-keyvault.vault.azure.net/secrets/oss-clitest-secret", + "secretStoreType": "AzureKeyVault"}}, "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + Content-Length: + - '1357' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:20:22 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==","name":"NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==","status":"Inprogress","startTime":"2022-06-21T12:20:22.653471Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '480' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:20:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==","name":"NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==","status":"Inprogress","startTime":"2022-06-21T12:20:22.653471Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '480' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:21:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==","name":"NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==","status":"Inprogress","startTime":"2022-06-21T12:20:22.653471Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '480' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:21:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '997' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==?api-version=2022-04-01 + response: + body: + string: "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==\",\"name\":\"NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3Ozk3ZTI5YjE2LWQ3ODQtNGRmMS1iODBmLWYxNGZmMjlkNjc3Ng==\",\"status\":\"Failed\",\"error\":{\"additionalInfo\":[{\"type\":\"UserFacingError\",\"info\":{\"message\":\"Missing + permissions to read the Key vault secrets.\",\"recommendedAction\":[\"Grant + the necessary permissions to the backup vault\u2019s identity (MSI) on the + key vault. Refer to aka.ms/UserErrorMissingPermissionsOnSecretStore for details. + \"],\"code\":\"UserErrorMissingPermissionsOnSecretStore\",\"target\":\"\",\"isRetryable\":false,\"isUserError\":false,\"properties\":{\"ActivityId\":\"85514402-f15c-11ec-8477-000d3a071c11\"}}}],\"code\":\"UserErrorMissingPermissionsOnSecretStore\",\"message\":\"Missing + permissions to read the Key vault secrets.\"},\"startTime\":\"2022-06-21T12:20:22.653471Z\",\"endTime\":\"2022-06-21T12:21:35Z\"}" + headers: + cache-control: + - no-cache + content-length: + - '1068' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:22:03 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '996' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false,"monitoringSettings":{"azureMonitorAlertSettings":{"alertsForAllJobFailures":"Disabled"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' + headers: + cache-control: + - no-cache + content-length: + - '648' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:22:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '498' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%271831aada-7907-4673-a5e2-b11217764c9e%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:04 GMT + odata-version: + - '4.0' + request-id: + - 7deb1006-33b3-4800-8b8b-f2dcc37fcab1 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AB4A"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["1831aada-7907-4673-a5e2-b11217764c9e"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"1831aada-7907-4673-a5e2-b11217764c9e","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"83e38c26-3206-42ba-80c8-8736c2ce5f25","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-06-21T12:15:51Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["83e38c26-3206-42ba-80c8-8736c2ce5f25","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"D34F9308B0CBCD7D7F3111242E413CE85577BAC5","displayName":"CN=83e38c26-3206-42ba-80c8-8736c2ce5f25","endDateTime":"2022-09-19T12:10:00Z","key":null,"keyId":"7ad906cc-d929-4ee5-8c8d-62a506233a25","startDateTime":"2022-06-21T12:10:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '1730' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:04 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - 164346d3-d7de-4d48-a6f7-51529544344b + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AC63"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview + response: + body: + string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:49.6216206Z","updatedOn":"2022-04-12T12:46:49.6216206Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/85cc2dff-c5d4-42a3-acb6-255cd4208ef4","type":"Microsoft.Authorization/roleAssignments","name":"85cc2dff-c5d4-42a3-acb6-255cd4208ef4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:57.1459341Z","updatedOn":"2022-04-12T12:46:57.1459341Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aba8e90d-d951-4cb5-a346-b71e478f4d1b","type":"Microsoft.Authorization/roleAssignments","name":"aba8e90d-d951-4cb5-a346-b71e478f4d1b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:28.3678603Z","updatedOn":"2022-04-12T13:09:28.3678603Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/79d87d90-f984-4f53-a169-2eca51c00104","type":"Microsoft.Authorization/roleAssignments","name":"79d87d90-f984-4f53-a169-2eca51c00104"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:33.3916295Z","updatedOn":"2022-04-12T13:09:33.3916295Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/5e185742-c91a-4efe-b0d8-db9524685ec5","type":"Microsoft.Authorization/roleAssignments","name":"5e185742-c91a-4efe-b0d8-db9524685ec5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:02.2689248Z","updatedOn":"2022-04-13T07:01:02.2689248Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c9b4f9ab-d687-4a65-910a-5bcb2f974bfe","type":"Microsoft.Authorization/roleAssignments","name":"c9b4f9ab-d687-4a65-910a-5bcb2f974bfe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:09.3571703Z","updatedOn":"2022-04-13T07:01:09.3571703Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/8bedf13c-aa1a-4191-aa97-573f14fd97ee","type":"Microsoft.Authorization/roleAssignments","name":"8bedf13c-aa1a-4191-aa97-573f14fd97ee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:04.6456354Z","updatedOn":"2022-04-13T07:43:04.6456354Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bd0fc30a-6ccf-4c22-a26b-0e31aba16035","type":"Microsoft.Authorization/roleAssignments","name":"bd0fc30a-6ccf-4c22-a26b-0e31aba16035"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:10.1186881Z","updatedOn":"2022-04-13T07:43:10.1186881Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0","type":"Microsoft.Authorization/roleAssignments","name":"dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:58:57.7706882Z","updatedOn":"2022-04-13T08:58:57.7706882Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9e3d10bf-9bfa-4a97-9ab1-b972a348abd0","type":"Microsoft.Authorization/roleAssignments","name":"9e3d10bf-9bfa-4a97-9ab1-b972a348abd0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:59:03.2414961Z","updatedOn":"2022-04-13T08:59:03.2414961Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/66eefd94-4bda-46df-9c61-7e92f83d91e7","type":"Microsoft.Authorization/roleAssignments","name":"66eefd94-4bda-46df-9c61-7e92f83d91e7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:35.8887781Z","updatedOn":"2022-04-13T10:17:35.8887781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/77f4f7a3-a377-49f7-a094-945b82b2bfff","type":"Microsoft.Authorization/roleAssignments","name":"77f4f7a3-a377-49f7-a094-945b82b2bfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:41.2233089Z","updatedOn":"2022-04-13T10:17:41.2233089Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1a71aac6-e9ce-40ff-a39f-7594df2ea6e9","type":"Microsoft.Authorization/roleAssignments","name":"1a71aac6-e9ce-40ff-a39f-7594df2ea6e9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:19.4532093Z","updatedOn":"2022-04-21T06:57:19.4532093Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/eede4548-9f71-44b7-8077-c49aa44894b4","type":"Microsoft.Authorization/roleAssignments","name":"eede4548-9f71-44b7-8077-c49aa44894b4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:24.3439247Z","updatedOn":"2022-04-21T06:57:24.3439247Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c011acd2-8b5d-45d6-b6c1-4ffe1867ce31","type":"Microsoft.Authorization/roleAssignments","name":"c011acd2-8b5d-45d6-b6c1-4ffe1867ce31"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:25.7258076Z","updatedOn":"2022-05-24T11:54:25.7258076Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9a7dc348-d24e-438b-84b0-c7cda5bf92c4","type":"Microsoft.Authorization/roleAssignments","name":"9a7dc348-d24e-438b-84b0-c7cda5bf92c4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:29.8931759Z","updatedOn":"2022-05-24T11:54:29.8931759Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aeb54d04-84b8-4530-bd7e-fe01dafd82ab","type":"Microsoft.Authorization/roleAssignments","name":"aeb54d04-84b8-4530-bd7e-fe01dafd82ab"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"f2cee52e-3d75-4f49-acc4-b5aaf72232ee","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T11:01:05.6238088Z","updatedOn":"2022-06-03T11:01:05.6238088Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2bd63fbe-e197-434f-ba1e-016bad298ff7","type":"Microsoft.Authorization/roleAssignments","name":"2bd63fbe-e197-434f-ba1e-016bad298ff7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:20:41.1511200Z","updatedOn":"2022-06-03T13:22:39.1076287Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f12c7867-43e5-5530-98e9-9d8a2f39fb92","type":"Microsoft.Authorization/roleAssignments","name":"f12c7867-43e5-5530-98e9-9d8a2f39fb92"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:37:09.9515887Z","updatedOn":"2022-06-03T14:40:22.4040874Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/bace23ac-6978-5318-a146-d49599599b02","type":"Microsoft.Authorization/roleAssignments","name":"bace23ac-6978-5318-a146-d49599599b02"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.0377251Z","updatedOn":"2022-06-06T11:22:08.0377251Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/32e50355-7960-4d1b-aa22-e9255b475b8b","type":"Microsoft.Authorization/roleAssignments","name":"32e50355-7960-4d1b-aa22-e9255b475b8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.5127363Z","updatedOn":"2022-06-06T11:22:08.5127363Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/df253c65-35fc-4ff6-9a32-39b3fe20a6e3","type":"Microsoft.Authorization/roleAssignments","name":"df253c65-35fc-4ff6-9a32-39b3fe20a6e3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5f137a67-1b88-4f98-aa20-b71a7082dc56","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-10T14:11:57.5623976Z","updatedOn":"2022-06-10T14:11:57.5623976Z","createdBy":"9c973a07-b207-473c-9687-bd693ba8e460","updatedBy":"9c973a07-b207-473c-9687-bd693ba8e460","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e409f573-8bda-4b7e-854a-61c445d36c6f","type":"Microsoft.Authorization/roleAssignments","name":"e409f573-8bda-4b7e-854a-61c445d36c6f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-20T05:21:19.8209962Z","updatedOn":"2022-06-20T05:21:19.8209962Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ac2ba280-9929-47f1-9973-fdc5c3f5446f","type":"Microsoft.Authorization/roleAssignments","name":"ac2ba280-9929-47f1-9973-fdc5c3f5446f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"961a41dc-cbb6-4777-9b6c-a6d4d1ea4faa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:02:09.6478601Z","updatedOn":"2022-06-21T12:02:09.6478601Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/efc8d400-cd5e-41d3-99e6-65878c1f888c","type":"Microsoft.Authorization/roleAssignments","name":"efc8d400-cd5e-41d3-99e6-65878c1f888c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"961a41dc-cbb6-4777-9b6c-a6d4d1ea4faa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:02:31.1213523Z","updatedOn":"2022-06-21T12:02:31.1213523Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1ad6de95-d660-4f0a-84cf-1b297eafe5f6","type":"Microsoft.Authorization/roleAssignments","name":"1ad6de95-d660-4f0a-84cf-1b297eafe5f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7c567124-5292-4819-aa73-0224bf1c42e1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-23T13:38:54.7542852Z","updatedOn":"2021-05-23T13:38:54.7542852Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0809d692-f58f-43f2-b597-7f115957407e","type":"Microsoft.Authorization/roleAssignments","name":"0809d692-f58f-43f2-b597-7f115957407e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"955c9d1b-0cb6-4ff6-91c9-f4aadf67ffe8","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:45:08.3835615Z","updatedOn":"2021-05-24T16:45:08.3835615Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1b1ac6ab-19e7-4c4f-91d2-5be73096da2c","type":"Microsoft.Authorization/roleAssignments","name":"1b1ac6ab-19e7-4c4f-91d2-5be73096da2c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7221c906-782c-44a0-ab2f-f23d8a95ce25","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:56:16.2751421Z","updatedOn":"2021-05-24T16:56:16.2751421Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/ca8f2433-76dc-49fa-828d-9cd2861ec25c","type":"Microsoft.Authorization/roleAssignments","name":"ca8f2433-76dc-49fa-828d-9cd2861ec25c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:53.5542743Z","updatedOn":"2021-06-04T06:40:53.5542743Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9d9ac2a8-dbac-41bb-9f17-c473f02c6370","type":"Microsoft.Authorization/roleAssignments","name":"9d9ac2a8-dbac-41bb-9f17-c473f02c6370"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:57.1326805Z","updatedOn":"2021-06-04T06:40:57.1326805Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/14b1338c-95f6-44f9-ad22-395f8ebbb1fe","type":"Microsoft.Authorization/roleAssignments","name":"14b1338c-95f6-44f9-ad22-395f8ebbb1fe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:18.2829699Z","updatedOn":"2021-06-04T07:02:18.2829699Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93","type":"Microsoft.Authorization/roleAssignments","name":"bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:22.4343547Z","updatedOn":"2021-06-04T07:02:22.4343547Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/26bab283-0772-4c03-8dc1-a50c8ffa597d","type":"Microsoft.Authorization/roleAssignments","name":"26bab283-0772-4c03-8dc1-a50c8ffa597d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:08.8293677Z","updatedOn":"2021-06-04T07:19:08.8293677Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/d972f611-a4bd-4b80-9e78-980984602450","type":"Microsoft.Authorization/roleAssignments","name":"d972f611-a4bd-4b80-9e78-980984602450"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:12.8400651Z","updatedOn":"2021-06-04T07:19:12.8400651Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/b9393755-f5ca-41ef-a631-fb62184c57a8","type":"Microsoft.Authorization/roleAssignments","name":"b9393755-f5ca-41ef-a631-fb62184c57a8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:15.2633798Z","updatedOn":"2021-06-04T09:14:15.2633798Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/094981c0-d59c-4f5b-9581-72c08da65454","type":"Microsoft.Authorization/roleAssignments","name":"094981c0-d59c-4f5b-9581-72c08da65454"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:19.9554484Z","updatedOn":"2021-06-04T09:14:19.9554484Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0cac59e0-0464-4bf6-9bef-f1fadc2b08f4","type":"Microsoft.Authorization/roleAssignments","name":"0cac59e0-0464-4bf6-9bef-f1fadc2b08f4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:52.6766200Z","updatedOn":"2021-08-30T06:31:52.6766200Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/f67c65e2-e609-4ffe-b504-294b00cbd2fd","type":"Microsoft.Authorization/roleAssignments","name":"f67c65e2-e609-4ffe-b504-294b00cbd2fd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:57.1552781Z","updatedOn":"2021-08-30T06:31:57.1552781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aaeab926-d6e2-4bb6-9e9e-0607e75cc75f","type":"Microsoft.Authorization/roleAssignments","name":"aaeab926-d6e2-4bb6-9e9e-0607e75cc75f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"2ab5fb95-b72e-4d12-948b-4223754d8ffa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-09-08T08:24:19.3547440Z","updatedOn":"2021-09-08T08:24:19.3547440Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/43ee13b8-5abd-51e0-88e3-ae84049da70e","type":"Microsoft.Authorization/roleAssignments","name":"43ee13b8-5abd-51e0-88e3-ae84049da70e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for + temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' + headers: + cache-control: + - no-cache + content-length: + - '92497' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:05 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Backup%20Reader%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Disk Backup Reader","type":"BuiltInRole","description":"Provides + permission to backup vault to perform disk backup.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Compute/disks/read","Microsoft.Compute/disks/beginGetAccess/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T07:39:03.8394514Z","updatedOn":"2021-11-11T20:14:56.0178737Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","type":"Microsoft.Authorization/roleDefinitions","name":"3e5e47e6-65f7-47ef-90b5-e5dd4d455f24"}]}' + headers: + cache-control: + - no-cache + content-length: + - '738' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:06 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%271831aada-7907-4673-a5e2-b11217764c9e%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:06 GMT + odata-version: + - '4.0' + request-id: + - b25c07d8-cec4-4a5e-9c9d-942a4167fad4 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF00005444"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["1831aada-7907-4673-a5e2-b11217764c9e"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"1831aada-7907-4673-a5e2-b11217764c9e","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"83e38c26-3206-42ba-80c8-8736c2ce5f25","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-06-21T12:15:51Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["83e38c26-3206-42ba-80c8-8736c2ce5f25","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"D34F9308B0CBCD7D7F3111242E413CE85577BAC5","displayName":"CN=83e38c26-3206-42ba-80c8-8736c2ce5f25","endDateTime":"2022-09-19T12:10:00Z","key":null,"keyId":"7ad906cc-d929-4ee5-8c8d-62a506233a25","startDateTime":"2022-06-21T12:10:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '1730' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:06 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - ea36a621-3bbc-4fbb-b61b-6cc3d85cc329 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AB4D"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Backup%20Reader%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Disk Backup Reader","type":"BuiltInRole","description":"Provides + permission to backup vault to perform disk backup.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Compute/disks/read","Microsoft.Compute/disks/beginGetAccess/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T07:39:03.8394514Z","updatedOn":"2021-11-11T20:14:56.0178737Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","type":"Microsoft.Authorization/roleDefinitions","name":"3e5e47e6-65f7-47ef-90b5-e5dd4d455f24"}]}' + headers: + cache-control: + - no-cache + content-length: + - '738' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:06 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24", + "principalId": "1831aada-7907-4673-a5e2-b11217764c9e", "principalType": "ServicePrincipal"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '270' + Content-Type: + - application/json; charset=utf-8 + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleAssignments/dc813c73-d09f-46cd-b6f0-237b4a9f880f?api-version=2020-04-01-preview + response: + body: + string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:07.6386402Z","updatedOn":"2022-06-21T12:22:07.9980202Z","createdBy":null,"updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new/providers/Microsoft.Authorization/roleAssignments/dc813c73-d09f-46cd-b6f0-237b4a9f880f","type":"Microsoft.Authorization/roleAssignments","name":"dc813c73-d09f-46cd-b6f0-237b4a9f880f"}' + headers: + cache-control: + - no-cache + content-length: + - '977' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:09 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%271831aada-7907-4673-a5e2-b11217764c9e%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:10 GMT + odata-version: + - '4.0' + request-id: + - 64a1ec15-93b5-45e0-9a85-73ce93fb3497 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AC64"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["1831aada-7907-4673-a5e2-b11217764c9e"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"1831aada-7907-4673-a5e2-b11217764c9e","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"83e38c26-3206-42ba-80c8-8736c2ce5f25","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-06-21T12:15:51Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["83e38c26-3206-42ba-80c8-8736c2ce5f25","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"D34F9308B0CBCD7D7F3111242E413CE85577BAC5","displayName":"CN=83e38c26-3206-42ba-80c8-8736c2ce5f25","endDateTime":"2022-09-19T12:10:00Z","key":null,"keyId":"7ad906cc-d929-4ee5-8c8d-62a506233a25","startDateTime":"2022-06-21T12:10:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '1730' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:10 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - 42ade1fb-2198-4f41-a3b5-9b9b2bbc3b23 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF00005443"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview + response: + body: + string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:49.6216206Z","updatedOn":"2022-04-12T12:46:49.6216206Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/85cc2dff-c5d4-42a3-acb6-255cd4208ef4","type":"Microsoft.Authorization/roleAssignments","name":"85cc2dff-c5d4-42a3-acb6-255cd4208ef4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:57.1459341Z","updatedOn":"2022-04-12T12:46:57.1459341Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aba8e90d-d951-4cb5-a346-b71e478f4d1b","type":"Microsoft.Authorization/roleAssignments","name":"aba8e90d-d951-4cb5-a346-b71e478f4d1b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:28.3678603Z","updatedOn":"2022-04-12T13:09:28.3678603Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/79d87d90-f984-4f53-a169-2eca51c00104","type":"Microsoft.Authorization/roleAssignments","name":"79d87d90-f984-4f53-a169-2eca51c00104"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:33.3916295Z","updatedOn":"2022-04-12T13:09:33.3916295Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/5e185742-c91a-4efe-b0d8-db9524685ec5","type":"Microsoft.Authorization/roleAssignments","name":"5e185742-c91a-4efe-b0d8-db9524685ec5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:02.2689248Z","updatedOn":"2022-04-13T07:01:02.2689248Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c9b4f9ab-d687-4a65-910a-5bcb2f974bfe","type":"Microsoft.Authorization/roleAssignments","name":"c9b4f9ab-d687-4a65-910a-5bcb2f974bfe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:09.3571703Z","updatedOn":"2022-04-13T07:01:09.3571703Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/8bedf13c-aa1a-4191-aa97-573f14fd97ee","type":"Microsoft.Authorization/roleAssignments","name":"8bedf13c-aa1a-4191-aa97-573f14fd97ee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:04.6456354Z","updatedOn":"2022-04-13T07:43:04.6456354Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bd0fc30a-6ccf-4c22-a26b-0e31aba16035","type":"Microsoft.Authorization/roleAssignments","name":"bd0fc30a-6ccf-4c22-a26b-0e31aba16035"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:10.1186881Z","updatedOn":"2022-04-13T07:43:10.1186881Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0","type":"Microsoft.Authorization/roleAssignments","name":"dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:58:57.7706882Z","updatedOn":"2022-04-13T08:58:57.7706882Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9e3d10bf-9bfa-4a97-9ab1-b972a348abd0","type":"Microsoft.Authorization/roleAssignments","name":"9e3d10bf-9bfa-4a97-9ab1-b972a348abd0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:59:03.2414961Z","updatedOn":"2022-04-13T08:59:03.2414961Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/66eefd94-4bda-46df-9c61-7e92f83d91e7","type":"Microsoft.Authorization/roleAssignments","name":"66eefd94-4bda-46df-9c61-7e92f83d91e7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:35.8887781Z","updatedOn":"2022-04-13T10:17:35.8887781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/77f4f7a3-a377-49f7-a094-945b82b2bfff","type":"Microsoft.Authorization/roleAssignments","name":"77f4f7a3-a377-49f7-a094-945b82b2bfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:41.2233089Z","updatedOn":"2022-04-13T10:17:41.2233089Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1a71aac6-e9ce-40ff-a39f-7594df2ea6e9","type":"Microsoft.Authorization/roleAssignments","name":"1a71aac6-e9ce-40ff-a39f-7594df2ea6e9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:19.4532093Z","updatedOn":"2022-04-21T06:57:19.4532093Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/eede4548-9f71-44b7-8077-c49aa44894b4","type":"Microsoft.Authorization/roleAssignments","name":"eede4548-9f71-44b7-8077-c49aa44894b4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:24.3439247Z","updatedOn":"2022-04-21T06:57:24.3439247Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c011acd2-8b5d-45d6-b6c1-4ffe1867ce31","type":"Microsoft.Authorization/roleAssignments","name":"c011acd2-8b5d-45d6-b6c1-4ffe1867ce31"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:25.7258076Z","updatedOn":"2022-05-24T11:54:25.7258076Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9a7dc348-d24e-438b-84b0-c7cda5bf92c4","type":"Microsoft.Authorization/roleAssignments","name":"9a7dc348-d24e-438b-84b0-c7cda5bf92c4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:29.8931759Z","updatedOn":"2022-05-24T11:54:29.8931759Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aeb54d04-84b8-4530-bd7e-fe01dafd82ab","type":"Microsoft.Authorization/roleAssignments","name":"aeb54d04-84b8-4530-bd7e-fe01dafd82ab"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"f2cee52e-3d75-4f49-acc4-b5aaf72232ee","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T11:01:05.6238088Z","updatedOn":"2022-06-03T11:01:05.6238088Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2bd63fbe-e197-434f-ba1e-016bad298ff7","type":"Microsoft.Authorization/roleAssignments","name":"2bd63fbe-e197-434f-ba1e-016bad298ff7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:20:41.1511200Z","updatedOn":"2022-06-03T13:22:39.1076287Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f12c7867-43e5-5530-98e9-9d8a2f39fb92","type":"Microsoft.Authorization/roleAssignments","name":"f12c7867-43e5-5530-98e9-9d8a2f39fb92"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:37:09.9515887Z","updatedOn":"2022-06-03T14:40:22.4040874Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/bace23ac-6978-5318-a146-d49599599b02","type":"Microsoft.Authorization/roleAssignments","name":"bace23ac-6978-5318-a146-d49599599b02"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.0377251Z","updatedOn":"2022-06-06T11:22:08.0377251Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/32e50355-7960-4d1b-aa22-e9255b475b8b","type":"Microsoft.Authorization/roleAssignments","name":"32e50355-7960-4d1b-aa22-e9255b475b8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.5127363Z","updatedOn":"2022-06-06T11:22:08.5127363Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/df253c65-35fc-4ff6-9a32-39b3fe20a6e3","type":"Microsoft.Authorization/roleAssignments","name":"df253c65-35fc-4ff6-9a32-39b3fe20a6e3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5f137a67-1b88-4f98-aa20-b71a7082dc56","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-10T14:11:57.5623976Z","updatedOn":"2022-06-10T14:11:57.5623976Z","createdBy":"9c973a07-b207-473c-9687-bd693ba8e460","updatedBy":"9c973a07-b207-473c-9687-bd693ba8e460","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e409f573-8bda-4b7e-854a-61c445d36c6f","type":"Microsoft.Authorization/roleAssignments","name":"e409f573-8bda-4b7e-854a-61c445d36c6f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-20T05:21:19.8209962Z","updatedOn":"2022-06-20T05:21:19.8209962Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ac2ba280-9929-47f1-9973-fdc5c3f5446f","type":"Microsoft.Authorization/roleAssignments","name":"ac2ba280-9929-47f1-9973-fdc5c3f5446f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"961a41dc-cbb6-4777-9b6c-a6d4d1ea4faa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:02:09.6478601Z","updatedOn":"2022-06-21T12:02:09.6478601Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/efc8d400-cd5e-41d3-99e6-65878c1f888c","type":"Microsoft.Authorization/roleAssignments","name":"efc8d400-cd5e-41d3-99e6-65878c1f888c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"961a41dc-cbb6-4777-9b6c-a6d4d1ea4faa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:02:31.1213523Z","updatedOn":"2022-06-21T12:02:31.1213523Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1ad6de95-d660-4f0a-84cf-1b297eafe5f6","type":"Microsoft.Authorization/roleAssignments","name":"1ad6de95-d660-4f0a-84cf-1b297eafe5f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7c567124-5292-4819-aa73-0224bf1c42e1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-23T13:38:54.7542852Z","updatedOn":"2021-05-23T13:38:54.7542852Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0809d692-f58f-43f2-b597-7f115957407e","type":"Microsoft.Authorization/roleAssignments","name":"0809d692-f58f-43f2-b597-7f115957407e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"955c9d1b-0cb6-4ff6-91c9-f4aadf67ffe8","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:45:08.3835615Z","updatedOn":"2021-05-24T16:45:08.3835615Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1b1ac6ab-19e7-4c4f-91d2-5be73096da2c","type":"Microsoft.Authorization/roleAssignments","name":"1b1ac6ab-19e7-4c4f-91d2-5be73096da2c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7221c906-782c-44a0-ab2f-f23d8a95ce25","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:56:16.2751421Z","updatedOn":"2021-05-24T16:56:16.2751421Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/ca8f2433-76dc-49fa-828d-9cd2861ec25c","type":"Microsoft.Authorization/roleAssignments","name":"ca8f2433-76dc-49fa-828d-9cd2861ec25c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:53.5542743Z","updatedOn":"2021-06-04T06:40:53.5542743Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9d9ac2a8-dbac-41bb-9f17-c473f02c6370","type":"Microsoft.Authorization/roleAssignments","name":"9d9ac2a8-dbac-41bb-9f17-c473f02c6370"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:57.1326805Z","updatedOn":"2021-06-04T06:40:57.1326805Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/14b1338c-95f6-44f9-ad22-395f8ebbb1fe","type":"Microsoft.Authorization/roleAssignments","name":"14b1338c-95f6-44f9-ad22-395f8ebbb1fe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:18.2829699Z","updatedOn":"2021-06-04T07:02:18.2829699Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93","type":"Microsoft.Authorization/roleAssignments","name":"bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:22.4343547Z","updatedOn":"2021-06-04T07:02:22.4343547Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/26bab283-0772-4c03-8dc1-a50c8ffa597d","type":"Microsoft.Authorization/roleAssignments","name":"26bab283-0772-4c03-8dc1-a50c8ffa597d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:08.8293677Z","updatedOn":"2021-06-04T07:19:08.8293677Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/d972f611-a4bd-4b80-9e78-980984602450","type":"Microsoft.Authorization/roleAssignments","name":"d972f611-a4bd-4b80-9e78-980984602450"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:12.8400651Z","updatedOn":"2021-06-04T07:19:12.8400651Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/b9393755-f5ca-41ef-a631-fb62184c57a8","type":"Microsoft.Authorization/roleAssignments","name":"b9393755-f5ca-41ef-a631-fb62184c57a8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:15.2633798Z","updatedOn":"2021-06-04T09:14:15.2633798Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/094981c0-d59c-4f5b-9581-72c08da65454","type":"Microsoft.Authorization/roleAssignments","name":"094981c0-d59c-4f5b-9581-72c08da65454"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:19.9554484Z","updatedOn":"2021-06-04T09:14:19.9554484Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0cac59e0-0464-4bf6-9bef-f1fadc2b08f4","type":"Microsoft.Authorization/roleAssignments","name":"0cac59e0-0464-4bf6-9bef-f1fadc2b08f4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:52.6766200Z","updatedOn":"2021-08-30T06:31:52.6766200Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/f67c65e2-e609-4ffe-b504-294b00cbd2fd","type":"Microsoft.Authorization/roleAssignments","name":"f67c65e2-e609-4ffe-b504-294b00cbd2fd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:57.1552781Z","updatedOn":"2021-08-30T06:31:57.1552781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aaeab926-d6e2-4bb6-9e9e-0607e75cc75f","type":"Microsoft.Authorization/roleAssignments","name":"aaeab926-d6e2-4bb6-9e9e-0607e75cc75f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"2ab5fb95-b72e-4d12-948b-4223754d8ffa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-09-08T08:24:19.3547440Z","updatedOn":"2021-09-08T08:24:19.3547440Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/43ee13b8-5abd-51e0-88e3-ae84049da70e","type":"Microsoft.Authorization/roleAssignments","name":"43ee13b8-5abd-51e0-88e3-ae84049da70e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for + temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' + headers: + cache-control: + - no-cache + content-length: + - '92497' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:11 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Snapshot%20Contributor%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Disk Snapshot Contributor","type":"BuiltInRole","description":"Provides + permission to backup vault to manage disk snapshots.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Compute/snapshots/delete","Microsoft.Compute/snapshots/write","Microsoft.Compute/snapshots/read","Microsoft.Compute/snapshots/beginGetAccess/action","Microsoft.Compute/snapshots/endGetAccess/action","Microsoft.Compute/disks/beginGetAccess/action","Microsoft.Storage/storageAccounts/listkeys/action","Microsoft.Storage/storageAccounts/write","Microsoft.Storage/storageAccounts/read","Microsoft.Storage/storageAccounts/delete"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T12:18:51.4471411Z","updatedOn":"2021-11-11T20:14:56.9158814Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","type":"Microsoft.Authorization/roleDefinitions","name":"7efff54f-a5b4-42b5-a1c5-5411624893ce"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1160' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:11 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%271831aada-7907-4673-a5e2-b11217764c9e%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:11 GMT + odata-version: + - '4.0' + request-id: + - 0d0a4d09-b33d-46bd-89d7-f1553fdb8908 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AC63"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["1831aada-7907-4673-a5e2-b11217764c9e"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"1831aada-7907-4673-a5e2-b11217764c9e","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"83e38c26-3206-42ba-80c8-8736c2ce5f25","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-06-21T12:15:51Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["83e38c26-3206-42ba-80c8-8736c2ce5f25","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"D34F9308B0CBCD7D7F3111242E413CE85577BAC5","displayName":"CN=83e38c26-3206-42ba-80c8-8736c2ce5f25","endDateTime":"2022-09-19T12:10:00Z","key":null,"keyId":"7ad906cc-d929-4ee5-8c8d-62a506233a25","startDateTime":"2022-06-21T12:10:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '1730' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:11 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - d3463f46-b7f3-4dab-abb3-7df494b6b852 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AC64"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Snapshot%20Contributor%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Disk Snapshot Contributor","type":"BuiltInRole","description":"Provides + permission to backup vault to manage disk snapshots.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Compute/snapshots/delete","Microsoft.Compute/snapshots/write","Microsoft.Compute/snapshots/read","Microsoft.Compute/snapshots/beginGetAccess/action","Microsoft.Compute/snapshots/endGetAccess/action","Microsoft.Compute/disks/beginGetAccess/action","Microsoft.Storage/storageAccounts/listkeys/action","Microsoft.Storage/storageAccounts/write","Microsoft.Storage/storageAccounts/read","Microsoft.Storage/storageAccounts/delete"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T12:18:51.4471411Z","updatedOn":"2021-11-11T20:14:56.9158814Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","type":"Microsoft.Authorization/roleDefinitions","name":"7efff54f-a5b4-42b5-a1c5-5411624893ce"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1160' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:12 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce", + "principalId": "1831aada-7907-4673-a5e2-b11217764c9e", "principalType": "ServicePrincipal"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '270' + Content-Type: + - application/json; charset=utf-8 + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c5856647-b5ff-4264-a966-049b6a58a42f?api-version=2020-04-01-preview + response: + body: + string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:13.3430985Z","updatedOn":"2022-06-21T12:22:13.7337272Z","createdBy":null,"updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c5856647-b5ff-4264-a966-049b6a58a42f","type":"Microsoft.Authorization/roleAssignments","name":"c5856647-b5ff-4264-a966-049b6a58a42f"}' + headers: + cache-control: + - no-cache + content-length: + - '873' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:15 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","identity":{"type":"SystemAssigned","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false,"monitoringSettings":{"azureMonitorAlertSettings":{"alertsForAllJobFailures":"Disabled"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault","name":"cli-test-new-vault","type":"Microsoft.DataProtection/backupVaults"}' + headers: + cache-control: + - no-cache + content-length: + - '648' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:22:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%271831aada-7907-4673-a5e2-b11217764c9e%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:16 GMT + odata-version: + - '4.0' + request-id: + - 8d500e61-013b-4665-95ab-1da01602fd2b + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000ADD4"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["1831aada-7907-4673-a5e2-b11217764c9e"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"1831aada-7907-4673-a5e2-b11217764c9e","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"83e38c26-3206-42ba-80c8-8736c2ce5f25","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-06-21T12:15:51Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["83e38c26-3206-42ba-80c8-8736c2ce5f25","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"D34F9308B0CBCD7D7F3111242E413CE85577BAC5","displayName":"CN=83e38c26-3206-42ba-80c8-8736c2ce5f25","endDateTime":"2022-09-19T12:10:00Z","key":null,"keyId":"7ad906cc-d929-4ee5-8c8d-62a506233a25","startDateTime":"2022-06-21T12:10:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '1730' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:17 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - 19333040-5777-469d-81e1-717d308dd2be + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000ADD5"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview + response: + body: + string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:49.6216206Z","updatedOn":"2022-04-12T12:46:49.6216206Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/85cc2dff-c5d4-42a3-acb6-255cd4208ef4","type":"Microsoft.Authorization/roleAssignments","name":"85cc2dff-c5d4-42a3-acb6-255cd4208ef4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"662a0ec2-cfbc-45f9-ae31-2cc53070e765","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T12:46:57.1459341Z","updatedOn":"2022-04-12T12:46:57.1459341Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aba8e90d-d951-4cb5-a346-b71e478f4d1b","type":"Microsoft.Authorization/roleAssignments","name":"aba8e90d-d951-4cb5-a346-b71e478f4d1b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:28.3678603Z","updatedOn":"2022-04-12T13:09:28.3678603Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/79d87d90-f984-4f53-a169-2eca51c00104","type":"Microsoft.Authorization/roleAssignments","name":"79d87d90-f984-4f53-a169-2eca51c00104"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"30bc1f3b-ca1a-4c55-96ff-4c026f12eaa1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-12T13:09:33.3916295Z","updatedOn":"2022-04-12T13:09:33.3916295Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/5e185742-c91a-4efe-b0d8-db9524685ec5","type":"Microsoft.Authorization/roleAssignments","name":"5e185742-c91a-4efe-b0d8-db9524685ec5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:02.2689248Z","updatedOn":"2022-04-13T07:01:02.2689248Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c9b4f9ab-d687-4a65-910a-5bcb2f974bfe","type":"Microsoft.Authorization/roleAssignments","name":"c9b4f9ab-d687-4a65-910a-5bcb2f974bfe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3c582fc7-e68a-4991-a2f6-3d8a7a1f23c1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:01:09.3571703Z","updatedOn":"2022-04-13T07:01:09.3571703Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/8bedf13c-aa1a-4191-aa97-573f14fd97ee","type":"Microsoft.Authorization/roleAssignments","name":"8bedf13c-aa1a-4191-aa97-573f14fd97ee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:04.6456354Z","updatedOn":"2022-04-13T07:43:04.6456354Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bd0fc30a-6ccf-4c22-a26b-0e31aba16035","type":"Microsoft.Authorization/roleAssignments","name":"bd0fc30a-6ccf-4c22-a26b-0e31aba16035"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"a31004b5-ce06-49e1-8706-e8c7afe68695","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T07:43:10.1186881Z","updatedOn":"2022-04-13T07:43:10.1186881Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0","type":"Microsoft.Authorization/roleAssignments","name":"dadaa3cd-f442-4d5c-aed3-7cbab2fba3e0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:58:57.7706882Z","updatedOn":"2022-04-13T08:58:57.7706882Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9e3d10bf-9bfa-4a97-9ab1-b972a348abd0","type":"Microsoft.Authorization/roleAssignments","name":"9e3d10bf-9bfa-4a97-9ab1-b972a348abd0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"6f6a803e-4dc5-488a-8566-a4f0a984975e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T08:59:03.2414961Z","updatedOn":"2022-04-13T08:59:03.2414961Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/66eefd94-4bda-46df-9c61-7e92f83d91e7","type":"Microsoft.Authorization/roleAssignments","name":"66eefd94-4bda-46df-9c61-7e92f83d91e7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:35.8887781Z","updatedOn":"2022-04-13T10:17:35.8887781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/77f4f7a3-a377-49f7-a094-945b82b2bfff","type":"Microsoft.Authorization/roleAssignments","name":"77f4f7a3-a377-49f7-a094-945b82b2bfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"829da4fd-a5f4-4ca7-bc3d-0679d104c5f0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-13T10:17:41.2233089Z","updatedOn":"2022-04-13T10:17:41.2233089Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1a71aac6-e9ce-40ff-a39f-7594df2ea6e9","type":"Microsoft.Authorization/roleAssignments","name":"1a71aac6-e9ce-40ff-a39f-7594df2ea6e9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:19.4532093Z","updatedOn":"2022-04-21T06:57:19.4532093Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/eede4548-9f71-44b7-8077-c49aa44894b4","type":"Microsoft.Authorization/roleAssignments","name":"eede4548-9f71-44b7-8077-c49aa44894b4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3f74f5b7-f4f6-4b65-a45d-f1c60467e115","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-04-21T06:57:24.3439247Z","updatedOn":"2022-04-21T06:57:24.3439247Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c011acd2-8b5d-45d6-b6c1-4ffe1867ce31","type":"Microsoft.Authorization/roleAssignments","name":"c011acd2-8b5d-45d6-b6c1-4ffe1867ce31"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:25.7258076Z","updatedOn":"2022-05-24T11:54:25.7258076Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9a7dc348-d24e-438b-84b0-c7cda5bf92c4","type":"Microsoft.Authorization/roleAssignments","name":"9a7dc348-d24e-438b-84b0-c7cda5bf92c4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0b2dcd24-9585-4bb4-a7c3-83e0e3bd0dc7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-05-24T11:54:29.8931759Z","updatedOn":"2022-05-24T11:54:29.8931759Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aeb54d04-84b8-4530-bd7e-fe01dafd82ab","type":"Microsoft.Authorization/roleAssignments","name":"aeb54d04-84b8-4530-bd7e-fe01dafd82ab"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"f2cee52e-3d75-4f49-acc4-b5aaf72232ee","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T11:01:05.6238088Z","updatedOn":"2022-06-03T11:01:05.6238088Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2bd63fbe-e197-434f-ba1e-016bad298ff7","type":"Microsoft.Authorization/roleAssignments","name":"2bd63fbe-e197-434f-ba1e-016bad298ff7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:20:41.1511200Z","updatedOn":"2022-06-03T13:22:39.1076287Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f12c7867-43e5-5530-98e9-9d8a2f39fb92","type":"Microsoft.Authorization/roleAssignments","name":"f12c7867-43e5-5530-98e9-9d8a2f39fb92"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:37:09.9515887Z","updatedOn":"2022-06-03T14:40:22.4040874Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/bace23ac-6978-5318-a146-d49599599b02","type":"Microsoft.Authorization/roleAssignments","name":"bace23ac-6978-5318-a146-d49599599b02"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.0377251Z","updatedOn":"2022-06-06T11:22:08.0377251Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/32e50355-7960-4d1b-aa22-e9255b475b8b","type":"Microsoft.Authorization/roleAssignments","name":"32e50355-7960-4d1b-aa22-e9255b475b8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.5127363Z","updatedOn":"2022-06-06T11:22:08.5127363Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/df253c65-35fc-4ff6-9a32-39b3fe20a6e3","type":"Microsoft.Authorization/roleAssignments","name":"df253c65-35fc-4ff6-9a32-39b3fe20a6e3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5f137a67-1b88-4f98-aa20-b71a7082dc56","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-10T14:11:57.5623976Z","updatedOn":"2022-06-10T14:11:57.5623976Z","createdBy":"9c973a07-b207-473c-9687-bd693ba8e460","updatedBy":"9c973a07-b207-473c-9687-bd693ba8e460","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e409f573-8bda-4b7e-854a-61c445d36c6f","type":"Microsoft.Authorization/roleAssignments","name":"e409f573-8bda-4b7e-854a-61c445d36c6f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-20T05:21:19.8209962Z","updatedOn":"2022-06-20T05:21:19.8209962Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ac2ba280-9929-47f1-9973-fdc5c3f5446f","type":"Microsoft.Authorization/roleAssignments","name":"ac2ba280-9929-47f1-9973-fdc5c3f5446f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"961a41dc-cbb6-4777-9b6c-a6d4d1ea4faa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:02:09.6478601Z","updatedOn":"2022-06-21T12:02:09.6478601Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/efc8d400-cd5e-41d3-99e6-65878c1f888c","type":"Microsoft.Authorization/roleAssignments","name":"efc8d400-cd5e-41d3-99e6-65878c1f888c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"961a41dc-cbb6-4777-9b6c-a6d4d1ea4faa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:02:31.1213523Z","updatedOn":"2022-06-21T12:02:31.1213523Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1ad6de95-d660-4f0a-84cf-1b297eafe5f6","type":"Microsoft.Authorization/roleAssignments","name":"1ad6de95-d660-4f0a-84cf-1b297eafe5f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:14.2181104Z","updatedOn":"2022-06-21T12:22:14.2181104Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/c5856647-b5ff-4264-a966-049b6a58a42f","type":"Microsoft.Authorization/roleAssignments","name":"c5856647-b5ff-4264-a966-049b6a58a42f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7c567124-5292-4819-aa73-0224bf1c42e1","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-23T13:38:54.7542852Z","updatedOn":"2021-05-23T13:38:54.7542852Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0809d692-f58f-43f2-b597-7f115957407e","type":"Microsoft.Authorization/roleAssignments","name":"0809d692-f58f-43f2-b597-7f115957407e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"955c9d1b-0cb6-4ff6-91c9-f4aadf67ffe8","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:45:08.3835615Z","updatedOn":"2021-05-24T16:45:08.3835615Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/1b1ac6ab-19e7-4c4f-91d2-5be73096da2c","type":"Microsoft.Authorization/roleAssignments","name":"1b1ac6ab-19e7-4c4f-91d2-5be73096da2c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"7221c906-782c-44a0-ab2f-f23d8a95ce25","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-05-24T16:56:16.2751421Z","updatedOn":"2021-05-24T16:56:16.2751421Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/ca8f2433-76dc-49fa-828d-9cd2861ec25c","type":"Microsoft.Authorization/roleAssignments","name":"ca8f2433-76dc-49fa-828d-9cd2861ec25c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:53.5542743Z","updatedOn":"2021-06-04T06:40:53.5542743Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/9d9ac2a8-dbac-41bb-9f17-c473f02c6370","type":"Microsoft.Authorization/roleAssignments","name":"9d9ac2a8-dbac-41bb-9f17-c473f02c6370"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"e1a3bbaa-4ffb-41a6-a154-b4870d9e86b4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T06:40:57.1326805Z","updatedOn":"2021-06-04T06:40:57.1326805Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/14b1338c-95f6-44f9-ad22-395f8ebbb1fe","type":"Microsoft.Authorization/roleAssignments","name":"14b1338c-95f6-44f9-ad22-395f8ebbb1fe"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:18.2829699Z","updatedOn":"2021-06-04T07:02:18.2829699Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93","type":"Microsoft.Authorization/roleAssignments","name":"bf5f4821-9baa-4dc6-9bd5-8c62f31c1a93"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"1da90707-df56-4d40-a805-2e646c9d95ab","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:02:22.4343547Z","updatedOn":"2021-06-04T07:02:22.4343547Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/26bab283-0772-4c03-8dc1-a50c8ffa597d","type":"Microsoft.Authorization/roleAssignments","name":"26bab283-0772-4c03-8dc1-a50c8ffa597d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:08.8293677Z","updatedOn":"2021-06-04T07:19:08.8293677Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/d972f611-a4bd-4b80-9e78-980984602450","type":"Microsoft.Authorization/roleAssignments","name":"d972f611-a4bd-4b80-9e78-980984602450"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"ab6b1184-ff37-4d3e-b460-fbe654f7ad5c","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T07:19:12.8400651Z","updatedOn":"2021-06-04T07:19:12.8400651Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/b9393755-f5ca-41ef-a631-fb62184c57a8","type":"Microsoft.Authorization/roleAssignments","name":"b9393755-f5ca-41ef-a631-fb62184c57a8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:15.2633798Z","updatedOn":"2021-06-04T09:14:15.2633798Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/094981c0-d59c-4f5b-9581-72c08da65454","type":"Microsoft.Authorization/roleAssignments","name":"094981c0-d59c-4f5b-9581-72c08da65454"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"3ffa4e46-39a3-4002-9292-e2adf0d1a8c6","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-06-04T09:14:19.9554484Z","updatedOn":"2021-06-04T09:14:19.9554484Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/0cac59e0-0464-4bf6-9bef-f1fadc2b08f4","type":"Microsoft.Authorization/roleAssignments","name":"0cac59e0-0464-4bf6-9bef-f1fadc2b08f4"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:52.6766200Z","updatedOn":"2021-08-30T06:31:52.6766200Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/f67c65e2-e609-4ffe-b504-294b00cbd2fd","type":"Microsoft.Authorization/roleAssignments","name":"f67c65e2-e609-4ffe-b504-294b00cbd2fd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"0242778c-29df-4863-ac18-2fb8fd004135","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-08-30T06:31:57.1552781Z","updatedOn":"2021-08-30T06:31:57.1552781Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/aaeab926-d6e2-4bb6-9e9e-0607e75cc75f","type":"Microsoft.Authorization/roleAssignments","name":"aaeab926-d6e2-4bb6-9e9e-0607e75cc75f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"2ab5fb95-b72e-4d12-948b-4223754d8ffa","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2021-09-08T08:24:19.3547440Z","updatedOn":"2021-09-08T08:24:19.3547440Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/43ee13b8-5abd-51e0-88e3-ae84049da70e","type":"Microsoft.Authorization/roleAssignments","name":"43ee13b8-5abd-51e0-88e3-ae84049da70e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for + temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' + headers: + cache-control: + - no-cache + content-length: + - '93405' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:17 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Storage%20Account%20Backup%20Contributor%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Storage Account Backup Contributor","type":"BuiltInRole","description":"Lets + you perform backup and restore operations using Azure Backup on the storage + account.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Authorization/locks/read","Microsoft.Authorization/locks/write","Microsoft.Authorization/locks/delete","Microsoft.Features/features/read","Microsoft.Features/providers/features/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Storage/operations/read","Microsoft.Storage/storageAccounts/objectReplicationPolicies/delete","Microsoft.Storage/storageAccounts/objectReplicationPolicies/read","Microsoft.Storage/storageAccounts/objectReplicationPolicies/write","Microsoft.Storage/storageAccounts/objectReplicationPolicies/restorePointMarkers/write","Microsoft.Storage/storageAccounts/blobServices/containers/read","Microsoft.Storage/storageAccounts/blobServices/containers/write","Microsoft.Storage/storageAccounts/blobServices/read","Microsoft.Storage/storageAccounts/blobServices/write","Microsoft.Storage/storageAccounts/read","Microsoft.Storage/storageAccounts/restoreBlobRanges/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-11-02T23:32:50.4203469Z","updatedOn":"2022-04-20T01:44:53.5887074Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","type":"Microsoft.Authorization/roleDefinitions","name":"e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1625' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:19 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%271831aada-7907-4673-a5e2-b11217764c9e%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:19 GMT + odata-version: + - '4.0' + request-id: + - 6bff4c41-e425-4325-bb3f-61314bcd44fe + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AB4A"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["1831aada-7907-4673-a5e2-b11217764c9e"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"1831aada-7907-4673-a5e2-b11217764c9e","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"83e38c26-3206-42ba-80c8-8736c2ce5f25","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-06-21T12:15:51Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["83e38c26-3206-42ba-80c8-8736c2ce5f25","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"D34F9308B0CBCD7D7F3111242E413CE85577BAC5","displayName":"CN=83e38c26-3206-42ba-80c8-8736c2ce5f25","endDateTime":"2022-09-19T12:10:00Z","key":null,"keyId":"7ad906cc-d929-4ee5-8c8d-62a506233a25","startDateTime":"2022-06-21T12:10:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '1730' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:19 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - e92008e5-ddb9-48bc-8e9f-0a52f75056d9 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF00005444"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Storage%20Account%20Backup%20Contributor%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Storage Account Backup Contributor","type":"BuiltInRole","description":"Lets + you perform backup and restore operations using Azure Backup on the storage + account.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Authorization/locks/read","Microsoft.Authorization/locks/write","Microsoft.Authorization/locks/delete","Microsoft.Features/features/read","Microsoft.Features/providers/features/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Storage/operations/read","Microsoft.Storage/storageAccounts/objectReplicationPolicies/delete","Microsoft.Storage/storageAccounts/objectReplicationPolicies/read","Microsoft.Storage/storageAccounts/objectReplicationPolicies/write","Microsoft.Storage/storageAccounts/objectReplicationPolicies/restorePointMarkers/write","Microsoft.Storage/storageAccounts/blobServices/containers/read","Microsoft.Storage/storageAccounts/blobServices/containers/write","Microsoft.Storage/storageAccounts/blobServices/read","Microsoft.Storage/storageAccounts/blobServices/write","Microsoft.Storage/storageAccounts/read","Microsoft.Storage/storageAccounts/restoreBlobRanges/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-11-02T23:32:50.4203469Z","updatedOn":"2022-04-20T01:44:53.5887074Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","type":"Microsoft.Authorization/roleDefinitions","name":"e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1625' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:19 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1", + "principalId": "1831aada-7907-4673-a5e2-b11217764c9e", "principalType": "ServicePrincipal"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '270' + Content-Type: + - application/json; charset=utf-8 + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --operation --permissions-scope -g --vault-name --backup-instance + --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount/providers/Microsoft.Authorization/roleAssignments/53d412a6-5a2f-4a5c-9b4d-b5a4dd56b340?api-version=2020-04-01-preview + response: + body: + string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:20.9898053Z","updatedOn":"2022-06-21T12:22:21.3803928Z","createdBy":null,"updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount/providers/Microsoft.Authorization/roleAssignments/53d412a6-5a2f-4a5c-9b4d-b5a4dd56b340","type":"Microsoft.Authorization/roleAssignments","name":"53d412a6-5a2f-4a5c-9b4d-b5a4dd56b340"}' + headers: + cache-control: + - no-cache + content-length: + - '1001' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:23 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault?api-version=2022-04-01 + response: + body: + string: '{"location":"centraluseuap","tags":{"Owner":"akneema","Purpose":"Testing","MABUsed":"Yes","DeleteBy":"12-9999"},"identity":{"type":"SystemAssigned","principalId":"b864e281-c12e-45c6-a0c7-6046a7de5481","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47"},"properties":{"provisioningState":"Succeeded","storageSettings":[{"datastoreType":"VaultStore","type":"LocallyRedundant"}],"isVaultProtectedByResourceGuard":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/oss-clitest-rg/providers/Microsoft.DataProtection/BackupVaults/oss-clitest-vault","name":"oss-clitest-vault","type":"Microsoft.DataProtection/backupVaults"}' + headers: + cache-control: + - no-cache + content-length: + - '645' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:22:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-keyvault/9.3.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault?api-version=2021-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault","name":"oss-clitest-keyvault","type":"Microsoft.KeyVault/vaults","location":"centraluseuap","tags":{"Owner":"akneema","Purpose":"Testing","MABUsed":"Yes","DeleteBy":"12-9999"},"systemData":{"lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:13:43.307Z"},"properties":{"sku":{"family":"A","name":"Standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"5095196a-def9-4146-8d92-e38f24b6e378","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","Decrypt","Encrypt","UnwrapKey","WrapKey","Verify","Sign","Purge","Release","Rotate","GetRotationPolicy","SetRotationPolicy"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore","Purge"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers","Purge"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f40e18f0-6544-45c2-9d24-639a8bb3b41a","permissions":{"keys":["Get","List","Backup"],"secrets":["Get","List","Backup"],"certificates":[]}}],"enabledForDeployment":false,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":false,"enableSoftDelete":true,"softDeleteRetentionInDays":90,"enableRbacAuthorization":false,"vaultUri":"https://oss-clitest-keyvault.vault.azure.net/","provisioningState":"Succeeded","publicNetworkAccess":"Enabled"}}' + headers: + cache-control: + - no-cache + content-length: + - '2141' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:27 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-keyvault-service-version: + - 1.5.413.0 + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - 0 + Content-Type: + - application/json; charset=utf-8 + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-keyvault/7.0 + Azure-SDK-For-Python + accept-language: + - en-US + method: GET + uri: https://oss-clitest-keyvault.vault.azure.net/secrets?api-version=7.0 + response: + body: + string: '{"error":{"code":"Unauthorized","message":"AKV10000: Request is missing + a Bearer or PoP token."}}' + headers: + cache-control: + - no-cache + content-length: + - '97' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:28 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000;includeSubDomains + www-authenticate: + - Bearer authorization="https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net" + x-content-type-options: + - nosniff + x-ms-keyvault-network-info: + - conn_type=Ipv4;addr=20.69.149.128;act_addr_fam=InterNetwork; + x-ms-keyvault-region: + - centraluseuap + x-ms-keyvault-service-version: + - 1.9.444.1 + x-powered-by: + - ASP.NET + status: + code: 401 + message: Unauthorized +- request: + body: '' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - 0 + Content-Type: + - application/json; charset=utf-8 + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-keyvault/7.0 + Azure-SDK-For-Python + accept-language: + - en-US + method: GET + uri: https://oss-clitest-keyvault.vault.azure.net/secrets?api-version=7.0 + response: + body: + string: '{"value":[{"contentType":"Wrapped BEK","id":"https://oss-clitest-keyvault.vault.azure.net/secrets/ADEA19F9-2D87-46AC-91CD-492758A0C8A7","attributes":{"enabled":true,"created":1645419092,"updated":1645419092,"recoveryLevel":"Recoverable+Purgeable"},"tags":{"DiskEncryptionKeyFileName":"ADEA19F9-2D87-46AC-91CD-492758A0C8A7.BEK","VolumeLetter":"C:\\","VolumeLabel":"Windows","MachineName":"sql-clicloudtes","DiskEncryptionKeyEncryptionKeyURL":"https://oss-clitest-keyvault.vault.azure.net/keys/sql-clitest-key/fad6b3422cc1472c8bfd9f6f5b923d0d","DiskEncryptionKeyEncryptionAlgorithm":"RSA-OAEP"}},{"id":"https://oss-clitest-keyvault.vault.azure.net/secrets/oss-clitest-secret","attributes":{"enabled":true,"created":1629969650,"updated":1629969650,"recoveryLevel":"Recoverable+Purgeable"},"tags":{}}],"nextLink":null}' + headers: + cache-control: + - no-cache + content-length: + - '814' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:28 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000;includeSubDomains + x-content-type-options: + - nosniff + x-ms-keyvault-network-info: + - conn_type=Ipv4;addr=20.69.149.128;act_addr_fam=InterNetwork; + x-ms-keyvault-region: + - centraluseuap + x-ms-keyvault-service-version: + - 1.9.444.1 + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-keyvault/9.3.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault?api-version=2021-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault","name":"oss-clitest-keyvault","type":"Microsoft.KeyVault/vaults","location":"centraluseuap","tags":{"Owner":"akneema","Purpose":"Testing","MABUsed":"Yes","DeleteBy":"12-9999"},"systemData":{"lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:13:43.307Z"},"properties":{"sku":{"family":"A","name":"Standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"5095196a-def9-4146-8d92-e38f24b6e378","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","Decrypt","Encrypt","UnwrapKey","WrapKey","Verify","Sign","Purge","Release","Rotate","GetRotationPolicy","SetRotationPolicy"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore","Purge"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers","Purge"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f40e18f0-6544-45c2-9d24-639a8bb3b41a","permissions":{"keys":["Get","List","Backup"],"secrets":["Get","List","Backup"],"certificates":[]}}],"enabledForDeployment":false,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":false,"enableSoftDelete":true,"softDeleteRetentionInDays":90,"enableRbacAuthorization":false,"vaultUri":"https://oss-clitest-keyvault.vault.azure.net/","provisioningState":"Succeeded","publicNetworkAccess":"Enabled"}}' + headers: + cache-control: + - no-cache + content-length: + - '2141' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-keyvault-service-version: + - 1.5.413.0 + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "tags": {"Owner": "akneema", "Purpose": "Testing", + "MABUsed": "Yes", "DeleteBy": "12-9999"}, "properties": {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", + "sku": {"family": "A", "name": "Standard"}, "accessPolicies": [{"tenantId": + "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "5095196a-def9-4146-8d92-e38f24b6e378", + "permissions": {"keys": ["Get", "List", "Update", "Create", "Import", "Delete", + "Recover", "Backup", "Restore", "Decrypt", "Encrypt", "UnwrapKey", "WrapKey", + "Verify", "Sign", "Purge", "Release", "Rotate", "GetRotationPolicy", "SetRotationPolicy"], + "secrets": ["Get", "List", "Set", "Delete", "Recover", "Backup", "Restore", + "Purge"], "certificates": ["Get", "List", "Update", "Create", "Import", "Delete", + "Recover", "Backup", "Restore", "ManageContacts", "ManageIssuers", "GetIssuers", + "ListIssuers", "SetIssuers", "DeleteIssuers", "Purge"]}}, {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", + "objectId": "90680173-e32e-4cf3-a1b8-d1a99ac56bbf", "permissions": {"keys": + ["Get", "List", "Update", "Create", "Import", "Delete", "Recover", "Backup", + "Restore"], "secrets": ["Get", "List", "Set", "Delete", "Recover", "Backup", + "Restore"], "certificates": ["Get", "List", "Update", "Create", "Import", "Delete", + "Recover", "Backup", "Restore", "ManageContacts", "ManageIssuers", "GetIssuers", + "ListIssuers", "SetIssuers", "DeleteIssuers"]}}, {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", + "objectId": "f40e18f0-6544-45c2-9d24-639a8bb3b41a", "permissions": {"keys": + ["Get", "List", "Backup"], "secrets": ["Get", "List", "Backup"], "certificates": + []}}, {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "b864e281-c12e-45c6-a0c7-6046a7de5481", + "permissions": {"secrets": ["List", "Get"]}}], "vaultUri": "https://oss-clitest-keyvault.vault.azure.net/", + "enabledForDeployment": false, "enabledForDiskEncryption": true, "enabledForTemplateDeployment": + false, "enableSoftDelete": true, "softDeleteRetentionInDays": 90, "enableRbacAuthorization": + false, "provisioningState": "Succeeded", "publicNetworkAccess": "Enabled"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '2095' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-keyvault/9.3.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault?api-version=2021-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault","name":"oss-clitest-keyvault","type":"Microsoft.KeyVault/vaults","location":"centraluseuap","tags":{"Owner":"akneema","Purpose":"Testing","MABUsed":"Yes","DeleteBy":"12-9999"},"systemData":{"lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:22:29.299Z"},"properties":{"sku":{"family":"A","name":"Standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"5095196a-def9-4146-8d92-e38f24b6e378","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","Decrypt","Encrypt","UnwrapKey","WrapKey","Verify","Sign","Purge","Release","Rotate","GetRotationPolicy","SetRotationPolicy"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore","Purge"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers","Purge"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f40e18f0-6544-45c2-9d24-639a8bb3b41a","permissions":{"keys":["Get","List","Backup"],"secrets":["Get","List","Backup"],"certificates":[]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"b864e281-c12e-45c6-a0c7-6046a7de5481","permissions":{"secrets":["List","Get"]}}],"enabledForDeployment":false,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":false,"enableSoftDelete":true,"softDeleteRetentionInDays":90,"enableRbacAuthorization":false,"vaultUri":"https://oss-clitest-keyvault.vault.azure.net/","provisioningState":"Succeeded","publicNetworkAccess":"Enabled"}}' + headers: + cache-control: + - no-cache + content-length: + - '2284' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-keyvault-service-version: + - 1.5.413.0 + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%27b864e281-c12e-45c6-a0c7-6046a7de5481%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:30 GMT + odata-version: + - '4.0' + request-id: + - 26712165-37bd-4395-be69-59474f6279ba + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000ADD4"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["b864e281-c12e-45c6-a0c7-6046a7de5481"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"b864e281-c12e-45c6-a0c7-6046a7de5481","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/oss-clitest-rg/providers/Microsoft.DataProtection/BackupVaults/oss-clitest-vault"],"appDisplayName":null,"appDescription":null,"appId":"49bc63b1-190a-4f4e-a962-58db2c2f7112","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2021-08-26T09:13:20Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"oss-clitest-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["49bc63b1-190a-4f4e-a962-58db2c2f7112","https://identity.azure.net/QVMExgU4rxwt5XEm5whEdHZLrmsaL9M/n/eZXzCcN54="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"10296B63A1DD090AB64281F85000C1822BB84F58","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-08-27T17:02:00Z","key":null,"keyId":"bbf02149-b332-4456-83c8-e66d2d66c8a1","startDateTime":"2022-05-29T17:02:00Z","type":"AsymmetricX509Cert","usage":"Verify"},{"customKeyIdentifier":"F0931109872A337B348A716A953CBFF5C7994B9B","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-07-12T15:44:00Z","key":null,"keyId":"c6e3d740-2fe2-4b79-9125-f45fa0deca41","startDateTime":"2022-04-13T15:44:00Z","type":"AsymmetricX509Cert","usage":"Verify"},{"customKeyIdentifier":"9FEDD522300546D12B6B57DCAA9A90BCB16CA3F7","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-05-27T14:18:00Z","key":null,"keyId":"ba16e82f-49d6-47d7-b4eb-799fafc7440c","startDateTime":"2022-02-26T14:18:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '2337' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:30 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - b6970f4f-2e41-485c-9ff8-386c0f14f0e8 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AC63"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview + response: + body: + string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"f2cee52e-3d75-4f49-acc4-b5aaf72232ee","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T11:01:05.6238088Z","updatedOn":"2022-06-03T11:01:05.6238088Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2bd63fbe-e197-434f-ba1e-016bad298ff7","type":"Microsoft.Authorization/roleAssignments","name":"2bd63fbe-e197-434f-ba1e-016bad298ff7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:20:41.1511200Z","updatedOn":"2022-06-03T13:22:39.1076287Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f12c7867-43e5-5530-98e9-9d8a2f39fb92","type":"Microsoft.Authorization/roleAssignments","name":"f12c7867-43e5-5530-98e9-9d8a2f39fb92"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:37:09.9515887Z","updatedOn":"2022-06-03T14:40:22.4040874Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/bace23ac-6978-5318-a146-d49599599b02","type":"Microsoft.Authorization/roleAssignments","name":"bace23ac-6978-5318-a146-d49599599b02"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.0377251Z","updatedOn":"2022-06-06T11:22:08.0377251Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/32e50355-7960-4d1b-aa22-e9255b475b8b","type":"Microsoft.Authorization/roleAssignments","name":"32e50355-7960-4d1b-aa22-e9255b475b8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.5127363Z","updatedOn":"2022-06-06T11:22:08.5127363Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/df253c65-35fc-4ff6-9a32-39b3fe20a6e3","type":"Microsoft.Authorization/roleAssignments","name":"df253c65-35fc-4ff6-9a32-39b3fe20a6e3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5f137a67-1b88-4f98-aa20-b71a7082dc56","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-10T14:11:57.5623976Z","updatedOn":"2022-06-10T14:11:57.5623976Z","createdBy":"9c973a07-b207-473c-9687-bd693ba8e460","updatedBy":"9c973a07-b207-473c-9687-bd693ba8e460","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e409f573-8bda-4b7e-854a-61c445d36c6f","type":"Microsoft.Authorization/roleAssignments","name":"e409f573-8bda-4b7e-854a-61c445d36c6f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-20T05:21:19.8209962Z","updatedOn":"2022-06-20T05:21:19.8209962Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ac2ba280-9929-47f1-9973-fdc5c3f5446f","type":"Microsoft.Authorization/roleAssignments","name":"ac2ba280-9929-47f1-9973-fdc5c3f5446f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for + temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' + headers: + cache-control: + - no-cache + content-length: + - '63441' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:30 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Reader%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Reader","type":"BuiltInRole","description":"View + all resources, but does not allow you to make any changes.","assignableScopes":["/"],"permissions":[{"actions":["*/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2015-02-02T21:55:09.8806423Z","updatedOn":"2021-11-11T20:13:47.8628684Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","type":"Microsoft.Authorization/roleDefinitions","name":"acdd72a7-3385-48ef-bd42-f606fba81ae7"}]}' + headers: + cache-control: + - no-cache + content-length: + - '627' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:30 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%27b864e281-c12e-45c6-a0c7-6046a7de5481%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:32 GMT + odata-version: + - '4.0' + request-id: + - 54c8d3db-16f5-424c-9137-69102a159239 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AB4D"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["b864e281-c12e-45c6-a0c7-6046a7de5481"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"b864e281-c12e-45c6-a0c7-6046a7de5481","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/oss-clitest-rg/providers/Microsoft.DataProtection/BackupVaults/oss-clitest-vault"],"appDisplayName":null,"appDescription":null,"appId":"49bc63b1-190a-4f4e-a962-58db2c2f7112","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2021-08-26T09:13:20Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"oss-clitest-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["49bc63b1-190a-4f4e-a962-58db2c2f7112","https://identity.azure.net/QVMExgU4rxwt5XEm5whEdHZLrmsaL9M/n/eZXzCcN54="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"10296B63A1DD090AB64281F85000C1822BB84F58","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-08-27T17:02:00Z","key":null,"keyId":"bbf02149-b332-4456-83c8-e66d2d66c8a1","startDateTime":"2022-05-29T17:02:00Z","type":"AsymmetricX509Cert","usage":"Verify"},{"customKeyIdentifier":"F0931109872A337B348A716A953CBFF5C7994B9B","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-07-12T15:44:00Z","key":null,"keyId":"c6e3d740-2fe2-4b79-9125-f45fa0deca41","startDateTime":"2022-04-13T15:44:00Z","type":"AsymmetricX509Cert","usage":"Verify"},{"customKeyIdentifier":"9FEDD522300546D12B6B57DCAA9A90BCB16CA3F7","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-05-27T14:18:00Z","key":null,"keyId":"ba16e82f-49d6-47d7-b4eb-799fafc7440c","startDateTime":"2022-02-26T14:18:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '2337' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:32 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - e01cd6cc-3874-44ce-9232-cbdbfc3665c4 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AB4C"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Reader%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Reader","type":"BuiltInRole","description":"View + all resources, but does not allow you to make any changes.","assignableScopes":["/"],"permissions":[{"actions":["*/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2015-02-02T21:55:09.8806423Z","updatedOn":"2021-11-11T20:13:47.8628684Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","type":"Microsoft.Authorization/roleDefinitions","name":"acdd72a7-3385-48ef-bd42-f606fba81ae7"}]}' + headers: + cache-control: + - no-cache + content-length: + - '627' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:33 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", + "principalId": "b864e281-c12e-45c6-a0c7-6046a7de5481", "principalType": "ServicePrincipal"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + Content-Length: + - '270' + Content-Type: + - application/json; charset=utf-8 + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleAssignments/deca4720-c500-4a69-b65d-994e0e95d9f0?api-version=2020-04-01-preview + response: + body: + string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"b864e281-c12e-45c6-a0c7-6046a7de5481","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:33.7543393Z","updatedOn":"2022-06-21T12:22:34.2387294Z","createdBy":null,"updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleAssignments/deca4720-c500-4a69-b65d-994e0e95d9f0","type":"Microsoft.Authorization/roleAssignments","name":"deca4720-c500-4a69-b65d-994e0e95d9f0"}' + headers: + cache-control: + - no-cache + content-length: + - '1009' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:36 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance update-msi-permissions + Connection: + - keep-alive + ParameterSetName: + - --datasource-type --permissions-scope -g --vault-name --operation --backup-instance + --keyvault-id --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-rdbms/10.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/firewallRules?api-version=2017-12-01 + response: + body: + string: '{"value":[{"properties":{"startIpAddress":"0.0.0.0","endIpAddress":"0.0.0.0"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/firewallRules/AllowAllWindowsAzureIps","name":"AllowAllWindowsAzureIps","type":"Microsoft.DBforPostgreSQL/servers/firewallRules"}]}' + headers: + cache-control: + - no-cache + content-length: + - '360' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:37 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment create + Connection: + - keep-alive + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%271831aada-7907-4673-a5e2-b11217764c9e%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:38 GMT + odata-version: + - '4.0' + request-id: + - 0aa3eb16-9af5-4949-a41f-507e22649126 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000ADD5"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["1831aada-7907-4673-a5e2-b11217764c9e"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment create + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"1831aada-7907-4673-a5e2-b11217764c9e","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/sarath-rg/providers/Microsoft.DataProtection/BackupVaults/cli-test-new-vault"],"appDisplayName":null,"appDescription":null,"appId":"83e38c26-3206-42ba-80c8-8736c2ce5f25","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2022-06-21T12:15:51Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"cli-test-new-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["83e38c26-3206-42ba-80c8-8736c2ce5f25","https://identity.azure.net/yHvRErNNmOMZ4EezrAqFKc6Ca0cDdhCvjeK23cGv1hE="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"D34F9308B0CBCD7D7F3111242E413CE85577BAC5","displayName":"CN=83e38c26-3206-42ba-80c8-8736c2ce5f25","endDateTime":"2022-09-19T12:10:00Z","key":null,"keyId":"7ad906cc-d929-4ee5-8c8d-62a506233a25","startDateTime":"2022-06-21T12:10:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '1730' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:38 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - 71abb257-a2e5-42e6-9da2-7895c9c070f9 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"001","RoleInstance":"CY4PEPF0000AC63"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment create + Connection: + - keep-alive + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Disk%20Restore%20Operator%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Disk Restore Operator","type":"BuiltInRole","description":"Provides + permission to backup vault to perform disk restore.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Compute/disks/write","Microsoft.Compute/disks/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2020-12-15T12:18:31.8481619Z","updatedOn":"2021-11-11T20:14:56.7408912Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","type":"Microsoft.Authorization/roleDefinitions","name":"b50d9833-a0cb-478e-945f-707fcc997c13"}]}' + headers: + cache-control: + - no-cache + content-length: + - '782' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:38 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13", + "principalId": "1831aada-7907-4673-a5e2-b11217764c9e", "principalType": "ServicePrincipal"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment create + Connection: + - keep-alive + Content-Length: + - '270' + Content-Type: + - application/json; charset=utf-8 + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/a3560e50-7085-48f4-85a1-97487179cc5d?api-version=2020-04-01-preview + response: + body: + string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b50d9833-a0cb-478e-945f-707fcc997c13","principalId":"1831aada-7907-4673-a5e2-b11217764c9e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:39.4280166Z","updatedOn":"2022-06-21T12:22:40.1468006Z","createdBy":null,"updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Authorization/roleAssignments/a3560e50-7085-48f4-85a1-97487179cc5d","type":"Microsoft.Authorization/roleAssignments","name":"a3560e50-7085-48f4-85a1-97487179cc5d"}' + headers: + cache-control: + - no-cache + content-length: + - '873' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:22:41 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' + status: + code: 201 + message: Created +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.Compute/disks", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new", + "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new", "resourceType": + "Microsoft.Compute/disks", "resourceUri": ""}, "policyInfo": {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy", + "policyParameters": {"dataStoreParametersList": [{"objectType": "AzureOperationalStoreParameters", + "dataStoreType": "OperationalStore", "resourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + Content-Length: + - '866' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:24:42 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==","status":"Inprogress","startTime":"2022-06-21T12:24:43.3152702Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:24:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==","status":"Succeeded","startTime":"2022-06-21T12:24:43.3152702Z","endTime":"2022-06-21T12:25:05Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:25:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZkODExOGU0LTEzZWUtNDdjZC1iMDg5LTQzYmY5NmI1MWMxMA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:25:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.Storage/storageAccounts/blobServices", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount", + "resourceLocation": "centraluseuap", "resourceName": "cliteststoreaccount", + "resourceType": "Microsoft.Storage/storageAccounts", "resourceUri": ""}, "policyInfo": + {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy"}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + Content-Length: + - '678' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:25:25 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==","status":"Inprogress","startTime":"2022-06-21T12:25:25.9435765Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:25:35 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==","status":"Succeeded","startTime":"2022-06-21T12:25:25.9435765Z","endTime":"2022-06-21T12:25:47Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:26:05 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '997' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2IyNDlhMDc0LWRmNmQtNDQyMC1iMDNkLWJmNTM3YzNjMTNhYw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:26:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/databases/postgres", + "resourceLocation": "centraluseuap", "resourceName": "postgres", "resourceType": + "Microsoft.DBforPostgreSQL/servers/databases", "resourceUri": ""}, "dataSourceSetInfo": + {"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases", "objectType": + "DatasourceSet", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server", + "resourceLocation": "centraluseuap", "resourceName": "oss-clitest-server", "resourceType": + "Microsoft.DBforPostgreSQL/servers", "resourceUri": ""}, "policyInfo": {"policyId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/backupPolicies/oss-clitest-policy"}, + "datasourceAuthCredentials": {"objectType": "SecretStoreBasedAuthCredentials", + "secretStoreResource": {"uri": "https://oss-clitest-keyvault.vault.azure.net/secrets/oss-clitest-secret", + "secretStoreType": "AzureKeyVault"}}, "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + Content-Length: + - '1357' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:26:07 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==","name":"NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==","status":"Inprogress","startTime":"2022-06-21T12:26:07.9471064Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '481' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:26:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '997' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DataProtection/backupVaults/oss-clitest-vault/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==","name":"NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==","status":"Succeeded","startTime":"2022-06-21T12:26:07.9471064Z","endTime":"2022-06-21T12:26:29Z"}' + headers: + cache-control: + - no-cache + content-length: + - '480' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:26:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '996' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-backup + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/NTc5ZTVjYzItYTNmMC00OTM1LWFhN2QtOWQwNmE5NGVmMzE3O2MyZjgyNWFjLTQxYzctNGZkNy04MDM2LTc4NTU3YmQxZDQ2OA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:26:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment delete + Connection: + - keep-alive + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: GET + uri: https://graph.microsoft.com/v1.0/servicePrincipals?$filter=servicePrincipalNames%2Fany%28c%3Ac%20eq%20%27b864e281-c12e-45c6-a0c7-6046a7de5481%27%29 + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#servicePrincipals","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '92' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:26:48 GMT + odata-version: + - '4.0' + request-id: + - 098785bc-7fb3-4436-9b9a-b4efb85408ea + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"000","RoleInstance":"CY4PEPF0000AC66"}}' + x-ms-resource-unit: + - '1' + status: + code: 200 + message: OK +- request: + body: '{"ids": ["b864e281-c12e-45c6-a0c7-6046a7de5481"], "types": ["user", "group", + "servicePrincipal", "directoryObjectPartnerReference"]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment delete + Connection: + - keep-alive + Content-Length: + - '132' + Content-Type: + - application/json + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) AZURECLI/2.37.0 + method: POST + uri: https://graph.microsoft.com/v1.0/directoryObjects/getByIds + response: + body: + string: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#directoryObjects","value":[{"@odata.type":"#microsoft.graph.servicePrincipal","id":"b864e281-c12e-45c6-a0c7-6046a7de5481","deletedDateTime":null,"accountEnabled":true,"alternativeNames":["isExplicit=False","/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/oss-clitest-rg/providers/Microsoft.DataProtection/BackupVaults/oss-clitest-vault"],"appDisplayName":null,"appDescription":null,"appId":"49bc63b1-190a-4f4e-a962-58db2c2f7112","applicationTemplateId":null,"appOwnerOrganizationId":null,"appRoleAssignmentRequired":false,"createdDateTime":"2021-08-26T09:13:20Z","description":null,"disabledByMicrosoftStatus":null,"displayName":"oss-clitest-vault","homepage":null,"loginUrl":null,"logoutUrl":null,"notes":null,"notificationEmailAddresses":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyThumbprint":null,"replyUrls":[],"servicePrincipalNames":["49bc63b1-190a-4f4e-a962-58db2c2f7112","https://identity.azure.net/QVMExgU4rxwt5XEm5whEdHZLrmsaL9M/n/eZXzCcN54="],"servicePrincipalType":"ManagedIdentity","signInAudience":null,"tags":[],"tokenEncryptionKeyId":null,"info":null,"samlSingleSignOnSettings":null,"verifiedPublisher":{"displayName":null,"verifiedPublisherId":null,"addedDateTime":null},"addIns":[],"appRoles":[],"keyCredentials":[{"customKeyIdentifier":"10296B63A1DD090AB64281F85000C1822BB84F58","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-08-27T17:02:00Z","key":null,"keyId":"bbf02149-b332-4456-83c8-e66d2d66c8a1","startDateTime":"2022-05-29T17:02:00Z","type":"AsymmetricX509Cert","usage":"Verify"},{"customKeyIdentifier":"F0931109872A337B348A716A953CBFF5C7994B9B","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-07-12T15:44:00Z","key":null,"keyId":"c6e3d740-2fe2-4b79-9125-f45fa0deca41","startDateTime":"2022-04-13T15:44:00Z","type":"AsymmetricX509Cert","usage":"Verify"},{"customKeyIdentifier":"9FEDD522300546D12B6B57DCAA9A90BCB16CA3F7","displayName":"CN=49bc63b1-190a-4f4e-a962-58db2c2f7112","endDateTime":"2022-05-27T14:18:00Z","key":null,"keyId":"ba16e82f-49d6-47d7-b4eb-799fafc7440c","startDateTime":"2022-02-26T14:18:00Z","type":"AsymmetricX509Cert","usage":"Verify"}],"oauth2PermissionScopes":[],"passwordCredentials":[],"resourceSpecificApplicationPermissions":[]}]}' + headers: + cache-control: + - no-cache + content-length: + - '2337' + content-type: + - application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 + date: + - Tue, 21 Jun 2022 12:26:48 GMT + location: + - https://graph.microsoft.com + odata-version: + - '4.0' + request-id: + - 7f7a78f1-7fa1-4023-bbaa-3492f0ff3b95 + strict-transport-security: + - max-age=31536000 + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-ms-ags-diagnostic: + - '{"ServerInfo":{"DataCenter":"West Central US","Slice":"E","Ring":"1","ScaleUnit":"000","RoleInstance":"CY4PEPF0000AC66"}}' + x-ms-resource-unit: + - '3' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment delete + Connection: + - keep-alive + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleAssignments?$filter=atScope%28%29&api-version=2020-04-01-preview + response: + body: + string: '{"value":[{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5c617d2b-99f8-4c90-98fe-dfe040fa33c1","principalType":"ServicePrincipal","scope":"/","condition":null,"conditionVersion":null,"createdOn":"2018-02-27T19:19:50.2663941Z","updatedOn":"2018-02-27T19:19:50.2663941Z","createdBy":null,"updatedBy":null,"delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Authorization/roleAssignments/3e883d24-b106-42ff-ad13-d7bf271b964d","type":"Microsoft.Authorization/roleAssignments","name":"3e883d24-b106-42ff-ad13-d7bf271b964d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T12:22:13.7498923Z","updatedOn":"2019-08-26T12:22:13.7498923Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f","type":"Microsoft.Authorization/roleAssignments","name":"8c3a4de9-1ebd-47ce-9dd9-bebf87a4e28f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-05-24T11:02:27.8515917Z","updatedOn":"2019-05-24T11:02:27.8515917Z","createdBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","updatedBy":"d1f96755-9bcf-44b8-ab82-df67360496c4","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b5eee4d7-5f9f-4f63-8040-8aec158c289b","type":"Microsoft.Authorization/roleAssignments","name":"b5eee4d7-5f9f-4f63-8040-8aec158c289b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-02-12T11:34:59.7104212Z","updatedOn":"2020-02-12T11:34:59.7104212Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f0618702-8404-4858-9a26-e61f23e7d44f","type":"Microsoft.Authorization/roleAssignments","name":"f0618702-8404-4858-9a26-e61f23e7d44f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-11-14T08:52:42.2795010Z","updatedOn":"2019-11-14T08:52:42.2795010Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/77daac38-9839-4b00-921b-e5d5a03e728c","type":"Microsoft.Authorization/roleAssignments","name":"77daac38-9839-4b00-921b-e5d5a03e728c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9693df58-7f72-4974-9bd3-1c3ceb0382f1","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-11-29T09:40:04.3180033Z","updatedOn":"2018-11-29T09:40:04.3180033Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7","type":"Microsoft.Authorization/roleAssignments","name":"ed3bf874-9c97-43f9-a5e9-b4ee6f8982f7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"d1f96755-9bcf-44b8-ab82-df67360496c4","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-05-08T10:28:08.2854940Z","updatedOn":"2020-05-08T10:28:08.2854940Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dfb3ca56-a0d4-44ce-ba35-b716c3fdab86","type":"Microsoft.Authorization/roleAssignments","name":"dfb3ca56-a0d4-44ce-ba35-b716c3fdab86"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-31T09:26:43.6440415Z","updatedOn":"2018-12-31T09:26:43.6440415Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45744ea8-780f-4f3e-88aa-b73d7f6997b2","type":"Microsoft.Authorization/roleAssignments","name":"45744ea8-780f-4f3e-88aa-b73d7f6997b2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e65078fb-6b02-434a-9f11-d06bf9bc0600","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-10-25T23:42:36.3444507Z","updatedOn":"2018-10-25T23:42:36.3444507Z","createdBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","updatedBy":"66cb55a5-e2a8-44ef-ae4b-5ab8fa2ec8d9","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e7ce51e8-4109-41d7-bc10-538b089599db","type":"Microsoft.Authorization/roleAssignments","name":"e7ce51e8-4109-41d7-bc10-538b089599db"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a7782e0f-1f9a-4882-b2c9-11227aad244e","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-06-16T04:32:50.9673703Z","updatedOn":"2020-06-16T04:32:50.9673703Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/9fa21f2f-81c3-47b6-b706-650b359b96c3","type":"Microsoft.Authorization/roleAssignments","name":"9fa21f2f-81c3-47b6-b706-650b359b96c3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"00b14177-f4d2-4a4b-94f6-6e80f75745c9","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T09:49:11.3750683Z","updatedOn":"2020-03-12T09:49:11.3750683Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fff0abf3-3cf7-46be-8bc7-1d1619a160fb","type":"Microsoft.Authorization/roleAssignments","name":"fff0abf3-3cf7-46be-8bc7-1d1619a160fb"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1d8b8d73-0cc6-4db8-b112-724b4a932253","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-26T10:28:45.4880023Z","updatedOn":"2019-08-26T10:28:45.4880023Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/397a3c9c-c258-4d4e-834d-00cc08227796","type":"Microsoft.Authorization/roleAssignments","name":"397a3c9c-c258-4d4e-834d-00cc08227796"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"235b2664-75e2-4741-bb6f-37e49babf6cd","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2018-12-05T04:29:28.7359096Z","updatedOn":"2018-12-05T04:29:28.7359096Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/3c830f42-5f89-4d8b-8f93-d3dc936f33bd","type":"Microsoft.Authorization/roleAssignments","name":"3c830f42-5f89-4d8b-8f93-d3dc936f33bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-08T08:38:50.1742930Z","updatedOn":"2020-04-08T08:38:50.1742930Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/5293a96b-830e-45f4-9e9e-22d7d020f0d8","type":"Microsoft.Authorization/roleAssignments","name":"5293a96b-830e-45f4-9e9e-22d7d020f0d8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3421d717-ca60-44e7-a9a1-773acec4e503","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T09:40:14.7658272Z","updatedOn":"2019-10-23T09:40:14.7658272Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/34b29558-faf9-43f0-a194-35ca0aa99fc5","type":"Microsoft.Authorization/roleAssignments","name":"34b29558-faf9-43f0-a194-35ca0aa99fc5"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3dc88d41-4d03-4105-970d-937e56de3839","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-06-27T12:59:44.6557891Z","updatedOn":"2019-06-27T12:59:44.6557891Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e57ab8d1-ce9a-4925-b09f-2567492d9b22","type":"Microsoft.Authorization/roleAssignments","name":"e57ab8d1-ce9a-4925-b09f-2567492d9b22"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"62c799b8-9b54-4c3d-97c9-9490d16a6a9a","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-08-08T13:01:20.9953919Z","updatedOn":"2019-08-08T13:01:20.9953919Z","createdBy":"1743392d-76d5-4611-94c2-448be522b83c","updatedBy":"1743392d-76d5-4611-94c2-448be522b83c","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e1b91810-0781-462d-9517-764e4a033822","type":"Microsoft.Authorization/roleAssignments","name":"e1b91810-0781-462d-9517-764e4a033822"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bb5b214-1182-465c-892f-ca7235abe1e7","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-10-23T08:03:15.6803676Z","updatedOn":"2019-10-23T08:03:15.6803676Z","createdBy":"1e845bc3-37db-4639-be09-d0cf1e448221","updatedBy":"1e845bc3-37db-4639-be09-d0cf1e448221","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/facbac06-ddab-437d-949a-207593fddfff","type":"Microsoft.Authorization/roleAssignments","name":"facbac06-ddab-437d-949a-207593fddfff"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"978b254a-54be-42af-80f5-e2a37b2e40e5","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2019-07-08T06:57:57.0377373Z","updatedOn":"2019-07-08T06:57:57.0377373Z","createdBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","updatedBy":"78af2a83-7619-4559-b0ee-cc30d118c6f3","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e","type":"Microsoft.Authorization/roleAssignments","name":"89be5b0a-dfa8-4bdf-b667-c6f63f7f3f0e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-04-17T09:14:08.7913669Z","updatedOn":"2020-04-17T09:14:08.7913669Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/950c635a-23a5-4a0e-8eb6-c53e929c9699","type":"Microsoft.Authorization/roleAssignments","name":"950c635a-23a5-4a0e-8eb6-c53e929c9699"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a4eae46b-a9d0-4586-8ac9-ba91b29f1d57","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-02-01T10:05:44.6784242Z","updatedOn":"2022-02-01T10:05:44.6784242Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8af2fb3a-292c-42a8-a870-1751c4ec4870","type":"Microsoft.Authorization/roleAssignments","name":"8af2fb3a-292c-42a8-a870-1751c4ec4870"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"85c33f6f-5d69-4b0e-bc06-95a7d3193519","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-04T09:52:52.7340040Z","updatedOn":"2022-05-04T09:52:52.7340040Z","createdBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","updatedBy":"447bbed8-9839-4d6e-9e39-fb9aeee1ec1d","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6a4f635c-309c-4a1d-8eea-86fb5aa91d80","type":"Microsoft.Authorization/roleAssignments","name":"6a4f635c-309c-4a1d-8eea-86fb5aa91d80"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.8791003Z","updatedOn":"2022-05-12T06:55:02.8791003Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/153c562d-6f8b-4872-86a7-84f10e177d8b","type":"Microsoft.Authorization/roleAssignments","name":"153c562d-6f8b-4872-86a7-84f10e177d8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-05-12T06:55:02.9137483Z","updatedOn":"2022-05-12T06:55:02.9137483Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a5bd1b6d-0084-40ec-9126-2250536b4778","type":"Microsoft.Authorization/roleAssignments","name":"a5bd1b6d-0084-40ec-9126-2250536b4778"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"f2cee52e-3d75-4f49-acc4-b5aaf72232ee","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T11:01:05.6238088Z","updatedOn":"2022-06-03T11:01:05.6238088Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2bd63fbe-e197-434f-ba1e-016bad298ff7","type":"Microsoft.Authorization/roleAssignments","name":"2bd63fbe-e197-434f-ba1e-016bad298ff7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/3e5e47e6-65f7-47ef-90b5-e5dd4d455f24","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:20:41.1511200Z","updatedOn":"2022-06-03T13:22:39.1076287Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/f12c7867-43e5-5530-98e9-9d8a2f39fb92","type":"Microsoft.Authorization/roleAssignments","name":"f12c7867-43e5-5530-98e9-9d8a2f39fb92"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/7efff54f-a5b4-42b5-a1c5-5411624893ce","principalId":"8be185b2-5cbf-45c1-b9af-cbbd9b59144d","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-03T13:37:09.9515887Z","updatedOn":"2022-06-03T14:40:22.4040874Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/bace23ac-6978-5318-a146-d49599599b02","type":"Microsoft.Authorization/roleAssignments","name":"bace23ac-6978-5318-a146-d49599599b02"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.0377251Z","updatedOn":"2022-06-06T11:22:08.0377251Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/32e50355-7960-4d1b-aa22-e9255b475b8b","type":"Microsoft.Authorization/roleAssignments","name":"32e50355-7960-4d1b-aa22-e9255b475b8b"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"e6234342-a3d7-4b04-9041-3e8526f5861a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-06T11:22:08.5127363Z","updatedOn":"2022-06-06T11:22:08.5127363Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/df253c65-35fc-4ff6-9a32-39b3fe20a6e3","type":"Microsoft.Authorization/roleAssignments","name":"df253c65-35fc-4ff6-9a32-39b3fe20a6e3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"5f137a67-1b88-4f98-aa20-b71a7082dc56","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-10T14:11:57.5623976Z","updatedOn":"2022-06-10T14:11:57.5623976Z","createdBy":"9c973a07-b207-473c-9687-bd693ba8e460","updatedBy":"9c973a07-b207-473c-9687-bd693ba8e460","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e409f573-8bda-4b7e-854a-61c445d36c6f","type":"Microsoft.Authorization/roleAssignments","name":"e409f573-8bda-4b7e-854a-61c445d36c6f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"5095196a-def9-4146-8d92-e38f24b6e378","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2022-06-20T05:21:19.8209962Z","updatedOn":"2022-06-20T05:21:19.8209962Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/ac2ba280-9929-47f1-9973-fdc5c3f5446f","type":"Microsoft.Authorization/roleAssignments","name":"ac2ba280-9929-47f1-9973-fdc5c3f5446f"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"b864e281-c12e-45c6-a0c7-6046a7de5481","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:34.6137933Z","updatedOn":"2022-06-21T12:22:34.6137933Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleAssignments/deca4720-c500-4a69-b65d-994e0e95d9f0","type":"Microsoft.Authorization/roleAssignments","name":"deca4720-c500-4a69-b65d-994e0e95d9f0"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-05-21T08:47:39.8177538Z","updatedOn":"2021-05-21T08:47:39.8177538Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/17db6abb-bc45-4967-b313-e470ec9cbbd7","type":"Microsoft.Authorization/roleAssignments","name":"17db6abb-bc45-4967-b313-e470ec9cbbd7"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"93e2b483-3ffa-44f8-9965-fdb104b541a2","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-06-29T05:43:19.7216795Z","updatedOn":"2021-06-29T05:43:19.7216795Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/c6aff8c2-08b1-5b1a-9c80-d91164226985","type":"Microsoft.Authorization/roleAssignments","name":"c6aff8c2-08b1-5b1a-9c80-d91164226985"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"4f285ac8-5610-4d2f-854c-bfa3d16a2679","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-11T06:55:02.4909144Z","updatedOn":"2021-07-11T06:55:02.4909144Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/0cec2ad2-d080-4126-a99f-f61c559b799c","type":"Microsoft.Authorization/roleAssignments","name":"0cec2ad2-d080-4126-a99f-f61c559b799c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"630db480-3ee6-47ec-ae72-5f917d466bad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:16:28.8833400Z","updatedOn":"2021-07-13T10:16:28.8833400Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/37fe4b2d-0aca-4c27-8511-1e0d18063ec8","type":"Microsoft.Authorization/roleAssignments","name":"37fe4b2d-0aca-4c27-8511-1e0d18063ec8"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"279982e7-46cf-4e40-9a3b-156c98285cb7","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.5647062Z","updatedOn":"2021-07-13T10:18:48.5647062Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/7907f38d-57a7-431d-82d7-5dfa2ef0a628","type":"Microsoft.Authorization/roleAssignments","name":"7907f38d-57a7-431d-82d7-5dfa2ef0a628"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"790004d0-0112-41ad-92e8-95c464c34476","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-13T10:18:48.6068337Z","updatedOn":"2021-07-13T10:18:48.6068337Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8c9bda26-83c4-4d4c-b00b-c4b58301e539","type":"Microsoft.Authorization/roleAssignments","name":"8c9bda26-83c4-4d4c-b00b-c4b58301e539"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-21T06:38:43.9281998Z","updatedOn":"2021-07-21T06:38:43.9281998Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b553fa81-60dd-45d6-9781-8c2313d68b03","type":"Microsoft.Authorization/roleAssignments","name":"b553fa81-60dd-45d6-9781-8c2313d68b03"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:20.4258578Z","updatedOn":"2021-07-27T04:31:20.4258578Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258","type":"Microsoft.Authorization/roleAssignments","name":"4b2f7b08-f9ef-4fc1-b9c4-2bb34fdef258"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:32.4566300Z","updatedOn":"2021-07-27T04:31:32.4566300Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8176bf09-8e96-448a-ab12-eeed360ecce2","type":"Microsoft.Authorization/roleAssignments","name":"8176bf09-8e96-448a-ab12-eeed360ecce2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"a27f3bc9-abe0-404e-baa7-0949a258a204","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T04:31:48.4577322Z","updatedOn":"2021-07-27T04:31:48.4577322Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/45949217-58cc-4c18-93f3-f4c90710ae2d","type":"Microsoft.Authorization/roleAssignments","name":"45949217-58cc-4c18-93f3-f4c90710ae2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:20.8138038Z","updatedOn":"2021-07-27T10:13:20.8138038Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/2382b52f-1ec5-430e-ae2a-74f9ed331ced","type":"Microsoft.Authorization/roleAssignments","name":"2382b52f-1ec5-430e-ae2a-74f9ed331ced"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:23.6551958Z","updatedOn":"2021-07-27T10:13:23.6551958Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/e5863947-0b21-41b7-9997-c0dfc73eec29","type":"Microsoft.Authorization/roleAssignments","name":"e5863947-0b21-41b7-9997-c0dfc73eec29"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb","principalId":"53a2447a-3ec4-42e2-9194-66afe4fcea2b","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-07-27T10:13:29.6985440Z","updatedOn":"2021-07-27T10:13:29.6985440Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/28c1cefa-942f-44c5-a4d4-c33bb92abd45","type":"Microsoft.Authorization/roleAssignments","name":"28c1cefa-942f-44c5-a4d4-c33bb92abd45"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8039a424-299a-4014-8b22-4f6d6cc60065","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-11T07:08:31.9935560Z","updatedOn":"2021-08-11T07:08:31.9935560Z","createdBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","updatedBy":"1d8b8d73-0cc6-4db8-b112-724b4a932253","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/69e0bcfc-b024-4d8b-a3d5-dac447f8986c","type":"Microsoft.Authorization/roleAssignments","name":"69e0bcfc-b024-4d8b-a3d5-dac447f8986c"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"8f0340b8-4b70-412b-be19-c4612d49e353","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T11:58:29.6857641Z","updatedOn":"2021-08-20T11:58:29.6857641Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd88236f-eacb-5303-912f-ba1741cf02bd","type":"Microsoft.Authorization/roleAssignments","name":"fd88236f-eacb-5303-912f-ba1741cf02bd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"0d8f6e68-d6c5-4a67-b6c4-3107609bbdbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-20T12:31:58.7980661Z","updatedOn":"2021-08-20T12:31:58.7980661Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/146f4a11-8712-583d-89eb-a7b8b82dbaa9","type":"Microsoft.Authorization/roleAssignments","name":"146f4a11-8712-583d-89eb-a7b8b82dbaa9"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"e2072d83-2379-4f36-ab51-b5df7460c61e","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-08-21T14:40:08.5987892Z","updatedOn":"2021-08-21T14:40:10.5055205Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/842af679-0b58-5eb5-b94c-ff59e4105d7e","type":"Microsoft.Authorization/roleAssignments","name":"842af679-0b58-5eb5-b94c-ff59e4105d7e"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"2d13e5e1-815b-45e7-be6f-3a2c36b407a8","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-17T09:41:38.5634940Z","updatedOn":"2021-09-17T09:41:38.5634940Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":"for + temp testing purpose"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98fe0117-1e9c-4e37-b8a7-c4a1031d6916","type":"Microsoft.Authorization/roleAssignments","name":"98fe0117-1e9c-4e37-b8a7-c4a1031d6916"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"9c973a07-b207-473c-9687-bd693ba8e460","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-25T15:23:32.6168771Z","updatedOn":"2021-09-25T15:23:32.6168771Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/d852f084-bc9f-4258-9e2c-fcf48b9eaf85","type":"Microsoft.Authorization/roleAssignments","name":"d852f084-bc9f-4258-9e2c-fcf48b9eaf85"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"2778738c-452b-45ca-b8d6-f085836a1458","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-09-30T07:51:25.2399474Z","updatedOn":"2021-09-30T07:51:25.2399474Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/b04a3bdf-b6a6-5ffb-9394-ee5743741597","type":"Microsoft.Authorization/roleAssignments","name":"b04a3bdf-b6a6-5ffb-9394-ee5743741597"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"0ac1f52a-325b-486a-a095-f46ffdd6a9e4","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-10-26T01:59:18.6998395Z","updatedOn":"2021-10-26T01:59:18.6998395Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/53a3b238-b4b0-4d3f-b416-8d6dc8d755f6","type":"Microsoft.Authorization/roleAssignments","name":"53a3b238-b4b0-4d3f-b416-8d6dc8d755f6"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1","principalId":"c3c0d020-16f0-44d8-9950-0250120a33ff","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-02T06:11:03.5575284Z","updatedOn":"2021-11-02T06:11:03.5575284Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/1d017732-f67e-5aa1-a4a6-47570078d9f3","type":"Microsoft.Authorization/roleAssignments","name":"1d017732-f67e-5aa1-a4a6-47570078d9f3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-10T08:59:19.7285159Z","updatedOn":"2021-11-10T08:59:19.7285159Z","createdBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","updatedBy":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a60357fa-dc0a-4479-a2a9-4329c2d0ae89","type":"Microsoft.Authorization/roleAssignments","name":"a60357fa-dc0a-4479-a2a9-4329c2d0ae89"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"8dd77695-d6a5-450d-a43c-67ca01be9fbc","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-11-12T10:55:38.3698246Z","updatedOn":"2021-11-12T10:55:38.3698246Z","createdBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","updatedBy":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/dda5bb75-b74a-4430-975f-5bc9611c4b2d","type":"Microsoft.Authorization/roleAssignments","name":"dda5bb75-b74a-4430-975f-5bc9611c4b2d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0181010Z","updatedOn":"2021-02-18T06:28:12.0181010Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/804f6223-03eb-4091-b460-82160fc5f818","type":"Microsoft.Authorization/roleAssignments","name":"804f6223-03eb-4091-b460-82160fc5f818"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"2152c794-9ca2-41fe-a313-2d0e1ee3eb80","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-18T06:28:12.0168587Z","updatedOn":"2021-02-18T06:28:12.0168587Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/8d80e2d6-315c-495c-ab2c-91ddf75edf41","type":"Microsoft.Authorization/roleAssignments","name":"8d80e2d6-315c-495c-ab2c-91ddf75edf41"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"cf46d636-b6c1-406c-aba7-b2c3d9ed07da","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:53:53.1151640Z","updatedOn":"2021-02-26T13:53:53.1151640Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/735e98ed-f4b8-4b7d-9cc9-af4f8ae77252","type":"Microsoft.Authorization/roleAssignments","name":"735e98ed-f4b8-4b7d-9cc9-af4f8ae77252"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8505e3f4-1ee7-427c-a175-a06595231d46","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2021-02-26T13:54:27.5624477Z","updatedOn":"2021-02-26T13:54:27.5624477Z","createdBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","updatedBy":"2b81557b-8e7a-4df8-9a41-e59844f627c2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/98c87a9f-b9e7-414b-8b59-bf3ec62dbc74","type":"Microsoft.Authorization/roleAssignments","name":"98c87a9f-b9e7-414b-8b59-bf3ec62dbc74"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"8bf5ba20-c970-4c38-b2a6-95f5726c959a","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-25T12:25:27.2277610Z","updatedOn":"2020-07-25T12:25:27.2277610Z","createdBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","updatedBy":"8bb5b214-1182-465c-892f-ca7235abe1e7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d","type":"Microsoft.Authorization/roleAssignments","name":"fd6b8ff4-9edb-43f5-aa2a-32133fa09b1d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"21ae6127-c385-4ae0-b895-a8559e9aa574","principalType":"Group","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:35:35.2993523Z","updatedOn":"2020-07-31T08:35:35.2993523Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/6af9fbf3-7085-4bcb-b399-88b89fac16d3","type":"Microsoft.Authorization/roleAssignments","name":"6af9fbf3-7085-4bcb-b399-88b89fac16d3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"1e845bc3-37db-4639-be09-d0cf1e448221","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-07-31T08:44:16.2909420Z","updatedOn":"2020-07-31T08:44:16.2909420Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/65080390-e9b5-4566-b362-d1e96c23dae2","type":"Microsoft.Authorization/roleAssignments","name":"65080390-e9b5-4566-b362-d1e96c23dae2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","principalType":"User","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:12:01.6760584Z","updatedOn":"2020-11-03T06:12:01.6760584Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/a7a12420-2dce-4a47-822e-68cadf239da3","type":"Microsoft.Authorization/roleAssignments","name":"a7a12420-2dce-4a47-822e-68cadf239da3"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c","principalId":"3282af51-433d-47e8-b2b5-633fbe0fecc0","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000","condition":null,"conditionVersion":null,"createdOn":"2020-11-03T06:25:32.6790913Z","updatedOn":"2020-11-03T06:25:32.6790913Z","createdBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","updatedBy":"e3f1f833-3bc1-46d9-ae9b-b9e0a2117420","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/36da831d-10ce-4f42-ba28-362960f6ea36","type":"Microsoft.Authorization/roleAssignments","name":"36da831d-10ce-4f42-ba28-362960f6ea36"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-10-04T07:35:39.6626948Z","updatedOn":"2019-10-04T07:35:39.6626948Z","createdBy":"8031e009-cc05-4950-8a8d-78942c4492ac","updatedBy":"8031e009-cc05-4950-8a8d-78942c4492ac","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/730fa65e-c74c-4c3d-9cc3-9457f9b97274","type":"Microsoft.Authorization/roleAssignments","name":"730fa65e-c74c-4c3d-9cc3-9457f9b97274"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-08T01:03:29.8241478Z","updatedOn":"2021-04-08T01:03:29.8241478Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupFlaggedSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/63818ccb-a05c-4083-9e1d-64b4c7c0e1cd","type":"Microsoft.Authorization/roleAssignments","name":"63818ccb-a05c-4083-9e1d-64b4c7c0e1cd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"c87d9afe-4463-41d5-81e3-3bd162af9183","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-07-10T09:38:17.4348497Z","updatedOn":"2019-07-10T09:38:17.4348497Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/ebc56c6d-c5de-4d99-b166-89d4ac815acd","type":"Microsoft.Authorization/roleAssignments","name":"ebc56c6d-c5de-4d99-b166-89d4ac815acd"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-03-15T11:01:18.6794974Z","updatedOn":"2019-03-15T11:01:18.6794974Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9fb9b151-1d53-4eff-9336-75cf634e1e3d","type":"Microsoft.Authorization/roleAssignments","name":"9fb9b151-1d53-4eff-9336-75cf634e1e3d"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"f87f6638-3a1b-4562-8603-aacd59537149","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-05-03T06:47:05.1411825Z","updatedOn":"2019-05-03T06:47:05.1411825Z","createdBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","updatedBy":"809e610d-9130-4b22-8c3a-5e6c64adc2c7","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/24ffbb29-061f-4b1d-8c26-c6e90ef53303","type":"Microsoft.Authorization/roleAssignments","name":"24ffbb29-061f-4b1d-8c26-c6e90ef53303"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"becb4b6b-fe16-413b-a5c3-90355e0b2982","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2019-06-26T06:33:50.1123976Z","updatedOn":"2019-06-26T06:33:50.1123976Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/4c3721e8-06f4-4115-a2d8-90c4a9a57d56","type":"Microsoft.Authorization/roleAssignments","name":"4c3721e8-06f4-4115-a2d8-90c4a9a57d56"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9","principalId":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-04-07T16:59:19.6098216Z","updatedOn":"2021-04-07T16:59:19.6098216Z","createdBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","updatedBy":"1c8b3602-77a2-4e8a-8c1e-f127f2af5ca2","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/9d2de631-e451-450b-8237-e5bc19624eee","type":"Microsoft.Authorization/roleAssignments","name":"9d2de631-e451-450b-8237-e5bc19624eee"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"b1b96a90-235c-4668-a931-ee1c08db7681","principalType":"User","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-02-01T04:47:38.5676012Z","updatedOn":"2021-02-01T04:47:38.5676012Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/a9e38032-c21b-4c41-8960-1c9c982d98e2","type":"Microsoft.Authorization/roleAssignments","name":"a9e38032-c21b-4c41-8960-1c9c982d98e2"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"a51d0ef9-9895-4b63-b3f8-354bb7d1a6bb","principalType":"Group","scope":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG","condition":null,"conditionVersion":null,"createdOn":"2021-03-03T05:31:57.4716459Z","updatedOn":"2021-03-03T05:31:57.4716459Z","createdBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","updatedBy":"e2b118f2-5cbb-4f4c-93dd-54401a22306e","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/AzureBackupTestSubscriptionsMG/providers/Microsoft.Authorization/roleAssignments/77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04","type":"Microsoft.Authorization/roleAssignments","name":"77aa0ff2-42c2-4e01-a51d-01cf2dd7ce04"},{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"ce2366a6-64d7-441b-939c-c9d23f91cccd","principalType":"ServicePrincipal","scope":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47","condition":null,"conditionVersion":null,"createdOn":"2020-03-12T20:43:06.5941189Z","updatedOn":"2020-03-12T20:43:06.5941189Z","createdBy":"606f48c8-d219-4875-991d-ae6befaf0756","updatedBy":"606f48c8-d219-4875-991d-ae6befaf0756","delegatedManagedIdentityResourceId":null,"description":null},"id":"/providers/Microsoft.Management/managementGroups/72f988bf-86f1-41af-91ab-2d7cd011db47/providers/Microsoft.Authorization/roleAssignments/ad9e2cd7-0ff7-4931-9b17-656c8f17934b","type":"Microsoft.Authorization/roleAssignments","name":"ad9e2cd7-0ff7-4931-9b17-656c8f17934b"}]}' + headers: + cache-control: + - no-cache + content-length: + - '64485' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:26:49 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment delete + Connection: + - keep-alive + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Reader%27&api-version=2018-01-01-preview + response: + body: + string: '{"value":[{"properties":{"roleName":"Reader","type":"BuiltInRole","description":"View + all resources, but does not allow you to make any changes.","assignableScopes":["/"],"permissions":[{"actions":["*/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2015-02-02T21:55:09.8806423Z","updatedOn":"2021-11-11T20:13:47.8628684Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","type":"Microsoft.Authorization/roleDefinitions","name":"acdd72a7-3385-48ef-bd42-f606fba81ae7"}]}' + headers: + cache-control: + - no-cache + content-length: + - '627' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:26:49 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - role assignment delete + Connection: + - keep-alive + Content-Length: + - '0' + Cookie: + - x-ms-gateway-slice=Production + ParameterSetName: + - --assignee --role --scope + User-Agent: + - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.7.0 msrest_azure/0.6.4 azure-mgmt-authorization/0.61.0 + Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleAssignments/deca4720-c500-4a69-b65d-994e0e95d9f0?api-version=2020-04-01-preview + response: + body: + string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7","principalId":"b864e281-c12e-45c6-a0c7-6046a7de5481","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server","condition":null,"conditionVersion":null,"createdOn":"2022-06-21T12:22:34.6137933Z","updatedOn":"2022-06-21T12:22:34.6137933Z","createdBy":"5095196a-def9-4146-8d92-e38f24b6e378","updatedBy":"5095196a-def9-4146-8d92-e38f24b6e378","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/providers/Microsoft.Authorization/roleAssignments/deca4720-c500-4a69-b65d-994e0e95d9f0","type":"Microsoft.Authorization/roleAssignments","name":"deca4720-c500-4a69-b65d-994e0e95d9f0"}' + headers: + cache-control: + - no-cache + content-length: + - '1043' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:26:52 GMT + expires: + - '-1' + pragma: + - no-cache + set-cookie: + - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - postgres server firewall-rule delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g -s -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-rdbms/10.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.DBforPostgreSQL/servers/oss-clitest-server/firewallRules/AllowAllWindowsAzureIps?api-version=2017-12-01 + response: + body: + string: '{"operation":"DropElasticServerFirewallRule","startTime":"2022-06-21T12:26:53.54Z"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforPostgreSQL/locations/centraluseuap/azureAsyncOperation/dbbaf407-2ff2-4bb4-b999-588f69951015?api-version=2017-12-01 + cache-control: + - no-cache + content-length: + - '83' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:26:53 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforPostgreSQL/locations/centraluseuap/operationResults/dbbaf407-2ff2-4bb4-b999-588f69951015?api-version=2017-12-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - postgres server firewall-rule delete + Connection: + - keep-alive + ParameterSetName: + - -g -s -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-rdbms/10.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforPostgreSQL/locations/centraluseuap/azureAsyncOperation/dbbaf407-2ff2-4bb4-b999-588f69951015?api-version=2017-12-01 + response: + body: + string: '{"name":"dbbaf407-2ff2-4bb4-b999-588f69951015","status":"Succeeded","startTime":"2022-06-21T12:26:53.54Z"}' + headers: + cache-control: + - no-cache + content-length: + - '106' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:27:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - keyvault delete-policy + Connection: + - keep-alive + ParameterSetName: + - -g -n --object-id + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-keyvault/9.3.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault?api-version=2021-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault","name":"oss-clitest-keyvault","type":"Microsoft.KeyVault/vaults","location":"centraluseuap","tags":{"Owner":"akneema","Purpose":"Testing","MABUsed":"Yes","DeleteBy":"12-9999"},"systemData":{"lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:22:29.299Z"},"properties":{"sku":{"family":"A","name":"Standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"5095196a-def9-4146-8d92-e38f24b6e378","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","Decrypt","Encrypt","UnwrapKey","WrapKey","Verify","Sign","Purge","Release","Rotate","GetRotationPolicy","SetRotationPolicy"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore","Purge"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers","Purge"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f40e18f0-6544-45c2-9d24-639a8bb3b41a","permissions":{"keys":["Get","List","Backup"],"secrets":["Get","List","Backup"],"certificates":[]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"b864e281-c12e-45c6-a0c7-6046a7de5481","permissions":{"secrets":["List","Get"]}}],"enabledForDeployment":false,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":false,"enableSoftDelete":true,"softDeleteRetentionInDays":90,"enableRbacAuthorization":false,"vaultUri":"https://oss-clitest-keyvault.vault.azure.net/","provisioningState":"Succeeded","publicNetworkAccess":"Enabled"}}' + headers: + cache-control: + - no-cache + content-length: + - '2284' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:27:10 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-keyvault-service-version: + - 1.5.413.0 + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "centraluseuap", "tags": {"Owner": "akneema", "Purpose": "Testing", + "MABUsed": "Yes", "DeleteBy": "12-9999"}, "properties": {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", + "sku": {"family": "A", "name": "Standard"}, "accessPolicies": [{"tenantId": + "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "5095196a-def9-4146-8d92-e38f24b6e378", + "permissions": {"keys": ["Get", "List", "Update", "Create", "Import", "Delete", + "Recover", "Backup", "Restore", "Decrypt", "Encrypt", "UnwrapKey", "WrapKey", + "Verify", "Sign", "Purge", "Release", "Rotate", "GetRotationPolicy", "SetRotationPolicy"], + "secrets": ["Get", "List", "Set", "Delete", "Recover", "Backup", "Restore", + "Purge"], "certificates": ["Get", "List", "Update", "Create", "Import", "Delete", + "Recover", "Backup", "Restore", "ManageContacts", "ManageIssuers", "GetIssuers", + "ListIssuers", "SetIssuers", "DeleteIssuers", "Purge"]}}, {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", + "objectId": "90680173-e32e-4cf3-a1b8-d1a99ac56bbf", "permissions": {"keys": + ["Get", "List", "Update", "Create", "Import", "Delete", "Recover", "Backup", + "Restore"], "secrets": ["Get", "List", "Set", "Delete", "Recover", "Backup", + "Restore"], "certificates": ["Get", "List", "Update", "Create", "Import", "Delete", + "Recover", "Backup", "Restore", "ManageContacts", "ManageIssuers", "GetIssuers", + "ListIssuers", "SetIssuers", "DeleteIssuers"]}}, {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", + "objectId": "f40e18f0-6544-45c2-9d24-639a8bb3b41a", "permissions": {"keys": + ["Get", "List", "Backup"], "secrets": ["Get", "List", "Backup"], "certificates": + []}}], "vaultUri": "https://oss-clitest-keyvault.vault.azure.net/", "enabledForDeployment": + false, "enabledForDiskEncryption": true, "enabledForTemplateDeployment": false, + "enableSoftDelete": true, "softDeleteRetentionInDays": 90, "enableRbacAuthorization": + false, "provisioningState": "Succeeded", "publicNetworkAccess": "Enabled"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - keyvault delete-policy + Connection: + - keep-alive + Content-Length: + - '1944' + Content-Type: + - application/json + ParameterSetName: + - -g -n --object-id + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-keyvault/9.3.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault?api-version=2021-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/oss-clitest-rg/providers/Microsoft.KeyVault/vaults/oss-clitest-keyvault","name":"oss-clitest-keyvault","type":"Microsoft.KeyVault/vaults","location":"centraluseuap","tags":{"Owner":"akneema","Purpose":"Testing","MABUsed":"Yes","DeleteBy":"12-9999"},"systemData":{"lastModifiedBy":"t-smayya@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-21T12:27:10.958Z"},"properties":{"sku":{"family":"A","name":"Standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"5095196a-def9-4146-8d92-e38f24b6e378","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","Decrypt","Encrypt","UnwrapKey","WrapKey","Verify","Sign","Purge","Release","Rotate","GetRotationPolicy","SetRotationPolicy"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore","Purge"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers","Purge"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"90680173-e32e-4cf3-a1b8-d1a99ac56bbf","permissions":{"keys":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore"],"secrets":["Get","List","Set","Delete","Recover","Backup","Restore"],"certificates":["Get","List","Update","Create","Import","Delete","Recover","Backup","Restore","ManageContacts","ManageIssuers","GetIssuers","ListIssuers","SetIssuers","DeleteIssuers"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f40e18f0-6544-45c2-9d24-639a8bb3b41a","permissions":{"keys":["Get","List","Backup"],"secrets":["Get","List","Backup"],"certificates":[]}}],"enabledForDeployment":false,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":false,"enableSoftDelete":true,"softDeleteRetentionInDays":90,"enableRbacAuthorization":false,"vaultUri":"https://oss-clitest-keyvault.vault.azure.net/","provisioningState":"Succeeded","publicNetworkAccess":"Enabled"}}' + headers: + cache-control: + - no-cache + content-length: + - '2141' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:27:11 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-keyvault-service-version: + - 1.5.413.0 + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.Compute/disks", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new", + "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new", "resourceType": + "Microsoft.Compute/disks", "resourceUri": ""}, "policyInfo": {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy", + "policyParameters": {"dataStoreParametersList": [{"objectType": "AzureOperationalStoreParameters", + "dataStoreType": "OperationalStore", "resourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + Content-Length: + - '866' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:27:11 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==","status":"Inprogress","startTime":"2022-06-21T12:27:12.214025Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:27:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==","status":"Succeeded","startTime":"2022-06-21T12:27:12.214025Z","endTime":"2022-06-21T12:27:43Z"}' + headers: + cache-control: + - no-cache + content-length: + - '475' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:27:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NhZjgyMDZiLTFhZjItNGUwYi05Zjk3LTcxNDE5YjJhNmU2OQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:27:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"dataSourceInfo": {"datasourceType": "Microsoft.Compute/disks", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new", + "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new", "resourceType": + "Microsoft.Compute/disks", "resourceUri": ""}, "policyInfo": {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy", + "policyParameters": {"dataStoreParametersList": [{"objectType": "AzureOperationalStoreParameters", + "dataStoreType": "OperationalStore", "resourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + Content-Length: + - '862' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Provisioning","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2E0Nzc1NDU5LTY3OTMtNDBlZC05MDc4LTQ0Yzc3MjhjOGY5Yg==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '1392' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:27:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2E0Nzc1NDU5LTY3OTMtNDBlZC05MDc4LTQ0Yzc3MjhjOGY5Yg==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2E0Nzc1NDU5LTY3OTMtNDBlZC05MDc4LTQ0Yzc3MjhjOGY5Yg==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2E0Nzc1NDU5LTY3OTMtNDBlZC05MDc4LTQ0Yzc3MjhjOGY5Yg==","status":"Succeeded","startTime":"2022-06-21T12:27:54.0082641Z","endTime":"2022-06-21T12:27:56Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:28:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '997' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + cache-control: + - no-cache + content-length: + - '1389' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:28:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance list + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --query + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances?api-version=2022-04-01 + response: + body: + string: '{"value":[{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1401' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:28:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance list + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --query + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances?api-version=2022-04-01 + response: + body: + string: '{"value":[{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1401' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:28:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance list + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --query + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances?api-version=2022-04-01 + response: + body: + string: '{"value":[{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionConfigured"},"currentProtectionState":"ProtectionConfigured","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1399' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:28:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupInstance": {"dataSourceInfo": {"datasourceType": "Microsoft.Storage/storageAccounts/blobServices", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount", + "resourceLocation": "centraluseuap", "resourceName": "cliteststoreaccount", + "resourceType": "Microsoft.Storage/storageAccounts", "resourceUri": ""}, "policyInfo": + {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy"}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + Content-Length: + - '678' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/validateForBackup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:28:33 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==","status":"Inprogress","startTime":"2022-06-21T12:28:33.4867402Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:28:43 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '996' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==","status":"Succeeded","startTime":"2022-06-21T12:28:33.4867402Z","endTime":"2022-06-21T12:28:45Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:29:13 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '995' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjgxNWI3LTBhOGItNGE5ZS1hZGVmLWY2Y2JkODk4NDQ4OQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:29:13 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"dataSourceInfo": {"datasourceType": "Microsoft.Storage/storageAccounts/blobServices", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount", + "resourceLocation": "centraluseuap", "resourceName": "cliteststoreaccount", + "resourceType": "Microsoft.Storage/storageAccounts", "resourceUri": ""}, "policyInfo": + {"policyId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy"}, + "objectType": "BackupInstance"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + Content-Length: + - '674' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cliteststoreaccount-cliteststoreaccount-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cliteststoreaccount","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount","resourceUri":"","datasourceType":"Microsoft.Storage/storageAccounts/blobServices","resourceName":"cliteststoreaccount","resourceType":"Microsoft.Storage/storageAccounts","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy"},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Provisioning","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cliteststoreaccount-cliteststoreaccount-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cliteststoreaccount-cliteststoreaccount-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjg5YzJlLTg1ZjQtNGIyMS05MTYxLWMxZWNlNDY5NzZmMw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '1222' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:29:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjg5YzJlLTg1ZjQtNGIyMS05MTYxLWMxZWNlNDY5NzZmMw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjg5YzJlLTg1ZjQtNGIyMS05MTYxLWMxZWNlNDY5NzZmMw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzMzYjg5YzJlLTg1ZjQtNGIyMS05MTYxLWMxZWNlNDY5NzZmMw==","status":"Succeeded","startTime":"2022-06-21T12:29:15.1162051Z","endTime":"2022-06-21T12:29:16Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:29:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '994' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance create + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name --backup-instance + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cliteststoreaccount-cliteststoreaccount-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cliteststoreaccount","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount","resourceUri":"","datasourceType":"Microsoft.Storage/storageAccounts/blobServices","resourceName":"cliteststoreaccount","resourceType":"Microsoft.Storage/storageAccounts","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/storagepolicy"},"protectionStatus":{"status":"ConfiguringProtection"},"currentProtectionState":"ConfiguringProtection","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cliteststoreaccount-cliteststoreaccount-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cliteststoreaccount-cliteststoreaccount-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + cache-control: + - no-cache + content-length: + - '1219' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:29:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance stop-protection + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/stopProtection?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzdiMzkwNmRmLWIyNzItNDIxMC1hMjBiLWUzMjdjMWFhYjJjNQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:30:02 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzdiMzkwNmRmLWIyNzItNDIxMC1hMjBiLWUzMjdjMWFhYjJjNQ==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance stop-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzdiMzkwNmRmLWIyNzItNDIxMC1hMjBiLWUzMjdjMWFhYjJjNQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzdiMzkwNmRmLWIyNzItNDIxMC1hMjBiLWUzMjdjMWFhYjJjNQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzdiMzkwNmRmLWIyNzItNDIxMC1hMjBiLWUzMjdjMWFhYjJjNQ==","status":"Succeeded","startTime":"2022-06-21T12:30:02.629634Z","endTime":"2022-06-21T12:30:15Z"}' + headers: + cache-control: + - no-cache + content-length: + - '475' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:30:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance stop-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzdiMzkwNmRmLWIyNzItNDIxMC1hMjBiLWUzMjdjMWFhYjJjNQ==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzdiMzkwNmRmLWIyNzItNDIxMC1hMjBiLWUzMjdjMWFhYjJjNQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:30:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance show + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionStopped"},"currentProtectionState":"ProtectionStopped","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + cache-control: + - no-cache + content-length: + - '1381' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:30:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/resumeProtection?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:30:20 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==","status":"Inprogress","startTime":"2022-06-21T12:30:20.8581107Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:30:35 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '995' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==","status":"Succeeded","startTime":"2022-06-21T12:30:20.8581107Z","endTime":"2022-06-21T12:30:44Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:31:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '994' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2FlYjFhNzEzLTBhMjgtNGMzYS05NDc2LWU5MDc3MWFiNDMwMw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:31:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance show + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionConfigured"},"currentProtectionState":"ProtectionConfigured","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + cache-control: + - no-cache + content-length: + - '1387' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:31:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance suspend-backup + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/suspendBackups?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U2YWYyYzU5LTAxN2MtNGY2MC1iNTQ4LWYwZmNiZTNiOGUyNQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:31:09 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U2YWYyYzU5LTAxN2MtNGY2MC1iNTQ4LWYwZmNiZTNiOGUyNQ==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance suspend-backup + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U2YWYyYzU5LTAxN2MtNGY2MC1iNTQ4LWYwZmNiZTNiOGUyNQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U2YWYyYzU5LTAxN2MtNGY2MC1iNTQ4LWYwZmNiZTNiOGUyNQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U2YWYyYzU5LTAxN2MtNGY2MC1iNTQ4LWYwZmNiZTNiOGUyNQ==","status":"Succeeded","startTime":"2022-06-21T12:31:09.4380761Z","endTime":"2022-06-21T12:31:21Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:31:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance suspend-backup + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U2YWYyYzU5LTAxN2MtNGY2MC1iNTQ4LWYwZmNiZTNiOGUyNQ==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U2YWYyYzU5LTAxN2MtNGY2MC1iNTQ4LWYwZmNiZTNiOGUyNQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:31:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance show + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"BackupsSuspended"},"currentProtectionState":"BackupsSuspended","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + cache-control: + - no-cache + content-length: + - '1379' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:31:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/resumeProtection?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:31:26 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==","status":"Inprogress","startTime":"2022-06-21T12:31:27.5615859Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:31:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==","status":"Succeeded","startTime":"2022-06-21T12:31:27.5615859Z","endTime":"2022-06-21T12:31:51Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:32:12 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance resume-protection + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzkzZjJmMGNjLTJkZjUtNGE5Yi05NmYyLTE0ZWI0YmE5MDgyYw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:32:13 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance show + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '{"properties":{"friendlyName":"cli-test-disk-new","dataSourceInfo":{"resourceID":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","resourceUri":"","datasourceType":"Microsoft.Compute/disks","resourceName":"cli-test-disk-new","resourceType":"Microsoft.Compute/disks","resourceLocation":"centraluseuap","objectType":"Datasource"},"policyInfo":{"policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","policyParameters":{"dataStoreParametersList":[{"objectType":"AzureOperationalStoreParameters","dataStoreType":"OperationalStore","resourceGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg"}]}},"protectionStatus":{"status":"ProtectionConfigured"},"currentProtectionState":"ProtectionConfigured","provisioningState":"Succeeded","objectType":"BackupInstance"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","name":"cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","type":"Microsoft.DataProtection/backupVaults/backupInstances"}' + headers: + cache-control: + - no-cache + content-length: + - '1387' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:32:13 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"backupRuleOptions": {"ruleName": "BackupHourly", "triggerOption": {"retentionTagOverride": + "Default"}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance adhoc-backup + Connection: + - keep-alive + Content-Length: + - '105' + Content-Type: + - application/json + ParameterSetName: + - -n -g --vault-name --rule-name --retention-tag-override + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/backup?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NkY2UxMDRmLWVkNjYtNDVhMi04NzhjLThhYTBhNjkwNzI1ZA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:32:15 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NkY2UxMDRmLWVkNjYtNDVhMi04NzhjLThhYTBhNjkwNzI1ZA==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance adhoc-backup + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name --rule-name --retention-tag-override + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NkY2UxMDRmLWVkNjYtNDVhMi04NzhjLThhYTBhNjkwNzI1ZA==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NkY2UxMDRmLWVkNjYtNDVhMi04NzhjLThhYTBhNjkwNzI1ZA==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NkY2UxMDRmLWVkNjYtNDVhMi04NzhjLThhYTBhNjkwNzI1ZA==","status":"Succeeded","startTime":"2022-06-21T12:32:15.6737226Z","endTime":"2022-06-21T12:32:18Z","properties":{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","objectType":"OperationJobExtendedInfo"}}' + headers: + cache-control: + - no-cache + content-length: + - '733' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:32:45 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance adhoc-backup + Connection: + - keep-alive + ParameterSetName: + - -n -g --vault-name --rule-name --retention-tag-override + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NkY2UxMDRmLWVkNjYtNDVhMi04NzhjLThhYTBhNjkwNzI1ZA==?api-version=2022-04-01 + response: + body: + string: '{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2NkY2UxMDRmLWVkNjYtNDVhMi04NzhjLThhYTBhNjkwNzI1ZA==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '243' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:32:45 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:32:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:33:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:33:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:33:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:33:41 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:33:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:34:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:34:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:34:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:34:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:34:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:34:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:35:08 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A32%3A17.8955919Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2100' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:35:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"2e40d05d-f15e-11ec-a891-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":"OperationalTierStore","progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A35%3A22.3494841Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:32:15.869842Z","endTime":"2022-06-21T12:35:21.8329467Z","dataSourceType":"Microsoft.Compute/disks","operationCategory":"Backup","operation":"Backup","status":"Completed","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT3M5.9631047S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"0001-01-01T00:00:00Z"},"sourceRecoverPoint":null,"recoveryDestination":null,"subTasks":[{"taskId":1,"taskName":"Trigger + Backup","taskStatus":"Completed","taskProgress":null,"additionalDetails":null}],"additionalDetails":{"RetentionTag":"Default"}}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/329ab406-3f89-408d-8cff-61a28605e3b0","name":"329ab406-3f89-408d-8cff-61a28605e3b0","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2245' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:35:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection recovery-point list + Connection: + - keep-alive + ParameterSetName: + - --backup-instance-name -g --vault-name + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/recoveryPoints?api-version=2022-04-01&$filter= + response: + body: + string: '{"value":[{"properties":{"objectType":"AzureBackupDiscreteRecoveryPoint","recoveryPointId":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z","recoveryPointType":"Incremental","friendlyName":"a280384e-d6a0-47a8-b731-f1de4b3e76fa","recoveryPointDataStoresDetails":[{"id":"02997b80-b63d-4c64-8e2a-8163bc7f6d50","type":"OperationalStore","creationTime":"2022-06-21T12:34:25.8046725Z","expiryTime":null,"metaData":null,"visible":true,"state":"COMMITTED","rehydrationExpiryTime":null,"rehydrationStatus":null}],"retentionTagName":"Default","retentionTagVersion":"637914112736176279","policyName":"diskpolicy","policyVersion":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/recoveryPoints/5174ce7693b9458089814ea1135485a0","name":"5174ce7693b9458089814ea1135485a0","type":"Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints"}]}' + headers: + cache-control: + - no-cache + content-length: + - '1071' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:35:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"restoreRequestObject": {"objectType": "AzureBackupRecoveryPointBasedRestoreRequest", + "restoreTargetInfo": {"objectType": "RestoreTargetInfo", "recoveryOption": "FailIfExists", + "restoreLocation": "centraluseuap", "datasourceInfo": {"datasourceType": "Microsoft.Compute/disks", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored", + "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new-restored", + "resourceType": "Microsoft.Compute/disks", "resourceUri": ""}}, "sourceDataStoreType": + "OperationalStore", "recoveryPointId": "5174ce7693b9458089814ea1135485a0"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-restore + Connection: + - keep-alive + Content-Length: + - '706' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/validateRestore?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:35:32 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-restore + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==","status":"Inprogress","startTime":"2022-06-21T12:35:32.5386717Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:35:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-restore + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==","status":"Inprogress","startTime":"2022-06-21T12:35:32.5386717Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:36:12 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '997' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-restore + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==","status":"Succeeded","startTime":"2022-06-21T12:35:32.5386717Z","endTime":"2022-06-21T12:36:37Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:36:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '996' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance validate-for-restore + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==?api-version=2022-04-01 + response: + body: + string: '{"objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2U3MjEyYjk0LTdjOGItNDgwOC05NzI1LTg5OTQyNmFkNzIxMg==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '41' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:36:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"objectType": "AzureBackupRecoveryPointBasedRestoreRequest", "restoreTargetInfo": + {"objectType": "RestoreTargetInfo", "recoveryOption": "FailIfExists", "restoreLocation": + "centraluseuap", "datasourceInfo": {"datasourceType": "Microsoft.Compute/disks", + "objectType": "Datasource", "resourceID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored", + "resourceLocation": "centraluseuap", "resourceName": "cli-test-disk-new-restored", + "resourceType": "Microsoft.Compute/disks", "resourceUri": ""}}, "sourceDataStoreType": + "OperationalStore", "recoveryPointId": "5174ce7693b9458089814ea1135485a0"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance restore trigger + Connection: + - keep-alive + Content-Length: + - '680' + Content-Type: + - application/json + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae/restore?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg3NTI2YjNjLTMwMjEtNGUyMi04ZWJhLTQwNDAxZTczODg1YQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:36:44 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg3NTI2YjNjLTMwMjEtNGUyMi04ZWJhLTQwNDAxZTczODg1YQ==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance restore trigger + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg3NTI2YjNjLTMwMjEtNGUyMi04ZWJhLTQwNDAxZTczODg1YQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg3NTI2YjNjLTMwMjEtNGUyMi04ZWJhLTQwNDAxZTczODg1YQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg3NTI2YjNjLTMwMjEtNGUyMi04ZWJhLTQwNDAxZTczODg1YQ==","status":"Succeeded","startTime":"2022-06-21T12:36:44.5327313Z","endTime":"2022-06-21T12:36:47Z","properties":{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","objectType":"OperationJobExtendedInfo"}}' + headers: + cache-control: + - no-cache + content-length: + - '733' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:37:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '993' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance restore trigger + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --restore-request-object + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg3NTI2YjNjLTMwMjEtNGUyMi04ZWJhLTQwNDAxZTczODg1YQ==?api-version=2022-04-01 + response: + body: + string: '{"jobId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","objectType":"OperationJobExtendedInfo"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzg3NTI2YjNjLTMwMjEtNGUyMi04ZWJhLTQwNDAxZTczODg1YQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '243' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:37:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:37:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:37:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:37:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:37:58 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:38:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:38:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:38:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:38:41 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:38:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:39:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:39:15 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:39:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:39:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '197' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:39:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:39:58 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:40:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:40:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:40:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:40:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '196' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:40:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:41:04 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '197' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:41:15 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:41:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:41:37 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:41:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:41:58 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '197' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:42:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '197' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:42:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:42:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '198' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A36%3A45.5354877Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":null,"dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"InProgress","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT0S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"InProgress","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2317' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:42:41 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection job show + Connection: + - keep-alive + ParameterSetName: + - --ids + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef?api-version=2022-04-01 + response: + body: + string: '{"properties":{"activityID":"ce91f15c-f15e-11ec-9cf0-000d3a071c11","subscriptionId":"38304e13-357e-405e-9e9a-220351dcce8c","backupInstanceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae","policyId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupPolicies/diskpolicy","dataSourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new","vaultName":"cli-test-new-vault","backupInstanceFriendlyName":"cli-test-disk-new","policyName":"diskpolicy","sourceResourceGroup":"sarath-rg","dataSourceSetName":null,"dataSourceName":"cli-test-disk-new","sourceDataStoreName":null,"destinationDataStoreName":null,"progressEnabled":false,"etag":"W/\"datetime''2022-06-21T12%3A42%3A50.3931838Z''\"","sourceSubscriptionID":"38304e13-357e-405e-9e9a-220351dcce8c","dataSourceLocation":"centraluseuap","startTime":"2022-06-21T12:36:45.041473Z","endTime":"2022-06-21T12:42:49.7753075Z","dataSourceType":"Microsoft.Compute/disks","operationCategory":"Restore","operation":"Restore","status":"Completed","restoreType":null,"isUserTriggered":true,"rehydrationPriority":null,"supportedActions":[""],"duration":"PT6M4.7338345S","progressUrl":null,"errorDetails":null,"extendedInfo":{"backupInstanceState":null,"dataTransferedInBytes":null,"targetRecoverPoint":null,"sourceRecoverPoint":{"recoveryPointID":"5174ce7693b9458089814ea1135485a0","recoveryPointTime":"2022-06-21T12:34:25.8046725Z"},"recoveryDestination":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored","subTasks":[{"taskId":1,"taskName":"Trigger + Restore","taskStatus":"Completed","taskProgress":null,"additionalDetails":null}],"additionalDetails":null}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupJobs/88b1417b-20c4-4629-b68a-999516cff0ef","name":"88b1417b-20c4-4629-b68a-999516cff0ef","type":"Microsoft.DataProtection/backupVaults/backupJobs"}' + headers: + cache-control: + - no-cache + content-length: + - '2351' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:42:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '197' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g --vault-name -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cli-test-disk-new-cli-test-disk-new-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:42:54 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance delete + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==","status":"Inprogress","startTime":"2022-06-21T12:42:54.6993356Z","endTime":"0001-01-01T00:00:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:43:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance delete + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzhmZTdmYzgyLTQzNDUtNDg1YS05NTlkLWI0NzkyM2Q0OTRhZg==","status":"Succeeded","startTime":"2022-06-21T12:42:54.6993356Z","endTime":"2022-06-21T12:43:50Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:43:54 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g --vault-name -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/backupInstances/cliteststoreaccount-cliteststoreaccount-b7e6f082-b310-11eb-8f55-9cfce85d4fae?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZjYjJkZWMxLWUwMTItNGY1MS04YjM5LWNlNjk5MjBkZTM4OQ==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:43:56 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZjYjJkZWMxLWUwMTItNGY1MS04YjM5LWNlNjk5MjBkZTM4OQ==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '199' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-instance delete + Connection: + - keep-alive + ParameterSetName: + - -g --vault-name -n --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZjYjJkZWMxLWUwMTItNGY1MS04YjM5LWNlNjk5MjBkZTM4OQ==?api-version=2022-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZjYjJkZWMxLWUwMTItNGY1MS04YjM5LWNlNjk5MjBkZTM4OQ==","name":"ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwO2ZjYjJkZWMxLWUwMTItNGY1MS04YjM5LWNlNjk5MjBkZTM4OQ==","status":"Succeeded","startTime":"2022-06-21T12:43:57.5675294Z","endTime":"2022-06-21T12:44:12Z"}' + headers: + cache-control: + - no-cache + content-length: + - '476' + content-type: + - application/json + date: + - Tue, 21 Jun 2022 12:44:27 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '999' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection resource-guard delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g -n -y + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/resourceGuards/cli-test-resource-guard?api-version=2022-04-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:44:30 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - dataprotection backup-vault delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g --vault-name --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-dataprotection/1.0.0b1 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/backupVaults/cli-test-new-vault?api-version=2022-04-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.DataProtection/locations/centraluseuap/operationStatus/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzM5NTZlNGUyLWQ1ZDUtNGQzNC1hYjc2LWEyMDAzMjMzODFmMw==?api-version=2022-04-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:44:31 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DataProtection/locations/centraluseuap/operationResults/ODkwZWU0YjUtNDBkYS00YTNlLWE5NTItZTgxZTg0NDU1OTcwOzM5NTZlNGUyLWQ1ZDUtNGQzNC1hYjc2LWEyMDAzMjMzODFmMw==?api-version=2022-04-01 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + x-powered-by: + - ASP.NET + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - disk delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --name --resource-group --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.1.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new?api-version=2022-03-02 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/6fa15a8a-206c-432e-8116-b7c721efc59d?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2022-03-02 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:44:32 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/6fa15a8a-206c-432e-8116-b7c721efc59d?p=814d4482-f746-4961-be2b-b822c13856d2&monitor=true&api-version=2022-03-02 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/DeleteDisks3Min;2998,Microsoft.Compute/DeleteDisks30Min;23997 + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - disk delete + Connection: + - keep-alive + ParameterSetName: + - --name --resource-group --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.1.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/6fa15a8a-206c-432e-8116-b7c721efc59d?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2022-03-02 + response: + body: + string: "{\r\n \"startTime\": \"2022-06-21T12:44:32.699531+00:00\",\r\n \"endTime\": + \"2022-06-21T12:44:32.9026219+00:00\",\r\n \"status\": \"Succeeded\",\r\n + \ \"name\": \"6fa15a8a-206c-432e-8116-b7c721efc59d\"\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '183' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:45:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetOperation3Min;49996,Microsoft.Compute/GetOperation30Min;399979 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - disk delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --name --resource-group --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.1.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Compute/disks/cli-test-disk-new-restored?api-version=2022-03-02 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/175849a1-eea2-41cc-9569-513798164e89?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2022-03-02 + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 21 Jun 2022 12:45:03 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/175849a1-eea2-41cc-9569-513798164e89?p=814d4482-f746-4961-be2b-b822c13856d2&monitor=true&api-version=2022-03-02 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/DeleteDisks3Min;2997,Microsoft.Compute/DeleteDisks30Min;23996 + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - disk delete + Connection: + - keep-alive + ParameterSetName: + - --name --resource-group --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.1.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/centraluseuap/DiskOperations/175849a1-eea2-41cc-9569-513798164e89?p=814d4482-f746-4961-be2b-b822c13856d2&api-version=2022-03-02 + response: + body: + string: "{\r\n \"startTime\": \"2022-06-21T12:45:04.5278588+00:00\",\r\n \"endTime\": + \"2022-06-21T12:45:04.7153544+00:00\",\r\n \"status\": \"Succeeded\",\r\n + \ \"name\": \"175849a1-eea2-41cc-9569-513798164e89\"\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '184' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:45:33 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetOperation3Min;49994,Microsoft.Compute/GetOperation30Min;399977 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - storage account delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --name --resource-group --yes + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-storage/20.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sarath-rg/providers/Microsoft.Storage/storageAccounts/cliteststoreaccount?api-version=2021-09-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + content-type: + - text/plain; charset=utf-8 + date: + - Tue, 21 Jun 2022 12:45:40 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/dataprotection/setup.py b/src/dataprotection/setup.py index e8569e3caa6..ace8242ce9e 100644 --- a/src/dataprotection/setup.py +++ b/src/dataprotection/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '0.4.0' +VERSION = '0.5.0' try: from azext_dataprotection.manual.version import VERSION except ImportError: diff --git a/src/index.json b/src/index.json index b52d204202f..1739da58f2c 100644 --- a/src/index.json +++ b/src/index.json @@ -889,51 +889,6 @@ } ], "aks-preview": [ - { - "downloadUrl": "https://azurecliaks.blob.core.windows.net/azure-cli-extension/aks_preview-0.4.35-py2.py3-none-any.whl", - "filename": "aks_preview-0.4.35-py2.py3-none-any.whl", - "metadata": { - "azext.isPreview": true, - "azext.minCliCoreVersion": "2.0.49", - "classifiers": [ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Intended Audience :: System Administrators", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "License :: OSI Approved :: MIT License" - ], - "extensions": { - "python.details": { - "contacts": [ - { - "email": "azpycli@microsoft.com", - "name": "Microsoft Corporation", - "role": "author" - } - ], - "document_names": { - "description": "DESCRIPTION.rst" - }, - "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview" - } - } - }, - "generator": "bdist_wheel (0.30.0)", - "license": "MIT", - "metadata_version": "2.0", - "name": "aks-preview", - "summary": "Provides a preview for upcoming AKS features", - "version": "0.4.35" - }, - "sha256Digest": "1f5eac9040d0c71650e349264e2161bef7c409ed037d3aa1241ea14f438f668a" - }, { "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.36-py2.py3-none-any.whl", "filename": "aks_preview-0.4.36-py2.py3-none-any.whl", @@ -5710,6 +5665,307 @@ "version": "0.5.79" }, "sha256Digest": "e00adb76107a1daf813b7469392cc42f54dfe37a13f300e0e3f5fb59604a1a7a" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.80-py2.py3-none-any.whl", + "filename": "aks_preview-0.5.80-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.35.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/aks-preview" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "aks-preview", + "summary": "Provides a preview for upcoming AKS features", + "version": "0.5.80" + }, + "sha256Digest": "b2b6b10bea7eb3e667b6d3377be2c901c8a707de4a29fea5b5e4e2c5a79ea465" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.81-py2.py3-none-any.whl", + "filename": "aks_preview-0.5.81-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.35.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/aks-preview" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "aks-preview", + "summary": "Provides a preview for upcoming AKS features", + "version": "0.5.81" + }, + "sha256Digest": "cd513d21399b00621fe54b3cef4e5736b521d89f4233d01020efe8a1fb2a029d" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.82-py2.py3-none-any.whl", + "filename": "aks_preview-0.5.82-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.35.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/aks-preview" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "aks-preview", + "summary": "Provides a preview for upcoming AKS features", + "version": "0.5.82" + }, + "sha256Digest": "0d92faa3baf8df81f784efe3c719f915fc846e0f5a1b5884477b28bc19a3dc5e" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.83-py2.py3-none-any.whl", + "filename": "aks_preview-0.5.83-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/aks-preview" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "aks-preview", + "summary": "Provides a preview for upcoming AKS features", + "version": "0.5.83" + }, + "sha256Digest": "01a9cba4d6553f8dc21a8bc837db19761a61c683ddbd72383071030edb5fa806" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.85-py2.py3-none-any.whl", + "filename": "aks_preview-0.5.85-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/aks-preview" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "aks-preview", + "summary": "Provides a preview for upcoming AKS features", + "version": "0.5.85" + }, + "sha256Digest": "1b67fa76d283eee75bb135dc4e4efd9640364a84cd9c0786d6311090b8d9b8fd" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.86-py2.py3-none-any.whl", + "filename": "aks_preview-0.5.86-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/aks-preview" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "aks-preview", + "summary": "Provides a preview for upcoming AKS features", + "version": "0.5.86" + }, + "sha256Digest": "6d35edb29885d02dce1c27d3fc16280239b288151984ac9b84f7d0de8ba44b61" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.87-py2.py3-none-any.whl", + "filename": "aks_preview-0.5.87-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/aks-preview" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "aks-preview", + "summary": "Provides a preview for upcoming AKS features", + "version": "0.5.87" + }, + "sha256Digest": "74b0bdfee2818757cafb88edec216446e71bf0f56c9365a387966ef0490bcbfc" } ], "alertsmanagement": [ @@ -6125,6 +6381,50 @@ "version": "0.1.1" }, "sha256Digest": "267cb352947fc4d0991d6d36b5a5ab86604c95a66acfb030212653ae4ada0fc6" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/amg-0.1.2-py3-none-any.whl", + "filename": "amg-0.1.2-py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.maxCliCoreVersion": "2.99.0", + "azext.minCliCoreVersion": "2.30.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "ad4g@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/amg" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "amg", + "summary": "Microsoft Azure Command-Line Tools Azure Managed Grafana Extension", + "version": "0.1.2" + }, + "sha256Digest": "f6e7b4cbe3fed90f9683ef96280612e2646286ca8028f4061013a0c6255c7208" } ], "application-insights": [ @@ -6847,13 +7147,58 @@ "metadata_version": "2.0", "name": "appservice-kube", "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", - "version": "0.1.0" + "version": "0.1.0" + }, + "sha256Digest": "20f01eb95b1daadf21f589d3d953a756cb61259f279973880b4c0acbd4e05e27" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.1-py2.py3-none-any.whl", + "filename": "appservice_kube-0.1.1-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.26.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "appservice-kube", + "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", + "version": "0.1.1" }, - "sha256Digest": "20f01eb95b1daadf21f589d3d953a756cb61259f279973880b4c0acbd4e05e27" + "sha256Digest": "4b1b59fbac8dc68f390c48e9e8fa32676c041b857d2bf5f425bc8815e69b8708" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.1-py2.py3-none-any.whl", - "filename": "appservice_kube-0.1.1-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.2-py2.py3-none-any.whl", + "filename": "appservice_kube-0.1.2-py2.py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.26.0", @@ -6892,16 +7237,17 @@ "metadata_version": "2.0", "name": "appservice-kube", "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", - "version": "0.1.1" + "version": "0.1.2" }, - "sha256Digest": "4b1b59fbac8dc68f390c48e9e8fa32676c041b857d2bf5f425bc8815e69b8708" + "sha256Digest": "aa67ced7e361002bf8bec125540c4f9eb216ba0ad7342336285b8bdd17f1ece0" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.2-py2.py3-none-any.whl", - "filename": "appservice_kube-0.1.2-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.3-py2.py3-none-any.whl", + "filename": "appservice_kube-0.1.3-py2.py3-none-any.whl", "metadata": { "azext.isPreview": true, - "azext.minCliCoreVersion": "2.26.0", + "azext.maxCliCoreVersion": "2.33.1", + "azext.minCliCoreVersion": "2.33.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -6928,7 +7274,7 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/appservice-kube" } } }, @@ -6937,17 +7283,16 @@ "metadata_version": "2.0", "name": "appservice-kube", "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", - "version": "0.1.2" + "version": "0.1.3" }, - "sha256Digest": "aa67ced7e361002bf8bec125540c4f9eb216ba0ad7342336285b8bdd17f1ece0" + "sha256Digest": "e972d2e31eacf83f8ceddc7a4db88e72af71238cdfe6cb6772742be163a9230f" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.3-py2.py3-none-any.whl", - "filename": "appservice_kube-0.1.3-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.4-py2.py3-none-any.whl", + "filename": "appservice_kube-0.1.4-py2.py3-none-any.whl", "metadata": { "azext.isPreview": true, - "azext.maxCliCoreVersion": "2.33.1", - "azext.minCliCoreVersion": "2.33.0", + "azext.minCliCoreVersion": "2.34.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -6983,16 +7328,16 @@ "metadata_version": "2.0", "name": "appservice-kube", "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", - "version": "0.1.3" + "version": "0.1.4" }, - "sha256Digest": "e972d2e31eacf83f8ceddc7a4db88e72af71238cdfe6cb6772742be163a9230f" + "sha256Digest": "96156079aa1128cd5819d353aa27434b4c028f6b525275a136092c5c2b02af4f" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.4-py2.py3-none-any.whl", - "filename": "appservice_kube-0.1.4-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.5-py2.py3-none-any.whl", + "filename": "appservice_kube-0.1.5-py2.py3-none-any.whl", "metadata": { "azext.isPreview": true, - "azext.minCliCoreVersion": "2.34.0", + "azext.minCliCoreVersion": "2.34.1", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -7028,13 +7373,13 @@ "metadata_version": "2.0", "name": "appservice-kube", "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", - "version": "0.1.4" + "version": "0.1.5" }, - "sha256Digest": "96156079aa1128cd5819d353aa27434b4c028f6b525275a136092c5c2b02af4f" + "sha256Digest": "d380339170ffdfcdd1e26336da8a3586761b0268f959476f0ecdc50a6365160d" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.5-py2.py3-none-any.whl", - "filename": "appservice_kube-0.1.5-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.6-py2.py3-none-any.whl", + "filename": "appservice_kube-0.1.6-py2.py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.34.1", @@ -7073,13 +7418,13 @@ "metadata_version": "2.0", "name": "appservice-kube", "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", - "version": "0.1.5" + "version": "0.1.6" }, - "sha256Digest": "d380339170ffdfcdd1e26336da8a3586761b0268f959476f0ecdc50a6365160d" + "sha256Digest": "8bf69f06efb9f47aad181f1917f9148c10ab3df6ae1de5b584482a8141727b05" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.6-py2.py3-none-any.whl", - "filename": "appservice_kube-0.1.6-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-0.1.7-py2.py3-none-any.whl", + "filename": "appservice_kube-0.1.7-py2.py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.34.1", @@ -7118,9 +7463,9 @@ "metadata_version": "2.0", "name": "appservice-kube", "summary": "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension", - "version": "0.1.6" + "version": "0.1.7" }, - "sha256Digest": "8bf69f06efb9f47aad181f1917f9148c10ab3df6ae1de5b584482a8141727b05" + "sha256Digest": "0d0f1e3aa1540e204ffcfb5fb00ebf0ae7d6de693d73d5a94821679f81f75263" } ], "arcappliance": [ @@ -7383,9 +7728,119 @@ "version": "0.2.23" }, "sha256Digest": "f65ea31e60c8576137f8abef556c365bea8cbf50f1650b9e4375fdc8ba7a0b1e" + }, + { + "downloadUrl": "https://arcplatformcliextprod.blob.core.windows.net/arcappliance/arcappliance-0.2.24-py2.py3-none-any.whl", + "filename": "arcappliance-0.2.24-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.0.67", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "appliance@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://msazure.visualstudio.com/AzureArcPlatform/_git/arcappliance-cli-extensions" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "arcappliance", + "run_requires": [ + { + "requires": [ + "jsonschema (==3.2.0)", + "kubernetes (==11.0.0)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools Arcappliance Extension", + "version": "0.2.24" + }, + "sha256Digest": "6fad685e2ddfdc345542d990760aff7838b83d978b31fca23440dc9e11bf94d8" } ], "arcdata": [ + { + "downloadUrl": "https://azurearcdatacli.blob.core.windows.net/cli-extensions/arcdata-1.4.2-py2.py3-none-any.whl", + "filename": "arcdata-1.4.2-py2.py3-none-any.whl", + "metadata": { + "azext.isExperimental": false, + "azext.minCliCoreVersion": "2.3.1", + "classifiers": [ + "Development Status :: 1 - Beta", + "Intended Audience :: Developers", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "dpgswdist@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://docs.microsoft.com/en-us/azure/azure-arc/data/" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "license_file": "LICENSE", + "metadata_version": "2.0", + "name": "arcdata", + "run_requires": [ + { + "requires": [ + "colorama (==0.4.4)", + "jinja2 (==3.0.3)", + "jsonpatch (==1.24)", + "jsonpath-ng (==1.4.3)", + "jsonschema (==3.2.0)", + "kubernetes (==12.0.1)", + "ndjson (==0.3.1)", + "pem (==21.2.0)", + "pydash (==4.8.0)" + ] + } + ], + "summary": "Tools for managing ArcData.", + "version": "1.4.2" + }, + "sha256Digest": "f5c0a29bda9f7e914347dc00481c89d21dea17abf98d1038ec0c7fa337049d97" + }, { "downloadUrl": "https://azurearcdatacli.blob.core.windows.net/cli-extensions/arcdata-1.4.1-py2.py3-none-any.whl", "filename": "arcdata-1.4.1-py2.py3-none-any.whl", @@ -8357,6 +8812,57 @@ "version": "0.2.0" }, "sha256Digest": "895328b45d8bcfe45e4937885572cd1f39d23bc49f88314713a462bf1a367cc9" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/attestation-0.2.1-py3-none-any.whl", + "filename": "attestation-0.2.1-py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.11.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/attestation" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "attestation", + "run_requires": [ + { + "requires": [ + "pyjwt (==1.7.1)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools AttestationManagementClient Extension", + "version": "0.2.1" + }, + "sha256Digest": "1176c4e5d1d34a791f301ee6416e695e781eee3f41d0f372463405c68478727c" } ], "authV2": [ @@ -10122,13 +10628,66 @@ } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.10.11" + "version": "0.10.11" + }, + "sha256Digest": "8a7892996403fd5fd6850262acc176605704990db9d0a95c743545f1c0659d83" + }, + { + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.10.15/azure_iot-0.10.15-py3-none-any.whl", + "filename": "azure_iot-0.10.15-py3-none-any.whl", + "metadata": { + "azext.minCliCoreVersion": "2.17.1", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "iotupx@microsoft.com", + "name": "Microsoft", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/azure/azure-iot-cli-extension" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "azure-iot", + "requires_python": ">=3.6,<4", + "run_requires": [ + { + "requires": [ + "jsonschema (==3.2.0)", + "packaging", + "paho-mqtt (==1.5.0)" + ] + } + ], + "summary": "The Azure IoT extension for Azure CLI.", + "version": "0.10.15" }, - "sha256Digest": "8a7892996403fd5fd6850262acc176605704990db9d0a95c743545f1c0659d83" + "sha256Digest": "465b8a2688260973519c00dd48989faa015423b195d20efb423e976c49924983" }, { - "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.10.15/azure_iot-0.10.15-py3-none-any.whl", - "filename": "azure_iot-0.10.15-py3-none-any.whl", + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.10.17/azure_iot-0.10.17-py3-none-any.whl", + "filename": "azure_iot-0.10.17-py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.17.1", "classifiers": [ @@ -10159,7 +10718,9 @@ } } }, - "extras": [], + "extras": [ + "uamqp" + ], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", @@ -10168,20 +10729,33 @@ "run_requires": [ { "requires": [ - "jsonschema (==3.2.0)", + "azure-iot-device (~=2.5)", + "jsonschema (~=3.2.0)", "packaging", - "paho-mqtt (==1.5.0)" + "tqdm (~=4.62)" + ] + }, + { + "extra": "uamqp", + "requires": [ + "uamqp (~=1.2)" + ] + }, + { + "environment": "python_version < \"3.8\"", + "requires": [ + "importlib-metadata" ] } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.10.15" + "version": "0.10.17" }, - "sha256Digest": "465b8a2688260973519c00dd48989faa015423b195d20efb423e976c49924983" + "sha256Digest": "71f449108419e66f4b8f72a0d9b544e7a38c7fc4b3fdfcab9a9088dff3190710" }, { - "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.10.17/azure_iot-0.10.17-py3-none-any.whl", - "filename": "azure_iot-0.10.17-py3-none-any.whl", + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.11.0/azure_iot-0.11.0-py3-none-any.whl", + "filename": "azure_iot-0.11.0-py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.17.1", "classifiers": [ @@ -10243,13 +10817,13 @@ } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.10.17" + "version": "0.11.0" }, - "sha256Digest": "71f449108419e66f4b8f72a0d9b544e7a38c7fc4b3fdfcab9a9088dff3190710" + "sha256Digest": "b599137425d8b0df615813b9cbedb02d43549acf3ae0c9a703f5d636cf05ebf9" }, { - "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.11.0/azure_iot-0.11.0-py3-none-any.whl", - "filename": "azure_iot-0.11.0-py3-none-any.whl", + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.12.1/azure_iot-0.12.1-py3-none-any.whl", + "filename": "azure_iot-0.12.1-py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.17.1", "classifiers": [ @@ -10261,6 +10835,8 @@ "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", "License :: OSI Approved :: MIT License" ], "extensions": { @@ -10293,6 +10869,7 @@ "requires": [ "azure-iot-device (~=2.5)", "jsonschema (~=3.2.0)", + "msrestazure (<2.0.0,>=0.6.3)", "packaging", "tqdm (~=4.62)" ] @@ -10311,15 +10888,15 @@ } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.11.0" + "version": "0.12.1" }, - "sha256Digest": "b599137425d8b0df615813b9cbedb02d43549acf3ae0c9a703f5d636cf05ebf9" + "sha256Digest": "4cc809c496ecda0c892b664d0d1de58586b56db9211c3d12c96c640bf8d8c84f" }, { - "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.12.1/azure_iot-0.12.1-py3-none-any.whl", - "filename": "azure_iot-0.12.1-py3-none-any.whl", + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.13.0/azure_iot-0.13.0-py3-none-any.whl", + "filename": "azure_iot-0.13.0-py3-none-any.whl", "metadata": { - "azext.minCliCoreVersion": "2.17.1", + "azext.minCliCoreVersion": "2.24.1", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -10382,13 +10959,13 @@ } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.12.1" + "version": "0.13.0" }, - "sha256Digest": "4cc809c496ecda0c892b664d0d1de58586b56db9211c3d12c96c640bf8d8c84f" + "sha256Digest": "a8078483a23ed656cb79816dc8e7c39f3c18a04945b4366edc99a76897419bd2" }, { - "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.13.0/azure_iot-0.13.0-py3-none-any.whl", - "filename": "azure_iot-0.13.0-py3-none-any.whl", + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.14.0/azure_iot-0.14.0-py3-none-any.whl", + "filename": "azure_iot-0.14.0-py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.24.1", "classifiers": [ @@ -10453,13 +11030,13 @@ } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.13.0" + "version": "0.14.0" }, - "sha256Digest": "a8078483a23ed656cb79816dc8e7c39f3c18a04945b4366edc99a76897419bd2" + "sha256Digest": "56e07939e0f60412c8dce20a278127be4768a4cd8c487e5201396428e1b2f86f" }, { - "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.14.0/azure_iot-0.14.0-py3-none-any.whl", - "filename": "azure_iot-0.14.0-py3-none-any.whl", + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.14.1/azure_iot-0.14.1-py3-none-any.whl", + "filename": "azure_iot-0.14.1-py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.24.1", "classifiers": [ @@ -10524,22 +11101,22 @@ } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.14.0" + "version": "0.14.1" }, - "sha256Digest": "56e07939e0f60412c8dce20a278127be4768a4cd8c487e5201396428e1b2f86f" + "sha256Digest": "9138b2610ac1ad775d4012e532cfa273a2d56dc2a649aa71d838f3c26d74b77d" }, { - "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.14.1/azure_iot-0.14.1-py3-none-any.whl", - "filename": "azure_iot-0.14.1-py3-none-any.whl", + "downloadUrl": "https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.15.0/azure_iot-0.15.0-py3-none-any.whl", + "filename": "azure_iot-0.15.0-py3-none-any.whl", "metadata": { - "azext.minCliCoreVersion": "2.24.1", + "azext.minCliCoreVersion": "2.30.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", @@ -10570,12 +11147,14 @@ "license": "MIT", "metadata_version": "2.0", "name": "azure-iot", - "requires_python": ">=3.6,<4", + "requires_python": ">=3.7", "run_requires": [ { "requires": [ - "azure-iot-device (~=2.5)", + "azure-iot-device (~=2.11)", + "azure-mgmt-core (<2.0.0,>=1.3.0)", "jsonschema (~=3.2.0)", + "msrest (>=0.6.21)", "msrestazure (<2.0.0,>=0.6.3)", "packaging", "tqdm (~=4.62)" @@ -10595,9 +11174,9 @@ } ], "summary": "The Azure IoT extension for Azure CLI.", - "version": "0.14.1" + "version": "0.15.0" }, - "sha256Digest": "9138b2610ac1ad775d4012e532cfa273a2d56dc2a649aa71d838f3c26d74b77d" + "sha256Digest": "63243fc8edb3a38636d706fc280a95aa13e7dfc1be455f62e41af1c114260049" } ], "azurestackhci": [ @@ -11151,27 +11730,203 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/blueprint" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/blueprint" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "blueprint", + "summary": "Microsoft Azure Command-Line Tools Blueprint Extension", + "version": "0.3.1" + }, + "sha256Digest": "ebac321b7ef9811d82a166da7ec48b2d70f234aec8d3fd597f471ba752a5d253" + } + ], + "change-analysis": [ + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/change_analysis-0.1.0-py3-none-any.whl", + "filename": "change_analysis-0.1.0-py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/change-analysis" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "change-analysis", + "summary": "Microsoft Azure Command-Line Tools ChangeAnalysis Extension.", + "version": "0.1.0" + }, + "sha256Digest": "49f1761a1b1ad29169af2ecd5793e10ddec797ebb2610e7c70e1b1ab2b75126a" + } + ], + "cli-translator": [ + { + "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.1.0-py3-none-any.whl", + "filename": "cli_translator-0.1.0-py3-none-any.whl", + "metadata": { + "azext.isExperimental": true, + "azext.minCliCoreVersion": "2.11.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "cli-translator", + "summary": "Translate ARM template to executable Azure CLI scripts.", + "version": "0.1.0" + }, + "sha256Digest": "8a4d19ed89cd63e1cc461715b7b0a1a989d2b480adc1b3b4f5747eef0327b85b" + }, + { + "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.2.0-py3-none-any.whl", + "filename": "cli_translator-0.2.0-py3-none-any.whl", + "metadata": { + "azext.isExperimental": true, + "azext.minCliCoreVersion": "2.13.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "cli-translator", + "summary": "Translate ARM template to executable Azure CLI scripts.", + "version": "0.2.0" + }, + "sha256Digest": "ee07cbcde217d2b1ab226ef5aeea8e44510b704fb5e3976638dcf2f978f722e4" + }, + { + "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.3.0-py3-none-any.whl", + "filename": "cli_translator-0.3.0-py3-none-any.whl", + "metadata": { + "azext.isExperimental": true, + "azext.minCliCoreVersion": "2.13.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator" } } }, "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "blueprint", - "summary": "Microsoft Azure Command-Line Tools Blueprint Extension", - "version": "0.3.1" + "name": "cli-translator", + "summary": "Translate ARM template to executable Azure CLI scripts.", + "version": "0.3.0" }, - "sha256Digest": "ebac321b7ef9811d82a166da7ec48b2d70f234aec8d3fd597f471ba752a5d253" + "sha256Digest": "9ea6162d37fc3390be4dce64cb05c5c588070104f3e92a701ab475473565a8a9" } ], - "cli-translator": [ + "cloud-service": [ { - "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.1.0-py3-none-any.whl", - "filename": "cli_translator-0.1.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/cloud_service-0.1.0-py3-none-any.whl", + "filename": "cloud_service-0.1.0-py3-none-any.whl", "metadata": { "azext.isExperimental": true, - "azext.minCliCoreVersion": "2.11.0", + "azext.minCliCoreVersion": "2.15.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -11196,25 +11951,33 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cloudservice" } } }, + "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "cli-translator", - "summary": "Translate ARM template to executable Azure CLI scripts.", + "name": "cloud-service", + "run_requires": [ + { + "requires": [ + "azure-mgmt-compute (~=19.0.0)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools ComputeManagementClient Extension", "version": "0.1.0" }, - "sha256Digest": "8a4d19ed89cd63e1cc461715b7b0a1a989d2b480adc1b3b4f5747eef0327b85b" + "sha256Digest": "22c640991a5e98e42ddcb4303813cd63b75d4b3d392ad9eab955a5af1b87c45b" }, { - "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.2.0-py3-none-any.whl", - "filename": "cli_translator-0.2.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/cloud_service-0.2.0-py3-none-any.whl", + "filename": "cloud_service-0.2.0-py3-none-any.whl", "metadata": { "azext.isExperimental": true, - "azext.minCliCoreVersion": "2.13.0", + "azext.minCliCoreVersion": "2.15.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -11239,25 +12002,35 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cloudservice" } } }, + "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "cli-translator", - "summary": "Translate ARM template to executable Azure CLI scripts.", + "name": "cloud-service", + "run_requires": [ + { + "requires": [ + "azure-mgmt-compute (~=20.0.0)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools ComputeManagementClient Extension", "version": "0.2.0" }, - "sha256Digest": "ee07cbcde217d2b1ab226ef5aeea8e44510b704fb5e3976638dcf2f978f722e4" - }, + "sha256Digest": "ee7ca3a5eaa801ceea9173f2ff0a429600bff9e9339d504071c0283b56facec4" + } + ], + "communication": [ { - "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.3.0-py3-none-any.whl", - "filename": "cli_translator-0.3.0-py3-none-any.whl", + "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/communication-0.1.0-py3-none-any.whl", + "filename": "communication-0.1.0-py3-none-any.whl", "metadata": { "azext.isExperimental": true, - "azext.minCliCoreVersion": "2.13.0", + "azext.minCliCoreVersion": "2.11.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -11282,26 +12055,23 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/communication" } } }, "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "cli-translator", - "summary": "Translate ARM template to executable Azure CLI scripts.", - "version": "0.3.0" + "name": "communication", + "summary": "Microsoft Azure Command-Line Tools CommunicationServiceManagementClient Extension", + "version": "0.1.0" }, - "sha256Digest": "9ea6162d37fc3390be4dce64cb05c5c588070104f3e92a701ab475473565a8a9" - } - ], - "cloud-service": [ + "sha256Digest": "a16e8262b53791aad9e74a4f3d4804a5bafbe415df3c7651776e98b787bf6226" + }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/cloud_service-0.1.0-py3-none-any.whl", - "filename": "cloud_service-0.1.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/communication-1.0.0-py3-none-any.whl", + "filename": "communication-1.0.0-py3-none-any.whl", "metadata": { - "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0", "classifiers": [ "Development Status :: 4 - Beta", @@ -11327,32 +12097,23 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cloudservice" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/communication" } } }, - "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "cloud-service", - "run_requires": [ - { - "requires": [ - "azure-mgmt-compute (~=19.0.0)" - ] - } - ], - "summary": "Microsoft Azure Command-Line Tools ComputeManagementClient Extension", - "version": "0.1.0" + "name": "communication", + "summary": "Microsoft Azure Command-Line Tools CommunicationServiceManagementClient Extension", + "version": "1.0.0" }, - "sha256Digest": "22c640991a5e98e42ddcb4303813cd63b75d4b3d392ad9eab955a5af1b87c45b" + "sha256Digest": "2ee3d4c870c0c0c0dd97fbe6510958ac8c23dca2b4814b4a0a9ea665cd17e723" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/cloud_service-0.2.0-py3-none-any.whl", - "filename": "cloud_service-0.2.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/communication-1.1.0-py3-none-any.whl", + "filename": "communication-1.1.0-py3-none-any.whl", "metadata": { - "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0", "classifiers": [ "Development Status :: 4 - Beta", @@ -11378,7 +12139,7 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/cloudservice" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/communication" } } }, @@ -11386,27 +12147,27 @@ "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "cloud-service", + "name": "communication", "run_requires": [ { "requires": [ - "azure-mgmt-compute (~=20.0.0)" + "azure-communication-identity", + "azure-communication-phonenumbers", + "azure-communication-sms", + "azure-core" ] } ], - "summary": "Microsoft Azure Command-Line Tools ComputeManagementClient Extension", - "version": "0.2.0" + "summary": "Microsoft Azure Command-Line Tools CommunicationServiceManagementClient Extension", + "version": "1.1.0" }, - "sha256Digest": "ee7ca3a5eaa801ceea9173f2ff0a429600bff9e9339d504071c0283b56facec4" - } - ], - "communication": [ + "sha256Digest": "e4ac2008217ade46ca2504b31aa79ab11c1c892964fd06df911e976be6cf3dae" + }, { - "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/communication-0.1.0-py3-none-any.whl", - "filename": "communication-0.1.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/communication-1.1.1-py3-none-any.whl", + "filename": "communication-1.1.1-py3-none-any.whl", "metadata": { - "azext.isExperimental": true, - "azext.minCliCoreVersion": "2.11.0", + "azext.minCliCoreVersion": "2.15.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -11431,22 +12192,33 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/communication" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/communication" } } }, + "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", "name": "communication", + "run_requires": [ + { + "requires": [ + "azure-communication-identity", + "azure-communication-phonenumbers", + "azure-communication-sms", + "azure-core" + ] + } + ], "summary": "Microsoft Azure Command-Line Tools CommunicationServiceManagementClient Extension", - "version": "0.1.0" + "version": "1.1.1" }, - "sha256Digest": "a16e8262b53791aad9e74a4f3d4804a5bafbe415df3c7651776e98b787bf6226" + "sha256Digest": "f5f50e27f9066772fd55c2c6bb9c4100964ef7b2ad38942cdf900cb856431f34" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/communication-1.0.0-py3-none-any.whl", - "filename": "communication-1.0.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/communication-1.1.2-py3-none-any.whl", + "filename": "communication-1.1.2-py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.15.0", "classifiers": [ @@ -11473,23 +12245,37 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/communication" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/communication" } } }, + "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", "name": "communication", + "run_requires": [ + { + "requires": [ + "azure-communication-identity", + "azure-communication-phonenumbers", + "azure-communication-sms", + "azure-core" + ] + } + ], "summary": "Microsoft Azure Command-Line Tools CommunicationServiceManagementClient Extension", - "version": "1.0.0" + "version": "1.1.2" }, - "sha256Digest": "2ee3d4c870c0c0c0dd97fbe6510958ac8c23dca2b4814b4a0a9ea665cd17e723" - }, + "sha256Digest": "95baaac48941cf28d0bb55e6f0137815d815e422d94aaf8c09851f17134be3fd" + } + ], + "confidentialledger": [ { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/communication-1.1.0-py3-none-any.whl", - "filename": "communication-1.1.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/confidentialledger-0.1.0-py3-none-any.whl", + "filename": "confidentialledger-0.1.0-py3-none-any.whl", "metadata": { + "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0", "classifiers": [ "Development Status :: 4 - Beta", @@ -11515,37 +12301,23 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/communication" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/confidentialledger" } } }, - "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "communication", - "run_requires": [ - { - "requires": [ - "azure-communication-identity", - "azure-communication-phonenumbers", - "azure-communication-sms", - "azure-core" - ] - } - ], - "summary": "Microsoft Azure Command-Line Tools CommunicationServiceManagementClient Extension", - "version": "1.1.0" + "name": "confidentialledger", + "summary": "Microsoft Azure Command-Line Tools ConfidentialLedger Extension", + "version": "0.1.0" }, - "sha256Digest": "e4ac2008217ade46ca2504b31aa79ab11c1c892964fd06df911e976be6cf3dae" - } - ], - "confidentialledger": [ + "sha256Digest": "a8428687acab162b982153333766ec0f6888b2ce71dfd24f815cd4ee1e4b3ac3" + }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/confidentialledger-0.1.0-py3-none-any.whl", - "filename": "confidentialledger-0.1.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/confidentialledger-1.0.0-py3-none-any.whl", + "filename": "confidentialledger-1.0.0-py3-none-any.whl", "metadata": { - "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0", "classifiers": [ "Development Status :: 4 - Beta", @@ -11571,7 +12343,7 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/confidentialledger" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/confidentialledger" } } }, @@ -11580,9 +12352,9 @@ "metadata_version": "2.0", "name": "confidentialledger", "summary": "Microsoft Azure Command-Line Tools ConfidentialLedger Extension", - "version": "0.1.0" + "version": "1.0.0" }, - "sha256Digest": "a8428687acab162b982153333766ec0f6888b2ce71dfd24f815cd4ee1e4b3ac3" + "sha256Digest": "3afbf49f10cdddd9675562364ce2275f6f70eb5318fa85b658d711b1e24dc94e" } ], "confluent": [ @@ -13215,15 +13987,67 @@ } ], "summary": "Microsoft Azure Command-Line Tools Connectedk8s Extension", - "version": "1.2.5" + "version": "1.2.5" + }, + "sha256Digest": "fd0bc6f534e5a9e72fe6585031eeb29655d05f2cac4f505804bc6052a52c5fcd" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.2.6-py2.py3-none-any.whl", + "filename": "connectedk8s-1.2.6-py2.py3-none-any.whl", + "metadata": { + "azext.minCliCoreVersion": "2.23.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "description_content_type": "text/markdown", + "extensions": { + "python.details": { + "contacts": [ + { + "email": "k8connect@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/connectedk8s" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "connectedk8s", + "run_requires": [ + { + "requires": [ + "kubernetes (==11.0.0)", + "pycryptodome (==3.9.8)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools Connectedk8s Extension", + "version": "1.2.6" }, - "sha256Digest": "fd0bc6f534e5a9e72fe6585031eeb29655d05f2cac4f505804bc6052a52c5fcd" + "sha256Digest": "473e31ada7636316304b2a39a76654722a0f5409bf8a2ffddf196ccc42df10a4" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.2.6-py2.py3-none-any.whl", - "filename": "connectedk8s-1.2.6-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.2.7-py2.py3-none-any.whl", + "filename": "connectedk8s-1.2.7-py2.py3-none-any.whl", "metadata": { - "azext.minCliCoreVersion": "2.23.0", + "azext.minCliCoreVersion": "2.16.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -13267,13 +14091,13 @@ } ], "summary": "Microsoft Azure Command-Line Tools Connectedk8s Extension", - "version": "1.2.6" + "version": "1.2.7" }, - "sha256Digest": "473e31ada7636316304b2a39a76654722a0f5409bf8a2ffddf196ccc42df10a4" + "sha256Digest": "3f13d1b95c89865a8bdc0d40323956d599305892a54085e1115866b429ab2fa1" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.2.7-py2.py3-none-any.whl", - "filename": "connectedk8s-1.2.7-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.2.8-py2.py3-none-any.whl", + "filename": "connectedk8s-1.2.8-py2.py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.16.0", "classifiers": [ @@ -13314,18 +14138,18 @@ { "requires": [ "kubernetes (==11.0.0)", - "pycryptodome (==3.9.8)" + "pycryptodome (==3.14.1)" ] } ], "summary": "Microsoft Azure Command-Line Tools Connectedk8s Extension", - "version": "1.2.7" + "version": "1.2.8" }, - "sha256Digest": "3f13d1b95c89865a8bdc0d40323956d599305892a54085e1115866b429ab2fa1" + "sha256Digest": "df97793b98a0f8e2e70f8a7942c6d65b9e581c54cf3f7632d4c48f01b2426a09" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.2.8-py2.py3-none-any.whl", - "filename": "connectedk8s-1.2.8-py2.py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.2.9-py2.py3-none-any.whl", + "filename": "connectedk8s-1.2.9-py2.py3-none-any.whl", "metadata": { "azext.minCliCoreVersion": "2.16.0", "classifiers": [ @@ -13371,9 +14195,9 @@ } ], "summary": "Microsoft Azure Command-Line Tools Connectedk8s Extension", - "version": "1.2.8" + "version": "1.2.9" }, - "sha256Digest": "df97793b98a0f8e2e70f8a7942c6d65b9e581c54cf3f7632d4c48f01b2426a09" + "sha256Digest": "06cb4e2aa841abeb712b9e564748c28b14cc49cc30cd65b05730f633120c7666" } ], "connectedmachine": [ @@ -13884,6 +14708,50 @@ "version": "0.1.6" }, "sha256Digest": "3e13df39d8993cfe5ab0bf0821f335dc44bf2919c57d73ec88156671041ad239" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/connectedvmware-0.1.7-py2.py3-none-any.whl", + "filename": "connectedvmware-0.1.7-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.maxCliCoreVersion": "4.0.0", + "azext.minCliCoreVersion": "2.0.67", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "arcprivatecloudsfte@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/connectedvmware" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "connectedvmware", + "summary": "Microsoft Azure Command-Line Tools Connectedvmware Extension", + "version": "0.1.7" + }, + "sha256Digest": "857f7627ae3e618e9dc09c8ce882349593ef23237fcc24174a5097c51f88d86e" } ], "connection-monitor-preview": [ @@ -14295,6 +15163,112 @@ "version": "0.3.5" }, "sha256Digest": "876cc6040ee07654eb9c45d6fe603531797902f06fa0caebc4ad1961f78c8d76" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/containerapp-0.3.6-py2.py3-none-any.whl", + "filename": "containerapp-0.3.6-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "containerapp", + "run_requires": [ + { + "requires": [ + "azure-cli-core" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools Containerapp Extension", + "version": "0.3.6" + }, + "sha256Digest": "610df666637402173996efa3b8aaac0e4ae0a1608f5ea1006d252cda5f3eb4c6" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/containerapp-0.3.7-py2.py3-none-any.whl", + "filename": "containerapp-0.3.7-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "containerapp", + "run_requires": [ + { + "requires": [ + "azure-cli-core" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools Containerapp Extension", + "version": "0.3.7" + }, + "sha256Digest": "3e5b920980b5492929aeaa40ab7b1d2fd5a4dfa527b6c832c072792633055a8a" } ], "containerapp-compose": [ @@ -14348,6 +15322,57 @@ "version": "0.1.0" }, "sha256Digest": "37f3c616ddbdd1522fee318a1c10292b578cfa344462bbb6c2517bd1799b824c" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/containerapp_compose-0.2.0-py2.py3-none-any.whl", + "filename": "containerapp_compose-0.2.0-py2.py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.15.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/azure/azure-cli-extensions/tree/main/src/containerapp-compose" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "containerapp-compose", + "run_requires": [ + { + "requires": [ + "pycomposefile (>=0.0.29)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools Container Apps Preview Extension", + "version": "0.2.0" + }, + "sha256Digest": "d14df6302ec3f84c1de53075f800f9ca513db7e98752b12b34de41348ba9a75e" } ], "cosmosdb-preview": [ @@ -16823,13 +17848,64 @@ } ], "summary": "Microsoft Azure Command-Line Tools DataProtectionClient Extension", - "version": "0.1.0" + "version": "0.1.0" + }, + "sha256Digest": "e98056945e1b5a1485c5c7137fa03bc5c482495f43556ee084eeb50f39a45831" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-0.2.0-py3-none-any.whl", + "filename": "dataprotection-0.2.0-py3-none-any.whl", + "metadata": { + "azext.isExperimental": true, + "azext.minCliCoreVersion": "2.15.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/dataprotection" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "dataprotection", + "run_requires": [ + { + "requires": [ + "azure-mgmt-resourcegraph" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools DataProtectionClient Extension", + "version": "0.2.0" }, - "sha256Digest": "e98056945e1b5a1485c5c7137fa03bc5c482495f43556ee084eeb50f39a45831" + "sha256Digest": "91286e022f5803d77cd20687d378a438a4560dd6974d814fd34f13ea5f5c8b63" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-0.2.0-py3-none-any.whl", - "filename": "dataprotection-0.2.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-0.3.0-py3-none-any.whl", + "filename": "dataprotection-0.3.0-py3-none-any.whl", "metadata": { "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0", @@ -16857,7 +17933,7 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/dataprotection" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/dataprotection" } } }, @@ -16874,13 +17950,13 @@ } ], "summary": "Microsoft Azure Command-Line Tools DataProtectionClient Extension", - "version": "0.2.0" + "version": "0.3.0" }, - "sha256Digest": "91286e022f5803d77cd20687d378a438a4560dd6974d814fd34f13ea5f5c8b63" + "sha256Digest": "9c85b29bf073c89ecf5424fa2159bca20416142d49ac02e5cf596a1e2cd5ccd0" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-0.3.0-py3-none-any.whl", - "filename": "dataprotection-0.3.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-0.4.0-py3-none-any.whl", + "filename": "dataprotection-0.4.0-py3-none-any.whl", "metadata": { "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0", @@ -16912,26 +17988,18 @@ } } }, - "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", "name": "dataprotection", - "run_requires": [ - { - "requires": [ - "azure-mgmt-resourcegraph" - ] - } - ], "summary": "Microsoft Azure Command-Line Tools DataProtectionClient Extension", - "version": "0.3.0" + "version": "0.4.0" }, - "sha256Digest": "9c85b29bf073c89ecf5424fa2159bca20416142d49ac02e5cf596a1e2cd5ccd0" + "sha256Digest": "f854ecd79b215fc824e2625ac5995ae8a969fca2c933fba7cde04df8a35e26b7" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-0.4.0-py3-none-any.whl", - "filename": "dataprotection-0.4.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-0.5.0-py3-none-any.whl", + "filename": "dataprotection-0.5.0-py3-none-any.whl", "metadata": { "azext.isExperimental": true, "azext.minCliCoreVersion": "2.15.0", @@ -16968,9 +18036,9 @@ "metadata_version": "2.0", "name": "dataprotection", "summary": "Microsoft Azure Command-Line Tools DataProtectionClient Extension", - "version": "0.4.0" + "version": "0.5.0" }, - "sha256Digest": "f854ecd79b215fc824e2625ac5995ae8a969fca2c933fba7cde04df8a35e26b7" + "sha256Digest": "0f44943c0082b21b3b8c655d092b40a09c21e8bcd46800e962eb97d151c055d5" } ], "datashare": [ @@ -17871,94 +18939,6 @@ } ], "dev-spaces": [ - { - "downloadUrl": "https://azuredevspacestools.blob.core.windows.net/azdssetup/LKS/dev_spaces-1.0.5-py2.py3-none-any.whl", - "filename": "dev_spaces-1.0.5-py2.py3-none-any.whl", - "metadata": { - "azext.minCliCoreVersion": "2.1.0", - "classifiers": [ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Intended Audience :: System Administrators", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "License :: OSI Approved :: MIT License" - ], - "extensions": { - "python.details": { - "contacts": [ - { - "email": "azds-azcli@microsoft.com", - "name": "Microsoft Corporation", - "role": "author" - } - ], - "document_names": { - "description": "DESCRIPTION.rst" - }, - "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions" - } - } - }, - "generator": "bdist_wheel (0.30.0)", - "license": "MIT", - "metadata_version": "2.0", - "name": "dev-spaces", - "summary": "Dev Spaces provides a rapid, iterative Kubernetes development experience for teams.", - "version": "1.0.5" - }, - "sha256Digest": "6d481b89be4fe8835143433bb0b7c5ba2aba230433bc9ba483c0d26c5ef682a0" - }, - { - "downloadUrl": "https://azuredevspacestools.blob.core.windows.net/azdssetup/LKS/dev_spaces-1.0.4-py2.py3-none-any.whl", - "filename": "dev_spaces-1.0.4-py2.py3-none-any.whl", - "metadata": { - "azext.minCliCoreVersion": "2.0.63", - "classifiers": [ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Intended Audience :: System Administrators", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "License :: OSI Approved :: MIT License" - ], - "extensions": { - "python.details": { - "contacts": [ - { - "email": "azds-azcli@microsoft.com", - "name": "Microsoft Corporation", - "role": "author" - } - ], - "document_names": { - "description": "DESCRIPTION.rst" - }, - "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions" - } - } - }, - "generator": "bdist_wheel (0.30.0)", - "license": "MIT", - "metadata_version": "2.0", - "name": "dev-spaces", - "summary": "Dev Spaces provides a rapid, iterative Kubernetes development experience for teams.", - "version": "1.0.4" - }, - "sha256Digest": "713600593e7e5c4e317e99d46110485c527740a74d90f01fa9b2ed52cdd42034" - }, { "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/dev_spaces-1.0.6-py2.py3-none-any.whl", "filename": "dev_spaces-1.0.6-py2.py3-none-any.whl", @@ -23156,6 +24136,48 @@ "version": "1.2.2" }, "sha256Digest": "d214fe2383a30fc1cb8476c38a525ccf1aada2eb613503074e99dbda1dafc79c" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/k8s_extension-1.2.3-py3-none-any.whl", + "filename": "k8s_extension-1.2.3-py3-none-any.whl", + "metadata": { + "azext.minCliCoreVersion": "2.24.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/k8s-extension" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "k8s-extension", + "summary": "Microsoft Azure Command-Line Tools K8s-extension Extension", + "version": "1.2.3" + }, + "sha256Digest": "c012f662fd51ea183674efb16bb794c40338f948f84444c983fb78140b63a461" } ], "k8sconfiguration": [ @@ -25904,6 +26926,76 @@ "version": "2.4.1" }, "sha256Digest": "646e548193d1eb96618f9d1c3e53f54cc8d5fb9b8de6cd67a11065567dae21ad" + }, + { + "downloadUrl": "https://azuremlsdktestpypi.blob.core.windows.net/wheels/sdk-cli-v2-public/ml-2.5.0-py3-none-any.whl", + "filename": "ml-2.5.0-py3-none-any.whl", + "metadata": { + "azext.minCliCoreVersion": "2.15.0", + "classifiers": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Environment :: Console", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "License :: OSI Approved :: MIT License" + ], + "description_content_type": "text/x-rst", + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azuremlsdk@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azureml-examples" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "ml", + "run_requires": [ + { + "requires": [ + "applicationinsights (<=0.11.10)", + "azure-common (<2.0.0,>=1.1)", + "azure-identity", + "azure-storage-blob (<13.0.0,>=12.10.0)", + "azure-storage-file-datalake (<=12.6.0)", + "azure-storage-file-share (<13.0.0)", + "colorama (<=0.4.4)", + "cryptography", + "docker", + "isodate", + "jsonschema (<5.0.0,>=4.0.0)", + "marshmallow (<4.0.0,>=3.5)", + "pathspec (==0.9.*)", + "pydash (<=4.9.0)", + "pyjwt (<=2.3.0)", + "tqdm (<=4.63.0)", + "typing-extensions (>=4.0.1)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools AzureMachineLearningWorkspaces Extension", + "version": "2.5.0" + }, + "sha256Digest": "66c2c3dd71040be0ba304b80e25e8f5f2196caa3970e3c7e15d260243dde31e7" } ], "monitor-control-service": [ @@ -27336,13 +28428,56 @@ "metadata_version": "2.0", "name": "quantum", "summary": "Microsoft Azure Command-Line Tools Quantum Extension", - "version": "0.10.0" + "version": "0.10.0" + }, + "sha256Digest": "c280a1eda5a9eee853239cac1ac2c610d159d59be5ac29fa7d5a4a1a3d7cbbde" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.11.0-py3-none-any.whl", + "filename": "quantum-0.11.0-py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.23.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "que-contacts@microsoft.com", + "name": "Microsoft Corporation, Quantum Team", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "quantum", + "summary": "Microsoft Azure Command-Line Tools Quantum Extension", + "version": "0.11.0" }, - "sha256Digest": "c280a1eda5a9eee853239cac1ac2c610d159d59be5ac29fa7d5a4a1a3d7cbbde" + "sha256Digest": "96d85f1c7675e4d8a42384de348cad66e80343b6ae26142ebdb19d753c45fc2e" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.11.0-py3-none-any.whl", - "filename": "quantum-0.11.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.12.0-py3-none-any.whl", + "filename": "quantum-0.12.0-py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.23.0", @@ -27379,13 +28514,13 @@ "metadata_version": "2.0", "name": "quantum", "summary": "Microsoft Azure Command-Line Tools Quantum Extension", - "version": "0.11.0" + "version": "0.12.0" }, - "sha256Digest": "96d85f1c7675e4d8a42384de348cad66e80343b6ae26142ebdb19d753c45fc2e" + "sha256Digest": "ffc62c0663843522a3439acf4c682f9287849d5b3efcf2c4fd721266bfecfe96" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.12.0-py3-none-any.whl", - "filename": "quantum-0.12.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.13.0-py3-none-any.whl", + "filename": "quantum-0.13.0-py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.23.0", @@ -27413,7 +28548,7 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/quantum" } } }, @@ -27422,13 +28557,13 @@ "metadata_version": "2.0", "name": "quantum", "summary": "Microsoft Azure Command-Line Tools Quantum Extension", - "version": "0.12.0" + "version": "0.13.0" }, - "sha256Digest": "ffc62c0663843522a3439acf4c682f9287849d5b3efcf2c4fd721266bfecfe96" + "sha256Digest": "d37a85117a1b0989c1ceba8bbb571c777b626eabf9ce14161617837dbfeb067e" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.13.0-py3-none-any.whl", - "filename": "quantum-0.13.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.14.0-py3-none-any.whl", + "filename": "quantum-0.14.0-py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.23.0", @@ -27465,13 +28600,13 @@ "metadata_version": "2.0", "name": "quantum", "summary": "Microsoft Azure Command-Line Tools Quantum Extension", - "version": "0.13.0" + "version": "0.14.0" }, - "sha256Digest": "d37a85117a1b0989c1ceba8bbb571c777b626eabf9ce14161617837dbfeb067e" + "sha256Digest": "bad894820d83dceabf1805498ad98d1dc196fe8e1c6907136d60cbea30fee816" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.14.0-py3-none-any.whl", - "filename": "quantum-0.14.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.15.0-py3-none-any.whl", + "filename": "quantum-0.15.0-py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.23.0", @@ -27508,13 +28643,13 @@ "metadata_version": "2.0", "name": "quantum", "summary": "Microsoft Azure Command-Line Tools Quantum Extension", - "version": "0.14.0" + "version": "0.15.0" }, - "sha256Digest": "bad894820d83dceabf1805498ad98d1dc196fe8e1c6907136d60cbea30fee816" + "sha256Digest": "4ca37f0e8b7b1b9b32ed35b127600f5b1ea2390b5dfc5901c7dbce5fef631278" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.15.0-py3-none-any.whl", - "filename": "quantum-0.15.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.16.0-py3-none-any.whl", + "filename": "quantum-0.16.0-py3-none-any.whl", "metadata": { "azext.isPreview": true, "azext.minCliCoreVersion": "2.23.0", @@ -27551,9 +28686,9 @@ "metadata_version": "2.0", "name": "quantum", "summary": "Microsoft Azure Command-Line Tools Quantum Extension", - "version": "0.15.0" + "version": "0.16.0" }, - "sha256Digest": "4ca37f0e8b7b1b9b32ed35b127600f5b1ea2390b5dfc5901c7dbce5fef631278" + "sha256Digest": "d8d4650f5f4b385c7612598301db487ffd2a09b59119453760ca9ab1319f1363" } ], "quota": [ @@ -28111,6 +29246,48 @@ "version": "0.1.1" }, "sha256Digest": "f0662c4091e8c4e87069f93db23b5f057f2862f78d038a5f709f16f8d37d524f" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/redisenterprise-0.1.2-py3-none-any.whl", + "filename": "redisenterprise-0.1.2-py3-none-any.whl", + "metadata": { + "azext.minCliCoreVersion": "2.15.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/redisenterprise" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "redisenterprise", + "summary": "Microsoft Azure Command-Line Tools RedisEnterpriseManagementClient Extension", + "version": "0.1.2" + }, + "sha256Digest": "db8c673e2e29498e9f54f3392a5305952c273e7c24d293d96c0708dd3e90d5fe" } ], "resource-graph": [ @@ -28942,24 +30119,216 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/sentinel" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/sentinel" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "sentinel", + "summary": "Microsoft Azure Command-Line Tools SecurityInsights Extension", + "version": "0.1.1" + }, + "sha256Digest": "407f23c06a7bd6e1200f108abcd0127904334d9813ccae8df8fc3e63b3eaa97f" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/sentinel-0.1.2-py3-none-any.whl", + "filename": "sentinel-0.1.2-py3-none-any.whl", + "metadata": { + "azext.minCliCoreVersion": "2.11.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/sentinel" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "sentinel", + "summary": "Microsoft Azure Command-Line Tools SecurityInsights Extension", + "version": "0.1.2" + }, + "sha256Digest": "978d4d15a01124d46dd310918c428bba1792a58716aa0511f2fdbfec2176f7e2" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/sentinel-0.2.0-py3-none-any.whl", + "filename": "sentinel-0.2.0-py3-none-any.whl", + "metadata": { + "azext.isExperimental": true, + "azext.minCliCoreVersion": "2.37.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/securityinsight" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "sentinel", + "summary": "Microsoft Azure Command-Line Tools Sentinel Extension.", + "version": "0.2.0" + }, + "sha256Digest": "5511544b4e342b03a4a4263617c603d87442ad5179ce9d8c0d1fd10915f93b7a" + } + ], + "serial-console": [ + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/serial_console-0.1.0-py3-none-any.whl", + "filename": "serial_console-0.1.0-py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.15.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/serialconsole" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "serial-console", + "run_requires": [ + { + "requires": [ + "websocket-client (~=0.56.0)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools for Serial Console Extension", + "version": "0.1.0" + }, + "sha256Digest": "39317e5d4ecc6add26a624a6fa0d48344cfb6b3faaefb6ccbdcb30de9d35fb50" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/serial_console-0.1.1-py3-none-any.whl", + "filename": "serial_console-0.1.1-py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.15.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/serialconsole" } } }, + "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "sentinel", - "summary": "Microsoft Azure Command-Line Tools SecurityInsights Extension", + "name": "serial-console", + "run_requires": [ + { + "requires": [ + "websocket-client (~=0.56.0)" + ] + } + ], + "summary": "Microsoft Azure Command-Line Tools for Serial Console Extension", "version": "0.1.1" }, - "sha256Digest": "407f23c06a7bd6e1200f108abcd0127904334d9813ccae8df8fc3e63b3eaa97f" - }, + "sha256Digest": "082f315c9cdf5887987f12d6e27645101ea8318003a8d60c24dc630c861ebc97" + } + ], + "spring": [ { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/sentinel-0.1.2-py3-none-any.whl", - "filename": "sentinel-0.1.2-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/spring-1.0.0-py3-none-any.whl", + "filename": "spring-1.0.0-py3-none-any.whl", "metadata": { - "azext.minCliCoreVersion": "2.11.0", + "azext.isPreview": false, + "azext.minCliCoreVersion": "2.30.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -28984,27 +30353,25 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/sentinel" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/spring" } } }, "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "sentinel", - "summary": "Microsoft Azure Command-Line Tools SecurityInsights Extension", - "version": "0.1.2" + "name": "spring", + "summary": "Microsoft Azure Command-Line Tools spring Extension", + "version": "1.0.0" }, - "sha256Digest": "978d4d15a01124d46dd310918c428bba1792a58716aa0511f2fdbfec2176f7e2" - } - ], - "serial-console": [ + "sha256Digest": "ac3a708e67b9de1b38583313e0504e318f92005fd583143594e03ca7fd70b1aa" + }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/serial_console-0.1.0-py3-none-any.whl", - "filename": "serial_console-0.1.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/spring-1.1.0-py3-none-any.whl", + "filename": "spring-1.1.0-py3-none-any.whl", "metadata": { - "azext.isPreview": true, - "azext.minCliCoreVersion": "2.15.0", + "azext.isPreview": false, + "azext.minCliCoreVersion": "2.30.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -29029,33 +30396,25 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/serialconsole" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/spring" } } }, - "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "serial-console", - "run_requires": [ - { - "requires": [ - "websocket-client (~=0.56.0)" - ] - } - ], - "summary": "Microsoft Azure Command-Line Tools for Serial Console Extension", - "version": "0.1.0" + "name": "spring", + "summary": "Microsoft Azure Command-Line Tools spring Extension", + "version": "1.1.0" }, - "sha256Digest": "39317e5d4ecc6add26a624a6fa0d48344cfb6b3faaefb6ccbdcb30de9d35fb50" + "sha256Digest": "5ea52b25dd34ef7c253f9e5aff2933dee5fe01bb66791f71c85981f68610ab85" }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/serial_console-0.1.1-py3-none-any.whl", - "filename": "serial_console-0.1.1-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/spring-1.1.1-py3-none-any.whl", + "filename": "spring-1.1.1-py3-none-any.whl", "metadata": { - "azext.isPreview": true, - "azext.minCliCoreVersion": "2.15.0", + "azext.isPreview": false, + "azext.minCliCoreVersion": "2.30.0", "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -29080,32 +30439,108 @@ "description": "DESCRIPTION.rst" }, "project_urls": { - "Home": "https://github.com/Azure/azure-cli-extensions/tree/master/src/serialconsole" + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/spring" } } }, - "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", - "name": "serial-console", - "run_requires": [ - { - "requires": [ - "websocket-client (~=0.56.0)" - ] + "name": "spring", + "summary": "Microsoft Azure Command-Line Tools spring Extension", + "version": "1.1.1" + }, + "sha256Digest": "67d9d8b02739221f00822f82f4fad31b972a60ab1b4bbeee2ece955b4124bd29" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/spring-1.1.2-py3-none-any.whl", + "filename": "spring-1.1.2-py3-none-any.whl", + "metadata": { + "azext.isPreview": false, + "azext.minCliCoreVersion": "2.30.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/spring" + } } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "spring", + "summary": "Microsoft Azure Command-Line Tools spring Extension", + "version": "1.1.2" + }, + "sha256Digest": "0ea6fa1d20a5f494597dcb627282152b7a1e9e3b20028afb5e6406376f15203c" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/spring-1.1.3-py3-none-any.whl", + "filename": "spring-1.1.3-py3-none-any.whl", + "metadata": { + "azext.isPreview": false, + "azext.minCliCoreVersion": "2.30.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" ], - "summary": "Microsoft Azure Command-Line Tools for Serial Console Extension", - "version": "0.1.1" + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/spring" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "spring", + "summary": "Microsoft Azure Command-Line Tools spring Extension", + "version": "1.1.3" }, - "sha256Digest": "082f315c9cdf5887987f12d6e27645101ea8318003a8d60c24dc630c861ebc97" - } - ], - "spring": [ + "sha256Digest": "65110cbf382e4a1ad98c108c618f2c77bd32634d8ae4759cae5ea47c026c7c85" + }, { - "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/spring-1.0.0-py3-none-any.whl", - "filename": "spring-1.0.0-py3-none-any.whl", + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/spring-1.1.4-py3-none-any.whl", + "filename": "spring-1.1.4-py3-none-any.whl", "metadata": { "azext.isPreview": false, "azext.minCliCoreVersion": "2.30.0", @@ -29142,9 +30577,9 @@ "metadata_version": "2.0", "name": "spring", "summary": "Microsoft Azure Command-Line Tools spring Extension", - "version": "1.0.0" + "version": "1.1.4" }, - "sha256Digest": "ac3a708e67b9de1b38583313e0504e318f92005fd583143594e03ca7fd70b1aa" + "sha256Digest": "f159454ffaac8d90baa484870ac2e9acf7d2f18aabc0a6dac3db8342d21a7fab" } ], "spring-cloud": [ @@ -31850,6 +33285,57 @@ "version": "1.1.1" }, "sha256Digest": "71c6ffe17e95734735d2f8387cd643cb11b1628d6b66751507f7aea6931d9855" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/ssh-1.1.2-py3-none-any.whl", + "filename": "ssh-1.1.2-py3-none-any.whl", + "metadata": { + "azext.isPreview": false, + "azext.minCliCoreVersion": "2.4.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/ssh" + } + } + }, + "extras": [], + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "ssh", + "run_requires": [ + { + "requires": [ + "oschmod (==0.3.12)" + ] + } + ], + "summary": "SSH into Azure VMs using RBAC and AAD OpenSSH Certificates", + "version": "1.1.2" + }, + "sha256Digest": "e50513e5985024936c5f65ae564817e5705ccda69046abcbabd2418f5753d48e" } ], "stack-hci": [ @@ -34572,6 +36058,49 @@ "version": "0.5.0" }, "sha256Digest": "3014960cf39c2058da2a18fb5ce54110d90d02459bfda174c7d0036cff19f5de" + }, + { + "downloadUrl": "https://azcliprod.blob.core.windows.net/cli-extensions/virtual_network_manager-0.5.1-py3-none-any.whl", + "filename": "virtual_network_manager-0.5.1-py3-none-any.whl", + "metadata": { + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.15.0", + "classifiers": [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: MIT License" + ], + "extensions": { + "python.details": { + "contacts": [ + { + "email": "azpycli@microsoft.com", + "name": "Microsoft Corporation", + "role": "author" + } + ], + "document_names": { + "description": "DESCRIPTION.rst" + }, + "project_urls": { + "Home": "https://github.com/Azure/azure-cli-extensions/tree/main/src/network-manager" + } + } + }, + "generator": "bdist_wheel (0.30.0)", + "license": "MIT", + "metadata_version": "2.0", + "name": "virtual-network-manager", + "summary": "Microsoft Azure Command-Line Tools NetworkManagementClient Extension", + "version": "0.5.1" + }, + "sha256Digest": "3c633cc53b341ae78514a62ab8cd7faf13c211e98a1c464eae2f636030d1e090" } ], "virtual-network-tap": [ diff --git a/src/k8s-extension/HISTORY.rst b/src/k8s-extension/HISTORY.rst index 417028b263d..99b8f0a1a80 100644 --- a/src/k8s-extension/HISTORY.rst +++ b/src/k8s-extension/HISTORY.rst @@ -6,6 +6,7 @@ Release History 1.2.4 ++++++++++++++++++ * microsoft.azureml.kubernetes: Do not invoke `create_or_update` for already existed resources. +* microsoft.azuremonitor.containers: ContainerInsights Extension Managed Identity Auth Onboarding updates. 1.2.3 ++++++++++++++++++ diff --git a/src/k8s-extension/azext_k8s_extension/tests/latest/test_custom.py b/src/k8s-extension/azext_k8s_extension/tests/latest/test_custom.py index 0ea7cefb9ba..7a8716ecc73 100644 --- a/src/k8s-extension/azext_k8s_extension/tests/latest/test_custom.py +++ b/src/k8s-extension/azext_k8s_extension/tests/latest/test_custom.py @@ -14,17 +14,23 @@ class TestIsDogfoodCluster(unittest.TestCase): def test_dogfood_cluster(self): cmd = MockCommand() - cmd.cli_ctx.cloud.endpoints.resource_manager = "https://api-dogfood.resources.windows-int.net" + cmd.cli_ctx.cloud.endpoints.resource_manager = ( + "https://api-dogfood.resources.windows-int.net" + ) assert is_dogfood_cluster(cmd) def test_dogfood_cluster_with_slash(self): cmd = MockCommand() - cmd.cli_ctx.cloud.endpoints.resource_manager = "https://api-dogfood.resources.windows-int.net/" + cmd.cli_ctx.cloud.endpoints.resource_manager = ( + "https://api-dogfood.resources.windows-int.net/" + ) assert is_dogfood_cluster(cmd) def test_longer_hostname(self): cmd = MockCommand() - cmd.cli_ctx.cloud.endpoints.resource_manager = "https://api-dogfood.resources.windows-int.otherwebsite.net/" + cmd.cli_ctx.cloud.endpoints.resource_manager = ( + "https://api-dogfood.resources.windows-int.otherwebsite.net/" + ) assert not is_dogfood_cluster(cmd) def malformed_url(self): @@ -35,4 +41,4 @@ def malformed_url(self): def test_prod_cluster(self): cmd = MockCommand() cmd.cli_ctx.cloud.endpoints.resource_manager = "https://management.azure.com" - assert not is_dogfood_cluster(cmd) \ No newline at end of file + assert not is_dogfood_cluster(cmd) diff --git a/src/k8s-extension/setup.py b/src/k8s-extension/setup.py index 2635d1027f9..a2e25840afb 100644 --- a/src/k8s-extension/setup.py +++ b/src/k8s-extension/setup.py @@ -33,7 +33,7 @@ # TODO: Add any additional SDK dependencies here DEPENDENCIES = [] -VERSION = "1.2.3" +VERSION = "1.2.4" with open("README.rst", "r", encoding="utf-8") as f: README = f.read() diff --git a/src/network-manager/HISTORY.rst b/src/network-manager/HISTORY.rst index 400524b1c5b..49c25ee65b9 100644 --- a/src/network-manager/HISTORY.rst +++ b/src/network-manager/HISTORY.rst @@ -2,6 +2,16 @@ Release History =============== +0.5.1 ++++++ +* 'az network manager group': remove parameters '--member-type' and '--display-name' +* 'az network manager security-user-config': hide this command +* 'az network manager group list-effect-vnet': hide this command +* 'az network manager delete': add parameter 'force' +* 'az network manager connect-config delete': add parameter 'force' +* 'az network manager security-admin-config rule-collection delete': add parameter 'force' +* 'az network manager security-admin-config rule-collection rule delete': add parameter 'force' + 0.5.0 +++++ * 'az network manager list-effect-vnet': hide this command @@ -15,7 +25,7 @@ Release History 0.4.1 +++++ * 'az network manager connect-config update': update parameter '--connectivity-topology' -* 'az network manager group create': update parameter '--member-type' and remove parameters `--group-members` and '--conditional-membership' +* 'az network manager group create': update parameter '--member-type' and remove parameters '--group-members' and '--conditional-membership' * 'az network manager security-admin-config create': add parameter '--apply-on' 0.4.0 diff --git a/src/network-manager/azext_network_manager/_client_factory.py b/src/network-manager/azext_network_manager/_client_factory.py index aa3cfad7fc1..c7db5023bef 100644 --- a/src/network-manager/azext_network_manager/_client_factory.py +++ b/src/network-manager/azext_network_manager/_client_factory.py @@ -9,10 +9,10 @@ # -------------------------------------------------------------------------- -def cf_network_cl(cli_ctx, *_): +def cf_network_cl(cli_ctx, **kwargs): from azure.cli.core.commands.client_factory import get_mgmt_service_client from azext_network_manager.vendored_sdks import NetworkManagementClient - return get_mgmt_service_client(cli_ctx, NetworkManagementClient) + return get_mgmt_service_client(cli_ctx, NetworkManagementClient, **kwargs) def cf_activesecurityuserrule(cli_ctx, *_): diff --git a/src/network-manager/azext_network_manager/_help.py b/src/network-manager/azext_network_manager/_help.py index 818c93dc476..3a7089de2ad 100644 --- a/src/network-manager/azext_network_manager/_help.py +++ b/src/network-manager/azext_network_manager/_help.py @@ -280,17 +280,11 @@ helps['network manager group create'] = """ type: command short-summary: "Create a network group." - parameters: - - name: --member-type - short-summary: "Group member type" - long-summary: | - Usage: --member-type "Microsoft.Network/virtualNetworks" examples: - name: Create/Update Azure Virtual Network Manager Network Group text: |- az network manager group create --name "TestNetworkGroup" --network-manager-name "testNetworkManager" \ ---description "A sample group" --display-name "My Network Group" \ ---member-type "Microsoft.Network/virtualNetworks" --resource-group "rg1" +--description "A sample group" --resource-group "rg1" """ helps['network manager group update'] = """ @@ -308,67 +302,68 @@ --resource-group "rg1" --force """ -helps['network manager group list-effect-vnet'] = """ - type: command - short-summary: "Lists all effective virtual networks by specified network group." - examples: - - name: List Effective Virtual Networks List By Network Groups - text: |- - az network manager group list-effect-vnet --network-group-name "TestNetworkGroup" \ ---network-manager-name "testNetworkManager" --resource-group "rg1" -""" - -helps['network manager security-user-config'] = """ - type: group - short-summary: Manage securityuserconfiguration with network -""" - -helps['network manager security-user-config list'] = """ - type: command - short-summary: "Lists all the network manager security user configurations in a network manager, in a paginated \ -format." - examples: - - name: List security user configurations in a network manager - text: |- - az network manager security-user-config list --network-manager-name "testNetworkManager" --resource-group \ -"rg1" -""" - -helps['network manager security-user-config show'] = """ - type: command - short-summary: "Retrieves a network manager security user Configuration." - examples: - - name: Get security user configurations - text: |- - az network manager security-user-config show --configuration-name "myTestSecurityConfig" \ ---network-manager-name "testNetworkManager" --resource-group "rg1" -""" - -helps['network manager security-user-config create'] = """ - type: command - short-summary: "Create a network manager security user Configuration." - examples: - - name: Create network manager security user Configuration - text: |- - az network manager security-user-config create --configuration-name "myTestSecurityConfig" \ ---network-manager-name "testNetworkManager" --resource-group "rg1" --description "A sample policy" \ ---delete-existing-ns-gs true -""" - -helps['network manager security-user-config update'] = """ - type: command - short-summary: "Update a network manager security user Configuration." -""" +# The command is not provided in api version 2022-01-01 +# helps['network manager group list-effect-vnet'] = """ +# type: command +# short-summary: "Lists all effective virtual networks by specified network group." +# examples: +# - name: List Effective Virtual Networks List By Network Groups +# text: |- +# az network manager group list-effect-vnet --network-group-name "TestNetworkGroup" \ +# --network-manager-name "testNetworkManager" --resource-group "rg1" +# """ -helps['network manager security-user-config delete'] = """ - type: command - short-summary: "Deletes a network manager security user Configuration." - examples: - - name: Delete network manager security user Configuration - text: |- - az network manager security-user-config delete --configuration-name "myTestSecurityConfig" \ ---network-manager-name "testNetworkManager" --resource-group "rg1" -""" +# helps['network manager security-user-config'] = """ +# type: group +# short-summary: Manage securityuserconfiguration with network +# """ +# +# helps['network manager security-user-config list'] = """ +# type: command +# short-summary: "Lists all the network manager security user configurations in a network manager, in a paginated \ +# format." +# examples: +# - name: List security user configurations in a network manager +# text: |- +# az network manager security-user-config list --network-manager-name "testNetworkManager" --resource-group \ +# "rg1" +# """ +# +# helps['network manager security-user-config show'] = """ +# type: command +# short-summary: "Retrieves a network manager security user Configuration." +# examples: +# - name: Get security user configurations +# text: |- +# az network manager security-user-config show --configuration-name "myTestSecurityConfig" \ +# --network-manager-name "testNetworkManager" --resource-group "rg1" +# """ +# +# helps['network manager security-user-config create'] = """ +# type: command +# short-summary: "Create a network manager security user Configuration." +# examples: +# - name: Create network manager security user Configuration +# text: |- +# az network manager security-user-config create --configuration-name "myTestSecurityConfig" \ +# --network-manager-name "testNetworkManager" --resource-group "rg1" --description "A sample policy" \ +# --delete-existing-ns-gs true +# """ +# +# helps['network manager security-user-config update'] = """ +# type: command +# short-summary: "Update a network manager security user Configuration." +# """ +# +# helps['network manager security-user-config delete'] = """ +# type: command +# short-summary: "Deletes a network manager security user Configuration." +# examples: +# - name: Delete network manager security user Configuration +# text: |- +# az network manager security-user-config delete --configuration-name "myTestSecurityConfig" \ +# --network-manager-name "testNetworkManager" --resource-group "rg1" +# """ helps['network manager security-admin-config'] = """ type: group diff --git a/src/network-manager/azext_network_manager/_params.py b/src/network-manager/azext_network_manager/_params.py index ccf540d1fc0..b910731a9c0 100644 --- a/src/network-manager/azext_network_manager/_params.py +++ b/src/network-manager/azext_network_manager/_params.py @@ -78,6 +78,8 @@ def load_arguments(self, _): c.argument('resource_group_name', resource_group_name_type) c.argument('network_manager_name', options_list=['--name', '-n', '--network-manager-name'], type=str, help='The name of the network manager.', id_part='name') + c.argument('force', arg_type=get_three_state_flag(), + help='Deletes the resource even if it is part of a deployed configuration.') # endregion with self.argument_context('network manager post-commit') as c: @@ -207,6 +209,8 @@ def load_arguments(self, _): c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') c.argument('configuration_name', type=str, help='The name of the network manager connectivity configuration.', id_part='child_name_1') + c.argument('force', arg_type=get_three_state_flag(), + help='Deletes the resource even if it is part of a deployed configuration.') with self.argument_context('network manager group list') as c: c.argument('resource_group_name', resource_group_name_type) @@ -231,9 +235,7 @@ def load_arguments(self, _): c.argument('if_match', type=str, help='The ETag of the transformation. Omit this value to always overwrite the ' 'current resource. Specify the last-seen ETag value to prevent accidentally overwriting concurrent ' 'changes.') - c.argument('display_name', type=str, help='A friendly name for the network group.') c.argument('description', type=str, help='A description of the network group.') - c.argument('member_type', arg_type=get_enum_type(['Microsoft.Network/virtualNetworks']), help='Group member type.') with self.argument_context('network manager group update') as c: c.argument('resource_group_name', resource_group_name_type) @@ -245,7 +247,6 @@ def load_arguments(self, _): 'changes.') c.argument('display_name', type=str, help='A friendly name for the network group.') c.argument('description', type=str, help='A description of the network group.') - c.argument('member_type', arg_type=get_enum_type(['VirtualNetwork', 'Subnet']), help='Group member type.') c.ignore('parameters') with self.argument_context('network manager group delete') as c: @@ -256,48 +257,48 @@ def load_arguments(self, _): c.argument('force', arg_type=get_three_state_flag(), help='Deletes the resource even if it is part of a deployed configuration.') - with self.argument_context('network manager security-user-config list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part=None) - c.argument('top', type=int, help='An optional query parameter which specifies the maximum number of records to ' - 'be returned by the server.') - c.argument('skip_token', type=str, help='SkipToken is only used if a previous operation returned a partial ' - 'result. If a previous response contains a nextLink element, the value of the nextLink element will ' - 'include a skipToken parameter that specifies a starting point to use for subsequent calls.') - - with self.argument_context('network manager security-user-config show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') - c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.', - id_part='child_name_1') + # with self.argument_context('network manager security-user-config list') as c: + # c.argument('resource_group_name', resource_group_name_type) + # c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part=None) + # c.argument('top', type=int, help='An optional query parameter which specifies the maximum number of records to ' + # 'be returned by the server.') + # c.argument('skip_token', type=str, help='SkipToken is only used if a previous operation returned a partial ' + # 'result. If a previous response contains a nextLink element, the value of the nextLink element will ' + # 'include a skipToken parameter that specifies a starting point to use for subsequent calls.') - with self.argument_context('network manager security-user-config create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('network_manager_name', type=str, help='The name of the network manager.') - c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.') - c.argument('display_name', type=str, help='A display name of the security Configuration.') - c.argument('description', type=str, help='A description of the security Configuration.') - c.argument('security_type', arg_type=get_enum_type(['AdminPolicy', 'UserPolicy']), help='Security Type.') - c.argument('delete_existing_ns_gs', arg_type=get_three_state_flag(), help='Flag if need to delete existing ' - 'network security groups.') + # with self.argument_context('network manager security-user-config show') as c: + # c.argument('resource_group_name', resource_group_name_type) + # c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') + # c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.', + # id_part='child_name_1') - with self.argument_context('network manager security-user-config update') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') - c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.', - id_part='child_name_1') - c.argument('display_name', type=str, help='A display name of the security Configuration.') - c.argument('description', type=str, help='A description of the security Configuration.') - c.argument('security_type', arg_type=get_enum_type(['AdminPolicy', 'UserPolicy']), help='Security Type.') - c.argument('delete_existing_ns_gs', arg_type=get_three_state_flag(), help='Flag if need to delete existing ' - 'network security groups.') - c.ignore('security_configuration') + # with self.argument_context('network manager security-user-config create') as c: + # c.argument('resource_group_name', resource_group_name_type) + # c.argument('network_manager_name', type=str, help='The name of the network manager.') + # c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.') + # c.argument('display_name', type=str, help='A display name of the security Configuration.') + # c.argument('description', type=str, help='A description of the security Configuration.') + # c.argument('security_type', arg_type=get_enum_type(['AdminPolicy', 'UserPolicy']), help='Security Type.') + # c.argument('delete_existing_ns_gs', arg_type=get_three_state_flag(), help='Flag if need to delete existing ' + # 'network security groups.') - with self.argument_context('network manager security-user-config delete') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') - c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.', - id_part='child_name_1') + # with self.argument_context('network manager security-user-config update') as c: + # c.argument('resource_group_name', resource_group_name_type) + # c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') + # c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.', + # id_part='child_name_1') + # c.argument('display_name', type=str, help='A display name of the security Configuration.') + # c.argument('description', type=str, help='A description of the security Configuration.') + # c.argument('security_type', arg_type=get_enum_type(['AdminPolicy', 'UserPolicy']), help='Security Type.') + # c.argument('delete_existing_ns_gs', arg_type=get_three_state_flag(), help='Flag if need to delete existing ' + # 'network security groups.') + # c.ignore('security_configuration') + + # with self.argument_context('network manager security-user-config delete') as c: + # c.argument('resource_group_name', resource_group_name_type) + # c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') + # c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.', + # id_part='child_name_1') with self.argument_context('network manager security-admin-config rule-collection rule list') as c: c.argument('resource_group_name', resource_group_name_type) @@ -406,6 +407,8 @@ def load_arguments(self, _): c.argument('configuration_name', type=str, help='The name of the network manager security Configuration.', id_part='child_name_1') c.argument('rule_collection_name', type=str, help='The name of the admin rule collection.') + c.argument('force', arg_type=get_three_state_flag(), + help='Deletes the resource even if it is part of a deployed configuration.') with self.argument_context('network manager security-admin-config rule-collection rule') as c: c.argument('resource_group_name', resource_group_name_type) @@ -449,6 +452,9 @@ def load_arguments(self, _): c.argument('direction', arg_type=get_enum_type(['Inbound', 'Outbound']), help='Indicates if the traffic ' 'matched against the rule in inbound or outbound.') + with self.argument_context('network manager security-admin-config rule-collection rule delete') as c: + c.argument('force', arg_type=get_three_state_flag(), + help='Deletes the resource even if it is part of a deployed configuration.') # with self.argument_context('network manager security-user-config rule-collection create') as c: # c.argument('resource_group_name', resource_group_name_type) # c.argument('network_manager_name', type=str, help='The name of the network manager.', id_part='name') diff --git a/src/network-manager/azext_network_manager/commands.py b/src/network-manager/azext_network_manager/commands.py index 5b6139b5a5d..ae74c997a03 100644 --- a/src/network-manager/azext_network_manager/commands.py +++ b/src/network-manager/azext_network_manager/commands.py @@ -22,37 +22,37 @@ def load_command_table(self, _): network_networkmanager = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._network_managers_operations#NetworkManagersOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#NetworkManagersOperations.{}', client_factory=cf_networkmanager ) network_connectivityconfiguration = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._connectivity_configurations_operations#ConnectivityConfigurationsOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#ConnectivityConfigurationsOperations.{}', client_factory=cf_connectivityconfiguration ) network_networkgroup = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._network_groups_operations#NetworkGroupsOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#NetworkGroupsOperations.{}', client_factory=cf_networkgroup ) - network_securityuserconfiguration = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._security_user_configurations_operations#SecurityUserConfigurationsOperations.{}', - client_factory=cf_securityuserconfiguration - ) + # network_securityuserconfiguration = CliCommandType( + # operations_tmpl='azext_network_manager.vendored_sdks.operations._security_user_configurations_operations#SecurityUserConfigurationsOperations.{}', + # client_factory=cf_securityuserconfiguration + # ) network_securityadminconfiguration = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._security_admin_configurations_operations#SecurityAdminConfigurationsOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#SecurityAdminConfigurationsOperations.{}', client_factory=cf_securityadminconfiguration ) network_adminrule = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._admin_rules_operations#AdminRulesOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#AdminRulesOperations.{}', client_factory=cf_adminrule ) network_adminrulecollection = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._admin_rule_collections_operations#AdminRuleCollectionsOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#AdminRuleCollectionsOperations.{}', client_factory=cf_adminrulecollection ) @@ -67,7 +67,7 @@ def load_command_table(self, _): # ) network_scopeconnection = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._scope_connections_operations#ScopeConnectionsOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#ScopeConnectionsOperations.{}', client_factory=cf_scopeconnection ) @@ -77,7 +77,7 @@ def load_command_table(self, _): ) network_subscriptionconnection = CliCommandType( - operations_tmpl='azext_network_manager.vendored_sdks.operations._subscription_network_manager_connections_operations#SubscriptionNetworkManagerConnectionsOperations.{}', + operations_tmpl='azext_network_manager.vendored_sdks.operations._operations#SubscriptionNetworkManagerConnectionsOperations.{}', client_factory=cf_subscriptionconnection ) @@ -91,7 +91,8 @@ def load_command_table(self, _): g.custom_command('list', 'network_manager_list') g.custom_show_command('show', 'network_manager_show') g.generic_update_command('update', custom_func_name='network_manager_update') - g.custom_command('delete', 'network_manager_delete', confirmation=True) + g.custom_command('delete', 'network_manager_delete', + confirmation=True) g.custom_command('post-commit', 'network_manager_commit_post') g.custom_command('list-deploy-status', 'network_manager_deploy_status_list') # g.custom_command('list-effect-vnet', 'network_manager_effect_vnet_list_by_network_manager') @@ -106,43 +107,48 @@ def load_command_table(self, _): g.custom_show_command('show', 'network_manager_connect_config_show') g.custom_command('create', 'network_manager_connect_config_create') g.generic_update_command('update', setter_arg_name='connectivity_configuration', custom_func_name='network_manager_connect_config_update') - g.custom_command('delete', 'network_manager_connect_config_delete', confirmation=True) + g.custom_command('delete', 'network_manager_connect_config_delete', + confirmation=True) with self.command_group('network manager group', network_networkgroup, client_factory=cf_networkgroup) as g: g.custom_command('list', 'network_manager_group_list') g.custom_show_command('show', 'network_manager_group_show') g.custom_command('create', 'network_manager_group_create') g.generic_update_command('update', custom_func_name='network_manager_group_update') - g.custom_command('delete', 'network_manager_group_delete', confirmation=True) - g.custom_command('list-effect-vnet', 'network_manager_effect_vnet_list_by_network_group') + g.custom_command('delete', 'network_manager_group_delete', + confirmation=True) + # g.custom_command('list-effect-vnet', 'network_manager_effect_vnet_list_by_network_group') - with self.command_group('network manager security-user-config', network_securityuserconfiguration, client_factory=cf_securityuserconfiguration) as g: - g.custom_command('list', 'network_manager_security_user_config_list') - g.custom_show_command('show', 'network_manager_security_user_config_show') - g.custom_command('create', 'network_manager_security_user_config_create') - g.generic_update_command('update', setter_arg_name='security_user_configuration', custom_func_name='network_manager_security_user_config_update') - g.custom_command('delete', 'network_manager_security_user_config_delete', confirmation=True) + # with self.command_group('network manager security-user-config', network_securityuserconfiguration, client_factory=cf_securityuserconfiguration) as g: + # g.custom_command('list', 'network_manager_security_user_config_list') + # g.custom_show_command('show', 'network_manager_security_user_config_show') + # g.custom_command('create', 'network_manager_security_user_config_create') + # g.generic_update_command('update', setter_arg_name='security_user_configuration', custom_func_name='network_manager_security_user_config_update') + # g.custom_command('delete', 'network_manager_security_user_config_delete', confirmation=True) with self.command_group('network manager security-admin-config', network_securityadminconfiguration, client_factory=cf_securityadminconfiguration) as g: g.custom_command('list', 'network_manager_security_admin_config_list') g.custom_show_command('show', 'network_manager_security_admin_config_show') g.custom_command('create', 'network_manager_security_admin_config_create') g.generic_update_command('update', setter_arg_name='security_admin_configuration', custom_func_name='network_manager_security_admin_config_update') - g.custom_command('delete', 'network_manager_security_admin_config_delete', confirmation=True) + g.custom_command('delete', 'network_manager_security_admin_config_delete', + confirmation=True) with self.command_group('network manager security-admin-config rule-collection rule', network_adminrule, client_factory=cf_adminrule) as g: g.custom_command('create', 'network_manager_admin_rule_create') g.generic_update_command('update', setter_arg_name='admin_rule', custom_func_name='network_manager_admin_rule_update') g.custom_command('list', 'network_manager_admin_rule_list') g.custom_show_command('show', 'network_manager_admin_rule_show') - g.custom_command('delete', 'network_manager_admin_rule_delete', confirmation=True) + g.custom_command('delete', 'network_manager_admin_rule_delete', + confirmation=True) with self.command_group('network manager security-admin-config rule-collection', network_adminrulecollection, client_factory=cf_adminrulecollection) as g: g.custom_command('create', 'network_manager_admin_rule_collection_create') g.generic_update_command('update', setter_arg_name='rule_collection', custom_func_name='network_manager_admin_rule_collection_update') g.custom_command('list', 'network_manager_admin_rule_collection_list') g.custom_show_command('show', 'network_manager_admin_rule_collection_show') - g.custom_command('delete', 'network_manager_admin_rule_collection_delete', confirmation=True) + g.custom_command('delete', 'network_manager_admin_rule_collection_delete', + confirmation=True) # with self.command_group('network manager security-user-config rule-collection rule', network_userrule, client_factory=cf_userrule) as g: # g.custom_command('list', 'network_manager_user_rule_list') diff --git a/src/network-manager/azext_network_manager/custom.py b/src/network-manager/azext_network_manager/custom.py index 28336e696bb..c4f8b452eda 100644 --- a/src/network-manager/azext_network_manager/custom.py +++ b/src/network-manager/azext_network_manager/custom.py @@ -17,7 +17,8 @@ cf_networkmanagementclient, cf_activesecurityuserrule, cf_effectivevirtualnetwork, - cf_listeffectivevirtualnetwork + cf_listeffectivevirtualnetwork, + cf_staticmembers, cf_network_cl ) @@ -89,9 +90,15 @@ def network_manager_update(instance, def network_manager_delete(client, resource_group_name, - network_manager_name): - return client.delete(resource_group_name=resource_group_name, - network_manager_name=network_manager_name) + network_manager_name, + force=None): + if force is None or force is False: + print("The \'--force\' flag was not provided for the delete operation. " + "If this resource or any of its child resources are part of a deployed configuration, " + "this delete will fail.") + return client.begin_delete(resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + force=force) def network_manager_commit_post(cmd, @@ -128,19 +135,19 @@ def network_manager_deploy_status_list(cmd, parameters=parameters) -def network_manager_effect_vnet_list_by_network_group(cmd, - client, - resource_group_name, - network_manager_name, - network_group_name, - skip_token=None): - client = cf_listeffectivevirtualnetwork(cmd.cli_ctx) - parameters = {} - parameters['skip_token'] = skip_token - return client.by_network_group(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - parameters=parameters) +# def network_manager_effect_vnet_list_by_network_group(cmd, +# client, +# resource_group_name, +# network_manager_name, +# network_group_name, +# skip_token=None): +# client = cf_listeffectivevirtualnetwork(cmd.cli_ctx) +# parameters = {} +# parameters['skip_token'] = skip_token +# return client.by_network_group(resource_group_name=resource_group_name, +# network_manager_name=network_manager_name, +# network_group_name=network_group_name, +# parameters=parameters) # def network_manager_effect_vnet_list_by_network_manager(cmd, @@ -320,10 +327,16 @@ def network_manager_connect_config_update(instance, def network_manager_connect_config_delete(client, resource_group_name, network_manager_name, - configuration_name): - return client.delete(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name) + configuration_name, + force=None): + if force is None or force is False: + print("The \'--force\' flag was not provided for the delete operation. " + "If this resource or any of its child resources are part of a deployed configuration, " + "this delete will fail.") + return client.begin_delete(resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + force=force) def network_manager_group_list(client, @@ -350,14 +363,10 @@ def network_manager_group_create(client, resource_group_name, network_manager_name, network_group_name, - member_type, if_match=None, - display_name=None, description=None): parameters = {} - parameters['display_name'] = display_name parameters['description'] = description - parameters['member_type'] = member_type return client.create_or_update(resource_group_name=resource_group_name, network_manager_name=network_manager_name, network_group_name=network_group_name, @@ -371,14 +380,11 @@ def network_manager_group_update(instance, network_group_name, if_match=None, display_name=None, - description=None, - member_type=None): + description=None): if display_name is not None: instance.display_name = display_name if description is not None: instance.description = description - if member_type is not None: - instance.member_type = member_type return instance @@ -387,75 +393,79 @@ def network_manager_group_delete(client, network_manager_name, network_group_name, force=None): - return client.delete(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - force=force) + if force is None or force is False: + print("The \'--force\' flag was not provided for the delete operation. " + "If this resource or any of its child resources are part of a deployed configuration, " + "this delete will fail.") + return client.begin_delete(resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + force=force) -def network_manager_security_user_config_list(client, - resource_group_name, - network_manager_name, - top=None, - skip_token=None): - return client.list(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - top=top, - skip_token=skip_token) +# def network_manager_security_user_config_list(client, +# resource_group_name, +# network_manager_name, +# top=None, +# skip_token=None): +# return client.list(resource_group_name=resource_group_name, +# network_manager_name=network_manager_name, +# top=top, +# skip_token=skip_token) -def network_manager_security_user_config_show(client, - resource_group_name, - network_manager_name, - configuration_name): - return client.get(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name) +# def network_manager_security_user_config_show(client, +# resource_group_name, +# network_manager_name, +# configuration_name): +# return client.get(resource_group_name=resource_group_name, +# network_manager_name=network_manager_name, +# configuration_name=configuration_name) -def network_manager_security_user_config_create(client, - resource_group_name, - network_manager_name, - configuration_name, - display_name=None, - description=None, - delete_existing_ns_gs=None): - security_configuration = {} - security_configuration['display_name'] = display_name - security_configuration['description'] = description - security_configuration['delete_existing_ns_gs'] = delete_existing_ns_gs - return client.create_or_update(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - security_user_configuration=security_configuration) +# def network_manager_security_user_config_create(client, +# resource_group_name, +# network_manager_name, +# configuration_name, +# display_name=None, +# description=None, +# delete_existing_ns_gs=None): +# security_configuration = {} +# security_configuration['display_name'] = display_name +# security_configuration['description'] = description +# security_configuration['delete_existing_ns_gs'] = delete_existing_ns_gs +# return client.create_or_update(resource_group_name=resource_group_name, +# network_manager_name=network_manager_name, +# configuration_name=configuration_name, +# security_user_configuration=security_configuration) -def network_manager_security_user_config_update(instance, - resource_group_name, - network_manager_name, - configuration_name, - display_name=None, - description=None, - security_type=None, - delete_existing_ns_gs=None): - if display_name is not None: - instance.display_name = display_name - if description is not None: - instance.description = description - if security_type is not None: - instance.security_type = security_type - if delete_existing_ns_gs is not None: - instance.delete_existing_ns_gs = delete_existing_ns_gs - return instance +# def network_manager_security_user_config_update(instance, +# resource_group_name, +# network_manager_name, +# configuration_name, +# display_name=None, +# description=None, +# security_type=None, +# delete_existing_ns_gs=None): +# if display_name is not None: +# instance.display_name = display_name +# if description is not None: +# instance.description = description +# if security_type is not None: +# instance.security_type = security_type +# if delete_existing_ns_gs is not None: +# instance.delete_existing_ns_gs = delete_existing_ns_gs +# return instance -def network_manager_security_user_config_delete(client, - resource_group_name, - network_manager_name, - configuration_name): - return client.delete(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name) +# def network_manager_security_user_config_delete(client, +# resource_group_name, +# network_manager_name, +# configuration_name): +# return client.begin_delete(resource_group_name=resource_group_name, +# network_manager_name=network_manager_name, +# configuration_name=configuration_name) def network_manager_security_admin_config_list(client, @@ -522,10 +532,14 @@ def network_manager_security_admin_config_delete(client, network_manager_name, configuration_name, force=None): - return client.delete(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - force=force) + if force is None or force is False: + print("The \'--force\' flag was not provided for the delete operation. " + "If this resource or any of its child resources are part of a deployed configuration, " + "this delete will fail.") + return client.begin_delete(resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + force=force) def network_manager_admin_rule_collection_list(client, @@ -592,11 +606,17 @@ def network_manager_admin_rule_collection_delete(client, resource_group_name, network_manager_name, configuration_name, - rule_collection_name): - return client.delete(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name) + rule_collection_name, + force=None): + if force is None or force is False: + print("The \'--force\' flag was not provided for the delete operation. " + "If this resource or any of its child resources are part of a deployed configuration, " + "this delete will fail.") + return client.begin_delete(resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + force=force) def network_manager_admin_rule_create(client, @@ -716,12 +736,18 @@ def network_manager_admin_rule_delete(client, network_manager_name, configuration_name, rule_collection_name, - rule_name): - return client.delete(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name) + rule_name, + force=None): + if force is None or force is False: + print("The \'--force\' flag was not provided for the delete operation. " + "If this resource or any of its child resources are part of a deployed configuration, " + "this delete will fail.") + return client.begin_delete(resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + force=force) # def network_manager_user_rule_collection_list(client, @@ -789,7 +815,7 @@ def network_manager_admin_rule_delete(client, # network_manager_name, # configuration_name, # rule_collection_name): -# return client.delete(resource_group_name=resource_group_name, +# return client.begin_delete(resource_group_name=resource_group_name, # network_manager_name=network_manager_name, # configuration_name=configuration_name, # rule_collection_name=rule_collection_name) @@ -904,7 +930,7 @@ def network_manager_admin_rule_delete(client, # configuration_name, # rule_collection_name, # rule_name): -# return client.delete(resource_group_name=resource_group_name, +# return client.begin_delete(resource_group_name=resource_group_name, # network_manager_name=network_manager_name, # configuration_name=configuration_name, # rule_collection_name=rule_collection_name, @@ -955,8 +981,8 @@ def network_manager_vnet_security_perimeter_show(client, def network_manager_vnet_security_perimeter_delete(client, resource_group_name, network_security_perimeter_name): - return client.delete(resource_group_name=resource_group_name, - network_security_perimeter_name=network_security_perimeter_name) + return client.begin_delete(resource_group_name=resource_group_name, + network_security_perimeter_name=network_security_perimeter_name) def network_manager_perimeter_associable_resource_type_list(client, @@ -1044,7 +1070,7 @@ def network_manager_connection_subscription_delete(client, # resource_group_name, # network_manager_connection_name, # management_group_id): -# return client.delete(resource_group_name=resource_group_name, +# return client.begin_delete(resource_group_name=resource_group_name, # network_manager_connection_name=network_manager_connection_name, # management_group_id=management_group_id) @@ -1115,19 +1141,23 @@ def network_manager_group_static_member_list(client, skip_token=skip_token) -def network_manager_group_static_member_create(client, +def network_manager_group_static_member_create(cmd, + client, resource_group_name, network_manager_name, network_group_name, static_member_name, resource_id): + from azure.mgmt.core.tools import parse_resource_id parameters = {} parameters['resource_id'] = resource_id - return client.create_or_update(resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - static_member_name=static_member_name, - parameters=parameters) + aux_subscription = parse_resource_id(resource_id)['subscription'] + ncf = cf_network_cl(cmd.cli_ctx, aux_subscriptions=[aux_subscription]) + return ncf.static_members.create_or_update(resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + static_member_name=static_member_name, + parameters=parameters) # def network_manager_group_static_member_update(instance, resource_id): diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_collection_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_collection_crud.yaml index 7995472b2f0..c3f93a99de8 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_collection_crud.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_collection_crud.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"1d92dfd9-5ee7-471d-bdfb-3922f7b5e2bd"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:08.6403297Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:08.6403297Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"d105001f-d982-4981-8c74-a76f11ae0ec1"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:11.0677956Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:11.0677956Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:13 GMT + - Mon, 27 Jun 2022 07:08:14 GMT expires: - '-1' pragma: @@ -51,12 +51,12 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1195' + - '1198' status: code: 200 message: OK - request: - body: '{"properties": {"description": "A sample policy", "memberType": "Microsoft.Network/virtualNetworks"}}' + body: '{"properties": {"description": "A sample policy"}}' headers: Accept: - application/json @@ -67,28 +67,28 @@ interactions: Connection: - keep-alive Content-Length: - - '101' + - '50' Content-Type: - application/json ParameterSetName: - - --name --network-manager-name --description --display-name --member-type -g + - --name --network-manager-name --description -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"A - sample policy","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"971dd5e7-83ec-4f0a-8d19-ff8665d07675"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:14.0399822Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:14.0399822Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"45177dcf-200f-4f46-8161-105186be2a2a"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:15.4326652Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:15.4326652Z"}}' headers: cache-control: - no-cache content-length: - - '753' + - '708' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:15 GMT + - Mon, 27 Jun 2022 07:08:15 GMT expires: - '-1' pragma: @@ -126,12 +126,12 @@ interactions: ParameterSetName: - --name --network-group-name --network-manager-name --resource-id -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-01-01 response: body: - string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:16.0496229Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:16.0496229Z"}}' + string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:17.2020782Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:17.2020782Z"}}' headers: cache-control: - no-cache @@ -140,7 +140,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:16 GMT + - Mon, 27 Jun 2022 07:08:17 GMT expires: - '-1' pragma: @@ -156,7 +156,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1198' status: code: 200 message: OK @@ -179,13 +179,13 @@ interactions: - --configuration-name --network-manager-name -g --description --delete-existing-ns-gs --display-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"c5e7f8b6-906c-47f6-a322-50e4a5ea2303","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:17.6820562Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:17.6820562Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"55c8befa-8e55-4e41-b9dd-2fa55582fdab","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:18.9216477Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:18.9216477Z"}}' headers: cache-control: - no-cache @@ -194,7 +194,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:18 GMT + - Mon, 27 Jun 2022 07:08:19 GMT expires: - '-1' pragma: @@ -210,7 +210,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1199' status: code: 200 message: OK @@ -234,13 +234,13 @@ interactions: - --configuration-name --network-manager-name -g --rule-collection-name --description --display-name --applies-to-groups User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-01-01 response: body: string: '{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"","properties":{"displayName":"","description":"A - sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"c1af898a-3687-4475-b2d6-72942c71c8d6"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:19.2275101Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:19.2275101Z"}}' + sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"e7393b35-e760-4f6e-8e46-9a3f093f6a19"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:20.7624436Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:20.7624436Z"}}' headers: cache-control: - no-cache @@ -249,7 +249,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:19 GMT + - Mon, 27 Jun 2022 07:08:21 GMT expires: - '-1' pragma: @@ -258,14 +258,10 @@ interactions: - Kestrel strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1194' status: code: 200 message: OK @@ -283,13 +279,13 @@ interactions: ParameterSetName: - -g --configuration-name --network-manager-name --rule-collection-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-01-01 response: body: - string: '{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"\"00009304-0000-3400-0000-624fa4170000\"","properties":{"displayName":"","description":"A - sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"c1af898a-3687-4475-b2d6-72942c71c8d6"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:19.2275101Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:19.2275101Z"}}' + string: '{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"\"0900bfbd-0000-3400-0000-62b957650000\"","properties":{"displayName":"","description":"A + sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"e7393b35-e760-4f6e-8e46-9a3f093f6a19"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:20.7624436Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:20.7624436Z"}}' headers: cache-control: - no-cache @@ -298,7 +294,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:23 GMT + - Mon, 27 Jun 2022 07:08:23 GMT expires: - '-1' pragma: @@ -330,13 +326,13 @@ interactions: ParameterSetName: - -g --configuration-name --network-manager-name --rule-collection-name --display-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-01-01 response: body: - string: '{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"\"00009304-0000-3400-0000-624fa4170000\"","properties":{"displayName":"","description":"A - sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"c1af898a-3687-4475-b2d6-72942c71c8d6"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:19.2275101Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:19.2275101Z"}}' + string: '{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"\"0900bfbd-0000-3400-0000-62b957650000\"","properties":{"displayName":"","description":"A + sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"e7393b35-e760-4f6e-8e46-9a3f093f6a19"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:20.7624436Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:20.7624436Z"}}' headers: cache-control: - no-cache @@ -345,7 +341,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:25 GMT + - Mon, 27 Jun 2022 07:08:24 GMT expires: - '-1' pragma: @@ -382,13 +378,13 @@ interactions: ParameterSetName: - -g --configuration-name --network-manager-name --rule-collection-name --display-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-01-01 response: body: string: '{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"","properties":{"displayName":"","description":"A - sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"c1af898a-3687-4475-b2d6-72942c71c8d6"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:19.2275101Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:25.6419359Z"}}' + sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"e7393b35-e760-4f6e-8e46-9a3f093f6a19"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:20.7624436Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:25.8609256Z"}}' headers: cache-control: - no-cache @@ -397,7 +393,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:26 GMT + - Mon, 27 Jun 2022 07:08:26 GMT expires: - '-1' pragma: @@ -413,7 +409,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1195' + - '1198' status: code: 200 message: OK @@ -431,13 +427,13 @@ interactions: ParameterSetName: - -g --configuration-name --network-manager-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections?api-version=2022-01-01 response: body: - string: '{"nextLink":"","value":[{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"\"00009604-0000-3400-0000-624fa41e0000\"","properties":{"displayName":"","description":"A - sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"c1af898a-3687-4475-b2d6-72942c71c8d6"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:55:19.2275101Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:55:25.6419359Z"}}]}' + string: '{"nextLink":"","value":[{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"\"0900c4bd-0000-3400-0000-62b9576a0000\"","properties":{"displayName":"","description":"A + sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"e7393b35-e760-4f6e-8e46-9a3f093f6a19"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:08:20.7624436Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:08:25.8609256Z"}}]}' headers: cache-control: - no-cache @@ -446,7 +442,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:55:27 GMT + - Mon, 27 Jun 2022 07:08:28 GMT expires: - '-1' pragma: @@ -478,11 +474,12 @@ interactions: Content-Length: - '0' ParameterSetName: - - -g --configuration-name --network-manager-name --rule-collection-name --yes + - -g --configuration-name --network-manager-name --rule-collection-name --force + --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-01-01&force=true response: body: string: '' @@ -492,7 +489,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:55:28 GMT + - Mon, 27 Jun 2022 07:08:29 GMT expires: - '-1' pragma: @@ -524,9 +521,9 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01&force=true response: body: string: '' @@ -536,7 +533,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:55:29 GMT + - Mon, 27 Jun 2022 07:08:31 GMT expires: - '-1' pragma: @@ -548,7 +545,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14998' + - '14999' status: code: 200 message: OK @@ -568,9 +565,9 @@ interactions: ParameterSetName: - -g --name --network-manager-name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01&force=true response: body: string: '' @@ -580,7 +577,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:55:30 GMT + - Mon, 27 Jun 2022 07:08:33 GMT expires: - '-1' pragma: @@ -592,7 +589,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14998' + - '14999' status: code: 200 message: OK @@ -610,11 +607,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_collection_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -624,7 +621,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:55:36 GMT + - Mon, 27 Jun 2022 07:08:40 GMT expires: - '-1' pragma: diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_crud.yaml index 494bc4a146c..6064e04b6ee 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_crud.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_admin_rule_crud.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"0a751e39-9670-48ed-ad30-30bf6e646d3f"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:11.6881102Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:11.6881102Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"2f419bf1-3a82-44bf-a912-fd732d017972"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:30.2580750Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:30.2580750Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:16 GMT + - Mon, 27 Jun 2022 07:06:32 GMT expires: - '-1' pragma: @@ -56,7 +56,7 @@ interactions: code: 200 message: OK - request: - body: '{"properties": {"description": "A sample policy", "memberType": "Microsoft.Network/virtualNetworks"}}' + body: '{"properties": {"description": "A sample policy"}}' headers: Accept: - application/json @@ -67,28 +67,28 @@ interactions: Connection: - keep-alive Content-Length: - - '101' + - '50' Content-Type: - application/json ParameterSetName: - - --name --network-manager-name --description --display-name --member-type -g + - --name --network-manager-name --description -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"A - sample policy","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"9f657646-af2e-4f8a-953b-314966a85f35"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:17.5895638Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:17.5895638Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"e4617507-db8a-4a6d-8564-257ed7ad6d7c"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:34.2575298Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:34.2575298Z"}}' headers: cache-control: - no-cache content-length: - - '742' + - '697' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:18 GMT + - Mon, 27 Jun 2022 07:06:34 GMT expires: - '-1' pragma: @@ -104,7 +104,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' status: code: 200 message: OK @@ -126,12 +126,12 @@ interactions: ParameterSetName: - --name --network-group-name --network-manager-name --resource-id -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-01-01 response: body: - string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:19.1188851Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:19.1188851Z"}}' + string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:35.2323066Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:35.2323066Z"}}' headers: cache-control: - no-cache @@ -140,7 +140,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:19 GMT + - Mon, 27 Jun 2022 07:06:35 GMT expires: - '-1' pragma: @@ -156,7 +156,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1199' status: code: 200 message: OK @@ -179,13 +179,13 @@ interactions: - --configuration-name --network-manager-name -g --description --delete-existing-ns-gs --display-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"6d733355-421d-4d54-abfb-0dc9588a18d4","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:20.7874785Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:20.7874785Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"f26e460d-b901-492b-a694-59f1f3205127","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:36.1698471Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:36.1698471Z"}}' headers: cache-control: - no-cache @@ -194,7 +194,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:21 GMT + - Mon, 27 Jun 2022 07:06:35 GMT expires: - '-1' pragma: @@ -210,7 +210,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1198' status: code: 200 message: OK @@ -234,13 +234,13 @@ interactions: - --configuration-name --network-manager-name -g --rule-collection-name --description --display-name --applies-to-groups User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection?api-version=2022-01-01 response: body: string: '{"name":"myTestCollection","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections","etag":"","properties":{"displayName":"","description":"A - sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"8c30521a-671a-47c5-a9b7-77161f3408df"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:22.3548011Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:22.3548011Z"}}' + sample policy","appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup"}],"provisioningState":"Succeeded","resourceGuid":"ec280eaf-7837-4ba5-86e1-d80d6e037117"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:37.1583026Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:37.1583026Z"}}' headers: cache-control: - no-cache @@ -249,7 +249,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:22 GMT + - Mon, 27 Jun 2022 07:06:38 GMT expires: - '-1' pragma: @@ -265,7 +265,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1199' status: code: 200 message: OK @@ -289,12 +289,12 @@ interactions: - -g --network-manager-name --configuration-name --rule-collection-name --rule-name --kind --protocol --access --priority --direction User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-01-01 response: body: - string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Allow","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"e82b4be2-b24d-4ed0-a950-398465e0aaf2"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:23.9448992Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:23.9448992Z"}}' + string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Allow","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"a9c73a82-df55-41cf-8c0f-e97e7aed3016"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:38.9526280Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:38.9526280Z"}}' headers: cache-control: - no-cache @@ -303,7 +303,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:24 GMT + - Mon, 27 Jun 2022 07:06:38 GMT expires: - '-1' pragma: @@ -337,12 +337,12 @@ interactions: ParameterSetName: - -g --network-manager-name --configuration-name --rule-collection-name --rule-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-01-01 response: body: - string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"\"00005b04-0000-3400-0000-624fa3a40000\"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Allow","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"e82b4be2-b24d-4ed0-a950-398465e0aaf2"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:23.9448992Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:23.9448992Z"}}' + string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"\"09009cbd-0000-3400-0000-62b956ff0000\"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Allow","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"a9c73a82-df55-41cf-8c0f-e97e7aed3016"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:38.9526280Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:38.9526280Z"}}' headers: cache-control: - no-cache @@ -351,7 +351,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:25 GMT + - Mon, 27 Jun 2022 07:06:39 GMT expires: - '-1' pragma: @@ -384,12 +384,12 @@ interactions: - -g --network-manager-name --configuration-name --rule-collection-name --rule-name --access User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-01-01 response: body: - string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"\"00005b04-0000-3400-0000-624fa3a40000\"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Allow","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"e82b4be2-b24d-4ed0-a950-398465e0aaf2"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:23.9448992Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:23.9448992Z"}}' + string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"\"09009cbd-0000-3400-0000-62b956ff0000\"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Allow","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"a9c73a82-df55-41cf-8c0f-e97e7aed3016"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:38.9526280Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:38.9526280Z"}}' headers: cache-control: - no-cache @@ -398,7 +398,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:26 GMT + - Mon, 27 Jun 2022 07:06:40 GMT expires: - '-1' pragma: @@ -437,12 +437,12 @@ interactions: - -g --network-manager-name --configuration-name --rule-collection-name --rule-name --access User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-01-01 response: body: - string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Deny","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"e82b4be2-b24d-4ed0-a950-398465e0aaf2"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:23.9448992Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:28.1437686Z"}}' + string: '{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Deny","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"a9c73a82-df55-41cf-8c0f-e97e7aed3016"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:38.9526280Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:42.0917666Z"}}' headers: cache-control: - no-cache @@ -451,7 +451,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:31 GMT + - Mon, 27 Jun 2022 07:06:42 GMT expires: - '-1' pragma: @@ -485,12 +485,12 @@ interactions: ParameterSetName: - -g --network-manager-name --configuration-name --rule-collection-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules?api-version=2022-01-01 response: body: - string: '{"nextLink":"","value":[{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"\"00005d04-0000-3400-0000-624fa3aa0000\"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Deny","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"e82b4be2-b24d-4ed0-a950-398465e0aaf2"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:53:23.9448992Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:53:28.1437686Z"}}]}' + string: '{"nextLink":"","value":[{"name":"myRule","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule","type":"Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules","etag":"\"09009dbd-0000-3400-0000-62b957020000\"","properties":{"displayName":"","description":"","flag":"","priority":32,"protocol":"Tcp","direction":"Inbound","access":"Deny","sources":[],"destinations":[],"sourcePortRanges":[],"destinationPortRanges":[],"provisioningState":"Succeeded","resourceGuid":"a9c73a82-df55-41cf-8c0f-e97e7aed3016"},"kind":"Custom","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:06:38.9526280Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:06:42.0917666Z"}}]}' headers: cache-control: - no-cache @@ -499,7 +499,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:53:32 GMT + - Mon, 27 Jun 2022 07:06:44 GMT expires: - '-1' pragma: @@ -532,11 +532,11 @@ interactions: - '0' ParameterSetName: - -g --network-manager-name --configuration-name --rule-collection-name --rule-name - --yes + --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig/ruleCollections/myTestCollection/rules/myRule?api-version=2022-01-01&force=true response: body: string: '' @@ -546,7 +546,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:53:33 GMT + - Mon, 27 Jun 2022 07:06:45 GMT expires: - '-1' pragma: @@ -558,7 +558,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14998' + - '14999' status: code: 200 message: OK @@ -578,9 +578,9 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01&force=true response: body: string: '' @@ -590,7 +590,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:53:35 GMT + - Mon, 27 Jun 2022 07:06:48 GMT expires: - '-1' pragma: @@ -602,7 +602,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14997' + - '14999' status: code: 200 message: OK @@ -622,9 +622,9 @@ interactions: ParameterSetName: - -g --name --network-manager-name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01&force=true response: body: string: '' @@ -634,7 +634,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:53:37 GMT + - Mon, 27 Jun 2022 07:06:50 GMT expires: - '-1' pragma: @@ -664,11 +664,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_admin_rule_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -678,7 +678,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:53:46 GMT + - Mon, 27 Jun 2022 07:06:57 GMT expires: - '-1' pragma: diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connect_config_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connect_config_crud.yaml index 83b0c7f7540..2bfd9231d96 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connect_config_crud.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connect_config_crud.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"aadd8926-699d-4624-91ff-ee6affd2ee45"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:33.1022859Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:33.1022859Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"3f117616-d7e4-4e19-ab53-bd4d38913be1"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:00.9999833Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:00.9999833Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:00:40 GMT + - Mon, 27 Jun 2022 07:10:03 GMT expires: - '-1' pragma: @@ -56,7 +56,7 @@ interactions: code: 200 message: OK - request: - body: '{"properties": {"description": "A sample policy", "memberType": "Microsoft.Network/virtualNetworks"}}' + body: '{"properties": {"description": "A sample policy"}}' headers: Accept: - application/json @@ -67,28 +67,28 @@ interactions: Connection: - keep-alive Content-Length: - - '101' + - '50' Content-Type: - application/json ParameterSetName: - - --name --network-manager-name --description --display-name --member-type -g + - --name --network-manager-name --description -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"A - sample policy","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"80685dcc-e63a-4f64-9422-a66996577e01"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:42.7053252Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:42.7053252Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"b3447526-0a1c-48e3-9f82-59f7df92c70f"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:05.0941223Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:05.0941223Z"}}' headers: cache-control: - no-cache content-length: - - '746' + - '701' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:00:45 GMT + - Mon, 27 Jun 2022 07:10:05 GMT expires: - '-1' pragma: @@ -104,7 +104,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' status: code: 200 message: OK @@ -126,12 +126,12 @@ interactions: ParameterSetName: - --name --network-group-name --network-manager-name --resource-id -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-01-01 response: body: - string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:47.0396063Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:47.0396063Z"}}' + string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:06.3906419Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:06.3906419Z"}}' headers: cache-control: - no-cache @@ -140,7 +140,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:00:50 GMT + - Mon, 27 Jun 2022 07:10:07 GMT expires: - '-1' pragma: @@ -156,7 +156,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' status: code: 200 message: OK @@ -184,13 +184,13 @@ interactions: - --configuration-name --network-manager-name -g --applies-to-groups --connectivity-topology --delete-existing-peering --hub --description --is-global User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"","properties":{"displayName":"","description":"Sample - Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"b68df399-1e77-4c66-9f29-22ea5a73e12e"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:51.2800467Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:51.2800467Z"}}' + Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"1d966dc2-4fc2-46d3-811d-b88bb513fde9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:08.3611460Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:08.3611460Z"}}' headers: cache-control: - no-cache @@ -199,7 +199,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:00:51 GMT + - Mon, 27 Jun 2022 07:10:09 GMT expires: - '-1' pragma: @@ -233,13 +233,13 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"\"0000511c-0000-3400-0000-624fdda40000\"","properties":{"displayName":"","description":"Sample - Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"b68df399-1e77-4c66-9f29-22ea5a73e12e"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:51.2800467Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:51.2800467Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"\"0900f3bd-0000-3400-0000-62b957d10000\"","properties":{"displayName":"","description":"Sample + Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"1d966dc2-4fc2-46d3-811d-b88bb513fde9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:08.3611460Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:08.3611460Z"}}' headers: cache-control: - no-cache @@ -248,7 +248,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:00:56 GMT + - Mon, 27 Jun 2022 07:10:10 GMT expires: - '-1' pragma: @@ -280,13 +280,13 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"\"0000511c-0000-3400-0000-624fdda40000\"","properties":{"displayName":"","description":"Sample - Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"b68df399-1e77-4c66-9f29-22ea5a73e12e"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:51.2800467Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:51.2800467Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"\"0900f3bd-0000-3400-0000-62b957d10000\"","properties":{"displayName":"","description":"Sample + Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"1d966dc2-4fc2-46d3-811d-b88bb513fde9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:08.3611460Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:08.3611460Z"}}' headers: cache-control: - no-cache @@ -295,7 +295,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:00:57 GMT + - Mon, 27 Jun 2022 07:10:11 GMT expires: - '-1' pragma: @@ -336,13 +336,13 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"","properties":{"displayName":"","description":"Sample - Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"b68df399-1e77-4c66-9f29-22ea5a73e12e"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:51.2800467Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:59.3470784Z"}}' + Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"1d966dc2-4fc2-46d3-811d-b88bb513fde9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:08.3611460Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:12.9316755Z"}}' headers: cache-control: - no-cache @@ -351,7 +351,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:01:02 GMT + - Mon, 27 Jun 2022 07:10:13 GMT expires: - '-1' pragma: @@ -367,7 +367,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 200 message: OK @@ -385,13 +385,13 @@ interactions: ParameterSetName: - --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations?api-version=2022-01-01 response: body: - string: '{"nextLink":"","value":[{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"\"0000561c-0000-3400-0000-624fddae0000\"","properties":{"displayName":"","description":"Sample - Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"b68df399-1e77-4c66-9f29-22ea5a73e12e"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:00:51.2800467Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:00:59.3470784Z"}}]}' + string: '{"nextLink":"","value":[{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/connectivityConfigurations","etag":"\"0900f6bd-0000-3400-0000-62b957d50000\"","properties":{"displayName":"","description":"Sample + Configuration","connectivityTopology":"HubAndSpoke","hubs":[{"resourceType":"Microsoft.Network/virtualNetworks","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002"}],"appliesToGroups":[{"networkGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","groupConnectivity":"None","useHubGateway":"True","isGlobal":"False"}],"provisioningState":"Succeeded","deleteExistingPeering":"True","isGlobal":"True","resourceGuid":"1d966dc2-4fc2-46d3-811d-b88bb513fde9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:10:08.3611460Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:10:12.9316755Z"}}]}' headers: cache-control: - no-cache @@ -400,7 +400,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:01:06 GMT + - Mon, 27 Jun 2022 07:10:15 GMT expires: - '-1' pragma: @@ -432,11 +432,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --configuration-name --network-manager-name -g --yes + - --configuration-name --network-manager-name -g --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/connectivityConfigurations/myTestSecurityConfig?api-version=2022-01-01&force=true response: body: string: '' @@ -446,7 +446,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:01:09 GMT + - Mon, 27 Jun 2022 07:10:16 GMT expires: - '-1' pragma: @@ -478,9 +478,9 @@ interactions: ParameterSetName: - -g --name --network-manager-name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01&force=true response: body: string: '' @@ -490,7 +490,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:01:12 GMT + - Mon, 27 Jun 2022 07:10:18 GMT expires: - '-1' pragma: @@ -502,7 +502,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14997' status: code: 200 message: OK @@ -520,11 +520,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connect_config_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -534,7 +534,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:01:19 GMT + - Mon, 27 Jun 2022 07:10:25 GMT expires: - '-1' pragma: @@ -546,7 +546,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14998' status: code: 200 message: OK diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connection_subscription.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connection_subscription.yaml index 052422a919a..abe571ccd94 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connection_subscription.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_connection_subscription.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"d98ff18a-bf4a-4f76-9e56-bb207e75cdb1"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:13:00.2983262Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:13:00.2983262Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"9b63d300-62b3-48c4-8a3e-330698fc98bf"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:13:52.0147242Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:13:52.0147242Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:13:05 GMT + - Mon, 27 Jun 2022 07:13:54 GMT expires: - '-1' pragma: @@ -51,7 +51,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' status: code: 200 message: OK @@ -74,9 +74,9 @@ interactions: ParameterSetName: - --connection-name --description --network-manager-id User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection","name":"myTestNetworkManagerConnection","type":"Microsoft.Network/networkManagerConnections","location":"","properties":{"networkManagerId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","connectionState":"Pending","description":"My @@ -89,7 +89,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:13:10 GMT + - Mon, 27 Jun 2022 07:13:58 GMT expires: - '-1' pragma: @@ -105,7 +105,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1192' status: code: 200 message: OK @@ -123,9 +123,9 @@ interactions: ParameterSetName: - --connection-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection","name":"myTestNetworkManagerConnection","type":"Microsoft.Network/networkManagerConnections","location":"","properties":{"networkManagerId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","connectionState":"Pending","description":"My @@ -138,7 +138,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:13:12 GMT + - Mon, 27 Jun 2022 07:14:00 GMT expires: - '-1' pragma: @@ -170,9 +170,9 @@ interactions: ParameterSetName: - --connection-name --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection","name":"myTestNetworkManagerConnection","type":"Microsoft.Network/networkManagerConnections","location":"","properties":{"networkManagerId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","connectionState":"Pending","description":"My @@ -185,7 +185,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:13:14 GMT + - Mon, 27 Jun 2022 07:14:03 GMT expires: - '-1' pragma: @@ -222,9 +222,9 @@ interactions: ParameterSetName: - --connection-name --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection","name":"myTestNetworkManagerConnection","type":"Microsoft.Network/networkManagerConnections","location":"","properties":{"networkManagerId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","connectionState":"Pending","description":"My @@ -237,7 +237,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:13:19 GMT + - Mon, 27 Jun 2022 07:14:06 GMT expires: - '-1' pragma: @@ -253,7 +253,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1193' status: code: 200 message: OK @@ -269,23 +269,22 @@ interactions: Connection: - keep-alive User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections?api-version=2022-01-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/testConnection","name":"testConnection","type":"Microsoft.Network/networkManagerConnections","location":"","properties":{"networkManagerId":"","connectionState":"Pending","description":"My - Test Network Manager Connection"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection","name":"myTestNetworkManagerConnection","type":"Microsoft.Network/networkManagerConnections","location":"","properties":{"networkManagerId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","connectionState":"Pending","description":"My + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection","name":"myTestNetworkManagerConnection","type":"Microsoft.Network/networkManagerConnections","location":"","properties":{"networkManagerId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","connectionState":"Pending","description":"My Test Network Manager Connection Updated Description"}}],"nextLink":""}' headers: cache-control: - no-cache content-length: - - '931' + - '594' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:13:21 GMT + - Mon, 27 Jun 2022 07:14:07 GMT expires: - '-1' pragma: @@ -319,9 +318,9 @@ interactions: ParameterSetName: - --connection-name --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkManagerConnections/myTestNetworkManagerConnection?api-version=2022-01-01 response: body: string: '' @@ -331,7 +330,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:13:23 GMT + - Mon, 27 Jun 2022 07:14:11 GMT expires: - '-1' pragma: @@ -343,7 +342,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14998' + - '14999' status: code: 200 message: OK @@ -361,11 +360,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_connection_subscription000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -375,7 +374,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:13:28 GMT + - Mon, 27 Jun 2022 07:14:17 GMT expires: - '-1' pragma: @@ -387,7 +386,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14998' status: code: 200 message: OK diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_crud.yaml index 0ef6e85b29f..01f27ee1346 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_crud.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_crud.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"063c5253-640d-47e0-9e52-7c463a6fca79"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-06T06:09:19.1685675Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-06T06:09:19.1685675Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"48f3a6d3-e437-40fd-a703-fa2597bcbb10"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:54:31.0204177Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:54:31.0204177Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 06 Apr 2022 06:09:23 GMT + - Mon, 27 Jun 2022 06:54:33 GMT expires: - '-1' pragma: @@ -69,13 +69,13 @@ interactions: ParameterSetName: - --resource-group --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: - string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"\"1c008004-0000-3400-0000-624d2e910000\"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"063c5253-640d-47e0-9e52-7c463a6fca79"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-06T06:09:19.1685675Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-06T06:09:19.1685675Z"}}' + string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"\"0900e5bc-0000-3400-0000-62b954280000\"","properties":{"displayName":"","description":"My + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"48f3a6d3-e437-40fd-a703-fa2597bcbb10"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:54:31.0204177Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:54:31.0204177Z"}}' headers: cache-control: - no-cache @@ -84,7 +84,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 06 Apr 2022 06:09:26 GMT + - Mon, 27 Jun 2022 06:54:35 GMT expires: - '-1' pragma: @@ -116,13 +116,13 @@ interactions: ParameterSetName: - --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers?api-version=2022-01-01 response: body: - string: '{"nextLink":"","value":[{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"\"1c008004-0000-3400-0000-624d2e910000\"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"063c5253-640d-47e0-9e52-7c463a6fca79"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-06T06:09:19.1685675Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-06T06:09:19.1685675Z"}}]}' + string: '{"nextLink":"","value":[{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"\"0900e5bc-0000-3400-0000-62b954280000\"","properties":{"displayName":"","description":"My + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"48f3a6d3-e437-40fd-a703-fa2597bcbb10"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:54:31.0204177Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:54:31.0204177Z"}}]}' headers: cache-control: - no-cache @@ -131,7 +131,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 06 Apr 2022 06:09:28 GMT + - Mon, 27 Jun 2022 06:54:38 GMT expires: - '-1' pragma: @@ -163,11 +163,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_crud000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -177,7 +177,7 @@ interactions: content-length: - '0' date: - - Wed, 06 Apr 2022 06:09:31 GMT + - Mon, 27 Jun 2022 06:54:45 GMT expires: - '-1' pragma: diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_group_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_group_crud.yaml index 08e60189279..9c8bedb0ad4 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_group_crud.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_group_crud.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"4e789600-c799-40c6-97ea-e35b68ef44d6"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:00:27.6708997Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:00:27.6708997Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"e3f45bf3-a4b8-4d9a-908f-1bffa0e98864"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:55:32.8917028Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:55:32.8917028Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:00:35 GMT + - Mon, 27 Jun 2022 06:55:56 GMT expires: - '-1' pragma: @@ -56,7 +56,7 @@ interactions: code: 200 message: OK - request: - body: '{"properties": {"description": "A sample group", "memberType": "Microsoft.Network/virtualNetworks"}}' + body: '{"properties": {"description": "A sample group"}}' headers: Accept: - application/json @@ -67,28 +67,28 @@ interactions: Connection: - keep-alive Content-Length: - - '100' + - '49' Content-Type: - application/json ParameterSetName: - - --name --network-manager-name --description --display-name --member-type -g + - --name --network-manager-name --description -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"A - sample group","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"9aed3955-e942-4074-955e-08e8172bd68d"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:00:36.7871771Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:00:36.7871771Z"}}' + sample group","provisioningState":"Succeeded","resourceGuid":"37520362-9257-4619-b7e7-f3fb8abe94c9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:55:58.5835636Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:55:58.5835636Z"}}' headers: cache-control: - no-cache content-length: - - '731' + - '686' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:00:39 GMT + - Mon, 27 Jun 2022 06:55:58 GMT expires: - '-1' pragma: @@ -122,22 +122,22 @@ interactions: ParameterSetName: - -g --name --network-manager-name --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: - string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"\"00000900-0000-3400-0000-624f97470000\"","properties":{"displayName":"","description":"A - sample group","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"9aed3955-e942-4074-955e-08e8172bd68d"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:00:36.7871771Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:00:36.7871771Z"}}' + string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"\"0900f4bc-0000-3400-0000-62b9547f0000\"","properties":{"displayName":"","description":"A + sample group","provisioningState":"Succeeded","resourceGuid":"37520362-9257-4619-b7e7-f3fb8abe94c9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:55:58.5835636Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:55:58.5835636Z"}}' headers: cache-control: - no-cache content-length: - - '771' + - '726' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:00:42 GMT + - Mon, 27 Jun 2022 06:56:01 GMT expires: - '-1' pragma: @@ -173,22 +173,22 @@ interactions: ParameterSetName: - -g --name --network-manager-name --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"Desc - changed.","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"9aed3955-e942-4074-955e-08e8172bd68d"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:00:36.7871771Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:00:44.3642224Z"}}' + changed.","provisioningState":"Succeeded","resourceGuid":"37520362-9257-4619-b7e7-f3fb8abe94c9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:55:58.5835636Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:56:02.3491651Z"}}' headers: cache-control: - no-cache content-length: - - '730' + - '685' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:00:47 GMT + - Mon, 27 Jun 2022 06:56:01 GMT expires: - '-1' pragma: @@ -204,7 +204,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' status: code: 200 message: OK @@ -222,22 +222,22 @@ interactions: ParameterSetName: - -g --name --network-manager-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: - string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"\"00000a00-0000-3400-0000-624f974f0000\"","properties":{"displayName":"","description":"Desc - changed.","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"9aed3955-e942-4074-955e-08e8172bd68d"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:00:36.7871771Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:00:44.3642224Z"}}' + string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"\"0900f6bc-0000-3400-0000-62b954820000\"","properties":{"displayName":"","description":"Desc + changed.","provisioningState":"Succeeded","resourceGuid":"37520362-9257-4619-b7e7-f3fb8abe94c9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:55:58.5835636Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:56:02.3491651Z"}}' headers: cache-control: - no-cache content-length: - - '770' + - '725' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:00:50 GMT + - Mon, 27 Jun 2022 06:56:04 GMT expires: - '-1' pragma: @@ -269,22 +269,22 @@ interactions: ParameterSetName: - -g --network-manager-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups?api-version=2022-01-01 response: body: string: '{"nextLink":"","value":[{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"Desc - changed.","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"9aed3955-e942-4074-955e-08e8172bd68d"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:00:36.7871771Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:00:44.3642224Z"}}]}' + changed.","provisioningState":"Succeeded","resourceGuid":"37520362-9257-4619-b7e7-f3fb8abe94c9"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:55:58.5835636Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:56:02.3491651Z"}}]}' headers: cache-control: - no-cache content-length: - - '756' + - '711' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:00:54 GMT + - Mon, 27 Jun 2022 06:56:05 GMT expires: - '-1' pragma: @@ -318,9 +318,9 @@ interactions: ParameterSetName: - -g --name --network-manager-name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01&force=true response: body: string: '' @@ -330,7 +330,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:00:55 GMT + - Mon, 27 Jun 2022 06:56:07 GMT expires: - '-1' pragma: @@ -342,7 +342,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14998' status: code: 200 message: OK @@ -360,11 +360,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_group000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -374,7 +374,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:01:03 GMT + - Mon, 27 Jun 2022 06:56:12 GMT expires: - '-1' pragma: diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_list_queries.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_list_queries.yaml index 3a6a7a20448..dd797cce9b1 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_list_queries.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_list_queries.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"7582ba7d-acad-499b-9e8f-270d1f35d587"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:10:22.2144185Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:10:22.2144185Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"0274918e-6cd6-40f2-ac13-88dd07133542"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:11:50.7124637Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:11:50.7124637Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:27 GMT + - Mon, 27 Jun 2022 07:11:53 GMT expires: - '-1' pragma: @@ -51,12 +51,12 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1198' status: code: 200 message: OK - request: - body: '{"properties": {"description": "A sample policy", "memberType": "Microsoft.Network/virtualNetworks"}}' + body: '{"properties": {"description": "A sample policy"}}' headers: Accept: - application/json @@ -67,28 +67,28 @@ interactions: Connection: - keep-alive Content-Length: - - '101' + - '50' Content-Type: - application/json ParameterSetName: - - --name --network-manager-name --description --display-name --member-type -g + - --name --network-manager-name --description -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"A - sample policy","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"af5aeedf-6a92-461b-b866-d566e263fc16"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:10:29.2254969Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:10:29.2254969Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"0019f509-c288-44f3-985b-0bc5a0502c8b"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:11:54.6652961Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:11:54.6652961Z"}}' headers: cache-control: - no-cache content-length: - - '739' + - '694' content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:31 GMT + - Mon, 27 Jun 2022 07:11:54 GMT expires: - '-1' pragma: @@ -104,7 +104,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1193' status: code: 200 message: OK @@ -126,12 +126,12 @@ interactions: ParameterSetName: - --name --network-group-name --network-manager-name --resource-id -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-01-01 response: body: - string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:10:33.3936182Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:10:33.3936182Z"}}' + string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:11:56.4491312Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:11:56.4491312Z"}}' headers: cache-control: - no-cache @@ -140,7 +140,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:34 GMT + - Mon, 27 Jun 2022 07:11:56 GMT expires: - '-1' pragma: @@ -156,7 +156,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1196' status: code: 200 message: OK @@ -178,9 +178,9 @@ interactions: ParameterSetName: - --network-manager-name --deployment-types --regions --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/listDeploymentStatus?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/listDeploymentStatus?api-version=2022-01-01 response: body: string: '{"skipToken":"","value":[]}' @@ -192,59 +192,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:36 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: '{}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager group list-effect-vnet - Connection: - - keep-alive - Content-Length: - - '2' - Content-Type: - - application/json - ParameterSetName: - - --network-group-name --network-manager-name --resource-group - User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/listEffectiveVirtualNetworks?api-version=2022-02-01-preview - response: - body: - string: '{"skipToken":"MTA=","value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bez-rg/providers/Microsoft.Network/virtualNetworks/bez-vm","location":"westus2","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bez-rg/providers/Microsoft.Network/virtualNetworks/bezvnet","location":"westus","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/bez-rg/providers/Microsoft.Network/virtualNetworks/thisvm","location":"westus2","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_netappfiles_test_snapshot_vpshzlob7c63iuglneagoxjxa45dqn6eoglhf37oo5cms/providers/Microsoft.Network/virtualNetworks/cli-vnet-lefr-02","location":"westus2","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_ag_auth_certckoohgv4caxljkvyusrql32sypfoekmxfcqropfpppot4xtu4rvmxb/providers/Microsoft.Network/virtualNetworks/ag1Vnet","location":"westus","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_ag_frontend_ip_privategi7tu5o2khz23lv2vn5a3eeyh2o3do2kx7j3g35jnrck/providers/Microsoft.Network/virtualNetworks/vnet1","location":"westus","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_ag_frontend_portpyb4s6ev7mcplxsluixb7j4ccwyhmipliidq72iakh5vbzjdfz/providers/Microsoft.Network/virtualNetworks/ag1Vnet","location":"westus","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_ag_private_ip4rspo6xzqwvpupgbcifjehctcqmgk4o5h2bm5cf7tjfjdxgq3kgjq/providers/Microsoft.Network/virtualNetworks/ag3Vnet","location":"westus","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_cannotdelete_resource_lockbfuaftaa7m4m77urywe56rs3yfr4sr3ybmrsclix/providers/Microsoft.Network/virtualNetworks/cli.lock.rsrchikdj2r5lezlez4w6","location":"westus","membershipType":"Dynamic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_capacity_reservation_3tlf6fnaho6xh2k67p5k2gzrdwsz6shx7wiovzaqqgrv6/providers/Microsoft.Network/virtualNetworks/vme2gol3cqVNET","location":"centraluseuap","membershipType":"Dynamic"}]}' - headers: - cache-control: - - no-cache - content-length: - - '2378' - content-type: - - application/json; charset=utf-8 - date: - - Fri, 08 Apr 2022 07:10:39 GMT + - Mon, 27 Jun 2022 07:11:59 GMT expires: - '-1' pragma: @@ -282,9 +230,9 @@ interactions: ParameterSetName: - --network-manager-name --resource-group --regions User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/listActiveConnectivityConfigurations?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/listActiveConnectivityConfigurations?api-version=2022-01-01 response: body: string: '{"skipToken":"","value":[]}' @@ -296,7 +244,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:41 GMT + - Mon, 27 Jun 2022 07:12:00 GMT expires: - '-1' pragma: @@ -334,9 +282,9 @@ interactions: ParameterSetName: - --virtual-network-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/virtualNetworks/clitest.vn000002/listNetworkManagerEffectiveConnectivityConfigurations?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/virtualNetworks/clitest.vn000002/listNetworkManagerEffectiveConnectivityConfigurations?api-version=2022-01-01 response: body: string: '{"skipToken":"","value":[]}' @@ -348,7 +296,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:43 GMT + - Mon, 27 Jun 2022 07:12:01 GMT expires: - '-1' pragma: @@ -364,7 +312,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' status: code: 200 message: OK @@ -386,9 +334,9 @@ interactions: ParameterSetName: - --virtual-network-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/virtualNetworks/clitest.vn000002/listNetworkManagerEffectiveSecurityAdminRules?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/virtualNetworks/clitest.vn000002/listNetworkManagerEffectiveSecurityAdminRules?api-version=2022-01-01 response: body: string: '{"skipToken":"","value":[]}' @@ -400,7 +348,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:47 GMT + - Mon, 27 Jun 2022 07:12:01 GMT expires: - '-1' pragma: @@ -438,9 +386,9 @@ interactions: ParameterSetName: - --network-manager-name -g --regions User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/listActiveSecurityAdminRules?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/listActiveSecurityAdminRules?api-version=2022-01-01 response: body: string: '{"skipToken":"","value":[]}' @@ -452,7 +400,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:10:47 GMT + - Mon, 27 Jun 2022 07:12:03 GMT expires: - '-1' pragma: @@ -488,9 +436,9 @@ interactions: ParameterSetName: - -g --name --network-manager-name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01&force=true response: body: string: '' @@ -500,7 +448,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:10:49 GMT + - Mon, 27 Jun 2022 07:12:05 GMT expires: - '-1' pragma: @@ -512,7 +460,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14998' status: code: 200 message: OK @@ -530,11 +478,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_list_queries000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -544,7 +492,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:10:56 GMT + - Mon, 27 Jun 2022 07:12:11 GMT expires: - '-1' pragma: @@ -556,7 +504,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14998' + - '14997' status: code: 200 message: OK diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_scope_connection.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_scope_connection.yaml index dc9e3efda3e..f380b7da73f 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_scope_connection.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_scope_connection.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"c92ab5ea-8ab3-4fa9-ba41-56edf34a4904"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:11:41.5824735Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:11:41.5824735Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"7aaba49d-666a-4cac-acb5-afefb3bbdd6f"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:12:55.4722776Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:12:55.4722776Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:11:48 GMT + - Mon, 27 Jun 2022 07:12:58 GMT expires: - '-1' pragma: @@ -51,7 +51,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1197' status: code: 200 message: OK @@ -75,13 +75,13 @@ interactions: ParameterSetName: - --resource-group --network-manager-name --name --description --tenant-id --resource-id User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection","name":"myTestScopeConnection","type":"Microsoft.Network/networkManagers/scopeConnections","properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000","connectionState":"Pending","description":"My - Test Network Manager Scope Connection"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:11:50.6837307Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:11:50.6837307Z"}}' + Test Network Manager Scope Connection"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:12:59.6367770Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:12:59.6367770Z"}}' headers: cache-control: - no-cache @@ -90,7 +90,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:11:55 GMT + - Mon, 27 Jun 2022 07:13:00 GMT expires: - '-1' pragma: @@ -106,7 +106,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1195' status: code: 200 message: OK @@ -124,13 +124,13 @@ interactions: ParameterSetName: - -g --network-manager-name --name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection","name":"myTestScopeConnection","type":"Microsoft.Network/networkManagers/scopeConnections","properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000","connectionState":"Pending","description":"My - Test Network Manager Scope Connection"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:11:50.6837307Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:11:50.6837307Z"}}' + Test Network Manager Scope Connection"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:12:59.6367770Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:12:59.6367770Z"}}' headers: cache-control: - no-cache @@ -139,7 +139,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:11:56 GMT + - Mon, 27 Jun 2022 07:13:02 GMT expires: - '-1' pragma: @@ -171,13 +171,13 @@ interactions: ParameterSetName: - -g --network-manager-name --name --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection","name":"myTestScopeConnection","type":"Microsoft.Network/networkManagers/scopeConnections","properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000","connectionState":"Pending","description":"My - Test Network Manager Scope Connection"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:11:50.6837307Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:11:50.6837307Z"}}' + Test Network Manager Scope Connection"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:12:59.6367770Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:12:59.6367770Z"}}' headers: cache-control: - no-cache @@ -186,7 +186,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:11:58 GMT + - Mon, 27 Jun 2022 07:13:03 GMT expires: - '-1' pragma: @@ -224,13 +224,13 @@ interactions: ParameterSetName: - -g --network-manager-name --name --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection","name":"myTestScopeConnection","type":"Microsoft.Network/networkManagers/scopeConnections","properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000","connectionState":"Pending","description":"My - Test Network Manager Scope Connection Updated Description"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:11:59.8298138Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:11:59.8298138Z"}}' + Test Network Manager Scope Connection Updated Description"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:13:05.0759338Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:13:05.0759338Z"}}' headers: cache-control: - no-cache @@ -239,7 +239,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:12:01 GMT + - Mon, 27 Jun 2022 07:13:06 GMT expires: - '-1' pragma: @@ -255,7 +255,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1198' status: code: 200 message: OK @@ -273,13 +273,13 @@ interactions: ParameterSetName: - -g --network-manager-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections?api-version=2022-01-01 response: body: string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection","name":"myTestScopeConnection","type":"Microsoft.Network/networkManagers/scopeConnections","properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000","connectionState":"Pending","description":"My - Test Network Manager Scope Connection Updated Description"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:11:59.8298138Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:11:59.8298138Z"}}],"nextLink":""}' + Test Network Manager Scope Connection Updated Description"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:13:05.0759338Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:13:05.0759338Z"}}],"nextLink":""}' headers: cache-control: - no-cache @@ -288,7 +288,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:12:03 GMT + - Mon, 27 Jun 2022 07:13:07 GMT expires: - '-1' pragma: @@ -322,9 +322,9 @@ interactions: ParameterSetName: - -g --network-manager-name --name --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/scopeConnections/myTestScopeConnection?api-version=2022-01-01 response: body: string: '' @@ -334,7 +334,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:12:05 GMT + - Mon, 27 Jun 2022 07:13:08 GMT expires: - '-1' pragma: @@ -364,11 +364,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_scope_connection000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -378,7 +378,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:12:10 GMT + - Mon, 27 Jun 2022 07:13:12 GMT expires: - '-1' pragma: @@ -390,7 +390,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14998' status: code: 200 message: OK diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_crud.yaml index 2d93d600811..1bee01b712d 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_crud.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_crud.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"12018efd-b782-410a-a876-e7518b088a45"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:49:09.4165637Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:49:09.4165637Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"aa174036-304f-4fd9-a075-2aa605878c5c"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:05:36.7311889Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:05:36.7311889Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:49:16 GMT + - Mon, 27 Jun 2022 07:05:39 GMT expires: - '-1' pragma: @@ -74,13 +74,13 @@ interactions: - --configuration-name --network-manager-name -g --description --delete-existing-ns-gs --display-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"b69a7df6-7948-44f5-a125-372742ffc634","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:49:17.9792471Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:49:17.9792471Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"abba3431-9387-4314-bb3d-93a28107f30b","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:05:41.2162375Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:05:41.2162375Z"}}' headers: cache-control: - no-cache @@ -89,7 +89,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:49:20 GMT + - Mon, 27 Jun 2022 07:05:41 GMT expires: - '-1' pragma: @@ -105,7 +105,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' status: code: 200 message: OK @@ -123,13 +123,13 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"0000b203-0000-3400-0000-624fa2b00000\"","properties":{"displayName":"","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"b69a7df6-7948-44f5-a125-372742ffc634","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:49:17.9792471Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:49:17.9792471Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"090085bd-0000-3400-0000-62b956c60000\"","properties":{"displayName":"","description":"A + sample policy","provisioningState":"Succeeded","resourceGuid":"abba3431-9387-4314-bb3d-93a28107f30b","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:05:41.2162375Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:05:41.2162375Z"}}' headers: cache-control: - no-cache @@ -138,7 +138,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:49:24 GMT + - Mon, 27 Jun 2022 07:05:43 GMT expires: - '-1' pragma: @@ -175,12 +175,12 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --description User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"b69a7df6-7948-44f5-a125-372742ffc634","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:49:17.9792471Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:49:25.7000900Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"abba3431-9387-4314-bb3d-93a28107f30b","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:05:41.2162375Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:05:45.0982520Z"}}' headers: cache-control: - no-cache @@ -189,7 +189,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:49:28 GMT + - Mon, 27 Jun 2022 07:05:45 GMT expires: - '-1' pragma: @@ -205,7 +205,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' status: code: 200 message: OK @@ -223,12 +223,12 @@ interactions: ParameterSetName: - --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations?api-version=2022-01-01 response: body: - string: '{"nextLink":"","value":[{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"0000e803-0000-3400-0000-624fa2b80000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"b69a7df6-7948-44f5-a125-372742ffc634","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:49:17.9792471Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:49:25.7000900Z"}}]}' + string: '{"nextLink":"","value":[{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"09008abd-0000-3400-0000-62b956ca0000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"abba3431-9387-4314-bb3d-93a28107f30b","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:05:41.2162375Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:05:45.0982520Z"}}]}' headers: cache-control: - no-cache @@ -237,7 +237,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:49:30 GMT + - Mon, 27 Jun 2022 07:05:49 GMT expires: - '-1' pragma: @@ -269,12 +269,12 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"0000e803-0000-3400-0000-624fa2b80000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"b69a7df6-7948-44f5-a125-372742ffc634","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T02:49:17.9792471Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T02:49:25.7000900Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"09008abd-0000-3400-0000-62b956ca0000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"abba3431-9387-4314-bb3d-93a28107f30b","applyOnNetworkIntentPolicyBasedServices":[]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:05:41.2162375Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:05:45.0982520Z"}}' headers: cache-control: - no-cache @@ -283,7 +283,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 02:49:33 GMT + - Mon, 27 Jun 2022 07:05:50 GMT expires: - '-1' pragma: @@ -317,9 +317,9 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01&force=true response: body: string: '' @@ -329,7 +329,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:49:37 GMT + - Mon, 27 Jun 2022 07:05:51 GMT expires: - '-1' pragma: @@ -359,11 +359,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -373,7 +373,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 02:49:45 GMT + - Mon, 27 Jun 2022 07:05:57 GMT expires: - '-1' pragma: diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_v2.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_v2.yaml index d57816c3986..04fbdf6502c 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_v2.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_admin_config_v2.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"b49c17a5-48c9-45ff-90c6-335a5662f4bf"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:15:04.7009534Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:15:04.7009534Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityAdmin","Connectivity"],"resourceGuid":"b8626638-dd3e-44ca-ab68-fac9caff9530"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:14:52.9692788Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:14:52.9692788Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:15:11 GMT + - Mon, 27 Jun 2022 07:14:55 GMT expires: - '-1' pragma: @@ -51,7 +51,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' status: code: 200 message: OK @@ -75,13 +75,13 @@ interactions: - --configuration-name --network-manager-name -g --description --delete-existing-ns-gs --display-name --apply-on User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"98e4ec48-8759-4d09-9b90-65b0827275f3","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:15:12.7535252Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:15:12.7535252Z"}}' + sample policy","provisioningState":"Succeeded","resourceGuid":"c492dd5d-6064-470e-9133-67b1450a5e7b","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:14:57.6427120Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:14:57.6427120Z"}}' headers: cache-control: - no-cache @@ -90,7 +90,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:15:13 GMT + - Mon, 27 Jun 2022 07:14:58 GMT expires: - '-1' pragma: @@ -124,13 +124,13 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --description --apply-on User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"00002c1d-0000-3400-0000-624fe1010000\"","properties":{"displayName":"","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"98e4ec48-8759-4d09-9b90-65b0827275f3","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:15:12.7535252Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:15:12.7535252Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"090081be-0000-3400-0000-62b958f20000\"","properties":{"displayName":"","description":"A + sample policy","provisioningState":"Succeeded","resourceGuid":"c492dd5d-6064-470e-9133-67b1450a5e7b","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:14:57.6427120Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:14:57.6427120Z"}}' headers: cache-control: - no-cache @@ -139,7 +139,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:15:14 GMT + - Mon, 27 Jun 2022 07:15:00 GMT expires: - '-1' pragma: @@ -176,12 +176,12 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --description --apply-on User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"98e4ec48-8759-4d09-9b90-65b0827275f3","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:15:12.7535252Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:15:16.4663390Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"c492dd5d-6064-470e-9133-67b1450a5e7b","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:14:57.6427120Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:15:01.1479924Z"}}' headers: cache-control: - no-cache @@ -190,7 +190,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:15:16 GMT + - Mon, 27 Jun 2022 07:15:01 GMT expires: - '-1' pragma: @@ -206,7 +206,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1197' status: code: 200 message: OK @@ -224,12 +224,12 @@ interactions: ParameterSetName: - --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations?api-version=2022-01-01 response: body: - string: '{"nextLink":"","value":[{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"00002d1d-0000-3400-0000-624fe1050000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"98e4ec48-8759-4d09-9b90-65b0827275f3","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:15:12.7535252Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:15:16.4663390Z"}}]}' + string: '{"nextLink":"","value":[{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"090084be-0000-3400-0000-62b958f60000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"c492dd5d-6064-470e-9133-67b1450a5e7b","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:14:57.6427120Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:15:01.1479924Z"}}]}' headers: cache-control: - no-cache @@ -238,7 +238,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:15:21 GMT + - Mon, 27 Jun 2022 07:15:03 GMT expires: - '-1' pragma: @@ -270,12 +270,12 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01 response: body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"00002d1d-0000-3400-0000-624fe1050000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"98e4ec48-8759-4d09-9b90-65b0827275f3","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-08T07:15:12.7535252Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T07:15:16.4663390Z"}}' + string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityAdminConfigurations","etag":"\"090084be-0000-3400-0000-62b958f60000\"","properties":{"displayName":"","description":"test_description","provisioningState":"Succeeded","resourceGuid":"c492dd5d-6064-470e-9133-67b1450a5e7b","applyOnNetworkIntentPolicyBasedServices":["None"]},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T07:14:57.6427120Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T07:15:01.1479924Z"}}' headers: cache-control: - no-cache @@ -284,7 +284,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 08 Apr 2022 07:15:22 GMT + - Mon, 27 Jun 2022 07:15:05 GMT expires: - '-1' pragma: @@ -318,9 +318,9 @@ interactions: ParameterSetName: - --configuration-name --network-manager-name -g --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityAdminConfigurations/myTestSecurityConfig?api-version=2022-01-01&force=true response: body: string: '' @@ -330,7 +330,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:15:23 GMT + - Mon, 27 Jun 2022 07:15:07 GMT expires: - '-1' pragma: @@ -360,11 +360,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_admin_config_v2000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -374,7 +374,7 @@ interactions: content-length: - '0' date: - - Fri, 08 Apr 2022 07:15:31 GMT + - Mon, 27 Jun 2022 07:15:13 GMT expires: - '-1' pragma: @@ -386,7 +386,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14999' + - '14997' status: code: 200 message: OK diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_user_config_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_user_config_crud.yaml deleted file mode 100644 index b5b84f60170..00000000000 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_security_user_config_crud.yaml +++ /dev/null @@ -1,356 +0,0 @@ -interactions: -- request: - body: '{"location": "eastus2euap", "properties": {"displayName": "TestNetworkManager", - "description": "My Test Network Manager", "networkManagerScopes": {"subscriptions": - ["/subscriptions/00000000-0000-0000-0000-000000000000"]}, "networkManagerScopeAccesses": - ["SecurityUser", "Connectivity"]}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager create - Connection: - - keep-alive - Content-Length: - - '287' - Content-Type: - - application/json - ParameterSetName: - - --name --description --display-name --network-manager-scope-accesses --network-manager-scopes - -l --resource-group - User-Agent: - - AZURECLI/2.28.1 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2021-02-01-preview - response: - body: - string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"TestNetworkManager","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["SecurityUser","Connectivity"],"resourceGuid":"cb68daca-6660-49f2-b8be-e43b4f7bcc0a"},"systemData":{"createdBy":"v-kaisun@microsoft.com","createdByType":"User","createdAt":"2021-09-29T06:24:32.8037166Z","lastModifiedBy":"v-kaisun@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-09-29T06:24:32.8037166Z"}}' - headers: - cache-control: - - no-cache - content-length: - - '923' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 29 Sep 2021 06:24:39 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: '{"properties": {"displayName": "MyTestConfig", "description": "A sample - policy", "securityType": "UserPolicy", "deleteExistingNSGs": "True"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager security-user-config create - Connection: - - keep-alive - Content-Length: - - '141' - Content-Type: - - application/json - ParameterSetName: - - --configuration-name --network-manager-name -g --description --delete-existing-ns-gs - --security-type --display-name - User-Agent: - - AZURECLI/2.28.1 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig?api-version=2021-02-01-preview - response: - body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityUserConfigurations","etag":"","properties":{"displayName":"MyTestConfig","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"091a9f06-61a2-4d38-b11b-dc32f73fadc7"},"systemData":{"createdBy":"v-kaisun@microsoft.com","createdByType":"User","createdAt":"2021-09-29T06:24:40.6503706Z","lastModifiedBy":"v-kaisun@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-09-29T06:24:40.6503706Z"}}' - headers: - cache-control: - - no-cache - content-length: - - '770' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 29 Sep 2021 06:24:42 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager security-user-config update - Connection: - - keep-alive - ParameterSetName: - - --configuration-name --network-manager-name -g --description - User-Agent: - - AZURECLI/2.28.1 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig?api-version=2021-02-01-preview - response: - body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityUserConfigurations","etag":"\"14003cac-0000-3400-0000-615406aa0000\"","properties":{"displayName":"MyTestConfig","description":"A - sample policy","provisioningState":"Succeeded","resourceGuid":"091a9f06-61a2-4d38-b11b-dc32f73fadc7"},"systemData":{"createdBy":"v-kaisun@microsoft.com","createdByType":"User","createdAt":"09/29/2021 - 06:24:40","lastModifiedBy":"v-kaisun@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"09/29/2021 - 06:24:40"}}' - headers: - cache-control: - - no-cache - content-length: - - '792' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 29 Sep 2021 06:24:46 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"properties": {"displayName": "MyTestConfig", "description": "test_description"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager security-user-config update - Connection: - - keep-alive - Content-Length: - - '82' - Content-Type: - - application/json - ParameterSetName: - - --configuration-name --network-manager-name -g --description - User-Agent: - - AZURECLI/2.28.1 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig?api-version=2021-02-01-preview - response: - body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityUserConfigurations","etag":"","properties":{"displayName":"MyTestConfig","description":"test_description","provisioningState":"Succeeded","resourceGuid":"091a9f06-61a2-4d38-b11b-dc32f73fadc7"},"systemData":{"createdBy":"v-kaisun@microsoft.com","createdByType":"User","createdAt":"09/29/2021 - 06:24:40","lastModifiedBy":"v-kaisun@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-09-29T06:24:47.6814856Z"}}' - headers: - cache-control: - - no-cache - content-length: - - '762' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 29 Sep 2021 06:24:49 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager security-user-config list - Connection: - - keep-alive - ParameterSetName: - - --network-manager-name -g - User-Agent: - - AZURECLI/2.28.1 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations?api-version=2021-02-01-preview - response: - body: - string: '{"nextLink":"","value":[{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityUserConfigurations","etag":"\"14004fac-0000-3400-0000-615406b20000\"","properties":{"displayName":"MyTestConfig","description":"test_description","provisioningState":"Succeeded","resourceGuid":"091a9f06-61a2-4d38-b11b-dc32f73fadc7"},"systemData":{"createdBy":"v-kaisun@microsoft.com","createdByType":"User","createdAt":"09/29/2021 - 06:24:40","lastModifiedBy":"v-kaisun@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"09/29/2021 - 06:24:47"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '819' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 29 Sep 2021 06:24:53 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager security-user-config show - Connection: - - keep-alive - ParameterSetName: - - --configuration-name --network-manager-name -g - User-Agent: - - AZURECLI/2.28.1 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig?api-version=2021-02-01-preview - response: - body: - string: '{"name":"myTestSecurityConfig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig","type":"Microsoft.Network/networkManagers/securityUserConfigurations","etag":"\"14004fac-0000-3400-0000-615406b20000\"","properties":{"displayName":"MyTestConfig","description":"test_description","provisioningState":"Succeeded","resourceGuid":"091a9f06-61a2-4d38-b11b-dc32f73fadc7"},"systemData":{"createdBy":"v-kaisun@microsoft.com","createdByType":"User","createdAt":"09/29/2021 - 06:24:40","lastModifiedBy":"v-kaisun@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"09/29/2021 - 06:24:47"}}' - headers: - cache-control: - - no-cache - content-length: - - '793' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 29 Sep 2021 06:24:54 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - network manager security-user-config delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - --configuration-name --network-manager-name -g --yes - User-Agent: - - AZURECLI/2.28.1 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_security_user_config000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/securityUserConfigurations/myTestSecurityConfig?api-version=2021-02-01-preview - response: - body: - string: '' - headers: - cache-control: - - no-cache - content-length: - - '0' - date: - - Wed, 29 Sep 2021 06:24:55 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - status: - code: 200 - message: OK -version: 1 diff --git a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_static_member_crud.yaml b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_static_member_crud.yaml index bd3af7c6e0b..ebe7451cf60 100644 --- a/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_static_member_crud.yaml +++ b/src/network-manager/azext_network_manager/tests/latest/recordings/test_network_manager_static_member_crud.yaml @@ -20,13 +20,13 @@ interactions: - --name --description --display-name --scope-accesses --network-manager-scopes -l --resource-group User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkManager","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager","location":"eastus2euap","type":"Microsoft.Network/networkManagers","tags":{},"etag":"","properties":{"displayName":"","description":"My - Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"multiTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"4c90eaab-5579-4f4e-bb1c-2e9ffee5416c"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-10T05:01:50.1242920Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-10T05:01:50.1242920Z"}}' + Test Network Manager","networkManagerScopes":{"managementGroups":[],"subscriptions":["/subscriptions/00000000-0000-0000-0000-000000000000"],"crossTenantScopes":[]},"provisioningState":"Succeeded","networkManagerScopeAccesses":["Connectivity"],"resourceGuid":"e9f52191-a054-40c5-80ff-c3cdc5e0cbea"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:58:28.5670273Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:58:28.5670273Z"}}' headers: cache-control: - no-cache @@ -35,7 +35,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 10 Apr 2022 05:01:59 GMT + - Mon, 27 Jun 2022 06:58:31 GMT expires: - '-1' pragma: @@ -56,7 +56,7 @@ interactions: code: 200 message: OK - request: - body: '{"properties": {"description": "A sample group", "memberType": "Microsoft.Network/virtualNetworks"}}' + body: '{"properties": {"description": "A sample group"}}' headers: Accept: - application/json @@ -67,28 +67,28 @@ interactions: Connection: - keep-alive Content-Length: - - '100' + - '49' Content-Type: - application/json ParameterSetName: - - --name --network-manager-name --description --display-name --member-type -g + - --name --network-manager-name --description -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01 response: body: string: '{"name":"TestNetworkGroup","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup","type":"Microsoft.Network/networkManagers/networkGroups","etag":"","properties":{"displayName":"","description":"A - sample group","groupMembers":[],"conditionalMembership":"","provisioningState":"Succeeded","resourceGuid":"b370464b-39a9-46cc-84ef-cabe79ec31cd"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-10T05:02:00.2549731Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-10T05:02:00.2549731Z"}}' + sample group","provisioningState":"Succeeded","resourceGuid":"69ba403f-e40c-4abe-ae17-727664d88a61"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:58:32.4822543Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:58:32.4822543Z"}}' headers: cache-control: - no-cache content-length: - - '739' + - '694' content-type: - application/json; charset=utf-8 date: - - Sun, 10 Apr 2022 05:02:04 GMT + - Mon, 27 Jun 2022 06:58:34 GMT expires: - '-1' pragma: @@ -126,12 +126,12 @@ interactions: ParameterSetName: - --name --network-group-name --network-manager-name --resource-id -g User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-01-01 response: body: - string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-10T05:02:05.2292140Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-10T05:02:05.2292140Z"}}' + string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:58:35.4168369Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:58:35.4168369Z"}}' headers: cache-control: - no-cache @@ -140,7 +140,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 10 Apr 2022 05:02:08 GMT + - Mon, 27 Jun 2022 06:58:35 GMT expires: - '-1' pragma: @@ -174,12 +174,12 @@ interactions: ParameterSetName: - -g --name --network-group-name --network-manager-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-01-01 response: body: - string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"\"000046f5-0000-3400-0000-625264d00000\"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-10T05:02:05.2292140Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-10T05:02:05.2292140Z"}}' + string: '{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"\"090021bd-0000-3400-0000-62b9551c0000\"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Updating"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:58:35.4168369Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:58:35.4168369Z"}}' headers: cache-control: - no-cache @@ -188,7 +188,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 10 Apr 2022 05:02:12 GMT + - Mon, 27 Jun 2022 06:58:37 GMT expires: - '-1' pragma: @@ -220,12 +220,12 @@ interactions: ParameterSetName: - -g --network-group-name --network-manager-name User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers?api-version=2022-01-01 response: body: - string: '{"nextLink":"","value":[{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Succeeded"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-04-10T05:02:05.2292140Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-10T05:02:05.2292140Z"}}]}' + string: '{"nextLink":"","value":[{"name":"TestStaticMember","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember","type":"Microsoft.Network/networkManagers/networkGroups/staticMembers","etag":"","properties":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/virtualnetworks/clitest.vn000002","provisioningState":"Succeeded"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-06-27T06:58:35.4168369Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-27T06:58:35.4168369Z"}}]}' headers: cache-control: - no-cache @@ -234,7 +234,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Sun, 10 Apr 2022 05:02:15 GMT + - Mon, 27 Jun 2022 06:58:39 GMT expires: - '-1' pragma: @@ -268,9 +268,9 @@ interactions: ParameterSetName: - -g --name --network-group-name --network-manager-name --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup/staticMembers/TestStaticMember?api-version=2022-01-01 response: body: string: '' @@ -280,7 +280,7 @@ interactions: content-length: - '0' date: - - Sun, 10 Apr 2022 05:02:21 GMT + - Mon, 27 Jun 2022 06:58:40 GMT expires: - '-1' pragma: @@ -312,9 +312,9 @@ interactions: ParameterSetName: - -g --name --network-manager-name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-02-01-preview&force=true + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager/networkGroups/TestNetworkGroup?api-version=2022-01-01&force=true response: body: string: '' @@ -324,7 +324,7 @@ interactions: content-length: - '0' date: - - Sun, 10 Apr 2022 05:02:25 GMT + - Mon, 27 Jun 2022 06:58:42 GMT expires: - '-1' pragma: @@ -354,11 +354,11 @@ interactions: Content-Length: - '0' ParameterSetName: - - --resource-group --name --yes + - --resource-group --name --force --yes User-Agent: - - AZURECLI/2.31.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-network/1.0.0b1 Python/3.8.1 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-02-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_network_manager_static_member000001/providers/Microsoft.Network/networkManagers/TestNetworkManager?api-version=2022-01-01&force=true response: body: string: '' @@ -368,7 +368,7 @@ interactions: content-length: - '0' date: - - Sun, 10 Apr 2022 05:02:33 GMT + - Mon, 27 Jun 2022 06:58:48 GMT expires: - '-1' pragma: diff --git a/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py b/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py index fcaf2398d56..ca65aed59a1 100644 --- a/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py +++ b/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py @@ -48,7 +48,7 @@ def test_network_manager_crud(self, resource_group): self.cmd('network manager list --resource-group {rg}') - self.cmd('network manager delete --resource-group {rg} --name {name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_group', location='eastus2euap') def test_network_manager_group_crud(self, resource_group): @@ -58,7 +58,6 @@ def test_network_manager_group_crud(self, resource_group): 'manager_name': 'TestNetworkManager', 'description': '"A sample group"', 'display_name': 'MyNetworkGroup', - 'member_type': 'Microsoft.Network/virtualNetworks', 'sub': '/subscriptions/{}'.format(self.get_subscription_id()) }) @@ -70,13 +69,13 @@ def test_network_manager_group_crud(self, resource_group): '--resource-group {rg}') self.cmd('network manager group create --name {name} --network-manager-name {manager_name} ' - '--description {description} --display-name {display_name} --member-type {member_type} -g {rg} ') + '--description {description} -g {rg} ') self.cmd('network manager group update -g {rg} --name {name} --network-manager-name {manager_name} --description "Desc changed."') self.cmd('network manager group show -g {rg} --name {name} --network-manager-name {manager_name}') self.cmd('network manager group list -g {rg} --network-manager-name {manager_name}') self.cmd('network manager group delete -g {rg} --name {name} --network-manager-name {manager_name} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_static_member', location='eastus2euap') @VirtualNetworkPreparer() @@ -87,7 +86,6 @@ def test_network_manager_static_member_crud(self, virtual_network, resource_grou 'manager_name': 'TestNetworkManager', 'description': '"A sample group"', 'display_name': 'MyNetworkGroup', - 'member_type': 'Microsoft.Network/virtualNetworks', 'sub': '/subscriptions/{}'.format(self.get_subscription_id()), 'virtual_network': virtual_network }) @@ -99,7 +97,7 @@ def test_network_manager_static_member_crud(self, virtual_network, resource_grou '--resource-group {rg}') self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' - '--display-name {display_name} --member-type {member_type} -g {rg} ') + '-g {rg} ') self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg}') @@ -111,7 +109,7 @@ def test_network_manager_static_member_crud(self, virtual_network, resource_grou self.cmd('network manager group static-member delete -g {rg} --name {name} --network-group-name {group_name} --network-manager-name {manager_name} --yes') self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @unittest.skip('skip') @ResourceGroupPreparer(name_prefix='test_network_manager_security_user_config', location='eastus2euap') @@ -150,12 +148,9 @@ def test_network_manager_security_admin_config_crud(self, resource_group): 'sub': '/subscriptions/{}'.format(self.get_subscription_id()), }) - self.cmd('network manager create --name {manager_name} --description "My Test Network Manager" --display-name "TestNetworkManager" ' - '--scope-accesses "SecurityAdmin" "Connectivity" ' - '--network-manager-scopes ' - ' subscriptions={sub} ' - '-l eastus2euap ' - '--resource-group {rg}') + self.cmd('network manager create --name {manager_name} --description "My Test Network Manager" ' + '--display-name "TestNetworkManager" --scope-accesses "SecurityAdmin" "Connectivity" ' + '--network-manager-scopes subscriptions={sub} -l eastus2euap --resource-group {rg}') self.cmd('network manager security-admin-config create --configuration-name {name} --network-manager-name {manager_name} -g {rg} ' '--description {description} --delete-existing-ns-gs true --display-name MyTestConfig') @@ -173,7 +168,7 @@ def test_network_manager_security_admin_config_crud(self, resource_group): # self.cmd('network manager post-commit --network-manager-name {manager_name} --commit-type "SecurityAdmin" --target-locations "eastus2euap" -g {rg} ') self.cmd('network manager security-admin-config delete --configuration-name {name} --network-manager-name {manager_name} -g {rg} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_admin_rule_crud', location='eastus2euap') @VirtualNetworkPreparer() @@ -200,7 +195,7 @@ def test_network_manager_admin_rule_crud(self, virtual_network, resource_group): '--resource-group {rg}') self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' - ' --display-name ASampleGroup --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') + ' -g {rg} ') self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') @@ -219,11 +214,11 @@ def test_network_manager_admin_rule_crud(self, virtual_network, resource_group): self.cmd('network manager security-admin-config rule-collection rule update -g {rg} --network-manager-name {manager_name} --configuration-name {config_name} --rule-collection-name {collection_name} --rule-name {rule_name} ' '--access "Deny"') self.cmd('network manager security-admin-config rule-collection rule list -g {rg} --network-manager-name {manager_name} --configuration-name {config_name} --rule-collection-name {collection_name}') - self.cmd('network manager security-admin-config rule-collection rule delete -g {rg} --network-manager-name {manager_name} --configuration-name {config_name} --rule-collection-name {collection_name} --rule-name {rule_name} --yes') + self.cmd('network manager security-admin-config rule-collection rule delete -g {rg} --network-manager-name {manager_name} --configuration-name {config_name} --rule-collection-name {collection_name} --rule-name {rule_name} --force --yes') self.cmd('network manager security-admin-config delete --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} --force --yes') self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_admin_rule_collection_crud', location='eastus2euap') @@ -249,7 +244,7 @@ def test_network_manager_admin_rule_collection_crud(self, virtual_network, resou '--resource-group {rg}') self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' - '--display-name ASampleGroup --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') + ' -g {rg} ') self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') @@ -268,10 +263,10 @@ def test_network_manager_admin_rule_collection_crud(self, virtual_network, resou self.cmd('network manager security-admin-config rule-collection list -g {rg} --configuration-name {config_name} --network-manager-name {manager_name}') - self.cmd('network manager security-admin-config rule-collection delete -g {rg} --configuration-name {config_name} --network-manager-name {manager_name} --rule-collection-name {collection_name} --yes') + self.cmd('network manager security-admin-config rule-collection delete -g {rg} --configuration-name {config_name} --network-manager-name {manager_name} --rule-collection-name {collection_name} --force --yes') self.cmd('network manager security-admin-config delete --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} --force --yes') self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @unittest.skip('skip') @ResourceGroupPreparer(name_prefix='test_network_manager_user_rule_crud', location='eastus2euap') @@ -296,7 +291,7 @@ def test_network_manager_user_rule_crud(self, virtual_network, resource_group): '--resource-group {rg}') self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' - '--display-name ASampleGroup --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') + ' -g {rg} ') self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') @@ -339,7 +334,7 @@ def test_network_manager_user_rule_collection_crud(self, virtual_network, resour '--resource-group {rg}') self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' - '--display-name ASampleGroup --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') + ' --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') @@ -357,7 +352,7 @@ def test_network_manager_user_rule_collection_crud(self, virtual_network, resour self.cmd('network manager security-user-config rule-collection list -g {rg} --configuration-name {config_name} --network-manager-name {manager_name}') self.cmd('network manager security-user-config rule-collection delete -g {rg} --configuration-name {config_name} --network-manager-name {manager_name} --rule-collection-name {collection_name} --yes') self.cmd('network manager security-user-config delete --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} --yes') - self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --yes') + self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_connect_config_crud', location='eastus2euap') @VirtualNetworkPreparer() @@ -380,7 +375,7 @@ def test_network_manager_connect_config_crud(self, virtual_network, resource_gro '--resource-group {rg}') self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' - '--display-name ASampleGroup --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') + ' -g {rg} ') self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') @@ -393,10 +388,10 @@ def test_network_manager_connect_config_crud(self, virtual_network, resource_gro self.cmd('network manager connect-config show --configuration-name {config_name} --network-manager-name {manager_name} -g {rg}') self.cmd('network manager connect-config update --configuration-name {config_name} --network-manager-name {manager_name} -g {rg}') self.cmd('network manager connect-config list --network-manager-name {manager_name} -g {rg}') - self.cmd('network manager connect-config delete --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} --yes') + self.cmd('network manager connect-config delete --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} --force --yes') self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_list_queries', location='eastus2euap') @@ -420,13 +415,14 @@ def test_network_manager_list_queries(self, virtual_network, resource_group): '--resource-group {rg}') self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' - '--display-name ASampleGroup --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') + ' -g {rg} ') self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') self.cmd('network manager list-deploy-status --network-manager-name {manager_name} --deployment-types "Connectivity" --regions "eastus2euap" --resource-group {rg}') - self.cmd('network manager group list-effect-vnet --network-group-name {group_name} --network-manager-name {manager_name} --resource-group {rg}') + # These commands are not provided in api version 2022-01-01 + # self.cmd('network manager group list-effect-vnet --network-group-name {group_name} --network-manager-name {manager_name} --resource-group {rg}') # self.cmd('network manager list-effect-vnet --network-manager-name {manager_name} --resource-group {rg}') self.cmd('network manager list-active-connectivity-config --network-manager-name {manager_name} --resource-group {rg} --regions eastus westus') self.cmd('network manager list-effective-connectivity-config --virtual-network-name {virtual_network} -g {rg}') @@ -436,7 +432,7 @@ def test_network_manager_list_queries(self, virtual_network, resource_group): # self.cmd('network manager list-active-security-user-rule --network-manager-name {manager_name} -g {rg} --region eastus2euap') self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_scope_connection', location='eastus2euap') @@ -469,7 +465,7 @@ def test_network_manager_scope_connection(self, resource_group): self.cmd('network manager scope-connection delete -g {rg} --network-manager-name {manager_name} --name {connection_name} --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_connection_subscription', location='eastus2euap') def test_network_manager_connection_subscription(self, resource_group): @@ -497,7 +493,7 @@ def test_network_manager_connection_subscription(self, resource_group): self.cmd('network manager connection subscription list') self.cmd('network manager connection subscription delete --connection-name {connection_name} --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') @ResourceGroupPreparer(name_prefix='test_network_manager_security_admin_config_v2', location='eastus2euap') def test_network_manager_security_admin_config_v2(self, resource_group): @@ -527,7 +523,7 @@ def test_network_manager_security_admin_config_v2(self, resource_group): self.cmd('network manager security-admin-config show --configuration-name {name} --network-manager-name {manager_name} -g {rg}') self.cmd('network manager security-admin-config delete --configuration-name {name} --network-manager-name {manager_name} -g {rg} --force --yes') - self.cmd('network manager delete --resource-group {rg} --name {manager_name} --yes') + self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') # @ResourceGroupPreparer(name_prefix='test_network_manager_connection_crud', location='eastus2euap') # def test_network_manager_scope_connection(self, resource_group): # diff --git a/src/network-manager/azext_network_manager/vendored_sdks/_configuration.py b/src/network-manager/azext_network_manager/vendored_sdks/_configuration.py index 046d7395fae..f082cd3af34 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/_configuration.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/_configuration.py @@ -30,9 +30,6 @@ class NetworkManagementClientConfiguration(Configuration): # pylint: disable=to :param subscription_id: The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2022-02-01-preview". Note that overriding - this default value may result in unsupported behavior. - :paramtype api_version: str """ def __init__( @@ -42,8 +39,6 @@ def __init__( **kwargs: Any ) -> None: super(NetworkManagementClientConfiguration, self).__init__(**kwargs) - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: @@ -51,7 +46,6 @@ def __init__( self.credential = credential self.subscription_id = subscription_id - self.api_version = api_version self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-network/{}'.format(VERSION)) self._configure(**kwargs) diff --git a/src/network-manager/azext_network_manager/vendored_sdks/_network_management_client.py b/src/network-manager/azext_network_manager/vendored_sdks/_network_management_client.py index 7a4e3001556..276dd834921 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/_network_management_client.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/_network_management_client.py @@ -16,7 +16,7 @@ from . import models from ._configuration import NetworkManagementClientConfiguration -from .operations import AdminRuleCollectionsOperations, AdminRulesOperations, ConnectivityConfigurationsOperations, EffectiveVirtualNetworksOperations, ListEffectiveVirtualNetworksOperations, ManagementGroupNetworkManagerConnectionsOperations, NetworkGroupsOperations, NetworkManagementClientOperationsMixin, NetworkManagerCommitsOperations, NetworkManagerDeploymentStatusOperations, NetworkManagersOperations, ScopeConnectionsOperations, SecurityAdminConfigurationsOperations, SecurityUserConfigurationsOperations, StaticMembersOperations, SubscriptionNetworkManagerConnectionsOperations, UserRuleCollectionsOperations, UserRulesOperations +from .operations import AdminRuleCollectionsOperations, AdminRulesOperations, ApplicationGatewayPrivateEndpointConnectionsOperations, ApplicationGatewayPrivateLinkResourcesOperations, ApplicationGatewaysOperations, ApplicationSecurityGroupsOperations, AvailableDelegationsOperations, AvailableEndpointServicesOperations, AvailablePrivateEndpointTypesOperations, AvailableResourceGroupDelegationsOperations, AvailableServiceAliasesOperations, AzureFirewallFqdnTagsOperations, AzureFirewallsOperations, BastionHostsOperations, BgpServiceCommunitiesOperations, ConfigurationPolicyGroupsOperations, ConnectionMonitorsOperations, ConnectivityConfigurationsOperations, CustomIPPrefixesOperations, DdosCustomPoliciesOperations, DdosProtectionPlansOperations, DefaultSecurityRulesOperations, DscpConfigurationOperations, ExpressRouteCircuitAuthorizationsOperations, ExpressRouteCircuitConnectionsOperations, ExpressRouteCircuitPeeringsOperations, ExpressRouteCircuitsOperations, ExpressRouteConnectionsOperations, ExpressRouteCrossConnectionPeeringsOperations, ExpressRouteCrossConnectionsOperations, ExpressRouteGatewaysOperations, ExpressRouteLinksOperations, ExpressRoutePortAuthorizationsOperations, ExpressRoutePortsLocationsOperations, ExpressRoutePortsOperations, ExpressRouteProviderPortsLocationOperations, ExpressRouteServiceProvidersOperations, FirewallPoliciesOperations, FirewallPolicyIdpsSignaturesFilterValuesOperations, FirewallPolicyIdpsSignaturesOperations, FirewallPolicyIdpsSignaturesOverridesOperations, FirewallPolicyRuleCollectionGroupsOperations, FlowLogsOperations, HubRouteTablesOperations, HubVirtualNetworkConnectionsOperations, InboundNatRulesOperations, InboundSecurityRuleOperations, IpAllocationsOperations, IpGroupsOperations, LoadBalancerBackendAddressPoolsOperations, LoadBalancerFrontendIPConfigurationsOperations, LoadBalancerLoadBalancingRulesOperations, LoadBalancerNetworkInterfacesOperations, LoadBalancerOutboundRulesOperations, LoadBalancerProbesOperations, LoadBalancersOperations, LocalNetworkGatewaysOperations, ManagementGroupNetworkManagerConnectionsOperations, NatGatewaysOperations, NatRulesOperations, NetworkGroupsOperations, NetworkInterfaceIPConfigurationsOperations, NetworkInterfaceLoadBalancersOperations, NetworkInterfaceTapConfigurationsOperations, NetworkInterfacesOperations, NetworkManagementClientOperationsMixin, NetworkManagerCommitsOperations, NetworkManagerDeploymentStatusOperations, NetworkManagersOperations, NetworkProfilesOperations, NetworkSecurityGroupsOperations, NetworkVirtualAppliancesOperations, NetworkWatchersOperations, Operations, P2SVpnGatewaysOperations, PacketCapturesOperations, PeerExpressRouteCircuitConnectionsOperations, PrivateDnsZoneGroupsOperations, PrivateEndpointsOperations, PrivateLinkServicesOperations, PublicIPAddressesOperations, PublicIPPrefixesOperations, ResourceNavigationLinksOperations, RouteFilterRulesOperations, RouteFiltersOperations, RouteTablesOperations, RoutesOperations, RoutingIntentOperations, ScopeConnectionsOperations, SecurityAdminConfigurationsOperations, SecurityPartnerProvidersOperations, SecurityRulesOperations, ServiceAssociationLinksOperations, ServiceEndpointPoliciesOperations, ServiceEndpointPolicyDefinitionsOperations, ServiceTagInformationOperations, ServiceTagsOperations, StaticMembersOperations, SubnetsOperations, SubscriptionNetworkManagerConnectionsOperations, UsagesOperations, VirtualApplianceSitesOperations, VirtualApplianceSkusOperations, VirtualHubBgpConnectionOperations, VirtualHubBgpConnectionsOperations, VirtualHubIpConfigurationOperations, VirtualHubRouteTableV2SOperations, VirtualHubsOperations, VirtualNetworkGatewayConnectionsOperations, VirtualNetworkGatewayNatRulesOperations, VirtualNetworkGatewaysOperations, VirtualNetworkPeeringsOperations, VirtualNetworkTapsOperations, VirtualNetworksOperations, VirtualRouterPeeringsOperations, VirtualRoutersOperations, VirtualWansOperations, VpnConnectionsOperations, VpnGatewaysOperations, VpnLinkConnectionsOperations, VpnServerConfigurationsAssociatedWithVirtualWanOperations, VpnServerConfigurationsOperations, VpnSiteLinkConnectionsOperations, VpnSiteLinksOperations, VpnSitesConfigurationOperations, VpnSitesOperations, WebApplicationFirewallPoliciesOperations, WebCategoriesOperations if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports @@ -25,57 +25,369 @@ class NetworkManagementClient(NetworkManagementClientOperationsMixin): # pylint: disable=too-many-instance-attributes """Network Client. + :ivar application_gateways: ApplicationGatewaysOperations operations + :vartype application_gateways: + azure.mgmt.network.v2022_01_01.operations.ApplicationGatewaysOperations + :ivar application_gateway_private_link_resources: + ApplicationGatewayPrivateLinkResourcesOperations operations + :vartype application_gateway_private_link_resources: + azure.mgmt.network.v2022_01_01.operations.ApplicationGatewayPrivateLinkResourcesOperations + :ivar application_gateway_private_endpoint_connections: + ApplicationGatewayPrivateEndpointConnectionsOperations operations + :vartype application_gateway_private_endpoint_connections: + azure.mgmt.network.v2022_01_01.operations.ApplicationGatewayPrivateEndpointConnectionsOperations + :ivar application_security_groups: ApplicationSecurityGroupsOperations operations + :vartype application_security_groups: + azure.mgmt.network.v2022_01_01.operations.ApplicationSecurityGroupsOperations + :ivar available_delegations: AvailableDelegationsOperations operations + :vartype available_delegations: + azure.mgmt.network.v2022_01_01.operations.AvailableDelegationsOperations + :ivar available_resource_group_delegations: AvailableResourceGroupDelegationsOperations + operations + :vartype available_resource_group_delegations: + azure.mgmt.network.v2022_01_01.operations.AvailableResourceGroupDelegationsOperations + :ivar available_service_aliases: AvailableServiceAliasesOperations operations + :vartype available_service_aliases: + azure.mgmt.network.v2022_01_01.operations.AvailableServiceAliasesOperations + :ivar azure_firewalls: AzureFirewallsOperations operations + :vartype azure_firewalls: azure.mgmt.network.v2022_01_01.operations.AzureFirewallsOperations + :ivar azure_firewall_fqdn_tags: AzureFirewallFqdnTagsOperations operations + :vartype azure_firewall_fqdn_tags: + azure.mgmt.network.v2022_01_01.operations.AzureFirewallFqdnTagsOperations + :ivar web_categories: WebCategoriesOperations operations + :vartype web_categories: azure.mgmt.network.v2022_01_01.operations.WebCategoriesOperations + :ivar bastion_hosts: BastionHostsOperations operations + :vartype bastion_hosts: azure.mgmt.network.v2022_01_01.operations.BastionHostsOperations + :ivar network_interfaces: NetworkInterfacesOperations operations + :vartype network_interfaces: + azure.mgmt.network.v2022_01_01.operations.NetworkInterfacesOperations + :ivar public_ip_addresses: PublicIPAddressesOperations operations + :vartype public_ip_addresses: + azure.mgmt.network.v2022_01_01.operations.PublicIPAddressesOperations + :ivar custom_ip_prefixes: CustomIPPrefixesOperations operations + :vartype custom_ip_prefixes: + azure.mgmt.network.v2022_01_01.operations.CustomIPPrefixesOperations + :ivar ddos_custom_policies: DdosCustomPoliciesOperations operations + :vartype ddos_custom_policies: + azure.mgmt.network.v2022_01_01.operations.DdosCustomPoliciesOperations + :ivar ddos_protection_plans: DdosProtectionPlansOperations operations + :vartype ddos_protection_plans: + azure.mgmt.network.v2022_01_01.operations.DdosProtectionPlansOperations + :ivar dscp_configuration: DscpConfigurationOperations operations + :vartype dscp_configuration: + azure.mgmt.network.v2022_01_01.operations.DscpConfigurationOperations + :ivar available_endpoint_services: AvailableEndpointServicesOperations operations + :vartype available_endpoint_services: + azure.mgmt.network.v2022_01_01.operations.AvailableEndpointServicesOperations + :ivar express_route_circuit_authorizations: ExpressRouteCircuitAuthorizationsOperations + operations + :vartype express_route_circuit_authorizations: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteCircuitAuthorizationsOperations + :ivar express_route_circuit_peerings: ExpressRouteCircuitPeeringsOperations operations + :vartype express_route_circuit_peerings: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteCircuitPeeringsOperations + :ivar express_route_circuit_connections: ExpressRouteCircuitConnectionsOperations operations + :vartype express_route_circuit_connections: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteCircuitConnectionsOperations + :ivar peer_express_route_circuit_connections: PeerExpressRouteCircuitConnectionsOperations + operations + :vartype peer_express_route_circuit_connections: + azure.mgmt.network.v2022_01_01.operations.PeerExpressRouteCircuitConnectionsOperations + :ivar express_route_circuits: ExpressRouteCircuitsOperations operations + :vartype express_route_circuits: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteCircuitsOperations + :ivar express_route_service_providers: ExpressRouteServiceProvidersOperations operations + :vartype express_route_service_providers: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteServiceProvidersOperations + :ivar express_route_cross_connections: ExpressRouteCrossConnectionsOperations operations + :vartype express_route_cross_connections: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteCrossConnectionsOperations + :ivar express_route_cross_connection_peerings: ExpressRouteCrossConnectionPeeringsOperations + operations + :vartype express_route_cross_connection_peerings: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteCrossConnectionPeeringsOperations + :ivar express_route_ports_locations: ExpressRoutePortsLocationsOperations operations + :vartype express_route_ports_locations: + azure.mgmt.network.v2022_01_01.operations.ExpressRoutePortsLocationsOperations + :ivar express_route_ports: ExpressRoutePortsOperations operations + :vartype express_route_ports: + azure.mgmt.network.v2022_01_01.operations.ExpressRoutePortsOperations + :ivar express_route_links: ExpressRouteLinksOperations operations + :vartype express_route_links: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteLinksOperations + :ivar express_route_port_authorizations: ExpressRoutePortAuthorizationsOperations operations + :vartype express_route_port_authorizations: + azure.mgmt.network.v2022_01_01.operations.ExpressRoutePortAuthorizationsOperations + :ivar firewall_policies: FirewallPoliciesOperations operations + :vartype firewall_policies: + azure.mgmt.network.v2022_01_01.operations.FirewallPoliciesOperations + :ivar firewall_policy_rule_collection_groups: FirewallPolicyRuleCollectionGroupsOperations + operations + :vartype firewall_policy_rule_collection_groups: + azure.mgmt.network.v2022_01_01.operations.FirewallPolicyRuleCollectionGroupsOperations + :ivar firewall_policy_idps_signatures: FirewallPolicyIdpsSignaturesOperations operations + :vartype firewall_policy_idps_signatures: + azure.mgmt.network.v2022_01_01.operations.FirewallPolicyIdpsSignaturesOperations + :ivar firewall_policy_idps_signatures_overrides: + FirewallPolicyIdpsSignaturesOverridesOperations operations + :vartype firewall_policy_idps_signatures_overrides: + azure.mgmt.network.v2022_01_01.operations.FirewallPolicyIdpsSignaturesOverridesOperations + :ivar firewall_policy_idps_signatures_filter_values: + FirewallPolicyIdpsSignaturesFilterValuesOperations operations + :vartype firewall_policy_idps_signatures_filter_values: + azure.mgmt.network.v2022_01_01.operations.FirewallPolicyIdpsSignaturesFilterValuesOperations + :ivar ip_allocations: IpAllocationsOperations operations + :vartype ip_allocations: azure.mgmt.network.v2022_01_01.operations.IpAllocationsOperations + :ivar ip_groups: IpGroupsOperations operations + :vartype ip_groups: azure.mgmt.network.v2022_01_01.operations.IpGroupsOperations + :ivar load_balancers: LoadBalancersOperations operations + :vartype load_balancers: azure.mgmt.network.v2022_01_01.operations.LoadBalancersOperations + :ivar load_balancer_backend_address_pools: LoadBalancerBackendAddressPoolsOperations operations + :vartype load_balancer_backend_address_pools: + azure.mgmt.network.v2022_01_01.operations.LoadBalancerBackendAddressPoolsOperations + :ivar load_balancer_frontend_ip_configurations: LoadBalancerFrontendIPConfigurationsOperations + operations + :vartype load_balancer_frontend_ip_configurations: + azure.mgmt.network.v2022_01_01.operations.LoadBalancerFrontendIPConfigurationsOperations + :ivar inbound_nat_rules: InboundNatRulesOperations operations + :vartype inbound_nat_rules: azure.mgmt.network.v2022_01_01.operations.InboundNatRulesOperations + :ivar load_balancer_load_balancing_rules: LoadBalancerLoadBalancingRulesOperations operations + :vartype load_balancer_load_balancing_rules: + azure.mgmt.network.v2022_01_01.operations.LoadBalancerLoadBalancingRulesOperations + :ivar load_balancer_outbound_rules: LoadBalancerOutboundRulesOperations operations + :vartype load_balancer_outbound_rules: + azure.mgmt.network.v2022_01_01.operations.LoadBalancerOutboundRulesOperations + :ivar load_balancer_network_interfaces: LoadBalancerNetworkInterfacesOperations operations + :vartype load_balancer_network_interfaces: + azure.mgmt.network.v2022_01_01.operations.LoadBalancerNetworkInterfacesOperations + :ivar load_balancer_probes: LoadBalancerProbesOperations operations + :vartype load_balancer_probes: + azure.mgmt.network.v2022_01_01.operations.LoadBalancerProbesOperations + :ivar nat_gateways: NatGatewaysOperations operations + :vartype nat_gateways: azure.mgmt.network.v2022_01_01.operations.NatGatewaysOperations + :ivar network_interface_ip_configurations: NetworkInterfaceIPConfigurationsOperations + operations + :vartype network_interface_ip_configurations: + azure.mgmt.network.v2022_01_01.operations.NetworkInterfaceIPConfigurationsOperations + :ivar network_interface_load_balancers: NetworkInterfaceLoadBalancersOperations operations + :vartype network_interface_load_balancers: + azure.mgmt.network.v2022_01_01.operations.NetworkInterfaceLoadBalancersOperations + :ivar network_interface_tap_configurations: NetworkInterfaceTapConfigurationsOperations + operations + :vartype network_interface_tap_configurations: + azure.mgmt.network.v2022_01_01.operations.NetworkInterfaceTapConfigurationsOperations :ivar network_managers: NetworkManagersOperations operations - :vartype network_managers: - azure.mgmt.network.v2022_02_01_preview.operations.NetworkManagersOperations + :vartype network_managers: azure.mgmt.network.v2022_01_01.operations.NetworkManagersOperations :ivar network_manager_commits: NetworkManagerCommitsOperations operations :vartype network_manager_commits: - azure.mgmt.network.v2022_02_01_preview.operations.NetworkManagerCommitsOperations + azure.mgmt.network.v2022_01_01.operations.NetworkManagerCommitsOperations :ivar network_manager_deployment_status: NetworkManagerDeploymentStatusOperations operations :vartype network_manager_deployment_status: - azure.mgmt.network.v2022_02_01_preview.operations.NetworkManagerDeploymentStatusOperations - :ivar effective_virtual_networks: EffectiveVirtualNetworksOperations operations - :vartype effective_virtual_networks: - azure.mgmt.network.v2022_02_01_preview.operations.EffectiveVirtualNetworksOperations + azure.mgmt.network.v2022_01_01.operations.NetworkManagerDeploymentStatusOperations + :ivar subscription_network_manager_connections: SubscriptionNetworkManagerConnectionsOperations + operations + :vartype subscription_network_manager_connections: + azure.mgmt.network.v2022_01_01.operations.SubscriptionNetworkManagerConnectionsOperations + :ivar management_group_network_manager_connections: + ManagementGroupNetworkManagerConnectionsOperations operations + :vartype management_group_network_manager_connections: + azure.mgmt.network.v2022_01_01.operations.ManagementGroupNetworkManagerConnectionsOperations :ivar connectivity_configurations: ConnectivityConfigurationsOperations operations :vartype connectivity_configurations: - azure.mgmt.network.v2022_02_01_preview.operations.ConnectivityConfigurationsOperations + azure.mgmt.network.v2022_01_01.operations.ConnectivityConfigurationsOperations :ivar network_groups: NetworkGroupsOperations operations - :vartype network_groups: - azure.mgmt.network.v2022_02_01_preview.operations.NetworkGroupsOperations - :ivar list_effective_virtual_networks: ListEffectiveVirtualNetworksOperations operations - :vartype list_effective_virtual_networks: - azure.mgmt.network.v2022_02_01_preview.operations.ListEffectiveVirtualNetworksOperations + :vartype network_groups: azure.mgmt.network.v2022_01_01.operations.NetworkGroupsOperations :ivar static_members: StaticMembersOperations operations - :vartype static_members: - azure.mgmt.network.v2022_02_01_preview.operations.StaticMembersOperations - :ivar security_user_configurations: SecurityUserConfigurationsOperations operations - :vartype security_user_configurations: - azure.mgmt.network.v2022_02_01_preview.operations.SecurityUserConfigurationsOperations - :ivar user_rule_collections: UserRuleCollectionsOperations operations - :vartype user_rule_collections: - azure.mgmt.network.v2022_02_01_preview.operations.UserRuleCollectionsOperations - :ivar user_rules: UserRulesOperations operations - :vartype user_rules: azure.mgmt.network.v2022_02_01_preview.operations.UserRulesOperations + :vartype static_members: azure.mgmt.network.v2022_01_01.operations.StaticMembersOperations + :ivar scope_connections: ScopeConnectionsOperations operations + :vartype scope_connections: + azure.mgmt.network.v2022_01_01.operations.ScopeConnectionsOperations :ivar security_admin_configurations: SecurityAdminConfigurationsOperations operations :vartype security_admin_configurations: - azure.mgmt.network.v2022_02_01_preview.operations.SecurityAdminConfigurationsOperations + azure.mgmt.network.v2022_01_01.operations.SecurityAdminConfigurationsOperations :ivar admin_rule_collections: AdminRuleCollectionsOperations operations :vartype admin_rule_collections: - azure.mgmt.network.v2022_02_01_preview.operations.AdminRuleCollectionsOperations + azure.mgmt.network.v2022_01_01.operations.AdminRuleCollectionsOperations :ivar admin_rules: AdminRulesOperations operations - :vartype admin_rules: azure.mgmt.network.v2022_02_01_preview.operations.AdminRulesOperations - :ivar subscription_network_manager_connections: SubscriptionNetworkManagerConnectionsOperations + :vartype admin_rules: azure.mgmt.network.v2022_01_01.operations.AdminRulesOperations + :ivar network_profiles: NetworkProfilesOperations operations + :vartype network_profiles: azure.mgmt.network.v2022_01_01.operations.NetworkProfilesOperations + :ivar network_security_groups: NetworkSecurityGroupsOperations operations + :vartype network_security_groups: + azure.mgmt.network.v2022_01_01.operations.NetworkSecurityGroupsOperations + :ivar security_rules: SecurityRulesOperations operations + :vartype security_rules: azure.mgmt.network.v2022_01_01.operations.SecurityRulesOperations + :ivar default_security_rules: DefaultSecurityRulesOperations operations + :vartype default_security_rules: + azure.mgmt.network.v2022_01_01.operations.DefaultSecurityRulesOperations + :ivar network_virtual_appliances: NetworkVirtualAppliancesOperations operations + :vartype network_virtual_appliances: + azure.mgmt.network.v2022_01_01.operations.NetworkVirtualAppliancesOperations + :ivar virtual_appliance_sites: VirtualApplianceSitesOperations operations + :vartype virtual_appliance_sites: + azure.mgmt.network.v2022_01_01.operations.VirtualApplianceSitesOperations + :ivar virtual_appliance_skus: VirtualApplianceSkusOperations operations + :vartype virtual_appliance_skus: + azure.mgmt.network.v2022_01_01.operations.VirtualApplianceSkusOperations + :ivar inbound_security_rule: InboundSecurityRuleOperations operations + :vartype inbound_security_rule: + azure.mgmt.network.v2022_01_01.operations.InboundSecurityRuleOperations + :ivar network_watchers: NetworkWatchersOperations operations + :vartype network_watchers: azure.mgmt.network.v2022_01_01.operations.NetworkWatchersOperations + :ivar packet_captures: PacketCapturesOperations operations + :vartype packet_captures: azure.mgmt.network.v2022_01_01.operations.PacketCapturesOperations + :ivar connection_monitors: ConnectionMonitorsOperations operations + :vartype connection_monitors: + azure.mgmt.network.v2022_01_01.operations.ConnectionMonitorsOperations + :ivar flow_logs: FlowLogsOperations operations + :vartype flow_logs: azure.mgmt.network.v2022_01_01.operations.FlowLogsOperations + :ivar operations: Operations operations + :vartype operations: azure.mgmt.network.v2022_01_01.operations.Operations + :ivar private_endpoints: PrivateEndpointsOperations operations + :vartype private_endpoints: + azure.mgmt.network.v2022_01_01.operations.PrivateEndpointsOperations + :ivar available_private_endpoint_types: AvailablePrivateEndpointTypesOperations operations + :vartype available_private_endpoint_types: + azure.mgmt.network.v2022_01_01.operations.AvailablePrivateEndpointTypesOperations + :ivar private_dns_zone_groups: PrivateDnsZoneGroupsOperations operations + :vartype private_dns_zone_groups: + azure.mgmt.network.v2022_01_01.operations.PrivateDnsZoneGroupsOperations + :ivar private_link_services: PrivateLinkServicesOperations operations + :vartype private_link_services: + azure.mgmt.network.v2022_01_01.operations.PrivateLinkServicesOperations + :ivar public_ip_prefixes: PublicIPPrefixesOperations operations + :vartype public_ip_prefixes: + azure.mgmt.network.v2022_01_01.operations.PublicIPPrefixesOperations + :ivar route_filters: RouteFiltersOperations operations + :vartype route_filters: azure.mgmt.network.v2022_01_01.operations.RouteFiltersOperations + :ivar route_filter_rules: RouteFilterRulesOperations operations + :vartype route_filter_rules: + azure.mgmt.network.v2022_01_01.operations.RouteFilterRulesOperations + :ivar route_tables: RouteTablesOperations operations + :vartype route_tables: azure.mgmt.network.v2022_01_01.operations.RouteTablesOperations + :ivar routes: RoutesOperations operations + :vartype routes: azure.mgmt.network.v2022_01_01.operations.RoutesOperations + :ivar security_partner_providers: SecurityPartnerProvidersOperations operations + :vartype security_partner_providers: + azure.mgmt.network.v2022_01_01.operations.SecurityPartnerProvidersOperations + :ivar bgp_service_communities: BgpServiceCommunitiesOperations operations + :vartype bgp_service_communities: + azure.mgmt.network.v2022_01_01.operations.BgpServiceCommunitiesOperations + :ivar service_endpoint_policies: ServiceEndpointPoliciesOperations operations + :vartype service_endpoint_policies: + azure.mgmt.network.v2022_01_01.operations.ServiceEndpointPoliciesOperations + :ivar service_endpoint_policy_definitions: ServiceEndpointPolicyDefinitionsOperations operations - :vartype subscription_network_manager_connections: - azure.mgmt.network.v2022_02_01_preview.operations.SubscriptionNetworkManagerConnectionsOperations - :ivar management_group_network_manager_connections: - ManagementGroupNetworkManagerConnectionsOperations operations - :vartype management_group_network_manager_connections: - azure.mgmt.network.v2022_02_01_preview.operations.ManagementGroupNetworkManagerConnectionsOperations - :ivar scope_connections: ScopeConnectionsOperations operations - :vartype scope_connections: - azure.mgmt.network.v2022_02_01_preview.operations.ScopeConnectionsOperations + :vartype service_endpoint_policy_definitions: + azure.mgmt.network.v2022_01_01.operations.ServiceEndpointPolicyDefinitionsOperations + :ivar service_tags: ServiceTagsOperations operations + :vartype service_tags: azure.mgmt.network.v2022_01_01.operations.ServiceTagsOperations + :ivar service_tag_information: ServiceTagInformationOperations operations + :vartype service_tag_information: + azure.mgmt.network.v2022_01_01.operations.ServiceTagInformationOperations + :ivar usages: UsagesOperations operations + :vartype usages: azure.mgmt.network.v2022_01_01.operations.UsagesOperations + :ivar virtual_networks: VirtualNetworksOperations operations + :vartype virtual_networks: azure.mgmt.network.v2022_01_01.operations.VirtualNetworksOperations + :ivar subnets: SubnetsOperations operations + :vartype subnets: azure.mgmt.network.v2022_01_01.operations.SubnetsOperations + :ivar resource_navigation_links: ResourceNavigationLinksOperations operations + :vartype resource_navigation_links: + azure.mgmt.network.v2022_01_01.operations.ResourceNavigationLinksOperations + :ivar service_association_links: ServiceAssociationLinksOperations operations + :vartype service_association_links: + azure.mgmt.network.v2022_01_01.operations.ServiceAssociationLinksOperations + :ivar virtual_network_peerings: VirtualNetworkPeeringsOperations operations + :vartype virtual_network_peerings: + azure.mgmt.network.v2022_01_01.operations.VirtualNetworkPeeringsOperations + :ivar virtual_network_gateways: VirtualNetworkGatewaysOperations operations + :vartype virtual_network_gateways: + azure.mgmt.network.v2022_01_01.operations.VirtualNetworkGatewaysOperations + :ivar virtual_network_gateway_connections: VirtualNetworkGatewayConnectionsOperations + operations + :vartype virtual_network_gateway_connections: + azure.mgmt.network.v2022_01_01.operations.VirtualNetworkGatewayConnectionsOperations + :ivar local_network_gateways: LocalNetworkGatewaysOperations operations + :vartype local_network_gateways: + azure.mgmt.network.v2022_01_01.operations.LocalNetworkGatewaysOperations + :ivar virtual_network_gateway_nat_rules: VirtualNetworkGatewayNatRulesOperations operations + :vartype virtual_network_gateway_nat_rules: + azure.mgmt.network.v2022_01_01.operations.VirtualNetworkGatewayNatRulesOperations + :ivar virtual_network_taps: VirtualNetworkTapsOperations operations + :vartype virtual_network_taps: + azure.mgmt.network.v2022_01_01.operations.VirtualNetworkTapsOperations + :ivar virtual_routers: VirtualRoutersOperations operations + :vartype virtual_routers: azure.mgmt.network.v2022_01_01.operations.VirtualRoutersOperations + :ivar virtual_router_peerings: VirtualRouterPeeringsOperations operations + :vartype virtual_router_peerings: + azure.mgmt.network.v2022_01_01.operations.VirtualRouterPeeringsOperations + :ivar virtual_wans: VirtualWansOperations operations + :vartype virtual_wans: azure.mgmt.network.v2022_01_01.operations.VirtualWansOperations + :ivar vpn_sites: VpnSitesOperations operations + :vartype vpn_sites: azure.mgmt.network.v2022_01_01.operations.VpnSitesOperations + :ivar vpn_site_links: VpnSiteLinksOperations operations + :vartype vpn_site_links: azure.mgmt.network.v2022_01_01.operations.VpnSiteLinksOperations + :ivar vpn_sites_configuration: VpnSitesConfigurationOperations operations + :vartype vpn_sites_configuration: + azure.mgmt.network.v2022_01_01.operations.VpnSitesConfigurationOperations + :ivar vpn_server_configurations: VpnServerConfigurationsOperations operations + :vartype vpn_server_configurations: + azure.mgmt.network.v2022_01_01.operations.VpnServerConfigurationsOperations + :ivar configuration_policy_groups: ConfigurationPolicyGroupsOperations operations + :vartype configuration_policy_groups: + azure.mgmt.network.v2022_01_01.operations.ConfigurationPolicyGroupsOperations + :ivar virtual_hubs: VirtualHubsOperations operations + :vartype virtual_hubs: azure.mgmt.network.v2022_01_01.operations.VirtualHubsOperations + :ivar hub_virtual_network_connections: HubVirtualNetworkConnectionsOperations operations + :vartype hub_virtual_network_connections: + azure.mgmt.network.v2022_01_01.operations.HubVirtualNetworkConnectionsOperations + :ivar vpn_gateways: VpnGatewaysOperations operations + :vartype vpn_gateways: azure.mgmt.network.v2022_01_01.operations.VpnGatewaysOperations + :ivar vpn_link_connections: VpnLinkConnectionsOperations operations + :vartype vpn_link_connections: + azure.mgmt.network.v2022_01_01.operations.VpnLinkConnectionsOperations + :ivar vpn_connections: VpnConnectionsOperations operations + :vartype vpn_connections: azure.mgmt.network.v2022_01_01.operations.VpnConnectionsOperations + :ivar vpn_site_link_connections: VpnSiteLinkConnectionsOperations operations + :vartype vpn_site_link_connections: + azure.mgmt.network.v2022_01_01.operations.VpnSiteLinkConnectionsOperations + :ivar nat_rules: NatRulesOperations operations + :vartype nat_rules: azure.mgmt.network.v2022_01_01.operations.NatRulesOperations + :ivar p2_svpn_gateways: P2SVpnGatewaysOperations operations + :vartype p2_svpn_gateways: azure.mgmt.network.v2022_01_01.operations.P2SVpnGatewaysOperations + :ivar vpn_server_configurations_associated_with_virtual_wan: + VpnServerConfigurationsAssociatedWithVirtualWanOperations operations + :vartype vpn_server_configurations_associated_with_virtual_wan: + azure.mgmt.network.v2022_01_01.operations.VpnServerConfigurationsAssociatedWithVirtualWanOperations + :ivar virtual_hub_route_table_v2_s: VirtualHubRouteTableV2SOperations operations + :vartype virtual_hub_route_table_v2_s: + azure.mgmt.network.v2022_01_01.operations.VirtualHubRouteTableV2SOperations + :ivar express_route_gateways: ExpressRouteGatewaysOperations operations + :vartype express_route_gateways: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteGatewaysOperations + :ivar express_route_connections: ExpressRouteConnectionsOperations operations + :vartype express_route_connections: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteConnectionsOperations + :ivar virtual_hub_bgp_connection: VirtualHubBgpConnectionOperations operations + :vartype virtual_hub_bgp_connection: + azure.mgmt.network.v2022_01_01.operations.VirtualHubBgpConnectionOperations + :ivar virtual_hub_bgp_connections: VirtualHubBgpConnectionsOperations operations + :vartype virtual_hub_bgp_connections: + azure.mgmt.network.v2022_01_01.operations.VirtualHubBgpConnectionsOperations + :ivar virtual_hub_ip_configuration: VirtualHubIpConfigurationOperations operations + :vartype virtual_hub_ip_configuration: + azure.mgmt.network.v2022_01_01.operations.VirtualHubIpConfigurationOperations + :ivar hub_route_tables: HubRouteTablesOperations operations + :vartype hub_route_tables: azure.mgmt.network.v2022_01_01.operations.HubRouteTablesOperations + :ivar routing_intent: RoutingIntentOperations operations + :vartype routing_intent: azure.mgmt.network.v2022_01_01.operations.RoutingIntentOperations + :ivar web_application_firewall_policies: WebApplicationFirewallPoliciesOperations operations + :vartype web_application_firewall_policies: + azure.mgmt.network.v2022_01_01.operations.WebApplicationFirewallPoliciesOperations + :ivar express_route_provider_ports_location: ExpressRouteProviderPortsLocationOperations + operations + :vartype express_route_provider_ports_location: + azure.mgmt.network.v2022_01_01.operations.ExpressRouteProviderPortsLocationOperations :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The subscription credentials which uniquely identify the Microsoft @@ -83,9 +395,8 @@ class NetworkManagementClient(NetworkManagementClientOperationsMixin): # pyli :type subscription_id: str :param base_url: Service URL. Default value is "https://management.azure.com". :type base_url: str - :keyword api_version: Api Version. Default value is "2022-02-01-preview". Note that overriding - this default value may result in unsupported behavior. - :paramtype api_version: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. """ def __init__( @@ -102,23 +413,133 @@ def __init__( self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) self._serialize.client_side_validation = False + self.application_gateways = ApplicationGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.application_gateway_private_link_resources = ApplicationGatewayPrivateLinkResourcesOperations(self._client, self._config, self._serialize, self._deserialize) + self.application_gateway_private_endpoint_connections = ApplicationGatewayPrivateEndpointConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.application_security_groups = ApplicationSecurityGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_delegations = AvailableDelegationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_resource_group_delegations = AvailableResourceGroupDelegationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_service_aliases = AvailableServiceAliasesOperations(self._client, self._config, self._serialize, self._deserialize) + self.azure_firewalls = AzureFirewallsOperations(self._client, self._config, self._serialize, self._deserialize) + self.azure_firewall_fqdn_tags = AzureFirewallFqdnTagsOperations(self._client, self._config, self._serialize, self._deserialize) + self.web_categories = WebCategoriesOperations(self._client, self._config, self._serialize, self._deserialize) + self.bastion_hosts = BastionHostsOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interfaces = NetworkInterfacesOperations(self._client, self._config, self._serialize, self._deserialize) + self.public_ip_addresses = PublicIPAddressesOperations(self._client, self._config, self._serialize, self._deserialize) + self.custom_ip_prefixes = CustomIPPrefixesOperations(self._client, self._config, self._serialize, self._deserialize) + self.ddos_custom_policies = DdosCustomPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.ddos_protection_plans = DdosProtectionPlansOperations(self._client, self._config, self._serialize, self._deserialize) + self.dscp_configuration = DscpConfigurationOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_endpoint_services = AvailableEndpointServicesOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuit_authorizations = ExpressRouteCircuitAuthorizationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuit_peerings = ExpressRouteCircuitPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuit_connections = ExpressRouteCircuitConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.peer_express_route_circuit_connections = PeerExpressRouteCircuitConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuits = ExpressRouteCircuitsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_service_providers = ExpressRouteServiceProvidersOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_cross_connections = ExpressRouteCrossConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_cross_connection_peerings = ExpressRouteCrossConnectionPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_ports_locations = ExpressRoutePortsLocationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_ports = ExpressRoutePortsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_links = ExpressRouteLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_port_authorizations = ExpressRoutePortAuthorizationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policies = FirewallPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_rule_collection_groups = FirewallPolicyRuleCollectionGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_idps_signatures = FirewallPolicyIdpsSignaturesOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_idps_signatures_overrides = FirewallPolicyIdpsSignaturesOverridesOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_idps_signatures_filter_values = FirewallPolicyIdpsSignaturesFilterValuesOperations(self._client, self._config, self._serialize, self._deserialize) + self.ip_allocations = IpAllocationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.ip_groups = IpGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancers = LoadBalancersOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_backend_address_pools = LoadBalancerBackendAddressPoolsOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_frontend_ip_configurations = LoadBalancerFrontendIPConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.inbound_nat_rules = InboundNatRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_load_balancing_rules = LoadBalancerLoadBalancingRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_outbound_rules = LoadBalancerOutboundRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_network_interfaces = LoadBalancerNetworkInterfacesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_probes = LoadBalancerProbesOperations(self._client, self._config, self._serialize, self._deserialize) + self.nat_gateways = NatGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interface_ip_configurations = NetworkInterfaceIPConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interface_load_balancers = NetworkInterfaceLoadBalancersOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interface_tap_configurations = NetworkInterfaceTapConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) self.network_managers = NetworkManagersOperations(self._client, self._config, self._serialize, self._deserialize) self.network_manager_commits = NetworkManagerCommitsOperations(self._client, self._config, self._serialize, self._deserialize) self.network_manager_deployment_status = NetworkManagerDeploymentStatusOperations(self._client, self._config, self._serialize, self._deserialize) - self.effective_virtual_networks = EffectiveVirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) + self.subscription_network_manager_connections = SubscriptionNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.management_group_network_manager_connections = ManagementGroupNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) self.connectivity_configurations = ConnectivityConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) self.network_groups = NetworkGroupsOperations(self._client, self._config, self._serialize, self._deserialize) - self.list_effective_virtual_networks = ListEffectiveVirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) self.static_members = StaticMembersOperations(self._client, self._config, self._serialize, self._deserialize) - self.security_user_configurations = SecurityUserConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) - self.user_rule_collections = UserRuleCollectionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.user_rules = UserRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.scope_connections = ScopeConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) self.security_admin_configurations = SecurityAdminConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) self.admin_rule_collections = AdminRuleCollectionsOperations(self._client, self._config, self._serialize, self._deserialize) self.admin_rules = AdminRulesOperations(self._client, self._config, self._serialize, self._deserialize) - self.subscription_network_manager_connections = SubscriptionNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.management_group_network_manager_connections = ManagementGroupNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.scope_connections = ScopeConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_profiles = NetworkProfilesOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_security_groups = NetworkSecurityGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.security_rules = SecurityRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.default_security_rules = DefaultSecurityRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_virtual_appliances = NetworkVirtualAppliancesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_appliance_sites = VirtualApplianceSitesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_appliance_skus = VirtualApplianceSkusOperations(self._client, self._config, self._serialize, self._deserialize) + self.inbound_security_rule = InboundSecurityRuleOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_watchers = NetworkWatchersOperations(self._client, self._config, self._serialize, self._deserialize) + self.packet_captures = PacketCapturesOperations(self._client, self._config, self._serialize, self._deserialize) + self.connection_monitors = ConnectionMonitorsOperations(self._client, self._config, self._serialize, self._deserialize) + self.flow_logs = FlowLogsOperations(self._client, self._config, self._serialize, self._deserialize) + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.private_endpoints = PrivateEndpointsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_private_endpoint_types = AvailablePrivateEndpointTypesOperations(self._client, self._config, self._serialize, self._deserialize) + self.private_dns_zone_groups = PrivateDnsZoneGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.private_link_services = PrivateLinkServicesOperations(self._client, self._config, self._serialize, self._deserialize) + self.public_ip_prefixes = PublicIPPrefixesOperations(self._client, self._config, self._serialize, self._deserialize) + self.route_filters = RouteFiltersOperations(self._client, self._config, self._serialize, self._deserialize) + self.route_filter_rules = RouteFilterRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.route_tables = RouteTablesOperations(self._client, self._config, self._serialize, self._deserialize) + self.routes = RoutesOperations(self._client, self._config, self._serialize, self._deserialize) + self.security_partner_providers = SecurityPartnerProvidersOperations(self._client, self._config, self._serialize, self._deserialize) + self.bgp_service_communities = BgpServiceCommunitiesOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_endpoint_policies = ServiceEndpointPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_endpoint_policy_definitions = ServiceEndpointPolicyDefinitionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_tags = ServiceTagsOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_tag_information = ServiceTagInformationOperations(self._client, self._config, self._serialize, self._deserialize) + self.usages = UsagesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_networks = VirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) + self.subnets = SubnetsOperations(self._client, self._config, self._serialize, self._deserialize) + self.resource_navigation_links = ResourceNavigationLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_association_links = ServiceAssociationLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_peerings = VirtualNetworkPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_gateways = VirtualNetworkGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_gateway_connections = VirtualNetworkGatewayConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.local_network_gateways = LocalNetworkGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_gateway_nat_rules = VirtualNetworkGatewayNatRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_taps = VirtualNetworkTapsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_routers = VirtualRoutersOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_router_peerings = VirtualRouterPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_wans = VirtualWansOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_sites = VpnSitesOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_site_links = VpnSiteLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_sites_configuration = VpnSitesConfigurationOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_server_configurations = VpnServerConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.configuration_policy_groups = ConfigurationPolicyGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hubs = VirtualHubsOperations(self._client, self._config, self._serialize, self._deserialize) + self.hub_virtual_network_connections = HubVirtualNetworkConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_gateways = VpnGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_link_connections = VpnLinkConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_connections = VpnConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_site_link_connections = VpnSiteLinkConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.nat_rules = NatRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.p2_svpn_gateways = P2SVpnGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_server_configurations_associated_with_virtual_wan = VpnServerConfigurationsAssociatedWithVirtualWanOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_route_table_v2_s = VirtualHubRouteTableV2SOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_gateways = ExpressRouteGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_connections = ExpressRouteConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_bgp_connection = VirtualHubBgpConnectionOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_bgp_connections = VirtualHubBgpConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_ip_configuration = VirtualHubIpConfigurationOperations(self._client, self._config, self._serialize, self._deserialize) + self.hub_route_tables = HubRouteTablesOperations(self._client, self._config, self._serialize, self._deserialize) + self.routing_intent = RoutingIntentOperations(self._client, self._config, self._serialize, self._deserialize) + self.web_application_firewall_policies = WebApplicationFirewallPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_provider_ports_location = ExpressRouteProviderPortsLocationOperations(self._client, self._config, self._serialize, self._deserialize) def _send_request( diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/_configuration.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/_configuration.py index a68d8c151da..86d05cdb646 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/_configuration.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/aio/_configuration.py @@ -30,9 +30,6 @@ class NetworkManagementClientConfiguration(Configuration): # pylint: disable=to :param subscription_id: The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2022-02-01-preview". Note that overriding - this default value may result in unsupported behavior. - :paramtype api_version: str """ def __init__( @@ -42,8 +39,6 @@ def __init__( **kwargs: Any ) -> None: super(NetworkManagementClientConfiguration, self).__init__(**kwargs) - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: @@ -51,7 +46,6 @@ def __init__( self.credential = credential self.subscription_id = subscription_id - self.api_version = api_version self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-network/{}'.format(VERSION)) self._configure(**kwargs) diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/_network_management_client.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/_network_management_client.py index 0163ab165bb..9762083faa1 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/_network_management_client.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/aio/_network_management_client.py @@ -16,7 +16,7 @@ from .. import models from ._configuration import NetworkManagementClientConfiguration -from .operations import AdminRuleCollectionsOperations, AdminRulesOperations, ConnectivityConfigurationsOperations, EffectiveVirtualNetworksOperations, ListEffectiveVirtualNetworksOperations, ManagementGroupNetworkManagerConnectionsOperations, NetworkGroupsOperations, NetworkManagementClientOperationsMixin, NetworkManagerCommitsOperations, NetworkManagerDeploymentStatusOperations, NetworkManagersOperations, ScopeConnectionsOperations, SecurityAdminConfigurationsOperations, SecurityUserConfigurationsOperations, StaticMembersOperations, SubscriptionNetworkManagerConnectionsOperations, UserRuleCollectionsOperations, UserRulesOperations +from .operations import AdminRuleCollectionsOperations, AdminRulesOperations, ApplicationGatewayPrivateEndpointConnectionsOperations, ApplicationGatewayPrivateLinkResourcesOperations, ApplicationGatewaysOperations, ApplicationSecurityGroupsOperations, AvailableDelegationsOperations, AvailableEndpointServicesOperations, AvailablePrivateEndpointTypesOperations, AvailableResourceGroupDelegationsOperations, AvailableServiceAliasesOperations, AzureFirewallFqdnTagsOperations, AzureFirewallsOperations, BastionHostsOperations, BgpServiceCommunitiesOperations, ConfigurationPolicyGroupsOperations, ConnectionMonitorsOperations, ConnectivityConfigurationsOperations, CustomIPPrefixesOperations, DdosCustomPoliciesOperations, DdosProtectionPlansOperations, DefaultSecurityRulesOperations, DscpConfigurationOperations, ExpressRouteCircuitAuthorizationsOperations, ExpressRouteCircuitConnectionsOperations, ExpressRouteCircuitPeeringsOperations, ExpressRouteCircuitsOperations, ExpressRouteConnectionsOperations, ExpressRouteCrossConnectionPeeringsOperations, ExpressRouteCrossConnectionsOperations, ExpressRouteGatewaysOperations, ExpressRouteLinksOperations, ExpressRoutePortAuthorizationsOperations, ExpressRoutePortsLocationsOperations, ExpressRoutePortsOperations, ExpressRouteProviderPortsLocationOperations, ExpressRouteServiceProvidersOperations, FirewallPoliciesOperations, FirewallPolicyIdpsSignaturesFilterValuesOperations, FirewallPolicyIdpsSignaturesOperations, FirewallPolicyIdpsSignaturesOverridesOperations, FirewallPolicyRuleCollectionGroupsOperations, FlowLogsOperations, HubRouteTablesOperations, HubVirtualNetworkConnectionsOperations, InboundNatRulesOperations, InboundSecurityRuleOperations, IpAllocationsOperations, IpGroupsOperations, LoadBalancerBackendAddressPoolsOperations, LoadBalancerFrontendIPConfigurationsOperations, LoadBalancerLoadBalancingRulesOperations, LoadBalancerNetworkInterfacesOperations, LoadBalancerOutboundRulesOperations, LoadBalancerProbesOperations, LoadBalancersOperations, LocalNetworkGatewaysOperations, ManagementGroupNetworkManagerConnectionsOperations, NatGatewaysOperations, NatRulesOperations, NetworkGroupsOperations, NetworkInterfaceIPConfigurationsOperations, NetworkInterfaceLoadBalancersOperations, NetworkInterfaceTapConfigurationsOperations, NetworkInterfacesOperations, NetworkManagementClientOperationsMixin, NetworkManagerCommitsOperations, NetworkManagerDeploymentStatusOperations, NetworkManagersOperations, NetworkProfilesOperations, NetworkSecurityGroupsOperations, NetworkVirtualAppliancesOperations, NetworkWatchersOperations, Operations, P2SVpnGatewaysOperations, PacketCapturesOperations, PeerExpressRouteCircuitConnectionsOperations, PrivateDnsZoneGroupsOperations, PrivateEndpointsOperations, PrivateLinkServicesOperations, PublicIPAddressesOperations, PublicIPPrefixesOperations, ResourceNavigationLinksOperations, RouteFilterRulesOperations, RouteFiltersOperations, RouteTablesOperations, RoutesOperations, RoutingIntentOperations, ScopeConnectionsOperations, SecurityAdminConfigurationsOperations, SecurityPartnerProvidersOperations, SecurityRulesOperations, ServiceAssociationLinksOperations, ServiceEndpointPoliciesOperations, ServiceEndpointPolicyDefinitionsOperations, ServiceTagInformationOperations, ServiceTagsOperations, StaticMembersOperations, SubnetsOperations, SubscriptionNetworkManagerConnectionsOperations, UsagesOperations, VirtualApplianceSitesOperations, VirtualApplianceSkusOperations, VirtualHubBgpConnectionOperations, VirtualHubBgpConnectionsOperations, VirtualHubIpConfigurationOperations, VirtualHubRouteTableV2SOperations, VirtualHubsOperations, VirtualNetworkGatewayConnectionsOperations, VirtualNetworkGatewayNatRulesOperations, VirtualNetworkGatewaysOperations, VirtualNetworkPeeringsOperations, VirtualNetworkTapsOperations, VirtualNetworksOperations, VirtualRouterPeeringsOperations, VirtualRoutersOperations, VirtualWansOperations, VpnConnectionsOperations, VpnGatewaysOperations, VpnLinkConnectionsOperations, VpnServerConfigurationsAssociatedWithVirtualWanOperations, VpnServerConfigurationsOperations, VpnSiteLinkConnectionsOperations, VpnSiteLinksOperations, VpnSitesConfigurationOperations, VpnSitesOperations, WebApplicationFirewallPoliciesOperations, WebCategoriesOperations if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports @@ -25,58 +25,380 @@ class NetworkManagementClient(NetworkManagementClientOperationsMixin): # pylint: disable=too-many-instance-attributes """Network Client. + :ivar application_gateways: ApplicationGatewaysOperations operations + :vartype application_gateways: + azure.mgmt.network.v2022_01_01.aio.operations.ApplicationGatewaysOperations + :ivar application_gateway_private_link_resources: + ApplicationGatewayPrivateLinkResourcesOperations operations + :vartype application_gateway_private_link_resources: + azure.mgmt.network.v2022_01_01.aio.operations.ApplicationGatewayPrivateLinkResourcesOperations + :ivar application_gateway_private_endpoint_connections: + ApplicationGatewayPrivateEndpointConnectionsOperations operations + :vartype application_gateway_private_endpoint_connections: + azure.mgmt.network.v2022_01_01.aio.operations.ApplicationGatewayPrivateEndpointConnectionsOperations + :ivar application_security_groups: ApplicationSecurityGroupsOperations operations + :vartype application_security_groups: + azure.mgmt.network.v2022_01_01.aio.operations.ApplicationSecurityGroupsOperations + :ivar available_delegations: AvailableDelegationsOperations operations + :vartype available_delegations: + azure.mgmt.network.v2022_01_01.aio.operations.AvailableDelegationsOperations + :ivar available_resource_group_delegations: AvailableResourceGroupDelegationsOperations + operations + :vartype available_resource_group_delegations: + azure.mgmt.network.v2022_01_01.aio.operations.AvailableResourceGroupDelegationsOperations + :ivar available_service_aliases: AvailableServiceAliasesOperations operations + :vartype available_service_aliases: + azure.mgmt.network.v2022_01_01.aio.operations.AvailableServiceAliasesOperations + :ivar azure_firewalls: AzureFirewallsOperations operations + :vartype azure_firewalls: + azure.mgmt.network.v2022_01_01.aio.operations.AzureFirewallsOperations + :ivar azure_firewall_fqdn_tags: AzureFirewallFqdnTagsOperations operations + :vartype azure_firewall_fqdn_tags: + azure.mgmt.network.v2022_01_01.aio.operations.AzureFirewallFqdnTagsOperations + :ivar web_categories: WebCategoriesOperations operations + :vartype web_categories: azure.mgmt.network.v2022_01_01.aio.operations.WebCategoriesOperations + :ivar bastion_hosts: BastionHostsOperations operations + :vartype bastion_hosts: azure.mgmt.network.v2022_01_01.aio.operations.BastionHostsOperations + :ivar network_interfaces: NetworkInterfacesOperations operations + :vartype network_interfaces: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkInterfacesOperations + :ivar public_ip_addresses: PublicIPAddressesOperations operations + :vartype public_ip_addresses: + azure.mgmt.network.v2022_01_01.aio.operations.PublicIPAddressesOperations + :ivar custom_ip_prefixes: CustomIPPrefixesOperations operations + :vartype custom_ip_prefixes: + azure.mgmt.network.v2022_01_01.aio.operations.CustomIPPrefixesOperations + :ivar ddos_custom_policies: DdosCustomPoliciesOperations operations + :vartype ddos_custom_policies: + azure.mgmt.network.v2022_01_01.aio.operations.DdosCustomPoliciesOperations + :ivar ddos_protection_plans: DdosProtectionPlansOperations operations + :vartype ddos_protection_plans: + azure.mgmt.network.v2022_01_01.aio.operations.DdosProtectionPlansOperations + :ivar dscp_configuration: DscpConfigurationOperations operations + :vartype dscp_configuration: + azure.mgmt.network.v2022_01_01.aio.operations.DscpConfigurationOperations + :ivar available_endpoint_services: AvailableEndpointServicesOperations operations + :vartype available_endpoint_services: + azure.mgmt.network.v2022_01_01.aio.operations.AvailableEndpointServicesOperations + :ivar express_route_circuit_authorizations: ExpressRouteCircuitAuthorizationsOperations + operations + :vartype express_route_circuit_authorizations: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteCircuitAuthorizationsOperations + :ivar express_route_circuit_peerings: ExpressRouteCircuitPeeringsOperations operations + :vartype express_route_circuit_peerings: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteCircuitPeeringsOperations + :ivar express_route_circuit_connections: ExpressRouteCircuitConnectionsOperations operations + :vartype express_route_circuit_connections: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteCircuitConnectionsOperations + :ivar peer_express_route_circuit_connections: PeerExpressRouteCircuitConnectionsOperations + operations + :vartype peer_express_route_circuit_connections: + azure.mgmt.network.v2022_01_01.aio.operations.PeerExpressRouteCircuitConnectionsOperations + :ivar express_route_circuits: ExpressRouteCircuitsOperations operations + :vartype express_route_circuits: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteCircuitsOperations + :ivar express_route_service_providers: ExpressRouteServiceProvidersOperations operations + :vartype express_route_service_providers: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteServiceProvidersOperations + :ivar express_route_cross_connections: ExpressRouteCrossConnectionsOperations operations + :vartype express_route_cross_connections: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteCrossConnectionsOperations + :ivar express_route_cross_connection_peerings: ExpressRouteCrossConnectionPeeringsOperations + operations + :vartype express_route_cross_connection_peerings: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteCrossConnectionPeeringsOperations + :ivar express_route_ports_locations: ExpressRoutePortsLocationsOperations operations + :vartype express_route_ports_locations: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRoutePortsLocationsOperations + :ivar express_route_ports: ExpressRoutePortsOperations operations + :vartype express_route_ports: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRoutePortsOperations + :ivar express_route_links: ExpressRouteLinksOperations operations + :vartype express_route_links: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteLinksOperations + :ivar express_route_port_authorizations: ExpressRoutePortAuthorizationsOperations operations + :vartype express_route_port_authorizations: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRoutePortAuthorizationsOperations + :ivar firewall_policies: FirewallPoliciesOperations operations + :vartype firewall_policies: + azure.mgmt.network.v2022_01_01.aio.operations.FirewallPoliciesOperations + :ivar firewall_policy_rule_collection_groups: FirewallPolicyRuleCollectionGroupsOperations + operations + :vartype firewall_policy_rule_collection_groups: + azure.mgmt.network.v2022_01_01.aio.operations.FirewallPolicyRuleCollectionGroupsOperations + :ivar firewall_policy_idps_signatures: FirewallPolicyIdpsSignaturesOperations operations + :vartype firewall_policy_idps_signatures: + azure.mgmt.network.v2022_01_01.aio.operations.FirewallPolicyIdpsSignaturesOperations + :ivar firewall_policy_idps_signatures_overrides: + FirewallPolicyIdpsSignaturesOverridesOperations operations + :vartype firewall_policy_idps_signatures_overrides: + azure.mgmt.network.v2022_01_01.aio.operations.FirewallPolicyIdpsSignaturesOverridesOperations + :ivar firewall_policy_idps_signatures_filter_values: + FirewallPolicyIdpsSignaturesFilterValuesOperations operations + :vartype firewall_policy_idps_signatures_filter_values: + azure.mgmt.network.v2022_01_01.aio.operations.FirewallPolicyIdpsSignaturesFilterValuesOperations + :ivar ip_allocations: IpAllocationsOperations operations + :vartype ip_allocations: azure.mgmt.network.v2022_01_01.aio.operations.IpAllocationsOperations + :ivar ip_groups: IpGroupsOperations operations + :vartype ip_groups: azure.mgmt.network.v2022_01_01.aio.operations.IpGroupsOperations + :ivar load_balancers: LoadBalancersOperations operations + :vartype load_balancers: azure.mgmt.network.v2022_01_01.aio.operations.LoadBalancersOperations + :ivar load_balancer_backend_address_pools: LoadBalancerBackendAddressPoolsOperations operations + :vartype load_balancer_backend_address_pools: + azure.mgmt.network.v2022_01_01.aio.operations.LoadBalancerBackendAddressPoolsOperations + :ivar load_balancer_frontend_ip_configurations: LoadBalancerFrontendIPConfigurationsOperations + operations + :vartype load_balancer_frontend_ip_configurations: + azure.mgmt.network.v2022_01_01.aio.operations.LoadBalancerFrontendIPConfigurationsOperations + :ivar inbound_nat_rules: InboundNatRulesOperations operations + :vartype inbound_nat_rules: + azure.mgmt.network.v2022_01_01.aio.operations.InboundNatRulesOperations + :ivar load_balancer_load_balancing_rules: LoadBalancerLoadBalancingRulesOperations operations + :vartype load_balancer_load_balancing_rules: + azure.mgmt.network.v2022_01_01.aio.operations.LoadBalancerLoadBalancingRulesOperations + :ivar load_balancer_outbound_rules: LoadBalancerOutboundRulesOperations operations + :vartype load_balancer_outbound_rules: + azure.mgmt.network.v2022_01_01.aio.operations.LoadBalancerOutboundRulesOperations + :ivar load_balancer_network_interfaces: LoadBalancerNetworkInterfacesOperations operations + :vartype load_balancer_network_interfaces: + azure.mgmt.network.v2022_01_01.aio.operations.LoadBalancerNetworkInterfacesOperations + :ivar load_balancer_probes: LoadBalancerProbesOperations operations + :vartype load_balancer_probes: + azure.mgmt.network.v2022_01_01.aio.operations.LoadBalancerProbesOperations + :ivar nat_gateways: NatGatewaysOperations operations + :vartype nat_gateways: azure.mgmt.network.v2022_01_01.aio.operations.NatGatewaysOperations + :ivar network_interface_ip_configurations: NetworkInterfaceIPConfigurationsOperations + operations + :vartype network_interface_ip_configurations: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkInterfaceIPConfigurationsOperations + :ivar network_interface_load_balancers: NetworkInterfaceLoadBalancersOperations operations + :vartype network_interface_load_balancers: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkInterfaceLoadBalancersOperations + :ivar network_interface_tap_configurations: NetworkInterfaceTapConfigurationsOperations + operations + :vartype network_interface_tap_configurations: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkInterfaceTapConfigurationsOperations :ivar network_managers: NetworkManagersOperations operations :vartype network_managers: - azure.mgmt.network.v2022_02_01_preview.aio.operations.NetworkManagersOperations + azure.mgmt.network.v2022_01_01.aio.operations.NetworkManagersOperations :ivar network_manager_commits: NetworkManagerCommitsOperations operations :vartype network_manager_commits: - azure.mgmt.network.v2022_02_01_preview.aio.operations.NetworkManagerCommitsOperations + azure.mgmt.network.v2022_01_01.aio.operations.NetworkManagerCommitsOperations :ivar network_manager_deployment_status: NetworkManagerDeploymentStatusOperations operations :vartype network_manager_deployment_status: - azure.mgmt.network.v2022_02_01_preview.aio.operations.NetworkManagerDeploymentStatusOperations - :ivar effective_virtual_networks: EffectiveVirtualNetworksOperations operations - :vartype effective_virtual_networks: - azure.mgmt.network.v2022_02_01_preview.aio.operations.EffectiveVirtualNetworksOperations + azure.mgmt.network.v2022_01_01.aio.operations.NetworkManagerDeploymentStatusOperations + :ivar subscription_network_manager_connections: SubscriptionNetworkManagerConnectionsOperations + operations + :vartype subscription_network_manager_connections: + azure.mgmt.network.v2022_01_01.aio.operations.SubscriptionNetworkManagerConnectionsOperations + :ivar management_group_network_manager_connections: + ManagementGroupNetworkManagerConnectionsOperations operations + :vartype management_group_network_manager_connections: + azure.mgmt.network.v2022_01_01.aio.operations.ManagementGroupNetworkManagerConnectionsOperations :ivar connectivity_configurations: ConnectivityConfigurationsOperations operations :vartype connectivity_configurations: - azure.mgmt.network.v2022_02_01_preview.aio.operations.ConnectivityConfigurationsOperations + azure.mgmt.network.v2022_01_01.aio.operations.ConnectivityConfigurationsOperations :ivar network_groups: NetworkGroupsOperations operations - :vartype network_groups: - azure.mgmt.network.v2022_02_01_preview.aio.operations.NetworkGroupsOperations - :ivar list_effective_virtual_networks: ListEffectiveVirtualNetworksOperations operations - :vartype list_effective_virtual_networks: - azure.mgmt.network.v2022_02_01_preview.aio.operations.ListEffectiveVirtualNetworksOperations + :vartype network_groups: azure.mgmt.network.v2022_01_01.aio.operations.NetworkGroupsOperations :ivar static_members: StaticMembersOperations operations - :vartype static_members: - azure.mgmt.network.v2022_02_01_preview.aio.operations.StaticMembersOperations - :ivar security_user_configurations: SecurityUserConfigurationsOperations operations - :vartype security_user_configurations: - azure.mgmt.network.v2022_02_01_preview.aio.operations.SecurityUserConfigurationsOperations - :ivar user_rule_collections: UserRuleCollectionsOperations operations - :vartype user_rule_collections: - azure.mgmt.network.v2022_02_01_preview.aio.operations.UserRuleCollectionsOperations - :ivar user_rules: UserRulesOperations operations - :vartype user_rules: azure.mgmt.network.v2022_02_01_preview.aio.operations.UserRulesOperations + :vartype static_members: azure.mgmt.network.v2022_01_01.aio.operations.StaticMembersOperations + :ivar scope_connections: ScopeConnectionsOperations operations + :vartype scope_connections: + azure.mgmt.network.v2022_01_01.aio.operations.ScopeConnectionsOperations :ivar security_admin_configurations: SecurityAdminConfigurationsOperations operations :vartype security_admin_configurations: - azure.mgmt.network.v2022_02_01_preview.aio.operations.SecurityAdminConfigurationsOperations + azure.mgmt.network.v2022_01_01.aio.operations.SecurityAdminConfigurationsOperations :ivar admin_rule_collections: AdminRuleCollectionsOperations operations :vartype admin_rule_collections: - azure.mgmt.network.v2022_02_01_preview.aio.operations.AdminRuleCollectionsOperations + azure.mgmt.network.v2022_01_01.aio.operations.AdminRuleCollectionsOperations :ivar admin_rules: AdminRulesOperations operations - :vartype admin_rules: - azure.mgmt.network.v2022_02_01_preview.aio.operations.AdminRulesOperations - :ivar subscription_network_manager_connections: SubscriptionNetworkManagerConnectionsOperations + :vartype admin_rules: azure.mgmt.network.v2022_01_01.aio.operations.AdminRulesOperations + :ivar network_profiles: NetworkProfilesOperations operations + :vartype network_profiles: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkProfilesOperations + :ivar network_security_groups: NetworkSecurityGroupsOperations operations + :vartype network_security_groups: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkSecurityGroupsOperations + :ivar security_rules: SecurityRulesOperations operations + :vartype security_rules: azure.mgmt.network.v2022_01_01.aio.operations.SecurityRulesOperations + :ivar default_security_rules: DefaultSecurityRulesOperations operations + :vartype default_security_rules: + azure.mgmt.network.v2022_01_01.aio.operations.DefaultSecurityRulesOperations + :ivar network_virtual_appliances: NetworkVirtualAppliancesOperations operations + :vartype network_virtual_appliances: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkVirtualAppliancesOperations + :ivar virtual_appliance_sites: VirtualApplianceSitesOperations operations + :vartype virtual_appliance_sites: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualApplianceSitesOperations + :ivar virtual_appliance_skus: VirtualApplianceSkusOperations operations + :vartype virtual_appliance_skus: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualApplianceSkusOperations + :ivar inbound_security_rule: InboundSecurityRuleOperations operations + :vartype inbound_security_rule: + azure.mgmt.network.v2022_01_01.aio.operations.InboundSecurityRuleOperations + :ivar network_watchers: NetworkWatchersOperations operations + :vartype network_watchers: + azure.mgmt.network.v2022_01_01.aio.operations.NetworkWatchersOperations + :ivar packet_captures: PacketCapturesOperations operations + :vartype packet_captures: + azure.mgmt.network.v2022_01_01.aio.operations.PacketCapturesOperations + :ivar connection_monitors: ConnectionMonitorsOperations operations + :vartype connection_monitors: + azure.mgmt.network.v2022_01_01.aio.operations.ConnectionMonitorsOperations + :ivar flow_logs: FlowLogsOperations operations + :vartype flow_logs: azure.mgmt.network.v2022_01_01.aio.operations.FlowLogsOperations + :ivar operations: Operations operations + :vartype operations: azure.mgmt.network.v2022_01_01.aio.operations.Operations + :ivar private_endpoints: PrivateEndpointsOperations operations + :vartype private_endpoints: + azure.mgmt.network.v2022_01_01.aio.operations.PrivateEndpointsOperations + :ivar available_private_endpoint_types: AvailablePrivateEndpointTypesOperations operations + :vartype available_private_endpoint_types: + azure.mgmt.network.v2022_01_01.aio.operations.AvailablePrivateEndpointTypesOperations + :ivar private_dns_zone_groups: PrivateDnsZoneGroupsOperations operations + :vartype private_dns_zone_groups: + azure.mgmt.network.v2022_01_01.aio.operations.PrivateDnsZoneGroupsOperations + :ivar private_link_services: PrivateLinkServicesOperations operations + :vartype private_link_services: + azure.mgmt.network.v2022_01_01.aio.operations.PrivateLinkServicesOperations + :ivar public_ip_prefixes: PublicIPPrefixesOperations operations + :vartype public_ip_prefixes: + azure.mgmt.network.v2022_01_01.aio.operations.PublicIPPrefixesOperations + :ivar route_filters: RouteFiltersOperations operations + :vartype route_filters: azure.mgmt.network.v2022_01_01.aio.operations.RouteFiltersOperations + :ivar route_filter_rules: RouteFilterRulesOperations operations + :vartype route_filter_rules: + azure.mgmt.network.v2022_01_01.aio.operations.RouteFilterRulesOperations + :ivar route_tables: RouteTablesOperations operations + :vartype route_tables: azure.mgmt.network.v2022_01_01.aio.operations.RouteTablesOperations + :ivar routes: RoutesOperations operations + :vartype routes: azure.mgmt.network.v2022_01_01.aio.operations.RoutesOperations + :ivar security_partner_providers: SecurityPartnerProvidersOperations operations + :vartype security_partner_providers: + azure.mgmt.network.v2022_01_01.aio.operations.SecurityPartnerProvidersOperations + :ivar bgp_service_communities: BgpServiceCommunitiesOperations operations + :vartype bgp_service_communities: + azure.mgmt.network.v2022_01_01.aio.operations.BgpServiceCommunitiesOperations + :ivar service_endpoint_policies: ServiceEndpointPoliciesOperations operations + :vartype service_endpoint_policies: + azure.mgmt.network.v2022_01_01.aio.operations.ServiceEndpointPoliciesOperations + :ivar service_endpoint_policy_definitions: ServiceEndpointPolicyDefinitionsOperations operations - :vartype subscription_network_manager_connections: - azure.mgmt.network.v2022_02_01_preview.aio.operations.SubscriptionNetworkManagerConnectionsOperations - :ivar management_group_network_manager_connections: - ManagementGroupNetworkManagerConnectionsOperations operations - :vartype management_group_network_manager_connections: - azure.mgmt.network.v2022_02_01_preview.aio.operations.ManagementGroupNetworkManagerConnectionsOperations - :ivar scope_connections: ScopeConnectionsOperations operations - :vartype scope_connections: - azure.mgmt.network.v2022_02_01_preview.aio.operations.ScopeConnectionsOperations + :vartype service_endpoint_policy_definitions: + azure.mgmt.network.v2022_01_01.aio.operations.ServiceEndpointPolicyDefinitionsOperations + :ivar service_tags: ServiceTagsOperations operations + :vartype service_tags: azure.mgmt.network.v2022_01_01.aio.operations.ServiceTagsOperations + :ivar service_tag_information: ServiceTagInformationOperations operations + :vartype service_tag_information: + azure.mgmt.network.v2022_01_01.aio.operations.ServiceTagInformationOperations + :ivar usages: UsagesOperations operations + :vartype usages: azure.mgmt.network.v2022_01_01.aio.operations.UsagesOperations + :ivar virtual_networks: VirtualNetworksOperations operations + :vartype virtual_networks: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualNetworksOperations + :ivar subnets: SubnetsOperations operations + :vartype subnets: azure.mgmt.network.v2022_01_01.aio.operations.SubnetsOperations + :ivar resource_navigation_links: ResourceNavigationLinksOperations operations + :vartype resource_navigation_links: + azure.mgmt.network.v2022_01_01.aio.operations.ResourceNavigationLinksOperations + :ivar service_association_links: ServiceAssociationLinksOperations operations + :vartype service_association_links: + azure.mgmt.network.v2022_01_01.aio.operations.ServiceAssociationLinksOperations + :ivar virtual_network_peerings: VirtualNetworkPeeringsOperations operations + :vartype virtual_network_peerings: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualNetworkPeeringsOperations + :ivar virtual_network_gateways: VirtualNetworkGatewaysOperations operations + :vartype virtual_network_gateways: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualNetworkGatewaysOperations + :ivar virtual_network_gateway_connections: VirtualNetworkGatewayConnectionsOperations + operations + :vartype virtual_network_gateway_connections: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualNetworkGatewayConnectionsOperations + :ivar local_network_gateways: LocalNetworkGatewaysOperations operations + :vartype local_network_gateways: + azure.mgmt.network.v2022_01_01.aio.operations.LocalNetworkGatewaysOperations + :ivar virtual_network_gateway_nat_rules: VirtualNetworkGatewayNatRulesOperations operations + :vartype virtual_network_gateway_nat_rules: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualNetworkGatewayNatRulesOperations + :ivar virtual_network_taps: VirtualNetworkTapsOperations operations + :vartype virtual_network_taps: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualNetworkTapsOperations + :ivar virtual_routers: VirtualRoutersOperations operations + :vartype virtual_routers: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualRoutersOperations + :ivar virtual_router_peerings: VirtualRouterPeeringsOperations operations + :vartype virtual_router_peerings: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualRouterPeeringsOperations + :ivar virtual_wans: VirtualWansOperations operations + :vartype virtual_wans: azure.mgmt.network.v2022_01_01.aio.operations.VirtualWansOperations + :ivar vpn_sites: VpnSitesOperations operations + :vartype vpn_sites: azure.mgmt.network.v2022_01_01.aio.operations.VpnSitesOperations + :ivar vpn_site_links: VpnSiteLinksOperations operations + :vartype vpn_site_links: azure.mgmt.network.v2022_01_01.aio.operations.VpnSiteLinksOperations + :ivar vpn_sites_configuration: VpnSitesConfigurationOperations operations + :vartype vpn_sites_configuration: + azure.mgmt.network.v2022_01_01.aio.operations.VpnSitesConfigurationOperations + :ivar vpn_server_configurations: VpnServerConfigurationsOperations operations + :vartype vpn_server_configurations: + azure.mgmt.network.v2022_01_01.aio.operations.VpnServerConfigurationsOperations + :ivar configuration_policy_groups: ConfigurationPolicyGroupsOperations operations + :vartype configuration_policy_groups: + azure.mgmt.network.v2022_01_01.aio.operations.ConfigurationPolicyGroupsOperations + :ivar virtual_hubs: VirtualHubsOperations operations + :vartype virtual_hubs: azure.mgmt.network.v2022_01_01.aio.operations.VirtualHubsOperations + :ivar hub_virtual_network_connections: HubVirtualNetworkConnectionsOperations operations + :vartype hub_virtual_network_connections: + azure.mgmt.network.v2022_01_01.aio.operations.HubVirtualNetworkConnectionsOperations + :ivar vpn_gateways: VpnGatewaysOperations operations + :vartype vpn_gateways: azure.mgmt.network.v2022_01_01.aio.operations.VpnGatewaysOperations + :ivar vpn_link_connections: VpnLinkConnectionsOperations operations + :vartype vpn_link_connections: + azure.mgmt.network.v2022_01_01.aio.operations.VpnLinkConnectionsOperations + :ivar vpn_connections: VpnConnectionsOperations operations + :vartype vpn_connections: + azure.mgmt.network.v2022_01_01.aio.operations.VpnConnectionsOperations + :ivar vpn_site_link_connections: VpnSiteLinkConnectionsOperations operations + :vartype vpn_site_link_connections: + azure.mgmt.network.v2022_01_01.aio.operations.VpnSiteLinkConnectionsOperations + :ivar nat_rules: NatRulesOperations operations + :vartype nat_rules: azure.mgmt.network.v2022_01_01.aio.operations.NatRulesOperations + :ivar p2_svpn_gateways: P2SVpnGatewaysOperations operations + :vartype p2_svpn_gateways: + azure.mgmt.network.v2022_01_01.aio.operations.P2SVpnGatewaysOperations + :ivar vpn_server_configurations_associated_with_virtual_wan: + VpnServerConfigurationsAssociatedWithVirtualWanOperations operations + :vartype vpn_server_configurations_associated_with_virtual_wan: + azure.mgmt.network.v2022_01_01.aio.operations.VpnServerConfigurationsAssociatedWithVirtualWanOperations + :ivar virtual_hub_route_table_v2_s: VirtualHubRouteTableV2SOperations operations + :vartype virtual_hub_route_table_v2_s: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualHubRouteTableV2SOperations + :ivar express_route_gateways: ExpressRouteGatewaysOperations operations + :vartype express_route_gateways: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteGatewaysOperations + :ivar express_route_connections: ExpressRouteConnectionsOperations operations + :vartype express_route_connections: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteConnectionsOperations + :ivar virtual_hub_bgp_connection: VirtualHubBgpConnectionOperations operations + :vartype virtual_hub_bgp_connection: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualHubBgpConnectionOperations + :ivar virtual_hub_bgp_connections: VirtualHubBgpConnectionsOperations operations + :vartype virtual_hub_bgp_connections: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualHubBgpConnectionsOperations + :ivar virtual_hub_ip_configuration: VirtualHubIpConfigurationOperations operations + :vartype virtual_hub_ip_configuration: + azure.mgmt.network.v2022_01_01.aio.operations.VirtualHubIpConfigurationOperations + :ivar hub_route_tables: HubRouteTablesOperations operations + :vartype hub_route_tables: + azure.mgmt.network.v2022_01_01.aio.operations.HubRouteTablesOperations + :ivar routing_intent: RoutingIntentOperations operations + :vartype routing_intent: azure.mgmt.network.v2022_01_01.aio.operations.RoutingIntentOperations + :ivar web_application_firewall_policies: WebApplicationFirewallPoliciesOperations operations + :vartype web_application_firewall_policies: + azure.mgmt.network.v2022_01_01.aio.operations.WebApplicationFirewallPoliciesOperations + :ivar express_route_provider_ports_location: ExpressRouteProviderPortsLocationOperations + operations + :vartype express_route_provider_ports_location: + azure.mgmt.network.v2022_01_01.aio.operations.ExpressRouteProviderPortsLocationOperations :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The subscription credentials which uniquely identify the Microsoft @@ -84,9 +406,8 @@ class NetworkManagementClient(NetworkManagementClientOperationsMixin): # pyli :type subscription_id: str :param base_url: Service URL. Default value is "https://management.azure.com". :type base_url: str - :keyword api_version: Api Version. Default value is "2022-02-01-preview". Note that overriding - this default value may result in unsupported behavior. - :paramtype api_version: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. """ def __init__( @@ -103,23 +424,133 @@ def __init__( self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) self._serialize.client_side_validation = False + self.application_gateways = ApplicationGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.application_gateway_private_link_resources = ApplicationGatewayPrivateLinkResourcesOperations(self._client, self._config, self._serialize, self._deserialize) + self.application_gateway_private_endpoint_connections = ApplicationGatewayPrivateEndpointConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.application_security_groups = ApplicationSecurityGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_delegations = AvailableDelegationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_resource_group_delegations = AvailableResourceGroupDelegationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_service_aliases = AvailableServiceAliasesOperations(self._client, self._config, self._serialize, self._deserialize) + self.azure_firewalls = AzureFirewallsOperations(self._client, self._config, self._serialize, self._deserialize) + self.azure_firewall_fqdn_tags = AzureFirewallFqdnTagsOperations(self._client, self._config, self._serialize, self._deserialize) + self.web_categories = WebCategoriesOperations(self._client, self._config, self._serialize, self._deserialize) + self.bastion_hosts = BastionHostsOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interfaces = NetworkInterfacesOperations(self._client, self._config, self._serialize, self._deserialize) + self.public_ip_addresses = PublicIPAddressesOperations(self._client, self._config, self._serialize, self._deserialize) + self.custom_ip_prefixes = CustomIPPrefixesOperations(self._client, self._config, self._serialize, self._deserialize) + self.ddos_custom_policies = DdosCustomPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.ddos_protection_plans = DdosProtectionPlansOperations(self._client, self._config, self._serialize, self._deserialize) + self.dscp_configuration = DscpConfigurationOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_endpoint_services = AvailableEndpointServicesOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuit_authorizations = ExpressRouteCircuitAuthorizationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuit_peerings = ExpressRouteCircuitPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuit_connections = ExpressRouteCircuitConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.peer_express_route_circuit_connections = PeerExpressRouteCircuitConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_circuits = ExpressRouteCircuitsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_service_providers = ExpressRouteServiceProvidersOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_cross_connections = ExpressRouteCrossConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_cross_connection_peerings = ExpressRouteCrossConnectionPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_ports_locations = ExpressRoutePortsLocationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_ports = ExpressRoutePortsOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_links = ExpressRouteLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_port_authorizations = ExpressRoutePortAuthorizationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policies = FirewallPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_rule_collection_groups = FirewallPolicyRuleCollectionGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_idps_signatures = FirewallPolicyIdpsSignaturesOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_idps_signatures_overrides = FirewallPolicyIdpsSignaturesOverridesOperations(self._client, self._config, self._serialize, self._deserialize) + self.firewall_policy_idps_signatures_filter_values = FirewallPolicyIdpsSignaturesFilterValuesOperations(self._client, self._config, self._serialize, self._deserialize) + self.ip_allocations = IpAllocationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.ip_groups = IpGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancers = LoadBalancersOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_backend_address_pools = LoadBalancerBackendAddressPoolsOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_frontend_ip_configurations = LoadBalancerFrontendIPConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.inbound_nat_rules = InboundNatRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_load_balancing_rules = LoadBalancerLoadBalancingRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_outbound_rules = LoadBalancerOutboundRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_network_interfaces = LoadBalancerNetworkInterfacesOperations(self._client, self._config, self._serialize, self._deserialize) + self.load_balancer_probes = LoadBalancerProbesOperations(self._client, self._config, self._serialize, self._deserialize) + self.nat_gateways = NatGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interface_ip_configurations = NetworkInterfaceIPConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interface_load_balancers = NetworkInterfaceLoadBalancersOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_interface_tap_configurations = NetworkInterfaceTapConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) self.network_managers = NetworkManagersOperations(self._client, self._config, self._serialize, self._deserialize) self.network_manager_commits = NetworkManagerCommitsOperations(self._client, self._config, self._serialize, self._deserialize) self.network_manager_deployment_status = NetworkManagerDeploymentStatusOperations(self._client, self._config, self._serialize, self._deserialize) - self.effective_virtual_networks = EffectiveVirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) + self.subscription_network_manager_connections = SubscriptionNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.management_group_network_manager_connections = ManagementGroupNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) self.connectivity_configurations = ConnectivityConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) self.network_groups = NetworkGroupsOperations(self._client, self._config, self._serialize, self._deserialize) - self.list_effective_virtual_networks = ListEffectiveVirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) self.static_members = StaticMembersOperations(self._client, self._config, self._serialize, self._deserialize) - self.security_user_configurations = SecurityUserConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) - self.user_rule_collections = UserRuleCollectionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.user_rules = UserRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.scope_connections = ScopeConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) self.security_admin_configurations = SecurityAdminConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) self.admin_rule_collections = AdminRuleCollectionsOperations(self._client, self._config, self._serialize, self._deserialize) self.admin_rules = AdminRulesOperations(self._client, self._config, self._serialize, self._deserialize) - self.subscription_network_manager_connections = SubscriptionNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.management_group_network_manager_connections = ManagementGroupNetworkManagerConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.scope_connections = ScopeConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_profiles = NetworkProfilesOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_security_groups = NetworkSecurityGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.security_rules = SecurityRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.default_security_rules = DefaultSecurityRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_virtual_appliances = NetworkVirtualAppliancesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_appliance_sites = VirtualApplianceSitesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_appliance_skus = VirtualApplianceSkusOperations(self._client, self._config, self._serialize, self._deserialize) + self.inbound_security_rule = InboundSecurityRuleOperations(self._client, self._config, self._serialize, self._deserialize) + self.network_watchers = NetworkWatchersOperations(self._client, self._config, self._serialize, self._deserialize) + self.packet_captures = PacketCapturesOperations(self._client, self._config, self._serialize, self._deserialize) + self.connection_monitors = ConnectionMonitorsOperations(self._client, self._config, self._serialize, self._deserialize) + self.flow_logs = FlowLogsOperations(self._client, self._config, self._serialize, self._deserialize) + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.private_endpoints = PrivateEndpointsOperations(self._client, self._config, self._serialize, self._deserialize) + self.available_private_endpoint_types = AvailablePrivateEndpointTypesOperations(self._client, self._config, self._serialize, self._deserialize) + self.private_dns_zone_groups = PrivateDnsZoneGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.private_link_services = PrivateLinkServicesOperations(self._client, self._config, self._serialize, self._deserialize) + self.public_ip_prefixes = PublicIPPrefixesOperations(self._client, self._config, self._serialize, self._deserialize) + self.route_filters = RouteFiltersOperations(self._client, self._config, self._serialize, self._deserialize) + self.route_filter_rules = RouteFilterRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.route_tables = RouteTablesOperations(self._client, self._config, self._serialize, self._deserialize) + self.routes = RoutesOperations(self._client, self._config, self._serialize, self._deserialize) + self.security_partner_providers = SecurityPartnerProvidersOperations(self._client, self._config, self._serialize, self._deserialize) + self.bgp_service_communities = BgpServiceCommunitiesOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_endpoint_policies = ServiceEndpointPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_endpoint_policy_definitions = ServiceEndpointPolicyDefinitionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_tags = ServiceTagsOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_tag_information = ServiceTagInformationOperations(self._client, self._config, self._serialize, self._deserialize) + self.usages = UsagesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_networks = VirtualNetworksOperations(self._client, self._config, self._serialize, self._deserialize) + self.subnets = SubnetsOperations(self._client, self._config, self._serialize, self._deserialize) + self.resource_navigation_links = ResourceNavigationLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.service_association_links = ServiceAssociationLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_peerings = VirtualNetworkPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_gateways = VirtualNetworkGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_gateway_connections = VirtualNetworkGatewayConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.local_network_gateways = LocalNetworkGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_gateway_nat_rules = VirtualNetworkGatewayNatRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_network_taps = VirtualNetworkTapsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_routers = VirtualRoutersOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_router_peerings = VirtualRouterPeeringsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_wans = VirtualWansOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_sites = VpnSitesOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_site_links = VpnSiteLinksOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_sites_configuration = VpnSitesConfigurationOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_server_configurations = VpnServerConfigurationsOperations(self._client, self._config, self._serialize, self._deserialize) + self.configuration_policy_groups = ConfigurationPolicyGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hubs = VirtualHubsOperations(self._client, self._config, self._serialize, self._deserialize) + self.hub_virtual_network_connections = HubVirtualNetworkConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_gateways = VpnGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_link_connections = VpnLinkConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_connections = VpnConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_site_link_connections = VpnSiteLinkConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.nat_rules = NatRulesOperations(self._client, self._config, self._serialize, self._deserialize) + self.p2_svpn_gateways = P2SVpnGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.vpn_server_configurations_associated_with_virtual_wan = VpnServerConfigurationsAssociatedWithVirtualWanOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_route_table_v2_s = VirtualHubRouteTableV2SOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_gateways = ExpressRouteGatewaysOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_connections = ExpressRouteConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_bgp_connection = VirtualHubBgpConnectionOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_bgp_connections = VirtualHubBgpConnectionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.virtual_hub_ip_configuration = VirtualHubIpConfigurationOperations(self._client, self._config, self._serialize, self._deserialize) + self.hub_route_tables = HubRouteTablesOperations(self._client, self._config, self._serialize, self._deserialize) + self.routing_intent = RoutingIntentOperations(self._client, self._config, self._serialize, self._deserialize) + self.web_application_firewall_policies = WebApplicationFirewallPoliciesOperations(self._client, self._config, self._serialize, self._deserialize) + self.express_route_provider_ports_location = ExpressRouteProviderPortsLocationOperations(self._client, self._config, self._serialize, self._deserialize) def _send_request( diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/__init__.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/__init__.py index 4a8edd7c584..eafdb11f5ad 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/__init__.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/__init__.py @@ -6,42 +6,262 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._network_managers_operations import NetworkManagersOperations -from ._network_manager_commits_operations import NetworkManagerCommitsOperations -from ._network_manager_deployment_status_operations import NetworkManagerDeploymentStatusOperations -from ._effective_virtual_networks_operations import EffectiveVirtualNetworksOperations -from ._network_management_client_operations import NetworkManagementClientOperationsMixin -from ._connectivity_configurations_operations import ConnectivityConfigurationsOperations -from ._network_groups_operations import NetworkGroupsOperations -from ._list_effective_virtual_networks_operations import ListEffectiveVirtualNetworksOperations -from ._static_members_operations import StaticMembersOperations -from ._security_user_configurations_operations import SecurityUserConfigurationsOperations -from ._user_rule_collections_operations import UserRuleCollectionsOperations -from ._user_rules_operations import UserRulesOperations -from ._security_admin_configurations_operations import SecurityAdminConfigurationsOperations -from ._admin_rule_collections_operations import AdminRuleCollectionsOperations -from ._admin_rules_operations import AdminRulesOperations -from ._subscription_network_manager_connections_operations import SubscriptionNetworkManagerConnectionsOperations -from ._management_group_network_manager_connections_operations import ManagementGroupNetworkManagerConnectionsOperations -from ._scope_connections_operations import ScopeConnectionsOperations +from ._operations import ApplicationGatewaysOperations +from ._operations import ApplicationGatewayPrivateLinkResourcesOperations +from ._operations import ApplicationGatewayPrivateEndpointConnectionsOperations +from ._operations import ApplicationSecurityGroupsOperations +from ._operations import AvailableDelegationsOperations +from ._operations import AvailableResourceGroupDelegationsOperations +from ._operations import AvailableServiceAliasesOperations +from ._operations import AzureFirewallsOperations +from ._operations import AzureFirewallFqdnTagsOperations +from ._operations import WebCategoriesOperations +from ._operations import BastionHostsOperations +from ._operations import NetworkManagementClientOperationsMixin +from ._operations import NetworkInterfacesOperations +from ._operations import PublicIPAddressesOperations +from ._operations import CustomIPPrefixesOperations +from ._operations import DdosCustomPoliciesOperations +from ._operations import DdosProtectionPlansOperations +from ._operations import DscpConfigurationOperations +from ._operations import AvailableEndpointServicesOperations +from ._operations import ExpressRouteCircuitAuthorizationsOperations +from ._operations import ExpressRouteCircuitPeeringsOperations +from ._operations import ExpressRouteCircuitConnectionsOperations +from ._operations import PeerExpressRouteCircuitConnectionsOperations +from ._operations import ExpressRouteCircuitsOperations +from ._operations import ExpressRouteServiceProvidersOperations +from ._operations import ExpressRouteCrossConnectionsOperations +from ._operations import ExpressRouteCrossConnectionPeeringsOperations +from ._operations import ExpressRoutePortsLocationsOperations +from ._operations import ExpressRoutePortsOperations +from ._operations import ExpressRouteLinksOperations +from ._operations import ExpressRoutePortAuthorizationsOperations +from ._operations import FirewallPoliciesOperations +from ._operations import FirewallPolicyRuleCollectionGroupsOperations +from ._operations import FirewallPolicyIdpsSignaturesOperations +from ._operations import FirewallPolicyIdpsSignaturesOverridesOperations +from ._operations import FirewallPolicyIdpsSignaturesFilterValuesOperations +from ._operations import IpAllocationsOperations +from ._operations import IpGroupsOperations +from ._operations import LoadBalancersOperations +from ._operations import LoadBalancerBackendAddressPoolsOperations +from ._operations import LoadBalancerFrontendIPConfigurationsOperations +from ._operations import InboundNatRulesOperations +from ._operations import LoadBalancerLoadBalancingRulesOperations +from ._operations import LoadBalancerOutboundRulesOperations +from ._operations import LoadBalancerNetworkInterfacesOperations +from ._operations import LoadBalancerProbesOperations +from ._operations import NatGatewaysOperations +from ._operations import NetworkInterfaceIPConfigurationsOperations +from ._operations import NetworkInterfaceLoadBalancersOperations +from ._operations import NetworkInterfaceTapConfigurationsOperations +from ._operations import NetworkManagersOperations +from ._operations import NetworkManagerCommitsOperations +from ._operations import NetworkManagerDeploymentStatusOperations +from ._operations import SubscriptionNetworkManagerConnectionsOperations +from ._operations import ManagementGroupNetworkManagerConnectionsOperations +from ._operations import ConnectivityConfigurationsOperations +from ._operations import NetworkGroupsOperations +from ._operations import StaticMembersOperations +from ._operations import ScopeConnectionsOperations +from ._operations import SecurityAdminConfigurationsOperations +from ._operations import AdminRuleCollectionsOperations +from ._operations import AdminRulesOperations +from ._operations import NetworkProfilesOperations +from ._operations import NetworkSecurityGroupsOperations +from ._operations import SecurityRulesOperations +from ._operations import DefaultSecurityRulesOperations +from ._operations import NetworkVirtualAppliancesOperations +from ._operations import VirtualApplianceSitesOperations +from ._operations import VirtualApplianceSkusOperations +from ._operations import InboundSecurityRuleOperations +from ._operations import NetworkWatchersOperations +from ._operations import PacketCapturesOperations +from ._operations import ConnectionMonitorsOperations +from ._operations import FlowLogsOperations +from ._operations import Operations +from ._operations import PrivateEndpointsOperations +from ._operations import AvailablePrivateEndpointTypesOperations +from ._operations import PrivateDnsZoneGroupsOperations +from ._operations import PrivateLinkServicesOperations +from ._operations import PublicIPPrefixesOperations +from ._operations import RouteFiltersOperations +from ._operations import RouteFilterRulesOperations +from ._operations import RouteTablesOperations +from ._operations import RoutesOperations +from ._operations import SecurityPartnerProvidersOperations +from ._operations import BgpServiceCommunitiesOperations +from ._operations import ServiceEndpointPoliciesOperations +from ._operations import ServiceEndpointPolicyDefinitionsOperations +from ._operations import ServiceTagsOperations +from ._operations import ServiceTagInformationOperations +from ._operations import UsagesOperations +from ._operations import VirtualNetworksOperations +from ._operations import SubnetsOperations +from ._operations import ResourceNavigationLinksOperations +from ._operations import ServiceAssociationLinksOperations +from ._operations import VirtualNetworkPeeringsOperations +from ._operations import VirtualNetworkGatewaysOperations +from ._operations import VirtualNetworkGatewayConnectionsOperations +from ._operations import LocalNetworkGatewaysOperations +from ._operations import VirtualNetworkGatewayNatRulesOperations +from ._operations import VirtualNetworkTapsOperations +from ._operations import VirtualRoutersOperations +from ._operations import VirtualRouterPeeringsOperations +from ._operations import VirtualWansOperations +from ._operations import VpnSitesOperations +from ._operations import VpnSiteLinksOperations +from ._operations import VpnSitesConfigurationOperations +from ._operations import VpnServerConfigurationsOperations +from ._operations import ConfigurationPolicyGroupsOperations +from ._operations import VirtualHubsOperations +from ._operations import HubVirtualNetworkConnectionsOperations +from ._operations import VpnGatewaysOperations +from ._operations import VpnLinkConnectionsOperations +from ._operations import VpnConnectionsOperations +from ._operations import VpnSiteLinkConnectionsOperations +from ._operations import NatRulesOperations +from ._operations import P2SVpnGatewaysOperations +from ._operations import VpnServerConfigurationsAssociatedWithVirtualWanOperations +from ._operations import VirtualHubRouteTableV2SOperations +from ._operations import ExpressRouteGatewaysOperations +from ._operations import ExpressRouteConnectionsOperations +from ._operations import VirtualHubBgpConnectionOperations +from ._operations import VirtualHubBgpConnectionsOperations +from ._operations import VirtualHubIpConfigurationOperations +from ._operations import HubRouteTablesOperations +from ._operations import RoutingIntentOperations +from ._operations import WebApplicationFirewallPoliciesOperations +from ._operations import ExpressRouteProviderPortsLocationOperations __all__ = [ + 'ApplicationGatewaysOperations', + 'ApplicationGatewayPrivateLinkResourcesOperations', + 'ApplicationGatewayPrivateEndpointConnectionsOperations', + 'ApplicationSecurityGroupsOperations', + 'AvailableDelegationsOperations', + 'AvailableResourceGroupDelegationsOperations', + 'AvailableServiceAliasesOperations', + 'AzureFirewallsOperations', + 'AzureFirewallFqdnTagsOperations', + 'WebCategoriesOperations', + 'BastionHostsOperations', + 'NetworkManagementClientOperationsMixin', + 'NetworkInterfacesOperations', + 'PublicIPAddressesOperations', + 'CustomIPPrefixesOperations', + 'DdosCustomPoliciesOperations', + 'DdosProtectionPlansOperations', + 'DscpConfigurationOperations', + 'AvailableEndpointServicesOperations', + 'ExpressRouteCircuitAuthorizationsOperations', + 'ExpressRouteCircuitPeeringsOperations', + 'ExpressRouteCircuitConnectionsOperations', + 'PeerExpressRouteCircuitConnectionsOperations', + 'ExpressRouteCircuitsOperations', + 'ExpressRouteServiceProvidersOperations', + 'ExpressRouteCrossConnectionsOperations', + 'ExpressRouteCrossConnectionPeeringsOperations', + 'ExpressRoutePortsLocationsOperations', + 'ExpressRoutePortsOperations', + 'ExpressRouteLinksOperations', + 'ExpressRoutePortAuthorizationsOperations', + 'FirewallPoliciesOperations', + 'FirewallPolicyRuleCollectionGroupsOperations', + 'FirewallPolicyIdpsSignaturesOperations', + 'FirewallPolicyIdpsSignaturesOverridesOperations', + 'FirewallPolicyIdpsSignaturesFilterValuesOperations', + 'IpAllocationsOperations', + 'IpGroupsOperations', + 'LoadBalancersOperations', + 'LoadBalancerBackendAddressPoolsOperations', + 'LoadBalancerFrontendIPConfigurationsOperations', + 'InboundNatRulesOperations', + 'LoadBalancerLoadBalancingRulesOperations', + 'LoadBalancerOutboundRulesOperations', + 'LoadBalancerNetworkInterfacesOperations', + 'LoadBalancerProbesOperations', + 'NatGatewaysOperations', + 'NetworkInterfaceIPConfigurationsOperations', + 'NetworkInterfaceLoadBalancersOperations', + 'NetworkInterfaceTapConfigurationsOperations', 'NetworkManagersOperations', 'NetworkManagerCommitsOperations', 'NetworkManagerDeploymentStatusOperations', - 'EffectiveVirtualNetworksOperations', - 'NetworkManagementClientOperationsMixin', + 'SubscriptionNetworkManagerConnectionsOperations', + 'ManagementGroupNetworkManagerConnectionsOperations', 'ConnectivityConfigurationsOperations', 'NetworkGroupsOperations', - 'ListEffectiveVirtualNetworksOperations', 'StaticMembersOperations', - 'SecurityUserConfigurationsOperations', - 'UserRuleCollectionsOperations', - 'UserRulesOperations', + 'ScopeConnectionsOperations', 'SecurityAdminConfigurationsOperations', 'AdminRuleCollectionsOperations', 'AdminRulesOperations', - 'SubscriptionNetworkManagerConnectionsOperations', - 'ManagementGroupNetworkManagerConnectionsOperations', - 'ScopeConnectionsOperations', + 'NetworkProfilesOperations', + 'NetworkSecurityGroupsOperations', + 'SecurityRulesOperations', + 'DefaultSecurityRulesOperations', + 'NetworkVirtualAppliancesOperations', + 'VirtualApplianceSitesOperations', + 'VirtualApplianceSkusOperations', + 'InboundSecurityRuleOperations', + 'NetworkWatchersOperations', + 'PacketCapturesOperations', + 'ConnectionMonitorsOperations', + 'FlowLogsOperations', + 'Operations', + 'PrivateEndpointsOperations', + 'AvailablePrivateEndpointTypesOperations', + 'PrivateDnsZoneGroupsOperations', + 'PrivateLinkServicesOperations', + 'PublicIPPrefixesOperations', + 'RouteFiltersOperations', + 'RouteFilterRulesOperations', + 'RouteTablesOperations', + 'RoutesOperations', + 'SecurityPartnerProvidersOperations', + 'BgpServiceCommunitiesOperations', + 'ServiceEndpointPoliciesOperations', + 'ServiceEndpointPolicyDefinitionsOperations', + 'ServiceTagsOperations', + 'ServiceTagInformationOperations', + 'UsagesOperations', + 'VirtualNetworksOperations', + 'SubnetsOperations', + 'ResourceNavigationLinksOperations', + 'ServiceAssociationLinksOperations', + 'VirtualNetworkPeeringsOperations', + 'VirtualNetworkGatewaysOperations', + 'VirtualNetworkGatewayConnectionsOperations', + 'LocalNetworkGatewaysOperations', + 'VirtualNetworkGatewayNatRulesOperations', + 'VirtualNetworkTapsOperations', + 'VirtualRoutersOperations', + 'VirtualRouterPeeringsOperations', + 'VirtualWansOperations', + 'VpnSitesOperations', + 'VpnSiteLinksOperations', + 'VpnSitesConfigurationOperations', + 'VpnServerConfigurationsOperations', + 'ConfigurationPolicyGroupsOperations', + 'VirtualHubsOperations', + 'HubVirtualNetworkConnectionsOperations', + 'VpnGatewaysOperations', + 'VpnLinkConnectionsOperations', + 'VpnConnectionsOperations', + 'VpnSiteLinkConnectionsOperations', + 'NatRulesOperations', + 'P2SVpnGatewaysOperations', + 'VpnServerConfigurationsAssociatedWithVirtualWanOperations', + 'VirtualHubRouteTableV2SOperations', + 'ExpressRouteGatewaysOperations', + 'ExpressRouteConnectionsOperations', + 'VirtualHubBgpConnectionOperations', + 'VirtualHubBgpConnectionsOperations', + 'VirtualHubIpConfigurationOperations', + 'HubRouteTablesOperations', + 'RoutingIntentOperations', + 'WebApplicationFirewallPoliciesOperations', + 'ExpressRouteProviderPortsLocationOperations', ] diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_admin_rule_collections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_admin_rule_collections_operations.py deleted file mode 100644 index 7cd4a963cf3..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_admin_rule_collections_operations.py +++ /dev/null @@ -1,360 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._admin_rule_collections_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class AdminRuleCollectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`admin_rule_collections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.AdminRuleCollectionListResult"]: - """Lists all the rule collections in a security admin configuration, in a paginated format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AdminRuleCollectionListResult or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("AdminRuleCollectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections"} # type: ignore - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - **kwargs: Any - ) -> "_models.AdminRuleCollection": - """Gets a network manager security admin configuration rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AdminRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('AdminRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_collection: "_models.AdminRuleCollection", - **kwargs: Any - ) -> "_models.AdminRuleCollection": - """Creates or updates an admin rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_collection: The Rule Collection to create or update. - :type rule_collection: ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AdminRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(rule_collection, 'AdminRuleCollection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('AdminRuleCollection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('AdminRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes an admin rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_admin_rules_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_admin_rules_operations.py deleted file mode 100644 index ea07ba4556d..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_admin_rules_operations.py +++ /dev/null @@ -1,377 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._admin_rules_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class AdminRulesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`admin_rules` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.AdminRuleListResult"]: - """List all network manager security configuration admin rules. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AdminRuleListResult or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("AdminRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules"} # type: ignore - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - **kwargs: Any - ) -> "_models.BaseAdminRule": - """Gets a network manager security configuration admin rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseAdminRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('BaseAdminRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - admin_rule: "_models.BaseAdminRule", - **kwargs: Any - ) -> "_models.BaseAdminRule": - """Creates or updates an admin rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param admin_rule: The admin rule to create or update. - :type admin_rule: ~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseAdminRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(admin_rule, 'BaseAdminRule') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('BaseAdminRule', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('BaseAdminRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes an admin rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_connectivity_configurations_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_connectivity_configurations_operations.py deleted file mode 100644 index 8dc66f04783..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_connectivity_configurations_operations.py +++ /dev/null @@ -1,344 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._connectivity_configurations_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class ConnectivityConfigurationsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`connectivity_configurations` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any - ) -> "_models.ConnectivityConfiguration": - """Gets a Network Connectivity Configuration, specified by the resource group, network manager - name, and connectivity Configuration name. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager connectivity configuration. - :type configuration_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ConnectivityConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - connectivity_configuration: "_models.ConnectivityConfiguration", - **kwargs: Any - ) -> "_models.ConnectivityConfiguration": - """Creates/Updates a new network manager connectivity configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager connectivity configuration. - :type configuration_name: str - :param connectivity_configuration: Parameters supplied to create/update a network manager - connectivity configuration. - :type connectivity_configuration: - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ConnectivityConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(connectivity_configuration, 'ConnectivityConfiguration') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager connectivity configuration, specified by the resource group, network - manager name, and connectivity configuration name. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager connectivity configuration. - :type configuration_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.ConnectivityConfigurationListResult"]: - """Lists all the network manager connectivity configuration in a specified network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ConnectivityConfigurationListResult or the result - of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfigurationListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ConnectivityConfigurationListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_effective_virtual_networks_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_effective_virtual_networks_operations.py deleted file mode 100644 index 7774737b6c0..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_effective_virtual_networks_operations.py +++ /dev/null @@ -1,120 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._effective_virtual_networks_operations import build_list_by_network_manager_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class EffectiveVirtualNetworksOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`effective_virtual_networks` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def list_by_network_manager( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.EffectiveVirtualNetworksParameter", - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> "_models.EffectiveVirtualNetworksListResult": - """List effective virtual networks in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Effective Virtual Networks Parameter. - :type parameters: - ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetworksParameter - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: EffectiveVirtualNetworksListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetworksListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveVirtualNetworksListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'EffectiveVirtualNetworksParameter') - - request = build_list_by_network_manager_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - top=top, - skip_token=skip_token, - template_url=self.list_by_network_manager.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('EffectiveVirtualNetworksListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_by_network_manager.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listEffectiveVirtualNetworks"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_list_effective_virtual_networks_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_list_effective_virtual_networks_operations.py deleted file mode 100644 index 526b4ee3b5c..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_list_effective_virtual_networks_operations.py +++ /dev/null @@ -1,111 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._list_effective_virtual_networks_operations import build_by_network_group_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class ListEffectiveVirtualNetworksOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`list_effective_virtual_networks` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def by_network_group( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - parameters: "_models.QueryRequestOptions", - **kwargs: Any - ) -> "_models.EffectiveVirtualNetworksListResult": - """Lists all effective virtual networks by specified network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param parameters: Parameters supplied to list correct page. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.QueryRequestOptions - :keyword callable cls: A custom type or function that will be passed the direct response - :return: EffectiveVirtualNetworksListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetworksListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveVirtualNetworksListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'QueryRequestOptions') - - request = build_by_network_group_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.by_network_group.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('EffectiveVirtualNetworksListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - by_network_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/listEffectiveVirtualNetworks"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_management_group_network_manager_connections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_management_group_network_manager_connections_operations.py deleted file mode 100644 index 8a9f8c82098..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_management_group_network_manager_connections_operations.py +++ /dev/null @@ -1,316 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._management_group_network_manager_connections_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class ManagementGroupNetworkManagerConnectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`management_group_network_manager_connections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def create_or_update( - self, - management_group_id: str, - network_manager_connection_name: str, - parameters: "_models.NetworkManagerConnection", - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Create a connection to a cross tenant network manager. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :param parameters: Network manager connection to be created/updated. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerConnection') - - request = build_create_or_update_request( - management_group_id=management_group_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace_async - async def get( - self, - management_group_id: str, - network_manager_connection_name: str, - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Get a specified connection created by this management group. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - management_group_id=management_group_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - management_group_id: str, - network_manager_connection_name: str, - **kwargs: Any - ) -> None: - """Delete specified pending connection created by this management group. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - management_group_id=management_group_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def list( - self, - management_group_id: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.NetworkManagerConnectionListResult"]: - """List all network manager connections created by this management group. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerConnectionListResult or the result - of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - management_group_id=management_group_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - management_group_id=management_group_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_groups_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_groups_operations.py deleted file mode 100644 index 368fa3d02c2..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_groups_operations.py +++ /dev/null @@ -1,351 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._network_groups_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class NetworkGroupsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`network_groups` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - **kwargs: Any - ) -> "_models.NetworkGroup": - """Gets the specified network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkGroup, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkGroup', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - parameters: "_models.NetworkGroup", - if_match: Optional[str] = None, - **kwargs: Any - ) -> "_models.NetworkGroup": - """Creates or updates a network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param parameters: Parameters supplied to the specify which network group need to create. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup - :param if_match: The ETag of the transformation. Omit this value to always overwrite the - current resource. Specify the last-seen ETag value to prevent accidentally overwriting - concurrent changes. Default value is None. - :type if_match: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkGroup, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkGroup') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - content_type=content_type, - json=_json, - if_match=if_match, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 200: - response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) - - deserialized = self._deserialize('NetworkGroup', pipeline_response) - - if response.status_code == 201: - response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) - - deserialized = self._deserialize('NetworkGroup', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, response_headers) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.NetworkGroupListResult"]: - """Lists the specified network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkGroupListResult or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroupListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroupListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkGroupListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_management_client_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_management_client_operations.py deleted file mode 100644 index 7e571777aa9..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_management_client_operations.py +++ /dev/null @@ -1,353 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._network_management_client_operations import build_list_active_connectivity_configurations_request, build_list_active_security_admin_rules_request, build_list_active_security_user_rules_request, build_list_network_manager_effective_connectivity_configurations_request, build_list_network_manager_effective_security_admin_rules_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class NetworkManagementClientOperationsMixin: - - @distributed_trace_async - async def list_active_connectivity_configurations( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.ActiveConfigurationParameter", - **kwargs: Any - ) -> "_models.ActiveConnectivityConfigurationsListResult": - """Lists active connectivity configurations in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Active Configuration Parameter. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConfigurationParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActiveConnectivityConfigurationsListResult, or the result of cls(response) - :rtype: - ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConnectivityConfigurationsListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveConnectivityConfigurationsListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') - - request = build_list_active_connectivity_configurations_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_active_connectivity_configurations.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActiveConnectivityConfigurationsListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_active_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveConnectivityConfigurations"} # type: ignore - - - @distributed_trace_async - async def list_active_security_admin_rules( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.ActiveConfigurationParameter", - **kwargs: Any - ) -> "_models.ActiveSecurityAdminRulesListResult": - """Lists active security admin rules in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Active Configuration Parameter. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConfigurationParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActiveSecurityAdminRulesListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveSecurityAdminRulesListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveSecurityAdminRulesListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') - - request = build_list_active_security_admin_rules_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_active_security_admin_rules.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActiveSecurityAdminRulesListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_active_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityAdminRules"} # type: ignore - - - @distributed_trace_async - async def list_active_security_user_rules( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.ActiveConfigurationParameter", - **kwargs: Any - ) -> "_models.ActiveSecurityUserRulesListResult": - """Lists Active Security User Rules in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Active Configuration Parameter. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConfigurationParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActiveSecurityUserRulesListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveSecurityUserRulesListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveSecurityUserRulesListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') - - request = build_list_active_security_user_rules_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_active_security_user_rules.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActiveSecurityUserRulesListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_active_security_user_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityUserRules"} # type: ignore - - - @distributed_trace_async - async def list_network_manager_effective_connectivity_configurations( - self, - resource_group_name: str, - virtual_network_name: str, - parameters: "_models.QueryRequestOptions", - **kwargs: Any - ) -> "_models.NetworkManagerEffectiveConnectivityConfigurationListResult": - """List all effective connectivity configurations applied on a virtual network. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param virtual_network_name: The name of the virtual network. - :type virtual_network_name: str - :param parameters: Parameters supplied to list correct page. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.QueryRequestOptions - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerEffectiveConnectivityConfigurationListResult, or the result of - cls(response) - :rtype: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerEffectiveConnectivityConfigurationListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveConnectivityConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'QueryRequestOptions') - - request = build_list_network_manager_effective_connectivity_configurations_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - virtual_network_name=virtual_network_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_network_manager_effective_connectivity_configurations.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerEffectiveConnectivityConfigurationListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_network_manager_effective_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveConnectivityConfigurations"} # type: ignore - - - @distributed_trace_async - async def list_network_manager_effective_security_admin_rules( - self, - resource_group_name: str, - virtual_network_name: str, - parameters: "_models.QueryRequestOptions", - **kwargs: Any - ) -> "_models.NetworkManagerEffectiveSecurityAdminRulesListResult": - """List all effective security admin rules applied on a virtual network. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param virtual_network_name: The name of the virtual network. - :type virtual_network_name: str - :param parameters: Parameters supplied to list correct page. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.QueryRequestOptions - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerEffectiveSecurityAdminRulesListResult, or the result of cls(response) - :rtype: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerEffectiveSecurityAdminRulesListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveSecurityAdminRulesListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'QueryRequestOptions') - - request = build_list_network_manager_effective_security_admin_rules_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - virtual_network_name=virtual_network_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_network_manager_effective_security_admin_rules.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerEffectiveSecurityAdminRulesListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_network_manager_effective_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveSecurityAdminRules"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_manager_commits_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_manager_commits_operations.py deleted file mode 100644 index e43909d9a03..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_manager_commits_operations.py +++ /dev/null @@ -1,107 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._network_manager_commits_operations import build_post_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class NetworkManagerCommitsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`network_manager_commits` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def post( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.NetworkManagerCommit", - **kwargs: Any - ) -> "_models.NetworkManagerCommit": - """Post a Network Manager Commit. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which Managed Network commit is. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerCommit - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerCommit, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerCommit - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerCommit"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerCommit') - - request = build_post_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.post.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - post.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_manager_deployment_status_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_manager_deployment_status_operations.py deleted file mode 100644 index 9d3a7729164..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_manager_deployment_status_operations.py +++ /dev/null @@ -1,108 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._network_manager_deployment_status_operations import build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class NetworkManagerDeploymentStatusOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`network_manager_deployment_status` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def list( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.NetworkManagerDeploymentStatusParameter", - **kwargs: Any - ) -> "_models.NetworkManagerDeploymentStatusListResult": - """Post to List of Network Manager Deployment Status. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which Managed Network deployment status is. - :type parameters: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerDeploymentStatusParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerDeploymentStatusListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerDeploymentStatusListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerDeploymentStatusListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerDeploymentStatusParameter') - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerDeploymentStatusListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listDeploymentStatus"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_managers_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_managers_operations.py deleted file mode 100644 index ae31e884cce..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_network_managers_operations.py +++ /dev/null @@ -1,475 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._network_managers_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_by_subscription_request, build_list_request, build_patch_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class NetworkManagersOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`network_managers` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - **kwargs: Any - ) -> "_models.NetworkManager": - """Gets the specified Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManager, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.NetworkManager", - **kwargs: Any - ) -> "_models.NetworkManager": - """Creates or updates a Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which network manager is. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManager, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManager') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace_async - async def patch( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.PatchObject", - **kwargs: Any - ) -> "_models.NetworkManager": - """Patch NetworkManager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which network manager is. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.PatchObject - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManager, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'PatchObject') - - request = build_patch_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.patch.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - patch.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace - def list_by_subscription( - self, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.NetworkManagerListResult"]: - """List all network managers in a subscription. - - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerListResult or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_by_subscription_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list_by_subscription.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_by_subscription_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagers"} # type: ignore - - @distributed_trace - def list( - self, - resource_group_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.NetworkManagerListResult"]: - """List network managers in a resource group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerListResult or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_operations.py new file mode 100644 index 00000000000..876b293cca3 --- /dev/null +++ b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_operations.py @@ -0,0 +1,59083 @@ +# pylint: disable=too-many-lines +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, List, Optional, TypeVar, Union + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models as _models +from ..._vendor import _convert_request +from ...operations._operations import build_admin_rule_collections_create_or_update_request, build_admin_rule_collections_delete_request_initial, build_admin_rule_collections_get_request, build_admin_rule_collections_list_request, build_admin_rules_create_or_update_request, build_admin_rules_delete_request_initial, build_admin_rules_get_request, build_admin_rules_list_request, build_application_gateway_private_endpoint_connections_delete_request_initial, build_application_gateway_private_endpoint_connections_get_request, build_application_gateway_private_endpoint_connections_list_request, build_application_gateway_private_endpoint_connections_update_request_initial, build_application_gateway_private_link_resources_list_request, build_application_gateways_backend_health_on_demand_request_initial, build_application_gateways_backend_health_request_initial, build_application_gateways_create_or_update_request_initial, build_application_gateways_delete_request_initial, build_application_gateways_get_request, build_application_gateways_get_ssl_predefined_policy_request, build_application_gateways_list_all_request, build_application_gateways_list_available_request_headers_request, build_application_gateways_list_available_response_headers_request, build_application_gateways_list_available_server_variables_request, build_application_gateways_list_available_ssl_options_request, build_application_gateways_list_available_ssl_predefined_policies_request, build_application_gateways_list_available_waf_rule_sets_request, build_application_gateways_list_request, build_application_gateways_start_request_initial, build_application_gateways_stop_request_initial, build_application_gateways_update_tags_request, build_application_security_groups_create_or_update_request_initial, build_application_security_groups_delete_request_initial, build_application_security_groups_get_request, build_application_security_groups_list_all_request, build_application_security_groups_list_request, build_application_security_groups_update_tags_request, build_available_delegations_list_request, build_available_endpoint_services_list_request, build_available_private_endpoint_types_list_by_resource_group_request, build_available_private_endpoint_types_list_request, build_available_resource_group_delegations_list_request, build_available_service_aliases_list_by_resource_group_request, build_available_service_aliases_list_request, build_azure_firewall_fqdn_tags_list_all_request, build_azure_firewalls_create_or_update_request_initial, build_azure_firewalls_delete_request_initial, build_azure_firewalls_get_request, build_azure_firewalls_list_all_request, build_azure_firewalls_list_learned_prefixes_request_initial, build_azure_firewalls_list_request, build_azure_firewalls_update_tags_request_initial, build_bastion_hosts_create_or_update_request_initial, build_bastion_hosts_delete_request_initial, build_bastion_hosts_get_request, build_bastion_hosts_list_by_resource_group_request, build_bastion_hosts_list_request, build_bastion_hosts_update_tags_request_initial, build_bgp_service_communities_list_request, build_check_dns_name_availability_request, build_configuration_policy_groups_create_or_update_request_initial, build_configuration_policy_groups_delete_request_initial, build_configuration_policy_groups_get_request, build_configuration_policy_groups_list_by_vpn_server_configuration_request, build_connection_monitors_create_or_update_request_initial, build_connection_monitors_delete_request_initial, build_connection_monitors_get_request, build_connection_monitors_list_request, build_connection_monitors_query_request_initial, build_connection_monitors_start_request_initial, build_connection_monitors_stop_request_initial, build_connection_monitors_update_tags_request, build_connectivity_configurations_create_or_update_request, build_connectivity_configurations_delete_request_initial, build_connectivity_configurations_get_request, build_connectivity_configurations_list_request, build_custom_ip_prefixes_create_or_update_request_initial, build_custom_ip_prefixes_delete_request_initial, build_custom_ip_prefixes_get_request, build_custom_ip_prefixes_list_all_request, build_custom_ip_prefixes_list_request, build_custom_ip_prefixes_update_tags_request, build_ddos_custom_policies_create_or_update_request_initial, build_ddos_custom_policies_delete_request_initial, build_ddos_custom_policies_get_request, build_ddos_custom_policies_update_tags_request, build_ddos_protection_plans_create_or_update_request_initial, build_ddos_protection_plans_delete_request_initial, build_ddos_protection_plans_get_request, build_ddos_protection_plans_list_by_resource_group_request, build_ddos_protection_plans_list_request, build_ddos_protection_plans_update_tags_request, build_default_security_rules_get_request, build_default_security_rules_list_request, build_delete_bastion_shareable_link_request_initial, build_disconnect_active_sessions_request, build_dscp_configuration_create_or_update_request_initial, build_dscp_configuration_delete_request_initial, build_dscp_configuration_get_request, build_dscp_configuration_list_all_request, build_dscp_configuration_list_request, build_express_route_circuit_authorizations_create_or_update_request_initial, build_express_route_circuit_authorizations_delete_request_initial, build_express_route_circuit_authorizations_get_request, build_express_route_circuit_authorizations_list_request, build_express_route_circuit_connections_create_or_update_request_initial, build_express_route_circuit_connections_delete_request_initial, build_express_route_circuit_connections_get_request, build_express_route_circuit_connections_list_request, build_express_route_circuit_peerings_create_or_update_request_initial, build_express_route_circuit_peerings_delete_request_initial, build_express_route_circuit_peerings_get_request, build_express_route_circuit_peerings_list_request, build_express_route_circuits_create_or_update_request_initial, build_express_route_circuits_delete_request_initial, build_express_route_circuits_get_peering_stats_request, build_express_route_circuits_get_request, build_express_route_circuits_get_stats_request, build_express_route_circuits_list_all_request, build_express_route_circuits_list_arp_table_request_initial, build_express_route_circuits_list_request, build_express_route_circuits_list_routes_table_request_initial, build_express_route_circuits_list_routes_table_summary_request_initial, build_express_route_circuits_update_tags_request, build_express_route_connections_create_or_update_request_initial, build_express_route_connections_delete_request_initial, build_express_route_connections_get_request, build_express_route_connections_list_request, build_express_route_cross_connection_peerings_create_or_update_request_initial, build_express_route_cross_connection_peerings_delete_request_initial, build_express_route_cross_connection_peerings_get_request, build_express_route_cross_connection_peerings_list_request, build_express_route_cross_connections_create_or_update_request_initial, build_express_route_cross_connections_get_request, build_express_route_cross_connections_list_arp_table_request_initial, build_express_route_cross_connections_list_by_resource_group_request, build_express_route_cross_connections_list_request, build_express_route_cross_connections_list_routes_table_request_initial, build_express_route_cross_connections_list_routes_table_summary_request_initial, build_express_route_cross_connections_update_tags_request, build_express_route_gateways_create_or_update_request_initial, build_express_route_gateways_delete_request_initial, build_express_route_gateways_get_request, build_express_route_gateways_list_by_resource_group_request, build_express_route_gateways_list_by_subscription_request, build_express_route_gateways_update_tags_request_initial, build_express_route_links_get_request, build_express_route_links_list_request, build_express_route_port_authorizations_create_or_update_request_initial, build_express_route_port_authorizations_delete_request_initial, build_express_route_port_authorizations_get_request, build_express_route_port_authorizations_list_request, build_express_route_ports_create_or_update_request_initial, build_express_route_ports_delete_request_initial, build_express_route_ports_generate_loa_request, build_express_route_ports_get_request, build_express_route_ports_list_by_resource_group_request, build_express_route_ports_list_request, build_express_route_ports_locations_get_request, build_express_route_ports_locations_list_request, build_express_route_ports_update_tags_request, build_express_route_provider_port_request, build_express_route_provider_ports_location_list_request, build_express_route_service_providers_list_request, build_firewall_policies_create_or_update_request_initial, build_firewall_policies_delete_request_initial, build_firewall_policies_get_request, build_firewall_policies_list_all_request, build_firewall_policies_list_request, build_firewall_policies_update_tags_request, build_firewall_policy_idps_signatures_filter_values_list_request, build_firewall_policy_idps_signatures_list_request, build_firewall_policy_idps_signatures_overrides_get_request, build_firewall_policy_idps_signatures_overrides_list_request, build_firewall_policy_idps_signatures_overrides_patch_request, build_firewall_policy_idps_signatures_overrides_put_request, build_firewall_policy_rule_collection_groups_create_or_update_request_initial, build_firewall_policy_rule_collection_groups_delete_request_initial, build_firewall_policy_rule_collection_groups_get_request, build_firewall_policy_rule_collection_groups_list_request, build_flow_logs_create_or_update_request_initial, build_flow_logs_delete_request_initial, build_flow_logs_get_request, build_flow_logs_list_request, build_flow_logs_update_tags_request, build_generatevirtualwanvpnserverconfigurationvpnprofile_request_initial, build_get_active_sessions_request_initial, build_get_bastion_shareable_link_request, build_hub_route_tables_create_or_update_request_initial, build_hub_route_tables_delete_request_initial, build_hub_route_tables_get_request, build_hub_route_tables_list_request, build_hub_virtual_network_connections_create_or_update_request_initial, build_hub_virtual_network_connections_delete_request_initial, build_hub_virtual_network_connections_get_request, build_hub_virtual_network_connections_list_request, build_inbound_nat_rules_create_or_update_request_initial, build_inbound_nat_rules_delete_request_initial, build_inbound_nat_rules_get_request, build_inbound_nat_rules_list_request, build_inbound_security_rule_create_or_update_request_initial, build_ip_allocations_create_or_update_request_initial, build_ip_allocations_delete_request_initial, build_ip_allocations_get_request, build_ip_allocations_list_by_resource_group_request, build_ip_allocations_list_request, build_ip_allocations_update_tags_request, build_ip_groups_create_or_update_request_initial, build_ip_groups_delete_request_initial, build_ip_groups_get_request, build_ip_groups_list_by_resource_group_request, build_ip_groups_list_request, build_ip_groups_update_groups_request, build_list_active_connectivity_configurations_request, build_list_active_security_admin_rules_request, build_list_network_manager_effective_connectivity_configurations_request, build_list_network_manager_effective_security_admin_rules_request, build_load_balancer_backend_address_pools_create_or_update_request_initial, build_load_balancer_backend_address_pools_delete_request_initial, build_load_balancer_backend_address_pools_get_request, build_load_balancer_backend_address_pools_list_request, build_load_balancer_frontend_ip_configurations_get_request, build_load_balancer_frontend_ip_configurations_list_request, build_load_balancer_load_balancing_rules_get_request, build_load_balancer_load_balancing_rules_list_request, build_load_balancer_network_interfaces_list_request, build_load_balancer_outbound_rules_get_request, build_load_balancer_outbound_rules_list_request, build_load_balancer_probes_get_request, build_load_balancer_probes_list_request, build_load_balancers_create_or_update_request_initial, build_load_balancers_delete_request_initial, build_load_balancers_get_request, build_load_balancers_list_all_request, build_load_balancers_list_inbound_nat_rule_port_mappings_request_initial, build_load_balancers_list_request, build_load_balancers_swap_public_ip_addresses_request_initial, build_load_balancers_update_tags_request, build_local_network_gateways_create_or_update_request_initial, build_local_network_gateways_delete_request_initial, build_local_network_gateways_get_request, build_local_network_gateways_list_request, build_local_network_gateways_update_tags_request, build_management_group_network_manager_connections_create_or_update_request, build_management_group_network_manager_connections_delete_request, build_management_group_network_manager_connections_get_request, build_management_group_network_manager_connections_list_request, build_nat_gateways_create_or_update_request_initial, build_nat_gateways_delete_request_initial, build_nat_gateways_get_request, build_nat_gateways_list_all_request, build_nat_gateways_list_request, build_nat_gateways_update_tags_request, build_nat_rules_create_or_update_request_initial, build_nat_rules_delete_request_initial, build_nat_rules_get_request, build_nat_rules_list_by_vpn_gateway_request, build_network_groups_create_or_update_request, build_network_groups_delete_request_initial, build_network_groups_get_request, build_network_groups_list_request, build_network_interface_ip_configurations_get_request, build_network_interface_ip_configurations_list_request, build_network_interface_load_balancers_list_request, build_network_interface_tap_configurations_create_or_update_request_initial, build_network_interface_tap_configurations_delete_request_initial, build_network_interface_tap_configurations_get_request, build_network_interface_tap_configurations_list_request, build_network_interfaces_create_or_update_request_initial, build_network_interfaces_delete_request_initial, build_network_interfaces_get_cloud_service_network_interface_request, build_network_interfaces_get_effective_route_table_request_initial, build_network_interfaces_get_request, build_network_interfaces_get_virtual_machine_scale_set_ip_configuration_request, build_network_interfaces_get_virtual_machine_scale_set_network_interface_request, build_network_interfaces_list_all_request, build_network_interfaces_list_cloud_service_network_interfaces_request, build_network_interfaces_list_cloud_service_role_instance_network_interfaces_request, build_network_interfaces_list_effective_network_security_groups_request_initial, build_network_interfaces_list_request, build_network_interfaces_list_virtual_machine_scale_set_ip_configurations_request, build_network_interfaces_list_virtual_machine_scale_set_network_interfaces_request, build_network_interfaces_list_virtual_machine_scale_set_vm_network_interfaces_request, build_network_interfaces_update_tags_request, build_network_manager_commits_post_request_initial, build_network_manager_deployment_status_list_request, build_network_managers_create_or_update_request, build_network_managers_delete_request_initial, build_network_managers_get_request, build_network_managers_list_by_subscription_request, build_network_managers_list_request, build_network_managers_patch_request, build_network_profiles_create_or_update_request, build_network_profiles_delete_request_initial, build_network_profiles_get_request, build_network_profiles_list_all_request, build_network_profiles_list_request, build_network_profiles_update_tags_request, build_network_security_groups_create_or_update_request_initial, build_network_security_groups_delete_request_initial, build_network_security_groups_get_request, build_network_security_groups_list_all_request, build_network_security_groups_list_request, build_network_security_groups_update_tags_request, build_network_virtual_appliances_create_or_update_request_initial, build_network_virtual_appliances_delete_request_initial, build_network_virtual_appliances_get_request, build_network_virtual_appliances_list_by_resource_group_request, build_network_virtual_appliances_list_request, build_network_virtual_appliances_update_tags_request, build_network_watchers_check_connectivity_request_initial, build_network_watchers_create_or_update_request, build_network_watchers_delete_request_initial, build_network_watchers_get_azure_reachability_report_request_initial, build_network_watchers_get_flow_log_status_request_initial, build_network_watchers_get_network_configuration_diagnostic_request_initial, build_network_watchers_get_next_hop_request_initial, build_network_watchers_get_request, build_network_watchers_get_topology_request, build_network_watchers_get_troubleshooting_request_initial, build_network_watchers_get_troubleshooting_result_request_initial, build_network_watchers_get_vm_security_rules_request_initial, build_network_watchers_list_all_request, build_network_watchers_list_available_providers_request_initial, build_network_watchers_list_request, build_network_watchers_set_flow_log_configuration_request_initial, build_network_watchers_update_tags_request, build_network_watchers_verify_ip_flow_request_initial, build_operations_list_request, build_p2_svpn_gateways_create_or_update_request_initial, build_p2_svpn_gateways_delete_request_initial, build_p2_svpn_gateways_disconnect_p2_s_vpn_connections_request_initial, build_p2_svpn_gateways_generate_vpn_profile_request_initial, build_p2_svpn_gateways_get_p2_s_vpn_connection_health_detailed_request_initial, build_p2_svpn_gateways_get_p2_s_vpn_connection_health_request_initial, build_p2_svpn_gateways_get_request, build_p2_svpn_gateways_list_by_resource_group_request, build_p2_svpn_gateways_list_request, build_p2_svpn_gateways_reset_request_initial, build_p2_svpn_gateways_update_tags_request_initial, build_packet_captures_create_request_initial, build_packet_captures_delete_request_initial, build_packet_captures_get_request, build_packet_captures_get_status_request_initial, build_packet_captures_list_request, build_packet_captures_stop_request_initial, build_peer_express_route_circuit_connections_get_request, build_peer_express_route_circuit_connections_list_request, build_private_dns_zone_groups_create_or_update_request_initial, build_private_dns_zone_groups_delete_request_initial, build_private_dns_zone_groups_get_request, build_private_dns_zone_groups_list_request, build_private_endpoints_create_or_update_request_initial, build_private_endpoints_delete_request_initial, build_private_endpoints_get_request, build_private_endpoints_list_by_subscription_request, build_private_endpoints_list_request, build_private_link_services_check_private_link_service_visibility_by_resource_group_request_initial, build_private_link_services_check_private_link_service_visibility_request_initial, build_private_link_services_create_or_update_request_initial, build_private_link_services_delete_private_endpoint_connection_request_initial, build_private_link_services_delete_request_initial, build_private_link_services_get_private_endpoint_connection_request, build_private_link_services_get_request, build_private_link_services_list_auto_approved_private_link_services_by_resource_group_request, build_private_link_services_list_auto_approved_private_link_services_request, build_private_link_services_list_by_subscription_request, build_private_link_services_list_private_endpoint_connections_request, build_private_link_services_list_request, build_private_link_services_update_private_endpoint_connection_request, build_public_ip_addresses_create_or_update_request_initial, build_public_ip_addresses_delete_request_initial, build_public_ip_addresses_get_cloud_service_public_ip_address_request, build_public_ip_addresses_get_request, build_public_ip_addresses_get_virtual_machine_scale_set_public_ip_address_request, build_public_ip_addresses_list_all_request, build_public_ip_addresses_list_cloud_service_public_ip_addresses_request, build_public_ip_addresses_list_cloud_service_role_instance_public_ip_addresses_request, build_public_ip_addresses_list_request, build_public_ip_addresses_list_virtual_machine_scale_set_public_ip_addresses_request, build_public_ip_addresses_list_virtual_machine_scale_set_vm_public_ip_addresses_request, build_public_ip_addresses_update_tags_request, build_public_ip_prefixes_create_or_update_request_initial, build_public_ip_prefixes_delete_request_initial, build_public_ip_prefixes_get_request, build_public_ip_prefixes_list_all_request, build_public_ip_prefixes_list_request, build_public_ip_prefixes_update_tags_request, build_put_bastion_shareable_link_request_initial, build_resource_navigation_links_list_request, build_route_filter_rules_create_or_update_request_initial, build_route_filter_rules_delete_request_initial, build_route_filter_rules_get_request, build_route_filter_rules_list_by_route_filter_request, build_route_filters_create_or_update_request_initial, build_route_filters_delete_request_initial, build_route_filters_get_request, build_route_filters_list_by_resource_group_request, build_route_filters_list_request, build_route_filters_update_tags_request, build_route_tables_create_or_update_request_initial, build_route_tables_delete_request_initial, build_route_tables_get_request, build_route_tables_list_all_request, build_route_tables_list_request, build_route_tables_update_tags_request, build_routes_create_or_update_request_initial, build_routes_delete_request_initial, build_routes_get_request, build_routes_list_request, build_routing_intent_create_or_update_request_initial, build_routing_intent_delete_request_initial, build_routing_intent_get_request, build_routing_intent_list_request, build_scope_connections_create_or_update_request, build_scope_connections_delete_request, build_scope_connections_get_request, build_scope_connections_list_request, build_security_admin_configurations_create_or_update_request, build_security_admin_configurations_delete_request_initial, build_security_admin_configurations_get_request, build_security_admin_configurations_list_request, build_security_partner_providers_create_or_update_request_initial, build_security_partner_providers_delete_request_initial, build_security_partner_providers_get_request, build_security_partner_providers_list_by_resource_group_request, build_security_partner_providers_list_request, build_security_partner_providers_update_tags_request, build_security_rules_create_or_update_request_initial, build_security_rules_delete_request_initial, build_security_rules_get_request, build_security_rules_list_request, build_service_association_links_list_request, build_service_endpoint_policies_create_or_update_request_initial, build_service_endpoint_policies_delete_request_initial, build_service_endpoint_policies_get_request, build_service_endpoint_policies_list_by_resource_group_request, build_service_endpoint_policies_list_request, build_service_endpoint_policies_update_tags_request, build_service_endpoint_policy_definitions_create_or_update_request_initial, build_service_endpoint_policy_definitions_delete_request_initial, build_service_endpoint_policy_definitions_get_request, build_service_endpoint_policy_definitions_list_by_resource_group_request, build_service_tag_information_list_request, build_service_tags_list_request, build_static_members_create_or_update_request, build_static_members_delete_request, build_static_members_get_request, build_static_members_list_request, build_subnets_create_or_update_request_initial, build_subnets_delete_request_initial, build_subnets_get_request, build_subnets_list_request, build_subnets_prepare_network_policies_request_initial, build_subnets_unprepare_network_policies_request_initial, build_subscription_network_manager_connections_create_or_update_request, build_subscription_network_manager_connections_delete_request, build_subscription_network_manager_connections_get_request, build_subscription_network_manager_connections_list_request, build_supported_security_providers_request, build_usages_list_request, build_virtual_appliance_sites_create_or_update_request_initial, build_virtual_appliance_sites_delete_request_initial, build_virtual_appliance_sites_get_request, build_virtual_appliance_sites_list_request, build_virtual_appliance_skus_get_request, build_virtual_appliance_skus_list_request, build_virtual_hub_bgp_connection_create_or_update_request_initial, build_virtual_hub_bgp_connection_delete_request_initial, build_virtual_hub_bgp_connection_get_request, build_virtual_hub_bgp_connections_list_advertised_routes_request_initial, build_virtual_hub_bgp_connections_list_learned_routes_request_initial, build_virtual_hub_bgp_connections_list_request, build_virtual_hub_ip_configuration_create_or_update_request_initial, build_virtual_hub_ip_configuration_delete_request_initial, build_virtual_hub_ip_configuration_get_request, build_virtual_hub_ip_configuration_list_request, build_virtual_hub_route_table_v2_s_create_or_update_request_initial, build_virtual_hub_route_table_v2_s_delete_request_initial, build_virtual_hub_route_table_v2_s_get_request, build_virtual_hub_route_table_v2_s_list_request, build_virtual_hubs_create_or_update_request_initial, build_virtual_hubs_delete_request_initial, build_virtual_hubs_get_effective_virtual_hub_routes_request_initial, build_virtual_hubs_get_request, build_virtual_hubs_list_by_resource_group_request, build_virtual_hubs_list_request, build_virtual_hubs_update_tags_request, build_virtual_network_gateway_connections_create_or_update_request_initial, build_virtual_network_gateway_connections_delete_request_initial, build_virtual_network_gateway_connections_get_ike_sas_request_initial, build_virtual_network_gateway_connections_get_request, build_virtual_network_gateway_connections_get_shared_key_request, build_virtual_network_gateway_connections_list_request, build_virtual_network_gateway_connections_reset_connection_request_initial, build_virtual_network_gateway_connections_reset_shared_key_request_initial, build_virtual_network_gateway_connections_set_shared_key_request_initial, build_virtual_network_gateway_connections_start_packet_capture_request_initial, build_virtual_network_gateway_connections_stop_packet_capture_request_initial, build_virtual_network_gateway_connections_update_tags_request_initial, build_virtual_network_gateway_nat_rules_create_or_update_request_initial, build_virtual_network_gateway_nat_rules_delete_request_initial, build_virtual_network_gateway_nat_rules_get_request, build_virtual_network_gateway_nat_rules_list_by_virtual_network_gateway_request, build_virtual_network_gateways_create_or_update_request_initial, build_virtual_network_gateways_delete_request_initial, build_virtual_network_gateways_disconnect_virtual_network_gateway_vpn_connections_request_initial, build_virtual_network_gateways_generate_vpn_profile_request_initial, build_virtual_network_gateways_generatevpnclientpackage_request_initial, build_virtual_network_gateways_get_advertised_routes_request_initial, build_virtual_network_gateways_get_bgp_peer_status_request_initial, build_virtual_network_gateways_get_learned_routes_request_initial, build_virtual_network_gateways_get_request, build_virtual_network_gateways_get_vpn_profile_package_url_request_initial, build_virtual_network_gateways_get_vpnclient_connection_health_request_initial, build_virtual_network_gateways_get_vpnclient_ipsec_parameters_request_initial, build_virtual_network_gateways_list_connections_request, build_virtual_network_gateways_list_request, build_virtual_network_gateways_reset_request_initial, build_virtual_network_gateways_reset_vpn_client_shared_key_request_initial, build_virtual_network_gateways_set_vpnclient_ipsec_parameters_request_initial, build_virtual_network_gateways_start_packet_capture_request_initial, build_virtual_network_gateways_stop_packet_capture_request_initial, build_virtual_network_gateways_supported_vpn_devices_request, build_virtual_network_gateways_update_tags_request_initial, build_virtual_network_gateways_vpn_device_configuration_script_request, build_virtual_network_peerings_create_or_update_request_initial, build_virtual_network_peerings_delete_request_initial, build_virtual_network_peerings_get_request, build_virtual_network_peerings_list_request, build_virtual_network_taps_create_or_update_request_initial, build_virtual_network_taps_delete_request_initial, build_virtual_network_taps_get_request, build_virtual_network_taps_list_all_request, build_virtual_network_taps_list_by_resource_group_request, build_virtual_network_taps_update_tags_request, build_virtual_networks_check_ip_address_availability_request, build_virtual_networks_create_or_update_request_initial, build_virtual_networks_delete_request_initial, build_virtual_networks_get_request, build_virtual_networks_list_all_request, build_virtual_networks_list_request, build_virtual_networks_list_usage_request, build_virtual_networks_update_tags_request, build_virtual_router_peerings_create_or_update_request_initial, build_virtual_router_peerings_delete_request_initial, build_virtual_router_peerings_get_request, build_virtual_router_peerings_list_request, build_virtual_routers_create_or_update_request_initial, build_virtual_routers_delete_request_initial, build_virtual_routers_get_request, build_virtual_routers_list_by_resource_group_request, build_virtual_routers_list_request, build_virtual_wans_create_or_update_request_initial, build_virtual_wans_delete_request_initial, build_virtual_wans_get_request, build_virtual_wans_list_by_resource_group_request, build_virtual_wans_list_request, build_virtual_wans_update_tags_request, build_vpn_connections_create_or_update_request_initial, build_vpn_connections_delete_request_initial, build_vpn_connections_get_request, build_vpn_connections_list_by_vpn_gateway_request, build_vpn_connections_start_packet_capture_request_initial, build_vpn_connections_stop_packet_capture_request_initial, build_vpn_gateways_create_or_update_request_initial, build_vpn_gateways_delete_request_initial, build_vpn_gateways_get_request, build_vpn_gateways_list_by_resource_group_request, build_vpn_gateways_list_request, build_vpn_gateways_reset_request_initial, build_vpn_gateways_start_packet_capture_request_initial, build_vpn_gateways_stop_packet_capture_request_initial, build_vpn_gateways_update_tags_request_initial, build_vpn_link_connections_get_ike_sas_request_initial, build_vpn_link_connections_list_by_vpn_connection_request, build_vpn_link_connections_reset_connection_request_initial, build_vpn_server_configurations_associated_with_virtual_wan_list_request_initial, build_vpn_server_configurations_create_or_update_request_initial, build_vpn_server_configurations_delete_request_initial, build_vpn_server_configurations_get_request, build_vpn_server_configurations_list_by_resource_group_request, build_vpn_server_configurations_list_request, build_vpn_server_configurations_update_tags_request, build_vpn_site_link_connections_get_request, build_vpn_site_links_get_request, build_vpn_site_links_list_by_vpn_site_request, build_vpn_sites_configuration_download_request_initial, build_vpn_sites_create_or_update_request_initial, build_vpn_sites_delete_request_initial, build_vpn_sites_get_request, build_vpn_sites_list_by_resource_group_request, build_vpn_sites_list_request, build_vpn_sites_update_tags_request, build_web_application_firewall_policies_create_or_update_request, build_web_application_firewall_policies_delete_request_initial, build_web_application_firewall_policies_get_request, build_web_application_firewall_policies_list_all_request, build_web_application_firewall_policies_list_request, build_web_categories_get_request, build_web_categories_list_by_subscription_request +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class ApplicationGatewaysOperations: # pylint: disable=too-many-public-methods + """ApplicationGatewaysOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_delete_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> "_models.ApplicationGateway": + """Gets the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_get_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + application_gateway_name: str, + parameters: "_models.ApplicationGateway", + **kwargs: Any + ) -> "_models.ApplicationGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ApplicationGateway') + + request = build_application_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + application_gateway_name: str, + parameters: "_models.ApplicationGateway", + **kwargs: Any + ) -> AsyncLROPoller["_models.ApplicationGateway"]: + """Creates or updates the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param parameters: Parameters supplied to the create or update application gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ApplicationGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ApplicationGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + application_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ApplicationGateway": + """Updates the specified application gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param parameters: Parameters supplied to update application gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_application_gateways_update_tags_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ApplicationGatewayListResult"]: + """Lists all application gateways in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ApplicationGatewayListResult"]: + """Gets all the application gateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways"} # type: ignore + + async def _start_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_start_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._start_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _start_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start"} # type: ignore + + + @distributed_trace_async + async def begin_start( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Starts the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._start_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start"} # type: ignore + + async def _stop_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_stop_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop"} # type: ignore + + + @distributed_trace_async + async def begin_stop( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Stops the specified application gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._stop_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop"} # type: ignore + + async def _backend_health_initial( + self, + resource_group_name: str, + application_gateway_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.ApplicationGatewayBackendHealth"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ApplicationGatewayBackendHealth"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_backend_health_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self._backend_health_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGatewayBackendHealth', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _backend_health_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth"} # type: ignore + + + @distributed_trace_async + async def begin_backend_health( + self, + resource_group_name: str, + application_gateway_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> AsyncLROPoller["_models.ApplicationGatewayBackendHealth"]: + """Gets the backend health of the specified application gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param expand: Expands BackendAddressPool and BackendHttpSettings referenced in backend health. + Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ApplicationGatewayBackendHealth or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealth] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayBackendHealth"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._backend_health_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + expand=expand, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGatewayBackendHealth', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_backend_health.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth"} # type: ignore + + async def _backend_health_on_demand_initial( + self, + resource_group_name: str, + application_gateway_name: str, + probe_request: "_models.ApplicationGatewayOnDemandProbe", + expand: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.ApplicationGatewayBackendHealthOnDemand"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ApplicationGatewayBackendHealthOnDemand"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(probe_request, 'ApplicationGatewayOnDemandProbe') + + request = build_application_gateways_backend_health_on_demand_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + expand=expand, + template_url=self._backend_health_on_demand_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGatewayBackendHealthOnDemand', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _backend_health_on_demand_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/getBackendHealthOnDemand"} # type: ignore + + + @distributed_trace_async + async def begin_backend_health_on_demand( + self, + resource_group_name: str, + application_gateway_name: str, + probe_request: "_models.ApplicationGatewayOnDemandProbe", + expand: Optional[str] = None, + **kwargs: Any + ) -> AsyncLROPoller["_models.ApplicationGatewayBackendHealthOnDemand"]: + """Gets the backend health for given combination of backend pool and http setting of the specified + application gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param probe_request: Request body for on-demand test probe operation. + :type probe_request: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayOnDemandProbe + :param expand: Expands BackendAddressPool and BackendHttpSettings referenced in backend health. + Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ApplicationGatewayBackendHealthOnDemand or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthOnDemand] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayBackendHealthOnDemand"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._backend_health_on_demand_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + probe_request=probe_request, + expand=expand, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGatewayBackendHealthOnDemand', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_backend_health_on_demand.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/getBackendHealthOnDemand"} # type: ignore + + @distributed_trace_async + async def list_available_server_variables( + self, + **kwargs: Any + ) -> List[str]: + """Lists all available server variables. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: list of str, or the result of cls(response) + :rtype: list[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[List[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_server_variables_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_server_variables.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('[str]', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_server_variables.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableServerVariables"} # type: ignore + + + @distributed_trace_async + async def list_available_request_headers( + self, + **kwargs: Any + ) -> List[str]: + """Lists all available request headers. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: list of str, or the result of cls(response) + :rtype: list[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[List[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_request_headers_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_request_headers.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('[str]', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_request_headers.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableRequestHeaders"} # type: ignore + + + @distributed_trace_async + async def list_available_response_headers( + self, + **kwargs: Any + ) -> List[str]: + """Lists all available response headers. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: list of str, or the result of cls(response) + :rtype: list[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[List[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_response_headers_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_response_headers.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('[str]', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_response_headers.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableResponseHeaders"} # type: ignore + + + @distributed_trace_async + async def list_available_waf_rule_sets( + self, + **kwargs: Any + ) -> "_models.ApplicationGatewayAvailableWafRuleSetsResult": + """Lists all available web application firewall rule sets. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewayAvailableWafRuleSetsResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAvailableWafRuleSetsResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayAvailableWafRuleSetsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_waf_rule_sets_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_waf_rule_sets.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewayAvailableWafRuleSetsResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_waf_rule_sets.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableWafRuleSets"} # type: ignore + + + @distributed_trace_async + async def list_available_ssl_options( + self, + **kwargs: Any + ) -> "_models.ApplicationGatewayAvailableSslOptions": + """Lists available Ssl options for configuring Ssl policy. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewayAvailableSslOptions, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAvailableSslOptions + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayAvailableSslOptions"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_ssl_options_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_ssl_options.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewayAvailableSslOptions', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_ssl_options.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default"} # type: ignore + + + @distributed_trace + def list_available_ssl_predefined_policies( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ApplicationGatewayAvailableSslPredefinedPolicies"]: + """Lists all SSL predefined policies for configuring Ssl policy. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayAvailableSslPredefinedPolicies + or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAvailableSslPredefinedPolicies] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayAvailableSslPredefinedPolicies"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateways_list_available_ssl_predefined_policies_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_ssl_predefined_policies.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateways_list_available_ssl_predefined_policies_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayAvailableSslPredefinedPolicies", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_available_ssl_predefined_policies.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies"} # type: ignore + + @distributed_trace_async + async def get_ssl_predefined_policy( + self, + predefined_policy_name: str, + **kwargs: Any + ) -> "_models.ApplicationGatewaySslPredefinedPolicy": + """Gets Ssl predefined policy with the specified policy name. + + :param predefined_policy_name: Name of Ssl predefined policy. + :type predefined_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewaySslPredefinedPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPredefinedPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewaySslPredefinedPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_get_ssl_predefined_policy_request( + subscription_id=self._config.subscription_id, + predefined_policy_name=predefined_policy_name, + api_version=api_version, + template_url=self.get_ssl_predefined_policy.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewaySslPredefinedPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_ssl_predefined_policy.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/{predefinedPolicyName}"} # type: ignore + +class ApplicationGatewayPrivateLinkResourcesOperations: + """ApplicationGatewayPrivateLinkResourcesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ApplicationGatewayPrivateLinkResourceListResult"]: + """Lists all private link resources on an application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayPrivateLinkResourceListResult or + the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkResourceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateLinkResourceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateway_private_link_resources_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateway_private_link_resources_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayPrivateLinkResourceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateLinkResources"} # type: ignore +class ApplicationGatewayPrivateEndpointConnectionsOperations: + """ApplicationGatewayPrivateEndpointConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateway_private_endpoint_connections_delete_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified private endpoint connection on application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param connection_name: The name of the application gateway private endpoint connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + async def _update_initial( + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + parameters: "_models.ApplicationGatewayPrivateEndpointConnection", + **kwargs: Any + ) -> Optional["_models.ApplicationGatewayPrivateEndpointConnection"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ApplicationGatewayPrivateEndpointConnection"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ApplicationGatewayPrivateEndpointConnection') + + request = build_application_gateway_private_endpoint_connections_update_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGatewayPrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_update( + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + parameters: "_models.ApplicationGatewayPrivateEndpointConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.ApplicationGatewayPrivateEndpointConnection"]: + """Updates the specified private endpoint connection on application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param connection_name: The name of the application gateway private endpoint connection. + :type connection_name: str + :param parameters: Parameters supplied to update application gateway private endpoint + connection operation. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ApplicationGatewayPrivateEndpointConnection or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateEndpointConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGatewayPrivateEndpointConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.ApplicationGatewayPrivateEndpointConnection": + """Gets the specified private endpoint connection on application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param connection_name: The name of the application gateway private endpoint connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewayPrivateEndpointConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateEndpointConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateway_private_endpoint_connections_get_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewayPrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ApplicationGatewayPrivateEndpointConnectionListResult"]: + """Lists all private endpoint connections on an application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either + ApplicationGatewayPrivateEndpointConnectionListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateEndpointConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateway_private_endpoint_connections_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateway_private_endpoint_connections_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayPrivateEndpointConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections"} # type: ignore +class ApplicationSecurityGroupsOperations: + """ApplicationSecurityGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_security_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_security_groups_delete_request_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_security_group_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified application security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + application_security_group_name: str, + **kwargs: Any + ) -> "_models.ApplicationSecurityGroup": + """Gets information about the specified application security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_security_groups_get_request( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + application_security_group_name: str, + parameters: "_models.ApplicationSecurityGroup", + **kwargs: Any + ) -> "_models.ApplicationSecurityGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ApplicationSecurityGroup') + + request = build_application_security_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + application_security_group_name: str, + parameters: "_models.ApplicationSecurityGroup", + **kwargs: Any + ) -> AsyncLROPoller["_models.ApplicationSecurityGroup"]: + """Creates or updates an application security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :param parameters: Parameters supplied to the create or update ApplicationSecurityGroup + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ApplicationSecurityGroup or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + application_security_group_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ApplicationSecurityGroup": + """Updates an application security group's tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :param parameters: Parameters supplied to update application security group tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_application_security_groups_update_tags_request( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ApplicationSecurityGroupListResult"]: + """Gets all application security groups in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationSecurityGroupListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationSecurityGroups"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ApplicationSecurityGroupListResult"]: + """Gets all the application security groups in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationSecurityGroupListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups"} # type: ignore +class AvailableDelegationsOperations: + """AvailableDelegationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> AsyncIterable["_models.AvailableDelegationsResult"]: + """Gets all of the available subnet delegations for this subscription in this region. + + :param location: The location of the subnet. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableDelegationsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableDelegationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableDelegationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_delegations_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_delegations_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableDelegationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableDelegations"} # type: ignore +class AvailableResourceGroupDelegationsOperations: + """AvailableResourceGroupDelegationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.AvailableDelegationsResult"]: + """Gets all of the available subnet delegations for this resource group in this region. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableDelegationsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableDelegationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableDelegationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_resource_group_delegations_list_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_resource_group_delegations_list_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableDelegationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableDelegations"} # type: ignore +class AvailableServiceAliasesOperations: + """AvailableServiceAliasesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> AsyncIterable["_models.AvailableServiceAliasesResult"]: + """Gets all available service aliases for this subscription in this region. + + :param location: The location. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableServiceAliasesResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableServiceAliasesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableServiceAliasesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_service_aliases_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_service_aliases_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableServiceAliasesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableServiceAliases"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + location: str, + **kwargs: Any + ) -> AsyncIterable["_models.AvailableServiceAliasesResult"]: + """Gets all available service aliases for this resource group in this region. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param location: The location. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableServiceAliasesResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableServiceAliasesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableServiceAliasesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_service_aliases_list_by_resource_group_request( + resource_group_name=resource_group_name, + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_service_aliases_list_by_resource_group_request( + resource_group_name=resource_group_name, + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableServiceAliasesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableServiceAliases"} # type: ignore +class AzureFirewallsOperations: + """AzureFirewallsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_azure_firewalls_delete_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified Azure Firewall. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> "_models.AzureFirewall": + """Gets the specified Azure Firewall. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AzureFirewall, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AzureFirewall + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_azure_firewalls_get_request( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.AzureFirewall", + **kwargs: Any + ) -> "_models.AzureFirewall": + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'AzureFirewall') + + request = build_azure_firewalls_create_or_update_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.AzureFirewall", + **kwargs: Any + ) -> AsyncLROPoller["_models.AzureFirewall"]: + """Creates or updates the specified Azure Firewall. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :param parameters: Parameters supplied to the create or update Azure Firewall operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.AzureFirewall + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either AzureFirewall or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.AzureFirewall] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AzureFirewall', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + async def _update_tags_initial( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.AzureFirewall"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.AzureFirewall"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_azure_firewalls_update_tags_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + @distributed_trace_async + async def begin_update_tags( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> AsyncLROPoller["_models.AzureFirewall"]: + """Updates tags of an Azure Firewall resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :param parameters: Parameters supplied to update azure firewall tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either AzureFirewall or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.AzureFirewall] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_tags_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AzureFirewall', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.AzureFirewallListResult"]: + """Lists all Azure Firewalls in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureFirewallListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureFirewallListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewallListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_azure_firewalls_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_azure_firewalls_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AzureFirewallListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.AzureFirewallListResult"]: + """Gets all the Azure Firewalls in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureFirewallListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureFirewallListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewallListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_azure_firewalls_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_azure_firewalls_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AzureFirewallListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewalls"} # type: ignore + + async def _list_learned_prefixes_initial( + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> Optional["_models.IPPrefixesList"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.IPPrefixesList"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_azure_firewalls_list_learned_prefixes_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_learned_prefixes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('IPPrefixesList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_learned_prefixes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}/learnedIPPrefixes"} # type: ignore + + + @distributed_trace_async + async def begin_list_learned_prefixes( + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.IPPrefixesList"]: + """Retrieves a list of all IP prefixes that azure firewall has learned to not SNAT. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the azure firewall. + :type azure_firewall_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either IPPrefixesList or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.IPPrefixesList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.IPPrefixesList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_learned_prefixes_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('IPPrefixesList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_learned_prefixes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}/learnedIPPrefixes"} # type: ignore +class AzureFirewallFqdnTagsOperations: + """AzureFirewallFqdnTagsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.AzureFirewallFqdnTagListResult"]: + """Gets all the Azure Firewall FQDN Tags in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureFirewallFqdnTagListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureFirewallFqdnTagListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewallFqdnTagListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_azure_firewall_fqdn_tags_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_azure_firewall_fqdn_tags_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AzureFirewallFqdnTagListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewallFqdnTags"} # type: ignore +class WebCategoriesOperations: + """WebCategoriesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.AzureWebCategory": + """Gets the specified Azure Web Category. + + :param name: The name of the azureWebCategory. + :type name: str + :param expand: Expands resourceIds back referenced by the azureWebCategory resource. Default + value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AzureWebCategory, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AzureWebCategory + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureWebCategory"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_web_categories_get_request( + name=name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('AzureWebCategory', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureWebCategories/{name}"} # type: ignore + + + @distributed_trace + def list_by_subscription( + self, + **kwargs: Any + ) -> AsyncIterable["_models.AzureWebCategoryListResult"]: + """Gets all the Azure Web Categories in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureWebCategoryListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureWebCategoryListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureWebCategoryListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_web_categories_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_web_categories_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AzureWebCategoryListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureWebCategories"} # type: ignore +class BastionHostsOperations: + """BastionHostsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_bastion_hosts_delete_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified Bastion Host. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> "_models.BastionHost": + """Gets the specified Bastion Host. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BastionHost, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BastionHost + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_bastion_hosts_get_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BastionHost', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.BastionHost", + **kwargs: Any + ) -> "_models.BastionHost": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'BastionHost') + + request = build_bastion_hosts_create_or_update_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BastionHost', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BastionHost', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.BastionHost", + **kwargs: Any + ) -> AsyncLROPoller["_models.BastionHost"]: + """Creates or updates the specified Bastion Host. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param parameters: Parameters supplied to the create or update Bastion Host operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.BastionHost + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either BastionHost or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.BastionHost] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BastionHost', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + async def _update_tags_initial( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.BastionHost"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BastionHost"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_bastion_hosts_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BastionHost', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + @distributed_trace_async + async def begin_update_tags( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> AsyncLROPoller["_models.BastionHost"]: + """Updates Tags for BastionHost resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param parameters: Parameters supplied to update BastionHost tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either BastionHost or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.BastionHost] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_tags_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BastionHost', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.BastionHostListResult"]: + """Lists all Bastion Hosts in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionHostListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionHostListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHostListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_bastion_hosts_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_bastion_hosts_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BastionHostListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/bastionHosts"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.BastionHostListResult"]: + """Lists all Bastion Hosts in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionHostListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionHostListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHostListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_bastion_hosts_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_bastion_hosts_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BastionHostListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts"} # type: ignore +class NetworkManagementClientOperationsMixin: + + async def _put_bastion_shareable_link_initial( + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> Optional["_models.BastionShareableLinkListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BastionShareableLinkListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_put_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._put_bastion_shareable_link_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BastionShareableLinkListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _put_bastion_shareable_link_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/createShareableLinks"} # type: ignore + + + @distributed_trace_async + async def begin_put_bastion_shareable_link( + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> AsyncLROPoller[AsyncItemPaged["_models.BastionShareableLinkListResult"]]: + """Creates a Bastion Shareable Links for all the VMs specified in the request. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param bsl_request: Post request for all the Bastion Shareable Link endpoints. + :type bsl_request: ~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns an iterator like instance of either + BastionShareableLinkListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListResult]] + :raises: ~azure.core.exceptions.HttpResponseError + """ + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionShareableLinkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_put_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.begin_put_bastion_shareable_link.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_put_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BastionShareableLinkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionShareableLinkListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._put_bastion_shareable_link_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + bsl_request=bsl_request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + async def internal_get_next(next_link=None): + if next_link is None: + return pipeline_response + return await get_next(next_link) + + return AsyncItemPaged( + internal_get_next, extract_data + ) + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_put_bastion_shareable_link.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/createShareableLinks"} # type: ignore + + + async def _delete_bastion_shareable_link_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_delete_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._delete_bastion_shareable_link_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_bastion_shareable_link_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/deleteShareableLinks"} # type: ignore + + + @distributed_trace_async + async def begin_delete_bastion_shareable_link( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the Bastion Shareable Links for all the VMs specified in the request. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param bsl_request: Post request for all the Bastion Shareable Link endpoints. + :type bsl_request: ~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_bastion_shareable_link_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + bsl_request=bsl_request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_bastion_shareable_link.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/deleteShareableLinks"} # type: ignore + + @distributed_trace + def get_bastion_shareable_link( + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> AsyncIterable["_models.BastionShareableLinkListResult"]: + """Return the Bastion Shareable Links for all the VMs specified in the request. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param bsl_request: Post request for all the Bastion Shareable Link endpoints. + :type bsl_request: ~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionShareableLinkListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionShareableLinkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_get_bastion_shareable_link_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.get_bastion_shareable_link.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_get_bastion_shareable_link_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BastionShareableLinkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + get_bastion_shareable_link.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getShareableLinks"} # type: ignore + + async def _get_active_sessions_initial( + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> Optional["_models.BastionActiveSessionListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BastionActiveSessionListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_get_active_sessions_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_active_sessions_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BastionActiveSessionListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_active_sessions_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getActiveSessions"} # type: ignore + + + @distributed_trace_async + async def begin_get_active_sessions( + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> AsyncLROPoller[AsyncItemPaged["_models.BastionActiveSessionListResult"]]: + """Returns the list of currently active sessions on the Bastion. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns an iterator like instance of either + BastionActiveSessionListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionActiveSessionListResult]] + :raises: ~azure.core.exceptions.HttpResponseError + """ + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionActiveSessionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_get_active_sessions_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.begin_get_active_sessions.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_get_active_sessions_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BastionActiveSessionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionActiveSessionListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_active_sessions_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + async def internal_get_next(next_link=None): + if next_link is None: + return pipeline_response + return await get_next(next_link) + + return AsyncItemPaged( + internal_get_next, extract_data + ) + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_active_sessions.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getActiveSessions"} # type: ignore + + + @distributed_trace + def disconnect_active_sessions( + self, + resource_group_name: str, + bastion_host_name: str, + session_ids: "_models.SessionIds", + **kwargs: Any + ) -> AsyncIterable["_models.BastionSessionDeleteResult"]: + """Returns the list of currently active sessions on the Bastion. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param session_ids: The list of sessionids to disconnect. + :type session_ids: ~azure.mgmt.network.v2022_01_01.models.SessionIds + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionSessionDeleteResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionSessionDeleteResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionSessionDeleteResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + _json = self._serialize.body(session_ids, 'SessionIds') + + request = build_disconnect_active_sessions_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.disconnect_active_sessions.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + _json = self._serialize.body(session_ids, 'SessionIds') + + request = build_disconnect_active_sessions_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BastionSessionDeleteResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + disconnect_active_sessions.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/disconnectActiveSessions"} # type: ignore + + @distributed_trace_async + async def check_dns_name_availability( + self, + location: str, + domain_name_label: str, + **kwargs: Any + ) -> "_models.DnsNameAvailabilityResult": + """Checks whether a domain name in the cloudapp.azure.com zone is available for use. + + :param location: The location of the domain name. + :type location: str + :param domain_name_label: The domain name to be verified. It must conform to the following + regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$. + :type domain_name_label: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DnsNameAvailabilityResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DnsNameAvailabilityResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DnsNameAvailabilityResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_check_dns_name_availability_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + domain_name_label=domain_name_label, + template_url=self.check_dns_name_availability.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DnsNameAvailabilityResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + check_dns_name_availability.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/CheckDnsNameAvailability"} # type: ignore + + + @distributed_trace_async + async def list_active_connectivity_configurations( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.ActiveConfigurationParameter", + **kwargs: Any + ) -> "_models.ActiveConnectivityConfigurationsListResult": + """Lists active connectivity configurations in a network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Active Configuration Parameter. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ActiveConfigurationParameter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ActiveConnectivityConfigurationsListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ActiveConnectivityConfigurationsListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveConnectivityConfigurationsListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') + + request = build_list_active_connectivity_configurations_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_active_connectivity_configurations.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ActiveConnectivityConfigurationsListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_active_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveConnectivityConfigurations"} # type: ignore + + + @distributed_trace_async + async def list_active_security_admin_rules( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.ActiveConfigurationParameter", + **kwargs: Any + ) -> "_models.ActiveSecurityAdminRulesListResult": + """Lists active security admin rules in a network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Active Configuration Parameter. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ActiveConfigurationParameter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ActiveSecurityAdminRulesListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ActiveSecurityAdminRulesListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveSecurityAdminRulesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') + + request = build_list_active_security_admin_rules_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_active_security_admin_rules.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ActiveSecurityAdminRulesListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_active_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityAdminRules"} # type: ignore + + + @distributed_trace_async + async def list_network_manager_effective_connectivity_configurations( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.QueryRequestOptions", + **kwargs: Any + ) -> "_models.NetworkManagerEffectiveConnectivityConfigurationListResult": + """List all effective connectivity configurations applied on a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to list correct page. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryRequestOptions + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerEffectiveConnectivityConfigurationListResult, or the result of + cls(response) + :rtype: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerEffectiveConnectivityConfigurationListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveConnectivityConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryRequestOptions') + + request = build_list_network_manager_effective_connectivity_configurations_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_network_manager_effective_connectivity_configurations.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerEffectiveConnectivityConfigurationListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_network_manager_effective_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveConnectivityConfigurations"} # type: ignore + + + @distributed_trace_async + async def list_network_manager_effective_security_admin_rules( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.QueryRequestOptions", + **kwargs: Any + ) -> "_models.NetworkManagerEffectiveSecurityAdminRulesListResult": + """List all effective security admin rules applied on a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to list correct page. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryRequestOptions + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerEffectiveSecurityAdminRulesListResult, or the result of cls(response) + :rtype: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerEffectiveSecurityAdminRulesListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveSecurityAdminRulesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryRequestOptions') + + request = build_list_network_manager_effective_security_admin_rules_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_network_manager_effective_security_admin_rules.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerEffectiveSecurityAdminRulesListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_network_manager_effective_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveSecurityAdminRules"} # type: ignore + + + @distributed_trace_async + async def supported_security_providers( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> "_models.VirtualWanSecurityProviders": + """Gives the supported security providers for the virtual wan. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN for which supported security providers are + needed. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualWanSecurityProviders, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualWanSecurityProviders + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWanSecurityProviders"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_supported_security_providers_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + template_url=self.supported_security_providers.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualWanSecurityProviders', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + supported_security_providers.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/supportedSecurityProviders"} # type: ignore + + + async def _generatevirtualwanvpnserverconfigurationvpnprofile_initial( + self, + resource_group_name: str, + virtual_wan_name: str, + vpn_client_params: "_models.VirtualWanVpnProfileParameters", + **kwargs: Any + ) -> Optional["_models.VpnProfileResponse"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnProfileResponse"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_client_params, 'VirtualWanVpnProfileParameters') + + request = build_generatevirtualwanvpnserverconfigurationvpnprofile_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generatevirtualwanvpnserverconfigurationvpnprofile_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generatevirtualwanvpnserverconfigurationvpnprofile_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/GenerateVpnProfile"} # type: ignore + + + @distributed_trace_async + async def begin_generatevirtualwanvpnserverconfigurationvpnprofile( + self, + resource_group_name: str, + virtual_wan_name: str, + vpn_client_params: "_models.VirtualWanVpnProfileParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnProfileResponse"]: + """Generates a unique VPN profile for P2S clients for VirtualWan and associated + VpnServerConfiguration combination in the specified resource group. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN whose associated VpnServerConfigurations is + needed. + :type virtual_wan_name: str + :param vpn_client_params: Parameters supplied to the generate VirtualWan VPN profile generation + operation. + :type vpn_client_params: ~azure.mgmt.network.v2022_01_01.models.VirtualWanVpnProfileParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnProfileResponse or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnProfileResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnProfileResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._generatevirtualwanvpnserverconfigurationvpnprofile_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + vpn_client_params=vpn_client_params, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generatevirtualwanvpnserverconfigurationvpnprofile.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/GenerateVpnProfile"} # type: ignore + + @distributed_trace_async + async def express_route_provider_port( + self, + providerport: str, + **kwargs: Any + ) -> "_models.ExpressRouteProviderPort": + """Retrieves detail of a provider port. + + :param providerport: The name of the provider port. + :type providerport: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteProviderPort, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteProviderPort + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteProviderPort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_provider_port_request( + providerport=providerport, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.express_route_provider_port.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteProviderPort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + express_route_provider_port.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts/{providerport}"} # type: ignore + +class NetworkInterfacesOperations: + """NetworkInterfacesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list_cloud_service_role_instance_network_interfaces( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceListResult"]: + """Gets information about all network interfaces in a role instance in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The name of role instance. + :type role_instance_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_cloud_service_role_instance_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_role_instance_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_cloud_service_role_instance_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_cloud_service_role_instance_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces"} # type: ignore + + @distributed_trace + def list_cloud_service_network_interfaces( + self, + resource_group_name: str, + cloud_service_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_cloud_service_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_cloud_service_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_cloud_service_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/networkInterfaces"} # type: ignore + + @distributed_trace_async + async def get_cloud_service_network_interface( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterface": + """Get the specified network interface in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The name of role instance. + :type role_instance_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_get_cloud_service_network_interface_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_cloud_service_network_interface.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_cloud_service_network_interface.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_delete_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterface": + """Gets information about the specified network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_get_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_interface_name: str, + parameters: "_models.NetworkInterface", + **kwargs: Any + ) -> "_models.NetworkInterface": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkInterface') + + request = build_network_interfaces_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_interface_name: str, + parameters: "_models.NetworkInterface", + **kwargs: Any + ) -> AsyncLROPoller["_models.NetworkInterface"]: + """Creates or updates a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param parameters: Parameters supplied to the create or update network interface operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either NetworkInterface or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkInterface', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + network_interface_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkInterface": + """Updates a network interface tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param parameters: Parameters supplied to update network interface tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_interfaces_update_tags_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkInterfaces"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces"} # type: ignore + + async def _get_effective_route_table_initial( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> Optional["_models.EffectiveRouteListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.EffectiveRouteListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_get_effective_route_table_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_effective_route_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('EffectiveRouteListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_effective_route_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveRouteTable"} # type: ignore + + + @distributed_trace_async + async def begin_get_effective_route_table( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.EffectiveRouteListResult"]: + """Gets all route tables applied to a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either EffectiveRouteListResult or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.EffectiveRouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveRouteListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_effective_route_table_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('EffectiveRouteListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_effective_route_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveRouteTable"} # type: ignore + + async def _list_effective_network_security_groups_initial( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> Optional["_models.EffectiveNetworkSecurityGroupListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.EffectiveNetworkSecurityGroupListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_list_effective_network_security_groups_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_effective_network_security_groups_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('EffectiveNetworkSecurityGroupListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_effective_network_security_groups_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveNetworkSecurityGroups"} # type: ignore + + + @distributed_trace_async + async def begin_list_effective_network_security_groups( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.EffectiveNetworkSecurityGroupListResult"]: + """Gets all network security groups applied to a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + EffectiveNetworkSecurityGroupListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveNetworkSecurityGroupListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_effective_network_security_groups_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('EffectiveNetworkSecurityGroupListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_effective_network_security_groups.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveNetworkSecurityGroups"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_vm_network_interfaces( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceListResult"]: + """Gets information about all network interfaces in a virtual machine in a virtual machine scale + set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_virtual_machine_scale_set_vm_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_vm_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_virtual_machine_scale_set_vm_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_vm_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_network_interfaces( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_virtual_machine_scale_set_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_virtual_machine_scale_set_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces"} # type: ignore + + @distributed_trace_async + async def get_virtual_machine_scale_set_network_interface( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterface": + """Get the specified network interface in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + + request = build_network_interfaces_get_virtual_machine_scale_set_network_interface_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_virtual_machine_scale_set_network_interface.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_virtual_machine_scale_set_network_interface.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace + def list_virtual_machine_scale_set_ip_configurations( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceIPConfigurationListResult"]: + """Get the specified network interface ip configuration in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceIPConfigurationListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_virtual_machine_scale_set_ip_configurations_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.list_virtual_machine_scale_set_ip_configurations.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_virtual_machine_scale_set_ip_configurations_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceIPConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_ip_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations"} # type: ignore + + @distributed_trace_async + async def get_virtual_machine_scale_set_ip_configuration( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterfaceIPConfiguration": + """Get the specified network interface ip configuration in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the ip configuration. + :type ip_configuration_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterfaceIPConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + + request = build_network_interfaces_get_virtual_machine_scale_set_ip_configuration_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_virtual_machine_scale_set_ip_configuration.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterfaceIPConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_virtual_machine_scale_set_ip_configuration.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}"} # type: ignore + +class PublicIPAddressesOperations: + """PublicIPAddressesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list_cloud_service_public_ip_addresses( + self, + resource_group_name: str, + cloud_service_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses on a cloud service level. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_cloud_service_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_cloud_service_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_cloud_service_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/publicipaddresses"} # type: ignore + + @distributed_trace + def list_cloud_service_role_instance_public_ip_addresses( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + ip_configuration_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses in a role instance IP configuration in a cloud + service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The name of role instance. + :type role_instance_name: str + :param network_interface_name: The network interface name. + :type network_interface_name: str + :param ip_configuration_name: The IP configuration name. + :type ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_cloud_service_role_instance_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_role_instance_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_cloud_service_role_instance_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_cloud_service_role_instance_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses"} # type: ignore + + @distributed_trace_async + async def get_cloud_service_public_ip_address( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + ip_configuration_name: str, + public_ip_address_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Get the specified public IP address in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The role instance name. + :type role_instance_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the IP configuration. + :type ip_configuration_name: str + :param public_ip_address_name: The name of the public IP Address. + :type public_ip_address_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_addresses_get_cloud_service_public_ip_address_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_cloud_service_public_ip_address.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_cloud_service_public_ip_address.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_address_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_addresses_delete_request_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_address_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified public IP address. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + public_ip_address_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Gets the specified public IP address in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_addresses_get_request( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + public_ip_address_name: str, + parameters: "_models.PublicIPAddress", + **kwargs: Any + ) -> "_models.PublicIPAddress": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PublicIPAddress') + + request = build_public_ip_addresses_create_or_update_request_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + public_ip_address_name: str, + parameters: "_models.PublicIPAddress", + **kwargs: Any + ) -> AsyncLROPoller["_models.PublicIPAddress"]: + """Creates or updates a static or dynamic public IP address. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :param parameters: Parameters supplied to the create or update public IP address operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PublicIPAddress or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PublicIPAddress] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + public_ip_address_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Updates public IP address tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :param parameters: Parameters supplied to update public IP address tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_public_ip_addresses_update_tags_request( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPAddressListResult"]: + """Gets all the public IP addresses in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPAddressListResult"]: + """Gets all public IP addresses in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_public_ip_addresses( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses on a virtual machine scale set level. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/publicipaddresses"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_vm_public_ip_addresses( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses in a virtual machine IP configuration in a + virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The network interface name. + :type network_interface_name: str + :param ip_configuration_name: The IP configuration name. + :type ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_vm_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_vm_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_vm_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_vm_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses"} # type: ignore + + @distributed_trace_async + async def get_virtual_machine_scale_set_public_ip_address( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + public_ip_address_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Get the specified public IP address in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the IP configuration. + :type ip_configuration_name: str + :param public_ip_address_name: The name of the public IP Address. + :type public_ip_address_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + + request = build_public_ip_addresses_get_virtual_machine_scale_set_public_ip_address_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_virtual_machine_scale_set_public_ip_address.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_virtual_machine_scale_set_public_ip_address.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}"} # type: ignore + +class CustomIPPrefixesOperations: + """CustomIPPrefixesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + custom_ip_prefix_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_custom_ip_prefixes_delete_request_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + custom_ip_prefix_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified custom IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the CustomIpPrefix. + :type custom_ip_prefix_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.CustomIpPrefix": + """Gets the specified custom IP prefix in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the custom IP prefix. + :type custom_ip_prefix_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: CustomIpPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_custom_ip_prefixes_get_request( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + parameters: "_models.CustomIpPrefix", + **kwargs: Any + ) -> "_models.CustomIpPrefix": + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'CustomIpPrefix') + + request = build_custom_ip_prefixes_create_or_update_request_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + parameters: "_models.CustomIpPrefix", + **kwargs: Any + ) -> AsyncLROPoller["_models.CustomIpPrefix"]: + """Creates or updates a custom IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the custom IP prefix. + :type custom_ip_prefix_name: str + :param parameters: Parameters supplied to the create or update custom IP prefix operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either CustomIpPrefix or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.CustomIpPrefix": + """Updates custom IP prefix tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the custom IP prefix. + :type custom_ip_prefix_name: str + :param parameters: Parameters supplied to update custom IP prefix tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: CustomIpPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_custom_ip_prefixes_update_tags_request( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.CustomIpPrefixListResult"]: + """Gets all the custom IP prefixes in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either CustomIpPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_custom_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_custom_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("CustomIpPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/customIpPrefixes"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.CustomIpPrefixListResult"]: + """Gets all custom IP prefixes in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either CustomIpPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_custom_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_custom_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("CustomIpPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes"} # type: ignore +class DdosCustomPoliciesOperations: + """DdosCustomPoliciesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_custom_policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_custom_policies_delete_request_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_custom_policy_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified DDoS custom policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + **kwargs: Any + ) -> "_models.DdosCustomPolicy": + """Gets information about the specified DDoS custom policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosCustomPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_custom_policies_get_request( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + parameters: "_models.DdosCustomPolicy", + **kwargs: Any + ) -> "_models.DdosCustomPolicy": + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'DdosCustomPolicy') + + request = build_ddos_custom_policies_create_or_update_request_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + parameters: "_models.DdosCustomPolicy", + **kwargs: Any + ) -> AsyncLROPoller["_models.DdosCustomPolicy"]: + """Creates or updates a DDoS custom policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :param parameters: Parameters supplied to the create or update operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DdosCustomPolicy or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.DdosCustomPolicy": + """Update a DDoS custom policy tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :param parameters: Parameters supplied to update DDoS custom policy resource tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosCustomPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ddos_custom_policies_update_tags_request( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + +class DdosProtectionPlansOperations: + """DdosProtectionPlansOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_protection_plan_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_protection_plans_delete_request_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_protection_plan_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified DDoS protection plan. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + **kwargs: Any + ) -> "_models.DdosProtectionPlan": + """Gets information about the specified DDoS protection plan. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosProtectionPlan, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_protection_plans_get_request( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + parameters: "_models.DdosProtectionPlan", + **kwargs: Any + ) -> "_models.DdosProtectionPlan": + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'DdosProtectionPlan') + + request = build_ddos_protection_plans_create_or_update_request_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + parameters: "_models.DdosProtectionPlan", + **kwargs: Any + ) -> AsyncLROPoller["_models.DdosProtectionPlan"]: + """Creates or updates a DDoS protection plan. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :param parameters: Parameters supplied to the create or update operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DdosProtectionPlan or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.DdosProtectionPlan": + """Update a DDoS protection plan tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :param parameters: Parameters supplied to the update DDoS protection plan resource tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosProtectionPlan, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ddos_protection_plans_update_tags_request( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.DdosProtectionPlanListResult"]: + """Gets all DDoS protection plans in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DdosProtectionPlanListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlanListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlanListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ddos_protection_plans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ddos_protection_plans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DdosProtectionPlanListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ddosProtectionPlans"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.DdosProtectionPlanListResult"]: + """Gets all the DDoS protection plans in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DdosProtectionPlanListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlanListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlanListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ddos_protection_plans_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ddos_protection_plans_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DdosProtectionPlanListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans"} # type: ignore +class DscpConfigurationOperations: + """DscpConfigurationOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + dscp_configuration_name: str, + parameters: "_models.DscpConfiguration", + **kwargs: Any + ) -> "_models.DscpConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'DscpConfiguration') + + request = build_dscp_configuration_create_or_update_request_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + dscp_configuration_name: str, + parameters: "_models.DscpConfiguration", + **kwargs: Any + ) -> AsyncLROPoller["_models.DscpConfiguration"]: + """Creates or updates a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param dscp_configuration_name: The name of the resource. + :type dscp_configuration_name: str + :param parameters: Parameters supplied to the create or update dscp configuration operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.DscpConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DscpConfiguration or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.DscpConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + dscp_configuration_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_dscp_configuration_delete_request_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + dscp_configuration_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param dscp_configuration_name: The name of the resource. + :type dscp_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + dscp_configuration_name: str, + **kwargs: Any + ) -> "_models.DscpConfiguration": + """Gets a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param dscp_configuration_name: The name of the resource. + :type dscp_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DscpConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DscpConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_dscp_configuration_get_request( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.DscpConfigurationListResult"]: + """Gets a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DscpConfigurationListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.DscpConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_dscp_configuration_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_dscp_configuration_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DscpConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.DscpConfigurationListResult"]: + """Gets all dscp configurations in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DscpConfigurationListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.DscpConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_dscp_configuration_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_dscp_configuration_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DscpConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/dscpConfigurations"} # type: ignore +class AvailableEndpointServicesOperations: + """AvailableEndpointServicesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> AsyncIterable["_models.EndpointServicesListResult"]: + """List what values of endpoint services are available for use. + + :param location: The location to check available endpoint services. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either EndpointServicesListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.EndpointServicesListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.EndpointServicesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_endpoint_services_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_endpoint_services_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("EndpointServicesListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/virtualNetworkAvailableEndpointServices"} # type: ignore +class ExpressRouteCircuitAuthorizationsOperations: + """ExpressRouteCircuitAuthorizationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_authorizations_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified authorization from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitAuthorization": + """Gets the specified authorization from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitAuthorization, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_authorizations_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRouteCircuitAuthorization", + **kwargs: Any + ) -> "_models.ExpressRouteCircuitAuthorization": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(authorization_parameters, 'ExpressRouteCircuitAuthorization') + + request = build_express_route_circuit_authorizations_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRouteCircuitAuthorization", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitAuthorization"]: + """Creates or updates an authorization in the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :param authorization_parameters: Parameters supplied to the create or update express route + circuit authorization operation. + :type authorization_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteCircuitAuthorization or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitAuthorization"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + authorization_parameters=authorization_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.AuthorizationListResult"]: + """Gets all authorizations in an express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AuthorizationListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AuthorizationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AuthorizationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuit_authorizations_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuit_authorizations_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AuthorizationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations"} # type: ignore +class ExpressRouteCircuitPeeringsOperations: + """ExpressRouteCircuitPeeringsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_peerings_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified peering from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitPeering": + """Gets the specified peering for the express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_peerings_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCircuitPeering", + **kwargs: Any + ) -> "_models.ExpressRouteCircuitPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(peering_parameters, 'ExpressRouteCircuitPeering') + + request = build_express_route_circuit_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCircuitPeering", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitPeering"]: + """Creates or updates a peering in the specified express route circuits. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param peering_parameters: Parameters supplied to the create or update express route circuit + peering operation. + :type peering_parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteCircuitPeering or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + peering_parameters=peering_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteCircuitPeeringListResult"]: + """Gets all peerings in a specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitPeeringListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeeringListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuit_peerings_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuit_peerings_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitPeeringListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings"} # type: ignore +class ExpressRouteCircuitConnectionsOperations: + """ExpressRouteCircuitConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_connections_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified Express Route Circuit Connection from the specified express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the express route circuit connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitConnection": + """Gets the specified Express Route Circuit Connection from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the express route circuit connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_connections_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + express_route_circuit_connection_parameters: "_models.ExpressRouteCircuitConnection", + **kwargs: Any + ) -> "_models.ExpressRouteCircuitConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(express_route_circuit_connection_parameters, 'ExpressRouteCircuitConnection') + + request = build_express_route_circuit_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + express_route_circuit_connection_parameters: "_models.ExpressRouteCircuitConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitConnection"]: + """Creates or updates a Express Route Circuit Connection in the specified express route circuits. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the express route circuit connection. + :type connection_name: str + :param express_route_circuit_connection_parameters: Parameters supplied to the create or update + express route circuit connection operation. + :type express_route_circuit_connection_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteCircuitConnection or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + express_route_circuit_connection_parameters=express_route_circuit_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteCircuitConnectionListResult"]: + """Gets all global reach connections associated with a private peering in an express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections"} # type: ignore +class PeerExpressRouteCircuitConnectionsOperations: + """PeerExpressRouteCircuitConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.PeerExpressRouteCircuitConnection": + """Gets the specified Peer Express Route Circuit Connection from the specified express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the peer express route circuit connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PeerExpressRouteCircuitConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PeerExpressRouteCircuitConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerExpressRouteCircuitConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_peer_express_route_circuit_connections_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PeerExpressRouteCircuitConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PeerExpressRouteCircuitConnectionListResult"]: + """Gets all global reach peer connections associated with a private peering in an express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PeerExpressRouteCircuitConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PeerExpressRouteCircuitConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerExpressRouteCircuitConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_peer_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_peer_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PeerExpressRouteCircuitConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections"} # type: ignore +class ExpressRouteCircuitsOperations: + """ExpressRouteCircuitsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuit": + """Gets information about the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuit, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + parameters: "_models.ExpressRouteCircuit", + **kwargs: Any + ) -> "_models.ExpressRouteCircuit": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ExpressRouteCircuit') + + request = build_express_route_circuits_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + parameters: "_models.ExpressRouteCircuit", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuit"]: + """Creates or updates an express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param parameters: Parameters supplied to the create or update express route circuit operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteCircuit or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + circuit_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ExpressRouteCircuit": + """Updates an express route circuit tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param parameters: Parameters supplied to update express route circuit tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuit, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_express_route_circuits_update_tags_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + async def _list_arp_table_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsArpTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsArpTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_list_arp_table_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_arp_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_arp_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + + @distributed_trace_async + async def begin_list_arp_table( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitsArpTableListResult"]: + """Gets the currently advertised ARP table associated with the express route circuit in a resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ExpressRouteCircuitsArpTableListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsArpTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsArpTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_arp_table_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_arp_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + async def _list_routes_table_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_list_routes_table_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore + + + @distributed_trace_async + async def begin_list_routes_table( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitsRoutesTableListResult"]: + """Gets the currently advertised routes table associated with the express route circuit in a + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ExpressRouteCircuitsRoutesTableListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsRoutesTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsRoutesTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_routes_table_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore + + async def _list_routes_table_summary_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_list_routes_table_summary_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_summary_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableSummaryListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_summary_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + + @distributed_trace_async + async def begin_list_routes_table_summary( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"]: + """Gets the currently advertised routes table summary associated with the express route circuit in + a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ExpressRouteCircuitsRoutesTableSummaryListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsRoutesTableSummaryListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_routes_table_summary_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableSummaryListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table_summary.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + @distributed_trace_async + async def get_stats( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitStats": + """Gets all the stats from an express route circuit in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitStats, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitStats + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitStats"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_get_stats_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get_stats.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitStats', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_stats.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/stats"} # type: ignore + + + @distributed_trace_async + async def get_peering_stats( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitStats": + """Gets all stats from an express route circuit in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitStats, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitStats + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitStats"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_get_peering_stats_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get_peering_stats.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitStats', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_peering_stats.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/stats"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteCircuitListResult"]: + """Gets all the express route circuits in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuits_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuits_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteCircuitListResult"]: + """Gets all the express route circuits in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuits_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuits_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCircuits"} # type: ignore +class ExpressRouteServiceProvidersOperations: + """ExpressRouteServiceProvidersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteServiceProviderListResult"]: + """Gets all the available express route service providers. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteServiceProviderListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteServiceProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteServiceProviderListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_service_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_service_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteServiceProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteServiceProviders"} # type: ignore +class ExpressRouteCrossConnectionsOperations: + """ExpressRouteCrossConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteCrossConnectionListResult"]: + """Retrieves all the ExpressRouteCrossConnections in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCrossConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_cross_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_cross_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCrossConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCrossConnections"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteCrossConnectionListResult"]: + """Retrieves all the ExpressRouteCrossConnections in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCrossConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_cross_connections_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_cross_connections_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCrossConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + cross_connection_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnection": + """Gets details about the specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group (peering location of the circuit). + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection (service key of the + circuit). + :type cross_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCrossConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_get_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + cross_connection_name: str, + parameters: "_models.ExpressRouteCrossConnection", + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ExpressRouteCrossConnection') + + request = build_express_route_cross_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + cross_connection_name: str, + parameters: "_models.ExpressRouteCrossConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCrossConnection"]: + """Update the specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param parameters: Parameters supplied to the update express route crossConnection operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteCrossConnection or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + cross_connection_name: str, + cross_connection_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnection": + """Updates an express route cross connection tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the cross connection. + :type cross_connection_name: str + :param cross_connection_parameters: Parameters supplied to update express route cross + connection tags. + :type cross_connection_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCrossConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(cross_connection_parameters, 'TagsObject') + + request = build_express_route_cross_connections_update_tags_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + + async def _list_arp_table_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsArpTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsArpTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_list_arp_table_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_arp_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_arp_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + + @distributed_trace_async + async def begin_list_arp_table( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitsArpTableListResult"]: + """Gets the currently advertised ARP table associated with the express route cross connection in a + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ExpressRouteCircuitsArpTableListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsArpTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsArpTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_arp_table_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_arp_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + async def _list_routes_table_summary_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_list_routes_table_summary_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_summary_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCrossConnectionsRoutesTableSummaryListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_summary_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + + @distributed_trace_async + async def begin_list_routes_table_summary( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"]: + """Gets the route table summary associated with the express route cross connection in a resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ExpressRouteCrossConnectionsRoutesTableSummaryListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_routes_table_summary_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCrossConnectionsRoutesTableSummaryListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table_summary.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + async def _list_routes_table_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_list_routes_table_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore + + + @distributed_trace_async + async def begin_list_routes_table( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCircuitsRoutesTableListResult"]: + """Gets the currently advertised routes table associated with the express route cross connection + in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + ExpressRouteCircuitsRoutesTableListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsRoutesTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsRoutesTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_routes_table_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore +class ExpressRouteCrossConnectionPeeringsOperations: + """ExpressRouteCrossConnectionPeeringsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + cross_connection_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteCrossConnectionPeeringList"]: + """Gets all peerings in a specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCrossConnectionPeeringList or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeeringList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeeringList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_cross_connection_peerings_list_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_cross_connection_peerings_list_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCrossConnectionPeeringList", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connection_peerings_delete_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified peering from the ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnectionPeering": + """Gets the specified peering for the ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCrossConnectionPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connection_peerings_get_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCrossConnectionPeering", + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnectionPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(peering_parameters, 'ExpressRouteCrossConnectionPeering') + + request = build_express_route_cross_connection_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCrossConnectionPeering", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteCrossConnectionPeering"]: + """Creates or updates a peering in the specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param peering_parameters: Parameters supplied to the create or update + ExpressRouteCrossConnection peering operation. + :type peering_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteCrossConnectionPeering + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + peering_parameters=peering_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore +class ExpressRoutePortsLocationsOperations: + """ExpressRoutePortsLocationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRoutePortsLocationListResult"]: + """Retrieves all ExpressRoutePort peering locations. Does not return available bandwidths for each + location. Available bandwidths can only be obtained when retrieving a specific peering + location. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortsLocationListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortsLocationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_ports_locations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_ports_locations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortsLocationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations"} # type: ignore + + @distributed_trace_async + async def get( + self, + location_name: str, + **kwargs: Any + ) -> "_models.ExpressRoutePortsLocation": + """Retrieves a single ExpressRoutePort peering location, including the list of available + bandwidths available at said peering location. + + :param location_name: Name of the requested ExpressRoutePort peering location. + :type location_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePortsLocation, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortsLocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_ports_locations_get_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePortsLocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations/{locationName}"} # type: ignore + +class ExpressRoutePortsOperations: + """ExpressRoutePortsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_ports_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> "_models.ExpressRoutePort": + """Retrieves the requested ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of ExpressRoutePort. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePort, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_ports_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + express_route_port_name: str, + parameters: "_models.ExpressRoutePort", + **kwargs: Any + ) -> "_models.ExpressRoutePort": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ExpressRoutePort') + + request = build_express_route_ports_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + express_route_port_name: str, + parameters: "_models.ExpressRoutePort", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRoutePort"]: + """Creates or updates the specified ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :param parameters: Parameters supplied to the create ExpressRoutePort operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRoutePort or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + express_route_port_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ExpressRoutePort": + """Update ExpressRoutePort tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :param parameters: Parameters supplied to update ExpressRoutePort resource tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePort, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_express_route_ports_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRoutePortListResult"]: + """List all the ExpressRoutePort resources in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_ports_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_ports_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRoutePortListResult"]: + """List all the ExpressRoutePort resources in the specified subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_ports_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_ports_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePorts"} # type: ignore + + @distributed_trace_async + async def generate_loa( + self, + resource_group_name: str, + express_route_port_name: str, + request: "_models.GenerateExpressRoutePortsLOARequest", + **kwargs: Any + ) -> "_models.GenerateExpressRoutePortsLOAResult": + """Generate a letter of authorization for the requested ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of ExpressRoutePort. + :type express_route_port_name: str + :param request: Request parameters supplied to generate a letter of authorization. + :type request: ~azure.mgmt.network.v2022_01_01.models.GenerateExpressRoutePortsLOARequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: GenerateExpressRoutePortsLOAResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.GenerateExpressRoutePortsLOAResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.GenerateExpressRoutePortsLOAResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'GenerateExpressRoutePortsLOARequest') + + request = build_express_route_ports_generate_loa_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.generate_loa.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('GenerateExpressRoutePortsLOAResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + generate_loa.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/generateLoa"} # type: ignore + +class ExpressRouteLinksOperations: + """ExpressRouteLinksOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + express_route_port_name: str, + link_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteLink": + """Retrieves the specified ExpressRouteLink resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :param link_name: The name of the ExpressRouteLink resource. + :type link_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteLink, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLink + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteLink"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_links_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + link_name=link_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteLink', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links/{linkName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRouteLinkListResult"]: + """Retrieve the ExpressRouteLink sub-resources of the specified ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteLinkListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteLinkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_links_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_links_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteLinkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links"} # type: ignore +class ExpressRoutePortAuthorizationsOperations: + """ExpressRoutePortAuthorizationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_port_authorizations_delete_request_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified authorization from the specified express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + **kwargs: Any + ) -> "_models.ExpressRoutePortAuthorization": + """Gets the specified authorization from the specified express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePortAuthorization, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_port_authorizations_get_request( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRoutePortAuthorization", + **kwargs: Any + ) -> "_models.ExpressRoutePortAuthorization": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(authorization_parameters, 'ExpressRoutePortAuthorization') + + request = build_express_route_port_authorizations_create_or_update_request_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRoutePortAuthorization", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRoutePortAuthorization"]: + """Creates or updates an authorization in the specified express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :param authorization_parameters: Parameters supplied to the create or update express route port + authorization operation. + :type authorization_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRoutePortAuthorization or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorization"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + authorization_parameters=authorization_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ExpressRoutePortAuthorizationListResult"]: + """Gets all authorizations in an express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortAuthorizationListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorizationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorizationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_port_authorizations_list_request( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_port_authorizations_list_request( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortAuthorizationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations"} # type: ignore +class FirewallPoliciesOperations: + """FirewallPoliciesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policies_delete_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified Firewall Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + firewall_policy_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.FirewallPolicy": + """Gets the specified Firewall Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policies_get_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.FirewallPolicy", + **kwargs: Any + ) -> "_models.FirewallPolicy": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FirewallPolicy') + + request = build_firewall_policies_create_or_update_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.FirewallPolicy", + **kwargs: Any + ) -> AsyncLROPoller["_models.FirewallPolicy"]: + """Creates or updates the specified Firewall Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Parameters supplied to the create or update Firewall Policy operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either FirewallPolicy or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.FirewallPolicy] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.FirewallPolicy": + """Updates tags of a Azure Firewall Policy resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Parameters supplied to update Azure Firewall Policy tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_firewall_policies_update_tags_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.FirewallPolicyListResult"]: + """Lists all Firewall Policies in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FirewallPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("FirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.FirewallPolicyListResult"]: + """Gets all the Firewall Policies in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FirewallPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("FirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/firewallPolicies"} # type: ignore +class FirewallPolicyRuleCollectionGroupsOperations: + """FirewallPolicyRuleCollectionGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_rule_collection_groups_delete_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified FirewallPolicyRuleCollectionGroup. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param rule_collection_group_name: The name of the FirewallPolicyRuleCollectionGroup. + :type rule_collection_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + **kwargs: Any + ) -> "_models.FirewallPolicyRuleCollectionGroup": + """Gets the specified FirewallPolicyRuleCollectionGroup. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param rule_collection_group_name: The name of the FirewallPolicyRuleCollectionGroup. + :type rule_collection_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FirewallPolicyRuleCollectionGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_rule_collection_groups_get_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + parameters: "_models.FirewallPolicyRuleCollectionGroup", + **kwargs: Any + ) -> "_models.FirewallPolicyRuleCollectionGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FirewallPolicyRuleCollectionGroup') + + request = build_firewall_policy_rule_collection_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + parameters: "_models.FirewallPolicyRuleCollectionGroup", + **kwargs: Any + ) -> AsyncLROPoller["_models.FirewallPolicyRuleCollectionGroup"]: + """Creates or updates the specified FirewallPolicyRuleCollectionGroup. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param rule_collection_group_name: The name of the FirewallPolicyRuleCollectionGroup. + :type rule_collection_group_name: str + :param parameters: Parameters supplied to the create or update + FirewallPolicyRuleCollectionGroup operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either FirewallPolicyRuleCollectionGroup or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.FirewallPolicyRuleCollectionGroupListResult"]: + """Lists all FirewallPolicyRuleCollectionGroups in a FirewallPolicy resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FirewallPolicyRuleCollectionGroupListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_firewall_policy_rule_collection_groups_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_firewall_policy_rule_collection_groups_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("FirewallPolicyRuleCollectionGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups"} # type: ignore +class FirewallPolicyIdpsSignaturesOperations: + """FirewallPolicyIdpsSignaturesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.IDPSQueryObject", + **kwargs: Any + ) -> "_models.QueryResults": + """Retrieves the current status of IDPS signatures for the relevant policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: + :type parameters: ~azure.mgmt.network.v2022_01_01.models.IDPSQueryObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: QueryResults, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.QueryResults + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.QueryResults"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'IDPSQueryObject') + + request = build_firewall_policy_idps_signatures_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('QueryResults', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/listIdpsSignatures"} # type: ignore + +class FirewallPolicyIdpsSignaturesOverridesOperations: + """FirewallPolicyIdpsSignaturesOverridesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def patch( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.SignaturesOverrides", + **kwargs: Any + ) -> "_models.SignaturesOverrides": + """Will update the status of policy's signature overrides for IDPS. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Will contain all properties of the object to put. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverrides, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverrides"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SignaturesOverrides') + + request = build_firewall_policy_idps_signatures_overrides_patch_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.patch.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverrides', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + patch.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default"} # type: ignore + + + @distributed_trace_async + async def put( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.SignaturesOverrides", + **kwargs: Any + ) -> "_models.SignaturesOverrides": + """Will override/create a new signature overrides for the policy's IDPS. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Will contain all properties of the object to put. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverrides, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverrides"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SignaturesOverrides') + + request = build_firewall_policy_idps_signatures_overrides_put_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.put.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverrides', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + put.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default"} # type: ignore + + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> "_models.SignaturesOverrides": + """Returns all signatures overrides for a specific policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverrides, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverrides"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_idps_signatures_overrides_get_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverrides', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default"} # type: ignore + + + @distributed_trace_async + async def list( + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> "_models.SignaturesOverridesList": + """Returns all signatures overrides objects for a specific policy as a list containing a single + value. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverridesList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverridesList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverridesList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_idps_signatures_overrides_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverridesList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides"} # type: ignore + +class FirewallPolicyIdpsSignaturesFilterValuesOperations: + """FirewallPolicyIdpsSignaturesFilterValuesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.SignatureOverridesFilterValuesQuery", + **kwargs: Any + ) -> "_models.SignatureOverridesFilterValuesResponse": + """Retrieves the current filter values for the signatures overrides. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SignatureOverridesFilterValuesQuery + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignatureOverridesFilterValuesResponse, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignatureOverridesFilterValuesResponse + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignatureOverridesFilterValuesResponse"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SignatureOverridesFilterValuesQuery') + + request = build_firewall_policy_idps_signatures_filter_values_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignatureOverridesFilterValuesResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/listIdpsFilterOptions"} # type: ignore + +class IpAllocationsOperations: + """IpAllocationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_allocation_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_allocations_delete_request_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_allocation_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified IpAllocation. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + ip_allocation_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.IpAllocation": + """Gets the specified IpAllocation by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpAllocation, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpAllocation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_allocations_get_request( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + ip_allocation_name: str, + parameters: "_models.IpAllocation", + **kwargs: Any + ) -> "_models.IpAllocation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'IpAllocation') + + request = build_ip_allocations_create_or_update_request_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + ip_allocation_name: str, + parameters: "_models.IpAllocation", + **kwargs: Any + ) -> AsyncLROPoller["_models.IpAllocation"]: + """Creates or updates an IpAllocation in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :param parameters: Parameters supplied to the create or update virtual network operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.IpAllocation + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either IpAllocation or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.IpAllocation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('IpAllocation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + ip_allocation_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.IpAllocation": + """Updates a IpAllocation tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :param parameters: Parameters supplied to update IpAllocation tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpAllocation, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpAllocation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ip_allocations_update_tags_request( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.IpAllocationListResult"]: + """Gets all IpAllocations in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpAllocationListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.IpAllocationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_allocations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_allocations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("IpAllocationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/IpAllocations"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.IpAllocationListResult"]: + """Gets all IpAllocations in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpAllocationListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.IpAllocationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_allocations_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_allocations_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("IpAllocationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations"} # type: ignore +class IpGroupsOperations: + """IpGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + ip_groups_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.IpGroup": + """Gets the specified ipGroups. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :param expand: Expands resourceIds (of Firewalls/Network Security Groups etc.) back referenced + by the IpGroups resource. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_groups_get_request( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + ip_groups_name: str, + parameters: "_models.IpGroup", + **kwargs: Any + ) -> "_models.IpGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'IpGroup') + + request = build_ip_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('IpGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('IpGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + ip_groups_name: str, + parameters: "_models.IpGroup", + **kwargs: Any + ) -> AsyncLROPoller["_models.IpGroup"]: + """Creates or updates an ipGroups in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :param parameters: Parameters supplied to the create or update IpGroups operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.IpGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either IpGroup or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.IpGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('IpGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + @distributed_trace_async + async def update_groups( + self, + resource_group_name: str, + ip_groups_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.IpGroup": + """Updates tags of an IpGroups resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :param parameters: Parameters supplied to the update ipGroups operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ip_groups_update_groups_request( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_groups.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_groups.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_groups_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_groups_delete_request_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_groups_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified ipGroups. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.IpGroupListResult"]: + """Gets all IpGroups in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpGroupListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.IpGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_groups_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_groups_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("IpGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.IpGroupListResult"]: + """Gets all IpGroups in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpGroupListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.IpGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_groups_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_groups_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("IpGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ipGroups"} # type: ignore +class LoadBalancersOperations: + """LoadBalancersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancers_delete_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + load_balancer_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.LoadBalancer": + """Gets the specified load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LoadBalancer, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LoadBalancer + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancers_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + load_balancer_name: str, + parameters: "_models.LoadBalancer", + **kwargs: Any + ) -> "_models.LoadBalancer": + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'LoadBalancer') + + request = build_load_balancers_create_or_update_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + load_balancer_name: str, + parameters: "_models.LoadBalancer", + **kwargs: Any + ) -> AsyncLROPoller["_models.LoadBalancer"]: + """Creates or updates a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param parameters: Parameters supplied to the create or update load balancer operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.LoadBalancer + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either LoadBalancer or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.LoadBalancer] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('LoadBalancer', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + load_balancer_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.LoadBalancer": + """Updates a load balancer tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param parameters: Parameters supplied to update load balancer tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LoadBalancer, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LoadBalancer + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_load_balancers_update_tags_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.LoadBalancerListResult"]: + """Gets all the load balancers in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.LoadBalancerListResult"]: + """Gets all the load balancers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers"} # type: ignore + + async def _swap_public_ip_addresses_initial( # pylint: disable=inconsistent-return-statements + self, + location: str, + parameters: "_models.LoadBalancerVipSwapRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'LoadBalancerVipSwapRequest') + + request = build_load_balancers_swap_public_ip_addresses_request_initial( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._swap_public_ip_addresses_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _swap_public_ip_addresses_initial.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/setLoadBalancerFrontendPublicIpAddresses"} # type: ignore + + + @distributed_trace_async + async def begin_swap_public_ip_addresses( # pylint: disable=inconsistent-return-statements + self, + location: str, + parameters: "_models.LoadBalancerVipSwapRequest", + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Swaps VIPs between two load balancers. + + :param location: The region where load balancers are located at. + :type location: str + :param parameters: Parameters that define which VIPs should be swapped. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.LoadBalancerVipSwapRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._swap_public_ip_addresses_initial( + location=location, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_swap_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/setLoadBalancerFrontendPublicIpAddresses"} # type: ignore + + async def _list_inbound_nat_rule_port_mappings_initial( + self, + group_name: str, + load_balancer_name: str, + backend_pool_name: str, + parameters: "_models.QueryInboundNatRulePortMappingRequest", + **kwargs: Any + ) -> "_models.BackendAddressInboundNatRulePortMappings": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressInboundNatRulePortMappings"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryInboundNatRulePortMappingRequest') + + request = build_load_balancers_list_inbound_nat_rule_port_mappings_request_initial( + group_name=group_name, + load_balancer_name=load_balancer_name, + backend_pool_name=backend_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._list_inbound_nat_rule_port_mappings_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BackendAddressInboundNatRulePortMappings', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('BackendAddressInboundNatRulePortMappings', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_inbound_nat_rule_port_mappings_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendPoolName}/queryInboundNatRulePortMapping"} # type: ignore + + + @distributed_trace_async + async def begin_list_inbound_nat_rule_port_mappings( + self, + group_name: str, + load_balancer_name: str, + backend_pool_name: str, + parameters: "_models.QueryInboundNatRulePortMappingRequest", + **kwargs: Any + ) -> AsyncLROPoller["_models.BackendAddressInboundNatRulePortMappings"]: + """List of inbound NAT rule port mappings. + + :param group_name: The name of the resource group. + :type group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_pool_name: The name of the load balancer backend address pool. + :type backend_pool_name: str + :param parameters: Query inbound NAT rule port mapping request. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryInboundNatRulePortMappingRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + BackendAddressInboundNatRulePortMappings or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.BackendAddressInboundNatRulePortMappings] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressInboundNatRulePortMappings"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_inbound_nat_rule_port_mappings_initial( + group_name=group_name, + load_balancer_name=load_balancer_name, + backend_pool_name=backend_pool_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BackendAddressInboundNatRulePortMappings', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_inbound_nat_rule_port_mappings.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendPoolName}/queryInboundNatRulePortMapping"} # type: ignore +class LoadBalancerBackendAddressPoolsOperations: + """LoadBalancerBackendAddressPoolsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.LoadBalancerBackendAddressPoolListResult"]: + """Gets all the load balancer backed address pools. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerBackendAddressPoolListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerBackendAddressPoolListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerBackendAddressPoolListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_backend_address_pools_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_backend_address_pools_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerBackendAddressPoolListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + **kwargs: Any + ) -> "_models.BackendAddressPool": + """Gets load balancer backend address pool. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_address_pool_name: The name of the backend address pool. + :type backend_address_pool_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BackendAddressPool, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BackendAddressPool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressPool"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_backend_address_pools_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + parameters: "_models.BackendAddressPool", + **kwargs: Any + ) -> "_models.BackendAddressPool": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressPool"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'BackendAddressPool') + + request = build_load_balancer_backend_address_pools_create_or_update_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + parameters: "_models.BackendAddressPool", + **kwargs: Any + ) -> AsyncLROPoller["_models.BackendAddressPool"]: + """Creates or updates a load balancer backend address pool. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_address_pool_name: The name of the backend address pool. + :type backend_address_pool_name: str + :param parameters: Parameters supplied to the create or update load balancer backend address + pool operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.BackendAddressPool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either BackendAddressPool or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressPool"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_backend_address_pools_delete_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified load balancer backend address pool. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_address_pool_name: The name of the backend address pool. + :type backend_address_pool_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore +class LoadBalancerFrontendIPConfigurationsOperations: + """LoadBalancerFrontendIPConfigurationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.LoadBalancerFrontendIPConfigurationListResult"]: + """Gets all the load balancer frontend IP configurations. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerFrontendIPConfigurationListResult or + the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerFrontendIPConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerFrontendIPConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_frontend_ip_configurations_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_frontend_ip_configurations_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerFrontendIPConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + load_balancer_name: str, + frontend_ip_configuration_name: str, + **kwargs: Any + ) -> "_models.FrontendIPConfiguration": + """Gets load balancer frontend IP configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param frontend_ip_configuration_name: The name of the frontend IP configuration. + :type frontend_ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FrontendIPConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FrontendIPConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_frontend_ip_configurations_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + frontend_ip_configuration_name=frontend_ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FrontendIPConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations/{frontendIPConfigurationName}"} # type: ignore + +class InboundNatRulesOperations: + """InboundNatRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.InboundNatRuleListResult"]: + """Gets all the inbound NAT rules in a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either InboundNatRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.InboundNatRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_inbound_nat_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_inbound_nat_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("InboundNatRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_inbound_nat_rules_delete_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified load balancer inbound NAT rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param inbound_nat_rule_name: The name of the inbound NAT rule. + :type inbound_nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.InboundNatRule": + """Gets the specified load balancer inbound NAT rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param inbound_nat_rule_name: The name of the inbound NAT rule. + :type inbound_nat_rule_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: InboundNatRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.InboundNatRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_inbound_nat_rules_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('InboundNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + inbound_nat_rule_parameters: "_models.InboundNatRule", + **kwargs: Any + ) -> "_models.InboundNatRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(inbound_nat_rule_parameters, 'InboundNatRule') + + request = build_inbound_nat_rules_create_or_update_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('InboundNatRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('InboundNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + inbound_nat_rule_parameters: "_models.InboundNatRule", + **kwargs: Any + ) -> AsyncLROPoller["_models.InboundNatRule"]: + """Creates or updates a load balancer inbound NAT rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param inbound_nat_rule_name: The name of the inbound NAT rule. + :type inbound_nat_rule_name: str + :param inbound_nat_rule_parameters: Parameters supplied to the create or update inbound NAT + rule operation. + :type inbound_nat_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.InboundNatRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either InboundNatRule or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + inbound_nat_rule_parameters=inbound_nat_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('InboundNatRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore +class LoadBalancerLoadBalancingRulesOperations: + """LoadBalancerLoadBalancingRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.LoadBalancerLoadBalancingRuleListResult"]: + """Gets all the load balancing rules in a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerLoadBalancingRuleListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerLoadBalancingRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerLoadBalancingRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_load_balancing_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_load_balancing_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerLoadBalancingRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + load_balancer_name: str, + load_balancing_rule_name: str, + **kwargs: Any + ) -> "_models.LoadBalancingRule": + """Gets the specified load balancer load balancing rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param load_balancing_rule_name: The name of the load balancing rule. + :type load_balancing_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LoadBalancingRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LoadBalancingRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancingRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_load_balancing_rules_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + load_balancing_rule_name=load_balancing_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LoadBalancingRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules/{loadBalancingRuleName}"} # type: ignore + +class LoadBalancerOutboundRulesOperations: + """LoadBalancerOutboundRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.LoadBalancerOutboundRuleListResult"]: + """Gets all the outbound rules in a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerOutboundRuleListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerOutboundRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerOutboundRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_outbound_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_outbound_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerOutboundRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + load_balancer_name: str, + outbound_rule_name: str, + **kwargs: Any + ) -> "_models.OutboundRule": + """Gets the specified load balancer outbound rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param outbound_rule_name: The name of the outbound rule. + :type outbound_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: OutboundRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.OutboundRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.OutboundRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_outbound_rules_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + outbound_rule_name=outbound_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('OutboundRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules/{outboundRuleName}"} # type: ignore + +class LoadBalancerNetworkInterfacesOperations: + """LoadBalancerNetworkInterfacesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceListResult"]: + """Gets associated load balancer network interfaces. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_network_interfaces_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_network_interfaces_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/networkInterfaces"} # type: ignore +class LoadBalancerProbesOperations: + """LoadBalancerProbesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.LoadBalancerProbeListResult"]: + """Gets all the load balancer probes. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerProbeListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerProbeListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerProbeListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_probes_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_probes_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerProbeListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + load_balancer_name: str, + probe_name: str, + **kwargs: Any + ) -> "_models.Probe": + """Gets load balancer probe. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param probe_name: The name of the probe. + :type probe_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Probe, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Probe + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Probe"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_probes_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + probe_name=probe_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Probe', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}"} # type: ignore + +class NatGatewaysOperations: + """NatGatewaysOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + nat_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_gateways_delete_request_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + nat_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified nat gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + nat_gateway_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NatGateway": + """Gets the specified nat gateway in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NatGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_gateways_get_request( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NatGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + nat_gateway_name: str, + parameters: "_models.NatGateway", + **kwargs: Any + ) -> Optional["_models.NatGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.NatGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NatGateway') + + request = build_nat_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('NatGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NatGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + nat_gateway_name: str, + parameters: "_models.NatGateway", + **kwargs: Any + ) -> AsyncLROPoller["_models.NatGateway"]: + """Creates or updates a nat gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :param parameters: Parameters supplied to the create or update nat gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either NatGateway or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NatGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NatGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + nat_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NatGateway": + """Updates nat gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :param parameters: Parameters supplied to update nat gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NatGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_nat_gateways_update_tags_request( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NatGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.NatGatewayListResult"]: + """Gets all the Nat Gateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NatGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NatGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_nat_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_nat_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NatGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/natGateways"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NatGatewayListResult"]: + """Gets all nat gateways in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NatGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NatGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_nat_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_nat_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NatGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways"} # type: ignore +class NetworkInterfaceIPConfigurationsOperations: + """NetworkInterfaceIPConfigurationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceIPConfigurationListResult"]: + """Get all ip configurations in a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceIPConfigurationListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interface_ip_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interface_ip_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceIPConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_interface_name: str, + ip_configuration_name: str, + **kwargs: Any + ) -> "_models.NetworkInterfaceIPConfiguration": + """Gets the specified network interface ip configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the ip configuration name. + :type ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterfaceIPConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interface_ip_configurations_get_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterfaceIPConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}"} # type: ignore + +class NetworkInterfaceLoadBalancersOperations: + """NetworkInterfaceLoadBalancersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceLoadBalancerListResult"]: + """List all load balancers in a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceLoadBalancerListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceLoadBalancerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceLoadBalancerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interface_load_balancers_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interface_load_balancers_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceLoadBalancerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/loadBalancers"} # type: ignore +class NetworkInterfaceTapConfigurationsOperations: + """NetworkInterfaceTapConfigurationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interface_tap_configurations_delete_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified tap configuration from the NetworkInterface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param tap_configuration_name: The name of the tap configuration. + :type tap_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + **kwargs: Any + ) -> "_models.NetworkInterfaceTapConfiguration": + """Get the specified tap configuration on a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param tap_configuration_name: The name of the tap configuration. + :type tap_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterfaceTapConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interface_tap_configurations_get_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + tap_configuration_parameters: "_models.NetworkInterfaceTapConfiguration", + **kwargs: Any + ) -> "_models.NetworkInterfaceTapConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(tap_configuration_parameters, 'NetworkInterfaceTapConfiguration') + + request = build_network_interface_tap_configurations_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + tap_configuration_parameters: "_models.NetworkInterfaceTapConfiguration", + **kwargs: Any + ) -> AsyncLROPoller["_models.NetworkInterfaceTapConfiguration"]: + """Creates or updates a Tap configuration in the specified NetworkInterface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param tap_configuration_name: The name of the tap configuration. + :type tap_configuration_name: str + :param tap_configuration_parameters: Parameters supplied to the create or update tap + configuration operation. + :type tap_configuration_parameters: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either NetworkInterfaceTapConfiguration or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + tap_configuration_parameters=tap_configuration_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkInterfaceTapConfigurationListResult"]: + """Get all Tap configurations in a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceTapConfigurationListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interface_tap_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interface_tap_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceTapConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations"} # type: ignore +class NetworkManagersOperations: + """NetworkManagersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + **kwargs: Any + ) -> "_models.NetworkManager": + """Gets the specified Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManager, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_managers_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManager", + **kwargs: Any + ) -> "_models.NetworkManager": + """Creates or updates a Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which network manager is. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManager, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManager') + + request = build_network_managers_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_managers_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + @distributed_trace_async + async def patch( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.PatchObject", + **kwargs: Any + ) -> "_models.NetworkManager": + """Patch NetworkManager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which network manager is. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PatchObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManager, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PatchObject') + + request = build_network_managers_patch_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.patch.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + patch.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + @distributed_trace + def list_by_subscription( + self, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkManagerListResult"]: + """List all network managers in a subscription. + + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_managers_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_managers_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagers"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkManagerListResult"]: + """List network managers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_managers_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_managers_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers"} # type: ignore +class NetworkManagerCommitsOperations: + """NetworkManagerCommitsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _post_initial( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManagerCommit", + **kwargs: Any + ) -> "_models.NetworkManagerCommit": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerCommit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerCommit') + + request = build_network_manager_commits_post_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._post_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 200: + deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) + + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _post_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit"} # type: ignore + + + @distributed_trace_async + async def begin_post( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManagerCommit", + **kwargs: Any + ) -> AsyncLROPoller["_models.NetworkManagerCommit"]: + """Post a Network Manager Commit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which Managed Network commit is. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerCommit + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either NetworkManagerCommit or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkManagerCommit] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerCommit"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._post_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_post.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit"} # type: ignore +class NetworkManagerDeploymentStatusOperations: + """NetworkManagerDeploymentStatusOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManagerDeploymentStatusParameter", + **kwargs: Any + ) -> "_models.NetworkManagerDeploymentStatusListResult": + """Post to List of Network Manager Deployment Status. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which Managed Network deployment status is. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerDeploymentStatusParameter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerDeploymentStatusListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerDeploymentStatusListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerDeploymentStatusListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerDeploymentStatusParameter') + + request = build_network_manager_deployment_status_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerDeploymentStatusListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listDeploymentStatus"} # type: ignore + +class SubscriptionNetworkManagerConnectionsOperations: + """SubscriptionNetworkManagerConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def create_or_update( + self, + network_manager_connection_name: str, + parameters: "_models.NetworkManagerConnection", + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Create a network manager connection on this subscription. + + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :param parameters: Network manager connection to be created/updated. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerConnection') + + request = build_subscription_network_manager_connections_create_or_update_request( + subscription_id=self._config.subscription_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace_async + async def get( + self, + network_manager_connection_name: str, + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Get a specified connection created by this subscription. + + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subscription_network_manager_connections_get_request( + subscription_id=self._config.subscription_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements + self, + network_manager_connection_name: str, + **kwargs: Any + ) -> None: + """Delete specified connection created by this subscription. + + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subscription_network_manager_connections_delete_request( + subscription_id=self._config.subscription_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkManagerConnectionListResult"]: + """List all network manager connections created by this subscription. + + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerConnectionListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_subscription_network_manager_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_subscription_network_manager_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore +class ManagementGroupNetworkManagerConnectionsOperations: + """ManagementGroupNetworkManagerConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def create_or_update( + self, + management_group_id: str, + network_manager_connection_name: str, + parameters: "_models.NetworkManagerConnection", + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Create a network manager connection on this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :param parameters: Network manager connection to be created/updated. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerConnection') + + request = build_management_group_network_manager_connections_create_or_update_request( + management_group_id=management_group_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace_async + async def get( + self, + management_group_id: str, + network_manager_connection_name: str, + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Get a specified connection created by this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_management_group_network_manager_connections_get_request( + management_group_id=management_group_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements + self, + management_group_id: str, + network_manager_connection_name: str, + **kwargs: Any + ) -> None: + """Delete specified pending connection created by this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_management_group_network_manager_connections_delete_request( + management_group_id=management_group_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + management_group_id: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkManagerConnectionListResult"]: + """List all network manager connections created by this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerConnectionListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_management_group_network_manager_connections_list_request( + management_group_id=management_group_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_management_group_network_manager_connections_list_request( + management_group_id=management_group_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore +class ConnectivityConfigurationsOperations: + """ConnectivityConfigurationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + **kwargs: Any + ) -> "_models.ConnectivityConfiguration": + """Gets a Network Connectivity Configuration, specified by the resource group, network manager + name, and connectivity Configuration name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager connectivity configuration. + :type configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectivityConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connectivity_configurations_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + connectivity_configuration: "_models.ConnectivityConfiguration", + **kwargs: Any + ) -> "_models.ConnectivityConfiguration": + """Creates/Updates a new network manager connectivity configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager connectivity configuration. + :type configuration_name: str + :param connectivity_configuration: Parameters supplied to create/update a network manager + connectivity configuration. + :type connectivity_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectivityConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(connectivity_configuration, 'ConnectivityConfiguration') + + request = build_connectivity_configurations_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connectivity_configurations_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a network manager connectivity configuration, specified by the resource group, network + manager name, and connectivity configuration name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager connectivity configuration. + :type configuration_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.ConnectivityConfigurationListResult"]: + """Lists all the network manager connectivity configuration in a specified network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ConnectivityConfigurationListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ConnectivityConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_connectivity_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_connectivity_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ConnectivityConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations"} # type: ignore +class NetworkGroupsOperations: + """NetworkGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + **kwargs: Any + ) -> "_models.NetworkGroup": + """Gets the specified network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_groups_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + parameters: "_models.NetworkGroup", + if_match: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkGroup": + """Creates or updates a network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param parameters: Parameters supplied to the specify which network group need to create. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkGroup + :param if_match: The ETag of the transformation. Omit this value to always overwrite the + current resource. Specify the last-seen ETag value to prevent accidentally overwriting + concurrent changes. Default value is None. + :type if_match: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkGroup') + + request = build_network_groups_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + content_type=content_type, + json=_json, + if_match=if_match, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 200: + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + + deserialized = self._deserialize('NetworkGroup', pipeline_response) + + if response.status_code == 201: + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + + deserialized = self._deserialize('NetworkGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_groups_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkGroupListResult"]: + """Lists the specified network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_groups_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_groups_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups"} # type: ignore +class StaticMembersOperations: + """StaticMembersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + **kwargs: Any + ) -> "_models.StaticMember": + """Gets the specified static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param static_member_name: The name of the static member. + :type static_member_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: StaticMember, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.StaticMember + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_static_members_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + static_member_name=static_member_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('StaticMember', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + parameters: "_models.StaticMember", + **kwargs: Any + ) -> "_models.StaticMember": + """Creates or updates a static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param static_member_name: The name of the static member. + :type static_member_name: str + :param parameters: Parameters supplied to the specify the static member to create. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.StaticMember + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: StaticMember, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.StaticMember + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'StaticMember') + + request = build_static_members_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + static_member_name=static_member_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('StaticMember', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('StaticMember', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore + + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + **kwargs: Any + ) -> None: + """Deletes a static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param static_member_name: The name of the static member. + :type static_member_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_static_members_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + static_member_name=static_member_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.StaticMemberListResult"]: + """Lists the specified static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either StaticMemberListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.StaticMemberListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMemberListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_static_members_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_static_members_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("StaticMemberListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers"} # type: ignore +class ScopeConnectionsOperations: + """ScopeConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + parameters: "_models.ScopeConnection", + **kwargs: Any + ) -> "_models.ScopeConnection": + """Creates or updates scope connection from Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param scope_connection_name: Name for the cross-tenant connection. + :type scope_connection_name: str + :param parameters: Scope connection to be created/updated. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ScopeConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ScopeConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ScopeConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ScopeConnection') + + request = build_scope_connections_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + scope_connection_name=scope_connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ScopeConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ScopeConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore + + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + **kwargs: Any + ) -> "_models.ScopeConnection": + """Get specified scope connection created by this Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param scope_connection_name: Name for the cross-tenant connection. + :type scope_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ScopeConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ScopeConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_scope_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + scope_connection_name=scope_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ScopeConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore + + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + **kwargs: Any + ) -> None: + """Delete the pending scope connection created by this network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param scope_connection_name: Name for the cross-tenant connection. + :type scope_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_scope_connections_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + scope_connection_name=scope_connection_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.ScopeConnectionListResult"]: + """List all scope connections created by this network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ScopeConnectionListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ScopeConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_scope_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_scope_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ScopeConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections"} # type: ignore +class SecurityAdminConfigurationsOperations: + """SecurityAdminConfigurationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.SecurityAdminConfigurationListResult"]: + """Lists all the network manager security admin configurations in a network manager, in a + paginated format. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityAdminConfigurationListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_admin_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_admin_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityAdminConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + **kwargs: Any + ) -> "_models.SecurityAdminConfiguration": + """Retrieves a network manager security admin configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityAdminConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_admin_configurations_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + security_admin_configuration: "_models.SecurityAdminConfiguration", + **kwargs: Any + ) -> "_models.SecurityAdminConfiguration": + """Creates or updates a network manager security admin configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param security_admin_configuration: The security admin configuration to create or update. + :type security_admin_configuration: + ~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityAdminConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(security_admin_configuration, 'SecurityAdminConfiguration') + + request = build_security_admin_configurations_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_admin_configurations_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a network manager security admin configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore +class AdminRuleCollectionsOperations: + """AdminRuleCollectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.AdminRuleCollectionListResult"]: + """Lists all the rule collections in a security admin configuration, in a paginated format. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AdminRuleCollectionListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AdminRuleCollectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_admin_rule_collections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_admin_rule_collections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AdminRuleCollectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + **kwargs: Any + ) -> "_models.AdminRuleCollection": + """Gets a network manager security admin configuration rule collection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AdminRuleCollection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rule_collections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('AdminRuleCollection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_collection: "_models.AdminRuleCollection", + **kwargs: Any + ) -> "_models.AdminRuleCollection": + """Creates or updates an admin rule collection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_collection: The Rule Collection to create or update. + :type rule_collection: ~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AdminRuleCollection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(rule_collection, 'AdminRuleCollection') + + request = build_admin_rule_collections_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AdminRuleCollection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('AdminRuleCollection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rule_collections_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes an admin rule collection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore +class AdminRulesOperations: + """AdminRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.AdminRuleListResult"]: + """List all network manager security configuration admin rules. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AdminRuleListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AdminRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_admin_rules_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_admin_rules_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AdminRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + **kwargs: Any + ) -> "_models.BaseAdminRule": + """Gets a network manager security configuration admin rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BaseAdminRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BaseAdminRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rules_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BaseAdminRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + admin_rule: "_models.BaseAdminRule", + **kwargs: Any + ) -> "_models.BaseAdminRule": + """Creates or updates an admin rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :param admin_rule: The admin rule to create or update. + :type admin_rule: ~azure.mgmt.network.v2022_01_01.models.BaseAdminRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BaseAdminRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BaseAdminRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(admin_rule, 'BaseAdminRule') + + request = build_admin_rules_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BaseAdminRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BaseAdminRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rules_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes an admin rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore +class NetworkProfilesOperations: + """NetworkProfilesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_profile_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_profiles_delete_request_initial( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_profile_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified network profile. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the NetworkProfile. + :type network_profile_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_profile_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkProfile": + """Gets the specified network profile in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the public IP prefix. + :type network_profile_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkProfile, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfile"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_profiles_get_request( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_profile_name: str, + parameters: "_models.NetworkProfile", + **kwargs: Any + ) -> "_models.NetworkProfile": + """Creates or updates a network profile. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the network profile. + :type network_profile_name: str + :param parameters: Parameters supplied to the create or update network profile operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkProfile, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfile"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkProfile') + + request = build_network_profiles_create_or_update_request( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + network_profile_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkProfile": + """Updates network profile tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the network profile. + :type network_profile_name: str + :param parameters: Parameters supplied to update network profile tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkProfile, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfile"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_profiles_update_tags_request( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkProfileListResult"]: + """Gets all the network profiles in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkProfileListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkProfileListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfileListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_profiles_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_profiles_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkProfileListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkProfiles"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkProfileListResult"]: + """Gets all network profiles in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkProfileListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkProfileListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfileListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_profiles_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_profiles_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkProfileListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles"} # type: ignore +class NetworkSecurityGroupsOperations: + """NetworkSecurityGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_security_groups_delete_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_security_group_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkSecurityGroup": + """Gets the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_security_groups_get_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_security_group_name: str, + parameters: "_models.NetworkSecurityGroup", + **kwargs: Any + ) -> "_models.NetworkSecurityGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkSecurityGroup') + + request = build_network_security_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_security_group_name: str, + parameters: "_models.NetworkSecurityGroup", + **kwargs: Any + ) -> AsyncLROPoller["_models.NetworkSecurityGroup"]: + """Creates or updates a network security group in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param parameters: Parameters supplied to the create or update network security group + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either NetworkSecurityGroup or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + network_security_group_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkSecurityGroup": + """Updates a network security group tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param parameters: Parameters supplied to update network security group tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_security_groups_update_tags_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkSecurityGroupListResult"]: + """Gets all network security groups in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkSecurityGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkSecurityGroups"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkSecurityGroupListResult"]: + """Gets all network security groups in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkSecurityGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups"} # type: ignore +class SecurityRulesOperations: + """SecurityRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_rules_delete_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified network security rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param security_rule_name: The name of the security rule. + :type security_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + **kwargs: Any + ) -> "_models.SecurityRule": + """Get the specified network security rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param security_rule_name: The name of the security rule. + :type security_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_rules_get_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + security_rule_parameters: "_models.SecurityRule", + **kwargs: Any + ) -> "_models.SecurityRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(security_rule_parameters, 'SecurityRule') + + request = build_security_rules_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + security_rule_parameters: "_models.SecurityRule", + **kwargs: Any + ) -> AsyncLROPoller["_models.SecurityRule"]: + """Creates or updates a security rule in the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param security_rule_name: The name of the security rule. + :type security_rule_name: str + :param security_rule_parameters: Parameters supplied to the create or update network security + rule operation. + :type security_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.SecurityRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either SecurityRule or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + security_rule_parameters=security_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('SecurityRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.SecurityRuleListResult"]: + """Gets all security rules in a network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules"} # type: ignore +class DefaultSecurityRulesOperations: + """DefaultSecurityRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.SecurityRuleListResult"]: + """Gets all default security rules in a network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_default_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_default_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_security_group_name: str, + default_security_rule_name: str, + **kwargs: Any + ) -> "_models.SecurityRule": + """Get the specified default network security rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param default_security_rule_name: The name of the default security rule. + :type default_security_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_default_security_rules_get_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + default_security_rule_name=default_security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules/{defaultSecurityRuleName}"} # type: ignore + +class NetworkVirtualAppliancesOperations: + """NetworkVirtualAppliancesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_virtual_appliances_delete_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified Network Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance. + :type network_virtual_appliance_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkVirtualAppliance": + """Gets the specified Network Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkVirtualAppliance, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_virtual_appliances_get_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkVirtualAppliance": + """Updates a Network Virtual Appliance. + + :param resource_group_name: The resource group name of Network Virtual Appliance. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance being updated. + :type network_virtual_appliance_name: str + :param parameters: Parameters supplied to Update Network Virtual Appliance Tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkVirtualAppliance, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_virtual_appliances_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + parameters: "_models.NetworkVirtualAppliance", + **kwargs: Any + ) -> "_models.NetworkVirtualAppliance": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkVirtualAppliance') + + request = build_network_virtual_appliances_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + parameters: "_models.NetworkVirtualAppliance", + **kwargs: Any + ) -> AsyncLROPoller["_models.NetworkVirtualAppliance"]: + """Creates or updates the specified Network Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param parameters: Parameters supplied to the create or update Network Virtual Appliance. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either NetworkVirtualAppliance or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkVirtualApplianceListResult"]: + """Lists all Network Virtual Appliances in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_virtual_appliances_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_virtual_appliances_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkVirtualApplianceListResult"]: + """Gets all Network Virtual Appliances in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_virtual_appliances_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_virtual_appliances_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualAppliances"} # type: ignore +class VirtualApplianceSitesOperations: + """VirtualApplianceSitesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_appliance_sites_delete_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified site from a Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param site_name: The name of the site. + :type site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + **kwargs: Any + ) -> "_models.VirtualApplianceSite": + """Gets the specified Virtual Appliance Site. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param site_name: The name of the site. + :type site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualApplianceSite, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualApplianceSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_appliance_sites_get_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + parameters: "_models.VirtualApplianceSite", + **kwargs: Any + ) -> "_models.VirtualApplianceSite": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualApplianceSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualApplianceSite') + + request = build_virtual_appliance_sites_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + parameters: "_models.VirtualApplianceSite", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualApplianceSite"]: + """Creates or updates the specified Network Virtual Appliance Site. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param site_name: The name of the site. + :type site_name: str + :param parameters: Parameters supplied to the create or update Network Virtual Appliance Site + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualApplianceSite or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualApplianceSite"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkVirtualApplianceSiteListResult"]: + """Lists all Network Virtual Appliance Sites in a Network Virtual Appliance resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceSiteListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSiteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceSiteListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_appliance_sites_list_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_appliance_sites_list_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceSiteListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites"} # type: ignore +class VirtualApplianceSkusOperations: + """VirtualApplianceSkusOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkVirtualApplianceSkuListResult"]: + """List all SKUs available for a virtual appliance. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceSkuListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSkuListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceSkuListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_appliance_skus_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_appliance_skus_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceSkuListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualApplianceSkus"} # type: ignore + + @distributed_trace_async + async def get( + self, + sku_name: str, + **kwargs: Any + ) -> "_models.NetworkVirtualApplianceSku": + """Retrieves a single available sku for network virtual appliance. + + :param sku_name: Name of the Sku. + :type sku_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkVirtualApplianceSku, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSku + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceSku"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_appliance_skus_get_request( + subscription_id=self._config.subscription_id, + sku_name=sku_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkVirtualApplianceSku', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualApplianceSkus/{skuName}"} # type: ignore + +class InboundSecurityRuleOperations: + """InboundSecurityRuleOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + rule_collection_name: str, + parameters: "_models.InboundSecurityRule", + **kwargs: Any + ) -> "_models.InboundSecurityRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundSecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'InboundSecurityRule') + + request = build_inbound_security_rule_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + rule_collection_name=rule_collection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('InboundSecurityRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('InboundSecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/inboundSecurityRules/{ruleCollectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + rule_collection_name: str, + parameters: "_models.InboundSecurityRule", + **kwargs: Any + ) -> AsyncLROPoller["_models.InboundSecurityRule"]: + """Creates or updates the specified Network Virtual Appliance Inbound Security Rules. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param rule_collection_name: The name of security rule collection. + :type rule_collection_name: str + :param parameters: Parameters supplied to the create or update Network Virtual Appliance + Inbound Security Rules operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.InboundSecurityRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either InboundSecurityRule or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.InboundSecurityRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundSecurityRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + rule_collection_name=rule_collection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('InboundSecurityRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/inboundSecurityRules/{ruleCollectionName}"} # type: ignore +class NetworkWatchersOperations: # pylint: disable=too-many-public-methods + """NetworkWatchersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NetworkWatcher", + **kwargs: Any + ) -> "_models.NetworkWatcher": + """Creates or updates a network watcher in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the network watcher resource. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkWatcher, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcher"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkWatcher') + + request = build_network_watchers_create_or_update_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> "_models.NetworkWatcher": + """Gets the specified network watcher by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkWatcher, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcher"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_watchers_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_watchers_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified network watcher resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkWatcher": + """Updates a network watcher tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters supplied to update network watcher tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkWatcher, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcher"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_watchers_update_tags_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkWatcherListResult"]: + """Gets all network watchers by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkWatcherListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkWatcherListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcherListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_watchers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_watchers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkWatcherListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.NetworkWatcherListResult"]: + """Gets all network watchers by subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkWatcherListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkWatcherListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcherListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_watchers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_watchers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkWatcherListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkWatchers"} # type: ignore + + @distributed_trace_async + async def get_topology( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TopologyParameters", + **kwargs: Any + ) -> "_models.Topology": + """Gets the current network topology by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the representation of topology. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TopologyParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Topology, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Topology + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Topology"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TopologyParameters') + + request = build_network_watchers_get_topology_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.get_topology.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Topology', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_topology.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/topology"} # type: ignore + + + async def _verify_ip_flow_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.VerificationIPFlowParameters", + **kwargs: Any + ) -> "_models.VerificationIPFlowResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VerificationIPFlowResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VerificationIPFlowParameters') + + request = build_network_watchers_verify_ip_flow_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._verify_ip_flow_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VerificationIPFlowResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('VerificationIPFlowResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _verify_ip_flow_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify"} # type: ignore + + + @distributed_trace_async + async def begin_verify_ip_flow( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.VerificationIPFlowParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.VerificationIPFlowResult"]: + """Verify IP flow from the specified VM to a location given the currently configured NSG rules. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the IP flow to be verified. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VerificationIPFlowParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VerificationIPFlowResult or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VerificationIPFlowResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VerificationIPFlowResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._verify_ip_flow_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VerificationIPFlowResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_verify_ip_flow.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify"} # type: ignore + + async def _get_next_hop_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NextHopParameters", + **kwargs: Any + ) -> "_models.NextHopResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NextHopResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NextHopParameters') + + request = build_network_watchers_get_next_hop_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_next_hop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NextHopResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('NextHopResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_next_hop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop"} # type: ignore + + + @distributed_trace_async + async def begin_get_next_hop( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NextHopParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.NextHopResult"]: + """Gets the next hop from the specified VM. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the source and destination endpoint. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NextHopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either NextHopResult or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NextHopResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NextHopResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_next_hop_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NextHopResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_next_hop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop"} # type: ignore + + async def _get_vm_security_rules_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.SecurityGroupViewParameters", + **kwargs: Any + ) -> "_models.SecurityGroupViewResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityGroupViewResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SecurityGroupViewParameters') + + request = build_network_watchers_get_vm_security_rules_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_vm_security_rules_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityGroupViewResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('SecurityGroupViewResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vm_security_rules_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView"} # type: ignore + + + @distributed_trace_async + async def begin_get_vm_security_rules( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.SecurityGroupViewParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.SecurityGroupViewResult"]: + """Gets the configured and effective security group rules on the specified VM. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the VM to check security groups for. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SecurityGroupViewParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either SecurityGroupViewResult or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.SecurityGroupViewResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityGroupViewResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_vm_security_rules_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('SecurityGroupViewResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vm_security_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView"} # type: ignore + + async def _get_troubleshooting_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TroubleshootingParameters", + **kwargs: Any + ) -> "_models.TroubleshootingResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TroubleshootingParameters') + + request = build_network_watchers_get_troubleshooting_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_troubleshooting_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_troubleshooting_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot"} # type: ignore + + + @distributed_trace_async + async def begin_get_troubleshooting( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TroubleshootingParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.TroubleshootingResult"]: + """Initiate troubleshooting on a specified resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define the resource to troubleshoot. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TroubleshootingParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either TroubleshootingResult or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.TroubleshootingResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_troubleshooting_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_troubleshooting.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot"} # type: ignore + + async def _get_troubleshooting_result_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.QueryTroubleshootingParameters", + **kwargs: Any + ) -> "_models.TroubleshootingResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryTroubleshootingParameters') + + request = build_network_watchers_get_troubleshooting_result_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_troubleshooting_result_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_troubleshooting_result_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult"} # type: ignore + + + @distributed_trace_async + async def begin_get_troubleshooting_result( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.QueryTroubleshootingParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.TroubleshootingResult"]: + """Get the last completed troubleshooting result on a specified resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define the resource to query the troubleshooting result. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryTroubleshootingParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either TroubleshootingResult or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.TroubleshootingResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_troubleshooting_result_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_troubleshooting_result.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult"} # type: ignore + + async def _set_flow_log_configuration_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogInformation", + **kwargs: Any + ) -> "_models.FlowLogInformation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FlowLogInformation') + + request = build_network_watchers_set_flow_log_configuration_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._set_flow_log_configuration_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _set_flow_log_configuration_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog"} # type: ignore + + + @distributed_trace_async + async def begin_set_flow_log_configuration( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogInformation", + **kwargs: Any + ) -> AsyncLROPoller["_models.FlowLogInformation"]: + """Configures flow log and traffic analytics (optional) on a specified resource. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define the configuration of flow log. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FlowLogInformation + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either FlowLogInformation or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.FlowLogInformation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._set_flow_log_configuration_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_set_flow_log_configuration.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog"} # type: ignore + + async def _get_flow_log_status_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogStatusParameters", + **kwargs: Any + ) -> "_models.FlowLogInformation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FlowLogStatusParameters') + + request = build_network_watchers_get_flow_log_status_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_flow_log_status_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_flow_log_status_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus"} # type: ignore + + + @distributed_trace_async + async def begin_get_flow_log_status( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogStatusParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.FlowLogInformation"]: + """Queries status of flow log and traffic analytics (optional) on a specified resource. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define a resource to query flow log and traffic analytics + (optional) status. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FlowLogStatusParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either FlowLogInformation or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.FlowLogInformation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_flow_log_status_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_flow_log_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus"} # type: ignore + + async def _check_connectivity_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.ConnectivityParameters", + **kwargs: Any + ) -> "_models.ConnectivityInformation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityInformation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectivityParameters') + + request = build_network_watchers_check_connectivity_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._check_connectivity_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectivityInformation', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('ConnectivityInformation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _check_connectivity_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectivityCheck"} # type: ignore + + + @distributed_trace_async + async def begin_check_connectivity( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.ConnectivityParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.ConnectivityInformation"]: + """Verifies the possibility of establishing a direct TCP connection from a virtual machine to a + given endpoint including another VM or an arbitrary remote server. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that determine how the connectivity check will be performed. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectivityParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ConnectivityInformation or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectivityInformation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityInformation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._check_connectivity_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectivityInformation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_check_connectivity.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectivityCheck"} # type: ignore + + async def _get_azure_reachability_report_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AzureReachabilityReportParameters", + **kwargs: Any + ) -> "_models.AzureReachabilityReport": + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureReachabilityReport"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'AzureReachabilityReportParameters') + + request = build_network_watchers_get_azure_reachability_report_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_azure_reachability_report_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AzureReachabilityReport', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('AzureReachabilityReport', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_azure_reachability_report_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/azureReachabilityReport"} # type: ignore + + + @distributed_trace_async + async def begin_get_azure_reachability_report( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AzureReachabilityReportParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.AzureReachabilityReport"]: + """NOTE: This feature is currently in preview and still being tested for stability. Gets the + relative latency score for internet service providers from a specified location to Azure + regions. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that determine Azure reachability report configuration. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either AzureReachabilityReport or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReport] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureReachabilityReport"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_azure_reachability_report_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AzureReachabilityReport', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_azure_reachability_report.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/azureReachabilityReport"} # type: ignore + + async def _list_available_providers_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AvailableProvidersListParameters", + **kwargs: Any + ) -> "_models.AvailableProvidersList": + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableProvidersList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'AvailableProvidersListParameters') + + request = build_network_watchers_list_available_providers_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._list_available_providers_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AvailableProvidersList', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('AvailableProvidersList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_available_providers_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/availableProvidersList"} # type: ignore + + + @distributed_trace_async + async def begin_list_available_providers( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AvailableProvidersListParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.AvailableProvidersList"]: + """NOTE: This feature is currently in preview and still being tested for stability. Lists all + available internet service providers for a specified Azure region. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that scope the list of available providers. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either AvailableProvidersList or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableProvidersList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_available_providers_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AvailableProvidersList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_available_providers.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/availableProvidersList"} # type: ignore + + async def _get_network_configuration_diagnostic_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NetworkConfigurationDiagnosticParameters", + **kwargs: Any + ) -> "_models.NetworkConfigurationDiagnosticResponse": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkConfigurationDiagnosticResponse"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkConfigurationDiagnosticParameters') + + request = build_network_watchers_get_network_configuration_diagnostic_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_network_configuration_diagnostic_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkConfigurationDiagnosticResponse', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('NetworkConfigurationDiagnosticResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_network_configuration_diagnostic_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/networkConfigurationDiagnostic"} # type: ignore + + + @distributed_trace_async + async def begin_get_network_configuration_diagnostic( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NetworkConfigurationDiagnosticParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.NetworkConfigurationDiagnosticResponse"]: + """Gets Network Configuration Diagnostic data to help customers understand and debug network + behavior. It provides detailed information on what security rules were applied to a specified + traffic flow and the result of evaluating these rules. Customers must provide details of a flow + like source, destination, protocol, etc. The API returns whether traffic was allowed or denied, + the rules evaluated for the specified flow and the evaluation results. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters to get network configuration diagnostic. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + NetworkConfigurationDiagnosticResponse or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkConfigurationDiagnosticResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_network_configuration_diagnostic_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkConfigurationDiagnosticResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_network_configuration_diagnostic.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/networkConfigurationDiagnostic"} # type: ignore +class PacketCapturesOperations: + """PacketCapturesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_initial( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + parameters: "_models.PacketCapture", + **kwargs: Any + ) -> "_models.PacketCaptureResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PacketCapture') + + request = build_packet_captures_create_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PacketCaptureResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + + @distributed_trace_async + async def begin_create( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + parameters: "_models.PacketCapture", + **kwargs: Any + ) -> AsyncLROPoller["_models.PacketCaptureResult"]: + """Create and start a packet capture on the specified VM. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :param parameters: Parameters that define the create packet capture operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PacketCapture + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PacketCaptureResult or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PacketCaptureResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PacketCaptureResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> "_models.PacketCaptureResult": + """Gets a packet capture session by name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PacketCaptureResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PacketCaptureResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified packet capture session. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + async def _stop_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_stop_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop"} # type: ignore + + + @distributed_trace_async + async def begin_stop( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Stops a specified packet capture session. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._stop_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop"} # type: ignore + + async def _get_status_initial( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> "_models.PacketCaptureQueryStatusResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureQueryStatusResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_get_status_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_status_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PacketCaptureQueryStatusResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('PacketCaptureQueryStatusResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_status_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus"} # type: ignore + + + @distributed_trace_async + async def begin_get_status( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.PacketCaptureQueryStatusResult"]: + """Query the status of a running packet capture session. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param packet_capture_name: The name given to the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PacketCaptureQueryStatusResult or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PacketCaptureQueryStatusResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureQueryStatusResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_status_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PacketCaptureQueryStatusResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PacketCaptureListResult"]: + """Lists all packet capture sessions within the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PacketCaptureListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PacketCaptureListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_packet_captures_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_packet_captures_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PacketCaptureListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures"} # type: ignore +class ConnectionMonitorsOperations: + """ConnectionMonitorsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + parameters: "_models.ConnectionMonitor", + migrate: Optional[str] = None, + **kwargs: Any + ) -> "_models.ConnectionMonitorResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectionMonitor') + + request = build_connection_monitors_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + migrate=migrate, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + parameters: "_models.ConnectionMonitor", + migrate: Optional[str] = None, + **kwargs: Any + ) -> AsyncLROPoller["_models.ConnectionMonitorResult"]: + """Create or update a connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :param parameters: Parameters that define the operation to create a connection monitor. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitor + :param migrate: Value indicating whether connection monitor V1 should be migrated to V2 format. + Default value is None. + :type migrate: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ConnectionMonitorResult or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + parameters=parameters, + migrate=migrate, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> "_models.ConnectionMonitorResult": + """Gets a connection monitor by name. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectionMonitorResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ConnectionMonitorResult": + """Update tags of the specified connection monitor. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :param parameters: Parameters supplied to update connection monitor tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectionMonitorResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_connection_monitors_update_tags_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + async def _stop_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_stop_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/stop"} # type: ignore + + + @distributed_trace_async + async def begin_stop( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Stops the specified connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._stop_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/stop"} # type: ignore + + async def _start_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_start_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._start_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _start_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/start"} # type: ignore + + + @distributed_trace_async + async def begin_start( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Starts the specified connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._start_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/start"} # type: ignore + + async def _query_initial( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> "_models.ConnectionMonitorQueryResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorQueryResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_query_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._query_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectionMonitorQueryResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('ConnectionMonitorQueryResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _query_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/query"} # type: ignore + + + @distributed_trace_async + async def begin_query( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.ConnectionMonitorQueryResult"]: + """Query a snapshot of the most recent connection states. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name given to the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ConnectionMonitorQueryResult or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorQueryResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorQueryResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._query_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionMonitorQueryResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_query.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/query"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ConnectionMonitorListResult"]: + """Lists all connection monitors for the specified Network Watcher. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ConnectionMonitorListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_connection_monitors_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_connection_monitors_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ConnectionMonitorListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors"} # type: ignore +class FlowLogsOperations: + """FlowLogsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + parameters: "_models.FlowLog", + **kwargs: Any + ) -> "_models.FlowLog": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FlowLog') + + request = build_flow_logs_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FlowLog', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('FlowLog', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + parameters: "_models.FlowLog", + **kwargs: Any + ) -> AsyncLROPoller["_models.FlowLog"]: + """Create or update a flow log for the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log. + :type flow_log_name: str + :param parameters: Parameters that define the create or update flow log resource. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FlowLog + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either FlowLog or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.FlowLog] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FlowLog', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.FlowLog": + """Update tags of the specified flow log. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log. + :type flow_log_name: str + :param parameters: Parameters supplied to update flow log tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FlowLog, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FlowLog + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_flow_logs_update_tags_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FlowLog', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + **kwargs: Any + ) -> "_models.FlowLog": + """Gets a flow log resource by name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log resource. + :type flow_log_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FlowLog, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FlowLog + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_flow_logs_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FlowLog', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_flow_logs_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified flow log resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log resource. + :type flow_log_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.FlowLogListResult"]: + """Lists all flow log resources for the specified Network Watcher. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FlowLogListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.FlowLogListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_flow_logs_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_flow_logs_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("FlowLogListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs"} # type: ignore +class Operations: + """Operations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.OperationListResult"]: + """Lists all of the available Network Rest API operations. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either OperationListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.OperationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.OperationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_operations_list_request( + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_operations_list_request( + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("OperationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/providers/Microsoft.Network/operations"} # type: ignore +class PrivateEndpointsOperations: + """PrivateEndpointsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_endpoints_delete_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified private endpoint. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + private_endpoint_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PrivateEndpoint": + """Gets the specified private endpoint by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateEndpoint, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpoint"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_endpoints_get_request( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + private_endpoint_name: str, + parameters: "_models.PrivateEndpoint", + **kwargs: Any + ) -> "_models.PrivateEndpoint": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpoint"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateEndpoint') + + request = build_private_endpoints_create_or_update_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + private_endpoint_name: str, + parameters: "_models.PrivateEndpoint", + **kwargs: Any + ) -> AsyncLROPoller["_models.PrivateEndpoint"]: + """Creates or updates an private endpoint in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param parameters: Parameters supplied to the create or update private endpoint operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PrivateEndpoint or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpoint"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PrivateEndpointListResult"]: + """Gets all private endpoints in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateEndpointListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_endpoints_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_endpoints_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateEndpointListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints"} # type: ignore + + @distributed_trace + def list_by_subscription( + self, + **kwargs: Any + ) -> AsyncIterable["_models.PrivateEndpointListResult"]: + """Gets all private endpoints in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateEndpointListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_endpoints_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_endpoints_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateEndpointListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateEndpoints"} # type: ignore +class AvailablePrivateEndpointTypesOperations: + """AvailablePrivateEndpointTypesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> AsyncIterable["_models.AvailablePrivateEndpointTypesResult"]: + """Returns all of the resource types that can be linked to a Private Endpoint in this subscription + in this region. + + :param location: The location of the domain name. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailablePrivateEndpointTypesResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailablePrivateEndpointTypesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailablePrivateEndpointTypesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_private_endpoint_types_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_private_endpoint_types_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AvailablePrivateEndpointTypesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + location: str, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.AvailablePrivateEndpointTypesResult"]: + """Returns all of the resource types that can be linked to a Private Endpoint in this subscription + in this region. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailablePrivateEndpointTypesResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailablePrivateEndpointTypesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailablePrivateEndpointTypesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_private_endpoint_types_list_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_private_endpoint_types_list_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AvailablePrivateEndpointTypesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes"} # type: ignore +class PrivateDnsZoneGroupsOperations: + """PrivateDnsZoneGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_dns_zone_groups_delete_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified private dns zone group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param private_dns_zone_group_name: The name of the private dns zone group. + :type private_dns_zone_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + **kwargs: Any + ) -> "_models.PrivateDnsZoneGroup": + """Gets the private dns zone group resource by specified private dns zone group name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param private_dns_zone_group_name: The name of the private dns zone group. + :type private_dns_zone_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateDnsZoneGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_dns_zone_groups_get_request( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + parameters: "_models.PrivateDnsZoneGroup", + **kwargs: Any + ) -> "_models.PrivateDnsZoneGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateDnsZoneGroup') + + request = build_private_dns_zone_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + parameters: "_models.PrivateDnsZoneGroup", + **kwargs: Any + ) -> AsyncLROPoller["_models.PrivateDnsZoneGroup"]: + """Creates or updates a private dns zone group in the specified private endpoint. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param private_dns_zone_group_name: The name of the private dns zone group. + :type private_dns_zone_group_name: str + :param parameters: Parameters supplied to the create or update private dns zone group + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PrivateDnsZoneGroup or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + @distributed_trace + def list( + self, + private_endpoint_name: str, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PrivateDnsZoneGroupListResult"]: + """Gets all private dns zone groups in a private endpoint. + + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateDnsZoneGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_dns_zone_groups_list_request( + private_endpoint_name=private_endpoint_name, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_dns_zone_groups_list_request( + private_endpoint_name=private_endpoint_name, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateDnsZoneGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups"} # type: ignore +class PrivateLinkServicesOperations: + """PrivateLinkServicesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_delete_request_initial( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified private link service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + service_name=service_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + service_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PrivateLinkService": + """Gets the specified private link service by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateLinkService, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateLinkService + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkService"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_get_request( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + service_name: str, + parameters: "_models.PrivateLinkService", + **kwargs: Any + ) -> "_models.PrivateLinkService": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkService"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateLinkService') + + request = build_private_link_services_create_or_update_request_initial( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + service_name: str, + parameters: "_models.PrivateLinkService", + **kwargs: Any + ) -> AsyncLROPoller["_models.PrivateLinkService"]: + """Creates or updates an private link service in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param parameters: Parameters supplied to the create or update private link service operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateLinkService + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PrivateLinkService or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateLinkService] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkService"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + service_name=service_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PrivateLinkServiceListResult"]: + """Gets all private link services in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateLinkServiceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateLinkServiceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices"} # type: ignore + + @distributed_trace + def list_by_subscription( + self, + **kwargs: Any + ) -> AsyncIterable["_models.PrivateLinkServiceListResult"]: + """Gets all private link service in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateLinkServiceListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateLinkServiceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateLinkServices"} # type: ignore + + @distributed_trace_async + async def get_private_endpoint_connection( + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PrivateEndpointConnection": + """Get the specific private end point connection by specific private link service in the resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param pe_connection_name: The name of the private end point connection. + :type pe_connection_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateEndpointConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_get_private_endpoint_connection_request( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_private_endpoint_connection.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_private_endpoint_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + + @distributed_trace_async + async def update_private_endpoint_connection( + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + parameters: "_models.PrivateEndpointConnection", + **kwargs: Any + ) -> "_models.PrivateEndpointConnection": + """Approve or reject private end point connection for a private link service in a subscription. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param pe_connection_name: The name of the private end point connection. + :type pe_connection_name: str + :param parameters: Parameters supplied to approve or reject the private end point connection. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateEndpointConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateEndpointConnection') + + request = build_private_link_services_update_private_endpoint_connection_request( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_private_endpoint_connection.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_private_endpoint_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + + async def _delete_private_endpoint_connection_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_delete_private_endpoint_connection_request_initial( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_private_endpoint_connection_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_private_endpoint_connection_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete_private_endpoint_connection( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Delete private end point connection for a private link service in a subscription. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param pe_connection_name: The name of the private end point connection. + :type pe_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_private_endpoint_connection_initial( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_private_endpoint_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + @distributed_trace + def list_private_endpoint_connections( + self, + resource_group_name: str, + service_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PrivateEndpointConnectionListResult"]: + """Gets all private end point connections for a specific private link service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateEndpointConnectionListResult or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_private_endpoint_connections_request( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_private_endpoint_connections.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_private_endpoint_connections_request( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateEndpointConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_private_endpoint_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections"} # type: ignore + + async def _check_private_link_service_visibility_initial( + self, + location: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> Optional["_models.PrivateLinkServiceVisibility"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PrivateLinkServiceVisibility"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'CheckPrivateLinkServiceVisibilityRequest') + + request = build_private_link_services_check_private_link_service_visibility_request_initial( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._check_private_link_service_visibility_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _check_private_link_service_visibility_initial.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + + @distributed_trace_async + async def begin_check_private_link_service_visibility( + self, + location: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> AsyncLROPoller["_models.PrivateLinkServiceVisibility"]: + """Checks whether the subscription is visible to private link service. + + :param location: The location of the domain name. + :type location: str + :param parameters: The request body of CheckPrivateLinkService API call. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.CheckPrivateLinkServiceVisibilityRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PrivateLinkServiceVisibility or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceVisibility] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceVisibility"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._check_private_link_service_visibility_initial( + location=location, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_check_private_link_service_visibility.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + async def _check_private_link_service_visibility_by_resource_group_initial( + self, + location: str, + resource_group_name: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> Optional["_models.PrivateLinkServiceVisibility"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PrivateLinkServiceVisibility"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'CheckPrivateLinkServiceVisibilityRequest') + + request = build_private_link_services_check_private_link_service_visibility_by_resource_group_request_initial( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._check_private_link_service_visibility_by_resource_group_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _check_private_link_service_visibility_by_resource_group_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + + @distributed_trace_async + async def begin_check_private_link_service_visibility_by_resource_group( + self, + location: str, + resource_group_name: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> AsyncLROPoller["_models.PrivateLinkServiceVisibility"]: + """Checks whether the subscription is visible to private link service in the specified resource + group. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param parameters: The request body of CheckPrivateLinkService API call. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.CheckPrivateLinkServiceVisibilityRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PrivateLinkServiceVisibility or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceVisibility] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceVisibility"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._check_private_link_service_visibility_by_resource_group_initial( + location=location, + resource_group_name=resource_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_check_private_link_service_visibility_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + @distributed_trace + def list_auto_approved_private_link_services( + self, + location: str, + **kwargs: Any + ) -> AsyncIterable["_models.AutoApprovedPrivateLinkServicesResult"]: + """Returns all of the private link service ids that can be linked to a Private Endpoint with auto + approved in this subscription in this region. + + :param location: The location of the domain name. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AutoApprovedPrivateLinkServicesResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AutoApprovedPrivateLinkServicesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AutoApprovedPrivateLinkServicesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_auto_approved_private_link_services_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_auto_approved_private_link_services.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_auto_approved_private_link_services_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AutoApprovedPrivateLinkServicesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_auto_approved_private_link_services.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices"} # type: ignore + + @distributed_trace + def list_auto_approved_private_link_services_by_resource_group( + self, + location: str, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.AutoApprovedPrivateLinkServicesResult"]: + """Returns all of the private link service ids that can be linked to a Private Endpoint with auto + approved in this subscription in this region. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AutoApprovedPrivateLinkServicesResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.AutoApprovedPrivateLinkServicesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AutoApprovedPrivateLinkServicesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_auto_approved_private_link_services_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_auto_approved_private_link_services_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_auto_approved_private_link_services_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AutoApprovedPrivateLinkServicesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_auto_approved_private_link_services_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices"} # type: ignore +class PublicIPPrefixesOperations: + """PublicIPPrefixesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_prefix_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_prefixes_delete_request_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_prefix_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified public IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the PublicIpPrefix. + :type public_ip_prefix_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + public_ip_prefix_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPPrefix": + """Gets the specified public IP prefix in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the public IP prefix. + :type public_ip_prefix_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_prefixes_get_request( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + public_ip_prefix_name: str, + parameters: "_models.PublicIPPrefix", + **kwargs: Any + ) -> "_models.PublicIPPrefix": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PublicIPPrefix') + + request = build_public_ip_prefixes_create_or_update_request_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + public_ip_prefix_name: str, + parameters: "_models.PublicIPPrefix", + **kwargs: Any + ) -> AsyncLROPoller["_models.PublicIPPrefix"]: + """Creates or updates a static or dynamic public IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the public IP prefix. + :type public_ip_prefix_name: str + :param parameters: Parameters supplied to the create or update public IP prefix operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PublicIPPrefix or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + public_ip_prefix_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.PublicIPPrefix": + """Updates public IP prefix tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the public IP prefix. + :type public_ip_prefix_name: str + :param parameters: Parameters supplied to update public IP prefix tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_public_ip_prefixes_update_tags_request( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPPrefixListResult"]: + """Gets all the public IP prefixes in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPPrefixes"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.PublicIPPrefixListResult"]: + """Gets all public IP prefixes in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes"} # type: ignore +class RouteFiltersOperations: + """RouteFiltersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filters_delete_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + route_filter_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.RouteFilter": + """Gets the specified route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param expand: Expands referenced express route bgp peering resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteFilter, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteFilter + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filters_get_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + route_filter_name: str, + route_filter_parameters: "_models.RouteFilter", + **kwargs: Any + ) -> "_models.RouteFilter": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_filter_parameters, 'RouteFilter') + + request = build_route_filters_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + route_filter_name: str, + route_filter_parameters: "_models.RouteFilter", + **kwargs: Any + ) -> AsyncLROPoller["_models.RouteFilter"]: + """Creates or updates a route filter in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param route_filter_parameters: Parameters supplied to the create or update route filter + operation. + :type route_filter_parameters: ~azure.mgmt.network.v2022_01_01.models.RouteFilter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either RouteFilter or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.RouteFilter] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + route_filter_parameters=route_filter_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RouteFilter', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + route_filter_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.RouteFilter": + """Updates tags of a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param parameters: Parameters supplied to update route filter tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteFilter, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteFilter + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_route_filters_update_tags_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.RouteFilterListResult"]: + """Gets all route filters in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteFilterListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteFilterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_filters_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_filters_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("RouteFilterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.RouteFilterListResult"]: + """Gets all route filters in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteFilterListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteFilterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_filters_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_filters_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("RouteFilterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeFilters"} # type: ignore +class RouteFilterRulesOperations: + """RouteFilterRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filter_rules_delete_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified rule from a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + **kwargs: Any + ) -> "_models.RouteFilterRule": + """Gets the specified rule from a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteFilterRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteFilterRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filter_rules_get_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + route_filter_rule_parameters: "_models.RouteFilterRule", + **kwargs: Any + ) -> "_models.RouteFilterRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_filter_rule_parameters, 'RouteFilterRule') + + request = build_route_filter_rules_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + route_filter_rule_parameters: "_models.RouteFilterRule", + **kwargs: Any + ) -> AsyncLROPoller["_models.RouteFilterRule"]: + """Creates or updates a route in the specified route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param rule_name: The name of the route filter rule. + :type rule_name: str + :param route_filter_rule_parameters: Parameters supplied to the create or update route filter + rule operation. + :type route_filter_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.RouteFilterRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either RouteFilterRule or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + route_filter_rule_parameters=route_filter_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + @distributed_trace + def list_by_route_filter( + self, + resource_group_name: str, + route_filter_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.RouteFilterRuleListResult"]: + """Gets all RouteFilterRules in a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteFilterRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteFilterRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_filter_rules_list_by_route_filter_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_route_filter.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_filter_rules_list_by_route_filter_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("RouteFilterRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_route_filter.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules"} # type: ignore +class RouteTablesOperations: + """RouteTablesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_tables_delete_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + route_table_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.RouteTable": + """Gets the specified route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteTable, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_tables_get_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + route_table_name: str, + parameters: "_models.RouteTable", + **kwargs: Any + ) -> "_models.RouteTable": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'RouteTable') + + request = build_route_tables_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RouteTable', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + route_table_name: str, + parameters: "_models.RouteTable", + **kwargs: Any + ) -> AsyncLROPoller["_models.RouteTable"]: + """Create or updates a route table in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param parameters: Parameters supplied to the create or update route table operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either RouteTable or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.RouteTable] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RouteTable', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + route_table_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.RouteTable": + """Updates a route table tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param parameters: Parameters supplied to update route table tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteTable, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_route_tables_update_tags_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.RouteTableListResult"]: + """Gets all route tables in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteTableListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTableListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_tables_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_tables_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("RouteTableListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.RouteTableListResult"]: + """Gets all route tables in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteTableListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTableListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_tables_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_tables_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("RouteTableListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables"} # type: ignore +class RoutesOperations: + """RoutesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routes_delete_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified route from a route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param route_name: The name of the route. + :type route_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + **kwargs: Any + ) -> "_models.Route": + """Gets the specified route from a route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param route_name: The name of the route. + :type route_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Route, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Route + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Route"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routes_get_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Route', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + route_parameters: "_models.Route", + **kwargs: Any + ) -> "_models.Route": + cls = kwargs.pop('cls', None) # type: ClsType["_models.Route"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_parameters, 'Route') + + request = build_routes_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('Route', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('Route', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + route_parameters: "_models.Route", + **kwargs: Any + ) -> AsyncLROPoller["_models.Route"]: + """Creates or updates a route in the specified route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param route_name: The name of the route. + :type route_name: str + :param route_parameters: Parameters supplied to the create or update route operation. + :type route_parameters: ~azure.mgmt.network.v2022_01_01.models.Route + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Route or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.Route] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.Route"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + route_parameters=route_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('Route', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + route_table_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.RouteListResult"]: + """Gets all routes in a route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_routes_list_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_routes_list_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("RouteListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes"} # type: ignore +class SecurityPartnerProvidersOperations: + """SecurityPartnerProvidersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + security_partner_provider_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_partner_providers_delete_request_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + security_partner_provider_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified Security Partner Provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + security_partner_provider_name: str, + **kwargs: Any + ) -> "_models.SecurityPartnerProvider": + """Gets the specified Security Partner Provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityPartnerProvider, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_partner_providers_get_request( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + security_partner_provider_name: str, + parameters: "_models.SecurityPartnerProvider", + **kwargs: Any + ) -> "_models.SecurityPartnerProvider": + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SecurityPartnerProvider') + + request = build_security_partner_providers_create_or_update_request_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + security_partner_provider_name: str, + parameters: "_models.SecurityPartnerProvider", + **kwargs: Any + ) -> AsyncLROPoller["_models.SecurityPartnerProvider"]: + """Creates or updates the specified Security Partner Provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :param parameters: Parameters supplied to the create or update Security Partner Provider + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either SecurityPartnerProvider or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + security_partner_provider_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.SecurityPartnerProvider": + """Updates tags of a Security Partner Provider resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :param parameters: Parameters supplied to update Security Partner Provider tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityPartnerProvider, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_security_partner_providers_update_tags_request( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.SecurityPartnerProviderListResult"]: + """Lists all Security Partner Providers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityPartnerProviderListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProviderListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_partner_providers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_partner_providers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityPartnerProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.SecurityPartnerProviderListResult"]: + """Gets all the Security Partner Providers in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityPartnerProviderListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProviderListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_partner_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_partner_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityPartnerProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/securityPartnerProviders"} # type: ignore +class BgpServiceCommunitiesOperations: + """BgpServiceCommunitiesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.BgpServiceCommunityListResult"]: + """Gets all the available bgp service communities. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BgpServiceCommunityListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.BgpServiceCommunityListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpServiceCommunityListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_bgp_service_communities_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_bgp_service_communities_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BgpServiceCommunityListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/bgpServiceCommunities"} # type: ignore +class ServiceEndpointPoliciesOperations: + """ServiceEndpointPoliciesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policies_delete_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified service endpoint policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.ServiceEndpointPolicy": + """Gets the specified service Endpoint Policies in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceEndpointPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policies_get_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + parameters: "_models.ServiceEndpointPolicy", + **kwargs: Any + ) -> "_models.ServiceEndpointPolicy": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ServiceEndpointPolicy') + + request = build_service_endpoint_policies_create_or_update_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + parameters: "_models.ServiceEndpointPolicy", + **kwargs: Any + ) -> AsyncLROPoller["_models.ServiceEndpointPolicy"]: + """Creates or updates a service Endpoint Policies. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param parameters: Parameters supplied to the create or update service endpoint policy + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ServiceEndpointPolicy or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ServiceEndpointPolicy": + """Updates tags of a service endpoint policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param parameters: Parameters supplied to update service endpoint policy tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceEndpointPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_service_endpoint_policies_update_tags_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ServiceEndpointPolicyListResult"]: + """Gets all the service endpoint policies in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceEndpointPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_endpoint_policies_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_endpoint_policies_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceEndpointPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ServiceEndpointPolicies"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ServiceEndpointPolicyListResult"]: + """Gets all service endpoint Policies in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceEndpointPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_endpoint_policies_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_endpoint_policies_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceEndpointPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies"} # type: ignore +class ServiceEndpointPolicyDefinitionsOperations: + """ServiceEndpointPolicyDefinitionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policy_definitions_delete_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified ServiceEndpoint policy definitions. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the Service Endpoint Policy. + :type service_endpoint_policy_name: str + :param service_endpoint_policy_definition_name: The name of the service endpoint policy + definition. + :type service_endpoint_policy_definition_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + **kwargs: Any + ) -> "_models.ServiceEndpointPolicyDefinition": + """Get the specified service endpoint policy definitions from service endpoint policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy name. + :type service_endpoint_policy_name: str + :param service_endpoint_policy_definition_name: The name of the service endpoint policy + definition name. + :type service_endpoint_policy_definition_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceEndpointPolicyDefinition, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinition"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policy_definitions_get_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + service_endpoint_policy_definitions: "_models.ServiceEndpointPolicyDefinition", + **kwargs: Any + ) -> "_models.ServiceEndpointPolicyDefinition": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinition"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(service_endpoint_policy_definitions, 'ServiceEndpointPolicyDefinition') + + request = build_service_endpoint_policy_definitions_create_or_update_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + service_endpoint_policy_definitions: "_models.ServiceEndpointPolicyDefinition", + **kwargs: Any + ) -> AsyncLROPoller["_models.ServiceEndpointPolicyDefinition"]: + """Creates or updates a service endpoint policy definition in the specified service endpoint + policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param service_endpoint_policy_definition_name: The name of the service endpoint policy + definition name. + :type service_endpoint_policy_definition_name: str + :param service_endpoint_policy_definitions: Parameters supplied to the create or update service + endpoint policy operation. + :type service_endpoint_policy_definitions: + ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ServiceEndpointPolicyDefinition or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinition"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + service_endpoint_policy_definitions=service_endpoint_policy_definitions, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ServiceEndpointPolicyDefinitionListResult"]: + """Gets all service endpoint policy definitions in a service end point policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy name. + :type service_endpoint_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceEndpointPolicyDefinitionListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinitionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinitionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_endpoint_policy_definitions_list_by_resource_group_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_endpoint_policy_definitions_list_by_resource_group_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceEndpointPolicyDefinitionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions"} # type: ignore +class ServiceTagsOperations: + """ServiceTagsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list( + self, + location: str, + **kwargs: Any + ) -> "_models.ServiceTagsListResult": + """Gets a list of service tag information resources. + + :param location: The location that will be used as a reference for version (not as a filter + based on location, you will get the list of service tags with prefix details across all regions + but limited to the cloud that your subscription belongs to). + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceTagsListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceTagsListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceTagsListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_tags_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceTagsListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTags"} # type: ignore + +class ServiceTagInformationOperations: + """ServiceTagInformationOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + no_address_prefixes: Optional[bool] = None, + tag_name: Optional[str] = None, + **kwargs: Any + ) -> AsyncIterable["_models.ServiceTagInformationListResult"]: + """Gets a list of service tag information resources with pagination. + + :param location: The location that will be used as a reference for cloud (not as a filter based + on location, you will get the list of service tags with prefix details across all regions but + limited to the cloud that your subscription belongs to). + :type location: str + :param no_address_prefixes: Do not return address prefixes for the tag(s). Default value is + None. + :type no_address_prefixes: bool + :param tag_name: Return tag information for a particular tag. Default value is None. + :type tag_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceTagInformationListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceTagInformationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceTagInformationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_tag_information_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + no_address_prefixes=no_address_prefixes, + tag_name=tag_name, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_tag_information_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + no_address_prefixes=no_address_prefixes, + tag_name=tag_name, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceTagInformationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTagDetails"} # type: ignore +class UsagesOperations: + """UsagesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> AsyncIterable["_models.UsagesListResult"]: + """List network usages for a subscription. + + :param location: The location where resource usage is queried. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either UsagesListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.UsagesListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.UsagesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_usages_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_usages_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("UsagesListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/usages"} # type: ignore +class VirtualNetworksOperations: + """VirtualNetworksOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_networks_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_network_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.VirtualNetwork": + """Gets the specified virtual network by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetwork, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetwork + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_networks_get_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.VirtualNetwork", + **kwargs: Any + ) -> "_models.VirtualNetwork": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetwork') + + request = build_virtual_networks_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.VirtualNetwork", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetwork"]: + """Creates or updates a virtual network in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to the create or update virtual network operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetwork + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetwork or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetwork] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualNetwork": + """Updates a virtual network tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to update virtual network tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetwork, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetwork + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_virtual_networks_update_tags_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkListResult"]: + """Gets all virtual networks in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_networks_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_networks_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkListResult"]: + """Gets all virtual networks in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_networks_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_networks_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks"} # type: ignore + + @distributed_trace_async + async def check_ip_address_availability( + self, + resource_group_name: str, + virtual_network_name: str, + ip_address: str, + **kwargs: Any + ) -> "_models.IPAddressAvailabilityResult": + """Checks whether a private IP address is available for use. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param ip_address: The private IP address to be verified. + :type ip_address: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IPAddressAvailabilityResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IPAddressAvailabilityResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IPAddressAvailabilityResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_networks_check_ip_address_availability_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + ip_address=ip_address, + template_url=self.check_ip_address_availability.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IPAddressAvailabilityResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + check_ip_address_availability.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/CheckIPAddressAvailability"} # type: ignore + + + @distributed_trace + def list_usage( + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkListUsageResult"]: + """Lists usage stats. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkListUsageResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkListUsageResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkListUsageResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_networks_list_usage_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_usage.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_networks_list_usage_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkListUsageResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_usage.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages"} # type: ignore +class SubnetsOperations: + """SubnetsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subnets_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified subnet. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.Subnet": + """Gets the specified subnet by virtual network and resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Subnet, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Subnet + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Subnet"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subnets_get_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Subnet', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subnet_parameters: "_models.Subnet", + **kwargs: Any + ) -> "_models.Subnet": + cls = kwargs.pop('cls', None) # type: ClsType["_models.Subnet"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(subnet_parameters, 'Subnet') + + request = build_subnets_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('Subnet', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('Subnet', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subnet_parameters: "_models.Subnet", + **kwargs: Any + ) -> AsyncLROPoller["_models.Subnet"]: + """Creates or updates a subnet in the specified virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param subnet_parameters: Parameters supplied to the create or update subnet operation. + :type subnet_parameters: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Subnet or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.Subnet] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.Subnet"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subnet_parameters=subnet_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('Subnet', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + async def _prepare_network_policies_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + prepare_network_policies_request_parameters: "_models.PrepareNetworkPoliciesRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(prepare_network_policies_request_parameters, 'PrepareNetworkPoliciesRequest') + + request = build_subnets_prepare_network_policies_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._prepare_network_policies_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _prepare_network_policies_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/PrepareNetworkPolicies"} # type: ignore + + + @distributed_trace_async + async def begin_prepare_network_policies( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + prepare_network_policies_request_parameters: "_models.PrepareNetworkPoliciesRequest", + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Prepares a subnet by applying network intent policies. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param prepare_network_policies_request_parameters: Parameters supplied to prepare subnet by + applying network intent policies. + :type prepare_network_policies_request_parameters: + ~azure.mgmt.network.v2022_01_01.models.PrepareNetworkPoliciesRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._prepare_network_policies_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + prepare_network_policies_request_parameters=prepare_network_policies_request_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_prepare_network_policies.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/PrepareNetworkPolicies"} # type: ignore + + async def _unprepare_network_policies_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + unprepare_network_policies_request_parameters: "_models.UnprepareNetworkPoliciesRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(unprepare_network_policies_request_parameters, 'UnprepareNetworkPoliciesRequest') + + request = build_subnets_unprepare_network_policies_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._unprepare_network_policies_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _unprepare_network_policies_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/UnprepareNetworkPolicies"} # type: ignore + + + @distributed_trace_async + async def begin_unprepare_network_policies( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + unprepare_network_policies_request_parameters: "_models.UnprepareNetworkPoliciesRequest", + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Unprepares a subnet by removing network intent policies. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param unprepare_network_policies_request_parameters: Parameters supplied to unprepare subnet + to remove network intent policies. + :type unprepare_network_policies_request_parameters: + ~azure.mgmt.network.v2022_01_01.models.UnprepareNetworkPoliciesRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._unprepare_network_policies_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + unprepare_network_policies_request_parameters=unprepare_network_policies_request_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_unprepare_network_policies.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/UnprepareNetworkPolicies"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.SubnetListResult"]: + """Gets all subnets in a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SubnetListResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.SubnetListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SubnetListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_subnets_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_subnets_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SubnetListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets"} # type: ignore +class ResourceNavigationLinksOperations: + """ResourceNavigationLinksOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> "_models.ResourceNavigationLinksListResult": + """Gets a list of resource navigation links for a subnet. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceNavigationLinksListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ResourceNavigationLinksListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourceNavigationLinksListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_resource_navigation_links_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ResourceNavigationLinksListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ResourceNavigationLinks"} # type: ignore + +class ServiceAssociationLinksOperations: + """ServiceAssociationLinksOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> "_models.ServiceAssociationLinksListResult": + """Gets a list of service association links for a subnet. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceAssociationLinksListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceAssociationLinksListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceAssociationLinksListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_association_links_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceAssociationLinksListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ServiceAssociationLinks"} # type: ignore + +class VirtualNetworkPeeringsOperations: + """VirtualNetworkPeeringsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_peerings_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified virtual network peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param virtual_network_peering_name: The name of the virtual network peering. + :type virtual_network_peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkPeering": + """Gets the specified virtual network peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param virtual_network_peering_name: The name of the virtual network peering. + :type virtual_network_peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_peerings_get_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + virtual_network_peering_parameters: "_models.VirtualNetworkPeering", + sync_remote_address_space: Optional[Union[str, "_models.SyncRemoteAddressSpace"]] = None, + **kwargs: Any + ) -> "_models.VirtualNetworkPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_network_peering_parameters, 'VirtualNetworkPeering') + + request = build_virtual_network_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + sync_remote_address_space=sync_remote_address_space, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + virtual_network_peering_parameters: "_models.VirtualNetworkPeering", + sync_remote_address_space: Optional[Union[str, "_models.SyncRemoteAddressSpace"]] = None, + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkPeering"]: + """Creates or updates a peering in the specified virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param virtual_network_peering_name: The name of the peering. + :type virtual_network_peering_name: str + :param virtual_network_peering_parameters: Parameters supplied to the create or update virtual + network peering operation. + :type virtual_network_peering_parameters: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering + :param sync_remote_address_space: Parameter indicates the intention to sync the peering with + the current address space on the remote vNet after it's updated. Default value is None. + :type sync_remote_address_space: str or + ~azure.mgmt.network.v2022_01_01.models.SyncRemoteAddressSpace + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkPeering or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + virtual_network_peering_parameters=virtual_network_peering_parameters, + sync_remote_address_space=sync_remote_address_space, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkPeeringListResult"]: + """Gets all virtual network peerings in a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkPeeringListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeeringListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeeringListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_peerings_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_peerings_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkPeeringListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings"} # type: ignore +class VirtualNetworkGatewaysOperations: # pylint: disable=too-many-public-methods + """VirtualNetworkGatewaysOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VirtualNetworkGateway", + **kwargs: Any + ) -> "_models.VirtualNetworkGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetworkGateway') + + request = build_virtual_network_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VirtualNetworkGateway", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkGateway"]: + """Creates or updates a virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to create or update virtual network gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkGateway or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkGateway": + """Gets the specified virtual network gateway by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified virtual network gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + async def _update_tags_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.VirtualNetworkGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualNetworkGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_virtual_network_gateways_update_tags_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_update_tags( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkGateway"]: + """Updates a virtual network gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to update virtual network gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkGateway or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_tags_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkGatewayListResult"]: + """Gets all virtual network gateways by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways"} # type: ignore + + @distributed_trace + def list_connections( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkGatewayListConnectionsResult"]: + """Gets all the connections in a virtual network gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkGatewayListConnectionsResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayListConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayListConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateways_list_connections_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_connections.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateways_list_connections_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkGatewayListConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/connections"} # type: ignore + + async def _reset_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + gateway_vip: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.VirtualNetworkGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualNetworkGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_reset_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + gateway_vip=gateway_vip, + template_url=self._reset_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset"} # type: ignore + + + @distributed_trace_async + async def begin_reset( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + gateway_vip: Optional[str] = None, + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkGateway"]: + """Resets the primary of the virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param gateway_vip: Virtual network gateway vip address supplied to the begin reset of the + active-active feature enabled gateway. Default value is None. + :type gateway_vip: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkGateway or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._reset_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + gateway_vip=gateway_vip, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset"} # type: ignore + + async def _reset_vpn_client_shared_key_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_reset_vpn_client_shared_key_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_vpn_client_shared_key_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _reset_vpn_client_shared_key_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/resetvpnclientsharedkey"} # type: ignore + + + @distributed_trace_async + async def begin_reset_vpn_client_shared_key( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Resets the VPN client shared key of the virtual network gateway in the specified resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._reset_vpn_client_shared_key_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_vpn_client_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/resetvpnclientsharedkey"} # type: ignore + + async def _generatevpnclientpackage_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnClientParameters') + + request = build_virtual_network_gateways_generatevpnclientpackage_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generatevpnclientpackage_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generatevpnclientpackage_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage"} # type: ignore + + + @distributed_trace_async + async def begin_generatevpnclientpackage( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Generates VPN client package for P2S client of the virtual network gateway in the specified + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to the generate virtual network gateway VPN client + package operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnClientParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._generatevpnclientpackage_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generatevpnclientpackage.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage"} # type: ignore + + async def _generate_vpn_profile_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnClientParameters') + + request = build_virtual_network_gateways_generate_vpn_profile_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generate_vpn_profile_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generate_vpn_profile_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnprofile"} # type: ignore + + + @distributed_trace_async + async def begin_generate_vpn_profile( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Generates VPN profile for P2S client of the virtual network gateway in the specified resource + group. Used for IKEV2 and radius based authentication. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to the generate virtual network gateway VPN client + package operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnClientParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._generate_vpn_profile_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generate_vpn_profile.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnprofile"} # type: ignore + + async def _get_vpn_profile_package_url_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_vpn_profile_package_url_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_vpn_profile_package_url_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vpn_profile_package_url_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnprofilepackageurl"} # type: ignore + + + @distributed_trace_async + async def begin_get_vpn_profile_package_url( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Gets pre-generated VPN profile for P2S client of the virtual network gateway in the specified + resource group. The profile needs to be generated first using generateVpnProfile. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_vpn_profile_package_url_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vpn_profile_package_url.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnprofilepackageurl"} # type: ignore + + async def _get_bgp_peer_status_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.BgpPeerStatusListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BgpPeerStatusListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_bgp_peer_status_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + peer=peer, + template_url=self._get_bgp_peer_status_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BgpPeerStatusListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_bgp_peer_status_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getBgpPeerStatus"} # type: ignore + + + @distributed_trace_async + async def begin_get_bgp_peer_status( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: Optional[str] = None, + **kwargs: Any + ) -> AsyncLROPoller["_models.BgpPeerStatusListResult"]: + """The GetBgpPeerStatus operation retrieves the status of all BGP peers. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param peer: The IP address of the peer to retrieve the status of. Default value is None. + :type peer: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either BgpPeerStatusListResult or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.BgpPeerStatusListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpPeerStatusListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_bgp_peer_status_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + peer=peer, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BgpPeerStatusListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_bgp_peer_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getBgpPeerStatus"} # type: ignore + + @distributed_trace_async + async def supported_vpn_devices( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> str: + """Gets a xml format representation for supported vpn devices. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: str, or the result of cls(response) + :rtype: str + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[str] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_supported_vpn_devices_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.supported_vpn_devices.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + supported_vpn_devices.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/supportedvpndevices"} # type: ignore + + + async def _get_learned_routes_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Optional["_models.GatewayRouteListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.GatewayRouteListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_learned_routes_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_learned_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_learned_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getLearnedRoutes"} # type: ignore + + + @distributed_trace_async + async def begin_get_learned_routes( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.GatewayRouteListResult"]: + """This operation retrieves a list of routes the virtual network gateway has learned, including + routes learned from BGP peers. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either GatewayRouteListResult or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.GatewayRouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.GatewayRouteListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_learned_routes_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_learned_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getLearnedRoutes"} # type: ignore + + async def _get_advertised_routes_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: str, + **kwargs: Any + ) -> Optional["_models.GatewayRouteListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.GatewayRouteListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_advertised_routes_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + peer=peer, + template_url=self._get_advertised_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_advertised_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getAdvertisedRoutes"} # type: ignore + + + @distributed_trace_async + async def begin_get_advertised_routes( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.GatewayRouteListResult"]: + """This operation retrieves a list of routes the virtual network gateway is advertising to the + specified peer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param peer: The IP address of the peer. + :type peer: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either GatewayRouteListResult or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.GatewayRouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.GatewayRouteListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_advertised_routes_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + peer=peer, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_advertised_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getAdvertisedRoutes"} # type: ignore + + async def _set_vpnclient_ipsec_parameters_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + vpnclient_ipsec_params: "_models.VpnClientIPsecParameters", + **kwargs: Any + ) -> Optional["_models.VpnClientIPsecParameters"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnClientIPsecParameters"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpnclient_ipsec_params, 'VpnClientIPsecParameters') + + request = build_virtual_network_gateways_set_vpnclient_ipsec_parameters_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._set_vpnclient_ipsec_parameters_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _set_vpnclient_ipsec_parameters_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/setvpnclientipsecparameters"} # type: ignore + + + @distributed_trace_async + async def begin_set_vpnclient_ipsec_parameters( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + vpnclient_ipsec_params: "_models.VpnClientIPsecParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnClientIPsecParameters"]: + """The Set VpnclientIpsecParameters operation sets the vpnclient ipsec policy for P2S client of + virtual network gateway in the specified resource group through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param vpnclient_ipsec_params: Parameters supplied to the Begin Set vpnclient ipsec parameters + of Virtual Network Gateway P2S client operation through Network resource provider. + :type vpnclient_ipsec_params: ~azure.mgmt.network.v2022_01_01.models.VpnClientIPsecParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnClientIPsecParameters or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnClientIPsecParameters] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientIPsecParameters"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._set_vpnclient_ipsec_parameters_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + vpnclient_ipsec_params=vpnclient_ipsec_params, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_set_vpnclient_ipsec_parameters.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/setvpnclientipsecparameters"} # type: ignore + + async def _get_vpnclient_ipsec_parameters_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> "_models.VpnClientIPsecParameters": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientIPsecParameters"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_vpnclient_ipsec_parameters_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_vpnclient_ipsec_parameters_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vpnclient_ipsec_parameters_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnclientipsecparameters"} # type: ignore + + + @distributed_trace_async + async def begin_get_vpnclient_ipsec_parameters( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnClientIPsecParameters"]: + """The Get VpnclientIpsecParameters operation retrieves information about the vpnclient ipsec + policy for P2S client of virtual network gateway in the specified resource group through + Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The virtual network gateway name. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnClientIPsecParameters or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnClientIPsecParameters] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientIPsecParameters"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_vpnclient_ipsec_parameters_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vpnclient_ipsec_parameters.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnclientipsecparameters"} # type: ignore + + @distributed_trace_async + async def vpn_device_configuration_script( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VpnDeviceScriptParameters", + **kwargs: Any + ) -> str: + """Gets a xml format representation for vpn device configuration script. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection for which the configuration script is generated. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the generate vpn device script operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnDeviceScriptParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: str, or the result of cls(response) + :rtype: str + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[str] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnDeviceScriptParameters') + + request = build_virtual_network_gateways_vpn_device_configuration_script_request( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.vpn_device_configuration_script.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + vpn_device_configuration_script.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/vpndeviceconfigurationscript"} # type: ignore + + + async def _start_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnPacketCaptureStartParameters') + else: + _json = None + + request = build_virtual_network_gateways_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/startPacketCapture"} # type: ignore + + + @distributed_trace_async + async def begin_start_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Starts packet capture on virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to start packet + capture on gateway. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._start_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/startPacketCapture"} # type: ignore + + async def _stop_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnPacketCaptureStopParameters') + + request = build_virtual_network_gateways_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/stopPacketCapture"} # type: ignore + + + @distributed_trace_async + async def begin_stop_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Stops packet capture on virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to stop packet + capture on gateway. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/stopPacketCapture"} # type: ignore + + async def _get_vpnclient_connection_health_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Optional["_models.VpnClientConnectionHealthDetailListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnClientConnectionHealthDetailListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_vpnclient_connection_health_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_vpnclient_connection_health_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnClientConnectionHealthDetailListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vpnclient_connection_health_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getVpnClientConnectionHealth"} # type: ignore + + + @distributed_trace_async + async def begin_get_vpnclient_connection_health( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnClientConnectionHealthDetailListResult"]: + """Get VPN client connection health detail per P2S client connection of the virtual network + gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either + VpnClientConnectionHealthDetailListResult or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnClientConnectionHealthDetailListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientConnectionHealthDetailListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_vpnclient_connection_health_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnClientConnectionHealthDetailListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vpnclient_connection_health.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getVpnClientConnectionHealth"} # type: ignore + + async def _disconnect_virtual_network_gateway_vpn_connections_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'P2SVpnConnectionRequest') + + request = build_virtual_network_gateways_disconnect_virtual_network_gateway_vpn_connections_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._disconnect_virtual_network_gateway_vpn_connections_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _disconnect_virtual_network_gateway_vpn_connections_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/disconnectVirtualNetworkGatewayVpnConnections"} # type: ignore + + + @distributed_trace_async + async def begin_disconnect_virtual_network_gateway_vpn_connections( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Disconnect vpn connections of virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param request: The parameters are supplied to disconnect vpn connections. + :type request: ~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._disconnect_virtual_network_gateway_vpn_connections_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_disconnect_virtual_network_gateway_vpn_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/disconnectVirtualNetworkGatewayVpnConnections"} # type: ignore +class VirtualNetworkGatewayConnectionsOperations: # pylint: disable=too-many-public-methods + """VirtualNetworkGatewayConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VirtualNetworkGatewayConnection", + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetworkGatewayConnection') + + request = build_virtual_network_gateway_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VirtualNetworkGatewayConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkGatewayConnection"]: + """Creates or updates a virtual network gateway connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the create or update virtual network gateway + connection operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkGatewayConnection or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayConnection": + """Gets the specified virtual network gateway connection by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkGatewayConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_get_request( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified virtual network Gateway connection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + async def _update_tags_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.VirtualNetworkGatewayConnection"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualNetworkGatewayConnection"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_virtual_network_gateway_connections_update_tags_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_update_tags( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkGatewayConnection"]: + """Updates a virtual network gateway connection tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to update virtual network gateway connection tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkGatewayConnection or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_tags_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + async def _set_shared_key_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionSharedKey", + **kwargs: Any + ) -> "_models.ConnectionSharedKey": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionSharedKey"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectionSharedKey') + + request = build_virtual_network_gateway_connections_set_shared_key_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._set_shared_key_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _set_shared_key_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"} # type: ignore + + + @distributed_trace_async + async def begin_set_shared_key( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionSharedKey", + **kwargs: Any + ) -> AsyncLROPoller["_models.ConnectionSharedKey"]: + """The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway + connection shared key for passed virtual network gateway connection in the specified resource + group through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The virtual network gateway connection name. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the Begin Set Virtual Network Gateway connection + Shared key operation throughNetwork resource provider. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectionSharedKey + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ConnectionSharedKey or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionSharedKey] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionSharedKey"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._set_shared_key_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_set_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"} # type: ignore + + @distributed_trace_async + async def get_shared_key( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> "_models.ConnectionSharedKey": + """The Get VirtualNetworkGatewayConnectionSharedKey operation retrieves information about the + specified virtual network gateway connection shared key through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The virtual network gateway connection shared + key name. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectionSharedKey, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectionSharedKey + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionSharedKey"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_get_shared_key_request( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get_shared_key.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkGatewayConnectionListResult"]: + """The List VirtualNetworkGatewayConnections operation retrieves all the virtual network gateways + connections created. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkGatewayConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateway_connections_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateway_connections_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkGatewayConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections"} # type: ignore + + async def _reset_shared_key_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionResetSharedKey", + **kwargs: Any + ) -> Optional["_models.ConnectionResetSharedKey"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ConnectionResetSharedKey"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectionResetSharedKey') + + request = build_virtual_network_gateway_connections_reset_shared_key_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._reset_shared_key_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ConnectionResetSharedKey', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_shared_key_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset"} # type: ignore + + + @distributed_trace_async + async def begin_reset_shared_key( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionResetSharedKey", + **kwargs: Any + ) -> AsyncLROPoller["_models.ConnectionResetSharedKey"]: + """The VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway + connection shared key for passed virtual network gateway connection in the specified resource + group through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The virtual network gateway connection reset + shared key Name. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the begin reset virtual network gateway connection + shared key operation through network resource provider. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectionResetSharedKey + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ConnectionResetSharedKey or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionResetSharedKey] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionResetSharedKey"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._reset_shared_key_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionResetSharedKey', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset"} # type: ignore + + async def _start_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnPacketCaptureStartParameters') + else: + _json = None + + request = build_virtual_network_gateway_connections_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture"} # type: ignore + + + @distributed_trace_async + async def begin_start_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Starts packet capture on virtual network gateway connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to start packet + capture on gateway connection. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._start_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture"} # type: ignore + + async def _stop_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnPacketCaptureStopParameters') + + request = build_virtual_network_gateway_connections_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture"} # type: ignore + + + @distributed_trace_async + async def begin_stop_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Stops packet capture on virtual network gateway connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + Connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to stop packet + capture on gateway connection. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture"} # type: ignore + + async def _get_ike_sas_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_get_ike_sas_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_ike_sas_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_ike_sas_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/getikesas"} # type: ignore + + + @distributed_trace_async + async def begin_get_ike_sas( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Lists IKE Security Associations for the virtual network gateway connection in the specified + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + Connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_ike_sas_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_ike_sas.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/getikesas"} # type: ignore + + async def _reset_connection_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_reset_connection_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_connection_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _reset_connection_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/resetconnection"} # type: ignore + + + @distributed_trace_async + async def begin_reset_connection( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Resets the virtual network gateway connection specified. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + Connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._reset_connection_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/resetconnection"} # type: ignore +class LocalNetworkGatewaysOperations: + """LocalNetworkGatewaysOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + local_network_gateway_name: str, + parameters: "_models.LocalNetworkGateway", + **kwargs: Any + ) -> "_models.LocalNetworkGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'LocalNetworkGateway') + + request = build_local_network_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + local_network_gateway_name: str, + parameters: "_models.LocalNetworkGateway", + **kwargs: Any + ) -> AsyncLROPoller["_models.LocalNetworkGateway"]: + """Creates or updates a local network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :param parameters: Parameters supplied to the create or update local network gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either LocalNetworkGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + local_network_gateway_name: str, + **kwargs: Any + ) -> "_models.LocalNetworkGateway": + """Gets the specified local network gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LocalNetworkGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_local_network_gateways_get_request( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + local_network_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_local_network_gateways_delete_request_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + local_network_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified local network gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + local_network_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.LocalNetworkGateway": + """Updates a local network gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :param parameters: Parameters supplied to update local network gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LocalNetworkGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_local_network_gateways_update_tags_request( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.LocalNetworkGatewayListResult"]: + """Gets all the local network gateways in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LocalNetworkGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.LocalNetworkGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_local_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_local_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("LocalNetworkGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways"} # type: ignore +class VirtualNetworkGatewayNatRulesOperations: + """VirtualNetworkGatewayNatRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayNatRule": + """Retrieves the details of a nat rule. + + :param resource_group_name: The resource group name of the Virtual Network Gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkGatewayNatRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_nat_rules_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VirtualNetworkGatewayNatRule", + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayNatRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(nat_rule_parameters, 'VirtualNetworkGatewayNatRule') + + request = build_virtual_network_gateway_nat_rules_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VirtualNetworkGatewayNatRule", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkGatewayNatRule"]: + """Creates a nat rule to a scalable virtual network gateway if it doesn't exist else updates the + existing nat rules. + + :param resource_group_name: The resource group name of the Virtual Network Gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :param nat_rule_parameters: Parameters supplied to create or Update a Nat Rule. + :type nat_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkGatewayNatRule or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayNatRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + nat_rule_parameters=nat_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_nat_rules_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a nat rule. + + :param resource_group_name: The resource group name of the Virtual Network Gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + @distributed_trace + def list_by_virtual_network_gateway( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualNetworkGatewayNatRulesResult"]: + """Retrieves all nat rules for a particular virtual network gateway. + + :param resource_group_name: The resource group name of the virtual network gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualNetworkGatewayNatRulesResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualNetworkGatewayNatRulesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualNetworkGatewayNatRulesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateway_nat_rules_list_by_virtual_network_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + template_url=self.list_by_virtual_network_gateway.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateway_nat_rules_list_by_virtual_network_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualNetworkGatewayNatRulesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_virtual_network_gateway.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules"} # type: ignore +class VirtualNetworkTapsOperations: + """VirtualNetworkTapsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + tap_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_taps_delete_request_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + tap_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified virtual network tap. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of the virtual network tap. + :type tap_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + tap_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkTap": + """Gets information about the specified virtual network tap. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of virtual network tap. + :type tap_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkTap, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_taps_get_request( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + tap_name: str, + parameters: "_models.VirtualNetworkTap", + **kwargs: Any + ) -> "_models.VirtualNetworkTap": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetworkTap') + + request = build_virtual_network_taps_create_or_update_request_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + tap_name: str, + parameters: "_models.VirtualNetworkTap", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualNetworkTap"]: + """Creates or updates a Virtual Network Tap. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of the virtual network tap. + :type tap_name: str + :param parameters: Parameters supplied to the create or update virtual network tap operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualNetworkTap or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + tap_name: str, + tap_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualNetworkTap": + """Updates an VirtualNetworkTap tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of the tap. + :type tap_name: str + :param tap_parameters: Parameters supplied to update VirtualNetworkTap tags. + :type tap_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkTap, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(tap_parameters, 'TagsObject') + + request = build_virtual_network_taps_update_tags_request( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkTapListResult"]: + """Gets all the VirtualNetworkTaps in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkTapListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTapListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTapListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_taps_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_taps_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkTapListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworkTaps"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualNetworkTapListResult"]: + """Gets all the VirtualNetworkTaps in a subscription. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkTapListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTapListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTapListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_taps_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_taps_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkTapListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps"} # type: ignore +class VirtualRoutersOperations: + """VirtualRoutersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_routers_delete_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_router_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.VirtualRouter": + """Gets the specified Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualRouter, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualRouter + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_routers_get_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualRouter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_router_name: str, + parameters: "_models.VirtualRouter", + **kwargs: Any + ) -> "_models.VirtualRouter": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualRouter') + + request = build_virtual_routers_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualRouter', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualRouter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_router_name: str, + parameters: "_models.VirtualRouter", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualRouter"]: + """Creates or updates the specified Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param parameters: Parameters supplied to the create or update Virtual Router. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualRouter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualRouter or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualRouter] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouter"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualRouter', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualRouterListResult"]: + """Lists all Virtual Routers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualRouterListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualRouterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_routers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_routers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualRouterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualRouterListResult"]: + """Gets all the Virtual Routers in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualRouterListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualRouterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_routers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_routers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualRouterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualRouters"} # type: ignore +class VirtualRouterPeeringsOperations: + """VirtualRouterPeeringsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_router_peerings_delete_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified peering from a Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.VirtualRouterPeering": + """Gets the specified Virtual Router Peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param peering_name: The name of the Virtual Router Peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualRouterPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_router_peerings_get_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + parameters: "_models.VirtualRouterPeering", + **kwargs: Any + ) -> "_models.VirtualRouterPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualRouterPeering') + + request = build_virtual_router_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + parameters: "_models.VirtualRouterPeering", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualRouterPeering"]: + """Creates or updates the specified Virtual Router Peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param peering_name: The name of the Virtual Router Peering. + :type peering_name: str + :param parameters: Parameters supplied to the create or update Virtual Router Peering + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualRouterPeering or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_router_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.VirtualRouterPeeringListResult"]: + """Lists all Virtual Router Peerings in a Virtual Router resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualRouterPeeringListResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeeringListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeeringListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_router_peerings_list_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_router_peerings_list_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualRouterPeeringListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings"} # type: ignore +class VirtualWansOperations: + """VirtualWansOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> "_models.VirtualWAN": + """Retrieves the details of a VirtualWAN. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being retrieved. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualWAN, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualWAN + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_wans_get_request( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_wan_name: str, + wan_parameters: "_models.VirtualWAN", + **kwargs: Any + ) -> "_models.VirtualWAN": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(wan_parameters, 'VirtualWAN') + + request = build_virtual_wans_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_wan_name: str, + wan_parameters: "_models.VirtualWAN", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualWAN"]: + """Creates a VirtualWAN resource if it doesn't exist else updates the existing VirtualWAN. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being created or updated. + :type virtual_wan_name: str + :param wan_parameters: Parameters supplied to create or update VirtualWAN. + :type wan_parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualWAN + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualWAN or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualWAN] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + wan_parameters=wan_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualWAN', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + virtual_wan_name: str, + wan_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualWAN": + """Updates a VirtualWAN tags. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being updated. + :type virtual_wan_name: str + :param wan_parameters: Parameters supplied to Update VirtualWAN tags. + :type wan_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualWAN, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualWAN + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(wan_parameters, 'TagsObject') + + request = build_virtual_wans_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_wans_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a VirtualWAN. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being deleted. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualWANsResult"]: + """Lists all the VirtualWANs in a resource group. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualWANsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualWANsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualWANsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_wans_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_wans_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualWANsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualWANsResult"]: + """Lists all the VirtualWANs in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualWANsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualWANsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualWANsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_wans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_wans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualWANsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualWans"} # type: ignore +class VpnSitesOperations: + """VpnSitesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> "_models.VpnSite": + """Retrieves the details of a VPN site. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being retrieved. + :type vpn_site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSite, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSite + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_sites_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_parameters: "_models.VpnSite", + **kwargs: Any + ) -> "_models.VpnSite": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_site_parameters, 'VpnSite') + + request = build_vpn_sites_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnSite', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_parameters: "_models.VpnSite", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnSite"]: + """Creates a VpnSite resource if it doesn't exist else updates the existing VpnSite. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being created or updated. + :type vpn_site_name: str + :param vpn_site_parameters: Parameters supplied to create or update VpnSite. + :type vpn_site_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnSite + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnSite or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnSite] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + vpn_site_parameters=vpn_site_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnSite', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VpnSite": + """Updates VpnSite tags. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being updated. + :type vpn_site_name: str + :param vpn_site_parameters: Parameters supplied to update VpnSite tags. + :type vpn_site_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSite, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSite + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_site_parameters, 'TagsObject') + + request = build_vpn_sites_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_sites_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a VpnSite. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being deleted. + :type vpn_site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnSitesResult"]: + """Lists all the vpnSites in a resource group. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSitesResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSitesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSitesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_sites_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_sites_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSitesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnSitesResult"]: + """Lists all the VpnSites in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSitesResult or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSitesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSitesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_sites_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_sites_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSitesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnSites"} # type: ignore +class VpnSiteLinksOperations: + """VpnSiteLinksOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_link_name: str, + **kwargs: Any + ) -> "_models.VpnSiteLink": + """Retrieves the details of a VPN site link. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite. + :type vpn_site_name: str + :param vpn_site_link_name: The name of the VpnSiteLink being retrieved. + :type vpn_site_link_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSiteLink, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSiteLink + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSiteLink"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_site_links_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + vpn_site_link_name=vpn_site_link_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSiteLink', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks/{vpnSiteLinkName}"} # type: ignore + + + @distributed_trace + def list_by_vpn_site( + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnSiteLinksResult"]: + """Lists all the vpnSiteLinks in a resource group for a vpn site. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite. + :type vpn_site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSiteLinksResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSiteLinksResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSiteLinksResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_site_links_list_by_vpn_site_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=self.list_by_vpn_site.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_site_links_list_by_vpn_site_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSiteLinksResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_vpn_site.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks"} # type: ignore +class VpnSitesConfigurationOperations: + """VpnSitesConfigurationOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _download_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + request: "_models.GetVpnSitesConfigurationRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'GetVpnSitesConfigurationRequest') + + request = build_vpn_sites_configuration_download_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._download_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _download_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnConfiguration"} # type: ignore + + + @distributed_trace_async + async def begin_download( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + request: "_models.GetVpnSitesConfigurationRequest", + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Gives the sas-url to download the configurations for vpn-sites in a resource group. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN for which configuration of all vpn-sites is + needed. + :type virtual_wan_name: str + :param request: Parameters supplied to download vpn-sites configuration. + :type request: ~azure.mgmt.network.v2022_01_01.models.GetVpnSitesConfigurationRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._download_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_download.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnConfiguration"} # type: ignore +class VpnServerConfigurationsOperations: + """VpnServerConfigurationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> "_models.VpnServerConfiguration": + """Retrieves the details of a VpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being retrieved. + :type vpn_server_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnServerConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_server_configurations_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + vpn_server_configuration_parameters: "_models.VpnServerConfiguration", + **kwargs: Any + ) -> "_models.VpnServerConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_server_configuration_parameters, 'VpnServerConfiguration') + + request = build_vpn_server_configurations_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + vpn_server_configuration_parameters: "_models.VpnServerConfiguration", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnServerConfiguration"]: + """Creates a VpnServerConfiguration resource if it doesn't exist else updates the existing + VpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being created or + updated. + :type vpn_server_configuration_name: str + :param vpn_server_configuration_parameters: Parameters supplied to create or update + VpnServerConfiguration. + :type vpn_server_configuration_parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnServerConfiguration or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + vpn_server_configuration_parameters=vpn_server_configuration_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + vpn_server_configuration_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VpnServerConfiguration": + """Updates VpnServerConfiguration tags. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being updated. + :type vpn_server_configuration_name: str + :param vpn_server_configuration_parameters: Parameters supplied to update + VpnServerConfiguration tags. + :type vpn_server_configuration_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnServerConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_server_configuration_parameters, 'TagsObject') + + request = build_vpn_server_configurations_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_server_configurations_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a VpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being deleted. + :type vpn_server_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnServerConfigurationsResult"]: + """Lists all the vpnServerConfigurations in a resource group. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnServerConfigurationsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnServerConfigurationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnServerConfigurationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_server_configurations_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_server_configurations_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnServerConfigurationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnServerConfigurationsResult"]: + """Lists all the VpnServerConfigurations in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnServerConfigurationsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnServerConfigurationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnServerConfigurationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_server_configurations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_server_configurations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnServerConfigurationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnServerConfigurations"} # type: ignore +class ConfigurationPolicyGroupsOperations: + """ConfigurationPolicyGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + vpn_server_configuration_policy_group_parameters: "_models.VpnServerConfigurationPolicyGroup", + **kwargs: Any + ) -> "_models.VpnServerConfigurationPolicyGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationPolicyGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_server_configuration_policy_group_parameters, 'VpnServerConfigurationPolicyGroup') + + request = build_configuration_policy_groups_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + vpn_server_configuration_policy_group_parameters: "_models.VpnServerConfigurationPolicyGroup", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnServerConfigurationPolicyGroup"]: + """Creates a ConfigurationPolicyGroup if it doesn't exist else updates the existing one. + + :param resource_group_name: The resource group name of the ConfigurationPolicyGroup. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :param configuration_policy_group_name: The name of the ConfigurationPolicyGroup. + :type configuration_policy_group_name: str + :param vpn_server_configuration_policy_group_parameters: Parameters supplied to create or + update a VpnServerConfiguration PolicyGroup. + :type vpn_server_configuration_policy_group_parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnServerConfigurationPolicyGroup or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationPolicyGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + vpn_server_configuration_policy_group_parameters=vpn_server_configuration_policy_group_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_configuration_policy_groups_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a ConfigurationPolicyGroup. + + :param resource_group_name: The resource group name of the ConfigurationPolicyGroup. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :param configuration_policy_group_name: The name of the ConfigurationPolicyGroup. + :type configuration_policy_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any + ) -> "_models.VpnServerConfigurationPolicyGroup": + """Retrieves the details of a ConfigurationPolicyGroup. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :param configuration_policy_group_name: The name of the ConfigurationPolicyGroup being + retrieved. + :type configuration_policy_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnServerConfigurationPolicyGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationPolicyGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_configuration_policy_groups_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + + @distributed_trace + def list_by_vpn_server_configuration( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnServerConfigurationPolicyGroupsResult"]: + """Lists all the configurationPolicyGroups in a resource group for a vpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnServerConfigurationPolicyGroupsResult or + the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnServerConfigurationPolicyGroupsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnServerConfigurationPolicyGroupsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_configuration_policy_groups_list_by_vpn_server_configuration_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=self.list_by_vpn_server_configuration.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_configuration_policy_groups_list_by_vpn_server_configuration_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnServerConfigurationPolicyGroupsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_vpn_server_configuration.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups"} # type: ignore +class VirtualHubsOperations: + """VirtualHubsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> "_models.VirtualHub": + """Retrieves the details of a VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualHub, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualHub + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hubs_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + virtual_hub_parameters: "_models.VirtualHub", + **kwargs: Any + ) -> "_models.VirtualHub": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_hub_parameters, 'VirtualHub') + + request = build_virtual_hubs_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + virtual_hub_parameters: "_models.VirtualHub", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualHub"]: + """Creates a VirtualHub resource if it doesn't exist else updates the existing VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param virtual_hub_parameters: Parameters supplied to create or update VirtualHub. + :type virtual_hub_parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualHub + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualHub or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualHub] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + virtual_hub_parameters=virtual_hub_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualHub', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + @distributed_trace_async + async def update_tags( + self, + resource_group_name: str, + virtual_hub_name: str, + virtual_hub_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualHub": + """Updates VirtualHub tags. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param virtual_hub_parameters: Parameters supplied to update VirtualHub tags. + :type virtual_hub_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualHub, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualHub + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_hub_parameters, 'TagsObject') + + request = build_virtual_hubs_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hubs_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualHubsResult"]: + """Lists all the VirtualHubs in a resource group. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hubs_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hubs_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualHubsResult"]: + """Lists all the VirtualHubs in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hubs_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hubs_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualHubs"} # type: ignore + + async def _get_effective_virtual_hub_routes_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + effective_routes_parameters: Optional["_models.EffectiveRoutesParameters"] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if effective_routes_parameters is not None: + _json = self._serialize.body(effective_routes_parameters, 'EffectiveRoutesParameters') + else: + _json = None + + request = build_virtual_hubs_get_effective_virtual_hub_routes_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_effective_virtual_hub_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _get_effective_virtual_hub_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/effectiveRoutes"} # type: ignore + + + @distributed_trace_async + async def begin_get_effective_virtual_hub_routes( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + effective_routes_parameters: Optional["_models.EffectiveRoutesParameters"] = None, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Gets the effective routes configured for the Virtual Hub resource or the specified resource . + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param effective_routes_parameters: Parameters supplied to get the effective routes for a + specific resource. Default value is None. + :type effective_routes_parameters: + ~azure.mgmt.network.v2022_01_01.models.EffectiveRoutesParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_effective_virtual_hub_routes_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + effective_routes_parameters=effective_routes_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_effective_virtual_hub_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/effectiveRoutes"} # type: ignore +class HubVirtualNetworkConnectionsOperations: + """HubVirtualNetworkConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + hub_virtual_network_connection_parameters: "_models.HubVirtualNetworkConnection", + **kwargs: Any + ) -> "_models.HubVirtualNetworkConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubVirtualNetworkConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(hub_virtual_network_connection_parameters, 'HubVirtualNetworkConnection') + + request = build_hub_virtual_network_connections_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + hub_virtual_network_connection_parameters: "_models.HubVirtualNetworkConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.HubVirtualNetworkConnection"]: + """Creates a hub virtual network connection if it doesn't exist else updates the existing one. + + :param resource_group_name: The resource group name of the HubVirtualNetworkConnection. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the HubVirtualNetworkConnection. + :type connection_name: str + :param hub_virtual_network_connection_parameters: Parameters supplied to create or update a hub + virtual network connection. + :type hub_virtual_network_connection_parameters: + ~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either HubVirtualNetworkConnection or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubVirtualNetworkConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + hub_virtual_network_connection_parameters=hub_virtual_network_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_virtual_network_connections_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a HubVirtualNetworkConnection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the HubVirtualNetworkConnection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.HubVirtualNetworkConnection": + """Retrieves the details of a HubVirtualNetworkConnection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HubVirtualNetworkConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubVirtualNetworkConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_virtual_network_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListHubVirtualNetworkConnectionsResult"]: + """Retrieves the details of all HubVirtualNetworkConnections. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListHubVirtualNetworkConnectionsResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListHubVirtualNetworkConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListHubVirtualNetworkConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_hub_virtual_network_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_hub_virtual_network_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListHubVirtualNetworkConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections"} # type: ignore +class VpnGatewaysOperations: + """VpnGatewaysOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> "_models.VpnGateway": + """Retrieves the details of a virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_gateways_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.VpnGateway", + **kwargs: Any + ) -> "_models.VpnGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_gateway_parameters, 'VpnGateway') + + request = build_vpn_gateways_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.VpnGateway", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnGateway"]: + """Creates a virtual wan vpn gateway if it doesn't exist else updates the existing gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_gateway_parameters: Parameters supplied to create or Update a virtual wan vpn + gateway. + :type vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnGateway or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_gateway_parameters=vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + async def _update_tags_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.VpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_gateway_parameters, 'TagsObject') + + request = build_vpn_gateways_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_update_tags( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnGateway"]: + """Updates virtual wan vpn gateway tags. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_gateway_parameters: Parameters supplied to update a virtual wan vpn gateway tags. + :type vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnGateway or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_tags_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_gateway_parameters=vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_gateways_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + async def _reset_initial( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Optional["_models.VpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_gateways_reset_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/reset"} # type: ignore + + + @distributed_trace_async + async def begin_reset( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnGateway"]: + """Resets the primary of the vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnGateway or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._reset_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/reset"} # type: ignore + + async def _start_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnGatewayPacketCaptureStartParameters') + else: + _json = None + + request = build_vpn_gateways_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/startpacketcapture"} # type: ignore + + + @distributed_trace_async + async def begin_start_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Starts packet capture on vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param parameters: Vpn gateway packet capture parameters supplied to start packet capture on + vpn gateway. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._start_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/startpacketcapture"} # type: ignore + + async def _stop_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnGatewayPacketCaptureStopParameters') + else: + _json = None + + request = build_vpn_gateways_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/stoppacketcapture"} # type: ignore + + + @distributed_trace_async + async def begin_stop_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Stops packet capture on vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param parameters: Vpn gateway packet capture parameters supplied to stop packet capture on vpn + gateway. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/stoppacketcapture"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnGatewaysResult"]: + """Lists all the VpnGateways in a resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnGatewaysResult"]: + """Lists all the VpnGateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnGateways"} # type: ignore +class VpnLinkConnectionsOperations: + """VpnLinkConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _reset_connection_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_link_connections_reset_connection_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + template_url=self._reset_connection_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _reset_connection_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/resetconnection"} # type: ignore + + + @distributed_trace_async + async def begin_reset_connection( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Resets the VpnLink connection specified. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :param link_connection_name: The name of the vpn link connection. + :type link_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._reset_connection_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/resetconnection"} # type: ignore + + async def _get_ike_sas_initial( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_link_connections_get_ike_sas_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + template_url=self._get_ike_sas_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_ike_sas_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/getikesas"} # type: ignore + + + @distributed_trace_async + async def begin_get_ike_sas( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Lists IKE Security Associations for Vpn Site Link Connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :param link_connection_name: The name of the vpn link connection. + :type link_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_ike_sas_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_ike_sas.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/getikesas"} # type: ignore + + @distributed_trace + def list_by_vpn_connection( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnSiteLinkConnectionsResult"]: + """Retrieves all vpn site link connections for a particular virtual wan vpn gateway vpn + connection. + + :param resource_group_name: The resource group name of the vpn gateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSiteLinkConnectionsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSiteLinkConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSiteLinkConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_link_connections_list_by_vpn_connection_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.list_by_vpn_connection.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_link_connections_list_by_vpn_connection_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSiteLinkConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_vpn_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections"} # type: ignore +class VpnConnectionsOperations: + """VpnConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.VpnConnection": + """Retrieves the details of a vpn connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + vpn_connection_parameters: "_models.VpnConnection", + **kwargs: Any + ) -> "_models.VpnConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_connection_parameters, 'VpnConnection') + + request = build_vpn_connections_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + vpn_connection_parameters: "_models.VpnConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnConnection"]: + """Creates a vpn connection to a scalable vpn gateway if it doesn't exist else updates the + existing connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :param vpn_connection_parameters: Parameters supplied to create or Update a VPN Connection. + :type vpn_connection_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnConnection or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + vpn_connection_parameters=vpn_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_connections_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a vpn connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + async def _start_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnConnectionPacketCaptureStartParameters') + else: + _json = None + + request = build_vpn_connections_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/startpacketcapture"} # type: ignore + + + @distributed_trace_async + async def begin_start_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Starts packet capture on Vpn connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_connection_name: The name of the vpn connection. + :type vpn_connection_name: str + :param parameters: Vpn Connection packet capture parameters supplied to start packet capture on + gateway connection. Default value is None. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnConnectionPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._start_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/startpacketcapture"} # type: ignore + + async def _stop_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnConnectionPacketCaptureStopParameters') + else: + _json = None + + request = build_vpn_connections_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/stoppacketcapture"} # type: ignore + + + @distributed_trace_async + async def begin_stop_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> AsyncLROPoller[str]: + """Stops packet capture on Vpn connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_connection_name: The name of the vpn connection. + :type vpn_connection_name: str + :param parameters: Vpn Connection packet capture parameters supplied to stop packet capture on + gateway connection. Default value is None. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnConnectionPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/stoppacketcapture"} # type: ignore + + @distributed_trace + def list_by_vpn_gateway( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnConnectionsResult"]: + """Retrieves all vpn connections for a particular virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnConnectionsResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_connections_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.list_by_vpn_gateway.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_connections_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_vpn_gateway.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections"} # type: ignore +class VpnSiteLinkConnectionsOperations: + """VpnSiteLinkConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> "_models.VpnSiteLinkConnection": + """Retrieves the details of a vpn site link connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :param link_connection_name: The name of the vpn connection. + :type link_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSiteLinkConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSiteLinkConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSiteLinkConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_site_link_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSiteLinkConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}"} # type: ignore + +class NatRulesOperations: + """NatRulesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> "_models.VpnGatewayNatRule": + """Retrieves the details of a nat ruleGet. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnGatewayNatRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_rules_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VpnGatewayNatRule", + **kwargs: Any + ) -> "_models.VpnGatewayNatRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(nat_rule_parameters, 'VpnGatewayNatRule') + + request = build_nat_rules_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VpnGatewayNatRule", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnGatewayNatRule"]: + """Creates a nat rule to a scalable vpn gateway if it doesn't exist else updates the existing nat + rules. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :param nat_rule_parameters: Parameters supplied to create or Update a Nat Rule. + :type nat_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnGatewayNatRule or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGatewayNatRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + nat_rule_parameters=nat_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_rules_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a nat rule. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + @distributed_trace + def list_by_vpn_gateway( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVpnGatewayNatRulesResult"]: + """Retrieves all nat rules for a particular virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnGatewayNatRulesResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnGatewayNatRulesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnGatewayNatRulesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_nat_rules_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.list_by_vpn_gateway.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_nat_rules_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnGatewayNatRulesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_vpn_gateway.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules"} # type: ignore +class P2SVpnGatewaysOperations: + """P2SVpnGatewaysOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> "_models.P2SVpnGateway": + """Retrieves the details of a virtual wan p2s vpn gateway. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: P2SVpnGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.P2SVpnGateway", + **kwargs: Any + ) -> "_models.P2SVpnGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(p2_s_vpn_gateway_parameters, 'P2SVpnGateway') + + request = build_p2_svpn_gateways_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.P2SVpnGateway", + **kwargs: Any + ) -> AsyncLROPoller["_models.P2SVpnGateway"]: + """Creates a virtual wan p2s vpn gateway if it doesn't exist else updates the existing gateway. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param p2_s_vpn_gateway_parameters: Parameters supplied to create or Update a virtual wan p2s + vpn gateway. + :type p2_s_vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + p2_s_vpn_gateway_parameters=p2_s_vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + async def _update_tags_initial( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.P2SVpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(p2_s_vpn_gateway_parameters, 'TagsObject') + + request = build_p2_svpn_gateways_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_update_tags( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> AsyncLROPoller["_models.P2SVpnGateway"]: + """Updates virtual wan p2s vpn gateway tags. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param p2_s_vpn_gateway_parameters: Parameters supplied to update a virtual wan p2s vpn gateway + tags. + :type p2_s_vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_tags_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + p2_s_vpn_gateway_parameters=p2_s_vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a virtual wan p2s vpn gateway. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListP2SVpnGatewaysResult"]: + """Lists all the P2SVpnGateways in a resource group. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListP2SVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListP2SVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListP2SVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_p2_svpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_p2_svpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListP2SVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> AsyncIterable["_models.ListP2SVpnGatewaysResult"]: + """Lists all the P2SVpnGateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListP2SVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListP2SVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListP2SVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_p2_svpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_p2_svpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListP2SVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/p2svpnGateways"} # type: ignore + + async def _reset_initial( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Optional["_models.P2SVpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_reset_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/reset"} # type: ignore + + + @distributed_trace_async + async def begin_reset( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.P2SVpnGateway"]: + """Resets the primary of the p2s vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._reset_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/reset"} # type: ignore + + async def _generate_vpn_profile_initial( + self, + resource_group_name: str, + gateway_name: str, + parameters: "_models.P2SVpnProfileParameters", + **kwargs: Any + ) -> Optional["_models.VpnProfileResponse"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnProfileResponse"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'P2SVpnProfileParameters') + + request = build_p2_svpn_gateways_generate_vpn_profile_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generate_vpn_profile_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generate_vpn_profile_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/generatevpnprofile"} # type: ignore + + + @distributed_trace_async + async def begin_generate_vpn_profile( + self, + resource_group_name: str, + gateway_name: str, + parameters: "_models.P2SVpnProfileParameters", + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnProfileResponse"]: + """Generates VPN profile for P2S client of the P2SVpnGateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the P2SVpnGateway. + :type gateway_name: str + :param parameters: Parameters supplied to the generate P2SVpnGateway VPN client package + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.P2SVpnProfileParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnProfileResponse or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnProfileResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnProfileResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._generate_vpn_profile_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generate_vpn_profile.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/generatevpnprofile"} # type: ignore + + async def _get_p2_s_vpn_connection_health_initial( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Optional["_models.P2SVpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_get_p2_s_vpn_connection_health_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_p2_s_vpn_connection_health_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_p2_s_vpn_connection_health_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealth"} # type: ignore + + + @distributed_trace_async + async def begin_get_p2_s_vpn_connection_health( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.P2SVpnGateway"]: + """Gets the connection health of P2S clients of the virtual wan P2SVpnGateway in the specified + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the P2SVpnGateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_p2_s_vpn_connection_health_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_p2_s_vpn_connection_health.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealth"} # type: ignore + + async def _get_p2_s_vpn_connection_health_detailed_initial( + self, + resource_group_name: str, + gateway_name: str, + request: "_models.P2SVpnConnectionHealthRequest", + **kwargs: Any + ) -> Optional["_models.P2SVpnConnectionHealth"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnConnectionHealth"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'P2SVpnConnectionHealthRequest') + + request = build_p2_svpn_gateways_get_p2_s_vpn_connection_health_detailed_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_p2_s_vpn_connection_health_detailed_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnConnectionHealth', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_p2_s_vpn_connection_health_detailed_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealthDetailed"} # type: ignore + + + @distributed_trace_async + async def begin_get_p2_s_vpn_connection_health_detailed( + self, + resource_group_name: str, + gateway_name: str, + request: "_models.P2SVpnConnectionHealthRequest", + **kwargs: Any + ) -> AsyncLROPoller["_models.P2SVpnConnectionHealth"]: + """Gets the sas url to get the connection health detail of P2S clients of the virtual wan + P2SVpnGateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the P2SVpnGateway. + :type gateway_name: str + :param request: Request parameters supplied to get p2s vpn connections detailed health. + :type request: ~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionHealthRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either P2SVpnConnectionHealth or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionHealth] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnConnectionHealth"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._get_p2_s_vpn_connection_health_detailed_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnConnectionHealth', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_p2_s_vpn_connection_health_detailed.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealthDetailed"} # type: ignore + + async def _disconnect_p2_s_vpn_connections_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + p2_s_vpn_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'P2SVpnConnectionRequest') + + request = build_p2_svpn_gateways_disconnect_p2_s_vpn_connections_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + p2_s_vpn_gateway_name=p2_s_vpn_gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._disconnect_p2_s_vpn_connections_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _disconnect_p2_s_vpn_connections_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{p2sVpnGatewayName}/disconnectP2sVpnConnections"} # type: ignore + + + @distributed_trace_async + async def begin_disconnect_p2_s_vpn_connections( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + p2_s_vpn_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Disconnect P2S vpn connections of the virtual wan P2SVpnGateway in the specified resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param p2_s_vpn_gateway_name: The name of the P2S Vpn Gateway. + :type p2_s_vpn_gateway_name: str + :param request: The parameters are supplied to disconnect p2s vpn connections. + :type request: ~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._disconnect_p2_s_vpn_connections_initial( + resource_group_name=resource_group_name, + p2_s_vpn_gateway_name=p2_s_vpn_gateway_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_disconnect_p2_s_vpn_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{p2sVpnGatewayName}/disconnectP2sVpnConnections"} # type: ignore +class VpnServerConfigurationsAssociatedWithVirtualWanOperations: + """VpnServerConfigurationsAssociatedWithVirtualWanOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _list_initial( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> Optional["_models.VpnServerConfigurationsResponse"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnServerConfigurationsResponse"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_server_configurations_associated_with_virtual_wan_list_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + template_url=self._list_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnServerConfigurationsResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnServerConfigurations"} # type: ignore + + + @distributed_trace_async + async def begin_list( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.VpnServerConfigurationsResponse"]: + """Gives the list of VpnServerConfigurations associated with Virtual Wan in a resource group. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN whose associated VpnServerConfigurations is + needed. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VpnServerConfigurationsResponse or + the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationsResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationsResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnServerConfigurationsResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnServerConfigurations"} # type: ignore +class VirtualHubRouteTableV2SOperations: + """VirtualHubRouteTableV2SOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> "_models.VirtualHubRouteTableV2": + """Retrieves the details of a VirtualHubRouteTableV2. + + :param resource_group_name: The resource group name of the VirtualHubRouteTableV2. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the VirtualHubRouteTableV2. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualHubRouteTableV2, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2 + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHubRouteTableV2"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_route_table_v2_s_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + virtual_hub_route_table_v2_parameters: "_models.VirtualHubRouteTableV2", + **kwargs: Any + ) -> "_models.VirtualHubRouteTableV2": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHubRouteTableV2"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_hub_route_table_v2_parameters, 'VirtualHubRouteTableV2') + + request = build_virtual_hub_route_table_v2_s_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + virtual_hub_route_table_v2_parameters: "_models.VirtualHubRouteTableV2", + **kwargs: Any + ) -> AsyncLROPoller["_models.VirtualHubRouteTableV2"]: + """Creates a VirtualHubRouteTableV2 resource if it doesn't exist else updates the existing + VirtualHubRouteTableV2. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the VirtualHubRouteTableV2. + :type route_table_name: str + :param virtual_hub_route_table_v2_parameters: Parameters supplied to create or update + VirtualHubRouteTableV2. + :type virtual_hub_route_table_v2_parameters: + ~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2 + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either VirtualHubRouteTableV2 or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHubRouteTableV2"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + virtual_hub_route_table_v2_parameters=virtual_hub_route_table_v2_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_route_table_v2_s_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a VirtualHubRouteTableV2. + + :param resource_group_name: The resource group name of the VirtualHubRouteTableV2. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the VirtualHubRouteTableV2. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualHubRouteTableV2SResult"]: + """Retrieves the details of all VirtualHubRouteTableV2s. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubRouteTableV2SResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubRouteTableV2SResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubRouteTableV2SResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hub_route_table_v2_s_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hub_route_table_v2_s_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubRouteTableV2SResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables"} # type: ignore +class ExpressRouteGatewaysOperations: + """ExpressRouteGatewaysOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list_by_subscription( + self, + **kwargs: Any + ) -> "_models.ExpressRouteGatewayList": + """Lists ExpressRoute gateways under a given subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteGatewayList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGatewayList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteGatewayList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteGateways"} # type: ignore + + + @distributed_trace_async + async def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteGatewayList": + """Lists ExpressRoute gateways in a given resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteGatewayList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGatewayList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteGatewayList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + express_route_gateway_name: str, + put_express_route_gateway_parameters: "_models.ExpressRouteGateway", + **kwargs: Any + ) -> "_models.ExpressRouteGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(put_express_route_gateway_parameters, 'ExpressRouteGateway') + + request = build_express_route_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + express_route_gateway_name: str, + put_express_route_gateway_parameters: "_models.ExpressRouteGateway", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteGateway"]: + """Creates or updates a ExpressRoute gateway in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param put_express_route_gateway_parameters: Parameters required in an ExpressRoute gateway PUT + operation. + :type put_express_route_gateway_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + put_express_route_gateway_parameters=put_express_route_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + async def _update_tags_initial( + self, + resource_group_name: str, + express_route_gateway_name: str, + express_route_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.ExpressRouteGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(express_route_gateway_parameters, 'TagsObject') + + request = build_express_route_gateways_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_update_tags( + self, + resource_group_name: str, + express_route_gateway_name: str, + express_route_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteGateway"]: + """Updates express route gateway tags. + + :param resource_group_name: The resource group name of the ExpressRouteGateway. + :type resource_group_name: str + :param express_route_gateway_name: The name of the gateway. + :type express_route_gateway_name: str + :param express_route_gateway_parameters: Parameters supplied to update a virtual wan express + route gateway tags. + :type express_route_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_tags_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + express_route_gateway_parameters=express_route_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteGateway": + """Fetches the details of a ExpressRoute gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_get_request( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_delete_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the specified ExpressRoute gateway in a resource group. An ExpressRoute gateway + resource can only be deleted when there are no connection subresources. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore +class ExpressRouteConnectionsOperations: + """ExpressRouteConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + put_express_route_connection_parameters: "_models.ExpressRouteConnection", + **kwargs: Any + ) -> "_models.ExpressRouteConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(put_express_route_connection_parameters, 'ExpressRouteConnection') + + request = build_express_route_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + put_express_route_connection_parameters: "_models.ExpressRouteConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.ExpressRouteConnection"]: + """Creates a connection between an ExpressRoute gateway and an ExpressRoute circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param connection_name: The name of the connection subresource. + :type connection_name: str + :param put_express_route_connection_parameters: Parameters required in an + ExpressRouteConnection PUT operation. + :type put_express_route_connection_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ExpressRouteConnection or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + put_express_route_connection_parameters=put_express_route_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteConnection": + """Gets the specified ExpressRouteConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param connection_name: The name of the ExpressRoute connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_connections_get_request( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_connections_delete_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a connection to a ExpressRoute circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param connection_name: The name of the connection subresource. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + @distributed_trace_async + async def list( + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteConnectionList": + """Lists ExpressRouteConnections. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteConnectionList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnectionList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnectionList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_connections_list_request( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteConnectionList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections"} # type: ignore + +class VirtualHubBgpConnectionOperations: + """VirtualHubBgpConnectionOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.BgpConnection": + """Retrieves the details of a Virtual Hub Bgp Connection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BgpConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BgpConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connection_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BgpConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + parameters: "_models.BgpConnection", + **kwargs: Any + ) -> "_models.BgpConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'BgpConnection') + + request = build_virtual_hub_bgp_connection_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BgpConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BgpConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + parameters: "_models.BgpConnection", + **kwargs: Any + ) -> AsyncLROPoller["_models.BgpConnection"]: + """Creates a VirtualHubBgpConnection resource if it doesn't exist else updates the existing + VirtualHubBgpConnection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :param parameters: Parameters of Bgp connection. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.BgpConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either BgpConnection or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.BgpConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BgpConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connection_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a VirtualHubBgpConnection. + + :param resource_group_name: The resource group name of the VirtualHubBgpConnection. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore +class VirtualHubBgpConnectionsOperations: + """VirtualHubBgpConnectionsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualHubBgpConnectionResults"]: + """Retrieves the details of all VirtualHubBgpConnections. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubBgpConnectionResults or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubBgpConnectionResults] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubBgpConnectionResults"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hub_bgp_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hub_bgp_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubBgpConnectionResults", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections"} # type: ignore + + async def _list_learned_routes_initial( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> Optional["_models.PeerRouteList"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PeerRouteList"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connections_list_learned_routes_request_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_learned_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PeerRouteList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_learned_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/learnedRoutes"} # type: ignore + + + @distributed_trace_async + async def begin_list_learned_routes( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.PeerRouteList"]: + """Retrieves a list of routes the virtual hub bgp connection has learned. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param hub_name: The name of the virtual hub. + :type hub_name: str + :param connection_name: The name of the virtual hub bgp connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PeerRouteList or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PeerRouteList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerRouteList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_learned_routes_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PeerRouteList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_learned_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/learnedRoutes"} # type: ignore + + async def _list_advertised_routes_initial( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> Optional["_models.PeerRouteList"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PeerRouteList"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connections_list_advertised_routes_request_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_advertised_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PeerRouteList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_advertised_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/advertisedRoutes"} # type: ignore + + + @distributed_trace_async + async def begin_list_advertised_routes( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> AsyncLROPoller["_models.PeerRouteList"]: + """Retrieves a list of routes the virtual hub bgp connection is advertising to the specified peer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param hub_name: The name of the virtual hub. + :type hub_name: str + :param connection_name: The name of the virtual hub bgp connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either PeerRouteList or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.PeerRouteList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerRouteList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._list_advertised_routes_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PeerRouteList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_advertised_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/advertisedRoutes"} # type: ignore +class VirtualHubIpConfigurationOperations: + """VirtualHubIpConfigurationOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any + ) -> "_models.HubIpConfiguration": + """Retrieves the details of a Virtual Hub Ip configuration. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param ip_config_name: The name of the ipconfig. + :type ip_config_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HubIpConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubIpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_ip_configuration_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + parameters: "_models.HubIpConfiguration", + **kwargs: Any + ) -> "_models.HubIpConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubIpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'HubIpConfiguration') + + request = build_virtual_hub_ip_configuration_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + parameters: "_models.HubIpConfiguration", + **kwargs: Any + ) -> AsyncLROPoller["_models.HubIpConfiguration"]: + """Creates a VirtualHubIpConfiguration resource if it doesn't exist else updates the existing + VirtualHubIpConfiguration. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param ip_config_name: The name of the ipconfig. + :type ip_config_name: str + :param parameters: Hub Ip Configuration parameters. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either HubIpConfiguration or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubIpConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_ip_configuration_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a VirtualHubIpConfiguration. + + :param resource_group_name: The resource group name of the VirtualHubBgpConnection. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param ip_config_name: The name of the ipconfig. + :type ip_config_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListVirtualHubIpConfigurationResults"]: + """Retrieves the details of all VirtualHubIpConfigurations. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubIpConfigurationResults or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubIpConfigurationResults] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubIpConfigurationResults"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hub_ip_configuration_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hub_ip_configuration_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubIpConfigurationResults", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations"} # type: ignore +class HubRouteTablesOperations: + """HubRouteTablesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + route_table_parameters: "_models.HubRouteTable", + **kwargs: Any + ) -> "_models.HubRouteTable": + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubRouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_table_parameters, 'HubRouteTable') + + request = build_hub_route_tables_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('HubRouteTable', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('HubRouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + route_table_parameters: "_models.HubRouteTable", + **kwargs: Any + ) -> AsyncLROPoller["_models.HubRouteTable"]: + """Creates a RouteTable resource if it doesn't exist else updates the existing RouteTable. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the RouteTable. + :type route_table_name: str + :param route_table_parameters: Parameters supplied to create or update RouteTable. + :type route_table_parameters: ~azure.mgmt.network.v2022_01_01.models.HubRouteTable + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either HubRouteTable or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.HubRouteTable] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubRouteTable"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + route_table_parameters=route_table_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('HubRouteTable', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> "_models.HubRouteTable": + """Retrieves the details of a RouteTable. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the RouteTable. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HubRouteTable, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.HubRouteTable + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubRouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_route_tables_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('HubRouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_route_tables_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a RouteTable. + + :param resource_group_name: The resource group name of the RouteTable. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the RouteTable. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListHubRouteTablesResult"]: + """Retrieves the details of all RouteTables. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListHubRouteTablesResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListHubRouteTablesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListHubRouteTablesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_hub_route_tables_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_hub_route_tables_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListHubRouteTablesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables"} # type: ignore +class RoutingIntentOperations: + """RoutingIntentOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + routing_intent_parameters: "_models.RoutingIntent", + **kwargs: Any + ) -> "_models.RoutingIntent": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoutingIntent"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(routing_intent_parameters, 'RoutingIntent') + + request = build_routing_intent_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RoutingIntent', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RoutingIntent', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + routing_intent_parameters: "_models.RoutingIntent", + **kwargs: Any + ) -> AsyncLROPoller["_models.RoutingIntent"]: + """Creates a RoutingIntent resource if it doesn't exist else updates the existing RoutingIntent. + + :param resource_group_name: The resource group name of the RoutingIntent. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param routing_intent_name: The name of the per VirtualHub singleton Routing Intent resource. + :type routing_intent_name: str + :param routing_intent_parameters: Parameters supplied to create or update RoutingIntent. + :type routing_intent_parameters: ~azure.mgmt.network.v2022_01_01.models.RoutingIntent + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either RoutingIntent or the result of + cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.network.v2022_01_01.models.RoutingIntent] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoutingIntent"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + routing_intent_parameters=routing_intent_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RoutingIntent', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any + ) -> "_models.RoutingIntent": + """Retrieves the details of a RoutingIntent. + + :param resource_group_name: The resource group name of the RoutingIntent. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param routing_intent_name: The name of the RoutingIntent. + :type routing_intent_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RoutingIntent, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RoutingIntent + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoutingIntent"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routing_intent_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RoutingIntent', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routing_intent_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a RoutingIntent. + + :param resource_group_name: The resource group name of the RoutingIntent. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param routing_intent_name: The name of the RoutingIntent. + :type routing_intent_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.ListRoutingIntentResult"]: + """Retrieves the details of all RoutingIntent child resources of the VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListRoutingIntentResult or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.ListRoutingIntentResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListRoutingIntentResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_routing_intent_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_routing_intent_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ListRoutingIntentResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent"} # type: ignore +class WebApplicationFirewallPoliciesOperations: + """WebApplicationFirewallPoliciesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> AsyncIterable["_models.WebApplicationFirewallPolicyListResult"]: + """Lists all of the protection policies within a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either WebApplicationFirewallPolicyListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_web_application_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_web_application_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("WebApplicationFirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> AsyncIterable["_models.WebApplicationFirewallPolicyListResult"]: + """Gets all the WAF policies in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either WebApplicationFirewallPolicyListResult or the + result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_web_application_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_web_application_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("WebApplicationFirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return AsyncItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies"} # type: ignore + + @distributed_trace_async + async def get( + self, + resource_group_name: str, + policy_name: str, + **kwargs: Any + ) -> "_models.WebApplicationFirewallPolicy": + """Retrieve protection policy with specified name within a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param policy_name: The name of the policy. + :type policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: WebApplicationFirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_web_application_firewall_policies_get_request( + resource_group_name=resource_group_name, + policy_name=policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('WebApplicationFirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore + + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + policy_name: str, + parameters: "_models.WebApplicationFirewallPolicy", + **kwargs: Any + ) -> "_models.WebApplicationFirewallPolicy": + """Creates or update policy with specified rule set name within a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param policy_name: The name of the policy. + :type policy_name: str + :param parameters: Policy to be created. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: WebApplicationFirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'WebApplicationFirewallPolicy') + + request = build_web_application_firewall_policies_create_or_update_request( + resource_group_name=resource_group_name, + policy_name=policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('WebApplicationFirewallPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('WebApplicationFirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_web_application_firewall_policies_delete_request_initial( + resource_group_name=resource_group_name, + policy_name=policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore + + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + policy_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param policy_name: The name of the policy. + :type policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + policy_name=policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore +class ExpressRouteProviderPortsLocationOperations: + """ExpressRouteProviderPortsLocationOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def list( + self, + filter: Optional[str] = None, + **kwargs: Any + ) -> "_models.ExpressRouteProviderPortListResult": + """Retrieves all the ExpressRouteProviderPorts in a subscription. + + :param filter: The filter to apply on the operation. For example, you can use $filter=location + eq '{state}'. Default value is None. + :type filter: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteProviderPortListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteProviderPortListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteProviderPortListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_provider_ports_location_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + filter=filter, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteProviderPortListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts"} # type: ignore + diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_scope_connections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_scope_connections_operations.py deleted file mode 100644 index 9ebd82a7554..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_scope_connections_operations.py +++ /dev/null @@ -1,334 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._scope_connections_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class ScopeConnectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`scope_connections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - parameters: "_models.ScopeConnection", - **kwargs: Any - ) -> "_models.ScopeConnection": - """Creates or updates scope connection from Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param scope_connection_name: Name for the cross-tenant connection. - :type scope_connection_name: str - :param parameters: Scope connection to be created/updated. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ScopeConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ScopeConnection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - scope_connection_name=scope_connection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('ScopeConnection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('ScopeConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore - - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - **kwargs: Any - ) -> "_models.ScopeConnection": - """Get specified scope connection created by this Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param scope_connection_name: Name for the cross-tenant connection. - :type scope_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ScopeConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - scope_connection_name=scope_connection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ScopeConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - **kwargs: Any - ) -> None: - """Delete the pending scope connection created by this network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param scope_connection_name: Name for the cross-tenant connection. - :type scope_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - scope_connection_name=scope_connection_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.ScopeConnectionListResult"]: - """List all scope connections created by this network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ScopeConnectionListResult or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ScopeConnectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_security_admin_configurations_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_security_admin_configurations_operations.py deleted file mode 100644 index aad6415501b..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_security_admin_configurations_operations.py +++ /dev/null @@ -1,342 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._security_admin_configurations_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class SecurityAdminConfigurationsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`security_admin_configurations` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.SecurityAdminConfigurationListResult"]: - """Lists all the network manager security admin configurations in a network manager, in a - paginated format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either SecurityAdminConfigurationListResult or the result - of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfigurationListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("SecurityAdminConfigurationListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations"} # type: ignore - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any - ) -> "_models.SecurityAdminConfiguration": - """Retrieves a network manager security admin configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityAdminConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - security_admin_configuration: "_models.SecurityAdminConfiguration", - **kwargs: Any - ) -> "_models.SecurityAdminConfiguration": - """Creates or updates a network manager security admin configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param security_admin_configuration: The security admin configuration to create or update. - :type security_admin_configuration: - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityAdminConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(security_admin_configuration, 'SecurityAdminConfiguration') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager security admin configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_security_user_configurations_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_security_user_configurations_operations.py deleted file mode 100644 index d05095b399d..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_security_user_configurations_operations.py +++ /dev/null @@ -1,342 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._security_user_configurations_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class SecurityUserConfigurationsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`security_user_configurations` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.SecurityUserConfigurationListResult"]: - """Lists all the network manager security user configurations in a network manager, in a paginated - format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either SecurityUserConfigurationListResult or the result - of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfigurationListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityUserConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("SecurityUserConfigurationListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations"} # type: ignore - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any - ) -> "_models.SecurityUserConfiguration": - """Retrieves a network manager security user configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityUserConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityUserConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('SecurityUserConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - security_user_configuration: "_models.SecurityUserConfiguration", - **kwargs: Any - ) -> "_models.SecurityUserConfiguration": - """Creates or updates a network manager security user configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param security_user_configuration: The security user configuration to create or update. - :type security_user_configuration: - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityUserConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityUserConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(security_user_configuration, 'SecurityUserConfiguration') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('SecurityUserConfiguration', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('SecurityUserConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager security user configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_static_members_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_static_members_operations.py deleted file mode 100644 index ad88e95f203..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_static_members_operations.py +++ /dev/null @@ -1,351 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._static_members_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class StaticMembersOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`static_members` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - **kwargs: Any - ) -> "_models.StaticMember": - """Gets the specified static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param static_member_name: The name of the static member. - :type static_member_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: StaticMember, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.StaticMember - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - static_member_name=static_member_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('StaticMember', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - parameters: "_models.StaticMember", - **kwargs: Any - ) -> "_models.StaticMember": - """Creates or updates a static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param static_member_name: The name of the static member. - :type static_member_name: str - :param parameters: Parameters supplied to the specify the static member to create. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.StaticMember - :keyword callable cls: A custom type or function that will be passed the direct response - :return: StaticMember, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.StaticMember - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'StaticMember') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - static_member_name=static_member_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('StaticMember', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('StaticMember', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - **kwargs: Any - ) -> None: - """Deletes a static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param static_member_name: The name of the static member. - :type static_member_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - static_member_name=static_member_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.StaticMemberListResult"]: - """Lists the specified static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either StaticMemberListResult or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.StaticMemberListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMemberListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("StaticMemberListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_subscription_network_manager_connections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_subscription_network_manager_connections_operations.py deleted file mode 100644 index 935633256ed..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_subscription_network_manager_connections_operations.py +++ /dev/null @@ -1,300 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._subscription_network_manager_connections_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class SubscriptionNetworkManagerConnectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`subscription_network_manager_connections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace_async - async def create_or_update( - self, - network_manager_connection_name: str, - parameters: "_models.NetworkManagerConnection", - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Create a connection from this subscription to a cross tenant network manager. - - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :param parameters: Network manager connection to be created/updated. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerConnection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace_async - async def get( - self, - network_manager_connection_name: str, - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Get a specified connection created by this subscription. - - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - network_manager_connection_name: str, - **kwargs: Any - ) -> None: - """Delete specified pending connection created by this subscription. - - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def list( - self, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.NetworkManagerConnectionListResult"]: - """List all network manager connections created by this subscription. - - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerConnectionListResult or the result - of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_user_rule_collections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_user_rule_collections_operations.py deleted file mode 100644 index 72792bec685..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_user_rule_collections_operations.py +++ /dev/null @@ -1,360 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._user_rule_collections_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class UserRuleCollectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`user_rule_collections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.UserRuleCollectionListResult"]: - """Lists all the user rule collections in a security configuration, in a paginated format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either UserRuleCollectionListResult or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleCollectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("UserRuleCollectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections"} # type: ignore - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - **kwargs: Any - ) -> "_models.UserRuleCollection": - """Gets a network manager security user configuration rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: UserRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('UserRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - user_rule_collection: "_models.UserRuleCollection", - **kwargs: Any - ) -> "_models.UserRuleCollection": - """Creates or updates a user rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param user_rule_collection: The User Rule Collection to create or update. - :type user_rule_collection: ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: UserRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(user_rule_collection, 'UserRuleCollection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('UserRuleCollection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('UserRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a user rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_user_rules_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_user_rules_operations.py deleted file mode 100644 index e39d9232733..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/aio/operations/_user_rules_operations.py +++ /dev/null @@ -1,377 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models as _models -from ..._vendor import _convert_request -from ...operations._user_rules_operations import build_create_or_update_request, build_delete_request, build_get_request, build_list_request -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class UserRulesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.aio.NetworkManagementClient`'s - :attr:`user_rules` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs) -> None: - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> AsyncIterable["_models.UserRuleListResult"]: - """Lists all user rules in a rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either UserRuleListResult or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.UserRuleListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("UserRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules"} # type: ignore - - @distributed_trace_async - async def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - **kwargs: Any - ) -> "_models.BaseUserRule": - """Gets a user rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseUserRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseUserRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('BaseUserRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - user_rule: "_models.BaseUserRule", - **kwargs: Any - ) -> "_models.BaseUserRule": - """Creates or updates a user rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param user_rule: The user rule to create or update. - :type user_rule: ~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseUserRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseUserRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(user_rule, 'BaseUserRule') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('BaseUserRule', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('BaseUserRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a user rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/models/__init__.py b/src/network-manager/azext_network_manager/vendored_sdks/models/__init__.py index 8d8f1154522..7170dccd736 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/models/__init__.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/models/__init__.py @@ -6,48 +6,405 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +from ._models_py3 import AadAuthenticationParameters from ._models_py3 import ActiveBaseSecurityAdminRule -from ._models_py3 import ActiveBaseSecurityUserRule from ._models_py3 import ActiveConfigurationParameter from ._models_py3 import ActiveConnectivityConfiguration from ._models_py3 import ActiveConnectivityConfigurationsListResult from ._models_py3 import ActiveDefaultSecurityAdminRule -from ._models_py3 import ActiveDefaultSecurityUserRule from ._models_py3 import ActiveSecurityAdminRule from ._models_py3 import ActiveSecurityAdminRulesListResult -from ._models_py3 import ActiveSecurityUserRule -from ._models_py3 import ActiveSecurityUserRulesListResult from ._models_py3 import AddressPrefixItem +from ._models_py3 import AddressSpace from ._models_py3 import AdminRule from ._models_py3 import AdminRuleCollection from ._models_py3 import AdminRuleCollectionListResult from ._models_py3 import AdminRuleListResult +from ._models_py3 import ApplicationGateway +from ._models_py3 import ApplicationGatewayAuthenticationCertificate +from ._models_py3 import ApplicationGatewayAutoscaleConfiguration +from ._models_py3 import ApplicationGatewayAvailableSslOptions +from ._models_py3 import ApplicationGatewayAvailableSslPredefinedPolicies +from ._models_py3 import ApplicationGatewayAvailableWafRuleSetsResult +from ._models_py3 import ApplicationGatewayBackendAddress +from ._models_py3 import ApplicationGatewayBackendAddressPool +from ._models_py3 import ApplicationGatewayBackendHealth +from ._models_py3 import ApplicationGatewayBackendHealthHttpSettings +from ._models_py3 import ApplicationGatewayBackendHealthOnDemand +from ._models_py3 import ApplicationGatewayBackendHealthPool +from ._models_py3 import ApplicationGatewayBackendHealthServer +from ._models_py3 import ApplicationGatewayBackendHttpSettings +from ._models_py3 import ApplicationGatewayBackendSettings +from ._models_py3 import ApplicationGatewayClientAuthConfiguration +from ._models_py3 import ApplicationGatewayConnectionDraining +from ._models_py3 import ApplicationGatewayCustomError +from ._models_py3 import ApplicationGatewayFirewallDisabledRuleGroup +from ._models_py3 import ApplicationGatewayFirewallExclusion +from ._models_py3 import ApplicationGatewayFirewallRule +from ._models_py3 import ApplicationGatewayFirewallRuleGroup +from ._models_py3 import ApplicationGatewayFirewallRuleSet +from ._models_py3 import ApplicationGatewayFrontendIPConfiguration +from ._models_py3 import ApplicationGatewayFrontendPort +from ._models_py3 import ApplicationGatewayGlobalConfiguration +from ._models_py3 import ApplicationGatewayHeaderConfiguration +from ._models_py3 import ApplicationGatewayHttpListener +from ._models_py3 import ApplicationGatewayIPConfiguration +from ._models_py3 import ApplicationGatewayListResult +from ._models_py3 import ApplicationGatewayListener +from ._models_py3 import ApplicationGatewayLoadDistributionPolicy +from ._models_py3 import ApplicationGatewayLoadDistributionTarget +from ._models_py3 import ApplicationGatewayOnDemandProbe +from ._models_py3 import ApplicationGatewayPathRule +from ._models_py3 import ApplicationGatewayPrivateEndpointConnection +from ._models_py3 import ApplicationGatewayPrivateEndpointConnectionListResult +from ._models_py3 import ApplicationGatewayPrivateLinkConfiguration +from ._models_py3 import ApplicationGatewayPrivateLinkIpConfiguration +from ._models_py3 import ApplicationGatewayPrivateLinkResource +from ._models_py3 import ApplicationGatewayPrivateLinkResourceListResult +from ._models_py3 import ApplicationGatewayProbe +from ._models_py3 import ApplicationGatewayProbeHealthResponseMatch +from ._models_py3 import ApplicationGatewayRedirectConfiguration +from ._models_py3 import ApplicationGatewayRequestRoutingRule +from ._models_py3 import ApplicationGatewayRewriteRule +from ._models_py3 import ApplicationGatewayRewriteRuleActionSet +from ._models_py3 import ApplicationGatewayRewriteRuleCondition +from ._models_py3 import ApplicationGatewayRewriteRuleSet +from ._models_py3 import ApplicationGatewayRoutingRule +from ._models_py3 import ApplicationGatewaySku +from ._models_py3 import ApplicationGatewaySslCertificate +from ._models_py3 import ApplicationGatewaySslPolicy +from ._models_py3 import ApplicationGatewaySslPredefinedPolicy +from ._models_py3 import ApplicationGatewaySslProfile +from ._models_py3 import ApplicationGatewayTrustedClientCertificate +from ._models_py3 import ApplicationGatewayTrustedRootCertificate +from ._models_py3 import ApplicationGatewayUrlConfiguration +from ._models_py3 import ApplicationGatewayUrlPathMap +from ._models_py3 import ApplicationGatewayWebApplicationFirewallConfiguration +from ._models_py3 import ApplicationRule +from ._models_py3 import ApplicationSecurityGroup +from ._models_py3 import ApplicationSecurityGroupListResult +from ._models_py3 import AuthorizationListResult +from ._models_py3 import AutoApprovedPrivateLinkService +from ._models_py3 import AutoApprovedPrivateLinkServicesResult +from ._models_py3 import Availability +from ._models_py3 import AvailableDelegation +from ._models_py3 import AvailableDelegationsResult +from ._models_py3 import AvailablePrivateEndpointType +from ._models_py3 import AvailablePrivateEndpointTypesResult +from ._models_py3 import AvailableProvidersList +from ._models_py3 import AvailableProvidersListCity +from ._models_py3 import AvailableProvidersListCountry +from ._models_py3 import AvailableProvidersListParameters +from ._models_py3 import AvailableProvidersListState +from ._models_py3 import AvailableServiceAlias +from ._models_py3 import AvailableServiceAliasesResult from ._models_py3 import AzureAsyncOperationResult +from ._models_py3 import AzureFirewall +from ._models_py3 import AzureFirewallApplicationRule +from ._models_py3 import AzureFirewallApplicationRuleCollection +from ._models_py3 import AzureFirewallApplicationRuleProtocol +from ._models_py3 import AzureFirewallFqdnTag +from ._models_py3 import AzureFirewallFqdnTagListResult +from ._models_py3 import AzureFirewallIPConfiguration +from ._models_py3 import AzureFirewallIpGroups +from ._models_py3 import AzureFirewallListResult +from ._models_py3 import AzureFirewallNatRCAction +from ._models_py3 import AzureFirewallNatRule +from ._models_py3 import AzureFirewallNatRuleCollection +from ._models_py3 import AzureFirewallNetworkRule +from ._models_py3 import AzureFirewallNetworkRuleCollection +from ._models_py3 import AzureFirewallPublicIPAddress +from ._models_py3 import AzureFirewallRCAction +from ._models_py3 import AzureFirewallSku +from ._models_py3 import AzureReachabilityReport +from ._models_py3 import AzureReachabilityReportItem +from ._models_py3 import AzureReachabilityReportLatencyInfo +from ._models_py3 import AzureReachabilityReportLocation +from ._models_py3 import AzureReachabilityReportParameters +from ._models_py3 import AzureWebCategory +from ._models_py3 import AzureWebCategoryListResult +from ._models_py3 import BGPCommunity +from ._models_py3 import BackendAddressInboundNatRulePortMappings +from ._models_py3 import BackendAddressPool from ._models_py3 import BaseAdminRule -from ._models_py3 import BaseUserRule +from ._models_py3 import BastionActiveSession +from ._models_py3 import BastionActiveSessionListResult +from ._models_py3 import BastionHost +from ._models_py3 import BastionHostIPConfiguration +from ._models_py3 import BastionHostListResult +from ._models_py3 import BastionSessionDeleteResult +from ._models_py3 import BastionSessionState +from ._models_py3 import BastionShareableLink +from ._models_py3 import BastionShareableLinkListRequest +from ._models_py3 import BastionShareableLinkListResult +from ._models_py3 import BgpConnection +from ._models_py3 import BgpPeerStatus +from ._models_py3 import BgpPeerStatusListResult +from ._models_py3 import BgpServiceCommunity +from ._models_py3 import BgpServiceCommunityListResult +from ._models_py3 import BgpSettings +from ._models_py3 import BreakOutCategoryPolicies +from ._models_py3 import CheckPrivateLinkServiceVisibilityRequest +from ._models_py3 import ChildResource from ._models_py3 import CloudErrorBody from ._models_py3 import Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties from ._models_py3 import ConfigurationGroup +from ._models_py3 import ConnectionMonitor +from ._models_py3 import ConnectionMonitorDestination +from ._models_py3 import ConnectionMonitorEndpoint +from ._models_py3 import ConnectionMonitorEndpointFilter +from ._models_py3 import ConnectionMonitorEndpointFilterItem +from ._models_py3 import ConnectionMonitorEndpointScope +from ._models_py3 import ConnectionMonitorEndpointScopeItem +from ._models_py3 import ConnectionMonitorHttpConfiguration +from ._models_py3 import ConnectionMonitorIcmpConfiguration +from ._models_py3 import ConnectionMonitorListResult +from ._models_py3 import ConnectionMonitorOutput +from ._models_py3 import ConnectionMonitorParameters +from ._models_py3 import ConnectionMonitorQueryResult +from ._models_py3 import ConnectionMonitorResult +from ._models_py3 import ConnectionMonitorResultProperties +from ._models_py3 import ConnectionMonitorSource +from ._models_py3 import ConnectionMonitorSuccessThreshold +from ._models_py3 import ConnectionMonitorTcpConfiguration +from ._models_py3 import ConnectionMonitorTestConfiguration +from ._models_py3 import ConnectionMonitorTestGroup +from ._models_py3 import ConnectionMonitorWorkspaceSettings +from ._models_py3 import ConnectionResetSharedKey +from ._models_py3 import ConnectionSharedKey +from ._models_py3 import ConnectionStateSnapshot from ._models_py3 import ConnectivityConfiguration from ._models_py3 import ConnectivityConfigurationListResult +from ._models_py3 import ConnectivityDestination from ._models_py3 import ConnectivityGroupItem +from ._models_py3 import ConnectivityHop +from ._models_py3 import ConnectivityInformation +from ._models_py3 import ConnectivityIssue +from ._models_py3 import ConnectivityParameters +from ._models_py3 import ConnectivitySource +from ._models_py3 import Container +from ._models_py3 import ContainerNetworkInterface +from ._models_py3 import ContainerNetworkInterfaceConfiguration +from ._models_py3 import ContainerNetworkInterfaceIpConfiguration from ._models_py3 import CrossTenantScopes +from ._models_py3 import CustomDnsConfigPropertiesFormat +from ._models_py3 import CustomIpPrefix +from ._models_py3 import CustomIpPrefixListResult +from ._models_py3 import DdosCustomPolicy +from ._models_py3 import DdosProtectionPlan +from ._models_py3 import DdosProtectionPlanListResult +from ._models_py3 import DdosSettings from ._models_py3 import DefaultAdminRule -from ._models_py3 import DefaultUserRule +from ._models_py3 import Delegation +from ._models_py3 import DeviceProperties +from ._models_py3 import DhcpOptions +from ._models_py3 import Dimension +from ._models_py3 import DnsNameAvailabilityResult +from ._models_py3 import DnsSettings +from ._models_py3 import DscpConfiguration +from ._models_py3 import DscpConfigurationListResult from ._models_py3 import EffectiveBaseSecurityAdminRule from ._models_py3 import EffectiveConnectivityConfiguration from ._models_py3 import EffectiveDefaultSecurityAdminRule +from ._models_py3 import EffectiveNetworkSecurityGroup +from ._models_py3 import EffectiveNetworkSecurityGroupAssociation +from ._models_py3 import EffectiveNetworkSecurityGroupListResult +from ._models_py3 import EffectiveNetworkSecurityRule +from ._models_py3 import EffectiveRoute +from ._models_py3 import EffectiveRouteListResult +from ._models_py3 import EffectiveRoutesParameters from ._models_py3 import EffectiveSecurityAdminRule -from ._models_py3 import EffectiveVirtualNetwork -from ._models_py3 import EffectiveVirtualNetworksListResult -from ._models_py3 import EffectiveVirtualNetworksParameter +from ._models_py3 import EndpointServiceResult +from ._models_py3 import EndpointServicesListResult from ._models_py3 import Error from ._models_py3 import ErrorDetails +from ._models_py3 import ErrorResponse +from ._models_py3 import EvaluatedNetworkSecurityGroup +from ._models_py3 import ExclusionManagedRule +from ._models_py3 import ExclusionManagedRuleGroup +from ._models_py3 import ExclusionManagedRuleSet +from ._models_py3 import ExplicitProxySettings +from ._models_py3 import ExpressRouteCircuit +from ._models_py3 import ExpressRouteCircuitArpTable +from ._models_py3 import ExpressRouteCircuitAuthorization +from ._models_py3 import ExpressRouteCircuitConnection +from ._models_py3 import ExpressRouteCircuitConnectionListResult +from ._models_py3 import ExpressRouteCircuitListResult +from ._models_py3 import ExpressRouteCircuitPeering +from ._models_py3 import ExpressRouteCircuitPeeringConfig +from ._models_py3 import ExpressRouteCircuitPeeringId +from ._models_py3 import ExpressRouteCircuitPeeringListResult +from ._models_py3 import ExpressRouteCircuitReference +from ._models_py3 import ExpressRouteCircuitRoutesTable +from ._models_py3 import ExpressRouteCircuitRoutesTableSummary +from ._models_py3 import ExpressRouteCircuitServiceProviderProperties +from ._models_py3 import ExpressRouteCircuitSku +from ._models_py3 import ExpressRouteCircuitStats +from ._models_py3 import ExpressRouteCircuitsArpTableListResult +from ._models_py3 import ExpressRouteCircuitsRoutesTableListResult +from ._models_py3 import ExpressRouteCircuitsRoutesTableSummaryListResult +from ._models_py3 import ExpressRouteConnection +from ._models_py3 import ExpressRouteConnectionId +from ._models_py3 import ExpressRouteConnectionList +from ._models_py3 import ExpressRouteCrossConnection +from ._models_py3 import ExpressRouteCrossConnectionListResult +from ._models_py3 import ExpressRouteCrossConnectionPeering +from ._models_py3 import ExpressRouteCrossConnectionPeeringList +from ._models_py3 import ExpressRouteCrossConnectionRoutesTableSummary +from ._models_py3 import ExpressRouteCrossConnectionsRoutesTableSummaryListResult +from ._models_py3 import ExpressRouteGateway +from ._models_py3 import ExpressRouteGatewayList +from ._models_py3 import ExpressRouteGatewayPropertiesAutoScaleConfiguration +from ._models_py3 import ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds +from ._models_py3 import ExpressRouteLink +from ._models_py3 import ExpressRouteLinkListResult +from ._models_py3 import ExpressRouteLinkMacSecConfig +from ._models_py3 import ExpressRoutePort +from ._models_py3 import ExpressRoutePortAuthorization +from ._models_py3 import ExpressRoutePortAuthorizationListResult +from ._models_py3 import ExpressRoutePortListResult +from ._models_py3 import ExpressRoutePortsLocation +from ._models_py3 import ExpressRoutePortsLocationBandwidths +from ._models_py3 import ExpressRoutePortsLocationListResult +from ._models_py3 import ExpressRouteProviderPort +from ._models_py3 import ExpressRouteProviderPortListResult +from ._models_py3 import ExpressRouteServiceProvider +from ._models_py3 import ExpressRouteServiceProviderBandwidthsOffered +from ._models_py3 import ExpressRouteServiceProviderListResult from ._models_py3 import ExtendedLocation +from ._models_py3 import FilterItems +from ._models_py3 import FirewallPolicy +from ._models_py3 import FirewallPolicyCertificateAuthority +from ._models_py3 import FirewallPolicyFilterRuleCollection +from ._models_py3 import FirewallPolicyFilterRuleCollectionAction +from ._models_py3 import FirewallPolicyInsights +from ._models_py3 import FirewallPolicyIntrusionDetection +from ._models_py3 import FirewallPolicyIntrusionDetectionBypassTrafficSpecifications +from ._models_py3 import FirewallPolicyIntrusionDetectionConfiguration +from ._models_py3 import FirewallPolicyIntrusionDetectionSignatureSpecification +from ._models_py3 import FirewallPolicyListResult +from ._models_py3 import FirewallPolicyLogAnalyticsResources +from ._models_py3 import FirewallPolicyLogAnalyticsWorkspace +from ._models_py3 import FirewallPolicyNatRuleCollection +from ._models_py3 import FirewallPolicyNatRuleCollectionAction +from ._models_py3 import FirewallPolicyRule +from ._models_py3 import FirewallPolicyRuleApplicationProtocol +from ._models_py3 import FirewallPolicyRuleCollection +from ._models_py3 import FirewallPolicyRuleCollectionGroup +from ._models_py3 import FirewallPolicyRuleCollectionGroupListResult +from ._models_py3 import FirewallPolicySNAT +from ._models_py3 import FirewallPolicySQL +from ._models_py3 import FirewallPolicySku +from ._models_py3 import FirewallPolicyThreatIntelWhitelist +from ._models_py3 import FirewallPolicyTransportSecurity +from ._models_py3 import FlowLog +from ._models_py3 import FlowLogFormatParameters +from ._models_py3 import FlowLogInformation +from ._models_py3 import FlowLogListResult +from ._models_py3 import FlowLogStatusParameters +from ._models_py3 import FrontendIPConfiguration +from ._models_py3 import GatewayCustomBgpIpAddressIpConfiguration +from ._models_py3 import GatewayLoadBalancerTunnelInterface +from ._models_py3 import GatewayRoute +from ._models_py3 import GatewayRouteListResult +from ._models_py3 import GenerateExpressRoutePortsLOARequest +from ._models_py3 import GenerateExpressRoutePortsLOAResult +from ._models_py3 import GetVpnSitesConfigurationRequest +from ._models_py3 import HTTPConfiguration +from ._models_py3 import HTTPHeader +from ._models_py3 import HopLink from ._models_py3 import Hub +from ._models_py3 import HubIPAddresses +from ._models_py3 import HubIpConfiguration +from ._models_py3 import HubPublicIPAddresses +from ._models_py3 import HubRoute +from ._models_py3 import HubRouteTable +from ._models_py3 import HubVirtualNetworkConnection +from ._models_py3 import IDPSQueryObject +from ._models_py3 import IPAddressAvailabilityResult +from ._models_py3 import IPConfiguration +from ._models_py3 import IPConfigurationBgpPeeringAddress +from ._models_py3 import IPConfigurationProfile +from ._models_py3 import IPPrefixesList +from ._models_py3 import InboundNatPool +from ._models_py3 import InboundNatRule +from ._models_py3 import InboundNatRuleListResult +from ._models_py3 import InboundNatRulePortMapping +from ._models_py3 import InboundSecurityRule +from ._models_py3 import InboundSecurityRules +from ._models_py3 import IpAllocation +from ._models_py3 import IpAllocationListResult +from ._models_py3 import IpGroup +from ._models_py3 import IpGroupListResult +from ._models_py3 import IpTag +from ._models_py3 import IpsecPolicy +from ._models_py3 import Ipv6CircuitConnectionConfig +from ._models_py3 import Ipv6ExpressRouteCircuitPeeringConfig +from ._models_py3 import ListHubRouteTablesResult +from ._models_py3 import ListHubVirtualNetworkConnectionsResult +from ._models_py3 import ListP2SVpnGatewaysResult +from ._models_py3 import ListRoutingIntentResult +from ._models_py3 import ListVirtualHubBgpConnectionResults +from ._models_py3 import ListVirtualHubIpConfigurationResults +from ._models_py3 import ListVirtualHubRouteTableV2SResult +from ._models_py3 import ListVirtualHubsResult +from ._models_py3 import ListVirtualNetworkGatewayNatRulesResult +from ._models_py3 import ListVirtualWANsResult +from ._models_py3 import ListVpnConnectionsResult +from ._models_py3 import ListVpnGatewayNatRulesResult +from ._models_py3 import ListVpnGatewaysResult +from ._models_py3 import ListVpnServerConfigurationPolicyGroupsResult +from ._models_py3 import ListVpnServerConfigurationsResult +from ._models_py3 import ListVpnSiteLinkConnectionsResult +from ._models_py3 import ListVpnSiteLinksResult +from ._models_py3 import ListVpnSitesResult +from ._models_py3 import LoadBalancer +from ._models_py3 import LoadBalancerBackendAddress +from ._models_py3 import LoadBalancerBackendAddressPoolListResult +from ._models_py3 import LoadBalancerFrontendIPConfigurationListResult +from ._models_py3 import LoadBalancerListResult +from ._models_py3 import LoadBalancerLoadBalancingRuleListResult +from ._models_py3 import LoadBalancerOutboundRuleListResult +from ._models_py3 import LoadBalancerProbeListResult +from ._models_py3 import LoadBalancerSku +from ._models_py3 import LoadBalancerVipSwapRequest +from ._models_py3 import LoadBalancerVipSwapRequestFrontendIPConfiguration +from ._models_py3 import LoadBalancingRule +from ._models_py3 import LocalNetworkGateway +from ._models_py3 import LocalNetworkGatewayListResult +from ._models_py3 import LogSpecification +from ._models_py3 import ManagedRuleGroupOverride +from ._models_py3 import ManagedRuleOverride +from ._models_py3 import ManagedRuleSet +from ._models_py3 import ManagedRulesDefinition from ._models_py3 import ManagedServiceIdentity +from ._models_py3 import MatchCondition +from ._models_py3 import MatchVariable +from ._models_py3 import MatchedRule +from ._models_py3 import MetricSpecification +from ._models_py3 import NatGateway +from ._models_py3 import NatGatewayListResult +from ._models_py3 import NatGatewaySku +from ._models_py3 import NatRule +from ._models_py3 import NatRulePortMapping +from ._models_py3 import NetworkConfigurationDiagnosticParameters +from ._models_py3 import NetworkConfigurationDiagnosticProfile +from ._models_py3 import NetworkConfigurationDiagnosticResponse +from ._models_py3 import NetworkConfigurationDiagnosticResult from ._models_py3 import NetworkGroup from ._models_py3 import NetworkGroupListResult +from ._models_py3 import NetworkIntentPolicy +from ._models_py3 import NetworkIntentPolicyConfiguration +from ._models_py3 import NetworkInterface +from ._models_py3 import NetworkInterfaceAssociation +from ._models_py3 import NetworkInterfaceDnsSettings +from ._models_py3 import NetworkInterfaceIPConfiguration +from ._models_py3 import NetworkInterfaceIPConfigurationListResult +from ._models_py3 import NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties +from ._models_py3 import NetworkInterfaceListResult +from ._models_py3 import NetworkInterfaceLoadBalancerListResult +from ._models_py3 import NetworkInterfaceTapConfiguration +from ._models_py3 import NetworkInterfaceTapConfigurationListResult from ._models_py3 import NetworkManager from ._models_py3 import NetworkManagerCommit from ._models_py3 import NetworkManagerConnection @@ -60,101 +417,847 @@ from ._models_py3 import NetworkManagerListResult from ._models_py3 import NetworkManagerPropertiesNetworkManagerScopes from ._models_py3 import NetworkManagerSecurityGroupItem +from ._models_py3 import NetworkProfile +from ._models_py3 import NetworkProfileListResult +from ._models_py3 import NetworkRule +from ._models_py3 import NetworkSecurityGroup +from ._models_py3 import NetworkSecurityGroupListResult +from ._models_py3 import NetworkSecurityGroupResult +from ._models_py3 import NetworkSecurityRulesEvaluationResult +from ._models_py3 import NetworkVirtualAppliance +from ._models_py3 import NetworkVirtualApplianceListResult +from ._models_py3 import NetworkVirtualApplianceSiteListResult +from ._models_py3 import NetworkVirtualApplianceSku +from ._models_py3 import NetworkVirtualApplianceSkuInstances +from ._models_py3 import NetworkVirtualApplianceSkuListResult +from ._models_py3 import NetworkWatcher +from ._models_py3 import NetworkWatcherListResult +from ._models_py3 import NextHopParameters +from ._models_py3 import NextHopResult +from ._models_py3 import O365BreakOutCategoryPolicies +from ._models_py3 import O365PolicyProperties +from ._models_py3 import Office365PolicyProperties +from ._models_py3 import Operation +from ._models_py3 import OperationDisplay +from ._models_py3 import OperationListResult +from ._models_py3 import OperationPropertiesFormatServiceSpecification +from ._models_py3 import OrderBy +from ._models_py3 import OutboundRule +from ._models_py3 import OwaspCrsExclusionEntry +from ._models_py3 import P2SConnectionConfiguration +from ._models_py3 import P2SVpnConnectionHealth +from ._models_py3 import P2SVpnConnectionHealthRequest +from ._models_py3 import P2SVpnConnectionRequest +from ._models_py3 import P2SVpnGateway +from ._models_py3 import P2SVpnProfileParameters +from ._models_py3 import PacketCapture +from ._models_py3 import PacketCaptureFilter +from ._models_py3 import PacketCaptureListResult +from ._models_py3 import PacketCaptureMachineScope +from ._models_py3 import PacketCaptureParameters +from ._models_py3 import PacketCaptureQueryStatusResult +from ._models_py3 import PacketCaptureResult +from ._models_py3 import PacketCaptureResultProperties +from ._models_py3 import PacketCaptureStorageLocation from ._models_py3 import PatchObject -from ._models_py3 import ProxyResource +from ._models_py3 import PatchRouteFilter +from ._models_py3 import PatchRouteFilterRule +from ._models_py3 import PeerExpressRouteCircuitConnection +from ._models_py3 import PeerExpressRouteCircuitConnectionListResult +from ._models_py3 import PeerRoute +from ._models_py3 import PeerRouteList +from ._models_py3 import PolicySettings +from ._models_py3 import PrepareNetworkPoliciesRequest +from ._models_py3 import PrivateDnsZoneConfig +from ._models_py3 import PrivateDnsZoneGroup +from ._models_py3 import PrivateDnsZoneGroupListResult +from ._models_py3 import PrivateEndpoint +from ._models_py3 import PrivateEndpointConnection +from ._models_py3 import PrivateEndpointConnectionListResult +from ._models_py3 import PrivateEndpointIPConfiguration +from ._models_py3 import PrivateEndpointListResult +from ._models_py3 import PrivateLinkService +from ._models_py3 import PrivateLinkServiceConnection +from ._models_py3 import PrivateLinkServiceConnectionState +from ._models_py3 import PrivateLinkServiceIpConfiguration +from ._models_py3 import PrivateLinkServiceListResult +from ._models_py3 import PrivateLinkServicePropertiesAutoApproval +from ._models_py3 import PrivateLinkServicePropertiesVisibility +from ._models_py3 import PrivateLinkServiceVisibility +from ._models_py3 import Probe +from ._models_py3 import PropagatedRouteTable +from ._models_py3 import ProtocolConfiguration +from ._models_py3 import ProtocolCustomSettingsFormat +from ._models_py3 import PublicIPAddress +from ._models_py3 import PublicIPAddressDnsSettings +from ._models_py3 import PublicIPAddressListResult +from ._models_py3 import PublicIPAddressSku +from ._models_py3 import PublicIPPrefix +from ._models_py3 import PublicIPPrefixListResult +from ._models_py3 import PublicIPPrefixSku +from ._models_py3 import QosDefinition +from ._models_py3 import QosIpRange +from ._models_py3 import QosPortRange +from ._models_py3 import QueryInboundNatRulePortMappingRequest from ._models_py3 import QueryRequestOptions +from ._models_py3 import QueryResults +from ._models_py3 import QueryTroubleshootingParameters +from ._models_py3 import RadiusServer +from ._models_py3 import RecordSet +from ._models_py3 import ReferencedPublicIpAddress from ._models_py3 import Resource +from ._models_py3 import ResourceNavigationLink +from ._models_py3 import ResourceNavigationLinksListResult +from ._models_py3 import ResourceSet +from ._models_py3 import RetentionPolicyParameters +from ._models_py3 import Route +from ._models_py3 import RouteFilter +from ._models_py3 import RouteFilterListResult +from ._models_py3 import RouteFilterRule +from ._models_py3 import RouteFilterRuleListResult +from ._models_py3 import RouteListResult +from ._models_py3 import RouteTable +from ._models_py3 import RouteTableListResult +from ._models_py3 import RoutingConfiguration +from ._models_py3 import RoutingIntent +from ._models_py3 import RoutingPolicy from ._models_py3 import ScopeConnection from ._models_py3 import ScopeConnectionListResult from ._models_py3 import SecurityAdminConfiguration from ._models_py3 import SecurityAdminConfigurationListResult -from ._models_py3 import SecurityUserConfiguration -from ._models_py3 import SecurityUserConfigurationListResult +from ._models_py3 import SecurityGroupNetworkInterface +from ._models_py3 import SecurityGroupViewParameters +from ._models_py3 import SecurityGroupViewResult +from ._models_py3 import SecurityPartnerProvider +from ._models_py3 import SecurityPartnerProviderListResult +from ._models_py3 import SecurityRule +from ._models_py3 import SecurityRuleAssociations +from ._models_py3 import SecurityRuleListResult +from ._models_py3 import ServiceAssociationLink +from ._models_py3 import ServiceAssociationLinksListResult +from ._models_py3 import ServiceEndpointPolicy +from ._models_py3 import ServiceEndpointPolicyDefinition +from ._models_py3 import ServiceEndpointPolicyDefinitionListResult +from ._models_py3 import ServiceEndpointPolicyListResult +from ._models_py3 import ServiceEndpointPropertiesFormat +from ._models_py3 import ServiceTagInformation +from ._models_py3 import ServiceTagInformationListResult +from ._models_py3 import ServiceTagInformationPropertiesFormat +from ._models_py3 import ServiceTagsListResult +from ._models_py3 import SessionIds +from ._models_py3 import SignatureOverridesFilterValuesQuery +from ._models_py3 import SignatureOverridesFilterValuesResponse +from ._models_py3 import SignaturesOverrides +from ._models_py3 import SignaturesOverridesList +from ._models_py3 import SignaturesOverridesProperties +from ._models_py3 import SingleQueryResult +from ._models_py3 import Sku from ._models_py3 import StaticMember from ._models_py3 import StaticMemberListResult +from ._models_py3 import StaticRoute from ._models_py3 import SubResource +from ._models_py3 import Subnet +from ._models_py3 import SubnetAssociation +from ._models_py3 import SubnetListResult from ._models_py3 import SystemData from ._models_py3 import TagsObject -from ._models_py3 import UserRule -from ._models_py3 import UserRuleCollection -from ._models_py3 import UserRuleCollectionListResult -from ._models_py3 import UserRuleListResult +from ._models_py3 import Topology +from ._models_py3 import TopologyAssociation +from ._models_py3 import TopologyParameters +from ._models_py3 import TopologyResource +from ._models_py3 import TrafficAnalyticsConfigurationProperties +from ._models_py3 import TrafficAnalyticsProperties +from ._models_py3 import TrafficSelectorPolicy +from ._models_py3 import TroubleshootingDetails +from ._models_py3 import TroubleshootingParameters +from ._models_py3 import TroubleshootingRecommendedActions +from ._models_py3 import TroubleshootingResult +from ._models_py3 import TunnelConnectionHealth +from ._models_py3 import UnprepareNetworkPoliciesRequest +from ._models_py3 import Usage +from ._models_py3 import UsageName +from ._models_py3 import UsagesListResult +from ._models_py3 import VM +from ._models_py3 import VerificationIPFlowParameters +from ._models_py3 import VerificationIPFlowResult +from ._models_py3 import VirtualApplianceNicProperties +from ._models_py3 import VirtualApplianceSite +from ._models_py3 import VirtualApplianceSkuProperties +from ._models_py3 import VirtualHub +from ._models_py3 import VirtualHubEffectiveRoute +from ._models_py3 import VirtualHubEffectiveRouteList +from ._models_py3 import VirtualHubId +from ._models_py3 import VirtualHubRoute +from ._models_py3 import VirtualHubRouteTable +from ._models_py3 import VirtualHubRouteTableV2 +from ._models_py3 import VirtualHubRouteV2 +from ._models_py3 import VirtualNetwork +from ._models_py3 import VirtualNetworkBgpCommunities +from ._models_py3 import VirtualNetworkConnectionGatewayReference +from ._models_py3 import VirtualNetworkEncryption +from ._models_py3 import VirtualNetworkGateway +from ._models_py3 import VirtualNetworkGatewayConnection +from ._models_py3 import VirtualNetworkGatewayConnectionListEntity +from ._models_py3 import VirtualNetworkGatewayConnectionListResult +from ._models_py3 import VirtualNetworkGatewayIPConfiguration +from ._models_py3 import VirtualNetworkGatewayListConnectionsResult +from ._models_py3 import VirtualNetworkGatewayListResult +from ._models_py3 import VirtualNetworkGatewayNatRule +from ._models_py3 import VirtualNetworkGatewaySku +from ._models_py3 import VirtualNetworkListResult +from ._models_py3 import VirtualNetworkListUsageResult +from ._models_py3 import VirtualNetworkPeering +from ._models_py3 import VirtualNetworkPeeringListResult +from ._models_py3 import VirtualNetworkTap +from ._models_py3 import VirtualNetworkTapListResult +from ._models_py3 import VirtualNetworkUsage +from ._models_py3 import VirtualNetworkUsageName +from ._models_py3 import VirtualRouter +from ._models_py3 import VirtualRouterAutoScaleConfiguration +from ._models_py3 import VirtualRouterListResult +from ._models_py3 import VirtualRouterPeering +from ._models_py3 import VirtualRouterPeeringListResult +from ._models_py3 import VirtualWAN +from ._models_py3 import VirtualWanSecurityProvider +from ._models_py3 import VirtualWanSecurityProviders +from ._models_py3 import VirtualWanVpnProfileParameters +from ._models_py3 import VnetRoute +from ._models_py3 import VpnClientConfiguration +from ._models_py3 import VpnClientConnectionHealth +from ._models_py3 import VpnClientConnectionHealthDetail +from ._models_py3 import VpnClientConnectionHealthDetailListResult +from ._models_py3 import VpnClientIPsecParameters +from ._models_py3 import VpnClientParameters +from ._models_py3 import VpnClientRevokedCertificate +from ._models_py3 import VpnClientRootCertificate +from ._models_py3 import VpnConnection +from ._models_py3 import VpnConnectionPacketCaptureStartParameters +from ._models_py3 import VpnConnectionPacketCaptureStopParameters +from ._models_py3 import VpnDeviceScriptParameters +from ._models_py3 import VpnGateway +from ._models_py3 import VpnGatewayIpConfiguration +from ._models_py3 import VpnGatewayNatRule +from ._models_py3 import VpnGatewayPacketCaptureStartParameters +from ._models_py3 import VpnGatewayPacketCaptureStopParameters +from ._models_py3 import VpnLinkBgpSettings +from ._models_py3 import VpnLinkProviderProperties +from ._models_py3 import VpnNatRuleMapping +from ._models_py3 import VpnPacketCaptureStartParameters +from ._models_py3 import VpnPacketCaptureStopParameters +from ._models_py3 import VpnProfileResponse +from ._models_py3 import VpnServerConfigRadiusClientRootCertificate +from ._models_py3 import VpnServerConfigRadiusServerRootCertificate +from ._models_py3 import VpnServerConfigVpnClientRevokedCertificate +from ._models_py3 import VpnServerConfigVpnClientRootCertificate +from ._models_py3 import VpnServerConfiguration +from ._models_py3 import VpnServerConfigurationPolicyGroup +from ._models_py3 import VpnServerConfigurationPolicyGroupMember +from ._models_py3 import VpnServerConfigurationsResponse +from ._models_py3 import VpnSite +from ._models_py3 import VpnSiteId +from ._models_py3 import VpnSiteLink +from ._models_py3 import VpnSiteLinkConnection +from ._models_py3 import WebApplicationFirewallCustomRule +from ._models_py3 import WebApplicationFirewallPolicy +from ._models_py3 import WebApplicationFirewallPolicyListResult from ._network_management_client_enums import ( Access, AddressPrefixType, AdminRuleKind, + ApplicationGatewayBackendHealthServerHealth, + ApplicationGatewayCookieBasedAffinity, + ApplicationGatewayCustomErrorStatusCode, + ApplicationGatewayFirewallMode, + ApplicationGatewayLoadDistributionAlgorithm, + ApplicationGatewayOperationalState, + ApplicationGatewayProtocol, + ApplicationGatewayRedirectType, + ApplicationGatewayRequestRoutingRuleType, + ApplicationGatewaySkuName, + ApplicationGatewaySslCipherSuite, + ApplicationGatewaySslPolicyName, + ApplicationGatewaySslPolicyType, + ApplicationGatewaySslProtocol, + ApplicationGatewayTier, + AssociationType, AuthenticationMethod, + AuthorizationUseStatus, + AutoLearnPrivateRangesMode, + AzureFirewallApplicationRuleProtocolType, + AzureFirewallNatRCActionType, + AzureFirewallNetworkRuleProtocol, + AzureFirewallRCActionType, + AzureFirewallSkuName, + AzureFirewallSkuTier, + AzureFirewallThreatIntelMode, + BastionConnectProtocol, + BastionHostSkuName, + BgpPeerState, + CircuitConnectionStatus, + CommissionedState, ConfigurationType, + ConnectionMonitorEndpointFilterItemType, + ConnectionMonitorEndpointFilterType, + ConnectionMonitorSourceStatus, + ConnectionMonitorTestConfigurationProtocol, + ConnectionMonitorType, + ConnectionState, + ConnectionStatus, ConnectivityTopology, + CoverageLevel, CreatedByType, - DeleteExistingNSGs, + DdosCustomPolicyProtocol, + DdosCustomPolicyTriggerSensitivityOverride, + DdosSettingsProtectionCoverage, DeleteExistingPeering, + DeleteOptions, DeploymentStatus, + DestinationPortBehavior, + DhGroup, + Direction, EffectiveAdminRuleKind, - EffectiveUserRuleKind, + EffectiveRouteSource, + EffectiveRouteState, + EffectiveSecurityRuleProtocol, + EndpointType, + EvaluationState, + ExpressRouteCircuitPeeringAdvertisedPublicPrefixState, + ExpressRouteCircuitPeeringState, + ExpressRouteCircuitSkuFamily, + ExpressRouteCircuitSkuTier, + ExpressRouteLinkAdminState, + ExpressRouteLinkConnectorType, + ExpressRouteLinkMacSecCipher, + ExpressRouteLinkMacSecSciState, + ExpressRoutePeeringState, + ExpressRoutePeeringType, + ExpressRoutePortAuthorizationUseStatus, + ExpressRoutePortsEncapsulation, ExtendedLocationTypes, + FirewallPolicyFilterRuleCollectionActionType, + FirewallPolicyIDPSQuerySortOrder, + FirewallPolicyIDPSSignatureDirection, + FirewallPolicyIDPSSignatureMode, + FirewallPolicyIDPSSignatureSeverity, + FirewallPolicyIntrusionDetectionProtocol, + FirewallPolicyIntrusionDetectionStateType, + FirewallPolicyNatRuleCollectionActionType, + FirewallPolicyRuleApplicationProtocolType, + FirewallPolicyRuleCollectionType, + FirewallPolicyRuleNetworkProtocol, + FirewallPolicyRuleType, + FirewallPolicySkuTier, + FlowLogFormatType, + GatewayLoadBalancerTunnelInterfaceType, + GatewayLoadBalancerTunnelProtocol, GroupConnectivity, + HTTPConfigurationMethod, + HTTPMethod, + HubBgpConnectionStatus, + HubRoutingPreference, + HubVirtualNetworkConnectionStatus, IPAllocationMethod, IPVersion, + IkeEncryption, + IkeIntegrity, + InboundSecurityRulesProtocol, + IpAllocationType, + IpFlowProtocol, + IpsecEncryption, + IpsecIntegrity, IsGlobal, - MembershipType, + IssueType, + LoadBalancerBackendAddressAdminState, + LoadBalancerOutboundRuleProtocol, + LoadBalancerSkuName, + LoadBalancerSkuTier, + LoadDistribution, + ManagedRuleEnabledState, + NatGatewaySkuName, NetworkIntentPolicyBasedService, + NetworkInterfaceAuxiliaryMode, + NetworkInterfaceMigrationPhase, + NetworkInterfaceNicType, NetworkOperationStatus, + NextHopType, + OfficeTrafficCategory, + Origin, + OutputType, + OwaspCrsExclusionEntryMatchVariable, + OwaspCrsExclusionEntrySelectorMatchOperator, + PacketCaptureTargetType, + PcError, + PcProtocol, + PcStatus, + PfsGroup, + PreferredIPVersion, + PreferredRoutingGateway, + ProbeProtocol, + ProcessorArchitecture, + Protocol, + ProtocolType, ProvisioningState, + PublicIPAddressMigrationPhase, + PublicIPAddressSkuName, + PublicIPAddressSkuTier, + PublicIPPrefixSkuName, + PublicIPPrefixSkuTier, ResourceIdentityType, + RouteFilterRuleType, + RouteNextHopType, + RoutingState, ScopeConnectionState, SecurityConfigurationRuleAccess, SecurityConfigurationRuleDirection, SecurityConfigurationRuleProtocol, + SecurityPartnerProviderConnectionStatus, + SecurityProviderName, + SecurityRuleAccess, + SecurityRuleDirection, + SecurityRuleProtocol, + ServiceProviderProvisioningState, + Severity, + SyncRemoteAddressSpace, + TransportProtocol, + TunnelConnectionStatus, + UsageUnit, UseHubGateway, - UserRuleKind, + VerbosityLevel, + VirtualNetworkEncryptionEnforcement, + VirtualNetworkGatewayConnectionMode, + VirtualNetworkGatewayConnectionProtocol, + VirtualNetworkGatewayConnectionStatus, + VirtualNetworkGatewayConnectionType, + VirtualNetworkGatewaySkuName, + VirtualNetworkGatewaySkuTier, + VirtualNetworkGatewayType, + VirtualNetworkPeeringLevel, + VirtualNetworkPeeringState, + VirtualNetworkPrivateEndpointNetworkPolicies, + VirtualNetworkPrivateLinkServiceNetworkPolicies, + VirtualWanSecurityProviderType, + VpnAuthenticationType, + VpnClientProtocol, + VpnConnectionStatus, + VpnGatewayGeneration, + VpnGatewayTunnelingProtocol, + VpnLinkConnectionMode, + VpnNatRuleMode, + VpnNatRuleType, + VpnPolicyMemberAttributeType, + VpnType, + WebApplicationFirewallAction, + WebApplicationFirewallEnabledState, + WebApplicationFirewallMatchVariable, + WebApplicationFirewallMode, + WebApplicationFirewallOperator, + WebApplicationFirewallPolicyResourceState, + WebApplicationFirewallRuleType, + WebApplicationFirewallTransform, ) __all__ = [ + 'AadAuthenticationParameters', 'ActiveBaseSecurityAdminRule', - 'ActiveBaseSecurityUserRule', 'ActiveConfigurationParameter', 'ActiveConnectivityConfiguration', 'ActiveConnectivityConfigurationsListResult', 'ActiveDefaultSecurityAdminRule', - 'ActiveDefaultSecurityUserRule', 'ActiveSecurityAdminRule', 'ActiveSecurityAdminRulesListResult', - 'ActiveSecurityUserRule', - 'ActiveSecurityUserRulesListResult', 'AddressPrefixItem', + 'AddressSpace', 'AdminRule', 'AdminRuleCollection', 'AdminRuleCollectionListResult', 'AdminRuleListResult', + 'ApplicationGateway', + 'ApplicationGatewayAuthenticationCertificate', + 'ApplicationGatewayAutoscaleConfiguration', + 'ApplicationGatewayAvailableSslOptions', + 'ApplicationGatewayAvailableSslPredefinedPolicies', + 'ApplicationGatewayAvailableWafRuleSetsResult', + 'ApplicationGatewayBackendAddress', + 'ApplicationGatewayBackendAddressPool', + 'ApplicationGatewayBackendHealth', + 'ApplicationGatewayBackendHealthHttpSettings', + 'ApplicationGatewayBackendHealthOnDemand', + 'ApplicationGatewayBackendHealthPool', + 'ApplicationGatewayBackendHealthServer', + 'ApplicationGatewayBackendHttpSettings', + 'ApplicationGatewayBackendSettings', + 'ApplicationGatewayClientAuthConfiguration', + 'ApplicationGatewayConnectionDraining', + 'ApplicationGatewayCustomError', + 'ApplicationGatewayFirewallDisabledRuleGroup', + 'ApplicationGatewayFirewallExclusion', + 'ApplicationGatewayFirewallRule', + 'ApplicationGatewayFirewallRuleGroup', + 'ApplicationGatewayFirewallRuleSet', + 'ApplicationGatewayFrontendIPConfiguration', + 'ApplicationGatewayFrontendPort', + 'ApplicationGatewayGlobalConfiguration', + 'ApplicationGatewayHeaderConfiguration', + 'ApplicationGatewayHttpListener', + 'ApplicationGatewayIPConfiguration', + 'ApplicationGatewayListResult', + 'ApplicationGatewayListener', + 'ApplicationGatewayLoadDistributionPolicy', + 'ApplicationGatewayLoadDistributionTarget', + 'ApplicationGatewayOnDemandProbe', + 'ApplicationGatewayPathRule', + 'ApplicationGatewayPrivateEndpointConnection', + 'ApplicationGatewayPrivateEndpointConnectionListResult', + 'ApplicationGatewayPrivateLinkConfiguration', + 'ApplicationGatewayPrivateLinkIpConfiguration', + 'ApplicationGatewayPrivateLinkResource', + 'ApplicationGatewayPrivateLinkResourceListResult', + 'ApplicationGatewayProbe', + 'ApplicationGatewayProbeHealthResponseMatch', + 'ApplicationGatewayRedirectConfiguration', + 'ApplicationGatewayRequestRoutingRule', + 'ApplicationGatewayRewriteRule', + 'ApplicationGatewayRewriteRuleActionSet', + 'ApplicationGatewayRewriteRuleCondition', + 'ApplicationGatewayRewriteRuleSet', + 'ApplicationGatewayRoutingRule', + 'ApplicationGatewaySku', + 'ApplicationGatewaySslCertificate', + 'ApplicationGatewaySslPolicy', + 'ApplicationGatewaySslPredefinedPolicy', + 'ApplicationGatewaySslProfile', + 'ApplicationGatewayTrustedClientCertificate', + 'ApplicationGatewayTrustedRootCertificate', + 'ApplicationGatewayUrlConfiguration', + 'ApplicationGatewayUrlPathMap', + 'ApplicationGatewayWebApplicationFirewallConfiguration', + 'ApplicationRule', + 'ApplicationSecurityGroup', + 'ApplicationSecurityGroupListResult', + 'AuthorizationListResult', + 'AutoApprovedPrivateLinkService', + 'AutoApprovedPrivateLinkServicesResult', + 'Availability', + 'AvailableDelegation', + 'AvailableDelegationsResult', + 'AvailablePrivateEndpointType', + 'AvailablePrivateEndpointTypesResult', + 'AvailableProvidersList', + 'AvailableProvidersListCity', + 'AvailableProvidersListCountry', + 'AvailableProvidersListParameters', + 'AvailableProvidersListState', + 'AvailableServiceAlias', + 'AvailableServiceAliasesResult', 'AzureAsyncOperationResult', + 'AzureFirewall', + 'AzureFirewallApplicationRule', + 'AzureFirewallApplicationRuleCollection', + 'AzureFirewallApplicationRuleProtocol', + 'AzureFirewallFqdnTag', + 'AzureFirewallFqdnTagListResult', + 'AzureFirewallIPConfiguration', + 'AzureFirewallIpGroups', + 'AzureFirewallListResult', + 'AzureFirewallNatRCAction', + 'AzureFirewallNatRule', + 'AzureFirewallNatRuleCollection', + 'AzureFirewallNetworkRule', + 'AzureFirewallNetworkRuleCollection', + 'AzureFirewallPublicIPAddress', + 'AzureFirewallRCAction', + 'AzureFirewallSku', + 'AzureReachabilityReport', + 'AzureReachabilityReportItem', + 'AzureReachabilityReportLatencyInfo', + 'AzureReachabilityReportLocation', + 'AzureReachabilityReportParameters', + 'AzureWebCategory', + 'AzureWebCategoryListResult', + 'BGPCommunity', + 'BackendAddressInboundNatRulePortMappings', + 'BackendAddressPool', 'BaseAdminRule', - 'BaseUserRule', + 'BastionActiveSession', + 'BastionActiveSessionListResult', + 'BastionHost', + 'BastionHostIPConfiguration', + 'BastionHostListResult', + 'BastionSessionDeleteResult', + 'BastionSessionState', + 'BastionShareableLink', + 'BastionShareableLinkListRequest', + 'BastionShareableLinkListResult', + 'BgpConnection', + 'BgpPeerStatus', + 'BgpPeerStatusListResult', + 'BgpServiceCommunity', + 'BgpServiceCommunityListResult', + 'BgpSettings', + 'BreakOutCategoryPolicies', + 'CheckPrivateLinkServiceVisibilityRequest', + 'ChildResource', 'CloudErrorBody', 'Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties', 'ConfigurationGroup', + 'ConnectionMonitor', + 'ConnectionMonitorDestination', + 'ConnectionMonitorEndpoint', + 'ConnectionMonitorEndpointFilter', + 'ConnectionMonitorEndpointFilterItem', + 'ConnectionMonitorEndpointScope', + 'ConnectionMonitorEndpointScopeItem', + 'ConnectionMonitorHttpConfiguration', + 'ConnectionMonitorIcmpConfiguration', + 'ConnectionMonitorListResult', + 'ConnectionMonitorOutput', + 'ConnectionMonitorParameters', + 'ConnectionMonitorQueryResult', + 'ConnectionMonitorResult', + 'ConnectionMonitorResultProperties', + 'ConnectionMonitorSource', + 'ConnectionMonitorSuccessThreshold', + 'ConnectionMonitorTcpConfiguration', + 'ConnectionMonitorTestConfiguration', + 'ConnectionMonitorTestGroup', + 'ConnectionMonitorWorkspaceSettings', + 'ConnectionResetSharedKey', + 'ConnectionSharedKey', + 'ConnectionStateSnapshot', 'ConnectivityConfiguration', 'ConnectivityConfigurationListResult', + 'ConnectivityDestination', 'ConnectivityGroupItem', + 'ConnectivityHop', + 'ConnectivityInformation', + 'ConnectivityIssue', + 'ConnectivityParameters', + 'ConnectivitySource', + 'Container', + 'ContainerNetworkInterface', + 'ContainerNetworkInterfaceConfiguration', + 'ContainerNetworkInterfaceIpConfiguration', 'CrossTenantScopes', + 'CustomDnsConfigPropertiesFormat', + 'CustomIpPrefix', + 'CustomIpPrefixListResult', + 'DdosCustomPolicy', + 'DdosProtectionPlan', + 'DdosProtectionPlanListResult', + 'DdosSettings', 'DefaultAdminRule', - 'DefaultUserRule', + 'Delegation', + 'DeviceProperties', + 'DhcpOptions', + 'Dimension', + 'DnsNameAvailabilityResult', + 'DnsSettings', + 'DscpConfiguration', + 'DscpConfigurationListResult', 'EffectiveBaseSecurityAdminRule', 'EffectiveConnectivityConfiguration', 'EffectiveDefaultSecurityAdminRule', + 'EffectiveNetworkSecurityGroup', + 'EffectiveNetworkSecurityGroupAssociation', + 'EffectiveNetworkSecurityGroupListResult', + 'EffectiveNetworkSecurityRule', + 'EffectiveRoute', + 'EffectiveRouteListResult', + 'EffectiveRoutesParameters', 'EffectiveSecurityAdminRule', - 'EffectiveVirtualNetwork', - 'EffectiveVirtualNetworksListResult', - 'EffectiveVirtualNetworksParameter', + 'EndpointServiceResult', + 'EndpointServicesListResult', 'Error', 'ErrorDetails', + 'ErrorResponse', + 'EvaluatedNetworkSecurityGroup', + 'ExclusionManagedRule', + 'ExclusionManagedRuleGroup', + 'ExclusionManagedRuleSet', + 'ExplicitProxySettings', + 'ExpressRouteCircuit', + 'ExpressRouteCircuitArpTable', + 'ExpressRouteCircuitAuthorization', + 'ExpressRouteCircuitConnection', + 'ExpressRouteCircuitConnectionListResult', + 'ExpressRouteCircuitListResult', + 'ExpressRouteCircuitPeering', + 'ExpressRouteCircuitPeeringConfig', + 'ExpressRouteCircuitPeeringId', + 'ExpressRouteCircuitPeeringListResult', + 'ExpressRouteCircuitReference', + 'ExpressRouteCircuitRoutesTable', + 'ExpressRouteCircuitRoutesTableSummary', + 'ExpressRouteCircuitServiceProviderProperties', + 'ExpressRouteCircuitSku', + 'ExpressRouteCircuitStats', + 'ExpressRouteCircuitsArpTableListResult', + 'ExpressRouteCircuitsRoutesTableListResult', + 'ExpressRouteCircuitsRoutesTableSummaryListResult', + 'ExpressRouteConnection', + 'ExpressRouteConnectionId', + 'ExpressRouteConnectionList', + 'ExpressRouteCrossConnection', + 'ExpressRouteCrossConnectionListResult', + 'ExpressRouteCrossConnectionPeering', + 'ExpressRouteCrossConnectionPeeringList', + 'ExpressRouteCrossConnectionRoutesTableSummary', + 'ExpressRouteCrossConnectionsRoutesTableSummaryListResult', + 'ExpressRouteGateway', + 'ExpressRouteGatewayList', + 'ExpressRouteGatewayPropertiesAutoScaleConfiguration', + 'ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds', + 'ExpressRouteLink', + 'ExpressRouteLinkListResult', + 'ExpressRouteLinkMacSecConfig', + 'ExpressRoutePort', + 'ExpressRoutePortAuthorization', + 'ExpressRoutePortAuthorizationListResult', + 'ExpressRoutePortListResult', + 'ExpressRoutePortsLocation', + 'ExpressRoutePortsLocationBandwidths', + 'ExpressRoutePortsLocationListResult', + 'ExpressRouteProviderPort', + 'ExpressRouteProviderPortListResult', + 'ExpressRouteServiceProvider', + 'ExpressRouteServiceProviderBandwidthsOffered', + 'ExpressRouteServiceProviderListResult', 'ExtendedLocation', + 'FilterItems', + 'FirewallPolicy', + 'FirewallPolicyCertificateAuthority', + 'FirewallPolicyFilterRuleCollection', + 'FirewallPolicyFilterRuleCollectionAction', + 'FirewallPolicyInsights', + 'FirewallPolicyIntrusionDetection', + 'FirewallPolicyIntrusionDetectionBypassTrafficSpecifications', + 'FirewallPolicyIntrusionDetectionConfiguration', + 'FirewallPolicyIntrusionDetectionSignatureSpecification', + 'FirewallPolicyListResult', + 'FirewallPolicyLogAnalyticsResources', + 'FirewallPolicyLogAnalyticsWorkspace', + 'FirewallPolicyNatRuleCollection', + 'FirewallPolicyNatRuleCollectionAction', + 'FirewallPolicyRule', + 'FirewallPolicyRuleApplicationProtocol', + 'FirewallPolicyRuleCollection', + 'FirewallPolicyRuleCollectionGroup', + 'FirewallPolicyRuleCollectionGroupListResult', + 'FirewallPolicySNAT', + 'FirewallPolicySQL', + 'FirewallPolicySku', + 'FirewallPolicyThreatIntelWhitelist', + 'FirewallPolicyTransportSecurity', + 'FlowLog', + 'FlowLogFormatParameters', + 'FlowLogInformation', + 'FlowLogListResult', + 'FlowLogStatusParameters', + 'FrontendIPConfiguration', + 'GatewayCustomBgpIpAddressIpConfiguration', + 'GatewayLoadBalancerTunnelInterface', + 'GatewayRoute', + 'GatewayRouteListResult', + 'GenerateExpressRoutePortsLOARequest', + 'GenerateExpressRoutePortsLOAResult', + 'GetVpnSitesConfigurationRequest', + 'HTTPConfiguration', + 'HTTPHeader', + 'HopLink', 'Hub', + 'HubIPAddresses', + 'HubIpConfiguration', + 'HubPublicIPAddresses', + 'HubRoute', + 'HubRouteTable', + 'HubVirtualNetworkConnection', + 'IDPSQueryObject', + 'IPAddressAvailabilityResult', + 'IPConfiguration', + 'IPConfigurationBgpPeeringAddress', + 'IPConfigurationProfile', + 'IPPrefixesList', + 'InboundNatPool', + 'InboundNatRule', + 'InboundNatRuleListResult', + 'InboundNatRulePortMapping', + 'InboundSecurityRule', + 'InboundSecurityRules', + 'IpAllocation', + 'IpAllocationListResult', + 'IpGroup', + 'IpGroupListResult', + 'IpTag', + 'IpsecPolicy', + 'Ipv6CircuitConnectionConfig', + 'Ipv6ExpressRouteCircuitPeeringConfig', + 'ListHubRouteTablesResult', + 'ListHubVirtualNetworkConnectionsResult', + 'ListP2SVpnGatewaysResult', + 'ListRoutingIntentResult', + 'ListVirtualHubBgpConnectionResults', + 'ListVirtualHubIpConfigurationResults', + 'ListVirtualHubRouteTableV2SResult', + 'ListVirtualHubsResult', + 'ListVirtualNetworkGatewayNatRulesResult', + 'ListVirtualWANsResult', + 'ListVpnConnectionsResult', + 'ListVpnGatewayNatRulesResult', + 'ListVpnGatewaysResult', + 'ListVpnServerConfigurationPolicyGroupsResult', + 'ListVpnServerConfigurationsResult', + 'ListVpnSiteLinkConnectionsResult', + 'ListVpnSiteLinksResult', + 'ListVpnSitesResult', + 'LoadBalancer', + 'LoadBalancerBackendAddress', + 'LoadBalancerBackendAddressPoolListResult', + 'LoadBalancerFrontendIPConfigurationListResult', + 'LoadBalancerListResult', + 'LoadBalancerLoadBalancingRuleListResult', + 'LoadBalancerOutboundRuleListResult', + 'LoadBalancerProbeListResult', + 'LoadBalancerSku', + 'LoadBalancerVipSwapRequest', + 'LoadBalancerVipSwapRequestFrontendIPConfiguration', + 'LoadBalancingRule', + 'LocalNetworkGateway', + 'LocalNetworkGatewayListResult', + 'LogSpecification', + 'ManagedRuleGroupOverride', + 'ManagedRuleOverride', + 'ManagedRuleSet', + 'ManagedRulesDefinition', 'ManagedServiceIdentity', + 'MatchCondition', + 'MatchVariable', + 'MatchedRule', + 'MetricSpecification', + 'NatGateway', + 'NatGatewayListResult', + 'NatGatewaySku', + 'NatRule', + 'NatRulePortMapping', + 'NetworkConfigurationDiagnosticParameters', + 'NetworkConfigurationDiagnosticProfile', + 'NetworkConfigurationDiagnosticResponse', + 'NetworkConfigurationDiagnosticResult', 'NetworkGroup', 'NetworkGroupListResult', + 'NetworkIntentPolicy', + 'NetworkIntentPolicyConfiguration', + 'NetworkInterface', + 'NetworkInterfaceAssociation', + 'NetworkInterfaceDnsSettings', + 'NetworkInterfaceIPConfiguration', + 'NetworkInterfaceIPConfigurationListResult', + 'NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties', + 'NetworkInterfaceListResult', + 'NetworkInterfaceLoadBalancerListResult', + 'NetworkInterfaceTapConfiguration', + 'NetworkInterfaceTapConfigurationListResult', 'NetworkManager', 'NetworkManagerCommit', 'NetworkManagerConnection', @@ -167,51 +1270,440 @@ 'NetworkManagerListResult', 'NetworkManagerPropertiesNetworkManagerScopes', 'NetworkManagerSecurityGroupItem', + 'NetworkProfile', + 'NetworkProfileListResult', + 'NetworkRule', + 'NetworkSecurityGroup', + 'NetworkSecurityGroupListResult', + 'NetworkSecurityGroupResult', + 'NetworkSecurityRulesEvaluationResult', + 'NetworkVirtualAppliance', + 'NetworkVirtualApplianceListResult', + 'NetworkVirtualApplianceSiteListResult', + 'NetworkVirtualApplianceSku', + 'NetworkVirtualApplianceSkuInstances', + 'NetworkVirtualApplianceSkuListResult', + 'NetworkWatcher', + 'NetworkWatcherListResult', + 'NextHopParameters', + 'NextHopResult', + 'O365BreakOutCategoryPolicies', + 'O365PolicyProperties', + 'Office365PolicyProperties', + 'Operation', + 'OperationDisplay', + 'OperationListResult', + 'OperationPropertiesFormatServiceSpecification', + 'OrderBy', + 'OutboundRule', + 'OwaspCrsExclusionEntry', + 'P2SConnectionConfiguration', + 'P2SVpnConnectionHealth', + 'P2SVpnConnectionHealthRequest', + 'P2SVpnConnectionRequest', + 'P2SVpnGateway', + 'P2SVpnProfileParameters', + 'PacketCapture', + 'PacketCaptureFilter', + 'PacketCaptureListResult', + 'PacketCaptureMachineScope', + 'PacketCaptureParameters', + 'PacketCaptureQueryStatusResult', + 'PacketCaptureResult', + 'PacketCaptureResultProperties', + 'PacketCaptureStorageLocation', 'PatchObject', - 'ProxyResource', + 'PatchRouteFilter', + 'PatchRouteFilterRule', + 'PeerExpressRouteCircuitConnection', + 'PeerExpressRouteCircuitConnectionListResult', + 'PeerRoute', + 'PeerRouteList', + 'PolicySettings', + 'PrepareNetworkPoliciesRequest', + 'PrivateDnsZoneConfig', + 'PrivateDnsZoneGroup', + 'PrivateDnsZoneGroupListResult', + 'PrivateEndpoint', + 'PrivateEndpointConnection', + 'PrivateEndpointConnectionListResult', + 'PrivateEndpointIPConfiguration', + 'PrivateEndpointListResult', + 'PrivateLinkService', + 'PrivateLinkServiceConnection', + 'PrivateLinkServiceConnectionState', + 'PrivateLinkServiceIpConfiguration', + 'PrivateLinkServiceListResult', + 'PrivateLinkServicePropertiesAutoApproval', + 'PrivateLinkServicePropertiesVisibility', + 'PrivateLinkServiceVisibility', + 'Probe', + 'PropagatedRouteTable', + 'ProtocolConfiguration', + 'ProtocolCustomSettingsFormat', + 'PublicIPAddress', + 'PublicIPAddressDnsSettings', + 'PublicIPAddressListResult', + 'PublicIPAddressSku', + 'PublicIPPrefix', + 'PublicIPPrefixListResult', + 'PublicIPPrefixSku', + 'QosDefinition', + 'QosIpRange', + 'QosPortRange', + 'QueryInboundNatRulePortMappingRequest', 'QueryRequestOptions', + 'QueryResults', + 'QueryTroubleshootingParameters', + 'RadiusServer', + 'RecordSet', + 'ReferencedPublicIpAddress', 'Resource', + 'ResourceNavigationLink', + 'ResourceNavigationLinksListResult', + 'ResourceSet', + 'RetentionPolicyParameters', + 'Route', + 'RouteFilter', + 'RouteFilterListResult', + 'RouteFilterRule', + 'RouteFilterRuleListResult', + 'RouteListResult', + 'RouteTable', + 'RouteTableListResult', + 'RoutingConfiguration', + 'RoutingIntent', + 'RoutingPolicy', 'ScopeConnection', 'ScopeConnectionListResult', 'SecurityAdminConfiguration', 'SecurityAdminConfigurationListResult', - 'SecurityUserConfiguration', - 'SecurityUserConfigurationListResult', + 'SecurityGroupNetworkInterface', + 'SecurityGroupViewParameters', + 'SecurityGroupViewResult', + 'SecurityPartnerProvider', + 'SecurityPartnerProviderListResult', + 'SecurityRule', + 'SecurityRuleAssociations', + 'SecurityRuleListResult', + 'ServiceAssociationLink', + 'ServiceAssociationLinksListResult', + 'ServiceEndpointPolicy', + 'ServiceEndpointPolicyDefinition', + 'ServiceEndpointPolicyDefinitionListResult', + 'ServiceEndpointPolicyListResult', + 'ServiceEndpointPropertiesFormat', + 'ServiceTagInformation', + 'ServiceTagInformationListResult', + 'ServiceTagInformationPropertiesFormat', + 'ServiceTagsListResult', + 'SessionIds', + 'SignatureOverridesFilterValuesQuery', + 'SignatureOverridesFilterValuesResponse', + 'SignaturesOverrides', + 'SignaturesOverridesList', + 'SignaturesOverridesProperties', + 'SingleQueryResult', + 'Sku', 'StaticMember', 'StaticMemberListResult', + 'StaticRoute', 'SubResource', + 'Subnet', + 'SubnetAssociation', + 'SubnetListResult', 'SystemData', 'TagsObject', - 'UserRule', - 'UserRuleCollection', - 'UserRuleCollectionListResult', - 'UserRuleListResult', + 'Topology', + 'TopologyAssociation', + 'TopologyParameters', + 'TopologyResource', + 'TrafficAnalyticsConfigurationProperties', + 'TrafficAnalyticsProperties', + 'TrafficSelectorPolicy', + 'TroubleshootingDetails', + 'TroubleshootingParameters', + 'TroubleshootingRecommendedActions', + 'TroubleshootingResult', + 'TunnelConnectionHealth', + 'UnprepareNetworkPoliciesRequest', + 'Usage', + 'UsageName', + 'UsagesListResult', + 'VM', + 'VerificationIPFlowParameters', + 'VerificationIPFlowResult', + 'VirtualApplianceNicProperties', + 'VirtualApplianceSite', + 'VirtualApplianceSkuProperties', + 'VirtualHub', + 'VirtualHubEffectiveRoute', + 'VirtualHubEffectiveRouteList', + 'VirtualHubId', + 'VirtualHubRoute', + 'VirtualHubRouteTable', + 'VirtualHubRouteTableV2', + 'VirtualHubRouteV2', + 'VirtualNetwork', + 'VirtualNetworkBgpCommunities', + 'VirtualNetworkConnectionGatewayReference', + 'VirtualNetworkEncryption', + 'VirtualNetworkGateway', + 'VirtualNetworkGatewayConnection', + 'VirtualNetworkGatewayConnectionListEntity', + 'VirtualNetworkGatewayConnectionListResult', + 'VirtualNetworkGatewayIPConfiguration', + 'VirtualNetworkGatewayListConnectionsResult', + 'VirtualNetworkGatewayListResult', + 'VirtualNetworkGatewayNatRule', + 'VirtualNetworkGatewaySku', + 'VirtualNetworkListResult', + 'VirtualNetworkListUsageResult', + 'VirtualNetworkPeering', + 'VirtualNetworkPeeringListResult', + 'VirtualNetworkTap', + 'VirtualNetworkTapListResult', + 'VirtualNetworkUsage', + 'VirtualNetworkUsageName', + 'VirtualRouter', + 'VirtualRouterAutoScaleConfiguration', + 'VirtualRouterListResult', + 'VirtualRouterPeering', + 'VirtualRouterPeeringListResult', + 'VirtualWAN', + 'VirtualWanSecurityProvider', + 'VirtualWanSecurityProviders', + 'VirtualWanVpnProfileParameters', + 'VnetRoute', + 'VpnClientConfiguration', + 'VpnClientConnectionHealth', + 'VpnClientConnectionHealthDetail', + 'VpnClientConnectionHealthDetailListResult', + 'VpnClientIPsecParameters', + 'VpnClientParameters', + 'VpnClientRevokedCertificate', + 'VpnClientRootCertificate', + 'VpnConnection', + 'VpnConnectionPacketCaptureStartParameters', + 'VpnConnectionPacketCaptureStopParameters', + 'VpnDeviceScriptParameters', + 'VpnGateway', + 'VpnGatewayIpConfiguration', + 'VpnGatewayNatRule', + 'VpnGatewayPacketCaptureStartParameters', + 'VpnGatewayPacketCaptureStopParameters', + 'VpnLinkBgpSettings', + 'VpnLinkProviderProperties', + 'VpnNatRuleMapping', + 'VpnPacketCaptureStartParameters', + 'VpnPacketCaptureStopParameters', + 'VpnProfileResponse', + 'VpnServerConfigRadiusClientRootCertificate', + 'VpnServerConfigRadiusServerRootCertificate', + 'VpnServerConfigVpnClientRevokedCertificate', + 'VpnServerConfigVpnClientRootCertificate', + 'VpnServerConfiguration', + 'VpnServerConfigurationPolicyGroup', + 'VpnServerConfigurationPolicyGroupMember', + 'VpnServerConfigurationsResponse', + 'VpnSite', + 'VpnSiteId', + 'VpnSiteLink', + 'VpnSiteLinkConnection', + 'WebApplicationFirewallCustomRule', + 'WebApplicationFirewallPolicy', + 'WebApplicationFirewallPolicyListResult', 'Access', 'AddressPrefixType', 'AdminRuleKind', + 'ApplicationGatewayBackendHealthServerHealth', + 'ApplicationGatewayCookieBasedAffinity', + 'ApplicationGatewayCustomErrorStatusCode', + 'ApplicationGatewayFirewallMode', + 'ApplicationGatewayLoadDistributionAlgorithm', + 'ApplicationGatewayOperationalState', + 'ApplicationGatewayProtocol', + 'ApplicationGatewayRedirectType', + 'ApplicationGatewayRequestRoutingRuleType', + 'ApplicationGatewaySkuName', + 'ApplicationGatewaySslCipherSuite', + 'ApplicationGatewaySslPolicyName', + 'ApplicationGatewaySslPolicyType', + 'ApplicationGatewaySslProtocol', + 'ApplicationGatewayTier', + 'AssociationType', 'AuthenticationMethod', + 'AuthorizationUseStatus', + 'AutoLearnPrivateRangesMode', + 'AzureFirewallApplicationRuleProtocolType', + 'AzureFirewallNatRCActionType', + 'AzureFirewallNetworkRuleProtocol', + 'AzureFirewallRCActionType', + 'AzureFirewallSkuName', + 'AzureFirewallSkuTier', + 'AzureFirewallThreatIntelMode', + 'BastionConnectProtocol', + 'BastionHostSkuName', + 'BgpPeerState', + 'CircuitConnectionStatus', + 'CommissionedState', 'ConfigurationType', + 'ConnectionMonitorEndpointFilterItemType', + 'ConnectionMonitorEndpointFilterType', + 'ConnectionMonitorSourceStatus', + 'ConnectionMonitorTestConfigurationProtocol', + 'ConnectionMonitorType', + 'ConnectionState', + 'ConnectionStatus', 'ConnectivityTopology', + 'CoverageLevel', 'CreatedByType', - 'DeleteExistingNSGs', + 'DdosCustomPolicyProtocol', + 'DdosCustomPolicyTriggerSensitivityOverride', + 'DdosSettingsProtectionCoverage', 'DeleteExistingPeering', + 'DeleteOptions', 'DeploymentStatus', + 'DestinationPortBehavior', + 'DhGroup', + 'Direction', 'EffectiveAdminRuleKind', - 'EffectiveUserRuleKind', + 'EffectiveRouteSource', + 'EffectiveRouteState', + 'EffectiveSecurityRuleProtocol', + 'EndpointType', + 'EvaluationState', + 'ExpressRouteCircuitPeeringAdvertisedPublicPrefixState', + 'ExpressRouteCircuitPeeringState', + 'ExpressRouteCircuitSkuFamily', + 'ExpressRouteCircuitSkuTier', + 'ExpressRouteLinkAdminState', + 'ExpressRouteLinkConnectorType', + 'ExpressRouteLinkMacSecCipher', + 'ExpressRouteLinkMacSecSciState', + 'ExpressRoutePeeringState', + 'ExpressRoutePeeringType', + 'ExpressRoutePortAuthorizationUseStatus', + 'ExpressRoutePortsEncapsulation', 'ExtendedLocationTypes', + 'FirewallPolicyFilterRuleCollectionActionType', + 'FirewallPolicyIDPSQuerySortOrder', + 'FirewallPolicyIDPSSignatureDirection', + 'FirewallPolicyIDPSSignatureMode', + 'FirewallPolicyIDPSSignatureSeverity', + 'FirewallPolicyIntrusionDetectionProtocol', + 'FirewallPolicyIntrusionDetectionStateType', + 'FirewallPolicyNatRuleCollectionActionType', + 'FirewallPolicyRuleApplicationProtocolType', + 'FirewallPolicyRuleCollectionType', + 'FirewallPolicyRuleNetworkProtocol', + 'FirewallPolicyRuleType', + 'FirewallPolicySkuTier', + 'FlowLogFormatType', + 'GatewayLoadBalancerTunnelInterfaceType', + 'GatewayLoadBalancerTunnelProtocol', 'GroupConnectivity', + 'HTTPConfigurationMethod', + 'HTTPMethod', + 'HubBgpConnectionStatus', + 'HubRoutingPreference', + 'HubVirtualNetworkConnectionStatus', 'IPAllocationMethod', 'IPVersion', + 'IkeEncryption', + 'IkeIntegrity', + 'InboundSecurityRulesProtocol', + 'IpAllocationType', + 'IpFlowProtocol', + 'IpsecEncryption', + 'IpsecIntegrity', 'IsGlobal', - 'MembershipType', + 'IssueType', + 'LoadBalancerBackendAddressAdminState', + 'LoadBalancerOutboundRuleProtocol', + 'LoadBalancerSkuName', + 'LoadBalancerSkuTier', + 'LoadDistribution', + 'ManagedRuleEnabledState', + 'NatGatewaySkuName', 'NetworkIntentPolicyBasedService', + 'NetworkInterfaceAuxiliaryMode', + 'NetworkInterfaceMigrationPhase', + 'NetworkInterfaceNicType', 'NetworkOperationStatus', + 'NextHopType', + 'OfficeTrafficCategory', + 'Origin', + 'OutputType', + 'OwaspCrsExclusionEntryMatchVariable', + 'OwaspCrsExclusionEntrySelectorMatchOperator', + 'PacketCaptureTargetType', + 'PcError', + 'PcProtocol', + 'PcStatus', + 'PfsGroup', + 'PreferredIPVersion', + 'PreferredRoutingGateway', + 'ProbeProtocol', + 'ProcessorArchitecture', + 'Protocol', + 'ProtocolType', 'ProvisioningState', + 'PublicIPAddressMigrationPhase', + 'PublicIPAddressSkuName', + 'PublicIPAddressSkuTier', + 'PublicIPPrefixSkuName', + 'PublicIPPrefixSkuTier', 'ResourceIdentityType', + 'RouteFilterRuleType', + 'RouteNextHopType', + 'RoutingState', 'ScopeConnectionState', 'SecurityConfigurationRuleAccess', 'SecurityConfigurationRuleDirection', 'SecurityConfigurationRuleProtocol', + 'SecurityPartnerProviderConnectionStatus', + 'SecurityProviderName', + 'SecurityRuleAccess', + 'SecurityRuleDirection', + 'SecurityRuleProtocol', + 'ServiceProviderProvisioningState', + 'Severity', + 'SyncRemoteAddressSpace', + 'TransportProtocol', + 'TunnelConnectionStatus', + 'UsageUnit', 'UseHubGateway', - 'UserRuleKind', + 'VerbosityLevel', + 'VirtualNetworkEncryptionEnforcement', + 'VirtualNetworkGatewayConnectionMode', + 'VirtualNetworkGatewayConnectionProtocol', + 'VirtualNetworkGatewayConnectionStatus', + 'VirtualNetworkGatewayConnectionType', + 'VirtualNetworkGatewaySkuName', + 'VirtualNetworkGatewaySkuTier', + 'VirtualNetworkGatewayType', + 'VirtualNetworkPeeringLevel', + 'VirtualNetworkPeeringState', + 'VirtualNetworkPrivateEndpointNetworkPolicies', + 'VirtualNetworkPrivateLinkServiceNetworkPolicies', + 'VirtualWanSecurityProviderType', + 'VpnAuthenticationType', + 'VpnClientProtocol', + 'VpnConnectionStatus', + 'VpnGatewayGeneration', + 'VpnGatewayTunnelingProtocol', + 'VpnLinkConnectionMode', + 'VpnNatRuleMode', + 'VpnNatRuleType', + 'VpnPolicyMemberAttributeType', + 'VpnType', + 'WebApplicationFirewallAction', + 'WebApplicationFirewallEnabledState', + 'WebApplicationFirewallMatchVariable', + 'WebApplicationFirewallMode', + 'WebApplicationFirewallOperator', + 'WebApplicationFirewallPolicyResourceState', + 'WebApplicationFirewallRuleType', + 'WebApplicationFirewallTransform', ] diff --git a/src/network-manager/azext_network_manager/vendored_sdks/models/_models_py3.py b/src/network-manager/azext_network_manager/vendored_sdks/models/_models_py3.py index 50d1317f6ca..778800f7ac1 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/models/_models_py3.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/models/_models_py3.py @@ -9,103 +9,56 @@ import datetime from typing import Dict, List, Optional, Union +from azure.core.exceptions import HttpResponseError import msrest.serialization from ._network_management_client_enums import * -class ActiveBaseSecurityAdminRule(msrest.serialization.Model): - """Network base admin rule. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: ActiveSecurityAdminRule, ActiveDefaultSecurityAdminRule. - - All required parameters must be populated in order to send to Azure. +class AadAuthenticationParameters(msrest.serialization.Model): + """AAD Vpn authentication type related parameters. - :ivar id: Resource ID. - :vartype id: str - :ivar commit_time: Deployment time string. - :vartype commit_time: ~datetime.datetime - :ivar region: Deployment region. - :vartype region: str - :ivar configuration_description: A description of the security admin configuration. - :vartype configuration_description: str - :ivar rule_collection_description: A description of the rule collection. - :vartype rule_collection_description: str - :ivar rule_collection_applies_to_groups: Groups for rule collection. - :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveAdminRuleKind + :ivar aad_tenant: AAD Vpn authentication parameter AAD tenant. + :vartype aad_tenant: str + :ivar aad_audience: AAD Vpn authentication parameter AAD audience. + :vartype aad_audience: str + :ivar aad_issuer: AAD Vpn authentication parameter AAD issuer. + :vartype aad_issuer: str """ - _validation = { - 'kind': {'required': True}, - } - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'commit_time': {'key': 'commitTime', 'type': 'iso-8601'}, - 'region': {'key': 'region', 'type': 'str'}, - 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, - 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, - 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, - 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'Custom': 'ActiveSecurityAdminRule', 'Default': 'ActiveDefaultSecurityAdminRule'} + 'aad_tenant': {'key': 'aadTenant', 'type': 'str'}, + 'aad_audience': {'key': 'aadAudience', 'type': 'str'}, + 'aad_issuer': {'key': 'aadIssuer', 'type': 'str'}, } def __init__( self, *, - id: Optional[str] = None, - commit_time: Optional[datetime.datetime] = None, - region: Optional[str] = None, - configuration_description: Optional[str] = None, - rule_collection_description: Optional[str] = None, - rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, - rule_groups: Optional[List["ConfigurationGroup"]] = None, + aad_tenant: Optional[str] = None, + aad_audience: Optional[str] = None, + aad_issuer: Optional[str] = None, **kwargs ): """ - :keyword id: Resource ID. - :paramtype id: str - :keyword commit_time: Deployment time string. - :paramtype commit_time: ~datetime.datetime - :keyword region: Deployment region. - :paramtype region: str - :keyword configuration_description: A description of the security admin configuration. - :paramtype configuration_description: str - :keyword rule_collection_description: A description of the rule collection. - :paramtype rule_collection_description: str - :keyword rule_collection_applies_to_groups: Groups for rule collection. - :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :keyword aad_tenant: AAD Vpn authentication parameter AAD tenant. + :paramtype aad_tenant: str + :keyword aad_audience: AAD Vpn authentication parameter AAD audience. + :paramtype aad_audience: str + :keyword aad_issuer: AAD Vpn authentication parameter AAD issuer. + :paramtype aad_issuer: str """ - super(ActiveBaseSecurityAdminRule, self).__init__(**kwargs) - self.id = id - self.commit_time = commit_time - self.region = region - self.configuration_description = configuration_description - self.rule_collection_description = rule_collection_description - self.rule_collection_applies_to_groups = rule_collection_applies_to_groups - self.rule_groups = rule_groups - self.kind = None # type: Optional[str] + super(AadAuthenticationParameters, self).__init__(**kwargs) + self.aad_tenant = aad_tenant + self.aad_audience = aad_audience + self.aad_issuer = aad_issuer -class ActiveBaseSecurityUserRule(msrest.serialization.Model): - """Network base rule. +class ActiveBaseSecurityAdminRule(msrest.serialization.Model): + """Network base admin rule. You probably want to use the sub-classes and not this class directly. Known - sub-classes are: ActiveSecurityUserRule, ActiveDefaultSecurityUserRule. + sub-classes are: ActiveSecurityAdminRule, ActiveDefaultSecurityAdminRule. All required parameters must be populated in order to send to Azure. @@ -115,18 +68,18 @@ class ActiveBaseSecurityUserRule(msrest.serialization.Model): :vartype commit_time: ~datetime.datetime :ivar region: Deployment region. :vartype region: str - :ivar configuration_description: A description of the security user configuration. + :ivar configuration_description: A description of the security admin configuration. :vartype configuration_description: str :ivar rule_collection_description: A description of the rule collection. :vartype rule_collection_description: str :ivar rule_collection_applies_to_groups: Groups for rule collection. :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :vartype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveUserRuleKind + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveAdminRuleKind """ _validation = { @@ -145,7 +98,7 @@ class ActiveBaseSecurityUserRule(msrest.serialization.Model): } _subtype_map = { - 'kind': {'Custom': 'ActiveSecurityUserRule', 'Default': 'ActiveDefaultSecurityUserRule'} + 'kind': {'Custom': 'ActiveSecurityAdminRule', 'Default': 'ActiveDefaultSecurityAdminRule'} } def __init__( @@ -167,17 +120,17 @@ def __init__( :paramtype commit_time: ~datetime.datetime :keyword region: Deployment region. :paramtype region: str - :keyword configuration_description: A description of the security user configuration. + :keyword configuration_description: A description of the security admin configuration. :paramtype configuration_description: str :keyword rule_collection_description: A description of the rule collection. :paramtype rule_collection_description: str :keyword rule_collection_applies_to_groups: Groups for rule collection. :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :paramtype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] """ - super(ActiveBaseSecurityUserRule, self).__init__(**kwargs) + super(ActiveBaseSecurityAdminRule, self).__init__(**kwargs) self.id = id self.commit_time = commit_time self.region = region @@ -227,32 +180,29 @@ class EffectiveConnectivityConfiguration(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :ivar id: Resource ID. + :ivar id: Connectivity configuration ID. :vartype id: str :ivar configuration_groups: Effective configuration groups. - :vartype configuration_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :vartype configuration_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :ivar description: A description of the connectivity configuration. :vartype description: str :ivar connectivity_topology: Connectivity topology type. Possible values include: "HubAndSpoke", "Mesh". :vartype connectivity_topology: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityTopology + ~azure.mgmt.network.v2022_01_01.models.ConnectivityTopology :ivar hubs: List of hubItems. - :vartype hubs: list[~azure.mgmt.network.v2022_02_01_preview.models.Hub] + :vartype hubs: list[~azure.mgmt.network.v2022_01_01.models.Hub] :ivar is_global: Flag if global mesh is supported. Possible values include: "False", "True". - :vartype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal + :vartype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal :ivar applies_to_groups: Groups for configuration. - :vartype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityGroupItem] + :vartype applies_to_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityGroupItem] :ivar provisioning_state: The provisioning state of the connectivity configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState :ivar delete_existing_peering: Flag if need to remove current existing peerings. Possible values include: "False", "True". :vartype delete_existing_peering: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingPeering + ~azure.mgmt.network.v2022_01_01.models.DeleteExistingPeering """ _validation = { @@ -285,28 +235,28 @@ def __init__( **kwargs ): """ - :keyword id: Resource ID. + :keyword id: Connectivity configuration ID. :paramtype id: str :keyword configuration_groups: Effective configuration groups. :paramtype configuration_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :keyword description: A description of the connectivity configuration. :paramtype description: str :keyword connectivity_topology: Connectivity topology type. Possible values include: "HubAndSpoke", "Mesh". :paramtype connectivity_topology: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityTopology + ~azure.mgmt.network.v2022_01_01.models.ConnectivityTopology :keyword hubs: List of hubItems. - :paramtype hubs: list[~azure.mgmt.network.v2022_02_01_preview.models.Hub] + :paramtype hubs: list[~azure.mgmt.network.v2022_01_01.models.Hub] :keyword is_global: Flag if global mesh is supported. Possible values include: "False", "True". - :paramtype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal + :paramtype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal :keyword applies_to_groups: Groups for configuration. :paramtype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.ConnectivityGroupItem] :keyword delete_existing_peering: Flag if need to remove current existing peerings. Possible values include: "False", "True". :paramtype delete_existing_peering: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingPeering + ~azure.mgmt.network.v2022_01_01.models.DeleteExistingPeering """ super(EffectiveConnectivityConfiguration, self).__init__(**kwargs) self.id = id @@ -325,32 +275,29 @@ class ActiveConnectivityConfiguration(EffectiveConnectivityConfiguration): Variables are only populated by the server, and will be ignored when sending a request. - :ivar id: Resource ID. + :ivar id: Connectivity configuration ID. :vartype id: str :ivar configuration_groups: Effective configuration groups. - :vartype configuration_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :vartype configuration_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :ivar description: A description of the connectivity configuration. :vartype description: str :ivar connectivity_topology: Connectivity topology type. Possible values include: "HubAndSpoke", "Mesh". :vartype connectivity_topology: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityTopology + ~azure.mgmt.network.v2022_01_01.models.ConnectivityTopology :ivar hubs: List of hubItems. - :vartype hubs: list[~azure.mgmt.network.v2022_02_01_preview.models.Hub] + :vartype hubs: list[~azure.mgmt.network.v2022_01_01.models.Hub] :ivar is_global: Flag if global mesh is supported. Possible values include: "False", "True". - :vartype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal + :vartype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal :ivar applies_to_groups: Groups for configuration. - :vartype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityGroupItem] + :vartype applies_to_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityGroupItem] :ivar provisioning_state: The provisioning state of the connectivity configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState :ivar delete_existing_peering: Flag if need to remove current existing peerings. Possible values include: "False", "True". :vartype delete_existing_peering: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingPeering + ~azure.mgmt.network.v2022_01_01.models.DeleteExistingPeering :ivar commit_time: Deployment time string. :vartype commit_time: ~datetime.datetime :ivar region: Deployment region. @@ -391,28 +338,28 @@ def __init__( **kwargs ): """ - :keyword id: Resource ID. + :keyword id: Connectivity configuration ID. :paramtype id: str :keyword configuration_groups: Effective configuration groups. :paramtype configuration_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :keyword description: A description of the connectivity configuration. :paramtype description: str :keyword connectivity_topology: Connectivity topology type. Possible values include: "HubAndSpoke", "Mesh". :paramtype connectivity_topology: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityTopology + ~azure.mgmt.network.v2022_01_01.models.ConnectivityTopology :keyword hubs: List of hubItems. - :paramtype hubs: list[~azure.mgmt.network.v2022_02_01_preview.models.Hub] + :paramtype hubs: list[~azure.mgmt.network.v2022_01_01.models.Hub] :keyword is_global: Flag if global mesh is supported. Possible values include: "False", "True". - :paramtype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal + :paramtype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal :keyword applies_to_groups: Groups for configuration. :paramtype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.ConnectivityGroupItem] :keyword delete_existing_peering: Flag if need to remove current existing peerings. Possible values include: "False", "True". :paramtype delete_existing_peering: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingPeering + ~azure.mgmt.network.v2022_01_01.models.DeleteExistingPeering :keyword commit_time: Deployment time string. :paramtype commit_time: ~datetime.datetime :keyword region: Deployment region. @@ -427,8 +374,7 @@ class ActiveConnectivityConfigurationsListResult(msrest.serialization.Model): """Result of the request to list active connectivity configurations. It contains a list of active connectivity configurations and a skiptoken to get the next set of results. :ivar value: Gets a page of active connectivity configurations. - :vartype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.ActiveConnectivityConfiguration] + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ActiveConnectivityConfiguration] :ivar skip_token: When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data. :vartype skip_token: str @@ -448,8 +394,7 @@ def __init__( ): """ :keyword value: Gets a page of active connectivity configurations. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.ActiveConnectivityConfiguration] + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ActiveConnectivityConfiguration] :keyword skip_token: When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data. :paramtype skip_token: str @@ -478,12 +423,12 @@ class ActiveDefaultSecurityAdminRule(ActiveBaseSecurityAdminRule): :vartype rule_collection_description: str :ivar rule_collection_applies_to_groups: Groups for rule collection. :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :vartype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveAdminRuleKind + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveAdminRuleKind :ivar description: A description for this rule. Restricted to 140 chars. :vartype description: str :ivar flag: Default rule flag. @@ -491,19 +436,18 @@ class ActiveDefaultSecurityAdminRule(ActiveBaseSecurityAdminRule): :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", "Icmp", "Esp", "Any", "Ah". :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :vartype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :vartype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :ivar source_port_ranges: The source port ranges. :vartype source_port_ranges: list[str] :ivar destination_port_ranges: The destination port ranges. :vartype destination_port_ranges: list[str] :ivar access: Indicates the access allowed for this particular rule. Possible values include: "Allow", "Deny", "AlwaysAllow". - :vartype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule. @@ -511,11 +455,10 @@ class ActiveDefaultSecurityAdminRule(ActiveBaseSecurityAdminRule): :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. Possible values include: "Inbound", "Outbound". :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection :ivar provisioning_state: The provisioning state of the resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { @@ -580,9 +523,9 @@ def __init__( :paramtype rule_collection_description: str :keyword rule_collection_applies_to_groups: Groups for rule collection. :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :paramtype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :keyword flag: Default rule flag. :paramtype flag: str """ @@ -601,134 +544,6 @@ def __init__( self.provisioning_state = None -class ActiveDefaultSecurityUserRule(ActiveBaseSecurityUserRule): - """Network security default user rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Resource ID. - :vartype id: str - :ivar commit_time: Deployment time string. - :vartype commit_time: ~datetime.datetime - :ivar region: Deployment region. - :vartype region: str - :ivar configuration_description: A description of the security user configuration. - :vartype configuration_description: str - :ivar rule_collection_description: A description of the rule collection. - :vartype rule_collection_description: str - :ivar rule_collection_applies_to_groups: Groups for rule collection. - :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveUserRuleKind - :ivar description: A description for this rule. Restricted to 140 chars. - :vartype description: str - :ivar flag: Default rule flag. - :vartype flag: str - :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", - "Icmp", "Esp", "Any", "Ah". - :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar source_port_ranges: The source port ranges. - :vartype source_port_ranges: list[str] - :ivar destination_port_ranges: The destination port ranges. - :vartype destination_port_ranges: list[str] - :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - :ivar provisioning_state: The provisioning state of the security configuration user rule - resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState - """ - - _validation = { - 'kind': {'required': True}, - 'description': {'readonly': True}, - 'protocol': {'readonly': True}, - 'sources': {'readonly': True}, - 'destinations': {'readonly': True}, - 'source_port_ranges': {'readonly': True}, - 'destination_port_ranges': {'readonly': True}, - 'direction': {'readonly': True}, - 'provisioning_state': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'commit_time': {'key': 'commitTime', 'type': 'iso-8601'}, - 'region': {'key': 'region', 'type': 'str'}, - 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, - 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, - 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, - 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'flag': {'key': 'properties.flag', 'type': 'str'}, - 'protocol': {'key': 'properties.protocol', 'type': 'str'}, - 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, - 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, - 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, - 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, - 'direction': {'key': 'properties.direction', 'type': 'str'}, - 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, - } - - def __init__( - self, - *, - id: Optional[str] = None, - commit_time: Optional[datetime.datetime] = None, - region: Optional[str] = None, - configuration_description: Optional[str] = None, - rule_collection_description: Optional[str] = None, - rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, - rule_groups: Optional[List["ConfigurationGroup"]] = None, - flag: Optional[str] = None, - **kwargs - ): - """ - :keyword id: Resource ID. - :paramtype id: str - :keyword commit_time: Deployment time string. - :paramtype commit_time: ~datetime.datetime - :keyword region: Deployment region. - :paramtype region: str - :keyword configuration_description: A description of the security user configuration. - :paramtype configuration_description: str - :keyword rule_collection_description: A description of the rule collection. - :paramtype rule_collection_description: str - :keyword rule_collection_applies_to_groups: Groups for rule collection. - :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :keyword flag: Default rule flag. - :paramtype flag: str - """ - super(ActiveDefaultSecurityUserRule, self).__init__(id=id, commit_time=commit_time, region=region, configuration_description=configuration_description, rule_collection_description=rule_collection_description, rule_collection_applies_to_groups=rule_collection_applies_to_groups, rule_groups=rule_groups, **kwargs) - self.kind = 'Default' # type: str - self.description = None - self.flag = flag - self.protocol = None - self.sources = None - self.destinations = None - self.source_port_ranges = None - self.destination_port_ranges = None - self.direction = None - self.provisioning_state = None - - class ActiveSecurityAdminRule(ActiveBaseSecurityAdminRule): """Network admin rule. @@ -748,30 +563,29 @@ class ActiveSecurityAdminRule(ActiveBaseSecurityAdminRule): :vartype rule_collection_description: str :ivar rule_collection_applies_to_groups: Groups for rule collection. :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :vartype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveAdminRuleKind + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveAdminRuleKind :ivar description: A description for this rule. Restricted to 140 chars. :vartype description: str :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", "Icmp", "Esp", "Any", "Ah". :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :vartype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :vartype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :ivar source_port_ranges: The source port ranges. :vartype source_port_ranges: list[str] :ivar destination_port_ranges: The destination port ranges. :vartype destination_port_ranges: list[str] :ivar access: Indicates the access allowed for this particular rule. Possible values include: "Allow", "Deny", "AlwaysAllow". - :vartype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule. @@ -779,11 +593,10 @@ class ActiveSecurityAdminRule(ActiveBaseSecurityAdminRule): :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. Possible values include: "Inbound", "Outbound". :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection :ivar provisioning_state: The provisioning state of the resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { @@ -847,19 +660,19 @@ def __init__( :paramtype rule_collection_description: str :keyword rule_collection_applies_to_groups: Groups for rule collection. :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :paramtype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] :keyword description: A description for this rule. Restricted to 140 chars. :paramtype description: str :keyword protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", "Icmp", "Esp", "Any", "Ah". :paramtype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol :keyword sources: The CIDR or source IP ranges. - :paramtype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :paramtype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :keyword destinations: The destination address prefixes. CIDR or destination IP ranges. - :paramtype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :paramtype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :keyword source_port_ranges: The source port ranges. :paramtype source_port_ranges: list[str] :keyword destination_port_ranges: The destination port ranges. @@ -867,7 +680,7 @@ def __init__( :keyword access: Indicates the access allowed for this particular rule. Possible values include: "Allow", "Deny", "AlwaysAllow". :paramtype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess :keyword priority: The priority of the rule. The value can be between 1 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule. @@ -875,7 +688,7 @@ def __init__( :keyword direction: Indicates if the traffic matched against the rule in inbound or outbound. Possible values include: "Inbound", "Outbound". :paramtype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection """ super(ActiveSecurityAdminRule, self).__init__(id=id, commit_time=commit_time, region=region, configuration_description=configuration_description, rule_collection_description=rule_collection_description, rule_collection_applies_to_groups=rule_collection_applies_to_groups, rule_groups=rule_groups, **kwargs) self.kind = 'Custom' # type: str @@ -895,8 +708,7 @@ class ActiveSecurityAdminRulesListResult(msrest.serialization.Model): """Result of the request to list active security admin rules. It contains a list of active security admin rules and a skiptoken to get the next set of results. :ivar value: Gets a page of active security admin rules. - :vartype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.ActiveBaseSecurityAdminRule] + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ActiveBaseSecurityAdminRule] :ivar skip_token: When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data. :vartype skip_token: str @@ -916,8 +728,7 @@ def __init__( ): """ :keyword value: Gets a page of active security admin rules. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.ActiveBaseSecurityAdminRule] + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ActiveBaseSecurityAdminRule] :keyword skip_token: When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data. :paramtype skip_token: str @@ -927,217 +738,68 @@ def __init__( self.skip_token = skip_token -class ActiveSecurityUserRule(ActiveBaseSecurityUserRule): - """Network security user rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. +class AddressPrefixItem(msrest.serialization.Model): + """Address prefix item. - :ivar id: Resource ID. - :vartype id: str - :ivar commit_time: Deployment time string. - :vartype commit_time: ~datetime.datetime - :ivar region: Deployment region. - :vartype region: str - :ivar configuration_description: A description of the security user configuration. - :vartype configuration_description: str - :ivar rule_collection_description: A description of the rule collection. - :vartype rule_collection_description: str - :ivar rule_collection_applies_to_groups: Groups for rule collection. - :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveUserRuleKind - :ivar description: A description for this rule. - :vartype description: str - :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", - "Icmp", "Esp", "Any", "Ah". - :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar source_port_ranges: The source port ranges. - :vartype source_port_ranges: list[str] - :ivar destination_port_ranges: The destination port ranges. - :vartype destination_port_ranges: list[str] - :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - :ivar provisioning_state: The provisioning state of the security configuration user rule - resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar address_prefix: Address prefix. + :vartype address_prefix: str + :ivar address_prefix_type: Address prefix type. Possible values include: "IPPrefix", + "ServiceTag". + :vartype address_prefix_type: str or ~azure.mgmt.network.v2022_01_01.models.AddressPrefixType """ - _validation = { - 'kind': {'required': True}, - 'provisioning_state': {'readonly': True}, - } - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'commit_time': {'key': 'commitTime', 'type': 'iso-8601'}, - 'region': {'key': 'region', 'type': 'str'}, - 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, - 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, - 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, - 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'protocol': {'key': 'properties.protocol', 'type': 'str'}, - 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, - 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, - 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, - 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, - 'direction': {'key': 'properties.direction', 'type': 'str'}, - 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'address_prefix': {'key': 'addressPrefix', 'type': 'str'}, + 'address_prefix_type': {'key': 'addressPrefixType', 'type': 'str'}, } def __init__( self, *, - id: Optional[str] = None, - commit_time: Optional[datetime.datetime] = None, - region: Optional[str] = None, - configuration_description: Optional[str] = None, - rule_collection_description: Optional[str] = None, - rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, - rule_groups: Optional[List["ConfigurationGroup"]] = None, - description: Optional[str] = None, - protocol: Optional[Union[str, "SecurityConfigurationRuleProtocol"]] = None, - sources: Optional[List["AddressPrefixItem"]] = None, - destinations: Optional[List["AddressPrefixItem"]] = None, - source_port_ranges: Optional[List[str]] = None, - destination_port_ranges: Optional[List[str]] = None, - direction: Optional[Union[str, "SecurityConfigurationRuleDirection"]] = None, - **kwargs - ): - """ - :keyword id: Resource ID. - :paramtype id: str - :keyword commit_time: Deployment time string. - :paramtype commit_time: ~datetime.datetime - :keyword region: Deployment region. - :paramtype region: str - :keyword configuration_description: A description of the security user configuration. - :paramtype configuration_description: str - :keyword rule_collection_description: A description of the rule collection. - :paramtype rule_collection_description: str - :keyword rule_collection_applies_to_groups: Groups for rule collection. - :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :keyword description: A description for this rule. - :paramtype description: str - :keyword protocol: Network protocol this rule applies to. Possible values include: "Tcp", - "Udp", "Icmp", "Esp", "Any", "Ah". - :paramtype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :keyword sources: The CIDR or source IP ranges. - :paramtype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :keyword destinations: The destination address prefixes. CIDR or destination IP ranges. - :paramtype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :keyword source_port_ranges: The source port ranges. - :paramtype source_port_ranges: list[str] - :keyword destination_port_ranges: The destination port ranges. - :paramtype destination_port_ranges: list[str] - :keyword direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :paramtype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - """ - super(ActiveSecurityUserRule, self).__init__(id=id, commit_time=commit_time, region=region, configuration_description=configuration_description, rule_collection_description=rule_collection_description, rule_collection_applies_to_groups=rule_collection_applies_to_groups, rule_groups=rule_groups, **kwargs) - self.kind = 'Custom' # type: str - self.description = description - self.protocol = protocol - self.sources = sources - self.destinations = destinations - self.source_port_ranges = source_port_ranges - self.destination_port_ranges = destination_port_ranges - self.direction = direction - self.provisioning_state = None - - -class ActiveSecurityUserRulesListResult(msrest.serialization.Model): - """Result of the request to list active security user rules. It contains a list of active security user rules and a skiptoken to get the next set of results. - - :ivar value: Gets a page of active security user rules. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.ActiveBaseSecurityUserRule] - :ivar skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :vartype skip_token: str - """ - - _attribute_map = { - 'value': {'key': 'value', 'type': '[ActiveBaseSecurityUserRule]'}, - 'skip_token': {'key': 'skipToken', 'type': 'str'}, - } - - def __init__( - self, - *, - value: Optional[List["ActiveBaseSecurityUserRule"]] = None, - skip_token: Optional[str] = None, + address_prefix: Optional[str] = None, + address_prefix_type: Optional[Union[str, "AddressPrefixType"]] = None, **kwargs ): """ - :keyword value: Gets a page of active security user rules. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.ActiveBaseSecurityUserRule] - :keyword skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :paramtype skip_token: str + :keyword address_prefix: Address prefix. + :paramtype address_prefix: str + :keyword address_prefix_type: Address prefix type. Possible values include: "IPPrefix", + "ServiceTag". + :paramtype address_prefix_type: str or ~azure.mgmt.network.v2022_01_01.models.AddressPrefixType """ - super(ActiveSecurityUserRulesListResult, self).__init__(**kwargs) - self.value = value - self.skip_token = skip_token + super(AddressPrefixItem, self).__init__(**kwargs) + self.address_prefix = address_prefix + self.address_prefix_type = address_prefix_type -class AddressPrefixItem(msrest.serialization.Model): - """Address prefix item. +class AddressSpace(msrest.serialization.Model): + """AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network. - :ivar address_prefix: Address prefix. - :vartype address_prefix: str - :ivar address_prefix_type: Address prefix type. Possible values include: "IPPrefix", - "ServiceTag". - :vartype address_prefix_type: str or - ~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixType + :ivar address_prefixes: A list of address blocks reserved for this virtual network in CIDR + notation. + :vartype address_prefixes: list[str] """ _attribute_map = { - 'address_prefix': {'key': 'addressPrefix', 'type': 'str'}, - 'address_prefix_type': {'key': 'addressPrefixType', 'type': 'str'}, + 'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'}, } def __init__( self, *, - address_prefix: Optional[str] = None, - address_prefix_type: Optional[Union[str, "AddressPrefixType"]] = None, + address_prefixes: Optional[List[str]] = None, **kwargs ): """ - :keyword address_prefix: Address prefix. - :paramtype address_prefix: str - :keyword address_prefix_type: Address prefix type. Possible values include: "IPPrefix", - "ServiceTag". - :paramtype address_prefix_type: str or - ~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixType + :keyword address_prefixes: A list of address blocks reserved for this virtual network in CIDR + notation. + :paramtype address_prefixes: list[str] """ - super(AddressPrefixItem, self).__init__(**kwargs) - self.address_prefix = address_prefix - self.address_prefix_type = address_prefix_type + super(AddressSpace, self).__init__(**kwargs) + self.address_prefixes = address_prefixes -class ProxyResource(msrest.serialization.Model): +class ChildResource(msrest.serialization.Model): """Proxy resource representation. Variables are only populated by the server, and will be ignored when sending a request. @@ -1172,14 +834,14 @@ def __init__( ): """ """ - super(ProxyResource, self).__init__(**kwargs) + super(ChildResource, self).__init__(**kwargs) self.id = None self.name = None self.type = None self.etag = None -class BaseAdminRule(ProxyResource): +class BaseAdminRule(ChildResource): """Network base admin rule. You probably want to use the sub-classes and not this class directly. Known @@ -1199,9 +861,9 @@ class BaseAdminRule(ProxyResource): :vartype etag: str :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleKind + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.AdminRuleKind :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData """ _validation = { @@ -1254,27 +916,26 @@ class AdminRule(BaseAdminRule): :vartype etag: str :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleKind + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.AdminRuleKind :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData :ivar description: A description for this rule. Restricted to 140 chars. :vartype description: str :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", "Icmp", "Esp", "Any", "Ah". :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :vartype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :vartype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :ivar source_port_ranges: The source port ranges. :vartype source_port_ranges: list[str] :ivar destination_port_ranges: The destination port ranges. :vartype destination_port_ranges: list[str] :ivar access: Indicates the access allowed for this particular rule. Possible values include: "Allow", "Deny", "AlwaysAllow". - :vartype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule. @@ -1282,11 +943,10 @@ class AdminRule(BaseAdminRule): :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. Possible values include: "Inbound", "Outbound". :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection :ivar provisioning_state: The provisioning state of the resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { @@ -1339,11 +999,11 @@ def __init__( :keyword protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", "Icmp", "Esp", "Any", "Ah". :paramtype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol :keyword sources: The CIDR or source IP ranges. - :paramtype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :paramtype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :keyword destinations: The destination address prefixes. CIDR or destination IP ranges. - :paramtype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] + :paramtype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] :keyword source_port_ranges: The source port ranges. :paramtype source_port_ranges: list[str] :keyword destination_port_ranges: The destination port ranges. @@ -1351,7 +1011,7 @@ def __init__( :keyword access: Indicates the access allowed for this particular rule. Possible values include: "Allow", "Deny", "AlwaysAllow". :paramtype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess :keyword priority: The priority of the rule. The value can be between 1 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule. @@ -1359,7 +1019,7 @@ def __init__( :keyword direction: Indicates if the traffic matched against the rule in inbound or outbound. Possible values include: "Inbound", "Outbound". :paramtype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection """ super(AdminRule, self).__init__(**kwargs) self.kind = 'Custom' # type: str @@ -1375,7 +1035,7 @@ def __init__( self.provisioning_state = None -class AdminRuleCollection(ProxyResource): +class AdminRuleCollection(ChildResource): """Defines the admin rule collection. Variables are only populated by the server, and will be ignored when sending a request. @@ -1389,16 +1049,15 @@ class AdminRuleCollection(ProxyResource): :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData :ivar description: A description of the admin rule collection. :vartype description: str :ivar applies_to_groups: Groups for configuration. :vartype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :ivar provisioning_state: The provisioning state of the resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { @@ -1433,7 +1092,7 @@ def __init__( :paramtype description: str :keyword applies_to_groups: Groups for configuration. :paramtype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] """ super(AdminRuleCollection, self).__init__(**kwargs) self.system_data = None @@ -1446,7 +1105,7 @@ class AdminRuleCollectionListResult(msrest.serialization.Model): """Security admin configuration rule collection list result. :ivar value: A list of network manager security admin configuration rule collections. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection] + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection] :ivar next_link: Gets the URL to get the next set of results. :vartype next_link: str """ @@ -1465,7 +1124,7 @@ def __init__( ): """ :keyword value: A list of network manager security admin configuration rule collections. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection] + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection] :keyword next_link: Gets the URL to get the next set of results. :paramtype next_link: str """ @@ -1478,7 +1137,7 @@ class AdminRuleListResult(msrest.serialization.Model): """security configuration admin rule list result. :ivar value: A list of admin rules. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule] + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BaseAdminRule] :ivar next_link: The URL to get the next set of results. :vartype next_link: str """ @@ -1497,7 +1156,7 @@ def __init__( ): """ :keyword value: A list of admin rules. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule] + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BaseAdminRule] :keyword next_link: The URL to get the next set of results. :paramtype next_link: str """ @@ -1506,235 +1165,608 @@ def __init__( self.next_link = next_link -class AzureAsyncOperationResult(msrest.serialization.Model): - """The response body contains the status of the specified asynchronous operation, indicating whether it has succeeded, is in progress, or has failed. Note that this status is distinct from the HTTP status code returned for the Get Operation Status operation itself. If the asynchronous operation succeeded, the response body includes the HTTP status code for the successful request. If the asynchronous operation failed, the response body includes the HTTP status code for the failed request and error information regarding the failure. +class Resource(msrest.serialization.Model): + """Common resource representation. - :ivar status: Status of the Azure async operation. Possible values include: "InProgress", - "Succeeded", "Failed". - :vartype status: str or ~azure.mgmt.network.v2022_02_01_preview.models.NetworkOperationStatus - :ivar error: Details of the error occurred during specified asynchronous operation. - :vartype error: ~azure.mgmt.network.v2022_02_01_preview.models.Error + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] """ + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + _attribute_map = { - 'status': {'key': 'status', 'type': 'str'}, - 'error': {'key': 'error', 'type': 'Error'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, } def __init__( self, *, - status: Optional[Union[str, "NetworkOperationStatus"]] = None, - error: Optional["Error"] = None, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, **kwargs ): """ - :keyword status: Status of the Azure async operation. Possible values include: "InProgress", - "Succeeded", "Failed". - :paramtype status: str or ~azure.mgmt.network.v2022_02_01_preview.models.NetworkOperationStatus - :keyword error: Details of the error occurred during specified asynchronous operation. - :paramtype error: ~azure.mgmt.network.v2022_02_01_preview.models.Error + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] """ - super(AzureAsyncOperationResult, self).__init__(**kwargs) - self.status = status - self.error = error - + super(Resource, self).__init__(**kwargs) + self.id = id + self.name = None + self.type = None + self.location = location + self.tags = tags -class BaseUserRule(ProxyResource): - """Network base rule. - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: UserRule, DefaultUserRule. +class ApplicationGateway(Resource): + """Application gateway resource. Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. - :ivar id: Resource ID. :vartype id: str :ivar name: Resource name. :vartype name: str :ivar type: Resource type. :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleKind - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData + :ivar zones: A list of availability zones denoting where the resource needs to come from. + :vartype zones: list[str] + :ivar identity: The identity of the application gateway, if configured. + :vartype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :ivar sku: SKU of the application gateway resource. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySku + :ivar ssl_policy: SSL policy of the application gateway resource. + :vartype ssl_policy: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicy + :ivar operational_state: Operational state of the application gateway resource. Possible values + include: "Stopped", "Starting", "Running", "Stopping". + :vartype operational_state: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayOperationalState + :ivar gateway_ip_configurations: Subnets of the application gateway resource. For default + limits, see `Application Gateway limits + `_. + :vartype gateway_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayIPConfiguration] + :ivar authentication_certificates: Authentication certificates of the application gateway + resource. For default limits, see `Application Gateway limits + `_. + :vartype authentication_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAuthenticationCertificate] + :ivar trusted_root_certificates: Trusted Root certificates of the application gateway resource. + For default limits, see `Application Gateway limits + `_. + :vartype trusted_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayTrustedRootCertificate] + :ivar trusted_client_certificates: Trusted client certificates of the application gateway + resource. For default limits, see `Application Gateway limits + `_. + :vartype trusted_client_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayTrustedClientCertificate] + :ivar ssl_certificates: SSL certificates of the application gateway resource. For default + limits, see `Application Gateway limits + `_. + :vartype ssl_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCertificate] + :ivar frontend_ip_configurations: Frontend IP addresses of the application gateway resource. + For default limits, see `Application Gateway limits + `_. + :vartype frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFrontendIPConfiguration] + :ivar frontend_ports: Frontend ports of the application gateway resource. For default limits, + see `Application Gateway limits + `_. + :vartype frontend_ports: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFrontendPort] + :ivar probes: Probes of the application gateway resource. + :vartype probes: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProbe] + :ivar backend_address_pools: Backend address pool of the application gateway resource. For + default limits, see `Application Gateway limits + `_. + :vartype backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool] + :ivar backend_http_settings_collection: Backend http settings of the application gateway + resource. For default limits, see `Application Gateway limits + `_. + :vartype backend_http_settings_collection: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHttpSettings] + :ivar backend_settings_collection: Backend settings of the application gateway resource. For + default limits, see `Application Gateway limits + `_. + :vartype backend_settings_collection: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendSettings] + :ivar http_listeners: Http listeners of the application gateway resource. For default limits, + see `Application Gateway limits + `_. + :vartype http_listeners: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayHttpListener] + :ivar listeners: Listeners of the application gateway resource. For default limits, see + `Application Gateway limits + `_. + :vartype listeners: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayListener] + :ivar ssl_profiles: SSL profiles of the application gateway resource. For default limits, see + `Application Gateway limits + `_. + :vartype ssl_profiles: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProfile] + :ivar url_path_maps: URL path map of the application gateway resource. For default limits, see + `Application Gateway limits + `_. + :vartype url_path_maps: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayUrlPathMap] + :ivar request_routing_rules: Request routing rules of the application gateway resource. + :vartype request_routing_rules: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRequestRoutingRule] + :ivar routing_rules: Routing rules of the application gateway resource. + :vartype routing_rules: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRoutingRule] + :ivar rewrite_rule_sets: Rewrite rules for the application gateway resource. + :vartype rewrite_rule_sets: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRuleSet] + :ivar redirect_configurations: Redirect configurations of the application gateway resource. For + default limits, see `Application Gateway limits + `_. + :vartype redirect_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRedirectConfiguration] + :ivar web_application_firewall_configuration: Web application firewall configuration. + :vartype web_application_firewall_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayWebApplicationFirewallConfiguration + :ivar firewall_policy: Reference to the FirewallPolicy resource. + :vartype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar enable_http2: Whether HTTP2 is enabled on the application gateway resource. + :vartype enable_http2: bool + :ivar enable_fips: Whether FIPS is enabled on the application gateway resource. + :vartype enable_fips: bool + :ivar autoscale_configuration: Autoscale Configuration. + :vartype autoscale_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAutoscaleConfiguration + :ivar private_link_configurations: PrivateLink configurations on application gateway. + :vartype private_link_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkConfiguration] + :ivar private_endpoint_connections: Private Endpoint connections on application gateway. + :vartype private_endpoint_connections: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection] + :ivar resource_guid: The resource GUID property of the application gateway resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the application gateway resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar custom_error_configurations: Custom error configurations of the application gateway + resource. + :vartype custom_error_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCustomError] + :ivar force_firewall_policy_association: If true, associates a firewall policy with an + application gateway regardless whether the policy differs from the WAF Config. + :vartype force_firewall_policy_association: bool + :ivar load_distribution_policies: Load distribution policies of the application gateway + resource. + :vartype load_distribution_policies: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayLoadDistributionPolicy] + :ivar global_configuration: Global Configuration. + :vartype global_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayGlobalConfiguration """ _validation = { - 'id': {'readonly': True}, 'name': {'readonly': True}, 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'kind': {'required': True}, - 'system_data': {'readonly': True}, + 'operational_state': {'readonly': True}, + 'private_endpoint_connections': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - } - - _subtype_map = { - 'kind': {'Custom': 'UserRule', 'Default': 'DefaultUserRule'} + 'zones': {'key': 'zones', 'type': '[str]'}, + 'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'}, + 'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'}, + 'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'}, + 'operational_state': {'key': 'properties.operationalState', 'type': 'str'}, + 'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'}, + 'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[ApplicationGatewayAuthenticationCertificate]'}, + 'trusted_root_certificates': {'key': 'properties.trustedRootCertificates', 'type': '[ApplicationGatewayTrustedRootCertificate]'}, + 'trusted_client_certificates': {'key': 'properties.trustedClientCertificates', 'type': '[ApplicationGatewayTrustedClientCertificate]'}, + 'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'}, + 'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'}, + 'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'}, + 'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'}, + 'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'}, + 'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'}, + 'backend_settings_collection': {'key': 'properties.backendSettingsCollection', 'type': '[ApplicationGatewayBackendSettings]'}, + 'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'}, + 'listeners': {'key': 'properties.listeners', 'type': '[ApplicationGatewayListener]'}, + 'ssl_profiles': {'key': 'properties.sslProfiles', 'type': '[ApplicationGatewaySslProfile]'}, + 'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'}, + 'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'}, + 'routing_rules': {'key': 'properties.routingRules', 'type': '[ApplicationGatewayRoutingRule]'}, + 'rewrite_rule_sets': {'key': 'properties.rewriteRuleSets', 'type': '[ApplicationGatewayRewriteRuleSet]'}, + 'redirect_configurations': {'key': 'properties.redirectConfigurations', 'type': '[ApplicationGatewayRedirectConfiguration]'}, + 'web_application_firewall_configuration': {'key': 'properties.webApplicationFirewallConfiguration', 'type': 'ApplicationGatewayWebApplicationFirewallConfiguration'}, + 'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'}, + 'enable_http2': {'key': 'properties.enableHttp2', 'type': 'bool'}, + 'enable_fips': {'key': 'properties.enableFips', 'type': 'bool'}, + 'autoscale_configuration': {'key': 'properties.autoscaleConfiguration', 'type': 'ApplicationGatewayAutoscaleConfiguration'}, + 'private_link_configurations': {'key': 'properties.privateLinkConfigurations', 'type': '[ApplicationGatewayPrivateLinkConfiguration]'}, + 'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[ApplicationGatewayPrivateEndpointConnection]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'custom_error_configurations': {'key': 'properties.customErrorConfigurations', 'type': '[ApplicationGatewayCustomError]'}, + 'force_firewall_policy_association': {'key': 'properties.forceFirewallPolicyAssociation', 'type': 'bool'}, + 'load_distribution_policies': {'key': 'properties.loadDistributionPolicies', 'type': '[ApplicationGatewayLoadDistributionPolicy]'}, + 'global_configuration': {'key': 'properties.globalConfiguration', 'type': 'ApplicationGatewayGlobalConfiguration'}, } def __init__( self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + zones: Optional[List[str]] = None, + identity: Optional["ManagedServiceIdentity"] = None, + sku: Optional["ApplicationGatewaySku"] = None, + ssl_policy: Optional["ApplicationGatewaySslPolicy"] = None, + gateway_ip_configurations: Optional[List["ApplicationGatewayIPConfiguration"]] = None, + authentication_certificates: Optional[List["ApplicationGatewayAuthenticationCertificate"]] = None, + trusted_root_certificates: Optional[List["ApplicationGatewayTrustedRootCertificate"]] = None, + trusted_client_certificates: Optional[List["ApplicationGatewayTrustedClientCertificate"]] = None, + ssl_certificates: Optional[List["ApplicationGatewaySslCertificate"]] = None, + frontend_ip_configurations: Optional[List["ApplicationGatewayFrontendIPConfiguration"]] = None, + frontend_ports: Optional[List["ApplicationGatewayFrontendPort"]] = None, + probes: Optional[List["ApplicationGatewayProbe"]] = None, + backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None, + backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHttpSettings"]] = None, + backend_settings_collection: Optional[List["ApplicationGatewayBackendSettings"]] = None, + http_listeners: Optional[List["ApplicationGatewayHttpListener"]] = None, + listeners: Optional[List["ApplicationGatewayListener"]] = None, + ssl_profiles: Optional[List["ApplicationGatewaySslProfile"]] = None, + url_path_maps: Optional[List["ApplicationGatewayUrlPathMap"]] = None, + request_routing_rules: Optional[List["ApplicationGatewayRequestRoutingRule"]] = None, + routing_rules: Optional[List["ApplicationGatewayRoutingRule"]] = None, + rewrite_rule_sets: Optional[List["ApplicationGatewayRewriteRuleSet"]] = None, + redirect_configurations: Optional[List["ApplicationGatewayRedirectConfiguration"]] = None, + web_application_firewall_configuration: Optional["ApplicationGatewayWebApplicationFirewallConfiguration"] = None, + firewall_policy: Optional["SubResource"] = None, + enable_http2: Optional[bool] = None, + enable_fips: Optional[bool] = None, + autoscale_configuration: Optional["ApplicationGatewayAutoscaleConfiguration"] = None, + private_link_configurations: Optional[List["ApplicationGatewayPrivateLinkConfiguration"]] = None, + custom_error_configurations: Optional[List["ApplicationGatewayCustomError"]] = None, + force_firewall_policy_association: Optional[bool] = None, + load_distribution_policies: Optional[List["ApplicationGatewayLoadDistributionPolicy"]] = None, + global_configuration: Optional["ApplicationGatewayGlobalConfiguration"] = None, **kwargs ): """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword zones: A list of availability zones denoting where the resource needs to come from. + :paramtype zones: list[str] + :keyword identity: The identity of the application gateway, if configured. + :paramtype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :keyword sku: SKU of the application gateway resource. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySku + :keyword ssl_policy: SSL policy of the application gateway resource. + :paramtype ssl_policy: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicy + :keyword gateway_ip_configurations: Subnets of the application gateway resource. For default + limits, see `Application Gateway limits + `_. + :paramtype gateway_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayIPConfiguration] + :keyword authentication_certificates: Authentication certificates of the application gateway + resource. For default limits, see `Application Gateway limits + `_. + :paramtype authentication_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAuthenticationCertificate] + :keyword trusted_root_certificates: Trusted Root certificates of the application gateway + resource. For default limits, see `Application Gateway limits + `_. + :paramtype trusted_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayTrustedRootCertificate] + :keyword trusted_client_certificates: Trusted client certificates of the application gateway + resource. For default limits, see `Application Gateway limits + `_. + :paramtype trusted_client_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayTrustedClientCertificate] + :keyword ssl_certificates: SSL certificates of the application gateway resource. For default + limits, see `Application Gateway limits + `_. + :paramtype ssl_certificates: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCertificate] + :keyword frontend_ip_configurations: Frontend IP addresses of the application gateway resource. + For default limits, see `Application Gateway limits + `_. + :paramtype frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFrontendIPConfiguration] + :keyword frontend_ports: Frontend ports of the application gateway resource. For default + limits, see `Application Gateway limits + `_. + :paramtype frontend_ports: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFrontendPort] + :keyword probes: Probes of the application gateway resource. + :paramtype probes: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProbe] + :keyword backend_address_pools: Backend address pool of the application gateway resource. For + default limits, see `Application Gateway limits + `_. + :paramtype backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool] + :keyword backend_http_settings_collection: Backend http settings of the application gateway + resource. For default limits, see `Application Gateway limits + `_. + :paramtype backend_http_settings_collection: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHttpSettings] + :keyword backend_settings_collection: Backend settings of the application gateway resource. For + default limits, see `Application Gateway limits + `_. + :paramtype backend_settings_collection: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendSettings] + :keyword http_listeners: Http listeners of the application gateway resource. For default + limits, see `Application Gateway limits + `_. + :paramtype http_listeners: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayHttpListener] + :keyword listeners: Listeners of the application gateway resource. For default limits, see + `Application Gateway limits + `_. + :paramtype listeners: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayListener] + :keyword ssl_profiles: SSL profiles of the application gateway resource. For default limits, + see `Application Gateway limits + `_. + :paramtype ssl_profiles: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProfile] + :keyword url_path_maps: URL path map of the application gateway resource. For default limits, + see `Application Gateway limits + `_. + :paramtype url_path_maps: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayUrlPathMap] + :keyword request_routing_rules: Request routing rules of the application gateway resource. + :paramtype request_routing_rules: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRequestRoutingRule] + :keyword routing_rules: Routing rules of the application gateway resource. + :paramtype routing_rules: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRoutingRule] + :keyword rewrite_rule_sets: Rewrite rules for the application gateway resource. + :paramtype rewrite_rule_sets: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRuleSet] + :keyword redirect_configurations: Redirect configurations of the application gateway resource. + For default limits, see `Application Gateway limits + `_. + :paramtype redirect_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRedirectConfiguration] + :keyword web_application_firewall_configuration: Web application firewall configuration. + :paramtype web_application_firewall_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayWebApplicationFirewallConfiguration + :keyword firewall_policy: Reference to the FirewallPolicy resource. + :paramtype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword enable_http2: Whether HTTP2 is enabled on the application gateway resource. + :paramtype enable_http2: bool + :keyword enable_fips: Whether FIPS is enabled on the application gateway resource. + :paramtype enable_fips: bool + :keyword autoscale_configuration: Autoscale Configuration. + :paramtype autoscale_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAutoscaleConfiguration + :keyword private_link_configurations: PrivateLink configurations on application gateway. + :paramtype private_link_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkConfiguration] + :keyword custom_error_configurations: Custom error configurations of the application gateway + resource. + :paramtype custom_error_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCustomError] + :keyword force_firewall_policy_association: If true, associates a firewall policy with an + application gateway regardless whether the policy differs from the WAF Config. + :paramtype force_firewall_policy_association: bool + :keyword load_distribution_policies: Load distribution policies of the application gateway + resource. + :paramtype load_distribution_policies: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayLoadDistributionPolicy] + :keyword global_configuration: Global Configuration. + :paramtype global_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayGlobalConfiguration """ - super(BaseUserRule, self).__init__(**kwargs) - self.kind = 'BaseUserRule' # type: str - self.system_data = None + super(ApplicationGateway, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.zones = zones + self.identity = identity + self.sku = sku + self.ssl_policy = ssl_policy + self.operational_state = None + self.gateway_ip_configurations = gateway_ip_configurations + self.authentication_certificates = authentication_certificates + self.trusted_root_certificates = trusted_root_certificates + self.trusted_client_certificates = trusted_client_certificates + self.ssl_certificates = ssl_certificates + self.frontend_ip_configurations = frontend_ip_configurations + self.frontend_ports = frontend_ports + self.probes = probes + self.backend_address_pools = backend_address_pools + self.backend_http_settings_collection = backend_http_settings_collection + self.backend_settings_collection = backend_settings_collection + self.http_listeners = http_listeners + self.listeners = listeners + self.ssl_profiles = ssl_profiles + self.url_path_maps = url_path_maps + self.request_routing_rules = request_routing_rules + self.routing_rules = routing_rules + self.rewrite_rule_sets = rewrite_rule_sets + self.redirect_configurations = redirect_configurations + self.web_application_firewall_configuration = web_application_firewall_configuration + self.firewall_policy = firewall_policy + self.enable_http2 = enable_http2 + self.enable_fips = enable_fips + self.autoscale_configuration = autoscale_configuration + self.private_link_configurations = private_link_configurations + self.private_endpoint_connections = None + self.resource_guid = None + self.provisioning_state = None + self.custom_error_configurations = custom_error_configurations + self.force_firewall_policy_association = force_firewall_policy_association + self.load_distribution_policies = load_distribution_policies + self.global_configuration = global_configuration -class CloudErrorBody(msrest.serialization.Model): - """An error response from the service. +class SubResource(msrest.serialization.Model): + """Reference to another subresource. - :ivar code: An identifier for the error. Codes are invariant and are intended to be consumed - programmatically. - :vartype code: str - :ivar message: A message describing the error, intended to be suitable for display in a user - interface. - :vartype message: str - :ivar target: The target of the particular error. For example, the name of the property in - error. - :vartype target: str - :ivar details: A list of additional details about the error. - :vartype details: list[~azure.mgmt.network.v2022_02_01_preview.models.CloudErrorBody] + :ivar id: Resource ID. + :vartype id: str """ _attribute_map = { - 'code': {'key': 'code', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, - 'details': {'key': 'details', 'type': '[CloudErrorBody]'}, + 'id': {'key': 'id', 'type': 'str'}, } def __init__( self, *, - code: Optional[str] = None, - message: Optional[str] = None, - target: Optional[str] = None, - details: Optional[List["CloudErrorBody"]] = None, + id: Optional[str] = None, **kwargs ): """ - :keyword code: An identifier for the error. Codes are invariant and are intended to be consumed - programmatically. - :paramtype code: str - :keyword message: A message describing the error, intended to be suitable for display in a user - interface. - :paramtype message: str - :keyword target: The target of the particular error. For example, the name of the property in - error. - :paramtype target: str - :keyword details: A list of additional details about the error. - :paramtype details: list[~azure.mgmt.network.v2022_02_01_preview.models.CloudErrorBody] + :keyword id: Resource ID. + :paramtype id: str """ - super(CloudErrorBody, self).__init__(**kwargs) - self.code = code - self.message = message - self.target = target - self.details = details + super(SubResource, self).__init__(**kwargs) + self.id = id -class Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties(msrest.serialization.Model): - """Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties. +class ApplicationGatewayAuthenticationCertificate(SubResource): + """Authentication certificates of an application gateway. Variables are only populated by the server, and will be ignored when sending a request. - :ivar principal_id: The principal id of user assigned identity. - :vartype principal_id: str - :ivar client_id: The client id of user assigned identity. - :vartype client_id: str + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the authentication certificate that is unique within an Application + Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar data: Certificate public data. + :vartype data: str + :ivar provisioning_state: The provisioning state of the authentication certificate resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { - 'principal_id': {'readonly': True}, - 'client_id': {'readonly': True}, + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, } _attribute_map = { - 'principal_id': {'key': 'principalId', 'type': 'str'}, - 'client_id': {'key': 'clientId', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'data': {'key': 'properties.data', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, } def __init__( self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + data: Optional[str] = None, **kwargs ): """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the authentication certificate that is unique within an Application + Gateway. + :paramtype name: str + :keyword data: Certificate public data. + :paramtype data: str """ - super(Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties, self).__init__(**kwargs) - self.principal_id = None - self.client_id = None + super(ApplicationGatewayAuthenticationCertificate, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.data = data + self.provisioning_state = None -class ConfigurationGroup(msrest.serialization.Model): - """The network configuration group resource. +class ApplicationGatewayAutoscaleConfiguration(msrest.serialization.Model): + """Application Gateway autoscale configuration. - Variables are only populated by the server, and will be ignored when sending a request. + All required parameters must be populated in order to send to Azure. - :ivar id: Resource ID. - :vartype id: str - :ivar description: A description of the network group. - :vartype description: str - :ivar member_type: Group member type. - :vartype member_type: str - :ivar provisioning_state: The provisioning state of the scope assignment resource. Possible - values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar min_capacity: Required. Lower bound on number of Application Gateway capacity. + :vartype min_capacity: int + :ivar max_capacity: Upper bound on number of Application Gateway capacity. + :vartype max_capacity: int """ _validation = { - 'provisioning_state': {'readonly': True}, + 'min_capacity': {'required': True, 'minimum': 0}, + 'max_capacity': {'minimum': 2}, } _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'member_type': {'key': 'properties.memberType', 'type': 'str'}, - 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'min_capacity': {'key': 'minCapacity', 'type': 'int'}, + 'max_capacity': {'key': 'maxCapacity', 'type': 'int'}, } def __init__( self, *, - id: Optional[str] = None, - description: Optional[str] = None, - member_type: Optional[str] = None, + min_capacity: int, + max_capacity: Optional[int] = None, **kwargs ): """ - :keyword id: Resource ID. - :paramtype id: str - :keyword description: A description of the network group. - :paramtype description: str - :keyword member_type: Group member type. - :paramtype member_type: str + :keyword min_capacity: Required. Lower bound on number of Application Gateway capacity. + :paramtype min_capacity: int + :keyword max_capacity: Upper bound on number of Application Gateway capacity. + :paramtype max_capacity: int """ - super(ConfigurationGroup, self).__init__(**kwargs) - self.id = id - self.description = description - self.member_type = member_type - self.provisioning_state = None + super(ApplicationGatewayAutoscaleConfiguration, self).__init__(**kwargs) + self.min_capacity = min_capacity + self.max_capacity = max_capacity -class ConnectivityConfiguration(ProxyResource): - """The network manager connectivity configuration resource. +class ApplicationGatewayAvailableSslOptions(Resource): + """Response for ApplicationGatewayAvailableSslOptions API service call. Variables are only populated by the server, and will be ignored when sending a request. @@ -1744,608 +1776,508 @@ class ConnectivityConfiguration(ProxyResource): :vartype name: str :ivar type: Resource type. :vartype type: str - :ivar etag: A unique read-only string that changes whenever the resource is updated. - :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description of the connectivity configuration. - :vartype description: str - :ivar connectivity_topology: Connectivity topology type. Possible values include: - "HubAndSpoke", "Mesh". - :vartype connectivity_topology: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityTopology - :ivar hubs: List of hubItems. - :vartype hubs: list[~azure.mgmt.network.v2022_02_01_preview.models.Hub] - :ivar is_global: Flag if global mesh is supported. Possible values include: "False", "True". - :vartype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal - :ivar applies_to_groups: Groups for configuration. - :vartype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityGroupItem] - :ivar provisioning_state: The provisioning state of the connectivity configuration resource. - Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState - :ivar delete_existing_peering: Flag if need to remove current existing peerings. Possible - values include: "False", "True". - :vartype delete_existing_peering: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingPeering + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar predefined_policies: List of available Ssl predefined policy. + :vartype predefined_policies: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar default_policy: Name of the Ssl predefined policy applied by default to application + gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", + "AppGwSslPolicy20170401S", "AppGwSslPolicy20220101", "AppGwSslPolicy20220101S". + :vartype default_policy: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicyName + :ivar available_cipher_suites: List of available Ssl cipher suites. + :vartype available_cipher_suites: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCipherSuite] + :ivar available_protocols: List of available Ssl protocols. + :vartype available_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol] """ _validation = { - 'id': {'readonly': True}, 'name': {'readonly': True}, 'type': {'readonly': True}, - 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, - 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'connectivity_topology': {'key': 'properties.connectivityTopology', 'type': 'str'}, - 'hubs': {'key': 'properties.hubs', 'type': '[Hub]'}, - 'is_global': {'key': 'properties.isGlobal', 'type': 'str'}, - 'applies_to_groups': {'key': 'properties.appliesToGroups', 'type': '[ConnectivityGroupItem]'}, - 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, - 'delete_existing_peering': {'key': 'properties.deleteExistingPeering', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'predefined_policies': {'key': 'properties.predefinedPolicies', 'type': '[SubResource]'}, + 'default_policy': {'key': 'properties.defaultPolicy', 'type': 'str'}, + 'available_cipher_suites': {'key': 'properties.availableCipherSuites', 'type': '[str]'}, + 'available_protocols': {'key': 'properties.availableProtocols', 'type': '[str]'}, } def __init__( self, *, - description: Optional[str] = None, - connectivity_topology: Optional[Union[str, "ConnectivityTopology"]] = None, - hubs: Optional[List["Hub"]] = None, - is_global: Optional[Union[str, "IsGlobal"]] = None, - applies_to_groups: Optional[List["ConnectivityGroupItem"]] = None, - delete_existing_peering: Optional[Union[str, "DeleteExistingPeering"]] = None, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + predefined_policies: Optional[List["SubResource"]] = None, + default_policy: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None, + available_cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None, + available_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None, **kwargs ): """ - :keyword description: A description of the connectivity configuration. - :paramtype description: str - :keyword connectivity_topology: Connectivity topology type. Possible values include: - "HubAndSpoke", "Mesh". - :paramtype connectivity_topology: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityTopology - :keyword hubs: List of hubItems. - :paramtype hubs: list[~azure.mgmt.network.v2022_02_01_preview.models.Hub] - :keyword is_global: Flag if global mesh is supported. Possible values include: "False", "True". - :paramtype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal - :keyword applies_to_groups: Groups for configuration. - :paramtype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityGroupItem] - :keyword delete_existing_peering: Flag if need to remove current existing peerings. Possible - values include: "False", "True". - :paramtype delete_existing_peering: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingPeering + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword predefined_policies: List of available Ssl predefined policy. + :paramtype predefined_policies: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword default_policy: Name of the Ssl predefined policy applied by default to application + gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", + "AppGwSslPolicy20170401S", "AppGwSslPolicy20220101", "AppGwSslPolicy20220101S". + :paramtype default_policy: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicyName + :keyword available_cipher_suites: List of available Ssl cipher suites. + :paramtype available_cipher_suites: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCipherSuite] + :keyword available_protocols: List of available Ssl protocols. + :paramtype available_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol] """ - super(ConnectivityConfiguration, self).__init__(**kwargs) - self.system_data = None - self.description = description - self.connectivity_topology = connectivity_topology - self.hubs = hubs - self.is_global = is_global - self.applies_to_groups = applies_to_groups - self.provisioning_state = None - self.delete_existing_peering = delete_existing_peering + super(ApplicationGatewayAvailableSslOptions, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.predefined_policies = predefined_policies + self.default_policy = default_policy + self.available_cipher_suites = available_cipher_suites + self.available_protocols = available_protocols -class ConnectivityConfigurationListResult(msrest.serialization.Model): - """Result of the request to list network manager connectivity configurations. It contains a list of configurations and a link to get the next set of results. +class ApplicationGatewayAvailableSslPredefinedPolicies(msrest.serialization.Model): + """Response for ApplicationGatewayAvailableSslOptions API service call. - :ivar value: Gets a page of Connectivity Configurations. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration] - :ivar next_link: Gets the URL to get the next page of results. + :ivar value: List of available Ssl predefined policy. + :vartype value: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPredefinedPolicy] + :ivar next_link: URL to get the next set of results. :vartype next_link: str """ _attribute_map = { - 'value': {'key': 'value', 'type': '[ConnectivityConfiguration]'}, + 'value': {'key': 'value', 'type': '[ApplicationGatewaySslPredefinedPolicy]'}, 'next_link': {'key': 'nextLink', 'type': 'str'}, } def __init__( self, *, - value: Optional[List["ConnectivityConfiguration"]] = None, + value: Optional[List["ApplicationGatewaySslPredefinedPolicy"]] = None, next_link: Optional[str] = None, **kwargs ): """ - :keyword value: Gets a page of Connectivity Configurations. + :keyword value: List of available Ssl predefined policy. :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration] - :keyword next_link: Gets the URL to get the next page of results. + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPredefinedPolicy] + :keyword next_link: URL to get the next set of results. :paramtype next_link: str """ - super(ConnectivityConfigurationListResult, self).__init__(**kwargs) + super(ApplicationGatewayAvailableSslPredefinedPolicies, self).__init__(**kwargs) self.value = value self.next_link = next_link -class ConnectivityGroupItem(msrest.serialization.Model): - """Connectivity group item. - - All required parameters must be populated in order to send to Azure. +class ApplicationGatewayAvailableWafRuleSetsResult(msrest.serialization.Model): + """Response for ApplicationGatewayAvailableWafRuleSets API service call. - :ivar network_group_id: Required. Network group Id. - :vartype network_group_id: str - :ivar use_hub_gateway: Flag if need to use hub gateway. Possible values include: "False", - "True". - :vartype use_hub_gateway: str or ~azure.mgmt.network.v2022_02_01_preview.models.UseHubGateway - :ivar is_global: Flag if global is supported. Possible values include: "False", "True". - :vartype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal - :ivar group_connectivity: Required. Group connectivity type. Possible values include: "None", - "DirectlyConnected". - :vartype group_connectivity: str or - ~azure.mgmt.network.v2022_02_01_preview.models.GroupConnectivity + :ivar value: The list of application gateway rule sets. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallRuleSet] """ - _validation = { - 'network_group_id': {'required': True}, - 'group_connectivity': {'required': True}, - } - _attribute_map = { - 'network_group_id': {'key': 'networkGroupId', 'type': 'str'}, - 'use_hub_gateway': {'key': 'useHubGateway', 'type': 'str'}, - 'is_global': {'key': 'isGlobal', 'type': 'str'}, - 'group_connectivity': {'key': 'groupConnectivity', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[ApplicationGatewayFirewallRuleSet]'}, } def __init__( self, *, - network_group_id: str, - group_connectivity: Union[str, "GroupConnectivity"], - use_hub_gateway: Optional[Union[str, "UseHubGateway"]] = None, - is_global: Optional[Union[str, "IsGlobal"]] = None, + value: Optional[List["ApplicationGatewayFirewallRuleSet"]] = None, **kwargs ): """ - :keyword network_group_id: Required. Network group Id. - :paramtype network_group_id: str - :keyword use_hub_gateway: Flag if need to use hub gateway. Possible values include: "False", - "True". - :paramtype use_hub_gateway: str or ~azure.mgmt.network.v2022_02_01_preview.models.UseHubGateway - :keyword is_global: Flag if global is supported. Possible values include: "False", "True". - :paramtype is_global: str or ~azure.mgmt.network.v2022_02_01_preview.models.IsGlobal - :keyword group_connectivity: Required. Group connectivity type. Possible values include: - "None", "DirectlyConnected". - :paramtype group_connectivity: str or - ~azure.mgmt.network.v2022_02_01_preview.models.GroupConnectivity + :keyword value: The list of application gateway rule sets. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallRuleSet] """ - super(ConnectivityGroupItem, self).__init__(**kwargs) - self.network_group_id = network_group_id - self.use_hub_gateway = use_hub_gateway - self.is_global = is_global - self.group_connectivity = group_connectivity - + super(ApplicationGatewayAvailableWafRuleSetsResult, self).__init__(**kwargs) + self.value = value -class CrossTenantScopes(msrest.serialization.Model): - """Cross tenant scopes. - Variables are only populated by the server, and will be ignored when sending a request. +class ApplicationGatewayBackendAddress(msrest.serialization.Model): + """Backend address of an application gateway. - :ivar tenant_id: Tenant ID. - :vartype tenant_id: str - :ivar management_groups: List of management groups. - :vartype management_groups: list[str] - :ivar subscriptions: List of subscriptions. - :vartype subscriptions: list[str] + :ivar fqdn: Fully qualified domain name (FQDN). + :vartype fqdn: str + :ivar ip_address: IP address. + :vartype ip_address: str """ - _validation = { - 'tenant_id': {'readonly': True}, - 'management_groups': {'readonly': True}, - 'subscriptions': {'readonly': True}, - } - _attribute_map = { - 'tenant_id': {'key': 'tenantId', 'type': 'str'}, - 'management_groups': {'key': 'managementGroups', 'type': '[str]'}, - 'subscriptions': {'key': 'subscriptions', 'type': '[str]'}, + 'fqdn': {'key': 'fqdn', 'type': 'str'}, + 'ip_address': {'key': 'ipAddress', 'type': 'str'}, } def __init__( self, + *, + fqdn: Optional[str] = None, + ip_address: Optional[str] = None, **kwargs ): """ + :keyword fqdn: Fully qualified domain name (FQDN). + :paramtype fqdn: str + :keyword ip_address: IP address. + :paramtype ip_address: str """ - super(CrossTenantScopes, self).__init__(**kwargs) - self.tenant_id = None - self.management_groups = None - self.subscriptions = None + super(ApplicationGatewayBackendAddress, self).__init__(**kwargs) + self.fqdn = fqdn + self.ip_address = ip_address -class DefaultAdminRule(BaseAdminRule): - """Network default admin rule. +class ApplicationGatewayBackendAddressPool(SubResource): + """Backend Address Pool of an application gateway. Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. - :ivar id: Resource ID. :vartype id: str - :ivar name: Resource name. + :ivar name: Name of the backend address pool that is unique within an Application Gateway. :vartype name: str - :ivar type: Resource type. - :vartype type: str :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleKind - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description for this rule. Restricted to 140 chars. - :vartype description: str - :ivar flag: Default rule flag. - :vartype flag: str - :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", - "Icmp", "Esp", "Any", "Ah". - :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar source_port_ranges: The source port ranges. - :vartype source_port_ranges: list[str] - :ivar destination_port_ranges: The destination port ranges. - :vartype destination_port_ranges: list[str] - :ivar access: Indicates the access allowed for this particular rule. Possible values include: - "Allow", "Deny", "AlwaysAllow". - :vartype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess - :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority - number must be unique for each rule in the collection. The lower the priority number, the - higher the priority of the rule. - :vartype priority: int - :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - :ivar provisioning_state: The provisioning state of the resource. Possible values include: - "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar type: Type of the resource. + :vartype type: str + :ivar backend_ip_configurations: Collection of references to IPs defined in network interfaces. + :vartype backend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration] + :ivar backend_addresses: Backend addresses. + :vartype backend_addresses: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddress] + :ivar provisioning_state: The provisioning state of the backend address pool resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'kind': {'required': True}, - 'system_data': {'readonly': True}, - 'description': {'readonly': True}, - 'protocol': {'readonly': True}, - 'sources': {'readonly': True}, - 'destinations': {'readonly': True}, - 'source_port_ranges': {'readonly': True}, - 'destination_port_ranges': {'readonly': True}, - 'access': {'readonly': True}, - 'priority': {'readonly': True}, - 'direction': {'readonly': True}, + 'type': {'readonly': True}, + 'backend_ip_configurations': {'readonly': True}, 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'flag': {'key': 'properties.flag', 'type': 'str'}, - 'protocol': {'key': 'properties.protocol', 'type': 'str'}, - 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, - 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, - 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, - 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, - 'access': {'key': 'properties.access', 'type': 'str'}, - 'priority': {'key': 'properties.priority', 'type': 'int'}, - 'direction': {'key': 'properties.direction', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'}, + 'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, } def __init__( self, *, - flag: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + backend_addresses: Optional[List["ApplicationGatewayBackendAddress"]] = None, **kwargs ): """ - :keyword flag: Default rule flag. - :paramtype flag: str + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the backend address pool that is unique within an Application Gateway. + :paramtype name: str + :keyword backend_addresses: Backend addresses. + :paramtype backend_addresses: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddress] """ - super(DefaultAdminRule, self).__init__(**kwargs) - self.kind = 'Default' # type: str - self.description = None - self.flag = flag - self.protocol = None - self.sources = None - self.destinations = None - self.source_port_ranges = None - self.destination_port_ranges = None - self.access = None - self.priority = None - self.direction = None + super(ApplicationGatewayBackendAddressPool, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.backend_ip_configurations = None + self.backend_addresses = backend_addresses self.provisioning_state = None -class DefaultUserRule(BaseUserRule): - """Network security default user rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. +class ApplicationGatewayBackendHealth(msrest.serialization.Model): + """Response for ApplicationGatewayBackendHealth API service call. - :ivar id: Resource ID. - :vartype id: str - :ivar name: Resource name. - :vartype name: str - :ivar type: Resource type. - :vartype type: str - :ivar etag: A unique read-only string that changes whenever the resource is updated. - :vartype etag: str - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleKind - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description for this rule. Restricted to 140 chars. - :vartype description: str - :ivar flag: Default rule flag. - :vartype flag: str - :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", - "Icmp", "Esp", "Any", "Ah". - :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar source_port_ranges: The source port ranges. - :vartype source_port_ranges: list[str] - :ivar destination_port_ranges: The destination port ranges. - :vartype destination_port_ranges: list[str] - :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - :ivar provisioning_state: The provisioning state of the security configuration user rule - resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar backend_address_pools: A list of ApplicationGatewayBackendHealthPool resources. + :vartype backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthPool] """ - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'etag': {'readonly': True}, - 'kind': {'required': True}, - 'system_data': {'readonly': True}, - 'description': {'readonly': True}, - 'protocol': {'readonly': True}, - 'sources': {'readonly': True}, - 'destinations': {'readonly': True}, - 'source_port_ranges': {'readonly': True}, - 'destination_port_ranges': {'readonly': True}, - 'direction': {'readonly': True}, - 'provisioning_state': {'readonly': True}, - } - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'flag': {'key': 'properties.flag', 'type': 'str'}, - 'protocol': {'key': 'properties.protocol', 'type': 'str'}, - 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, - 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, - 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, - 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, - 'direction': {'key': 'properties.direction', 'type': 'str'}, - 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'backend_address_pools': {'key': 'backendAddressPools', 'type': '[ApplicationGatewayBackendHealthPool]'}, } def __init__( self, *, - flag: Optional[str] = None, + backend_address_pools: Optional[List["ApplicationGatewayBackendHealthPool"]] = None, **kwargs ): """ - :keyword flag: Default rule flag. - :paramtype flag: str + :keyword backend_address_pools: A list of ApplicationGatewayBackendHealthPool resources. + :paramtype backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthPool] """ - super(DefaultUserRule, self).__init__(**kwargs) - self.kind = 'Default' # type: str - self.description = None - self.flag = flag - self.protocol = None - self.sources = None - self.destinations = None - self.source_port_ranges = None - self.destination_port_ranges = None - self.direction = None - self.provisioning_state = None + super(ApplicationGatewayBackendHealth, self).__init__(**kwargs) + self.backend_address_pools = backend_address_pools -class EffectiveBaseSecurityAdminRule(msrest.serialization.Model): - """Network base admin rule. +class ApplicationGatewayBackendHealthHttpSettings(msrest.serialization.Model): + """Application gateway BackendHealthHttp settings. - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: EffectiveSecurityAdminRule, EffectiveDefaultSecurityAdminRule. + :ivar backend_http_settings: Reference to an ApplicationGatewayBackendHttpSettings resource. + :vartype backend_http_settings: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHttpSettings + :ivar servers: List of ApplicationGatewayBackendHealthServer resources. + :vartype servers: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthServer] + """ - All required parameters must be populated in order to send to Azure. + _attribute_map = { + 'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'ApplicationGatewayBackendHttpSettings'}, + 'servers': {'key': 'servers', 'type': '[ApplicationGatewayBackendHealthServer]'}, + } - :ivar id: Resource ID. - :vartype id: str - :ivar configuration_description: A description of the security admin configuration. - :vartype configuration_description: str - :ivar rule_collection_description: A description of the rule collection. - :vartype rule_collection_description: str - :ivar rule_collection_applies_to_groups: Groups for rule collection. - :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveAdminRuleKind + def __init__( + self, + *, + backend_http_settings: Optional["ApplicationGatewayBackendHttpSettings"] = None, + servers: Optional[List["ApplicationGatewayBackendHealthServer"]] = None, + **kwargs + ): + """ + :keyword backend_http_settings: Reference to an ApplicationGatewayBackendHttpSettings resource. + :paramtype backend_http_settings: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHttpSettings + :keyword servers: List of ApplicationGatewayBackendHealthServer resources. + :paramtype servers: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthServer] + """ + super(ApplicationGatewayBackendHealthHttpSettings, self).__init__(**kwargs) + self.backend_http_settings = backend_http_settings + self.servers = servers + + +class ApplicationGatewayBackendHealthOnDemand(msrest.serialization.Model): + """Result of on demand test probe. + + :ivar backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource. + :vartype backend_address_pool: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool + :ivar backend_health_http_settings: Application gateway BackendHealthHttp settings. + :vartype backend_health_http_settings: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthHttpSettings """ - _validation = { - 'kind': {'required': True}, + _attribute_map = { + 'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'}, + 'backend_health_http_settings': {'key': 'backendHealthHttpSettings', 'type': 'ApplicationGatewayBackendHealthHttpSettings'}, } + def __init__( + self, + *, + backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None, + backend_health_http_settings: Optional["ApplicationGatewayBackendHealthHttpSettings"] = None, + **kwargs + ): + """ + :keyword backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource. + :paramtype backend_address_pool: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool + :keyword backend_health_http_settings: Application gateway BackendHealthHttp settings. + :paramtype backend_health_http_settings: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthHttpSettings + """ + super(ApplicationGatewayBackendHealthOnDemand, self).__init__(**kwargs) + self.backend_address_pool = backend_address_pool + self.backend_health_http_settings = backend_health_http_settings + + +class ApplicationGatewayBackendHealthPool(msrest.serialization.Model): + """Application gateway BackendHealth pool. + + :ivar backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource. + :vartype backend_address_pool: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool + :ivar backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings + resources. + :vartype backend_http_settings_collection: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthHttpSettings] + """ + _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, - 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, - 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, - 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, - 'kind': {'key': 'kind', 'type': 'str'}, + 'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'}, + 'backend_http_settings_collection': {'key': 'backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHealthHttpSettings]'}, } - _subtype_map = { - 'kind': {'Custom': 'EffectiveSecurityAdminRule', 'Default': 'EffectiveDefaultSecurityAdminRule'} + def __init__( + self, + *, + backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None, + backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHealthHttpSettings"]] = None, + **kwargs + ): + """ + :keyword backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource. + :paramtype backend_address_pool: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool + :keyword backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings + resources. + :paramtype backend_http_settings_collection: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthHttpSettings] + """ + super(ApplicationGatewayBackendHealthPool, self).__init__(**kwargs) + self.backend_address_pool = backend_address_pool + self.backend_http_settings_collection = backend_http_settings_collection + + +class ApplicationGatewayBackendHealthServer(msrest.serialization.Model): + """Application gateway backendhealth http settings. + + :ivar address: IP address or FQDN of backend server. + :vartype address: str + :ivar ip_configuration: Reference to IP configuration of backend server. + :vartype ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :ivar health: Health of backend server. Possible values include: "Unknown", "Up", "Down", + "Partial", "Draining". + :vartype health: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthServerHealth + :ivar health_probe_log: Health Probe Log. + :vartype health_probe_log: str + """ + + _attribute_map = { + 'address': {'key': 'address', 'type': 'str'}, + 'ip_configuration': {'key': 'ipConfiguration', 'type': 'NetworkInterfaceIPConfiguration'}, + 'health': {'key': 'health', 'type': 'str'}, + 'health_probe_log': {'key': 'healthProbeLog', 'type': 'str'}, } def __init__( self, *, - id: Optional[str] = None, - configuration_description: Optional[str] = None, - rule_collection_description: Optional[str] = None, - rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, - rule_groups: Optional[List["ConfigurationGroup"]] = None, + address: Optional[str] = None, + ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None, + health: Optional[Union[str, "ApplicationGatewayBackendHealthServerHealth"]] = None, + health_probe_log: Optional[str] = None, **kwargs ): """ - :keyword id: Resource ID. - :paramtype id: str - :keyword configuration_description: A description of the security admin configuration. - :paramtype configuration_description: str - :keyword rule_collection_description: A description of the rule collection. - :paramtype rule_collection_description: str - :keyword rule_collection_applies_to_groups: Groups for rule collection. - :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] + :keyword address: IP address or FQDN of backend server. + :paramtype address: str + :keyword ip_configuration: Reference to IP configuration of backend server. + :paramtype ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :keyword health: Health of backend server. Possible values include: "Unknown", "Up", "Down", + "Partial", "Draining". + :paramtype health: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthServerHealth + :keyword health_probe_log: Health Probe Log. + :paramtype health_probe_log: str """ - super(EffectiveBaseSecurityAdminRule, self).__init__(**kwargs) - self.id = id - self.configuration_description = configuration_description - self.rule_collection_description = rule_collection_description - self.rule_collection_applies_to_groups = rule_collection_applies_to_groups - self.rule_groups = rule_groups - self.kind = None # type: Optional[str] + super(ApplicationGatewayBackendHealthServer, self).__init__(**kwargs) + self.address = address + self.ip_configuration = ip_configuration + self.health = health + self.health_probe_log = health_probe_log -class EffectiveDefaultSecurityAdminRule(EffectiveBaseSecurityAdminRule): - """Network default admin rule. +class ApplicationGatewayBackendHttpSettings(SubResource): + """Backend address pool settings of an application gateway. Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. - :ivar id: Resource ID. :vartype id: str - :ivar configuration_description: A description of the security admin configuration. - :vartype configuration_description: str - :ivar rule_collection_description: A description of the rule collection. - :vartype rule_collection_description: str - :ivar rule_collection_applies_to_groups: Groups for rule collection. - :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveAdminRuleKind - :ivar description: A description for this rule. Restricted to 140 chars. - :vartype description: str - :ivar flag: Default rule flag. - :vartype flag: str - :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", - "Icmp", "Esp", "Any", "Ah". - :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar source_port_ranges: The source port ranges. - :vartype source_port_ranges: list[str] - :ivar destination_port_ranges: The destination port ranges. - :vartype destination_port_ranges: list[str] - :ivar access: Indicates the access allowed for this particular rule. Possible values include: - "Allow", "Deny", "AlwaysAllow". - :vartype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess - :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority - number must be unique for each rule in the collection. The lower the priority number, the - higher the priority of the rule. - :vartype priority: int - :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - :ivar provisioning_state: The provisioning state of the resource. Possible values include: - "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar name: Name of the backend http settings that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar port: The destination port on the backend. + :vartype port: int + :ivar protocol: The protocol used to communicate with the backend. Possible values include: + "Http", "Https", "Tcp", "Tls". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :ivar cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled", + "Disabled". + :vartype cookie_based_affinity: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCookieBasedAffinity + :ivar request_timeout: Request timeout in seconds. Application Gateway will fail the request if + response is not received within RequestTimeout. Acceptable values are from 1 second to 86400 + seconds. + :vartype request_timeout: int + :ivar probe: Probe resource of an application gateway. + :vartype probe: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar authentication_certificates: Array of references to application gateway authentication + certificates. + :vartype authentication_certificates: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar trusted_root_certificates: Array of references to application gateway trusted root + certificates. + :vartype trusted_root_certificates: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar connection_draining: Connection draining of the backend http settings resource. + :vartype connection_draining: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayConnectionDraining + :ivar host_name: Host header to be sent to the backend servers. + :vartype host_name: str + :ivar pick_host_name_from_backend_address: Whether to pick host header should be picked from + the host name of the backend server. Default value is false. + :vartype pick_host_name_from_backend_address: bool + :ivar affinity_cookie_name: Cookie name to use for the affinity cookie. + :vartype affinity_cookie_name: str + :ivar probe_enabled: Whether the probe is enabled. Default value is false. + :vartype probe_enabled: bool + :ivar path: Path which should be used as a prefix for all HTTP requests. Null means no path + will be prefixed. Default value is null. + :vartype path: str + :ivar provisioning_state: The provisioning state of the backend HTTP settings resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { - 'kind': {'required': True}, - 'description': {'readonly': True}, - 'protocol': {'readonly': True}, - 'sources': {'readonly': True}, - 'destinations': {'readonly': True}, - 'source_port_ranges': {'readonly': True}, - 'destination_port_ranges': {'readonly': True}, - 'access': {'readonly': True}, - 'priority': {'readonly': True}, - 'direction': {'readonly': True}, + 'etag': {'readonly': True}, + 'type': {'readonly': True}, 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, - 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, - 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, - 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, - 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'flag': {'key': 'properties.flag', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'port': {'key': 'properties.port', 'type': 'int'}, 'protocol': {'key': 'properties.protocol', 'type': 'str'}, - 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, - 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, - 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, - 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, - 'access': {'key': 'properties.access', 'type': 'str'}, - 'priority': {'key': 'properties.priority', 'type': 'int'}, - 'direction': {'key': 'properties.direction', 'type': 'str'}, + 'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'}, + 'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'}, + 'probe': {'key': 'properties.probe', 'type': 'SubResource'}, + 'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[SubResource]'}, + 'trusted_root_certificates': {'key': 'properties.trustedRootCertificates', 'type': '[SubResource]'}, + 'connection_draining': {'key': 'properties.connectionDraining', 'type': 'ApplicationGatewayConnectionDraining'}, + 'host_name': {'key': 'properties.hostName', 'type': 'str'}, + 'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'}, + 'affinity_cookie_name': {'key': 'properties.affinityCookieName', 'type': 'str'}, + 'probe_enabled': {'key': 'properties.probeEnabled', 'type': 'bool'}, + 'path': {'key': 'properties.path', 'type': 'str'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, } @@ -2353,11 +2285,10429 @@ def __init__( self, *, id: Optional[str] = None, - configuration_description: Optional[str] = None, - rule_collection_description: Optional[str] = None, - rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, - rule_groups: Optional[List["ConfigurationGroup"]] = None, - flag: Optional[str] = None, + name: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None, + cookie_based_affinity: Optional[Union[str, "ApplicationGatewayCookieBasedAffinity"]] = None, + request_timeout: Optional[int] = None, + probe: Optional["SubResource"] = None, + authentication_certificates: Optional[List["SubResource"]] = None, + trusted_root_certificates: Optional[List["SubResource"]] = None, + connection_draining: Optional["ApplicationGatewayConnectionDraining"] = None, + host_name: Optional[str] = None, + pick_host_name_from_backend_address: Optional[bool] = None, + affinity_cookie_name: Optional[str] = None, + probe_enabled: Optional[bool] = None, + path: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the backend http settings that is unique within an Application Gateway. + :paramtype name: str + :keyword port: The destination port on the backend. + :paramtype port: int + :keyword protocol: The protocol used to communicate with the backend. Possible values include: + "Http", "Https", "Tcp", "Tls". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :keyword cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled", + "Disabled". + :paramtype cookie_based_affinity: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCookieBasedAffinity + :keyword request_timeout: Request timeout in seconds. Application Gateway will fail the request + if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400 + seconds. + :paramtype request_timeout: int + :keyword probe: Probe resource of an application gateway. + :paramtype probe: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword authentication_certificates: Array of references to application gateway authentication + certificates. + :paramtype authentication_certificates: + list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword trusted_root_certificates: Array of references to application gateway trusted root + certificates. + :paramtype trusted_root_certificates: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword connection_draining: Connection draining of the backend http settings resource. + :paramtype connection_draining: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayConnectionDraining + :keyword host_name: Host header to be sent to the backend servers. + :paramtype host_name: str + :keyword pick_host_name_from_backend_address: Whether to pick host header should be picked from + the host name of the backend server. Default value is false. + :paramtype pick_host_name_from_backend_address: bool + :keyword affinity_cookie_name: Cookie name to use for the affinity cookie. + :paramtype affinity_cookie_name: str + :keyword probe_enabled: Whether the probe is enabled. Default value is false. + :paramtype probe_enabled: bool + :keyword path: Path which should be used as a prefix for all HTTP requests. Null means no path + will be prefixed. Default value is null. + :paramtype path: str + """ + super(ApplicationGatewayBackendHttpSettings, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.port = port + self.protocol = protocol + self.cookie_based_affinity = cookie_based_affinity + self.request_timeout = request_timeout + self.probe = probe + self.authentication_certificates = authentication_certificates + self.trusted_root_certificates = trusted_root_certificates + self.connection_draining = connection_draining + self.host_name = host_name + self.pick_host_name_from_backend_address = pick_host_name_from_backend_address + self.affinity_cookie_name = affinity_cookie_name + self.probe_enabled = probe_enabled + self.path = path + self.provisioning_state = None + + +class ApplicationGatewayBackendSettings(SubResource): + """Backend address pool settings of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the backend settings that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar port: The destination port on the backend. + :vartype port: int + :ivar protocol: The protocol used to communicate with the backend. Possible values include: + "Http", "Https", "Tcp", "Tls". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :ivar timeout: Connection timeout in seconds. Application Gateway will fail the request if + response is not received within ConnectionTimeout. Acceptable values are from 1 second to 86400 + seconds. + :vartype timeout: int + :ivar probe: Probe resource of an application gateway. + :vartype probe: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar trusted_root_certificates: Array of references to application gateway trusted root + certificates. + :vartype trusted_root_certificates: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar host_name: Server name indication to be sent to the backend servers for Tls protocol. + :vartype host_name: str + :ivar pick_host_name_from_backend_address: Whether to pick server name indication from the host + name of the backend server for Tls protocol. Default value is false. + :vartype pick_host_name_from_backend_address: bool + :ivar provisioning_state: The provisioning state of the backend HTTP settings resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'port': {'key': 'properties.port', 'type': 'int'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'timeout': {'key': 'properties.timeout', 'type': 'int'}, + 'probe': {'key': 'properties.probe', 'type': 'SubResource'}, + 'trusted_root_certificates': {'key': 'properties.trustedRootCertificates', 'type': '[SubResource]'}, + 'host_name': {'key': 'properties.hostName', 'type': 'str'}, + 'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None, + timeout: Optional[int] = None, + probe: Optional["SubResource"] = None, + trusted_root_certificates: Optional[List["SubResource"]] = None, + host_name: Optional[str] = None, + pick_host_name_from_backend_address: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the backend settings that is unique within an Application Gateway. + :paramtype name: str + :keyword port: The destination port on the backend. + :paramtype port: int + :keyword protocol: The protocol used to communicate with the backend. Possible values include: + "Http", "Https", "Tcp", "Tls". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :keyword timeout: Connection timeout in seconds. Application Gateway will fail the request if + response is not received within ConnectionTimeout. Acceptable values are from 1 second to 86400 + seconds. + :paramtype timeout: int + :keyword probe: Probe resource of an application gateway. + :paramtype probe: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword trusted_root_certificates: Array of references to application gateway trusted root + certificates. + :paramtype trusted_root_certificates: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword host_name: Server name indication to be sent to the backend servers for Tls protocol. + :paramtype host_name: str + :keyword pick_host_name_from_backend_address: Whether to pick server name indication from the + host name of the backend server for Tls protocol. Default value is false. + :paramtype pick_host_name_from_backend_address: bool + """ + super(ApplicationGatewayBackendSettings, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.port = port + self.protocol = protocol + self.timeout = timeout + self.probe = probe + self.trusted_root_certificates = trusted_root_certificates + self.host_name = host_name + self.pick_host_name_from_backend_address = pick_host_name_from_backend_address + self.provisioning_state = None + + +class ApplicationGatewayClientAuthConfiguration(msrest.serialization.Model): + """Application gateway client authentication configuration. + + :ivar verify_client_cert_issuer_dn: Verify client certificate issuer name on the application + gateway. + :vartype verify_client_cert_issuer_dn: bool + """ + + _attribute_map = { + 'verify_client_cert_issuer_dn': {'key': 'verifyClientCertIssuerDN', 'type': 'bool'}, + } + + def __init__( + self, + *, + verify_client_cert_issuer_dn: Optional[bool] = None, + **kwargs + ): + """ + :keyword verify_client_cert_issuer_dn: Verify client certificate issuer name on the application + gateway. + :paramtype verify_client_cert_issuer_dn: bool + """ + super(ApplicationGatewayClientAuthConfiguration, self).__init__(**kwargs) + self.verify_client_cert_issuer_dn = verify_client_cert_issuer_dn + + +class ApplicationGatewayConnectionDraining(msrest.serialization.Model): + """Connection draining allows open connections to a backend server to be active for a specified time after the backend server got removed from the configuration. + + All required parameters must be populated in order to send to Azure. + + :ivar enabled: Required. Whether connection draining is enabled or not. + :vartype enabled: bool + :ivar drain_timeout_in_sec: Required. The number of seconds connection draining is active. + Acceptable values are from 1 second to 3600 seconds. + :vartype drain_timeout_in_sec: int + """ + + _validation = { + 'enabled': {'required': True}, + 'drain_timeout_in_sec': {'required': True, 'maximum': 3600, 'minimum': 1}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'drain_timeout_in_sec': {'key': 'drainTimeoutInSec', 'type': 'int'}, + } + + def __init__( + self, + *, + enabled: bool, + drain_timeout_in_sec: int, + **kwargs + ): + """ + :keyword enabled: Required. Whether connection draining is enabled or not. + :paramtype enabled: bool + :keyword drain_timeout_in_sec: Required. The number of seconds connection draining is active. + Acceptable values are from 1 second to 3600 seconds. + :paramtype drain_timeout_in_sec: int + """ + super(ApplicationGatewayConnectionDraining, self).__init__(**kwargs) + self.enabled = enabled + self.drain_timeout_in_sec = drain_timeout_in_sec + + +class ApplicationGatewayCustomError(msrest.serialization.Model): + """Customer error of an application gateway. + + :ivar status_code: Status code of the application gateway customer error. Possible values + include: "HttpStatus403", "HttpStatus502". + :vartype status_code: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCustomErrorStatusCode + :ivar custom_error_page_url: Error page URL of the application gateway customer error. + :vartype custom_error_page_url: str + """ + + _attribute_map = { + 'status_code': {'key': 'statusCode', 'type': 'str'}, + 'custom_error_page_url': {'key': 'customErrorPageUrl', 'type': 'str'}, + } + + def __init__( + self, + *, + status_code: Optional[Union[str, "ApplicationGatewayCustomErrorStatusCode"]] = None, + custom_error_page_url: Optional[str] = None, + **kwargs + ): + """ + :keyword status_code: Status code of the application gateway customer error. Possible values + include: "HttpStatus403", "HttpStatus502". + :paramtype status_code: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCustomErrorStatusCode + :keyword custom_error_page_url: Error page URL of the application gateway customer error. + :paramtype custom_error_page_url: str + """ + super(ApplicationGatewayCustomError, self).__init__(**kwargs) + self.status_code = status_code + self.custom_error_page_url = custom_error_page_url + + +class ApplicationGatewayFirewallDisabledRuleGroup(msrest.serialization.Model): + """Allows to disable rules within a rule group or an entire rule group. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_group_name: Required. The name of the rule group that will be disabled. + :vartype rule_group_name: str + :ivar rules: The list of rules that will be disabled. If null, all rules of the rule group will + be disabled. + :vartype rules: list[int] + """ + + _validation = { + 'rule_group_name': {'required': True}, + } + + _attribute_map = { + 'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'}, + 'rules': {'key': 'rules', 'type': '[int]'}, + } + + def __init__( + self, + *, + rule_group_name: str, + rules: Optional[List[int]] = None, + **kwargs + ): + """ + :keyword rule_group_name: Required. The name of the rule group that will be disabled. + :paramtype rule_group_name: str + :keyword rules: The list of rules that will be disabled. If null, all rules of the rule group + will be disabled. + :paramtype rules: list[int] + """ + super(ApplicationGatewayFirewallDisabledRuleGroup, self).__init__(**kwargs) + self.rule_group_name = rule_group_name + self.rules = rules + + +class ApplicationGatewayFirewallExclusion(msrest.serialization.Model): + """Allow to exclude some variable satisfy the condition for the WAF check. + + All required parameters must be populated in order to send to Azure. + + :ivar match_variable: Required. The variable to be excluded. + :vartype match_variable: str + :ivar selector_match_operator: Required. When matchVariable is a collection, operate on the + selector to specify which elements in the collection this exclusion applies to. + :vartype selector_match_operator: str + :ivar selector: Required. When matchVariable is a collection, operator used to specify which + elements in the collection this exclusion applies to. + :vartype selector: str + """ + + _validation = { + 'match_variable': {'required': True}, + 'selector_match_operator': {'required': True}, + 'selector': {'required': True}, + } + + _attribute_map = { + 'match_variable': {'key': 'matchVariable', 'type': 'str'}, + 'selector_match_operator': {'key': 'selectorMatchOperator', 'type': 'str'}, + 'selector': {'key': 'selector', 'type': 'str'}, + } + + def __init__( + self, + *, + match_variable: str, + selector_match_operator: str, + selector: str, + **kwargs + ): + """ + :keyword match_variable: Required. The variable to be excluded. + :paramtype match_variable: str + :keyword selector_match_operator: Required. When matchVariable is a collection, operate on the + selector to specify which elements in the collection this exclusion applies to. + :paramtype selector_match_operator: str + :keyword selector: Required. When matchVariable is a collection, operator used to specify which + elements in the collection this exclusion applies to. + :paramtype selector: str + """ + super(ApplicationGatewayFirewallExclusion, self).__init__(**kwargs) + self.match_variable = match_variable + self.selector_match_operator = selector_match_operator + self.selector = selector + + +class ApplicationGatewayFirewallRule(msrest.serialization.Model): + """A web application firewall rule. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_id: Required. The identifier of the web application firewall rule. + :vartype rule_id: int + :ivar description: The description of the web application firewall rule. + :vartype description: str + """ + + _validation = { + 'rule_id': {'required': True}, + } + + _attribute_map = { + 'rule_id': {'key': 'ruleId', 'type': 'int'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__( + self, + *, + rule_id: int, + description: Optional[str] = None, + **kwargs + ): + """ + :keyword rule_id: Required. The identifier of the web application firewall rule. + :paramtype rule_id: int + :keyword description: The description of the web application firewall rule. + :paramtype description: str + """ + super(ApplicationGatewayFirewallRule, self).__init__(**kwargs) + self.rule_id = rule_id + self.description = description + + +class ApplicationGatewayFirewallRuleGroup(msrest.serialization.Model): + """A web application firewall rule group. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_group_name: Required. The name of the web application firewall rule group. + :vartype rule_group_name: str + :ivar description: The description of the web application firewall rule group. + :vartype description: str + :ivar rules: Required. The rules of the web application firewall rule group. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallRule] + """ + + _validation = { + 'rule_group_name': {'required': True}, + 'rules': {'required': True}, + } + + _attribute_map = { + 'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'rules': {'key': 'rules', 'type': '[ApplicationGatewayFirewallRule]'}, + } + + def __init__( + self, + *, + rule_group_name: str, + rules: List["ApplicationGatewayFirewallRule"], + description: Optional[str] = None, + **kwargs + ): + """ + :keyword rule_group_name: Required. The name of the web application firewall rule group. + :paramtype rule_group_name: str + :keyword description: The description of the web application firewall rule group. + :paramtype description: str + :keyword rules: Required. The rules of the web application firewall rule group. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallRule] + """ + super(ApplicationGatewayFirewallRuleGroup, self).__init__(**kwargs) + self.rule_group_name = rule_group_name + self.description = description + self.rules = rules + + +class ApplicationGatewayFirewallRuleSet(Resource): + """A web application firewall rule set. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar provisioning_state: The provisioning state of the web application firewall rule set. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar rule_set_type: The type of the web application firewall rule set. + :vartype rule_set_type: str + :ivar rule_set_version: The version of the web application firewall rule set type. + :vartype rule_set_version: str + :ivar rule_groups: The rule groups of the web application firewall rule set. + :vartype rule_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallRuleGroup] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'rule_set_type': {'key': 'properties.ruleSetType', 'type': 'str'}, + 'rule_set_version': {'key': 'properties.ruleSetVersion', 'type': 'str'}, + 'rule_groups': {'key': 'properties.ruleGroups', 'type': '[ApplicationGatewayFirewallRuleGroup]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + rule_set_type: Optional[str] = None, + rule_set_version: Optional[str] = None, + rule_groups: Optional[List["ApplicationGatewayFirewallRuleGroup"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword rule_set_type: The type of the web application firewall rule set. + :paramtype rule_set_type: str + :keyword rule_set_version: The version of the web application firewall rule set type. + :paramtype rule_set_version: str + :keyword rule_groups: The rule groups of the web application firewall rule set. + :paramtype rule_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallRuleGroup] + """ + super(ApplicationGatewayFirewallRuleSet, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.provisioning_state = None + self.rule_set_type = rule_set_type + self.rule_set_version = rule_set_version + self.rule_groups = rule_groups + + +class ApplicationGatewayFrontendIPConfiguration(SubResource): + """Frontend IP configuration of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the frontend IP configuration that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar private_ip_address: PrivateIPAddress of the network interface IP Configuration. + :vartype private_ip_address: str + :ivar private_ip_allocation_method: The private IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar subnet: Reference to the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar public_ip_address: Reference to the PublicIP resource. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar private_link_configuration: Reference to the application gateway private link + configuration. + :vartype private_link_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the frontend IP configuration resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'}, + 'private_link_configuration': {'key': 'properties.privateLinkConfiguration', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_ip_address: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + subnet: Optional["SubResource"] = None, + public_ip_address: Optional["SubResource"] = None, + private_link_configuration: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the frontend IP configuration that is unique within an Application + Gateway. + :paramtype name: str + :keyword private_ip_address: PrivateIPAddress of the network interface IP Configuration. + :paramtype private_ip_address: str + :keyword private_ip_allocation_method: The private IP address allocation method. Possible + values include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword subnet: Reference to the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword public_ip_address: Reference to the PublicIP resource. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword private_link_configuration: Reference to the application gateway private link + configuration. + :paramtype private_link_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayFrontendIPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.private_ip_address = private_ip_address + self.private_ip_allocation_method = private_ip_allocation_method + self.subnet = subnet + self.public_ip_address = public_ip_address + self.private_link_configuration = private_link_configuration + self.provisioning_state = None + + +class ApplicationGatewayFrontendPort(SubResource): + """Frontend port of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the frontend port that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar port: Frontend port. + :vartype port: int + :ivar provisioning_state: The provisioning state of the frontend port resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'port': {'key': 'properties.port', 'type': 'int'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the frontend port that is unique within an Application Gateway. + :paramtype name: str + :keyword port: Frontend port. + :paramtype port: int + """ + super(ApplicationGatewayFrontendPort, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.port = port + self.provisioning_state = None + + +class ApplicationGatewayGlobalConfiguration(msrest.serialization.Model): + """Application Gateway global configuration. + + :ivar enable_request_buffering: Enable request buffering. + :vartype enable_request_buffering: bool + :ivar enable_response_buffering: Enable response buffering. + :vartype enable_response_buffering: bool + """ + + _attribute_map = { + 'enable_request_buffering': {'key': 'enableRequestBuffering', 'type': 'bool'}, + 'enable_response_buffering': {'key': 'enableResponseBuffering', 'type': 'bool'}, + } + + def __init__( + self, + *, + enable_request_buffering: Optional[bool] = None, + enable_response_buffering: Optional[bool] = None, + **kwargs + ): + """ + :keyword enable_request_buffering: Enable request buffering. + :paramtype enable_request_buffering: bool + :keyword enable_response_buffering: Enable response buffering. + :paramtype enable_response_buffering: bool + """ + super(ApplicationGatewayGlobalConfiguration, self).__init__(**kwargs) + self.enable_request_buffering = enable_request_buffering + self.enable_response_buffering = enable_response_buffering + + +class ApplicationGatewayHeaderConfiguration(msrest.serialization.Model): + """Header configuration of the Actions set in Application Gateway. + + :ivar header_name: Header name of the header configuration. + :vartype header_name: str + :ivar header_value: Header value of the header configuration. + :vartype header_value: str + """ + + _attribute_map = { + 'header_name': {'key': 'headerName', 'type': 'str'}, + 'header_value': {'key': 'headerValue', 'type': 'str'}, + } + + def __init__( + self, + *, + header_name: Optional[str] = None, + header_value: Optional[str] = None, + **kwargs + ): + """ + :keyword header_name: Header name of the header configuration. + :paramtype header_name: str + :keyword header_value: Header value of the header configuration. + :paramtype header_value: str + """ + super(ApplicationGatewayHeaderConfiguration, self).__init__(**kwargs) + self.header_name = header_name + self.header_value = header_value + + +class ApplicationGatewayHttpListener(SubResource): + """Http listener of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the HTTP listener that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar frontend_ip_configuration: Frontend IP configuration resource of an application gateway. + :vartype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar frontend_port: Frontend port resource of an application gateway. + :vartype frontend_port: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar protocol: Protocol of the HTTP listener. Possible values include: "Http", "Https", "Tcp", + "Tls". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :ivar host_name: Host name of HTTP listener. + :vartype host_name: str + :ivar ssl_certificate: SSL certificate resource of an application gateway. + :vartype ssl_certificate: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar ssl_profile: SSL profile resource of the application gateway. + :vartype ssl_profile: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar require_server_name_indication: Applicable only if protocol is https. Enables SNI for + multi-hosting. + :vartype require_server_name_indication: bool + :ivar provisioning_state: The provisioning state of the HTTP listener resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar custom_error_configurations: Custom error configurations of the HTTP listener. + :vartype custom_error_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCustomError] + :ivar firewall_policy: Reference to the FirewallPolicy resource. + :vartype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar host_names: List of Host names for HTTP Listener that allows special wildcard characters + as well. + :vartype host_names: list[str] + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'}, + 'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'host_name': {'key': 'properties.hostName', 'type': 'str'}, + 'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'}, + 'ssl_profile': {'key': 'properties.sslProfile', 'type': 'SubResource'}, + 'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'custom_error_configurations': {'key': 'properties.customErrorConfigurations', 'type': '[ApplicationGatewayCustomError]'}, + 'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'}, + 'host_names': {'key': 'properties.hostNames', 'type': '[str]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + frontend_ip_configuration: Optional["SubResource"] = None, + frontend_port: Optional["SubResource"] = None, + protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None, + host_name: Optional[str] = None, + ssl_certificate: Optional["SubResource"] = None, + ssl_profile: Optional["SubResource"] = None, + require_server_name_indication: Optional[bool] = None, + custom_error_configurations: Optional[List["ApplicationGatewayCustomError"]] = None, + firewall_policy: Optional["SubResource"] = None, + host_names: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the HTTP listener that is unique within an Application Gateway. + :paramtype name: str + :keyword frontend_ip_configuration: Frontend IP configuration resource of an application + gateway. + :paramtype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword frontend_port: Frontend port resource of an application gateway. + :paramtype frontend_port: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword protocol: Protocol of the HTTP listener. Possible values include: "Http", "Https", + "Tcp", "Tls". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :keyword host_name: Host name of HTTP listener. + :paramtype host_name: str + :keyword ssl_certificate: SSL certificate resource of an application gateway. + :paramtype ssl_certificate: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword ssl_profile: SSL profile resource of the application gateway. + :paramtype ssl_profile: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword require_server_name_indication: Applicable only if protocol is https. Enables SNI for + multi-hosting. + :paramtype require_server_name_indication: bool + :keyword custom_error_configurations: Custom error configurations of the HTTP listener. + :paramtype custom_error_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayCustomError] + :keyword firewall_policy: Reference to the FirewallPolicy resource. + :paramtype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword host_names: List of Host names for HTTP Listener that allows special wildcard + characters as well. + :paramtype host_names: list[str] + """ + super(ApplicationGatewayHttpListener, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.frontend_ip_configuration = frontend_ip_configuration + self.frontend_port = frontend_port + self.protocol = protocol + self.host_name = host_name + self.ssl_certificate = ssl_certificate + self.ssl_profile = ssl_profile + self.require_server_name_indication = require_server_name_indication + self.provisioning_state = None + self.custom_error_configurations = custom_error_configurations + self.firewall_policy = firewall_policy + self.host_names = host_names + + +class ApplicationGatewayIPConfiguration(SubResource): + """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the IP configuration that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar subnet: Reference to the subnet resource. A subnet from where application gateway gets + its private address. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the application gateway IP configuration + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + subnet: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the IP configuration that is unique within an Application Gateway. + :paramtype name: str + :keyword subnet: Reference to the subnet resource. A subnet from where application gateway gets + its private address. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayIPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.subnet = subnet + self.provisioning_state = None + + +class ApplicationGatewayListener(SubResource): + """Listener of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the listener that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar frontend_ip_configuration: Frontend IP configuration resource of an application gateway. + :vartype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar frontend_port: Frontend port resource of an application gateway. + :vartype frontend_port: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar protocol: Protocol of the listener. Possible values include: "Http", "Https", "Tcp", + "Tls". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :ivar ssl_certificate: SSL certificate resource of an application gateway. + :vartype ssl_certificate: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar ssl_profile: SSL profile resource of the application gateway. + :vartype ssl_profile: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the listener resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'}, + 'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'}, + 'ssl_profile': {'key': 'properties.sslProfile', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + frontend_ip_configuration: Optional["SubResource"] = None, + frontend_port: Optional["SubResource"] = None, + protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None, + ssl_certificate: Optional["SubResource"] = None, + ssl_profile: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the listener that is unique within an Application Gateway. + :paramtype name: str + :keyword frontend_ip_configuration: Frontend IP configuration resource of an application + gateway. + :paramtype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword frontend_port: Frontend port resource of an application gateway. + :paramtype frontend_port: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword protocol: Protocol of the listener. Possible values include: "Http", "Https", "Tcp", + "Tls". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :keyword ssl_certificate: SSL certificate resource of an application gateway. + :paramtype ssl_certificate: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword ssl_profile: SSL profile resource of the application gateway. + :paramtype ssl_profile: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayListener, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.frontend_ip_configuration = frontend_ip_configuration + self.frontend_port = frontend_port + self.protocol = protocol + self.ssl_certificate = ssl_certificate + self.ssl_profile = ssl_profile + self.provisioning_state = None + + +class ApplicationGatewayListResult(msrest.serialization.Model): + """Response for ListApplicationGateways API service call. + + :ivar value: List of an application gateways in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGateway] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ApplicationGateway]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ApplicationGateway"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of an application gateways in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGateway] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(ApplicationGatewayListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ApplicationGatewayLoadDistributionPolicy(SubResource): + """Load Distribution Policy of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the load distribution policy that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar load_distribution_targets: Load Distribution Targets resource of an application gateway. + :vartype load_distribution_targets: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayLoadDistributionTarget] + :ivar load_distribution_algorithm: Load Distribution Targets resource of an application + gateway. Possible values include: "RoundRobin", "LeastConnections", "IpHash". + :vartype load_distribution_algorithm: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayLoadDistributionAlgorithm + :ivar provisioning_state: The provisioning state of the Load Distribution Policy resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'load_distribution_targets': {'key': 'properties.loadDistributionTargets', 'type': '[ApplicationGatewayLoadDistributionTarget]'}, + 'load_distribution_algorithm': {'key': 'properties.loadDistributionAlgorithm', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + load_distribution_targets: Optional[List["ApplicationGatewayLoadDistributionTarget"]] = None, + load_distribution_algorithm: Optional[Union[str, "ApplicationGatewayLoadDistributionAlgorithm"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the load distribution policy that is unique within an Application + Gateway. + :paramtype name: str + :keyword load_distribution_targets: Load Distribution Targets resource of an application + gateway. + :paramtype load_distribution_targets: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayLoadDistributionTarget] + :keyword load_distribution_algorithm: Load Distribution Targets resource of an application + gateway. Possible values include: "RoundRobin", "LeastConnections", "IpHash". + :paramtype load_distribution_algorithm: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayLoadDistributionAlgorithm + """ + super(ApplicationGatewayLoadDistributionPolicy, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.load_distribution_targets = load_distribution_targets + self.load_distribution_algorithm = load_distribution_algorithm + self.provisioning_state = None + + +class ApplicationGatewayLoadDistributionTarget(SubResource): + """Load Distribution Target of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the load distribution policy that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar weight_per_server: Weight per server. Range between 1 and 100. + :vartype weight_per_server: int + :ivar backend_address_pool: Backend address pool resource of the application gateway. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'weight_per_server': {'maximum': 100, 'minimum': 1}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'weight_per_server': {'key': 'properties.weightPerServer', 'type': 'int'}, + 'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + weight_per_server: Optional[int] = None, + backend_address_pool: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the load distribution policy that is unique within an Application + Gateway. + :paramtype name: str + :keyword weight_per_server: Weight per server. Range between 1 and 100. + :paramtype weight_per_server: int + :keyword backend_address_pool: Backend address pool resource of the application gateway. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayLoadDistributionTarget, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.weight_per_server = weight_per_server + self.backend_address_pool = backend_address_pool + + +class ApplicationGatewayOnDemandProbe(msrest.serialization.Model): + """Details of on demand test probe request. + + :ivar protocol: The protocol used for the probe. Possible values include: "Http", "Https", + "Tcp", "Tls". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :ivar host: Host name to send the probe to. + :vartype host: str + :ivar path: Relative path of probe. Valid path starts from '/'. Probe is sent to + :code:``://:code:``::code:``:code:``. + :vartype path: str + :ivar timeout: The probe timeout in seconds. Probe marked as failed if valid response is not + received with this timeout period. Acceptable values are from 1 second to 86400 seconds. + :vartype timeout: int + :ivar pick_host_name_from_backend_http_settings: Whether the host header should be picked from + the backend http settings. Default value is false. + :vartype pick_host_name_from_backend_http_settings: bool + :ivar match: Criterion for classifying a healthy probe response. + :vartype match: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProbeHealthResponseMatch + :ivar backend_address_pool: Reference to backend pool of application gateway to which probe + request will be sent. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar backend_http_settings: Reference to backend http setting of application gateway to be + used for test probe. + :vartype backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _attribute_map = { + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'host': {'key': 'host', 'type': 'str'}, + 'path': {'key': 'path', 'type': 'str'}, + 'timeout': {'key': 'timeout', 'type': 'int'}, + 'pick_host_name_from_backend_http_settings': {'key': 'pickHostNameFromBackendHttpSettings', 'type': 'bool'}, + 'match': {'key': 'match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'}, + 'backend_address_pool': {'key': 'backendAddressPool', 'type': 'SubResource'}, + 'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None, + host: Optional[str] = None, + path: Optional[str] = None, + timeout: Optional[int] = None, + pick_host_name_from_backend_http_settings: Optional[bool] = None, + match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None, + backend_address_pool: Optional["SubResource"] = None, + backend_http_settings: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword protocol: The protocol used for the probe. Possible values include: "Http", "Https", + "Tcp", "Tls". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :keyword host: Host name to send the probe to. + :paramtype host: str + :keyword path: Relative path of probe. Valid path starts from '/'. Probe is sent to + :code:``://:code:``::code:``:code:``. + :paramtype path: str + :keyword timeout: The probe timeout in seconds. Probe marked as failed if valid response is not + received with this timeout period. Acceptable values are from 1 second to 86400 seconds. + :paramtype timeout: int + :keyword pick_host_name_from_backend_http_settings: Whether the host header should be picked + from the backend http settings. Default value is false. + :paramtype pick_host_name_from_backend_http_settings: bool + :keyword match: Criterion for classifying a healthy probe response. + :paramtype match: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProbeHealthResponseMatch + :keyword backend_address_pool: Reference to backend pool of application gateway to which probe + request will be sent. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword backend_http_settings: Reference to backend http setting of application gateway to be + used for test probe. + :paramtype backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayOnDemandProbe, self).__init__(**kwargs) + self.protocol = protocol + self.host = host + self.path = path + self.timeout = timeout + self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings + self.match = match + self.backend_address_pool = backend_address_pool + self.backend_http_settings = backend_http_settings + + +class ApplicationGatewayPathRule(SubResource): + """Path rule of URL path map of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the path rule that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar paths: Path rules of URL path map. + :vartype paths: list[str] + :ivar backend_address_pool: Backend address pool resource of URL path map path rule. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar backend_http_settings: Backend http settings resource of URL path map path rule. + :vartype backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar redirect_configuration: Redirect configuration resource of URL path map path rule. + :vartype redirect_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar rewrite_rule_set: Rewrite rule set resource of URL path map path rule. + :vartype rewrite_rule_set: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar load_distribution_policy: Load Distribution Policy resource of URL path map path rule. + :vartype load_distribution_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the path rule resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar firewall_policy: Reference to the FirewallPolicy resource. + :vartype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'paths': {'key': 'properties.paths', 'type': '[str]'}, + 'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'}, + 'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'}, + 'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'}, + 'rewrite_rule_set': {'key': 'properties.rewriteRuleSet', 'type': 'SubResource'}, + 'load_distribution_policy': {'key': 'properties.loadDistributionPolicy', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + paths: Optional[List[str]] = None, + backend_address_pool: Optional["SubResource"] = None, + backend_http_settings: Optional["SubResource"] = None, + redirect_configuration: Optional["SubResource"] = None, + rewrite_rule_set: Optional["SubResource"] = None, + load_distribution_policy: Optional["SubResource"] = None, + firewall_policy: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the path rule that is unique within an Application Gateway. + :paramtype name: str + :keyword paths: Path rules of URL path map. + :paramtype paths: list[str] + :keyword backend_address_pool: Backend address pool resource of URL path map path rule. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword backend_http_settings: Backend http settings resource of URL path map path rule. + :paramtype backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword redirect_configuration: Redirect configuration resource of URL path map path rule. + :paramtype redirect_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword rewrite_rule_set: Rewrite rule set resource of URL path map path rule. + :paramtype rewrite_rule_set: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword load_distribution_policy: Load Distribution Policy resource of URL path map path rule. + :paramtype load_distribution_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword firewall_policy: Reference to the FirewallPolicy resource. + :paramtype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayPathRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.paths = paths + self.backend_address_pool = backend_address_pool + self.backend_http_settings = backend_http_settings + self.redirect_configuration = redirect_configuration + self.rewrite_rule_set = rewrite_rule_set + self.load_distribution_policy = load_distribution_policy + self.provisioning_state = None + self.firewall_policy = firewall_policy + + +class ApplicationGatewayPrivateEndpointConnection(SubResource): + """Private Endpoint connection on an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the private endpoint connection on an application gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar private_endpoint: The resource of private end point. + :vartype private_endpoint: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint + :ivar private_link_service_connection_state: A collection of information about the state of the + connection between service consumer and provider. + :vartype private_link_service_connection_state: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnectionState + :ivar provisioning_state: The provisioning state of the application gateway private endpoint + connection resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar link_identifier: The consumer link id. + :vartype link_identifier: str + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'private_endpoint': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'link_identifier': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'}, + 'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'link_identifier': {'key': 'properties.linkIdentifier', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the private endpoint connection on an application gateway. + :paramtype name: str + :keyword private_link_service_connection_state: A collection of information about the state of + the connection between service consumer and provider. + :paramtype private_link_service_connection_state: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnectionState + """ + super(ApplicationGatewayPrivateEndpointConnection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.private_endpoint = None + self.private_link_service_connection_state = private_link_service_connection_state + self.provisioning_state = None + self.link_identifier = None + + +class ApplicationGatewayPrivateEndpointConnectionListResult(msrest.serialization.Model): + """Response for ListApplicationGatewayPrivateEndpointConnection API service call. Gets all private endpoint connections for an application gateway. + + :ivar value: List of private endpoint connections on an application gateway. + :vartype value: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ApplicationGatewayPrivateEndpointConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ApplicationGatewayPrivateEndpointConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of private endpoint connections on an application gateway. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(ApplicationGatewayPrivateEndpointConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ApplicationGatewayPrivateLinkConfiguration(SubResource): + """Private Link Configuration on an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the private link configuration that is unique within an Application + Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar ip_configurations: An array of application gateway private link ip configurations. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkIpConfiguration] + :ivar provisioning_state: The provisioning state of the application gateway private link + configuration. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[ApplicationGatewayPrivateLinkIpConfiguration]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + ip_configurations: Optional[List["ApplicationGatewayPrivateLinkIpConfiguration"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the private link configuration that is unique within an Application + Gateway. + :paramtype name: str + :keyword ip_configurations: An array of application gateway private link ip configurations. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkIpConfiguration] + """ + super(ApplicationGatewayPrivateLinkConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.ip_configurations = ip_configurations + self.provisioning_state = None + + +class ApplicationGatewayPrivateLinkIpConfiguration(SubResource): + """The application gateway private link ip configuration. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of application gateway private link ip configuration. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: The resource type. + :vartype type: str + :ivar private_ip_address: The private IP address of the IP configuration. + :vartype private_ip_address: str + :ivar private_ip_allocation_method: The private IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar subnet: Reference to the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar primary: Whether the ip configuration is primary or not. + :vartype primary: bool + :ivar provisioning_state: The provisioning state of the application gateway private link IP + configuration. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'primary': {'key': 'properties.primary', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_ip_address: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + subnet: Optional["SubResource"] = None, + primary: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of application gateway private link ip configuration. + :paramtype name: str + :keyword private_ip_address: The private IP address of the IP configuration. + :paramtype private_ip_address: str + :keyword private_ip_allocation_method: The private IP address allocation method. Possible + values include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword subnet: Reference to the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword primary: Whether the ip configuration is primary or not. + :paramtype primary: bool + """ + super(ApplicationGatewayPrivateLinkIpConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.private_ip_address = private_ip_address + self.private_ip_allocation_method = private_ip_allocation_method + self.subnet = subnet + self.primary = primary + self.provisioning_state = None + + +class ApplicationGatewayPrivateLinkResource(SubResource): + """PrivateLink Resource of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the private link resource that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar group_id: Group identifier of private link resource. + :vartype group_id: str + :ivar required_members: Required member names of private link resource. + :vartype required_members: list[str] + :ivar required_zone_names: Required DNS zone names of the the private link resource. + :vartype required_zone_names: list[str] + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'group_id': {'readonly': True}, + 'required_members': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'group_id': {'key': 'properties.groupId', 'type': 'str'}, + 'required_members': {'key': 'properties.requiredMembers', 'type': '[str]'}, + 'required_zone_names': {'key': 'properties.requiredZoneNames', 'type': '[str]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + required_zone_names: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the private link resource that is unique within an Application Gateway. + :paramtype name: str + :keyword required_zone_names: Required DNS zone names of the the private link resource. + :paramtype required_zone_names: list[str] + """ + super(ApplicationGatewayPrivateLinkResource, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.group_id = None + self.required_members = None + self.required_zone_names = required_zone_names + + +class ApplicationGatewayPrivateLinkResourceListResult(msrest.serialization.Model): + """Response for ListApplicationGatewayPrivateLinkResources API service call. Gets all private link resources for an application gateway. + + :ivar value: List of private link resources of an application gateway. + :vartype value: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkResource] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ApplicationGatewayPrivateLinkResource]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ApplicationGatewayPrivateLinkResource"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of private link resources of an application gateway. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkResource] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(ApplicationGatewayPrivateLinkResourceListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ApplicationGatewayProbe(SubResource): + """Probe of the application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the probe that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar protocol: The protocol used for the probe. Possible values include: "Http", "Https", + "Tcp", "Tls". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :ivar host: Host name to send the probe to. + :vartype host: str + :ivar path: Relative path of probe. Valid path starts from '/'. Probe is sent to + :code:``://:code:``::code:``:code:``. + :vartype path: str + :ivar interval: The probing interval in seconds. This is the time interval between two + consecutive probes. Acceptable values are from 1 second to 86400 seconds. + :vartype interval: int + :ivar timeout: The probe timeout in seconds. Probe marked as failed if valid response is not + received with this timeout period. Acceptable values are from 1 second to 86400 seconds. + :vartype timeout: int + :ivar unhealthy_threshold: The probe retry count. Backend server is marked down after + consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second + to 20. + :vartype unhealthy_threshold: int + :ivar pick_host_name_from_backend_http_settings: Whether the host header should be picked from + the backend http settings. Default value is false. + :vartype pick_host_name_from_backend_http_settings: bool + :ivar pick_host_name_from_backend_settings: Whether the server name indication should be picked + from the backend settings for Tls protocol. Default value is false. + :vartype pick_host_name_from_backend_settings: bool + :ivar min_servers: Minimum number of servers that are always marked healthy. Default value is + 0. + :vartype min_servers: int + :ivar match: Criterion for classifying a healthy probe response. + :vartype match: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProbeHealthResponseMatch + :ivar provisioning_state: The provisioning state of the probe resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar port: Custom port which will be used for probing the backend servers. The valid value + ranges from 1 to 65535. In case not set, port from http settings will be used. This property is + valid for Standard_v2 and WAF_v2 only. + :vartype port: int + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'port': {'maximum': 65535, 'minimum': 1}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'host': {'key': 'properties.host', 'type': 'str'}, + 'path': {'key': 'properties.path', 'type': 'str'}, + 'interval': {'key': 'properties.interval', 'type': 'int'}, + 'timeout': {'key': 'properties.timeout', 'type': 'int'}, + 'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'}, + 'pick_host_name_from_backend_http_settings': {'key': 'properties.pickHostNameFromBackendHttpSettings', 'type': 'bool'}, + 'pick_host_name_from_backend_settings': {'key': 'properties.pickHostNameFromBackendSettings', 'type': 'bool'}, + 'min_servers': {'key': 'properties.minServers', 'type': 'int'}, + 'match': {'key': 'properties.match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'port': {'key': 'properties.port', 'type': 'int'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None, + host: Optional[str] = None, + path: Optional[str] = None, + interval: Optional[int] = None, + timeout: Optional[int] = None, + unhealthy_threshold: Optional[int] = None, + pick_host_name_from_backend_http_settings: Optional[bool] = None, + pick_host_name_from_backend_settings: Optional[bool] = None, + min_servers: Optional[int] = None, + match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the probe that is unique within an Application Gateway. + :paramtype name: str + :keyword protocol: The protocol used for the probe. Possible values include: "Http", "Https", + "Tcp", "Tls". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProtocol + :keyword host: Host name to send the probe to. + :paramtype host: str + :keyword path: Relative path of probe. Valid path starts from '/'. Probe is sent to + :code:``://:code:``::code:``:code:``. + :paramtype path: str + :keyword interval: The probing interval in seconds. This is the time interval between two + consecutive probes. Acceptable values are from 1 second to 86400 seconds. + :paramtype interval: int + :keyword timeout: The probe timeout in seconds. Probe marked as failed if valid response is not + received with this timeout period. Acceptable values are from 1 second to 86400 seconds. + :paramtype timeout: int + :keyword unhealthy_threshold: The probe retry count. Backend server is marked down after + consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second + to 20. + :paramtype unhealthy_threshold: int + :keyword pick_host_name_from_backend_http_settings: Whether the host header should be picked + from the backend http settings. Default value is false. + :paramtype pick_host_name_from_backend_http_settings: bool + :keyword pick_host_name_from_backend_settings: Whether the server name indication should be + picked from the backend settings for Tls protocol. Default value is false. + :paramtype pick_host_name_from_backend_settings: bool + :keyword min_servers: Minimum number of servers that are always marked healthy. Default value + is 0. + :paramtype min_servers: int + :keyword match: Criterion for classifying a healthy probe response. + :paramtype match: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayProbeHealthResponseMatch + :keyword port: Custom port which will be used for probing the backend servers. The valid value + ranges from 1 to 65535. In case not set, port from http settings will be used. This property is + valid for Standard_v2 and WAF_v2 only. + :paramtype port: int + """ + super(ApplicationGatewayProbe, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.protocol = protocol + self.host = host + self.path = path + self.interval = interval + self.timeout = timeout + self.unhealthy_threshold = unhealthy_threshold + self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings + self.pick_host_name_from_backend_settings = pick_host_name_from_backend_settings + self.min_servers = min_servers + self.match = match + self.provisioning_state = None + self.port = port + + +class ApplicationGatewayProbeHealthResponseMatch(msrest.serialization.Model): + """Application gateway probe health response match. + + :ivar body: Body that must be contained in the health response. Default value is empty. + :vartype body: str + :ivar status_codes: Allowed ranges of healthy status codes. Default range of healthy status + codes is 200-399. + :vartype status_codes: list[str] + """ + + _attribute_map = { + 'body': {'key': 'body', 'type': 'str'}, + 'status_codes': {'key': 'statusCodes', 'type': '[str]'}, + } + + def __init__( + self, + *, + body: Optional[str] = None, + status_codes: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword body: Body that must be contained in the health response. Default value is empty. + :paramtype body: str + :keyword status_codes: Allowed ranges of healthy status codes. Default range of healthy status + codes is 200-399. + :paramtype status_codes: list[str] + """ + super(ApplicationGatewayProbeHealthResponseMatch, self).__init__(**kwargs) + self.body = body + self.status_codes = status_codes + + +class ApplicationGatewayRedirectConfiguration(SubResource): + """Redirect configuration of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the redirect configuration that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar redirect_type: HTTP redirection type. Possible values include: "Permanent", "Found", + "SeeOther", "Temporary". + :vartype redirect_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRedirectType + :ivar target_listener: Reference to a listener to redirect the request to. + :vartype target_listener: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar target_url: Url to redirect the request to. + :vartype target_url: str + :ivar include_path: Include path in the redirected url. + :vartype include_path: bool + :ivar include_query_string: Include query string in the redirected url. + :vartype include_query_string: bool + :ivar request_routing_rules: Request routing specifying redirect configuration. + :vartype request_routing_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar url_path_maps: Url path maps specifying default redirect configuration. + :vartype url_path_maps: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar path_rules: Path rules specifying redirect configuration. + :vartype path_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'redirect_type': {'key': 'properties.redirectType', 'type': 'str'}, + 'target_listener': {'key': 'properties.targetListener', 'type': 'SubResource'}, + 'target_url': {'key': 'properties.targetUrl', 'type': 'str'}, + 'include_path': {'key': 'properties.includePath', 'type': 'bool'}, + 'include_query_string': {'key': 'properties.includeQueryString', 'type': 'bool'}, + 'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[SubResource]'}, + 'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[SubResource]'}, + 'path_rules': {'key': 'properties.pathRules', 'type': '[SubResource]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + redirect_type: Optional[Union[str, "ApplicationGatewayRedirectType"]] = None, + target_listener: Optional["SubResource"] = None, + target_url: Optional[str] = None, + include_path: Optional[bool] = None, + include_query_string: Optional[bool] = None, + request_routing_rules: Optional[List["SubResource"]] = None, + url_path_maps: Optional[List["SubResource"]] = None, + path_rules: Optional[List["SubResource"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the redirect configuration that is unique within an Application Gateway. + :paramtype name: str + :keyword redirect_type: HTTP redirection type. Possible values include: "Permanent", "Found", + "SeeOther", "Temporary". + :paramtype redirect_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRedirectType + :keyword target_listener: Reference to a listener to redirect the request to. + :paramtype target_listener: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword target_url: Url to redirect the request to. + :paramtype target_url: str + :keyword include_path: Include path in the redirected url. + :paramtype include_path: bool + :keyword include_query_string: Include query string in the redirected url. + :paramtype include_query_string: bool + :keyword request_routing_rules: Request routing specifying redirect configuration. + :paramtype request_routing_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword url_path_maps: Url path maps specifying default redirect configuration. + :paramtype url_path_maps: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword path_rules: Path rules specifying redirect configuration. + :paramtype path_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + super(ApplicationGatewayRedirectConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.redirect_type = redirect_type + self.target_listener = target_listener + self.target_url = target_url + self.include_path = include_path + self.include_query_string = include_query_string + self.request_routing_rules = request_routing_rules + self.url_path_maps = url_path_maps + self.path_rules = path_rules + + +class ApplicationGatewayRequestRoutingRule(SubResource): + """Request routing rule of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the request routing rule that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting". + :vartype rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRequestRoutingRuleType + :ivar priority: Priority of the request routing rule. + :vartype priority: int + :ivar backend_address_pool: Backend address pool resource of the application gateway. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar backend_http_settings: Backend http settings resource of the application gateway. + :vartype backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar http_listener: Http listener resource of the application gateway. + :vartype http_listener: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar url_path_map: URL path map resource of the application gateway. + :vartype url_path_map: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar rewrite_rule_set: Rewrite Rule Set resource in Basic rule of the application gateway. + :vartype rewrite_rule_set: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar redirect_configuration: Redirect configuration resource of the application gateway. + :vartype redirect_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar load_distribution_policy: Load Distribution Policy resource of the application gateway. + :vartype load_distribution_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the request routing rule resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'priority': {'maximum': 20000, 'minimum': 1}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'rule_type': {'key': 'properties.ruleType', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'}, + 'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'}, + 'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'}, + 'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'}, + 'rewrite_rule_set': {'key': 'properties.rewriteRuleSet', 'type': 'SubResource'}, + 'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'}, + 'load_distribution_policy': {'key': 'properties.loadDistributionPolicy', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + rule_type: Optional[Union[str, "ApplicationGatewayRequestRoutingRuleType"]] = None, + priority: Optional[int] = None, + backend_address_pool: Optional["SubResource"] = None, + backend_http_settings: Optional["SubResource"] = None, + http_listener: Optional["SubResource"] = None, + url_path_map: Optional["SubResource"] = None, + rewrite_rule_set: Optional["SubResource"] = None, + redirect_configuration: Optional["SubResource"] = None, + load_distribution_policy: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the request routing rule that is unique within an Application Gateway. + :paramtype name: str + :keyword rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting". + :paramtype rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRequestRoutingRuleType + :keyword priority: Priority of the request routing rule. + :paramtype priority: int + :keyword backend_address_pool: Backend address pool resource of the application gateway. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword backend_http_settings: Backend http settings resource of the application gateway. + :paramtype backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword http_listener: Http listener resource of the application gateway. + :paramtype http_listener: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword url_path_map: URL path map resource of the application gateway. + :paramtype url_path_map: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword rewrite_rule_set: Rewrite Rule Set resource in Basic rule of the application gateway. + :paramtype rewrite_rule_set: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword redirect_configuration: Redirect configuration resource of the application gateway. + :paramtype redirect_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword load_distribution_policy: Load Distribution Policy resource of the application + gateway. + :paramtype load_distribution_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayRequestRoutingRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.rule_type = rule_type + self.priority = priority + self.backend_address_pool = backend_address_pool + self.backend_http_settings = backend_http_settings + self.http_listener = http_listener + self.url_path_map = url_path_map + self.rewrite_rule_set = rewrite_rule_set + self.redirect_configuration = redirect_configuration + self.load_distribution_policy = load_distribution_policy + self.provisioning_state = None + + +class ApplicationGatewayRewriteRule(msrest.serialization.Model): + """Rewrite rule of an application gateway. + + :ivar name: Name of the rewrite rule that is unique within an Application Gateway. + :vartype name: str + :ivar rule_sequence: Rule Sequence of the rewrite rule that determines the order of execution + of a particular rule in a RewriteRuleSet. + :vartype rule_sequence: int + :ivar conditions: Conditions based on which the action set execution will be evaluated. + :vartype conditions: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRuleCondition] + :ivar action_set: Set of actions to be done as part of the rewrite Rule. + :vartype action_set: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRuleActionSet + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'rule_sequence': {'key': 'ruleSequence', 'type': 'int'}, + 'conditions': {'key': 'conditions', 'type': '[ApplicationGatewayRewriteRuleCondition]'}, + 'action_set': {'key': 'actionSet', 'type': 'ApplicationGatewayRewriteRuleActionSet'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + rule_sequence: Optional[int] = None, + conditions: Optional[List["ApplicationGatewayRewriteRuleCondition"]] = None, + action_set: Optional["ApplicationGatewayRewriteRuleActionSet"] = None, + **kwargs + ): + """ + :keyword name: Name of the rewrite rule that is unique within an Application Gateway. + :paramtype name: str + :keyword rule_sequence: Rule Sequence of the rewrite rule that determines the order of + execution of a particular rule in a RewriteRuleSet. + :paramtype rule_sequence: int + :keyword conditions: Conditions based on which the action set execution will be evaluated. + :paramtype conditions: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRuleCondition] + :keyword action_set: Set of actions to be done as part of the rewrite Rule. + :paramtype action_set: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRuleActionSet + """ + super(ApplicationGatewayRewriteRule, self).__init__(**kwargs) + self.name = name + self.rule_sequence = rule_sequence + self.conditions = conditions + self.action_set = action_set + + +class ApplicationGatewayRewriteRuleActionSet(msrest.serialization.Model): + """Set of actions in the Rewrite Rule in Application Gateway. + + :ivar request_header_configurations: Request Header Actions in the Action Set. + :vartype request_header_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayHeaderConfiguration] + :ivar response_header_configurations: Response Header Actions in the Action Set. + :vartype response_header_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayHeaderConfiguration] + :ivar url_configuration: Url Configuration Action in the Action Set. + :vartype url_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayUrlConfiguration + """ + + _attribute_map = { + 'request_header_configurations': {'key': 'requestHeaderConfigurations', 'type': '[ApplicationGatewayHeaderConfiguration]'}, + 'response_header_configurations': {'key': 'responseHeaderConfigurations', 'type': '[ApplicationGatewayHeaderConfiguration]'}, + 'url_configuration': {'key': 'urlConfiguration', 'type': 'ApplicationGatewayUrlConfiguration'}, + } + + def __init__( + self, + *, + request_header_configurations: Optional[List["ApplicationGatewayHeaderConfiguration"]] = None, + response_header_configurations: Optional[List["ApplicationGatewayHeaderConfiguration"]] = None, + url_configuration: Optional["ApplicationGatewayUrlConfiguration"] = None, + **kwargs + ): + """ + :keyword request_header_configurations: Request Header Actions in the Action Set. + :paramtype request_header_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayHeaderConfiguration] + :keyword response_header_configurations: Response Header Actions in the Action Set. + :paramtype response_header_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayHeaderConfiguration] + :keyword url_configuration: Url Configuration Action in the Action Set. + :paramtype url_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayUrlConfiguration + """ + super(ApplicationGatewayRewriteRuleActionSet, self).__init__(**kwargs) + self.request_header_configurations = request_header_configurations + self.response_header_configurations = response_header_configurations + self.url_configuration = url_configuration + + +class ApplicationGatewayRewriteRuleCondition(msrest.serialization.Model): + """Set of conditions in the Rewrite Rule in Application Gateway. + + :ivar variable: The condition parameter of the RewriteRuleCondition. + :vartype variable: str + :ivar pattern: The pattern, either fixed string or regular expression, that evaluates the + truthfulness of the condition. + :vartype pattern: str + :ivar ignore_case: Setting this parameter to truth value with force the pattern to do a case + in-sensitive comparison. + :vartype ignore_case: bool + :ivar negate: Setting this value as truth will force to check the negation of the condition + given by the user. + :vartype negate: bool + """ + + _attribute_map = { + 'variable': {'key': 'variable', 'type': 'str'}, + 'pattern': {'key': 'pattern', 'type': 'str'}, + 'ignore_case': {'key': 'ignoreCase', 'type': 'bool'}, + 'negate': {'key': 'negate', 'type': 'bool'}, + } + + def __init__( + self, + *, + variable: Optional[str] = None, + pattern: Optional[str] = None, + ignore_case: Optional[bool] = None, + negate: Optional[bool] = None, + **kwargs + ): + """ + :keyword variable: The condition parameter of the RewriteRuleCondition. + :paramtype variable: str + :keyword pattern: The pattern, either fixed string or regular expression, that evaluates the + truthfulness of the condition. + :paramtype pattern: str + :keyword ignore_case: Setting this parameter to truth value with force the pattern to do a case + in-sensitive comparison. + :paramtype ignore_case: bool + :keyword negate: Setting this value as truth will force to check the negation of the condition + given by the user. + :paramtype negate: bool + """ + super(ApplicationGatewayRewriteRuleCondition, self).__init__(**kwargs) + self.variable = variable + self.pattern = pattern + self.ignore_case = ignore_case + self.negate = negate + + +class ApplicationGatewayRewriteRuleSet(SubResource): + """Rewrite rule set of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the rewrite rule set that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar rewrite_rules: Rewrite rules in the rewrite rule set. + :vartype rewrite_rules: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRule] + :ivar provisioning_state: The provisioning state of the rewrite rule set resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'rewrite_rules': {'key': 'properties.rewriteRules', 'type': '[ApplicationGatewayRewriteRule]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + rewrite_rules: Optional[List["ApplicationGatewayRewriteRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the rewrite rule set that is unique within an Application Gateway. + :paramtype name: str + :keyword rewrite_rules: Rewrite rules in the rewrite rule set. + :paramtype rewrite_rules: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRewriteRule] + """ + super(ApplicationGatewayRewriteRuleSet, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.rewrite_rules = rewrite_rules + self.provisioning_state = None + + +class ApplicationGatewayRoutingRule(SubResource): + """Routing rule of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the routing rule that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting". + :vartype rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRequestRoutingRuleType + :ivar priority: Priority of the routing rule. + :vartype priority: int + :ivar backend_address_pool: Backend address pool resource of the application gateway. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar backend_settings: Backend settings resource of the application gateway. + :vartype backend_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar listener: Listener resource of the application gateway. + :vartype listener: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the request routing rule resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'priority': {'maximum': 20000, 'minimum': 1}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'rule_type': {'key': 'properties.ruleType', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'}, + 'backend_settings': {'key': 'properties.backendSettings', 'type': 'SubResource'}, + 'listener': {'key': 'properties.listener', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + rule_type: Optional[Union[str, "ApplicationGatewayRequestRoutingRuleType"]] = None, + priority: Optional[int] = None, + backend_address_pool: Optional["SubResource"] = None, + backend_settings: Optional["SubResource"] = None, + listener: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the routing rule that is unique within an Application Gateway. + :paramtype name: str + :keyword rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting". + :paramtype rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayRequestRoutingRuleType + :keyword priority: Priority of the routing rule. + :paramtype priority: int + :keyword backend_address_pool: Backend address pool resource of the application gateway. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword backend_settings: Backend settings resource of the application gateway. + :paramtype backend_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword listener: Listener resource of the application gateway. + :paramtype listener: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(ApplicationGatewayRoutingRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.rule_type = rule_type + self.priority = priority + self.backend_address_pool = backend_address_pool + self.backend_settings = backend_settings + self.listener = listener + self.provisioning_state = None + + +class ApplicationGatewaySku(msrest.serialization.Model): + """SKU of an application gateway. + + :ivar name: Name of an application gateway SKU. Possible values include: "Standard_Small", + "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large", "Standard_v2", "WAF_v2". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySkuName + :ivar tier: Tier of an application gateway. Possible values include: "Standard", "WAF", + "Standard_v2", "WAF_v2". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayTier + :ivar capacity: Capacity (instance count) of an application gateway. + :vartype capacity: int + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'tier': {'key': 'tier', 'type': 'str'}, + 'capacity': {'key': 'capacity', 'type': 'int'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "ApplicationGatewaySkuName"]] = None, + tier: Optional[Union[str, "ApplicationGatewayTier"]] = None, + capacity: Optional[int] = None, + **kwargs + ): + """ + :keyword name: Name of an application gateway SKU. Possible values include: "Standard_Small", + "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large", "Standard_v2", "WAF_v2". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySkuName + :keyword tier: Tier of an application gateway. Possible values include: "Standard", "WAF", + "Standard_v2", "WAF_v2". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayTier + :keyword capacity: Capacity (instance count) of an application gateway. + :paramtype capacity: int + """ + super(ApplicationGatewaySku, self).__init__(**kwargs) + self.name = name + self.tier = tier + self.capacity = capacity + + +class ApplicationGatewaySslCertificate(SubResource): + """SSL certificates of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the SSL certificate that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar data: Base-64 encoded pfx certificate. Only applicable in PUT Request. + :vartype data: str + :ivar password: Password for the pfx file specified in data. Only applicable in PUT request. + :vartype password: str + :ivar public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in + data. Only applicable in GET request. + :vartype public_cert_data: str + :ivar key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or + 'Certificate' object stored in KeyVault. + :vartype key_vault_secret_id: str + :ivar provisioning_state: The provisioning state of the SSL certificate resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'public_cert_data': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'data': {'key': 'properties.data', 'type': 'str'}, + 'password': {'key': 'properties.password', 'type': 'str'}, + 'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'}, + 'key_vault_secret_id': {'key': 'properties.keyVaultSecretId', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + data: Optional[str] = None, + password: Optional[str] = None, + key_vault_secret_id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the SSL certificate that is unique within an Application Gateway. + :paramtype name: str + :keyword data: Base-64 encoded pfx certificate. Only applicable in PUT Request. + :paramtype data: str + :keyword password: Password for the pfx file specified in data. Only applicable in PUT request. + :paramtype password: str + :keyword key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or + 'Certificate' object stored in KeyVault. + :paramtype key_vault_secret_id: str + """ + super(ApplicationGatewaySslCertificate, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.data = data + self.password = password + self.public_cert_data = None + self.key_vault_secret_id = key_vault_secret_id + self.provisioning_state = None + + +class ApplicationGatewaySslPolicy(msrest.serialization.Model): + """Application Gateway Ssl policy. + + :ivar disabled_ssl_protocols: Ssl protocols to be disabled on application gateway. + :vartype disabled_ssl_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol] + :ivar policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom", + "CustomV2". + :vartype policy_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicyType + :ivar policy_name: Name of Ssl predefined policy. Possible values include: + "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S", + "AppGwSslPolicy20220101", "AppGwSslPolicy20220101S". + :vartype policy_name: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicyName + :ivar cipher_suites: Ssl cipher suites to be enabled in the specified order to application + gateway. + :vartype cipher_suites: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCipherSuite] + :ivar min_protocol_version: Minimum version of Ssl protocol to be supported on application + gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3". + :vartype min_protocol_version: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol + """ + + _attribute_map = { + 'disabled_ssl_protocols': {'key': 'disabledSslProtocols', 'type': '[str]'}, + 'policy_type': {'key': 'policyType', 'type': 'str'}, + 'policy_name': {'key': 'policyName', 'type': 'str'}, + 'cipher_suites': {'key': 'cipherSuites', 'type': '[str]'}, + 'min_protocol_version': {'key': 'minProtocolVersion', 'type': 'str'}, + } + + def __init__( + self, + *, + disabled_ssl_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None, + policy_type: Optional[Union[str, "ApplicationGatewaySslPolicyType"]] = None, + policy_name: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None, + cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None, + min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None, + **kwargs + ): + """ + :keyword disabled_ssl_protocols: Ssl protocols to be disabled on application gateway. + :paramtype disabled_ssl_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol] + :keyword policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom", + "CustomV2". + :paramtype policy_type: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicyType + :keyword policy_name: Name of Ssl predefined policy. Possible values include: + "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S", + "AppGwSslPolicy20220101", "AppGwSslPolicy20220101S". + :paramtype policy_name: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicyName + :keyword cipher_suites: Ssl cipher suites to be enabled in the specified order to application + gateway. + :paramtype cipher_suites: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCipherSuite] + :keyword min_protocol_version: Minimum version of Ssl protocol to be supported on application + gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3". + :paramtype min_protocol_version: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol + """ + super(ApplicationGatewaySslPolicy, self).__init__(**kwargs) + self.disabled_ssl_protocols = disabled_ssl_protocols + self.policy_type = policy_type + self.policy_name = policy_name + self.cipher_suites = cipher_suites + self.min_protocol_version = min_protocol_version + + +class ApplicationGatewaySslPredefinedPolicy(SubResource): + """An Ssl predefined policy. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the Ssl predefined policy. + :vartype name: str + :ivar cipher_suites: Ssl cipher suites to be enabled in the specified order for application + gateway. + :vartype cipher_suites: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCipherSuite] + :ivar min_protocol_version: Minimum version of Ssl protocol to be supported on application + gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3". + :vartype min_protocol_version: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'cipher_suites': {'key': 'properties.cipherSuites', 'type': '[str]'}, + 'min_protocol_version': {'key': 'properties.minProtocolVersion', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None, + min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the Ssl predefined policy. + :paramtype name: str + :keyword cipher_suites: Ssl cipher suites to be enabled in the specified order for application + gateway. + :paramtype cipher_suites: list[str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslCipherSuite] + :keyword min_protocol_version: Minimum version of Ssl protocol to be supported on application + gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3". + :paramtype min_protocol_version: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslProtocol + """ + super(ApplicationGatewaySslPredefinedPolicy, self).__init__(id=id, **kwargs) + self.name = name + self.cipher_suites = cipher_suites + self.min_protocol_version = min_protocol_version + + +class ApplicationGatewaySslProfile(SubResource): + """SSL profile of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the SSL profile that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar trusted_client_certificates: Array of references to application gateway trusted client + certificates. + :vartype trusted_client_certificates: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar ssl_policy: SSL policy of the application gateway resource. + :vartype ssl_policy: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicy + :ivar client_auth_configuration: Client authentication configuration of the application gateway + resource. + :vartype client_auth_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayClientAuthConfiguration + :ivar provisioning_state: The provisioning state of the HTTP listener resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'trusted_client_certificates': {'key': 'properties.trustedClientCertificates', 'type': '[SubResource]'}, + 'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'}, + 'client_auth_configuration': {'key': 'properties.clientAuthConfiguration', 'type': 'ApplicationGatewayClientAuthConfiguration'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + trusted_client_certificates: Optional[List["SubResource"]] = None, + ssl_policy: Optional["ApplicationGatewaySslPolicy"] = None, + client_auth_configuration: Optional["ApplicationGatewayClientAuthConfiguration"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the SSL profile that is unique within an Application Gateway. + :paramtype name: str + :keyword trusted_client_certificates: Array of references to application gateway trusted client + certificates. + :paramtype trusted_client_certificates: + list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword ssl_policy: SSL policy of the application gateway resource. + :paramtype ssl_policy: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPolicy + :keyword client_auth_configuration: Client authentication configuration of the application + gateway resource. + :paramtype client_auth_configuration: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayClientAuthConfiguration + """ + super(ApplicationGatewaySslProfile, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.trusted_client_certificates = trusted_client_certificates + self.ssl_policy = ssl_policy + self.client_auth_configuration = client_auth_configuration + self.provisioning_state = None + + +class ApplicationGatewayTrustedClientCertificate(SubResource): + """Trusted client certificates of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the trusted client certificate that is unique within an Application + Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar data: Certificate public data. + :vartype data: str + :ivar validated_cert_data: Validated certificate data. + :vartype validated_cert_data: str + :ivar client_cert_issuer_dn: Distinguished name of client certificate issuer. + :vartype client_cert_issuer_dn: str + :ivar provisioning_state: The provisioning state of the trusted client certificate resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'validated_cert_data': {'readonly': True}, + 'client_cert_issuer_dn': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'data': {'key': 'properties.data', 'type': 'str'}, + 'validated_cert_data': {'key': 'properties.validatedCertData', 'type': 'str'}, + 'client_cert_issuer_dn': {'key': 'properties.clientCertIssuerDN', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + data: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the trusted client certificate that is unique within an Application + Gateway. + :paramtype name: str + :keyword data: Certificate public data. + :paramtype data: str + """ + super(ApplicationGatewayTrustedClientCertificate, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.data = data + self.validated_cert_data = None + self.client_cert_issuer_dn = None + self.provisioning_state = None + + +class ApplicationGatewayTrustedRootCertificate(SubResource): + """Trusted Root certificates of an application gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the trusted root certificate that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar data: Certificate public data. + :vartype data: str + :ivar key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or + 'Certificate' object stored in KeyVault. + :vartype key_vault_secret_id: str + :ivar provisioning_state: The provisioning state of the trusted root certificate resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'data': {'key': 'properties.data', 'type': 'str'}, + 'key_vault_secret_id': {'key': 'properties.keyVaultSecretId', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + data: Optional[str] = None, + key_vault_secret_id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the trusted root certificate that is unique within an Application + Gateway. + :paramtype name: str + :keyword data: Certificate public data. + :paramtype data: str + :keyword key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or + 'Certificate' object stored in KeyVault. + :paramtype key_vault_secret_id: str + """ + super(ApplicationGatewayTrustedRootCertificate, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.data = data + self.key_vault_secret_id = key_vault_secret_id + self.provisioning_state = None + + +class ApplicationGatewayUrlConfiguration(msrest.serialization.Model): + """Url configuration of the Actions set in Application Gateway. + + :ivar modified_path: Url path which user has provided for url rewrite. Null means no path will + be updated. Default value is null. + :vartype modified_path: str + :ivar modified_query_string: Query string which user has provided for url rewrite. Null means + no query string will be updated. Default value is null. + :vartype modified_query_string: str + :ivar reroute: If set as true, it will re-evaluate the url path map provided in path based + request routing rules using modified path. Default value is false. + :vartype reroute: bool + """ + + _attribute_map = { + 'modified_path': {'key': 'modifiedPath', 'type': 'str'}, + 'modified_query_string': {'key': 'modifiedQueryString', 'type': 'str'}, + 'reroute': {'key': 'reroute', 'type': 'bool'}, + } + + def __init__( + self, + *, + modified_path: Optional[str] = None, + modified_query_string: Optional[str] = None, + reroute: Optional[bool] = None, + **kwargs + ): + """ + :keyword modified_path: Url path which user has provided for url rewrite. Null means no path + will be updated. Default value is null. + :paramtype modified_path: str + :keyword modified_query_string: Query string which user has provided for url rewrite. Null + means no query string will be updated. Default value is null. + :paramtype modified_query_string: str + :keyword reroute: If set as true, it will re-evaluate the url path map provided in path based + request routing rules using modified path. Default value is false. + :paramtype reroute: bool + """ + super(ApplicationGatewayUrlConfiguration, self).__init__(**kwargs) + self.modified_path = modified_path + self.modified_query_string = modified_query_string + self.reroute = reroute + + +class ApplicationGatewayUrlPathMap(SubResource): + """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the URL path map that is unique within an Application Gateway. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar default_backend_address_pool: Default backend address pool resource of URL path map. + :vartype default_backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar default_backend_http_settings: Default backend http settings resource of URL path map. + :vartype default_backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar default_rewrite_rule_set: Default Rewrite rule set resource of URL path map. + :vartype default_rewrite_rule_set: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar default_redirect_configuration: Default redirect configuration resource of URL path map. + :vartype default_redirect_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar default_load_distribution_policy: Default Load Distribution Policy resource of URL path + map. + :vartype default_load_distribution_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar path_rules: Path rule of URL path map resource. + :vartype path_rules: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPathRule] + :ivar provisioning_state: The provisioning state of the URL path map resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'}, + 'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'}, + 'default_rewrite_rule_set': {'key': 'properties.defaultRewriteRuleSet', 'type': 'SubResource'}, + 'default_redirect_configuration': {'key': 'properties.defaultRedirectConfiguration', 'type': 'SubResource'}, + 'default_load_distribution_policy': {'key': 'properties.defaultLoadDistributionPolicy', 'type': 'SubResource'}, + 'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + default_backend_address_pool: Optional["SubResource"] = None, + default_backend_http_settings: Optional["SubResource"] = None, + default_rewrite_rule_set: Optional["SubResource"] = None, + default_redirect_configuration: Optional["SubResource"] = None, + default_load_distribution_policy: Optional["SubResource"] = None, + path_rules: Optional[List["ApplicationGatewayPathRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the URL path map that is unique within an Application Gateway. + :paramtype name: str + :keyword default_backend_address_pool: Default backend address pool resource of URL path map. + :paramtype default_backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword default_backend_http_settings: Default backend http settings resource of URL path map. + :paramtype default_backend_http_settings: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword default_rewrite_rule_set: Default Rewrite rule set resource of URL path map. + :paramtype default_rewrite_rule_set: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword default_redirect_configuration: Default redirect configuration resource of URL path + map. + :paramtype default_redirect_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword default_load_distribution_policy: Default Load Distribution Policy resource of URL + path map. + :paramtype default_load_distribution_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword path_rules: Path rule of URL path map resource. + :paramtype path_rules: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPathRule] + """ + super(ApplicationGatewayUrlPathMap, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.default_backend_address_pool = default_backend_address_pool + self.default_backend_http_settings = default_backend_http_settings + self.default_rewrite_rule_set = default_rewrite_rule_set + self.default_redirect_configuration = default_redirect_configuration + self.default_load_distribution_policy = default_load_distribution_policy + self.path_rules = path_rules + self.provisioning_state = None + + +class ApplicationGatewayWebApplicationFirewallConfiguration(msrest.serialization.Model): + """Application gateway web application firewall configuration. + + All required parameters must be populated in order to send to Azure. + + :ivar enabled: Required. Whether the web application firewall is enabled or not. + :vartype enabled: bool + :ivar firewall_mode: Required. Web application firewall mode. Possible values include: + "Detection", "Prevention". + :vartype firewall_mode: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallMode + :ivar rule_set_type: Required. The type of the web application firewall rule set. Possible + values are: 'OWASP'. + :vartype rule_set_type: str + :ivar rule_set_version: Required. The version of the rule set type. + :vartype rule_set_version: str + :ivar disabled_rule_groups: The disabled rule groups. + :vartype disabled_rule_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallDisabledRuleGroup] + :ivar request_body_check: Whether allow WAF to check request Body. + :vartype request_body_check: bool + :ivar max_request_body_size: Maximum request body size for WAF. + :vartype max_request_body_size: int + :ivar max_request_body_size_in_kb: Maximum request body size in Kb for WAF. + :vartype max_request_body_size_in_kb: int + :ivar file_upload_limit_in_mb: Maximum file upload size in Mb for WAF. + :vartype file_upload_limit_in_mb: int + :ivar exclusions: The exclusion list. + :vartype exclusions: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallExclusion] + """ + + _validation = { + 'enabled': {'required': True}, + 'firewall_mode': {'required': True}, + 'rule_set_type': {'required': True}, + 'rule_set_version': {'required': True}, + 'max_request_body_size': {'maximum': 128, 'minimum': 8}, + 'max_request_body_size_in_kb': {'maximum': 128, 'minimum': 8}, + 'file_upload_limit_in_mb': {'minimum': 0}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'firewall_mode': {'key': 'firewallMode', 'type': 'str'}, + 'rule_set_type': {'key': 'ruleSetType', 'type': 'str'}, + 'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'}, + 'disabled_rule_groups': {'key': 'disabledRuleGroups', 'type': '[ApplicationGatewayFirewallDisabledRuleGroup]'}, + 'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'}, + 'max_request_body_size': {'key': 'maxRequestBodySize', 'type': 'int'}, + 'max_request_body_size_in_kb': {'key': 'maxRequestBodySizeInKb', 'type': 'int'}, + 'file_upload_limit_in_mb': {'key': 'fileUploadLimitInMb', 'type': 'int'}, + 'exclusions': {'key': 'exclusions', 'type': '[ApplicationGatewayFirewallExclusion]'}, + } + + def __init__( + self, + *, + enabled: bool, + firewall_mode: Union[str, "ApplicationGatewayFirewallMode"], + rule_set_type: str, + rule_set_version: str, + disabled_rule_groups: Optional[List["ApplicationGatewayFirewallDisabledRuleGroup"]] = None, + request_body_check: Optional[bool] = None, + max_request_body_size: Optional[int] = None, + max_request_body_size_in_kb: Optional[int] = None, + file_upload_limit_in_mb: Optional[int] = None, + exclusions: Optional[List["ApplicationGatewayFirewallExclusion"]] = None, + **kwargs + ): + """ + :keyword enabled: Required. Whether the web application firewall is enabled or not. + :paramtype enabled: bool + :keyword firewall_mode: Required. Web application firewall mode. Possible values include: + "Detection", "Prevention". + :paramtype firewall_mode: str or + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallMode + :keyword rule_set_type: Required. The type of the web application firewall rule set. Possible + values are: 'OWASP'. + :paramtype rule_set_type: str + :keyword rule_set_version: Required. The version of the rule set type. + :paramtype rule_set_version: str + :keyword disabled_rule_groups: The disabled rule groups. + :paramtype disabled_rule_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallDisabledRuleGroup] + :keyword request_body_check: Whether allow WAF to check request Body. + :paramtype request_body_check: bool + :keyword max_request_body_size: Maximum request body size for WAF. + :paramtype max_request_body_size: int + :keyword max_request_body_size_in_kb: Maximum request body size in Kb for WAF. + :paramtype max_request_body_size_in_kb: int + :keyword file_upload_limit_in_mb: Maximum file upload size in Mb for WAF. + :paramtype file_upload_limit_in_mb: int + :keyword exclusions: The exclusion list. + :paramtype exclusions: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayFirewallExclusion] + """ + super(ApplicationGatewayWebApplicationFirewallConfiguration, self).__init__(**kwargs) + self.enabled = enabled + self.firewall_mode = firewall_mode + self.rule_set_type = rule_set_type + self.rule_set_version = rule_set_version + self.disabled_rule_groups = disabled_rule_groups + self.request_body_check = request_body_check + self.max_request_body_size = max_request_body_size + self.max_request_body_size_in_kb = max_request_body_size_in_kb + self.file_upload_limit_in_mb = file_upload_limit_in_mb + self.exclusions = exclusions + + +class FirewallPolicyRule(msrest.serialization.Model): + """Properties of a rule. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: ApplicationRule, NatRule, NetworkRule. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Name of the rule. + :vartype name: str + :ivar description: Description of the rule. + :vartype description: str + :ivar rule_type: Required. Rule Type.Constant filled by server. Possible values include: + "ApplicationRule", "NetworkRule", "NatRule". + :vartype rule_type: str or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleType + """ + + _validation = { + 'rule_type': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'rule_type': {'key': 'ruleType', 'type': 'str'}, + } + + _subtype_map = { + 'rule_type': {'ApplicationRule': 'ApplicationRule', 'NatRule': 'NatRule', 'NetworkRule': 'NetworkRule'} + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + """ + :keyword name: Name of the rule. + :paramtype name: str + :keyword description: Description of the rule. + :paramtype description: str + """ + super(FirewallPolicyRule, self).__init__(**kwargs) + self.name = name + self.description = description + self.rule_type = None # type: Optional[str] + + +class ApplicationRule(FirewallPolicyRule): + """Rule of type application. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Name of the rule. + :vartype name: str + :ivar description: Description of the rule. + :vartype description: str + :ivar rule_type: Required. Rule Type.Constant filled by server. Possible values include: + "ApplicationRule", "NetworkRule", "NatRule". + :vartype rule_type: str or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleType + :ivar source_addresses: List of source IP addresses for this rule. + :vartype source_addresses: list[str] + :ivar destination_addresses: List of destination IP addresses or Service Tags. + :vartype destination_addresses: list[str] + :ivar protocols: Array of Application Protocols. + :vartype protocols: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleApplicationProtocol] + :ivar target_fqdns: List of FQDNs for this rule. + :vartype target_fqdns: list[str] + :ivar target_urls: List of Urls for this rule condition. + :vartype target_urls: list[str] + :ivar fqdn_tags: List of FQDN Tags for this rule. + :vartype fqdn_tags: list[str] + :ivar source_ip_groups: List of source IpGroups for this rule. + :vartype source_ip_groups: list[str] + :ivar terminate_tls: Terminate TLS connections for this rule. + :vartype terminate_tls: bool + :ivar web_categories: List of destination azure web categories. + :vartype web_categories: list[str] + """ + + _validation = { + 'rule_type': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'rule_type': {'key': 'ruleType', 'type': 'str'}, + 'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'}, + 'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'}, + 'protocols': {'key': 'protocols', 'type': '[FirewallPolicyRuleApplicationProtocol]'}, + 'target_fqdns': {'key': 'targetFqdns', 'type': '[str]'}, + 'target_urls': {'key': 'targetUrls', 'type': '[str]'}, + 'fqdn_tags': {'key': 'fqdnTags', 'type': '[str]'}, + 'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'}, + 'terminate_tls': {'key': 'terminateTLS', 'type': 'bool'}, + 'web_categories': {'key': 'webCategories', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + source_addresses: Optional[List[str]] = None, + destination_addresses: Optional[List[str]] = None, + protocols: Optional[List["FirewallPolicyRuleApplicationProtocol"]] = None, + target_fqdns: Optional[List[str]] = None, + target_urls: Optional[List[str]] = None, + fqdn_tags: Optional[List[str]] = None, + source_ip_groups: Optional[List[str]] = None, + terminate_tls: Optional[bool] = None, + web_categories: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword name: Name of the rule. + :paramtype name: str + :keyword description: Description of the rule. + :paramtype description: str + :keyword source_addresses: List of source IP addresses for this rule. + :paramtype source_addresses: list[str] + :keyword destination_addresses: List of destination IP addresses or Service Tags. + :paramtype destination_addresses: list[str] + :keyword protocols: Array of Application Protocols. + :paramtype protocols: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleApplicationProtocol] + :keyword target_fqdns: List of FQDNs for this rule. + :paramtype target_fqdns: list[str] + :keyword target_urls: List of Urls for this rule condition. + :paramtype target_urls: list[str] + :keyword fqdn_tags: List of FQDN Tags for this rule. + :paramtype fqdn_tags: list[str] + :keyword source_ip_groups: List of source IpGroups for this rule. + :paramtype source_ip_groups: list[str] + :keyword terminate_tls: Terminate TLS connections for this rule. + :paramtype terminate_tls: bool + :keyword web_categories: List of destination azure web categories. + :paramtype web_categories: list[str] + """ + super(ApplicationRule, self).__init__(name=name, description=description, **kwargs) + self.rule_type = 'ApplicationRule' # type: str + self.source_addresses = source_addresses + self.destination_addresses = destination_addresses + self.protocols = protocols + self.target_fqdns = target_fqdns + self.target_urls = target_urls + self.fqdn_tags = fqdn_tags + self.source_ip_groups = source_ip_groups + self.terminate_tls = terminate_tls + self.web_categories = web_categories + + +class ApplicationSecurityGroup(Resource): + """An application security group in a resource group. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar resource_guid: The resource GUID property of the application security group resource. It + uniquely identifies a resource, even if the user changes its name or migrate the resource + across subscriptions or resource groups. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the application security group resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ + super(ApplicationSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.resource_guid = None + self.provisioning_state = None + + +class ApplicationSecurityGroupListResult(msrest.serialization.Model): + """A list of application security groups. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of application security groups. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ApplicationSecurityGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ApplicationSecurityGroup"]] = None, + **kwargs + ): + """ + :keyword value: A list of application security groups. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + """ + super(ApplicationSecurityGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class AuthorizationListResult(msrest.serialization.Model): + """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit. + + :ivar value: The authorizations in an ExpressRoute Circuit. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCircuitAuthorization"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The authorizations in an ExpressRoute Circuit. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(AuthorizationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class AutoApprovedPrivateLinkService(msrest.serialization.Model): + """The information of an AutoApprovedPrivateLinkService. + + :ivar private_link_service: The id of the private link service resource. + :vartype private_link_service: str + """ + + _attribute_map = { + 'private_link_service': {'key': 'privateLinkService', 'type': 'str'}, + } + + def __init__( + self, + *, + private_link_service: Optional[str] = None, + **kwargs + ): + """ + :keyword private_link_service: The id of the private link service resource. + :paramtype private_link_service: str + """ + super(AutoApprovedPrivateLinkService, self).__init__(**kwargs) + self.private_link_service = private_link_service + + +class AutoApprovedPrivateLinkServicesResult(msrest.serialization.Model): + """An array of private link service id that can be linked to a private end point with auto approved. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: An array of auto approved private link service. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AutoApprovedPrivateLinkService] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AutoApprovedPrivateLinkService]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["AutoApprovedPrivateLinkService"]] = None, + **kwargs + ): + """ + :keyword value: An array of auto approved private link service. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AutoApprovedPrivateLinkService] + """ + super(AutoApprovedPrivateLinkServicesResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class Availability(msrest.serialization.Model): + """Availability of the metric. + + :ivar time_grain: The time grain of the availability. + :vartype time_grain: str + :ivar retention: The retention of the availability. + :vartype retention: str + :ivar blob_duration: Duration of the availability blob. + :vartype blob_duration: str + """ + + _attribute_map = { + 'time_grain': {'key': 'timeGrain', 'type': 'str'}, + 'retention': {'key': 'retention', 'type': 'str'}, + 'blob_duration': {'key': 'blobDuration', 'type': 'str'}, + } + + def __init__( + self, + *, + time_grain: Optional[str] = None, + retention: Optional[str] = None, + blob_duration: Optional[str] = None, + **kwargs + ): + """ + :keyword time_grain: The time grain of the availability. + :paramtype time_grain: str + :keyword retention: The retention of the availability. + :paramtype retention: str + :keyword blob_duration: Duration of the availability blob. + :paramtype blob_duration: str + """ + super(Availability, self).__init__(**kwargs) + self.time_grain = time_grain + self.retention = retention + self.blob_duration = blob_duration + + +class AvailableDelegation(msrest.serialization.Model): + """The serviceName of an AvailableDelegation indicates a possible delegation for a subnet. + + :ivar name: The name of the AvailableDelegation resource. + :vartype name: str + :ivar id: A unique identifier of the AvailableDelegation resource. + :vartype id: str + :ivar type: Resource type. + :vartype type: str + :ivar service_name: The name of the service and resource. + :vartype service_name: str + :ivar actions: The actions permitted to the service upon delegation. + :vartype actions: list[str] + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'service_name': {'key': 'serviceName', 'type': 'str'}, + 'actions': {'key': 'actions', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + id: Optional[str] = None, + type: Optional[str] = None, + service_name: Optional[str] = None, + actions: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword name: The name of the AvailableDelegation resource. + :paramtype name: str + :keyword id: A unique identifier of the AvailableDelegation resource. + :paramtype id: str + :keyword type: Resource type. + :paramtype type: str + :keyword service_name: The name of the service and resource. + :paramtype service_name: str + :keyword actions: The actions permitted to the service upon delegation. + :paramtype actions: list[str] + """ + super(AvailableDelegation, self).__init__(**kwargs) + self.name = name + self.id = id + self.type = type + self.service_name = service_name + self.actions = actions + + +class AvailableDelegationsResult(msrest.serialization.Model): + """An array of available delegations. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: An array of available delegations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AvailableDelegation] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AvailableDelegation]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["AvailableDelegation"]] = None, + **kwargs + ): + """ + :keyword value: An array of available delegations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AvailableDelegation] + """ + super(AvailableDelegationsResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class AvailablePrivateEndpointType(msrest.serialization.Model): + """The information of an AvailablePrivateEndpointType. + + :ivar name: The name of the service and resource. + :vartype name: str + :ivar id: A unique identifier of the AvailablePrivateEndpoint Type resource. + :vartype id: str + :ivar type: Resource type. + :vartype type: str + :ivar resource_name: The name of the service and resource. + :vartype resource_name: str + :ivar display_name: Display name of the resource. + :vartype display_name: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'resource_name': {'key': 'resourceName', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + id: Optional[str] = None, + type: Optional[str] = None, + resource_name: Optional[str] = None, + display_name: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the service and resource. + :paramtype name: str + :keyword id: A unique identifier of the AvailablePrivateEndpoint Type resource. + :paramtype id: str + :keyword type: Resource type. + :paramtype type: str + :keyword resource_name: The name of the service and resource. + :paramtype resource_name: str + :keyword display_name: Display name of the resource. + :paramtype display_name: str + """ + super(AvailablePrivateEndpointType, self).__init__(**kwargs) + self.name = name + self.id = id + self.type = type + self.resource_name = resource_name + self.display_name = display_name + + +class AvailablePrivateEndpointTypesResult(msrest.serialization.Model): + """An array of available PrivateEndpoint types. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: An array of available privateEndpoint type. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AvailablePrivateEndpointType] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AvailablePrivateEndpointType]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["AvailablePrivateEndpointType"]] = None, + **kwargs + ): + """ + :keyword value: An array of available privateEndpoint type. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AvailablePrivateEndpointType] + """ + super(AvailablePrivateEndpointTypesResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class AvailableProvidersList(msrest.serialization.Model): + """List of available countries with details. + + All required parameters must be populated in order to send to Azure. + + :ivar countries: Required. List of available countries. + :vartype countries: list[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListCountry] + """ + + _validation = { + 'countries': {'required': True}, + } + + _attribute_map = { + 'countries': {'key': 'countries', 'type': '[AvailableProvidersListCountry]'}, + } + + def __init__( + self, + *, + countries: List["AvailableProvidersListCountry"], + **kwargs + ): + """ + :keyword countries: Required. List of available countries. + :paramtype countries: + list[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListCountry] + """ + super(AvailableProvidersList, self).__init__(**kwargs) + self.countries = countries + + +class AvailableProvidersListCity(msrest.serialization.Model): + """City or town details. + + :ivar city_name: The city or town name. + :vartype city_name: str + :ivar providers: A list of Internet service providers. + :vartype providers: list[str] + """ + + _attribute_map = { + 'city_name': {'key': 'cityName', 'type': 'str'}, + 'providers': {'key': 'providers', 'type': '[str]'}, + } + + def __init__( + self, + *, + city_name: Optional[str] = None, + providers: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword city_name: The city or town name. + :paramtype city_name: str + :keyword providers: A list of Internet service providers. + :paramtype providers: list[str] + """ + super(AvailableProvidersListCity, self).__init__(**kwargs) + self.city_name = city_name + self.providers = providers + + +class AvailableProvidersListCountry(msrest.serialization.Model): + """Country details. + + :ivar country_name: The country name. + :vartype country_name: str + :ivar providers: A list of Internet service providers. + :vartype providers: list[str] + :ivar states: List of available states in the country. + :vartype states: list[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListState] + """ + + _attribute_map = { + 'country_name': {'key': 'countryName', 'type': 'str'}, + 'providers': {'key': 'providers', 'type': '[str]'}, + 'states': {'key': 'states', 'type': '[AvailableProvidersListState]'}, + } + + def __init__( + self, + *, + country_name: Optional[str] = None, + providers: Optional[List[str]] = None, + states: Optional[List["AvailableProvidersListState"]] = None, + **kwargs + ): + """ + :keyword country_name: The country name. + :paramtype country_name: str + :keyword providers: A list of Internet service providers. + :paramtype providers: list[str] + :keyword states: List of available states in the country. + :paramtype states: list[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListState] + """ + super(AvailableProvidersListCountry, self).__init__(**kwargs) + self.country_name = country_name + self.providers = providers + self.states = states + + +class AvailableProvidersListParameters(msrest.serialization.Model): + """Constraints that determine the list of available Internet service providers. + + :ivar azure_locations: A list of Azure regions. + :vartype azure_locations: list[str] + :ivar country: The country for available providers list. + :vartype country: str + :ivar state: The state for available providers list. + :vartype state: str + :ivar city: The city or town for available providers list. + :vartype city: str + """ + + _attribute_map = { + 'azure_locations': {'key': 'azureLocations', 'type': '[str]'}, + 'country': {'key': 'country', 'type': 'str'}, + 'state': {'key': 'state', 'type': 'str'}, + 'city': {'key': 'city', 'type': 'str'}, + } + + def __init__( + self, + *, + azure_locations: Optional[List[str]] = None, + country: Optional[str] = None, + state: Optional[str] = None, + city: Optional[str] = None, + **kwargs + ): + """ + :keyword azure_locations: A list of Azure regions. + :paramtype azure_locations: list[str] + :keyword country: The country for available providers list. + :paramtype country: str + :keyword state: The state for available providers list. + :paramtype state: str + :keyword city: The city or town for available providers list. + :paramtype city: str + """ + super(AvailableProvidersListParameters, self).__init__(**kwargs) + self.azure_locations = azure_locations + self.country = country + self.state = state + self.city = city + + +class AvailableProvidersListState(msrest.serialization.Model): + """State details. + + :ivar state_name: The state name. + :vartype state_name: str + :ivar providers: A list of Internet service providers. + :vartype providers: list[str] + :ivar cities: List of available cities or towns in the state. + :vartype cities: list[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListCity] + """ + + _attribute_map = { + 'state_name': {'key': 'stateName', 'type': 'str'}, + 'providers': {'key': 'providers', 'type': '[str]'}, + 'cities': {'key': 'cities', 'type': '[AvailableProvidersListCity]'}, + } + + def __init__( + self, + *, + state_name: Optional[str] = None, + providers: Optional[List[str]] = None, + cities: Optional[List["AvailableProvidersListCity"]] = None, + **kwargs + ): + """ + :keyword state_name: The state name. + :paramtype state_name: str + :keyword providers: A list of Internet service providers. + :paramtype providers: list[str] + :keyword cities: List of available cities or towns in the state. + :paramtype cities: list[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListCity] + """ + super(AvailableProvidersListState, self).__init__(**kwargs) + self.state_name = state_name + self.providers = providers + self.cities = cities + + +class AvailableServiceAlias(msrest.serialization.Model): + """The available service alias. + + :ivar name: The name of the service alias. + :vartype name: str + :ivar id: The ID of the service alias. + :vartype id: str + :ivar type: The type of the resource. + :vartype type: str + :ivar resource_name: The resource name of the service alias. + :vartype resource_name: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'resource_name': {'key': 'resourceName', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + id: Optional[str] = None, + type: Optional[str] = None, + resource_name: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the service alias. + :paramtype name: str + :keyword id: The ID of the service alias. + :paramtype id: str + :keyword type: The type of the resource. + :paramtype type: str + :keyword resource_name: The resource name of the service alias. + :paramtype resource_name: str + """ + super(AvailableServiceAlias, self).__init__(**kwargs) + self.name = name + self.id = id + self.type = type + self.resource_name = resource_name + + +class AvailableServiceAliasesResult(msrest.serialization.Model): + """An array of available service aliases. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: An array of available service aliases. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AvailableServiceAlias] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AvailableServiceAlias]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["AvailableServiceAlias"]] = None, + **kwargs + ): + """ + :keyword value: An array of available service aliases. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AvailableServiceAlias] + """ + super(AvailableServiceAliasesResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class AzureAsyncOperationResult(msrest.serialization.Model): + """The response body contains the status of the specified asynchronous operation, indicating whether it has succeeded, is in progress, or has failed. Note that this status is distinct from the HTTP status code returned for the Get Operation Status operation itself. If the asynchronous operation succeeded, the response body includes the HTTP status code for the successful request. If the asynchronous operation failed, the response body includes the HTTP status code for the failed request and error information regarding the failure. + + :ivar status: Status of the Azure async operation. Possible values include: "InProgress", + "Succeeded", "Failed". + :vartype status: str or ~azure.mgmt.network.v2022_01_01.models.NetworkOperationStatus + :ivar error: Details of the error occurred during specified asynchronous operation. + :vartype error: ~azure.mgmt.network.v2022_01_01.models.Error + """ + + _attribute_map = { + 'status': {'key': 'status', 'type': 'str'}, + 'error': {'key': 'error', 'type': 'Error'}, + } + + def __init__( + self, + *, + status: Optional[Union[str, "NetworkOperationStatus"]] = None, + error: Optional["Error"] = None, + **kwargs + ): + """ + :keyword status: Status of the Azure async operation. Possible values include: "InProgress", + "Succeeded", "Failed". + :paramtype status: str or ~azure.mgmt.network.v2022_01_01.models.NetworkOperationStatus + :keyword error: Details of the error occurred during specified asynchronous operation. + :paramtype error: ~azure.mgmt.network.v2022_01_01.models.Error + """ + super(AzureAsyncOperationResult, self).__init__(**kwargs) + self.status = status + self.error = error + + +class AzureFirewall(Resource): + """Azure Firewall resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar zones: A list of availability zones denoting where the resource needs to come from. + :vartype zones: list[str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar application_rule_collections: Collection of application rule collections used by Azure + Firewall. + :vartype application_rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRuleCollection] + :ivar nat_rule_collections: Collection of NAT rule collections used by Azure Firewall. + :vartype nat_rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRuleCollection] + :ivar network_rule_collections: Collection of network rule collections used by Azure Firewall. + :vartype network_rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRuleCollection] + :ivar ip_configurations: IP configuration of the Azure Firewall resource. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallIPConfiguration] + :ivar management_ip_configuration: IP configuration of the Azure Firewall used for management + traffic. + :vartype management_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallIPConfiguration + :ivar provisioning_state: The provisioning state of the Azure firewall resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar threat_intel_mode: The operation mode for Threat Intelligence. Possible values include: + "Alert", "Deny", "Off". + :vartype threat_intel_mode: str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallThreatIntelMode + :ivar virtual_hub: The virtualHub to which the firewall belongs. + :vartype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar firewall_policy: The firewallPolicy associated with this azure firewall. + :vartype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar hub_ip_addresses: IP addresses associated with AzureFirewall. + :vartype hub_ip_addresses: ~azure.mgmt.network.v2022_01_01.models.HubIPAddresses + :ivar ip_groups: IpGroups associated with AzureFirewall. + :vartype ip_groups: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallIpGroups] + :ivar sku: The Azure Firewall Resource SKU. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallSku + :ivar additional_properties: The additional properties used to further config this azure + firewall. + :vartype additional_properties: dict[str, str] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'ip_groups': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'zones': {'key': 'zones', 'type': '[str]'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'application_rule_collections': {'key': 'properties.applicationRuleCollections', 'type': '[AzureFirewallApplicationRuleCollection]'}, + 'nat_rule_collections': {'key': 'properties.natRuleCollections', 'type': '[AzureFirewallNatRuleCollection]'}, + 'network_rule_collections': {'key': 'properties.networkRuleCollections', 'type': '[AzureFirewallNetworkRuleCollection]'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[AzureFirewallIPConfiguration]'}, + 'management_ip_configuration': {'key': 'properties.managementIpConfiguration', 'type': 'AzureFirewallIPConfiguration'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'threat_intel_mode': {'key': 'properties.threatIntelMode', 'type': 'str'}, + 'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'}, + 'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'}, + 'hub_ip_addresses': {'key': 'properties.hubIPAddresses', 'type': 'HubIPAddresses'}, + 'ip_groups': {'key': 'properties.ipGroups', 'type': '[AzureFirewallIpGroups]'}, + 'sku': {'key': 'properties.sku', 'type': 'AzureFirewallSku'}, + 'additional_properties': {'key': 'properties.additionalProperties', 'type': '{str}'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + zones: Optional[List[str]] = None, + application_rule_collections: Optional[List["AzureFirewallApplicationRuleCollection"]] = None, + nat_rule_collections: Optional[List["AzureFirewallNatRuleCollection"]] = None, + network_rule_collections: Optional[List["AzureFirewallNetworkRuleCollection"]] = None, + ip_configurations: Optional[List["AzureFirewallIPConfiguration"]] = None, + management_ip_configuration: Optional["AzureFirewallIPConfiguration"] = None, + threat_intel_mode: Optional[Union[str, "AzureFirewallThreatIntelMode"]] = None, + virtual_hub: Optional["SubResource"] = None, + firewall_policy: Optional["SubResource"] = None, + hub_ip_addresses: Optional["HubIPAddresses"] = None, + sku: Optional["AzureFirewallSku"] = None, + additional_properties: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword zones: A list of availability zones denoting where the resource needs to come from. + :paramtype zones: list[str] + :keyword application_rule_collections: Collection of application rule collections used by Azure + Firewall. + :paramtype application_rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRuleCollection] + :keyword nat_rule_collections: Collection of NAT rule collections used by Azure Firewall. + :paramtype nat_rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRuleCollection] + :keyword network_rule_collections: Collection of network rule collections used by Azure + Firewall. + :paramtype network_rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRuleCollection] + :keyword ip_configurations: IP configuration of the Azure Firewall resource. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallIPConfiguration] + :keyword management_ip_configuration: IP configuration of the Azure Firewall used for + management traffic. + :paramtype management_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallIPConfiguration + :keyword threat_intel_mode: The operation mode for Threat Intelligence. Possible values + include: "Alert", "Deny", "Off". + :paramtype threat_intel_mode: str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallThreatIntelMode + :keyword virtual_hub: The virtualHub to which the firewall belongs. + :paramtype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword firewall_policy: The firewallPolicy associated with this azure firewall. + :paramtype firewall_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword hub_ip_addresses: IP addresses associated with AzureFirewall. + :paramtype hub_ip_addresses: ~azure.mgmt.network.v2022_01_01.models.HubIPAddresses + :keyword sku: The Azure Firewall Resource SKU. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallSku + :keyword additional_properties: The additional properties used to further config this azure + firewall. + :paramtype additional_properties: dict[str, str] + """ + super(AzureFirewall, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.zones = zones + self.etag = None + self.application_rule_collections = application_rule_collections + self.nat_rule_collections = nat_rule_collections + self.network_rule_collections = network_rule_collections + self.ip_configurations = ip_configurations + self.management_ip_configuration = management_ip_configuration + self.provisioning_state = None + self.threat_intel_mode = threat_intel_mode + self.virtual_hub = virtual_hub + self.firewall_policy = firewall_policy + self.hub_ip_addresses = hub_ip_addresses + self.ip_groups = None + self.sku = sku + self.additional_properties = additional_properties + + +class AzureFirewallApplicationRule(msrest.serialization.Model): + """Properties of an application rule. + + :ivar name: Name of the application rule. + :vartype name: str + :ivar description: Description of the rule. + :vartype description: str + :ivar source_addresses: List of source IP addresses for this rule. + :vartype source_addresses: list[str] + :ivar protocols: Array of ApplicationRuleProtocols. + :vartype protocols: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRuleProtocol] + :ivar target_fqdns: List of FQDNs for this rule. + :vartype target_fqdns: list[str] + :ivar fqdn_tags: List of FQDN Tags for this rule. + :vartype fqdn_tags: list[str] + :ivar source_ip_groups: List of source IpGroups for this rule. + :vartype source_ip_groups: list[str] + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'}, + 'protocols': {'key': 'protocols', 'type': '[AzureFirewallApplicationRuleProtocol]'}, + 'target_fqdns': {'key': 'targetFqdns', 'type': '[str]'}, + 'fqdn_tags': {'key': 'fqdnTags', 'type': '[str]'}, + 'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + source_addresses: Optional[List[str]] = None, + protocols: Optional[List["AzureFirewallApplicationRuleProtocol"]] = None, + target_fqdns: Optional[List[str]] = None, + fqdn_tags: Optional[List[str]] = None, + source_ip_groups: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword name: Name of the application rule. + :paramtype name: str + :keyword description: Description of the rule. + :paramtype description: str + :keyword source_addresses: List of source IP addresses for this rule. + :paramtype source_addresses: list[str] + :keyword protocols: Array of ApplicationRuleProtocols. + :paramtype protocols: + list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRuleProtocol] + :keyword target_fqdns: List of FQDNs for this rule. + :paramtype target_fqdns: list[str] + :keyword fqdn_tags: List of FQDN Tags for this rule. + :paramtype fqdn_tags: list[str] + :keyword source_ip_groups: List of source IpGroups for this rule. + :paramtype source_ip_groups: list[str] + """ + super(AzureFirewallApplicationRule, self).__init__(**kwargs) + self.name = name + self.description = description + self.source_addresses = source_addresses + self.protocols = protocols + self.target_fqdns = target_fqdns + self.fqdn_tags = fqdn_tags + self.source_ip_groups = source_ip_groups + + +class AzureFirewallApplicationRuleCollection(SubResource): + """Application rule collection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the Azure firewall. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar priority: Priority of the application rule collection resource. + :vartype priority: int + :ivar action: The action type of a rule collection. + :vartype action: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallRCAction + :ivar rules: Collection of rules used by a application rule collection. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRule] + :ivar provisioning_state: The provisioning state of the application rule collection resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'priority': {'maximum': 65000, 'minimum': 100}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'}, + 'rules': {'key': 'properties.rules', 'type': '[AzureFirewallApplicationRule]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + priority: Optional[int] = None, + action: Optional["AzureFirewallRCAction"] = None, + rules: Optional[List["AzureFirewallApplicationRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the Azure firewall. This name can + be used to access the resource. + :paramtype name: str + :keyword priority: Priority of the application rule collection resource. + :paramtype priority: int + :keyword action: The action type of a rule collection. + :paramtype action: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallRCAction + :keyword rules: Collection of rules used by a application rule collection. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRule] + """ + super(AzureFirewallApplicationRuleCollection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.priority = priority + self.action = action + self.rules = rules + self.provisioning_state = None + + +class AzureFirewallApplicationRuleProtocol(msrest.serialization.Model): + """Properties of the application rule protocol. + + :ivar protocol_type: Protocol type. Possible values include: "Http", "Https", "Mssql". + :vartype protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRuleProtocolType + :ivar port: Port number for the protocol, cannot be greater than 64000. This field is optional. + :vartype port: int + """ + + _validation = { + 'port': {'maximum': 64000, 'minimum': 0}, + } + + _attribute_map = { + 'protocol_type': {'key': 'protocolType', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'int'}, + } + + def __init__( + self, + *, + protocol_type: Optional[Union[str, "AzureFirewallApplicationRuleProtocolType"]] = None, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword protocol_type: Protocol type. Possible values include: "Http", "Https", "Mssql". + :paramtype protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallApplicationRuleProtocolType + :keyword port: Port number for the protocol, cannot be greater than 64000. This field is + optional. + :paramtype port: int + """ + super(AzureFirewallApplicationRuleProtocol, self).__init__(**kwargs) + self.protocol_type = protocol_type + self.port = port + + +class AzureFirewallFqdnTag(Resource): + """Azure Firewall FQDN Tag Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar provisioning_state: The provisioning state of the Azure firewall FQDN tag resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar fqdn_tag_name: The name of this FQDN Tag. + :vartype fqdn_tag_name: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'fqdn_tag_name': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'fqdn_tag_name': {'key': 'properties.fqdnTagName', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ + super(AzureFirewallFqdnTag, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.provisioning_state = None + self.fqdn_tag_name = None + + +class AzureFirewallFqdnTagListResult(msrest.serialization.Model): + """Response for ListAzureFirewallFqdnTags API service call. + + :ivar value: List of Azure Firewall FQDN Tags in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallFqdnTag] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AzureFirewallFqdnTag]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["AzureFirewallFqdnTag"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Azure Firewall FQDN Tags in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallFqdnTag] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(AzureFirewallFqdnTagListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class AzureFirewallIPConfiguration(SubResource): + """IP configuration of an Azure Firewall. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the resource that is unique within a resource group. This name can be used + to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar private_ip_address: The Firewall Internal Load Balancer IP to be used as the next hop in + User Defined Routes. + :vartype private_ip_address: str + :ivar subnet: Reference to the subnet resource. This resource must be named + 'AzureFirewallSubnet' or 'AzureFirewallManagementSubnet'. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar public_ip_address: Reference to the PublicIP resource. This field is a mandatory input if + subnet is not null. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the Azure firewall IP configuration + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'private_ip_address': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + subnet: Optional["SubResource"] = None, + public_ip_address: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the resource that is unique within a resource group. This name can be + used to access the resource. + :paramtype name: str + :keyword subnet: Reference to the subnet resource. This resource must be named + 'AzureFirewallSubnet' or 'AzureFirewallManagementSubnet'. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword public_ip_address: Reference to the PublicIP resource. This field is a mandatory input + if subnet is not null. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(AzureFirewallIPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.private_ip_address = None + self.subnet = subnet + self.public_ip_address = public_ip_address + self.provisioning_state = None + + +class AzureFirewallIpGroups(msrest.serialization.Model): + """IpGroups associated with azure firewall. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar change_number: The iteration number. + :vartype change_number: str + """ + + _validation = { + 'id': {'readonly': True}, + 'change_number': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'change_number': {'key': 'changeNumber', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(AzureFirewallIpGroups, self).__init__(**kwargs) + self.id = None + self.change_number = None + + +class AzureFirewallListResult(msrest.serialization.Model): + """Response for ListAzureFirewalls API service call. + + :ivar value: List of Azure Firewalls in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewall] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AzureFirewall]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["AzureFirewall"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Azure Firewalls in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewall] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(AzureFirewallListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class AzureFirewallNatRCAction(msrest.serialization.Model): + """AzureFirewall NAT Rule Collection Action. + + :ivar type: The type of action. Possible values include: "Snat", "Dnat". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRCActionType + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "AzureFirewallNatRCActionType"]] = None, + **kwargs + ): + """ + :keyword type: The type of action. Possible values include: "Snat", "Dnat". + :paramtype type: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRCActionType + """ + super(AzureFirewallNatRCAction, self).__init__(**kwargs) + self.type = type + + +class AzureFirewallNatRule(msrest.serialization.Model): + """Properties of a NAT rule. + + :ivar name: Name of the NAT rule. + :vartype name: str + :ivar description: Description of the rule. + :vartype description: str + :ivar source_addresses: List of source IP addresses for this rule. + :vartype source_addresses: list[str] + :ivar destination_addresses: List of destination IP addresses for this rule. Supports IP + ranges, prefixes, and service tags. + :vartype destination_addresses: list[str] + :ivar destination_ports: List of destination ports. + :vartype destination_ports: list[str] + :ivar protocols: Array of AzureFirewallNetworkRuleProtocols applicable to this NAT rule. + :vartype protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRuleProtocol] + :ivar translated_address: The translated address for this NAT rule. + :vartype translated_address: str + :ivar translated_port: The translated port for this NAT rule. + :vartype translated_port: str + :ivar translated_fqdn: The translated FQDN for this NAT rule. + :vartype translated_fqdn: str + :ivar source_ip_groups: List of source IpGroups for this rule. + :vartype source_ip_groups: list[str] + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'}, + 'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'}, + 'destination_ports': {'key': 'destinationPorts', 'type': '[str]'}, + 'protocols': {'key': 'protocols', 'type': '[str]'}, + 'translated_address': {'key': 'translatedAddress', 'type': 'str'}, + 'translated_port': {'key': 'translatedPort', 'type': 'str'}, + 'translated_fqdn': {'key': 'translatedFqdn', 'type': 'str'}, + 'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + source_addresses: Optional[List[str]] = None, + destination_addresses: Optional[List[str]] = None, + destination_ports: Optional[List[str]] = None, + protocols: Optional[List[Union[str, "AzureFirewallNetworkRuleProtocol"]]] = None, + translated_address: Optional[str] = None, + translated_port: Optional[str] = None, + translated_fqdn: Optional[str] = None, + source_ip_groups: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword name: Name of the NAT rule. + :paramtype name: str + :keyword description: Description of the rule. + :paramtype description: str + :keyword source_addresses: List of source IP addresses for this rule. + :paramtype source_addresses: list[str] + :keyword destination_addresses: List of destination IP addresses for this rule. Supports IP + ranges, prefixes, and service tags. + :paramtype destination_addresses: list[str] + :keyword destination_ports: List of destination ports. + :paramtype destination_ports: list[str] + :keyword protocols: Array of AzureFirewallNetworkRuleProtocols applicable to this NAT rule. + :paramtype protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRuleProtocol] + :keyword translated_address: The translated address for this NAT rule. + :paramtype translated_address: str + :keyword translated_port: The translated port for this NAT rule. + :paramtype translated_port: str + :keyword translated_fqdn: The translated FQDN for this NAT rule. + :paramtype translated_fqdn: str + :keyword source_ip_groups: List of source IpGroups for this rule. + :paramtype source_ip_groups: list[str] + """ + super(AzureFirewallNatRule, self).__init__(**kwargs) + self.name = name + self.description = description + self.source_addresses = source_addresses + self.destination_addresses = destination_addresses + self.destination_ports = destination_ports + self.protocols = protocols + self.translated_address = translated_address + self.translated_port = translated_port + self.translated_fqdn = translated_fqdn + self.source_ip_groups = source_ip_groups + + +class AzureFirewallNatRuleCollection(SubResource): + """NAT rule collection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the Azure firewall. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar priority: Priority of the NAT rule collection resource. + :vartype priority: int + :ivar action: The action type of a NAT rule collection. + :vartype action: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRCAction + :ivar rules: Collection of rules used by a NAT rule collection. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRule] + :ivar provisioning_state: The provisioning state of the NAT rule collection resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'priority': {'maximum': 65000, 'minimum': 100}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'action': {'key': 'properties.action', 'type': 'AzureFirewallNatRCAction'}, + 'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNatRule]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + priority: Optional[int] = None, + action: Optional["AzureFirewallNatRCAction"] = None, + rules: Optional[List["AzureFirewallNatRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the Azure firewall. This name can + be used to access the resource. + :paramtype name: str + :keyword priority: Priority of the NAT rule collection resource. + :paramtype priority: int + :keyword action: The action type of a NAT rule collection. + :paramtype action: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRCAction + :keyword rules: Collection of rules used by a NAT rule collection. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNatRule] + """ + super(AzureFirewallNatRuleCollection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.priority = priority + self.action = action + self.rules = rules + self.provisioning_state = None + + +class AzureFirewallNetworkRule(msrest.serialization.Model): + """Properties of the network rule. + + :ivar name: Name of the network rule. + :vartype name: str + :ivar description: Description of the rule. + :vartype description: str + :ivar protocols: Array of AzureFirewallNetworkRuleProtocols. + :vartype protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRuleProtocol] + :ivar source_addresses: List of source IP addresses for this rule. + :vartype source_addresses: list[str] + :ivar destination_addresses: List of destination IP addresses. + :vartype destination_addresses: list[str] + :ivar destination_ports: List of destination ports. + :vartype destination_ports: list[str] + :ivar destination_fqdns: List of destination FQDNs. + :vartype destination_fqdns: list[str] + :ivar source_ip_groups: List of source IpGroups for this rule. + :vartype source_ip_groups: list[str] + :ivar destination_ip_groups: List of destination IpGroups for this rule. + :vartype destination_ip_groups: list[str] + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'protocols': {'key': 'protocols', 'type': '[str]'}, + 'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'}, + 'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'}, + 'destination_ports': {'key': 'destinationPorts', 'type': '[str]'}, + 'destination_fqdns': {'key': 'destinationFqdns', 'type': '[str]'}, + 'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'}, + 'destination_ip_groups': {'key': 'destinationIpGroups', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + protocols: Optional[List[Union[str, "AzureFirewallNetworkRuleProtocol"]]] = None, + source_addresses: Optional[List[str]] = None, + destination_addresses: Optional[List[str]] = None, + destination_ports: Optional[List[str]] = None, + destination_fqdns: Optional[List[str]] = None, + source_ip_groups: Optional[List[str]] = None, + destination_ip_groups: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword name: Name of the network rule. + :paramtype name: str + :keyword description: Description of the rule. + :paramtype description: str + :keyword protocols: Array of AzureFirewallNetworkRuleProtocols. + :paramtype protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRuleProtocol] + :keyword source_addresses: List of source IP addresses for this rule. + :paramtype source_addresses: list[str] + :keyword destination_addresses: List of destination IP addresses. + :paramtype destination_addresses: list[str] + :keyword destination_ports: List of destination ports. + :paramtype destination_ports: list[str] + :keyword destination_fqdns: List of destination FQDNs. + :paramtype destination_fqdns: list[str] + :keyword source_ip_groups: List of source IpGroups for this rule. + :paramtype source_ip_groups: list[str] + :keyword destination_ip_groups: List of destination IpGroups for this rule. + :paramtype destination_ip_groups: list[str] + """ + super(AzureFirewallNetworkRule, self).__init__(**kwargs) + self.name = name + self.description = description + self.protocols = protocols + self.source_addresses = source_addresses + self.destination_addresses = destination_addresses + self.destination_ports = destination_ports + self.destination_fqdns = destination_fqdns + self.source_ip_groups = source_ip_groups + self.destination_ip_groups = destination_ip_groups + + +class AzureFirewallNetworkRuleCollection(SubResource): + """Network rule collection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the Azure firewall. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar priority: Priority of the network rule collection resource. + :vartype priority: int + :ivar action: The action type of a rule collection. + :vartype action: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallRCAction + :ivar rules: Collection of rules used by a network rule collection. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRule] + :ivar provisioning_state: The provisioning state of the network rule collection resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'priority': {'maximum': 65000, 'minimum': 100}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'}, + 'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNetworkRule]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + priority: Optional[int] = None, + action: Optional["AzureFirewallRCAction"] = None, + rules: Optional[List["AzureFirewallNetworkRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the Azure firewall. This name can + be used to access the resource. + :paramtype name: str + :keyword priority: Priority of the network rule collection resource. + :paramtype priority: int + :keyword action: The action type of a rule collection. + :paramtype action: ~azure.mgmt.network.v2022_01_01.models.AzureFirewallRCAction + :keyword rules: Collection of rules used by a network rule collection. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallNetworkRule] + """ + super(AzureFirewallNetworkRuleCollection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.priority = priority + self.action = action + self.rules = rules + self.provisioning_state = None + + +class AzureFirewallPublicIPAddress(msrest.serialization.Model): + """Public IP Address associated with azure firewall. + + :ivar address: Public IP Address value. + :vartype address: str + """ + + _attribute_map = { + 'address': {'key': 'address', 'type': 'str'}, + } + + def __init__( + self, + *, + address: Optional[str] = None, + **kwargs + ): + """ + :keyword address: Public IP Address value. + :paramtype address: str + """ + super(AzureFirewallPublicIPAddress, self).__init__(**kwargs) + self.address = address + + +class AzureFirewallRCAction(msrest.serialization.Model): + """Properties of the AzureFirewallRCAction. + + :ivar type: The type of action. Possible values include: "Allow", "Deny". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallRCActionType + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "AzureFirewallRCActionType"]] = None, + **kwargs + ): + """ + :keyword type: The type of action. Possible values include: "Allow", "Deny". + :paramtype type: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallRCActionType + """ + super(AzureFirewallRCAction, self).__init__(**kwargs) + self.type = type + + +class AzureFirewallSku(msrest.serialization.Model): + """SKU of an Azure Firewall. + + :ivar name: Name of an Azure Firewall SKU. Possible values include: "AZFW_VNet", "AZFW_Hub". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallSkuName + :ivar tier: Tier of an Azure Firewall. Possible values include: "Standard", "Premium", "Basic". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallSkuTier + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'tier': {'key': 'tier', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "AzureFirewallSkuName"]] = None, + tier: Optional[Union[str, "AzureFirewallSkuTier"]] = None, + **kwargs + ): + """ + :keyword name: Name of an Azure Firewall SKU. Possible values include: "AZFW_VNet", "AZFW_Hub". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallSkuName + :keyword tier: Tier of an Azure Firewall. Possible values include: "Standard", "Premium", + "Basic". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.AzureFirewallSkuTier + """ + super(AzureFirewallSku, self).__init__(**kwargs) + self.name = name + self.tier = tier + + +class AzureReachabilityReport(msrest.serialization.Model): + """Azure reachability report details. + + All required parameters must be populated in order to send to Azure. + + :ivar aggregation_level: Required. The aggregation level of Azure reachability report. Can be + Country, State or City. + :vartype aggregation_level: str + :ivar provider_location: Required. Parameters that define a geographic location. + :vartype provider_location: + ~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportLocation + :ivar reachability_report: Required. List of Azure reachability report items. + :vartype reachability_report: + list[~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportItem] + """ + + _validation = { + 'aggregation_level': {'required': True}, + 'provider_location': {'required': True}, + 'reachability_report': {'required': True}, + } + + _attribute_map = { + 'aggregation_level': {'key': 'aggregationLevel', 'type': 'str'}, + 'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'}, + 'reachability_report': {'key': 'reachabilityReport', 'type': '[AzureReachabilityReportItem]'}, + } + + def __init__( + self, + *, + aggregation_level: str, + provider_location: "AzureReachabilityReportLocation", + reachability_report: List["AzureReachabilityReportItem"], + **kwargs + ): + """ + :keyword aggregation_level: Required. The aggregation level of Azure reachability report. Can + be Country, State or City. + :paramtype aggregation_level: str + :keyword provider_location: Required. Parameters that define a geographic location. + :paramtype provider_location: + ~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportLocation + :keyword reachability_report: Required. List of Azure reachability report items. + :paramtype reachability_report: + list[~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportItem] + """ + super(AzureReachabilityReport, self).__init__(**kwargs) + self.aggregation_level = aggregation_level + self.provider_location = provider_location + self.reachability_report = reachability_report + + +class AzureReachabilityReportItem(msrest.serialization.Model): + """Azure reachability report details for a given provider location. + + :ivar provider: The Internet service provider. + :vartype provider: str + :ivar azure_location: The Azure region. + :vartype azure_location: str + :ivar latencies: List of latency details for each of the time series. + :vartype latencies: + list[~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportLatencyInfo] + """ + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'azure_location': {'key': 'azureLocation', 'type': 'str'}, + 'latencies': {'key': 'latencies', 'type': '[AzureReachabilityReportLatencyInfo]'}, + } + + def __init__( + self, + *, + provider: Optional[str] = None, + azure_location: Optional[str] = None, + latencies: Optional[List["AzureReachabilityReportLatencyInfo"]] = None, + **kwargs + ): + """ + :keyword provider: The Internet service provider. + :paramtype provider: str + :keyword azure_location: The Azure region. + :paramtype azure_location: str + :keyword latencies: List of latency details for each of the time series. + :paramtype latencies: + list[~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportLatencyInfo] + """ + super(AzureReachabilityReportItem, self).__init__(**kwargs) + self.provider = provider + self.azure_location = azure_location + self.latencies = latencies + + +class AzureReachabilityReportLatencyInfo(msrest.serialization.Model): + """Details on latency for a time series. + + :ivar time_stamp: The time stamp. + :vartype time_stamp: ~datetime.datetime + :ivar score: The relative latency score between 1 and 100, higher values indicating a faster + connection. + :vartype score: int + """ + + _validation = { + 'score': {'maximum': 100, 'minimum': 1}, + } + + _attribute_map = { + 'time_stamp': {'key': 'timeStamp', 'type': 'iso-8601'}, + 'score': {'key': 'score', 'type': 'int'}, + } + + def __init__( + self, + *, + time_stamp: Optional[datetime.datetime] = None, + score: Optional[int] = None, + **kwargs + ): + """ + :keyword time_stamp: The time stamp. + :paramtype time_stamp: ~datetime.datetime + :keyword score: The relative latency score between 1 and 100, higher values indicating a faster + connection. + :paramtype score: int + """ + super(AzureReachabilityReportLatencyInfo, self).__init__(**kwargs) + self.time_stamp = time_stamp + self.score = score + + +class AzureReachabilityReportLocation(msrest.serialization.Model): + """Parameters that define a geographic location. + + All required parameters must be populated in order to send to Azure. + + :ivar country: Required. The name of the country. + :vartype country: str + :ivar state: The name of the state. + :vartype state: str + :ivar city: The name of the city or town. + :vartype city: str + """ + + _validation = { + 'country': {'required': True}, + } + + _attribute_map = { + 'country': {'key': 'country', 'type': 'str'}, + 'state': {'key': 'state', 'type': 'str'}, + 'city': {'key': 'city', 'type': 'str'}, + } + + def __init__( + self, + *, + country: str, + state: Optional[str] = None, + city: Optional[str] = None, + **kwargs + ): + """ + :keyword country: Required. The name of the country. + :paramtype country: str + :keyword state: The name of the state. + :paramtype state: str + :keyword city: The name of the city or town. + :paramtype city: str + """ + super(AzureReachabilityReportLocation, self).__init__(**kwargs) + self.country = country + self.state = state + self.city = city + + +class AzureReachabilityReportParameters(msrest.serialization.Model): + """Geographic and time constraints for Azure reachability report. + + All required parameters must be populated in order to send to Azure. + + :ivar provider_location: Required. Parameters that define a geographic location. + :vartype provider_location: + ~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportLocation + :ivar providers: List of Internet service providers. + :vartype providers: list[str] + :ivar azure_locations: Optional Azure regions to scope the query to. + :vartype azure_locations: list[str] + :ivar start_time: Required. The start time for the Azure reachability report. + :vartype start_time: ~datetime.datetime + :ivar end_time: Required. The end time for the Azure reachability report. + :vartype end_time: ~datetime.datetime + """ + + _validation = { + 'provider_location': {'required': True}, + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'}, + 'providers': {'key': 'providers', 'type': '[str]'}, + 'azure_locations': {'key': 'azureLocations', 'type': '[str]'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + *, + provider_location: "AzureReachabilityReportLocation", + start_time: datetime.datetime, + end_time: datetime.datetime, + providers: Optional[List[str]] = None, + azure_locations: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword provider_location: Required. Parameters that define a geographic location. + :paramtype provider_location: + ~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportLocation + :keyword providers: List of Internet service providers. + :paramtype providers: list[str] + :keyword azure_locations: Optional Azure regions to scope the query to. + :paramtype azure_locations: list[str] + :keyword start_time: Required. The start time for the Azure reachability report. + :paramtype start_time: ~datetime.datetime + :keyword end_time: Required. The end time for the Azure reachability report. + :paramtype end_time: ~datetime.datetime + """ + super(AzureReachabilityReportParameters, self).__init__(**kwargs) + self.provider_location = provider_location + self.providers = providers + self.azure_locations = azure_locations + self.start_time = start_time + self.end_time = end_time + + +class AzureWebCategory(msrest.serialization.Model): + """Azure Web Category Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar group: The name of the group that the category belongs to. + :vartype group: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'group': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'group': {'key': 'properties.group', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + """ + super(AzureWebCategory, self).__init__(**kwargs) + self.id = id + self.name = None + self.type = None + self.etag = None + self.group = None + + +class AzureWebCategoryListResult(msrest.serialization.Model): + """Response for ListAzureWebCategories API service call. + + :ivar value: List of Azure Web Categories for a given Subscription. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.AzureWebCategory] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AzureWebCategory]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["AzureWebCategory"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Azure Web Categories for a given Subscription. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.AzureWebCategory] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(AzureWebCategoryListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class BackendAddressInboundNatRulePortMappings(msrest.serialization.Model): + """The response for a QueryInboundNatRulePortMapping API. + + :ivar inbound_nat_rule_port_mappings: Collection of inbound NAT rule port mappings. + :vartype inbound_nat_rule_port_mappings: + list[~azure.mgmt.network.v2022_01_01.models.InboundNatRulePortMapping] + """ + + _attribute_map = { + 'inbound_nat_rule_port_mappings': {'key': 'inboundNatRulePortMappings', 'type': '[InboundNatRulePortMapping]'}, + } + + def __init__( + self, + *, + inbound_nat_rule_port_mappings: Optional[List["InboundNatRulePortMapping"]] = None, + **kwargs + ): + """ + :keyword inbound_nat_rule_port_mappings: Collection of inbound NAT rule port mappings. + :paramtype inbound_nat_rule_port_mappings: + list[~azure.mgmt.network.v2022_01_01.models.InboundNatRulePortMapping] + """ + super(BackendAddressInboundNatRulePortMappings, self).__init__(**kwargs) + self.inbound_nat_rule_port_mappings = inbound_nat_rule_port_mappings + + +class BackendAddressPool(SubResource): + """Pool of backend IP addresses. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the set of backend address pools + used by the load balancer. This name can be used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar location: The location of the backend address pool. + :vartype location: str + :ivar tunnel_interfaces: An array of gateway load balancer tunnel interfaces. + :vartype tunnel_interfaces: + list[~azure.mgmt.network.v2022_01_01.models.GatewayLoadBalancerTunnelInterface] + :ivar load_balancer_backend_addresses: An array of backend addresses. + :vartype load_balancer_backend_addresses: + list[~azure.mgmt.network.v2022_01_01.models.LoadBalancerBackendAddress] + :ivar backend_ip_configurations: An array of references to IP addresses defined in network + interfaces. + :vartype backend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration] + :ivar load_balancing_rules: An array of references to load balancing rules that use this + backend address pool. + :vartype load_balancing_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar outbound_rule: A reference to an outbound rule that uses this backend address pool. + :vartype outbound_rule: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar outbound_rules: An array of references to outbound rules that use this backend address + pool. + :vartype outbound_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar inbound_nat_rules: An array of references to inbound NAT rules that use this backend + address pool. + :vartype inbound_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar provisioning_state: The provisioning state of the backend address pool resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar drain_period_in_seconds: Amount of seconds Load Balancer waits for before sending RESET + to client and backend address. + :vartype drain_period_in_seconds: int + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'backend_ip_configurations': {'readonly': True}, + 'load_balancing_rules': {'readonly': True}, + 'outbound_rule': {'readonly': True}, + 'outbound_rules': {'readonly': True}, + 'inbound_nat_rules': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'properties.location', 'type': 'str'}, + 'tunnel_interfaces': {'key': 'properties.tunnelInterfaces', 'type': '[GatewayLoadBalancerTunnelInterface]'}, + 'load_balancer_backend_addresses': {'key': 'properties.loadBalancerBackendAddresses', 'type': '[LoadBalancerBackendAddress]'}, + 'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'}, + 'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'}, + 'outbound_rule': {'key': 'properties.outboundRule', 'type': 'SubResource'}, + 'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'}, + 'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'drain_period_in_seconds': {'key': 'properties.drainPeriodInSeconds', 'type': 'int'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + location: Optional[str] = None, + tunnel_interfaces: Optional[List["GatewayLoadBalancerTunnelInterface"]] = None, + load_balancer_backend_addresses: Optional[List["LoadBalancerBackendAddress"]] = None, + drain_period_in_seconds: Optional[int] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the set of backend address pools + used by the load balancer. This name can be used to access the resource. + :paramtype name: str + :keyword location: The location of the backend address pool. + :paramtype location: str + :keyword tunnel_interfaces: An array of gateway load balancer tunnel interfaces. + :paramtype tunnel_interfaces: + list[~azure.mgmt.network.v2022_01_01.models.GatewayLoadBalancerTunnelInterface] + :keyword load_balancer_backend_addresses: An array of backend addresses. + :paramtype load_balancer_backend_addresses: + list[~azure.mgmt.network.v2022_01_01.models.LoadBalancerBackendAddress] + :keyword drain_period_in_seconds: Amount of seconds Load Balancer waits for before sending + RESET to client and backend address. + :paramtype drain_period_in_seconds: int + """ + super(BackendAddressPool, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.location = location + self.tunnel_interfaces = tunnel_interfaces + self.load_balancer_backend_addresses = load_balancer_backend_addresses + self.backend_ip_configurations = None + self.load_balancing_rules = None + self.outbound_rule = None + self.outbound_rules = None + self.inbound_nat_rules = None + self.provisioning_state = None + self.drain_period_in_seconds = drain_period_in_seconds + + +class BastionActiveSession(msrest.serialization.Model): + """The session detail for a target. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar session_id: A unique id for the session. + :vartype session_id: str + :ivar start_time: The time when the session started. + :vartype start_time: any + :ivar target_subscription_id: The subscription id for the target virtual machine. + :vartype target_subscription_id: str + :ivar resource_type: The type of the resource. + :vartype resource_type: str + :ivar target_host_name: The host name of the target. + :vartype target_host_name: str + :ivar target_resource_group: The resource group of the target. + :vartype target_resource_group: str + :ivar user_name: The user name who is active on this session. + :vartype user_name: str + :ivar target_ip_address: The IP Address of the target. + :vartype target_ip_address: str + :ivar protocol: The protocol used to connect to the target. Possible values include: "SSH", + "RDP". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.BastionConnectProtocol + :ivar target_resource_id: The resource id of the target. + :vartype target_resource_id: str + :ivar session_duration_in_mins: Duration in mins the session has been active. + :vartype session_duration_in_mins: float + """ + + _validation = { + 'session_id': {'readonly': True}, + 'start_time': {'readonly': True}, + 'target_subscription_id': {'readonly': True}, + 'resource_type': {'readonly': True}, + 'target_host_name': {'readonly': True}, + 'target_resource_group': {'readonly': True}, + 'user_name': {'readonly': True}, + 'target_ip_address': {'readonly': True}, + 'protocol': {'readonly': True}, + 'target_resource_id': {'readonly': True}, + 'session_duration_in_mins': {'readonly': True}, + } + + _attribute_map = { + 'session_id': {'key': 'sessionId', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'object'}, + 'target_subscription_id': {'key': 'targetSubscriptionId', 'type': 'str'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'target_host_name': {'key': 'targetHostName', 'type': 'str'}, + 'target_resource_group': {'key': 'targetResourceGroup', 'type': 'str'}, + 'user_name': {'key': 'userName', 'type': 'str'}, + 'target_ip_address': {'key': 'targetIpAddress', 'type': 'str'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + 'session_duration_in_mins': {'key': 'sessionDurationInMins', 'type': 'float'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(BastionActiveSession, self).__init__(**kwargs) + self.session_id = None + self.start_time = None + self.target_subscription_id = None + self.resource_type = None + self.target_host_name = None + self.target_resource_group = None + self.user_name = None + self.target_ip_address = None + self.protocol = None + self.target_resource_id = None + self.session_duration_in_mins = None + + +class BastionActiveSessionListResult(msrest.serialization.Model): + """Response for GetActiveSessions. + + :ivar value: List of active sessions on the bastion. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BastionActiveSession] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BastionActiveSession]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["BastionActiveSession"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of active sessions on the bastion. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BastionActiveSession] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(BastionActiveSessionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class BastionHost(Resource): + """Bastion Host resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar sku: The sku of this Bastion Host. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.Sku + :ivar ip_configurations: IP configuration of the Bastion Host resource. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.BastionHostIPConfiguration] + :ivar dns_name: FQDN for the endpoint on which bastion host is accessible. + :vartype dns_name: str + :ivar provisioning_state: The provisioning state of the bastion host resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar scale_units: The scale units for the Bastion Host resource. + :vartype scale_units: int + :ivar disable_copy_paste: Enable/Disable Copy/Paste feature of the Bastion Host resource. + :vartype disable_copy_paste: bool + :ivar enable_file_copy: Enable/Disable File Copy feature of the Bastion Host resource. + :vartype enable_file_copy: bool + :ivar enable_ip_connect: Enable/Disable IP Connect feature of the Bastion Host resource. + :vartype enable_ip_connect: bool + :ivar enable_shareable_link: Enable/Disable Shareable Link of the Bastion Host resource. + :vartype enable_shareable_link: bool + :ivar enable_tunneling: Enable/Disable Tunneling feature of the Bastion Host resource. + :vartype enable_tunneling: bool + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'scale_units': {'maximum': 50, 'minimum': 2}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'sku': {'key': 'sku', 'type': 'Sku'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[BastionHostIPConfiguration]'}, + 'dns_name': {'key': 'properties.dnsName', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'scale_units': {'key': 'properties.scaleUnits', 'type': 'int'}, + 'disable_copy_paste': {'key': 'properties.disableCopyPaste', 'type': 'bool'}, + 'enable_file_copy': {'key': 'properties.enableFileCopy', 'type': 'bool'}, + 'enable_ip_connect': {'key': 'properties.enableIpConnect', 'type': 'bool'}, + 'enable_shareable_link': {'key': 'properties.enableShareableLink', 'type': 'bool'}, + 'enable_tunneling': {'key': 'properties.enableTunneling', 'type': 'bool'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + sku: Optional["Sku"] = None, + ip_configurations: Optional[List["BastionHostIPConfiguration"]] = None, + dns_name: Optional[str] = None, + scale_units: Optional[int] = None, + disable_copy_paste: Optional[bool] = False, + enable_file_copy: Optional[bool] = False, + enable_ip_connect: Optional[bool] = False, + enable_shareable_link: Optional[bool] = False, + enable_tunneling: Optional[bool] = False, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword sku: The sku of this Bastion Host. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.Sku + :keyword ip_configurations: IP configuration of the Bastion Host resource. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.BastionHostIPConfiguration] + :keyword dns_name: FQDN for the endpoint on which bastion host is accessible. + :paramtype dns_name: str + :keyword scale_units: The scale units for the Bastion Host resource. + :paramtype scale_units: int + :keyword disable_copy_paste: Enable/Disable Copy/Paste feature of the Bastion Host resource. + :paramtype disable_copy_paste: bool + :keyword enable_file_copy: Enable/Disable File Copy feature of the Bastion Host resource. + :paramtype enable_file_copy: bool + :keyword enable_ip_connect: Enable/Disable IP Connect feature of the Bastion Host resource. + :paramtype enable_ip_connect: bool + :keyword enable_shareable_link: Enable/Disable Shareable Link of the Bastion Host resource. + :paramtype enable_shareable_link: bool + :keyword enable_tunneling: Enable/Disable Tunneling feature of the Bastion Host resource. + :paramtype enable_tunneling: bool + """ + super(BastionHost, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.sku = sku + self.ip_configurations = ip_configurations + self.dns_name = dns_name + self.provisioning_state = None + self.scale_units = scale_units + self.disable_copy_paste = disable_copy_paste + self.enable_file_copy = enable_file_copy + self.enable_ip_connect = enable_ip_connect + self.enable_shareable_link = enable_shareable_link + self.enable_tunneling = enable_tunneling + + +class BastionHostIPConfiguration(SubResource): + """IP configuration of an Bastion Host. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the resource that is unique within a resource group. This name can be used + to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Ip configuration type. + :vartype type: str + :ivar subnet: Reference of the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar public_ip_address: Reference of the PublicIP resource. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the bastion host IP configuration resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_ip_allocation_method: Private IP allocation method. Possible values include: + "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + subnet: Optional["SubResource"] = None, + public_ip_address: Optional["SubResource"] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the resource that is unique within a resource group. This name can be + used to access the resource. + :paramtype name: str + :keyword subnet: Reference of the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword public_ip_address: Reference of the PublicIP resource. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword private_ip_allocation_method: Private IP allocation method. Possible values include: + "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + """ + super(BastionHostIPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.subnet = subnet + self.public_ip_address = public_ip_address + self.provisioning_state = None + self.private_ip_allocation_method = private_ip_allocation_method + + +class BastionHostListResult(msrest.serialization.Model): + """Response for ListBastionHosts API service call. + + :ivar value: List of Bastion Hosts in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BastionHost] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BastionHost]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["BastionHost"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Bastion Hosts in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BastionHost] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(BastionHostListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class BastionSessionDeleteResult(msrest.serialization.Model): + """Response for DisconnectActiveSessions. + + :ivar value: List of sessions with their corresponding state. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BastionSessionState] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BastionSessionState]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["BastionSessionState"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of sessions with their corresponding state. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BastionSessionState] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(BastionSessionDeleteResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class BastionSessionState(msrest.serialization.Model): + """The session state detail for a target. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar session_id: A unique id for the session. + :vartype session_id: str + :ivar message: Used for extra information. + :vartype message: str + :ivar state: The state of the session. Disconnected/Failed/NotFound. + :vartype state: str + """ + + _validation = { + 'session_id': {'readonly': True}, + 'message': {'readonly': True}, + 'state': {'readonly': True}, + } + + _attribute_map = { + 'session_id': {'key': 'sessionId', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'state': {'key': 'state', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(BastionSessionState, self).__init__(**kwargs) + self.session_id = None + self.message = None + self.state = None + + +class BastionShareableLink(msrest.serialization.Model): + """Bastion Shareable Link. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar vm: Required. Reference of the virtual machine resource. + :vartype vm: ~azure.mgmt.network.v2022_01_01.models.VM + :ivar bsl: The unique Bastion Shareable Link to the virtual machine. + :vartype bsl: str + :ivar created_at: The time when the link was created. + :vartype created_at: str + :ivar message: Optional field indicating the warning or error message related to the vm in case + of partial failure. + :vartype message: str + """ + + _validation = { + 'vm': {'required': True}, + 'bsl': {'readonly': True}, + 'created_at': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'vm': {'key': 'vm', 'type': 'VM'}, + 'bsl': {'key': 'bsl', 'type': 'str'}, + 'created_at': {'key': 'createdAt', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + *, + vm: "VM", + **kwargs + ): + """ + :keyword vm: Required. Reference of the virtual machine resource. + :paramtype vm: ~azure.mgmt.network.v2022_01_01.models.VM + """ + super(BastionShareableLink, self).__init__(**kwargs) + self.vm = vm + self.bsl = None + self.created_at = None + self.message = None + + +class BastionShareableLinkListRequest(msrest.serialization.Model): + """Post request for all the Bastion Shareable Link endpoints. + + :ivar vms: List of VM references. + :vartype vms: list[~azure.mgmt.network.v2022_01_01.models.BastionShareableLink] + """ + + _attribute_map = { + 'vms': {'key': 'vms', 'type': '[BastionShareableLink]'}, + } + + def __init__( + self, + *, + vms: Optional[List["BastionShareableLink"]] = None, + **kwargs + ): + """ + :keyword vms: List of VM references. + :paramtype vms: list[~azure.mgmt.network.v2022_01_01.models.BastionShareableLink] + """ + super(BastionShareableLinkListRequest, self).__init__(**kwargs) + self.vms = vms + + +class BastionShareableLinkListResult(msrest.serialization.Model): + """Response for all the Bastion Shareable Link endpoints. + + :ivar value: List of Bastion Shareable Links for the request. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BastionShareableLink] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BastionShareableLink]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["BastionShareableLink"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Bastion Shareable Links for the request. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BastionShareableLink] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(BastionShareableLinkListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class BGPCommunity(msrest.serialization.Model): + """Contains bgp community information offered in Service Community resources. + + :ivar service_supported_region: The region which the service support. e.g. For O365, region is + Global. + :vartype service_supported_region: str + :ivar community_name: The name of the bgp community. e.g. Skype. + :vartype community_name: str + :ivar community_value: The value of the bgp community. For more information: + https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing. + :vartype community_value: str + :ivar community_prefixes: The prefixes that the bgp community contains. + :vartype community_prefixes: list[str] + :ivar is_authorized_to_use: Customer is authorized to use bgp community or not. + :vartype is_authorized_to_use: bool + :ivar service_group: The service group of the bgp community contains. + :vartype service_group: str + """ + + _attribute_map = { + 'service_supported_region': {'key': 'serviceSupportedRegion', 'type': 'str'}, + 'community_name': {'key': 'communityName', 'type': 'str'}, + 'community_value': {'key': 'communityValue', 'type': 'str'}, + 'community_prefixes': {'key': 'communityPrefixes', 'type': '[str]'}, + 'is_authorized_to_use': {'key': 'isAuthorizedToUse', 'type': 'bool'}, + 'service_group': {'key': 'serviceGroup', 'type': 'str'}, + } + + def __init__( + self, + *, + service_supported_region: Optional[str] = None, + community_name: Optional[str] = None, + community_value: Optional[str] = None, + community_prefixes: Optional[List[str]] = None, + is_authorized_to_use: Optional[bool] = None, + service_group: Optional[str] = None, + **kwargs + ): + """ + :keyword service_supported_region: The region which the service support. e.g. For O365, region + is Global. + :paramtype service_supported_region: str + :keyword community_name: The name of the bgp community. e.g. Skype. + :paramtype community_name: str + :keyword community_value: The value of the bgp community. For more information: + https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing. + :paramtype community_value: str + :keyword community_prefixes: The prefixes that the bgp community contains. + :paramtype community_prefixes: list[str] + :keyword is_authorized_to_use: Customer is authorized to use bgp community or not. + :paramtype is_authorized_to_use: bool + :keyword service_group: The service group of the bgp community contains. + :paramtype service_group: str + """ + super(BGPCommunity, self).__init__(**kwargs) + self.service_supported_region = service_supported_region + self.community_name = community_name + self.community_value = community_value + self.community_prefixes = community_prefixes + self.is_authorized_to_use = is_authorized_to_use + self.service_group = service_group + + +class BgpConnection(SubResource): + """Virtual Appliance Site resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the connection. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Connection type. + :vartype type: str + :ivar peer_asn: Peer ASN. + :vartype peer_asn: long + :ivar peer_ip: Peer IP. + :vartype peer_ip: str + :ivar hub_virtual_network_connection: The reference to the HubVirtualNetworkConnection + resource. + :vartype hub_virtual_network_connection: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar connection_state: The current state of the VirtualHub to Peer. Possible values include: + "Unknown", "Connecting", "Connected", "NotConnected". + :vartype connection_state: str or ~azure.mgmt.network.v2022_01_01.models.HubBgpConnectionStatus + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'peer_asn': {'maximum': 4294967295, 'minimum': 0}, + 'provisioning_state': {'readonly': True}, + 'connection_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'peer_asn': {'key': 'properties.peerAsn', 'type': 'long'}, + 'peer_ip': {'key': 'properties.peerIp', 'type': 'str'}, + 'hub_virtual_network_connection': {'key': 'properties.hubVirtualNetworkConnection', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'connection_state': {'key': 'properties.connectionState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + peer_asn: Optional[int] = None, + peer_ip: Optional[str] = None, + hub_virtual_network_connection: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the connection. + :paramtype name: str + :keyword peer_asn: Peer ASN. + :paramtype peer_asn: long + :keyword peer_ip: Peer IP. + :paramtype peer_ip: str + :keyword hub_virtual_network_connection: The reference to the HubVirtualNetworkConnection + resource. + :paramtype hub_virtual_network_connection: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(BgpConnection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.peer_asn = peer_asn + self.peer_ip = peer_ip + self.hub_virtual_network_connection = hub_virtual_network_connection + self.provisioning_state = None + self.connection_state = None + + +class BgpPeerStatus(msrest.serialization.Model): + """BGP peer status details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar local_address: The virtual network gateway's local address. + :vartype local_address: str + :ivar neighbor: The remote BGP peer. + :vartype neighbor: str + :ivar asn: The autonomous system number of the remote BGP peer. + :vartype asn: long + :ivar state: The BGP peer state. Possible values include: "Unknown", "Stopped", "Idle", + "Connecting", "Connected". + :vartype state: str or ~azure.mgmt.network.v2022_01_01.models.BgpPeerState + :ivar connected_duration: For how long the peering has been up. + :vartype connected_duration: str + :ivar routes_received: The number of routes learned from this peer. + :vartype routes_received: long + :ivar messages_sent: The number of BGP messages sent. + :vartype messages_sent: long + :ivar messages_received: The number of BGP messages received. + :vartype messages_received: long + """ + + _validation = { + 'local_address': {'readonly': True}, + 'neighbor': {'readonly': True}, + 'asn': {'readonly': True, 'maximum': 4294967295, 'minimum': 0}, + 'state': {'readonly': True}, + 'connected_duration': {'readonly': True}, + 'routes_received': {'readonly': True}, + 'messages_sent': {'readonly': True}, + 'messages_received': {'readonly': True}, + } + + _attribute_map = { + 'local_address': {'key': 'localAddress', 'type': 'str'}, + 'neighbor': {'key': 'neighbor', 'type': 'str'}, + 'asn': {'key': 'asn', 'type': 'long'}, + 'state': {'key': 'state', 'type': 'str'}, + 'connected_duration': {'key': 'connectedDuration', 'type': 'str'}, + 'routes_received': {'key': 'routesReceived', 'type': 'long'}, + 'messages_sent': {'key': 'messagesSent', 'type': 'long'}, + 'messages_received': {'key': 'messagesReceived', 'type': 'long'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(BgpPeerStatus, self).__init__(**kwargs) + self.local_address = None + self.neighbor = None + self.asn = None + self.state = None + self.connected_duration = None + self.routes_received = None + self.messages_sent = None + self.messages_received = None + + +class BgpPeerStatusListResult(msrest.serialization.Model): + """Response for list BGP peer status API service call. + + :ivar value: List of BGP peers. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BgpPeerStatus] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BgpPeerStatus]'}, + } + + def __init__( + self, + *, + value: Optional[List["BgpPeerStatus"]] = None, + **kwargs + ): + """ + :keyword value: List of BGP peers. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BgpPeerStatus] + """ + super(BgpPeerStatusListResult, self).__init__(**kwargs) + self.value = value + + +class BgpServiceCommunity(Resource): + """Service Community Properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar service_name: The name of the bgp community. e.g. Skype. + :vartype service_name: str + :ivar bgp_communities: A list of bgp communities. + :vartype bgp_communities: list[~azure.mgmt.network.v2022_01_01.models.BGPCommunity] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'service_name': {'key': 'properties.serviceName', 'type': 'str'}, + 'bgp_communities': {'key': 'properties.bgpCommunities', 'type': '[BGPCommunity]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + service_name: Optional[str] = None, + bgp_communities: Optional[List["BGPCommunity"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword service_name: The name of the bgp community. e.g. Skype. + :paramtype service_name: str + :keyword bgp_communities: A list of bgp communities. + :paramtype bgp_communities: list[~azure.mgmt.network.v2022_01_01.models.BGPCommunity] + """ + super(BgpServiceCommunity, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.service_name = service_name + self.bgp_communities = bgp_communities + + +class BgpServiceCommunityListResult(msrest.serialization.Model): + """Response for the ListServiceCommunity API service call. + + :ivar value: A list of service community resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BgpServiceCommunity] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BgpServiceCommunity]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["BgpServiceCommunity"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of service community resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BgpServiceCommunity] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(BgpServiceCommunityListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class BgpSettings(msrest.serialization.Model): + """BGP settings details. + + :ivar asn: The BGP speaker's ASN. + :vartype asn: long + :ivar bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker. + :vartype bgp_peering_address: str + :ivar peer_weight: The weight added to routes learned from this BGP speaker. + :vartype peer_weight: int + :ivar bgp_peering_addresses: BGP peering address with IP configuration ID for virtual network + gateway. + :vartype bgp_peering_addresses: + list[~azure.mgmt.network.v2022_01_01.models.IPConfigurationBgpPeeringAddress] + """ + + _validation = { + 'asn': {'maximum': 4294967295, 'minimum': 0}, + } + + _attribute_map = { + 'asn': {'key': 'asn', 'type': 'long'}, + 'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'}, + 'peer_weight': {'key': 'peerWeight', 'type': 'int'}, + 'bgp_peering_addresses': {'key': 'bgpPeeringAddresses', 'type': '[IPConfigurationBgpPeeringAddress]'}, + } + + def __init__( + self, + *, + asn: Optional[int] = None, + bgp_peering_address: Optional[str] = None, + peer_weight: Optional[int] = None, + bgp_peering_addresses: Optional[List["IPConfigurationBgpPeeringAddress"]] = None, + **kwargs + ): + """ + :keyword asn: The BGP speaker's ASN. + :paramtype asn: long + :keyword bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker. + :paramtype bgp_peering_address: str + :keyword peer_weight: The weight added to routes learned from this BGP speaker. + :paramtype peer_weight: int + :keyword bgp_peering_addresses: BGP peering address with IP configuration ID for virtual + network gateway. + :paramtype bgp_peering_addresses: + list[~azure.mgmt.network.v2022_01_01.models.IPConfigurationBgpPeeringAddress] + """ + super(BgpSettings, self).__init__(**kwargs) + self.asn = asn + self.bgp_peering_address = bgp_peering_address + self.peer_weight = peer_weight + self.bgp_peering_addresses = bgp_peering_addresses + + +class BreakOutCategoryPolicies(msrest.serialization.Model): + """Network Virtual Appliance Sku Properties. + + :ivar allow: Flag to control breakout of o365 allow category. + :vartype allow: bool + :ivar optimize: Flag to control breakout of o365 optimize category. + :vartype optimize: bool + :ivar default: Flag to control breakout of o365 default category. + :vartype default: bool + """ + + _attribute_map = { + 'allow': {'key': 'allow', 'type': 'bool'}, + 'optimize': {'key': 'optimize', 'type': 'bool'}, + 'default': {'key': 'default', 'type': 'bool'}, + } + + def __init__( + self, + *, + allow: Optional[bool] = None, + optimize: Optional[bool] = None, + default: Optional[bool] = None, + **kwargs + ): + """ + :keyword allow: Flag to control breakout of o365 allow category. + :paramtype allow: bool + :keyword optimize: Flag to control breakout of o365 optimize category. + :paramtype optimize: bool + :keyword default: Flag to control breakout of o365 default category. + :paramtype default: bool + """ + super(BreakOutCategoryPolicies, self).__init__(**kwargs) + self.allow = allow + self.optimize = optimize + self.default = default + + +class CheckPrivateLinkServiceVisibilityRequest(msrest.serialization.Model): + """Request body of the CheckPrivateLinkServiceVisibility API service call. + + :ivar private_link_service_alias: The alias of the private link service. + :vartype private_link_service_alias: str + """ + + _attribute_map = { + 'private_link_service_alias': {'key': 'privateLinkServiceAlias', 'type': 'str'}, + } + + def __init__( + self, + *, + private_link_service_alias: Optional[str] = None, + **kwargs + ): + """ + :keyword private_link_service_alias: The alias of the private link service. + :paramtype private_link_service_alias: str + """ + super(CheckPrivateLinkServiceVisibilityRequest, self).__init__(**kwargs) + self.private_link_service_alias = private_link_service_alias + + +class CloudErrorBody(msrest.serialization.Model): + """An error response from the service. + + :ivar code: An identifier for the error. Codes are invariant and are intended to be consumed + programmatically. + :vartype code: str + :ivar message: A message describing the error, intended to be suitable for display in a user + interface. + :vartype message: str + :ivar target: The target of the particular error. For example, the name of the property in + error. + :vartype target: str + :ivar details: A list of additional details about the error. + :vartype details: list[~azure.mgmt.network.v2022_01_01.models.CloudErrorBody] + """ + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'target': {'key': 'target', 'type': 'str'}, + 'details': {'key': 'details', 'type': '[CloudErrorBody]'}, + } + + def __init__( + self, + *, + code: Optional[str] = None, + message: Optional[str] = None, + target: Optional[str] = None, + details: Optional[List["CloudErrorBody"]] = None, + **kwargs + ): + """ + :keyword code: An identifier for the error. Codes are invariant and are intended to be consumed + programmatically. + :paramtype code: str + :keyword message: A message describing the error, intended to be suitable for display in a user + interface. + :paramtype message: str + :keyword target: The target of the particular error. For example, the name of the property in + error. + :paramtype target: str + :keyword details: A list of additional details about the error. + :paramtype details: list[~azure.mgmt.network.v2022_01_01.models.CloudErrorBody] + """ + super(CloudErrorBody, self).__init__(**kwargs) + self.code = code + self.message = message + self.target = target + self.details = details + + +class Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties(msrest.serialization.Model): + """Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar principal_id: The principal id of user assigned identity. + :vartype principal_id: str + :ivar client_id: The client id of user assigned identity. + :vartype client_id: str + """ + + _validation = { + 'principal_id': {'readonly': True}, + 'client_id': {'readonly': True}, + } + + _attribute_map = { + 'principal_id': {'key': 'principalId', 'type': 'str'}, + 'client_id': {'key': 'clientId', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties, self).__init__(**kwargs) + self.principal_id = None + self.client_id = None + + +class ConfigurationGroup(msrest.serialization.Model): + """The network configuration group resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Network group ID. + :vartype id: str + :ivar description: A description of the network group. + :vartype description: str + :ivar provisioning_state: The provisioning state of the scope assignment resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Network group ID. + :paramtype id: str + :keyword description: A description of the network group. + :paramtype description: str + """ + super(ConfigurationGroup, self).__init__(**kwargs) + self.id = id + self.description = description + self.provisioning_state = None + + +class ConnectionMonitor(msrest.serialization.Model): + """Parameters that define the operation to create a connection monitor. + + :ivar location: Connection monitor location. + :vartype location: str + :ivar tags: A set of tags. Connection monitor tags. + :vartype tags: dict[str, str] + :ivar source: Describes the source of connection monitor. + :vartype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :ivar destination: Describes the destination of connection monitor. + :vartype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :ivar auto_start: Determines if the connection monitor will start automatically once created. + :vartype auto_start: bool + :ivar monitoring_interval_in_seconds: Monitoring interval in seconds. + :vartype monitoring_interval_in_seconds: int + :ivar endpoints: List of connection monitor endpoints. + :vartype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :ivar test_configurations: List of connection monitor test configurations. + :vartype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :ivar test_groups: List of connection monitor test groups. + :vartype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :ivar outputs: List of connection monitor outputs. + :vartype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :ivar notes: Optional notes to be associated with the connection monitor. + :vartype notes: str + """ + + _validation = { + 'monitoring_interval_in_seconds': {'maximum': 1800, 'minimum': 30}, + } + + _attribute_map = { + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'}, + 'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'}, + 'auto_start': {'key': 'properties.autoStart', 'type': 'bool'}, + 'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'}, + 'endpoints': {'key': 'properties.endpoints', 'type': '[ConnectionMonitorEndpoint]'}, + 'test_configurations': {'key': 'properties.testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'}, + 'test_groups': {'key': 'properties.testGroups', 'type': '[ConnectionMonitorTestGroup]'}, + 'outputs': {'key': 'properties.outputs', 'type': '[ConnectionMonitorOutput]'}, + 'notes': {'key': 'properties.notes', 'type': 'str'}, + } + + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + source: Optional["ConnectionMonitorSource"] = None, + destination: Optional["ConnectionMonitorDestination"] = None, + auto_start: Optional[bool] = True, + monitoring_interval_in_seconds: Optional[int] = 60, + endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None, + test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None, + test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None, + outputs: Optional[List["ConnectionMonitorOutput"]] = None, + notes: Optional[str] = None, + **kwargs + ): + """ + :keyword location: Connection monitor location. + :paramtype location: str + :keyword tags: A set of tags. Connection monitor tags. + :paramtype tags: dict[str, str] + :keyword source: Describes the source of connection monitor. + :paramtype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :keyword destination: Describes the destination of connection monitor. + :paramtype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :keyword auto_start: Determines if the connection monitor will start automatically once + created. + :paramtype auto_start: bool + :keyword monitoring_interval_in_seconds: Monitoring interval in seconds. + :paramtype monitoring_interval_in_seconds: int + :keyword endpoints: List of connection monitor endpoints. + :paramtype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :keyword test_configurations: List of connection monitor test configurations. + :paramtype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :keyword test_groups: List of connection monitor test groups. + :paramtype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :keyword outputs: List of connection monitor outputs. + :paramtype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :keyword notes: Optional notes to be associated with the connection monitor. + :paramtype notes: str + """ + super(ConnectionMonitor, self).__init__(**kwargs) + self.location = location + self.tags = tags + self.source = source + self.destination = destination + self.auto_start = auto_start + self.monitoring_interval_in_seconds = monitoring_interval_in_seconds + self.endpoints = endpoints + self.test_configurations = test_configurations + self.test_groups = test_groups + self.outputs = outputs + self.notes = notes + + +class ConnectionMonitorDestination(msrest.serialization.Model): + """Describes the destination of connection monitor. + + :ivar resource_id: The ID of the resource used as the destination by connection monitor. + :vartype resource_id: str + :ivar address: Address of the connection monitor destination (IP or domain name). + :vartype address: str + :ivar port: The destination port used by connection monitor. + :vartype port: int + """ + + _validation = { + 'port': {'maximum': 65535, 'minimum': 0}, + } + + _attribute_map = { + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'address': {'key': 'address', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'int'}, + } + + def __init__( + self, + *, + resource_id: Optional[str] = None, + address: Optional[str] = None, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword resource_id: The ID of the resource used as the destination by connection monitor. + :paramtype resource_id: str + :keyword address: Address of the connection monitor destination (IP or domain name). + :paramtype address: str + :keyword port: The destination port used by connection monitor. + :paramtype port: int + """ + super(ConnectionMonitorDestination, self).__init__(**kwargs) + self.resource_id = resource_id + self.address = address + self.port = port + + +class ConnectionMonitorEndpoint(msrest.serialization.Model): + """Describes the connection monitor endpoint. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Required. The name of the connection monitor endpoint. + :vartype name: str + :ivar type: The endpoint type. Possible values include: "AzureVM", "AzureVNet", "AzureSubnet", + "ExternalAddress", "MMAWorkspaceMachine", "MMAWorkspaceNetwork", "AzureArcVM", "AzureVMSS". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.EndpointType + :ivar resource_id: Resource ID of the connection monitor endpoint. + :vartype resource_id: str + :ivar address: Address of the connection monitor endpoint (IP or domain name). + :vartype address: str + :ivar filter: Filter for sub-items within the endpoint. + :vartype filter: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilter + :ivar scope: Endpoint scope. + :vartype scope: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointScope + :ivar coverage_level: Test coverage for the endpoint. Possible values include: "Default", + "Low", "BelowAverage", "Average", "AboveAverage", "Full". + :vartype coverage_level: str or ~azure.mgmt.network.v2022_01_01.models.CoverageLevel + """ + + _validation = { + 'name': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'address': {'key': 'address', 'type': 'str'}, + 'filter': {'key': 'filter', 'type': 'ConnectionMonitorEndpointFilter'}, + 'scope': {'key': 'scope', 'type': 'ConnectionMonitorEndpointScope'}, + 'coverage_level': {'key': 'coverageLevel', 'type': 'str'}, + } + + def __init__( + self, + *, + name: str, + type: Optional[Union[str, "EndpointType"]] = None, + resource_id: Optional[str] = None, + address: Optional[str] = None, + filter: Optional["ConnectionMonitorEndpointFilter"] = None, + scope: Optional["ConnectionMonitorEndpointScope"] = None, + coverage_level: Optional[Union[str, "CoverageLevel"]] = None, + **kwargs + ): + """ + :keyword name: Required. The name of the connection monitor endpoint. + :paramtype name: str + :keyword type: The endpoint type. Possible values include: "AzureVM", "AzureVNet", + "AzureSubnet", "ExternalAddress", "MMAWorkspaceMachine", "MMAWorkspaceNetwork", "AzureArcVM", + "AzureVMSS". + :paramtype type: str or ~azure.mgmt.network.v2022_01_01.models.EndpointType + :keyword resource_id: Resource ID of the connection monitor endpoint. + :paramtype resource_id: str + :keyword address: Address of the connection monitor endpoint (IP or domain name). + :paramtype address: str + :keyword filter: Filter for sub-items within the endpoint. + :paramtype filter: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilter + :keyword scope: Endpoint scope. + :paramtype scope: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointScope + :keyword coverage_level: Test coverage for the endpoint. Possible values include: "Default", + "Low", "BelowAverage", "Average", "AboveAverage", "Full". + :paramtype coverage_level: str or ~azure.mgmt.network.v2022_01_01.models.CoverageLevel + """ + super(ConnectionMonitorEndpoint, self).__init__(**kwargs) + self.name = name + self.type = type + self.resource_id = resource_id + self.address = address + self.filter = filter + self.scope = scope + self.coverage_level = coverage_level + + +class ConnectionMonitorEndpointFilter(msrest.serialization.Model): + """Describes the connection monitor endpoint filter. + + :ivar type: The behavior of the endpoint filter. Currently only 'Include' is supported. + Possible values include: "Include". + :vartype type: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilterType + :ivar items: List of items in the filter. + :vartype items: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilterItem] + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + 'items': {'key': 'items', 'type': '[ConnectionMonitorEndpointFilterItem]'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "ConnectionMonitorEndpointFilterType"]] = None, + items: Optional[List["ConnectionMonitorEndpointFilterItem"]] = None, + **kwargs + ): + """ + :keyword type: The behavior of the endpoint filter. Currently only 'Include' is supported. + Possible values include: "Include". + :paramtype type: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilterType + :keyword items: List of items in the filter. + :paramtype items: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilterItem] + """ + super(ConnectionMonitorEndpointFilter, self).__init__(**kwargs) + self.type = type + self.items = items + + +class ConnectionMonitorEndpointFilterItem(msrest.serialization.Model): + """Describes the connection monitor endpoint filter item. + + :ivar type: The type of item included in the filter. Currently only 'AgentAddress' is + supported. Possible values include: "AgentAddress". + :vartype type: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilterItemType + :ivar address: The address of the filter item. + :vartype address: str + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + 'address': {'key': 'address', 'type': 'str'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "ConnectionMonitorEndpointFilterItemType"]] = None, + address: Optional[str] = None, + **kwargs + ): + """ + :keyword type: The type of item included in the filter. Currently only 'AgentAddress' is + supported. Possible values include: "AgentAddress". + :paramtype type: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointFilterItemType + :keyword address: The address of the filter item. + :paramtype address: str + """ + super(ConnectionMonitorEndpointFilterItem, self).__init__(**kwargs) + self.type = type + self.address = address + + +class ConnectionMonitorEndpointScope(msrest.serialization.Model): + """Describes the connection monitor endpoint scope. + + :ivar include: List of items which needs to be included to the endpoint scope. + :vartype include: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointScopeItem] + :ivar exclude: List of items which needs to be excluded from the endpoint scope. + :vartype exclude: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointScopeItem] + """ + + _attribute_map = { + 'include': {'key': 'include', 'type': '[ConnectionMonitorEndpointScopeItem]'}, + 'exclude': {'key': 'exclude', 'type': '[ConnectionMonitorEndpointScopeItem]'}, + } + + def __init__( + self, + *, + include: Optional[List["ConnectionMonitorEndpointScopeItem"]] = None, + exclude: Optional[List["ConnectionMonitorEndpointScopeItem"]] = None, + **kwargs + ): + """ + :keyword include: List of items which needs to be included to the endpoint scope. + :paramtype include: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointScopeItem] + :keyword exclude: List of items which needs to be excluded from the endpoint scope. + :paramtype exclude: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpointScopeItem] + """ + super(ConnectionMonitorEndpointScope, self).__init__(**kwargs) + self.include = include + self.exclude = exclude + + +class ConnectionMonitorEndpointScopeItem(msrest.serialization.Model): + """Describes the connection monitor endpoint scope item. + + :ivar address: The address of the endpoint item. Supported types are IPv4/IPv6 subnet mask or + IPv4/IPv6 IP address. + :vartype address: str + """ + + _attribute_map = { + 'address': {'key': 'address', 'type': 'str'}, + } + + def __init__( + self, + *, + address: Optional[str] = None, + **kwargs + ): + """ + :keyword address: The address of the endpoint item. Supported types are IPv4/IPv6 subnet mask + or IPv4/IPv6 IP address. + :paramtype address: str + """ + super(ConnectionMonitorEndpointScopeItem, self).__init__(**kwargs) + self.address = address + + +class ConnectionMonitorHttpConfiguration(msrest.serialization.Model): + """Describes the HTTP configuration. + + :ivar port: The port to connect to. + :vartype port: int + :ivar method: The HTTP method to use. Possible values include: "Get", "Post". + :vartype method: str or ~azure.mgmt.network.v2022_01_01.models.HTTPConfigurationMethod + :ivar path: The path component of the URI. For instance, "/dir1/dir2". + :vartype path: str + :ivar request_headers: The HTTP headers to transmit with the request. + :vartype request_headers: list[~azure.mgmt.network.v2022_01_01.models.HTTPHeader] + :ivar valid_status_code_ranges: HTTP status codes to consider successful. For instance, + "2xx,301-304,418". + :vartype valid_status_code_ranges: list[str] + :ivar prefer_https: Value indicating whether HTTPS is preferred over HTTP in cases where the + choice is not explicit. + :vartype prefer_https: bool + """ + + _validation = { + 'port': {'maximum': 65535, 'minimum': 0}, + } + + _attribute_map = { + 'port': {'key': 'port', 'type': 'int'}, + 'method': {'key': 'method', 'type': 'str'}, + 'path': {'key': 'path', 'type': 'str'}, + 'request_headers': {'key': 'requestHeaders', 'type': '[HTTPHeader]'}, + 'valid_status_code_ranges': {'key': 'validStatusCodeRanges', 'type': '[str]'}, + 'prefer_https': {'key': 'preferHTTPS', 'type': 'bool'}, + } + + def __init__( + self, + *, + port: Optional[int] = None, + method: Optional[Union[str, "HTTPConfigurationMethod"]] = None, + path: Optional[str] = None, + request_headers: Optional[List["HTTPHeader"]] = None, + valid_status_code_ranges: Optional[List[str]] = None, + prefer_https: Optional[bool] = None, + **kwargs + ): + """ + :keyword port: The port to connect to. + :paramtype port: int + :keyword method: The HTTP method to use. Possible values include: "Get", "Post". + :paramtype method: str or ~azure.mgmt.network.v2022_01_01.models.HTTPConfigurationMethod + :keyword path: The path component of the URI. For instance, "/dir1/dir2". + :paramtype path: str + :keyword request_headers: The HTTP headers to transmit with the request. + :paramtype request_headers: list[~azure.mgmt.network.v2022_01_01.models.HTTPHeader] + :keyword valid_status_code_ranges: HTTP status codes to consider successful. For instance, + "2xx,301-304,418". + :paramtype valid_status_code_ranges: list[str] + :keyword prefer_https: Value indicating whether HTTPS is preferred over HTTP in cases where the + choice is not explicit. + :paramtype prefer_https: bool + """ + super(ConnectionMonitorHttpConfiguration, self).__init__(**kwargs) + self.port = port + self.method = method + self.path = path + self.request_headers = request_headers + self.valid_status_code_ranges = valid_status_code_ranges + self.prefer_https = prefer_https + + +class ConnectionMonitorIcmpConfiguration(msrest.serialization.Model): + """Describes the ICMP configuration. + + :ivar disable_trace_route: Value indicating whether path evaluation with trace route should be + disabled. + :vartype disable_trace_route: bool + """ + + _attribute_map = { + 'disable_trace_route': {'key': 'disableTraceRoute', 'type': 'bool'}, + } + + def __init__( + self, + *, + disable_trace_route: Optional[bool] = None, + **kwargs + ): + """ + :keyword disable_trace_route: Value indicating whether path evaluation with trace route should + be disabled. + :paramtype disable_trace_route: bool + """ + super(ConnectionMonitorIcmpConfiguration, self).__init__(**kwargs) + self.disable_trace_route = disable_trace_route + + +class ConnectionMonitorListResult(msrest.serialization.Model): + """List of connection monitors. + + :ivar value: Information about connection monitors. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ConnectionMonitorResult]'}, + } + + def __init__( + self, + *, + value: Optional[List["ConnectionMonitorResult"]] = None, + **kwargs + ): + """ + :keyword value: Information about connection monitors. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult] + """ + super(ConnectionMonitorListResult, self).__init__(**kwargs) + self.value = value + + +class ConnectionMonitorOutput(msrest.serialization.Model): + """Describes a connection monitor output destination. + + :ivar type: Connection monitor output destination type. Currently, only "Workspace" is + supported. Possible values include: "Workspace". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.OutputType + :ivar workspace_settings: Describes the settings for producing output into a log analytics + workspace. + :vartype workspace_settings: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorWorkspaceSettings + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + 'workspace_settings': {'key': 'workspaceSettings', 'type': 'ConnectionMonitorWorkspaceSettings'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "OutputType"]] = None, + workspace_settings: Optional["ConnectionMonitorWorkspaceSettings"] = None, + **kwargs + ): + """ + :keyword type: Connection monitor output destination type. Currently, only "Workspace" is + supported. Possible values include: "Workspace". + :paramtype type: str or ~azure.mgmt.network.v2022_01_01.models.OutputType + :keyword workspace_settings: Describes the settings for producing output into a log analytics + workspace. + :paramtype workspace_settings: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorWorkspaceSettings + """ + super(ConnectionMonitorOutput, self).__init__(**kwargs) + self.type = type + self.workspace_settings = workspace_settings + + +class ConnectionMonitorParameters(msrest.serialization.Model): + """Parameters that define the operation to create a connection monitor. + + :ivar source: Describes the source of connection monitor. + :vartype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :ivar destination: Describes the destination of connection monitor. + :vartype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :ivar auto_start: Determines if the connection monitor will start automatically once created. + :vartype auto_start: bool + :ivar monitoring_interval_in_seconds: Monitoring interval in seconds. + :vartype monitoring_interval_in_seconds: int + :ivar endpoints: List of connection monitor endpoints. + :vartype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :ivar test_configurations: List of connection monitor test configurations. + :vartype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :ivar test_groups: List of connection monitor test groups. + :vartype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :ivar outputs: List of connection monitor outputs. + :vartype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :ivar notes: Optional notes to be associated with the connection monitor. + :vartype notes: str + """ + + _validation = { + 'monitoring_interval_in_seconds': {'maximum': 1800, 'minimum': 30}, + } + + _attribute_map = { + 'source': {'key': 'source', 'type': 'ConnectionMonitorSource'}, + 'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'}, + 'auto_start': {'key': 'autoStart', 'type': 'bool'}, + 'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'}, + 'endpoints': {'key': 'endpoints', 'type': '[ConnectionMonitorEndpoint]'}, + 'test_configurations': {'key': 'testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'}, + 'test_groups': {'key': 'testGroups', 'type': '[ConnectionMonitorTestGroup]'}, + 'outputs': {'key': 'outputs', 'type': '[ConnectionMonitorOutput]'}, + 'notes': {'key': 'notes', 'type': 'str'}, + } + + def __init__( + self, + *, + source: Optional["ConnectionMonitorSource"] = None, + destination: Optional["ConnectionMonitorDestination"] = None, + auto_start: Optional[bool] = True, + monitoring_interval_in_seconds: Optional[int] = 60, + endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None, + test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None, + test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None, + outputs: Optional[List["ConnectionMonitorOutput"]] = None, + notes: Optional[str] = None, + **kwargs + ): + """ + :keyword source: Describes the source of connection monitor. + :paramtype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :keyword destination: Describes the destination of connection monitor. + :paramtype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :keyword auto_start: Determines if the connection monitor will start automatically once + created. + :paramtype auto_start: bool + :keyword monitoring_interval_in_seconds: Monitoring interval in seconds. + :paramtype monitoring_interval_in_seconds: int + :keyword endpoints: List of connection monitor endpoints. + :paramtype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :keyword test_configurations: List of connection monitor test configurations. + :paramtype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :keyword test_groups: List of connection monitor test groups. + :paramtype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :keyword outputs: List of connection monitor outputs. + :paramtype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :keyword notes: Optional notes to be associated with the connection monitor. + :paramtype notes: str + """ + super(ConnectionMonitorParameters, self).__init__(**kwargs) + self.source = source + self.destination = destination + self.auto_start = auto_start + self.monitoring_interval_in_seconds = monitoring_interval_in_seconds + self.endpoints = endpoints + self.test_configurations = test_configurations + self.test_groups = test_groups + self.outputs = outputs + self.notes = notes + + +class ConnectionMonitorQueryResult(msrest.serialization.Model): + """List of connection states snapshots. + + :ivar source_status: Status of connection monitor source. Possible values include: "Unknown", + "Active", "Inactive". + :vartype source_status: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSourceStatus + :ivar states: Information about connection states. + :vartype states: list[~azure.mgmt.network.v2022_01_01.models.ConnectionStateSnapshot] + """ + + _attribute_map = { + 'source_status': {'key': 'sourceStatus', 'type': 'str'}, + 'states': {'key': 'states', 'type': '[ConnectionStateSnapshot]'}, + } + + def __init__( + self, + *, + source_status: Optional[Union[str, "ConnectionMonitorSourceStatus"]] = None, + states: Optional[List["ConnectionStateSnapshot"]] = None, + **kwargs + ): + """ + :keyword source_status: Status of connection monitor source. Possible values include: + "Unknown", "Active", "Inactive". + :paramtype source_status: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSourceStatus + :keyword states: Information about connection states. + :paramtype states: list[~azure.mgmt.network.v2022_01_01.models.ConnectionStateSnapshot] + """ + super(ConnectionMonitorQueryResult, self).__init__(**kwargs) + self.source_status = source_status + self.states = states + + +class ConnectionMonitorResult(msrest.serialization.Model): + """Information about the connection monitor. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: Name of the connection monitor. + :vartype name: str + :ivar id: ID of the connection monitor. + :vartype id: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Connection monitor type. + :vartype type: str + :ivar location: Connection monitor location. + :vartype location: str + :ivar tags: A set of tags. Connection monitor tags. + :vartype tags: dict[str, str] + :ivar source: Describes the source of connection monitor. + :vartype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :ivar destination: Describes the destination of connection monitor. + :vartype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :ivar auto_start: Determines if the connection monitor will start automatically once created. + :vartype auto_start: bool + :ivar monitoring_interval_in_seconds: Monitoring interval in seconds. + :vartype monitoring_interval_in_seconds: int + :ivar endpoints: List of connection monitor endpoints. + :vartype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :ivar test_configurations: List of connection monitor test configurations. + :vartype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :ivar test_groups: List of connection monitor test groups. + :vartype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :ivar outputs: List of connection monitor outputs. + :vartype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :ivar notes: Optional notes to be associated with the connection monitor. + :vartype notes: str + :ivar provisioning_state: The provisioning state of the connection monitor. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar start_time: The date and time when the connection monitor was started. + :vartype start_time: ~datetime.datetime + :ivar monitoring_status: The monitoring status of the connection monitor. + :vartype monitoring_status: str + :ivar connection_monitor_type: Type of connection monitor. Possible values include: + "MultiEndpoint", "SingleSourceDestination". + :vartype connection_monitor_type: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorType + """ + + _validation = { + 'name': {'readonly': True}, + 'id': {'readonly': True}, + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'monitoring_interval_in_seconds': {'maximum': 1800, 'minimum': 30}, + 'provisioning_state': {'readonly': True}, + 'start_time': {'readonly': True}, + 'monitoring_status': {'readonly': True}, + 'connection_monitor_type': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'}, + 'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'}, + 'auto_start': {'key': 'properties.autoStart', 'type': 'bool'}, + 'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'}, + 'endpoints': {'key': 'properties.endpoints', 'type': '[ConnectionMonitorEndpoint]'}, + 'test_configurations': {'key': 'properties.testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'}, + 'test_groups': {'key': 'properties.testGroups', 'type': '[ConnectionMonitorTestGroup]'}, + 'outputs': {'key': 'properties.outputs', 'type': '[ConnectionMonitorOutput]'}, + 'notes': {'key': 'properties.notes', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'}, + 'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'}, + 'connection_monitor_type': {'key': 'properties.connectionMonitorType', 'type': 'str'}, + } + + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + source: Optional["ConnectionMonitorSource"] = None, + destination: Optional["ConnectionMonitorDestination"] = None, + auto_start: Optional[bool] = True, + monitoring_interval_in_seconds: Optional[int] = 60, + endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None, + test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None, + test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None, + outputs: Optional[List["ConnectionMonitorOutput"]] = None, + notes: Optional[str] = None, + **kwargs + ): + """ + :keyword location: Connection monitor location. + :paramtype location: str + :keyword tags: A set of tags. Connection monitor tags. + :paramtype tags: dict[str, str] + :keyword source: Describes the source of connection monitor. + :paramtype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :keyword destination: Describes the destination of connection monitor. + :paramtype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :keyword auto_start: Determines if the connection monitor will start automatically once + created. + :paramtype auto_start: bool + :keyword monitoring_interval_in_seconds: Monitoring interval in seconds. + :paramtype monitoring_interval_in_seconds: int + :keyword endpoints: List of connection monitor endpoints. + :paramtype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :keyword test_configurations: List of connection monitor test configurations. + :paramtype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :keyword test_groups: List of connection monitor test groups. + :paramtype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :keyword outputs: List of connection monitor outputs. + :paramtype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :keyword notes: Optional notes to be associated with the connection monitor. + :paramtype notes: str + """ + super(ConnectionMonitorResult, self).__init__(**kwargs) + self.name = None + self.id = None + self.etag = None + self.type = None + self.location = location + self.tags = tags + self.source = source + self.destination = destination + self.auto_start = auto_start + self.monitoring_interval_in_seconds = monitoring_interval_in_seconds + self.endpoints = endpoints + self.test_configurations = test_configurations + self.test_groups = test_groups + self.outputs = outputs + self.notes = notes + self.provisioning_state = None + self.start_time = None + self.monitoring_status = None + self.connection_monitor_type = None + + +class ConnectionMonitorResultProperties(ConnectionMonitorParameters): + """Describes the properties of a connection monitor. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar source: Describes the source of connection monitor. + :vartype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :ivar destination: Describes the destination of connection monitor. + :vartype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :ivar auto_start: Determines if the connection monitor will start automatically once created. + :vartype auto_start: bool + :ivar monitoring_interval_in_seconds: Monitoring interval in seconds. + :vartype monitoring_interval_in_seconds: int + :ivar endpoints: List of connection monitor endpoints. + :vartype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :ivar test_configurations: List of connection monitor test configurations. + :vartype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :ivar test_groups: List of connection monitor test groups. + :vartype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :ivar outputs: List of connection monitor outputs. + :vartype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :ivar notes: Optional notes to be associated with the connection monitor. + :vartype notes: str + :ivar provisioning_state: The provisioning state of the connection monitor. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar start_time: The date and time when the connection monitor was started. + :vartype start_time: ~datetime.datetime + :ivar monitoring_status: The monitoring status of the connection monitor. + :vartype monitoring_status: str + :ivar connection_monitor_type: Type of connection monitor. Possible values include: + "MultiEndpoint", "SingleSourceDestination". + :vartype connection_monitor_type: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorType + """ + + _validation = { + 'monitoring_interval_in_seconds': {'maximum': 1800, 'minimum': 30}, + 'provisioning_state': {'readonly': True}, + 'start_time': {'readonly': True}, + 'monitoring_status': {'readonly': True}, + 'connection_monitor_type': {'readonly': True}, + } + + _attribute_map = { + 'source': {'key': 'source', 'type': 'ConnectionMonitorSource'}, + 'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'}, + 'auto_start': {'key': 'autoStart', 'type': 'bool'}, + 'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'}, + 'endpoints': {'key': 'endpoints', 'type': '[ConnectionMonitorEndpoint]'}, + 'test_configurations': {'key': 'testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'}, + 'test_groups': {'key': 'testGroups', 'type': '[ConnectionMonitorTestGroup]'}, + 'outputs': {'key': 'outputs', 'type': '[ConnectionMonitorOutput]'}, + 'notes': {'key': 'notes', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'monitoring_status': {'key': 'monitoringStatus', 'type': 'str'}, + 'connection_monitor_type': {'key': 'connectionMonitorType', 'type': 'str'}, + } + + def __init__( + self, + *, + source: Optional["ConnectionMonitorSource"] = None, + destination: Optional["ConnectionMonitorDestination"] = None, + auto_start: Optional[bool] = True, + monitoring_interval_in_seconds: Optional[int] = 60, + endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None, + test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None, + test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None, + outputs: Optional[List["ConnectionMonitorOutput"]] = None, + notes: Optional[str] = None, + **kwargs + ): + """ + :keyword source: Describes the source of connection monitor. + :paramtype source: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSource + :keyword destination: Describes the destination of connection monitor. + :paramtype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorDestination + :keyword auto_start: Determines if the connection monitor will start automatically once + created. + :paramtype auto_start: bool + :keyword monitoring_interval_in_seconds: Monitoring interval in seconds. + :paramtype monitoring_interval_in_seconds: int + :keyword endpoints: List of connection monitor endpoints. + :paramtype endpoints: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorEndpoint] + :keyword test_configurations: List of connection monitor test configurations. + :paramtype test_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfiguration] + :keyword test_groups: List of connection monitor test groups. + :paramtype test_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestGroup] + :keyword outputs: List of connection monitor outputs. + :paramtype outputs: list[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorOutput] + :keyword notes: Optional notes to be associated with the connection monitor. + :paramtype notes: str + """ + super(ConnectionMonitorResultProperties, self).__init__(source=source, destination=destination, auto_start=auto_start, monitoring_interval_in_seconds=monitoring_interval_in_seconds, endpoints=endpoints, test_configurations=test_configurations, test_groups=test_groups, outputs=outputs, notes=notes, **kwargs) + self.provisioning_state = None + self.start_time = None + self.monitoring_status = None + self.connection_monitor_type = None + + +class ConnectionMonitorSource(msrest.serialization.Model): + """Describes the source of connection monitor. + + All required parameters must be populated in order to send to Azure. + + :ivar resource_id: Required. The ID of the resource used as the source by connection monitor. + :vartype resource_id: str + :ivar port: The source port used by connection monitor. + :vartype port: int + """ + + _validation = { + 'resource_id': {'required': True}, + 'port': {'maximum': 65535, 'minimum': 0}, + } + + _attribute_map = { + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'int'}, + } + + def __init__( + self, + *, + resource_id: str, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword resource_id: Required. The ID of the resource used as the source by connection + monitor. + :paramtype resource_id: str + :keyword port: The source port used by connection monitor. + :paramtype port: int + """ + super(ConnectionMonitorSource, self).__init__(**kwargs) + self.resource_id = resource_id + self.port = port + + +class ConnectionMonitorSuccessThreshold(msrest.serialization.Model): + """Describes the threshold for declaring a test successful. + + :ivar checks_failed_percent: The maximum percentage of failed checks permitted for a test to + evaluate as successful. + :vartype checks_failed_percent: int + :ivar round_trip_time_ms: The maximum round-trip time in milliseconds permitted for a test to + evaluate as successful. + :vartype round_trip_time_ms: float + """ + + _attribute_map = { + 'checks_failed_percent': {'key': 'checksFailedPercent', 'type': 'int'}, + 'round_trip_time_ms': {'key': 'roundTripTimeMs', 'type': 'float'}, + } + + def __init__( + self, + *, + checks_failed_percent: Optional[int] = None, + round_trip_time_ms: Optional[float] = None, + **kwargs + ): + """ + :keyword checks_failed_percent: The maximum percentage of failed checks permitted for a test to + evaluate as successful. + :paramtype checks_failed_percent: int + :keyword round_trip_time_ms: The maximum round-trip time in milliseconds permitted for a test + to evaluate as successful. + :paramtype round_trip_time_ms: float + """ + super(ConnectionMonitorSuccessThreshold, self).__init__(**kwargs) + self.checks_failed_percent = checks_failed_percent + self.round_trip_time_ms = round_trip_time_ms + + +class ConnectionMonitorTcpConfiguration(msrest.serialization.Model): + """Describes the TCP configuration. + + :ivar port: The port to connect to. + :vartype port: int + :ivar disable_trace_route: Value indicating whether path evaluation with trace route should be + disabled. + :vartype disable_trace_route: bool + :ivar destination_port_behavior: Destination port behavior. Possible values include: "None", + "ListenIfAvailable". + :vartype destination_port_behavior: str or + ~azure.mgmt.network.v2022_01_01.models.DestinationPortBehavior + """ + + _validation = { + 'port': {'maximum': 65535, 'minimum': 0}, + } + + _attribute_map = { + 'port': {'key': 'port', 'type': 'int'}, + 'disable_trace_route': {'key': 'disableTraceRoute', 'type': 'bool'}, + 'destination_port_behavior': {'key': 'destinationPortBehavior', 'type': 'str'}, + } + + def __init__( + self, + *, + port: Optional[int] = None, + disable_trace_route: Optional[bool] = None, + destination_port_behavior: Optional[Union[str, "DestinationPortBehavior"]] = None, + **kwargs + ): + """ + :keyword port: The port to connect to. + :paramtype port: int + :keyword disable_trace_route: Value indicating whether path evaluation with trace route should + be disabled. + :paramtype disable_trace_route: bool + :keyword destination_port_behavior: Destination port behavior. Possible values include: "None", + "ListenIfAvailable". + :paramtype destination_port_behavior: str or + ~azure.mgmt.network.v2022_01_01.models.DestinationPortBehavior + """ + super(ConnectionMonitorTcpConfiguration, self).__init__(**kwargs) + self.port = port + self.disable_trace_route = disable_trace_route + self.destination_port_behavior = destination_port_behavior + + +class ConnectionMonitorTestConfiguration(msrest.serialization.Model): + """Describes a connection monitor test configuration. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Required. The name of the connection monitor test configuration. + :vartype name: str + :ivar test_frequency_sec: The frequency of test evaluation, in seconds. + :vartype test_frequency_sec: int + :ivar protocol: Required. The protocol to use in test evaluation. Possible values include: + "Tcp", "Http", "Icmp". + :vartype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfigurationProtocol + :ivar preferred_ip_version: The preferred IP version to use in test evaluation. The connection + monitor may choose to use a different version depending on other parameters. Possible values + include: "IPv4", "IPv6". + :vartype preferred_ip_version: str or ~azure.mgmt.network.v2022_01_01.models.PreferredIPVersion + :ivar http_configuration: The parameters used to perform test evaluation over HTTP. + :vartype http_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorHttpConfiguration + :ivar tcp_configuration: The parameters used to perform test evaluation over TCP. + :vartype tcp_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTcpConfiguration + :ivar icmp_configuration: The parameters used to perform test evaluation over ICMP. + :vartype icmp_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorIcmpConfiguration + :ivar success_threshold: The threshold for declaring a test successful. + :vartype success_threshold: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSuccessThreshold + """ + + _validation = { + 'name': {'required': True}, + 'protocol': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'test_frequency_sec': {'key': 'testFrequencySec', 'type': 'int'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'preferred_ip_version': {'key': 'preferredIPVersion', 'type': 'str'}, + 'http_configuration': {'key': 'httpConfiguration', 'type': 'ConnectionMonitorHttpConfiguration'}, + 'tcp_configuration': {'key': 'tcpConfiguration', 'type': 'ConnectionMonitorTcpConfiguration'}, + 'icmp_configuration': {'key': 'icmpConfiguration', 'type': 'ConnectionMonitorIcmpConfiguration'}, + 'success_threshold': {'key': 'successThreshold', 'type': 'ConnectionMonitorSuccessThreshold'}, + } + + def __init__( + self, + *, + name: str, + protocol: Union[str, "ConnectionMonitorTestConfigurationProtocol"], + test_frequency_sec: Optional[int] = None, + preferred_ip_version: Optional[Union[str, "PreferredIPVersion"]] = None, + http_configuration: Optional["ConnectionMonitorHttpConfiguration"] = None, + tcp_configuration: Optional["ConnectionMonitorTcpConfiguration"] = None, + icmp_configuration: Optional["ConnectionMonitorIcmpConfiguration"] = None, + success_threshold: Optional["ConnectionMonitorSuccessThreshold"] = None, + **kwargs + ): + """ + :keyword name: Required. The name of the connection monitor test configuration. + :paramtype name: str + :keyword test_frequency_sec: The frequency of test evaluation, in seconds. + :paramtype test_frequency_sec: int + :keyword protocol: Required. The protocol to use in test evaluation. Possible values include: + "Tcp", "Http", "Icmp". + :paramtype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTestConfigurationProtocol + :keyword preferred_ip_version: The preferred IP version to use in test evaluation. The + connection monitor may choose to use a different version depending on other parameters. + Possible values include: "IPv4", "IPv6". + :paramtype preferred_ip_version: str or + ~azure.mgmt.network.v2022_01_01.models.PreferredIPVersion + :keyword http_configuration: The parameters used to perform test evaluation over HTTP. + :paramtype http_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorHttpConfiguration + :keyword tcp_configuration: The parameters used to perform test evaluation over TCP. + :paramtype tcp_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorTcpConfiguration + :keyword icmp_configuration: The parameters used to perform test evaluation over ICMP. + :paramtype icmp_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorIcmpConfiguration + :keyword success_threshold: The threshold for declaring a test successful. + :paramtype success_threshold: + ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorSuccessThreshold + """ + super(ConnectionMonitorTestConfiguration, self).__init__(**kwargs) + self.name = name + self.test_frequency_sec = test_frequency_sec + self.protocol = protocol + self.preferred_ip_version = preferred_ip_version + self.http_configuration = http_configuration + self.tcp_configuration = tcp_configuration + self.icmp_configuration = icmp_configuration + self.success_threshold = success_threshold + + +class ConnectionMonitorTestGroup(msrest.serialization.Model): + """Describes the connection monitor test group. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Required. The name of the connection monitor test group. + :vartype name: str + :ivar disable: Value indicating whether test group is disabled. + :vartype disable: bool + :ivar test_configurations: Required. List of test configuration names. + :vartype test_configurations: list[str] + :ivar sources: Required. List of source endpoint names. + :vartype sources: list[str] + :ivar destinations: Required. List of destination endpoint names. + :vartype destinations: list[str] + """ + + _validation = { + 'name': {'required': True}, + 'test_configurations': {'required': True}, + 'sources': {'required': True}, + 'destinations': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'disable': {'key': 'disable', 'type': 'bool'}, + 'test_configurations': {'key': 'testConfigurations', 'type': '[str]'}, + 'sources': {'key': 'sources', 'type': '[str]'}, + 'destinations': {'key': 'destinations', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: str, + test_configurations: List[str], + sources: List[str], + destinations: List[str], + disable: Optional[bool] = None, + **kwargs + ): + """ + :keyword name: Required. The name of the connection monitor test group. + :paramtype name: str + :keyword disable: Value indicating whether test group is disabled. + :paramtype disable: bool + :keyword test_configurations: Required. List of test configuration names. + :paramtype test_configurations: list[str] + :keyword sources: Required. List of source endpoint names. + :paramtype sources: list[str] + :keyword destinations: Required. List of destination endpoint names. + :paramtype destinations: list[str] + """ + super(ConnectionMonitorTestGroup, self).__init__(**kwargs) + self.name = name + self.disable = disable + self.test_configurations = test_configurations + self.sources = sources + self.destinations = destinations + + +class ConnectionMonitorWorkspaceSettings(msrest.serialization.Model): + """Describes the settings for producing output into a log analytics workspace. + + :ivar workspace_resource_id: Log analytics workspace resource ID. + :vartype workspace_resource_id: str + """ + + _attribute_map = { + 'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'}, + } + + def __init__( + self, + *, + workspace_resource_id: Optional[str] = None, + **kwargs + ): + """ + :keyword workspace_resource_id: Log analytics workspace resource ID. + :paramtype workspace_resource_id: str + """ + super(ConnectionMonitorWorkspaceSettings, self).__init__(**kwargs) + self.workspace_resource_id = workspace_resource_id + + +class ConnectionResetSharedKey(msrest.serialization.Model): + """The virtual network connection reset shared key. + + All required parameters must be populated in order to send to Azure. + + :ivar key_length: Required. The virtual network connection reset shared key length, should + between 1 and 128. + :vartype key_length: int + """ + + _validation = { + 'key_length': {'required': True, 'maximum': 128, 'minimum': 1}, + } + + _attribute_map = { + 'key_length': {'key': 'keyLength', 'type': 'int'}, + } + + def __init__( + self, + *, + key_length: int, + **kwargs + ): + """ + :keyword key_length: Required. The virtual network connection reset shared key length, should + between 1 and 128. + :paramtype key_length: int + """ + super(ConnectionResetSharedKey, self).__init__(**kwargs) + self.key_length = key_length + + +class ConnectionSharedKey(SubResource): + """Response for GetConnectionSharedKey API service call. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar value: Required. The virtual network connection shared key value. + :vartype value: str + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__( + self, + *, + value: str, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword value: Required. The virtual network connection shared key value. + :paramtype value: str + """ + super(ConnectionSharedKey, self).__init__(id=id, **kwargs) + self.value = value + + +class ConnectionStateSnapshot(msrest.serialization.Model): + """Connection state snapshot. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar connection_state: The connection state. Possible values include: "Reachable", + "Unreachable", "Unknown". + :vartype connection_state: str or ~azure.mgmt.network.v2022_01_01.models.ConnectionState + :ivar start_time: The start time of the connection snapshot. + :vartype start_time: ~datetime.datetime + :ivar end_time: The end time of the connection snapshot. + :vartype end_time: ~datetime.datetime + :ivar evaluation_state: Connectivity analysis evaluation state. Possible values include: + "NotStarted", "InProgress", "Completed". + :vartype evaluation_state: str or ~azure.mgmt.network.v2022_01_01.models.EvaluationState + :ivar avg_latency_in_ms: Average latency in ms. + :vartype avg_latency_in_ms: long + :ivar min_latency_in_ms: Minimum latency in ms. + :vartype min_latency_in_ms: long + :ivar max_latency_in_ms: Maximum latency in ms. + :vartype max_latency_in_ms: long + :ivar probes_sent: The number of sent probes. + :vartype probes_sent: long + :ivar probes_failed: The number of failed probes. + :vartype probes_failed: long + :ivar hops: List of hops between the source and the destination. + :vartype hops: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityHop] + """ + + _validation = { + 'avg_latency_in_ms': {'maximum': 4294967295, 'minimum': 0}, + 'min_latency_in_ms': {'maximum': 4294967295, 'minimum': 0}, + 'max_latency_in_ms': {'maximum': 4294967295, 'minimum': 0}, + 'probes_sent': {'maximum': 4294967295, 'minimum': 0}, + 'probes_failed': {'maximum': 4294967295, 'minimum': 0}, + 'hops': {'readonly': True}, + } + + _attribute_map = { + 'connection_state': {'key': 'connectionState', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'evaluation_state': {'key': 'evaluationState', 'type': 'str'}, + 'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'long'}, + 'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'long'}, + 'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'long'}, + 'probes_sent': {'key': 'probesSent', 'type': 'long'}, + 'probes_failed': {'key': 'probesFailed', 'type': 'long'}, + 'hops': {'key': 'hops', 'type': '[ConnectivityHop]'}, + } + + def __init__( + self, + *, + connection_state: Optional[Union[str, "ConnectionState"]] = None, + start_time: Optional[datetime.datetime] = None, + end_time: Optional[datetime.datetime] = None, + evaluation_state: Optional[Union[str, "EvaluationState"]] = None, + avg_latency_in_ms: Optional[int] = None, + min_latency_in_ms: Optional[int] = None, + max_latency_in_ms: Optional[int] = None, + probes_sent: Optional[int] = None, + probes_failed: Optional[int] = None, + **kwargs + ): + """ + :keyword connection_state: The connection state. Possible values include: "Reachable", + "Unreachable", "Unknown". + :paramtype connection_state: str or ~azure.mgmt.network.v2022_01_01.models.ConnectionState + :keyword start_time: The start time of the connection snapshot. + :paramtype start_time: ~datetime.datetime + :keyword end_time: The end time of the connection snapshot. + :paramtype end_time: ~datetime.datetime + :keyword evaluation_state: Connectivity analysis evaluation state. Possible values include: + "NotStarted", "InProgress", "Completed". + :paramtype evaluation_state: str or ~azure.mgmt.network.v2022_01_01.models.EvaluationState + :keyword avg_latency_in_ms: Average latency in ms. + :paramtype avg_latency_in_ms: long + :keyword min_latency_in_ms: Minimum latency in ms. + :paramtype min_latency_in_ms: long + :keyword max_latency_in_ms: Maximum latency in ms. + :paramtype max_latency_in_ms: long + :keyword probes_sent: The number of sent probes. + :paramtype probes_sent: long + :keyword probes_failed: The number of failed probes. + :paramtype probes_failed: long + """ + super(ConnectionStateSnapshot, self).__init__(**kwargs) + self.connection_state = connection_state + self.start_time = start_time + self.end_time = end_time + self.evaluation_state = evaluation_state + self.avg_latency_in_ms = avg_latency_in_ms + self.min_latency_in_ms = min_latency_in_ms + self.max_latency_in_ms = max_latency_in_ms + self.probes_sent = probes_sent + self.probes_failed = probes_failed + self.hops = None + + +class ConnectivityConfiguration(ChildResource): + """The network manager connectivity configuration resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar description: A description of the connectivity configuration. + :vartype description: str + :ivar connectivity_topology: Connectivity topology type. Possible values include: + "HubAndSpoke", "Mesh". + :vartype connectivity_topology: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectivityTopology + :ivar hubs: List of hubItems. + :vartype hubs: list[~azure.mgmt.network.v2022_01_01.models.Hub] + :ivar is_global: Flag if global mesh is supported. Possible values include: "False", "True". + :vartype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal + :ivar applies_to_groups: Groups for configuration. + :vartype applies_to_groups: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityGroupItem] + :ivar provisioning_state: The provisioning state of the connectivity configuration resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar delete_existing_peering: Flag if need to remove current existing peerings. Possible + values include: "False", "True". + :vartype delete_existing_peering: str or + ~azure.mgmt.network.v2022_01_01.models.DeleteExistingPeering + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'system_data': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'connectivity_topology': {'key': 'properties.connectivityTopology', 'type': 'str'}, + 'hubs': {'key': 'properties.hubs', 'type': '[Hub]'}, + 'is_global': {'key': 'properties.isGlobal', 'type': 'str'}, + 'applies_to_groups': {'key': 'properties.appliesToGroups', 'type': '[ConnectivityGroupItem]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'delete_existing_peering': {'key': 'properties.deleteExistingPeering', 'type': 'str'}, + } + + def __init__( + self, + *, + description: Optional[str] = None, + connectivity_topology: Optional[Union[str, "ConnectivityTopology"]] = None, + hubs: Optional[List["Hub"]] = None, + is_global: Optional[Union[str, "IsGlobal"]] = None, + applies_to_groups: Optional[List["ConnectivityGroupItem"]] = None, + delete_existing_peering: Optional[Union[str, "DeleteExistingPeering"]] = None, + **kwargs + ): + """ + :keyword description: A description of the connectivity configuration. + :paramtype description: str + :keyword connectivity_topology: Connectivity topology type. Possible values include: + "HubAndSpoke", "Mesh". + :paramtype connectivity_topology: str or + ~azure.mgmt.network.v2022_01_01.models.ConnectivityTopology + :keyword hubs: List of hubItems. + :paramtype hubs: list[~azure.mgmt.network.v2022_01_01.models.Hub] + :keyword is_global: Flag if global mesh is supported. Possible values include: "False", "True". + :paramtype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal + :keyword applies_to_groups: Groups for configuration. + :paramtype applies_to_groups: + list[~azure.mgmt.network.v2022_01_01.models.ConnectivityGroupItem] + :keyword delete_existing_peering: Flag if need to remove current existing peerings. Possible + values include: "False", "True". + :paramtype delete_existing_peering: str or + ~azure.mgmt.network.v2022_01_01.models.DeleteExistingPeering + """ + super(ConnectivityConfiguration, self).__init__(**kwargs) + self.system_data = None + self.description = description + self.connectivity_topology = connectivity_topology + self.hubs = hubs + self.is_global = is_global + self.applies_to_groups = applies_to_groups + self.provisioning_state = None + self.delete_existing_peering = delete_existing_peering + + +class ConnectivityConfigurationListResult(msrest.serialization.Model): + """Result of the request to list network manager connectivity configurations. It contains a list of configurations and a link to get the next set of results. + + :ivar value: Gets a page of Connectivity Configurations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration] + :ivar next_link: Gets the URL to get the next page of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ConnectivityConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ConnectivityConfiguration"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of Connectivity Configurations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration] + :keyword next_link: Gets the URL to get the next page of results. + :paramtype next_link: str + """ + super(ConnectivityConfigurationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ConnectivityDestination(msrest.serialization.Model): + """Parameters that define destination of connection. + + :ivar resource_id: The ID of the resource to which a connection attempt will be made. + :vartype resource_id: str + :ivar address: The IP address or URI the resource to which a connection attempt will be made. + :vartype address: str + :ivar port: Port on which check connectivity will be performed. + :vartype port: int + """ + + _validation = { + 'port': {'maximum': 65535, 'minimum': 0}, + } + + _attribute_map = { + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'address': {'key': 'address', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'int'}, + } + + def __init__( + self, + *, + resource_id: Optional[str] = None, + address: Optional[str] = None, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword resource_id: The ID of the resource to which a connection attempt will be made. + :paramtype resource_id: str + :keyword address: The IP address or URI the resource to which a connection attempt will be + made. + :paramtype address: str + :keyword port: Port on which check connectivity will be performed. + :paramtype port: int + """ + super(ConnectivityDestination, self).__init__(**kwargs) + self.resource_id = resource_id + self.address = address + self.port = port + + +class ConnectivityGroupItem(msrest.serialization.Model): + """Connectivity group item. + + All required parameters must be populated in order to send to Azure. + + :ivar network_group_id: Required. Network group Id. + :vartype network_group_id: str + :ivar use_hub_gateway: Flag if need to use hub gateway. Possible values include: "False", + "True". + :vartype use_hub_gateway: str or ~azure.mgmt.network.v2022_01_01.models.UseHubGateway + :ivar is_global: Flag if global is supported. Possible values include: "False", "True". + :vartype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal + :ivar group_connectivity: Required. Group connectivity type. Possible values include: "None", + "DirectlyConnected". + :vartype group_connectivity: str or ~azure.mgmt.network.v2022_01_01.models.GroupConnectivity + """ + + _validation = { + 'network_group_id': {'required': True}, + 'group_connectivity': {'required': True}, + } + + _attribute_map = { + 'network_group_id': {'key': 'networkGroupId', 'type': 'str'}, + 'use_hub_gateway': {'key': 'useHubGateway', 'type': 'str'}, + 'is_global': {'key': 'isGlobal', 'type': 'str'}, + 'group_connectivity': {'key': 'groupConnectivity', 'type': 'str'}, + } + + def __init__( + self, + *, + network_group_id: str, + group_connectivity: Union[str, "GroupConnectivity"], + use_hub_gateway: Optional[Union[str, "UseHubGateway"]] = None, + is_global: Optional[Union[str, "IsGlobal"]] = None, + **kwargs + ): + """ + :keyword network_group_id: Required. Network group Id. + :paramtype network_group_id: str + :keyword use_hub_gateway: Flag if need to use hub gateway. Possible values include: "False", + "True". + :paramtype use_hub_gateway: str or ~azure.mgmt.network.v2022_01_01.models.UseHubGateway + :keyword is_global: Flag if global is supported. Possible values include: "False", "True". + :paramtype is_global: str or ~azure.mgmt.network.v2022_01_01.models.IsGlobal + :keyword group_connectivity: Required. Group connectivity type. Possible values include: + "None", "DirectlyConnected". + :paramtype group_connectivity: str or ~azure.mgmt.network.v2022_01_01.models.GroupConnectivity + """ + super(ConnectivityGroupItem, self).__init__(**kwargs) + self.network_group_id = network_group_id + self.use_hub_gateway = use_hub_gateway + self.is_global = is_global + self.group_connectivity = group_connectivity + + +class ConnectivityHop(msrest.serialization.Model): + """Information about a hop between the source and the destination. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar type: The type of the hop. + :vartype type: str + :ivar id: The ID of the hop. + :vartype id: str + :ivar address: The IP address of the hop. + :vartype address: str + :ivar resource_id: The ID of the resource corresponding to this hop. + :vartype resource_id: str + :ivar next_hop_ids: List of next hop identifiers. + :vartype next_hop_ids: list[str] + :ivar previous_hop_ids: List of previous hop identifiers. + :vartype previous_hop_ids: list[str] + :ivar links: List of hop links. + :vartype links: list[~azure.mgmt.network.v2022_01_01.models.HopLink] + :ivar previous_links: List of previous hop links. + :vartype previous_links: list[~azure.mgmt.network.v2022_01_01.models.HopLink] + :ivar issues: List of issues. + :vartype issues: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityIssue] + """ + + _validation = { + 'type': {'readonly': True}, + 'id': {'readonly': True}, + 'address': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'next_hop_ids': {'readonly': True}, + 'previous_hop_ids': {'readonly': True}, + 'links': {'readonly': True}, + 'previous_links': {'readonly': True}, + 'issues': {'readonly': True}, + } + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'address': {'key': 'address', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'next_hop_ids': {'key': 'nextHopIds', 'type': '[str]'}, + 'previous_hop_ids': {'key': 'previousHopIds', 'type': '[str]'}, + 'links': {'key': 'links', 'type': '[HopLink]'}, + 'previous_links': {'key': 'previousLinks', 'type': '[HopLink]'}, + 'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ConnectivityHop, self).__init__(**kwargs) + self.type = None + self.id = None + self.address = None + self.resource_id = None + self.next_hop_ids = None + self.previous_hop_ids = None + self.links = None + self.previous_links = None + self.issues = None + + +class ConnectivityInformation(msrest.serialization.Model): + """Information on the connectivity status. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar hops: List of hops between the source and the destination. + :vartype hops: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityHop] + :ivar connection_status: The connection status. Possible values include: "Unknown", + "Connected", "Disconnected", "Degraded". + :vartype connection_status: str or ~azure.mgmt.network.v2022_01_01.models.ConnectionStatus + :ivar avg_latency_in_ms: Average latency in milliseconds. + :vartype avg_latency_in_ms: int + :ivar min_latency_in_ms: Minimum latency in milliseconds. + :vartype min_latency_in_ms: int + :ivar max_latency_in_ms: Maximum latency in milliseconds. + :vartype max_latency_in_ms: int + :ivar probes_sent: Total number of probes sent. + :vartype probes_sent: int + :ivar probes_failed: Number of failed probes. + :vartype probes_failed: int + """ + + _validation = { + 'hops': {'readonly': True}, + 'connection_status': {'readonly': True}, + 'avg_latency_in_ms': {'readonly': True}, + 'min_latency_in_ms': {'readonly': True}, + 'max_latency_in_ms': {'readonly': True}, + 'probes_sent': {'readonly': True}, + 'probes_failed': {'readonly': True}, + } + + _attribute_map = { + 'hops': {'key': 'hops', 'type': '[ConnectivityHop]'}, + 'connection_status': {'key': 'connectionStatus', 'type': 'str'}, + 'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'}, + 'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'}, + 'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'}, + 'probes_sent': {'key': 'probesSent', 'type': 'int'}, + 'probes_failed': {'key': 'probesFailed', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ConnectivityInformation, self).__init__(**kwargs) + self.hops = None + self.connection_status = None + self.avg_latency_in_ms = None + self.min_latency_in_ms = None + self.max_latency_in_ms = None + self.probes_sent = None + self.probes_failed = None + + +class ConnectivityIssue(msrest.serialization.Model): + """Information about an issue encountered in the process of checking for connectivity. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar origin: The origin of the issue. Possible values include: "Local", "Inbound", "Outbound". + :vartype origin: str or ~azure.mgmt.network.v2022_01_01.models.Origin + :ivar severity: The severity of the issue. Possible values include: "Error", "Warning". + :vartype severity: str or ~azure.mgmt.network.v2022_01_01.models.Severity + :ivar type: The type of issue. Possible values include: "Unknown", "AgentStopped", + "GuestFirewall", "DnsResolution", "SocketBind", "NetworkSecurityRule", "UserDefinedRoute", + "PortThrottled", "Platform". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.IssueType + :ivar context: Provides additional context on the issue. + :vartype context: list[dict[str, str]] + """ + + _validation = { + 'origin': {'readonly': True}, + 'severity': {'readonly': True}, + 'type': {'readonly': True}, + 'context': {'readonly': True}, + } + + _attribute_map = { + 'origin': {'key': 'origin', 'type': 'str'}, + 'severity': {'key': 'severity', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'context': {'key': 'context', 'type': '[{str}]'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ConnectivityIssue, self).__init__(**kwargs) + self.origin = None + self.severity = None + self.type = None + self.context = None + + +class ConnectivityParameters(msrest.serialization.Model): + """Parameters that determine how the connectivity check will be performed. + + All required parameters must be populated in order to send to Azure. + + :ivar source: Required. The source of the connection. + :vartype source: ~azure.mgmt.network.v2022_01_01.models.ConnectivitySource + :ivar destination: Required. The destination of connection. + :vartype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectivityDestination + :ivar protocol: Network protocol. Possible values include: "Tcp", "Http", "Https", "Icmp". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.Protocol + :ivar protocol_configuration: Configuration of the protocol. + :vartype protocol_configuration: ~azure.mgmt.network.v2022_01_01.models.ProtocolConfiguration + :ivar preferred_ip_version: Preferred IP version of the connection. Possible values include: + "IPv4", "IPv6". + :vartype preferred_ip_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + """ + + _validation = { + 'source': {'required': True}, + 'destination': {'required': True}, + } + + _attribute_map = { + 'source': {'key': 'source', 'type': 'ConnectivitySource'}, + 'destination': {'key': 'destination', 'type': 'ConnectivityDestination'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'protocol_configuration': {'key': 'protocolConfiguration', 'type': 'ProtocolConfiguration'}, + 'preferred_ip_version': {'key': 'preferredIPVersion', 'type': 'str'}, + } + + def __init__( + self, + *, + source: "ConnectivitySource", + destination: "ConnectivityDestination", + protocol: Optional[Union[str, "Protocol"]] = None, + protocol_configuration: Optional["ProtocolConfiguration"] = None, + preferred_ip_version: Optional[Union[str, "IPVersion"]] = None, + **kwargs + ): + """ + :keyword source: Required. The source of the connection. + :paramtype source: ~azure.mgmt.network.v2022_01_01.models.ConnectivitySource + :keyword destination: Required. The destination of connection. + :paramtype destination: ~azure.mgmt.network.v2022_01_01.models.ConnectivityDestination + :keyword protocol: Network protocol. Possible values include: "Tcp", "Http", "Https", "Icmp". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.Protocol + :keyword protocol_configuration: Configuration of the protocol. + :paramtype protocol_configuration: ~azure.mgmt.network.v2022_01_01.models.ProtocolConfiguration + :keyword preferred_ip_version: Preferred IP version of the connection. Possible values include: + "IPv4", "IPv6". + :paramtype preferred_ip_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + """ + super(ConnectivityParameters, self).__init__(**kwargs) + self.source = source + self.destination = destination + self.protocol = protocol + self.protocol_configuration = protocol_configuration + self.preferred_ip_version = preferred_ip_version + + +class ConnectivitySource(msrest.serialization.Model): + """Parameters that define the source of the connection. + + All required parameters must be populated in order to send to Azure. + + :ivar resource_id: Required. The ID of the resource from which a connectivity check will be + initiated. + :vartype resource_id: str + :ivar port: The source port from which a connectivity check will be performed. + :vartype port: int + """ + + _validation = { + 'resource_id': {'required': True}, + 'port': {'maximum': 65535, 'minimum': 0}, + } + + _attribute_map = { + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'int'}, + } + + def __init__( + self, + *, + resource_id: str, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword resource_id: Required. The ID of the resource from which a connectivity check will be + initiated. + :paramtype resource_id: str + :keyword port: The source port from which a connectivity check will be performed. + :paramtype port: int + """ + super(ConnectivitySource, self).__init__(**kwargs) + self.resource_id = resource_id + self.port = port + + +class Container(SubResource): + """Reference to container resource in remote resource provider. + + :ivar id: Resource ID. + :vartype id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + """ + super(Container, self).__init__(id=id, **kwargs) + + +class ContainerNetworkInterface(SubResource): + """Container network interface child resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource. This name can be used to access the resource. + :vartype name: str + :ivar type: Sub Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar container_network_interface_configuration: Container network interface configuration from + which this container network interface is created. + :vartype container_network_interface_configuration: + ~azure.mgmt.network.v2022_01_01.models.ContainerNetworkInterfaceConfiguration + :ivar container: Reference to the container to which this container network interface is + attached. + :vartype container: ~azure.mgmt.network.v2022_01_01.models.Container + :ivar ip_configurations: Reference to the ip configuration on this container nic. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ContainerNetworkInterfaceIpConfiguration] + :ivar provisioning_state: The provisioning state of the container network interface resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'container_network_interface_configuration': {'readonly': True}, + 'ip_configurations': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'container_network_interface_configuration': {'key': 'properties.containerNetworkInterfaceConfiguration', 'type': 'ContainerNetworkInterfaceConfiguration'}, + 'container': {'key': 'properties.container', 'type': 'Container'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[ContainerNetworkInterfaceIpConfiguration]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + container: Optional["Container"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource. This name can be used to access the resource. + :paramtype name: str + :keyword container: Reference to the container to which this container network interface is + attached. + :paramtype container: ~azure.mgmt.network.v2022_01_01.models.Container + """ + super(ContainerNetworkInterface, self).__init__(id=id, **kwargs) + self.name = name + self.type = None + self.etag = None + self.container_network_interface_configuration = None + self.container = container + self.ip_configurations = None + self.provisioning_state = None + + +class ContainerNetworkInterfaceConfiguration(SubResource): + """Container network interface configuration child resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource. This name can be used to access the resource. + :vartype name: str + :ivar type: Sub Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar ip_configurations: A list of ip configurations of the container network interface + configuration. + :vartype ip_configurations: list[~azure.mgmt.network.v2022_01_01.models.IPConfigurationProfile] + :ivar container_network_interfaces: A list of container network interfaces created from this + container network interface configuration. + :vartype container_network_interfaces: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar provisioning_state: The provisioning state of the container network interface + configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfigurationProfile]'}, + 'container_network_interfaces': {'key': 'properties.containerNetworkInterfaces', 'type': '[SubResource]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + ip_configurations: Optional[List["IPConfigurationProfile"]] = None, + container_network_interfaces: Optional[List["SubResource"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource. This name can be used to access the resource. + :paramtype name: str + :keyword ip_configurations: A list of ip configurations of the container network interface + configuration. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.IPConfigurationProfile] + :keyword container_network_interfaces: A list of container network interfaces created from this + container network interface configuration. + :paramtype container_network_interfaces: + list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + super(ContainerNetworkInterfaceConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.type = None + self.etag = None + self.ip_configurations = ip_configurations + self.container_network_interfaces = container_network_interfaces + self.provisioning_state = None + + +class ContainerNetworkInterfaceIpConfiguration(msrest.serialization.Model): + """The ip configuration for a container network interface. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: The name of the resource. This name can be used to access the resource. + :vartype name: str + :ivar type: Sub Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar provisioning_state: The provisioning state of the container network interface IP + configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the resource. This name can be used to access the resource. + :paramtype name: str + """ + super(ContainerNetworkInterfaceIpConfiguration, self).__init__(**kwargs) + self.name = name + self.type = None + self.etag = None + self.provisioning_state = None + + +class CrossTenantScopes(msrest.serialization.Model): + """Cross tenant scopes. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar tenant_id: Tenant ID. + :vartype tenant_id: str + :ivar management_groups: List of management groups. + :vartype management_groups: list[str] + :ivar subscriptions: List of subscriptions. + :vartype subscriptions: list[str] + """ + + _validation = { + 'tenant_id': {'readonly': True}, + 'management_groups': {'readonly': True}, + 'subscriptions': {'readonly': True}, + } + + _attribute_map = { + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'management_groups': {'key': 'managementGroups', 'type': '[str]'}, + 'subscriptions': {'key': 'subscriptions', 'type': '[str]'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(CrossTenantScopes, self).__init__(**kwargs) + self.tenant_id = None + self.management_groups = None + self.subscriptions = None + + +class CustomDnsConfigPropertiesFormat(msrest.serialization.Model): + """Contains custom Dns resolution configuration from customer. + + :ivar fqdn: Fqdn that resolves to private endpoint ip address. + :vartype fqdn: str + :ivar ip_addresses: A list of private ip addresses of the private endpoint. + :vartype ip_addresses: list[str] + """ + + _attribute_map = { + 'fqdn': {'key': 'fqdn', 'type': 'str'}, + 'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'}, + } + + def __init__( + self, + *, + fqdn: Optional[str] = None, + ip_addresses: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword fqdn: Fqdn that resolves to private endpoint ip address. + :paramtype fqdn: str + :keyword ip_addresses: A list of private ip addresses of the private endpoint. + :paramtype ip_addresses: list[str] + """ + super(CustomDnsConfigPropertiesFormat, self).__init__(**kwargs) + self.fqdn = fqdn + self.ip_addresses = ip_addresses + + +class CustomIpPrefix(Resource): + """Custom IP prefix resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the custom IP prefix. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar zones: A list of availability zones denoting the IP allocated for the resource needs to + come from. + :vartype zones: list[str] + :ivar cidr: The prefix range in CIDR notation. Should include the start address and the prefix + length. + :vartype cidr: str + :ivar signed_message: Signed message for WAN validation. + :vartype signed_message: str + :ivar authorization_message: Authorization message for WAN validation. + :vartype authorization_message: str + :ivar custom_ip_prefix_parent: The Parent CustomIpPrefix for IPv6 /64 CustomIpPrefix. + :vartype custom_ip_prefix_parent: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar child_custom_ip_prefixes: The list of all Children for IPv6 /48 CustomIpPrefix. + :vartype child_custom_ip_prefixes: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar commissioned_state: The commissioned state of the Custom IP Prefix. Possible values + include: "Provisioning", "Provisioned", "Commissioning", "Commissioned", "Decommissioning", + "Deprovisioning", "Commissioned-NoInternetAdvertise". + :vartype commissioned_state: str or ~azure.mgmt.network.v2022_01_01.models.CommissionedState + :ivar no_internet_advertise: Whether to Advertise the range to Internet. + :vartype no_internet_advertise: bool + :ivar public_ip_prefixes: The list of all referenced PublicIpPrefixes. + :vartype public_ip_prefixes: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar resource_guid: The resource GUID property of the custom IP prefix resource. + :vartype resource_guid: str + :ivar failed_reason: The reason why resource is in failed state. + :vartype failed_reason: str + :ivar provisioning_state: The provisioning state of the custom IP prefix resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'child_custom_ip_prefixes': {'readonly': True}, + 'public_ip_prefixes': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'failed_reason': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'zones': {'key': 'zones', 'type': '[str]'}, + 'cidr': {'key': 'properties.cidr', 'type': 'str'}, + 'signed_message': {'key': 'properties.signedMessage', 'type': 'str'}, + 'authorization_message': {'key': 'properties.authorizationMessage', 'type': 'str'}, + 'custom_ip_prefix_parent': {'key': 'properties.customIpPrefixParent', 'type': 'SubResource'}, + 'child_custom_ip_prefixes': {'key': 'properties.childCustomIpPrefixes', 'type': '[SubResource]'}, + 'commissioned_state': {'key': 'properties.commissionedState', 'type': 'str'}, + 'no_internet_advertise': {'key': 'properties.noInternetAdvertise', 'type': 'bool'}, + 'public_ip_prefixes': {'key': 'properties.publicIpPrefixes', 'type': '[SubResource]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'failed_reason': {'key': 'properties.failedReason', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + zones: Optional[List[str]] = None, + cidr: Optional[str] = None, + signed_message: Optional[str] = None, + authorization_message: Optional[str] = None, + custom_ip_prefix_parent: Optional["SubResource"] = None, + commissioned_state: Optional[Union[str, "CommissionedState"]] = None, + no_internet_advertise: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the custom IP prefix. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword zones: A list of availability zones denoting the IP allocated for the resource needs + to come from. + :paramtype zones: list[str] + :keyword cidr: The prefix range in CIDR notation. Should include the start address and the + prefix length. + :paramtype cidr: str + :keyword signed_message: Signed message for WAN validation. + :paramtype signed_message: str + :keyword authorization_message: Authorization message for WAN validation. + :paramtype authorization_message: str + :keyword custom_ip_prefix_parent: The Parent CustomIpPrefix for IPv6 /64 CustomIpPrefix. + :paramtype custom_ip_prefix_parent: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword commissioned_state: The commissioned state of the Custom IP Prefix. Possible values + include: "Provisioning", "Provisioned", "Commissioning", "Commissioned", "Decommissioning", + "Deprovisioning", "Commissioned-NoInternetAdvertise". + :paramtype commissioned_state: str or ~azure.mgmt.network.v2022_01_01.models.CommissionedState + :keyword no_internet_advertise: Whether to Advertise the range to Internet. + :paramtype no_internet_advertise: bool + """ + super(CustomIpPrefix, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.etag = None + self.zones = zones + self.cidr = cidr + self.signed_message = signed_message + self.authorization_message = authorization_message + self.custom_ip_prefix_parent = custom_ip_prefix_parent + self.child_custom_ip_prefixes = None + self.commissioned_state = commissioned_state + self.no_internet_advertise = no_internet_advertise + self.public_ip_prefixes = None + self.resource_guid = None + self.failed_reason = None + self.provisioning_state = None + + +class CustomIpPrefixListResult(msrest.serialization.Model): + """Response for ListCustomIpPrefixes API service call. + + :ivar value: A list of Custom IP prefixes that exists in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[CustomIpPrefix]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["CustomIpPrefix"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of Custom IP prefixes that exists in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(CustomIpPrefixListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class DdosCustomPolicy(Resource): + """A DDoS custom policy in a resource group. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar resource_guid: The resource GUID property of the DDoS custom policy resource. It uniquely + identifies the resource, even if the user changes its name or migrate the resource across + subscriptions or resource groups. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the DDoS custom policy resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar public_ip_addresses: The list of public IPs associated with the DDoS custom policy + resource. This list is read-only. + :vartype public_ip_addresses: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar protocol_custom_settings: The protocol-specific DDoS policy customization parameters. + :vartype protocol_custom_settings: + list[~azure.mgmt.network.v2022_01_01.models.ProtocolCustomSettingsFormat] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'public_ip_addresses': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'public_ip_addresses': {'key': 'properties.publicIPAddresses', 'type': '[SubResource]'}, + 'protocol_custom_settings': {'key': 'properties.protocolCustomSettings', 'type': '[ProtocolCustomSettingsFormat]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + protocol_custom_settings: Optional[List["ProtocolCustomSettingsFormat"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword protocol_custom_settings: The protocol-specific DDoS policy customization parameters. + :paramtype protocol_custom_settings: + list[~azure.mgmt.network.v2022_01_01.models.ProtocolCustomSettingsFormat] + """ + super(DdosCustomPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.resource_guid = None + self.provisioning_state = None + self.public_ip_addresses = None + self.protocol_custom_settings = protocol_custom_settings + + +class DdosProtectionPlan(msrest.serialization.Model): + """A DDoS protection plan in a resource group. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar resource_guid: The resource GUID property of the DDoS protection plan resource. It + uniquely identifies the resource, even if the user changes its name or migrate the resource + across subscriptions or resource groups. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the DDoS protection plan resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar virtual_networks: The list of virtual networks associated with the DDoS protection plan + resource. This list is read-only. + :vartype virtual_networks: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'virtual_networks': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'virtual_networks': {'key': 'properties.virtualNetworks', 'type': '[SubResource]'}, + } + + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ + super(DdosProtectionPlan, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = location + self.tags = tags + self.etag = None + self.resource_guid = None + self.provisioning_state = None + self.virtual_networks = None + + +class DdosProtectionPlanListResult(msrest.serialization.Model): + """A list of DDoS protection plans. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of DDoS protection plans. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[DdosProtectionPlan]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["DdosProtectionPlan"]] = None, + **kwargs + ): + """ + :keyword value: A list of DDoS protection plans. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan] + """ + super(DdosProtectionPlanListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class DdosSettings(msrest.serialization.Model): + """Contains the DDoS protection settings of the public IP. + + :ivar ddos_custom_policy: The DDoS custom policy associated with the public IP. + :vartype ddos_custom_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar protection_coverage: The DDoS protection policy customizability of the public IP. Only + standard coverage will have the ability to be customized. Possible values include: "Basic", + "Standard". + :vartype protection_coverage: str or + ~azure.mgmt.network.v2022_01_01.models.DdosSettingsProtectionCoverage + :ivar protected_ip: Enables DDoS protection on the public IP. + :vartype protected_ip: bool + """ + + _attribute_map = { + 'ddos_custom_policy': {'key': 'ddosCustomPolicy', 'type': 'SubResource'}, + 'protection_coverage': {'key': 'protectionCoverage', 'type': 'str'}, + 'protected_ip': {'key': 'protectedIP', 'type': 'bool'}, + } + + def __init__( + self, + *, + ddos_custom_policy: Optional["SubResource"] = None, + protection_coverage: Optional[Union[str, "DdosSettingsProtectionCoverage"]] = None, + protected_ip: Optional[bool] = None, + **kwargs + ): + """ + :keyword ddos_custom_policy: The DDoS custom policy associated with the public IP. + :paramtype ddos_custom_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword protection_coverage: The DDoS protection policy customizability of the public IP. Only + standard coverage will have the ability to be customized. Possible values include: "Basic", + "Standard". + :paramtype protection_coverage: str or + ~azure.mgmt.network.v2022_01_01.models.DdosSettingsProtectionCoverage + :keyword protected_ip: Enables DDoS protection on the public IP. + :paramtype protected_ip: bool + """ + super(DdosSettings, self).__init__(**kwargs) + self.ddos_custom_policy = ddos_custom_policy + self.protection_coverage = protection_coverage + self.protected_ip = protected_ip + + +class DefaultAdminRule(BaseAdminRule): + """Network default admin rule. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible + values include: "Custom", "Default". + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.AdminRuleKind + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar description: A description for this rule. Restricted to 140 chars. + :vartype description: str + :ivar flag: Default rule flag. + :vartype flag: str + :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", + "Icmp", "Esp", "Any", "Ah". + :vartype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol + :ivar sources: The CIDR or source IP ranges. + :vartype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. + :vartype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :ivar source_port_ranges: The source port ranges. + :vartype source_port_ranges: list[str] + :ivar destination_port_ranges: The destination port ranges. + :vartype destination_port_ranges: list[str] + :ivar access: Indicates the access allowed for this particular rule. Possible values include: + "Allow", "Deny", "AlwaysAllow". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess + :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority + number must be unique for each rule in the collection. The lower the priority number, the + higher the priority of the rule. + :vartype priority: int + :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. + Possible values include: "Inbound", "Outbound". + :vartype direction: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'kind': {'required': True}, + 'system_data': {'readonly': True}, + 'description': {'readonly': True}, + 'protocol': {'readonly': True}, + 'sources': {'readonly': True}, + 'destinations': {'readonly': True}, + 'source_port_ranges': {'readonly': True}, + 'destination_port_ranges': {'readonly': True}, + 'access': {'readonly': True}, + 'priority': {'readonly': True}, + 'direction': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'kind': {'key': 'kind', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'flag': {'key': 'properties.flag', 'type': 'str'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, + 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, + 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, + 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, + 'access': {'key': 'properties.access', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'direction': {'key': 'properties.direction', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + flag: Optional[str] = None, + **kwargs + ): + """ + :keyword flag: Default rule flag. + :paramtype flag: str + """ + super(DefaultAdminRule, self).__init__(**kwargs) + self.kind = 'Default' # type: str + self.description = None + self.flag = flag + self.protocol = None + self.sources = None + self.destinations = None + self.source_port_ranges = None + self.destination_port_ranges = None + self.access = None + self.priority = None + self.direction = None + self.provisioning_state = None + + +class Delegation(SubResource): + """Details the service to which the subnet is delegated. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a subnet. This name can be used to + access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar service_name: The name of the service to whom the subnet should be delegated (e.g. + Microsoft.Sql/servers). + :vartype service_name: str + :ivar actions: The actions permitted to the service upon delegation. + :vartype actions: list[str] + :ivar provisioning_state: The provisioning state of the service delegation resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'actions': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'service_name': {'key': 'properties.serviceName', 'type': 'str'}, + 'actions': {'key': 'properties.actions', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type: Optional[str] = None, + service_name: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a subnet. This name can be used + to access the resource. + :paramtype name: str + :keyword type: Resource type. + :paramtype type: str + :keyword service_name: The name of the service to whom the subnet should be delegated (e.g. + Microsoft.Sql/servers). + :paramtype service_name: str + """ + super(Delegation, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = type + self.service_name = service_name + self.actions = None + self.provisioning_state = None + + +class DeviceProperties(msrest.serialization.Model): + """List of properties of the device. + + :ivar device_vendor: Name of the device Vendor. + :vartype device_vendor: str + :ivar device_model: Model of the device. + :vartype device_model: str + :ivar link_speed_in_mbps: Link speed. + :vartype link_speed_in_mbps: int + """ + + _attribute_map = { + 'device_vendor': {'key': 'deviceVendor', 'type': 'str'}, + 'device_model': {'key': 'deviceModel', 'type': 'str'}, + 'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'}, + } + + def __init__( + self, + *, + device_vendor: Optional[str] = None, + device_model: Optional[str] = None, + link_speed_in_mbps: Optional[int] = None, + **kwargs + ): + """ + :keyword device_vendor: Name of the device Vendor. + :paramtype device_vendor: str + :keyword device_model: Model of the device. + :paramtype device_model: str + :keyword link_speed_in_mbps: Link speed. + :paramtype link_speed_in_mbps: int + """ + super(DeviceProperties, self).__init__(**kwargs) + self.device_vendor = device_vendor + self.device_model = device_model + self.link_speed_in_mbps = link_speed_in_mbps + + +class DhcpOptions(msrest.serialization.Model): + """DhcpOptions contains an array of DNS servers available to VMs deployed in the virtual network. Standard DHCP option for a subnet overrides VNET DHCP options. + + :ivar dns_servers: The list of DNS servers IP addresses. + :vartype dns_servers: list[str] + """ + + _attribute_map = { + 'dns_servers': {'key': 'dnsServers', 'type': '[str]'}, + } + + def __init__( + self, + *, + dns_servers: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword dns_servers: The list of DNS servers IP addresses. + :paramtype dns_servers: list[str] + """ + super(DhcpOptions, self).__init__(**kwargs) + self.dns_servers = dns_servers + + +class Dimension(msrest.serialization.Model): + """Dimension of the metric. + + :ivar name: The name of the dimension. + :vartype name: str + :ivar display_name: The display name of the dimension. + :vartype display_name: str + :ivar internal_name: The internal name of the dimension. + :vartype internal_name: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'internal_name': {'key': 'internalName', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + display_name: Optional[str] = None, + internal_name: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the dimension. + :paramtype name: str + :keyword display_name: The display name of the dimension. + :paramtype display_name: str + :keyword internal_name: The internal name of the dimension. + :paramtype internal_name: str + """ + super(Dimension, self).__init__(**kwargs) + self.name = name + self.display_name = display_name + self.internal_name = internal_name + + +class DnsNameAvailabilityResult(msrest.serialization.Model): + """Response for the CheckDnsNameAvailability API service call. + + :ivar available: Domain availability (True/False). + :vartype available: bool + """ + + _attribute_map = { + 'available': {'key': 'available', 'type': 'bool'}, + } + + def __init__( + self, + *, + available: Optional[bool] = None, + **kwargs + ): + """ + :keyword available: Domain availability (True/False). + :paramtype available: bool + """ + super(DnsNameAvailabilityResult, self).__init__(**kwargs) + self.available = available + + +class DnsSettings(msrest.serialization.Model): + """DNS Proxy Settings in Firewall Policy. + + :ivar servers: List of Custom DNS Servers. + :vartype servers: list[str] + :ivar enable_proxy: Enable DNS Proxy on Firewalls attached to the Firewall Policy. + :vartype enable_proxy: bool + :ivar require_proxy_for_network_rules: FQDNs in Network Rules are supported when set to true. + :vartype require_proxy_for_network_rules: bool + """ + + _attribute_map = { + 'servers': {'key': 'servers', 'type': '[str]'}, + 'enable_proxy': {'key': 'enableProxy', 'type': 'bool'}, + 'require_proxy_for_network_rules': {'key': 'requireProxyForNetworkRules', 'type': 'bool'}, + } + + def __init__( + self, + *, + servers: Optional[List[str]] = None, + enable_proxy: Optional[bool] = None, + require_proxy_for_network_rules: Optional[bool] = None, + **kwargs + ): + """ + :keyword servers: List of Custom DNS Servers. + :paramtype servers: list[str] + :keyword enable_proxy: Enable DNS Proxy on Firewalls attached to the Firewall Policy. + :paramtype enable_proxy: bool + :keyword require_proxy_for_network_rules: FQDNs in Network Rules are supported when set to + true. + :paramtype require_proxy_for_network_rules: bool + """ + super(DnsSettings, self).__init__(**kwargs) + self.servers = servers + self.enable_proxy = enable_proxy + self.require_proxy_for_network_rules = require_proxy_for_network_rules + + +class DscpConfiguration(Resource): + """Differentiated Services Code Point configuration for any given network interface. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar markings: List of markings to be used in the configuration. + :vartype markings: list[int] + :ivar source_ip_ranges: Source IP ranges. + :vartype source_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :ivar destination_ip_ranges: Destination IP ranges. + :vartype destination_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :ivar source_port_ranges: Sources port ranges. + :vartype source_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :ivar destination_port_ranges: Destination port ranges. + :vartype destination_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :ivar protocol: RNM supported protocol types. Possible values include: "DoNotUse", "Icmp", + "Tcp", "Udp", "Gre", "Esp", "Ah", "Vxlan", "All". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ProtocolType + :ivar qos_definition_collection: QoS object definitions. + :vartype qos_definition_collection: list[~azure.mgmt.network.v2022_01_01.models.QosDefinition] + :ivar qos_collection_id: Qos Collection ID generated by RNM. + :vartype qos_collection_id: str + :ivar associated_network_interfaces: Associated Network Interfaces to the DSCP Configuration. + :vartype associated_network_interfaces: + list[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + :ivar resource_guid: The resource GUID property of the DSCP Configuration resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the DSCP Configuration resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'qos_collection_id': {'readonly': True}, + 'associated_network_interfaces': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'markings': {'key': 'properties.markings', 'type': '[int]'}, + 'source_ip_ranges': {'key': 'properties.sourceIpRanges', 'type': '[QosIpRange]'}, + 'destination_ip_ranges': {'key': 'properties.destinationIpRanges', 'type': '[QosIpRange]'}, + 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[QosPortRange]'}, + 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[QosPortRange]'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'qos_definition_collection': {'key': 'properties.qosDefinitionCollection', 'type': '[QosDefinition]'}, + 'qos_collection_id': {'key': 'properties.qosCollectionId', 'type': 'str'}, + 'associated_network_interfaces': {'key': 'properties.associatedNetworkInterfaces', 'type': '[NetworkInterface]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + markings: Optional[List[int]] = None, + source_ip_ranges: Optional[List["QosIpRange"]] = None, + destination_ip_ranges: Optional[List["QosIpRange"]] = None, + source_port_ranges: Optional[List["QosPortRange"]] = None, + destination_port_ranges: Optional[List["QosPortRange"]] = None, + protocol: Optional[Union[str, "ProtocolType"]] = None, + qos_definition_collection: Optional[List["QosDefinition"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword markings: List of markings to be used in the configuration. + :paramtype markings: list[int] + :keyword source_ip_ranges: Source IP ranges. + :paramtype source_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :keyword destination_ip_ranges: Destination IP ranges. + :paramtype destination_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :keyword source_port_ranges: Sources port ranges. + :paramtype source_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :keyword destination_port_ranges: Destination port ranges. + :paramtype destination_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :keyword protocol: RNM supported protocol types. Possible values include: "DoNotUse", "Icmp", + "Tcp", "Udp", "Gre", "Esp", "Ah", "Vxlan", "All". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ProtocolType + :keyword qos_definition_collection: QoS object definitions. + :paramtype qos_definition_collection: + list[~azure.mgmt.network.v2022_01_01.models.QosDefinition] + """ + super(DscpConfiguration, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.markings = markings + self.source_ip_ranges = source_ip_ranges + self.destination_ip_ranges = destination_ip_ranges + self.source_port_ranges = source_port_ranges + self.destination_port_ranges = destination_port_ranges + self.protocol = protocol + self.qos_definition_collection = qos_definition_collection + self.qos_collection_id = None + self.associated_network_interfaces = None + self.resource_guid = None + self.provisioning_state = None + + +class DscpConfigurationListResult(msrest.serialization.Model): + """Response for the DscpConfigurationList API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of dscp configurations in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.DscpConfiguration] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[DscpConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["DscpConfiguration"]] = None, + **kwargs + ): + """ + :keyword value: A list of dscp configurations in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.DscpConfiguration] + """ + super(DscpConfigurationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class EffectiveBaseSecurityAdminRule(msrest.serialization.Model): + """Network base admin rule. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: EffectiveSecurityAdminRule, EffectiveDefaultSecurityAdminRule. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar configuration_description: A description of the security admin configuration. + :vartype configuration_description: str + :ivar rule_collection_description: A description of the rule collection. + :vartype rule_collection_description: str + :ivar rule_collection_applies_to_groups: Groups for rule collection. + :vartype rule_collection_applies_to_groups: + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] + :ivar rule_groups: Effective configuration groups. + :vartype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] + :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible + values include: "Custom", "Default". + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveAdminRuleKind + """ + + _validation = { + 'kind': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, + 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, + 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, + 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, + 'kind': {'key': 'kind', 'type': 'str'}, + } + + _subtype_map = { + 'kind': {'Custom': 'EffectiveSecurityAdminRule', 'Default': 'EffectiveDefaultSecurityAdminRule'} + } + + def __init__( + self, + *, + id: Optional[str] = None, + configuration_description: Optional[str] = None, + rule_collection_description: Optional[str] = None, + rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, + rule_groups: Optional[List["ConfigurationGroup"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword configuration_description: A description of the security admin configuration. + :paramtype configuration_description: str + :keyword rule_collection_description: A description of the rule collection. + :paramtype rule_collection_description: str + :keyword rule_collection_applies_to_groups: Groups for rule collection. + :paramtype rule_collection_applies_to_groups: + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] + :keyword rule_groups: Effective configuration groups. + :paramtype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] + """ + super(EffectiveBaseSecurityAdminRule, self).__init__(**kwargs) + self.id = id + self.configuration_description = configuration_description + self.rule_collection_description = rule_collection_description + self.rule_collection_applies_to_groups = rule_collection_applies_to_groups + self.rule_groups = rule_groups + self.kind = None # type: Optional[str] + + +class EffectiveDefaultSecurityAdminRule(EffectiveBaseSecurityAdminRule): + """Network default admin rule. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar configuration_description: A description of the security admin configuration. + :vartype configuration_description: str + :ivar rule_collection_description: A description of the rule collection. + :vartype rule_collection_description: str + :ivar rule_collection_applies_to_groups: Groups for rule collection. + :vartype rule_collection_applies_to_groups: + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] + :ivar rule_groups: Effective configuration groups. + :vartype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] + :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible + values include: "Custom", "Default". + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveAdminRuleKind + :ivar description: A description for this rule. Restricted to 140 chars. + :vartype description: str + :ivar flag: Default rule flag. + :vartype flag: str + :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", + "Icmp", "Esp", "Any", "Ah". + :vartype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol + :ivar sources: The CIDR or source IP ranges. + :vartype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. + :vartype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :ivar source_port_ranges: The source port ranges. + :vartype source_port_ranges: list[str] + :ivar destination_port_ranges: The destination port ranges. + :vartype destination_port_ranges: list[str] + :ivar access: Indicates the access allowed for this particular rule. Possible values include: + "Allow", "Deny", "AlwaysAllow". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess + :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority + number must be unique for each rule in the collection. The lower the priority number, the + higher the priority of the rule. + :vartype priority: int + :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. + Possible values include: "Inbound", "Outbound". + :vartype direction: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'kind': {'required': True}, + 'description': {'readonly': True}, + 'protocol': {'readonly': True}, + 'sources': {'readonly': True}, + 'destinations': {'readonly': True}, + 'source_port_ranges': {'readonly': True}, + 'destination_port_ranges': {'readonly': True}, + 'access': {'readonly': True}, + 'priority': {'readonly': True}, + 'direction': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, + 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, + 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, + 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, + 'kind': {'key': 'kind', 'type': 'str'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'flag': {'key': 'properties.flag', 'type': 'str'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, + 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, + 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, + 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, + 'access': {'key': 'properties.access', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'direction': {'key': 'properties.direction', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + configuration_description: Optional[str] = None, + rule_collection_description: Optional[str] = None, + rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, + rule_groups: Optional[List["ConfigurationGroup"]] = None, + flag: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword configuration_description: A description of the security admin configuration. + :paramtype configuration_description: str + :keyword rule_collection_description: A description of the rule collection. + :paramtype rule_collection_description: str + :keyword rule_collection_applies_to_groups: Groups for rule collection. + :paramtype rule_collection_applies_to_groups: + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] + :keyword rule_groups: Effective configuration groups. + :paramtype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] + :keyword flag: Default rule flag. + :paramtype flag: str + """ + super(EffectiveDefaultSecurityAdminRule, self).__init__(id=id, configuration_description=configuration_description, rule_collection_description=rule_collection_description, rule_collection_applies_to_groups=rule_collection_applies_to_groups, rule_groups=rule_groups, **kwargs) + self.kind = 'Default' # type: str + self.description = None + self.flag = flag + self.protocol = None + self.sources = None + self.destinations = None + self.source_port_ranges = None + self.destination_port_ranges = None + self.access = None + self.priority = None + self.direction = None + self.provisioning_state = None + + +class EffectiveNetworkSecurityGroup(msrest.serialization.Model): + """Effective network security group. + + :ivar network_security_group: The ID of network security group that is applied. + :vartype network_security_group: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar association: Associated resources. + :vartype association: + ~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityGroupAssociation + :ivar effective_security_rules: A collection of effective security rules. + :vartype effective_security_rules: + list[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityRule] + :ivar tag_map: Mapping of tags to list of IP Addresses included within the tag. + :vartype tag_map: str + """ + + _attribute_map = { + 'network_security_group': {'key': 'networkSecurityGroup', 'type': 'SubResource'}, + 'association': {'key': 'association', 'type': 'EffectiveNetworkSecurityGroupAssociation'}, + 'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'}, + 'tag_map': {'key': 'tagMap', 'type': 'str'}, + } + + def __init__( + self, + *, + network_security_group: Optional["SubResource"] = None, + association: Optional["EffectiveNetworkSecurityGroupAssociation"] = None, + effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None, + tag_map: Optional[str] = None, + **kwargs + ): + """ + :keyword network_security_group: The ID of network security group that is applied. + :paramtype network_security_group: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword association: Associated resources. + :paramtype association: + ~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityGroupAssociation + :keyword effective_security_rules: A collection of effective security rules. + :paramtype effective_security_rules: + list[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityRule] + :keyword tag_map: Mapping of tags to list of IP Addresses included within the tag. + :paramtype tag_map: str + """ + super(EffectiveNetworkSecurityGroup, self).__init__(**kwargs) + self.network_security_group = network_security_group + self.association = association + self.effective_security_rules = effective_security_rules + self.tag_map = tag_map + + +class EffectiveNetworkSecurityGroupAssociation(msrest.serialization.Model): + """The effective network security group association. + + :ivar network_manager: The ID of the Azure network manager if assigned. + :vartype network_manager: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar subnet: The ID of the subnet if assigned. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar network_interface: The ID of the network interface if assigned. + :vartype network_interface: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _attribute_map = { + 'network_manager': {'key': 'networkManager', 'type': 'SubResource'}, + 'subnet': {'key': 'subnet', 'type': 'SubResource'}, + 'network_interface': {'key': 'networkInterface', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + network_manager: Optional["SubResource"] = None, + subnet: Optional["SubResource"] = None, + network_interface: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword network_manager: The ID of the Azure network manager if assigned. + :paramtype network_manager: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword subnet: The ID of the subnet if assigned. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword network_interface: The ID of the network interface if assigned. + :paramtype network_interface: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(EffectiveNetworkSecurityGroupAssociation, self).__init__(**kwargs) + self.network_manager = network_manager + self.subnet = subnet + self.network_interface = network_interface + + +class EffectiveNetworkSecurityGroupListResult(msrest.serialization.Model): + """Response for list effective network security groups API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of effective network security groups. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityGroup] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[EffectiveNetworkSecurityGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["EffectiveNetworkSecurityGroup"]] = None, + **kwargs + ): + """ + :keyword value: A list of effective network security groups. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityGroup] + """ + super(EffectiveNetworkSecurityGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class EffectiveNetworkSecurityRule(msrest.serialization.Model): + """Effective network security rules. + + :ivar name: The name of the security rule specified by the user (if created by the user). + :vartype name: str + :ivar protocol: The network protocol this rule applies to. Possible values include: "Tcp", + "Udp", "All". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveSecurityRuleProtocol + :ivar source_port_range: The source port or range. + :vartype source_port_range: str + :ivar destination_port_range: The destination port or range. + :vartype destination_port_range: str + :ivar source_port_ranges: The source port ranges. Expected values include a single integer + between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*). + :vartype source_port_ranges: list[str] + :ivar destination_port_ranges: The destination port ranges. Expected values include a single + integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*). + :vartype destination_port_ranges: list[str] + :ivar source_address_prefix: The source address prefix. + :vartype source_address_prefix: str + :ivar destination_address_prefix: The destination address prefix. + :vartype destination_address_prefix: str + :ivar source_address_prefixes: The source address prefixes. Expected values include CIDR IP + ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the + asterisk (*). + :vartype source_address_prefixes: list[str] + :ivar destination_address_prefixes: The destination address prefixes. Expected values include + CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and + the asterisk (*). + :vartype destination_address_prefixes: list[str] + :ivar expanded_source_address_prefix: The expanded source address prefix. + :vartype expanded_source_address_prefix: list[str] + :ivar expanded_destination_address_prefix: Expanded destination address prefix. + :vartype expanded_destination_address_prefix: list[str] + :ivar access: Whether network traffic is allowed or denied. Possible values include: "Allow", + "Deny". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAccess + :ivar priority: The priority of the rule. + :vartype priority: int + :ivar direction: The direction of the rule. Possible values include: "Inbound", "Outbound". + :vartype direction: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleDirection + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'source_port_range': {'key': 'sourcePortRange', 'type': 'str'}, + 'destination_port_range': {'key': 'destinationPortRange', 'type': 'str'}, + 'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[str]'}, + 'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[str]'}, + 'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'}, + 'destination_address_prefix': {'key': 'destinationAddressPrefix', 'type': 'str'}, + 'source_address_prefixes': {'key': 'sourceAddressPrefixes', 'type': '[str]'}, + 'destination_address_prefixes': {'key': 'destinationAddressPrefixes', 'type': '[str]'}, + 'expanded_source_address_prefix': {'key': 'expandedSourceAddressPrefix', 'type': '[str]'}, + 'expanded_destination_address_prefix': {'key': 'expandedDestinationAddressPrefix', 'type': '[str]'}, + 'access': {'key': 'access', 'type': 'str'}, + 'priority': {'key': 'priority', 'type': 'int'}, + 'direction': {'key': 'direction', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + protocol: Optional[Union[str, "EffectiveSecurityRuleProtocol"]] = None, + source_port_range: Optional[str] = None, + destination_port_range: Optional[str] = None, + source_port_ranges: Optional[List[str]] = None, + destination_port_ranges: Optional[List[str]] = None, + source_address_prefix: Optional[str] = None, + destination_address_prefix: Optional[str] = None, + source_address_prefixes: Optional[List[str]] = None, + destination_address_prefixes: Optional[List[str]] = None, + expanded_source_address_prefix: Optional[List[str]] = None, + expanded_destination_address_prefix: Optional[List[str]] = None, + access: Optional[Union[str, "SecurityRuleAccess"]] = None, + priority: Optional[int] = None, + direction: Optional[Union[str, "SecurityRuleDirection"]] = None, + **kwargs + ): + """ + :keyword name: The name of the security rule specified by the user (if created by the user). + :paramtype name: str + :keyword protocol: The network protocol this rule applies to. Possible values include: "Tcp", + "Udp", "All". + :paramtype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.EffectiveSecurityRuleProtocol + :keyword source_port_range: The source port or range. + :paramtype source_port_range: str + :keyword destination_port_range: The destination port or range. + :paramtype destination_port_range: str + :keyword source_port_ranges: The source port ranges. Expected values include a single integer + between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*). + :paramtype source_port_ranges: list[str] + :keyword destination_port_ranges: The destination port ranges. Expected values include a single + integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*). + :paramtype destination_port_ranges: list[str] + :keyword source_address_prefix: The source address prefix. + :paramtype source_address_prefix: str + :keyword destination_address_prefix: The destination address prefix. + :paramtype destination_address_prefix: str + :keyword source_address_prefixes: The source address prefixes. Expected values include CIDR IP + ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the + asterisk (*). + :paramtype source_address_prefixes: list[str] + :keyword destination_address_prefixes: The destination address prefixes. Expected values + include CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System + Tags, and the asterisk (*). + :paramtype destination_address_prefixes: list[str] + :keyword expanded_source_address_prefix: The expanded source address prefix. + :paramtype expanded_source_address_prefix: list[str] + :keyword expanded_destination_address_prefix: Expanded destination address prefix. + :paramtype expanded_destination_address_prefix: list[str] + :keyword access: Whether network traffic is allowed or denied. Possible values include: + "Allow", "Deny". + :paramtype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAccess + :keyword priority: The priority of the rule. + :paramtype priority: int + :keyword direction: The direction of the rule. Possible values include: "Inbound", "Outbound". + :paramtype direction: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleDirection + """ + super(EffectiveNetworkSecurityRule, self).__init__(**kwargs) + self.name = name + self.protocol = protocol + self.source_port_range = source_port_range + self.destination_port_range = destination_port_range + self.source_port_ranges = source_port_ranges + self.destination_port_ranges = destination_port_ranges + self.source_address_prefix = source_address_prefix + self.destination_address_prefix = destination_address_prefix + self.source_address_prefixes = source_address_prefixes + self.destination_address_prefixes = destination_address_prefixes + self.expanded_source_address_prefix = expanded_source_address_prefix + self.expanded_destination_address_prefix = expanded_destination_address_prefix + self.access = access + self.priority = priority + self.direction = direction + + +class EffectiveRoute(msrest.serialization.Model): + """Effective Route. + + :ivar name: The name of the user defined route. This is optional. + :vartype name: str + :ivar disable_bgp_route_propagation: If true, on-premises routes are not propagated to the + network interfaces in the subnet. + :vartype disable_bgp_route_propagation: bool + :ivar source: Who created the route. Possible values include: "Unknown", "User", + "VirtualNetworkGateway", "Default". + :vartype source: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveRouteSource + :ivar state: The value of effective route. Possible values include: "Active", "Invalid". + :vartype state: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveRouteState + :ivar address_prefix: The address prefixes of the effective routes in CIDR notation. + :vartype address_prefix: list[str] + :ivar next_hop_ip_address: The IP address of the next hop of the effective route. + :vartype next_hop_ip_address: list[str] + :ivar next_hop_type: The type of Azure hop the packet should be sent to. Possible values + include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None". + :vartype next_hop_type: str or ~azure.mgmt.network.v2022_01_01.models.RouteNextHopType + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'disable_bgp_route_propagation': {'key': 'disableBgpRoutePropagation', 'type': 'bool'}, + 'source': {'key': 'source', 'type': 'str'}, + 'state': {'key': 'state', 'type': 'str'}, + 'address_prefix': {'key': 'addressPrefix', 'type': '[str]'}, + 'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': '[str]'}, + 'next_hop_type': {'key': 'nextHopType', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + disable_bgp_route_propagation: Optional[bool] = None, + source: Optional[Union[str, "EffectiveRouteSource"]] = None, + state: Optional[Union[str, "EffectiveRouteState"]] = None, + address_prefix: Optional[List[str]] = None, + next_hop_ip_address: Optional[List[str]] = None, + next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None, + **kwargs + ): + """ + :keyword name: The name of the user defined route. This is optional. + :paramtype name: str + :keyword disable_bgp_route_propagation: If true, on-premises routes are not propagated to the + network interfaces in the subnet. + :paramtype disable_bgp_route_propagation: bool + :keyword source: Who created the route. Possible values include: "Unknown", "User", + "VirtualNetworkGateway", "Default". + :paramtype source: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveRouteSource + :keyword state: The value of effective route. Possible values include: "Active", "Invalid". + :paramtype state: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveRouteState + :keyword address_prefix: The address prefixes of the effective routes in CIDR notation. + :paramtype address_prefix: list[str] + :keyword next_hop_ip_address: The IP address of the next hop of the effective route. + :paramtype next_hop_ip_address: list[str] + :keyword next_hop_type: The type of Azure hop the packet should be sent to. Possible values + include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None". + :paramtype next_hop_type: str or ~azure.mgmt.network.v2022_01_01.models.RouteNextHopType + """ + super(EffectiveRoute, self).__init__(**kwargs) + self.name = name + self.disable_bgp_route_propagation = disable_bgp_route_propagation + self.source = source + self.state = state + self.address_prefix = address_prefix + self.next_hop_ip_address = next_hop_ip_address + self.next_hop_type = next_hop_type + + +class EffectiveRouteListResult(msrest.serialization.Model): + """Response for list effective route API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of effective routes. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.EffectiveRoute] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[EffectiveRoute]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["EffectiveRoute"]] = None, + **kwargs + ): + """ + :keyword value: A list of effective routes. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.EffectiveRoute] + """ + super(EffectiveRouteListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class EffectiveRoutesParameters(msrest.serialization.Model): + """The parameters specifying the resource whose effective routes are being requested. + + :ivar resource_id: The resource whose effective routes are being requested. + :vartype resource_id: str + :ivar virtual_wan_resource_type: The type of the specified resource like RouteTable, + ExpressRouteConnection, HubVirtualNetworkConnection, VpnConnection and P2SConnection. + :vartype virtual_wan_resource_type: str + """ + + _attribute_map = { + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'virtual_wan_resource_type': {'key': 'virtualWanResourceType', 'type': 'str'}, + } + + def __init__( + self, + *, + resource_id: Optional[str] = None, + virtual_wan_resource_type: Optional[str] = None, + **kwargs + ): + """ + :keyword resource_id: The resource whose effective routes are being requested. + :paramtype resource_id: str + :keyword virtual_wan_resource_type: The type of the specified resource like RouteTable, + ExpressRouteConnection, HubVirtualNetworkConnection, VpnConnection and P2SConnection. + :paramtype virtual_wan_resource_type: str + """ + super(EffectiveRoutesParameters, self).__init__(**kwargs) + self.resource_id = resource_id + self.virtual_wan_resource_type = virtual_wan_resource_type + + +class EffectiveSecurityAdminRule(EffectiveBaseSecurityAdminRule): + """Network admin rule. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar configuration_description: A description of the security admin configuration. + :vartype configuration_description: str + :ivar rule_collection_description: A description of the rule collection. + :vartype rule_collection_description: str + :ivar rule_collection_applies_to_groups: Groups for rule collection. + :vartype rule_collection_applies_to_groups: + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] + :ivar rule_groups: Effective configuration groups. + :vartype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] + :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible + values include: "Custom", "Default". + :vartype kind: str or ~azure.mgmt.network.v2022_01_01.models.EffectiveAdminRuleKind + :ivar description: A description for this rule. Restricted to 140 chars. + :vartype description: str + :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", + "Icmp", "Esp", "Any", "Ah". + :vartype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol + :ivar sources: The CIDR or source IP ranges. + :vartype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. + :vartype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :ivar source_port_ranges: The source port ranges. + :vartype source_port_ranges: list[str] + :ivar destination_port_ranges: The destination port ranges. + :vartype destination_port_ranges: list[str] + :ivar access: Indicates the access allowed for this particular rule. Possible values include: + "Allow", "Deny", "AlwaysAllow". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess + :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority + number must be unique for each rule in the collection. The lower the priority number, the + higher the priority of the rule. + :vartype priority: int + :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. + Possible values include: "Inbound", "Outbound". + :vartype direction: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'kind': {'required': True}, + 'priority': {'maximum': 4096, 'minimum': 1}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, + 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, + 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, + 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, + 'kind': {'key': 'kind', 'type': 'str'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, + 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, + 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, + 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, + 'access': {'key': 'properties.access', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'direction': {'key': 'properties.direction', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + configuration_description: Optional[str] = None, + rule_collection_description: Optional[str] = None, + rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, + rule_groups: Optional[List["ConfigurationGroup"]] = None, + description: Optional[str] = None, + protocol: Optional[Union[str, "SecurityConfigurationRuleProtocol"]] = None, + sources: Optional[List["AddressPrefixItem"]] = None, + destinations: Optional[List["AddressPrefixItem"]] = None, + source_port_ranges: Optional[List[str]] = None, + destination_port_ranges: Optional[List[str]] = None, + access: Optional[Union[str, "SecurityConfigurationRuleAccess"]] = None, + priority: Optional[int] = None, + direction: Optional[Union[str, "SecurityConfigurationRuleDirection"]] = None, **kwargs ): """ @@ -2369,192 +12719,22351 @@ def __init__( :paramtype rule_collection_description: str :keyword rule_collection_applies_to_groups: Groups for rule collection. :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerSecurityGroupItem] :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :keyword flag: Default rule flag. - :paramtype flag: str + :paramtype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ConfigurationGroup] + :keyword description: A description for this rule. Restricted to 140 chars. + :paramtype description: str + :keyword protocol: Network protocol this rule applies to. Possible values include: "Tcp", + "Udp", "Icmp", "Esp", "Any", "Ah". + :paramtype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleProtocol + :keyword sources: The CIDR or source IP ranges. + :paramtype sources: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :keyword destinations: The destination address prefixes. CIDR or destination IP ranges. + :paramtype destinations: list[~azure.mgmt.network.v2022_01_01.models.AddressPrefixItem] + :keyword source_port_ranges: The source port ranges. + :paramtype source_port_ranges: list[str] + :keyword destination_port_ranges: The destination port ranges. + :paramtype destination_port_ranges: list[str] + :keyword access: Indicates the access allowed for this particular rule. Possible values + include: "Allow", "Deny", "AlwaysAllow". + :paramtype access: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleAccess + :keyword priority: The priority of the rule. The value can be between 1 and 4096. The priority + number must be unique for each rule in the collection. The lower the priority number, the + higher the priority of the rule. + :paramtype priority: int + :keyword direction: Indicates if the traffic matched against the rule in inbound or outbound. + Possible values include: "Inbound", "Outbound". + :paramtype direction: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityConfigurationRuleDirection + """ + super(EffectiveSecurityAdminRule, self).__init__(id=id, configuration_description=configuration_description, rule_collection_description=rule_collection_description, rule_collection_applies_to_groups=rule_collection_applies_to_groups, rule_groups=rule_groups, **kwargs) + self.kind = 'Custom' # type: str + self.description = description + self.protocol = protocol + self.sources = sources + self.destinations = destinations + self.source_port_ranges = source_port_ranges + self.destination_port_ranges = destination_port_ranges + self.access = access + self.priority = priority + self.direction = direction + self.provisioning_state = None + + +class EndpointServiceResult(SubResource): + """Endpoint service. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the endpoint service. + :vartype name: str + :ivar type: Type of the endpoint service. + :vartype type: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + """ + super(EndpointServiceResult, self).__init__(id=id, **kwargs) + self.name = None + self.type = None + + +class EndpointServicesListResult(msrest.serialization.Model): + """Response for the ListAvailableEndpointServices API service call. + + :ivar value: List of available endpoint services in a region. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.EndpointServiceResult] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[EndpointServiceResult]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["EndpointServiceResult"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of available endpoint services in a region. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.EndpointServiceResult] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(EndpointServicesListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class Error(msrest.serialization.Model): + """Common error representation. + + :ivar code: Error code. + :vartype code: str + :ivar message: Error message. + :vartype message: str + :ivar target: Error target. + :vartype target: str + :ivar details: Error details. + :vartype details: list[~azure.mgmt.network.v2022_01_01.models.ErrorDetails] + :ivar inner_error: Inner error message. + :vartype inner_error: str + """ + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'target': {'key': 'target', 'type': 'str'}, + 'details': {'key': 'details', 'type': '[ErrorDetails]'}, + 'inner_error': {'key': 'innerError', 'type': 'str'}, + } + + def __init__( + self, + *, + code: Optional[str] = None, + message: Optional[str] = None, + target: Optional[str] = None, + details: Optional[List["ErrorDetails"]] = None, + inner_error: Optional[str] = None, + **kwargs + ): + """ + :keyword code: Error code. + :paramtype code: str + :keyword message: Error message. + :paramtype message: str + :keyword target: Error target. + :paramtype target: str + :keyword details: Error details. + :paramtype details: list[~azure.mgmt.network.v2022_01_01.models.ErrorDetails] + :keyword inner_error: Inner error message. + :paramtype inner_error: str + """ + super(Error, self).__init__(**kwargs) + self.code = code + self.message = message + self.target = target + self.details = details + self.inner_error = inner_error + + +class ErrorDetails(msrest.serialization.Model): + """Common error details representation. + + :ivar code: Error code. + :vartype code: str + :ivar target: Error target. + :vartype target: str + :ivar message: Error message. + :vartype message: str + """ + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'target': {'key': 'target', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + *, + code: Optional[str] = None, + target: Optional[str] = None, + message: Optional[str] = None, + **kwargs + ): + """ + :keyword code: Error code. + :paramtype code: str + :keyword target: Error target. + :paramtype target: str + :keyword message: Error message. + :paramtype message: str + """ + super(ErrorDetails, self).__init__(**kwargs) + self.code = code + self.target = target + self.message = message + + +class ErrorResponse(msrest.serialization.Model): + """The error object. + + :ivar error: The error details object. + :vartype error: ~azure.mgmt.network.v2022_01_01.models.ErrorDetails + """ + + _attribute_map = { + 'error': {'key': 'error', 'type': 'ErrorDetails'}, + } + + def __init__( + self, + *, + error: Optional["ErrorDetails"] = None, + **kwargs + ): + """ + :keyword error: The error details object. + :paramtype error: ~azure.mgmt.network.v2022_01_01.models.ErrorDetails + """ + super(ErrorResponse, self).__init__(**kwargs) + self.error = error + + +class EvaluatedNetworkSecurityGroup(msrest.serialization.Model): + """Results of network security group evaluation. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar network_security_group_id: Network security group ID. + :vartype network_security_group_id: str + :ivar applied_to: Resource ID of nic or subnet to which network security group is applied. + :vartype applied_to: str + :ivar matched_rule: Matched network security rule. + :vartype matched_rule: ~azure.mgmt.network.v2022_01_01.models.MatchedRule + :ivar rules_evaluation_result: List of network security rules evaluation results. + :vartype rules_evaluation_result: + list[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityRulesEvaluationResult] + """ + + _validation = { + 'rules_evaluation_result': {'readonly': True}, + } + + _attribute_map = { + 'network_security_group_id': {'key': 'networkSecurityGroupId', 'type': 'str'}, + 'applied_to': {'key': 'appliedTo', 'type': 'str'}, + 'matched_rule': {'key': 'matchedRule', 'type': 'MatchedRule'}, + 'rules_evaluation_result': {'key': 'rulesEvaluationResult', 'type': '[NetworkSecurityRulesEvaluationResult]'}, + } + + def __init__( + self, + *, + network_security_group_id: Optional[str] = None, + applied_to: Optional[str] = None, + matched_rule: Optional["MatchedRule"] = None, + **kwargs + ): + """ + :keyword network_security_group_id: Network security group ID. + :paramtype network_security_group_id: str + :keyword applied_to: Resource ID of nic or subnet to which network security group is applied. + :paramtype applied_to: str + :keyword matched_rule: Matched network security rule. + :paramtype matched_rule: ~azure.mgmt.network.v2022_01_01.models.MatchedRule + """ + super(EvaluatedNetworkSecurityGroup, self).__init__(**kwargs) + self.network_security_group_id = network_security_group_id + self.applied_to = applied_to + self.matched_rule = matched_rule + self.rules_evaluation_result = None + + +class ExclusionManagedRule(msrest.serialization.Model): + """Defines a managed rule to use for exclusion. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_id: Required. Identifier for the managed rule. + :vartype rule_id: str + """ + + _validation = { + 'rule_id': {'required': True}, + } + + _attribute_map = { + 'rule_id': {'key': 'ruleId', 'type': 'str'}, + } + + def __init__( + self, + *, + rule_id: str, + **kwargs + ): + """ + :keyword rule_id: Required. Identifier for the managed rule. + :paramtype rule_id: str + """ + super(ExclusionManagedRule, self).__init__(**kwargs) + self.rule_id = rule_id + + +class ExclusionManagedRuleGroup(msrest.serialization.Model): + """Defines a managed rule group to use for exclusion. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_group_name: Required. The managed rule group for exclusion. + :vartype rule_group_name: str + :ivar rules: List of rules that will be excluded. If none specified, all rules in the group + will be excluded. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.ExclusionManagedRule] + """ + + _validation = { + 'rule_group_name': {'required': True}, + } + + _attribute_map = { + 'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'}, + 'rules': {'key': 'rules', 'type': '[ExclusionManagedRule]'}, + } + + def __init__( + self, + *, + rule_group_name: str, + rules: Optional[List["ExclusionManagedRule"]] = None, + **kwargs + ): + """ + :keyword rule_group_name: Required. The managed rule group for exclusion. + :paramtype rule_group_name: str + :keyword rules: List of rules that will be excluded. If none specified, all rules in the group + will be excluded. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.ExclusionManagedRule] + """ + super(ExclusionManagedRuleGroup, self).__init__(**kwargs) + self.rule_group_name = rule_group_name + self.rules = rules + + +class ExclusionManagedRuleSet(msrest.serialization.Model): + """Defines a managed rule set for Exclusions. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_set_type: Required. Defines the rule set type to use. + :vartype rule_set_type: str + :ivar rule_set_version: Required. Defines the version of the rule set to use. + :vartype rule_set_version: str + :ivar rule_groups: Defines the rule groups to apply to the rule set. + :vartype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ExclusionManagedRuleGroup] + """ + + _validation = { + 'rule_set_type': {'required': True}, + 'rule_set_version': {'required': True}, + } + + _attribute_map = { + 'rule_set_type': {'key': 'ruleSetType', 'type': 'str'}, + 'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'}, + 'rule_groups': {'key': 'ruleGroups', 'type': '[ExclusionManagedRuleGroup]'}, + } + + def __init__( + self, + *, + rule_set_type: str, + rule_set_version: str, + rule_groups: Optional[List["ExclusionManagedRuleGroup"]] = None, + **kwargs + ): + """ + :keyword rule_set_type: Required. Defines the rule set type to use. + :paramtype rule_set_type: str + :keyword rule_set_version: Required. Defines the version of the rule set to use. + :paramtype rule_set_version: str + :keyword rule_groups: Defines the rule groups to apply to the rule set. + :paramtype rule_groups: list[~azure.mgmt.network.v2022_01_01.models.ExclusionManagedRuleGroup] + """ + super(ExclusionManagedRuleSet, self).__init__(**kwargs) + self.rule_set_type = rule_set_type + self.rule_set_version = rule_set_version + self.rule_groups = rule_groups + + +class ExplicitProxySettings(msrest.serialization.Model): + """Explicit Proxy Settings in Firewall Policy. + + :ivar enable_explicit_proxy: When set to true, explicit proxy mode is enabled. + :vartype enable_explicit_proxy: bool + :ivar http_port: Port number for explicit proxy http protocol, cannot be greater than 64000. + :vartype http_port: int + :ivar https_port: Port number for explicit proxy https protocol, cannot be greater than 64000. + :vartype https_port: int + :ivar enable_pac_file: When set to true, pac file port and url needs to be provided. + :vartype enable_pac_file: bool + :ivar pac_file_port: Port number for firewall to serve PAC file. + :vartype pac_file_port: int + :ivar pac_file: SAS URL for PAC file. + :vartype pac_file: str + """ + + _validation = { + 'http_port': {'maximum': 64000, 'minimum': 0}, + 'https_port': {'maximum': 64000, 'minimum': 0}, + 'pac_file_port': {'maximum': 64000, 'minimum': 0}, + } + + _attribute_map = { + 'enable_explicit_proxy': {'key': 'enableExplicitProxy', 'type': 'bool'}, + 'http_port': {'key': 'httpPort', 'type': 'int'}, + 'https_port': {'key': 'httpsPort', 'type': 'int'}, + 'enable_pac_file': {'key': 'enablePacFile', 'type': 'bool'}, + 'pac_file_port': {'key': 'pacFilePort', 'type': 'int'}, + 'pac_file': {'key': 'pacFile', 'type': 'str'}, + } + + def __init__( + self, + *, + enable_explicit_proxy: Optional[bool] = None, + http_port: Optional[int] = None, + https_port: Optional[int] = None, + enable_pac_file: Optional[bool] = None, + pac_file_port: Optional[int] = None, + pac_file: Optional[str] = None, + **kwargs + ): + """ + :keyword enable_explicit_proxy: When set to true, explicit proxy mode is enabled. + :paramtype enable_explicit_proxy: bool + :keyword http_port: Port number for explicit proxy http protocol, cannot be greater than 64000. + :paramtype http_port: int + :keyword https_port: Port number for explicit proxy https protocol, cannot be greater than + 64000. + :paramtype https_port: int + :keyword enable_pac_file: When set to true, pac file port and url needs to be provided. + :paramtype enable_pac_file: bool + :keyword pac_file_port: Port number for firewall to serve PAC file. + :paramtype pac_file_port: int + :keyword pac_file: SAS URL for PAC file. + :paramtype pac_file: str + """ + super(ExplicitProxySettings, self).__init__(**kwargs) + self.enable_explicit_proxy = enable_explicit_proxy + self.http_port = http_port + self.https_port = https_port + self.enable_pac_file = enable_pac_file + self.pac_file_port = pac_file_port + self.pac_file = pac_file + + +class ExpressRouteCircuit(Resource): + """ExpressRouteCircuit resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar sku: The SKU. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitSku + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar allow_classic_operations: Allow classic operations. + :vartype allow_classic_operations: bool + :ivar circuit_provisioning_state: The CircuitProvisioningState state of the resource. + :vartype circuit_provisioning_state: str + :ivar service_provider_provisioning_state: The ServiceProviderProvisioningState state of the + resource. Possible values include: "NotProvisioned", "Provisioning", "Provisioned", + "Deprovisioning". + :vartype service_provider_provisioning_state: str or + ~azure.mgmt.network.v2022_01_01.models.ServiceProviderProvisioningState + :ivar authorizations: The list of authorizations. + :vartype authorizations: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization] + :ivar peerings: The list of peerings. + :vartype peerings: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :ivar service_key: The ServiceKey. + :vartype service_key: str + :ivar service_provider_notes: The ServiceProviderNotes. + :vartype service_provider_notes: str + :ivar service_provider_properties: The ServiceProviderProperties. + :vartype service_provider_properties: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitServiceProviderProperties + :ivar express_route_port: The reference to the ExpressRoutePort resource when the circuit is + provisioned on an ExpressRoutePort resource. + :vartype express_route_port: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar bandwidth_in_gbps: The bandwidth of the circuit when the circuit is provisioned on an + ExpressRoutePort resource. + :vartype bandwidth_in_gbps: float + :ivar stag: The identifier of the circuit traffic. Outer tag for QinQ encapsulation. + :vartype stag: int + :ivar provisioning_state: The provisioning state of the express route circuit resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar gateway_manager_etag: The GatewayManager Etag. + :vartype gateway_manager_etag: str + :ivar global_reach_enabled: Flag denoting global reach status. + :vartype global_reach_enabled: bool + :ivar authorization_key: The authorizationKey. + :vartype authorization_key: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'stag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'allow_classic_operations': {'key': 'properties.allowClassicOperations', 'type': 'bool'}, + 'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'}, + 'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'}, + 'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'}, + 'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'}, + 'service_key': {'key': 'properties.serviceKey', 'type': 'str'}, + 'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'}, + 'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'}, + 'express_route_port': {'key': 'properties.expressRoutePort', 'type': 'SubResource'}, + 'bandwidth_in_gbps': {'key': 'properties.bandwidthInGbps', 'type': 'float'}, + 'stag': {'key': 'properties.stag', 'type': 'int'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'}, + 'global_reach_enabled': {'key': 'properties.globalReachEnabled', 'type': 'bool'}, + 'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + sku: Optional["ExpressRouteCircuitSku"] = None, + allow_classic_operations: Optional[bool] = None, + circuit_provisioning_state: Optional[str] = None, + service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None, + authorizations: Optional[List["ExpressRouteCircuitAuthorization"]] = None, + peerings: Optional[List["ExpressRouteCircuitPeering"]] = None, + service_key: Optional[str] = None, + service_provider_notes: Optional[str] = None, + service_provider_properties: Optional["ExpressRouteCircuitServiceProviderProperties"] = None, + express_route_port: Optional["SubResource"] = None, + bandwidth_in_gbps: Optional[float] = None, + gateway_manager_etag: Optional[str] = None, + global_reach_enabled: Optional[bool] = None, + authorization_key: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword sku: The SKU. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitSku + :keyword allow_classic_operations: Allow classic operations. + :paramtype allow_classic_operations: bool + :keyword circuit_provisioning_state: The CircuitProvisioningState state of the resource. + :paramtype circuit_provisioning_state: str + :keyword service_provider_provisioning_state: The ServiceProviderProvisioningState state of the + resource. Possible values include: "NotProvisioned", "Provisioning", "Provisioned", + "Deprovisioning". + :paramtype service_provider_provisioning_state: str or + ~azure.mgmt.network.v2022_01_01.models.ServiceProviderProvisioningState + :keyword authorizations: The list of authorizations. + :paramtype authorizations: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization] + :keyword peerings: The list of peerings. + :paramtype peerings: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :keyword service_key: The ServiceKey. + :paramtype service_key: str + :keyword service_provider_notes: The ServiceProviderNotes. + :paramtype service_provider_notes: str + :keyword service_provider_properties: The ServiceProviderProperties. + :paramtype service_provider_properties: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitServiceProviderProperties + :keyword express_route_port: The reference to the ExpressRoutePort resource when the circuit is + provisioned on an ExpressRoutePort resource. + :paramtype express_route_port: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword bandwidth_in_gbps: The bandwidth of the circuit when the circuit is provisioned on an + ExpressRoutePort resource. + :paramtype bandwidth_in_gbps: float + :keyword gateway_manager_etag: The GatewayManager Etag. + :paramtype gateway_manager_etag: str + :keyword global_reach_enabled: Flag denoting global reach status. + :paramtype global_reach_enabled: bool + :keyword authorization_key: The authorizationKey. + :paramtype authorization_key: str + """ + super(ExpressRouteCircuit, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.sku = sku + self.etag = None + self.allow_classic_operations = allow_classic_operations + self.circuit_provisioning_state = circuit_provisioning_state + self.service_provider_provisioning_state = service_provider_provisioning_state + self.authorizations = authorizations + self.peerings = peerings + self.service_key = service_key + self.service_provider_notes = service_provider_notes + self.service_provider_properties = service_provider_properties + self.express_route_port = express_route_port + self.bandwidth_in_gbps = bandwidth_in_gbps + self.stag = None + self.provisioning_state = None + self.gateway_manager_etag = gateway_manager_etag + self.global_reach_enabled = global_reach_enabled + self.authorization_key = authorization_key + + +class ExpressRouteCircuitArpTable(msrest.serialization.Model): + """The ARP table associated with the ExpressRouteCircuit. + + :ivar age: Entry age in minutes. + :vartype age: int + :ivar interface: Interface address. + :vartype interface: str + :ivar ip_address: The IP address. + :vartype ip_address: str + :ivar mac_address: The MAC address. + :vartype mac_address: str + """ + + _attribute_map = { + 'age': {'key': 'age', 'type': 'int'}, + 'interface': {'key': 'interface', 'type': 'str'}, + 'ip_address': {'key': 'ipAddress', 'type': 'str'}, + 'mac_address': {'key': 'macAddress', 'type': 'str'}, + } + + def __init__( + self, + *, + age: Optional[int] = None, + interface: Optional[str] = None, + ip_address: Optional[str] = None, + mac_address: Optional[str] = None, + **kwargs + ): + """ + :keyword age: Entry age in minutes. + :paramtype age: int + :keyword interface: Interface address. + :paramtype interface: str + :keyword ip_address: The IP address. + :paramtype ip_address: str + :keyword mac_address: The MAC address. + :paramtype mac_address: str + """ + super(ExpressRouteCircuitArpTable, self).__init__(**kwargs) + self.age = age + self.interface = interface + self.ip_address = ip_address + self.mac_address = mac_address + + +class ExpressRouteCircuitAuthorization(SubResource): + """Authorization in an ExpressRouteCircuit resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar authorization_key: The authorization key. + :vartype authorization_key: str + :ivar authorization_use_status: The authorization use status. Possible values include: + "Available", "InUse". + :vartype authorization_use_status: str or + ~azure.mgmt.network.v2022_01_01.models.AuthorizationUseStatus + :ivar provisioning_state: The provisioning state of the authorization resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'}, + 'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + authorization_key: Optional[str] = None, + authorization_use_status: Optional[Union[str, "AuthorizationUseStatus"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword authorization_key: The authorization key. + :paramtype authorization_key: str + :keyword authorization_use_status: The authorization use status. Possible values include: + "Available", "InUse". + :paramtype authorization_use_status: str or + ~azure.mgmt.network.v2022_01_01.models.AuthorizationUseStatus + """ + super(ExpressRouteCircuitAuthorization, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.authorization_key = authorization_key + self.authorization_use_status = authorization_use_status + self.provisioning_state = None + + +class ExpressRouteCircuitConnection(SubResource): + """Express Route Circuit Connection in an ExpressRouteCircuitPeering resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the circuit initiating connection. + :vartype express_route_circuit_peering: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the peered circuit. + :vartype peer_express_route_circuit_peering: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar address_prefix: /29 IP address space to carve out Customer addresses for tunnels. + :vartype address_prefix: str + :ivar authorization_key: The authorization key. + :vartype authorization_key: str + :ivar ipv6_circuit_connection_config: IPv6 Address PrefixProperties of the express route + circuit connection. + :vartype ipv6_circuit_connection_config: + ~azure.mgmt.network.v2022_01_01.models.Ipv6CircuitConnectionConfig + :ivar circuit_connection_status: Express Route Circuit connection state. Possible values + include: "Connected", "Connecting", "Disconnected". + :vartype circuit_connection_status: str or + ~azure.mgmt.network.v2022_01_01.models.CircuitConnectionStatus + :ivar provisioning_state: The provisioning state of the express route circuit connection + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'circuit_connection_status': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'}, + 'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'}, + 'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'}, + 'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'}, + 'ipv6_circuit_connection_config': {'key': 'properties.ipv6CircuitConnectionConfig', 'type': 'Ipv6CircuitConnectionConfig'}, + 'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + express_route_circuit_peering: Optional["SubResource"] = None, + peer_express_route_circuit_peering: Optional["SubResource"] = None, + address_prefix: Optional[str] = None, + authorization_key: Optional[str] = None, + ipv6_circuit_connection_config: Optional["Ipv6CircuitConnectionConfig"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the circuit initiating connection. + :paramtype express_route_circuit_peering: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the peered circuit. + :paramtype peer_express_route_circuit_peering: + ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword address_prefix: /29 IP address space to carve out Customer addresses for tunnels. + :paramtype address_prefix: str + :keyword authorization_key: The authorization key. + :paramtype authorization_key: str + :keyword ipv6_circuit_connection_config: IPv6 Address PrefixProperties of the express route + circuit connection. + :paramtype ipv6_circuit_connection_config: + ~azure.mgmt.network.v2022_01_01.models.Ipv6CircuitConnectionConfig + """ + super(ExpressRouteCircuitConnection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.express_route_circuit_peering = express_route_circuit_peering + self.peer_express_route_circuit_peering = peer_express_route_circuit_peering + self.address_prefix = address_prefix + self.authorization_key = authorization_key + self.ipv6_circuit_connection_config = ipv6_circuit_connection_config + self.circuit_connection_status = None + self.provisioning_state = None + + +class ExpressRouteCircuitConnectionListResult(msrest.serialization.Model): + """Response for ListConnections API service call retrieves all global reach connections that belongs to a Private Peering for an ExpressRouteCircuit. + + :ivar value: The global reach connection associated with Private Peering in an ExpressRoute + Circuit. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCircuitConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCircuitConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The global reach connection associated with Private Peering in an ExpressRoute + Circuit. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteCircuitConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteCircuitListResult(msrest.serialization.Model): + """Response for ListExpressRouteCircuit API service call. + + :ivar value: A list of ExpressRouteCircuits in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCircuit"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of ExpressRouteCircuits in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteCircuitListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteCircuitPeering(SubResource): + """Peering in an ExpressRouteCircuit resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar peering_type: The peering type. Possible values include: "AzurePublicPeering", + "AzurePrivatePeering", "MicrosoftPeering". + :vartype peering_type: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringType + :ivar state: The peering state. Possible values include: "Disabled", "Enabled". + :vartype state: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringState + :ivar azure_asn: The Azure ASN. + :vartype azure_asn: int + :ivar peer_asn: The peer ASN. + :vartype peer_asn: long + :ivar primary_peer_address_prefix: The primary address prefix. + :vartype primary_peer_address_prefix: str + :ivar secondary_peer_address_prefix: The secondary address prefix. + :vartype secondary_peer_address_prefix: str + :ivar primary_azure_port: The primary port. + :vartype primary_azure_port: str + :ivar secondary_azure_port: The secondary port. + :vartype secondary_azure_port: str + :ivar shared_key: The shared key. + :vartype shared_key: str + :ivar vlan_id: The VLAN ID. + :vartype vlan_id: int + :ivar microsoft_peering_config: The Microsoft peering configuration. + :vartype microsoft_peering_config: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringConfig + :ivar stats: The peering stats of express route circuit. + :vartype stats: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitStats + :ivar provisioning_state: The provisioning state of the express route circuit peering resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar gateway_manager_etag: The GatewayManager Etag. + :vartype gateway_manager_etag: str + :ivar last_modified_by: Who was the last to modify the peering. + :vartype last_modified_by: str + :ivar route_filter: The reference to the RouteFilter resource. + :vartype route_filter: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar ipv6_peering_config: The IPv6 peering configuration. + :vartype ipv6_peering_config: + ~azure.mgmt.network.v2022_01_01.models.Ipv6ExpressRouteCircuitPeeringConfig + :ivar express_route_connection: The ExpressRoute connection. + :vartype express_route_connection: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnectionId + :ivar connections: The list of circuit connections associated with Azure Private Peering for + this circuit. + :vartype connections: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection] + :ivar peered_connections: The list of peered circuit connections associated with Azure Private + Peering for this circuit. + :vartype peered_connections: + list[~azure.mgmt.network.v2022_01_01.models.PeerExpressRouteCircuitConnection] + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'peer_asn': {'maximum': 4294967295, 'minimum': 1}, + 'provisioning_state': {'readonly': True}, + 'last_modified_by': {'readonly': True}, + 'peered_connections': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'peering_type': {'key': 'properties.peeringType', 'type': 'str'}, + 'state': {'key': 'properties.state', 'type': 'str'}, + 'azure_asn': {'key': 'properties.azureASN', 'type': 'int'}, + 'peer_asn': {'key': 'properties.peerASN', 'type': 'long'}, + 'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'}, + 'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'}, + 'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'}, + 'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'}, + 'shared_key': {'key': 'properties.sharedKey', 'type': 'str'}, + 'vlan_id': {'key': 'properties.vlanId', 'type': 'int'}, + 'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'}, + 'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'}, + 'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'}, + 'route_filter': {'key': 'properties.routeFilter', 'type': 'SubResource'}, + 'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'}, + 'express_route_connection': {'key': 'properties.expressRouteConnection', 'type': 'ExpressRouteConnectionId'}, + 'connections': {'key': 'properties.connections', 'type': '[ExpressRouteCircuitConnection]'}, + 'peered_connections': {'key': 'properties.peeredConnections', 'type': '[PeerExpressRouteCircuitConnection]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None, + state: Optional[Union[str, "ExpressRoutePeeringState"]] = None, + azure_asn: Optional[int] = None, + peer_asn: Optional[int] = None, + primary_peer_address_prefix: Optional[str] = None, + secondary_peer_address_prefix: Optional[str] = None, + primary_azure_port: Optional[str] = None, + secondary_azure_port: Optional[str] = None, + shared_key: Optional[str] = None, + vlan_id: Optional[int] = None, + microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None, + stats: Optional["ExpressRouteCircuitStats"] = None, + gateway_manager_etag: Optional[str] = None, + route_filter: Optional["SubResource"] = None, + ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None, + express_route_connection: Optional["ExpressRouteConnectionId"] = None, + connections: Optional[List["ExpressRouteCircuitConnection"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword peering_type: The peering type. Possible values include: "AzurePublicPeering", + "AzurePrivatePeering", "MicrosoftPeering". + :paramtype peering_type: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringType + :keyword state: The peering state. Possible values include: "Disabled", "Enabled". + :paramtype state: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringState + :keyword azure_asn: The Azure ASN. + :paramtype azure_asn: int + :keyword peer_asn: The peer ASN. + :paramtype peer_asn: long + :keyword primary_peer_address_prefix: The primary address prefix. + :paramtype primary_peer_address_prefix: str + :keyword secondary_peer_address_prefix: The secondary address prefix. + :paramtype secondary_peer_address_prefix: str + :keyword primary_azure_port: The primary port. + :paramtype primary_azure_port: str + :keyword secondary_azure_port: The secondary port. + :paramtype secondary_azure_port: str + :keyword shared_key: The shared key. + :paramtype shared_key: str + :keyword vlan_id: The VLAN ID. + :paramtype vlan_id: int + :keyword microsoft_peering_config: The Microsoft peering configuration. + :paramtype microsoft_peering_config: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringConfig + :keyword stats: The peering stats of express route circuit. + :paramtype stats: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitStats + :keyword gateway_manager_etag: The GatewayManager Etag. + :paramtype gateway_manager_etag: str + :keyword route_filter: The reference to the RouteFilter resource. + :paramtype route_filter: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword ipv6_peering_config: The IPv6 peering configuration. + :paramtype ipv6_peering_config: + ~azure.mgmt.network.v2022_01_01.models.Ipv6ExpressRouteCircuitPeeringConfig + :keyword express_route_connection: The ExpressRoute connection. + :paramtype express_route_connection: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnectionId + :keyword connections: The list of circuit connections associated with Azure Private Peering for + this circuit. + :paramtype connections: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection] + """ + super(ExpressRouteCircuitPeering, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.peering_type = peering_type + self.state = state + self.azure_asn = azure_asn + self.peer_asn = peer_asn + self.primary_peer_address_prefix = primary_peer_address_prefix + self.secondary_peer_address_prefix = secondary_peer_address_prefix + self.primary_azure_port = primary_azure_port + self.secondary_azure_port = secondary_azure_port + self.shared_key = shared_key + self.vlan_id = vlan_id + self.microsoft_peering_config = microsoft_peering_config + self.stats = stats + self.provisioning_state = None + self.gateway_manager_etag = gateway_manager_etag + self.last_modified_by = None + self.route_filter = route_filter + self.ipv6_peering_config = ipv6_peering_config + self.express_route_connection = express_route_connection + self.connections = connections + self.peered_connections = None + + +class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model): + """Specifies the peering configuration. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar advertised_public_prefixes: The reference to AdvertisedPublicPrefixes. + :vartype advertised_public_prefixes: list[str] + :ivar advertised_communities: The communities of bgp peering. Specified for microsoft peering. + :vartype advertised_communities: list[str] + :ivar advertised_public_prefixes_state: The advertised public prefix state of the Peering + resource. Possible values include: "NotConfigured", "Configuring", "Configured", + "ValidationNeeded". + :vartype advertised_public_prefixes_state: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState + :ivar legacy_mode: The legacy mode of the peering. + :vartype legacy_mode: int + :ivar customer_asn: The CustomerASN of the peering. + :vartype customer_asn: int + :ivar routing_registry_name: The RoutingRegistryName of the configuration. + :vartype routing_registry_name: str + """ + + _validation = { + 'advertised_public_prefixes_state': {'readonly': True}, + } + + _attribute_map = { + 'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'}, + 'advertised_communities': {'key': 'advertisedCommunities', 'type': '[str]'}, + 'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'}, + 'legacy_mode': {'key': 'legacyMode', 'type': 'int'}, + 'customer_asn': {'key': 'customerASN', 'type': 'int'}, + 'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'}, + } + + def __init__( + self, + *, + advertised_public_prefixes: Optional[List[str]] = None, + advertised_communities: Optional[List[str]] = None, + legacy_mode: Optional[int] = None, + customer_asn: Optional[int] = None, + routing_registry_name: Optional[str] = None, + **kwargs + ): + """ + :keyword advertised_public_prefixes: The reference to AdvertisedPublicPrefixes. + :paramtype advertised_public_prefixes: list[str] + :keyword advertised_communities: The communities of bgp peering. Specified for microsoft + peering. + :paramtype advertised_communities: list[str] + :keyword legacy_mode: The legacy mode of the peering. + :paramtype legacy_mode: int + :keyword customer_asn: The CustomerASN of the peering. + :paramtype customer_asn: int + :keyword routing_registry_name: The RoutingRegistryName of the configuration. + :paramtype routing_registry_name: str + """ + super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs) + self.advertised_public_prefixes = advertised_public_prefixes + self.advertised_communities = advertised_communities + self.advertised_public_prefixes_state = None + self.legacy_mode = legacy_mode + self.customer_asn = customer_asn + self.routing_registry_name = routing_registry_name + + +class ExpressRouteCircuitPeeringId(msrest.serialization.Model): + """ExpressRoute circuit peering identifier. + + :ivar id: The ID of the ExpressRoute circuit peering. + :vartype id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: The ID of the ExpressRoute circuit peering. + :paramtype id: str + """ + super(ExpressRouteCircuitPeeringId, self).__init__(**kwargs) + self.id = id + + +class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model): + """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit. + + :ivar value: The peerings in an express route circuit. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCircuitPeering"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The peerings in an express route circuit. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteCircuitReference(msrest.serialization.Model): + """Reference to an express route circuit. + + :ivar id: Corresponding Express Route Circuit Id. + :vartype id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Corresponding Express Route Circuit Id. + :paramtype id: str + """ + super(ExpressRouteCircuitReference, self).__init__(**kwargs) + self.id = id + + +class ExpressRouteCircuitRoutesTable(msrest.serialization.Model): + """The routes table associated with the ExpressRouteCircuit. + + :ivar network: IP address of a network entity. + :vartype network: str + :ivar next_hop: NextHop address. + :vartype next_hop: str + :ivar loc_prf: Local preference value as set with the set local-preference route-map + configuration command. + :vartype loc_prf: str + :ivar weight: Route Weight. + :vartype weight: int + :ivar path: Autonomous system paths to the destination network. + :vartype path: str + """ + + _attribute_map = { + 'network': {'key': 'network', 'type': 'str'}, + 'next_hop': {'key': 'nextHop', 'type': 'str'}, + 'loc_prf': {'key': 'locPrf', 'type': 'str'}, + 'weight': {'key': 'weight', 'type': 'int'}, + 'path': {'key': 'path', 'type': 'str'}, + } + + def __init__( + self, + *, + network: Optional[str] = None, + next_hop: Optional[str] = None, + loc_prf: Optional[str] = None, + weight: Optional[int] = None, + path: Optional[str] = None, + **kwargs + ): + """ + :keyword network: IP address of a network entity. + :paramtype network: str + :keyword next_hop: NextHop address. + :paramtype next_hop: str + :keyword loc_prf: Local preference value as set with the set local-preference route-map + configuration command. + :paramtype loc_prf: str + :keyword weight: Route Weight. + :paramtype weight: int + :keyword path: Autonomous system paths to the destination network. + :paramtype path: str + """ + super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs) + self.network = network + self.next_hop = next_hop + self.loc_prf = loc_prf + self.weight = weight + self.path = path + + +class ExpressRouteCircuitRoutesTableSummary(msrest.serialization.Model): + """The routes table associated with the ExpressRouteCircuit. + + :ivar neighbor: IP address of the neighbor. + :vartype neighbor: str + :ivar v: BGP version number spoken to the neighbor. + :vartype v: int + :ivar as_property: Autonomous system number. + :vartype as_property: int + :ivar up_down: The length of time that the BGP session has been in the Established state, or + the current status if not in the Established state. + :vartype up_down: str + :ivar state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have + been received from a neighbor or peer group. + :vartype state_pfx_rcd: str + """ + + _attribute_map = { + 'neighbor': {'key': 'neighbor', 'type': 'str'}, + 'v': {'key': 'v', 'type': 'int'}, + 'as_property': {'key': 'as', 'type': 'int'}, + 'up_down': {'key': 'upDown', 'type': 'str'}, + 'state_pfx_rcd': {'key': 'statePfxRcd', 'type': 'str'}, + } + + def __init__( + self, + *, + neighbor: Optional[str] = None, + v: Optional[int] = None, + as_property: Optional[int] = None, + up_down: Optional[str] = None, + state_pfx_rcd: Optional[str] = None, + **kwargs + ): + """ + :keyword neighbor: IP address of the neighbor. + :paramtype neighbor: str + :keyword v: BGP version number spoken to the neighbor. + :paramtype v: int + :keyword as_property: Autonomous system number. + :paramtype as_property: int + :keyword up_down: The length of time that the BGP session has been in the Established state, or + the current status if not in the Established state. + :paramtype up_down: str + :keyword state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have + been received from a neighbor or peer group. + :paramtype state_pfx_rcd: str + """ + super(ExpressRouteCircuitRoutesTableSummary, self).__init__(**kwargs) + self.neighbor = neighbor + self.v = v + self.as_property = as_property + self.up_down = up_down + self.state_pfx_rcd = state_pfx_rcd + + +class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model): + """Response for ListArpTable associated with the Express Route Circuits API. + + :ivar value: A list of the ARP tables. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitArpTable] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCircuitArpTable"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of the ARP tables. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitArpTable] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model): + """Contains ServiceProviderProperties in an ExpressRouteCircuit. + + :ivar service_provider_name: The serviceProviderName. + :vartype service_provider_name: str + :ivar peering_location: The peering location. + :vartype peering_location: str + :ivar bandwidth_in_mbps: The BandwidthInMbps. + :vartype bandwidth_in_mbps: int + """ + + _attribute_map = { + 'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'}, + 'peering_location': {'key': 'peeringLocation', 'type': 'str'}, + 'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'}, + } + + def __init__( + self, + *, + service_provider_name: Optional[str] = None, + peering_location: Optional[str] = None, + bandwidth_in_mbps: Optional[int] = None, + **kwargs + ): + """ + :keyword service_provider_name: The serviceProviderName. + :paramtype service_provider_name: str + :keyword peering_location: The peering location. + :paramtype peering_location: str + :keyword bandwidth_in_mbps: The BandwidthInMbps. + :paramtype bandwidth_in_mbps: int + """ + super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs) + self.service_provider_name = service_provider_name + self.peering_location = peering_location + self.bandwidth_in_mbps = bandwidth_in_mbps + + +class ExpressRouteCircuitSku(msrest.serialization.Model): + """Contains SKU in an ExpressRouteCircuit. + + :ivar name: The name of the SKU. + :vartype name: str + :ivar tier: The tier of the SKU. Possible values include: "Standard", "Premium", "Basic", + "Local". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitSkuTier + :ivar family: The family of the SKU. Possible values include: "UnlimitedData", "MeteredData". + :vartype family: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitSkuFamily + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'tier': {'key': 'tier', 'type': 'str'}, + 'family': {'key': 'family', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + tier: Optional[Union[str, "ExpressRouteCircuitSkuTier"]] = None, + family: Optional[Union[str, "ExpressRouteCircuitSkuFamily"]] = None, + **kwargs + ): + """ + :keyword name: The name of the SKU. + :paramtype name: str + :keyword tier: The tier of the SKU. Possible values include: "Standard", "Premium", "Basic", + "Local". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitSkuTier + :keyword family: The family of the SKU. Possible values include: "UnlimitedData", + "MeteredData". + :paramtype family: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitSkuFamily + """ + super(ExpressRouteCircuitSku, self).__init__(**kwargs) + self.name = name + self.tier = tier + self.family = family + + +class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model): + """Response for ListRoutesTable associated with the Express Route Circuits API. + + :ivar value: The list of routes table. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitRoutesTable] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCircuitRoutesTable"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The list of routes table. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitRoutesTable] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteCircuitsRoutesTableSummaryListResult(msrest.serialization.Model): + """Response for ListRoutesTable associated with the Express Route Circuits API. + + :ivar value: A list of the routes table. + :vartype value: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitRoutesTableSummary] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTableSummary]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCircuitRoutesTableSummary"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of the routes table. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitRoutesTableSummary] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteCircuitsRoutesTableSummaryListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteCircuitStats(msrest.serialization.Model): + """Contains stats associated with the peering. + + :ivar primarybytes_in: The Primary BytesIn of the peering. + :vartype primarybytes_in: long + :ivar primarybytes_out: The primary BytesOut of the peering. + :vartype primarybytes_out: long + :ivar secondarybytes_in: The secondary BytesIn of the peering. + :vartype secondarybytes_in: long + :ivar secondarybytes_out: The secondary BytesOut of the peering. + :vartype secondarybytes_out: long + """ + + _attribute_map = { + 'primarybytes_in': {'key': 'primarybytesIn', 'type': 'long'}, + 'primarybytes_out': {'key': 'primarybytesOut', 'type': 'long'}, + 'secondarybytes_in': {'key': 'secondarybytesIn', 'type': 'long'}, + 'secondarybytes_out': {'key': 'secondarybytesOut', 'type': 'long'}, + } + + def __init__( + self, + *, + primarybytes_in: Optional[int] = None, + primarybytes_out: Optional[int] = None, + secondarybytes_in: Optional[int] = None, + secondarybytes_out: Optional[int] = None, + **kwargs + ): + """ + :keyword primarybytes_in: The Primary BytesIn of the peering. + :paramtype primarybytes_in: long + :keyword primarybytes_out: The primary BytesOut of the peering. + :paramtype primarybytes_out: long + :keyword secondarybytes_in: The secondary BytesIn of the peering. + :paramtype secondarybytes_in: long + :keyword secondarybytes_out: The secondary BytesOut of the peering. + :paramtype secondarybytes_out: long + """ + super(ExpressRouteCircuitStats, self).__init__(**kwargs) + self.primarybytes_in = primarybytes_in + self.primarybytes_out = primarybytes_out + self.secondarybytes_in = secondarybytes_in + self.secondarybytes_out = secondarybytes_out + + +class ExpressRouteConnection(SubResource): + """ExpressRouteConnection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Required. The name of the resource. + :vartype name: str + :ivar provisioning_state: The provisioning state of the express route connection resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar express_route_circuit_peering: The ExpressRoute circuit peering. + :vartype express_route_circuit_peering: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringId + :ivar authorization_key: Authorization key to establish the connection. + :vartype authorization_key: str + :ivar routing_weight: The routing weight associated to the connection. + :vartype routing_weight: int + :ivar enable_internet_security: Enable internet security. + :vartype enable_internet_security: bool + :ivar express_route_gateway_bypass: Enable FastPath to vWan Firewall hub. + :vartype express_route_gateway_bypass: bool + :ivar routing_configuration: The Routing Configuration indicating the associated and propagated + route tables on this connection. + :vartype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration + """ + + _validation = { + 'name': {'required': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'ExpressRouteCircuitPeeringId'}, + 'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'}, + 'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'}, + 'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'}, + 'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'}, + 'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'}, + } + + def __init__( + self, + *, + name: str, + id: Optional[str] = None, + express_route_circuit_peering: Optional["ExpressRouteCircuitPeeringId"] = None, + authorization_key: Optional[str] = None, + routing_weight: Optional[int] = None, + enable_internet_security: Optional[bool] = None, + express_route_gateway_bypass: Optional[bool] = None, + routing_configuration: Optional["RoutingConfiguration"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Required. The name of the resource. + :paramtype name: str + :keyword express_route_circuit_peering: The ExpressRoute circuit peering. + :paramtype express_route_circuit_peering: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringId + :keyword authorization_key: Authorization key to establish the connection. + :paramtype authorization_key: str + :keyword routing_weight: The routing weight associated to the connection. + :paramtype routing_weight: int + :keyword enable_internet_security: Enable internet security. + :paramtype enable_internet_security: bool + :keyword express_route_gateway_bypass: Enable FastPath to vWan Firewall hub. + :paramtype express_route_gateway_bypass: bool + :keyword routing_configuration: The Routing Configuration indicating the associated and + propagated route tables on this connection. + :paramtype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration + """ + super(ExpressRouteConnection, self).__init__(id=id, **kwargs) + self.name = name + self.provisioning_state = None + self.express_route_circuit_peering = express_route_circuit_peering + self.authorization_key = authorization_key + self.routing_weight = routing_weight + self.enable_internet_security = enable_internet_security + self.express_route_gateway_bypass = express_route_gateway_bypass + self.routing_configuration = routing_configuration + + +class ExpressRouteConnectionId(msrest.serialization.Model): + """The ID of the ExpressRouteConnection. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The ID of the ExpressRouteConnection. + :vartype id: str + """ + + _validation = { + 'id': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ExpressRouteConnectionId, self).__init__(**kwargs) + self.id = None + + +class ExpressRouteConnectionList(msrest.serialization.Model): + """ExpressRouteConnection list. + + :ivar value: The list of ExpressRoute connections. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteConnection]'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteConnection"]] = None, + **kwargs + ): + """ + :keyword value: The list of ExpressRoute connections. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection] + """ + super(ExpressRouteConnectionList, self).__init__(**kwargs) + self.value = value + + +class ExpressRouteCrossConnection(Resource): + """ExpressRouteCrossConnection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar primary_azure_port: The name of the primary port. + :vartype primary_azure_port: str + :ivar secondary_azure_port: The name of the secondary port. + :vartype secondary_azure_port: str + :ivar s_tag: The identifier of the circuit traffic. + :vartype s_tag: int + :ivar peering_location: The peering location of the ExpressRoute circuit. + :vartype peering_location: str + :ivar bandwidth_in_mbps: The circuit bandwidth In Mbps. + :vartype bandwidth_in_mbps: int + :ivar express_route_circuit: The ExpressRouteCircuit. + :vartype express_route_circuit: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitReference + :ivar service_provider_provisioning_state: The provisioning state of the circuit in the + connectivity provider system. Possible values include: "NotProvisioned", "Provisioning", + "Provisioned", "Deprovisioning". + :vartype service_provider_provisioning_state: str or + ~azure.mgmt.network.v2022_01_01.models.ServiceProviderProvisioningState + :ivar service_provider_notes: Additional read only notes set by the connectivity provider. + :vartype service_provider_notes: str + :ivar provisioning_state: The provisioning state of the express route cross connection + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar peerings: The list of peerings. + :vartype peerings: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'primary_azure_port': {'readonly': True}, + 'secondary_azure_port': {'readonly': True}, + 's_tag': {'readonly': True}, + 'peering_location': {'readonly': True}, + 'bandwidth_in_mbps': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'}, + 'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'}, + 's_tag': {'key': 'properties.sTag', 'type': 'int'}, + 'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'}, + 'bandwidth_in_mbps': {'key': 'properties.bandwidthInMbps', 'type': 'int'}, + 'express_route_circuit': {'key': 'properties.expressRouteCircuit', 'type': 'ExpressRouteCircuitReference'}, + 'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'}, + 'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCrossConnectionPeering]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + express_route_circuit: Optional["ExpressRouteCircuitReference"] = None, + service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None, + service_provider_notes: Optional[str] = None, + peerings: Optional[List["ExpressRouteCrossConnectionPeering"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword express_route_circuit: The ExpressRouteCircuit. + :paramtype express_route_circuit: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitReference + :keyword service_provider_provisioning_state: The provisioning state of the circuit in the + connectivity provider system. Possible values include: "NotProvisioned", "Provisioning", + "Provisioned", "Deprovisioning". + :paramtype service_provider_provisioning_state: str or + ~azure.mgmt.network.v2022_01_01.models.ServiceProviderProvisioningState + :keyword service_provider_notes: Additional read only notes set by the connectivity provider. + :paramtype service_provider_notes: str + :keyword peerings: The list of peerings. + :paramtype peerings: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering] + """ + super(ExpressRouteCrossConnection, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.primary_azure_port = None + self.secondary_azure_port = None + self.s_tag = None + self.peering_location = None + self.bandwidth_in_mbps = None + self.express_route_circuit = express_route_circuit + self.service_provider_provisioning_state = service_provider_provisioning_state + self.service_provider_notes = service_provider_notes + self.provisioning_state = None + self.peerings = peerings + + +class ExpressRouteCrossConnectionListResult(msrest.serialization.Model): + """Response for ListExpressRouteCrossConnection API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of ExpressRouteCrossConnection resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCrossConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCrossConnection"]] = None, + **kwargs + ): + """ + :keyword value: A list of ExpressRouteCrossConnection resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection] + """ + super(ExpressRouteCrossConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ExpressRouteCrossConnectionPeering(SubResource): + """Peering in an ExpressRoute Cross Connection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar peering_type: The peering type. Possible values include: "AzurePublicPeering", + "AzurePrivatePeering", "MicrosoftPeering". + :vartype peering_type: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringType + :ivar state: The peering state. Possible values include: "Disabled", "Enabled". + :vartype state: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringState + :ivar azure_asn: The Azure ASN. + :vartype azure_asn: int + :ivar peer_asn: The peer ASN. + :vartype peer_asn: long + :ivar primary_peer_address_prefix: The primary address prefix. + :vartype primary_peer_address_prefix: str + :ivar secondary_peer_address_prefix: The secondary address prefix. + :vartype secondary_peer_address_prefix: str + :ivar primary_azure_port: The primary port. + :vartype primary_azure_port: str + :ivar secondary_azure_port: The secondary port. + :vartype secondary_azure_port: str + :ivar shared_key: The shared key. + :vartype shared_key: str + :ivar vlan_id: The VLAN ID. + :vartype vlan_id: int + :ivar microsoft_peering_config: The Microsoft peering configuration. + :vartype microsoft_peering_config: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringConfig + :ivar provisioning_state: The provisioning state of the express route cross connection peering + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar gateway_manager_etag: The GatewayManager Etag. + :vartype gateway_manager_etag: str + :ivar last_modified_by: Who was the last to modify the peering. + :vartype last_modified_by: str + :ivar ipv6_peering_config: The IPv6 peering configuration. + :vartype ipv6_peering_config: + ~azure.mgmt.network.v2022_01_01.models.Ipv6ExpressRouteCircuitPeeringConfig + """ + + _validation = { + 'etag': {'readonly': True}, + 'azure_asn': {'readonly': True}, + 'peer_asn': {'maximum': 4294967295, 'minimum': 1}, + 'primary_azure_port': {'readonly': True}, + 'secondary_azure_port': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'last_modified_by': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'peering_type': {'key': 'properties.peeringType', 'type': 'str'}, + 'state': {'key': 'properties.state', 'type': 'str'}, + 'azure_asn': {'key': 'properties.azureASN', 'type': 'int'}, + 'peer_asn': {'key': 'properties.peerASN', 'type': 'long'}, + 'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'}, + 'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'}, + 'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'}, + 'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'}, + 'shared_key': {'key': 'properties.sharedKey', 'type': 'str'}, + 'vlan_id': {'key': 'properties.vlanId', 'type': 'int'}, + 'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'}, + 'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'}, + 'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None, + state: Optional[Union[str, "ExpressRoutePeeringState"]] = None, + peer_asn: Optional[int] = None, + primary_peer_address_prefix: Optional[str] = None, + secondary_peer_address_prefix: Optional[str] = None, + shared_key: Optional[str] = None, + vlan_id: Optional[int] = None, + microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None, + gateway_manager_etag: Optional[str] = None, + ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword peering_type: The peering type. Possible values include: "AzurePublicPeering", + "AzurePrivatePeering", "MicrosoftPeering". + :paramtype peering_type: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringType + :keyword state: The peering state. Possible values include: "Disabled", "Enabled". + :paramtype state: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePeeringState + :keyword peer_asn: The peer ASN. + :paramtype peer_asn: long + :keyword primary_peer_address_prefix: The primary address prefix. + :paramtype primary_peer_address_prefix: str + :keyword secondary_peer_address_prefix: The secondary address prefix. + :paramtype secondary_peer_address_prefix: str + :keyword shared_key: The shared key. + :paramtype shared_key: str + :keyword vlan_id: The VLAN ID. + :paramtype vlan_id: int + :keyword microsoft_peering_config: The Microsoft peering configuration. + :paramtype microsoft_peering_config: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringConfig + :keyword gateway_manager_etag: The GatewayManager Etag. + :paramtype gateway_manager_etag: str + :keyword ipv6_peering_config: The IPv6 peering configuration. + :paramtype ipv6_peering_config: + ~azure.mgmt.network.v2022_01_01.models.Ipv6ExpressRouteCircuitPeeringConfig + """ + super(ExpressRouteCrossConnectionPeering, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.peering_type = peering_type + self.state = state + self.azure_asn = None + self.peer_asn = peer_asn + self.primary_peer_address_prefix = primary_peer_address_prefix + self.secondary_peer_address_prefix = secondary_peer_address_prefix + self.primary_azure_port = None + self.secondary_azure_port = None + self.shared_key = shared_key + self.vlan_id = vlan_id + self.microsoft_peering_config = microsoft_peering_config + self.provisioning_state = None + self.gateway_manager_etag = gateway_manager_etag + self.last_modified_by = None + self.ipv6_peering_config = ipv6_peering_config + + +class ExpressRouteCrossConnectionPeeringList(msrest.serialization.Model): + """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCrossConnection. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: The peerings in an express route cross connection. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionPeering]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCrossConnectionPeering"]] = None, + **kwargs + ): + """ + :keyword value: The peerings in an express route cross connection. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering] + """ + super(ExpressRouteCrossConnectionPeeringList, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ExpressRouteCrossConnectionRoutesTableSummary(msrest.serialization.Model): + """The routes table associated with the ExpressRouteCircuit. + + :ivar neighbor: IP address of Neighbor router. + :vartype neighbor: str + :ivar asn: Autonomous system number. + :vartype asn: int + :ivar up_down: The length of time that the BGP session has been in the Established state, or + the current status if not in the Established state. + :vartype up_down: str + :ivar state_or_prefixes_received: Current state of the BGP session, and the number of prefixes + that have been received from a neighbor or peer group. + :vartype state_or_prefixes_received: str + """ + + _attribute_map = { + 'neighbor': {'key': 'neighbor', 'type': 'str'}, + 'asn': {'key': 'asn', 'type': 'int'}, + 'up_down': {'key': 'upDown', 'type': 'str'}, + 'state_or_prefixes_received': {'key': 'stateOrPrefixesReceived', 'type': 'str'}, + } + + def __init__( + self, + *, + neighbor: Optional[str] = None, + asn: Optional[int] = None, + up_down: Optional[str] = None, + state_or_prefixes_received: Optional[str] = None, + **kwargs + ): + """ + :keyword neighbor: IP address of Neighbor router. + :paramtype neighbor: str + :keyword asn: Autonomous system number. + :paramtype asn: int + :keyword up_down: The length of time that the BGP session has been in the Established state, or + the current status if not in the Established state. + :paramtype up_down: str + :keyword state_or_prefixes_received: Current state of the BGP session, and the number of + prefixes that have been received from a neighbor or peer group. + :paramtype state_or_prefixes_received: str + """ + super(ExpressRouteCrossConnectionRoutesTableSummary, self).__init__(**kwargs) + self.neighbor = neighbor + self.asn = asn + self.up_down = up_down + self.state_or_prefixes_received = state_or_prefixes_received + + +class ExpressRouteCrossConnectionsRoutesTableSummaryListResult(msrest.serialization.Model): + """Response for ListRoutesTable associated with the Express Route Cross Connections. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of the routes table. + :vartype value: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionRoutesTableSummary] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionRoutesTableSummary]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteCrossConnectionRoutesTableSummary"]] = None, + **kwargs + ): + """ + :keyword value: A list of the routes table. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionRoutesTableSummary] + """ + super(ExpressRouteCrossConnectionsRoutesTableSummaryListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ExpressRouteGateway(Resource): + """ExpressRoute gateway resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar auto_scale_configuration: Configuration for auto scaling. + :vartype auto_scale_configuration: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayPropertiesAutoScaleConfiguration + :ivar express_route_connections: List of ExpressRoute connections to the ExpressRoute gateway. + :vartype express_route_connections: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection] + :ivar provisioning_state: The provisioning state of the express route gateway resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar virtual_hub: The Virtual Hub where the ExpressRoute gateway is or will be deployed. + :vartype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.VirtualHubId + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'auto_scale_configuration': {'key': 'properties.autoScaleConfiguration', 'type': 'ExpressRouteGatewayPropertiesAutoScaleConfiguration'}, + 'express_route_connections': {'key': 'properties.expressRouteConnections', 'type': '[ExpressRouteConnection]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'virtual_hub': {'key': 'properties.virtualHub', 'type': 'VirtualHubId'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + auto_scale_configuration: Optional["ExpressRouteGatewayPropertiesAutoScaleConfiguration"] = None, + express_route_connections: Optional[List["ExpressRouteConnection"]] = None, + virtual_hub: Optional["VirtualHubId"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword auto_scale_configuration: Configuration for auto scaling. + :paramtype auto_scale_configuration: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayPropertiesAutoScaleConfiguration + :keyword express_route_connections: List of ExpressRoute connections to the ExpressRoute + gateway. + :paramtype express_route_connections: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection] + :keyword virtual_hub: The Virtual Hub where the ExpressRoute gateway is or will be deployed. + :paramtype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.VirtualHubId + """ + super(ExpressRouteGateway, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.auto_scale_configuration = auto_scale_configuration + self.express_route_connections = express_route_connections + self.provisioning_state = None + self.virtual_hub = virtual_hub + + +class ExpressRouteGatewayList(msrest.serialization.Model): + """List of ExpressRoute gateways. + + :ivar value: List of ExpressRoute gateways. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteGateway]'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteGateway"]] = None, + **kwargs + ): + """ + :keyword value: List of ExpressRoute gateways. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway] + """ + super(ExpressRouteGatewayList, self).__init__(**kwargs) + self.value = value + + +class ExpressRouteGatewayPropertiesAutoScaleConfiguration(msrest.serialization.Model): + """Configuration for auto scaling. + + :ivar bounds: Minimum and maximum number of scale units to deploy. + :vartype bounds: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds + """ + + _attribute_map = { + 'bounds': {'key': 'bounds', 'type': 'ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds'}, + } + + def __init__( + self, + *, + bounds: Optional["ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds"] = None, + **kwargs + ): + """ + :keyword bounds: Minimum and maximum number of scale units to deploy. + :paramtype bounds: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds + """ + super(ExpressRouteGatewayPropertiesAutoScaleConfiguration, self).__init__(**kwargs) + self.bounds = bounds + + +class ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds(msrest.serialization.Model): + """Minimum and maximum number of scale units to deploy. + + :ivar min: Minimum number of scale units deployed for ExpressRoute gateway. + :vartype min: int + :ivar max: Maximum number of scale units deployed for ExpressRoute gateway. + :vartype max: int + """ + + _attribute_map = { + 'min': {'key': 'min', 'type': 'int'}, + 'max': {'key': 'max', 'type': 'int'}, + } + + def __init__( + self, + *, + min: Optional[int] = None, + max: Optional[int] = None, + **kwargs + ): + """ + :keyword min: Minimum number of scale units deployed for ExpressRoute gateway. + :paramtype min: int + :keyword max: Maximum number of scale units deployed for ExpressRoute gateway. + :paramtype max: int + """ + super(ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds, self).__init__(**kwargs) + self.min = min + self.max = max + + +class ExpressRouteLink(SubResource): + """ExpressRouteLink child resource definition. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of child port resource that is unique among child port resources of the + parent. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar router_name: Name of Azure router associated with physical port. + :vartype router_name: str + :ivar interface_name: Name of Azure router interface. + :vartype interface_name: str + :ivar patch_panel_id: Mapping between physical port to patch panel port. + :vartype patch_panel_id: str + :ivar rack_id: Mapping of physical patch panel to rack. + :vartype rack_id: str + :ivar connector_type: Physical fiber port type. Possible values include: "LC", "SC". + :vartype connector_type: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkConnectorType + :ivar admin_state: Administrative state of the physical port. Possible values include: + "Enabled", "Disabled". + :vartype admin_state: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkAdminState + :ivar provisioning_state: The provisioning state of the express route link resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar mac_sec_config: MacSec configuration. + :vartype mac_sec_config: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkMacSecConfig + """ + + _validation = { + 'etag': {'readonly': True}, + 'router_name': {'readonly': True}, + 'interface_name': {'readonly': True}, + 'patch_panel_id': {'readonly': True}, + 'rack_id': {'readonly': True}, + 'connector_type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'router_name': {'key': 'properties.routerName', 'type': 'str'}, + 'interface_name': {'key': 'properties.interfaceName', 'type': 'str'}, + 'patch_panel_id': {'key': 'properties.patchPanelId', 'type': 'str'}, + 'rack_id': {'key': 'properties.rackId', 'type': 'str'}, + 'connector_type': {'key': 'properties.connectorType', 'type': 'str'}, + 'admin_state': {'key': 'properties.adminState', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'mac_sec_config': {'key': 'properties.macSecConfig', 'type': 'ExpressRouteLinkMacSecConfig'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + admin_state: Optional[Union[str, "ExpressRouteLinkAdminState"]] = None, + mac_sec_config: Optional["ExpressRouteLinkMacSecConfig"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of child port resource that is unique among child port resources of the + parent. + :paramtype name: str + :keyword admin_state: Administrative state of the physical port. Possible values include: + "Enabled", "Disabled". + :paramtype admin_state: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkAdminState + :keyword mac_sec_config: MacSec configuration. + :paramtype mac_sec_config: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkMacSecConfig + """ + super(ExpressRouteLink, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.router_name = None + self.interface_name = None + self.patch_panel_id = None + self.rack_id = None + self.connector_type = None + self.admin_state = admin_state + self.provisioning_state = None + self.mac_sec_config = mac_sec_config + + +class ExpressRouteLinkListResult(msrest.serialization.Model): + """Response for ListExpressRouteLinks API service call. + + :ivar value: The list of ExpressRouteLink sub-resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteLink] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteLink]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteLink"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The list of ExpressRouteLink sub-resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteLink] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteLinkListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteLinkMacSecConfig(msrest.serialization.Model): + """ExpressRouteLink Mac Security Configuration. + + :ivar ckn_secret_identifier: Keyvault Secret Identifier URL containing Mac security CKN key. + :vartype ckn_secret_identifier: str + :ivar cak_secret_identifier: Keyvault Secret Identifier URL containing Mac security CAK key. + :vartype cak_secret_identifier: str + :ivar cipher: Mac security cipher. Possible values include: "GcmAes256", "GcmAes128", + "GcmAesXpn128", "GcmAesXpn256". + :vartype cipher: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkMacSecCipher + :ivar sci_state: Sci mode enabled/disabled. Possible values include: "Disabled", "Enabled". + :vartype sci_state: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkMacSecSciState + """ + + _attribute_map = { + 'ckn_secret_identifier': {'key': 'cknSecretIdentifier', 'type': 'str'}, + 'cak_secret_identifier': {'key': 'cakSecretIdentifier', 'type': 'str'}, + 'cipher': {'key': 'cipher', 'type': 'str'}, + 'sci_state': {'key': 'sciState', 'type': 'str'}, + } + + def __init__( + self, + *, + ckn_secret_identifier: Optional[str] = None, + cak_secret_identifier: Optional[str] = None, + cipher: Optional[Union[str, "ExpressRouteLinkMacSecCipher"]] = None, + sci_state: Optional[Union[str, "ExpressRouteLinkMacSecSciState"]] = None, + **kwargs + ): + """ + :keyword ckn_secret_identifier: Keyvault Secret Identifier URL containing Mac security CKN key. + :paramtype ckn_secret_identifier: str + :keyword cak_secret_identifier: Keyvault Secret Identifier URL containing Mac security CAK key. + :paramtype cak_secret_identifier: str + :keyword cipher: Mac security cipher. Possible values include: "GcmAes256", "GcmAes128", + "GcmAesXpn128", "GcmAesXpn256". + :paramtype cipher: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkMacSecCipher + :keyword sci_state: Sci mode enabled/disabled. Possible values include: "Disabled", "Enabled". + :paramtype sci_state: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkMacSecSciState + """ + super(ExpressRouteLinkMacSecConfig, self).__init__(**kwargs) + self.ckn_secret_identifier = ckn_secret_identifier + self.cak_secret_identifier = cak_secret_identifier + self.cipher = cipher + self.sci_state = sci_state + + +class ExpressRoutePort(Resource): + """ExpressRoutePort resource definition. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar identity: The identity of ExpressRoutePort, if configured. + :vartype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :ivar peering_location: The name of the peering location that the ExpressRoutePort is mapped to + physically. + :vartype peering_location: str + :ivar bandwidth_in_gbps: Bandwidth of procured ports in Gbps. + :vartype bandwidth_in_gbps: int + :ivar provisioned_bandwidth_in_gbps: Aggregate Gbps of associated circuit bandwidths. + :vartype provisioned_bandwidth_in_gbps: float + :ivar mtu: Maximum transmission unit of the physical port pair(s). + :vartype mtu: str + :ivar encapsulation: Encapsulation method on physical ports. Possible values include: "Dot1Q", + "QinQ". + :vartype encapsulation: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsEncapsulation + :ivar ether_type: Ether type of the physical port. + :vartype ether_type: str + :ivar allocation_date: Date of the physical port allocation to be used in Letter of + Authorization. + :vartype allocation_date: str + :ivar links: The set of physical links of the ExpressRoutePort resource. + :vartype links: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteLink] + :ivar circuits: Reference the ExpressRoute circuit(s) that are provisioned on this + ExpressRoutePort resource. + :vartype circuits: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar provisioning_state: The provisioning state of the express route port resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar resource_guid: The resource GUID property of the express route port resource. + :vartype resource_guid: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioned_bandwidth_in_gbps': {'readonly': True}, + 'mtu': {'readonly': True}, + 'ether_type': {'readonly': True}, + 'allocation_date': {'readonly': True}, + 'circuits': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'resource_guid': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'}, + 'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'}, + 'bandwidth_in_gbps': {'key': 'properties.bandwidthInGbps', 'type': 'int'}, + 'provisioned_bandwidth_in_gbps': {'key': 'properties.provisionedBandwidthInGbps', 'type': 'float'}, + 'mtu': {'key': 'properties.mtu', 'type': 'str'}, + 'encapsulation': {'key': 'properties.encapsulation', 'type': 'str'}, + 'ether_type': {'key': 'properties.etherType', 'type': 'str'}, + 'allocation_date': {'key': 'properties.allocationDate', 'type': 'str'}, + 'links': {'key': 'properties.links', 'type': '[ExpressRouteLink]'}, + 'circuits': {'key': 'properties.circuits', 'type': '[SubResource]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + identity: Optional["ManagedServiceIdentity"] = None, + peering_location: Optional[str] = None, + bandwidth_in_gbps: Optional[int] = None, + encapsulation: Optional[Union[str, "ExpressRoutePortsEncapsulation"]] = None, + links: Optional[List["ExpressRouteLink"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword identity: The identity of ExpressRoutePort, if configured. + :paramtype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :keyword peering_location: The name of the peering location that the ExpressRoutePort is mapped + to physically. + :paramtype peering_location: str + :keyword bandwidth_in_gbps: Bandwidth of procured ports in Gbps. + :paramtype bandwidth_in_gbps: int + :keyword encapsulation: Encapsulation method on physical ports. Possible values include: + "Dot1Q", "QinQ". + :paramtype encapsulation: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsEncapsulation + :keyword links: The set of physical links of the ExpressRoutePort resource. + :paramtype links: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteLink] + """ + super(ExpressRoutePort, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.identity = identity + self.peering_location = peering_location + self.bandwidth_in_gbps = bandwidth_in_gbps + self.provisioned_bandwidth_in_gbps = None + self.mtu = None + self.encapsulation = encapsulation + self.ether_type = None + self.allocation_date = None + self.links = links + self.circuits = None + self.provisioning_state = None + self.resource_guid = None + + +class ExpressRoutePortAuthorization(SubResource): + """ExpressRoutePort Authorization resource definition. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar authorization_key: The authorization key. + :vartype authorization_key: str + :ivar authorization_use_status: The authorization use status. Possible values include: + "Available", "InUse". + :vartype authorization_use_status: str or + ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorizationUseStatus + :ivar circuit_resource_uri: The reference to the ExpressRoute circuit resource using the + authorization. + :vartype circuit_resource_uri: str + :ivar provisioning_state: The provisioning state of the authorization resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'authorization_key': {'readonly': True}, + 'authorization_use_status': {'readonly': True}, + 'circuit_resource_uri': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'}, + 'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'}, + 'circuit_resource_uri': {'key': 'properties.circuitResourceUri', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + """ + super(ExpressRoutePortAuthorization, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.authorization_key = None + self.authorization_use_status = None + self.circuit_resource_uri = None + self.provisioning_state = None + + +class ExpressRoutePortAuthorizationListResult(msrest.serialization.Model): + """Response for ListExpressRoutePortAuthorizations API service call. + + :ivar value: The authorizations in an ExpressRoute Port. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRoutePortAuthorization]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRoutePortAuthorization"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The authorizations in an ExpressRoute Port. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRoutePortAuthorizationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRoutePortListResult(msrest.serialization.Model): + """Response for ListExpressRoutePorts API service call. + + :ivar value: A list of ExpressRoutePort resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRoutePort]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRoutePort"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of ExpressRoutePort resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRoutePortListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRoutePortsLocation(Resource): + """Definition of the ExpressRoutePorts peering location resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar address: Address of peering location. + :vartype address: str + :ivar contact: Contact details of peering locations. + :vartype contact: str + :ivar available_bandwidths: The inventory of available ExpressRoutePort bandwidths. + :vartype available_bandwidths: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocationBandwidths] + :ivar provisioning_state: The provisioning state of the express route port location resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'address': {'readonly': True}, + 'contact': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'address': {'key': 'properties.address', 'type': 'str'}, + 'contact': {'key': 'properties.contact', 'type': 'str'}, + 'available_bandwidths': {'key': 'properties.availableBandwidths', 'type': '[ExpressRoutePortsLocationBandwidths]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + available_bandwidths: Optional[List["ExpressRoutePortsLocationBandwidths"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword available_bandwidths: The inventory of available ExpressRoutePort bandwidths. + :paramtype available_bandwidths: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocationBandwidths] + """ + super(ExpressRoutePortsLocation, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.address = None + self.contact = None + self.available_bandwidths = available_bandwidths + self.provisioning_state = None + + +class ExpressRoutePortsLocationBandwidths(msrest.serialization.Model): + """Real-time inventory of available ExpressRoute port bandwidths. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar offer_name: Bandwidth descriptive name. + :vartype offer_name: str + :ivar value_in_gbps: Bandwidth value in Gbps. + :vartype value_in_gbps: int + """ + + _validation = { + 'offer_name': {'readonly': True}, + 'value_in_gbps': {'readonly': True}, + } + + _attribute_map = { + 'offer_name': {'key': 'offerName', 'type': 'str'}, + 'value_in_gbps': {'key': 'valueInGbps', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ExpressRoutePortsLocationBandwidths, self).__init__(**kwargs) + self.offer_name = None + self.value_in_gbps = None + + +class ExpressRoutePortsLocationListResult(msrest.serialization.Model): + """Response for ListExpressRoutePortsLocations API service call. + + :ivar value: The list of all ExpressRoutePort peering locations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocation] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRoutePortsLocation]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRoutePortsLocation"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The list of all ExpressRoutePort peering locations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocation] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRoutePortsLocationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExpressRouteProviderPort(Resource): + """ExpressRouteProviderPort resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar port_pair_descriptor: The name of the port pair. + :vartype port_pair_descriptor: str + :ivar primary_azure_port: The name of the primary port. + :vartype primary_azure_port: str + :ivar secondary_azure_port: The name of the secondary port. + :vartype secondary_azure_port: str + :ivar peering_location: The peering location of the port pair. + :vartype peering_location: str + :ivar overprovision_factor: Overprovisioning factor for the port pair. + :vartype overprovision_factor: int + :ivar port_bandwidth_in_mbps: Bandwidth of the port in Mbps. + :vartype port_bandwidth_in_mbps: int + :ivar used_bandwidth_in_mbps: Used Bandwidth of the port in Mbps. + :vartype used_bandwidth_in_mbps: int + :ivar remaining_bandwidth_in_mbps: Remaining Bandwidth of the port in Mbps. + :vartype remaining_bandwidth_in_mbps: int + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'port_pair_descriptor': {'readonly': True}, + 'primary_azure_port': {'readonly': True}, + 'secondary_azure_port': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'port_pair_descriptor': {'key': 'properties.portPairDescriptor', 'type': 'str'}, + 'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'}, + 'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'}, + 'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'}, + 'overprovision_factor': {'key': 'properties.overprovisionFactor', 'type': 'int'}, + 'port_bandwidth_in_mbps': {'key': 'properties.portBandwidthInMbps', 'type': 'int'}, + 'used_bandwidth_in_mbps': {'key': 'properties.usedBandwidthInMbps', 'type': 'int'}, + 'remaining_bandwidth_in_mbps': {'key': 'properties.remainingBandwidthInMbps', 'type': 'int'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + peering_location: Optional[str] = None, + overprovision_factor: Optional[int] = None, + port_bandwidth_in_mbps: Optional[int] = None, + used_bandwidth_in_mbps: Optional[int] = None, + remaining_bandwidth_in_mbps: Optional[int] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword peering_location: The peering location of the port pair. + :paramtype peering_location: str + :keyword overprovision_factor: Overprovisioning factor for the port pair. + :paramtype overprovision_factor: int + :keyword port_bandwidth_in_mbps: Bandwidth of the port in Mbps. + :paramtype port_bandwidth_in_mbps: int + :keyword used_bandwidth_in_mbps: Used Bandwidth of the port in Mbps. + :paramtype used_bandwidth_in_mbps: int + :keyword remaining_bandwidth_in_mbps: Remaining Bandwidth of the port in Mbps. + :paramtype remaining_bandwidth_in_mbps: int + """ + super(ExpressRouteProviderPort, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.port_pair_descriptor = None + self.primary_azure_port = None + self.secondary_azure_port = None + self.peering_location = peering_location + self.overprovision_factor = overprovision_factor + self.port_bandwidth_in_mbps = port_bandwidth_in_mbps + self.used_bandwidth_in_mbps = used_bandwidth_in_mbps + self.remaining_bandwidth_in_mbps = remaining_bandwidth_in_mbps + + +class ExpressRouteProviderPortListResult(msrest.serialization.Model): + """Response for ListExpressRouteProviderPort API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of ExpressRouteProviderPort resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteProviderPort] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteProviderPort]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteProviderPort"]] = None, + **kwargs + ): + """ + :keyword value: A list of ExpressRouteProviderPort resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteProviderPort] + """ + super(ExpressRouteProviderPortListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ExpressRouteServiceProvider(Resource): + """A ExpressRouteResourceProvider object. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar peering_locations: A list of peering locations. + :vartype peering_locations: list[str] + :ivar bandwidths_offered: A list of bandwidths offered. + :vartype bandwidths_offered: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteServiceProviderBandwidthsOffered] + :ivar provisioning_state: The provisioning state of the express route service provider + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'}, + 'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + peering_locations: Optional[List[str]] = None, + bandwidths_offered: Optional[List["ExpressRouteServiceProviderBandwidthsOffered"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword peering_locations: A list of peering locations. + :paramtype peering_locations: list[str] + :keyword bandwidths_offered: A list of bandwidths offered. + :paramtype bandwidths_offered: + list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteServiceProviderBandwidthsOffered] + """ + super(ExpressRouteServiceProvider, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.peering_locations = peering_locations + self.bandwidths_offered = bandwidths_offered + self.provisioning_state = None + + +class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model): + """Contains bandwidths offered in ExpressRouteServiceProvider resources. + + :ivar offer_name: The OfferName. + :vartype offer_name: str + :ivar value_in_mbps: The ValueInMbps. + :vartype value_in_mbps: int + """ + + _attribute_map = { + 'offer_name': {'key': 'offerName', 'type': 'str'}, + 'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'}, + } + + def __init__( + self, + *, + offer_name: Optional[str] = None, + value_in_mbps: Optional[int] = None, + **kwargs + ): + """ + :keyword offer_name: The OfferName. + :paramtype offer_name: str + :keyword value_in_mbps: The ValueInMbps. + :paramtype value_in_mbps: int + """ + super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs) + self.offer_name = offer_name + self.value_in_mbps = value_in_mbps + + +class ExpressRouteServiceProviderListResult(msrest.serialization.Model): + """Response for the ListExpressRouteServiceProvider API service call. + + :ivar value: A list of ExpressRouteResourceProvider resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteServiceProvider] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ExpressRouteServiceProvider"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of ExpressRouteResourceProvider resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteServiceProvider] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ExtendedLocation(msrest.serialization.Model): + """ExtendedLocation complex type. + + :ivar name: The name of the extended location. + :vartype name: str + :ivar type: The type of the extended location. Possible values include: "EdgeZone". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.ExtendedLocationTypes + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + type: Optional[Union[str, "ExtendedLocationTypes"]] = None, + **kwargs + ): + """ + :keyword name: The name of the extended location. + :paramtype name: str + :keyword type: The type of the extended location. Possible values include: "EdgeZone". + :paramtype type: str or ~azure.mgmt.network.v2022_01_01.models.ExtendedLocationTypes + """ + super(ExtendedLocation, self).__init__(**kwargs) + self.name = name + self.type = type + + +class FilterItems(msrest.serialization.Model): + """Will contain the filter name and values to operate on. + + :ivar field: The name of the field we would like to filter. + :vartype field: str + :ivar values: List of values to filter the current field by. + :vartype values: list[str] + """ + + _attribute_map = { + 'field': {'key': 'field', 'type': 'str'}, + 'values': {'key': 'values', 'type': '[str]'}, + } + + def __init__( + self, + *, + field: Optional[str] = None, + values: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword field: The name of the field we would like to filter. + :paramtype field: str + :keyword values: List of values to filter the current field by. + :paramtype values: list[str] + """ + super(FilterItems, self).__init__(**kwargs) + self.field = field + self.values = values + + +class FirewallPolicy(Resource): + """FirewallPolicy Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar identity: The identity of the firewall policy. + :vartype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :ivar rule_collection_groups: List of references to FirewallPolicyRuleCollectionGroups. + :vartype rule_collection_groups: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar provisioning_state: The provisioning state of the firewall policy resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar base_policy: The parent firewall policy from which rules are inherited. + :vartype base_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar firewalls: List of references to Azure Firewalls that this Firewall Policy is associated + with. + :vartype firewalls: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar child_policies: List of references to Child Firewall Policies. + :vartype child_policies: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar threat_intel_mode: The operation mode for Threat Intelligence. Possible values include: + "Alert", "Deny", "Off". + :vartype threat_intel_mode: str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallThreatIntelMode + :ivar threat_intel_whitelist: ThreatIntel Whitelist for Firewall Policy. + :vartype threat_intel_whitelist: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyThreatIntelWhitelist + :ivar insights: Insights on Firewall Policy. + :vartype insights: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyInsights + :ivar snat: The private IP addresses/IP ranges to which traffic will not be SNAT. + :vartype snat: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySNAT + :ivar sql: SQL Settings definition. + :vartype sql: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySQL + :ivar dns_settings: DNS Proxy Settings definition. + :vartype dns_settings: ~azure.mgmt.network.v2022_01_01.models.DnsSettings + :ivar explicit_proxy_settings: Explicit Proxy Settings definition. + :vartype explicit_proxy_settings: ~azure.mgmt.network.v2022_01_01.models.ExplicitProxySettings + :ivar intrusion_detection: The configuration for Intrusion detection. + :vartype intrusion_detection: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetection + :ivar transport_security: TLS Configuration definition. + :vartype transport_security: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyTransportSecurity + :ivar sku: The Firewall Policy SKU. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySku + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'rule_collection_groups': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'firewalls': {'readonly': True}, + 'child_policies': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'}, + 'rule_collection_groups': {'key': 'properties.ruleCollectionGroups', 'type': '[SubResource]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'base_policy': {'key': 'properties.basePolicy', 'type': 'SubResource'}, + 'firewalls': {'key': 'properties.firewalls', 'type': '[SubResource]'}, + 'child_policies': {'key': 'properties.childPolicies', 'type': '[SubResource]'}, + 'threat_intel_mode': {'key': 'properties.threatIntelMode', 'type': 'str'}, + 'threat_intel_whitelist': {'key': 'properties.threatIntelWhitelist', 'type': 'FirewallPolicyThreatIntelWhitelist'}, + 'insights': {'key': 'properties.insights', 'type': 'FirewallPolicyInsights'}, + 'snat': {'key': 'properties.snat', 'type': 'FirewallPolicySNAT'}, + 'sql': {'key': 'properties.sql', 'type': 'FirewallPolicySQL'}, + 'dns_settings': {'key': 'properties.dnsSettings', 'type': 'DnsSettings'}, + 'explicit_proxy_settings': {'key': 'properties.explicitProxySettings', 'type': 'ExplicitProxySettings'}, + 'intrusion_detection': {'key': 'properties.intrusionDetection', 'type': 'FirewallPolicyIntrusionDetection'}, + 'transport_security': {'key': 'properties.transportSecurity', 'type': 'FirewallPolicyTransportSecurity'}, + 'sku': {'key': 'properties.sku', 'type': 'FirewallPolicySku'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + identity: Optional["ManagedServiceIdentity"] = None, + base_policy: Optional["SubResource"] = None, + threat_intel_mode: Optional[Union[str, "AzureFirewallThreatIntelMode"]] = None, + threat_intel_whitelist: Optional["FirewallPolicyThreatIntelWhitelist"] = None, + insights: Optional["FirewallPolicyInsights"] = None, + snat: Optional["FirewallPolicySNAT"] = None, + sql: Optional["FirewallPolicySQL"] = None, + dns_settings: Optional["DnsSettings"] = None, + explicit_proxy_settings: Optional["ExplicitProxySettings"] = None, + intrusion_detection: Optional["FirewallPolicyIntrusionDetection"] = None, + transport_security: Optional["FirewallPolicyTransportSecurity"] = None, + sku: Optional["FirewallPolicySku"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword identity: The identity of the firewall policy. + :paramtype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :keyword base_policy: The parent firewall policy from which rules are inherited. + :paramtype base_policy: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword threat_intel_mode: The operation mode for Threat Intelligence. Possible values + include: "Alert", "Deny", "Off". + :paramtype threat_intel_mode: str or + ~azure.mgmt.network.v2022_01_01.models.AzureFirewallThreatIntelMode + :keyword threat_intel_whitelist: ThreatIntel Whitelist for Firewall Policy. + :paramtype threat_intel_whitelist: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyThreatIntelWhitelist + :keyword insights: Insights on Firewall Policy. + :paramtype insights: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyInsights + :keyword snat: The private IP addresses/IP ranges to which traffic will not be SNAT. + :paramtype snat: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySNAT + :keyword sql: SQL Settings definition. + :paramtype sql: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySQL + :keyword dns_settings: DNS Proxy Settings definition. + :paramtype dns_settings: ~azure.mgmt.network.v2022_01_01.models.DnsSettings + :keyword explicit_proxy_settings: Explicit Proxy Settings definition. + :paramtype explicit_proxy_settings: + ~azure.mgmt.network.v2022_01_01.models.ExplicitProxySettings + :keyword intrusion_detection: The configuration for Intrusion detection. + :paramtype intrusion_detection: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetection + :keyword transport_security: TLS Configuration definition. + :paramtype transport_security: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyTransportSecurity + :keyword sku: The Firewall Policy SKU. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySku + """ + super(FirewallPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.identity = identity + self.rule_collection_groups = None + self.provisioning_state = None + self.base_policy = base_policy + self.firewalls = None + self.child_policies = None + self.threat_intel_mode = threat_intel_mode + self.threat_intel_whitelist = threat_intel_whitelist + self.insights = insights + self.snat = snat + self.sql = sql + self.dns_settings = dns_settings + self.explicit_proxy_settings = explicit_proxy_settings + self.intrusion_detection = intrusion_detection + self.transport_security = transport_security + self.sku = sku + + +class FirewallPolicyCertificateAuthority(msrest.serialization.Model): + """Trusted Root certificates properties for tls. + + :ivar key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or + 'Certificate' object stored in KeyVault. + :vartype key_vault_secret_id: str + :ivar name: Name of the CA certificate. + :vartype name: str + """ + + _attribute_map = { + 'key_vault_secret_id': {'key': 'keyVaultSecretId', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + } + + def __init__( + self, + *, + key_vault_secret_id: Optional[str] = None, + name: Optional[str] = None, + **kwargs + ): + """ + :keyword key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or + 'Certificate' object stored in KeyVault. + :paramtype key_vault_secret_id: str + :keyword name: Name of the CA certificate. + :paramtype name: str + """ + super(FirewallPolicyCertificateAuthority, self).__init__(**kwargs) + self.key_vault_secret_id = key_vault_secret_id + self.name = name + + +class FirewallPolicyRuleCollection(msrest.serialization.Model): + """Properties of the rule collection. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: FirewallPolicyFilterRuleCollection, FirewallPolicyNatRuleCollection. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_collection_type: Required. The type of the rule collection.Constant filled by + server. Possible values include: "FirewallPolicyNatRuleCollection", + "FirewallPolicyFilterRuleCollection". + :vartype rule_collection_type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionType + :ivar name: The name of the rule collection. + :vartype name: str + :ivar priority: Priority of the Firewall Policy Rule Collection resource. + :vartype priority: int + """ + + _validation = { + 'rule_collection_type': {'required': True}, + 'priority': {'maximum': 65000, 'minimum': 100}, + } + + _attribute_map = { + 'rule_collection_type': {'key': 'ruleCollectionType', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'priority': {'key': 'priority', 'type': 'int'}, + } + + _subtype_map = { + 'rule_collection_type': {'FirewallPolicyFilterRuleCollection': 'FirewallPolicyFilterRuleCollection', 'FirewallPolicyNatRuleCollection': 'FirewallPolicyNatRuleCollection'} + } + + def __init__( + self, + *, + name: Optional[str] = None, + priority: Optional[int] = None, + **kwargs + ): + """ + :keyword name: The name of the rule collection. + :paramtype name: str + :keyword priority: Priority of the Firewall Policy Rule Collection resource. + :paramtype priority: int + """ + super(FirewallPolicyRuleCollection, self).__init__(**kwargs) + self.rule_collection_type = None # type: Optional[str] + self.name = name + self.priority = priority + + +class FirewallPolicyFilterRuleCollection(FirewallPolicyRuleCollection): + """Firewall Policy Filter Rule Collection. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_collection_type: Required. The type of the rule collection.Constant filled by + server. Possible values include: "FirewallPolicyNatRuleCollection", + "FirewallPolicyFilterRuleCollection". + :vartype rule_collection_type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionType + :ivar name: The name of the rule collection. + :vartype name: str + :ivar priority: Priority of the Firewall Policy Rule Collection resource. + :vartype priority: int + :ivar action: The action type of a Filter rule collection. + :vartype action: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyFilterRuleCollectionAction + :ivar rules: List of rules included in a rule collection. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRule] + """ + + _validation = { + 'rule_collection_type': {'required': True}, + 'priority': {'maximum': 65000, 'minimum': 100}, + } + + _attribute_map = { + 'rule_collection_type': {'key': 'ruleCollectionType', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'priority': {'key': 'priority', 'type': 'int'}, + 'action': {'key': 'action', 'type': 'FirewallPolicyFilterRuleCollectionAction'}, + 'rules': {'key': 'rules', 'type': '[FirewallPolicyRule]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + priority: Optional[int] = None, + action: Optional["FirewallPolicyFilterRuleCollectionAction"] = None, + rules: Optional[List["FirewallPolicyRule"]] = None, + **kwargs + ): + """ + :keyword name: The name of the rule collection. + :paramtype name: str + :keyword priority: Priority of the Firewall Policy Rule Collection resource. + :paramtype priority: int + :keyword action: The action type of a Filter rule collection. + :paramtype action: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyFilterRuleCollectionAction + :keyword rules: List of rules included in a rule collection. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRule] + """ + super(FirewallPolicyFilterRuleCollection, self).__init__(name=name, priority=priority, **kwargs) + self.rule_collection_type = 'FirewallPolicyFilterRuleCollection' # type: str + self.action = action + self.rules = rules + + +class FirewallPolicyFilterRuleCollectionAction(msrest.serialization.Model): + """Properties of the FirewallPolicyFilterRuleCollectionAction. + + :ivar type: The type of action. Possible values include: "Allow", "Deny". + :vartype type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyFilterRuleCollectionActionType + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "FirewallPolicyFilterRuleCollectionActionType"]] = None, + **kwargs + ): + """ + :keyword type: The type of action. Possible values include: "Allow", "Deny". + :paramtype type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyFilterRuleCollectionActionType + """ + super(FirewallPolicyFilterRuleCollectionAction, self).__init__(**kwargs) + self.type = type + + +class FirewallPolicyInsights(msrest.serialization.Model): + """Firewall Policy Insights. + + :ivar is_enabled: A flag to indicate if the insights are enabled on the policy. + :vartype is_enabled: bool + :ivar retention_days: Number of days the insights should be enabled on the policy. + :vartype retention_days: int + :ivar log_analytics_resources: Workspaces needed to configure the Firewall Policy Insights. + :vartype log_analytics_resources: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyLogAnalyticsResources + """ + + _attribute_map = { + 'is_enabled': {'key': 'isEnabled', 'type': 'bool'}, + 'retention_days': {'key': 'retentionDays', 'type': 'int'}, + 'log_analytics_resources': {'key': 'logAnalyticsResources', 'type': 'FirewallPolicyLogAnalyticsResources'}, + } + + def __init__( + self, + *, + is_enabled: Optional[bool] = None, + retention_days: Optional[int] = None, + log_analytics_resources: Optional["FirewallPolicyLogAnalyticsResources"] = None, + **kwargs + ): + """ + :keyword is_enabled: A flag to indicate if the insights are enabled on the policy. + :paramtype is_enabled: bool + :keyword retention_days: Number of days the insights should be enabled on the policy. + :paramtype retention_days: int + :keyword log_analytics_resources: Workspaces needed to configure the Firewall Policy Insights. + :paramtype log_analytics_resources: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyLogAnalyticsResources + """ + super(FirewallPolicyInsights, self).__init__(**kwargs) + self.is_enabled = is_enabled + self.retention_days = retention_days + self.log_analytics_resources = log_analytics_resources + + +class FirewallPolicyIntrusionDetection(msrest.serialization.Model): + """Configuration for intrusion detection mode and rules. + + :ivar mode: Intrusion detection general state. Possible values include: "Off", "Alert", "Deny". + :vartype mode: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionStateType + :ivar configuration: Intrusion detection configuration properties. + :vartype configuration: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionConfiguration + """ + + _attribute_map = { + 'mode': {'key': 'mode', 'type': 'str'}, + 'configuration': {'key': 'configuration', 'type': 'FirewallPolicyIntrusionDetectionConfiguration'}, + } + + def __init__( + self, + *, + mode: Optional[Union[str, "FirewallPolicyIntrusionDetectionStateType"]] = None, + configuration: Optional["FirewallPolicyIntrusionDetectionConfiguration"] = None, + **kwargs + ): + """ + :keyword mode: Intrusion detection general state. Possible values include: "Off", "Alert", + "Deny". + :paramtype mode: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionStateType + :keyword configuration: Intrusion detection configuration properties. + :paramtype configuration: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionConfiguration + """ + super(FirewallPolicyIntrusionDetection, self).__init__(**kwargs) + self.mode = mode + self.configuration = configuration + + +class FirewallPolicyIntrusionDetectionBypassTrafficSpecifications(msrest.serialization.Model): + """Intrusion detection bypass traffic specification. + + :ivar name: Name of the bypass traffic rule. + :vartype name: str + :ivar description: Description of the bypass traffic rule. + :vartype description: str + :ivar protocol: The rule bypass protocol. Possible values include: "TCP", "UDP", "ICMP", "ANY". + :vartype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionProtocol + :ivar source_addresses: List of source IP addresses or ranges for this rule. + :vartype source_addresses: list[str] + :ivar destination_addresses: List of destination IP addresses or ranges for this rule. + :vartype destination_addresses: list[str] + :ivar destination_ports: List of destination ports or ranges. + :vartype destination_ports: list[str] + :ivar source_ip_groups: List of source IpGroups for this rule. + :vartype source_ip_groups: list[str] + :ivar destination_ip_groups: List of destination IpGroups for this rule. + :vartype destination_ip_groups: list[str] + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'}, + 'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'}, + 'destination_ports': {'key': 'destinationPorts', 'type': '[str]'}, + 'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'}, + 'destination_ip_groups': {'key': 'destinationIpGroups', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + protocol: Optional[Union[str, "FirewallPolicyIntrusionDetectionProtocol"]] = None, + source_addresses: Optional[List[str]] = None, + destination_addresses: Optional[List[str]] = None, + destination_ports: Optional[List[str]] = None, + source_ip_groups: Optional[List[str]] = None, + destination_ip_groups: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword name: Name of the bypass traffic rule. + :paramtype name: str + :keyword description: Description of the bypass traffic rule. + :paramtype description: str + :keyword protocol: The rule bypass protocol. Possible values include: "TCP", "UDP", "ICMP", + "ANY". + :paramtype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionProtocol + :keyword source_addresses: List of source IP addresses or ranges for this rule. + :paramtype source_addresses: list[str] + :keyword destination_addresses: List of destination IP addresses or ranges for this rule. + :paramtype destination_addresses: list[str] + :keyword destination_ports: List of destination ports or ranges. + :paramtype destination_ports: list[str] + :keyword source_ip_groups: List of source IpGroups for this rule. + :paramtype source_ip_groups: list[str] + :keyword destination_ip_groups: List of destination IpGroups for this rule. + :paramtype destination_ip_groups: list[str] + """ + super(FirewallPolicyIntrusionDetectionBypassTrafficSpecifications, self).__init__(**kwargs) + self.name = name + self.description = description + self.protocol = protocol + self.source_addresses = source_addresses + self.destination_addresses = destination_addresses + self.destination_ports = destination_ports + self.source_ip_groups = source_ip_groups + self.destination_ip_groups = destination_ip_groups + + +class FirewallPolicyIntrusionDetectionConfiguration(msrest.serialization.Model): + """The operation for configuring intrusion detection. + + :ivar signature_overrides: List of specific signatures states. + :vartype signature_overrides: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionSignatureSpecification] + :ivar bypass_traffic_settings: List of rules for traffic to bypass. + :vartype bypass_traffic_settings: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionBypassTrafficSpecifications] + :ivar private_ranges: IDPS Private IP address ranges are used to identify traffic direction + (i.e. inbound, outbound, etc.). By default, only ranges defined by IANA RFC 1918 are considered + private IP addresses. To modify default ranges, specify your Private IP address ranges with + this property. + :vartype private_ranges: list[str] + """ + + _attribute_map = { + 'signature_overrides': {'key': 'signatureOverrides', 'type': '[FirewallPolicyIntrusionDetectionSignatureSpecification]'}, + 'bypass_traffic_settings': {'key': 'bypassTrafficSettings', 'type': '[FirewallPolicyIntrusionDetectionBypassTrafficSpecifications]'}, + 'private_ranges': {'key': 'privateRanges', 'type': '[str]'}, + } + + def __init__( + self, + *, + signature_overrides: Optional[List["FirewallPolicyIntrusionDetectionSignatureSpecification"]] = None, + bypass_traffic_settings: Optional[List["FirewallPolicyIntrusionDetectionBypassTrafficSpecifications"]] = None, + private_ranges: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword signature_overrides: List of specific signatures states. + :paramtype signature_overrides: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionSignatureSpecification] + :keyword bypass_traffic_settings: List of rules for traffic to bypass. + :paramtype bypass_traffic_settings: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionBypassTrafficSpecifications] + :keyword private_ranges: IDPS Private IP address ranges are used to identify traffic direction + (i.e. inbound, outbound, etc.). By default, only ranges defined by IANA RFC 1918 are considered + private IP addresses. To modify default ranges, specify your Private IP address ranges with + this property. + :paramtype private_ranges: list[str] + """ + super(FirewallPolicyIntrusionDetectionConfiguration, self).__init__(**kwargs) + self.signature_overrides = signature_overrides + self.bypass_traffic_settings = bypass_traffic_settings + self.private_ranges = private_ranges + + +class FirewallPolicyIntrusionDetectionSignatureSpecification(msrest.serialization.Model): + """Intrusion detection signatures specification states. + + :ivar id: Signature id. + :vartype id: str + :ivar mode: The signature state. Possible values include: "Off", "Alert", "Deny". + :vartype mode: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionStateType + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'mode': {'key': 'mode', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + mode: Optional[Union[str, "FirewallPolicyIntrusionDetectionStateType"]] = None, + **kwargs + ): + """ + :keyword id: Signature id. + :paramtype id: str + :keyword mode: The signature state. Possible values include: "Off", "Alert", "Deny". + :paramtype mode: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIntrusionDetectionStateType + """ + super(FirewallPolicyIntrusionDetectionSignatureSpecification, self).__init__(**kwargs) + self.id = id + self.mode = mode + + +class FirewallPolicyListResult(msrest.serialization.Model): + """Response for ListFirewallPolicies API service call. + + :ivar value: List of Firewall Policies in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicy] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[FirewallPolicy]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["FirewallPolicy"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Firewall Policies in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicy] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(FirewallPolicyListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class FirewallPolicyLogAnalyticsResources(msrest.serialization.Model): + """Log Analytics Resources for Firewall Policy Insights. + + :ivar workspaces: List of workspaces for Firewall Policy Insights. + :vartype workspaces: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyLogAnalyticsWorkspace] + :ivar default_workspace_id: The default workspace Id for Firewall Policy Insights. + :vartype default_workspace_id: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _attribute_map = { + 'workspaces': {'key': 'workspaces', 'type': '[FirewallPolicyLogAnalyticsWorkspace]'}, + 'default_workspace_id': {'key': 'defaultWorkspaceId', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + workspaces: Optional[List["FirewallPolicyLogAnalyticsWorkspace"]] = None, + default_workspace_id: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword workspaces: List of workspaces for Firewall Policy Insights. + :paramtype workspaces: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyLogAnalyticsWorkspace] + :keyword default_workspace_id: The default workspace Id for Firewall Policy Insights. + :paramtype default_workspace_id: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(FirewallPolicyLogAnalyticsResources, self).__init__(**kwargs) + self.workspaces = workspaces + self.default_workspace_id = default_workspace_id + + +class FirewallPolicyLogAnalyticsWorkspace(msrest.serialization.Model): + """Log Analytics Workspace for Firewall Policy Insights. + + :ivar region: Region to configure the Workspace. + :vartype region: str + :ivar workspace_id: The workspace Id for Firewall Policy Insights. + :vartype workspace_id: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _attribute_map = { + 'region': {'key': 'region', 'type': 'str'}, + 'workspace_id': {'key': 'workspaceId', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + region: Optional[str] = None, + workspace_id: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword region: Region to configure the Workspace. + :paramtype region: str + :keyword workspace_id: The workspace Id for Firewall Policy Insights. + :paramtype workspace_id: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(FirewallPolicyLogAnalyticsWorkspace, self).__init__(**kwargs) + self.region = region + self.workspace_id = workspace_id + + +class FirewallPolicyNatRuleCollection(FirewallPolicyRuleCollection): + """Firewall Policy NAT Rule Collection. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_collection_type: Required. The type of the rule collection.Constant filled by + server. Possible values include: "FirewallPolicyNatRuleCollection", + "FirewallPolicyFilterRuleCollection". + :vartype rule_collection_type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionType + :ivar name: The name of the rule collection. + :vartype name: str + :ivar priority: Priority of the Firewall Policy Rule Collection resource. + :vartype priority: int + :ivar action: The action type of a Nat rule collection. + :vartype action: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyNatRuleCollectionAction + :ivar rules: List of rules included in a rule collection. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRule] + """ + + _validation = { + 'rule_collection_type': {'required': True}, + 'priority': {'maximum': 65000, 'minimum': 100}, + } + + _attribute_map = { + 'rule_collection_type': {'key': 'ruleCollectionType', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'priority': {'key': 'priority', 'type': 'int'}, + 'action': {'key': 'action', 'type': 'FirewallPolicyNatRuleCollectionAction'}, + 'rules': {'key': 'rules', 'type': '[FirewallPolicyRule]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + priority: Optional[int] = None, + action: Optional["FirewallPolicyNatRuleCollectionAction"] = None, + rules: Optional[List["FirewallPolicyRule"]] = None, + **kwargs + ): + """ + :keyword name: The name of the rule collection. + :paramtype name: str + :keyword priority: Priority of the Firewall Policy Rule Collection resource. + :paramtype priority: int + :keyword action: The action type of a Nat rule collection. + :paramtype action: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyNatRuleCollectionAction + :keyword rules: List of rules included in a rule collection. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRule] + """ + super(FirewallPolicyNatRuleCollection, self).__init__(name=name, priority=priority, **kwargs) + self.rule_collection_type = 'FirewallPolicyNatRuleCollection' # type: str + self.action = action + self.rules = rules + + +class FirewallPolicyNatRuleCollectionAction(msrest.serialization.Model): + """Properties of the FirewallPolicyNatRuleCollectionAction. + + :ivar type: The type of action. Possible values include: "DNAT". + :vartype type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyNatRuleCollectionActionType + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "FirewallPolicyNatRuleCollectionActionType"]] = None, + **kwargs + ): + """ + :keyword type: The type of action. Possible values include: "DNAT". + :paramtype type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyNatRuleCollectionActionType + """ + super(FirewallPolicyNatRuleCollectionAction, self).__init__(**kwargs) + self.type = type + + +class FirewallPolicyRuleApplicationProtocol(msrest.serialization.Model): + """Properties of the application rule protocol. + + :ivar protocol_type: Protocol type. Possible values include: "Http", "Https". + :vartype protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleApplicationProtocolType + :ivar port: Port number for the protocol, cannot be greater than 64000. + :vartype port: int + """ + + _validation = { + 'port': {'maximum': 64000, 'minimum': 0}, + } + + _attribute_map = { + 'protocol_type': {'key': 'protocolType', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'int'}, + } + + def __init__( + self, + *, + protocol_type: Optional[Union[str, "FirewallPolicyRuleApplicationProtocolType"]] = None, + port: Optional[int] = None, + **kwargs + ): + """ + :keyword protocol_type: Protocol type. Possible values include: "Http", "Https". + :paramtype protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleApplicationProtocolType + :keyword port: Port number for the protocol, cannot be greater than 64000. + :paramtype port: int + """ + super(FirewallPolicyRuleApplicationProtocol, self).__init__(**kwargs) + self.protocol_type = protocol_type + self.port = port + + +class FirewallPolicyRuleCollectionGroup(SubResource): + """Rule Collection Group resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Rule Group type. + :vartype type: str + :ivar priority: Priority of the Firewall Policy Rule Collection Group resource. + :vartype priority: int + :ivar rule_collections: Group of Firewall Policy rule collections. + :vartype rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollection] + :ivar provisioning_state: The provisioning state of the firewall policy rule collection group + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'priority': {'maximum': 65000, 'minimum': 100}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'rule_collections': {'key': 'properties.ruleCollections', 'type': '[FirewallPolicyRuleCollection]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + priority: Optional[int] = None, + rule_collections: Optional[List["FirewallPolicyRuleCollection"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword priority: Priority of the Firewall Policy Rule Collection Group resource. + :paramtype priority: int + :keyword rule_collections: Group of Firewall Policy rule collections. + :paramtype rule_collections: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollection] + """ + super(FirewallPolicyRuleCollectionGroup, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.priority = priority + self.rule_collections = rule_collections + self.provisioning_state = None + + +class FirewallPolicyRuleCollectionGroupListResult(msrest.serialization.Model): + """Response for ListFirewallPolicyRuleCollectionGroups API service call. + + :ivar value: List of FirewallPolicyRuleCollectionGroups in a FirewallPolicy. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[FirewallPolicyRuleCollectionGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["FirewallPolicyRuleCollectionGroup"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of FirewallPolicyRuleCollectionGroups in a FirewallPolicy. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(FirewallPolicyRuleCollectionGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class FirewallPolicySku(msrest.serialization.Model): + """SKU of Firewall policy. + + :ivar tier: Tier of Firewall Policy. Possible values include: "Standard", "Premium", "Basic". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySkuTier + """ + + _attribute_map = { + 'tier': {'key': 'tier', 'type': 'str'}, + } + + def __init__( + self, + *, + tier: Optional[Union[str, "FirewallPolicySkuTier"]] = None, + **kwargs + ): + """ + :keyword tier: Tier of Firewall Policy. Possible values include: "Standard", "Premium", + "Basic". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicySkuTier + """ + super(FirewallPolicySku, self).__init__(**kwargs) + self.tier = tier + + +class FirewallPolicySNAT(msrest.serialization.Model): + """The private IP addresses/IP ranges to which traffic will not be SNAT. + + :ivar private_ranges: List of private IP addresses/IP address ranges to not be SNAT. + :vartype private_ranges: list[str] + :ivar auto_learn_private_ranges: The operation mode for automatically learning private ranges + to not be SNAT. Possible values include: "Enabled", "Disabled". + :vartype auto_learn_private_ranges: str or + ~azure.mgmt.network.v2022_01_01.models.AutoLearnPrivateRangesMode + """ + + _attribute_map = { + 'private_ranges': {'key': 'privateRanges', 'type': '[str]'}, + 'auto_learn_private_ranges': {'key': 'autoLearnPrivateRanges', 'type': 'str'}, + } + + def __init__( + self, + *, + private_ranges: Optional[List[str]] = None, + auto_learn_private_ranges: Optional[Union[str, "AutoLearnPrivateRangesMode"]] = None, + **kwargs + ): + """ + :keyword private_ranges: List of private IP addresses/IP address ranges to not be SNAT. + :paramtype private_ranges: list[str] + :keyword auto_learn_private_ranges: The operation mode for automatically learning private + ranges to not be SNAT. Possible values include: "Enabled", "Disabled". + :paramtype auto_learn_private_ranges: str or + ~azure.mgmt.network.v2022_01_01.models.AutoLearnPrivateRangesMode + """ + super(FirewallPolicySNAT, self).__init__(**kwargs) + self.private_ranges = private_ranges + self.auto_learn_private_ranges = auto_learn_private_ranges + + +class FirewallPolicySQL(msrest.serialization.Model): + """SQL Settings in Firewall Policy. + + :ivar allow_sql_redirect: A flag to indicate if SQL Redirect traffic filtering is enabled. + Turning on the flag requires no rule using port 11000-11999. + :vartype allow_sql_redirect: bool + """ + + _attribute_map = { + 'allow_sql_redirect': {'key': 'allowSqlRedirect', 'type': 'bool'}, + } + + def __init__( + self, + *, + allow_sql_redirect: Optional[bool] = None, + **kwargs + ): + """ + :keyword allow_sql_redirect: A flag to indicate if SQL Redirect traffic filtering is enabled. + Turning on the flag requires no rule using port 11000-11999. + :paramtype allow_sql_redirect: bool + """ + super(FirewallPolicySQL, self).__init__(**kwargs) + self.allow_sql_redirect = allow_sql_redirect + + +class FirewallPolicyThreatIntelWhitelist(msrest.serialization.Model): + """ThreatIntel Whitelist for Firewall Policy. + + :ivar ip_addresses: List of IP addresses for the ThreatIntel Whitelist. + :vartype ip_addresses: list[str] + :ivar fqdns: List of FQDNs for the ThreatIntel Whitelist. + :vartype fqdns: list[str] + """ + + _attribute_map = { + 'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'}, + 'fqdns': {'key': 'fqdns', 'type': '[str]'}, + } + + def __init__( + self, + *, + ip_addresses: Optional[List[str]] = None, + fqdns: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword ip_addresses: List of IP addresses for the ThreatIntel Whitelist. + :paramtype ip_addresses: list[str] + :keyword fqdns: List of FQDNs for the ThreatIntel Whitelist. + :paramtype fqdns: list[str] + """ + super(FirewallPolicyThreatIntelWhitelist, self).__init__(**kwargs) + self.ip_addresses = ip_addresses + self.fqdns = fqdns + + +class FirewallPolicyTransportSecurity(msrest.serialization.Model): + """Configuration needed to perform TLS termination & initiation. + + :ivar certificate_authority: The CA used for intermediate CA generation. + :vartype certificate_authority: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyCertificateAuthority + """ + + _attribute_map = { + 'certificate_authority': {'key': 'certificateAuthority', 'type': 'FirewallPolicyCertificateAuthority'}, + } + + def __init__( + self, + *, + certificate_authority: Optional["FirewallPolicyCertificateAuthority"] = None, + **kwargs + ): + """ + :keyword certificate_authority: The CA used for intermediate CA generation. + :paramtype certificate_authority: + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyCertificateAuthority + """ + super(FirewallPolicyTransportSecurity, self).__init__(**kwargs) + self.certificate_authority = certificate_authority + + +class FlowLog(Resource): + """A flow log resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar target_resource_id: ID of network security group to which flow log will be applied. + :vartype target_resource_id: str + :ivar target_resource_guid: Guid of network security group to which flow log will be applied. + :vartype target_resource_guid: str + :ivar storage_id: ID of the storage account which is used to store the flow log. + :vartype storage_id: str + :ivar enabled: Flag to enable/disable flow logging. + :vartype enabled: bool + :ivar retention_policy: Parameters that define the retention policy for flow log. + :vartype retention_policy: ~azure.mgmt.network.v2022_01_01.models.RetentionPolicyParameters + :ivar format: Parameters that define the flow log format. + :vartype format: ~azure.mgmt.network.v2022_01_01.models.FlowLogFormatParameters + :ivar flow_analytics_configuration: Parameters that define the configuration of traffic + analytics. + :vartype flow_analytics_configuration: + ~azure.mgmt.network.v2022_01_01.models.TrafficAnalyticsProperties + :ivar provisioning_state: The provisioning state of the flow log. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'target_resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'target_resource_id': {'key': 'properties.targetResourceId', 'type': 'str'}, + 'target_resource_guid': {'key': 'properties.targetResourceGuid', 'type': 'str'}, + 'storage_id': {'key': 'properties.storageId', 'type': 'str'}, + 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, + 'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'}, + 'format': {'key': 'properties.format', 'type': 'FlowLogFormatParameters'}, + 'flow_analytics_configuration': {'key': 'properties.flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + target_resource_id: Optional[str] = None, + storage_id: Optional[str] = None, + enabled: Optional[bool] = None, + retention_policy: Optional["RetentionPolicyParameters"] = None, + format: Optional["FlowLogFormatParameters"] = None, + flow_analytics_configuration: Optional["TrafficAnalyticsProperties"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword target_resource_id: ID of network security group to which flow log will be applied. + :paramtype target_resource_id: str + :keyword storage_id: ID of the storage account which is used to store the flow log. + :paramtype storage_id: str + :keyword enabled: Flag to enable/disable flow logging. + :paramtype enabled: bool + :keyword retention_policy: Parameters that define the retention policy for flow log. + :paramtype retention_policy: ~azure.mgmt.network.v2022_01_01.models.RetentionPolicyParameters + :keyword format: Parameters that define the flow log format. + :paramtype format: ~azure.mgmt.network.v2022_01_01.models.FlowLogFormatParameters + :keyword flow_analytics_configuration: Parameters that define the configuration of traffic + analytics. + :paramtype flow_analytics_configuration: + ~azure.mgmt.network.v2022_01_01.models.TrafficAnalyticsProperties + """ + super(FlowLog, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.target_resource_id = target_resource_id + self.target_resource_guid = None + self.storage_id = storage_id + self.enabled = enabled + self.retention_policy = retention_policy + self.format = format + self.flow_analytics_configuration = flow_analytics_configuration + self.provisioning_state = None + + +class FlowLogFormatParameters(msrest.serialization.Model): + """Parameters that define the flow log format. + + :ivar type: The file type of flow log. Possible values include: "JSON". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.FlowLogFormatType + :ivar version: The version (revision) of the flow log. + :vartype version: int + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'}, + 'version': {'key': 'version', 'type': 'int'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "FlowLogFormatType"]] = None, + version: Optional[int] = 0, + **kwargs + ): + """ + :keyword type: The file type of flow log. Possible values include: "JSON". + :paramtype type: str or ~azure.mgmt.network.v2022_01_01.models.FlowLogFormatType + :keyword version: The version (revision) of the flow log. + :paramtype version: int + """ + super(FlowLogFormatParameters, self).__init__(**kwargs) + self.type = type + self.version = version + + +class FlowLogInformation(msrest.serialization.Model): + """Information on the configuration of flow log and traffic analytics (optional) . + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. The ID of the resource to configure for flow log and + traffic analytics (optional) . + :vartype target_resource_id: str + :ivar flow_analytics_configuration: Parameters that define the configuration of traffic + analytics. + :vartype flow_analytics_configuration: + ~azure.mgmt.network.v2022_01_01.models.TrafficAnalyticsProperties + :ivar storage_id: Required. ID of the storage account which is used to store the flow log. + :vartype storage_id: str + :ivar enabled: Required. Flag to enable/disable flow logging. + :vartype enabled: bool + :ivar retention_policy: Parameters that define the retention policy for flow log. + :vartype retention_policy: ~azure.mgmt.network.v2022_01_01.models.RetentionPolicyParameters + :ivar format: Parameters that define the flow log format. + :vartype format: ~azure.mgmt.network.v2022_01_01.models.FlowLogFormatParameters + """ + + _validation = { + 'target_resource_id': {'required': True}, + 'storage_id': {'required': True}, + 'enabled': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + 'flow_analytics_configuration': {'key': 'flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'}, + 'storage_id': {'key': 'properties.storageId', 'type': 'str'}, + 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, + 'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'}, + 'format': {'key': 'properties.format', 'type': 'FlowLogFormatParameters'}, + } + + def __init__( + self, + *, + target_resource_id: str, + storage_id: str, + enabled: bool, + flow_analytics_configuration: Optional["TrafficAnalyticsProperties"] = None, + retention_policy: Optional["RetentionPolicyParameters"] = None, + format: Optional["FlowLogFormatParameters"] = None, + **kwargs + ): + """ + :keyword target_resource_id: Required. The ID of the resource to configure for flow log and + traffic analytics (optional) . + :paramtype target_resource_id: str + :keyword flow_analytics_configuration: Parameters that define the configuration of traffic + analytics. + :paramtype flow_analytics_configuration: + ~azure.mgmt.network.v2022_01_01.models.TrafficAnalyticsProperties + :keyword storage_id: Required. ID of the storage account which is used to store the flow log. + :paramtype storage_id: str + :keyword enabled: Required. Flag to enable/disable flow logging. + :paramtype enabled: bool + :keyword retention_policy: Parameters that define the retention policy for flow log. + :paramtype retention_policy: ~azure.mgmt.network.v2022_01_01.models.RetentionPolicyParameters + :keyword format: Parameters that define the flow log format. + :paramtype format: ~azure.mgmt.network.v2022_01_01.models.FlowLogFormatParameters + """ + super(FlowLogInformation, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + self.flow_analytics_configuration = flow_analytics_configuration + self.storage_id = storage_id + self.enabled = enabled + self.retention_policy = retention_policy + self.format = format + + +class FlowLogListResult(msrest.serialization.Model): + """List of flow logs. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Information about flow log resource. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.FlowLog] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[FlowLog]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["FlowLog"]] = None, + **kwargs + ): + """ + :keyword value: Information about flow log resource. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.FlowLog] + """ + super(FlowLogListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class FlowLogStatusParameters(msrest.serialization.Model): + """Parameters that define a resource to query flow log and traffic analytics (optional) status. + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. The target resource where getting the flow log and traffic + analytics (optional) status. + :vartype target_resource_id: str + """ + + _validation = { + 'target_resource_id': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + } + + def __init__( + self, + *, + target_resource_id: str, + **kwargs + ): + """ + :keyword target_resource_id: Required. The target resource where getting the flow log and + traffic analytics (optional) status. + :paramtype target_resource_id: str + """ + super(FlowLogStatusParameters, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + + +class FrontendIPConfiguration(SubResource): + """Frontend IP address of the load balancer. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the set of frontend IP + configurations used by the load balancer. This name can be used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar zones: A list of availability zones denoting the IP allocated for the resource needs to + come from. + :vartype zones: list[str] + :ivar inbound_nat_rules: An array of references to inbound rules that use this frontend IP. + :vartype inbound_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar inbound_nat_pools: An array of references to inbound pools that use this frontend IP. + :vartype inbound_nat_pools: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar outbound_rules: An array of references to outbound rules that use this frontend IP. + :vartype outbound_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar load_balancing_rules: An array of references to load balancing rules that use this + frontend IP. + :vartype load_balancing_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar private_ip_address: The private IP address of the IP configuration. + :vartype private_ip_address: str + :ivar private_ip_allocation_method: The Private IP allocation method. Possible values include: + "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar private_ip_address_version: Whether the specific ipconfiguration is IPv4 or IPv6. Default + is taken as IPv4. Possible values include: "IPv4", "IPv6". + :vartype private_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :ivar subnet: The reference to the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :ivar public_ip_address: The reference to the Public IP resource. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :ivar public_ip_prefix: The reference to the Public IP Prefix resource. + :vartype public_ip_prefix: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar gateway_load_balancer: The reference to gateway load balancer frontend IP. + :vartype gateway_load_balancer: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the frontend IP configuration resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'inbound_nat_rules': {'readonly': True}, + 'inbound_nat_pools': {'readonly': True}, + 'outbound_rules': {'readonly': True}, + 'load_balancing_rules': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'zones': {'key': 'zones', 'type': '[str]'}, + 'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'}, + 'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'}, + 'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'}, + 'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'Subnet'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'}, + 'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'}, + 'gateway_load_balancer': {'key': 'properties.gatewayLoadBalancer', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + zones: Optional[List[str]] = None, + private_ip_address: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + private_ip_address_version: Optional[Union[str, "IPVersion"]] = None, + subnet: Optional["Subnet"] = None, + public_ip_address: Optional["PublicIPAddress"] = None, + public_ip_prefix: Optional["SubResource"] = None, + gateway_load_balancer: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the set of frontend IP + configurations used by the load balancer. This name can be used to access the resource. + :paramtype name: str + :keyword zones: A list of availability zones denoting the IP allocated for the resource needs + to come from. + :paramtype zones: list[str] + :keyword private_ip_address: The private IP address of the IP configuration. + :paramtype private_ip_address: str + :keyword private_ip_allocation_method: The Private IP allocation method. Possible values + include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword private_ip_address_version: Whether the specific ipconfiguration is IPv4 or IPv6. + Default is taken as IPv4. Possible values include: "IPv4", "IPv6". + :paramtype private_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :keyword subnet: The reference to the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword public_ip_address: The reference to the Public IP resource. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :keyword public_ip_prefix: The reference to the Public IP Prefix resource. + :paramtype public_ip_prefix: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword gateway_load_balancer: The reference to gateway load balancer frontend IP. + :paramtype gateway_load_balancer: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(FrontendIPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.zones = zones + self.inbound_nat_rules = None + self.inbound_nat_pools = None + self.outbound_rules = None + self.load_balancing_rules = None + self.private_ip_address = private_ip_address + self.private_ip_allocation_method = private_ip_allocation_method + self.private_ip_address_version = private_ip_address_version + self.subnet = subnet + self.public_ip_address = public_ip_address + self.public_ip_prefix = public_ip_prefix + self.gateway_load_balancer = gateway_load_balancer + self.provisioning_state = None + + +class GatewayCustomBgpIpAddressIpConfiguration(msrest.serialization.Model): + """GatewayCustomBgpIpAddressIpConfiguration for a virtual network gateway connection. + + All required parameters must be populated in order to send to Azure. + + :ivar ip_configuration_id: Required. The IpconfigurationId of ipconfiguration which belongs to + gateway. + :vartype ip_configuration_id: str + :ivar custom_bgp_ip_address: Required. The custom BgpPeeringAddress which belongs to + IpconfigurationId. + :vartype custom_bgp_ip_address: str + """ + + _validation = { + 'ip_configuration_id': {'required': True}, + 'custom_bgp_ip_address': {'required': True}, + } + + _attribute_map = { + 'ip_configuration_id': {'key': 'ipConfigurationId', 'type': 'str'}, + 'custom_bgp_ip_address': {'key': 'customBgpIpAddress', 'type': 'str'}, + } + + def __init__( + self, + *, + ip_configuration_id: str, + custom_bgp_ip_address: str, + **kwargs + ): + """ + :keyword ip_configuration_id: Required. The IpconfigurationId of ipconfiguration which belongs + to gateway. + :paramtype ip_configuration_id: str + :keyword custom_bgp_ip_address: Required. The custom BgpPeeringAddress which belongs to + IpconfigurationId. + :paramtype custom_bgp_ip_address: str + """ + super(GatewayCustomBgpIpAddressIpConfiguration, self).__init__(**kwargs) + self.ip_configuration_id = ip_configuration_id + self.custom_bgp_ip_address = custom_bgp_ip_address + + +class GatewayLoadBalancerTunnelInterface(msrest.serialization.Model): + """Gateway load balancer tunnel interface of a load balancer backend address pool. + + :ivar port: Port of gateway load balancer tunnel interface. + :vartype port: int + :ivar identifier: Identifier of gateway load balancer tunnel interface. + :vartype identifier: int + :ivar protocol: Protocol of gateway load balancer tunnel interface. Possible values include: + "None", "Native", "VXLAN". + :vartype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.GatewayLoadBalancerTunnelProtocol + :ivar type: Traffic type of gateway load balancer tunnel interface. Possible values include: + "None", "Internal", "External". + :vartype type: str or + ~azure.mgmt.network.v2022_01_01.models.GatewayLoadBalancerTunnelInterfaceType + """ + + _attribute_map = { + 'port': {'key': 'port', 'type': 'int'}, + 'identifier': {'key': 'identifier', 'type': 'int'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + port: Optional[int] = None, + identifier: Optional[int] = None, + protocol: Optional[Union[str, "GatewayLoadBalancerTunnelProtocol"]] = None, + type: Optional[Union[str, "GatewayLoadBalancerTunnelInterfaceType"]] = None, + **kwargs + ): + """ + :keyword port: Port of gateway load balancer tunnel interface. + :paramtype port: int + :keyword identifier: Identifier of gateway load balancer tunnel interface. + :paramtype identifier: int + :keyword protocol: Protocol of gateway load balancer tunnel interface. Possible values include: + "None", "Native", "VXLAN". + :paramtype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.GatewayLoadBalancerTunnelProtocol + :keyword type: Traffic type of gateway load balancer tunnel interface. Possible values include: + "None", "Internal", "External". + :paramtype type: str or + ~azure.mgmt.network.v2022_01_01.models.GatewayLoadBalancerTunnelInterfaceType + """ + super(GatewayLoadBalancerTunnelInterface, self).__init__(**kwargs) + self.port = port + self.identifier = identifier + self.protocol = protocol + self.type = type + + +class GatewayRoute(msrest.serialization.Model): + """Gateway routing details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar local_address: The gateway's local address. + :vartype local_address: str + :ivar network: The route's network prefix. + :vartype network: str + :ivar next_hop: The route's next hop. + :vartype next_hop: str + :ivar source_peer: The peer this route was learned from. + :vartype source_peer: str + :ivar origin: The source this route was learned from. + :vartype origin: str + :ivar as_path: The route's AS path sequence. + :vartype as_path: str + :ivar weight: The route's weight. + :vartype weight: int + """ + + _validation = { + 'local_address': {'readonly': True}, + 'network': {'readonly': True}, + 'next_hop': {'readonly': True}, + 'source_peer': {'readonly': True}, + 'origin': {'readonly': True}, + 'as_path': {'readonly': True}, + 'weight': {'readonly': True}, + } + + _attribute_map = { + 'local_address': {'key': 'localAddress', 'type': 'str'}, + 'network': {'key': 'network', 'type': 'str'}, + 'next_hop': {'key': 'nextHop', 'type': 'str'}, + 'source_peer': {'key': 'sourcePeer', 'type': 'str'}, + 'origin': {'key': 'origin', 'type': 'str'}, + 'as_path': {'key': 'asPath', 'type': 'str'}, + 'weight': {'key': 'weight', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(GatewayRoute, self).__init__(**kwargs) + self.local_address = None + self.network = None + self.next_hop = None + self.source_peer = None + self.origin = None + self.as_path = None + self.weight = None + + +class GatewayRouteListResult(msrest.serialization.Model): + """List of virtual network gateway routes. + + :ivar value: List of gateway routes. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.GatewayRoute] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[GatewayRoute]'}, + } + + def __init__( + self, + *, + value: Optional[List["GatewayRoute"]] = None, + **kwargs + ): + """ + :keyword value: List of gateway routes. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.GatewayRoute] + """ + super(GatewayRouteListResult, self).__init__(**kwargs) + self.value = value + + +class GenerateExpressRoutePortsLOARequest(msrest.serialization.Model): + """The customer name to be printed on a letter of authorization. + + All required parameters must be populated in order to send to Azure. + + :ivar customer_name: Required. The customer name. + :vartype customer_name: str + """ + + _validation = { + 'customer_name': {'required': True}, + } + + _attribute_map = { + 'customer_name': {'key': 'customerName', 'type': 'str'}, + } + + def __init__( + self, + *, + customer_name: str, + **kwargs + ): + """ + :keyword customer_name: Required. The customer name. + :paramtype customer_name: str + """ + super(GenerateExpressRoutePortsLOARequest, self).__init__(**kwargs) + self.customer_name = customer_name + + +class GenerateExpressRoutePortsLOAResult(msrest.serialization.Model): + """Response for GenerateExpressRoutePortsLOA API service call. + + :ivar encoded_content: The content as a base64 encoded string. + :vartype encoded_content: str + """ + + _attribute_map = { + 'encoded_content': {'key': 'encodedContent', 'type': 'str'}, + } + + def __init__( + self, + *, + encoded_content: Optional[str] = None, + **kwargs + ): + """ + :keyword encoded_content: The content as a base64 encoded string. + :paramtype encoded_content: str + """ + super(GenerateExpressRoutePortsLOAResult, self).__init__(**kwargs) + self.encoded_content = encoded_content + + +class GetVpnSitesConfigurationRequest(msrest.serialization.Model): + """List of Vpn-Sites. + + All required parameters must be populated in order to send to Azure. + + :ivar vpn_sites: List of resource-ids of the vpn-sites for which config is to be downloaded. + :vartype vpn_sites: list[str] + :ivar output_blob_sas_url: Required. The sas-url to download the configurations for vpn-sites. + :vartype output_blob_sas_url: str + """ + + _validation = { + 'output_blob_sas_url': {'required': True}, + } + + _attribute_map = { + 'vpn_sites': {'key': 'vpnSites', 'type': '[str]'}, + 'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'}, + } + + def __init__( + self, + *, + output_blob_sas_url: str, + vpn_sites: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword vpn_sites: List of resource-ids of the vpn-sites for which config is to be downloaded. + :paramtype vpn_sites: list[str] + :keyword output_blob_sas_url: Required. The sas-url to download the configurations for + vpn-sites. + :paramtype output_blob_sas_url: str + """ + super(GetVpnSitesConfigurationRequest, self).__init__(**kwargs) + self.vpn_sites = vpn_sites + self.output_blob_sas_url = output_blob_sas_url + + +class HopLink(msrest.serialization.Model): + """Hop link. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_hop_id: The ID of the next hop. + :vartype next_hop_id: str + :ivar link_type: Link type. + :vartype link_type: str + :ivar issues: List of issues. + :vartype issues: list[~azure.mgmt.network.v2022_01_01.models.ConnectivityIssue] + :ivar context: Provides additional context on links. + :vartype context: dict[str, str] + :ivar resource_id: Resource ID. + :vartype resource_id: str + :ivar round_trip_time_min: Minimum roundtrip time in milliseconds. + :vartype round_trip_time_min: long + :ivar round_trip_time_avg: Average roundtrip time in milliseconds. + :vartype round_trip_time_avg: long + :ivar round_trip_time_max: Maximum roundtrip time in milliseconds. + :vartype round_trip_time_max: long + """ + + _validation = { + 'next_hop_id': {'readonly': True}, + 'link_type': {'readonly': True}, + 'issues': {'readonly': True}, + 'context': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'round_trip_time_min': {'readonly': True, 'maximum': 4294967295, 'minimum': 0}, + 'round_trip_time_avg': {'readonly': True, 'maximum': 4294967295, 'minimum': 0}, + 'round_trip_time_max': {'readonly': True, 'maximum': 4294967295, 'minimum': 0}, + } + + _attribute_map = { + 'next_hop_id': {'key': 'nextHopId', 'type': 'str'}, + 'link_type': {'key': 'linkType', 'type': 'str'}, + 'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'}, + 'context': {'key': 'context', 'type': '{str}'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'round_trip_time_min': {'key': 'properties.roundTripTimeMin', 'type': 'long'}, + 'round_trip_time_avg': {'key': 'properties.roundTripTimeAvg', 'type': 'long'}, + 'round_trip_time_max': {'key': 'properties.roundTripTimeMax', 'type': 'long'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(HopLink, self).__init__(**kwargs) + self.next_hop_id = None + self.link_type = None + self.issues = None + self.context = None + self.resource_id = None + self.round_trip_time_min = None + self.round_trip_time_avg = None + self.round_trip_time_max = None + + +class HTTPConfiguration(msrest.serialization.Model): + """HTTP configuration of the connectivity check. + + :ivar method: HTTP method. Possible values include: "Get". + :vartype method: str or ~azure.mgmt.network.v2022_01_01.models.HTTPMethod + :ivar headers: List of HTTP headers. + :vartype headers: list[~azure.mgmt.network.v2022_01_01.models.HTTPHeader] + :ivar valid_status_codes: Valid status codes. + :vartype valid_status_codes: list[int] + """ + + _attribute_map = { + 'method': {'key': 'method', 'type': 'str'}, + 'headers': {'key': 'headers', 'type': '[HTTPHeader]'}, + 'valid_status_codes': {'key': 'validStatusCodes', 'type': '[int]'}, + } + + def __init__( + self, + *, + method: Optional[Union[str, "HTTPMethod"]] = None, + headers: Optional[List["HTTPHeader"]] = None, + valid_status_codes: Optional[List[int]] = None, + **kwargs + ): + """ + :keyword method: HTTP method. Possible values include: "Get". + :paramtype method: str or ~azure.mgmt.network.v2022_01_01.models.HTTPMethod + :keyword headers: List of HTTP headers. + :paramtype headers: list[~azure.mgmt.network.v2022_01_01.models.HTTPHeader] + :keyword valid_status_codes: Valid status codes. + :paramtype valid_status_codes: list[int] + """ + super(HTTPConfiguration, self).__init__(**kwargs) + self.method = method + self.headers = headers + self.valid_status_codes = valid_status_codes + + +class HTTPHeader(msrest.serialization.Model): + """The HTTP header. + + :ivar name: The name in HTTP header. + :vartype name: str + :ivar value: The value in HTTP header. + :vartype value: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + value: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name in HTTP header. + :paramtype name: str + :keyword value: The value in HTTP header. + :paramtype value: str + """ + super(HTTPHeader, self).__init__(**kwargs) + self.name = name + self.value = value + + +class Hub(msrest.serialization.Model): + """Hub Item. + + :ivar resource_id: Resource Id. + :vartype resource_id: str + :ivar resource_type: Resource Type. + :vartype resource_type: str + """ + + _attribute_map = { + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + } + + def __init__( + self, + *, + resource_id: Optional[str] = None, + resource_type: Optional[str] = None, + **kwargs + ): + """ + :keyword resource_id: Resource Id. + :paramtype resource_id: str + :keyword resource_type: Resource Type. + :paramtype resource_type: str + """ + super(Hub, self).__init__(**kwargs) + self.resource_id = resource_id + self.resource_type = resource_type + + +class HubIPAddresses(msrest.serialization.Model): + """IP addresses associated with azure firewall. + + :ivar public_i_ps: Public IP addresses associated with azure firewall. + :vartype public_i_ps: ~azure.mgmt.network.v2022_01_01.models.HubPublicIPAddresses + :ivar private_ip_address: Private IP Address associated with azure firewall. + :vartype private_ip_address: str + """ + + _attribute_map = { + 'public_i_ps': {'key': 'publicIPs', 'type': 'HubPublicIPAddresses'}, + 'private_ip_address': {'key': 'privateIPAddress', 'type': 'str'}, + } + + def __init__( + self, + *, + public_i_ps: Optional["HubPublicIPAddresses"] = None, + private_ip_address: Optional[str] = None, + **kwargs + ): + """ + :keyword public_i_ps: Public IP addresses associated with azure firewall. + :paramtype public_i_ps: ~azure.mgmt.network.v2022_01_01.models.HubPublicIPAddresses + :keyword private_ip_address: Private IP Address associated with azure firewall. + :paramtype private_ip_address: str + """ + super(HubIPAddresses, self).__init__(**kwargs) + self.public_i_ps = public_i_ps + self.private_ip_address = private_ip_address + + +class HubIpConfiguration(SubResource): + """IpConfigurations. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the Ip Configuration. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Ipconfiguration type. + :vartype type: str + :ivar private_ip_address: The private IP address of the IP configuration. + :vartype private_ip_address: str + :ivar private_ip_allocation_method: The private IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar subnet: The reference to the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :ivar public_ip_address: The reference to the public IP resource. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :ivar provisioning_state: The provisioning state of the IP configuration resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'Subnet'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_ip_address: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + subnet: Optional["Subnet"] = None, + public_ip_address: Optional["PublicIPAddress"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the Ip Configuration. + :paramtype name: str + :keyword private_ip_address: The private IP address of the IP configuration. + :paramtype private_ip_address: str + :keyword private_ip_allocation_method: The private IP address allocation method. Possible + values include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword subnet: The reference to the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword public_ip_address: The reference to the public IP resource. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + """ + super(HubIpConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.private_ip_address = private_ip_address + self.private_ip_allocation_method = private_ip_allocation_method + self.subnet = subnet + self.public_ip_address = public_ip_address + self.provisioning_state = None + + +class HubPublicIPAddresses(msrest.serialization.Model): + """Public IP addresses associated with azure firewall. + + :ivar addresses: The list of Public IP addresses associated with azure firewall or IP addresses + to be retained. + :vartype addresses: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallPublicIPAddress] + :ivar count: The number of Public IP addresses associated with azure firewall. + :vartype count: int + """ + + _attribute_map = { + 'addresses': {'key': 'addresses', 'type': '[AzureFirewallPublicIPAddress]'}, + 'count': {'key': 'count', 'type': 'int'}, + } + + def __init__( + self, + *, + addresses: Optional[List["AzureFirewallPublicIPAddress"]] = None, + count: Optional[int] = None, + **kwargs + ): + """ + :keyword addresses: The list of Public IP addresses associated with azure firewall or IP + addresses to be retained. + :paramtype addresses: list[~azure.mgmt.network.v2022_01_01.models.AzureFirewallPublicIPAddress] + :keyword count: The number of Public IP addresses associated with azure firewall. + :paramtype count: int + """ + super(HubPublicIPAddresses, self).__init__(**kwargs) + self.addresses = addresses + self.count = count + + +class HubRoute(msrest.serialization.Model): + """RouteTable route. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Required. The name of the Route that is unique within a RouteTable. This name can + be used to access this route. + :vartype name: str + :ivar destination_type: Required. The type of destinations (eg: CIDR, ResourceId, Service). + :vartype destination_type: str + :ivar destinations: Required. List of all destinations. + :vartype destinations: list[str] + :ivar next_hop_type: Required. The type of next hop (eg: ResourceId). + :vartype next_hop_type: str + :ivar next_hop: Required. NextHop resource ID. + :vartype next_hop: str + """ + + _validation = { + 'name': {'required': True}, + 'destination_type': {'required': True}, + 'destinations': {'required': True}, + 'next_hop_type': {'required': True}, + 'next_hop': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'destination_type': {'key': 'destinationType', 'type': 'str'}, + 'destinations': {'key': 'destinations', 'type': '[str]'}, + 'next_hop_type': {'key': 'nextHopType', 'type': 'str'}, + 'next_hop': {'key': 'nextHop', 'type': 'str'}, + } + + def __init__( + self, + *, + name: str, + destination_type: str, + destinations: List[str], + next_hop_type: str, + next_hop: str, + **kwargs + ): + """ + :keyword name: Required. The name of the Route that is unique within a RouteTable. This name + can be used to access this route. + :paramtype name: str + :keyword destination_type: Required. The type of destinations (eg: CIDR, ResourceId, Service). + :paramtype destination_type: str + :keyword destinations: Required. List of all destinations. + :paramtype destinations: list[str] + :keyword next_hop_type: Required. The type of next hop (eg: ResourceId). + :paramtype next_hop_type: str + :keyword next_hop: Required. NextHop resource ID. + :paramtype next_hop: str + """ + super(HubRoute, self).__init__(**kwargs) + self.name = name + self.destination_type = destination_type + self.destinations = destinations + self.next_hop_type = next_hop_type + self.next_hop = next_hop + + +class HubRouteTable(SubResource): + """RouteTable resource in a virtual hub. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar routes: List of all routes. + :vartype routes: list[~azure.mgmt.network.v2022_01_01.models.HubRoute] + :ivar labels: List of labels associated with this route table. + :vartype labels: list[str] + :ivar associated_connections: List of all connections associated with this route table. + :vartype associated_connections: list[str] + :ivar propagating_connections: List of all connections that advertise to this route table. + :vartype propagating_connections: list[str] + :ivar provisioning_state: The provisioning state of the RouteTable resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'associated_connections': {'readonly': True}, + 'propagating_connections': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'routes': {'key': 'properties.routes', 'type': '[HubRoute]'}, + 'labels': {'key': 'properties.labels', 'type': '[str]'}, + 'associated_connections': {'key': 'properties.associatedConnections', 'type': '[str]'}, + 'propagating_connections': {'key': 'properties.propagatingConnections', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + routes: Optional[List["HubRoute"]] = None, + labels: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword routes: List of all routes. + :paramtype routes: list[~azure.mgmt.network.v2022_01_01.models.HubRoute] + :keyword labels: List of labels associated with this route table. + :paramtype labels: list[str] + """ + super(HubRouteTable, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.routes = routes + self.labels = labels + self.associated_connections = None + self.propagating_connections = None + self.provisioning_state = None + + +class HubVirtualNetworkConnection(SubResource): + """HubVirtualNetworkConnection Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar remote_virtual_network: Reference to the remote virtual network. + :vartype remote_virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar allow_hub_to_remote_vnet_transit: Deprecated: VirtualHub to RemoteVnet transit to enabled + or not. + :vartype allow_hub_to_remote_vnet_transit: bool + :ivar allow_remote_vnet_to_use_hub_vnet_gateways: Deprecated: Allow RemoteVnet to use Virtual + Hub's gateways. + :vartype allow_remote_vnet_to_use_hub_vnet_gateways: bool + :ivar enable_internet_security: Enable internet security. + :vartype enable_internet_security: bool + :ivar routing_configuration: The Routing Configuration indicating the associated and propagated + route tables on this connection. + :vartype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration + :ivar provisioning_state: The provisioning state of the hub virtual network connection + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'}, + 'allow_hub_to_remote_vnet_transit': {'key': 'properties.allowHubToRemoteVnetTransit', 'type': 'bool'}, + 'allow_remote_vnet_to_use_hub_vnet_gateways': {'key': 'properties.allowRemoteVnetToUseHubVnetGateways', 'type': 'bool'}, + 'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'}, + 'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + remote_virtual_network: Optional["SubResource"] = None, + allow_hub_to_remote_vnet_transit: Optional[bool] = None, + allow_remote_vnet_to_use_hub_vnet_gateways: Optional[bool] = None, + enable_internet_security: Optional[bool] = None, + routing_configuration: Optional["RoutingConfiguration"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword remote_virtual_network: Reference to the remote virtual network. + :paramtype remote_virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword allow_hub_to_remote_vnet_transit: Deprecated: VirtualHub to RemoteVnet transit to + enabled or not. + :paramtype allow_hub_to_remote_vnet_transit: bool + :keyword allow_remote_vnet_to_use_hub_vnet_gateways: Deprecated: Allow RemoteVnet to use + Virtual Hub's gateways. + :paramtype allow_remote_vnet_to_use_hub_vnet_gateways: bool + :keyword enable_internet_security: Enable internet security. + :paramtype enable_internet_security: bool + :keyword routing_configuration: The Routing Configuration indicating the associated and + propagated route tables on this connection. + :paramtype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration + """ + super(HubVirtualNetworkConnection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.remote_virtual_network = remote_virtual_network + self.allow_hub_to_remote_vnet_transit = allow_hub_to_remote_vnet_transit + self.allow_remote_vnet_to_use_hub_vnet_gateways = allow_remote_vnet_to_use_hub_vnet_gateways + self.enable_internet_security = enable_internet_security + self.routing_configuration = routing_configuration + self.provisioning_state = None + + +class IDPSQueryObject(msrest.serialization.Model): + """Will describe the query to run against the IDPS signatures DB. + + :ivar filters: Contain all filters names and values. + :vartype filters: list[~azure.mgmt.network.v2022_01_01.models.FilterItems] + :ivar search: Search term in all columns. + :vartype search: str + :ivar order_by: Column to sort response by. + :vartype order_by: ~azure.mgmt.network.v2022_01_01.models.OrderBy + :ivar results_per_page: The number of the results to return in each page. + :vartype results_per_page: int + :ivar skip: The number of records matching the filter to skip. + :vartype skip: int + """ + + _validation = { + 'results_per_page': {'maximum': 1000, 'minimum': 1}, + } + + _attribute_map = { + 'filters': {'key': 'filters', 'type': '[FilterItems]'}, + 'search': {'key': 'search', 'type': 'str'}, + 'order_by': {'key': 'orderBy', 'type': 'OrderBy'}, + 'results_per_page': {'key': 'resultsPerPage', 'type': 'int'}, + 'skip': {'key': 'skip', 'type': 'int'}, + } + + def __init__( + self, + *, + filters: Optional[List["FilterItems"]] = None, + search: Optional[str] = None, + order_by: Optional["OrderBy"] = None, + results_per_page: Optional[int] = None, + skip: Optional[int] = None, + **kwargs + ): + """ + :keyword filters: Contain all filters names and values. + :paramtype filters: list[~azure.mgmt.network.v2022_01_01.models.FilterItems] + :keyword search: Search term in all columns. + :paramtype search: str + :keyword order_by: Column to sort response by. + :paramtype order_by: ~azure.mgmt.network.v2022_01_01.models.OrderBy + :keyword results_per_page: The number of the results to return in each page. + :paramtype results_per_page: int + :keyword skip: The number of records matching the filter to skip. + :paramtype skip: int + """ + super(IDPSQueryObject, self).__init__(**kwargs) + self.filters = filters + self.search = search + self.order_by = order_by + self.results_per_page = results_per_page + self.skip = skip + + +class InboundNatPool(SubResource): + """Inbound NAT pool of the load balancer. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the set of inbound NAT pools used by + the load balancer. This name can be used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar frontend_ip_configuration: A reference to frontend IP addresses. + :vartype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar protocol: The reference to the transport protocol used by the inbound NAT pool. Possible + values include: "Udp", "Tcp", "All". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.TransportProtocol + :ivar frontend_port_range_start: The first port number in the range of external ports that will + be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range + between 1 and 65534. + :vartype frontend_port_range_start: int + :ivar frontend_port_range_end: The last port number in the range of external ports that will be + used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range + between 1 and 65535. + :vartype frontend_port_range_end: int + :ivar backend_port: The port used for internal connections on the endpoint. Acceptable values + are between 1 and 65535. + :vartype backend_port: int + :ivar idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set + between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the + protocol is set to TCP. + :vartype idle_timeout_in_minutes: int + :ivar enable_floating_ip: Configures a virtual machine's endpoint for the floating IP + capability required to configure a SQL AlwaysOn Availability Group. This setting is required + when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed + after you create the endpoint. + :vartype enable_floating_ip: bool + :ivar enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected + connection termination. This element is only used when the protocol is set to TCP. + :vartype enable_tcp_reset: bool + :ivar provisioning_state: The provisioning state of the inbound NAT pool resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'}, + 'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'}, + 'backend_port': {'key': 'properties.backendPort', 'type': 'int'}, + 'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'}, + 'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'}, + 'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + frontend_ip_configuration: Optional["SubResource"] = None, + protocol: Optional[Union[str, "TransportProtocol"]] = None, + frontend_port_range_start: Optional[int] = None, + frontend_port_range_end: Optional[int] = None, + backend_port: Optional[int] = None, + idle_timeout_in_minutes: Optional[int] = None, + enable_floating_ip: Optional[bool] = None, + enable_tcp_reset: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the set of inbound NAT pools used + by the load balancer. This name can be used to access the resource. + :paramtype name: str + :keyword frontend_ip_configuration: A reference to frontend IP addresses. + :paramtype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword protocol: The reference to the transport protocol used by the inbound NAT pool. + Possible values include: "Udp", "Tcp", "All". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.TransportProtocol + :keyword frontend_port_range_start: The first port number in the range of external ports that + will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values + range between 1 and 65534. + :paramtype frontend_port_range_start: int + :keyword frontend_port_range_end: The last port number in the range of external ports that will + be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range + between 1 and 65535. + :paramtype frontend_port_range_end: int + :keyword backend_port: The port used for internal connections on the endpoint. Acceptable + values are between 1 and 65535. + :paramtype backend_port: int + :keyword idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set + between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the + protocol is set to TCP. + :paramtype idle_timeout_in_minutes: int + :keyword enable_floating_ip: Configures a virtual machine's endpoint for the floating IP + capability required to configure a SQL AlwaysOn Availability Group. This setting is required + when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed + after you create the endpoint. + :paramtype enable_floating_ip: bool + :keyword enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or + unexpected connection termination. This element is only used when the protocol is set to TCP. + :paramtype enable_tcp_reset: bool + """ + super(InboundNatPool, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.frontend_ip_configuration = frontend_ip_configuration + self.protocol = protocol + self.frontend_port_range_start = frontend_port_range_start + self.frontend_port_range_end = frontend_port_range_end + self.backend_port = backend_port + self.idle_timeout_in_minutes = idle_timeout_in_minutes + self.enable_floating_ip = enable_floating_ip + self.enable_tcp_reset = enable_tcp_reset + self.provisioning_state = None + + +class InboundNatRule(SubResource): + """Inbound NAT rule of the load balancer. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the set of inbound NAT rules used by + the load balancer. This name can be used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar frontend_ip_configuration: A reference to frontend IP addresses. + :vartype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar backend_ip_configuration: A reference to a private IP address defined on a network + interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations + is forwarded to the backend IP. + :vartype backend_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :ivar protocol: The reference to the transport protocol used by the load balancing rule. + Possible values include: "Udp", "Tcp", "All". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.TransportProtocol + :ivar frontend_port: The port for the external endpoint. Port numbers for each rule must be + unique within the Load Balancer. Acceptable values range from 1 to 65534. + :vartype frontend_port: int + :ivar backend_port: The port used for the internal endpoint. Acceptable values range from 1 to + 65535. + :vartype backend_port: int + :ivar idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set + between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the + protocol is set to TCP. + :vartype idle_timeout_in_minutes: int + :ivar enable_floating_ip: Configures a virtual machine's endpoint for the floating IP + capability required to configure a SQL AlwaysOn Availability Group. This setting is required + when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed + after you create the endpoint. + :vartype enable_floating_ip: bool + :ivar enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected + connection termination. This element is only used when the protocol is set to TCP. + :vartype enable_tcp_reset: bool + :ivar frontend_port_range_start: The port range start for the external endpoint. This property + is used together with BackendAddressPool and FrontendPortRangeEnd. Individual inbound NAT rule + port mappings will be created for each backend address from BackendAddressPool. Acceptable + values range from 1 to 65534. + :vartype frontend_port_range_start: int + :ivar frontend_port_range_end: The port range end for the external endpoint. This property is + used together with BackendAddressPool and FrontendPortRangeStart. Individual inbound NAT rule + port mappings will be created for each backend address from BackendAddressPool. Acceptable + values range from 1 to 65534. + :vartype frontend_port_range_end: int + :ivar backend_address_pool: A reference to backendAddressPool resource. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the inbound NAT rule resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'backend_ip_configuration': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'}, + 'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'}, + 'backend_port': {'key': 'properties.backendPort', 'type': 'int'}, + 'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'}, + 'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'}, + 'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'}, + 'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'}, + 'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'}, + 'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + frontend_ip_configuration: Optional["SubResource"] = None, + protocol: Optional[Union[str, "TransportProtocol"]] = None, + frontend_port: Optional[int] = None, + backend_port: Optional[int] = None, + idle_timeout_in_minutes: Optional[int] = None, + enable_floating_ip: Optional[bool] = None, + enable_tcp_reset: Optional[bool] = None, + frontend_port_range_start: Optional[int] = None, + frontend_port_range_end: Optional[int] = None, + backend_address_pool: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the set of inbound NAT rules used + by the load balancer. This name can be used to access the resource. + :paramtype name: str + :keyword frontend_ip_configuration: A reference to frontend IP addresses. + :paramtype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword protocol: The reference to the transport protocol used by the load balancing rule. + Possible values include: "Udp", "Tcp", "All". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.TransportProtocol + :keyword frontend_port: The port for the external endpoint. Port numbers for each rule must be + unique within the Load Balancer. Acceptable values range from 1 to 65534. + :paramtype frontend_port: int + :keyword backend_port: The port used for the internal endpoint. Acceptable values range from 1 + to 65535. + :paramtype backend_port: int + :keyword idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set + between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the + protocol is set to TCP. + :paramtype idle_timeout_in_minutes: int + :keyword enable_floating_ip: Configures a virtual machine's endpoint for the floating IP + capability required to configure a SQL AlwaysOn Availability Group. This setting is required + when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed + after you create the endpoint. + :paramtype enable_floating_ip: bool + :keyword enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or + unexpected connection termination. This element is only used when the protocol is set to TCP. + :paramtype enable_tcp_reset: bool + :keyword frontend_port_range_start: The port range start for the external endpoint. This + property is used together with BackendAddressPool and FrontendPortRangeEnd. Individual inbound + NAT rule port mappings will be created for each backend address from BackendAddressPool. + Acceptable values range from 1 to 65534. + :paramtype frontend_port_range_start: int + :keyword frontend_port_range_end: The port range end for the external endpoint. This property + is used together with BackendAddressPool and FrontendPortRangeStart. Individual inbound NAT + rule port mappings will be created for each backend address from BackendAddressPool. Acceptable + values range from 1 to 65534. + :paramtype frontend_port_range_end: int + :keyword backend_address_pool: A reference to backendAddressPool resource. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(InboundNatRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.frontend_ip_configuration = frontend_ip_configuration + self.backend_ip_configuration = None + self.protocol = protocol + self.frontend_port = frontend_port + self.backend_port = backend_port + self.idle_timeout_in_minutes = idle_timeout_in_minutes + self.enable_floating_ip = enable_floating_ip + self.enable_tcp_reset = enable_tcp_reset + self.frontend_port_range_start = frontend_port_range_start + self.frontend_port_range_end = frontend_port_range_end + self.backend_address_pool = backend_address_pool + self.provisioning_state = None + + +class InboundNatRuleListResult(msrest.serialization.Model): + """Response for ListInboundNatRule API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of inbound NAT rules in a load balancer. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[InboundNatRule]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["InboundNatRule"]] = None, + **kwargs + ): + """ + :keyword value: A list of inbound NAT rules in a load balancer. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + """ + super(InboundNatRuleListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class InboundNatRulePortMapping(msrest.serialization.Model): + """Individual port mappings for inbound NAT rule created for backend pool. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar inbound_nat_rule_name: Name of inbound NAT rule. + :vartype inbound_nat_rule_name: str + :ivar protocol: The reference to the transport protocol used by the inbound NAT rule. Possible + values include: "Udp", "Tcp", "All". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.TransportProtocol + :ivar frontend_port: Frontend port. + :vartype frontend_port: int + :ivar backend_port: Backend port. + :vartype backend_port: int + """ + + _validation = { + 'inbound_nat_rule_name': {'readonly': True}, + 'protocol': {'readonly': True}, + 'frontend_port': {'readonly': True}, + 'backend_port': {'readonly': True}, + } + + _attribute_map = { + 'inbound_nat_rule_name': {'key': 'inboundNatRuleName', 'type': 'str'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'frontend_port': {'key': 'frontendPort', 'type': 'int'}, + 'backend_port': {'key': 'backendPort', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(InboundNatRulePortMapping, self).__init__(**kwargs) + self.inbound_nat_rule_name = None + self.protocol = None + self.frontend_port = None + self.backend_port = None + + +class InboundSecurityRule(SubResource): + """NVA Inbound Security Rule resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of security rule collection. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: NVA inbound security rule type. + :vartype type: str + :ivar rules: List of allowed rules. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.InboundSecurityRules] + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'rules': {'key': 'properties.rules', 'type': '[InboundSecurityRules]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + rules: Optional[List["InboundSecurityRules"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of security rule collection. + :paramtype name: str + :keyword rules: List of allowed rules. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.InboundSecurityRules] + """ + super(InboundSecurityRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.rules = rules + self.provisioning_state = None + + +class InboundSecurityRules(msrest.serialization.Model): + """Properties of the Inbound Security Rules resource. + + :ivar protocol: Protocol. This should be either TCP or UDP. Possible values include: "TCP", + "UDP". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.InboundSecurityRulesProtocol + :ivar source_address_prefix: The CIDR or source IP range. Only /30, /31 and /32 Ip ranges are + allowed. + :vartype source_address_prefix: str + :ivar destination_port_range: NVA port ranges to be opened up. One needs to provide specific + ports. + :vartype destination_port_range: int + """ + + _validation = { + 'destination_port_range': {'maximum': 65535, 'minimum': 0}, + } + + _attribute_map = { + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'}, + 'destination_port_range': {'key': 'destinationPortRange', 'type': 'int'}, + } + + def __init__( + self, + *, + protocol: Optional[Union[str, "InboundSecurityRulesProtocol"]] = None, + source_address_prefix: Optional[str] = None, + destination_port_range: Optional[int] = None, + **kwargs + ): + """ + :keyword protocol: Protocol. This should be either TCP or UDP. Possible values include: "TCP", + "UDP". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.InboundSecurityRulesProtocol + :keyword source_address_prefix: The CIDR or source IP range. Only /30, /31 and /32 Ip ranges + are allowed. + :paramtype source_address_prefix: str + :keyword destination_port_range: NVA port ranges to be opened up. One needs to provide specific + ports. + :paramtype destination_port_range: int + """ + super(InboundSecurityRules, self).__init__(**kwargs) + self.protocol = protocol + self.source_address_prefix = source_address_prefix + self.destination_port_range = destination_port_range + + +class IPAddressAvailabilityResult(msrest.serialization.Model): + """Response for CheckIPAddressAvailability API service call. + + :ivar available: Private IP address availability. + :vartype available: bool + :ivar available_ip_addresses: Contains other available private IP addresses if the asked for + address is taken. + :vartype available_ip_addresses: list[str] + :ivar is_platform_reserved: Private IP address platform reserved. + :vartype is_platform_reserved: bool + """ + + _attribute_map = { + 'available': {'key': 'available', 'type': 'bool'}, + 'available_ip_addresses': {'key': 'availableIPAddresses', 'type': '[str]'}, + 'is_platform_reserved': {'key': 'isPlatformReserved', 'type': 'bool'}, + } + + def __init__( + self, + *, + available: Optional[bool] = None, + available_ip_addresses: Optional[List[str]] = None, + is_platform_reserved: Optional[bool] = None, + **kwargs + ): + """ + :keyword available: Private IP address availability. + :paramtype available: bool + :keyword available_ip_addresses: Contains other available private IP addresses if the asked for + address is taken. + :paramtype available_ip_addresses: list[str] + :keyword is_platform_reserved: Private IP address platform reserved. + :paramtype is_platform_reserved: bool + """ + super(IPAddressAvailabilityResult, self).__init__(**kwargs) + self.available = available + self.available_ip_addresses = available_ip_addresses + self.is_platform_reserved = is_platform_reserved + + +class IpAllocation(Resource): + """IpAllocation resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar subnet: The Subnet that using the prefix of this IpAllocation resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar virtual_network: The VirtualNetwork that using the prefix of this IpAllocation resource. + :vartype virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar type_properties_type: The type for the IpAllocation. Possible values include: + "Undefined", "Hypernet". + :vartype type_properties_type: str or ~azure.mgmt.network.v2022_01_01.models.IpAllocationType + :ivar prefix: The address prefix for the IpAllocation. + :vartype prefix: str + :ivar prefix_length: The address prefix length for the IpAllocation. + :vartype prefix_length: int + :ivar prefix_type: The address prefix Type for the IpAllocation. Possible values include: + "IPv4", "IPv6". + :vartype prefix_type: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :ivar ipam_allocation_id: The IPAM allocation ID. + :vartype ipam_allocation_id: str + :ivar allocation_tags: IpAllocation tags. + :vartype allocation_tags: dict[str, str] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'subnet': {'readonly': True}, + 'virtual_network': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'virtual_network': {'key': 'properties.virtualNetwork', 'type': 'SubResource'}, + 'type_properties_type': {'key': 'properties.type', 'type': 'str'}, + 'prefix': {'key': 'properties.prefix', 'type': 'str'}, + 'prefix_length': {'key': 'properties.prefixLength', 'type': 'int'}, + 'prefix_type': {'key': 'properties.prefixType', 'type': 'str'}, + 'ipam_allocation_id': {'key': 'properties.ipamAllocationId', 'type': 'str'}, + 'allocation_tags': {'key': 'properties.allocationTags', 'type': '{str}'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + type_properties_type: Optional[Union[str, "IpAllocationType"]] = None, + prefix: Optional[str] = None, + prefix_length: Optional[int] = 0, + prefix_type: Optional[Union[str, "IPVersion"]] = None, + ipam_allocation_id: Optional[str] = None, + allocation_tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword type_properties_type: The type for the IpAllocation. Possible values include: + "Undefined", "Hypernet". + :paramtype type_properties_type: str or ~azure.mgmt.network.v2022_01_01.models.IpAllocationType + :keyword prefix: The address prefix for the IpAllocation. + :paramtype prefix: str + :keyword prefix_length: The address prefix length for the IpAllocation. + :paramtype prefix_length: int + :keyword prefix_type: The address prefix Type for the IpAllocation. Possible values include: + "IPv4", "IPv6". + :paramtype prefix_type: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :keyword ipam_allocation_id: The IPAM allocation ID. + :paramtype ipam_allocation_id: str + :keyword allocation_tags: IpAllocation tags. + :paramtype allocation_tags: dict[str, str] + """ + super(IpAllocation, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.subnet = None + self.virtual_network = None + self.type_properties_type = type_properties_type + self.prefix = prefix + self.prefix_length = prefix_length + self.prefix_type = prefix_type + self.ipam_allocation_id = ipam_allocation_id + self.allocation_tags = allocation_tags + + +class IpAllocationListResult(msrest.serialization.Model): + """Response for the ListIpAllocations API service call. + + :ivar value: A list of IpAllocation resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.IpAllocation] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[IpAllocation]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["IpAllocation"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of IpAllocation resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.IpAllocation] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(IpAllocationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class IPConfiguration(SubResource): + """IP configuration. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar private_ip_address: The private IP address of the IP configuration. + :vartype private_ip_address: str + :ivar private_ip_allocation_method: The private IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar subnet: The reference to the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :ivar public_ip_address: The reference to the public IP resource. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :ivar provisioning_state: The provisioning state of the IP configuration resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'Subnet'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_ip_address: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + subnet: Optional["Subnet"] = None, + public_ip_address: Optional["PublicIPAddress"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword private_ip_address: The private IP address of the IP configuration. + :paramtype private_ip_address: str + :keyword private_ip_allocation_method: The private IP address allocation method. Possible + values include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword subnet: The reference to the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword public_ip_address: The reference to the public IP resource. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + """ + super(IPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.private_ip_address = private_ip_address + self.private_ip_allocation_method = private_ip_allocation_method + self.subnet = subnet + self.public_ip_address = public_ip_address + self.provisioning_state = None + + +class IPConfigurationBgpPeeringAddress(msrest.serialization.Model): + """Properties of IPConfigurationBgpPeeringAddress. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar ipconfiguration_id: The ID of IP configuration which belongs to gateway. + :vartype ipconfiguration_id: str + :ivar default_bgp_ip_addresses: The list of default BGP peering addresses which belong to IP + configuration. + :vartype default_bgp_ip_addresses: list[str] + :ivar custom_bgp_ip_addresses: The list of custom BGP peering addresses which belong to IP + configuration. + :vartype custom_bgp_ip_addresses: list[str] + :ivar tunnel_ip_addresses: The list of tunnel public IP addresses which belong to IP + configuration. + :vartype tunnel_ip_addresses: list[str] + """ + + _validation = { + 'default_bgp_ip_addresses': {'readonly': True}, + 'tunnel_ip_addresses': {'readonly': True}, + } + + _attribute_map = { + 'ipconfiguration_id': {'key': 'ipconfigurationId', 'type': 'str'}, + 'default_bgp_ip_addresses': {'key': 'defaultBgpIpAddresses', 'type': '[str]'}, + 'custom_bgp_ip_addresses': {'key': 'customBgpIpAddresses', 'type': '[str]'}, + 'tunnel_ip_addresses': {'key': 'tunnelIpAddresses', 'type': '[str]'}, + } + + def __init__( + self, + *, + ipconfiguration_id: Optional[str] = None, + custom_bgp_ip_addresses: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword ipconfiguration_id: The ID of IP configuration which belongs to gateway. + :paramtype ipconfiguration_id: str + :keyword custom_bgp_ip_addresses: The list of custom BGP peering addresses which belong to IP + configuration. + :paramtype custom_bgp_ip_addresses: list[str] + """ + super(IPConfigurationBgpPeeringAddress, self).__init__(**kwargs) + self.ipconfiguration_id = ipconfiguration_id + self.default_bgp_ip_addresses = None + self.custom_bgp_ip_addresses = custom_bgp_ip_addresses + self.tunnel_ip_addresses = None + + +class IPConfigurationProfile(SubResource): + """IP configuration profile child resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource. This name can be used to access the resource. + :vartype name: str + :ivar type: Sub Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar subnet: The reference to the subnet resource to create a container network interface ip + configuration. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :ivar provisioning_state: The provisioning state of the IP configuration profile resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'Subnet'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + subnet: Optional["Subnet"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource. This name can be used to access the resource. + :paramtype name: str + :keyword subnet: The reference to the subnet resource to create a container network interface + ip configuration. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + """ + super(IPConfigurationProfile, self).__init__(id=id, **kwargs) + self.name = name + self.type = None + self.etag = None + self.subnet = subnet + self.provisioning_state = None + + +class IpGroup(Resource): + """The IpGroups resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar provisioning_state: The provisioning state of the IpGroups resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar ip_addresses: IpAddresses/IpAddressPrefixes in the IpGroups resource. + :vartype ip_addresses: list[str] + :ivar firewalls: List of references to Firewall resources that this IpGroups is associated + with. + :vartype firewalls: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar firewall_policies: List of references to Firewall Policies resources that this IpGroups + is associated with. + :vartype firewall_policies: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'firewalls': {'readonly': True}, + 'firewall_policies': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'ip_addresses': {'key': 'properties.ipAddresses', 'type': '[str]'}, + 'firewalls': {'key': 'properties.firewalls', 'type': '[SubResource]'}, + 'firewall_policies': {'key': 'properties.firewallPolicies', 'type': '[SubResource]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + ip_addresses: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword ip_addresses: IpAddresses/IpAddressPrefixes in the IpGroups resource. + :paramtype ip_addresses: list[str] + """ + super(IpGroup, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.provisioning_state = None + self.ip_addresses = ip_addresses + self.firewalls = None + self.firewall_policies = None + + +class IpGroupListResult(msrest.serialization.Model): + """Response for the ListIpGroups API service call. + + :ivar value: The list of IpGroups information resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.IpGroup] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[IpGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["IpGroup"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The list of IpGroups information resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.IpGroup] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(IpGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class IPPrefixesList(msrest.serialization.Model): + """List of SNAT IP Prefixes learnt by firewall to not SNAT. + + :ivar ip_prefixes: IP Prefix value. + :vartype ip_prefixes: list[str] + """ + + _attribute_map = { + 'ip_prefixes': {'key': 'ipPrefixes', 'type': '[str]'}, + } + + def __init__( + self, + *, + ip_prefixes: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword ip_prefixes: IP Prefix value. + :paramtype ip_prefixes: list[str] + """ + super(IPPrefixesList, self).__init__(**kwargs) + self.ip_prefixes = ip_prefixes + + +class IpsecPolicy(msrest.serialization.Model): + """An IPSec Policy configuration for a virtual network gateway connection. + + All required parameters must be populated in order to send to Azure. + + :ivar sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode or + Phase 2 SA) lifetime in seconds for a site to site VPN tunnel. + :vartype sa_life_time_seconds: int + :ivar sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode + or Phase 2 SA) payload size in KB for a site to site VPN tunnel. + :vartype sa_data_size_kilobytes: int + :ivar ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible values + include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192", + "GCMAES256". + :vartype ipsec_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IpsecEncryption + :ivar ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values + include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256". + :vartype ipsec_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IpsecIntegrity + :ivar ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values + include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128". + :vartype ike_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IkeEncryption + :ivar ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values + include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128". + :vartype ike_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IkeIntegrity + :ivar dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values + include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384", + "DHGroup24". + :vartype dh_group: str or ~azure.mgmt.network.v2022_01_01.models.DhGroup + :ivar pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible values + include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", "PFSMM". + :vartype pfs_group: str or ~azure.mgmt.network.v2022_01_01.models.PfsGroup + """ + + _validation = { + 'sa_life_time_seconds': {'required': True}, + 'sa_data_size_kilobytes': {'required': True}, + 'ipsec_encryption': {'required': True}, + 'ipsec_integrity': {'required': True}, + 'ike_encryption': {'required': True}, + 'ike_integrity': {'required': True}, + 'dh_group': {'required': True}, + 'pfs_group': {'required': True}, + } + + _attribute_map = { + 'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'}, + 'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'}, + 'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'}, + 'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'}, + 'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'}, + 'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'}, + 'dh_group': {'key': 'dhGroup', 'type': 'str'}, + 'pfs_group': {'key': 'pfsGroup', 'type': 'str'}, + } + + def __init__( + self, + *, + sa_life_time_seconds: int, + sa_data_size_kilobytes: int, + ipsec_encryption: Union[str, "IpsecEncryption"], + ipsec_integrity: Union[str, "IpsecIntegrity"], + ike_encryption: Union[str, "IkeEncryption"], + ike_integrity: Union[str, "IkeIntegrity"], + dh_group: Union[str, "DhGroup"], + pfs_group: Union[str, "PfsGroup"], + **kwargs + ): + """ + :keyword sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode + or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel. + :paramtype sa_life_time_seconds: int + :keyword sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick + Mode or Phase 2 SA) payload size in KB for a site to site VPN tunnel. + :paramtype sa_data_size_kilobytes: int + :keyword ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible + values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192", + "GCMAES256". + :paramtype ipsec_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IpsecEncryption + :keyword ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible + values include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256". + :paramtype ipsec_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IpsecIntegrity + :keyword ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values + include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128". + :paramtype ike_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IkeEncryption + :keyword ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values + include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128". + :paramtype ike_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IkeIntegrity + :keyword dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values + include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384", + "DHGroup24". + :paramtype dh_group: str or ~azure.mgmt.network.v2022_01_01.models.DhGroup + :keyword pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible + values include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", + "PFSMM". + :paramtype pfs_group: str or ~azure.mgmt.network.v2022_01_01.models.PfsGroup + """ + super(IpsecPolicy, self).__init__(**kwargs) + self.sa_life_time_seconds = sa_life_time_seconds + self.sa_data_size_kilobytes = sa_data_size_kilobytes + self.ipsec_encryption = ipsec_encryption + self.ipsec_integrity = ipsec_integrity + self.ike_encryption = ike_encryption + self.ike_integrity = ike_integrity + self.dh_group = dh_group + self.pfs_group = pfs_group + + +class IpTag(msrest.serialization.Model): + """Contains the IpTag associated with the object. + + :ivar ip_tag_type: The IP tag type. Example: FirstPartyUsage. + :vartype ip_tag_type: str + :ivar tag: The value of the IP tag associated with the public IP. Example: SQL. + :vartype tag: str + """ + + _attribute_map = { + 'ip_tag_type': {'key': 'ipTagType', 'type': 'str'}, + 'tag': {'key': 'tag', 'type': 'str'}, + } + + def __init__( + self, + *, + ip_tag_type: Optional[str] = None, + tag: Optional[str] = None, + **kwargs + ): + """ + :keyword ip_tag_type: The IP tag type. Example: FirstPartyUsage. + :paramtype ip_tag_type: str + :keyword tag: The value of the IP tag associated with the public IP. Example: SQL. + :paramtype tag: str + """ + super(IpTag, self).__init__(**kwargs) + self.ip_tag_type = ip_tag_type + self.tag = tag + + +class Ipv6CircuitConnectionConfig(msrest.serialization.Model): + """IPv6 Circuit Connection properties for global reach. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar address_prefix: /125 IP address space to carve out customer addresses for global reach. + :vartype address_prefix: str + :ivar circuit_connection_status: Express Route Circuit connection state. Possible values + include: "Connected", "Connecting", "Disconnected". + :vartype circuit_connection_status: str or + ~azure.mgmt.network.v2022_01_01.models.CircuitConnectionStatus + """ + + _validation = { + 'circuit_connection_status': {'readonly': True}, + } + + _attribute_map = { + 'address_prefix': {'key': 'addressPrefix', 'type': 'str'}, + 'circuit_connection_status': {'key': 'circuitConnectionStatus', 'type': 'str'}, + } + + def __init__( + self, + *, + address_prefix: Optional[str] = None, + **kwargs + ): + """ + :keyword address_prefix: /125 IP address space to carve out customer addresses for global + reach. + :paramtype address_prefix: str + """ + super(Ipv6CircuitConnectionConfig, self).__init__(**kwargs) + self.address_prefix = address_prefix + self.circuit_connection_status = None + + +class Ipv6ExpressRouteCircuitPeeringConfig(msrest.serialization.Model): + """Contains IPv6 peering config. + + :ivar primary_peer_address_prefix: The primary address prefix. + :vartype primary_peer_address_prefix: str + :ivar secondary_peer_address_prefix: The secondary address prefix. + :vartype secondary_peer_address_prefix: str + :ivar microsoft_peering_config: The Microsoft peering configuration. + :vartype microsoft_peering_config: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringConfig + :ivar route_filter: The reference to the RouteFilter resource. + :vartype route_filter: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar state: The state of peering. Possible values include: "Disabled", "Enabled". + :vartype state: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringState + """ + + _attribute_map = { + 'primary_peer_address_prefix': {'key': 'primaryPeerAddressPrefix', 'type': 'str'}, + 'secondary_peer_address_prefix': {'key': 'secondaryPeerAddressPrefix', 'type': 'str'}, + 'microsoft_peering_config': {'key': 'microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'}, + 'route_filter': {'key': 'routeFilter', 'type': 'SubResource'}, + 'state': {'key': 'state', 'type': 'str'}, + } + + def __init__( + self, + *, + primary_peer_address_prefix: Optional[str] = None, + secondary_peer_address_prefix: Optional[str] = None, + microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None, + route_filter: Optional["SubResource"] = None, + state: Optional[Union[str, "ExpressRouteCircuitPeeringState"]] = None, + **kwargs + ): + """ + :keyword primary_peer_address_prefix: The primary address prefix. + :paramtype primary_peer_address_prefix: str + :keyword secondary_peer_address_prefix: The secondary address prefix. + :paramtype secondary_peer_address_prefix: str + :keyword microsoft_peering_config: The Microsoft peering configuration. + :paramtype microsoft_peering_config: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringConfig + :keyword route_filter: The reference to the RouteFilter resource. + :paramtype route_filter: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword state: The state of peering. Possible values include: "Disabled", "Enabled". + :paramtype state: str or ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringState + """ + super(Ipv6ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs) + self.primary_peer_address_prefix = primary_peer_address_prefix + self.secondary_peer_address_prefix = secondary_peer_address_prefix + self.microsoft_peering_config = microsoft_peering_config + self.route_filter = route_filter + self.state = state + + +class ListHubRouteTablesResult(msrest.serialization.Model): + """List of RouteTables and a URL nextLink to get the next set of results. + + :ivar value: List of RouteTables. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.HubRouteTable] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[HubRouteTable]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["HubRouteTable"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of RouteTables. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.HubRouteTable] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListHubRouteTablesResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListHubVirtualNetworkConnectionsResult(msrest.serialization.Model): + """List of HubVirtualNetworkConnections and a URL nextLink to get the next set of results. + + :ivar value: List of HubVirtualNetworkConnections. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[HubVirtualNetworkConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["HubVirtualNetworkConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of HubVirtualNetworkConnections. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListHubVirtualNetworkConnectionsResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListP2SVpnGatewaysResult(msrest.serialization.Model): + """Result of the request to list P2SVpnGateways. It contains a list of P2SVpnGateways and a URL nextLink to get the next set of results. + + :ivar value: List of P2SVpnGateways. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[P2SVpnGateway]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["P2SVpnGateway"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of P2SVpnGateways. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListP2SVpnGatewaysResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListRoutingIntentResult(msrest.serialization.Model): + """List of the routing intent result and a URL nextLink to get the next set of results. + + :ivar value: List of RoutingIntent resource. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.RoutingIntent] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[RoutingIntent]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["RoutingIntent"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of RoutingIntent resource. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.RoutingIntent] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListRoutingIntentResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVirtualHubBgpConnectionResults(msrest.serialization.Model): + """VirtualHubBgpConnections list. + + :ivar value: The list of VirtualHubBgpConnections. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BgpConnection] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BgpConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["BgpConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The list of VirtualHubBgpConnections. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BgpConnection] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(ListVirtualHubBgpConnectionResults, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVirtualHubIpConfigurationResults(msrest.serialization.Model): + """VirtualHubIpConfigurations list. + + :ivar value: The list of VirtualHubIpConfigurations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[HubIpConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["HubIpConfiguration"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The list of VirtualHubIpConfigurations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(ListVirtualHubIpConfigurationResults, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVirtualHubRouteTableV2SResult(msrest.serialization.Model): + """List of VirtualHubRouteTableV2s and a URL nextLink to get the next set of results. + + :ivar value: List of VirtualHubRouteTableV2s. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualHubRouteTableV2]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualHubRouteTableV2"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VirtualHubRouteTableV2s. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVirtualHubRouteTableV2SResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVirtualHubsResult(msrest.serialization.Model): + """Result of the request to list VirtualHubs. It contains a list of VirtualHubs and a URL nextLink to get the next set of results. + + :ivar value: List of VirtualHubs. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualHub] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualHub]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualHub"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VirtualHubs. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualHub] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVirtualHubsResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVirtualNetworkGatewayNatRulesResult(msrest.serialization.Model): + """Result of the request to list all nat rules to a virtual network gateway. It contains a list of Nat rules and a URL nextLink to get the next set of results. + + :ivar value: List of Nat Rules. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetworkGatewayNatRule]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualNetworkGatewayNatRule"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Nat Rules. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVirtualNetworkGatewayNatRulesResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVirtualWANsResult(msrest.serialization.Model): + """Result of the request to list VirtualWANs. It contains a list of VirtualWANs and a URL nextLink to get the next set of results. + + :ivar value: List of VirtualWANs. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualWAN] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualWAN]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualWAN"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VirtualWANs. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualWAN] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVirtualWANsResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnConnectionsResult(msrest.serialization.Model): + """Result of the request to list all vpn connections to a virtual wan vpn gateway. It contains a list of Vpn Connections and a URL nextLink to get the next set of results. + + :ivar value: List of Vpn Connections. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnConnection] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Vpn Connections. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnConnection] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnConnectionsResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnGatewayNatRulesResult(msrest.serialization.Model): + """Result of the request to list all nat rules to a virtual wan vpn gateway. It contains a list of Nat rules and a URL nextLink to get the next set of results. + + :ivar value: List of Nat Rules. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnGatewayNatRule]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnGatewayNatRule"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Nat Rules. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnGatewayNatRulesResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnGatewaysResult(msrest.serialization.Model): + """Result of the request to list VpnGateways. It contains a list of VpnGateways and a URL nextLink to get the next set of results. + + :ivar value: List of VpnGateways. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnGateway]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnGateway"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VpnGateways. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnGatewaysResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnServerConfigurationPolicyGroupsResult(msrest.serialization.Model): + """Result of the request to list VpnServerConfigurationPolicyGroups. It contains a list of VpnServerConfigurationPolicyGroups and a URL nextLink to get the next set of results. + + :ivar value: List of VpnServerConfigurationPolicyGroups. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnServerConfigurationPolicyGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnServerConfigurationPolicyGroup"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VpnServerConfigurationPolicyGroups. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnServerConfigurationPolicyGroupsResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnServerConfigurationsResult(msrest.serialization.Model): + """Result of the request to list all VpnServerConfigurations. It contains a list of VpnServerConfigurations and a URL nextLink to get the next set of results. + + :ivar value: List of VpnServerConfigurations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnServerConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnServerConfiguration"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VpnServerConfigurations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnServerConfigurationsResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnSiteLinkConnectionsResult(msrest.serialization.Model): + """Result of the request to list all vpn connections to a virtual wan vpn gateway. It contains a list of Vpn Connections and a URL nextLink to get the next set of results. + + :ivar value: List of VpnSiteLinkConnections. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLinkConnection] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnSiteLinkConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnSiteLinkConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VpnSiteLinkConnections. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLinkConnection] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnSiteLinkConnectionsResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnSiteLinksResult(msrest.serialization.Model): + """Result of the request to list VpnSiteLinks. It contains a list of VpnSiteLinks and a URL nextLink to get the next set of results. + + :ivar value: List of VpnSitesLinks. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLink] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnSiteLink]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnSiteLink"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VpnSitesLinks. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLink] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnSiteLinksResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ListVpnSitesResult(msrest.serialization.Model): + """Result of the request to list VpnSites. It contains a list of VpnSites and a URL nextLink to get the next set of results. + + :ivar value: List of VpnSites. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnSite] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VpnSite]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VpnSite"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VpnSites. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnSite] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(ListVpnSitesResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class LoadBalancer(Resource): + """LoadBalancer resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the load balancer. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar sku: The load balancer SKU. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.LoadBalancerSku + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar frontend_ip_configurations: Object representing the frontend IPs to be used for the load + balancer. + :vartype frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration] + :ivar backend_address_pools: Collection of backend address pools used by a load balancer. + :vartype backend_address_pools: list[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + :ivar load_balancing_rules: Object collection representing the load balancing rules Gets the + provisioning. + :vartype load_balancing_rules: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancingRule] + :ivar probes: Collection of probe objects used in the load balancer. + :vartype probes: list[~azure.mgmt.network.v2022_01_01.models.Probe] + :ivar inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining + inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT + pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are + associated with individual virtual machines cannot reference an Inbound NAT pool. They have to + reference individual inbound NAT rules. + :vartype inbound_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + :ivar inbound_nat_pools: Defines an external port range for inbound NAT to a single backend + port on NICs associated with a load balancer. Inbound NAT rules are created automatically for + each NIC associated with the Load Balancer using an external port from this range. Defining an + Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound NAT rules. + Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with + individual virtual machines cannot reference an inbound NAT pool. They have to reference + individual inbound NAT rules. + :vartype inbound_nat_pools: list[~azure.mgmt.network.v2022_01_01.models.InboundNatPool] + :ivar outbound_rules: The outbound rules. + :vartype outbound_rules: list[~azure.mgmt.network.v2022_01_01.models.OutboundRule] + :ivar resource_guid: The resource GUID property of the load balancer resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the load balancer resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'sku': {'key': 'sku', 'type': 'LoadBalancerSku'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'}, + 'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'}, + 'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'}, + 'probes': {'key': 'properties.probes', 'type': '[Probe]'}, + 'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'}, + 'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'}, + 'outbound_rules': {'key': 'properties.outboundRules', 'type': '[OutboundRule]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + sku: Optional["LoadBalancerSku"] = None, + frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None, + backend_address_pools: Optional[List["BackendAddressPool"]] = None, + load_balancing_rules: Optional[List["LoadBalancingRule"]] = None, + probes: Optional[List["Probe"]] = None, + inbound_nat_rules: Optional[List["InboundNatRule"]] = None, + inbound_nat_pools: Optional[List["InboundNatPool"]] = None, + outbound_rules: Optional[List["OutboundRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the load balancer. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword sku: The load balancer SKU. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.LoadBalancerSku + :keyword frontend_ip_configurations: Object representing the frontend IPs to be used for the + load balancer. + :paramtype frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration] + :keyword backend_address_pools: Collection of backend address pools used by a load balancer. + :paramtype backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + :keyword load_balancing_rules: Object collection representing the load balancing rules Gets the + provisioning. + :paramtype load_balancing_rules: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancingRule] + :keyword probes: Collection of probe objects used in the load balancer. + :paramtype probes: list[~azure.mgmt.network.v2022_01_01.models.Probe] + :keyword inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining + inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT + pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are + associated with individual virtual machines cannot reference an Inbound NAT pool. They have to + reference individual inbound NAT rules. + :paramtype inbound_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + :keyword inbound_nat_pools: Defines an external port range for inbound NAT to a single backend + port on NICs associated with a load balancer. Inbound NAT rules are created automatically for + each NIC associated with the Load Balancer using an external port from this range. Defining an + Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound NAT rules. + Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with + individual virtual machines cannot reference an inbound NAT pool. They have to reference + individual inbound NAT rules. + :paramtype inbound_nat_pools: list[~azure.mgmt.network.v2022_01_01.models.InboundNatPool] + :keyword outbound_rules: The outbound rules. + :paramtype outbound_rules: list[~azure.mgmt.network.v2022_01_01.models.OutboundRule] + """ + super(LoadBalancer, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.sku = sku + self.etag = None + self.frontend_ip_configurations = frontend_ip_configurations + self.backend_address_pools = backend_address_pools + self.load_balancing_rules = load_balancing_rules + self.probes = probes + self.inbound_nat_rules = inbound_nat_rules + self.inbound_nat_pools = inbound_nat_pools + self.outbound_rules = outbound_rules + self.resource_guid = None + self.provisioning_state = None + + +class LoadBalancerBackendAddress(msrest.serialization.Model): + """Load balancer backend addresses. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: Name of the backend address. + :vartype name: str + :ivar virtual_network: Reference to an existing virtual network. + :vartype virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar subnet: Reference to an existing subnet. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar ip_address: IP Address belonging to the referenced virtual network. + :vartype ip_address: str + :ivar network_interface_ip_configuration: Reference to IP address defined in network + interfaces. + :vartype network_interface_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar load_balancer_frontend_ip_configuration: Reference to the frontend ip address + configuration defined in regional loadbalancer. + :vartype load_balancer_frontend_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar inbound_nat_rules_port_mapping: Collection of inbound NAT rule port mappings. + :vartype inbound_nat_rules_port_mapping: + list[~azure.mgmt.network.v2022_01_01.models.NatRulePortMapping] + :ivar admin_state: A list of administrative states which once set can override health probe so + that Load Balancer will always forward new connections to backend, or deny new connections and + reset existing connections. Possible values include: "None", "Up", "Down", "Drain". + :vartype admin_state: str or + ~azure.mgmt.network.v2022_01_01.models.LoadBalancerBackendAddressAdminState + """ + + _validation = { + 'network_interface_ip_configuration': {'readonly': True}, + 'inbound_nat_rules_port_mapping': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'virtual_network': {'key': 'properties.virtualNetwork', 'type': 'SubResource'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'ip_address': {'key': 'properties.ipAddress', 'type': 'str'}, + 'network_interface_ip_configuration': {'key': 'properties.networkInterfaceIPConfiguration', 'type': 'SubResource'}, + 'load_balancer_frontend_ip_configuration': {'key': 'properties.loadBalancerFrontendIPConfiguration', 'type': 'SubResource'}, + 'inbound_nat_rules_port_mapping': {'key': 'properties.inboundNatRulesPortMapping', 'type': '[NatRulePortMapping]'}, + 'admin_state': {'key': 'properties.adminState', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + virtual_network: Optional["SubResource"] = None, + subnet: Optional["SubResource"] = None, + ip_address: Optional[str] = None, + load_balancer_frontend_ip_configuration: Optional["SubResource"] = None, + admin_state: Optional[Union[str, "LoadBalancerBackendAddressAdminState"]] = None, + **kwargs + ): + """ + :keyword name: Name of the backend address. + :paramtype name: str + :keyword virtual_network: Reference to an existing virtual network. + :paramtype virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword subnet: Reference to an existing subnet. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword ip_address: IP Address belonging to the referenced virtual network. + :paramtype ip_address: str + :keyword load_balancer_frontend_ip_configuration: Reference to the frontend ip address + configuration defined in regional loadbalancer. + :paramtype load_balancer_frontend_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword admin_state: A list of administrative states which once set can override health probe + so that Load Balancer will always forward new connections to backend, or deny new connections + and reset existing connections. Possible values include: "None", "Up", "Down", "Drain". + :paramtype admin_state: str or + ~azure.mgmt.network.v2022_01_01.models.LoadBalancerBackendAddressAdminState + """ + super(LoadBalancerBackendAddress, self).__init__(**kwargs) + self.name = name + self.virtual_network = virtual_network + self.subnet = subnet + self.ip_address = ip_address + self.network_interface_ip_configuration = None + self.load_balancer_frontend_ip_configuration = load_balancer_frontend_ip_configuration + self.inbound_nat_rules_port_mapping = None + self.admin_state = admin_state + + +class LoadBalancerBackendAddressPoolListResult(msrest.serialization.Model): + """Response for ListBackendAddressPool API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of backend address pools in a load balancer. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[BackendAddressPool]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["BackendAddressPool"]] = None, + **kwargs + ): + """ + :keyword value: A list of backend address pools in a load balancer. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + """ + super(LoadBalancerBackendAddressPoolListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class LoadBalancerFrontendIPConfigurationListResult(msrest.serialization.Model): + """Response for ListFrontendIPConfiguration API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of frontend IP configurations in a load balancer. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[FrontendIPConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["FrontendIPConfiguration"]] = None, + **kwargs + ): + """ + :keyword value: A list of frontend IP configurations in a load balancer. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration] + """ + super(LoadBalancerFrontendIPConfigurationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class LoadBalancerListResult(msrest.serialization.Model): + """Response for ListLoadBalancers API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of load balancers in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancer] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[LoadBalancer]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["LoadBalancer"]] = None, + **kwargs + ): + """ + :keyword value: A list of load balancers in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancer] + """ + super(LoadBalancerListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class LoadBalancerLoadBalancingRuleListResult(msrest.serialization.Model): + """Response for ListLoadBalancingRule API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of load balancing rules in a load balancer. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancingRule] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[LoadBalancingRule]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["LoadBalancingRule"]] = None, + **kwargs + ): + """ + :keyword value: A list of load balancing rules in a load balancer. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancingRule] + """ + super(LoadBalancerLoadBalancingRuleListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class LoadBalancerOutboundRuleListResult(msrest.serialization.Model): + """Response for ListOutboundRule API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of outbound rules in a load balancer. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.OutboundRule] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[OutboundRule]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["OutboundRule"]] = None, + **kwargs + ): + """ + :keyword value: A list of outbound rules in a load balancer. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.OutboundRule] + """ + super(LoadBalancerOutboundRuleListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class LoadBalancerProbeListResult(msrest.serialization.Model): + """Response for ListProbe API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of probes in a load balancer. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.Probe] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[Probe]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["Probe"]] = None, + **kwargs + ): + """ + :keyword value: A list of probes in a load balancer. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.Probe] + """ + super(LoadBalancerProbeListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class LoadBalancerSku(msrest.serialization.Model): + """SKU of a load balancer. + + :ivar name: Name of a load balancer SKU. Possible values include: "Basic", "Standard", + "Gateway". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.LoadBalancerSkuName + :ivar tier: Tier of a load balancer SKU. Possible values include: "Regional", "Global". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.LoadBalancerSkuTier + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'tier': {'key': 'tier', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "LoadBalancerSkuName"]] = None, + tier: Optional[Union[str, "LoadBalancerSkuTier"]] = None, + **kwargs + ): + """ + :keyword name: Name of a load balancer SKU. Possible values include: "Basic", "Standard", + "Gateway". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.LoadBalancerSkuName + :keyword tier: Tier of a load balancer SKU. Possible values include: "Regional", "Global". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.LoadBalancerSkuTier + """ + super(LoadBalancerSku, self).__init__(**kwargs) + self.name = name + self.tier = tier + + +class LoadBalancerVipSwapRequest(msrest.serialization.Model): + """The request for a VIP swap. + + :ivar frontend_ip_configurations: A list of frontend IP configuration resources that should + swap VIPs. + :vartype frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.LoadBalancerVipSwapRequestFrontendIPConfiguration] + """ + + _attribute_map = { + 'frontend_ip_configurations': {'key': 'frontendIPConfigurations', 'type': '[LoadBalancerVipSwapRequestFrontendIPConfiguration]'}, + } + + def __init__( + self, + *, + frontend_ip_configurations: Optional[List["LoadBalancerVipSwapRequestFrontendIPConfiguration"]] = None, + **kwargs + ): + """ + :keyword frontend_ip_configurations: A list of frontend IP configuration resources that should + swap VIPs. + :paramtype frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.LoadBalancerVipSwapRequestFrontendIPConfiguration] + """ + super(LoadBalancerVipSwapRequest, self).__init__(**kwargs) + self.frontend_ip_configurations = frontend_ip_configurations + + +class LoadBalancerVipSwapRequestFrontendIPConfiguration(msrest.serialization.Model): + """VIP swap request's frontend IP configuration object. + + :ivar id: The ID of frontend IP configuration resource. + :vartype id: str + :ivar public_ip_address: A reference to public IP address resource. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + public_ip_address: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: The ID of frontend IP configuration resource. + :paramtype id: str + :keyword public_ip_address: A reference to public IP address resource. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(LoadBalancerVipSwapRequestFrontendIPConfiguration, self).__init__(**kwargs) + self.id = id + self.public_ip_address = public_ip_address + + +class LoadBalancingRule(SubResource): + """A load balancing rule for a load balancer. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the set of load balancing rules used + by the load balancer. This name can be used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar frontend_ip_configuration: A reference to frontend IP addresses. + :vartype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load + balanced across IPs in the backend IPs. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar backend_address_pools: An array of references to pool of DIPs. + :vartype backend_address_pools: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar probe: The reference to the load balancer probe used by the load balancing rule. + :vartype probe: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar protocol: The reference to the transport protocol used by the load balancing rule. + Possible values include: "Udp", "Tcp", "All". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.TransportProtocol + :ivar load_distribution: The load distribution policy for this rule. Possible values include: + "Default", "SourceIP", "SourceIPProtocol". + :vartype load_distribution: str or ~azure.mgmt.network.v2022_01_01.models.LoadDistribution + :ivar frontend_port: The port for the external endpoint. Port numbers for each rule must be + unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0 + enables "Any Port". + :vartype frontend_port: int + :ivar backend_port: The port used for internal connections on the endpoint. Acceptable values + are between 0 and 65535. Note that value 0 enables "Any Port". + :vartype backend_port: int + :ivar idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set + between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the + protocol is set to TCP. + :vartype idle_timeout_in_minutes: int + :ivar enable_floating_ip: Configures a virtual machine's endpoint for the floating IP + capability required to configure a SQL AlwaysOn Availability Group. This setting is required + when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed + after you create the endpoint. + :vartype enable_floating_ip: bool + :ivar enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected + connection termination. This element is only used when the protocol is set to TCP. + :vartype enable_tcp_reset: bool + :ivar disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the + publicIP address specified in the frontend of the load balancing rule. + :vartype disable_outbound_snat: bool + :ivar provisioning_state: The provisioning state of the load balancing rule resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'}, + 'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'}, + 'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[SubResource]'}, + 'probe': {'key': 'properties.probe', 'type': 'SubResource'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'}, + 'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'}, + 'backend_port': {'key': 'properties.backendPort', 'type': 'int'}, + 'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'}, + 'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'}, + 'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'}, + 'disable_outbound_snat': {'key': 'properties.disableOutboundSnat', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + frontend_ip_configuration: Optional["SubResource"] = None, + backend_address_pool: Optional["SubResource"] = None, + backend_address_pools: Optional[List["SubResource"]] = None, + probe: Optional["SubResource"] = None, + protocol: Optional[Union[str, "TransportProtocol"]] = None, + load_distribution: Optional[Union[str, "LoadDistribution"]] = None, + frontend_port: Optional[int] = None, + backend_port: Optional[int] = None, + idle_timeout_in_minutes: Optional[int] = None, + enable_floating_ip: Optional[bool] = None, + enable_tcp_reset: Optional[bool] = None, + disable_outbound_snat: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the set of load balancing rules + used by the load balancer. This name can be used to access the resource. + :paramtype name: str + :keyword frontend_ip_configuration: A reference to frontend IP addresses. + :paramtype frontend_ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load + balanced across IPs in the backend IPs. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword backend_address_pools: An array of references to pool of DIPs. + :paramtype backend_address_pools: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword probe: The reference to the load balancer probe used by the load balancing rule. + :paramtype probe: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword protocol: The reference to the transport protocol used by the load balancing rule. + Possible values include: "Udp", "Tcp", "All". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.TransportProtocol + :keyword load_distribution: The load distribution policy for this rule. Possible values + include: "Default", "SourceIP", "SourceIPProtocol". + :paramtype load_distribution: str or ~azure.mgmt.network.v2022_01_01.models.LoadDistribution + :keyword frontend_port: The port for the external endpoint. Port numbers for each rule must be + unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0 + enables "Any Port". + :paramtype frontend_port: int + :keyword backend_port: The port used for internal connections on the endpoint. Acceptable + values are between 0 and 65535. Note that value 0 enables "Any Port". + :paramtype backend_port: int + :keyword idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set + between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the + protocol is set to TCP. + :paramtype idle_timeout_in_minutes: int + :keyword enable_floating_ip: Configures a virtual machine's endpoint for the floating IP + capability required to configure a SQL AlwaysOn Availability Group. This setting is required + when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed + after you create the endpoint. + :paramtype enable_floating_ip: bool + :keyword enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or + unexpected connection termination. This element is only used when the protocol is set to TCP. + :paramtype enable_tcp_reset: bool + :keyword disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the + publicIP address specified in the frontend of the load balancing rule. + :paramtype disable_outbound_snat: bool + """ + super(LoadBalancingRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.frontend_ip_configuration = frontend_ip_configuration + self.backend_address_pool = backend_address_pool + self.backend_address_pools = backend_address_pools + self.probe = probe + self.protocol = protocol + self.load_distribution = load_distribution + self.frontend_port = frontend_port + self.backend_port = backend_port + self.idle_timeout_in_minutes = idle_timeout_in_minutes + self.enable_floating_ip = enable_floating_ip + self.enable_tcp_reset = enable_tcp_reset + self.disable_outbound_snat = disable_outbound_snat + self.provisioning_state = None + + +class LocalNetworkGateway(Resource): + """A common class for general resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar local_network_address_space: Local network site address space. + :vartype local_network_address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar gateway_ip_address: IP address of local network gateway. + :vartype gateway_ip_address: str + :ivar fqdn: FQDN of local network gateway. + :vartype fqdn: str + :ivar bgp_settings: Local network gateway's BGP speaker settings. + :vartype bgp_settings: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + :ivar resource_guid: The resource GUID property of the local network gateway resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the local network gateway resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'}, + 'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'}, + 'fqdn': {'key': 'properties.fqdn', 'type': 'str'}, + 'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + local_network_address_space: Optional["AddressSpace"] = None, + gateway_ip_address: Optional[str] = None, + fqdn: Optional[str] = None, + bgp_settings: Optional["BgpSettings"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword local_network_address_space: Local network site address space. + :paramtype local_network_address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword gateway_ip_address: IP address of local network gateway. + :paramtype gateway_ip_address: str + :keyword fqdn: FQDN of local network gateway. + :paramtype fqdn: str + :keyword bgp_settings: Local network gateway's BGP speaker settings. + :paramtype bgp_settings: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + """ + super(LocalNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.local_network_address_space = local_network_address_space + self.gateway_ip_address = gateway_ip_address + self.fqdn = fqdn + self.bgp_settings = bgp_settings + self.resource_guid = None + self.provisioning_state = None + + +class LocalNetworkGatewayListResult(msrest.serialization.Model): + """Response for ListLocalNetworkGateways API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of local network gateways that exists in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[LocalNetworkGateway]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["LocalNetworkGateway"]] = None, + **kwargs + ): + """ + :keyword value: A list of local network gateways that exists in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway] + """ + super(LocalNetworkGatewayListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class LogSpecification(msrest.serialization.Model): + """Description of logging specification. + + :ivar name: The name of the specification. + :vartype name: str + :ivar display_name: The display name of the specification. + :vartype display_name: str + :ivar blob_duration: Duration of the blob. + :vartype blob_duration: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'blob_duration': {'key': 'blobDuration', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + display_name: Optional[str] = None, + blob_duration: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the specification. + :paramtype name: str + :keyword display_name: The display name of the specification. + :paramtype display_name: str + :keyword blob_duration: Duration of the blob. + :paramtype blob_duration: str + """ + super(LogSpecification, self).__init__(**kwargs) + self.name = name + self.display_name = display_name + self.blob_duration = blob_duration + + +class ManagedRuleGroupOverride(msrest.serialization.Model): + """Defines a managed rule group override setting. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_group_name: Required. The managed rule group to override. + :vartype rule_group_name: str + :ivar rules: List of rules that will be disabled. If none specified, all rules in the group + will be disabled. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.ManagedRuleOverride] + """ + + _validation = { + 'rule_group_name': {'required': True}, + } + + _attribute_map = { + 'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'}, + 'rules': {'key': 'rules', 'type': '[ManagedRuleOverride]'}, + } + + def __init__( + self, + *, + rule_group_name: str, + rules: Optional[List["ManagedRuleOverride"]] = None, + **kwargs + ): + """ + :keyword rule_group_name: Required. The managed rule group to override. + :paramtype rule_group_name: str + :keyword rules: List of rules that will be disabled. If none specified, all rules in the group + will be disabled. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.ManagedRuleOverride] + """ + super(ManagedRuleGroupOverride, self).__init__(**kwargs) + self.rule_group_name = rule_group_name + self.rules = rules + + +class ManagedRuleOverride(msrest.serialization.Model): + """Defines a managed rule group override setting. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_id: Required. Identifier for the managed rule. + :vartype rule_id: str + :ivar state: The state of the managed rule. Defaults to Disabled if not specified. Possible + values include: "Disabled". + :vartype state: str or ~azure.mgmt.network.v2022_01_01.models.ManagedRuleEnabledState + """ + + _validation = { + 'rule_id': {'required': True}, + } + + _attribute_map = { + 'rule_id': {'key': 'ruleId', 'type': 'str'}, + 'state': {'key': 'state', 'type': 'str'}, + } + + def __init__( + self, + *, + rule_id: str, + state: Optional[Union[str, "ManagedRuleEnabledState"]] = None, + **kwargs + ): + """ + :keyword rule_id: Required. Identifier for the managed rule. + :paramtype rule_id: str + :keyword state: The state of the managed rule. Defaults to Disabled if not specified. Possible + values include: "Disabled". + :paramtype state: str or ~azure.mgmt.network.v2022_01_01.models.ManagedRuleEnabledState + """ + super(ManagedRuleOverride, self).__init__(**kwargs) + self.rule_id = rule_id + self.state = state + + +class ManagedRulesDefinition(msrest.serialization.Model): + """Allow to exclude some variable satisfy the condition for the WAF check. + + All required parameters must be populated in order to send to Azure. + + :ivar exclusions: The Exclusions that are applied on the policy. + :vartype exclusions: list[~azure.mgmt.network.v2022_01_01.models.OwaspCrsExclusionEntry] + :ivar managed_rule_sets: Required. The managed rule sets that are associated with the policy. + :vartype managed_rule_sets: list[~azure.mgmt.network.v2022_01_01.models.ManagedRuleSet] + """ + + _validation = { + 'managed_rule_sets': {'required': True}, + } + + _attribute_map = { + 'exclusions': {'key': 'exclusions', 'type': '[OwaspCrsExclusionEntry]'}, + 'managed_rule_sets': {'key': 'managedRuleSets', 'type': '[ManagedRuleSet]'}, + } + + def __init__( + self, + *, + managed_rule_sets: List["ManagedRuleSet"], + exclusions: Optional[List["OwaspCrsExclusionEntry"]] = None, + **kwargs + ): + """ + :keyword exclusions: The Exclusions that are applied on the policy. + :paramtype exclusions: list[~azure.mgmt.network.v2022_01_01.models.OwaspCrsExclusionEntry] + :keyword managed_rule_sets: Required. The managed rule sets that are associated with the + policy. + :paramtype managed_rule_sets: list[~azure.mgmt.network.v2022_01_01.models.ManagedRuleSet] + """ + super(ManagedRulesDefinition, self).__init__(**kwargs) + self.exclusions = exclusions + self.managed_rule_sets = managed_rule_sets + + +class ManagedRuleSet(msrest.serialization.Model): + """Defines a managed rule set. + + All required parameters must be populated in order to send to Azure. + + :ivar rule_set_type: Required. Defines the rule set type to use. + :vartype rule_set_type: str + :ivar rule_set_version: Required. Defines the version of the rule set to use. + :vartype rule_set_version: str + :ivar rule_group_overrides: Defines the rule group overrides to apply to the rule set. + :vartype rule_group_overrides: + list[~azure.mgmt.network.v2022_01_01.models.ManagedRuleGroupOverride] + """ + + _validation = { + 'rule_set_type': {'required': True}, + 'rule_set_version': {'required': True}, + } + + _attribute_map = { + 'rule_set_type': {'key': 'ruleSetType', 'type': 'str'}, + 'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'}, + 'rule_group_overrides': {'key': 'ruleGroupOverrides', 'type': '[ManagedRuleGroupOverride]'}, + } + + def __init__( + self, + *, + rule_set_type: str, + rule_set_version: str, + rule_group_overrides: Optional[List["ManagedRuleGroupOverride"]] = None, + **kwargs + ): + """ + :keyword rule_set_type: Required. Defines the rule set type to use. + :paramtype rule_set_type: str + :keyword rule_set_version: Required. Defines the version of the rule set to use. + :paramtype rule_set_version: str + :keyword rule_group_overrides: Defines the rule group overrides to apply to the rule set. + :paramtype rule_group_overrides: + list[~azure.mgmt.network.v2022_01_01.models.ManagedRuleGroupOverride] + """ + super(ManagedRuleSet, self).__init__(**kwargs) + self.rule_set_type = rule_set_type + self.rule_set_version = rule_set_version + self.rule_group_overrides = rule_group_overrides + + +class ManagedServiceIdentity(msrest.serialization.Model): + """Identity for the resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar principal_id: The principal id of the system assigned identity. This property will only + be provided for a system assigned identity. + :vartype principal_id: str + :ivar tenant_id: The tenant id of the system assigned identity. This property will only be + provided for a system assigned identity. + :vartype tenant_id: str + :ivar type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' + includes both an implicitly created identity and a set of user assigned identities. The type + 'None' will remove any identities from the virtual machine. Possible values include: + "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned", "None". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.ResourceIdentityType + :ivar user_assigned_identities: The list of user identities associated with resource. The user + identity dictionary key references will be ARM resource ids in the form: + '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + :vartype user_assigned_identities: dict[str, + ~azure.mgmt.network.v2022_01_01.models.Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties] + """ + + _validation = { + 'principal_id': {'readonly': True}, + 'tenant_id': {'readonly': True}, + } + + _attribute_map = { + 'principal_id': {'key': 'principalId', 'type': 'str'}, + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties}'}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "ResourceIdentityType"]] = None, + user_assigned_identities: Optional[Dict[str, "Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None, + **kwargs + ): + """ + :keyword type: The type of identity used for the resource. The type 'SystemAssigned, + UserAssigned' includes both an implicitly created identity and a set of user assigned + identities. The type 'None' will remove any identities from the virtual machine. Possible + values include: "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned", "None". + :paramtype type: str or ~azure.mgmt.network.v2022_01_01.models.ResourceIdentityType + :keyword user_assigned_identities: The list of user identities associated with resource. The + user identity dictionary key references will be ARM resource ids in the form: + '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + :paramtype user_assigned_identities: dict[str, + ~azure.mgmt.network.v2022_01_01.models.Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties] + """ + super(ManagedServiceIdentity, self).__init__(**kwargs) + self.principal_id = None + self.tenant_id = None + self.type = type + self.user_assigned_identities = user_assigned_identities + + +class MatchCondition(msrest.serialization.Model): + """Define match conditions. + + All required parameters must be populated in order to send to Azure. + + :ivar match_variables: Required. List of match variables. + :vartype match_variables: list[~azure.mgmt.network.v2022_01_01.models.MatchVariable] + :ivar operator: Required. The operator to be matched. Possible values include: "IPMatch", + "Equal", "Contains", "LessThan", "GreaterThan", "LessThanOrEqual", "GreaterThanOrEqual", + "BeginsWith", "EndsWith", "Regex", "GeoMatch", "Any". + :vartype operator: str or ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallOperator + :ivar negation_conditon: Whether this is negate condition or not. + :vartype negation_conditon: bool + :ivar match_values: Required. Match value. + :vartype match_values: list[str] + :ivar transforms: List of transforms. + :vartype transforms: list[str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallTransform] + """ + + _validation = { + 'match_variables': {'required': True}, + 'operator': {'required': True}, + 'match_values': {'required': True}, + } + + _attribute_map = { + 'match_variables': {'key': 'matchVariables', 'type': '[MatchVariable]'}, + 'operator': {'key': 'operator', 'type': 'str'}, + 'negation_conditon': {'key': 'negationConditon', 'type': 'bool'}, + 'match_values': {'key': 'matchValues', 'type': '[str]'}, + 'transforms': {'key': 'transforms', 'type': '[str]'}, + } + + def __init__( + self, + *, + match_variables: List["MatchVariable"], + operator: Union[str, "WebApplicationFirewallOperator"], + match_values: List[str], + negation_conditon: Optional[bool] = None, + transforms: Optional[List[Union[str, "WebApplicationFirewallTransform"]]] = None, + **kwargs + ): + """ + :keyword match_variables: Required. List of match variables. + :paramtype match_variables: list[~azure.mgmt.network.v2022_01_01.models.MatchVariable] + :keyword operator: Required. The operator to be matched. Possible values include: "IPMatch", + "Equal", "Contains", "LessThan", "GreaterThan", "LessThanOrEqual", "GreaterThanOrEqual", + "BeginsWith", "EndsWith", "Regex", "GeoMatch", "Any". + :paramtype operator: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallOperator + :keyword negation_conditon: Whether this is negate condition or not. + :paramtype negation_conditon: bool + :keyword match_values: Required. Match value. + :paramtype match_values: list[str] + :keyword transforms: List of transforms. + :paramtype transforms: list[str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallTransform] + """ + super(MatchCondition, self).__init__(**kwargs) + self.match_variables = match_variables + self.operator = operator + self.negation_conditon = negation_conditon + self.match_values = match_values + self.transforms = transforms + + +class MatchedRule(msrest.serialization.Model): + """Matched rule. + + :ivar rule_name: Name of the matched network security rule. + :vartype rule_name: str + :ivar action: The network traffic is allowed or denied. Possible values are 'Allow' and 'Deny'. + :vartype action: str + """ + + _attribute_map = { + 'rule_name': {'key': 'ruleName', 'type': 'str'}, + 'action': {'key': 'action', 'type': 'str'}, + } + + def __init__( + self, + *, + rule_name: Optional[str] = None, + action: Optional[str] = None, + **kwargs + ): + """ + :keyword rule_name: Name of the matched network security rule. + :paramtype rule_name: str + :keyword action: The network traffic is allowed or denied. Possible values are 'Allow' and + 'Deny'. + :paramtype action: str + """ + super(MatchedRule, self).__init__(**kwargs) + self.rule_name = rule_name + self.action = action + + +class MatchVariable(msrest.serialization.Model): + """Define match variables. + + All required parameters must be populated in order to send to Azure. + + :ivar variable_name: Required. Match Variable. Possible values include: "RemoteAddr", + "RequestMethod", "QueryString", "PostArgs", "RequestUri", "RequestHeaders", "RequestBody", + "RequestCookies". + :vartype variable_name: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallMatchVariable + :ivar selector: The selector of match variable. + :vartype selector: str + """ + + _validation = { + 'variable_name': {'required': True}, + } + + _attribute_map = { + 'variable_name': {'key': 'variableName', 'type': 'str'}, + 'selector': {'key': 'selector', 'type': 'str'}, + } + + def __init__( + self, + *, + variable_name: Union[str, "WebApplicationFirewallMatchVariable"], + selector: Optional[str] = None, + **kwargs + ): + """ + :keyword variable_name: Required. Match Variable. Possible values include: "RemoteAddr", + "RequestMethod", "QueryString", "PostArgs", "RequestUri", "RequestHeaders", "RequestBody", + "RequestCookies". + :paramtype variable_name: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallMatchVariable + :keyword selector: The selector of match variable. + :paramtype selector: str + """ + super(MatchVariable, self).__init__(**kwargs) + self.variable_name = variable_name + self.selector = selector + + +class MetricSpecification(msrest.serialization.Model): + """Description of metrics specification. + + :ivar name: The name of the metric. + :vartype name: str + :ivar display_name: The display name of the metric. + :vartype display_name: str + :ivar display_description: The description of the metric. + :vartype display_description: str + :ivar unit: Units the metric to be displayed in. + :vartype unit: str + :ivar aggregation_type: The aggregation type. + :vartype aggregation_type: str + :ivar availabilities: List of availability. + :vartype availabilities: list[~azure.mgmt.network.v2022_01_01.models.Availability] + :ivar enable_regional_mdm_account: Whether regional MDM account enabled. + :vartype enable_regional_mdm_account: bool + :ivar fill_gap_with_zero: Whether gaps would be filled with zeros. + :vartype fill_gap_with_zero: bool + :ivar metric_filter_pattern: Pattern for the filter of the metric. + :vartype metric_filter_pattern: str + :ivar dimensions: List of dimensions. + :vartype dimensions: list[~azure.mgmt.network.v2022_01_01.models.Dimension] + :ivar is_internal: Whether the metric is internal. + :vartype is_internal: bool + :ivar source_mdm_account: The source MDM account. + :vartype source_mdm_account: str + :ivar source_mdm_namespace: The source MDM namespace. + :vartype source_mdm_namespace: str + :ivar resource_id_dimension_name_override: The resource Id dimension name override. + :vartype resource_id_dimension_name_override: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'display_description': {'key': 'displayDescription', 'type': 'str'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'aggregation_type': {'key': 'aggregationType', 'type': 'str'}, + 'availabilities': {'key': 'availabilities', 'type': '[Availability]'}, + 'enable_regional_mdm_account': {'key': 'enableRegionalMdmAccount', 'type': 'bool'}, + 'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'}, + 'metric_filter_pattern': {'key': 'metricFilterPattern', 'type': 'str'}, + 'dimensions': {'key': 'dimensions', 'type': '[Dimension]'}, + 'is_internal': {'key': 'isInternal', 'type': 'bool'}, + 'source_mdm_account': {'key': 'sourceMdmAccount', 'type': 'str'}, + 'source_mdm_namespace': {'key': 'sourceMdmNamespace', 'type': 'str'}, + 'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + display_name: Optional[str] = None, + display_description: Optional[str] = None, + unit: Optional[str] = None, + aggregation_type: Optional[str] = None, + availabilities: Optional[List["Availability"]] = None, + enable_regional_mdm_account: Optional[bool] = None, + fill_gap_with_zero: Optional[bool] = None, + metric_filter_pattern: Optional[str] = None, + dimensions: Optional[List["Dimension"]] = None, + is_internal: Optional[bool] = None, + source_mdm_account: Optional[str] = None, + source_mdm_namespace: Optional[str] = None, + resource_id_dimension_name_override: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the metric. + :paramtype name: str + :keyword display_name: The display name of the metric. + :paramtype display_name: str + :keyword display_description: The description of the metric. + :paramtype display_description: str + :keyword unit: Units the metric to be displayed in. + :paramtype unit: str + :keyword aggregation_type: The aggregation type. + :paramtype aggregation_type: str + :keyword availabilities: List of availability. + :paramtype availabilities: list[~azure.mgmt.network.v2022_01_01.models.Availability] + :keyword enable_regional_mdm_account: Whether regional MDM account enabled. + :paramtype enable_regional_mdm_account: bool + :keyword fill_gap_with_zero: Whether gaps would be filled with zeros. + :paramtype fill_gap_with_zero: bool + :keyword metric_filter_pattern: Pattern for the filter of the metric. + :paramtype metric_filter_pattern: str + :keyword dimensions: List of dimensions. + :paramtype dimensions: list[~azure.mgmt.network.v2022_01_01.models.Dimension] + :keyword is_internal: Whether the metric is internal. + :paramtype is_internal: bool + :keyword source_mdm_account: The source MDM account. + :paramtype source_mdm_account: str + :keyword source_mdm_namespace: The source MDM namespace. + :paramtype source_mdm_namespace: str + :keyword resource_id_dimension_name_override: The resource Id dimension name override. + :paramtype resource_id_dimension_name_override: str + """ + super(MetricSpecification, self).__init__(**kwargs) + self.name = name + self.display_name = display_name + self.display_description = display_description + self.unit = unit + self.aggregation_type = aggregation_type + self.availabilities = availabilities + self.enable_regional_mdm_account = enable_regional_mdm_account + self.fill_gap_with_zero = fill_gap_with_zero + self.metric_filter_pattern = metric_filter_pattern + self.dimensions = dimensions + self.is_internal = is_internal + self.source_mdm_account = source_mdm_account + self.source_mdm_namespace = source_mdm_namespace + self.resource_id_dimension_name_override = resource_id_dimension_name_override + + +class NatGateway(Resource): + """Nat Gateway resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar sku: The nat gateway SKU. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.NatGatewaySku + :ivar zones: A list of availability zones denoting the zone in which Nat Gateway should be + deployed. + :vartype zones: list[str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar idle_timeout_in_minutes: The idle timeout of the nat gateway. + :vartype idle_timeout_in_minutes: int + :ivar public_ip_addresses: An array of public ip addresses associated with the nat gateway + resource. + :vartype public_ip_addresses: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar public_ip_prefixes: An array of public ip prefixes associated with the nat gateway + resource. + :vartype public_ip_prefixes: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar subnets: An array of references to the subnets using this nat gateway resource. + :vartype subnets: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar resource_guid: The resource GUID property of the NAT gateway resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the NAT gateway resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'subnets': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'sku': {'key': 'sku', 'type': 'NatGatewaySku'}, + 'zones': {'key': 'zones', 'type': '[str]'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'}, + 'public_ip_addresses': {'key': 'properties.publicIpAddresses', 'type': '[SubResource]'}, + 'public_ip_prefixes': {'key': 'properties.publicIpPrefixes', 'type': '[SubResource]'}, + 'subnets': {'key': 'properties.subnets', 'type': '[SubResource]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + sku: Optional["NatGatewaySku"] = None, + zones: Optional[List[str]] = None, + idle_timeout_in_minutes: Optional[int] = None, + public_ip_addresses: Optional[List["SubResource"]] = None, + public_ip_prefixes: Optional[List["SubResource"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword sku: The nat gateway SKU. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.NatGatewaySku + :keyword zones: A list of availability zones denoting the zone in which Nat Gateway should be + deployed. + :paramtype zones: list[str] + :keyword idle_timeout_in_minutes: The idle timeout of the nat gateway. + :paramtype idle_timeout_in_minutes: int + :keyword public_ip_addresses: An array of public ip addresses associated with the nat gateway + resource. + :paramtype public_ip_addresses: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword public_ip_prefixes: An array of public ip prefixes associated with the nat gateway + resource. + :paramtype public_ip_prefixes: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + super(NatGateway, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.sku = sku + self.zones = zones + self.etag = None + self.idle_timeout_in_minutes = idle_timeout_in_minutes + self.public_ip_addresses = public_ip_addresses + self.public_ip_prefixes = public_ip_prefixes + self.subnets = None + self.resource_guid = None + self.provisioning_state = None + + +class NatGatewayListResult(msrest.serialization.Model): + """Response for ListNatGateways API service call. + + :ivar value: A list of Nat Gateways that exists in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NatGateway] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NatGateway]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NatGateway"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of Nat Gateways that exists in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NatGateway] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(NatGatewayListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NatGatewaySku(msrest.serialization.Model): + """SKU of nat gateway. + + :ivar name: Name of Nat Gateway SKU. Possible values include: "Standard". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.NatGatewaySkuName + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "NatGatewaySkuName"]] = None, + **kwargs + ): + """ + :keyword name: Name of Nat Gateway SKU. Possible values include: "Standard". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.NatGatewaySkuName + """ + super(NatGatewaySku, self).__init__(**kwargs) + self.name = name + + +class NatRule(FirewallPolicyRule): + """Rule of type nat. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Name of the rule. + :vartype name: str + :ivar description: Description of the rule. + :vartype description: str + :ivar rule_type: Required. Rule Type.Constant filled by server. Possible values include: + "ApplicationRule", "NetworkRule", "NatRule". + :vartype rule_type: str or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleType + :ivar ip_protocols: Array of FirewallPolicyRuleNetworkProtocols. + :vartype ip_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleNetworkProtocol] + :ivar source_addresses: List of source IP addresses for this rule. + :vartype source_addresses: list[str] + :ivar destination_addresses: List of destination IP addresses or Service Tags. + :vartype destination_addresses: list[str] + :ivar destination_ports: List of destination ports. + :vartype destination_ports: list[str] + :ivar translated_address: The translated address for this NAT rule. + :vartype translated_address: str + :ivar translated_port: The translated port for this NAT rule. + :vartype translated_port: str + :ivar source_ip_groups: List of source IpGroups for this rule. + :vartype source_ip_groups: list[str] + :ivar translated_fqdn: The translated FQDN for this NAT rule. + :vartype translated_fqdn: str + """ + + _validation = { + 'rule_type': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'rule_type': {'key': 'ruleType', 'type': 'str'}, + 'ip_protocols': {'key': 'ipProtocols', 'type': '[str]'}, + 'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'}, + 'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'}, + 'destination_ports': {'key': 'destinationPorts', 'type': '[str]'}, + 'translated_address': {'key': 'translatedAddress', 'type': 'str'}, + 'translated_port': {'key': 'translatedPort', 'type': 'str'}, + 'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'}, + 'translated_fqdn': {'key': 'translatedFqdn', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + ip_protocols: Optional[List[Union[str, "FirewallPolicyRuleNetworkProtocol"]]] = None, + source_addresses: Optional[List[str]] = None, + destination_addresses: Optional[List[str]] = None, + destination_ports: Optional[List[str]] = None, + translated_address: Optional[str] = None, + translated_port: Optional[str] = None, + source_ip_groups: Optional[List[str]] = None, + translated_fqdn: Optional[str] = None, + **kwargs + ): + """ + :keyword name: Name of the rule. + :paramtype name: str + :keyword description: Description of the rule. + :paramtype description: str + :keyword ip_protocols: Array of FirewallPolicyRuleNetworkProtocols. + :paramtype ip_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleNetworkProtocol] + :keyword source_addresses: List of source IP addresses for this rule. + :paramtype source_addresses: list[str] + :keyword destination_addresses: List of destination IP addresses or Service Tags. + :paramtype destination_addresses: list[str] + :keyword destination_ports: List of destination ports. + :paramtype destination_ports: list[str] + :keyword translated_address: The translated address for this NAT rule. + :paramtype translated_address: str + :keyword translated_port: The translated port for this NAT rule. + :paramtype translated_port: str + :keyword source_ip_groups: List of source IpGroups for this rule. + :paramtype source_ip_groups: list[str] + :keyword translated_fqdn: The translated FQDN for this NAT rule. + :paramtype translated_fqdn: str + """ + super(NatRule, self).__init__(name=name, description=description, **kwargs) + self.rule_type = 'NatRule' # type: str + self.ip_protocols = ip_protocols + self.source_addresses = source_addresses + self.destination_addresses = destination_addresses + self.destination_ports = destination_ports + self.translated_address = translated_address + self.translated_port = translated_port + self.source_ip_groups = source_ip_groups + self.translated_fqdn = translated_fqdn + + +class NatRulePortMapping(msrest.serialization.Model): + """Individual port mappings for inbound NAT rule created for backend pool. + + :ivar inbound_nat_rule_name: Name of inbound NAT rule. + :vartype inbound_nat_rule_name: str + :ivar frontend_port: Frontend port. + :vartype frontend_port: int + :ivar backend_port: Backend port. + :vartype backend_port: int + """ + + _attribute_map = { + 'inbound_nat_rule_name': {'key': 'inboundNatRuleName', 'type': 'str'}, + 'frontend_port': {'key': 'frontendPort', 'type': 'int'}, + 'backend_port': {'key': 'backendPort', 'type': 'int'}, + } + + def __init__( + self, + *, + inbound_nat_rule_name: Optional[str] = None, + frontend_port: Optional[int] = None, + backend_port: Optional[int] = None, + **kwargs + ): + """ + :keyword inbound_nat_rule_name: Name of inbound NAT rule. + :paramtype inbound_nat_rule_name: str + :keyword frontend_port: Frontend port. + :paramtype frontend_port: int + :keyword backend_port: Backend port. + :paramtype backend_port: int + """ + super(NatRulePortMapping, self).__init__(**kwargs) + self.inbound_nat_rule_name = inbound_nat_rule_name + self.frontend_port = frontend_port + self.backend_port = backend_port + + +class NetworkConfigurationDiagnosticParameters(msrest.serialization.Model): + """Parameters to get network configuration diagnostic. + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. The ID of the target resource to perform network + configuration diagnostic. Valid options are VM, NetworkInterface, VMSS/NetworkInterface and + Application Gateway. + :vartype target_resource_id: str + :ivar verbosity_level: Verbosity level. Possible values include: "Normal", "Minimum", "Full". + :vartype verbosity_level: str or ~azure.mgmt.network.v2022_01_01.models.VerbosityLevel + :ivar profiles: Required. List of network configuration diagnostic profiles. + :vartype profiles: + list[~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticProfile] + """ + + _validation = { + 'target_resource_id': {'required': True}, + 'profiles': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + 'verbosity_level': {'key': 'verbosityLevel', 'type': 'str'}, + 'profiles': {'key': 'profiles', 'type': '[NetworkConfigurationDiagnosticProfile]'}, + } + + def __init__( + self, + *, + target_resource_id: str, + profiles: List["NetworkConfigurationDiagnosticProfile"], + verbosity_level: Optional[Union[str, "VerbosityLevel"]] = None, + **kwargs + ): + """ + :keyword target_resource_id: Required. The ID of the target resource to perform network + configuration diagnostic. Valid options are VM, NetworkInterface, VMSS/NetworkInterface and + Application Gateway. + :paramtype target_resource_id: str + :keyword verbosity_level: Verbosity level. Possible values include: "Normal", "Minimum", + "Full". + :paramtype verbosity_level: str or ~azure.mgmt.network.v2022_01_01.models.VerbosityLevel + :keyword profiles: Required. List of network configuration diagnostic profiles. + :paramtype profiles: + list[~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticProfile] + """ + super(NetworkConfigurationDiagnosticParameters, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + self.verbosity_level = verbosity_level + self.profiles = profiles + + +class NetworkConfigurationDiagnosticProfile(msrest.serialization.Model): + """Parameters to compare with network configuration. + + All required parameters must be populated in order to send to Azure. + + :ivar direction: Required. The direction of the traffic. Possible values include: "Inbound", + "Outbound". + :vartype direction: str or ~azure.mgmt.network.v2022_01_01.models.Direction + :ivar protocol: Required. Protocol to be verified on. Accepted values are '*', TCP, UDP. + :vartype protocol: str + :ivar source: Required. Traffic source. Accepted values are '*', IP Address/CIDR, Service Tag. + :vartype source: str + :ivar destination: Required. Traffic destination. Accepted values are: '*', IP Address/CIDR, + Service Tag. + :vartype destination: str + :ivar destination_port: Required. Traffic destination port. Accepted values are '*' and a + single port in the range (0 - 65535). + :vartype destination_port: str + """ + + _validation = { + 'direction': {'required': True}, + 'protocol': {'required': True}, + 'source': {'required': True}, + 'destination': {'required': True}, + 'destination_port': {'required': True}, + } + + _attribute_map = { + 'direction': {'key': 'direction', 'type': 'str'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'source': {'key': 'source', 'type': 'str'}, + 'destination': {'key': 'destination', 'type': 'str'}, + 'destination_port': {'key': 'destinationPort', 'type': 'str'}, + } + + def __init__( + self, + *, + direction: Union[str, "Direction"], + protocol: str, + source: str, + destination: str, + destination_port: str, + **kwargs + ): + """ + :keyword direction: Required. The direction of the traffic. Possible values include: "Inbound", + "Outbound". + :paramtype direction: str or ~azure.mgmt.network.v2022_01_01.models.Direction + :keyword protocol: Required. Protocol to be verified on. Accepted values are '*', TCP, UDP. + :paramtype protocol: str + :keyword source: Required. Traffic source. Accepted values are '*', IP Address/CIDR, Service + Tag. + :paramtype source: str + :keyword destination: Required. Traffic destination. Accepted values are: '*', IP Address/CIDR, + Service Tag. + :paramtype destination: str + :keyword destination_port: Required. Traffic destination port. Accepted values are '*' and a + single port in the range (0 - 65535). + :paramtype destination_port: str + """ + super(NetworkConfigurationDiagnosticProfile, self).__init__(**kwargs) + self.direction = direction + self.protocol = protocol + self.source = source + self.destination = destination + self.destination_port = destination_port + + +class NetworkConfigurationDiagnosticResponse(msrest.serialization.Model): + """Results of network configuration diagnostic on the target resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar results: List of network configuration diagnostic results. + :vartype results: + list[~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticResult] + """ + + _validation = { + 'results': {'readonly': True}, + } + + _attribute_map = { + 'results': {'key': 'results', 'type': '[NetworkConfigurationDiagnosticResult]'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(NetworkConfigurationDiagnosticResponse, self).__init__(**kwargs) + self.results = None + + +class NetworkConfigurationDiagnosticResult(msrest.serialization.Model): + """Network configuration diagnostic result corresponded to provided traffic query. + + :ivar profile: Network configuration diagnostic profile. + :vartype profile: ~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticProfile + :ivar network_security_group_result: Network security group result. + :vartype network_security_group_result: + ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroupResult + """ + + _attribute_map = { + 'profile': {'key': 'profile', 'type': 'NetworkConfigurationDiagnosticProfile'}, + 'network_security_group_result': {'key': 'networkSecurityGroupResult', 'type': 'NetworkSecurityGroupResult'}, + } + + def __init__( + self, + *, + profile: Optional["NetworkConfigurationDiagnosticProfile"] = None, + network_security_group_result: Optional["NetworkSecurityGroupResult"] = None, + **kwargs + ): + """ + :keyword profile: Network configuration diagnostic profile. + :paramtype profile: + ~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticProfile + :keyword network_security_group_result: Network security group result. + :paramtype network_security_group_result: + ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroupResult + """ + super(NetworkConfigurationDiagnosticResult, self).__init__(**kwargs) + self.profile = profile + self.network_security_group_result = network_security_group_result + + +class NetworkGroup(ChildResource): + """The network group resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar description: A description of the network group. + :vartype description: str + :ivar provisioning_state: The provisioning state of the scope assignment resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'system_data': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + description: Optional[str] = None, + **kwargs + ): + """ + :keyword description: A description of the network group. + :paramtype description: str + """ + super(NetworkGroup, self).__init__(**kwargs) + self.system_data = None + self.description = description + self.provisioning_state = None + + +class NetworkGroupListResult(msrest.serialization.Model): + """Result of the request to list NetworkGroup. It contains a list of groups and a URL link to get the next set of results. + + :ivar value: Gets a page of NetworkGroup. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkGroup] + :ivar next_link: Gets the URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkGroup"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of NetworkGroup. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkGroup] + :keyword next_link: Gets the URL to get the next set of results. + :paramtype next_link: str + """ + super(NetworkGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkIntentPolicy(Resource): + """Network Intent Policy resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ + super(NetworkIntentPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + + +class NetworkIntentPolicyConfiguration(msrest.serialization.Model): + """Details of NetworkIntentPolicyConfiguration for PrepareNetworkPoliciesRequest. + + :ivar network_intent_policy_name: The name of the Network Intent Policy for storing in target + subscription. + :vartype network_intent_policy_name: str + :ivar source_network_intent_policy: Source network intent policy. + :vartype source_network_intent_policy: + ~azure.mgmt.network.v2022_01_01.models.NetworkIntentPolicy + """ + + _attribute_map = { + 'network_intent_policy_name': {'key': 'networkIntentPolicyName', 'type': 'str'}, + 'source_network_intent_policy': {'key': 'sourceNetworkIntentPolicy', 'type': 'NetworkIntentPolicy'}, + } + + def __init__( + self, + *, + network_intent_policy_name: Optional[str] = None, + source_network_intent_policy: Optional["NetworkIntentPolicy"] = None, + **kwargs + ): + """ + :keyword network_intent_policy_name: The name of the Network Intent Policy for storing in + target subscription. + :paramtype network_intent_policy_name: str + :keyword source_network_intent_policy: Source network intent policy. + :paramtype source_network_intent_policy: + ~azure.mgmt.network.v2022_01_01.models.NetworkIntentPolicy + """ + super(NetworkIntentPolicyConfiguration, self).__init__(**kwargs) + self.network_intent_policy_name = network_intent_policy_name + self.source_network_intent_policy = source_network_intent_policy + + +class NetworkInterface(Resource): + """A network interface in a resource group. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the network interface. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar virtual_machine: The reference to a virtual machine. + :vartype virtual_machine: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar network_security_group: The reference to the NetworkSecurityGroup resource. + :vartype network_security_group: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :ivar private_endpoint: A reference to the private endpoint to which the network interface is + linked. + :vartype private_endpoint: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint + :ivar ip_configurations: A list of IPConfigurations of the network interface. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration] + :ivar tap_configurations: A list of TapConfigurations of the network interface. + :vartype tap_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration] + :ivar dns_settings: The DNS settings in network interface. + :vartype dns_settings: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceDnsSettings + :ivar mac_address: The MAC address of the network interface. + :vartype mac_address: str + :ivar primary: Whether this is a primary network interface on a virtual machine. + :vartype primary: bool + :ivar vnet_encryption_supported: Whether the virtual machine this nic is attached to supports + encryption. + :vartype vnet_encryption_supported: bool + :ivar enable_accelerated_networking: If the network interface is accelerated networking + enabled. + :vartype enable_accelerated_networking: bool + :ivar enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network + interface. + :vartype enable_ip_forwarding: bool + :ivar hosted_workloads: A list of references to linked BareMetal resources. + :vartype hosted_workloads: list[str] + :ivar dscp_configuration: A reference to the dscp configuration to which the network interface + is linked. + :vartype dscp_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar resource_guid: The resource GUID property of the network interface resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the network interface resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar workload_type: WorkloadType of the NetworkInterface for BareMetal resources. + :vartype workload_type: str + :ivar nic_type: Type of Network Interface resource. Possible values include: "Standard", + "Elastic". + :vartype nic_type: str or ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceNicType + :ivar private_link_service: Privatelinkservice of the network interface resource. + :vartype private_link_service: ~azure.mgmt.network.v2022_01_01.models.PrivateLinkService + :ivar migration_phase: Migration phase of Network Interface resource. Possible values include: + "None", "Prepare", "Commit", "Abort", "Committed". + :vartype migration_phase: str or + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceMigrationPhase + :ivar auxiliary_mode: Auxiliary mode of Network Interface resource. Possible values include: + "None", "MaxConnections", "Floating". + :vartype auxiliary_mode: str or + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceAuxiliaryMode + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'virtual_machine': {'readonly': True}, + 'private_endpoint': {'readonly': True}, + 'tap_configurations': {'readonly': True}, + 'mac_address': {'readonly': True}, + 'primary': {'readonly': True}, + 'vnet_encryption_supported': {'readonly': True}, + 'hosted_workloads': {'readonly': True}, + 'dscp_configuration': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'}, + 'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'}, + 'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'}, + 'tap_configurations': {'key': 'properties.tapConfigurations', 'type': '[NetworkInterfaceTapConfiguration]'}, + 'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'}, + 'mac_address': {'key': 'properties.macAddress', 'type': 'str'}, + 'primary': {'key': 'properties.primary', 'type': 'bool'}, + 'vnet_encryption_supported': {'key': 'properties.vnetEncryptionSupported', 'type': 'bool'}, + 'enable_accelerated_networking': {'key': 'properties.enableAcceleratedNetworking', 'type': 'bool'}, + 'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'}, + 'hosted_workloads': {'key': 'properties.hostedWorkloads', 'type': '[str]'}, + 'dscp_configuration': {'key': 'properties.dscpConfiguration', 'type': 'SubResource'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'workload_type': {'key': 'properties.workloadType', 'type': 'str'}, + 'nic_type': {'key': 'properties.nicType', 'type': 'str'}, + 'private_link_service': {'key': 'properties.privateLinkService', 'type': 'PrivateLinkService'}, + 'migration_phase': {'key': 'properties.migrationPhase', 'type': 'str'}, + 'auxiliary_mode': {'key': 'properties.auxiliaryMode', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + network_security_group: Optional["NetworkSecurityGroup"] = None, + ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None, + dns_settings: Optional["NetworkInterfaceDnsSettings"] = None, + enable_accelerated_networking: Optional[bool] = None, + enable_ip_forwarding: Optional[bool] = None, + workload_type: Optional[str] = None, + nic_type: Optional[Union[str, "NetworkInterfaceNicType"]] = None, + private_link_service: Optional["PrivateLinkService"] = None, + migration_phase: Optional[Union[str, "NetworkInterfaceMigrationPhase"]] = None, + auxiliary_mode: Optional[Union[str, "NetworkInterfaceAuxiliaryMode"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the network interface. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword network_security_group: The reference to the NetworkSecurityGroup resource. + :paramtype network_security_group: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :keyword ip_configurations: A list of IPConfigurations of the network interface. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration] + :keyword dns_settings: The DNS settings in network interface. + :paramtype dns_settings: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceDnsSettings + :keyword enable_accelerated_networking: If the network interface is accelerated networking + enabled. + :paramtype enable_accelerated_networking: bool + :keyword enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network + interface. + :paramtype enable_ip_forwarding: bool + :keyword workload_type: WorkloadType of the NetworkInterface for BareMetal resources. + :paramtype workload_type: str + :keyword nic_type: Type of Network Interface resource. Possible values include: "Standard", + "Elastic". + :paramtype nic_type: str or ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceNicType + :keyword private_link_service: Privatelinkservice of the network interface resource. + :paramtype private_link_service: ~azure.mgmt.network.v2022_01_01.models.PrivateLinkService + :keyword migration_phase: Migration phase of Network Interface resource. Possible values + include: "None", "Prepare", "Commit", "Abort", "Committed". + :paramtype migration_phase: str or + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceMigrationPhase + :keyword auxiliary_mode: Auxiliary mode of Network Interface resource. Possible values include: + "None", "MaxConnections", "Floating". + :paramtype auxiliary_mode: str or + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceAuxiliaryMode + """ + super(NetworkInterface, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.etag = None + self.virtual_machine = None + self.network_security_group = network_security_group + self.private_endpoint = None + self.ip_configurations = ip_configurations + self.tap_configurations = None + self.dns_settings = dns_settings + self.mac_address = None + self.primary = None + self.vnet_encryption_supported = None + self.enable_accelerated_networking = enable_accelerated_networking + self.enable_ip_forwarding = enable_ip_forwarding + self.hosted_workloads = None + self.dscp_configuration = None + self.resource_guid = None + self.provisioning_state = None + self.workload_type = workload_type + self.nic_type = nic_type + self.private_link_service = private_link_service + self.migration_phase = migration_phase + self.auxiliary_mode = auxiliary_mode + + +class NetworkInterfaceAssociation(msrest.serialization.Model): + """Network interface and its custom security rules. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Network interface ID. + :vartype id: str + :ivar security_rules: Collection of custom security rules. + :vartype security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + """ + + _validation = { + 'id': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'}, + } + + def __init__( + self, + *, + security_rules: Optional[List["SecurityRule"]] = None, + **kwargs + ): + """ + :keyword security_rules: Collection of custom security rules. + :paramtype security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + """ + super(NetworkInterfaceAssociation, self).__init__(**kwargs) + self.id = None + self.security_rules = security_rules + + +class NetworkInterfaceDnsSettings(msrest.serialization.Model): + """DNS settings of a network interface. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure + provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be + the only value in dnsServers collection. + :vartype dns_servers: list[str] + :ivar applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then + this list will have the union of all DNS servers from all NICs that are part of the + Availability Set. This property is what is configured on each of those VMs. + :vartype applied_dns_servers: list[str] + :ivar internal_dns_name_label: Relative DNS name for this NIC used for internal communications + between VMs in the same virtual network. + :vartype internal_dns_name_label: str + :ivar internal_fqdn: Fully qualified DNS name supporting internal communications between VMs in + the same virtual network. + :vartype internal_fqdn: str + :ivar internal_domain_name_suffix: Even if internalDnsNameLabel is not specified, a DNS entry + is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the + VM name with the value of internalDomainNameSuffix. + :vartype internal_domain_name_suffix: str + """ + + _validation = { + 'applied_dns_servers': {'readonly': True}, + 'internal_fqdn': {'readonly': True}, + 'internal_domain_name_suffix': {'readonly': True}, + } + + _attribute_map = { + 'dns_servers': {'key': 'dnsServers', 'type': '[str]'}, + 'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'}, + 'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'}, + 'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'}, + 'internal_domain_name_suffix': {'key': 'internalDomainNameSuffix', 'type': 'str'}, + } + + def __init__( + self, + *, + dns_servers: Optional[List[str]] = None, + internal_dns_name_label: Optional[str] = None, + **kwargs + ): + """ + :keyword dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to + azure provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it + must be the only value in dnsServers collection. + :paramtype dns_servers: list[str] + :keyword internal_dns_name_label: Relative DNS name for this NIC used for internal + communications between VMs in the same virtual network. + :paramtype internal_dns_name_label: str + """ + super(NetworkInterfaceDnsSettings, self).__init__(**kwargs) + self.dns_servers = dns_servers + self.applied_dns_servers = None + self.internal_dns_name_label = internal_dns_name_label + self.internal_fqdn = None + self.internal_domain_name_suffix = None + + +class NetworkInterfaceIPConfiguration(SubResource): + """IPConfiguration in a network interface. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar gateway_load_balancer: The reference to gateway load balancer frontend IP. + :vartype gateway_load_balancer: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar virtual_network_taps: The reference to Virtual Network Taps. + :vartype virtual_network_taps: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap] + :ivar application_gateway_backend_address_pools: The reference to + ApplicationGatewayBackendAddressPool resource. + :vartype application_gateway_backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool] + :ivar load_balancer_backend_address_pools: The reference to LoadBalancerBackendAddressPool + resource. + :vartype load_balancer_backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + :ivar load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules. + :vartype load_balancer_inbound_nat_rules: + list[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + :ivar private_ip_address: Private IP address of the IP configuration. + :vartype private_ip_address: str + :ivar private_ip_allocation_method: The private IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6. + Default is IPv4. Possible values include: "IPv4", "IPv6". + :vartype private_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :ivar subnet: Subnet bound to the IP configuration. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :ivar primary: Whether this is a primary customer address on the network interface. + :vartype primary: bool + :ivar public_ip_address: Public IP address bound to the IP configuration. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :ivar application_security_groups: Application security groups in which the IP configuration is + included. + :vartype application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :ivar provisioning_state: The provisioning state of the network interface IP configuration. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_link_connection_properties: PrivateLinkConnection properties for the network + interface. + :vartype private_link_connection_properties: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'private_link_connection_properties': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'gateway_load_balancer': {'key': 'properties.gatewayLoadBalancer', 'type': 'SubResource'}, + 'virtual_network_taps': {'key': 'properties.virtualNetworkTaps', 'type': '[VirtualNetworkTap]'}, + 'application_gateway_backend_address_pools': {'key': 'properties.applicationGatewayBackendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'}, + 'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'}, + 'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'Subnet'}, + 'primary': {'key': 'properties.primary', 'type': 'bool'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'}, + 'application_security_groups': {'key': 'properties.applicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_link_connection_properties': {'key': 'properties.privateLinkConnectionProperties', 'type': 'NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type: Optional[str] = None, + gateway_load_balancer: Optional["SubResource"] = None, + virtual_network_taps: Optional[List["VirtualNetworkTap"]] = None, + application_gateway_backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None, + load_balancer_backend_address_pools: Optional[List["BackendAddressPool"]] = None, + load_balancer_inbound_nat_rules: Optional[List["InboundNatRule"]] = None, + private_ip_address: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + private_ip_address_version: Optional[Union[str, "IPVersion"]] = None, + subnet: Optional["Subnet"] = None, + primary: Optional[bool] = None, + public_ip_address: Optional["PublicIPAddress"] = None, + application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type: Resource type. + :paramtype type: str + :keyword gateway_load_balancer: The reference to gateway load balancer frontend IP. + :paramtype gateway_load_balancer: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword virtual_network_taps: The reference to Virtual Network Taps. + :paramtype virtual_network_taps: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap] + :keyword application_gateway_backend_address_pools: The reference to + ApplicationGatewayBackendAddressPool resource. + :paramtype application_gateway_backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendAddressPool] + :keyword load_balancer_backend_address_pools: The reference to LoadBalancerBackendAddressPool + resource. + :paramtype load_balancer_backend_address_pools: + list[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + :keyword load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules. + :paramtype load_balancer_inbound_nat_rules: + list[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + :keyword private_ip_address: Private IP address of the IP configuration. + :paramtype private_ip_address: str + :keyword private_ip_allocation_method: The private IP address allocation method. Possible + values include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6. + Default is IPv4. Possible values include: "IPv4", "IPv6". + :paramtype private_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :keyword subnet: Subnet bound to the IP configuration. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword primary: Whether this is a primary customer address on the network interface. + :paramtype primary: bool + :keyword public_ip_address: Public IP address bound to the IP configuration. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :keyword application_security_groups: Application security groups in which the IP configuration + is included. + :paramtype application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + """ + super(NetworkInterfaceIPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = type + self.gateway_load_balancer = gateway_load_balancer + self.virtual_network_taps = virtual_network_taps + self.application_gateway_backend_address_pools = application_gateway_backend_address_pools + self.load_balancer_backend_address_pools = load_balancer_backend_address_pools + self.load_balancer_inbound_nat_rules = load_balancer_inbound_nat_rules + self.private_ip_address = private_ip_address + self.private_ip_allocation_method = private_ip_allocation_method + self.private_ip_address_version = private_ip_address_version + self.subnet = subnet + self.primary = primary + self.public_ip_address = public_ip_address + self.application_security_groups = application_security_groups + self.provisioning_state = None + self.private_link_connection_properties = None + + +class NetworkInterfaceIPConfigurationListResult(msrest.serialization.Model): + """Response for list ip configurations API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of ip configurations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkInterfaceIPConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkInterfaceIPConfiguration"]] = None, + **kwargs + ): + """ + :keyword value: A list of ip configurations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration] + """ + super(NetworkInterfaceIPConfigurationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties(msrest.serialization.Model): + """PrivateLinkConnection properties for the network interface. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar group_id: The group ID for current private link connection. + :vartype group_id: str + :ivar required_member_name: The required member name for current private link connection. + :vartype required_member_name: str + :ivar fqdns: List of FQDNs for current private link connection. + :vartype fqdns: list[str] + """ + + _validation = { + 'group_id': {'readonly': True}, + 'required_member_name': {'readonly': True}, + 'fqdns': {'readonly': True}, + } + + _attribute_map = { + 'group_id': {'key': 'groupId', 'type': 'str'}, + 'required_member_name': {'key': 'requiredMemberName', 'type': 'str'}, + 'fqdns': {'key': 'fqdns', 'type': '[str]'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties, self).__init__(**kwargs) + self.group_id = None + self.required_member_name = None + self.fqdns = None + + +class NetworkInterfaceListResult(msrest.serialization.Model): + """Response for the ListNetworkInterface API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of network interfaces in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkInterface]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkInterface"]] = None, + **kwargs + ): + """ + :keyword value: A list of network interfaces in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + """ + super(NetworkInterfaceListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class NetworkInterfaceLoadBalancerListResult(msrest.serialization.Model): + """Response for list ip configurations API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of load balancers. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancer] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[LoadBalancer]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["LoadBalancer"]] = None, + **kwargs + ): + """ + :keyword value: A list of load balancers. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.LoadBalancer] + """ + super(NetworkInterfaceLoadBalancerListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class NetworkInterfaceTapConfiguration(SubResource): + """Tap configuration in a Network Interface. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Sub Resource type. + :vartype type: str + :ivar virtual_network_tap: The reference to the Virtual Network Tap resource. + :vartype virtual_network_tap: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + :ivar provisioning_state: The provisioning state of the network interface tap configuration + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'virtual_network_tap': {'key': 'properties.virtualNetworkTap', 'type': 'VirtualNetworkTap'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + virtual_network_tap: Optional["VirtualNetworkTap"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword virtual_network_tap: The reference to the Virtual Network Tap resource. + :paramtype virtual_network_tap: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + """ + super(NetworkInterfaceTapConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.virtual_network_tap = virtual_network_tap + self.provisioning_state = None + + +class NetworkInterfaceTapConfigurationListResult(msrest.serialization.Model): + """Response for list tap configurations API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of tap configurations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkInterfaceTapConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkInterfaceTapConfiguration"]] = None, + **kwargs + ): + """ + :keyword value: A list of tap configurations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration] + """ + super(NetworkInterfaceTapConfigurationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class NetworkManager(Resource): + """The Managed Network resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar description: A description of the network manager. + :vartype description: str + :ivar network_manager_scopes: Scope of Network Manager. + :vartype network_manager_scopes: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerPropertiesNetworkManagerScopes + :ivar network_manager_scope_accesses: Scope Access. + :vartype network_manager_scope_accesses: list[str or + ~azure.mgmt.network.v2022_01_01.models.ConfigurationType] + :ivar provisioning_state: The provisioning state of the network manager resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'system_data': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'network_manager_scopes': {'key': 'properties.networkManagerScopes', 'type': 'NetworkManagerPropertiesNetworkManagerScopes'}, + 'network_manager_scope_accesses': {'key': 'properties.networkManagerScopeAccesses', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + description: Optional[str] = None, + network_manager_scopes: Optional["NetworkManagerPropertiesNetworkManagerScopes"] = None, + network_manager_scope_accesses: Optional[List[Union[str, "ConfigurationType"]]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword description: A description of the network manager. + :paramtype description: str + :keyword network_manager_scopes: Scope of Network Manager. + :paramtype network_manager_scopes: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerPropertiesNetworkManagerScopes + :keyword network_manager_scope_accesses: Scope Access. + :paramtype network_manager_scope_accesses: list[str or + ~azure.mgmt.network.v2022_01_01.models.ConfigurationType] + """ + super(NetworkManager, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.system_data = None + self.description = description + self.network_manager_scopes = network_manager_scopes + self.network_manager_scope_accesses = network_manager_scope_accesses + self.provisioning_state = None + + +class NetworkManagerCommit(msrest.serialization.Model): + """Network Manager Commit. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar commit_id: Commit Id. + :vartype commit_id: str + :ivar target_locations: Required. List of target locations. + :vartype target_locations: list[str] + :ivar configuration_ids: List of configuration ids. + :vartype configuration_ids: list[str] + :ivar commit_type: Required. Commit Type. Possible values include: "SecurityAdmin", + "Connectivity". + :vartype commit_type: str or ~azure.mgmt.network.v2022_01_01.models.ConfigurationType + """ + + _validation = { + 'commit_id': {'readonly': True}, + 'target_locations': {'required': True}, + 'commit_type': {'required': True}, + } + + _attribute_map = { + 'commit_id': {'key': 'commitId', 'type': 'str'}, + 'target_locations': {'key': 'targetLocations', 'type': '[str]'}, + 'configuration_ids': {'key': 'configurationIds', 'type': '[str]'}, + 'commit_type': {'key': 'commitType', 'type': 'str'}, + } + + def __init__( + self, + *, + target_locations: List[str], + commit_type: Union[str, "ConfigurationType"], + configuration_ids: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword target_locations: Required. List of target locations. + :paramtype target_locations: list[str] + :keyword configuration_ids: List of configuration ids. + :paramtype configuration_ids: list[str] + :keyword commit_type: Required. Commit Type. Possible values include: "SecurityAdmin", + "Connectivity". + :paramtype commit_type: str or ~azure.mgmt.network.v2022_01_01.models.ConfigurationType + """ + super(NetworkManagerCommit, self).__init__(**kwargs) + self.commit_id = None + self.target_locations = target_locations + self.configuration_ids = configuration_ids + self.commit_type = commit_type + + +class NetworkManagerConnection(ChildResource): + """The Network Manager Connection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar network_manager_id: Network Manager Id. + :vartype network_manager_id: str + :ivar connection_state: Connection state. Possible values include: "Connected", "Pending", + "Conflict", "Revoked", "Rejected". + :vartype connection_state: str or ~azure.mgmt.network.v2022_01_01.models.ScopeConnectionState + :ivar description: A description of the network manager connection. + :vartype description: str + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'system_data': {'readonly': True}, + 'connection_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'network_manager_id': {'key': 'properties.networkManagerId', 'type': 'str'}, + 'connection_state': {'key': 'properties.connectionState', 'type': 'str'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + } + + def __init__( + self, + *, + network_manager_id: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + """ + :keyword network_manager_id: Network Manager Id. + :paramtype network_manager_id: str + :keyword description: A description of the network manager connection. + :paramtype description: str + """ + super(NetworkManagerConnection, self).__init__(**kwargs) + self.system_data = None + self.network_manager_id = network_manager_id + self.connection_state = None + self.description = description + + +class NetworkManagerConnectionListResult(msrest.serialization.Model): + """List of network manager connections. + + :ivar value: List of network manager connections. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection] + :ivar next_link: Gets the URL to get the next page of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkManagerConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkManagerConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of network manager connections. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection] + :keyword next_link: Gets the URL to get the next page of results. + :paramtype next_link: str + """ + super(NetworkManagerConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkManagerDeploymentStatus(msrest.serialization.Model): + """Network Manager Deployment Status. + + :ivar commit_time: Commit Time. + :vartype commit_time: ~datetime.datetime + :ivar region: Region Name. + :vartype region: str + :ivar deployment_status: Deployment Status. Possible values include: "NotStarted", "Deploying", + "Deployed", "Failed". + :vartype deployment_status: str or ~azure.mgmt.network.v2022_01_01.models.DeploymentStatus + :ivar configuration_ids: List of configuration ids. + :vartype configuration_ids: list[str] + :ivar deployment_type: Configuration Deployment Type. Possible values include: "SecurityAdmin", + "Connectivity". + :vartype deployment_type: str or ~azure.mgmt.network.v2022_01_01.models.ConfigurationType + :ivar error_message: Error Message. + :vartype error_message: str + """ + + _attribute_map = { + 'commit_time': {'key': 'commitTime', 'type': 'iso-8601'}, + 'region': {'key': 'region', 'type': 'str'}, + 'deployment_status': {'key': 'deploymentStatus', 'type': 'str'}, + 'configuration_ids': {'key': 'configurationIds', 'type': '[str]'}, + 'deployment_type': {'key': 'deploymentType', 'type': 'str'}, + 'error_message': {'key': 'errorMessage', 'type': 'str'}, + } + + def __init__( + self, + *, + commit_time: Optional[datetime.datetime] = None, + region: Optional[str] = None, + deployment_status: Optional[Union[str, "DeploymentStatus"]] = None, + configuration_ids: Optional[List[str]] = None, + deployment_type: Optional[Union[str, "ConfigurationType"]] = None, + error_message: Optional[str] = None, + **kwargs + ): + """ + :keyword commit_time: Commit Time. + :paramtype commit_time: ~datetime.datetime + :keyword region: Region Name. + :paramtype region: str + :keyword deployment_status: Deployment Status. Possible values include: "NotStarted", + "Deploying", "Deployed", "Failed". + :paramtype deployment_status: str or ~azure.mgmt.network.v2022_01_01.models.DeploymentStatus + :keyword configuration_ids: List of configuration ids. + :paramtype configuration_ids: list[str] + :keyword deployment_type: Configuration Deployment Type. Possible values include: + "SecurityAdmin", "Connectivity". + :paramtype deployment_type: str or ~azure.mgmt.network.v2022_01_01.models.ConfigurationType + :keyword error_message: Error Message. + :paramtype error_message: str + """ + super(NetworkManagerDeploymentStatus, self).__init__(**kwargs) + self.commit_time = commit_time + self.region = region + self.deployment_status = deployment_status + self.configuration_ids = configuration_ids + self.deployment_type = deployment_type + self.error_message = error_message + + +class NetworkManagerDeploymentStatusListResult(msrest.serialization.Model): + """A list of Network Manager Deployment Status. + + :ivar value: Gets a page of Network Manager Deployment Status. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerDeploymentStatus] + :ivar skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :vartype skip_token: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkManagerDeploymentStatus]'}, + 'skip_token': {'key': 'skipToken', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkManagerDeploymentStatus"]] = None, + skip_token: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of Network Manager Deployment Status. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkManagerDeploymentStatus] + :keyword skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :paramtype skip_token: str + """ + super(NetworkManagerDeploymentStatusListResult, self).__init__(**kwargs) + self.value = value + self.skip_token = skip_token + + +class NetworkManagerDeploymentStatusParameter(msrest.serialization.Model): + """Network Manager Deployment Status Parameter. + + :ivar regions: List of locations. + :vartype regions: list[str] + :ivar deployment_types: List of deployment types. + :vartype deployment_types: list[str or + ~azure.mgmt.network.v2022_01_01.models.ConfigurationType] + :ivar skip_token: Continuation token for pagination, capturing the next page size and offset, + as well as the context of the query. + :vartype skip_token: str + """ + + _attribute_map = { + 'regions': {'key': 'regions', 'type': '[str]'}, + 'deployment_types': {'key': 'deploymentTypes', 'type': '[str]'}, + 'skip_token': {'key': 'skipToken', 'type': 'str'}, + } + + def __init__( + self, + *, + regions: Optional[List[str]] = None, + deployment_types: Optional[List[Union[str, "ConfigurationType"]]] = None, + skip_token: Optional[str] = None, + **kwargs + ): + """ + :keyword regions: List of locations. + :paramtype regions: list[str] + :keyword deployment_types: List of deployment types. + :paramtype deployment_types: list[str or + ~azure.mgmt.network.v2022_01_01.models.ConfigurationType] + :keyword skip_token: Continuation token for pagination, capturing the next page size and + offset, as well as the context of the query. + :paramtype skip_token: str + """ + super(NetworkManagerDeploymentStatusParameter, self).__init__(**kwargs) + self.regions = regions + self.deployment_types = deployment_types + self.skip_token = skip_token + + +class NetworkManagerEffectiveConnectivityConfigurationListResult(msrest.serialization.Model): + """Result of the request to list networkManagerEffectiveConnectivityConfiguration. It contains a list of groups and a skiptoken to get the next set of results. + + :ivar value: Gets a page of NetworkManagerEffectiveConnectivityConfiguration. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.EffectiveConnectivityConfiguration] + :ivar skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :vartype skip_token: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[EffectiveConnectivityConfiguration]'}, + 'skip_token': {'key': 'skipToken', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["EffectiveConnectivityConfiguration"]] = None, + skip_token: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of NetworkManagerEffectiveConnectivityConfiguration. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.EffectiveConnectivityConfiguration] + :keyword skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :paramtype skip_token: str + """ + super(NetworkManagerEffectiveConnectivityConfigurationListResult, self).__init__(**kwargs) + self.value = value + self.skip_token = skip_token + + +class NetworkManagerEffectiveSecurityAdminRulesListResult(msrest.serialization.Model): + """Result of the request to list networkManagerEffectiveSecurityAdminRules. It contains a list of groups and a skiptoken to get the next set of results. + + :ivar value: Gets a page of NetworkManagerEffectiveSecurityAdminRules. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.EffectiveBaseSecurityAdminRule] + :ivar skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :vartype skip_token: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[EffectiveBaseSecurityAdminRule]'}, + 'skip_token': {'key': 'skipToken', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["EffectiveBaseSecurityAdminRule"]] = None, + skip_token: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of NetworkManagerEffectiveSecurityAdminRules. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.EffectiveBaseSecurityAdminRule] + :keyword skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :paramtype skip_token: str + """ + super(NetworkManagerEffectiveSecurityAdminRulesListResult, self).__init__(**kwargs) + self.value = value + self.skip_token = skip_token + + +class NetworkManagerListResult(msrest.serialization.Model): + """Result of the request to list NetworkManager. It contains a list of network managers and a URL link to get the next set of results. + + :ivar value: Gets a page of NetworkManager. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkManager] + :ivar next_link: Gets the URL to get the next page of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkManager]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkManager"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of NetworkManager. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkManager] + :keyword next_link: Gets the URL to get the next page of results. + :paramtype next_link: str + """ + super(NetworkManagerListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkManagerPropertiesNetworkManagerScopes(msrest.serialization.Model): + """Scope of Network Manager. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar management_groups: List of management groups. + :vartype management_groups: list[str] + :ivar subscriptions: List of subscriptions. + :vartype subscriptions: list[str] + :ivar cross_tenant_scopes: List of cross tenant scopes. + :vartype cross_tenant_scopes: list[~azure.mgmt.network.v2022_01_01.models.CrossTenantScopes] + """ + + _validation = { + 'cross_tenant_scopes': {'readonly': True}, + } + + _attribute_map = { + 'management_groups': {'key': 'managementGroups', 'type': '[str]'}, + 'subscriptions': {'key': 'subscriptions', 'type': '[str]'}, + 'cross_tenant_scopes': {'key': 'crossTenantScopes', 'type': '[CrossTenantScopes]'}, + } + + def __init__( + self, + *, + management_groups: Optional[List[str]] = None, + subscriptions: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword management_groups: List of management groups. + :paramtype management_groups: list[str] + :keyword subscriptions: List of subscriptions. + :paramtype subscriptions: list[str] + """ + super(NetworkManagerPropertiesNetworkManagerScopes, self).__init__(**kwargs) + self.management_groups = management_groups + self.subscriptions = subscriptions + self.cross_tenant_scopes = None + + +class NetworkManagerSecurityGroupItem(msrest.serialization.Model): + """Network manager security group item. + + All required parameters must be populated in order to send to Azure. + + :ivar network_group_id: Required. Network manager group Id. + :vartype network_group_id: str + """ + + _validation = { + 'network_group_id': {'required': True}, + } + + _attribute_map = { + 'network_group_id': {'key': 'networkGroupId', 'type': 'str'}, + } + + def __init__( + self, + *, + network_group_id: str, + **kwargs + ): + """ + :keyword network_group_id: Required. Network manager group Id. + :paramtype network_group_id: str + """ + super(NetworkManagerSecurityGroupItem, self).__init__(**kwargs) + self.network_group_id = network_group_id + + +class NetworkProfile(Resource): + """Network profile resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar container_network_interfaces: List of child container network interfaces. + :vartype container_network_interfaces: + list[~azure.mgmt.network.v2022_01_01.models.ContainerNetworkInterface] + :ivar container_network_interface_configurations: List of chid container network interface + configurations. + :vartype container_network_interface_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ContainerNetworkInterfaceConfiguration] + :ivar resource_guid: The resource GUID property of the network profile resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the network profile resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'container_network_interfaces': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'container_network_interfaces': {'key': 'properties.containerNetworkInterfaces', 'type': '[ContainerNetworkInterface]'}, + 'container_network_interface_configurations': {'key': 'properties.containerNetworkInterfaceConfigurations', 'type': '[ContainerNetworkInterfaceConfiguration]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + container_network_interface_configurations: Optional[List["ContainerNetworkInterfaceConfiguration"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword container_network_interface_configurations: List of chid container network interface + configurations. + :paramtype container_network_interface_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ContainerNetworkInterfaceConfiguration] + """ + super(NetworkProfile, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.container_network_interfaces = None + self.container_network_interface_configurations = container_network_interface_configurations + self.resource_guid = None + self.provisioning_state = None + + +class NetworkProfileListResult(msrest.serialization.Model): + """Response for ListNetworkProfiles API service call. + + :ivar value: A list of network profiles that exist in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkProfile] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkProfile]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkProfile"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of network profiles that exist in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkProfile] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(NetworkProfileListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkRule(FirewallPolicyRule): + """Rule of type network. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Name of the rule. + :vartype name: str + :ivar description: Description of the rule. + :vartype description: str + :ivar rule_type: Required. Rule Type.Constant filled by server. Possible values include: + "ApplicationRule", "NetworkRule", "NatRule". + :vartype rule_type: str or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleType + :ivar ip_protocols: Array of FirewallPolicyRuleNetworkProtocols. + :vartype ip_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleNetworkProtocol] + :ivar source_addresses: List of source IP addresses for this rule. + :vartype source_addresses: list[str] + :ivar destination_addresses: List of destination IP addresses or Service Tags. + :vartype destination_addresses: list[str] + :ivar destination_ports: List of destination ports. + :vartype destination_ports: list[str] + :ivar source_ip_groups: List of source IpGroups for this rule. + :vartype source_ip_groups: list[str] + :ivar destination_ip_groups: List of destination IpGroups for this rule. + :vartype destination_ip_groups: list[str] + :ivar destination_fqdns: List of destination FQDNs. + :vartype destination_fqdns: list[str] + """ + + _validation = { + 'rule_type': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'rule_type': {'key': 'ruleType', 'type': 'str'}, + 'ip_protocols': {'key': 'ipProtocols', 'type': '[str]'}, + 'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'}, + 'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'}, + 'destination_ports': {'key': 'destinationPorts', 'type': '[str]'}, + 'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'}, + 'destination_ip_groups': {'key': 'destinationIpGroups', 'type': '[str]'}, + 'destination_fqdns': {'key': 'destinationFqdns', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + ip_protocols: Optional[List[Union[str, "FirewallPolicyRuleNetworkProtocol"]]] = None, + source_addresses: Optional[List[str]] = None, + destination_addresses: Optional[List[str]] = None, + destination_ports: Optional[List[str]] = None, + source_ip_groups: Optional[List[str]] = None, + destination_ip_groups: Optional[List[str]] = None, + destination_fqdns: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword name: Name of the rule. + :paramtype name: str + :keyword description: Description of the rule. + :paramtype description: str + :keyword ip_protocols: Array of FirewallPolicyRuleNetworkProtocols. + :paramtype ip_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleNetworkProtocol] + :keyword source_addresses: List of source IP addresses for this rule. + :paramtype source_addresses: list[str] + :keyword destination_addresses: List of destination IP addresses or Service Tags. + :paramtype destination_addresses: list[str] + :keyword destination_ports: List of destination ports. + :paramtype destination_ports: list[str] + :keyword source_ip_groups: List of source IpGroups for this rule. + :paramtype source_ip_groups: list[str] + :keyword destination_ip_groups: List of destination IpGroups for this rule. + :paramtype destination_ip_groups: list[str] + :keyword destination_fqdns: List of destination FQDNs. + :paramtype destination_fqdns: list[str] + """ + super(NetworkRule, self).__init__(name=name, description=description, **kwargs) + self.rule_type = 'NetworkRule' # type: str + self.ip_protocols = ip_protocols + self.source_addresses = source_addresses + self.destination_addresses = destination_addresses + self.destination_ports = destination_ports + self.source_ip_groups = source_ip_groups + self.destination_ip_groups = destination_ip_groups + self.destination_fqdns = destination_fqdns + + +class NetworkSecurityGroup(Resource): + """NetworkSecurityGroup resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar flush_connection: When enabled, flows created from Network Security Group connections + will be re-evaluated when rules are updates. Initial enablement will trigger re-evaluation. + :vartype flush_connection: bool + :ivar security_rules: A collection of security rules of the network security group. + :vartype security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :ivar default_security_rules: The default security rules of network security group. + :vartype default_security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :ivar network_interfaces: A collection of references to network interfaces. + :vartype network_interfaces: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + :ivar subnets: A collection of references to subnets. + :vartype subnets: list[~azure.mgmt.network.v2022_01_01.models.Subnet] + :ivar flow_logs: A collection of references to flow log resources. + :vartype flow_logs: list[~azure.mgmt.network.v2022_01_01.models.FlowLog] + :ivar resource_guid: The resource GUID property of the network security group resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the network security group resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'default_security_rules': {'readonly': True}, + 'network_interfaces': {'readonly': True}, + 'subnets': {'readonly': True}, + 'flow_logs': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'flush_connection': {'key': 'properties.flushConnection', 'type': 'bool'}, + 'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'}, + 'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'}, + 'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'}, + 'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'}, + 'flow_logs': {'key': 'properties.flowLogs', 'type': '[FlowLog]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + flush_connection: Optional[bool] = None, + security_rules: Optional[List["SecurityRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword flush_connection: When enabled, flows created from Network Security Group connections + will be re-evaluated when rules are updates. Initial enablement will trigger re-evaluation. + :paramtype flush_connection: bool + :keyword security_rules: A collection of security rules of the network security group. + :paramtype security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + """ + super(NetworkSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.flush_connection = flush_connection + self.security_rules = security_rules + self.default_security_rules = None + self.network_interfaces = None + self.subnets = None + self.flow_logs = None + self.resource_guid = None + self.provisioning_state = None + + +class NetworkSecurityGroupListResult(msrest.serialization.Model): + """Response for ListNetworkSecurityGroups API service call. + + :ivar value: A list of NetworkSecurityGroup resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkSecurityGroup"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of NetworkSecurityGroup resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(NetworkSecurityGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkSecurityGroupResult(msrest.serialization.Model): + """Network configuration diagnostic result corresponded provided traffic query. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar security_rule_access_result: The network traffic is allowed or denied. Possible values + include: "Allow", "Deny". + :vartype security_rule_access_result: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAccess + :ivar evaluated_network_security_groups: List of results network security groups diagnostic. + :vartype evaluated_network_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.EvaluatedNetworkSecurityGroup] + """ + + _validation = { + 'evaluated_network_security_groups': {'readonly': True}, + } + + _attribute_map = { + 'security_rule_access_result': {'key': 'securityRuleAccessResult', 'type': 'str'}, + 'evaluated_network_security_groups': {'key': 'evaluatedNetworkSecurityGroups', 'type': '[EvaluatedNetworkSecurityGroup]'}, + } + + def __init__( + self, + *, + security_rule_access_result: Optional[Union[str, "SecurityRuleAccess"]] = None, + **kwargs + ): + """ + :keyword security_rule_access_result: The network traffic is allowed or denied. Possible values + include: "Allow", "Deny". + :paramtype security_rule_access_result: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAccess + """ + super(NetworkSecurityGroupResult, self).__init__(**kwargs) + self.security_rule_access_result = security_rule_access_result + self.evaluated_network_security_groups = None + + +class NetworkSecurityRulesEvaluationResult(msrest.serialization.Model): + """Network security rules evaluation result. + + :ivar name: Name of the network security rule. + :vartype name: str + :ivar protocol_matched: Value indicating whether protocol is matched. + :vartype protocol_matched: bool + :ivar source_matched: Value indicating whether source is matched. + :vartype source_matched: bool + :ivar source_port_matched: Value indicating whether source port is matched. + :vartype source_port_matched: bool + :ivar destination_matched: Value indicating whether destination is matched. + :vartype destination_matched: bool + :ivar destination_port_matched: Value indicating whether destination port is matched. + :vartype destination_port_matched: bool + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'protocol_matched': {'key': 'protocolMatched', 'type': 'bool'}, + 'source_matched': {'key': 'sourceMatched', 'type': 'bool'}, + 'source_port_matched': {'key': 'sourcePortMatched', 'type': 'bool'}, + 'destination_matched': {'key': 'destinationMatched', 'type': 'bool'}, + 'destination_port_matched': {'key': 'destinationPortMatched', 'type': 'bool'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + protocol_matched: Optional[bool] = None, + source_matched: Optional[bool] = None, + source_port_matched: Optional[bool] = None, + destination_matched: Optional[bool] = None, + destination_port_matched: Optional[bool] = None, + **kwargs + ): + """ + :keyword name: Name of the network security rule. + :paramtype name: str + :keyword protocol_matched: Value indicating whether protocol is matched. + :paramtype protocol_matched: bool + :keyword source_matched: Value indicating whether source is matched. + :paramtype source_matched: bool + :keyword source_port_matched: Value indicating whether source port is matched. + :paramtype source_port_matched: bool + :keyword destination_matched: Value indicating whether destination is matched. + :paramtype destination_matched: bool + :keyword destination_port_matched: Value indicating whether destination port is matched. + :paramtype destination_port_matched: bool + """ + super(NetworkSecurityRulesEvaluationResult, self).__init__(**kwargs) + self.name = name + self.protocol_matched = protocol_matched + self.source_matched = source_matched + self.source_port_matched = source_port_matched + self.destination_matched = destination_matched + self.destination_port_matched = destination_port_matched + + +class NetworkVirtualAppliance(Resource): + """NetworkVirtualAppliance Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar identity: The service principal that has read access to cloud-init and config blob. + :vartype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar nva_sku: Network Virtual Appliance SKU. + :vartype nva_sku: ~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSkuProperties + :ivar address_prefix: Address Prefix. + :vartype address_prefix: str + :ivar boot_strap_configuration_blobs: BootStrapConfigurationBlobs storage URLs. + :vartype boot_strap_configuration_blobs: list[str] + :ivar virtual_hub: The Virtual Hub where Network Virtual Appliance is being deployed. + :vartype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar cloud_init_configuration_blobs: CloudInitConfigurationBlob storage URLs. + :vartype cloud_init_configuration_blobs: list[str] + :ivar cloud_init_configuration: CloudInitConfiguration string in plain text. + :vartype cloud_init_configuration: str + :ivar virtual_appliance_asn: VirtualAppliance ASN. + :vartype virtual_appliance_asn: long + :ivar ssh_public_key: Public key for SSH login. + :vartype ssh_public_key: str + :ivar virtual_appliance_nics: List of Virtual Appliance Network Interfaces. + :vartype virtual_appliance_nics: + list[~azure.mgmt.network.v2022_01_01.models.VirtualApplianceNicProperties] + :ivar virtual_appliance_sites: List of references to VirtualApplianceSite. + :vartype virtual_appliance_sites: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar inbound_security_rules: List of references to InboundSecurityRules. + :vartype inbound_security_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'address_prefix': {'readonly': True}, + 'virtual_appliance_asn': {'maximum': 4294967295, 'minimum': 0}, + 'virtual_appliance_nics': {'readonly': True}, + 'virtual_appliance_sites': {'readonly': True}, + 'inbound_security_rules': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'nva_sku': {'key': 'properties.nvaSku', 'type': 'VirtualApplianceSkuProperties'}, + 'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'}, + 'boot_strap_configuration_blobs': {'key': 'properties.bootStrapConfigurationBlobs', 'type': '[str]'}, + 'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'}, + 'cloud_init_configuration_blobs': {'key': 'properties.cloudInitConfigurationBlobs', 'type': '[str]'}, + 'cloud_init_configuration': {'key': 'properties.cloudInitConfiguration', 'type': 'str'}, + 'virtual_appliance_asn': {'key': 'properties.virtualApplianceAsn', 'type': 'long'}, + 'ssh_public_key': {'key': 'properties.sshPublicKey', 'type': 'str'}, + 'virtual_appliance_nics': {'key': 'properties.virtualApplianceNics', 'type': '[VirtualApplianceNicProperties]'}, + 'virtual_appliance_sites': {'key': 'properties.virtualApplianceSites', 'type': '[SubResource]'}, + 'inbound_security_rules': {'key': 'properties.inboundSecurityRules', 'type': '[SubResource]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + identity: Optional["ManagedServiceIdentity"] = None, + nva_sku: Optional["VirtualApplianceSkuProperties"] = None, + boot_strap_configuration_blobs: Optional[List[str]] = None, + virtual_hub: Optional["SubResource"] = None, + cloud_init_configuration_blobs: Optional[List[str]] = None, + cloud_init_configuration: Optional[str] = None, + virtual_appliance_asn: Optional[int] = None, + ssh_public_key: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword identity: The service principal that has read access to cloud-init and config blob. + :paramtype identity: ~azure.mgmt.network.v2022_01_01.models.ManagedServiceIdentity + :keyword nva_sku: Network Virtual Appliance SKU. + :paramtype nva_sku: ~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSkuProperties + :keyword boot_strap_configuration_blobs: BootStrapConfigurationBlobs storage URLs. + :paramtype boot_strap_configuration_blobs: list[str] + :keyword virtual_hub: The Virtual Hub where Network Virtual Appliance is being deployed. + :paramtype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword cloud_init_configuration_blobs: CloudInitConfigurationBlob storage URLs. + :paramtype cloud_init_configuration_blobs: list[str] + :keyword cloud_init_configuration: CloudInitConfiguration string in plain text. + :paramtype cloud_init_configuration: str + :keyword virtual_appliance_asn: VirtualAppliance ASN. + :paramtype virtual_appliance_asn: long + :keyword ssh_public_key: Public key for SSH login. + :paramtype ssh_public_key: str + """ + super(NetworkVirtualAppliance, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.identity = identity + self.etag = None + self.nva_sku = nva_sku + self.address_prefix = None + self.boot_strap_configuration_blobs = boot_strap_configuration_blobs + self.virtual_hub = virtual_hub + self.cloud_init_configuration_blobs = cloud_init_configuration_blobs + self.cloud_init_configuration = cloud_init_configuration + self.virtual_appliance_asn = virtual_appliance_asn + self.ssh_public_key = ssh_public_key + self.virtual_appliance_nics = None + self.virtual_appliance_sites = None + self.inbound_security_rules = None + self.provisioning_state = None + + +class NetworkVirtualApplianceListResult(msrest.serialization.Model): + """Response for ListNetworkVirtualAppliances API service call. + + :ivar value: List of Network Virtual Appliances. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkVirtualAppliance]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkVirtualAppliance"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Network Virtual Appliances. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(NetworkVirtualApplianceListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkVirtualApplianceSiteListResult(msrest.serialization.Model): + """Response for ListNetworkVirtualApplianceSites API service call. + + :ivar value: List of Network Virtual Appliance sites. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualApplianceSite]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualApplianceSite"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Network Virtual Appliance sites. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(NetworkVirtualApplianceSiteListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkVirtualApplianceSku(Resource): + """Definition of the NetworkVirtualApplianceSkus resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar vendor: Network Virtual Appliance Sku vendor. + :vartype vendor: str + :ivar available_versions: Available Network Virtual Appliance versions. + :vartype available_versions: list[str] + :ivar available_scale_units: The list of scale units available. + :vartype available_scale_units: + list[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSkuInstances] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'vendor': {'readonly': True}, + 'available_versions': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'vendor': {'key': 'properties.vendor', 'type': 'str'}, + 'available_versions': {'key': 'properties.availableVersions', 'type': '[str]'}, + 'available_scale_units': {'key': 'properties.availableScaleUnits', 'type': '[NetworkVirtualApplianceSkuInstances]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + available_scale_units: Optional[List["NetworkVirtualApplianceSkuInstances"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword available_scale_units: The list of scale units available. + :paramtype available_scale_units: + list[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSkuInstances] + """ + super(NetworkVirtualApplianceSku, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.vendor = None + self.available_versions = None + self.available_scale_units = available_scale_units + + +class NetworkVirtualApplianceSkuInstances(msrest.serialization.Model): + """List of available Sku and instances. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar scale_unit: Scale Unit. + :vartype scale_unit: str + :ivar instance_count: Instance Count. + :vartype instance_count: int + """ + + _validation = { + 'scale_unit': {'readonly': True}, + 'instance_count': {'readonly': True}, + } + + _attribute_map = { + 'scale_unit': {'key': 'scaleUnit', 'type': 'str'}, + 'instance_count': {'key': 'instanceCount', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(NetworkVirtualApplianceSkuInstances, self).__init__(**kwargs) + self.scale_unit = None + self.instance_count = None + + +class NetworkVirtualApplianceSkuListResult(msrest.serialization.Model): + """Response for ListNetworkVirtualApplianceSkus API service call. + + :ivar value: List of Network Virtual Appliance Skus that are available. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSku] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkVirtualApplianceSku]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkVirtualApplianceSku"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Network Virtual Appliance Skus that are available. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSku] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(NetworkVirtualApplianceSkuListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class NetworkWatcher(Resource): + """Network watcher in a resource group. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar provisioning_state: The provisioning state of the network watcher resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ + super(NetworkWatcher, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.provisioning_state = None + + +class NetworkWatcherListResult(msrest.serialization.Model): + """Response for ListNetworkWatchers API service call. + + :ivar value: List of network watcher resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkWatcher] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[NetworkWatcher]'}, + } + + def __init__( + self, + *, + value: Optional[List["NetworkWatcher"]] = None, + **kwargs + ): + """ + :keyword value: List of network watcher resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.NetworkWatcher] + """ + super(NetworkWatcherListResult, self).__init__(**kwargs) + self.value = value + + +class NextHopParameters(msrest.serialization.Model): + """Parameters that define the source and destination endpoint. + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. The resource identifier of the target resource against + which the action is to be performed. + :vartype target_resource_id: str + :ivar source_ip_address: Required. The source IP address. + :vartype source_ip_address: str + :ivar destination_ip_address: Required. The destination IP address. + :vartype destination_ip_address: str + :ivar target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is enabled + on any of the nics, then this parameter must be specified. Otherwise optional). + :vartype target_nic_resource_id: str + """ + + _validation = { + 'target_resource_id': {'required': True}, + 'source_ip_address': {'required': True}, + 'destination_ip_address': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + 'source_ip_address': {'key': 'sourceIPAddress', 'type': 'str'}, + 'destination_ip_address': {'key': 'destinationIPAddress', 'type': 'str'}, + 'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'}, + } + + def __init__( + self, + *, + target_resource_id: str, + source_ip_address: str, + destination_ip_address: str, + target_nic_resource_id: Optional[str] = None, + **kwargs + ): + """ + :keyword target_resource_id: Required. The resource identifier of the target resource against + which the action is to be performed. + :paramtype target_resource_id: str + :keyword source_ip_address: Required. The source IP address. + :paramtype source_ip_address: str + :keyword destination_ip_address: Required. The destination IP address. + :paramtype destination_ip_address: str + :keyword target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is + enabled on any of the nics, then this parameter must be specified. Otherwise optional). + :paramtype target_nic_resource_id: str + """ + super(NextHopParameters, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + self.source_ip_address = source_ip_address + self.destination_ip_address = destination_ip_address + self.target_nic_resource_id = target_nic_resource_id + + +class NextHopResult(msrest.serialization.Model): + """The information about next hop from the specified VM. + + :ivar next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance", + "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None". + :vartype next_hop_type: str or ~azure.mgmt.network.v2022_01_01.models.NextHopType + :ivar next_hop_ip_address: Next hop IP Address. + :vartype next_hop_ip_address: str + :ivar route_table_id: The resource identifier for the route table associated with the route + being returned. If the route being returned does not correspond to any user created routes then + this field will be the string 'System Route'. + :vartype route_table_id: str + """ + + _attribute_map = { + 'next_hop_type': {'key': 'nextHopType', 'type': 'str'}, + 'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'}, + 'route_table_id': {'key': 'routeTableId', 'type': 'str'}, + } + + def __init__( + self, + *, + next_hop_type: Optional[Union[str, "NextHopType"]] = None, + next_hop_ip_address: Optional[str] = None, + route_table_id: Optional[str] = None, + **kwargs + ): + """ + :keyword next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance", + "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None". + :paramtype next_hop_type: str or ~azure.mgmt.network.v2022_01_01.models.NextHopType + :keyword next_hop_ip_address: Next hop IP Address. + :paramtype next_hop_ip_address: str + :keyword route_table_id: The resource identifier for the route table associated with the route + being returned. If the route being returned does not correspond to any user created routes then + this field will be the string 'System Route'. + :paramtype route_table_id: str + """ + super(NextHopResult, self).__init__(**kwargs) + self.next_hop_type = next_hop_type + self.next_hop_ip_address = next_hop_ip_address + self.route_table_id = route_table_id + + +class O365BreakOutCategoryPolicies(msrest.serialization.Model): + """Office365 breakout categories. + + :ivar allow: Flag to control allow category. + :vartype allow: bool + :ivar optimize: Flag to control optimize category. + :vartype optimize: bool + :ivar default: Flag to control default category. + :vartype default: bool + """ + + _attribute_map = { + 'allow': {'key': 'allow', 'type': 'bool'}, + 'optimize': {'key': 'optimize', 'type': 'bool'}, + 'default': {'key': 'default', 'type': 'bool'}, + } + + def __init__( + self, + *, + allow: Optional[bool] = None, + optimize: Optional[bool] = None, + default: Optional[bool] = None, + **kwargs + ): + """ + :keyword allow: Flag to control allow category. + :paramtype allow: bool + :keyword optimize: Flag to control optimize category. + :paramtype optimize: bool + :keyword default: Flag to control default category. + :paramtype default: bool + """ + super(O365BreakOutCategoryPolicies, self).__init__(**kwargs) + self.allow = allow + self.optimize = optimize + self.default = default + + +class O365PolicyProperties(msrest.serialization.Model): + """The Office365 breakout policy. + + :ivar break_out_categories: Office365 breakout categories. + :vartype break_out_categories: + ~azure.mgmt.network.v2022_01_01.models.O365BreakOutCategoryPolicies + """ + + _attribute_map = { + 'break_out_categories': {'key': 'breakOutCategories', 'type': 'O365BreakOutCategoryPolicies'}, + } + + def __init__( + self, + *, + break_out_categories: Optional["O365BreakOutCategoryPolicies"] = None, + **kwargs + ): + """ + :keyword break_out_categories: Office365 breakout categories. + :paramtype break_out_categories: + ~azure.mgmt.network.v2022_01_01.models.O365BreakOutCategoryPolicies + """ + super(O365PolicyProperties, self).__init__(**kwargs) + self.break_out_categories = break_out_categories + + +class Office365PolicyProperties(msrest.serialization.Model): + """Network Virtual Appliance Sku Properties. + + :ivar break_out_categories: Office 365 breakout categories. + :vartype break_out_categories: ~azure.mgmt.network.v2022_01_01.models.BreakOutCategoryPolicies + """ + + _attribute_map = { + 'break_out_categories': {'key': 'breakOutCategories', 'type': 'BreakOutCategoryPolicies'}, + } + + def __init__( + self, + *, + break_out_categories: Optional["BreakOutCategoryPolicies"] = None, + **kwargs + ): + """ + :keyword break_out_categories: Office 365 breakout categories. + :paramtype break_out_categories: + ~azure.mgmt.network.v2022_01_01.models.BreakOutCategoryPolicies + """ + super(Office365PolicyProperties, self).__init__(**kwargs) + self.break_out_categories = break_out_categories + + +class Operation(msrest.serialization.Model): + """Network REST API operation definition. + + :ivar name: Operation name: {provider}/{resource}/{operation}. + :vartype name: str + :ivar display: Display metadata associated with the operation. + :vartype display: ~azure.mgmt.network.v2022_01_01.models.OperationDisplay + :ivar origin: Origin of the operation. + :vartype origin: str + :ivar service_specification: Specification of the service. + :vartype service_specification: + ~azure.mgmt.network.v2022_01_01.models.OperationPropertiesFormatServiceSpecification + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display': {'key': 'display', 'type': 'OperationDisplay'}, + 'origin': {'key': 'origin', 'type': 'str'}, + 'service_specification': {'key': 'properties.serviceSpecification', 'type': 'OperationPropertiesFormatServiceSpecification'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + display: Optional["OperationDisplay"] = None, + origin: Optional[str] = None, + service_specification: Optional["OperationPropertiesFormatServiceSpecification"] = None, + **kwargs + ): + """ + :keyword name: Operation name: {provider}/{resource}/{operation}. + :paramtype name: str + :keyword display: Display metadata associated with the operation. + :paramtype display: ~azure.mgmt.network.v2022_01_01.models.OperationDisplay + :keyword origin: Origin of the operation. + :paramtype origin: str + :keyword service_specification: Specification of the service. + :paramtype service_specification: + ~azure.mgmt.network.v2022_01_01.models.OperationPropertiesFormatServiceSpecification + """ + super(Operation, self).__init__(**kwargs) + self.name = name + self.display = display + self.origin = origin + self.service_specification = service_specification + + +class OperationDisplay(msrest.serialization.Model): + """Display metadata associated with the operation. + + :ivar provider: Service provider: Microsoft Network. + :vartype provider: str + :ivar resource: Resource on which the operation is performed. + :vartype resource: str + :ivar operation: Type of the operation: get, read, delete, etc. + :vartype operation: str + :ivar description: Description of the operation. + :vartype description: str + """ + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'resource': {'key': 'resource', 'type': 'str'}, + 'operation': {'key': 'operation', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__( + self, + *, + provider: Optional[str] = None, + resource: Optional[str] = None, + operation: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + """ + :keyword provider: Service provider: Microsoft Network. + :paramtype provider: str + :keyword resource: Resource on which the operation is performed. + :paramtype resource: str + :keyword operation: Type of the operation: get, read, delete, etc. + :paramtype operation: str + :keyword description: Description of the operation. + :paramtype description: str + """ + super(OperationDisplay, self).__init__(**kwargs) + self.provider = provider + self.resource = resource + self.operation = operation + self.description = description + + +class OperationListResult(msrest.serialization.Model): + """Result of the request to list Network operations. It contains a list of operations and a URL link to get the next set of results. + + :ivar value: List of Network operations supported by the Network resource provider. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.Operation] + :ivar next_link: URL to get the next set of operation list results if there are any. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[Operation]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["Operation"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Network operations supported by the Network resource provider. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.Operation] + :keyword next_link: URL to get the next set of operation list results if there are any. + :paramtype next_link: str + """ + super(OperationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class OperationPropertiesFormatServiceSpecification(msrest.serialization.Model): + """Specification of the service. + + :ivar metric_specifications: Operation service specification. + :vartype metric_specifications: + list[~azure.mgmt.network.v2022_01_01.models.MetricSpecification] + :ivar log_specifications: Operation log specification. + :vartype log_specifications: list[~azure.mgmt.network.v2022_01_01.models.LogSpecification] + """ + + _attribute_map = { + 'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecification]'}, + 'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'}, + } + + def __init__( + self, + *, + metric_specifications: Optional[List["MetricSpecification"]] = None, + log_specifications: Optional[List["LogSpecification"]] = None, + **kwargs + ): + """ + :keyword metric_specifications: Operation service specification. + :paramtype metric_specifications: + list[~azure.mgmt.network.v2022_01_01.models.MetricSpecification] + :keyword log_specifications: Operation log specification. + :paramtype log_specifications: list[~azure.mgmt.network.v2022_01_01.models.LogSpecification] + """ + super(OperationPropertiesFormatServiceSpecification, self).__init__(**kwargs) + self.metric_specifications = metric_specifications + self.log_specifications = log_specifications + + +class OrderBy(msrest.serialization.Model): + """Describes a column to sort. + + :ivar field: Describes the actual column name to sort by. + :vartype field: str + :ivar order: Describes if results should be in ascending/descending order. Possible values + include: "Ascending", "Descending". + :vartype order: str or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSQuerySortOrder + """ + + _attribute_map = { + 'field': {'key': 'field', 'type': 'str'}, + 'order': {'key': 'order', 'type': 'str'}, + } + + def __init__( + self, + *, + field: Optional[str] = None, + order: Optional[Union[str, "FirewallPolicyIDPSQuerySortOrder"]] = None, + **kwargs + ): + """ + :keyword field: Describes the actual column name to sort by. + :paramtype field: str + :keyword order: Describes if results should be in ascending/descending order. Possible values + include: "Ascending", "Descending". + :paramtype order: str or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSQuerySortOrder + """ + super(OrderBy, self).__init__(**kwargs) + self.field = field + self.order = order + + +class OutboundRule(SubResource): + """Outbound rule of the load balancer. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the set of outbound rules used by + the load balancer. This name can be used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar allocated_outbound_ports: The number of outbound ports to be used for NAT. + :vartype allocated_outbound_ports: int + :ivar frontend_ip_configurations: The Frontend IP addresses of the load balancer. + :vartype frontend_ip_configurations: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load + balanced across IPs in the backend IPs. + :vartype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar provisioning_state: The provisioning state of the outbound rule resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar protocol: The protocol for the outbound rule in load balancer. Possible values include: + "Tcp", "Udp", "All". + :vartype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.LoadBalancerOutboundRuleProtocol + :ivar enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected + connection termination. This element is only used when the protocol is set to TCP. + :vartype enable_tcp_reset: bool + :ivar idle_timeout_in_minutes: The timeout for the TCP idle connection. + :vartype idle_timeout_in_minutes: int + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'}, + 'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'}, + 'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'}, + 'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + allocated_outbound_ports: Optional[int] = None, + frontend_ip_configurations: Optional[List["SubResource"]] = None, + backend_address_pool: Optional["SubResource"] = None, + protocol: Optional[Union[str, "LoadBalancerOutboundRuleProtocol"]] = None, + enable_tcp_reset: Optional[bool] = None, + idle_timeout_in_minutes: Optional[int] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the set of outbound rules used by + the load balancer. This name can be used to access the resource. + :paramtype name: str + :keyword allocated_outbound_ports: The number of outbound ports to be used for NAT. + :paramtype allocated_outbound_ports: int + :keyword frontend_ip_configurations: The Frontend IP addresses of the load balancer. + :paramtype frontend_ip_configurations: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load + balanced across IPs in the backend IPs. + :paramtype backend_address_pool: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword protocol: The protocol for the outbound rule in load balancer. Possible values + include: "Tcp", "Udp", "All". + :paramtype protocol: str or + ~azure.mgmt.network.v2022_01_01.models.LoadBalancerOutboundRuleProtocol + :keyword enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or + unexpected connection termination. This element is only used when the protocol is set to TCP. + :paramtype enable_tcp_reset: bool + :keyword idle_timeout_in_minutes: The timeout for the TCP idle connection. + :paramtype idle_timeout_in_minutes: int + """ + super(OutboundRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.allocated_outbound_ports = allocated_outbound_ports + self.frontend_ip_configurations = frontend_ip_configurations + self.backend_address_pool = backend_address_pool + self.provisioning_state = None + self.protocol = protocol + self.enable_tcp_reset = enable_tcp_reset + self.idle_timeout_in_minutes = idle_timeout_in_minutes + + +class OwaspCrsExclusionEntry(msrest.serialization.Model): + """Allow to exclude some variable satisfy the condition for the WAF check. + + All required parameters must be populated in order to send to Azure. + + :ivar match_variable: Required. The variable to be excluded. Possible values include: + "RequestHeaderNames", "RequestCookieNames", "RequestArgNames", "RequestHeaderKeys", + "RequestHeaderValues", "RequestCookieKeys", "RequestCookieValues", "RequestArgKeys", + "RequestArgValues". + :vartype match_variable: str or + ~azure.mgmt.network.v2022_01_01.models.OwaspCrsExclusionEntryMatchVariable + :ivar selector_match_operator: Required. When matchVariable is a collection, operate on the + selector to specify which elements in the collection this exclusion applies to. Possible values + include: "Equals", "Contains", "StartsWith", "EndsWith", "EqualsAny". + :vartype selector_match_operator: str or + ~azure.mgmt.network.v2022_01_01.models.OwaspCrsExclusionEntrySelectorMatchOperator + :ivar selector: Required. When matchVariable is a collection, operator used to specify which + elements in the collection this exclusion applies to. + :vartype selector: str + :ivar exclusion_managed_rule_sets: The managed rule sets that are associated with the + exclusion. + :vartype exclusion_managed_rule_sets: + list[~azure.mgmt.network.v2022_01_01.models.ExclusionManagedRuleSet] + """ + + _validation = { + 'match_variable': {'required': True}, + 'selector_match_operator': {'required': True}, + 'selector': {'required': True}, + } + + _attribute_map = { + 'match_variable': {'key': 'matchVariable', 'type': 'str'}, + 'selector_match_operator': {'key': 'selectorMatchOperator', 'type': 'str'}, + 'selector': {'key': 'selector', 'type': 'str'}, + 'exclusion_managed_rule_sets': {'key': 'exclusionManagedRuleSets', 'type': '[ExclusionManagedRuleSet]'}, + } + + def __init__( + self, + *, + match_variable: Union[str, "OwaspCrsExclusionEntryMatchVariable"], + selector_match_operator: Union[str, "OwaspCrsExclusionEntrySelectorMatchOperator"], + selector: str, + exclusion_managed_rule_sets: Optional[List["ExclusionManagedRuleSet"]] = None, + **kwargs + ): + """ + :keyword match_variable: Required. The variable to be excluded. Possible values include: + "RequestHeaderNames", "RequestCookieNames", "RequestArgNames", "RequestHeaderKeys", + "RequestHeaderValues", "RequestCookieKeys", "RequestCookieValues", "RequestArgKeys", + "RequestArgValues". + :paramtype match_variable: str or + ~azure.mgmt.network.v2022_01_01.models.OwaspCrsExclusionEntryMatchVariable + :keyword selector_match_operator: Required. When matchVariable is a collection, operate on the + selector to specify which elements in the collection this exclusion applies to. Possible values + include: "Equals", "Contains", "StartsWith", "EndsWith", "EqualsAny". + :paramtype selector_match_operator: str or + ~azure.mgmt.network.v2022_01_01.models.OwaspCrsExclusionEntrySelectorMatchOperator + :keyword selector: Required. When matchVariable is a collection, operator used to specify which + elements in the collection this exclusion applies to. + :paramtype selector: str + :keyword exclusion_managed_rule_sets: The managed rule sets that are associated with the + exclusion. + :paramtype exclusion_managed_rule_sets: + list[~azure.mgmt.network.v2022_01_01.models.ExclusionManagedRuleSet] + """ + super(OwaspCrsExclusionEntry, self).__init__(**kwargs) + self.match_variable = match_variable + self.selector_match_operator = selector_match_operator + self.selector = selector + self.exclusion_managed_rule_sets = exclusion_managed_rule_sets + + +class P2SConnectionConfiguration(SubResource): + """P2SConnectionConfiguration Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar vpn_client_address_pool: The reference to the address space resource which represents + Address space for P2S VpnClient. + :vartype vpn_client_address_pool: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar routing_configuration: The Routing Configuration indicating the associated and propagated + route tables on this connection. + :vartype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration + :ivar enable_internet_security: Flag indicating whether the enable internet security flag is + turned on for the P2S Connections or not. + :vartype enable_internet_security: bool + :ivar configuration_policy_group_associations: List of Configuration Policy Groups that this + P2SConnectionConfiguration is attached to. + :vartype configuration_policy_group_associations: + list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar previous_configuration_policy_group_associations: List of previous Configuration Policy + Groups that this P2SConnectionConfiguration was attached to. + :vartype previous_configuration_policy_group_associations: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup] + :ivar provisioning_state: The provisioning state of the P2SConnectionConfiguration resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'configuration_policy_group_associations': {'readonly': True}, + 'previous_configuration_policy_group_associations': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'vpn_client_address_pool': {'key': 'properties.vpnClientAddressPool', 'type': 'AddressSpace'}, + 'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'}, + 'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'}, + 'configuration_policy_group_associations': {'key': 'properties.configurationPolicyGroupAssociations', 'type': '[SubResource]'}, + 'previous_configuration_policy_group_associations': {'key': 'properties.previousConfigurationPolicyGroupAssociations', 'type': '[VpnServerConfigurationPolicyGroup]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + vpn_client_address_pool: Optional["AddressSpace"] = None, + routing_configuration: Optional["RoutingConfiguration"] = None, + enable_internet_security: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword vpn_client_address_pool: The reference to the address space resource which represents + Address space for P2S VpnClient. + :paramtype vpn_client_address_pool: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword routing_configuration: The Routing Configuration indicating the associated and + propagated route tables on this connection. + :paramtype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration + :keyword enable_internet_security: Flag indicating whether the enable internet security flag is + turned on for the P2S Connections or not. + :paramtype enable_internet_security: bool + """ + super(P2SConnectionConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.vpn_client_address_pool = vpn_client_address_pool + self.routing_configuration = routing_configuration + self.enable_internet_security = enable_internet_security + self.configuration_policy_group_associations = None + self.previous_configuration_policy_group_associations = None + self.provisioning_state = None + + +class P2SVpnConnectionHealth(msrest.serialization.Model): + """P2S Vpn connection detailed health written to sas url. + + :ivar sas_url: Returned sas url of the blob to which the p2s vpn connection detailed health + will be written. + :vartype sas_url: str + """ + + _attribute_map = { + 'sas_url': {'key': 'sasUrl', 'type': 'str'}, + } + + def __init__( + self, + *, + sas_url: Optional[str] = None, + **kwargs + ): + """ + :keyword sas_url: Returned sas url of the blob to which the p2s vpn connection detailed health + will be written. + :paramtype sas_url: str + """ + super(P2SVpnConnectionHealth, self).__init__(**kwargs) + self.sas_url = sas_url + + +class P2SVpnConnectionHealthRequest(msrest.serialization.Model): + """List of P2S Vpn connection health request. + + :ivar vpn_user_names_filter: The list of p2s vpn user names whose p2s vpn connection detailed + health to retrieve for. + :vartype vpn_user_names_filter: list[str] + :ivar output_blob_sas_url: The sas-url to download the P2S Vpn connection health detail. + :vartype output_blob_sas_url: str + """ + + _attribute_map = { + 'vpn_user_names_filter': {'key': 'vpnUserNamesFilter', 'type': '[str]'}, + 'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'}, + } + + def __init__( + self, + *, + vpn_user_names_filter: Optional[List[str]] = None, + output_blob_sas_url: Optional[str] = None, + **kwargs + ): + """ + :keyword vpn_user_names_filter: The list of p2s vpn user names whose p2s vpn connection + detailed health to retrieve for. + :paramtype vpn_user_names_filter: list[str] + :keyword output_blob_sas_url: The sas-url to download the P2S Vpn connection health detail. + :paramtype output_blob_sas_url: str + """ + super(P2SVpnConnectionHealthRequest, self).__init__(**kwargs) + self.vpn_user_names_filter = vpn_user_names_filter + self.output_blob_sas_url = output_blob_sas_url + + +class P2SVpnConnectionRequest(msrest.serialization.Model): + """List of p2s vpn connections to be disconnected. + + :ivar vpn_connection_ids: List of p2s vpn connection Ids. + :vartype vpn_connection_ids: list[str] + """ + + _attribute_map = { + 'vpn_connection_ids': {'key': 'vpnConnectionIds', 'type': '[str]'}, + } + + def __init__( + self, + *, + vpn_connection_ids: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword vpn_connection_ids: List of p2s vpn connection Ids. + :paramtype vpn_connection_ids: list[str] + """ + super(P2SVpnConnectionRequest, self).__init__(**kwargs) + self.vpn_connection_ids = vpn_connection_ids + + +class P2SVpnGateway(Resource): + """P2SVpnGateway Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar virtual_hub: The VirtualHub to which the gateway belongs. + :vartype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar p2_s_connection_configurations: List of all p2s connection configurations of the gateway. + :vartype p2_s_connection_configurations: + list[~azure.mgmt.network.v2022_01_01.models.P2SConnectionConfiguration] + :ivar provisioning_state: The provisioning state of the P2S VPN gateway resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar vpn_gateway_scale_unit: The scale unit for this p2s vpn gateway. + :vartype vpn_gateway_scale_unit: int + :ivar vpn_server_configuration: The VpnServerConfiguration to which the p2sVpnGateway is + attached to. + :vartype vpn_server_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar vpn_client_connection_health: All P2S VPN clients' connection health status. + :vartype vpn_client_connection_health: + ~azure.mgmt.network.v2022_01_01.models.VpnClientConnectionHealth + :ivar custom_dns_servers: List of all customer specified DNS servers IP addresses. + :vartype custom_dns_servers: list[str] + :ivar is_routing_preference_internet: Enable Routing Preference property for the Public IP + Interface of the P2SVpnGateway. + :vartype is_routing_preference_internet: bool + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'vpn_client_connection_health': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'}, + 'p2_s_connection_configurations': {'key': 'properties.p2SConnectionConfigurations', 'type': '[P2SConnectionConfiguration]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'vpn_gateway_scale_unit': {'key': 'properties.vpnGatewayScaleUnit', 'type': 'int'}, + 'vpn_server_configuration': {'key': 'properties.vpnServerConfiguration', 'type': 'SubResource'}, + 'vpn_client_connection_health': {'key': 'properties.vpnClientConnectionHealth', 'type': 'VpnClientConnectionHealth'}, + 'custom_dns_servers': {'key': 'properties.customDnsServers', 'type': '[str]'}, + 'is_routing_preference_internet': {'key': 'properties.isRoutingPreferenceInternet', 'type': 'bool'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + virtual_hub: Optional["SubResource"] = None, + p2_s_connection_configurations: Optional[List["P2SConnectionConfiguration"]] = None, + vpn_gateway_scale_unit: Optional[int] = None, + vpn_server_configuration: Optional["SubResource"] = None, + custom_dns_servers: Optional[List[str]] = None, + is_routing_preference_internet: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword virtual_hub: The VirtualHub to which the gateway belongs. + :paramtype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword p2_s_connection_configurations: List of all p2s connection configurations of the + gateway. + :paramtype p2_s_connection_configurations: + list[~azure.mgmt.network.v2022_01_01.models.P2SConnectionConfiguration] + :keyword vpn_gateway_scale_unit: The scale unit for this p2s vpn gateway. + :paramtype vpn_gateway_scale_unit: int + :keyword vpn_server_configuration: The VpnServerConfiguration to which the p2sVpnGateway is + attached to. + :paramtype vpn_server_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword custom_dns_servers: List of all customer specified DNS servers IP addresses. + :paramtype custom_dns_servers: list[str] + :keyword is_routing_preference_internet: Enable Routing Preference property for the Public IP + Interface of the P2SVpnGateway. + :paramtype is_routing_preference_internet: bool + """ + super(P2SVpnGateway, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.virtual_hub = virtual_hub + self.p2_s_connection_configurations = p2_s_connection_configurations + self.provisioning_state = None + self.vpn_gateway_scale_unit = vpn_gateway_scale_unit + self.vpn_server_configuration = vpn_server_configuration + self.vpn_client_connection_health = None + self.custom_dns_servers = custom_dns_servers + self.is_routing_preference_internet = is_routing_preference_internet + + +class P2SVpnProfileParameters(msrest.serialization.Model): + """Vpn Client Parameters for package generation. + + :ivar authentication_method: VPN client authentication method. Possible values include: + "EAPTLS", "EAPMSCHAPv2". + :vartype authentication_method: str or + ~azure.mgmt.network.v2022_01_01.models.AuthenticationMethod + """ + + _attribute_map = { + 'authentication_method': {'key': 'authenticationMethod', 'type': 'str'}, + } + + def __init__( + self, + *, + authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None, + **kwargs + ): + """ + :keyword authentication_method: VPN client authentication method. Possible values include: + "EAPTLS", "EAPMSCHAPv2". + :paramtype authentication_method: str or + ~azure.mgmt.network.v2022_01_01.models.AuthenticationMethod + """ + super(P2SVpnProfileParameters, self).__init__(**kwargs) + self.authentication_method = authentication_method + + +class PacketCapture(msrest.serialization.Model): + """Parameters that define the create packet capture operation. + + All required parameters must be populated in order to send to Azure. + + :ivar target: Required. The ID of the targeted resource, only AzureVM and AzureVMSS as target + type are currently supported. + :vartype target: str + :ivar scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :vartype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :ivar target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :vartype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :ivar bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes are + truncated. + :vartype bytes_to_capture_per_packet: long + :ivar total_bytes_per_session: Maximum size of the capture output. + :vartype total_bytes_per_session: long + :ivar time_limit_in_seconds: Maximum duration of the capture session in seconds. + :vartype time_limit_in_seconds: int + :ivar storage_location: Required. The storage location for a packet capture session. + :vartype storage_location: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :ivar filters: A list of packet capture filters. + :vartype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + """ + + _validation = { + 'target': {'required': True}, + 'bytes_to_capture_per_packet': {'maximum': 4294967295, 'minimum': 0}, + 'total_bytes_per_session': {'maximum': 4294967295, 'minimum': 0}, + 'time_limit_in_seconds': {'maximum': 18000, 'minimum': 0}, + 'storage_location': {'required': True}, + } + + _attribute_map = { + 'target': {'key': 'properties.target', 'type': 'str'}, + 'scope': {'key': 'properties.scope', 'type': 'PacketCaptureMachineScope'}, + 'target_type': {'key': 'properties.targetType', 'type': 'str'}, + 'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'long'}, + 'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'long'}, + 'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'}, + 'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'}, + 'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'}, + } + + def __init__( + self, + *, + target: str, + storage_location: "PacketCaptureStorageLocation", + scope: Optional["PacketCaptureMachineScope"] = None, + target_type: Optional[Union[str, "PacketCaptureTargetType"]] = None, + bytes_to_capture_per_packet: Optional[int] = 0, + total_bytes_per_session: Optional[int] = 1073741824, + time_limit_in_seconds: Optional[int] = 18000, + filters: Optional[List["PacketCaptureFilter"]] = None, + **kwargs + ): + """ + :keyword target: Required. The ID of the targeted resource, only AzureVM and AzureVMSS as + target type are currently supported. + :paramtype target: str + :keyword scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :paramtype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :keyword target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :paramtype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :keyword bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes + are truncated. + :paramtype bytes_to_capture_per_packet: long + :keyword total_bytes_per_session: Maximum size of the capture output. + :paramtype total_bytes_per_session: long + :keyword time_limit_in_seconds: Maximum duration of the capture session in seconds. + :paramtype time_limit_in_seconds: int + :keyword storage_location: Required. The storage location for a packet capture session. + :paramtype storage_location: + ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :keyword filters: A list of packet capture filters. + :paramtype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + """ + super(PacketCapture, self).__init__(**kwargs) + self.target = target + self.scope = scope + self.target_type = target_type + self.bytes_to_capture_per_packet = bytes_to_capture_per_packet + self.total_bytes_per_session = total_bytes_per_session + self.time_limit_in_seconds = time_limit_in_seconds + self.storage_location = storage_location + self.filters = filters + + +class PacketCaptureFilter(msrest.serialization.Model): + """Filter that is applied to packet capture request. Multiple filters can be applied. + + :ivar protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any". + Default value: "Any". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.PcProtocol + :ivar local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single + address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries. + Multiple ranges not currently supported. Mixing ranges with multiple entries not currently + supported. Default = null. + :vartype local_ip_address: str + :ivar remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single + address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries. + Multiple ranges not currently supported. Mixing ranges with multiple entries not currently + supported. Default = null. + :vartype remote_ip_address: str + :ivar local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85" + for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing + ranges with multiple entries not currently supported. Default = null. + :vartype local_port: str + :ivar remote_port: Remote port to be filtered on. Notation: "80" for single port entry."80-85" + for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing + ranges with multiple entries not currently supported. Default = null. + :vartype remote_port: str + """ + + _attribute_map = { + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'local_ip_address': {'key': 'localIPAddress', 'type': 'str'}, + 'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'}, + 'local_port': {'key': 'localPort', 'type': 'str'}, + 'remote_port': {'key': 'remotePort', 'type': 'str'}, + } + + def __init__( + self, + *, + protocol: Optional[Union[str, "PcProtocol"]] = "Any", + local_ip_address: Optional[str] = None, + remote_ip_address: Optional[str] = None, + local_port: Optional[str] = None, + remote_port: Optional[str] = None, + **kwargs + ): + """ + :keyword protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any". + Default value: "Any". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.PcProtocol + :keyword local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single + address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries. + Multiple ranges not currently supported. Mixing ranges with multiple entries not currently + supported. Default = null. + :paramtype local_ip_address: str + :keyword remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for + single address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple + entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not + currently supported. Default = null. + :paramtype remote_ip_address: str + :keyword local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85" + for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing + ranges with multiple entries not currently supported. Default = null. + :paramtype local_port: str + :keyword remote_port: Remote port to be filtered on. Notation: "80" for single port + entry."80-85" for range. "80;443;" for multiple entries. Multiple ranges not currently + supported. Mixing ranges with multiple entries not currently supported. Default = null. + :paramtype remote_port: str + """ + super(PacketCaptureFilter, self).__init__(**kwargs) + self.protocol = protocol + self.local_ip_address = local_ip_address + self.remote_ip_address = remote_ip_address + self.local_port = local_port + self.remote_port = remote_port + + +class PacketCaptureListResult(msrest.serialization.Model): + """List of packet capture sessions. + + :ivar value: Information about packet capture sessions. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureResult] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PacketCaptureResult]'}, + } + + def __init__( + self, + *, + value: Optional[List["PacketCaptureResult"]] = None, + **kwargs + ): + """ + :keyword value: Information about packet capture sessions. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureResult] + """ + super(PacketCaptureListResult, self).__init__(**kwargs) + self.value = value + + +class PacketCaptureMachineScope(msrest.serialization.Model): + """A list of AzureVMSS instances which can be included or excluded to run packet capture. If both included and excluded are empty, then the packet capture will run on all instances of AzureVMSS. + + :ivar include: List of AzureVMSS instances to run packet capture on. + :vartype include: list[str] + :ivar exclude: List of AzureVMSS instances which has to be excluded from the AzureVMSS from + running packet capture. + :vartype exclude: list[str] + """ + + _attribute_map = { + 'include': {'key': 'include', 'type': '[str]'}, + 'exclude': {'key': 'exclude', 'type': '[str]'}, + } + + def __init__( + self, + *, + include: Optional[List[str]] = None, + exclude: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword include: List of AzureVMSS instances to run packet capture on. + :paramtype include: list[str] + :keyword exclude: List of AzureVMSS instances which has to be excluded from the AzureVMSS from + running packet capture. + :paramtype exclude: list[str] + """ + super(PacketCaptureMachineScope, self).__init__(**kwargs) + self.include = include + self.exclude = exclude + + +class PacketCaptureParameters(msrest.serialization.Model): + """Parameters that define the create packet capture operation. + + All required parameters must be populated in order to send to Azure. + + :ivar target: Required. The ID of the targeted resource, only AzureVM and AzureVMSS as target + type are currently supported. + :vartype target: str + :ivar scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :vartype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :ivar target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :vartype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :ivar bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes are + truncated. + :vartype bytes_to_capture_per_packet: long + :ivar total_bytes_per_session: Maximum size of the capture output. + :vartype total_bytes_per_session: long + :ivar time_limit_in_seconds: Maximum duration of the capture session in seconds. + :vartype time_limit_in_seconds: int + :ivar storage_location: Required. The storage location for a packet capture session. + :vartype storage_location: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :ivar filters: A list of packet capture filters. + :vartype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + """ + + _validation = { + 'target': {'required': True}, + 'bytes_to_capture_per_packet': {'maximum': 4294967295, 'minimum': 0}, + 'total_bytes_per_session': {'maximum': 4294967295, 'minimum': 0}, + 'time_limit_in_seconds': {'maximum': 18000, 'minimum': 0}, + 'storage_location': {'required': True}, + } + + _attribute_map = { + 'target': {'key': 'target', 'type': 'str'}, + 'scope': {'key': 'scope', 'type': 'PacketCaptureMachineScope'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'long'}, + 'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'long'}, + 'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'}, + 'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'}, + 'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'}, + } + + def __init__( + self, + *, + target: str, + storage_location: "PacketCaptureStorageLocation", + scope: Optional["PacketCaptureMachineScope"] = None, + target_type: Optional[Union[str, "PacketCaptureTargetType"]] = None, + bytes_to_capture_per_packet: Optional[int] = 0, + total_bytes_per_session: Optional[int] = 1073741824, + time_limit_in_seconds: Optional[int] = 18000, + filters: Optional[List["PacketCaptureFilter"]] = None, + **kwargs + ): + """ + :keyword target: Required. The ID of the targeted resource, only AzureVM and AzureVMSS as + target type are currently supported. + :paramtype target: str + :keyword scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :paramtype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :keyword target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :paramtype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :keyword bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes + are truncated. + :paramtype bytes_to_capture_per_packet: long + :keyword total_bytes_per_session: Maximum size of the capture output. + :paramtype total_bytes_per_session: long + :keyword time_limit_in_seconds: Maximum duration of the capture session in seconds. + :paramtype time_limit_in_seconds: int + :keyword storage_location: Required. The storage location for a packet capture session. + :paramtype storage_location: + ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :keyword filters: A list of packet capture filters. + :paramtype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + """ + super(PacketCaptureParameters, self).__init__(**kwargs) + self.target = target + self.scope = scope + self.target_type = target_type + self.bytes_to_capture_per_packet = bytes_to_capture_per_packet + self.total_bytes_per_session = total_bytes_per_session + self.time_limit_in_seconds = time_limit_in_seconds + self.storage_location = storage_location + self.filters = filters + + +class PacketCaptureQueryStatusResult(msrest.serialization.Model): + """Status of packet capture session. + + :ivar name: The name of the packet capture resource. + :vartype name: str + :ivar id: The ID of the packet capture resource. + :vartype id: str + :ivar capture_start_time: The start time of the packet capture session. + :vartype capture_start_time: ~datetime.datetime + :ivar packet_capture_status: The status of the packet capture session. Possible values include: + "NotStarted", "Running", "Stopped", "Error", "Unknown". + :vartype packet_capture_status: str or ~azure.mgmt.network.v2022_01_01.models.PcStatus + :ivar stop_reason: The reason the current packet capture session was stopped. + :vartype stop_reason: str + :ivar packet_capture_error: List of errors of packet capture session. + :vartype packet_capture_error: list[str or ~azure.mgmt.network.v2022_01_01.models.PcError] + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'capture_start_time': {'key': 'captureStartTime', 'type': 'iso-8601'}, + 'packet_capture_status': {'key': 'packetCaptureStatus', 'type': 'str'}, + 'stop_reason': {'key': 'stopReason', 'type': 'str'}, + 'packet_capture_error': {'key': 'packetCaptureError', 'type': '[str]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + id: Optional[str] = None, + capture_start_time: Optional[datetime.datetime] = None, + packet_capture_status: Optional[Union[str, "PcStatus"]] = None, + stop_reason: Optional[str] = None, + packet_capture_error: Optional[List[Union[str, "PcError"]]] = None, + **kwargs + ): + """ + :keyword name: The name of the packet capture resource. + :paramtype name: str + :keyword id: The ID of the packet capture resource. + :paramtype id: str + :keyword capture_start_time: The start time of the packet capture session. + :paramtype capture_start_time: ~datetime.datetime + :keyword packet_capture_status: The status of the packet capture session. Possible values + include: "NotStarted", "Running", "Stopped", "Error", "Unknown". + :paramtype packet_capture_status: str or ~azure.mgmt.network.v2022_01_01.models.PcStatus + :keyword stop_reason: The reason the current packet capture session was stopped. + :paramtype stop_reason: str + :keyword packet_capture_error: List of errors of packet capture session. + :paramtype packet_capture_error: list[str or ~azure.mgmt.network.v2022_01_01.models.PcError] + """ + super(PacketCaptureQueryStatusResult, self).__init__(**kwargs) + self.name = name + self.id = id + self.capture_start_time = capture_start_time + self.packet_capture_status = packet_capture_status + self.stop_reason = stop_reason + self.packet_capture_error = packet_capture_error + + +class PacketCaptureResult(msrest.serialization.Model): + """Information about packet capture session. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: Name of the packet capture session. + :vartype name: str + :ivar id: ID of the packet capture operation. + :vartype id: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar target: The ID of the targeted resource, only AzureVM and AzureVMSS as target type are + currently supported. + :vartype target: str + :ivar scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :vartype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :ivar target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :vartype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :ivar bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes are + truncated. + :vartype bytes_to_capture_per_packet: long + :ivar total_bytes_per_session: Maximum size of the capture output. + :vartype total_bytes_per_session: long + :ivar time_limit_in_seconds: Maximum duration of the capture session in seconds. + :vartype time_limit_in_seconds: int + :ivar storage_location: The storage location for a packet capture session. + :vartype storage_location: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :ivar filters: A list of packet capture filters. + :vartype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + :ivar provisioning_state: The provisioning state of the packet capture session. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'id': {'readonly': True}, + 'etag': {'readonly': True}, + 'bytes_to_capture_per_packet': {'maximum': 4294967295, 'minimum': 0}, + 'total_bytes_per_session': {'maximum': 4294967295, 'minimum': 0}, + 'time_limit_in_seconds': {'maximum': 18000, 'minimum': 0}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'target': {'key': 'properties.target', 'type': 'str'}, + 'scope': {'key': 'properties.scope', 'type': 'PacketCaptureMachineScope'}, + 'target_type': {'key': 'properties.targetType', 'type': 'str'}, + 'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'long'}, + 'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'long'}, + 'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'}, + 'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'}, + 'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + target: Optional[str] = None, + scope: Optional["PacketCaptureMachineScope"] = None, + target_type: Optional[Union[str, "PacketCaptureTargetType"]] = None, + bytes_to_capture_per_packet: Optional[int] = 0, + total_bytes_per_session: Optional[int] = 1073741824, + time_limit_in_seconds: Optional[int] = 18000, + storage_location: Optional["PacketCaptureStorageLocation"] = None, + filters: Optional[List["PacketCaptureFilter"]] = None, + **kwargs + ): + """ + :keyword target: The ID of the targeted resource, only AzureVM and AzureVMSS as target type are + currently supported. + :paramtype target: str + :keyword scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :paramtype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :keyword target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :paramtype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :keyword bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes + are truncated. + :paramtype bytes_to_capture_per_packet: long + :keyword total_bytes_per_session: Maximum size of the capture output. + :paramtype total_bytes_per_session: long + :keyword time_limit_in_seconds: Maximum duration of the capture session in seconds. + :paramtype time_limit_in_seconds: int + :keyword storage_location: The storage location for a packet capture session. + :paramtype storage_location: + ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :keyword filters: A list of packet capture filters. + :paramtype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + """ + super(PacketCaptureResult, self).__init__(**kwargs) + self.name = None + self.id = None + self.etag = None + self.target = target + self.scope = scope + self.target_type = target_type + self.bytes_to_capture_per_packet = bytes_to_capture_per_packet + self.total_bytes_per_session = total_bytes_per_session + self.time_limit_in_seconds = time_limit_in_seconds + self.storage_location = storage_location + self.filters = filters + self.provisioning_state = None + + +class PacketCaptureResultProperties(PacketCaptureParameters): + """The properties of a packet capture session. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar target: Required. The ID of the targeted resource, only AzureVM and AzureVMSS as target + type are currently supported. + :vartype target: str + :ivar scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :vartype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :ivar target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :vartype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :ivar bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes are + truncated. + :vartype bytes_to_capture_per_packet: long + :ivar total_bytes_per_session: Maximum size of the capture output. + :vartype total_bytes_per_session: long + :ivar time_limit_in_seconds: Maximum duration of the capture session in seconds. + :vartype time_limit_in_seconds: int + :ivar storage_location: Required. The storage location for a packet capture session. + :vartype storage_location: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :ivar filters: A list of packet capture filters. + :vartype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + :ivar provisioning_state: The provisioning state of the packet capture session. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'target': {'required': True}, + 'bytes_to_capture_per_packet': {'maximum': 4294967295, 'minimum': 0}, + 'total_bytes_per_session': {'maximum': 4294967295, 'minimum': 0}, + 'time_limit_in_seconds': {'maximum': 18000, 'minimum': 0}, + 'storage_location': {'required': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'target': {'key': 'target', 'type': 'str'}, + 'scope': {'key': 'scope', 'type': 'PacketCaptureMachineScope'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'long'}, + 'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'long'}, + 'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'}, + 'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'}, + 'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + target: str, + storage_location: "PacketCaptureStorageLocation", + scope: Optional["PacketCaptureMachineScope"] = None, + target_type: Optional[Union[str, "PacketCaptureTargetType"]] = None, + bytes_to_capture_per_packet: Optional[int] = 0, + total_bytes_per_session: Optional[int] = 1073741824, + time_limit_in_seconds: Optional[int] = 18000, + filters: Optional[List["PacketCaptureFilter"]] = None, + **kwargs + ): + """ + :keyword target: Required. The ID of the targeted resource, only AzureVM and AzureVMSS as + target type are currently supported. + :paramtype target: str + :keyword scope: A list of AzureVMSS instances which can be included or excluded to run packet + capture. If both included and excluded are empty, then the packet capture will run on all + instances of AzureVMSS. + :paramtype scope: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureMachineScope + :keyword target_type: Target type of the resource provided. Possible values include: "AzureVM", + "AzureVMSS". + :paramtype target_type: str or ~azure.mgmt.network.v2022_01_01.models.PacketCaptureTargetType + :keyword bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes + are truncated. + :paramtype bytes_to_capture_per_packet: long + :keyword total_bytes_per_session: Maximum size of the capture output. + :paramtype total_bytes_per_session: long + :keyword time_limit_in_seconds: Maximum duration of the capture session in seconds. + :paramtype time_limit_in_seconds: int + :keyword storage_location: Required. The storage location for a packet capture session. + :paramtype storage_location: + ~azure.mgmt.network.v2022_01_01.models.PacketCaptureStorageLocation + :keyword filters: A list of packet capture filters. + :paramtype filters: list[~azure.mgmt.network.v2022_01_01.models.PacketCaptureFilter] + """ + super(PacketCaptureResultProperties, self).__init__(target=target, scope=scope, target_type=target_type, bytes_to_capture_per_packet=bytes_to_capture_per_packet, total_bytes_per_session=total_bytes_per_session, time_limit_in_seconds=time_limit_in_seconds, storage_location=storage_location, filters=filters, **kwargs) + self.provisioning_state = None + + +class PacketCaptureStorageLocation(msrest.serialization.Model): + """The storage location for a packet capture session. + + :ivar storage_id: The ID of the storage account to save the packet capture session. Required if + no local file path is provided. + :vartype storage_id: str + :ivar storage_path: The URI of the storage path to save the packet capture. Must be a + well-formed URI describing the location to save the packet capture. + :vartype storage_path: str + :ivar file_path: A valid local path on the targeting VM. Must include the name of the capture + file (*.cap). For linux virtual machine it must start with /var/captures. Required if no + storage ID is provided, otherwise optional. + :vartype file_path: str + """ + + _attribute_map = { + 'storage_id': {'key': 'storageId', 'type': 'str'}, + 'storage_path': {'key': 'storagePath', 'type': 'str'}, + 'file_path': {'key': 'filePath', 'type': 'str'}, + } + + def __init__( + self, + *, + storage_id: Optional[str] = None, + storage_path: Optional[str] = None, + file_path: Optional[str] = None, + **kwargs + ): + """ + :keyword storage_id: The ID of the storage account to save the packet capture session. Required + if no local file path is provided. + :paramtype storage_id: str + :keyword storage_path: The URI of the storage path to save the packet capture. Must be a + well-formed URI describing the location to save the packet capture. + :paramtype storage_path: str + :keyword file_path: A valid local path on the targeting VM. Must include the name of the + capture file (*.cap). For linux virtual machine it must start with /var/captures. Required if + no storage ID is provided, otherwise optional. + :paramtype file_path: str + """ + super(PacketCaptureStorageLocation, self).__init__(**kwargs) + self.storage_id = storage_id + self.storage_path = storage_path + self.file_path = file_path + + +class PatchObject(msrest.serialization.Model): + """Object for patch operations. + + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + """ + + _attribute_map = { + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ + super(PatchObject, self).__init__(**kwargs) + self.tags = tags + + +class PatchRouteFilter(SubResource): + """Route Filter Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar rules: Collection of RouteFilterRules contained within a route filter. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + :ivar peerings: A collection of references to express route circuit peerings. + :vartype peerings: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :ivar ipv6_peerings: A collection of references to express route circuit ipv6 peerings. + :vartype ipv6_peerings: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :ivar provisioning_state: The provisioning state of the route filter resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'peerings': {'readonly': True}, + 'ipv6_peerings': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'}, + 'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'}, + 'ipv6_peerings': {'key': 'properties.ipv6Peerings', 'type': '[ExpressRouteCircuitPeering]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + rules: Optional[List["RouteFilterRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword rules: Collection of RouteFilterRules contained within a route filter. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + """ + super(PatchRouteFilter, self).__init__(id=id, **kwargs) + self.name = None + self.etag = None + self.type = None + self.tags = tags + self.rules = rules + self.peerings = None + self.ipv6_peerings = None + self.provisioning_state = None + + +class PatchRouteFilterRule(SubResource): + """Route Filter Rule Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar access: The access type of the rule. Possible values include: "Allow", "Deny". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.Access + :ivar route_filter_rule_type: The rule type of the rule. Possible values include: "Community". + :vartype route_filter_rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.RouteFilterRuleType + :ivar communities: The collection for bgp community values to filter on. e.g. + ['12076:5010','12076:5020']. + :vartype communities: list[str] + :ivar provisioning_state: The provisioning state of the route filter rule resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'access': {'key': 'properties.access', 'type': 'str'}, + 'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'}, + 'communities': {'key': 'properties.communities', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + access: Optional[Union[str, "Access"]] = None, + route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None, + communities: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword access: The access type of the rule. Possible values include: "Allow", "Deny". + :paramtype access: str or ~azure.mgmt.network.v2022_01_01.models.Access + :keyword route_filter_rule_type: The rule type of the rule. Possible values include: + "Community". + :paramtype route_filter_rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.RouteFilterRuleType + :keyword communities: The collection for bgp community values to filter on. e.g. + ['12076:5010','12076:5020']. + :paramtype communities: list[str] + """ + super(PatchRouteFilterRule, self).__init__(id=id, **kwargs) + self.name = None + self.etag = None + self.access = access + self.route_filter_rule_type = route_filter_rule_type + self.communities = communities + self.provisioning_state = None + + +class PeerExpressRouteCircuitConnection(SubResource): + """Peer Express Route Circuit Connection in an ExpressRouteCircuitPeering resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the circuit. + :vartype express_route_circuit_peering: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the peered circuit. + :vartype peer_express_route_circuit_peering: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar address_prefix: /29 IP address space to carve out Customer addresses for tunnels. + :vartype address_prefix: str + :ivar circuit_connection_status: Express Route Circuit connection state. Possible values + include: "Connected", "Connecting", "Disconnected". + :vartype circuit_connection_status: str or + ~azure.mgmt.network.v2022_01_01.models.CircuitConnectionStatus + :ivar connection_name: The name of the express route circuit connection resource. + :vartype connection_name: str + :ivar auth_resource_guid: The resource guid of the authorization used for the express route + circuit connection. + :vartype auth_resource_guid: str + :ivar provisioning_state: The provisioning state of the peer express route circuit connection + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'circuit_connection_status': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'}, + 'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'}, + 'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'}, + 'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'}, + 'connection_name': {'key': 'properties.connectionName', 'type': 'str'}, + 'auth_resource_guid': {'key': 'properties.authResourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + express_route_circuit_peering: Optional["SubResource"] = None, + peer_express_route_circuit_peering: Optional["SubResource"] = None, + address_prefix: Optional[str] = None, + connection_name: Optional[str] = None, + auth_resource_guid: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the circuit. + :paramtype express_route_circuit_peering: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering + Resource of the peered circuit. + :paramtype peer_express_route_circuit_peering: + ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword address_prefix: /29 IP address space to carve out Customer addresses for tunnels. + :paramtype address_prefix: str + :keyword connection_name: The name of the express route circuit connection resource. + :paramtype connection_name: str + :keyword auth_resource_guid: The resource guid of the authorization used for the express route + circuit connection. + :paramtype auth_resource_guid: str + """ + super(PeerExpressRouteCircuitConnection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.express_route_circuit_peering = express_route_circuit_peering + self.peer_express_route_circuit_peering = peer_express_route_circuit_peering + self.address_prefix = address_prefix + self.circuit_connection_status = None + self.connection_name = connection_name + self.auth_resource_guid = auth_resource_guid + self.provisioning_state = None + + +class PeerExpressRouteCircuitConnectionListResult(msrest.serialization.Model): + """Response for ListPeeredConnections API service call retrieves all global reach peer circuit connections that belongs to a Private Peering for an ExpressRouteCircuit. + + :ivar value: The global reach peer circuit connection associated with Private Peering in an + ExpressRoute Circuit. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PeerExpressRouteCircuitConnection] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PeerExpressRouteCircuitConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["PeerExpressRouteCircuitConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The global reach peer circuit connection associated with Private Peering in an + ExpressRoute Circuit. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.PeerExpressRouteCircuitConnection] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(PeerExpressRouteCircuitConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class PeerRoute(msrest.serialization.Model): + """Peer routing details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar local_address: The peer's local address. + :vartype local_address: str + :ivar network: The route's network prefix. + :vartype network: str + :ivar next_hop: The route's next hop. + :vartype next_hop: str + :ivar source_peer: The peer this route was learned from. + :vartype source_peer: str + :ivar origin: The source this route was learned from. + :vartype origin: str + :ivar as_path: The route's AS path sequence. + :vartype as_path: str + :ivar weight: The route's weight. + :vartype weight: int + """ + + _validation = { + 'local_address': {'readonly': True}, + 'network': {'readonly': True}, + 'next_hop': {'readonly': True}, + 'source_peer': {'readonly': True}, + 'origin': {'readonly': True}, + 'as_path': {'readonly': True}, + 'weight': {'readonly': True}, + } + + _attribute_map = { + 'local_address': {'key': 'localAddress', 'type': 'str'}, + 'network': {'key': 'network', 'type': 'str'}, + 'next_hop': {'key': 'nextHop', 'type': 'str'}, + 'source_peer': {'key': 'sourcePeer', 'type': 'str'}, + 'origin': {'key': 'origin', 'type': 'str'}, + 'as_path': {'key': 'asPath', 'type': 'str'}, + 'weight': {'key': 'weight', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(PeerRoute, self).__init__(**kwargs) + self.local_address = None + self.network = None + self.next_hop = None + self.source_peer = None + self.origin = None + self.as_path = None + self.weight = None + + +class PeerRouteList(msrest.serialization.Model): + """List of virtual router peer routes. + + :ivar value: List of peer routes. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PeerRoute] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PeerRoute]'}, + } + + def __init__( + self, + *, + value: Optional[List["PeerRoute"]] = None, + **kwargs + ): + """ + :keyword value: List of peer routes. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PeerRoute] + """ + super(PeerRouteList, self).__init__(**kwargs) + self.value = value + + +class PolicySettings(msrest.serialization.Model): + """Defines contents of a web application firewall global configuration. + + :ivar state: The state of the policy. Possible values include: "Disabled", "Enabled". + :vartype state: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallEnabledState + :ivar mode: The mode of the policy. Possible values include: "Prevention", "Detection". + :vartype mode: str or ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallMode + :ivar request_body_check: Whether to allow WAF to check request Body. + :vartype request_body_check: bool + :ivar max_request_body_size_in_kb: Maximum request body size in Kb for WAF. + :vartype max_request_body_size_in_kb: int + :ivar file_upload_limit_in_mb: Maximum file upload size in Mb for WAF. + :vartype file_upload_limit_in_mb: int + """ + + _validation = { + 'max_request_body_size_in_kb': {'minimum': 8}, + 'file_upload_limit_in_mb': {'minimum': 0}, + } + + _attribute_map = { + 'state': {'key': 'state', 'type': 'str'}, + 'mode': {'key': 'mode', 'type': 'str'}, + 'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'}, + 'max_request_body_size_in_kb': {'key': 'maxRequestBodySizeInKb', 'type': 'int'}, + 'file_upload_limit_in_mb': {'key': 'fileUploadLimitInMb', 'type': 'int'}, + } + + def __init__( + self, + *, + state: Optional[Union[str, "WebApplicationFirewallEnabledState"]] = None, + mode: Optional[Union[str, "WebApplicationFirewallMode"]] = None, + request_body_check: Optional[bool] = None, + max_request_body_size_in_kb: Optional[int] = None, + file_upload_limit_in_mb: Optional[int] = None, + **kwargs + ): + """ + :keyword state: The state of the policy. Possible values include: "Disabled", "Enabled". + :paramtype state: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallEnabledState + :keyword mode: The mode of the policy. Possible values include: "Prevention", "Detection". + :paramtype mode: str or ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallMode + :keyword request_body_check: Whether to allow WAF to check request Body. + :paramtype request_body_check: bool + :keyword max_request_body_size_in_kb: Maximum request body size in Kb for WAF. + :paramtype max_request_body_size_in_kb: int + :keyword file_upload_limit_in_mb: Maximum file upload size in Mb for WAF. + :paramtype file_upload_limit_in_mb: int + """ + super(PolicySettings, self).__init__(**kwargs) + self.state = state + self.mode = mode + self.request_body_check = request_body_check + self.max_request_body_size_in_kb = max_request_body_size_in_kb + self.file_upload_limit_in_mb = file_upload_limit_in_mb + + +class PrepareNetworkPoliciesRequest(msrest.serialization.Model): + """Details of PrepareNetworkPolicies for Subnet. + + :ivar service_name: The name of the service for which subnet is being prepared for. + :vartype service_name: str + :ivar network_intent_policy_configurations: A list of NetworkIntentPolicyConfiguration. + :vartype network_intent_policy_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkIntentPolicyConfiguration] + """ + + _attribute_map = { + 'service_name': {'key': 'serviceName', 'type': 'str'}, + 'network_intent_policy_configurations': {'key': 'networkIntentPolicyConfigurations', 'type': '[NetworkIntentPolicyConfiguration]'}, + } + + def __init__( + self, + *, + service_name: Optional[str] = None, + network_intent_policy_configurations: Optional[List["NetworkIntentPolicyConfiguration"]] = None, + **kwargs + ): + """ + :keyword service_name: The name of the service for which subnet is being prepared for. + :paramtype service_name: str + :keyword network_intent_policy_configurations: A list of NetworkIntentPolicyConfiguration. + :paramtype network_intent_policy_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkIntentPolicyConfiguration] + """ + super(PrepareNetworkPoliciesRequest, self).__init__(**kwargs) + self.service_name = service_name + self.network_intent_policy_configurations = network_intent_policy_configurations + + +class PrivateDnsZoneConfig(msrest.serialization.Model): + """PrivateDnsZoneConfig resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: Name of the resource that is unique within a resource group. This name can be used + to access the resource. + :vartype name: str + :ivar private_dns_zone_id: The resource id of the private dns zone. + :vartype private_dns_zone_id: str + :ivar record_sets: A collection of information regarding a recordSet, holding information to + identify private resources. + :vartype record_sets: list[~azure.mgmt.network.v2022_01_01.models.RecordSet] + """ + + _validation = { + 'record_sets': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'private_dns_zone_id': {'key': 'properties.privateDnsZoneId', 'type': 'str'}, + 'record_sets': {'key': 'properties.recordSets', 'type': '[RecordSet]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + private_dns_zone_id: Optional[str] = None, + **kwargs + ): + """ + :keyword name: Name of the resource that is unique within a resource group. This name can be + used to access the resource. + :paramtype name: str + :keyword private_dns_zone_id: The resource id of the private dns zone. + :paramtype private_dns_zone_id: str + """ + super(PrivateDnsZoneConfig, self).__init__(**kwargs) + self.name = name + self.private_dns_zone_id = private_dns_zone_id + self.record_sets = None + + +class PrivateDnsZoneGroup(SubResource): + """Private dns zone group resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the resource that is unique within a resource group. This name can be used + to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar provisioning_state: The provisioning state of the private dns zone group resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_dns_zone_configs: A collection of private dns zone configurations of the private + dns zone group. + :vartype private_dns_zone_configs: + list[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneConfig] + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_dns_zone_configs': {'key': 'properties.privateDnsZoneConfigs', 'type': '[PrivateDnsZoneConfig]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_dns_zone_configs: Optional[List["PrivateDnsZoneConfig"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the resource that is unique within a resource group. This name can be + used to access the resource. + :paramtype name: str + :keyword private_dns_zone_configs: A collection of private dns zone configurations of the + private dns zone group. + :paramtype private_dns_zone_configs: + list[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneConfig] + """ + super(PrivateDnsZoneGroup, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.provisioning_state = None + self.private_dns_zone_configs = private_dns_zone_configs + + +class PrivateDnsZoneGroupListResult(msrest.serialization.Model): + """Response for the ListPrivateDnsZoneGroups API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of private dns zone group resources in a private endpoint. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PrivateDnsZoneGroup]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["PrivateDnsZoneGroup"]] = None, + **kwargs + ): + """ + :keyword value: A list of private dns zone group resources in a private endpoint. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup] + """ + super(PrivateDnsZoneGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class PrivateEndpoint(Resource): + """Private endpoint resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the load balancer. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar subnet: The ID of the subnet from which the private IP will be allocated. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :ivar network_interfaces: An array of references to the network interfaces created for this + private endpoint. + :vartype network_interfaces: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + :ivar provisioning_state: The provisioning state of the private endpoint resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_link_service_connections: A grouping of information about the connection to the + remote resource. + :vartype private_link_service_connections: + list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnection] + :ivar manual_private_link_service_connections: A grouping of information about the connection + to the remote resource. Used when the network admin does not have access to approve connections + to the remote resource. + :vartype manual_private_link_service_connections: + list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnection] + :ivar custom_dns_configs: An array of custom dns configurations. + :vartype custom_dns_configs: + list[~azure.mgmt.network.v2022_01_01.models.CustomDnsConfigPropertiesFormat] + :ivar application_security_groups: Application security groups in which the private endpoint IP + configuration is included. + :vartype application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :ivar ip_configurations: A list of IP configurations of the private endpoint. This will be used + to map to the First Party Service's endpoints. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointIPConfiguration] + :ivar custom_network_interface_name: The custom name of the network interface attached to the + private endpoint. + :vartype custom_network_interface_name: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'network_interfaces': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'Subnet'}, + 'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_link_service_connections': {'key': 'properties.privateLinkServiceConnections', 'type': '[PrivateLinkServiceConnection]'}, + 'manual_private_link_service_connections': {'key': 'properties.manualPrivateLinkServiceConnections', 'type': '[PrivateLinkServiceConnection]'}, + 'custom_dns_configs': {'key': 'properties.customDnsConfigs', 'type': '[CustomDnsConfigPropertiesFormat]'}, + 'application_security_groups': {'key': 'properties.applicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[PrivateEndpointIPConfiguration]'}, + 'custom_network_interface_name': {'key': 'properties.customNetworkInterfaceName', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + subnet: Optional["Subnet"] = None, + private_link_service_connections: Optional[List["PrivateLinkServiceConnection"]] = None, + manual_private_link_service_connections: Optional[List["PrivateLinkServiceConnection"]] = None, + custom_dns_configs: Optional[List["CustomDnsConfigPropertiesFormat"]] = None, + application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None, + ip_configurations: Optional[List["PrivateEndpointIPConfiguration"]] = None, + custom_network_interface_name: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the load balancer. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword subnet: The ID of the subnet from which the private IP will be allocated. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword private_link_service_connections: A grouping of information about the connection to + the remote resource. + :paramtype private_link_service_connections: + list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnection] + :keyword manual_private_link_service_connections: A grouping of information about the + connection to the remote resource. Used when the network admin does not have access to approve + connections to the remote resource. + :paramtype manual_private_link_service_connections: + list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnection] + :keyword custom_dns_configs: An array of custom dns configurations. + :paramtype custom_dns_configs: + list[~azure.mgmt.network.v2022_01_01.models.CustomDnsConfigPropertiesFormat] + :keyword application_security_groups: Application security groups in which the private endpoint + IP configuration is included. + :paramtype application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :keyword ip_configurations: A list of IP configurations of the private endpoint. This will be + used to map to the First Party Service's endpoints. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointIPConfiguration] + :keyword custom_network_interface_name: The custom name of the network interface attached to + the private endpoint. + :paramtype custom_network_interface_name: str + """ + super(PrivateEndpoint, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.etag = None + self.subnet = subnet + self.network_interfaces = None + self.provisioning_state = None + self.private_link_service_connections = private_link_service_connections + self.manual_private_link_service_connections = manual_private_link_service_connections + self.custom_dns_configs = custom_dns_configs + self.application_security_groups = application_security_groups + self.ip_configurations = ip_configurations + self.custom_network_interface_name = custom_network_interface_name + + +class PrivateEndpointConnection(SubResource): + """PrivateEndpointConnection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar type: The resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar private_endpoint: The resource of private end point. + :vartype private_endpoint: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint + :ivar private_link_service_connection_state: A collection of information about the state of the + connection between service consumer and provider. + :vartype private_link_service_connection_state: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnectionState + :ivar provisioning_state: The provisioning state of the private endpoint connection resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar link_identifier: The consumer link id. + :vartype link_identifier: str + """ + + _validation = { + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'private_endpoint': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'link_identifier': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'}, + 'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'link_identifier': {'key': 'properties.linkIdentifier', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword private_link_service_connection_state: A collection of information about the state of + the connection between service consumer and provider. + :paramtype private_link_service_connection_state: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnectionState + """ + super(PrivateEndpointConnection, self).__init__(id=id, **kwargs) + self.name = name + self.type = None + self.etag = None + self.private_endpoint = None + self.private_link_service_connection_state = private_link_service_connection_state + self.provisioning_state = None + self.link_identifier = None + + +class PrivateEndpointConnectionListResult(msrest.serialization.Model): + """Response for the ListPrivateEndpointConnection API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of PrivateEndpointConnection resources for a specific private link service. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["PrivateEndpointConnection"]] = None, + **kwargs + ): + """ + :keyword value: A list of PrivateEndpointConnection resources for a specific private link + service. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection] + """ + super(PrivateEndpointConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class PrivateEndpointIPConfiguration(msrest.serialization.Model): + """An IP Configuration of the private endpoint. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: The name of the resource that is unique within a resource group. + :vartype name: str + :ivar type: The resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar group_id: The ID of a group obtained from the remote resource that this private endpoint + should connect to. + :vartype group_id: str + :ivar member_name: The member name of a group obtained from the remote resource that this + private endpoint should connect to. + :vartype member_name: str + :ivar private_ip_address: A private ip address obtained from the private endpoint's subnet. + :vartype private_ip_address: str + """ + + _validation = { + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'group_id': {'key': 'properties.groupId', 'type': 'str'}, + 'member_name': {'key': 'properties.memberName', 'type': 'str'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + group_id: Optional[str] = None, + member_name: Optional[str] = None, + private_ip_address: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the resource that is unique within a resource group. + :paramtype name: str + :keyword group_id: The ID of a group obtained from the remote resource that this private + endpoint should connect to. + :paramtype group_id: str + :keyword member_name: The member name of a group obtained from the remote resource that this + private endpoint should connect to. + :paramtype member_name: str + :keyword private_ip_address: A private ip address obtained from the private endpoint's subnet. + :paramtype private_ip_address: str + """ + super(PrivateEndpointIPConfiguration, self).__init__(**kwargs) + self.name = name + self.type = None + self.etag = None + self.group_id = group_id + self.member_name = member_name + self.private_ip_address = private_ip_address + + +class PrivateEndpointListResult(msrest.serialization.Model): + """Response for the ListPrivateEndpoints API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of private endpoint resources in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PrivateEndpoint]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["PrivateEndpoint"]] = None, + **kwargs + ): + """ + :keyword value: A list of private endpoint resources in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint] + """ + super(PrivateEndpointListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class PrivateLinkService(Resource): + """Private link service resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the load balancer. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar load_balancer_frontend_ip_configurations: An array of references to the load balancer IP + configurations. + :vartype load_balancer_frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration] + :ivar ip_configurations: An array of private link service IP configurations. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceIpConfiguration] + :ivar network_interfaces: An array of references to the network interfaces created for this + private link service. + :vartype network_interfaces: list[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + :ivar provisioning_state: The provisioning state of the private link service resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_endpoint_connections: An array of list about connections to the private endpoint. + :vartype private_endpoint_connections: + list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection] + :ivar visibility: The visibility list of the private link service. + :vartype visibility: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServicePropertiesVisibility + :ivar auto_approval: The auto-approval list of the private link service. + :vartype auto_approval: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServicePropertiesAutoApproval + :ivar fqdns: The list of Fqdn. + :vartype fqdns: list[str] + :ivar alias: The alias of the private link service. + :vartype alias: str + :ivar enable_proxy_protocol: Whether the private link service is enabled for proxy protocol or + not. + :vartype enable_proxy_protocol: bool + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'network_interfaces': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'private_endpoint_connections': {'readonly': True}, + 'alias': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'load_balancer_frontend_ip_configurations': {'key': 'properties.loadBalancerFrontendIpConfigurations', 'type': '[FrontendIPConfiguration]'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[PrivateLinkServiceIpConfiguration]'}, + 'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[PrivateEndpointConnection]'}, + 'visibility': {'key': 'properties.visibility', 'type': 'PrivateLinkServicePropertiesVisibility'}, + 'auto_approval': {'key': 'properties.autoApproval', 'type': 'PrivateLinkServicePropertiesAutoApproval'}, + 'fqdns': {'key': 'properties.fqdns', 'type': '[str]'}, + 'alias': {'key': 'properties.alias', 'type': 'str'}, + 'enable_proxy_protocol': {'key': 'properties.enableProxyProtocol', 'type': 'bool'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + load_balancer_frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None, + ip_configurations: Optional[List["PrivateLinkServiceIpConfiguration"]] = None, + visibility: Optional["PrivateLinkServicePropertiesVisibility"] = None, + auto_approval: Optional["PrivateLinkServicePropertiesAutoApproval"] = None, + fqdns: Optional[List[str]] = None, + enable_proxy_protocol: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the load balancer. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword load_balancer_frontend_ip_configurations: An array of references to the load balancer + IP configurations. + :paramtype load_balancer_frontend_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration] + :keyword ip_configurations: An array of private link service IP configurations. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceIpConfiguration] + :keyword visibility: The visibility list of the private link service. + :paramtype visibility: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServicePropertiesVisibility + :keyword auto_approval: The auto-approval list of the private link service. + :paramtype auto_approval: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServicePropertiesAutoApproval + :keyword fqdns: The list of Fqdn. + :paramtype fqdns: list[str] + :keyword enable_proxy_protocol: Whether the private link service is enabled for proxy protocol + or not. + :paramtype enable_proxy_protocol: bool + """ + super(PrivateLinkService, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.etag = None + self.load_balancer_frontend_ip_configurations = load_balancer_frontend_ip_configurations + self.ip_configurations = ip_configurations + self.network_interfaces = None + self.provisioning_state = None + self.private_endpoint_connections = None + self.visibility = visibility + self.auto_approval = auto_approval + self.fqdns = fqdns + self.alias = None + self.enable_proxy_protocol = enable_proxy_protocol + + +class PrivateLinkServiceConnection(SubResource): + """PrivateLinkServiceConnection resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar type: The resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar provisioning_state: The provisioning state of the private link service connection + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_link_service_id: The resource id of private link service. + :vartype private_link_service_id: str + :ivar group_ids: The ID(s) of the group(s) obtained from the remote resource that this private + endpoint should connect to. + :vartype group_ids: list[str] + :ivar request_message: A message passed to the owner of the remote resource with this + connection request. Restricted to 140 chars. + :vartype request_message: str + :ivar private_link_service_connection_state: A collection of read-only information about the + state of the connection to the remote resource. + :vartype private_link_service_connection_state: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnectionState + """ + + _validation = { + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_link_service_id': {'key': 'properties.privateLinkServiceId', 'type': 'str'}, + 'group_ids': {'key': 'properties.groupIds', 'type': '[str]'}, + 'request_message': {'key': 'properties.requestMessage', 'type': 'str'}, + 'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_link_service_id: Optional[str] = None, + group_ids: Optional[List[str]] = None, + request_message: Optional[str] = None, + private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword private_link_service_id: The resource id of private link service. + :paramtype private_link_service_id: str + :keyword group_ids: The ID(s) of the group(s) obtained from the remote resource that this + private endpoint should connect to. + :paramtype group_ids: list[str] + :keyword request_message: A message passed to the owner of the remote resource with this + connection request. Restricted to 140 chars. + :paramtype request_message: str + :keyword private_link_service_connection_state: A collection of read-only information about the + state of the connection to the remote resource. + :paramtype private_link_service_connection_state: + ~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceConnectionState + """ + super(PrivateLinkServiceConnection, self).__init__(id=id, **kwargs) + self.name = name + self.type = None + self.etag = None + self.provisioning_state = None + self.private_link_service_id = private_link_service_id + self.group_ids = group_ids + self.request_message = request_message + self.private_link_service_connection_state = private_link_service_connection_state + + +class PrivateLinkServiceConnectionState(msrest.serialization.Model): + """A collection of information about the state of the connection between service consumer and provider. + + :ivar status: Indicates whether the connection has been Approved/Rejected/Removed by the owner + of the service. + :vartype status: str + :ivar description: The reason for approval/rejection of the connection. + :vartype description: str + :ivar actions_required: A message indicating if changes on the service provider require any + updates on the consumer. + :vartype actions_required: str + """ + + _attribute_map = { + 'status': {'key': 'status', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'actions_required': {'key': 'actionsRequired', 'type': 'str'}, + } + + def __init__( + self, + *, + status: Optional[str] = None, + description: Optional[str] = None, + actions_required: Optional[str] = None, + **kwargs + ): + """ + :keyword status: Indicates whether the connection has been Approved/Rejected/Removed by the + owner of the service. + :paramtype status: str + :keyword description: The reason for approval/rejection of the connection. + :paramtype description: str + :keyword actions_required: A message indicating if changes on the service provider require any + updates on the consumer. + :paramtype actions_required: str + """ + super(PrivateLinkServiceConnectionState, self).__init__(**kwargs) + self.status = status + self.description = description + self.actions_required = actions_required + + +class PrivateLinkServiceIpConfiguration(SubResource): + """The private link service ip configuration. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of private link service ip configuration. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: The resource type. + :vartype type: str + :ivar private_ip_address: The private IP address of the IP configuration. + :vartype private_ip_address: str + :ivar private_ip_allocation_method: The private IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar subnet: The reference to the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :ivar primary: Whether the ip configuration is primary or not. + :vartype primary: bool + :ivar provisioning_state: The provisioning state of the private link service IP configuration + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6. + Default is IPv4. Possible values include: "IPv4", "IPv6". + :vartype private_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'Subnet'}, + 'primary': {'key': 'properties.primary', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_ip_address: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + subnet: Optional["Subnet"] = None, + primary: Optional[bool] = None, + private_ip_address_version: Optional[Union[str, "IPVersion"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of private link service ip configuration. + :paramtype name: str + :keyword private_ip_address: The private IP address of the IP configuration. + :paramtype private_ip_address: str + :keyword private_ip_allocation_method: The private IP address allocation method. Possible + values include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword subnet: The reference to the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword primary: Whether the ip configuration is primary or not. + :paramtype primary: bool + :keyword private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6. + Default is IPv4. Possible values include: "IPv4", "IPv6". + :paramtype private_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + """ + super(PrivateLinkServiceIpConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.private_ip_address = private_ip_address + self.private_ip_allocation_method = private_ip_allocation_method + self.subnet = subnet + self.primary = primary + self.provisioning_state = None + self.private_ip_address_version = private_ip_address_version + + +class PrivateLinkServiceListResult(msrest.serialization.Model): + """Response for the ListPrivateLinkService API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of PrivateLinkService resources in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkService] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PrivateLinkService]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["PrivateLinkService"]] = None, + **kwargs + ): + """ + :keyword value: A list of PrivateLinkService resources in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PrivateLinkService] + """ + super(PrivateLinkServiceListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ResourceSet(msrest.serialization.Model): + """The base resource set for visibility and auto-approval. + + :ivar subscriptions: The list of subscriptions. + :vartype subscriptions: list[str] + """ + + _attribute_map = { + 'subscriptions': {'key': 'subscriptions', 'type': '[str]'}, + } + + def __init__( + self, + *, + subscriptions: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword subscriptions: The list of subscriptions. + :paramtype subscriptions: list[str] + """ + super(ResourceSet, self).__init__(**kwargs) + self.subscriptions = subscriptions + + +class PrivateLinkServicePropertiesAutoApproval(ResourceSet): + """The auto-approval list of the private link service. + + :ivar subscriptions: The list of subscriptions. + :vartype subscriptions: list[str] + """ + + _attribute_map = { + 'subscriptions': {'key': 'subscriptions', 'type': '[str]'}, + } + + def __init__( + self, + *, + subscriptions: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword subscriptions: The list of subscriptions. + :paramtype subscriptions: list[str] + """ + super(PrivateLinkServicePropertiesAutoApproval, self).__init__(subscriptions=subscriptions, **kwargs) + + +class PrivateLinkServicePropertiesVisibility(ResourceSet): + """The visibility list of the private link service. + + :ivar subscriptions: The list of subscriptions. + :vartype subscriptions: list[str] + """ + + _attribute_map = { + 'subscriptions': {'key': 'subscriptions', 'type': '[str]'}, + } + + def __init__( + self, + *, + subscriptions: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword subscriptions: The list of subscriptions. + :paramtype subscriptions: list[str] + """ + super(PrivateLinkServicePropertiesVisibility, self).__init__(subscriptions=subscriptions, **kwargs) + + +class PrivateLinkServiceVisibility(msrest.serialization.Model): + """Response for the CheckPrivateLinkServiceVisibility API service call. + + :ivar visible: Private Link Service Visibility (True/False). + :vartype visible: bool + """ + + _attribute_map = { + 'visible': {'key': 'visible', 'type': 'bool'}, + } + + def __init__( + self, + *, + visible: Optional[bool] = None, + **kwargs + ): + """ + :keyword visible: Private Link Service Visibility (True/False). + :paramtype visible: bool + """ + super(PrivateLinkServiceVisibility, self).__init__(**kwargs) + self.visible = visible + + +class Probe(SubResource): + """A load balancer probe. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within the set of probes used by the load + balancer. This name can be used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Type of the resource. + :vartype type: str + :ivar load_balancing_rules: The load balancer rules that use this probe. + :vartype load_balancing_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar protocol: The protocol of the end point. If 'Tcp' is specified, a received ACK is + required for the probe to be successful. If 'Http' or 'Https' is specified, a 200 OK response + from the specifies URI is required for the probe to be successful. Possible values include: + "Http", "Tcp", "Https". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ProbeProtocol + :ivar port: The port for communicating the probe. Possible values range from 1 to 65535, + inclusive. + :vartype port: int + :ivar interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint + for health status. Typically, the interval is slightly less than half the allocated timeout + period (in seconds) which allows two full probes before taking the instance out of rotation. + The default value is 15, the minimum value is 5. + :vartype interval_in_seconds: int + :ivar number_of_probes: The number of probes where if no response, will result in stopping + further traffic from being delivered to the endpoint. This values allows endpoints to be taken + out of rotation faster or slower than the typical times used in Azure. + :vartype number_of_probes: int + :ivar request_path: The URI used for requesting health status from the VM. Path is required if + a protocol is set to http. Otherwise, it is not allowed. There is no default value. + :vartype request_path: str + :ivar provisioning_state: The provisioning state of the probe resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'load_balancing_rules': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'port': {'key': 'properties.port', 'type': 'int'}, + 'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'}, + 'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'}, + 'request_path': {'key': 'properties.requestPath', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + protocol: Optional[Union[str, "ProbeProtocol"]] = None, + port: Optional[int] = None, + interval_in_seconds: Optional[int] = None, + number_of_probes: Optional[int] = None, + request_path: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within the set of probes used by the + load balancer. This name can be used to access the resource. + :paramtype name: str + :keyword protocol: The protocol of the end point. If 'Tcp' is specified, a received ACK is + required for the probe to be successful. If 'Http' or 'Https' is specified, a 200 OK response + from the specifies URI is required for the probe to be successful. Possible values include: + "Http", "Tcp", "Https". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ProbeProtocol + :keyword port: The port for communicating the probe. Possible values range from 1 to 65535, + inclusive. + :paramtype port: int + :keyword interval_in_seconds: The interval, in seconds, for how frequently to probe the + endpoint for health status. Typically, the interval is slightly less than half the allocated + timeout period (in seconds) which allows two full probes before taking the instance out of + rotation. The default value is 15, the minimum value is 5. + :paramtype interval_in_seconds: int + :keyword number_of_probes: The number of probes where if no response, will result in stopping + further traffic from being delivered to the endpoint. This values allows endpoints to be taken + out of rotation faster or slower than the typical times used in Azure. + :paramtype number_of_probes: int + :keyword request_path: The URI used for requesting health status from the VM. Path is required + if a protocol is set to http. Otherwise, it is not allowed. There is no default value. + :paramtype request_path: str + """ + super(Probe, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.load_balancing_rules = None + self.protocol = protocol + self.port = port + self.interval_in_seconds = interval_in_seconds + self.number_of_probes = number_of_probes + self.request_path = request_path + self.provisioning_state = None + + +class PropagatedRouteTable(msrest.serialization.Model): + """The list of RouteTables to advertise the routes to. + + :ivar labels: The list of labels. + :vartype labels: list[str] + :ivar ids: The list of resource ids of all the RouteTables. + :vartype ids: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + + _attribute_map = { + 'labels': {'key': 'labels', 'type': '[str]'}, + 'ids': {'key': 'ids', 'type': '[SubResource]'}, + } + + def __init__( + self, + *, + labels: Optional[List[str]] = None, + ids: Optional[List["SubResource"]] = None, + **kwargs + ): + """ + :keyword labels: The list of labels. + :paramtype labels: list[str] + :keyword ids: The list of resource ids of all the RouteTables. + :paramtype ids: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + super(PropagatedRouteTable, self).__init__(**kwargs) + self.labels = labels + self.ids = ids + + +class ProtocolConfiguration(msrest.serialization.Model): + """Configuration of the protocol. + + :ivar http_configuration: HTTP configuration of the connectivity check. + :vartype http_configuration: ~azure.mgmt.network.v2022_01_01.models.HTTPConfiguration + """ + + _attribute_map = { + 'http_configuration': {'key': 'HTTPConfiguration', 'type': 'HTTPConfiguration'}, + } + + def __init__( + self, + *, + http_configuration: Optional["HTTPConfiguration"] = None, + **kwargs + ): + """ + :keyword http_configuration: HTTP configuration of the connectivity check. + :paramtype http_configuration: ~azure.mgmt.network.v2022_01_01.models.HTTPConfiguration + """ + super(ProtocolConfiguration, self).__init__(**kwargs) + self.http_configuration = http_configuration + + +class ProtocolCustomSettingsFormat(msrest.serialization.Model): + """DDoS custom policy properties. + + :ivar protocol: The protocol for which the DDoS protection policy is being customized. Possible + values include: "Tcp", "Udp", "Syn". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicyProtocol + :ivar trigger_rate_override: The customized DDoS protection trigger rate. + :vartype trigger_rate_override: str + :ivar source_rate_override: The customized DDoS protection source rate. + :vartype source_rate_override: str + :ivar trigger_sensitivity_override: The customized DDoS protection trigger rate sensitivity + degrees. High: Trigger rate set with most sensitivity w.r.t. normal traffic. Default: Trigger + rate set with moderate sensitivity w.r.t. normal traffic. Low: Trigger rate set with less + sensitivity w.r.t. normal traffic. Relaxed: Trigger rate set with least sensitivity w.r.t. + normal traffic. Possible values include: "Relaxed", "Low", "Default", "High". + :vartype trigger_sensitivity_override: str or + ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicyTriggerSensitivityOverride + """ + + _attribute_map = { + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'trigger_rate_override': {'key': 'triggerRateOverride', 'type': 'str'}, + 'source_rate_override': {'key': 'sourceRateOverride', 'type': 'str'}, + 'trigger_sensitivity_override': {'key': 'triggerSensitivityOverride', 'type': 'str'}, + } + + def __init__( + self, + *, + protocol: Optional[Union[str, "DdosCustomPolicyProtocol"]] = None, + trigger_rate_override: Optional[str] = None, + source_rate_override: Optional[str] = None, + trigger_sensitivity_override: Optional[Union[str, "DdosCustomPolicyTriggerSensitivityOverride"]] = None, + **kwargs + ): + """ + :keyword protocol: The protocol for which the DDoS protection policy is being customized. + Possible values include: "Tcp", "Udp", "Syn". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicyProtocol + :keyword trigger_rate_override: The customized DDoS protection trigger rate. + :paramtype trigger_rate_override: str + :keyword source_rate_override: The customized DDoS protection source rate. + :paramtype source_rate_override: str + :keyword trigger_sensitivity_override: The customized DDoS protection trigger rate sensitivity + degrees. High: Trigger rate set with most sensitivity w.r.t. normal traffic. Default: Trigger + rate set with moderate sensitivity w.r.t. normal traffic. Low: Trigger rate set with less + sensitivity w.r.t. normal traffic. Relaxed: Trigger rate set with least sensitivity w.r.t. + normal traffic. Possible values include: "Relaxed", "Low", "Default", "High". + :paramtype trigger_sensitivity_override: str or + ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicyTriggerSensitivityOverride + """ + super(ProtocolCustomSettingsFormat, self).__init__(**kwargs) + self.protocol = protocol + self.trigger_rate_override = trigger_rate_override + self.source_rate_override = source_rate_override + self.trigger_sensitivity_override = trigger_sensitivity_override + + +class PublicIPAddress(Resource): + """Public IP address resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the public ip address. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar sku: The public IP address SKU. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressSku + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar zones: A list of availability zones denoting the IP allocated for the resource needs to + come from. + :vartype zones: list[str] + :ivar public_ip_allocation_method: The public IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype public_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar public_ip_address_version: The public IP address version. Possible values include: + "IPv4", "IPv6". + :vartype public_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :ivar ip_configuration: The IP configuration associated with the public IP address. + :vartype ip_configuration: ~azure.mgmt.network.v2022_01_01.models.IPConfiguration + :ivar dns_settings: The FQDN of the DNS record associated with the public IP address. + :vartype dns_settings: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressDnsSettings + :ivar ddos_settings: The DDoS protection custom policy associated with the public IP address. + :vartype ddos_settings: ~azure.mgmt.network.v2022_01_01.models.DdosSettings + :ivar ip_tags: The list of tags associated with the public IP address. + :vartype ip_tags: list[~azure.mgmt.network.v2022_01_01.models.IpTag] + :ivar ip_address: The IP address associated with the public IP address resource. + :vartype ip_address: str + :ivar public_ip_prefix: The Public IP Prefix this Public IP Address should be allocated from. + :vartype public_ip_prefix: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar idle_timeout_in_minutes: The idle timeout of the public IP address. + :vartype idle_timeout_in_minutes: int + :ivar resource_guid: The resource GUID property of the public IP address resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the public IP address resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar service_public_ip_address: The service public IP address of the public IP address + resource. + :vartype service_public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :ivar nat_gateway: The NatGateway for the Public IP address. + :vartype nat_gateway: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :ivar migration_phase: Migration phase of Public IP Address. Possible values include: "None", + "Prepare", "Commit", "Abort", "Committed". + :vartype migration_phase: str or + ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressMigrationPhase + :ivar linked_public_ip_address: The linked public IP address of the public IP address resource. + :vartype linked_public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :ivar delete_option: Specify what happens to the public IP address when the VM using it is + deleted. Possible values include: "Delete", "Detach". + :vartype delete_option: str or ~azure.mgmt.network.v2022_01_01.models.DeleteOptions + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'ip_configuration': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'sku': {'key': 'sku', 'type': 'PublicIPAddressSku'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'zones': {'key': 'zones', 'type': '[str]'}, + 'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'}, + 'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'}, + 'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'}, + 'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'}, + 'ddos_settings': {'key': 'properties.ddosSettings', 'type': 'DdosSettings'}, + 'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'}, + 'ip_address': {'key': 'properties.ipAddress', 'type': 'str'}, + 'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'}, + 'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'service_public_ip_address': {'key': 'properties.servicePublicIPAddress', 'type': 'PublicIPAddress'}, + 'nat_gateway': {'key': 'properties.natGateway', 'type': 'NatGateway'}, + 'migration_phase': {'key': 'properties.migrationPhase', 'type': 'str'}, + 'linked_public_ip_address': {'key': 'properties.linkedPublicIPAddress', 'type': 'PublicIPAddress'}, + 'delete_option': {'key': 'properties.deleteOption', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + sku: Optional["PublicIPAddressSku"] = None, + zones: Optional[List[str]] = None, + public_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + public_ip_address_version: Optional[Union[str, "IPVersion"]] = None, + dns_settings: Optional["PublicIPAddressDnsSettings"] = None, + ddos_settings: Optional["DdosSettings"] = None, + ip_tags: Optional[List["IpTag"]] = None, + ip_address: Optional[str] = None, + public_ip_prefix: Optional["SubResource"] = None, + idle_timeout_in_minutes: Optional[int] = None, + service_public_ip_address: Optional["PublicIPAddress"] = None, + nat_gateway: Optional["NatGateway"] = None, + migration_phase: Optional[Union[str, "PublicIPAddressMigrationPhase"]] = None, + linked_public_ip_address: Optional["PublicIPAddress"] = None, + delete_option: Optional[Union[str, "DeleteOptions"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the public ip address. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword sku: The public IP address SKU. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressSku + :keyword zones: A list of availability zones denoting the IP allocated for the resource needs + to come from. + :paramtype zones: list[str] + :keyword public_ip_allocation_method: The public IP address allocation method. Possible values + include: "Static", "Dynamic". + :paramtype public_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword public_ip_address_version: The public IP address version. Possible values include: + "IPv4", "IPv6". + :paramtype public_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :keyword dns_settings: The FQDN of the DNS record associated with the public IP address. + :paramtype dns_settings: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressDnsSettings + :keyword ddos_settings: The DDoS protection custom policy associated with the public IP + address. + :paramtype ddos_settings: ~azure.mgmt.network.v2022_01_01.models.DdosSettings + :keyword ip_tags: The list of tags associated with the public IP address. + :paramtype ip_tags: list[~azure.mgmt.network.v2022_01_01.models.IpTag] + :keyword ip_address: The IP address associated with the public IP address resource. + :paramtype ip_address: str + :keyword public_ip_prefix: The Public IP Prefix this Public IP Address should be allocated + from. + :paramtype public_ip_prefix: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword idle_timeout_in_minutes: The idle timeout of the public IP address. + :paramtype idle_timeout_in_minutes: int + :keyword service_public_ip_address: The service public IP address of the public IP address + resource. + :paramtype service_public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :keyword nat_gateway: The NatGateway for the Public IP address. + :paramtype nat_gateway: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :keyword migration_phase: Migration phase of Public IP Address. Possible values include: + "None", "Prepare", "Commit", "Abort", "Committed". + :paramtype migration_phase: str or + ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressMigrationPhase + :keyword linked_public_ip_address: The linked public IP address of the public IP address + resource. + :paramtype linked_public_ip_address: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :keyword delete_option: Specify what happens to the public IP address when the VM using it is + deleted. Possible values include: "Delete", "Detach". + :paramtype delete_option: str or ~azure.mgmt.network.v2022_01_01.models.DeleteOptions + """ + super(PublicIPAddress, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.sku = sku + self.etag = None + self.zones = zones + self.public_ip_allocation_method = public_ip_allocation_method + self.public_ip_address_version = public_ip_address_version + self.ip_configuration = None + self.dns_settings = dns_settings + self.ddos_settings = ddos_settings + self.ip_tags = ip_tags + self.ip_address = ip_address + self.public_ip_prefix = public_ip_prefix + self.idle_timeout_in_minutes = idle_timeout_in_minutes + self.resource_guid = None + self.provisioning_state = None + self.service_public_ip_address = service_public_ip_address + self.nat_gateway = nat_gateway + self.migration_phase = migration_phase + self.linked_public_ip_address = linked_public_ip_address + self.delete_option = delete_option + + +class PublicIPAddressDnsSettings(msrest.serialization.Model): + """Contains FQDN of the DNS record associated with the public IP address. + + :ivar domain_name_label: The domain name label. The concatenation of the domain name label and + the regionalized DNS zone make up the fully qualified domain name associated with the public IP + address. If a domain name label is specified, an A DNS record is created for the public IP in + the Microsoft Azure DNS system. + :vartype domain_name_label: str + :ivar fqdn: The Fully Qualified Domain Name of the A DNS record associated with the public IP. + This is the concatenation of the domainNameLabel and the regionalized DNS zone. + :vartype fqdn: str + :ivar reverse_fqdn: The reverse FQDN. A user-visible, fully qualified domain name that resolves + to this public IP address. If the reverseFqdn is specified, then a PTR DNS record is created + pointing from the IP address in the in-addr.arpa domain to the reverse FQDN. + :vartype reverse_fqdn: str + """ + + _attribute_map = { + 'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'}, + 'fqdn': {'key': 'fqdn', 'type': 'str'}, + 'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'}, + } + + def __init__( + self, + *, + domain_name_label: Optional[str] = None, + fqdn: Optional[str] = None, + reverse_fqdn: Optional[str] = None, + **kwargs + ): + """ + :keyword domain_name_label: The domain name label. The concatenation of the domain name label + and the regionalized DNS zone make up the fully qualified domain name associated with the + public IP address. If a domain name label is specified, an A DNS record is created for the + public IP in the Microsoft Azure DNS system. + :paramtype domain_name_label: str + :keyword fqdn: The Fully Qualified Domain Name of the A DNS record associated with the public + IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone. + :paramtype fqdn: str + :keyword reverse_fqdn: The reverse FQDN. A user-visible, fully qualified domain name that + resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record is + created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN. + :paramtype reverse_fqdn: str + """ + super(PublicIPAddressDnsSettings, self).__init__(**kwargs) + self.domain_name_label = domain_name_label + self.fqdn = fqdn + self.reverse_fqdn = reverse_fqdn + + +class PublicIPAddressListResult(msrest.serialization.Model): + """Response for ListPublicIpAddresses API service call. + + :ivar value: A list of public IP addresses that exists in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PublicIPAddress] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PublicIPAddress]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["PublicIPAddress"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of public IP addresses that exists in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PublicIPAddress] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(PublicIPAddressListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class PublicIPAddressSku(msrest.serialization.Model): + """SKU of a public IP address. + + :ivar name: Name of a public IP address SKU. Possible values include: "Basic", "Standard". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressSkuName + :ivar tier: Tier of a public IP address SKU. Possible values include: "Regional", "Global". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressSkuTier + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'tier': {'key': 'tier', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "PublicIPAddressSkuName"]] = None, + tier: Optional[Union[str, "PublicIPAddressSkuTier"]] = None, + **kwargs + ): + """ + :keyword name: Name of a public IP address SKU. Possible values include: "Basic", "Standard". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressSkuName + :keyword tier: Tier of a public IP address SKU. Possible values include: "Regional", "Global". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPAddressSkuTier + """ + super(PublicIPAddressSku, self).__init__(**kwargs) + self.name = name + self.tier = tier + + +class PublicIPPrefix(Resource): + """Public IP prefix resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the public ip address. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar sku: The public IP prefix SKU. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixSku + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar zones: A list of availability zones denoting the IP allocated for the resource needs to + come from. + :vartype zones: list[str] + :ivar public_ip_address_version: The public IP address version. Possible values include: + "IPv4", "IPv6". + :vartype public_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :ivar ip_tags: The list of tags associated with the public IP prefix. + :vartype ip_tags: list[~azure.mgmt.network.v2022_01_01.models.IpTag] + :ivar prefix_length: The Length of the Public IP Prefix. + :vartype prefix_length: int + :ivar ip_prefix: The allocated Prefix. + :vartype ip_prefix: str + :ivar public_ip_addresses: The list of all referenced PublicIPAddresses. + :vartype public_ip_addresses: + list[~azure.mgmt.network.v2022_01_01.models.ReferencedPublicIpAddress] + :ivar load_balancer_frontend_ip_configuration: The reference to load balancer frontend IP + configuration associated with the public IP prefix. + :vartype load_balancer_frontend_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar custom_ip_prefix: The customIpPrefix that this prefix is associated with. + :vartype custom_ip_prefix: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar resource_guid: The resource GUID property of the public IP prefix resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the public IP prefix resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar nat_gateway: NatGateway of Public IP Prefix. + :vartype nat_gateway: ~azure.mgmt.network.v2022_01_01.models.NatGateway + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'ip_prefix': {'readonly': True}, + 'public_ip_addresses': {'readonly': True}, + 'load_balancer_frontend_ip_configuration': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'sku': {'key': 'sku', 'type': 'PublicIPPrefixSku'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'zones': {'key': 'zones', 'type': '[str]'}, + 'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'}, + 'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'}, + 'prefix_length': {'key': 'properties.prefixLength', 'type': 'int'}, + 'ip_prefix': {'key': 'properties.ipPrefix', 'type': 'str'}, + 'public_ip_addresses': {'key': 'properties.publicIPAddresses', 'type': '[ReferencedPublicIpAddress]'}, + 'load_balancer_frontend_ip_configuration': {'key': 'properties.loadBalancerFrontendIpConfiguration', 'type': 'SubResource'}, + 'custom_ip_prefix': {'key': 'properties.customIPPrefix', 'type': 'SubResource'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'nat_gateway': {'key': 'properties.natGateway', 'type': 'NatGateway'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + sku: Optional["PublicIPPrefixSku"] = None, + zones: Optional[List[str]] = None, + public_ip_address_version: Optional[Union[str, "IPVersion"]] = None, + ip_tags: Optional[List["IpTag"]] = None, + prefix_length: Optional[int] = None, + custom_ip_prefix: Optional["SubResource"] = None, + nat_gateway: Optional["NatGateway"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the public ip address. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword sku: The public IP prefix SKU. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixSku + :keyword zones: A list of availability zones denoting the IP allocated for the resource needs + to come from. + :paramtype zones: list[str] + :keyword public_ip_address_version: The public IP address version. Possible values include: + "IPv4", "IPv6". + :paramtype public_ip_address_version: str or ~azure.mgmt.network.v2022_01_01.models.IPVersion + :keyword ip_tags: The list of tags associated with the public IP prefix. + :paramtype ip_tags: list[~azure.mgmt.network.v2022_01_01.models.IpTag] + :keyword prefix_length: The Length of the Public IP Prefix. + :paramtype prefix_length: int + :keyword custom_ip_prefix: The customIpPrefix that this prefix is associated with. + :paramtype custom_ip_prefix: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword nat_gateway: NatGateway of Public IP Prefix. + :paramtype nat_gateway: ~azure.mgmt.network.v2022_01_01.models.NatGateway + """ + super(PublicIPPrefix, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.sku = sku + self.etag = None + self.zones = zones + self.public_ip_address_version = public_ip_address_version + self.ip_tags = ip_tags + self.prefix_length = prefix_length + self.ip_prefix = None + self.public_ip_addresses = None + self.load_balancer_frontend_ip_configuration = None + self.custom_ip_prefix = custom_ip_prefix + self.resource_guid = None + self.provisioning_state = None + self.nat_gateway = nat_gateway + + +class PublicIPPrefixListResult(msrest.serialization.Model): + """Response for ListPublicIpPrefixes API service call. + + :ivar value: A list of public IP prefixes that exists in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[PublicIPPrefix]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["PublicIPPrefix"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of public IP prefixes that exists in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(PublicIPPrefixListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class PublicIPPrefixSku(msrest.serialization.Model): + """SKU of a public IP prefix. + + :ivar name: Name of a public IP prefix SKU. Possible values include: "Standard". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixSkuName + :ivar tier: Tier of a public IP prefix SKU. Possible values include: "Regional", "Global". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixSkuTier + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'tier': {'key': 'tier', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "PublicIPPrefixSkuName"]] = None, + tier: Optional[Union[str, "PublicIPPrefixSkuTier"]] = None, + **kwargs + ): + """ + :keyword name: Name of a public IP prefix SKU. Possible values include: "Standard". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixSkuName + :keyword tier: Tier of a public IP prefix SKU. Possible values include: "Regional", "Global". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixSkuTier + """ + super(PublicIPPrefixSku, self).__init__(**kwargs) + self.name = name + self.tier = tier + + +class QosDefinition(msrest.serialization.Model): + """Quality of Service defines the traffic configuration between endpoints. Mandatory to have one marking. + + :ivar markings: List of markings to be used in the configuration. + :vartype markings: list[int] + :ivar source_ip_ranges: Source IP ranges. + :vartype source_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :ivar destination_ip_ranges: Destination IP ranges. + :vartype destination_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :ivar source_port_ranges: Sources port ranges. + :vartype source_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :ivar destination_port_ranges: Destination port ranges. + :vartype destination_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :ivar protocol: RNM supported protocol types. Possible values include: "DoNotUse", "Icmp", + "Tcp", "Udp", "Gre", "Esp", "Ah", "Vxlan", "All". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ProtocolType + """ + + _attribute_map = { + 'markings': {'key': 'markings', 'type': '[int]'}, + 'source_ip_ranges': {'key': 'sourceIpRanges', 'type': '[QosIpRange]'}, + 'destination_ip_ranges': {'key': 'destinationIpRanges', 'type': '[QosIpRange]'}, + 'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[QosPortRange]'}, + 'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[QosPortRange]'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + } + + def __init__( + self, + *, + markings: Optional[List[int]] = None, + source_ip_ranges: Optional[List["QosIpRange"]] = None, + destination_ip_ranges: Optional[List["QosIpRange"]] = None, + source_port_ranges: Optional[List["QosPortRange"]] = None, + destination_port_ranges: Optional[List["QosPortRange"]] = None, + protocol: Optional[Union[str, "ProtocolType"]] = None, + **kwargs + ): + """ + :keyword markings: List of markings to be used in the configuration. + :paramtype markings: list[int] + :keyword source_ip_ranges: Source IP ranges. + :paramtype source_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :keyword destination_ip_ranges: Destination IP ranges. + :paramtype destination_ip_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosIpRange] + :keyword source_port_ranges: Sources port ranges. + :paramtype source_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :keyword destination_port_ranges: Destination port ranges. + :paramtype destination_port_ranges: list[~azure.mgmt.network.v2022_01_01.models.QosPortRange] + :keyword protocol: RNM supported protocol types. Possible values include: "DoNotUse", "Icmp", + "Tcp", "Udp", "Gre", "Esp", "Ah", "Vxlan", "All". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.ProtocolType + """ + super(QosDefinition, self).__init__(**kwargs) + self.markings = markings + self.source_ip_ranges = source_ip_ranges + self.destination_ip_ranges = destination_ip_ranges + self.source_port_ranges = source_port_ranges + self.destination_port_ranges = destination_port_ranges + self.protocol = protocol + + +class QosIpRange(msrest.serialization.Model): + """Qos Traffic Profiler IP Range properties. + + :ivar start_ip: Start IP Address. + :vartype start_ip: str + :ivar end_ip: End IP Address. + :vartype end_ip: str + """ + + _attribute_map = { + 'start_ip': {'key': 'startIP', 'type': 'str'}, + 'end_ip': {'key': 'endIP', 'type': 'str'}, + } + + def __init__( + self, + *, + start_ip: Optional[str] = None, + end_ip: Optional[str] = None, + **kwargs + ): + """ + :keyword start_ip: Start IP Address. + :paramtype start_ip: str + :keyword end_ip: End IP Address. + :paramtype end_ip: str + """ + super(QosIpRange, self).__init__(**kwargs) + self.start_ip = start_ip + self.end_ip = end_ip + + +class QosPortRange(msrest.serialization.Model): + """Qos Traffic Profiler Port range properties. + + :ivar start: Qos Port Range start. + :vartype start: int + :ivar end: Qos Port Range end. + :vartype end: int + """ + + _attribute_map = { + 'start': {'key': 'start', 'type': 'int'}, + 'end': {'key': 'end', 'type': 'int'}, + } + + def __init__( + self, + *, + start: Optional[int] = None, + end: Optional[int] = None, + **kwargs + ): + """ + :keyword start: Qos Port Range start. + :paramtype start: int + :keyword end: Qos Port Range end. + :paramtype end: int + """ + super(QosPortRange, self).__init__(**kwargs) + self.start = start + self.end = end + + +class QueryInboundNatRulePortMappingRequest(msrest.serialization.Model): + """The request for a QueryInboundNatRulePortMapping API. Either IpConfiguration or IpAddress should be set. + + :ivar ip_configuration: NetworkInterfaceIPConfiguration set in load balancer backend address. + :vartype ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar ip_address: IP address set in load balancer backend address. + :vartype ip_address: str + """ + + _attribute_map = { + 'ip_configuration': {'key': 'ipConfiguration', 'type': 'SubResource'}, + 'ip_address': {'key': 'ipAddress', 'type': 'str'}, + } + + def __init__( + self, + *, + ip_configuration: Optional["SubResource"] = None, + ip_address: Optional[str] = None, + **kwargs + ): + """ + :keyword ip_configuration: NetworkInterfaceIPConfiguration set in load balancer backend + address. + :paramtype ip_configuration: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword ip_address: IP address set in load balancer backend address. + :paramtype ip_address: str + """ + super(QueryInboundNatRulePortMappingRequest, self).__init__(**kwargs) + self.ip_configuration = ip_configuration + self.ip_address = ip_address + + +class QueryRequestOptions(msrest.serialization.Model): + """Query Request Options. + + :ivar skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :vartype skip_token: str + """ + + _attribute_map = { + 'skip_token': {'key': 'skipToken', 'type': 'str'}, + } + + def __init__( + self, + *, + skip_token: Optional[str] = None, + **kwargs + ): + """ + :keyword skip_token: When present, the value can be passed to a subsequent query call (together + with the same query and scopes used in the current request) to retrieve the next page of data. + :paramtype skip_token: str + """ + super(QueryRequestOptions, self).__init__(**kwargs) + self.skip_token = skip_token + + +class QueryResults(msrest.serialization.Model): + """Query result. + + :ivar matching_records_count: Number of total records matching the query. + :vartype matching_records_count: long + :ivar signatures: Array containing the results of the query. + :vartype signatures: list[~azure.mgmt.network.v2022_01_01.models.SingleQueryResult] + """ + + _attribute_map = { + 'matching_records_count': {'key': 'matchingRecordsCount', 'type': 'long'}, + 'signatures': {'key': 'signatures', 'type': '[SingleQueryResult]'}, + } + + def __init__( + self, + *, + matching_records_count: Optional[int] = None, + signatures: Optional[List["SingleQueryResult"]] = None, + **kwargs + ): + """ + :keyword matching_records_count: Number of total records matching the query. + :paramtype matching_records_count: long + :keyword signatures: Array containing the results of the query. + :paramtype signatures: list[~azure.mgmt.network.v2022_01_01.models.SingleQueryResult] + """ + super(QueryResults, self).__init__(**kwargs) + self.matching_records_count = matching_records_count + self.signatures = signatures + + +class QueryTroubleshootingParameters(msrest.serialization.Model): + """Parameters that define the resource to query the troubleshooting result. + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. The target resource ID to query the troubleshooting result. + :vartype target_resource_id: str + """ + + _validation = { + 'target_resource_id': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + } + + def __init__( + self, + *, + target_resource_id: str, + **kwargs + ): + """ + :keyword target_resource_id: Required. The target resource ID to query the troubleshooting + result. + :paramtype target_resource_id: str + """ + super(QueryTroubleshootingParameters, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + + +class RadiusServer(msrest.serialization.Model): + """Radius Server Settings. + + All required parameters must be populated in order to send to Azure. + + :ivar radius_server_address: Required. The address of this radius server. + :vartype radius_server_address: str + :ivar radius_server_score: The initial score assigned to this radius server. + :vartype radius_server_score: long + :ivar radius_server_secret: The secret used for this radius server. + :vartype radius_server_secret: str + """ + + _validation = { + 'radius_server_address': {'required': True}, + } + + _attribute_map = { + 'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'}, + 'radius_server_score': {'key': 'radiusServerScore', 'type': 'long'}, + 'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'}, + } + + def __init__( + self, + *, + radius_server_address: str, + radius_server_score: Optional[int] = None, + radius_server_secret: Optional[str] = None, + **kwargs + ): + """ + :keyword radius_server_address: Required. The address of this radius server. + :paramtype radius_server_address: str + :keyword radius_server_score: The initial score assigned to this radius server. + :paramtype radius_server_score: long + :keyword radius_server_secret: The secret used for this radius server. + :paramtype radius_server_secret: str + """ + super(RadiusServer, self).__init__(**kwargs) + self.radius_server_address = radius_server_address + self.radius_server_score = radius_server_score + self.radius_server_secret = radius_server_secret + + +class RecordSet(msrest.serialization.Model): + """A collective group of information about the record set information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar record_type: Resource record type. + :vartype record_type: str + :ivar record_set_name: Recordset name. + :vartype record_set_name: str + :ivar fqdn: Fqdn that resolves to private endpoint ip address. + :vartype fqdn: str + :ivar provisioning_state: The provisioning state of the recordset. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar ttl: Recordset time to live. + :vartype ttl: int + :ivar ip_addresses: The private ip address of the private endpoint. + :vartype ip_addresses: list[str] + """ + + _validation = { + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'record_type': {'key': 'recordType', 'type': 'str'}, + 'record_set_name': {'key': 'recordSetName', 'type': 'str'}, + 'fqdn': {'key': 'fqdn', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'ttl': {'key': 'ttl', 'type': 'int'}, + 'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'}, + } + + def __init__( + self, + *, + record_type: Optional[str] = None, + record_set_name: Optional[str] = None, + fqdn: Optional[str] = None, + ttl: Optional[int] = None, + ip_addresses: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword record_type: Resource record type. + :paramtype record_type: str + :keyword record_set_name: Recordset name. + :paramtype record_set_name: str + :keyword fqdn: Fqdn that resolves to private endpoint ip address. + :paramtype fqdn: str + :keyword ttl: Recordset time to live. + :paramtype ttl: int + :keyword ip_addresses: The private ip address of the private endpoint. + :paramtype ip_addresses: list[str] + """ + super(RecordSet, self).__init__(**kwargs) + self.record_type = record_type + self.record_set_name = record_set_name + self.fqdn = fqdn + self.provisioning_state = None + self.ttl = ttl + self.ip_addresses = ip_addresses + + +class ReferencedPublicIpAddress(msrest.serialization.Model): + """Reference to a public IP address. + + :ivar id: The PublicIPAddress Reference. + :vartype id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: The PublicIPAddress Reference. + :paramtype id: str + """ + super(ReferencedPublicIpAddress, self).__init__(**kwargs) + self.id = id + + +class ResourceNavigationLink(SubResource): + """ResourceNavigationLink resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the resource that is unique within a resource group. This name can be used + to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar linked_resource_type: Resource type of the linked resource. + :vartype linked_resource_type: str + :ivar link: Link to the external resource. + :vartype link: str + :ivar provisioning_state: The provisioning state of the resource navigation link resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'}, + 'link': {'key': 'properties.link', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + linked_resource_type: Optional[str] = None, + link: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the resource that is unique within a resource group. This name can be + used to access the resource. + :paramtype name: str + :keyword linked_resource_type: Resource type of the linked resource. + :paramtype linked_resource_type: str + :keyword link: Link to the external resource. + :paramtype link: str + """ + super(ResourceNavigationLink, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.linked_resource_type = linked_resource_type + self.link = link + self.provisioning_state = None + + +class ResourceNavigationLinksListResult(msrest.serialization.Model): + """Response for ResourceNavigationLinks_List operation. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: The resource navigation links in a subnet. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ResourceNavigationLink] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ResourceNavigationLink]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ResourceNavigationLink"]] = None, + **kwargs + ): + """ + :keyword value: The resource navigation links in a subnet. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ResourceNavigationLink] + """ + super(ResourceNavigationLinksListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class RetentionPolicyParameters(msrest.serialization.Model): + """Parameters that define the retention policy for flow log. + + :ivar days: Number of days to retain flow log records. + :vartype days: int + :ivar enabled: Flag to enable/disable retention. + :vartype enabled: bool + """ + + _attribute_map = { + 'days': {'key': 'days', 'type': 'int'}, + 'enabled': {'key': 'enabled', 'type': 'bool'}, + } + + def __init__( + self, + *, + days: Optional[int] = 0, + enabled: Optional[bool] = False, + **kwargs + ): + """ + :keyword days: Number of days to retain flow log records. + :paramtype days: int + :keyword enabled: Flag to enable/disable retention. + :paramtype enabled: bool + """ + super(RetentionPolicyParameters, self).__init__(**kwargs) + self.days = days + self.enabled = enabled + + +class Route(SubResource): + """Route resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: The type of the resource. + :vartype type: str + :ivar address_prefix: The destination CIDR to which the route applies. + :vartype address_prefix: str + :ivar next_hop_type: The type of Azure hop the packet should be sent to. Possible values + include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None". + :vartype next_hop_type: str or ~azure.mgmt.network.v2022_01_01.models.RouteNextHopType + :ivar next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are + only allowed in routes where the next hop type is VirtualAppliance. + :vartype next_hop_ip_address: str + :ivar provisioning_state: The provisioning state of the route resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar has_bgp_override: A value indicating whether this route overrides overlapping BGP routes + regardless of LPM. + :vartype has_bgp_override: bool + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'}, + 'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'}, + 'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'has_bgp_override': {'key': 'properties.hasBgpOverride', 'type': 'bool'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type: Optional[str] = None, + address_prefix: Optional[str] = None, + next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None, + next_hop_ip_address: Optional[str] = None, + has_bgp_override: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type: The type of the resource. + :paramtype type: str + :keyword address_prefix: The destination CIDR to which the route applies. + :paramtype address_prefix: str + :keyword next_hop_type: The type of Azure hop the packet should be sent to. Possible values + include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None". + :paramtype next_hop_type: str or ~azure.mgmt.network.v2022_01_01.models.RouteNextHopType + :keyword next_hop_ip_address: The IP address packets should be forwarded to. Next hop values + are only allowed in routes where the next hop type is VirtualAppliance. + :paramtype next_hop_ip_address: str + :keyword has_bgp_override: A value indicating whether this route overrides overlapping BGP + routes regardless of LPM. + :paramtype has_bgp_override: bool + """ + super(Route, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = type + self.address_prefix = address_prefix + self.next_hop_type = next_hop_type + self.next_hop_ip_address = next_hop_ip_address + self.provisioning_state = None + self.has_bgp_override = has_bgp_override + + +class RouteFilter(Resource): + """Route Filter Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar rules: Collection of RouteFilterRules contained within a route filter. + :vartype rules: list[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + :ivar peerings: A collection of references to express route circuit peerings. + :vartype peerings: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :ivar ipv6_peerings: A collection of references to express route circuit ipv6 peerings. + :vartype ipv6_peerings: list[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :ivar provisioning_state: The provisioning state of the route filter resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'peerings': {'readonly': True}, + 'ipv6_peerings': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'}, + 'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'}, + 'ipv6_peerings': {'key': 'properties.ipv6Peerings', 'type': '[ExpressRouteCircuitPeering]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + rules: Optional[List["RouteFilterRule"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword rules: Collection of RouteFilterRules contained within a route filter. + :paramtype rules: list[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + """ + super(RouteFilter, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.rules = rules + self.peerings = None + self.ipv6_peerings = None + self.provisioning_state = None + + +class RouteFilterListResult(msrest.serialization.Model): + """Response for the ListRouteFilters API service call. + + :ivar value: A list of route filters in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.RouteFilter] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[RouteFilter]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["RouteFilter"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of route filters in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.RouteFilter] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(RouteFilterListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class RouteFilterRule(SubResource): + """Route Filter Rule Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar location: Resource location. + :vartype location: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar access: The access type of the rule. Possible values include: "Allow", "Deny". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.Access + :ivar route_filter_rule_type: The rule type of the rule. Possible values include: "Community". + :vartype route_filter_rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.RouteFilterRuleType + :ivar communities: The collection for bgp community values to filter on. e.g. + ['12076:5010','12076:5020']. + :vartype communities: list[str] + :ivar provisioning_state: The provisioning state of the route filter rule resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'access': {'key': 'properties.access', 'type': 'str'}, + 'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'}, + 'communities': {'key': 'properties.communities', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + location: Optional[str] = None, + access: Optional[Union[str, "Access"]] = None, + route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None, + communities: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword location: Resource location. + :paramtype location: str + :keyword access: The access type of the rule. Possible values include: "Allow", "Deny". + :paramtype access: str or ~azure.mgmt.network.v2022_01_01.models.Access + :keyword route_filter_rule_type: The rule type of the rule. Possible values include: + "Community". + :paramtype route_filter_rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.RouteFilterRuleType + :keyword communities: The collection for bgp community values to filter on. e.g. + ['12076:5010','12076:5020']. + :paramtype communities: list[str] + """ + super(RouteFilterRule, self).__init__(id=id, **kwargs) + self.name = name + self.location = location + self.etag = None + self.access = access + self.route_filter_rule_type = route_filter_rule_type + self.communities = communities + self.provisioning_state = None + + +class RouteFilterRuleListResult(msrest.serialization.Model): + """Response for the ListRouteFilterRules API service call. + + :ivar value: A list of RouteFilterRules in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[RouteFilterRule]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["RouteFilterRule"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of RouteFilterRules in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(RouteFilterRuleListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class RouteListResult(msrest.serialization.Model): + """Response for the ListRoute API service call. + + :ivar value: A list of routes in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.Route] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[Route]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["Route"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of routes in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.Route] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(RouteListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class RouteTable(Resource): + """Route table resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar routes: Collection of routes contained within a route table. + :vartype routes: list[~azure.mgmt.network.v2022_01_01.models.Route] + :ivar subnets: A collection of references to subnets. + :vartype subnets: list[~azure.mgmt.network.v2022_01_01.models.Subnet] + :ivar disable_bgp_route_propagation: Whether to disable the routes learned by BGP on that route + table. True means disable. + :vartype disable_bgp_route_propagation: bool + :ivar provisioning_state: The provisioning state of the route table resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar resource_guid: The resource GUID property of the route table. + :vartype resource_guid: str + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'subnets': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'resource_guid': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'routes': {'key': 'properties.routes', 'type': '[Route]'}, + 'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'}, + 'disable_bgp_route_propagation': {'key': 'properties.disableBgpRoutePropagation', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + routes: Optional[List["Route"]] = None, + disable_bgp_route_propagation: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword routes: Collection of routes contained within a route table. + :paramtype routes: list[~azure.mgmt.network.v2022_01_01.models.Route] + :keyword disable_bgp_route_propagation: Whether to disable the routes learned by BGP on that + route table. True means disable. + :paramtype disable_bgp_route_propagation: bool + """ + super(RouteTable, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.routes = routes + self.subnets = None + self.disable_bgp_route_propagation = disable_bgp_route_propagation + self.provisioning_state = None + self.resource_guid = None + + +class RouteTableListResult(msrest.serialization.Model): + """Response for the ListRouteTable API service call. + + :ivar value: A list of route tables in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.RouteTable] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[RouteTable]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["RouteTable"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of route tables in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.RouteTable] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(RouteTableListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class RoutingConfiguration(msrest.serialization.Model): + """Routing Configuration indicating the associated and propagated route tables for this connection. + + :ivar associated_route_table: The resource id RouteTable associated with this + RoutingConfiguration. + :vartype associated_route_table: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar propagated_route_tables: The list of RouteTables to advertise the routes to. + :vartype propagated_route_tables: ~azure.mgmt.network.v2022_01_01.models.PropagatedRouteTable + :ivar vnet_routes: List of routes that control routing from VirtualHub into a virtual network + connection. + :vartype vnet_routes: ~azure.mgmt.network.v2022_01_01.models.VnetRoute + """ + + _attribute_map = { + 'associated_route_table': {'key': 'associatedRouteTable', 'type': 'SubResource'}, + 'propagated_route_tables': {'key': 'propagatedRouteTables', 'type': 'PropagatedRouteTable'}, + 'vnet_routes': {'key': 'vnetRoutes', 'type': 'VnetRoute'}, + } + + def __init__( + self, + *, + associated_route_table: Optional["SubResource"] = None, + propagated_route_tables: Optional["PropagatedRouteTable"] = None, + vnet_routes: Optional["VnetRoute"] = None, + **kwargs + ): + """ + :keyword associated_route_table: The resource id RouteTable associated with this + RoutingConfiguration. + :paramtype associated_route_table: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword propagated_route_tables: The list of RouteTables to advertise the routes to. + :paramtype propagated_route_tables: ~azure.mgmt.network.v2022_01_01.models.PropagatedRouteTable + :keyword vnet_routes: List of routes that control routing from VirtualHub into a virtual + network connection. + :paramtype vnet_routes: ~azure.mgmt.network.v2022_01_01.models.VnetRoute + """ + super(RoutingConfiguration, self).__init__(**kwargs) + self.associated_route_table = associated_route_table + self.propagated_route_tables = propagated_route_tables + self.vnet_routes = vnet_routes + + +class RoutingIntent(SubResource): + """The routing intent child resource of a Virtual hub. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar routing_policies: List of routing policies. + :vartype routing_policies: list[~azure.mgmt.network.v2022_01_01.models.RoutingPolicy] + :ivar provisioning_state: The provisioning state of the RoutingIntent resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'routing_policies': {'key': 'properties.routingPolicies', 'type': '[RoutingPolicy]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + routing_policies: Optional[List["RoutingPolicy"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword routing_policies: List of routing policies. + :paramtype routing_policies: list[~azure.mgmt.network.v2022_01_01.models.RoutingPolicy] + """ + super(RoutingIntent, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.routing_policies = routing_policies + self.provisioning_state = None + + +class RoutingPolicy(msrest.serialization.Model): + """The routing policy object used in a RoutingIntent resource. + + All required parameters must be populated in order to send to Azure. + + :ivar name: Required. The unique name for the routing policy. + :vartype name: str + :ivar destinations: Required. List of all destinations which this routing policy is applicable + to (for example: Internet, PrivateTraffic). + :vartype destinations: list[str] + :ivar next_hop: Required. The next hop resource id on which this routing policy is applicable + to. + :vartype next_hop: str + """ + + _validation = { + 'name': {'required': True}, + 'destinations': {'required': True}, + 'next_hop': {'required': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'destinations': {'key': 'destinations', 'type': '[str]'}, + 'next_hop': {'key': 'nextHop', 'type': 'str'}, + } + + def __init__( + self, + *, + name: str, + destinations: List[str], + next_hop: str, + **kwargs + ): + """ + :keyword name: Required. The unique name for the routing policy. + :paramtype name: str + :keyword destinations: Required. List of all destinations which this routing policy is + applicable to (for example: Internet, PrivateTraffic). + :paramtype destinations: list[str] + :keyword next_hop: Required. The next hop resource id on which this routing policy is + applicable to. + :paramtype next_hop: str + """ + super(RoutingPolicy, self).__init__(**kwargs) + self.name = name + self.destinations = destinations + self.next_hop = next_hop + + +class ScopeConnection(ChildResource): + """The Scope Connections resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar tenant_id: Tenant ID. + :vartype tenant_id: str + :ivar resource_id: Resource ID. + :vartype resource_id: str + :ivar connection_state: Connection State. Possible values include: "Connected", "Pending", + "Conflict", "Revoked", "Rejected". + :vartype connection_state: str or ~azure.mgmt.network.v2022_01_01.models.ScopeConnectionState + :ivar description: A description of the scope connection. + :vartype description: str + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'system_data': {'readonly': True}, + 'connection_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, + 'resource_id': {'key': 'properties.resourceId', 'type': 'str'}, + 'connection_state': {'key': 'properties.connectionState', 'type': 'str'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + } + + def __init__( + self, + *, + tenant_id: Optional[str] = None, + resource_id: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + """ + :keyword tenant_id: Tenant ID. + :paramtype tenant_id: str + :keyword resource_id: Resource ID. + :paramtype resource_id: str + :keyword description: A description of the scope connection. + :paramtype description: str + """ + super(ScopeConnection, self).__init__(**kwargs) + self.system_data = None + self.tenant_id = tenant_id + self.resource_id = resource_id + self.connection_state = None + self.description = description + + +class ScopeConnectionListResult(msrest.serialization.Model): + """List of scope connections. + + :ivar value: List of scope connections. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ScopeConnection] + :ivar next_link: Gets the URL to get the next page of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ScopeConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ScopeConnection"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of scope connections. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ScopeConnection] + :keyword next_link: Gets the URL to get the next page of results. + :paramtype next_link: str + """ + super(ScopeConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class SecurityAdminConfiguration(ChildResource): + """Defines the security admin configuration. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar description: A description of the security configuration. + :vartype description: str + :ivar apply_on_network_intent_policy_based_services: Enum list of network intent policy based + services. + :vartype apply_on_network_intent_policy_based_services: list[str or + ~azure.mgmt.network.v2022_01_01.models.NetworkIntentPolicyBasedService] + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'system_data': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'apply_on_network_intent_policy_based_services': {'key': 'properties.applyOnNetworkIntentPolicyBasedServices', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + description: Optional[str] = None, + apply_on_network_intent_policy_based_services: Optional[List[Union[str, "NetworkIntentPolicyBasedService"]]] = None, + **kwargs + ): + """ + :keyword description: A description of the security configuration. + :paramtype description: str + :keyword apply_on_network_intent_policy_based_services: Enum list of network intent policy + based services. + :paramtype apply_on_network_intent_policy_based_services: list[str or + ~azure.mgmt.network.v2022_01_01.models.NetworkIntentPolicyBasedService] + """ + super(SecurityAdminConfiguration, self).__init__(**kwargs) + self.system_data = None + self.description = description + self.apply_on_network_intent_policy_based_services = apply_on_network_intent_policy_based_services + self.provisioning_state = None + + +class SecurityAdminConfigurationListResult(msrest.serialization.Model): + """A list of network manager security admin configurations. + + :ivar value: Gets a page of security admin configurations. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration] + :ivar next_link: Gets the URL to get the next page of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[SecurityAdminConfiguration]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["SecurityAdminConfiguration"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of security admin configurations. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration] + :keyword next_link: Gets the URL to get the next page of results. + :paramtype next_link: str + """ + super(SecurityAdminConfigurationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class SecurityGroupNetworkInterface(msrest.serialization.Model): + """Network interface and all its associated security rules. + + :ivar id: ID of the network interface. + :vartype id: str + :ivar security_rule_associations: All security rules associated with the network interface. + :vartype security_rule_associations: + ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAssociations + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'security_rule_associations': {'key': 'securityRuleAssociations', 'type': 'SecurityRuleAssociations'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + security_rule_associations: Optional["SecurityRuleAssociations"] = None, + **kwargs + ): + """ + :keyword id: ID of the network interface. + :paramtype id: str + :keyword security_rule_associations: All security rules associated with the network interface. + :paramtype security_rule_associations: + ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAssociations + """ + super(SecurityGroupNetworkInterface, self).__init__(**kwargs) + self.id = id + self.security_rule_associations = security_rule_associations + + +class SecurityGroupViewParameters(msrest.serialization.Model): + """Parameters that define the VM to check security groups for. + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. ID of the target VM. + :vartype target_resource_id: str + """ + + _validation = { + 'target_resource_id': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + } + + def __init__( + self, + *, + target_resource_id: str, + **kwargs + ): + """ + :keyword target_resource_id: Required. ID of the target VM. + :paramtype target_resource_id: str + """ + super(SecurityGroupViewParameters, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + + +class SecurityGroupViewResult(msrest.serialization.Model): + """The information about security rules applied to the specified VM. + + :ivar network_interfaces: List of network interfaces on the specified VM. + :vartype network_interfaces: + list[~azure.mgmt.network.v2022_01_01.models.SecurityGroupNetworkInterface] + """ + + _attribute_map = { + 'network_interfaces': {'key': 'networkInterfaces', 'type': '[SecurityGroupNetworkInterface]'}, + } + + def __init__( + self, + *, + network_interfaces: Optional[List["SecurityGroupNetworkInterface"]] = None, + **kwargs + ): + """ + :keyword network_interfaces: List of network interfaces on the specified VM. + :paramtype network_interfaces: + list[~azure.mgmt.network.v2022_01_01.models.SecurityGroupNetworkInterface] + """ + super(SecurityGroupViewResult, self).__init__(**kwargs) + self.network_interfaces = network_interfaces + + +class SecurityPartnerProvider(Resource): + """Security Partner Provider resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar provisioning_state: The provisioning state of the Security Partner Provider resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar security_provider_name: The security provider name. Possible values include: "ZScaler", + "IBoss", "Checkpoint". + :vartype security_provider_name: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityProviderName + :ivar connection_status: The connection status with the Security Partner Provider. Possible + values include: "Unknown", "PartiallyConnected", "Connected", "NotConnected". + :vartype connection_status: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProviderConnectionStatus + :ivar virtual_hub: The virtualHub to which the Security Partner Provider belongs. + :vartype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'connection_status': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'security_provider_name': {'key': 'properties.securityProviderName', 'type': 'str'}, + 'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'}, + 'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + security_provider_name: Optional[Union[str, "SecurityProviderName"]] = None, + virtual_hub: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword security_provider_name: The security provider name. Possible values include: + "ZScaler", "IBoss", "Checkpoint". + :paramtype security_provider_name: str or + ~azure.mgmt.network.v2022_01_01.models.SecurityProviderName + :keyword virtual_hub: The virtualHub to which the Security Partner Provider belongs. + :paramtype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(SecurityPartnerProvider, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.provisioning_state = None + self.security_provider_name = security_provider_name + self.connection_status = None + self.virtual_hub = virtual_hub + + +class SecurityPartnerProviderListResult(msrest.serialization.Model): + """Response for ListSecurityPartnerProviders API service call. + + :ivar value: List of Security Partner Providers in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[SecurityPartnerProvider]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["SecurityPartnerProvider"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Security Partner Providers in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(SecurityPartnerProviderListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class SecurityRule(SubResource): + """Network security rule. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: The type of the resource. + :vartype type: str + :ivar description: A description for this rule. Restricted to 140 chars. + :vartype description: str + :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", + "Icmp", "Esp", "*", "Ah". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleProtocol + :ivar source_port_range: The source port or range. Integer or range between 0 and 65535. + Asterisk '*' can also be used to match all ports. + :vartype source_port_range: str + :ivar destination_port_range: The destination port or range. Integer or range between 0 and + 65535. Asterisk '*' can also be used to match all ports. + :vartype destination_port_range: str + :ivar source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to + match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' + can also be used. If this is an ingress rule, specifies where network traffic originates from. + :vartype source_address_prefix: str + :ivar source_address_prefixes: The CIDR or source IP ranges. + :vartype source_address_prefixes: list[str] + :ivar source_application_security_groups: The application security group specified as source. + :vartype source_application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :ivar destination_address_prefix: The destination address prefix. CIDR or destination IP range. + Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', + 'AzureLoadBalancer' and 'Internet' can also be used. + :vartype destination_address_prefix: str + :ivar destination_address_prefixes: The destination address prefixes. CIDR or destination IP + ranges. + :vartype destination_address_prefixes: list[str] + :ivar destination_application_security_groups: The application security group specified as + destination. + :vartype destination_application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :ivar source_port_ranges: The source port ranges. + :vartype source_port_ranges: list[str] + :ivar destination_port_ranges: The destination port ranges. + :vartype destination_port_ranges: list[str] + :ivar access: The network traffic is allowed or denied. Possible values include: "Allow", + "Deny". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAccess + :ivar priority: The priority of the rule. The value can be between 100 and 4096. The priority + number must be unique for each rule in the collection. The lower the priority number, the + higher the priority of the rule. + :vartype priority: int + :ivar direction: The direction of the rule. The direction specifies if rule will be evaluated + on incoming or outgoing traffic. Possible values include: "Inbound", "Outbound". + :vartype direction: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleDirection + :ivar provisioning_state: The provisioning state of the security rule resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'protocol': {'key': 'properties.protocol', 'type': 'str'}, + 'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'}, + 'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'}, + 'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'}, + 'source_address_prefixes': {'key': 'properties.sourceAddressPrefixes', 'type': '[str]'}, + 'source_application_security_groups': {'key': 'properties.sourceApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'}, + 'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'}, + 'destination_address_prefixes': {'key': 'properties.destinationAddressPrefixes', 'type': '[str]'}, + 'destination_application_security_groups': {'key': 'properties.destinationApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'}, + 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, + 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, + 'access': {'key': 'properties.access', 'type': 'str'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'direction': {'key': 'properties.direction', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type: Optional[str] = None, + description: Optional[str] = None, + protocol: Optional[Union[str, "SecurityRuleProtocol"]] = None, + source_port_range: Optional[str] = None, + destination_port_range: Optional[str] = None, + source_address_prefix: Optional[str] = None, + source_address_prefixes: Optional[List[str]] = None, + source_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None, + destination_address_prefix: Optional[str] = None, + destination_address_prefixes: Optional[List[str]] = None, + destination_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None, + source_port_ranges: Optional[List[str]] = None, + destination_port_ranges: Optional[List[str]] = None, + access: Optional[Union[str, "SecurityRuleAccess"]] = None, + priority: Optional[int] = None, + direction: Optional[Union[str, "SecurityRuleDirection"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type: The type of the resource. + :paramtype type: str + :keyword description: A description for this rule. Restricted to 140 chars. + :paramtype description: str + :keyword protocol: Network protocol this rule applies to. Possible values include: "Tcp", + "Udp", "Icmp", "Esp", "*", "Ah". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleProtocol + :keyword source_port_range: The source port or range. Integer or range between 0 and 65535. + Asterisk '*' can also be used to match all ports. + :paramtype source_port_range: str + :keyword destination_port_range: The destination port or range. Integer or range between 0 and + 65535. Asterisk '*' can also be used to match all ports. + :paramtype destination_port_range: str + :keyword source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to + match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' + can also be used. If this is an ingress rule, specifies where network traffic originates from. + :paramtype source_address_prefix: str + :keyword source_address_prefixes: The CIDR or source IP ranges. + :paramtype source_address_prefixes: list[str] + :keyword source_application_security_groups: The application security group specified as + source. + :paramtype source_application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :keyword destination_address_prefix: The destination address prefix. CIDR or destination IP + range. Asterisk '*' can also be used to match all source IPs. Default tags such as + 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used. + :paramtype destination_address_prefix: str + :keyword destination_address_prefixes: The destination address prefixes. CIDR or destination IP + ranges. + :paramtype destination_address_prefixes: list[str] + :keyword destination_application_security_groups: The application security group specified as + destination. + :paramtype destination_application_security_groups: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :keyword source_port_ranges: The source port ranges. + :paramtype source_port_ranges: list[str] + :keyword destination_port_ranges: The destination port ranges. + :paramtype destination_port_ranges: list[str] + :keyword access: The network traffic is allowed or denied. Possible values include: "Allow", + "Deny". + :paramtype access: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleAccess + :keyword priority: The priority of the rule. The value can be between 100 and 4096. The + priority number must be unique for each rule in the collection. The lower the priority number, + the higher the priority of the rule. + :paramtype priority: int + :keyword direction: The direction of the rule. The direction specifies if rule will be + evaluated on incoming or outgoing traffic. Possible values include: "Inbound", "Outbound". + :paramtype direction: str or ~azure.mgmt.network.v2022_01_01.models.SecurityRuleDirection + """ + super(SecurityRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = type + self.description = description + self.protocol = protocol + self.source_port_range = source_port_range + self.destination_port_range = destination_port_range + self.source_address_prefix = source_address_prefix + self.source_address_prefixes = source_address_prefixes + self.source_application_security_groups = source_application_security_groups + self.destination_address_prefix = destination_address_prefix + self.destination_address_prefixes = destination_address_prefixes + self.destination_application_security_groups = destination_application_security_groups + self.source_port_ranges = source_port_ranges + self.destination_port_ranges = destination_port_ranges + self.access = access + self.priority = priority + self.direction = direction + self.provisioning_state = None + + +class SecurityRuleAssociations(msrest.serialization.Model): + """All security rules associated with the network interface. + + :ivar network_interface_association: Network interface and it's custom security rules. + :vartype network_interface_association: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceAssociation + :ivar subnet_association: Subnet and it's custom security rules. + :vartype subnet_association: ~azure.mgmt.network.v2022_01_01.models.SubnetAssociation + :ivar default_security_rules: Collection of default security rules of the network security + group. + :vartype default_security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :ivar effective_security_rules: Collection of effective security rules. + :vartype effective_security_rules: + list[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityRule] + """ + + _attribute_map = { + 'network_interface_association': {'key': 'networkInterfaceAssociation', 'type': 'NetworkInterfaceAssociation'}, + 'subnet_association': {'key': 'subnetAssociation', 'type': 'SubnetAssociation'}, + 'default_security_rules': {'key': 'defaultSecurityRules', 'type': '[SecurityRule]'}, + 'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'}, + } + + def __init__( + self, + *, + network_interface_association: Optional["NetworkInterfaceAssociation"] = None, + subnet_association: Optional["SubnetAssociation"] = None, + default_security_rules: Optional[List["SecurityRule"]] = None, + effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None, + **kwargs + ): + """ + :keyword network_interface_association: Network interface and it's custom security rules. + :paramtype network_interface_association: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceAssociation + :keyword subnet_association: Subnet and it's custom security rules. + :paramtype subnet_association: ~azure.mgmt.network.v2022_01_01.models.SubnetAssociation + :keyword default_security_rules: Collection of default security rules of the network security + group. + :paramtype default_security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :keyword effective_security_rules: Collection of effective security rules. + :paramtype effective_security_rules: + list[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityRule] + """ + super(SecurityRuleAssociations, self).__init__(**kwargs) + self.network_interface_association = network_interface_association + self.subnet_association = subnet_association + self.default_security_rules = default_security_rules + self.effective_security_rules = effective_security_rules + + +class SecurityRuleListResult(msrest.serialization.Model): + """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group. + + :ivar value: The security rules in a network security group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[SecurityRule]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["SecurityRule"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The security rules in a network security group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(SecurityRuleListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ServiceAssociationLink(SubResource): + """ServiceAssociationLink resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the resource that is unique within a resource group. This name can be used + to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar linked_resource_type: Resource type of the linked resource. + :vartype linked_resource_type: str + :ivar link: Link to the external resource. + :vartype link: str + :ivar provisioning_state: The provisioning state of the service association link resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar allow_delete: If true, the resource can be deleted. + :vartype allow_delete: bool + :ivar locations: A list of locations. + :vartype locations: list[str] + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'}, + 'link': {'key': 'properties.link', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'allow_delete': {'key': 'properties.allowDelete', 'type': 'bool'}, + 'locations': {'key': 'properties.locations', 'type': '[str]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + linked_resource_type: Optional[str] = None, + link: Optional[str] = None, + allow_delete: Optional[bool] = None, + locations: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the resource that is unique within a resource group. This name can be + used to access the resource. + :paramtype name: str + :keyword linked_resource_type: Resource type of the linked resource. + :paramtype linked_resource_type: str + :keyword link: Link to the external resource. + :paramtype link: str + :keyword allow_delete: If true, the resource can be deleted. + :paramtype allow_delete: bool + :keyword locations: A list of locations. + :paramtype locations: list[str] + """ + super(ServiceAssociationLink, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.linked_resource_type = linked_resource_type + self.link = link + self.provisioning_state = None + self.allow_delete = allow_delete + self.locations = locations + + +class ServiceAssociationLinksListResult(msrest.serialization.Model): + """Response for ServiceAssociationLinks_List operation. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: The service association links in a subnet. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceAssociationLink] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ServiceAssociationLink]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ServiceAssociationLink"]] = None, + **kwargs + ): + """ + :keyword value: The service association links in a subnet. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceAssociationLink] + """ + super(ServiceAssociationLinksListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ServiceEndpointPolicy(Resource): + """Service End point policy resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar kind: Kind of service endpoint policy. This is metadata used for the Azure portal + experience. + :vartype kind: str + :ivar service_endpoint_policy_definitions: A collection of service endpoint policy definitions + of the service endpoint policy. + :vartype service_endpoint_policy_definitions: + list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition] + :ivar subnets: A collection of references to subnets. + :vartype subnets: list[~azure.mgmt.network.v2022_01_01.models.Subnet] + :ivar resource_guid: The resource GUID property of the service endpoint policy resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the service endpoint policy resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar service_alias: The alias indicating if the policy belongs to a service. + :vartype service_alias: str + :ivar contextual_service_endpoint_policies: A collection of contextual service endpoint policy. + :vartype contextual_service_endpoint_policies: list[str] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'kind': {'readonly': True}, + 'subnets': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'kind': {'key': 'kind', 'type': 'str'}, + 'service_endpoint_policy_definitions': {'key': 'properties.serviceEndpointPolicyDefinitions', 'type': '[ServiceEndpointPolicyDefinition]'}, + 'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'service_alias': {'key': 'properties.serviceAlias', 'type': 'str'}, + 'contextual_service_endpoint_policies': {'key': 'properties.contextualServiceEndpointPolicies', 'type': '[str]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + service_endpoint_policy_definitions: Optional[List["ServiceEndpointPolicyDefinition"]] = None, + service_alias: Optional[str] = None, + contextual_service_endpoint_policies: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword service_endpoint_policy_definitions: A collection of service endpoint policy + definitions of the service endpoint policy. + :paramtype service_endpoint_policy_definitions: + list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition] + :keyword service_alias: The alias indicating if the policy belongs to a service. + :paramtype service_alias: str + :keyword contextual_service_endpoint_policies: A collection of contextual service endpoint + policy. + :paramtype contextual_service_endpoint_policies: list[str] + """ + super(ServiceEndpointPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.kind = None + self.service_endpoint_policy_definitions = service_endpoint_policy_definitions + self.subnets = None + self.resource_guid = None + self.provisioning_state = None + self.service_alias = service_alias + self.contextual_service_endpoint_policies = contextual_service_endpoint_policies + + +class ServiceEndpointPolicyDefinition(SubResource): + """Service Endpoint policy definitions. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: The type of the resource. + :vartype type: str + :ivar description: A description for this rule. Restricted to 140 chars. + :vartype description: str + :ivar service: Service endpoint name. + :vartype service: str + :ivar service_resources: A list of service resources. + :vartype service_resources: list[str] + :ivar provisioning_state: The provisioning state of the service endpoint policy definition + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'description': {'key': 'properties.description', 'type': 'str'}, + 'service': {'key': 'properties.service', 'type': 'str'}, + 'service_resources': {'key': 'properties.serviceResources', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type: Optional[str] = None, + description: Optional[str] = None, + service: Optional[str] = None, + service_resources: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type: The type of the resource. + :paramtype type: str + :keyword description: A description for this rule. Restricted to 140 chars. + :paramtype description: str + :keyword service: Service endpoint name. + :paramtype service: str + :keyword service_resources: A list of service resources. + :paramtype service_resources: list[str] + """ + super(ServiceEndpointPolicyDefinition, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = type + self.description = description + self.service = service + self.service_resources = service_resources + self.provisioning_state = None + + +class ServiceEndpointPolicyDefinitionListResult(msrest.serialization.Model): + """Response for ListServiceEndpointPolicyDefinition API service call. Retrieves all service endpoint policy definition that belongs to a service endpoint policy. + + :ivar value: The service endpoint policy definition in a service endpoint policy. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ServiceEndpointPolicyDefinition]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ServiceEndpointPolicyDefinition"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The service endpoint policy definition in a service endpoint policy. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(ServiceEndpointPolicyDefinitionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ServiceEndpointPolicyListResult(msrest.serialization.Model): + """Response for ListServiceEndpointPolicies API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of ServiceEndpointPolicy resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ServiceEndpointPolicy]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ServiceEndpointPolicy"]] = None, + **kwargs + ): + """ + :keyword value: A list of ServiceEndpointPolicy resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy] + """ + super(ServiceEndpointPolicyListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ServiceEndpointPropertiesFormat(msrest.serialization.Model): + """The service endpoint properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar service: The type of the endpoint service. + :vartype service: str + :ivar locations: A list of locations. + :vartype locations: list[str] + :ivar provisioning_state: The provisioning state of the service endpoint resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'service': {'key': 'service', 'type': 'str'}, + 'locations': {'key': 'locations', 'type': '[str]'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + service: Optional[str] = None, + locations: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword service: The type of the endpoint service. + :paramtype service: str + :keyword locations: A list of locations. + :paramtype locations: list[str] + """ + super(ServiceEndpointPropertiesFormat, self).__init__(**kwargs) + self.service = service + self.locations = locations + self.provisioning_state = None + + +class ServiceTagInformation(msrest.serialization.Model): + """The service tag information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar properties: Properties of the service tag information. + :vartype properties: + ~azure.mgmt.network.v2022_01_01.models.ServiceTagInformationPropertiesFormat + :ivar name: The name of service tag. + :vartype name: str + :ivar id: The ID of service tag. + :vartype id: str + :ivar service_tag_change_number: The iteration number of service tag object for region. + :vartype service_tag_change_number: str + """ + + _validation = { + 'properties': {'readonly': True}, + 'name': {'readonly': True}, + 'id': {'readonly': True}, + 'service_tag_change_number': {'readonly': True}, + } + + _attribute_map = { + 'properties': {'key': 'properties', 'type': 'ServiceTagInformationPropertiesFormat'}, + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'service_tag_change_number': {'key': 'serviceTagChangeNumber', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ServiceTagInformation, self).__init__(**kwargs) + self.properties = None + self.name = None + self.id = None + self.service_tag_change_number = None + + +class ServiceTagInformationListResult(msrest.serialization.Model): + """Response for Get ServiceTagInformation API service call. Retrieves the list of service tag information resources. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: The list of service tag information resources. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceTagInformation] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[ServiceTagInformation]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["ServiceTagInformation"]] = None, + **kwargs + ): + """ + :keyword value: The list of service tag information resources. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.ServiceTagInformation] + """ + super(ServiceTagInformationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ServiceTagInformationPropertiesFormat(msrest.serialization.Model): + """Properties of the service tag information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar change_number: The iteration number of service tag. + :vartype change_number: str + :ivar region: The region of service tag. + :vartype region: str + :ivar system_service: The name of system service. + :vartype system_service: str + :ivar address_prefixes: The list of IP address prefixes. + :vartype address_prefixes: list[str] + :ivar state: The state of the service tag. + :vartype state: str + """ + + _validation = { + 'change_number': {'readonly': True}, + 'region': {'readonly': True}, + 'system_service': {'readonly': True}, + 'address_prefixes': {'readonly': True}, + 'state': {'readonly': True}, + } + + _attribute_map = { + 'change_number': {'key': 'changeNumber', 'type': 'str'}, + 'region': {'key': 'region', 'type': 'str'}, + 'system_service': {'key': 'systemService', 'type': 'str'}, + 'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'}, + 'state': {'key': 'state', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ServiceTagInformationPropertiesFormat, self).__init__(**kwargs) + self.change_number = None + self.region = None + self.system_service = None + self.address_prefixes = None + self.state = None + + +class ServiceTagsListResult(msrest.serialization.Model): + """Response for the ListServiceTags API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: The name of the cloud. + :vartype name: str + :ivar id: The ID of the cloud. + :vartype id: str + :ivar type: The azure resource type. + :vartype type: str + :ivar change_number: The iteration number. + :vartype change_number: str + :ivar cloud: The name of the cloud. + :vartype cloud: str + :ivar values: The list of service tag information resources. + :vartype values: list[~azure.mgmt.network.v2022_01_01.models.ServiceTagInformation] + :ivar next_link: The URL to get next page of service tag information resources. + :vartype next_link: str + """ + + _validation = { + 'name': {'readonly': True}, + 'id': {'readonly': True}, + 'type': {'readonly': True}, + 'change_number': {'readonly': True}, + 'cloud': {'readonly': True}, + 'values': {'readonly': True}, + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'change_number': {'key': 'changeNumber', 'type': 'str'}, + 'cloud': {'key': 'cloud', 'type': 'str'}, + 'values': {'key': 'values', 'type': '[ServiceTagInformation]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(ServiceTagsListResult, self).__init__(**kwargs) + self.name = None + self.id = None + self.type = None + self.change_number = None + self.cloud = None + self.values = None + self.next_link = None + + +class SessionIds(msrest.serialization.Model): + """List of session IDs. + + :ivar session_ids: List of session IDs. + :vartype session_ids: list[str] + """ + + _attribute_map = { + 'session_ids': {'key': 'sessionIds', 'type': '[str]'}, + } + + def __init__( + self, + *, + session_ids: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword session_ids: List of session IDs. + :paramtype session_ids: list[str] + """ + super(SessionIds, self).__init__(**kwargs) + self.session_ids = session_ids + + +class SignatureOverridesFilterValuesQuery(msrest.serialization.Model): + """Describes the filter values possibles for a given column. + + :ivar filter_name: Describes the name of the column which values will be returned. + :vartype filter_name: str + """ + + _attribute_map = { + 'filter_name': {'key': 'filterName', 'type': 'str'}, + } + + def __init__( + self, + *, + filter_name: Optional[str] = None, + **kwargs + ): + """ + :keyword filter_name: Describes the name of the column which values will be returned. + :paramtype filter_name: str + """ + super(SignatureOverridesFilterValuesQuery, self).__init__(**kwargs) + self.filter_name = filter_name + + +class SignatureOverridesFilterValuesResponse(msrest.serialization.Model): + """Describes the list of all possible values for a specific filter value. + + :ivar filter_values: Describes the possible values. + :vartype filter_values: list[str] + """ + + _attribute_map = { + 'filter_values': {'key': 'filterValues', 'type': '[str]'}, + } + + def __init__( + self, + *, + filter_values: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword filter_values: Describes the possible values. + :paramtype filter_values: list[str] + """ + super(SignatureOverridesFilterValuesResponse, self).__init__(**kwargs) + self.filter_values = filter_values + + +class SignaturesOverrides(msrest.serialization.Model): + """Contains all specific policy signatures overrides for the IDPS. + + :ivar name: Contains the name of the resource (default). + :vartype name: str + :ivar id: Will contain the resource id of the signature override resource. + :vartype id: str + :ivar type: Will contain the type of the resource: + Microsoft.Network/firewallPolicies/intrusionDetectionSignaturesOverrides. + :vartype type: str + :ivar properties: Will contain the properties of the resource (the actual signature overrides). + :vartype properties: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverridesProperties + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'SignaturesOverridesProperties'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + id: Optional[str] = None, + type: Optional[str] = None, + properties: Optional["SignaturesOverridesProperties"] = None, + **kwargs + ): + """ + :keyword name: Contains the name of the resource (default). + :paramtype name: str + :keyword id: Will contain the resource id of the signature override resource. + :paramtype id: str + :keyword type: Will contain the type of the resource: + Microsoft.Network/firewallPolicies/intrusionDetectionSignaturesOverrides. + :paramtype type: str + :keyword properties: Will contain the properties of the resource (the actual signature + overrides). + :paramtype properties: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverridesProperties + """ + super(SignaturesOverrides, self).__init__(**kwargs) + self.name = name + self.id = id + self.type = type + self.properties = properties + + +class SignaturesOverridesList(msrest.serialization.Model): + """Describes an object containing an array with a single item. + + :ivar value: Describes a list consisting exactly one item describing the policy's signature + override status. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[SignaturesOverrides]'}, + } + + def __init__( + self, + *, + value: Optional[List["SignaturesOverrides"]] = None, + **kwargs + ): + """ + :keyword value: Describes a list consisting exactly one item describing the policy's signature + override status. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides] + """ + super(SignaturesOverridesList, self).__init__(**kwargs) + self.value = value + + +class SignaturesOverridesProperties(msrest.serialization.Model): + """Will contain the properties of the resource (the actual signature overrides). + + :ivar signatures: Dictionary of :code:``. + :vartype signatures: dict[str, str] + """ + + _attribute_map = { + 'signatures': {'key': 'signatures', 'type': '{str}'}, + } + + def __init__( + self, + *, + signatures: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword signatures: Dictionary of :code:``. + :paramtype signatures: dict[str, str] + """ + super(SignaturesOverridesProperties, self).__init__(**kwargs) + self.signatures = signatures + + +class SingleQueryResult(msrest.serialization.Model): + """SingleQueryResult. + + :ivar signature_id: The ID of the signature. + :vartype signature_id: int + :ivar mode: The current mode enforced, 0 - Disabled, 1 - Alert, 2 -Deny. Possible values + include: 0, 1, 2. + :vartype mode: int or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSSignatureMode + :ivar severity: Describes the severity of signature: 1 - Low, 2 - Medium, 3 - High. Possible + values include: 1, 2, 3. + :vartype severity: int or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSSignatureSeverity + :ivar direction: Describes in which direction signature is being enforced: 0 - Inbound, 1 - + OutBound, 2 - Bidirectional. Possible values include: 0, 1, 2. + :vartype direction: int or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSSignatureDirection + :ivar group: Describes the groups the signature belongs to. + :vartype group: str + :ivar description: Describes what is the signature enforces. + :vartype description: str + :ivar protocol: Describes the protocol the signatures is being enforced in. + :vartype protocol: str + :ivar source_ports: Describes the list of source ports related to this signature. + :vartype source_ports: list[str] + :ivar destination_ports: Describes the list of destination ports related to this signature. + :vartype destination_ports: list[str] + :ivar last_updated: Describes the last updated time of the signature (provided from 3rd party + vendor). + :vartype last_updated: str + :ivar inherited_from_parent_policy: Describes if this override is inherited from base policy or + not. + :vartype inherited_from_parent_policy: bool + """ + + _attribute_map = { + 'signature_id': {'key': 'signatureId', 'type': 'int'}, + 'mode': {'key': 'mode', 'type': 'int'}, + 'severity': {'key': 'severity', 'type': 'int'}, + 'direction': {'key': 'direction', 'type': 'int'}, + 'group': {'key': 'group', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'source_ports': {'key': 'sourcePorts', 'type': '[str]'}, + 'destination_ports': {'key': 'destinationPorts', 'type': '[str]'}, + 'last_updated': {'key': 'lastUpdated', 'type': 'str'}, + 'inherited_from_parent_policy': {'key': 'inheritedFromParentPolicy', 'type': 'bool'}, + } + + def __init__( + self, + *, + signature_id: Optional[int] = None, + mode: Optional[Union[int, "FirewallPolicyIDPSSignatureMode"]] = None, + severity: Optional[Union[int, "FirewallPolicyIDPSSignatureSeverity"]] = None, + direction: Optional[Union[int, "FirewallPolicyIDPSSignatureDirection"]] = None, + group: Optional[str] = None, + description: Optional[str] = None, + protocol: Optional[str] = None, + source_ports: Optional[List[str]] = None, + destination_ports: Optional[List[str]] = None, + last_updated: Optional[str] = None, + inherited_from_parent_policy: Optional[bool] = None, + **kwargs + ): + """ + :keyword signature_id: The ID of the signature. + :paramtype signature_id: int + :keyword mode: The current mode enforced, 0 - Disabled, 1 - Alert, 2 -Deny. Possible values + include: 0, 1, 2. + :paramtype mode: int or ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSSignatureMode + :keyword severity: Describes the severity of signature: 1 - Low, 2 - Medium, 3 - High. Possible + values include: 1, 2, 3. + :paramtype severity: int or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSSignatureSeverity + :keyword direction: Describes in which direction signature is being enforced: 0 - Inbound, 1 - + OutBound, 2 - Bidirectional. Possible values include: 0, 1, 2. + :paramtype direction: int or + ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyIDPSSignatureDirection + :keyword group: Describes the groups the signature belongs to. + :paramtype group: str + :keyword description: Describes what is the signature enforces. + :paramtype description: str + :keyword protocol: Describes the protocol the signatures is being enforced in. + :paramtype protocol: str + :keyword source_ports: Describes the list of source ports related to this signature. + :paramtype source_ports: list[str] + :keyword destination_ports: Describes the list of destination ports related to this signature. + :paramtype destination_ports: list[str] + :keyword last_updated: Describes the last updated time of the signature (provided from 3rd + party vendor). + :paramtype last_updated: str + :keyword inherited_from_parent_policy: Describes if this override is inherited from base policy + or not. + :paramtype inherited_from_parent_policy: bool + """ + super(SingleQueryResult, self).__init__(**kwargs) + self.signature_id = signature_id + self.mode = mode + self.severity = severity + self.direction = direction + self.group = group + self.description = description + self.protocol = protocol + self.source_ports = source_ports + self.destination_ports = destination_ports + self.last_updated = last_updated + self.inherited_from_parent_policy = inherited_from_parent_policy + + +class Sku(msrest.serialization.Model): + """The sku of this Bastion Host. + + :ivar name: The name of this Bastion Host. Possible values include: "Basic", "Standard". + Default value: "Standard". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.BastionHostSkuName + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "BastionHostSkuName"]] = "Standard", + **kwargs + ): + """ + :keyword name: The name of this Bastion Host. Possible values include: "Basic", "Standard". + Default value: "Standard". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.BastionHostSkuName + """ + super(Sku, self).__init__(**kwargs) + self.name = name + + +class StaticMember(ChildResource): + """StaticMember Item. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar system_data: The system metadata related to this resource. + :vartype system_data: ~azure.mgmt.network.v2022_01_01.models.SystemData + :ivar resource_id: Resource Id. + :vartype resource_id: str + :ivar region: Resource region. + :vartype region: str + :ivar provisioning_state: The provisioning state of the scope assignment resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'system_data': {'readonly': True}, + 'region': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + 'resource_id': {'key': 'properties.resourceId', 'type': 'str'}, + 'region': {'key': 'properties.region', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + resource_id: Optional[str] = None, + **kwargs + ): + """ + :keyword resource_id: Resource Id. + :paramtype resource_id: str + """ + super(StaticMember, self).__init__(**kwargs) + self.system_data = None + self.resource_id = resource_id + self.region = None + self.provisioning_state = None + + +class StaticMemberListResult(msrest.serialization.Model): + """Result of the request to list StaticMember. It contains a list of groups and a URL link to get the next set of results. + + :ivar value: Gets a page of StaticMember. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.StaticMember] + :ivar next_link: Gets the URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[StaticMember]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["StaticMember"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: Gets a page of StaticMember. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.StaticMember] + :keyword next_link: Gets the URL to get the next set of results. + :paramtype next_link: str + """ + super(StaticMemberListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class StaticRoute(msrest.serialization.Model): + """List of all Static Routes. + + :ivar name: The name of the StaticRoute that is unique within a VnetRoute. + :vartype name: str + :ivar address_prefixes: List of all address prefixes. + :vartype address_prefixes: list[str] + :ivar next_hop_ip_address: The ip address of the next hop. + :vartype next_hop_ip_address: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'}, + 'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + address_prefixes: Optional[List[str]] = None, + next_hop_ip_address: Optional[str] = None, + **kwargs + ): + """ + :keyword name: The name of the StaticRoute that is unique within a VnetRoute. + :paramtype name: str + :keyword address_prefixes: List of all address prefixes. + :paramtype address_prefixes: list[str] + :keyword next_hop_ip_address: The ip address of the next hop. + :paramtype next_hop_ip_address: str + """ + super(StaticRoute, self).__init__(**kwargs) + self.name = name + self.address_prefixes = address_prefixes + self.next_hop_ip_address = next_hop_ip_address + + +class Subnet(SubResource): + """Subnet in a virtual network resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar address_prefix: The address prefix for the subnet. + :vartype address_prefix: str + :ivar address_prefixes: List of address prefixes for the subnet. + :vartype address_prefixes: list[str] + :ivar network_security_group: The reference to the NetworkSecurityGroup resource. + :vartype network_security_group: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :ivar route_table: The reference to the RouteTable resource. + :vartype route_table: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :ivar nat_gateway: Nat gateway associated with this subnet. + :vartype nat_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar service_endpoints: An array of service endpoints. + :vartype service_endpoints: + list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPropertiesFormat] + :ivar service_endpoint_policies: An array of service endpoint policies. + :vartype service_endpoint_policies: + list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy] + :ivar private_endpoints: An array of references to private endpoints. + :vartype private_endpoints: list[~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint] + :ivar ip_configurations: An array of references to the network interface IP configurations + using subnet. + :vartype ip_configurations: list[~azure.mgmt.network.v2022_01_01.models.IPConfiguration] + :ivar ip_configuration_profiles: Array of IP configuration profiles which reference this + subnet. + :vartype ip_configuration_profiles: + list[~azure.mgmt.network.v2022_01_01.models.IPConfigurationProfile] + :ivar ip_allocations: Array of IpAllocation which reference this subnet. + :vartype ip_allocations: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar resource_navigation_links: An array of references to the external resources using subnet. + :vartype resource_navigation_links: + list[~azure.mgmt.network.v2022_01_01.models.ResourceNavigationLink] + :ivar service_association_links: An array of references to services injecting into this subnet. + :vartype service_association_links: + list[~azure.mgmt.network.v2022_01_01.models.ServiceAssociationLink] + :ivar delegations: An array of references to the delegations on the subnet. + :vartype delegations: list[~azure.mgmt.network.v2022_01_01.models.Delegation] + :ivar purpose: A read-only string identifying the intention of use for this subnet based on + delegations and other user-defined properties. + :vartype purpose: str + :ivar provisioning_state: The provisioning state of the subnet resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar private_endpoint_network_policies: Enable or Disable apply network policies on private + end point in the subnet. Possible values include: "Enabled", "Disabled". Default value: + "Enabled". + :vartype private_endpoint_network_policies: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPrivateEndpointNetworkPolicies + :ivar private_link_service_network_policies: Enable or Disable apply network policies on + private link service in the subnet. Possible values include: "Enabled", "Disabled". Default + value: "Enabled". + :vartype private_link_service_network_policies: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPrivateLinkServiceNetworkPolicies + :ivar application_gateway_ip_configurations: Application gateway IP configurations of virtual + network resource. + :vartype application_gateway_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayIPConfiguration] + """ + + _validation = { + 'etag': {'readonly': True}, + 'private_endpoints': {'readonly': True}, + 'ip_configurations': {'readonly': True}, + 'ip_configuration_profiles': {'readonly': True}, + 'resource_navigation_links': {'readonly': True}, + 'service_association_links': {'readonly': True}, + 'purpose': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'}, + 'address_prefixes': {'key': 'properties.addressPrefixes', 'type': '[str]'}, + 'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'}, + 'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'}, + 'nat_gateway': {'key': 'properties.natGateway', 'type': 'SubResource'}, + 'service_endpoints': {'key': 'properties.serviceEndpoints', 'type': '[ServiceEndpointPropertiesFormat]'}, + 'service_endpoint_policies': {'key': 'properties.serviceEndpointPolicies', 'type': '[ServiceEndpointPolicy]'}, + 'private_endpoints': {'key': 'properties.privateEndpoints', 'type': '[PrivateEndpoint]'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'}, + 'ip_configuration_profiles': {'key': 'properties.ipConfigurationProfiles', 'type': '[IPConfigurationProfile]'}, + 'ip_allocations': {'key': 'properties.ipAllocations', 'type': '[SubResource]'}, + 'resource_navigation_links': {'key': 'properties.resourceNavigationLinks', 'type': '[ResourceNavigationLink]'}, + 'service_association_links': {'key': 'properties.serviceAssociationLinks', 'type': '[ServiceAssociationLink]'}, + 'delegations': {'key': 'properties.delegations', 'type': '[Delegation]'}, + 'purpose': {'key': 'properties.purpose', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'private_endpoint_network_policies': {'key': 'properties.privateEndpointNetworkPolicies', 'type': 'str'}, + 'private_link_service_network_policies': {'key': 'properties.privateLinkServiceNetworkPolicies', 'type': 'str'}, + 'application_gateway_ip_configurations': {'key': 'properties.applicationGatewayIpConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type: Optional[str] = None, + address_prefix: Optional[str] = None, + address_prefixes: Optional[List[str]] = None, + network_security_group: Optional["NetworkSecurityGroup"] = None, + route_table: Optional["RouteTable"] = None, + nat_gateway: Optional["SubResource"] = None, + service_endpoints: Optional[List["ServiceEndpointPropertiesFormat"]] = None, + service_endpoint_policies: Optional[List["ServiceEndpointPolicy"]] = None, + ip_allocations: Optional[List["SubResource"]] = None, + delegations: Optional[List["Delegation"]] = None, + private_endpoint_network_policies: Optional[Union[str, "VirtualNetworkPrivateEndpointNetworkPolicies"]] = "Enabled", + private_link_service_network_policies: Optional[Union[str, "VirtualNetworkPrivateLinkServiceNetworkPolicies"]] = "Enabled", + application_gateway_ip_configurations: Optional[List["ApplicationGatewayIPConfiguration"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type: Resource type. + :paramtype type: str + :keyword address_prefix: The address prefix for the subnet. + :paramtype address_prefix: str + :keyword address_prefixes: List of address prefixes for the subnet. + :paramtype address_prefixes: list[str] + :keyword network_security_group: The reference to the NetworkSecurityGroup resource. + :paramtype network_security_group: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :keyword route_table: The reference to the RouteTable resource. + :paramtype route_table: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :keyword nat_gateway: Nat gateway associated with this subnet. + :paramtype nat_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword service_endpoints: An array of service endpoints. + :paramtype service_endpoints: + list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPropertiesFormat] + :keyword service_endpoint_policies: An array of service endpoint policies. + :paramtype service_endpoint_policies: + list[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy] + :keyword ip_allocations: Array of IpAllocation which reference this subnet. + :paramtype ip_allocations: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword delegations: An array of references to the delegations on the subnet. + :paramtype delegations: list[~azure.mgmt.network.v2022_01_01.models.Delegation] + :keyword private_endpoint_network_policies: Enable or Disable apply network policies on private + end point in the subnet. Possible values include: "Enabled", "Disabled". Default value: + "Enabled". + :paramtype private_endpoint_network_policies: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPrivateEndpointNetworkPolicies + :keyword private_link_service_network_policies: Enable or Disable apply network policies on + private link service in the subnet. Possible values include: "Enabled", "Disabled". Default + value: "Enabled". + :paramtype private_link_service_network_policies: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPrivateLinkServiceNetworkPolicies + :keyword application_gateway_ip_configurations: Application gateway IP configurations of + virtual network resource. + :paramtype application_gateway_ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayIPConfiguration] + """ + super(Subnet, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = type + self.address_prefix = address_prefix + self.address_prefixes = address_prefixes + self.network_security_group = network_security_group + self.route_table = route_table + self.nat_gateway = nat_gateway + self.service_endpoints = service_endpoints + self.service_endpoint_policies = service_endpoint_policies + self.private_endpoints = None + self.ip_configurations = None + self.ip_configuration_profiles = None + self.ip_allocations = ip_allocations + self.resource_navigation_links = None + self.service_association_links = None + self.delegations = delegations + self.purpose = None + self.provisioning_state = None + self.private_endpoint_network_policies = private_endpoint_network_policies + self.private_link_service_network_policies = private_link_service_network_policies + self.application_gateway_ip_configurations = application_gateway_ip_configurations + + +class SubnetAssociation(msrest.serialization.Model): + """Subnet and it's custom security rules. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Subnet ID. + :vartype id: str + :ivar security_rules: Collection of custom security rules. + :vartype security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + """ + + _validation = { + 'id': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'}, + } + + def __init__( + self, + *, + security_rules: Optional[List["SecurityRule"]] = None, + **kwargs + ): + """ + :keyword security_rules: Collection of custom security rules. + :paramtype security_rules: list[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + """ + super(SubnetAssociation, self).__init__(**kwargs) + self.id = None + self.security_rules = security_rules + + +class SubnetListResult(msrest.serialization.Model): + """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network. + + :ivar value: The subnets in a virtual network. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.Subnet] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[Subnet]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["Subnet"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The subnets in a virtual network. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.Subnet] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(SubnetListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class SystemData(msrest.serialization.Model): + """Metadata pertaining to creation and last modification of the resource. + + :ivar created_by: The identity that created the resource. + :vartype created_by: str + :ivar created_by_type: The type of identity that created the resource. Possible values include: + "User", "Application", "ManagedIdentity", "Key". + :vartype created_by_type: str or ~azure.mgmt.network.v2022_01_01.models.CreatedByType + :ivar created_at: The timestamp of resource creation (UTC). + :vartype created_at: ~datetime.datetime + :ivar last_modified_by: The identity that last modified the resource. + :vartype last_modified_by: str + :ivar last_modified_by_type: The type of identity that last modified the resource. Possible + values include: "User", "Application", "ManagedIdentity", "Key". + :vartype last_modified_by_type: str or ~azure.mgmt.network.v2022_01_01.models.CreatedByType + :ivar last_modified_at: The type of identity that last modified the resource. + :vartype last_modified_at: ~datetime.datetime + """ + + _attribute_map = { + 'created_by': {'key': 'createdBy', 'type': 'str'}, + 'created_by_type': {'key': 'createdByType', 'type': 'str'}, + 'created_at': {'key': 'createdAt', 'type': 'iso-8601'}, + 'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'}, + 'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'}, + 'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'}, + } + + def __init__( + self, + *, + created_by: Optional[str] = None, + created_by_type: Optional[Union[str, "CreatedByType"]] = None, + created_at: Optional[datetime.datetime] = None, + last_modified_by: Optional[str] = None, + last_modified_by_type: Optional[Union[str, "CreatedByType"]] = None, + last_modified_at: Optional[datetime.datetime] = None, + **kwargs + ): + """ + :keyword created_by: The identity that created the resource. + :paramtype created_by: str + :keyword created_by_type: The type of identity that created the resource. Possible values + include: "User", "Application", "ManagedIdentity", "Key". + :paramtype created_by_type: str or ~azure.mgmt.network.v2022_01_01.models.CreatedByType + :keyword created_at: The timestamp of resource creation (UTC). + :paramtype created_at: ~datetime.datetime + :keyword last_modified_by: The identity that last modified the resource. + :paramtype last_modified_by: str + :keyword last_modified_by_type: The type of identity that last modified the resource. Possible + values include: "User", "Application", "ManagedIdentity", "Key". + :paramtype last_modified_by_type: str or ~azure.mgmt.network.v2022_01_01.models.CreatedByType + :keyword last_modified_at: The type of identity that last modified the resource. + :paramtype last_modified_at: ~datetime.datetime + """ + super(SystemData, self).__init__(**kwargs) + self.created_by = created_by + self.created_by_type = created_by_type + self.created_at = created_at + self.last_modified_by = last_modified_by + self.last_modified_by_type = last_modified_by_type + self.last_modified_at = last_modified_at + + +class TagsObject(msrest.serialization.Model): + """Tags object for patch operations. + + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + """ + + _attribute_map = { + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ + super(TagsObject, self).__init__(**kwargs) + self.tags = tags + + +class Topology(msrest.serialization.Model): + """Topology of the specified resource group. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: GUID representing the operation id. + :vartype id: str + :ivar created_date_time: The datetime when the topology was initially created for the resource + group. + :vartype created_date_time: ~datetime.datetime + :ivar last_modified: The datetime when the topology was last modified. + :vartype last_modified: ~datetime.datetime + :ivar resources: A list of topology resources. + :vartype resources: list[~azure.mgmt.network.v2022_01_01.models.TopologyResource] + """ + + _validation = { + 'id': {'readonly': True}, + 'created_date_time': {'readonly': True}, + 'last_modified': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'}, + 'last_modified': {'key': 'lastModified', 'type': 'iso-8601'}, + 'resources': {'key': 'resources', 'type': '[TopologyResource]'}, + } + + def __init__( + self, + *, + resources: Optional[List["TopologyResource"]] = None, + **kwargs + ): + """ + :keyword resources: A list of topology resources. + :paramtype resources: list[~azure.mgmt.network.v2022_01_01.models.TopologyResource] + """ + super(Topology, self).__init__(**kwargs) + self.id = None + self.created_date_time = None + self.last_modified = None + self.resources = resources + + +class TopologyAssociation(msrest.serialization.Model): + """Resources that have an association with the parent resource. + + :ivar name: The name of the resource that is associated with the parent resource. + :vartype name: str + :ivar resource_id: The ID of the resource that is associated with the parent resource. + :vartype resource_id: str + :ivar association_type: The association type of the child resource to the parent resource. + Possible values include: "Associated", "Contains". + :vartype association_type: str or ~azure.mgmt.network.v2022_01_01.models.AssociationType + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'association_type': {'key': 'associationType', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + resource_id: Optional[str] = None, + association_type: Optional[Union[str, "AssociationType"]] = None, + **kwargs + ): + """ + :keyword name: The name of the resource that is associated with the parent resource. + :paramtype name: str + :keyword resource_id: The ID of the resource that is associated with the parent resource. + :paramtype resource_id: str + :keyword association_type: The association type of the child resource to the parent resource. + Possible values include: "Associated", "Contains". + :paramtype association_type: str or ~azure.mgmt.network.v2022_01_01.models.AssociationType + """ + super(TopologyAssociation, self).__init__(**kwargs) + self.name = name + self.resource_id = resource_id + self.association_type = association_type + + +class TopologyParameters(msrest.serialization.Model): + """Parameters that define the representation of topology. + + :ivar target_resource_group_name: The name of the target resource group to perform topology on. + :vartype target_resource_group_name: str + :ivar target_virtual_network: The reference to the Virtual Network resource. + :vartype target_virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar target_subnet: The reference to the Subnet resource. + :vartype target_subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + + _attribute_map = { + 'target_resource_group_name': {'key': 'targetResourceGroupName', 'type': 'str'}, + 'target_virtual_network': {'key': 'targetVirtualNetwork', 'type': 'SubResource'}, + 'target_subnet': {'key': 'targetSubnet', 'type': 'SubResource'}, + } + + def __init__( + self, + *, + target_resource_group_name: Optional[str] = None, + target_virtual_network: Optional["SubResource"] = None, + target_subnet: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword target_resource_group_name: The name of the target resource group to perform topology + on. + :paramtype target_resource_group_name: str + :keyword target_virtual_network: The reference to the Virtual Network resource. + :paramtype target_virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword target_subnet: The reference to the Subnet resource. + :paramtype target_subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(TopologyParameters, self).__init__(**kwargs) + self.target_resource_group_name = target_resource_group_name + self.target_virtual_network = target_virtual_network + self.target_subnet = target_subnet + + +class TopologyResource(msrest.serialization.Model): + """The network resource topology information for the given resource group. + + :ivar name: Name of the resource. + :vartype name: str + :ivar id: ID of the resource. + :vartype id: str + :ivar location: Resource location. + :vartype location: str + :ivar associations: Holds the associations the resource has with other resources in the + resource group. + :vartype associations: list[~azure.mgmt.network.v2022_01_01.models.TopologyAssociation] + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'associations': {'key': 'associations', 'type': '[TopologyAssociation]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + id: Optional[str] = None, + location: Optional[str] = None, + associations: Optional[List["TopologyAssociation"]] = None, + **kwargs + ): + """ + :keyword name: Name of the resource. + :paramtype name: str + :keyword id: ID of the resource. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword associations: Holds the associations the resource has with other resources in the + resource group. + :paramtype associations: list[~azure.mgmt.network.v2022_01_01.models.TopologyAssociation] + """ + super(TopologyResource, self).__init__(**kwargs) + self.name = name + self.id = id + self.location = location + self.associations = associations + + +class TrafficAnalyticsConfigurationProperties(msrest.serialization.Model): + """Parameters that define the configuration of traffic analytics. + + :ivar enabled: Flag to enable/disable traffic analytics. + :vartype enabled: bool + :ivar workspace_id: The resource guid of the attached workspace. + :vartype workspace_id: str + :ivar workspace_region: The location of the attached workspace. + :vartype workspace_region: str + :ivar workspace_resource_id: Resource Id of the attached workspace. + :vartype workspace_resource_id: str + :ivar traffic_analytics_interval: The interval in minutes which would decide how frequently TA + service should do flow analytics. + :vartype traffic_analytics_interval: int + """ + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'workspace_id': {'key': 'workspaceId', 'type': 'str'}, + 'workspace_region': {'key': 'workspaceRegion', 'type': 'str'}, + 'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'}, + 'traffic_analytics_interval': {'key': 'trafficAnalyticsInterval', 'type': 'int'}, + } + + def __init__( + self, + *, + enabled: Optional[bool] = None, + workspace_id: Optional[str] = None, + workspace_region: Optional[str] = None, + workspace_resource_id: Optional[str] = None, + traffic_analytics_interval: Optional[int] = None, + **kwargs + ): + """ + :keyword enabled: Flag to enable/disable traffic analytics. + :paramtype enabled: bool + :keyword workspace_id: The resource guid of the attached workspace. + :paramtype workspace_id: str + :keyword workspace_region: The location of the attached workspace. + :paramtype workspace_region: str + :keyword workspace_resource_id: Resource Id of the attached workspace. + :paramtype workspace_resource_id: str + :keyword traffic_analytics_interval: The interval in minutes which would decide how frequently + TA service should do flow analytics. + :paramtype traffic_analytics_interval: int + """ + super(TrafficAnalyticsConfigurationProperties, self).__init__(**kwargs) + self.enabled = enabled + self.workspace_id = workspace_id + self.workspace_region = workspace_region + self.workspace_resource_id = workspace_resource_id + self.traffic_analytics_interval = traffic_analytics_interval + + +class TrafficAnalyticsProperties(msrest.serialization.Model): + """Parameters that define the configuration of traffic analytics. + + :ivar network_watcher_flow_analytics_configuration: Parameters that define the configuration of + traffic analytics. + :vartype network_watcher_flow_analytics_configuration: + ~azure.mgmt.network.v2022_01_01.models.TrafficAnalyticsConfigurationProperties + """ + + _attribute_map = { + 'network_watcher_flow_analytics_configuration': {'key': 'networkWatcherFlowAnalyticsConfiguration', 'type': 'TrafficAnalyticsConfigurationProperties'}, + } + + def __init__( + self, + *, + network_watcher_flow_analytics_configuration: Optional["TrafficAnalyticsConfigurationProperties"] = None, + **kwargs + ): + """ + :keyword network_watcher_flow_analytics_configuration: Parameters that define the configuration + of traffic analytics. + :paramtype network_watcher_flow_analytics_configuration: + ~azure.mgmt.network.v2022_01_01.models.TrafficAnalyticsConfigurationProperties + """ + super(TrafficAnalyticsProperties, self).__init__(**kwargs) + self.network_watcher_flow_analytics_configuration = network_watcher_flow_analytics_configuration + + +class TrafficSelectorPolicy(msrest.serialization.Model): + """An traffic selector policy for a virtual network gateway connection. + + All required parameters must be populated in order to send to Azure. + + :ivar local_address_ranges: Required. A collection of local address spaces in CIDR format. + :vartype local_address_ranges: list[str] + :ivar remote_address_ranges: Required. A collection of remote address spaces in CIDR format. + :vartype remote_address_ranges: list[str] + """ + + _validation = { + 'local_address_ranges': {'required': True}, + 'remote_address_ranges': {'required': True}, + } + + _attribute_map = { + 'local_address_ranges': {'key': 'localAddressRanges', 'type': '[str]'}, + 'remote_address_ranges': {'key': 'remoteAddressRanges', 'type': '[str]'}, + } + + def __init__( + self, + *, + local_address_ranges: List[str], + remote_address_ranges: List[str], + **kwargs + ): + """ + :keyword local_address_ranges: Required. A collection of local address spaces in CIDR format. + :paramtype local_address_ranges: list[str] + :keyword remote_address_ranges: Required. A collection of remote address spaces in CIDR format. + :paramtype remote_address_ranges: list[str] + """ + super(TrafficSelectorPolicy, self).__init__(**kwargs) + self.local_address_ranges = local_address_ranges + self.remote_address_ranges = remote_address_ranges + + +class TroubleshootingDetails(msrest.serialization.Model): + """Information gained from troubleshooting of specified resource. + + :ivar id: The id of the get troubleshoot operation. + :vartype id: str + :ivar reason_type: Reason type of failure. + :vartype reason_type: str + :ivar summary: A summary of troubleshooting. + :vartype summary: str + :ivar detail: Details on troubleshooting results. + :vartype detail: str + :ivar recommended_actions: List of recommended actions. + :vartype recommended_actions: + list[~azure.mgmt.network.v2022_01_01.models.TroubleshootingRecommendedActions] + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'reason_type': {'key': 'reasonType', 'type': 'str'}, + 'summary': {'key': 'summary', 'type': 'str'}, + 'detail': {'key': 'detail', 'type': 'str'}, + 'recommended_actions': {'key': 'recommendedActions', 'type': '[TroubleshootingRecommendedActions]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + reason_type: Optional[str] = None, + summary: Optional[str] = None, + detail: Optional[str] = None, + recommended_actions: Optional[List["TroubleshootingRecommendedActions"]] = None, + **kwargs + ): + """ + :keyword id: The id of the get troubleshoot operation. + :paramtype id: str + :keyword reason_type: Reason type of failure. + :paramtype reason_type: str + :keyword summary: A summary of troubleshooting. + :paramtype summary: str + :keyword detail: Details on troubleshooting results. + :paramtype detail: str + :keyword recommended_actions: List of recommended actions. + :paramtype recommended_actions: + list[~azure.mgmt.network.v2022_01_01.models.TroubleshootingRecommendedActions] + """ + super(TroubleshootingDetails, self).__init__(**kwargs) + self.id = id + self.reason_type = reason_type + self.summary = summary + self.detail = detail + self.recommended_actions = recommended_actions + + +class TroubleshootingParameters(msrest.serialization.Model): + """Parameters that define the resource to troubleshoot. + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. The target resource to troubleshoot. + :vartype target_resource_id: str + :ivar storage_id: Required. The ID for the storage account to save the troubleshoot result. + :vartype storage_id: str + :ivar storage_path: Required. The path to the blob to save the troubleshoot result in. + :vartype storage_path: str + """ + + _validation = { + 'target_resource_id': {'required': True}, + 'storage_id': {'required': True}, + 'storage_path': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + 'storage_id': {'key': 'properties.storageId', 'type': 'str'}, + 'storage_path': {'key': 'properties.storagePath', 'type': 'str'}, + } + + def __init__( + self, + *, + target_resource_id: str, + storage_id: str, + storage_path: str, + **kwargs + ): + """ + :keyword target_resource_id: Required. The target resource to troubleshoot. + :paramtype target_resource_id: str + :keyword storage_id: Required. The ID for the storage account to save the troubleshoot result. + :paramtype storage_id: str + :keyword storage_path: Required. The path to the blob to save the troubleshoot result in. + :paramtype storage_path: str + """ + super(TroubleshootingParameters, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + self.storage_id = storage_id + self.storage_path = storage_path + + +class TroubleshootingRecommendedActions(msrest.serialization.Model): + """Recommended actions based on discovered issues. + + :ivar action_id: ID of the recommended action. + :vartype action_id: str + :ivar action_text: Description of recommended actions. + :vartype action_text: str + :ivar action_uri: The uri linking to a documentation for the recommended troubleshooting + actions. + :vartype action_uri: str + :ivar action_uri_text: The information from the URI for the recommended troubleshooting + actions. + :vartype action_uri_text: str + """ + + _attribute_map = { + 'action_id': {'key': 'actionId', 'type': 'str'}, + 'action_text': {'key': 'actionText', 'type': 'str'}, + 'action_uri': {'key': 'actionUri', 'type': 'str'}, + 'action_uri_text': {'key': 'actionUriText', 'type': 'str'}, + } + + def __init__( + self, + *, + action_id: Optional[str] = None, + action_text: Optional[str] = None, + action_uri: Optional[str] = None, + action_uri_text: Optional[str] = None, + **kwargs + ): + """ + :keyword action_id: ID of the recommended action. + :paramtype action_id: str + :keyword action_text: Description of recommended actions. + :paramtype action_text: str + :keyword action_uri: The uri linking to a documentation for the recommended troubleshooting + actions. + :paramtype action_uri: str + :keyword action_uri_text: The information from the URI for the recommended troubleshooting + actions. + :paramtype action_uri_text: str + """ + super(TroubleshootingRecommendedActions, self).__init__(**kwargs) + self.action_id = action_id + self.action_text = action_text + self.action_uri = action_uri + self.action_uri_text = action_uri_text + + +class TroubleshootingResult(msrest.serialization.Model): + """Troubleshooting information gained from specified resource. + + :ivar start_time: The start time of the troubleshooting. + :vartype start_time: ~datetime.datetime + :ivar end_time: The end time of the troubleshooting. + :vartype end_time: ~datetime.datetime + :ivar code: The result code of the troubleshooting. + :vartype code: str + :ivar results: Information from troubleshooting. + :vartype results: list[~azure.mgmt.network.v2022_01_01.models.TroubleshootingDetails] + """ + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'code': {'key': 'code', 'type': 'str'}, + 'results': {'key': 'results', 'type': '[TroubleshootingDetails]'}, + } + + def __init__( + self, + *, + start_time: Optional[datetime.datetime] = None, + end_time: Optional[datetime.datetime] = None, + code: Optional[str] = None, + results: Optional[List["TroubleshootingDetails"]] = None, + **kwargs + ): + """ + :keyword start_time: The start time of the troubleshooting. + :paramtype start_time: ~datetime.datetime + :keyword end_time: The end time of the troubleshooting. + :paramtype end_time: ~datetime.datetime + :keyword code: The result code of the troubleshooting. + :paramtype code: str + :keyword results: Information from troubleshooting. + :paramtype results: list[~azure.mgmt.network.v2022_01_01.models.TroubleshootingDetails] + """ + super(TroubleshootingResult, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + self.code = code + self.results = results + + +class TunnelConnectionHealth(msrest.serialization.Model): + """VirtualNetworkGatewayConnection properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar tunnel: Tunnel name. + :vartype tunnel: str + :ivar connection_status: Virtual Network Gateway connection status. Possible values include: + "Unknown", "Connecting", "Connected", "NotConnected". + :vartype connection_status: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionStatus + :ivar ingress_bytes_transferred: The Ingress Bytes Transferred in this connection. + :vartype ingress_bytes_transferred: long + :ivar egress_bytes_transferred: The Egress Bytes Transferred in this connection. + :vartype egress_bytes_transferred: long + :ivar last_connection_established_utc_time: The time at which connection was established in Utc + format. + :vartype last_connection_established_utc_time: str + """ + + _validation = { + 'tunnel': {'readonly': True}, + 'connection_status': {'readonly': True}, + 'ingress_bytes_transferred': {'readonly': True}, + 'egress_bytes_transferred': {'readonly': True}, + 'last_connection_established_utc_time': {'readonly': True}, + } + + _attribute_map = { + 'tunnel': {'key': 'tunnel', 'type': 'str'}, + 'connection_status': {'key': 'connectionStatus', 'type': 'str'}, + 'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'}, + 'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'}, + 'last_connection_established_utc_time': {'key': 'lastConnectionEstablishedUtcTime', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(TunnelConnectionHealth, self).__init__(**kwargs) + self.tunnel = None + self.connection_status = None + self.ingress_bytes_transferred = None + self.egress_bytes_transferred = None + self.last_connection_established_utc_time = None + + +class UnprepareNetworkPoliciesRequest(msrest.serialization.Model): + """Details of UnprepareNetworkPolicies for Subnet. + + :ivar service_name: The name of the service for which subnet is being unprepared for. + :vartype service_name: str + """ + + _attribute_map = { + 'service_name': {'key': 'serviceName', 'type': 'str'}, + } + + def __init__( + self, + *, + service_name: Optional[str] = None, + **kwargs + ): + """ + :keyword service_name: The name of the service for which subnet is being unprepared for. + :paramtype service_name: str + """ + super(UnprepareNetworkPoliciesRequest, self).__init__(**kwargs) + self.service_name = service_name + + +class Usage(msrest.serialization.Model): + """The network resource usage. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource identifier. + :vartype id: str + :ivar unit: Required. An enum describing the unit of measurement. Possible values include: + "Count". + :vartype unit: str or ~azure.mgmt.network.v2022_01_01.models.UsageUnit + :ivar current_value: Required. The current value of the usage. + :vartype current_value: long + :ivar limit: Required. The limit of usage. + :vartype limit: long + :ivar name: Required. The name of the type of usage. + :vartype name: ~azure.mgmt.network.v2022_01_01.models.UsageName + """ + + _validation = { + 'id': {'readonly': True}, + 'unit': {'required': True}, + 'current_value': {'required': True}, + 'limit': {'required': True}, + 'name': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'current_value': {'key': 'currentValue', 'type': 'long'}, + 'limit': {'key': 'limit', 'type': 'long'}, + 'name': {'key': 'name', 'type': 'UsageName'}, + } + + def __init__( + self, + *, + unit: Union[str, "UsageUnit"], + current_value: int, + limit: int, + name: "UsageName", + **kwargs + ): + """ + :keyword unit: Required. An enum describing the unit of measurement. Possible values include: + "Count". + :paramtype unit: str or ~azure.mgmt.network.v2022_01_01.models.UsageUnit + :keyword current_value: Required. The current value of the usage. + :paramtype current_value: long + :keyword limit: Required. The limit of usage. + :paramtype limit: long + :keyword name: Required. The name of the type of usage. + :paramtype name: ~azure.mgmt.network.v2022_01_01.models.UsageName + """ + super(Usage, self).__init__(**kwargs) + self.id = None + self.unit = unit + self.current_value = current_value + self.limit = limit + self.name = name + + +class UsageName(msrest.serialization.Model): + """The usage names. + + :ivar value: A string describing the resource name. + :vartype value: str + :ivar localized_value: A localized string describing the resource name. + :vartype localized_value: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + 'localized_value': {'key': 'localizedValue', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[str] = None, + localized_value: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A string describing the resource name. + :paramtype value: str + :keyword localized_value: A localized string describing the resource name. + :paramtype localized_value: str + """ + super(UsageName, self).__init__(**kwargs) + self.value = value + self.localized_value = localized_value + + +class UsagesListResult(msrest.serialization.Model): + """The list usages operation response. + + :ivar value: The list network resource usages. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.Usage] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[Usage]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["Usage"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The list network resource usages. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.Usage] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(UsagesListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class VerificationIPFlowParameters(msrest.serialization.Model): + """Parameters that define the IP flow to be verified. + + All required parameters must be populated in order to send to Azure. + + :ivar target_resource_id: Required. The ID of the target resource to perform next-hop on. + :vartype target_resource_id: str + :ivar direction: Required. The direction of the packet represented as a 5-tuple. Possible + values include: "Inbound", "Outbound". + :vartype direction: str or ~azure.mgmt.network.v2022_01_01.models.Direction + :ivar protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP". + :vartype protocol: str or ~azure.mgmt.network.v2022_01_01.models.IpFlowProtocol + :ivar local_port: Required. The local port. Acceptable values are a single integer in the range + (0-65535). Support for * for the source port, which depends on the direction. + :vartype local_port: str + :ivar remote_port: Required. The remote port. Acceptable values are a single integer in the + range (0-65535). Support for * for the source port, which depends on the direction. + :vartype remote_port: str + :ivar local_ip_address: Required. The local IP address. Acceptable values are valid IPv4 + addresses. + :vartype local_ip_address: str + :ivar remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4 + addresses. + :vartype remote_ip_address: str + :ivar target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is enabled + on any of them, then this parameter must be specified. Otherwise optional). + :vartype target_nic_resource_id: str + """ + + _validation = { + 'target_resource_id': {'required': True}, + 'direction': {'required': True}, + 'protocol': {'required': True}, + 'local_port': {'required': True}, + 'remote_port': {'required': True}, + 'local_ip_address': {'required': True}, + 'remote_ip_address': {'required': True}, + } + + _attribute_map = { + 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + 'direction': {'key': 'direction', 'type': 'str'}, + 'protocol': {'key': 'protocol', 'type': 'str'}, + 'local_port': {'key': 'localPort', 'type': 'str'}, + 'remote_port': {'key': 'remotePort', 'type': 'str'}, + 'local_ip_address': {'key': 'localIPAddress', 'type': 'str'}, + 'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'}, + 'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'}, + } + + def __init__( + self, + *, + target_resource_id: str, + direction: Union[str, "Direction"], + protocol: Union[str, "IpFlowProtocol"], + local_port: str, + remote_port: str, + local_ip_address: str, + remote_ip_address: str, + target_nic_resource_id: Optional[str] = None, + **kwargs + ): + """ + :keyword target_resource_id: Required. The ID of the target resource to perform next-hop on. + :paramtype target_resource_id: str + :keyword direction: Required. The direction of the packet represented as a 5-tuple. Possible + values include: "Inbound", "Outbound". + :paramtype direction: str or ~azure.mgmt.network.v2022_01_01.models.Direction + :keyword protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP". + :paramtype protocol: str or ~azure.mgmt.network.v2022_01_01.models.IpFlowProtocol + :keyword local_port: Required. The local port. Acceptable values are a single integer in the + range (0-65535). Support for * for the source port, which depends on the direction. + :paramtype local_port: str + :keyword remote_port: Required. The remote port. Acceptable values are a single integer in the + range (0-65535). Support for * for the source port, which depends on the direction. + :paramtype remote_port: str + :keyword local_ip_address: Required. The local IP address. Acceptable values are valid IPv4 + addresses. + :paramtype local_ip_address: str + :keyword remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4 + addresses. + :paramtype remote_ip_address: str + :keyword target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is + enabled on any of them, then this parameter must be specified. Otherwise optional). + :paramtype target_nic_resource_id: str + """ + super(VerificationIPFlowParameters, self).__init__(**kwargs) + self.target_resource_id = target_resource_id + self.direction = direction + self.protocol = protocol + self.local_port = local_port + self.remote_port = remote_port + self.local_ip_address = local_ip_address + self.remote_ip_address = remote_ip_address + self.target_nic_resource_id = target_nic_resource_id + + +class VerificationIPFlowResult(msrest.serialization.Model): + """Results of IP flow verification on the target resource. + + :ivar access: Indicates whether the traffic is allowed or denied. Possible values include: + "Allow", "Deny". + :vartype access: str or ~azure.mgmt.network.v2022_01_01.models.Access + :ivar rule_name: Name of the rule. If input is not matched against any security rule, it is not + displayed. + :vartype rule_name: str + """ + + _attribute_map = { + 'access': {'key': 'access', 'type': 'str'}, + 'rule_name': {'key': 'ruleName', 'type': 'str'}, + } + + def __init__( + self, + *, + access: Optional[Union[str, "Access"]] = None, + rule_name: Optional[str] = None, + **kwargs + ): + """ + :keyword access: Indicates whether the traffic is allowed or denied. Possible values include: + "Allow", "Deny". + :paramtype access: str or ~azure.mgmt.network.v2022_01_01.models.Access + :keyword rule_name: Name of the rule. If input is not matched against any security rule, it is + not displayed. + :paramtype rule_name: str + """ + super(VerificationIPFlowResult, self).__init__(**kwargs) + self.access = access + self.rule_name = rule_name + + +class VirtualApplianceNicProperties(msrest.serialization.Model): + """Network Virtual Appliance NIC properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: NIC name. + :vartype name: str + :ivar public_ip_address: Public IP address. + :vartype public_ip_address: str + :ivar private_ip_address: Private IP address. + :vartype private_ip_address: str + """ + + _validation = { + 'name': {'readonly': True}, + 'public_ip_address': {'readonly': True}, + 'private_ip_address': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'}, + 'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(VirtualApplianceNicProperties, self).__init__(**kwargs) + self.name = None + self.public_ip_address = None + self.private_ip_address = None + + +class VirtualApplianceSite(SubResource): + """Virtual Appliance Site resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the virtual appliance site. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Site type. + :vartype type: str + :ivar address_prefix: Address Prefix. + :vartype address_prefix: str + :ivar o365_policy: Office 365 Policy. + :vartype o365_policy: ~azure.mgmt.network.v2022_01_01.models.Office365PolicyProperties + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'}, + 'o365_policy': {'key': 'properties.o365Policy', 'type': 'Office365PolicyProperties'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + address_prefix: Optional[str] = None, + o365_policy: Optional["Office365PolicyProperties"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the virtual appliance site. + :paramtype name: str + :keyword address_prefix: Address Prefix. + :paramtype address_prefix: str + :keyword o365_policy: Office 365 Policy. + :paramtype o365_policy: ~azure.mgmt.network.v2022_01_01.models.Office365PolicyProperties + """ + super(VirtualApplianceSite, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.address_prefix = address_prefix + self.o365_policy = o365_policy + self.provisioning_state = None + + +class VirtualApplianceSkuProperties(msrest.serialization.Model): + """Network Virtual Appliance Sku Properties. + + :ivar vendor: Virtual Appliance Vendor. + :vartype vendor: str + :ivar bundled_scale_unit: Virtual Appliance Scale Unit. + :vartype bundled_scale_unit: str + :ivar market_place_version: Virtual Appliance Version. + :vartype market_place_version: str + """ + + _attribute_map = { + 'vendor': {'key': 'vendor', 'type': 'str'}, + 'bundled_scale_unit': {'key': 'bundledScaleUnit', 'type': 'str'}, + 'market_place_version': {'key': 'marketPlaceVersion', 'type': 'str'}, + } + + def __init__( + self, + *, + vendor: Optional[str] = None, + bundled_scale_unit: Optional[str] = None, + market_place_version: Optional[str] = None, + **kwargs + ): + """ + :keyword vendor: Virtual Appliance Vendor. + :paramtype vendor: str + :keyword bundled_scale_unit: Virtual Appliance Scale Unit. + :paramtype bundled_scale_unit: str + :keyword market_place_version: Virtual Appliance Version. + :paramtype market_place_version: str + """ + super(VirtualApplianceSkuProperties, self).__init__(**kwargs) + self.vendor = vendor + self.bundled_scale_unit = bundled_scale_unit + self.market_place_version = market_place_version + + +class VirtualHub(Resource): + """VirtualHub Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar kind: Kind of service virtual hub. This is metadata used for the Azure portal experience + for Route Server. + :vartype kind: str + :ivar virtual_wan: The VirtualWAN to which the VirtualHub belongs. + :vartype virtual_wan: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar vpn_gateway: The VpnGateway associated with this VirtualHub. + :vartype vpn_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar p2_s_vpn_gateway: The P2SVpnGateway associated with this VirtualHub. + :vartype p2_s_vpn_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar express_route_gateway: The expressRouteGateway associated with this VirtualHub. + :vartype express_route_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar azure_firewall: The azureFirewall associated with this VirtualHub. + :vartype azure_firewall: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar security_partner_provider: The securityPartnerProvider associated with this VirtualHub. + :vartype security_partner_provider: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar address_prefix: Address-prefix for this VirtualHub. + :vartype address_prefix: str + :ivar route_table: The routeTable associated with this virtual hub. + :vartype route_table: ~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTable + :ivar provisioning_state: The provisioning state of the virtual hub resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar security_provider_name: The Security Provider name. + :vartype security_provider_name: str + :ivar virtual_hub_route_table_v2_s: List of all virtual hub route table v2s associated with + this VirtualHub. + :vartype virtual_hub_route_table_v2_s: + list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2] + :ivar sku: The sku of this VirtualHub. + :vartype sku: str + :ivar routing_state: The routing state. Possible values include: "None", "Provisioned", + "Provisioning", "Failed". + :vartype routing_state: str or ~azure.mgmt.network.v2022_01_01.models.RoutingState + :ivar bgp_connections: List of references to Bgp Connections. + :vartype bgp_connections: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar ip_configurations: List of references to IpConfigurations. + :vartype ip_configurations: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar virtual_router_asn: VirtualRouter ASN. + :vartype virtual_router_asn: long + :ivar virtual_router_ips: VirtualRouter IPs. + :vartype virtual_router_ips: list[str] + :ivar allow_branch_to_branch_traffic: Flag to control transit for VirtualRouter hub. + :vartype allow_branch_to_branch_traffic: bool + :ivar preferred_routing_gateway: The preferred gateway to route on-prem traffic. Possible + values include: "ExpressRoute", "VpnGateway", "None". + :vartype preferred_routing_gateway: str or + ~azure.mgmt.network.v2022_01_01.models.PreferredRoutingGateway + :ivar hub_routing_preference: The hubRoutingPreference of this VirtualHub. Possible values + include: "ExpressRoute", "VpnGateway", "ASPath". + :vartype hub_routing_preference: str or + ~azure.mgmt.network.v2022_01_01.models.HubRoutingPreference + :ivar virtual_router_auto_scale_configuration: The VirtualHub Router autoscale configuration. + :vartype virtual_router_auto_scale_configuration: + ~azure.mgmt.network.v2022_01_01.models.VirtualRouterAutoScaleConfiguration + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'kind': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'routing_state': {'readonly': True}, + 'bgp_connections': {'readonly': True}, + 'ip_configurations': {'readonly': True}, + 'virtual_router_asn': {'maximum': 4294967295, 'minimum': 0}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'kind': {'key': 'kind', 'type': 'str'}, + 'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'}, + 'vpn_gateway': {'key': 'properties.vpnGateway', 'type': 'SubResource'}, + 'p2_s_vpn_gateway': {'key': 'properties.p2SVpnGateway', 'type': 'SubResource'}, + 'express_route_gateway': {'key': 'properties.expressRouteGateway', 'type': 'SubResource'}, + 'azure_firewall': {'key': 'properties.azureFirewall', 'type': 'SubResource'}, + 'security_partner_provider': {'key': 'properties.securityPartnerProvider', 'type': 'SubResource'}, + 'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'}, + 'route_table': {'key': 'properties.routeTable', 'type': 'VirtualHubRouteTable'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'security_provider_name': {'key': 'properties.securityProviderName', 'type': 'str'}, + 'virtual_hub_route_table_v2_s': {'key': 'properties.virtualHubRouteTableV2s', 'type': '[VirtualHubRouteTableV2]'}, + 'sku': {'key': 'properties.sku', 'type': 'str'}, + 'routing_state': {'key': 'properties.routingState', 'type': 'str'}, + 'bgp_connections': {'key': 'properties.bgpConnections', 'type': '[SubResource]'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[SubResource]'}, + 'virtual_router_asn': {'key': 'properties.virtualRouterAsn', 'type': 'long'}, + 'virtual_router_ips': {'key': 'properties.virtualRouterIps', 'type': '[str]'}, + 'allow_branch_to_branch_traffic': {'key': 'properties.allowBranchToBranchTraffic', 'type': 'bool'}, + 'preferred_routing_gateway': {'key': 'properties.preferredRoutingGateway', 'type': 'str'}, + 'hub_routing_preference': {'key': 'properties.hubRoutingPreference', 'type': 'str'}, + 'virtual_router_auto_scale_configuration': {'key': 'properties.virtualRouterAutoScaleConfiguration', 'type': 'VirtualRouterAutoScaleConfiguration'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + virtual_wan: Optional["SubResource"] = None, + vpn_gateway: Optional["SubResource"] = None, + p2_s_vpn_gateway: Optional["SubResource"] = None, + express_route_gateway: Optional["SubResource"] = None, + azure_firewall: Optional["SubResource"] = None, + security_partner_provider: Optional["SubResource"] = None, + address_prefix: Optional[str] = None, + route_table: Optional["VirtualHubRouteTable"] = None, + security_provider_name: Optional[str] = None, + virtual_hub_route_table_v2_s: Optional[List["VirtualHubRouteTableV2"]] = None, + sku: Optional[str] = None, + virtual_router_asn: Optional[int] = None, + virtual_router_ips: Optional[List[str]] = None, + allow_branch_to_branch_traffic: Optional[bool] = None, + preferred_routing_gateway: Optional[Union[str, "PreferredRoutingGateway"]] = None, + hub_routing_preference: Optional[Union[str, "HubRoutingPreference"]] = None, + virtual_router_auto_scale_configuration: Optional["VirtualRouterAutoScaleConfiguration"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword virtual_wan: The VirtualWAN to which the VirtualHub belongs. + :paramtype virtual_wan: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword vpn_gateway: The VpnGateway associated with this VirtualHub. + :paramtype vpn_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword p2_s_vpn_gateway: The P2SVpnGateway associated with this VirtualHub. + :paramtype p2_s_vpn_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword express_route_gateway: The expressRouteGateway associated with this VirtualHub. + :paramtype express_route_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword azure_firewall: The azureFirewall associated with this VirtualHub. + :paramtype azure_firewall: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword security_partner_provider: The securityPartnerProvider associated with this + VirtualHub. + :paramtype security_partner_provider: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword address_prefix: Address-prefix for this VirtualHub. + :paramtype address_prefix: str + :keyword route_table: The routeTable associated with this virtual hub. + :paramtype route_table: ~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTable + :keyword security_provider_name: The Security Provider name. + :paramtype security_provider_name: str + :keyword virtual_hub_route_table_v2_s: List of all virtual hub route table v2s associated with + this VirtualHub. + :paramtype virtual_hub_route_table_v2_s: + list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2] + :keyword sku: The sku of this VirtualHub. + :paramtype sku: str + :keyword virtual_router_asn: VirtualRouter ASN. + :paramtype virtual_router_asn: long + :keyword virtual_router_ips: VirtualRouter IPs. + :paramtype virtual_router_ips: list[str] + :keyword allow_branch_to_branch_traffic: Flag to control transit for VirtualRouter hub. + :paramtype allow_branch_to_branch_traffic: bool + :keyword preferred_routing_gateway: The preferred gateway to route on-prem traffic. Possible + values include: "ExpressRoute", "VpnGateway", "None". + :paramtype preferred_routing_gateway: str or + ~azure.mgmt.network.v2022_01_01.models.PreferredRoutingGateway + :keyword hub_routing_preference: The hubRoutingPreference of this VirtualHub. Possible values + include: "ExpressRoute", "VpnGateway", "ASPath". + :paramtype hub_routing_preference: str or + ~azure.mgmt.network.v2022_01_01.models.HubRoutingPreference + :keyword virtual_router_auto_scale_configuration: The VirtualHub Router autoscale + configuration. + :paramtype virtual_router_auto_scale_configuration: + ~azure.mgmt.network.v2022_01_01.models.VirtualRouterAutoScaleConfiguration + """ + super(VirtualHub, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.kind = None + self.virtual_wan = virtual_wan + self.vpn_gateway = vpn_gateway + self.p2_s_vpn_gateway = p2_s_vpn_gateway + self.express_route_gateway = express_route_gateway + self.azure_firewall = azure_firewall + self.security_partner_provider = security_partner_provider + self.address_prefix = address_prefix + self.route_table = route_table + self.provisioning_state = None + self.security_provider_name = security_provider_name + self.virtual_hub_route_table_v2_s = virtual_hub_route_table_v2_s + self.sku = sku + self.routing_state = None + self.bgp_connections = None + self.ip_configurations = None + self.virtual_router_asn = virtual_router_asn + self.virtual_router_ips = virtual_router_ips + self.allow_branch_to_branch_traffic = allow_branch_to_branch_traffic + self.preferred_routing_gateway = preferred_routing_gateway + self.hub_routing_preference = hub_routing_preference + self.virtual_router_auto_scale_configuration = virtual_router_auto_scale_configuration + + +class VirtualHubEffectiveRoute(msrest.serialization.Model): + """The effective route configured on the virtual hub or specified resource. + + :ivar address_prefixes: The list of address prefixes. + :vartype address_prefixes: list[str] + :ivar next_hops: The list of next hops. + :vartype next_hops: list[str] + :ivar next_hop_type: The type of the next hop. + :vartype next_hop_type: str + :ivar as_path: The ASPath of this route. + :vartype as_path: str + :ivar route_origin: The origin of this route. + :vartype route_origin: str + """ + + _attribute_map = { + 'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'}, + 'next_hops': {'key': 'nextHops', 'type': '[str]'}, + 'next_hop_type': {'key': 'nextHopType', 'type': 'str'}, + 'as_path': {'key': 'asPath', 'type': 'str'}, + 'route_origin': {'key': 'routeOrigin', 'type': 'str'}, + } + + def __init__( + self, + *, + address_prefixes: Optional[List[str]] = None, + next_hops: Optional[List[str]] = None, + next_hop_type: Optional[str] = None, + as_path: Optional[str] = None, + route_origin: Optional[str] = None, + **kwargs + ): + """ + :keyword address_prefixes: The list of address prefixes. + :paramtype address_prefixes: list[str] + :keyword next_hops: The list of next hops. + :paramtype next_hops: list[str] + :keyword next_hop_type: The type of the next hop. + :paramtype next_hop_type: str + :keyword as_path: The ASPath of this route. + :paramtype as_path: str + :keyword route_origin: The origin of this route. + :paramtype route_origin: str + """ + super(VirtualHubEffectiveRoute, self).__init__(**kwargs) + self.address_prefixes = address_prefixes + self.next_hops = next_hops + self.next_hop_type = next_hop_type + self.as_path = as_path + self.route_origin = route_origin + + +class VirtualHubEffectiveRouteList(msrest.serialization.Model): + """EffectiveRoutes List. + + :ivar value: The list of effective routes configured on the virtual hub or the specified + resource. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubEffectiveRoute] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualHubEffectiveRoute]'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualHubEffectiveRoute"]] = None, + **kwargs + ): + """ + :keyword value: The list of effective routes configured on the virtual hub or the specified + resource. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubEffectiveRoute] + """ + super(VirtualHubEffectiveRouteList, self).__init__(**kwargs) + self.value = value + + +class VirtualHubId(msrest.serialization.Model): + """Virtual Hub identifier. + + :ivar id: The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be + deployed. The Virtual Hub resource and the ExpressRoute gateway resource reside in the same + subscription. + :vartype id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be + deployed. The Virtual Hub resource and the ExpressRoute gateway resource reside in the same + subscription. + :paramtype id: str + """ + super(VirtualHubId, self).__init__(**kwargs) + self.id = id + + +class VirtualHubRoute(msrest.serialization.Model): + """VirtualHub route. + + :ivar address_prefixes: List of all addressPrefixes. + :vartype address_prefixes: list[str] + :ivar next_hop_ip_address: NextHop ip address. + :vartype next_hop_ip_address: str + """ + + _attribute_map = { + 'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'}, + 'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'}, + } + + def __init__( + self, + *, + address_prefixes: Optional[List[str]] = None, + next_hop_ip_address: Optional[str] = None, + **kwargs + ): + """ + :keyword address_prefixes: List of all addressPrefixes. + :paramtype address_prefixes: list[str] + :keyword next_hop_ip_address: NextHop ip address. + :paramtype next_hop_ip_address: str + """ + super(VirtualHubRoute, self).__init__(**kwargs) + self.address_prefixes = address_prefixes + self.next_hop_ip_address = next_hop_ip_address + + +class VirtualHubRouteTable(msrest.serialization.Model): + """VirtualHub route table. + + :ivar routes: List of all routes. + :vartype routes: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRoute] + """ + + _attribute_map = { + 'routes': {'key': 'routes', 'type': '[VirtualHubRoute]'}, + } + + def __init__( + self, + *, + routes: Optional[List["VirtualHubRoute"]] = None, + **kwargs + ): + """ + :keyword routes: List of all routes. + :paramtype routes: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRoute] + """ + super(VirtualHubRouteTable, self).__init__(**kwargs) + self.routes = routes + + +class VirtualHubRouteTableV2(SubResource): + """VirtualHubRouteTableV2 Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar routes: List of all routes. + :vartype routes: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteV2] + :ivar attached_connections: List of all connections attached to this route table v2. + :vartype attached_connections: list[str] + :ivar provisioning_state: The provisioning state of the virtual hub route table v2 resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'routes': {'key': 'properties.routes', 'type': '[VirtualHubRouteV2]'}, + 'attached_connections': {'key': 'properties.attachedConnections', 'type': '[str]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + routes: Optional[List["VirtualHubRouteV2"]] = None, + attached_connections: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword routes: List of all routes. + :paramtype routes: list[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteV2] + :keyword attached_connections: List of all connections attached to this route table v2. + :paramtype attached_connections: list[str] + """ + super(VirtualHubRouteTableV2, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.routes = routes + self.attached_connections = attached_connections + self.provisioning_state = None + + +class VirtualHubRouteV2(msrest.serialization.Model): + """VirtualHubRouteTableV2 route. + + :ivar destination_type: The type of destinations. + :vartype destination_type: str + :ivar destinations: List of all destinations. + :vartype destinations: list[str] + :ivar next_hop_type: The type of next hops. + :vartype next_hop_type: str + :ivar next_hops: NextHops ip address. + :vartype next_hops: list[str] + """ + + _attribute_map = { + 'destination_type': {'key': 'destinationType', 'type': 'str'}, + 'destinations': {'key': 'destinations', 'type': '[str]'}, + 'next_hop_type': {'key': 'nextHopType', 'type': 'str'}, + 'next_hops': {'key': 'nextHops', 'type': '[str]'}, + } + + def __init__( + self, + *, + destination_type: Optional[str] = None, + destinations: Optional[List[str]] = None, + next_hop_type: Optional[str] = None, + next_hops: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword destination_type: The type of destinations. + :paramtype destination_type: str + :keyword destinations: List of all destinations. + :paramtype destinations: list[str] + :keyword next_hop_type: The type of next hops. + :paramtype next_hop_type: str + :keyword next_hops: NextHops ip address. + :paramtype next_hops: list[str] + """ + super(VirtualHubRouteV2, self).__init__(**kwargs) + self.destination_type = destination_type + self.destinations = destinations + self.next_hop_type = next_hop_type + self.next_hops = next_hops + + +class VirtualNetwork(Resource): + """Virtual Network resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of the virtual network. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar address_space: The AddressSpace that contains an array of IP address ranges that can be + used by subnets. + :vartype address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs + deployed in the virtual network. + :vartype dhcp_options: ~azure.mgmt.network.v2022_01_01.models.DhcpOptions + :ivar flow_timeout_in_minutes: The FlowTimeout value (in minutes) for the Virtual Network. + :vartype flow_timeout_in_minutes: int + :ivar subnets: A list of subnets in a Virtual Network. + :vartype subnets: list[~azure.mgmt.network.v2022_01_01.models.Subnet] + :ivar virtual_network_peerings: A list of peerings in a Virtual Network. + :vartype virtual_network_peerings: + list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering] + :ivar resource_guid: The resourceGuid property of the Virtual Network resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the virtual network resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar enable_ddos_protection: Indicates if DDoS protection is enabled for all the protected + resources in the virtual network. It requires a DDoS protection plan associated with the + resource. + :vartype enable_ddos_protection: bool + :ivar enable_vm_protection: Indicates if VM protection is enabled for all the subnets in the + virtual network. + :vartype enable_vm_protection: bool + :ivar ddos_protection_plan: The DDoS protection plan associated with the virtual network. + :vartype ddos_protection_plan: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar bgp_communities: Bgp Communities sent over ExpressRoute with each route corresponding to + a prefix in this VNET. + :vartype bgp_communities: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkBgpCommunities + :ivar encryption: Indicates if encryption is enabled on virtual network and if VM without + encryption is allowed in encrypted VNet. + :vartype encryption: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkEncryption + :ivar ip_allocations: Array of IpAllocation which reference this VNET. + :vartype ip_allocations: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'}, + 'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'}, + 'flow_timeout_in_minutes': {'key': 'properties.flowTimeoutInMinutes', 'type': 'int'}, + 'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'}, + 'virtual_network_peerings': {'key': 'properties.virtualNetworkPeerings', 'type': '[VirtualNetworkPeering]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'enable_ddos_protection': {'key': 'properties.enableDdosProtection', 'type': 'bool'}, + 'enable_vm_protection': {'key': 'properties.enableVmProtection', 'type': 'bool'}, + 'ddos_protection_plan': {'key': 'properties.ddosProtectionPlan', 'type': 'SubResource'}, + 'bgp_communities': {'key': 'properties.bgpCommunities', 'type': 'VirtualNetworkBgpCommunities'}, + 'encryption': {'key': 'properties.encryption', 'type': 'VirtualNetworkEncryption'}, + 'ip_allocations': {'key': 'properties.ipAllocations', 'type': '[SubResource]'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + address_space: Optional["AddressSpace"] = None, + dhcp_options: Optional["DhcpOptions"] = None, + flow_timeout_in_minutes: Optional[int] = None, + subnets: Optional[List["Subnet"]] = None, + virtual_network_peerings: Optional[List["VirtualNetworkPeering"]] = None, + enable_ddos_protection: Optional[bool] = False, + enable_vm_protection: Optional[bool] = False, + ddos_protection_plan: Optional["SubResource"] = None, + bgp_communities: Optional["VirtualNetworkBgpCommunities"] = None, + encryption: Optional["VirtualNetworkEncryption"] = None, + ip_allocations: Optional[List["SubResource"]] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of the virtual network. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword address_space: The AddressSpace that contains an array of IP address ranges that can + be used by subnets. + :paramtype address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs + deployed in the virtual network. + :paramtype dhcp_options: ~azure.mgmt.network.v2022_01_01.models.DhcpOptions + :keyword flow_timeout_in_minutes: The FlowTimeout value (in minutes) for the Virtual Network. + :paramtype flow_timeout_in_minutes: int + :keyword subnets: A list of subnets in a Virtual Network. + :paramtype subnets: list[~azure.mgmt.network.v2022_01_01.models.Subnet] + :keyword virtual_network_peerings: A list of peerings in a Virtual Network. + :paramtype virtual_network_peerings: + list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering] + :keyword enable_ddos_protection: Indicates if DDoS protection is enabled for all the protected + resources in the virtual network. It requires a DDoS protection plan associated with the + resource. + :paramtype enable_ddos_protection: bool + :keyword enable_vm_protection: Indicates if VM protection is enabled for all the subnets in the + virtual network. + :paramtype enable_vm_protection: bool + :keyword ddos_protection_plan: The DDoS protection plan associated with the virtual network. + :paramtype ddos_protection_plan: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword bgp_communities: Bgp Communities sent over ExpressRoute with each route corresponding + to a prefix in this VNET. + :paramtype bgp_communities: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkBgpCommunities + :keyword encryption: Indicates if encryption is enabled on virtual network and if VM without + encryption is allowed in encrypted VNet. + :paramtype encryption: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkEncryption + :keyword ip_allocations: Array of IpAllocation which reference this VNET. + :paramtype ip_allocations: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + """ + super(VirtualNetwork, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.etag = None + self.address_space = address_space + self.dhcp_options = dhcp_options + self.flow_timeout_in_minutes = flow_timeout_in_minutes + self.subnets = subnets + self.virtual_network_peerings = virtual_network_peerings + self.resource_guid = None + self.provisioning_state = None + self.enable_ddos_protection = enable_ddos_protection + self.enable_vm_protection = enable_vm_protection + self.ddos_protection_plan = ddos_protection_plan + self.bgp_communities = bgp_communities + self.encryption = encryption + self.ip_allocations = ip_allocations + + +class VirtualNetworkBgpCommunities(msrest.serialization.Model): + """Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar virtual_network_community: Required. The BGP community associated with the virtual + network. + :vartype virtual_network_community: str + :ivar regional_community: The BGP community associated with the region of the virtual network. + :vartype regional_community: str + """ + + _validation = { + 'virtual_network_community': {'required': True}, + 'regional_community': {'readonly': True}, + } + + _attribute_map = { + 'virtual_network_community': {'key': 'virtualNetworkCommunity', 'type': 'str'}, + 'regional_community': {'key': 'regionalCommunity', 'type': 'str'}, + } + + def __init__( + self, + *, + virtual_network_community: str, + **kwargs + ): + """ + :keyword virtual_network_community: Required. The BGP community associated with the virtual + network. + :paramtype virtual_network_community: str + """ + super(VirtualNetworkBgpCommunities, self).__init__(**kwargs) + self.virtual_network_community = virtual_network_community + self.regional_community = None + + +class VirtualNetworkConnectionGatewayReference(msrest.serialization.Model): + """A reference to VirtualNetworkGateway or LocalNetworkGateway resource. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource. + :vartype id: str + """ + + _validation = { + 'id': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__( + self, + *, + id: str, + **kwargs + ): + """ + :keyword id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource. + :paramtype id: str + """ + super(VirtualNetworkConnectionGatewayReference, self).__init__(**kwargs) + self.id = id + + +class VirtualNetworkEncryption(msrest.serialization.Model): + """Indicates if encryption is enabled on virtual network and if VM without encryption is allowed in encrypted VNet. + + All required parameters must be populated in order to send to Azure. + + :ivar enabled: Required. Indicates if encryption is enabled on the virtual network. + :vartype enabled: bool + :ivar enforcement: If the encrypted VNet allows VM that does not support encryption. Possible + values include: "DropUnencrypted", "AllowUnencrypted". + :vartype enforcement: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkEncryptionEnforcement + """ + + _validation = { + 'enabled': {'required': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'enforcement': {'key': 'enforcement', 'type': 'str'}, + } + + def __init__( + self, + *, + enabled: bool, + enforcement: Optional[Union[str, "VirtualNetworkEncryptionEnforcement"]] = None, + **kwargs + ): + """ + :keyword enabled: Required. Indicates if encryption is enabled on the virtual network. + :paramtype enabled: bool + :keyword enforcement: If the encrypted VNet allows VM that does not support encryption. + Possible values include: "DropUnencrypted", "AllowUnencrypted". + :paramtype enforcement: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkEncryptionEnforcement + """ + super(VirtualNetworkEncryption, self).__init__(**kwargs) + self.enabled = enabled + self.enforcement = enforcement + + +class VirtualNetworkGateway(Resource): + """A common class for general resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar extended_location: The extended location of type local virtual network gateway. + :vartype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar ip_configurations: IP configurations for virtual network gateway. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayIPConfiguration] + :ivar gateway_type: The type of this virtual network gateway. Possible values include: "Vpn", + "ExpressRoute", "LocalGateway". + :vartype gateway_type: str or ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayType + :ivar vpn_type: The type of this virtual network gateway. Possible values include: + "PolicyBased", "RouteBased". + :vartype vpn_type: str or ~azure.mgmt.network.v2022_01_01.models.VpnType + :ivar vpn_gateway_generation: The generation for this VirtualNetworkGateway. Must be None if + gatewayType is not VPN. Possible values include: "None", "Generation1", "Generation2". + :vartype vpn_gateway_generation: str or + ~azure.mgmt.network.v2022_01_01.models.VpnGatewayGeneration + :ivar enable_bgp: Whether BGP is enabled for this virtual network gateway or not. + :vartype enable_bgp: bool + :ivar enable_private_ip_address: Whether private IP needs to be enabled on this gateway for + connections or not. + :vartype enable_private_ip_address: bool + :ivar active: ActiveActive flag. + :vartype active: bool + :ivar disable_ip_sec_replay_protection: disableIPSecReplayProtection flag. + :vartype disable_ip_sec_replay_protection: bool + :ivar gateway_default_site: The reference to the LocalNetworkGateway resource which represents + local network site having default routes. Assign Null value in case of removing existing + default site setting. + :vartype gateway_default_site: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar sku: The reference to the VirtualNetworkGatewaySku resource which represents the SKU + selected for Virtual network gateway. + :vartype sku: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewaySku + :ivar vpn_client_configuration: The reference to the VpnClientConfiguration resource which + represents the P2S VpnClient configurations. + :vartype vpn_client_configuration: + ~azure.mgmt.network.v2022_01_01.models.VpnClientConfiguration + :ivar bgp_settings: Virtual network gateway's BGP speaker settings. + :vartype bgp_settings: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + :ivar custom_routes: The reference to the address space resource which represents the custom + routes address space specified by the customer for virtual network gateway and VpnClient. + :vartype custom_routes: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar resource_guid: The resource GUID property of the virtual network gateway resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the virtual network gateway resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar enable_dns_forwarding: Whether dns forwarding is enabled or not. + :vartype enable_dns_forwarding: bool + :ivar inbound_dns_forwarding_endpoint: The IP address allocated by the gateway to which dns + requests can be sent. + :vartype inbound_dns_forwarding_endpoint: str + :ivar v_net_extended_location_resource_id: Customer vnet resource id. VirtualNetworkGateway of + type local gateway is associated with the customer vnet. + :vartype v_net_extended_location_resource_id: str + :ivar nat_rules: NatRules for virtual network gateway. + :vartype nat_rules: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule] + :ivar enable_bgp_route_translation_for_nat: EnableBgpRouteTranslationForNat flag. + :vartype enable_bgp_route_translation_for_nat: bool + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'inbound_dns_forwarding_endpoint': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'extended_location': {'key': 'extendedLocation', 'type': 'ExtendedLocation'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'}, + 'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'}, + 'vpn_type': {'key': 'properties.vpnType', 'type': 'str'}, + 'vpn_gateway_generation': {'key': 'properties.vpnGatewayGeneration', 'type': 'str'}, + 'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'}, + 'enable_private_ip_address': {'key': 'properties.enablePrivateIpAddress', 'type': 'bool'}, + 'active': {'key': 'properties.activeActive', 'type': 'bool'}, + 'disable_ip_sec_replay_protection': {'key': 'properties.disableIPSecReplayProtection', 'type': 'bool'}, + 'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'}, + 'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'}, + 'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'}, + 'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'}, + 'custom_routes': {'key': 'properties.customRoutes', 'type': 'AddressSpace'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'enable_dns_forwarding': {'key': 'properties.enableDnsForwarding', 'type': 'bool'}, + 'inbound_dns_forwarding_endpoint': {'key': 'properties.inboundDnsForwardingEndpoint', 'type': 'str'}, + 'v_net_extended_location_resource_id': {'key': 'properties.vNetExtendedLocationResourceId', 'type': 'str'}, + 'nat_rules': {'key': 'properties.natRules', 'type': '[VirtualNetworkGatewayNatRule]'}, + 'enable_bgp_route_translation_for_nat': {'key': 'properties.enableBgpRouteTranslationForNat', 'type': 'bool'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["ExtendedLocation"] = None, + ip_configurations: Optional[List["VirtualNetworkGatewayIPConfiguration"]] = None, + gateway_type: Optional[Union[str, "VirtualNetworkGatewayType"]] = None, + vpn_type: Optional[Union[str, "VpnType"]] = None, + vpn_gateway_generation: Optional[Union[str, "VpnGatewayGeneration"]] = None, + enable_bgp: Optional[bool] = None, + enable_private_ip_address: Optional[bool] = None, + active: Optional[bool] = None, + disable_ip_sec_replay_protection: Optional[bool] = None, + gateway_default_site: Optional["SubResource"] = None, + sku: Optional["VirtualNetworkGatewaySku"] = None, + vpn_client_configuration: Optional["VpnClientConfiguration"] = None, + bgp_settings: Optional["BgpSettings"] = None, + custom_routes: Optional["AddressSpace"] = None, + enable_dns_forwarding: Optional[bool] = None, + v_net_extended_location_resource_id: Optional[str] = None, + nat_rules: Optional[List["VirtualNetworkGatewayNatRule"]] = None, + enable_bgp_route_translation_for_nat: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword extended_location: The extended location of type local virtual network gateway. + :paramtype extended_location: ~azure.mgmt.network.v2022_01_01.models.ExtendedLocation + :keyword ip_configurations: IP configurations for virtual network gateway. + :paramtype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayIPConfiguration] + :keyword gateway_type: The type of this virtual network gateway. Possible values include: + "Vpn", "ExpressRoute", "LocalGateway". + :paramtype gateway_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayType + :keyword vpn_type: The type of this virtual network gateway. Possible values include: + "PolicyBased", "RouteBased". + :paramtype vpn_type: str or ~azure.mgmt.network.v2022_01_01.models.VpnType + :keyword vpn_gateway_generation: The generation for this VirtualNetworkGateway. Must be None if + gatewayType is not VPN. Possible values include: "None", "Generation1", "Generation2". + :paramtype vpn_gateway_generation: str or + ~azure.mgmt.network.v2022_01_01.models.VpnGatewayGeneration + :keyword enable_bgp: Whether BGP is enabled for this virtual network gateway or not. + :paramtype enable_bgp: bool + :keyword enable_private_ip_address: Whether private IP needs to be enabled on this gateway for + connections or not. + :paramtype enable_private_ip_address: bool + :keyword active: ActiveActive flag. + :paramtype active: bool + :keyword disable_ip_sec_replay_protection: disableIPSecReplayProtection flag. + :paramtype disable_ip_sec_replay_protection: bool + :keyword gateway_default_site: The reference to the LocalNetworkGateway resource which + represents local network site having default routes. Assign Null value in case of removing + existing default site setting. + :paramtype gateway_default_site: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword sku: The reference to the VirtualNetworkGatewaySku resource which represents the SKU + selected for Virtual network gateway. + :paramtype sku: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewaySku + :keyword vpn_client_configuration: The reference to the VpnClientConfiguration resource which + represents the P2S VpnClient configurations. + :paramtype vpn_client_configuration: + ~azure.mgmt.network.v2022_01_01.models.VpnClientConfiguration + :keyword bgp_settings: Virtual network gateway's BGP speaker settings. + :paramtype bgp_settings: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + :keyword custom_routes: The reference to the address space resource which represents the custom + routes address space specified by the customer for virtual network gateway and VpnClient. + :paramtype custom_routes: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword enable_dns_forwarding: Whether dns forwarding is enabled or not. + :paramtype enable_dns_forwarding: bool + :keyword v_net_extended_location_resource_id: Customer vnet resource id. VirtualNetworkGateway + of type local gateway is associated with the customer vnet. + :paramtype v_net_extended_location_resource_id: str + :keyword nat_rules: NatRules for virtual network gateway. + :paramtype nat_rules: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule] + :keyword enable_bgp_route_translation_for_nat: EnableBgpRouteTranslationForNat flag. + :paramtype enable_bgp_route_translation_for_nat: bool + """ + super(VirtualNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.extended_location = extended_location + self.etag = None + self.ip_configurations = ip_configurations + self.gateway_type = gateway_type + self.vpn_type = vpn_type + self.vpn_gateway_generation = vpn_gateway_generation + self.enable_bgp = enable_bgp + self.enable_private_ip_address = enable_private_ip_address + self.active = active + self.disable_ip_sec_replay_protection = disable_ip_sec_replay_protection + self.gateway_default_site = gateway_default_site + self.sku = sku + self.vpn_client_configuration = vpn_client_configuration + self.bgp_settings = bgp_settings + self.custom_routes = custom_routes + self.resource_guid = None + self.provisioning_state = None + self.enable_dns_forwarding = enable_dns_forwarding + self.inbound_dns_forwarding_endpoint = None + self.v_net_extended_location_resource_id = v_net_extended_location_resource_id + self.nat_rules = nat_rules + self.enable_bgp_route_translation_for_nat = enable_bgp_route_translation_for_nat + + +class VirtualNetworkGatewayConnection(Resource): + """A common class for general resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar authorization_key: The authorizationKey. + :vartype authorization_key: str + :ivar virtual_network_gateway1: Required. The reference to virtual network gateway resource. + :vartype virtual_network_gateway1: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :ivar virtual_network_gateway2: The reference to virtual network gateway resource. + :vartype virtual_network_gateway2: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :ivar local_network_gateway2: The reference to local network gateway resource. + :vartype local_network_gateway2: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :ivar ingress_nat_rules: List of ingress NatRules. + :vartype ingress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar egress_nat_rules: List of egress NatRules. + :vartype egress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar connection_type: Required. Gateway connection type. Possible values include: "IPsec", + "Vnet2Vnet", "ExpressRoute", "VPNClient". + :vartype connection_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionType + :ivar connection_protocol: Connection protocol used for this connection. Possible values + include: "IKEv2", "IKEv1". + :vartype connection_protocol: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :ivar routing_weight: The routing weight. + :vartype routing_weight: int + :ivar dpd_timeout_seconds: The dead peer detection timeout of this connection in seconds. + :vartype dpd_timeout_seconds: int + :ivar connection_mode: The connection mode for this connection. Possible values include: + "Default", "ResponderOnly", "InitiatorOnly". + :vartype connection_mode: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionMode + :ivar shared_key: The IPSec shared key. + :vartype shared_key: str + :ivar connection_status: Virtual Network Gateway connection status. Possible values include: + "Unknown", "Connecting", "Connected", "NotConnected". + :vartype connection_status: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionStatus + :ivar tunnel_connection_status: Collection of all tunnels' connection health status. + :vartype tunnel_connection_status: + list[~azure.mgmt.network.v2022_01_01.models.TunnelConnectionHealth] + :ivar egress_bytes_transferred: The egress bytes transferred in this connection. + :vartype egress_bytes_transferred: long + :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection. + :vartype ingress_bytes_transferred: long + :ivar peer: The reference to peerings resource. + :vartype peer: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar enable_bgp: EnableBgp flag. + :vartype enable_bgp: bool + :ivar gateway_custom_bgp_ip_addresses: GatewayCustomBgpIpAddresses to be used for virtual + network gateway Connection. + :vartype gateway_custom_bgp_ip_addresses: + list[~azure.mgmt.network.v2022_01_01.models.GatewayCustomBgpIpAddressIpConfiguration] + :ivar use_local_azure_ip_address: Use private local Azure IP for the connection. + :vartype use_local_azure_ip_address: bool + :ivar use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :vartype use_policy_based_traffic_selectors: bool + :ivar ipsec_policies: The IPSec Policies to be considered by this connection. + :vartype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :ivar traffic_selector_policies: The Traffic Selector Policies to be considered by this + connection. + :vartype traffic_selector_policies: + list[~azure.mgmt.network.v2022_01_01.models.TrafficSelectorPolicy] + :ivar resource_guid: The resource GUID property of the virtual network gateway connection + resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the virtual network gateway connection + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding. + :vartype express_route_gateway_bypass: bool + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'virtual_network_gateway1': {'required': True}, + 'connection_type': {'required': True}, + 'connection_status': {'readonly': True}, + 'tunnel_connection_status': {'readonly': True}, + 'egress_bytes_transferred': {'readonly': True}, + 'ingress_bytes_transferred': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'}, + 'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'}, + 'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'}, + 'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'}, + 'ingress_nat_rules': {'key': 'properties.ingressNatRules', 'type': '[SubResource]'}, + 'egress_nat_rules': {'key': 'properties.egressNatRules', 'type': '[SubResource]'}, + 'connection_type': {'key': 'properties.connectionType', 'type': 'str'}, + 'connection_protocol': {'key': 'properties.connectionProtocol', 'type': 'str'}, + 'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'}, + 'dpd_timeout_seconds': {'key': 'properties.dpdTimeoutSeconds', 'type': 'int'}, + 'connection_mode': {'key': 'properties.connectionMode', 'type': 'str'}, + 'shared_key': {'key': 'properties.sharedKey', 'type': 'str'}, + 'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'}, + 'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'}, + 'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'}, + 'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'}, + 'peer': {'key': 'properties.peer', 'type': 'SubResource'}, + 'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'}, + 'gateway_custom_bgp_ip_addresses': {'key': 'properties.gatewayCustomBgpIpAddresses', 'type': '[GatewayCustomBgpIpAddressIpConfiguration]'}, + 'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'}, + 'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'}, + 'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'}, + 'traffic_selector_policies': {'key': 'properties.trafficSelectorPolicies', 'type': '[TrafficSelectorPolicy]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'}, + } + + def __init__( + self, + *, + virtual_network_gateway1: "VirtualNetworkGateway", + connection_type: Union[str, "VirtualNetworkGatewayConnectionType"], + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + authorization_key: Optional[str] = None, + virtual_network_gateway2: Optional["VirtualNetworkGateway"] = None, + local_network_gateway2: Optional["LocalNetworkGateway"] = None, + ingress_nat_rules: Optional[List["SubResource"]] = None, + egress_nat_rules: Optional[List["SubResource"]] = None, + connection_protocol: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None, + routing_weight: Optional[int] = None, + dpd_timeout_seconds: Optional[int] = None, + connection_mode: Optional[Union[str, "VirtualNetworkGatewayConnectionMode"]] = None, + shared_key: Optional[str] = None, + peer: Optional["SubResource"] = None, + enable_bgp: Optional[bool] = None, + gateway_custom_bgp_ip_addresses: Optional[List["GatewayCustomBgpIpAddressIpConfiguration"]] = None, + use_local_azure_ip_address: Optional[bool] = None, + use_policy_based_traffic_selectors: Optional[bool] = None, + ipsec_policies: Optional[List["IpsecPolicy"]] = None, + traffic_selector_policies: Optional[List["TrafficSelectorPolicy"]] = None, + express_route_gateway_bypass: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword authorization_key: The authorizationKey. + :paramtype authorization_key: str + :keyword virtual_network_gateway1: Required. The reference to virtual network gateway resource. + :paramtype virtual_network_gateway1: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :keyword virtual_network_gateway2: The reference to virtual network gateway resource. + :paramtype virtual_network_gateway2: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :keyword local_network_gateway2: The reference to local network gateway resource. + :paramtype local_network_gateway2: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :keyword ingress_nat_rules: List of ingress NatRules. + :paramtype ingress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword egress_nat_rules: List of egress NatRules. + :paramtype egress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword connection_type: Required. Gateway connection type. Possible values include: "IPsec", + "Vnet2Vnet", "ExpressRoute", "VPNClient". + :paramtype connection_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionType + :keyword connection_protocol: Connection protocol used for this connection. Possible values + include: "IKEv2", "IKEv1". + :paramtype connection_protocol: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :keyword routing_weight: The routing weight. + :paramtype routing_weight: int + :keyword dpd_timeout_seconds: The dead peer detection timeout of this connection in seconds. + :paramtype dpd_timeout_seconds: int + :keyword connection_mode: The connection mode for this connection. Possible values include: + "Default", "ResponderOnly", "InitiatorOnly". + :paramtype connection_mode: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionMode + :keyword shared_key: The IPSec shared key. + :paramtype shared_key: str + :keyword peer: The reference to peerings resource. + :paramtype peer: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword enable_bgp: EnableBgp flag. + :paramtype enable_bgp: bool + :keyword gateway_custom_bgp_ip_addresses: GatewayCustomBgpIpAddresses to be used for virtual + network gateway Connection. + :paramtype gateway_custom_bgp_ip_addresses: + list[~azure.mgmt.network.v2022_01_01.models.GatewayCustomBgpIpAddressIpConfiguration] + :keyword use_local_azure_ip_address: Use private local Azure IP for the connection. + :paramtype use_local_azure_ip_address: bool + :keyword use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :paramtype use_policy_based_traffic_selectors: bool + :keyword ipsec_policies: The IPSec Policies to be considered by this connection. + :paramtype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :keyword traffic_selector_policies: The Traffic Selector Policies to be considered by this + connection. + :paramtype traffic_selector_policies: + list[~azure.mgmt.network.v2022_01_01.models.TrafficSelectorPolicy] + :keyword express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding. + :paramtype express_route_gateway_bypass: bool + """ + super(VirtualNetworkGatewayConnection, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.authorization_key = authorization_key + self.virtual_network_gateway1 = virtual_network_gateway1 + self.virtual_network_gateway2 = virtual_network_gateway2 + self.local_network_gateway2 = local_network_gateway2 + self.ingress_nat_rules = ingress_nat_rules + self.egress_nat_rules = egress_nat_rules + self.connection_type = connection_type + self.connection_protocol = connection_protocol + self.routing_weight = routing_weight + self.dpd_timeout_seconds = dpd_timeout_seconds + self.connection_mode = connection_mode + self.shared_key = shared_key + self.connection_status = None + self.tunnel_connection_status = None + self.egress_bytes_transferred = None + self.ingress_bytes_transferred = None + self.peer = peer + self.enable_bgp = enable_bgp + self.gateway_custom_bgp_ip_addresses = gateway_custom_bgp_ip_addresses + self.use_local_azure_ip_address = use_local_azure_ip_address + self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors + self.ipsec_policies = ipsec_policies + self.traffic_selector_policies = traffic_selector_policies + self.resource_guid = None + self.provisioning_state = None + self.express_route_gateway_bypass = express_route_gateway_bypass + + +class VirtualNetworkGatewayConnectionListEntity(Resource): + """A common class for general resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar authorization_key: The authorizationKey. + :vartype authorization_key: str + :ivar virtual_network_gateway1: Required. The reference to virtual network gateway resource. + :vartype virtual_network_gateway1: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkConnectionGatewayReference + :ivar virtual_network_gateway2: The reference to virtual network gateway resource. + :vartype virtual_network_gateway2: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkConnectionGatewayReference + :ivar local_network_gateway2: The reference to local network gateway resource. + :vartype local_network_gateway2: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkConnectionGatewayReference + :ivar connection_type: Required. Gateway connection type. Possible values include: "IPsec", + "Vnet2Vnet", "ExpressRoute", "VPNClient". + :vartype connection_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionType + :ivar connection_protocol: Connection protocol used for this connection. Possible values + include: "IKEv2", "IKEv1". + :vartype connection_protocol: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :ivar routing_weight: The routing weight. + :vartype routing_weight: int + :ivar connection_mode: The connection mode for this connection. Possible values include: + "Default", "ResponderOnly", "InitiatorOnly". + :vartype connection_mode: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionMode + :ivar shared_key: The IPSec shared key. + :vartype shared_key: str + :ivar connection_status: Virtual Network Gateway connection status. Possible values include: + "Unknown", "Connecting", "Connected", "NotConnected". + :vartype connection_status: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionStatus + :ivar tunnel_connection_status: Collection of all tunnels' connection health status. + :vartype tunnel_connection_status: + list[~azure.mgmt.network.v2022_01_01.models.TunnelConnectionHealth] + :ivar egress_bytes_transferred: The egress bytes transferred in this connection. + :vartype egress_bytes_transferred: long + :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection. + :vartype ingress_bytes_transferred: long + :ivar peer: The reference to peerings resource. + :vartype peer: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar enable_bgp: EnableBgp flag. + :vartype enable_bgp: bool + :ivar gateway_custom_bgp_ip_addresses: GatewayCustomBgpIpAddresses to be used for virtual + network gateway Connection. + :vartype gateway_custom_bgp_ip_addresses: + list[~azure.mgmt.network.v2022_01_01.models.GatewayCustomBgpIpAddressIpConfiguration] + :ivar use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :vartype use_policy_based_traffic_selectors: bool + :ivar ipsec_policies: The IPSec Policies to be considered by this connection. + :vartype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :ivar traffic_selector_policies: The Traffic Selector Policies to be considered by this + connection. + :vartype traffic_selector_policies: + list[~azure.mgmt.network.v2022_01_01.models.TrafficSelectorPolicy] + :ivar resource_guid: The resource GUID property of the virtual network gateway connection + resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the virtual network gateway connection + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding. + :vartype express_route_gateway_bypass: bool + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'virtual_network_gateway1': {'required': True}, + 'connection_type': {'required': True}, + 'connection_status': {'readonly': True}, + 'tunnel_connection_status': {'readonly': True}, + 'egress_bytes_transferred': {'readonly': True}, + 'ingress_bytes_transferred': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'}, + 'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkConnectionGatewayReference'}, + 'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'}, + 'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'}, + 'connection_type': {'key': 'properties.connectionType', 'type': 'str'}, + 'connection_protocol': {'key': 'properties.connectionProtocol', 'type': 'str'}, + 'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'}, + 'connection_mode': {'key': 'properties.connectionMode', 'type': 'str'}, + 'shared_key': {'key': 'properties.sharedKey', 'type': 'str'}, + 'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'}, + 'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'}, + 'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'}, + 'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'}, + 'peer': {'key': 'properties.peer', 'type': 'SubResource'}, + 'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'}, + 'gateway_custom_bgp_ip_addresses': {'key': 'properties.gatewayCustomBgpIpAddresses', 'type': '[GatewayCustomBgpIpAddressIpConfiguration]'}, + 'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'}, + 'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'}, + 'traffic_selector_policies': {'key': 'properties.trafficSelectorPolicies', 'type': '[TrafficSelectorPolicy]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'}, + } + + def __init__( + self, + *, + virtual_network_gateway1: "VirtualNetworkConnectionGatewayReference", + connection_type: Union[str, "VirtualNetworkGatewayConnectionType"], + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + authorization_key: Optional[str] = None, + virtual_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None, + local_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None, + connection_protocol: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None, + routing_weight: Optional[int] = None, + connection_mode: Optional[Union[str, "VirtualNetworkGatewayConnectionMode"]] = None, + shared_key: Optional[str] = None, + peer: Optional["SubResource"] = None, + enable_bgp: Optional[bool] = None, + gateway_custom_bgp_ip_addresses: Optional[List["GatewayCustomBgpIpAddressIpConfiguration"]] = None, + use_policy_based_traffic_selectors: Optional[bool] = None, + ipsec_policies: Optional[List["IpsecPolicy"]] = None, + traffic_selector_policies: Optional[List["TrafficSelectorPolicy"]] = None, + express_route_gateway_bypass: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword authorization_key: The authorizationKey. + :paramtype authorization_key: str + :keyword virtual_network_gateway1: Required. The reference to virtual network gateway resource. + :paramtype virtual_network_gateway1: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkConnectionGatewayReference + :keyword virtual_network_gateway2: The reference to virtual network gateway resource. + :paramtype virtual_network_gateway2: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkConnectionGatewayReference + :keyword local_network_gateway2: The reference to local network gateway resource. + :paramtype local_network_gateway2: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkConnectionGatewayReference + :keyword connection_type: Required. Gateway connection type. Possible values include: "IPsec", + "Vnet2Vnet", "ExpressRoute", "VPNClient". + :paramtype connection_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionType + :keyword connection_protocol: Connection protocol used for this connection. Possible values + include: "IKEv2", "IKEv1". + :paramtype connection_protocol: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :keyword routing_weight: The routing weight. + :paramtype routing_weight: int + :keyword connection_mode: The connection mode for this connection. Possible values include: + "Default", "ResponderOnly", "InitiatorOnly". + :paramtype connection_mode: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionMode + :keyword shared_key: The IPSec shared key. + :paramtype shared_key: str + :keyword peer: The reference to peerings resource. + :paramtype peer: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword enable_bgp: EnableBgp flag. + :paramtype enable_bgp: bool + :keyword gateway_custom_bgp_ip_addresses: GatewayCustomBgpIpAddresses to be used for virtual + network gateway Connection. + :paramtype gateway_custom_bgp_ip_addresses: + list[~azure.mgmt.network.v2022_01_01.models.GatewayCustomBgpIpAddressIpConfiguration] + :keyword use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :paramtype use_policy_based_traffic_selectors: bool + :keyword ipsec_policies: The IPSec Policies to be considered by this connection. + :paramtype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :keyword traffic_selector_policies: The Traffic Selector Policies to be considered by this + connection. + :paramtype traffic_selector_policies: + list[~azure.mgmt.network.v2022_01_01.models.TrafficSelectorPolicy] + :keyword express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding. + :paramtype express_route_gateway_bypass: bool + """ + super(VirtualNetworkGatewayConnectionListEntity, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.authorization_key = authorization_key + self.virtual_network_gateway1 = virtual_network_gateway1 + self.virtual_network_gateway2 = virtual_network_gateway2 + self.local_network_gateway2 = local_network_gateway2 + self.connection_type = connection_type + self.connection_protocol = connection_protocol + self.routing_weight = routing_weight + self.connection_mode = connection_mode + self.shared_key = shared_key + self.connection_status = None + self.tunnel_connection_status = None + self.egress_bytes_transferred = None + self.ingress_bytes_transferred = None + self.peer = peer + self.enable_bgp = enable_bgp + self.gateway_custom_bgp_ip_addresses = gateway_custom_bgp_ip_addresses + self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors + self.ipsec_policies = ipsec_policies + self.traffic_selector_policies = traffic_selector_policies + self.resource_guid = None + self.provisioning_state = None + self.express_route_gateway_bypass = express_route_gateway_bypass + + +class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model): + """Response for the ListVirtualNetworkGatewayConnections API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of VirtualNetworkGatewayConnection resources that exists in a resource + group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualNetworkGatewayConnection"]] = None, + **kwargs + ): + """ + :keyword value: A list of VirtualNetworkGatewayConnection resources that exists in a resource + group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection] + """ + super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class VirtualNetworkGatewayIPConfiguration(SubResource): + """IP configuration for virtual network gateway. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar private_ip_allocation_method: The private IP address allocation method. Possible values + include: "Static", "Dynamic". + :vartype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :ivar subnet: The reference to the subnet resource. + :vartype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar public_ip_address: The reference to the public IP resource. + :vartype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar private_ip_address: Private IP Address for this gateway. + :vartype private_ip_address: str + :ivar provisioning_state: The provisioning state of the virtual network gateway IP + configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'private_ip_address': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'}, + 'subnet': {'key': 'properties.subnet', 'type': 'SubResource'}, + 'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'}, + 'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None, + subnet: Optional["SubResource"] = None, + public_ip_address: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword private_ip_allocation_method: The private IP address allocation method. Possible + values include: "Static", "Dynamic". + :paramtype private_ip_allocation_method: str or + ~azure.mgmt.network.v2022_01_01.models.IPAllocationMethod + :keyword subnet: The reference to the subnet resource. + :paramtype subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword public_ip_address: The reference to the public IP resource. + :paramtype public_ip_address: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(VirtualNetworkGatewayIPConfiguration, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.private_ip_allocation_method = private_ip_allocation_method + self.subnet = subnet + self.public_ip_address = public_ip_address + self.private_ip_address = None + self.provisioning_state = None + + +class VirtualNetworkGatewayListConnectionsResult(msrest.serialization.Model): + """Response for the VirtualNetworkGatewayListConnections API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of VirtualNetworkGatewayConnection resources that exists in a resource + group. + :vartype value: + list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionListEntity] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnectionListEntity]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualNetworkGatewayConnectionListEntity"]] = None, + **kwargs + ): + """ + :keyword value: A list of VirtualNetworkGatewayConnection resources that exists in a resource + group. + :paramtype value: + list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionListEntity] + """ + super(VirtualNetworkGatewayListConnectionsResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class VirtualNetworkGatewayListResult(msrest.serialization.Model): + """Response for the ListVirtualNetworkGateways API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: A list of VirtualNetworkGateway resources that exists in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'next_link': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualNetworkGateway"]] = None, + **kwargs + ): + """ + :keyword value: A list of VirtualNetworkGateway resources that exists in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + """ + super(VirtualNetworkGatewayListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class VirtualNetworkGatewayNatRule(SubResource): + """VirtualNetworkGatewayNatRule Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar provisioning_state: The provisioning state of the NAT Rule resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar type_properties_type: The type of NAT rule for VPN NAT. Possible values include: + "Static", "Dynamic". + :vartype type_properties_type: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleType + :ivar mode: The Source NAT direction of a VPN NAT. Possible values include: "EgressSnat", + "IngressSnat". + :vartype mode: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMode + :ivar internal_mappings: The private IP address internal mapping for NAT. + :vartype internal_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :ivar external_mappings: The private IP address external mapping for NAT. + :vartype external_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :ivar ip_configuration_id: The IP Configuration ID this NAT rule applies to. + :vartype ip_configuration_id: str + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'type_properties_type': {'key': 'properties.type', 'type': 'str'}, + 'mode': {'key': 'properties.mode', 'type': 'str'}, + 'internal_mappings': {'key': 'properties.internalMappings', 'type': '[VpnNatRuleMapping]'}, + 'external_mappings': {'key': 'properties.externalMappings', 'type': '[VpnNatRuleMapping]'}, + 'ip_configuration_id': {'key': 'properties.ipConfigurationId', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type_properties_type: Optional[Union[str, "VpnNatRuleType"]] = None, + mode: Optional[Union[str, "VpnNatRuleMode"]] = None, + internal_mappings: Optional[List["VpnNatRuleMapping"]] = None, + external_mappings: Optional[List["VpnNatRuleMapping"]] = None, + ip_configuration_id: Optional[str] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type_properties_type: The type of NAT rule for VPN NAT. Possible values include: + "Static", "Dynamic". + :paramtype type_properties_type: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleType + :keyword mode: The Source NAT direction of a VPN NAT. Possible values include: "EgressSnat", + "IngressSnat". + :paramtype mode: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMode + :keyword internal_mappings: The private IP address internal mapping for NAT. + :paramtype internal_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :keyword external_mappings: The private IP address external mapping for NAT. + :paramtype external_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :keyword ip_configuration_id: The IP Configuration ID this NAT rule applies to. + :paramtype ip_configuration_id: str + """ + super(VirtualNetworkGatewayNatRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.provisioning_state = None + self.type_properties_type = type_properties_type + self.mode = mode + self.internal_mappings = internal_mappings + self.external_mappings = external_mappings + self.ip_configuration_id = ip_configuration_id + + +class VirtualNetworkGatewaySku(msrest.serialization.Model): + """VirtualNetworkGatewaySku details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", "Standard", + "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", "VpnGw2AZ", + "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ". + :vartype name: str or ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewaySkuName + :ivar tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", "Standard", + "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", "VpnGw2AZ", + "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ". + :vartype tier: str or ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewaySkuTier + :ivar capacity: The capacity. + :vartype capacity: int + """ + + _validation = { + 'capacity': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'tier': {'key': 'tier', 'type': 'str'}, + 'capacity': {'key': 'capacity', 'type': 'int'}, + } + + def __init__( + self, + *, + name: Optional[Union[str, "VirtualNetworkGatewaySkuName"]] = None, + tier: Optional[Union[str, "VirtualNetworkGatewaySkuTier"]] = None, + **kwargs + ): + """ + :keyword name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", + "Standard", "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", + "VpnGw2AZ", "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ". + :paramtype name: str or ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewaySkuName + :keyword tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", + "Standard", "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", + "VpnGw2AZ", "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ". + :paramtype tier: str or ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewaySkuTier + """ + super(VirtualNetworkGatewaySku, self).__init__(**kwargs) + self.name = name + self.tier = tier + self.capacity = None + + +class VirtualNetworkListResult(msrest.serialization.Model): + """Response for the ListVirtualNetworks API service call. + + :ivar value: A list of VirtualNetwork resources in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetwork] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetwork]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualNetwork"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of VirtualNetwork resources in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetwork] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(VirtualNetworkListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class VirtualNetworkListUsageResult(msrest.serialization.Model): + """Response for the virtual networks GetUsage API service call. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: VirtualNetwork usage stats. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkUsage] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetworkUsage]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(VirtualNetworkListUsageResult, self).__init__(**kwargs) + self.value = None + self.next_link = next_link + + +class VirtualNetworkPeering(SubResource): + """Peerings in a virtual network resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar allow_virtual_network_access: Whether the VMs in the local virtual network space would be + able to access the VMs in remote virtual network space. + :vartype allow_virtual_network_access: bool + :ivar allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the local virtual + network will be allowed/disallowed in remote virtual network. + :vartype allow_forwarded_traffic: bool + :ivar allow_gateway_transit: If gateway links can be used in remote virtual networking to link + to this virtual network. + :vartype allow_gateway_transit: bool + :ivar use_remote_gateways: If remote gateways can be used on this virtual network. If the flag + is set to true, and allowGatewayTransit on remote peering is also true, virtual network will + use gateways of remote virtual network for transit. Only one peering can have this flag set to + true. This flag cannot be set if virtual network already has a gateway. + :vartype use_remote_gateways: bool + :ivar remote_virtual_network: The reference to the remote virtual network. The remote virtual + network can be in the same or different region (preview). See here to register for the preview + and learn more + (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering). + :vartype remote_virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar remote_address_space: The reference to the address space peered with the remote virtual + network. + :vartype remote_address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar remote_virtual_network_address_space: The reference to the current address space of the + remote virtual network. + :vartype remote_virtual_network_address_space: + ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar remote_bgp_communities: The reference to the remote virtual network's Bgp Communities. + :vartype remote_bgp_communities: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkBgpCommunities + :ivar remote_virtual_network_encryption: The reference to the remote virtual network's + encryption. + :vartype remote_virtual_network_encryption: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkEncryption + :ivar peering_state: The status of the virtual network peering. Possible values include: + "Initiated", "Connected", "Disconnected". + :vartype peering_state: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeeringState + :ivar peering_sync_level: The peering sync status of the virtual network peering. Possible + values include: "FullyInSync", "RemoteNotInSync", "LocalNotInSync", "LocalAndRemoteNotInSync". + :vartype peering_sync_level: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeeringLevel + :ivar provisioning_state: The provisioning state of the virtual network peering resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar do_not_verify_remote_gateways: If we need to verify the provisioning state of the remote + gateway. + :vartype do_not_verify_remote_gateways: bool + :ivar resource_guid: The resourceGuid property of the Virtual Network peering resource. + :vartype resource_guid: str + """ + + _validation = { + 'etag': {'readonly': True}, + 'remote_virtual_network_encryption': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'resource_guid': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'allow_virtual_network_access': {'key': 'properties.allowVirtualNetworkAccess', 'type': 'bool'}, + 'allow_forwarded_traffic': {'key': 'properties.allowForwardedTraffic', 'type': 'bool'}, + 'allow_gateway_transit': {'key': 'properties.allowGatewayTransit', 'type': 'bool'}, + 'use_remote_gateways': {'key': 'properties.useRemoteGateways', 'type': 'bool'}, + 'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'}, + 'remote_address_space': {'key': 'properties.remoteAddressSpace', 'type': 'AddressSpace'}, + 'remote_virtual_network_address_space': {'key': 'properties.remoteVirtualNetworkAddressSpace', 'type': 'AddressSpace'}, + 'remote_bgp_communities': {'key': 'properties.remoteBgpCommunities', 'type': 'VirtualNetworkBgpCommunities'}, + 'remote_virtual_network_encryption': {'key': 'properties.remoteVirtualNetworkEncryption', 'type': 'VirtualNetworkEncryption'}, + 'peering_state': {'key': 'properties.peeringState', 'type': 'str'}, + 'peering_sync_level': {'key': 'properties.peeringSyncLevel', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'do_not_verify_remote_gateways': {'key': 'properties.doNotVerifyRemoteGateways', 'type': 'bool'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + type: Optional[str] = None, + allow_virtual_network_access: Optional[bool] = None, + allow_forwarded_traffic: Optional[bool] = None, + allow_gateway_transit: Optional[bool] = None, + use_remote_gateways: Optional[bool] = None, + remote_virtual_network: Optional["SubResource"] = None, + remote_address_space: Optional["AddressSpace"] = None, + remote_virtual_network_address_space: Optional["AddressSpace"] = None, + remote_bgp_communities: Optional["VirtualNetworkBgpCommunities"] = None, + peering_state: Optional[Union[str, "VirtualNetworkPeeringState"]] = None, + peering_sync_level: Optional[Union[str, "VirtualNetworkPeeringLevel"]] = None, + do_not_verify_remote_gateways: Optional[bool] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type: Resource type. + :paramtype type: str + :keyword allow_virtual_network_access: Whether the VMs in the local virtual network space would + be able to access the VMs in remote virtual network space. + :paramtype allow_virtual_network_access: bool + :keyword allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the local + virtual network will be allowed/disallowed in remote virtual network. + :paramtype allow_forwarded_traffic: bool + :keyword allow_gateway_transit: If gateway links can be used in remote virtual networking to + link to this virtual network. + :paramtype allow_gateway_transit: bool + :keyword use_remote_gateways: If remote gateways can be used on this virtual network. If the + flag is set to true, and allowGatewayTransit on remote peering is also true, virtual network + will use gateways of remote virtual network for transit. Only one peering can have this flag + set to true. This flag cannot be set if virtual network already has a gateway. + :paramtype use_remote_gateways: bool + :keyword remote_virtual_network: The reference to the remote virtual network. The remote + virtual network can be in the same or different region (preview). See here to register for the + preview and learn more + (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering). + :paramtype remote_virtual_network: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword remote_address_space: The reference to the address space peered with the remote + virtual network. + :paramtype remote_address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword remote_virtual_network_address_space: The reference to the current address space of + the remote virtual network. + :paramtype remote_virtual_network_address_space: + ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword remote_bgp_communities: The reference to the remote virtual network's Bgp Communities. + :paramtype remote_bgp_communities: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkBgpCommunities + :keyword peering_state: The status of the virtual network peering. Possible values include: + "Initiated", "Connected", "Disconnected". + :paramtype peering_state: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeeringState + :keyword peering_sync_level: The peering sync status of the virtual network peering. Possible + values include: "FullyInSync", "RemoteNotInSync", "LocalNotInSync", "LocalAndRemoteNotInSync". + :paramtype peering_sync_level: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeeringLevel + :keyword do_not_verify_remote_gateways: If we need to verify the provisioning state of the + remote gateway. + :paramtype do_not_verify_remote_gateways: bool + """ + super(VirtualNetworkPeering, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = type + self.allow_virtual_network_access = allow_virtual_network_access + self.allow_forwarded_traffic = allow_forwarded_traffic + self.allow_gateway_transit = allow_gateway_transit + self.use_remote_gateways = use_remote_gateways + self.remote_virtual_network = remote_virtual_network + self.remote_address_space = remote_address_space + self.remote_virtual_network_address_space = remote_virtual_network_address_space + self.remote_bgp_communities = remote_bgp_communities + self.remote_virtual_network_encryption = None + self.peering_state = peering_state + self.peering_sync_level = peering_sync_level + self.provisioning_state = None + self.do_not_verify_remote_gateways = do_not_verify_remote_gateways + self.resource_guid = None + + +class VirtualNetworkPeeringListResult(msrest.serialization.Model): + """Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network. + + :ivar value: The peerings in a virtual network. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetworkPeering]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualNetworkPeering"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: The peerings in a virtual network. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(VirtualNetworkPeeringListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class VirtualNetworkTap(Resource): + """Virtual Network Tap resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar network_interface_tap_configurations: Specifies the list of resource IDs for the network + interface IP configuration that needs to be tapped. + :vartype network_interface_tap_configurations: + list[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration] + :ivar resource_guid: The resource GUID property of the virtual network tap resource. + :vartype resource_guid: str + :ivar provisioning_state: The provisioning state of the virtual network tap resource. Possible + values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar destination_network_interface_ip_configuration: The reference to the private IP Address + of the collector nic that will receive the tap. + :vartype destination_network_interface_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :ivar destination_load_balancer_front_end_ip_configuration: The reference to the private IP + address on the internal Load Balancer that will receive the tap. + :vartype destination_load_balancer_front_end_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration + :ivar destination_port: The VXLAN destination port that will receive the tapped traffic. + :vartype destination_port: int + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'network_interface_tap_configurations': {'readonly': True}, + 'resource_guid': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'network_interface_tap_configurations': {'key': 'properties.networkInterfaceTapConfigurations', 'type': '[NetworkInterfaceTapConfiguration]'}, + 'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'destination_network_interface_ip_configuration': {'key': 'properties.destinationNetworkInterfaceIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'}, + 'destination_load_balancer_front_end_ip_configuration': {'key': 'properties.destinationLoadBalancerFrontEndIPConfiguration', 'type': 'FrontendIPConfiguration'}, + 'destination_port': {'key': 'properties.destinationPort', 'type': 'int'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + destination_network_interface_ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None, + destination_load_balancer_front_end_ip_configuration: Optional["FrontendIPConfiguration"] = None, + destination_port: Optional[int] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword destination_network_interface_ip_configuration: The reference to the private IP + Address of the collector nic that will receive the tap. + :paramtype destination_network_interface_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :keyword destination_load_balancer_front_end_ip_configuration: The reference to the private IP + address on the internal Load Balancer that will receive the tap. + :paramtype destination_load_balancer_front_end_ip_configuration: + ~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration + :keyword destination_port: The VXLAN destination port that will receive the tapped traffic. + :paramtype destination_port: int + """ + super(VirtualNetworkTap, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.network_interface_tap_configurations = None + self.resource_guid = None + self.provisioning_state = None + self.destination_network_interface_ip_configuration = destination_network_interface_ip_configuration + self.destination_load_balancer_front_end_ip_configuration = destination_load_balancer_front_end_ip_configuration + self.destination_port = destination_port + + +class VirtualNetworkTapListResult(msrest.serialization.Model): + """Response for ListVirtualNetworkTap API service call. + + :ivar value: A list of VirtualNetworkTaps in a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap] + :ivar next_link: The URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualNetworkTap]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualNetworkTap"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: A list of VirtualNetworkTaps in a resource group. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap] + :keyword next_link: The URL to get the next set of results. + :paramtype next_link: str + """ + super(VirtualNetworkTapListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class VirtualNetworkUsage(msrest.serialization.Model): + """Usage details for subnet. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar current_value: Indicates number of IPs used from the Subnet. + :vartype current_value: float + :ivar id: Subnet identifier. + :vartype id: str + :ivar limit: Indicates the size of the subnet. + :vartype limit: float + :ivar name: The name containing common and localized value for usage. + :vartype name: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkUsageName + :ivar unit: Usage units. Returns 'Count'. + :vartype unit: str + """ + + _validation = { + 'current_value': {'readonly': True}, + 'id': {'readonly': True}, + 'limit': {'readonly': True}, + 'name': {'readonly': True}, + 'unit': {'readonly': True}, + } + + _attribute_map = { + 'current_value': {'key': 'currentValue', 'type': 'float'}, + 'id': {'key': 'id', 'type': 'str'}, + 'limit': {'key': 'limit', 'type': 'float'}, + 'name': {'key': 'name', 'type': 'VirtualNetworkUsageName'}, + 'unit': {'key': 'unit', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(VirtualNetworkUsage, self).__init__(**kwargs) + self.current_value = None + self.id = None + self.limit = None + self.name = None + self.unit = None + + +class VirtualNetworkUsageName(msrest.serialization.Model): + """Usage strings container. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar localized_value: Localized subnet size and usage string. + :vartype localized_value: str + :ivar value: Subnet size and usage string. + :vartype value: str + """ + + _validation = { + 'localized_value': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'localized_value': {'key': 'localizedValue', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + """ + """ + super(VirtualNetworkUsageName, self).__init__(**kwargs) + self.localized_value = None + self.value = None + + +class VirtualRouter(Resource): + """VirtualRouter Resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar virtual_router_asn: VirtualRouter ASN. + :vartype virtual_router_asn: long + :ivar virtual_router_ips: VirtualRouter IPs. + :vartype virtual_router_ips: list[str] + :ivar hosted_subnet: The Subnet on which VirtualRouter is hosted. + :vartype hosted_subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar hosted_gateway: The Gateway on which VirtualRouter is hosted. + :vartype hosted_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar peerings: List of references to VirtualRouterPeerings. + :vartype peerings: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'virtual_router_asn': {'maximum': 4294967295, 'minimum': 0}, + 'peerings': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'virtual_router_asn': {'key': 'properties.virtualRouterAsn', 'type': 'long'}, + 'virtual_router_ips': {'key': 'properties.virtualRouterIps', 'type': '[str]'}, + 'hosted_subnet': {'key': 'properties.hostedSubnet', 'type': 'SubResource'}, + 'hosted_gateway': {'key': 'properties.hostedGateway', 'type': 'SubResource'}, + 'peerings': {'key': 'properties.peerings', 'type': '[SubResource]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + virtual_router_asn: Optional[int] = None, + virtual_router_ips: Optional[List[str]] = None, + hosted_subnet: Optional["SubResource"] = None, + hosted_gateway: Optional["SubResource"] = None, + **kwargs + ): + """ + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword virtual_router_asn: VirtualRouter ASN. + :paramtype virtual_router_asn: long + :keyword virtual_router_ips: VirtualRouter IPs. + :paramtype virtual_router_ips: list[str] + :keyword hosted_subnet: The Subnet on which VirtualRouter is hosted. + :paramtype hosted_subnet: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword hosted_gateway: The Gateway on which VirtualRouter is hosted. + :paramtype hosted_gateway: ~azure.mgmt.network.v2022_01_01.models.SubResource + """ + super(VirtualRouter, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.virtual_router_asn = virtual_router_asn + self.virtual_router_ips = virtual_router_ips + self.hosted_subnet = hosted_subnet + self.hosted_gateway = hosted_gateway + self.peerings = None + self.provisioning_state = None + + +class VirtualRouterAutoScaleConfiguration(msrest.serialization.Model): + """The VirtualHub Router autoscale configuration. + + :ivar min_capacity: The minimum number of scale units for VirtualHub Router. + :vartype min_capacity: int + """ + + _validation = { + 'min_capacity': {'minimum': 0}, + } + + _attribute_map = { + 'min_capacity': {'key': 'minCapacity', 'type': 'int'}, + } + + def __init__( + self, + *, + min_capacity: Optional[int] = None, + **kwargs + ): + """ + :keyword min_capacity: The minimum number of scale units for VirtualHub Router. + :paramtype min_capacity: int + """ + super(VirtualRouterAutoScaleConfiguration, self).__init__(**kwargs) + self.min_capacity = min_capacity + + +class VirtualRouterListResult(msrest.serialization.Model): + """Response for ListVirtualRouters API service call. + + :ivar value: List of Virtual Routers. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualRouter] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualRouter]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualRouter"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of Virtual Routers. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualRouter] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(VirtualRouterListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class VirtualRouterPeering(SubResource): + """Virtual Router Peering resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Name of the virtual router peering that is unique within a virtual router. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Peering type. + :vartype type: str + :ivar peer_asn: Peer ASN. + :vartype peer_asn: long + :ivar peer_ip: Peer IP. + :vartype peer_ip: str + :ivar provisioning_state: The provisioning state of the resource. Possible values include: + "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + """ + + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'peer_asn': {'maximum': 4294967295, 'minimum': 0}, + 'provisioning_state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'peer_asn': {'key': 'properties.peerAsn', 'type': 'long'}, + 'peer_ip': {'key': 'properties.peerIp', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + peer_asn: Optional[int] = None, + peer_ip: Optional[str] = None, + **kwargs + ): """ - super(EffectiveDefaultSecurityAdminRule, self).__init__(id=id, configuration_description=configuration_description, rule_collection_description=rule_collection_description, rule_collection_applies_to_groups=rule_collection_applies_to_groups, rule_groups=rule_groups, **kwargs) - self.kind = 'Default' # type: str - self.description = None - self.flag = flag - self.protocol = None - self.sources = None - self.destinations = None - self.source_port_ranges = None - self.destination_port_ranges = None - self.access = None - self.priority = None - self.direction = None + :keyword id: Resource ID. + :paramtype id: str + :keyword name: Name of the virtual router peering that is unique within a virtual router. + :paramtype name: str + :keyword peer_asn: Peer ASN. + :paramtype peer_asn: long + :keyword peer_ip: Peer IP. + :paramtype peer_ip: str + """ + super(VirtualRouterPeering, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.peer_asn = peer_asn + self.peer_ip = peer_ip self.provisioning_state = None -class EffectiveSecurityAdminRule(EffectiveBaseSecurityAdminRule): - """Network admin rule. +class VirtualRouterPeeringListResult(msrest.serialization.Model): + """Response for ListVirtualRouterPeerings API service call. - Variables are only populated by the server, and will be ignored when sending a request. + :ivar value: List of VirtualRouterPeerings in a VirtualRouter. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering] + :ivar next_link: URL to get the next set of results. + :vartype next_link: str + """ - All required parameters must be populated in order to send to Azure. + _attribute_map = { + 'value': {'key': 'value', 'type': '[VirtualRouterPeering]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["VirtualRouterPeering"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + """ + :keyword value: List of VirtualRouterPeerings in a VirtualRouter. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering] + :keyword next_link: URL to get the next set of results. + :paramtype next_link: str + """ + super(VirtualRouterPeeringListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class VirtualWAN(Resource): + """VirtualWAN Resource. + + Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Resource ID. :vartype id: str - :ivar configuration_description: A description of the security admin configuration. - :vartype configuration_description: str - :ivar rule_collection_description: A description of the rule collection. - :vartype rule_collection_description: str - :ivar rule_collection_applies_to_groups: Groups for rule collection. - :vartype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :ivar rule_groups: Effective configuration groups. - :vartype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveAdminRuleKind - :ivar description: A description for this rule. Restricted to 140 chars. - :vartype description: str - :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", - "Icmp", "Esp", "Any", "Ah". - :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar source_port_ranges: The source port ranges. - :vartype source_port_ranges: list[str] - :ivar destination_port_ranges: The destination port ranges. - :vartype destination_port_ranges: list[str] - :ivar access: Indicates the access allowed for this particular rule. Possible values include: - "Allow", "Deny", "AlwaysAllow". - :vartype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess - :ivar priority: The priority of the rule. The value can be between 1 and 4096. The priority - number must be unique for each rule in the collection. The lower the priority number, the - higher the priority of the rule. - :vartype priority: int - :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - :ivar provisioning_state: The provisioning state of the resource. Possible values include: - "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar disable_vpn_encryption: Vpn encryption to be disabled or not. + :vartype disable_vpn_encryption: bool + :ivar virtual_hubs: List of VirtualHubs in the VirtualWAN. + :vartype virtual_hubs: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar vpn_sites: List of VpnSites in the VirtualWAN. + :vartype vpn_sites: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar allow_branch_to_branch_traffic: True if branch to branch traffic is allowed. + :vartype allow_branch_to_branch_traffic: bool + :ivar allow_vnet_to_vnet_traffic: True if Vnet to Vnet traffic is allowed. + :vartype allow_vnet_to_vnet_traffic: bool + :ivar office365_local_breakout_category: The office local breakout category. Possible values + include: "Optimize", "OptimizeAndAllow", "All", "None". + :vartype office365_local_breakout_category: str or + ~azure.mgmt.network.v2022_01_01.models.OfficeTrafficCategory + :ivar provisioning_state: The provisioning state of the virtual WAN resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar type_properties_type: The type of the VirtualWAN. + :vartype type_properties_type: str """ _validation = { - 'kind': {'required': True}, - 'priority': {'maximum': 4096, 'minimum': 1}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'virtual_hubs': {'readonly': True}, + 'vpn_sites': {'readonly': True}, + 'office365_local_breakout_category': {'readonly': True}, 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, - 'configuration_description': {'key': 'configurationDescription', 'type': 'str'}, - 'rule_collection_description': {'key': 'ruleCollectionDescription', 'type': 'str'}, - 'rule_collection_applies_to_groups': {'key': 'ruleCollectionAppliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, - 'rule_groups': {'key': 'ruleGroups', 'type': '[ConfigurationGroup]'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'protocol': {'key': 'properties.protocol', 'type': 'str'}, - 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, - 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, - 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, - 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, - 'access': {'key': 'properties.access', 'type': 'str'}, - 'priority': {'key': 'properties.priority', 'type': 'int'}, - 'direction': {'key': 'properties.direction', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'disable_vpn_encryption': {'key': 'properties.disableVpnEncryption', 'type': 'bool'}, + 'virtual_hubs': {'key': 'properties.virtualHubs', 'type': '[SubResource]'}, + 'vpn_sites': {'key': 'properties.vpnSites', 'type': '[SubResource]'}, + 'allow_branch_to_branch_traffic': {'key': 'properties.allowBranchToBranchTraffic', 'type': 'bool'}, + 'allow_vnet_to_vnet_traffic': {'key': 'properties.allowVnetToVnetTraffic', 'type': 'bool'}, + 'office365_local_breakout_category': {'key': 'properties.office365LocalBreakoutCategory', 'type': 'str'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'type_properties_type': {'key': 'properties.type', 'type': 'str'}, } def __init__( self, *, id: Optional[str] = None, - configuration_description: Optional[str] = None, - rule_collection_description: Optional[str] = None, - rule_collection_applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, - rule_groups: Optional[List["ConfigurationGroup"]] = None, - description: Optional[str] = None, - protocol: Optional[Union[str, "SecurityConfigurationRuleProtocol"]] = None, - sources: Optional[List["AddressPrefixItem"]] = None, - destinations: Optional[List["AddressPrefixItem"]] = None, - source_port_ranges: Optional[List[str]] = None, - destination_port_ranges: Optional[List[str]] = None, - access: Optional[Union[str, "SecurityConfigurationRuleAccess"]] = None, - priority: Optional[int] = None, - direction: Optional[Union[str, "SecurityConfigurationRuleDirection"]] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + disable_vpn_encryption: Optional[bool] = None, + allow_branch_to_branch_traffic: Optional[bool] = None, + allow_vnet_to_vnet_traffic: Optional[bool] = None, + type_properties_type: Optional[str] = None, **kwargs ): """ :keyword id: Resource ID. :paramtype id: str - :keyword configuration_description: A description of the security admin configuration. - :paramtype configuration_description: str - :keyword rule_collection_description: A description of the rule collection. - :paramtype rule_collection_description: str - :keyword rule_collection_applies_to_groups: Groups for rule collection. - :paramtype rule_collection_applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :keyword rule_groups: Effective configuration groups. - :paramtype rule_groups: list[~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationGroup] - :keyword description: A description for this rule. Restricted to 140 chars. - :paramtype description: str - :keyword protocol: Network protocol this rule applies to. Possible values include: "Tcp", - "Udp", "Icmp", "Esp", "Any", "Ah". - :paramtype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :keyword sources: The CIDR or source IP ranges. - :paramtype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :keyword destinations: The destination address prefixes. CIDR or destination IP ranges. - :paramtype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :keyword source_port_ranges: The source port ranges. - :paramtype source_port_ranges: list[str] - :keyword destination_port_ranges: The destination port ranges. - :paramtype destination_port_ranges: list[str] - :keyword access: Indicates the access allowed for this particular rule. Possible values - include: "Allow", "Deny", "AlwaysAllow". - :paramtype access: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleAccess - :keyword priority: The priority of the rule. The value can be between 1 and 4096. The priority - number must be unique for each rule in the collection. The lower the priority number, the - higher the priority of the rule. - :paramtype priority: int - :keyword direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :paramtype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword disable_vpn_encryption: Vpn encryption to be disabled or not. + :paramtype disable_vpn_encryption: bool + :keyword allow_branch_to_branch_traffic: True if branch to branch traffic is allowed. + :paramtype allow_branch_to_branch_traffic: bool + :keyword allow_vnet_to_vnet_traffic: True if Vnet to Vnet traffic is allowed. + :paramtype allow_vnet_to_vnet_traffic: bool + :keyword type_properties_type: The type of the VirtualWAN. + :paramtype type_properties_type: str """ - super(EffectiveSecurityAdminRule, self).__init__(id=id, configuration_description=configuration_description, rule_collection_description=rule_collection_description, rule_collection_applies_to_groups=rule_collection_applies_to_groups, rule_groups=rule_groups, **kwargs) - self.kind = 'Custom' # type: str - self.description = description - self.protocol = protocol - self.sources = sources - self.destinations = destinations - self.source_port_ranges = source_port_ranges - self.destination_port_ranges = destination_port_ranges - self.access = access - self.priority = priority - self.direction = direction + super(VirtualWAN, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.disable_vpn_encryption = disable_vpn_encryption + self.virtual_hubs = None + self.vpn_sites = None + self.allow_branch_to_branch_traffic = allow_branch_to_branch_traffic + self.allow_vnet_to_vnet_traffic = allow_vnet_to_vnet_traffic + self.office365_local_breakout_category = None self.provisioning_state = None + self.type_properties_type = type_properties_type + + +class VirtualWanSecurityProvider(msrest.serialization.Model): + """Collection of SecurityProviders. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar name: Name of the security provider. + :vartype name: str + :ivar url: Url of the security provider. + :vartype url: str + :ivar type: Name of the security provider. Possible values include: "External", "Native". + :vartype type: str or ~azure.mgmt.network.v2022_01_01.models.VirtualWanSecurityProviderType + """ + + _validation = { + 'type': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + url: Optional[str] = None, + **kwargs + ): + """ + :keyword name: Name of the security provider. + :paramtype name: str + :keyword url: Url of the security provider. + :paramtype url: str + """ + super(VirtualWanSecurityProvider, self).__init__(**kwargs) + self.name = name + self.url = url + self.type = None + + +class VirtualWanSecurityProviders(msrest.serialization.Model): + """Collection of SecurityProviders. + + :ivar supported_providers: List of VirtualWAN security providers. + :vartype supported_providers: + list[~azure.mgmt.network.v2022_01_01.models.VirtualWanSecurityProvider] + """ + + _attribute_map = { + 'supported_providers': {'key': 'supportedProviders', 'type': '[VirtualWanSecurityProvider]'}, + } + + def __init__( + self, + *, + supported_providers: Optional[List["VirtualWanSecurityProvider"]] = None, + **kwargs + ): + """ + :keyword supported_providers: List of VirtualWAN security providers. + :paramtype supported_providers: + list[~azure.mgmt.network.v2022_01_01.models.VirtualWanSecurityProvider] + """ + super(VirtualWanSecurityProviders, self).__init__(**kwargs) + self.supported_providers = supported_providers + +class VirtualWanVpnProfileParameters(msrest.serialization.Model): + """Virtual Wan Vpn profile parameters Vpn profile generation. -class EffectiveVirtualNetwork(msrest.serialization.Model): - """Effective Virtual Network. + :ivar vpn_server_configuration_resource_id: VpnServerConfiguration partial resource uri with + which VirtualWan is associated to. + :vartype vpn_server_configuration_resource_id: str + :ivar authentication_method: VPN client authentication method. Possible values include: + "EAPTLS", "EAPMSCHAPv2". + :vartype authentication_method: str or + ~azure.mgmt.network.v2022_01_01.models.AuthenticationMethod + """ + + _attribute_map = { + 'vpn_server_configuration_resource_id': {'key': 'vpnServerConfigurationResourceId', 'type': 'str'}, + 'authentication_method': {'key': 'authenticationMethod', 'type': 'str'}, + } + + def __init__( + self, + *, + vpn_server_configuration_resource_id: Optional[str] = None, + authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None, + **kwargs + ): + """ + :keyword vpn_server_configuration_resource_id: VpnServerConfiguration partial resource uri with + which VirtualWan is associated to. + :paramtype vpn_server_configuration_resource_id: str + :keyword authentication_method: VPN client authentication method. Possible values include: + "EAPTLS", "EAPMSCHAPv2". + :paramtype authentication_method: str or + ~azure.mgmt.network.v2022_01_01.models.AuthenticationMethod + """ + super(VirtualWanVpnProfileParameters, self).__init__(**kwargs) + self.vpn_server_configuration_resource_id = vpn_server_configuration_resource_id + self.authentication_method = authentication_method + + +class VM(Resource): + """Describes a Virtual Machine. + + Variables are only populated by the server, and will be ignored when sending a request. - :ivar id: Effective vnet Id. + :ivar id: Resource ID. :vartype id: str - :ivar location: Location of vnet. + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar location: Resource location. :vartype location: str - :ivar membership_type: Membership Type. Possible values include: "Static", "Dynamic". - :vartype membership_type: str or ~azure.mgmt.network.v2022_02_01_preview.models.MembershipType + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] """ + _validation = { + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, 'location': {'key': 'location', 'type': 'str'}, - 'membership_type': {'key': 'membershipType', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, } def __init__( @@ -2562,607 +35071,909 @@ def __init__( *, id: Optional[str] = None, location: Optional[str] = None, - membership_type: Optional[Union[str, "MembershipType"]] = None, + tags: Optional[Dict[str, str]] = None, **kwargs ): """ - :keyword id: Effective vnet Id. + :keyword id: Resource ID. :paramtype id: str - :keyword location: Location of vnet. + :keyword location: Resource location. :paramtype location: str - :keyword membership_type: Membership Type. Possible values include: "Static", "Dynamic". - :paramtype membership_type: str or - ~azure.mgmt.network.v2022_02_01_preview.models.MembershipType + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] """ - super(EffectiveVirtualNetwork, self).__init__(**kwargs) - self.id = id - self.location = location - self.membership_type = membership_type + super(VM, self).__init__(id=id, location=location, tags=tags, **kwargs) -class EffectiveVirtualNetworksListResult(msrest.serialization.Model): - """Result of the request to list Effective Virtual Network. It contains a list of groups and a URL link to get the next set of results. +class VnetRoute(msrest.serialization.Model): + """List of routes that control routing from VirtualHub into a virtual network connection. - :ivar value: Gets a page of EffectiveVirtualNetwork. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetwork] - :ivar skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :vartype skip_token: str + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar static_routes: List of all Static Routes. + :vartype static_routes: list[~azure.mgmt.network.v2022_01_01.models.StaticRoute] + :ivar bgp_connections: The list of references to HubBgpConnection objects. + :vartype bgp_connections: list[~azure.mgmt.network.v2022_01_01.models.SubResource] """ + _validation = { + 'bgp_connections': {'readonly': True}, + } + _attribute_map = { - 'value': {'key': 'value', 'type': '[EffectiveVirtualNetwork]'}, - 'skip_token': {'key': 'skipToken', 'type': 'str'}, + 'static_routes': {'key': 'staticRoutes', 'type': '[StaticRoute]'}, + 'bgp_connections': {'key': 'bgpConnections', 'type': '[SubResource]'}, } def __init__( self, *, - value: Optional[List["EffectiveVirtualNetwork"]] = None, - skip_token: Optional[str] = None, + static_routes: Optional[List["StaticRoute"]] = None, **kwargs ): """ - :keyword value: Gets a page of EffectiveVirtualNetwork. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetwork] - :keyword skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :paramtype skip_token: str + :keyword static_routes: List of all Static Routes. + :paramtype static_routes: list[~azure.mgmt.network.v2022_01_01.models.StaticRoute] """ - super(EffectiveVirtualNetworksListResult, self).__init__(**kwargs) - self.value = value - self.skip_token = skip_token - - -class EffectiveVirtualNetworksParameter(msrest.serialization.Model): - """Effective Virtual Networks Parameter. - - :ivar conditional_members: Conditional Members. - :vartype conditional_members: str - :ivar skip_token: Continuation token for pagination, capturing the next page size and offset, - as well as the context of the query. - :vartype skip_token: str + super(VnetRoute, self).__init__(**kwargs) + self.static_routes = static_routes + self.bgp_connections = None + + +class VpnClientConfiguration(msrest.serialization.Model): + """VpnClientConfiguration for P2S client. + + :ivar vpn_client_address_pool: The reference to the address space resource which represents + Address space for P2S VpnClient. + :vartype vpn_client_address_pool: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway. + :vartype vpn_client_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnClientRootCertificate] + :ivar vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network gateway. + :vartype vpn_client_revoked_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnClientRevokedCertificate] + :ivar vpn_client_protocols: VpnClientProtocols for Virtual network gateway. + :vartype vpn_client_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnClientProtocol] + :ivar vpn_authentication_types: VPN authentication types for the virtual network gateway.. + :vartype vpn_authentication_types: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnAuthenticationType] + :ivar vpn_client_ipsec_policies: VpnClientIpsecPolicies for virtual network gateway P2S client. + :vartype vpn_client_ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :ivar radius_server_address: The radius server address property of the VirtualNetworkGateway + resource for vpn client connection. + :vartype radius_server_address: str + :ivar radius_server_secret: The radius secret property of the VirtualNetworkGateway resource + for vpn client connection. + :vartype radius_server_secret: str + :ivar radius_servers: The radiusServers property for multiple radius server configuration. + :vartype radius_servers: list[~azure.mgmt.network.v2022_01_01.models.RadiusServer] + :ivar aad_tenant: The AADTenant property of the VirtualNetworkGateway resource for vpn client + connection used for AAD authentication. + :vartype aad_tenant: str + :ivar aad_audience: The AADAudience property of the VirtualNetworkGateway resource for vpn + client connection used for AAD authentication. + :vartype aad_audience: str + :ivar aad_issuer: The AADIssuer property of the VirtualNetworkGateway resource for vpn client + connection used for AAD authentication. + :vartype aad_issuer: str """ _attribute_map = { - 'conditional_members': {'key': 'conditionalMembers', 'type': 'str'}, - 'skip_token': {'key': 'skipToken', 'type': 'str'}, + 'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'}, + 'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'}, + 'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'}, + 'vpn_client_protocols': {'key': 'vpnClientProtocols', 'type': '[str]'}, + 'vpn_authentication_types': {'key': 'vpnAuthenticationTypes', 'type': '[str]'}, + 'vpn_client_ipsec_policies': {'key': 'vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'}, + 'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'}, + 'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'}, + 'radius_servers': {'key': 'radiusServers', 'type': '[RadiusServer]'}, + 'aad_tenant': {'key': 'aadTenant', 'type': 'str'}, + 'aad_audience': {'key': 'aadAudience', 'type': 'str'}, + 'aad_issuer': {'key': 'aadIssuer', 'type': 'str'}, } def __init__( self, *, - conditional_members: Optional[str] = None, - skip_token: Optional[str] = None, + vpn_client_address_pool: Optional["AddressSpace"] = None, + vpn_client_root_certificates: Optional[List["VpnClientRootCertificate"]] = None, + vpn_client_revoked_certificates: Optional[List["VpnClientRevokedCertificate"]] = None, + vpn_client_protocols: Optional[List[Union[str, "VpnClientProtocol"]]] = None, + vpn_authentication_types: Optional[List[Union[str, "VpnAuthenticationType"]]] = None, + vpn_client_ipsec_policies: Optional[List["IpsecPolicy"]] = None, + radius_server_address: Optional[str] = None, + radius_server_secret: Optional[str] = None, + radius_servers: Optional[List["RadiusServer"]] = None, + aad_tenant: Optional[str] = None, + aad_audience: Optional[str] = None, + aad_issuer: Optional[str] = None, **kwargs ): """ - :keyword conditional_members: Conditional Members. - :paramtype conditional_members: str - :keyword skip_token: Continuation token for pagination, capturing the next page size and - offset, as well as the context of the query. - :paramtype skip_token: str + :keyword vpn_client_address_pool: The reference to the address space resource which represents + Address space for P2S VpnClient. + :paramtype vpn_client_address_pool: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway. + :paramtype vpn_client_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnClientRootCertificate] + :keyword vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network + gateway. + :paramtype vpn_client_revoked_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnClientRevokedCertificate] + :keyword vpn_client_protocols: VpnClientProtocols for Virtual network gateway. + :paramtype vpn_client_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnClientProtocol] + :keyword vpn_authentication_types: VPN authentication types for the virtual network gateway.. + :paramtype vpn_authentication_types: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnAuthenticationType] + :keyword vpn_client_ipsec_policies: VpnClientIpsecPolicies for virtual network gateway P2S + client. + :paramtype vpn_client_ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :keyword radius_server_address: The radius server address property of the VirtualNetworkGateway + resource for vpn client connection. + :paramtype radius_server_address: str + :keyword radius_server_secret: The radius secret property of the VirtualNetworkGateway resource + for vpn client connection. + :paramtype radius_server_secret: str + :keyword radius_servers: The radiusServers property for multiple radius server configuration. + :paramtype radius_servers: list[~azure.mgmt.network.v2022_01_01.models.RadiusServer] + :keyword aad_tenant: The AADTenant property of the VirtualNetworkGateway resource for vpn + client connection used for AAD authentication. + :paramtype aad_tenant: str + :keyword aad_audience: The AADAudience property of the VirtualNetworkGateway resource for vpn + client connection used for AAD authentication. + :paramtype aad_audience: str + :keyword aad_issuer: The AADIssuer property of the VirtualNetworkGateway resource for vpn + client connection used for AAD authentication. + :paramtype aad_issuer: str """ - super(EffectiveVirtualNetworksParameter, self).__init__(**kwargs) - self.conditional_members = conditional_members - self.skip_token = skip_token - + super(VpnClientConfiguration, self).__init__(**kwargs) + self.vpn_client_address_pool = vpn_client_address_pool + self.vpn_client_root_certificates = vpn_client_root_certificates + self.vpn_client_revoked_certificates = vpn_client_revoked_certificates + self.vpn_client_protocols = vpn_client_protocols + self.vpn_authentication_types = vpn_authentication_types + self.vpn_client_ipsec_policies = vpn_client_ipsec_policies + self.radius_server_address = radius_server_address + self.radius_server_secret = radius_server_secret + self.radius_servers = radius_servers + self.aad_tenant = aad_tenant + self.aad_audience = aad_audience + self.aad_issuer = aad_issuer + + +class VpnClientConnectionHealth(msrest.serialization.Model): + """VpnClientConnectionHealth properties. -class Error(msrest.serialization.Model): - """Common error representation. + Variables are only populated by the server, and will be ignored when sending a request. - :ivar code: Error code. - :vartype code: str - :ivar message: Error message. - :vartype message: str - :ivar target: Error target. - :vartype target: str - :ivar details: Error details. - :vartype details: list[~azure.mgmt.network.v2022_02_01_preview.models.ErrorDetails] - :ivar inner_error: Inner error message. - :vartype inner_error: str + :ivar total_ingress_bytes_transferred: Total of the Ingress Bytes Transferred in this P2S Vpn + connection. + :vartype total_ingress_bytes_transferred: long + :ivar total_egress_bytes_transferred: Total of the Egress Bytes Transferred in this connection. + :vartype total_egress_bytes_transferred: long + :ivar vpn_client_connections_count: The total of p2s vpn clients connected at this time to this + P2SVpnGateway. + :vartype vpn_client_connections_count: int + :ivar allocated_ip_addresses: List of allocated ip addresses to the connected p2s vpn clients. + :vartype allocated_ip_addresses: list[str] """ + _validation = { + 'total_ingress_bytes_transferred': {'readonly': True}, + 'total_egress_bytes_transferred': {'readonly': True}, + } + _attribute_map = { - 'code': {'key': 'code', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, - 'details': {'key': 'details', 'type': '[ErrorDetails]'}, - 'inner_error': {'key': 'innerError', 'type': 'str'}, + 'total_ingress_bytes_transferred': {'key': 'totalIngressBytesTransferred', 'type': 'long'}, + 'total_egress_bytes_transferred': {'key': 'totalEgressBytesTransferred', 'type': 'long'}, + 'vpn_client_connections_count': {'key': 'vpnClientConnectionsCount', 'type': 'int'}, + 'allocated_ip_addresses': {'key': 'allocatedIpAddresses', 'type': '[str]'}, } def __init__( self, *, - code: Optional[str] = None, - message: Optional[str] = None, - target: Optional[str] = None, - details: Optional[List["ErrorDetails"]] = None, - inner_error: Optional[str] = None, + vpn_client_connections_count: Optional[int] = None, + allocated_ip_addresses: Optional[List[str]] = None, **kwargs ): """ - :keyword code: Error code. - :paramtype code: str - :keyword message: Error message. - :paramtype message: str - :keyword target: Error target. - :paramtype target: str - :keyword details: Error details. - :paramtype details: list[~azure.mgmt.network.v2022_02_01_preview.models.ErrorDetails] - :keyword inner_error: Inner error message. - :paramtype inner_error: str + :keyword vpn_client_connections_count: The total of p2s vpn clients connected at this time to + this P2SVpnGateway. + :paramtype vpn_client_connections_count: int + :keyword allocated_ip_addresses: List of allocated ip addresses to the connected p2s vpn + clients. + :paramtype allocated_ip_addresses: list[str] """ - super(Error, self).__init__(**kwargs) - self.code = code - self.message = message - self.target = target - self.details = details - self.inner_error = inner_error + super(VpnClientConnectionHealth, self).__init__(**kwargs) + self.total_ingress_bytes_transferred = None + self.total_egress_bytes_transferred = None + self.vpn_client_connections_count = vpn_client_connections_count + self.allocated_ip_addresses = allocated_ip_addresses -class ErrorDetails(msrest.serialization.Model): - """Common error details representation. +class VpnClientConnectionHealthDetail(msrest.serialization.Model): + """VPN client connection health detail. - :ivar code: Error code. - :vartype code: str - :ivar target: Error target. - :vartype target: str - :ivar message: Error message. - :vartype message: str + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar vpn_connection_id: The vpn client Id. + :vartype vpn_connection_id: str + :ivar vpn_connection_duration: The duration time of a connected vpn client. + :vartype vpn_connection_duration: long + :ivar vpn_connection_time: The start time of a connected vpn client. + :vartype vpn_connection_time: str + :ivar public_ip_address: The public Ip of a connected vpn client. + :vartype public_ip_address: str + :ivar private_ip_address: The assigned private Ip of a connected vpn client. + :vartype private_ip_address: str + :ivar vpn_user_name: The user name of a connected vpn client. + :vartype vpn_user_name: str + :ivar max_bandwidth: The max band width. + :vartype max_bandwidth: long + :ivar egress_packets_transferred: The egress packets per second. + :vartype egress_packets_transferred: long + :ivar egress_bytes_transferred: The egress bytes per second. + :vartype egress_bytes_transferred: long + :ivar ingress_packets_transferred: The ingress packets per second. + :vartype ingress_packets_transferred: long + :ivar ingress_bytes_transferred: The ingress bytes per second. + :vartype ingress_bytes_transferred: long + :ivar max_packets_per_second: The max packets transferred per second. + :vartype max_packets_per_second: long """ + _validation = { + 'vpn_connection_id': {'readonly': True}, + 'vpn_connection_duration': {'readonly': True}, + 'vpn_connection_time': {'readonly': True}, + 'public_ip_address': {'readonly': True}, + 'private_ip_address': {'readonly': True}, + 'vpn_user_name': {'readonly': True}, + 'max_bandwidth': {'readonly': True}, + 'egress_packets_transferred': {'readonly': True}, + 'egress_bytes_transferred': {'readonly': True}, + 'ingress_packets_transferred': {'readonly': True}, + 'ingress_bytes_transferred': {'readonly': True}, + 'max_packets_per_second': {'readonly': True}, + } + _attribute_map = { - 'code': {'key': 'code', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, + 'vpn_connection_id': {'key': 'vpnConnectionId', 'type': 'str'}, + 'vpn_connection_duration': {'key': 'vpnConnectionDuration', 'type': 'long'}, + 'vpn_connection_time': {'key': 'vpnConnectionTime', 'type': 'str'}, + 'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'}, + 'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'}, + 'vpn_user_name': {'key': 'vpnUserName', 'type': 'str'}, + 'max_bandwidth': {'key': 'maxBandwidth', 'type': 'long'}, + 'egress_packets_transferred': {'key': 'egressPacketsTransferred', 'type': 'long'}, + 'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'}, + 'ingress_packets_transferred': {'key': 'ingressPacketsTransferred', 'type': 'long'}, + 'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'}, + 'max_packets_per_second': {'key': 'maxPacketsPerSecond', 'type': 'long'}, } def __init__( self, - *, - code: Optional[str] = None, - target: Optional[str] = None, - message: Optional[str] = None, **kwargs ): """ - :keyword code: Error code. - :paramtype code: str - :keyword target: Error target. - :paramtype target: str - :keyword message: Error message. - :paramtype message: str """ - super(ErrorDetails, self).__init__(**kwargs) - self.code = code - self.target = target - self.message = message - - -class ExtendedLocation(msrest.serialization.Model): - """ExtendedLocation complex type. - - :ivar name: The name of the extended location. - :vartype name: str - :ivar type: The type of the extended location. Possible values include: "EdgeZone". - :vartype type: str or ~azure.mgmt.network.v2022_02_01_preview.models.ExtendedLocationTypes + super(VpnClientConnectionHealthDetail, self).__init__(**kwargs) + self.vpn_connection_id = None + self.vpn_connection_duration = None + self.vpn_connection_time = None + self.public_ip_address = None + self.private_ip_address = None + self.vpn_user_name = None + self.max_bandwidth = None + self.egress_packets_transferred = None + self.egress_bytes_transferred = None + self.ingress_packets_transferred = None + self.ingress_bytes_transferred = None + self.max_packets_per_second = None + + +class VpnClientConnectionHealthDetailListResult(msrest.serialization.Model): + """List of virtual network gateway vpn client connection health. + + :ivar value: List of vpn client connection health. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.VpnClientConnectionHealthDetail] """ _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[VpnClientConnectionHealthDetail]'}, } def __init__( self, *, - name: Optional[str] = None, - type: Optional[Union[str, "ExtendedLocationTypes"]] = None, + value: Optional[List["VpnClientConnectionHealthDetail"]] = None, **kwargs ): """ - :keyword name: The name of the extended location. - :paramtype name: str - :keyword type: The type of the extended location. Possible values include: "EdgeZone". - :paramtype type: str or ~azure.mgmt.network.v2022_02_01_preview.models.ExtendedLocationTypes + :keyword value: List of vpn client connection health. + :paramtype value: list[~azure.mgmt.network.v2022_01_01.models.VpnClientConnectionHealthDetail] """ - super(ExtendedLocation, self).__init__(**kwargs) - self.name = name - self.type = type + super(VpnClientConnectionHealthDetailListResult, self).__init__(**kwargs) + self.value = value -class Hub(msrest.serialization.Model): - """Hub Item. +class VpnClientIPsecParameters(msrest.serialization.Model): + """An IPSec parameters for a virtual network gateway P2S connection. - :ivar resource_id: Resource Id. - :vartype resource_id: str - :ivar resource_type: Resource Type. - :vartype resource_type: str + All required parameters must be populated in order to send to Azure. + + :ivar sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode or + Phase 2 SA) lifetime in seconds for P2S client. + :vartype sa_life_time_seconds: int + :ivar sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode + or Phase 2 SA) payload size in KB for P2S client.. + :vartype sa_data_size_kilobytes: int + :ivar ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible values + include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192", + "GCMAES256". + :vartype ipsec_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IpsecEncryption + :ivar ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values + include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256". + :vartype ipsec_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IpsecIntegrity + :ivar ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values + include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128". + :vartype ike_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IkeEncryption + :ivar ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values + include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128". + :vartype ike_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IkeIntegrity + :ivar dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values + include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384", + "DHGroup24". + :vartype dh_group: str or ~azure.mgmt.network.v2022_01_01.models.DhGroup + :ivar pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible values + include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", "PFSMM". + :vartype pfs_group: str or ~azure.mgmt.network.v2022_01_01.models.PfsGroup """ + _validation = { + 'sa_life_time_seconds': {'required': True}, + 'sa_data_size_kilobytes': {'required': True}, + 'ipsec_encryption': {'required': True}, + 'ipsec_integrity': {'required': True}, + 'ike_encryption': {'required': True}, + 'ike_integrity': {'required': True}, + 'dh_group': {'required': True}, + 'pfs_group': {'required': True}, + } + _attribute_map = { - 'resource_id': {'key': 'resourceId', 'type': 'str'}, - 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'}, + 'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'}, + 'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'}, + 'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'}, + 'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'}, + 'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'}, + 'dh_group': {'key': 'dhGroup', 'type': 'str'}, + 'pfs_group': {'key': 'pfsGroup', 'type': 'str'}, } def __init__( self, *, - resource_id: Optional[str] = None, - resource_type: Optional[str] = None, + sa_life_time_seconds: int, + sa_data_size_kilobytes: int, + ipsec_encryption: Union[str, "IpsecEncryption"], + ipsec_integrity: Union[str, "IpsecIntegrity"], + ike_encryption: Union[str, "IkeEncryption"], + ike_integrity: Union[str, "IkeIntegrity"], + dh_group: Union[str, "DhGroup"], + pfs_group: Union[str, "PfsGroup"], **kwargs ): """ - :keyword resource_id: Resource Id. - :paramtype resource_id: str - :keyword resource_type: Resource Type. - :paramtype resource_type: str + :keyword sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode + or Phase 2 SA) lifetime in seconds for P2S client. + :paramtype sa_life_time_seconds: int + :keyword sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick + Mode or Phase 2 SA) payload size in KB for P2S client.. + :paramtype sa_data_size_kilobytes: int + :keyword ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible + values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192", + "GCMAES256". + :paramtype ipsec_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IpsecEncryption + :keyword ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible + values include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256". + :paramtype ipsec_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IpsecIntegrity + :keyword ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values + include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128". + :paramtype ike_encryption: str or ~azure.mgmt.network.v2022_01_01.models.IkeEncryption + :keyword ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values + include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128". + :paramtype ike_integrity: str or ~azure.mgmt.network.v2022_01_01.models.IkeIntegrity + :keyword dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values + include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384", + "DHGroup24". + :paramtype dh_group: str or ~azure.mgmt.network.v2022_01_01.models.DhGroup + :keyword pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible + values include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", + "PFSMM". + :paramtype pfs_group: str or ~azure.mgmt.network.v2022_01_01.models.PfsGroup """ - super(Hub, self).__init__(**kwargs) - self.resource_id = resource_id - self.resource_type = resource_type - - -class ManagedServiceIdentity(msrest.serialization.Model): - """Identity for the resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar principal_id: The principal id of the system assigned identity. This property will only - be provided for a system assigned identity. - :vartype principal_id: str - :ivar tenant_id: The tenant id of the system assigned identity. This property will only be - provided for a system assigned identity. - :vartype tenant_id: str - :ivar type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' - includes both an implicitly created identity and a set of user assigned identities. The type - 'None' will remove any identities from the virtual machine. Possible values include: - "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned", "None". - :vartype type: str or ~azure.mgmt.network.v2022_02_01_preview.models.ResourceIdentityType - :ivar user_assigned_identities: The list of user identities associated with resource. The user - identity dictionary key references will be ARM resource ids in the form: - '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. - :vartype user_assigned_identities: dict[str, - ~azure.mgmt.network.v2022_02_01_preview.models.Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties] + super(VpnClientIPsecParameters, self).__init__(**kwargs) + self.sa_life_time_seconds = sa_life_time_seconds + self.sa_data_size_kilobytes = sa_data_size_kilobytes + self.ipsec_encryption = ipsec_encryption + self.ipsec_integrity = ipsec_integrity + self.ike_encryption = ike_encryption + self.ike_integrity = ike_integrity + self.dh_group = dh_group + self.pfs_group = pfs_group + + +class VpnClientParameters(msrest.serialization.Model): + """Vpn Client Parameters for package generation. + + :ivar processor_architecture: VPN client Processor Architecture. Possible values include: + "Amd64", "X86". + :vartype processor_architecture: str or + ~azure.mgmt.network.v2022_01_01.models.ProcessorArchitecture + :ivar authentication_method: VPN client authentication method. Possible values include: + "EAPTLS", "EAPMSCHAPv2". + :vartype authentication_method: str or + ~azure.mgmt.network.v2022_01_01.models.AuthenticationMethod + :ivar radius_server_auth_certificate: The public certificate data for the radius server + authentication certificate as a Base-64 encoded string. Required only if external radius + authentication has been configured with EAPTLS authentication. + :vartype radius_server_auth_certificate: str + :ivar client_root_certificates: A list of client root certificates public certificate data + encoded as Base-64 strings. Optional parameter for external radius based authentication with + EAPTLS. + :vartype client_root_certificates: list[str] """ - _validation = { - 'principal_id': {'readonly': True}, - 'tenant_id': {'readonly': True}, - } - _attribute_map = { - 'principal_id': {'key': 'principalId', 'type': 'str'}, - 'tenant_id': {'key': 'tenantId', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties}'}, + 'processor_architecture': {'key': 'processorArchitecture', 'type': 'str'}, + 'authentication_method': {'key': 'authenticationMethod', 'type': 'str'}, + 'radius_server_auth_certificate': {'key': 'radiusServerAuthCertificate', 'type': 'str'}, + 'client_root_certificates': {'key': 'clientRootCertificates', 'type': '[str]'}, } def __init__( self, *, - type: Optional[Union[str, "ResourceIdentityType"]] = None, - user_assigned_identities: Optional[Dict[str, "Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None, + processor_architecture: Optional[Union[str, "ProcessorArchitecture"]] = None, + authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None, + radius_server_auth_certificate: Optional[str] = None, + client_root_certificates: Optional[List[str]] = None, **kwargs ): """ - :keyword type: The type of identity used for the resource. The type 'SystemAssigned, - UserAssigned' includes both an implicitly created identity and a set of user assigned - identities. The type 'None' will remove any identities from the virtual machine. Possible - values include: "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned", "None". - :paramtype type: str or ~azure.mgmt.network.v2022_02_01_preview.models.ResourceIdentityType - :keyword user_assigned_identities: The list of user identities associated with resource. The - user identity dictionary key references will be ARM resource ids in the form: - '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. - :paramtype user_assigned_identities: dict[str, - ~azure.mgmt.network.v2022_02_01_preview.models.Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties] + :keyword processor_architecture: VPN client Processor Architecture. Possible values include: + "Amd64", "X86". + :paramtype processor_architecture: str or + ~azure.mgmt.network.v2022_01_01.models.ProcessorArchitecture + :keyword authentication_method: VPN client authentication method. Possible values include: + "EAPTLS", "EAPMSCHAPv2". + :paramtype authentication_method: str or + ~azure.mgmt.network.v2022_01_01.models.AuthenticationMethod + :keyword radius_server_auth_certificate: The public certificate data for the radius server + authentication certificate as a Base-64 encoded string. Required only if external radius + authentication has been configured with EAPTLS authentication. + :paramtype radius_server_auth_certificate: str + :keyword client_root_certificates: A list of client root certificates public certificate data + encoded as Base-64 strings. Optional parameter for external radius based authentication with + EAPTLS. + :paramtype client_root_certificates: list[str] """ - super(ManagedServiceIdentity, self).__init__(**kwargs) - self.principal_id = None - self.tenant_id = None - self.type = type - self.user_assigned_identities = user_assigned_identities + super(VpnClientParameters, self).__init__(**kwargs) + self.processor_architecture = processor_architecture + self.authentication_method = authentication_method + self.radius_server_auth_certificate = radius_server_auth_certificate + self.client_root_certificates = client_root_certificates -class NetworkGroup(ProxyResource): - """The network group resource. +class VpnClientRevokedCertificate(SubResource): + """VPN client revoked certificate of virtual network gateway. Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Resource ID. :vartype id: str - :ivar name: Resource name. + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. :vartype name: str - :ivar type: Resource type. - :vartype type: str :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description of the network group. - :vartype description: str - :ivar member_type: Group member type. - :vartype member_type: str - :ivar provisioning_state: The provisioning state of the scope assignment resource. Possible - values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar thumbprint: The revoked VPN client certificate thumbprint. + :vartype thumbprint: str + :ivar provisioning_state: The provisioning state of the VPN client revoked certificate + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'member_type': {'key': 'properties.memberType', 'type': 'str'}, + 'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, } def __init__( self, *, - description: Optional[str] = None, - member_type: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + thumbprint: Optional[str] = None, **kwargs ): """ - :keyword description: A description of the network group. - :paramtype description: str - :keyword member_type: Group member type. - :paramtype member_type: str + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword thumbprint: The revoked VPN client certificate thumbprint. + :paramtype thumbprint: str """ - super(NetworkGroup, self).__init__(**kwargs) - self.system_data = None - self.description = description - self.member_type = member_type + super(VpnClientRevokedCertificate, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.thumbprint = thumbprint self.provisioning_state = None -class NetworkGroupListResult(msrest.serialization.Model): - """Result of the request to list NetworkGroup. It contains a list of groups and a URL link to get the next set of results. - - :ivar value: Gets a page of NetworkGroup. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup] - :ivar next_link: Gets the URL to get the next set of results. - :vartype next_link: str - """ - - _attribute_map = { - 'value': {'key': 'value', 'type': '[NetworkGroup]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, - } - - def __init__( - self, - *, - value: Optional[List["NetworkGroup"]] = None, - next_link: Optional[str] = None, - **kwargs - ): - """ - :keyword value: Gets a page of NetworkGroup. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup] - :keyword next_link: Gets the URL to get the next set of results. - :paramtype next_link: str - """ - super(NetworkGroupListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link - - -class Resource(msrest.serialization.Model): - """Common resource representation. +class VpnClientRootCertificate(SubResource): + """VPN client root certificate of virtual network gateway. Variables are only populated by the server, and will be ignored when sending a request. + All required parameters must be populated in order to send to Azure. + :ivar id: Resource ID. :vartype id: str - :ivar name: Resource name. + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. :vartype name: str - :ivar type: Resource type. - :vartype type: str - :ivar location: Resource location. - :vartype location: str - :ivar tags: A set of tags. Resource tags. - :vartype tags: dict[str, str] + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar public_cert_data: Required. The certificate public data. + :vartype public_cert_data: str + :ivar provisioning_state: The provisioning state of the VPN client root certificate resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ _validation = { - 'name': {'readonly': True}, - 'type': {'readonly': True}, + 'etag': {'readonly': True}, + 'public_cert_data': {'required': True}, + 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'location': {'key': 'location', 'type': 'str'}, - 'tags': {'key': 'tags', 'type': '{str}'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, } def __init__( self, *, + public_cert_data: str, id: Optional[str] = None, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, + name: Optional[str] = None, **kwargs ): """ :keyword id: Resource ID. :paramtype id: str - :keyword location: Resource location. - :paramtype location: str - :keyword tags: A set of tags. Resource tags. - :paramtype tags: dict[str, str] + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword public_cert_data: Required. The certificate public data. + :paramtype public_cert_data: str """ - super(Resource, self).__init__(**kwargs) - self.id = id - self.name = None - self.type = None - self.location = location - self.tags = tags + super(VpnClientRootCertificate, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.public_cert_data = public_cert_data + self.provisioning_state = None -class NetworkManager(Resource): - """The Managed Network resource. +class VpnConnection(SubResource): + """VpnConnection Resource. Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Resource ID. :vartype id: str - :ivar name: Resource name. + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. :vartype name: str - :ivar type: Resource type. - :vartype type: str - :ivar location: Resource location. - :vartype location: str - :ivar tags: A set of tags. Resource tags. - :vartype tags: dict[str, str] :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description of the network manager. - :vartype description: str - :ivar network_manager_scopes: Scope of Network Manager. - :vartype network_manager_scopes: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerPropertiesNetworkManagerScopes - :ivar network_manager_scope_accesses: Scope Access. - :vartype network_manager_scope_accesses: list[str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType] - :ivar provisioning_state: The provisioning state of the scope assignment resource. Possible + :ivar remote_vpn_site: Id of the connected vpn site. + :vartype remote_vpn_site: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar routing_weight: Routing weight for vpn connection. + :vartype routing_weight: int + :ivar dpd_timeout_seconds: DPD timeout in seconds for vpn connection. + :vartype dpd_timeout_seconds: int + :ivar connection_status: The connection status. Possible values include: "Unknown", + "Connecting", "Connected", "NotConnected". + :vartype connection_status: str or ~azure.mgmt.network.v2022_01_01.models.VpnConnectionStatus + :ivar vpn_connection_protocol_type: Connection protocol used for this connection. Possible + values include: "IKEv2", "IKEv1". + :vartype vpn_connection_protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :ivar ingress_bytes_transferred: Ingress bytes transferred. + :vartype ingress_bytes_transferred: long + :ivar egress_bytes_transferred: Egress bytes transferred. + :vartype egress_bytes_transferred: long + :ivar connection_bandwidth: Expected bandwidth in MBPS. + :vartype connection_bandwidth: int + :ivar shared_key: SharedKey for the vpn connection. + :vartype shared_key: str + :ivar enable_bgp: EnableBgp flag. + :vartype enable_bgp: bool + :ivar use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :vartype use_policy_based_traffic_selectors: bool + :ivar ipsec_policies: The IPSec Policies to be considered by this connection. + :vartype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :ivar traffic_selector_policies: The Traffic Selector Policies to be considered by this + connection. + :vartype traffic_selector_policies: + list[~azure.mgmt.network.v2022_01_01.models.TrafficSelectorPolicy] + :ivar enable_rate_limiting: EnableBgp flag. + :vartype enable_rate_limiting: bool + :ivar enable_internet_security: Enable internet security. + :vartype enable_internet_security: bool + :ivar use_local_azure_ip_address: Use local azure ip to initiate connection. + :vartype use_local_azure_ip_address: bool + :ivar provisioning_state: The provisioning state of the VPN connection resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar vpn_link_connections: List of all vpn site link connections to the gateway. + :vartype vpn_link_connections: + list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLinkConnection] + :ivar routing_configuration: The Routing Configuration indicating the associated and propagated + route tables on this connection. + :vartype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration """ _validation = { - 'name': {'readonly': True}, - 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, + 'connection_status': {'readonly': True}, + 'ingress_bytes_transferred': {'readonly': True}, + 'egress_bytes_transferred': {'readonly': True}, 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'location': {'key': 'location', 'type': 'str'}, - 'tags': {'key': 'tags', 'type': '{str}'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'network_manager_scopes': {'key': 'properties.networkManagerScopes', 'type': 'NetworkManagerPropertiesNetworkManagerScopes'}, - 'network_manager_scope_accesses': {'key': 'properties.networkManagerScopeAccesses', 'type': '[str]'}, + 'remote_vpn_site': {'key': 'properties.remoteVpnSite', 'type': 'SubResource'}, + 'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'}, + 'dpd_timeout_seconds': {'key': 'properties.dpdTimeoutSeconds', 'type': 'int'}, + 'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'}, + 'vpn_connection_protocol_type': {'key': 'properties.vpnConnectionProtocolType', 'type': 'str'}, + 'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'}, + 'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'}, + 'connection_bandwidth': {'key': 'properties.connectionBandwidth', 'type': 'int'}, + 'shared_key': {'key': 'properties.sharedKey', 'type': 'str'}, + 'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'}, + 'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'}, + 'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'}, + 'traffic_selector_policies': {'key': 'properties.trafficSelectorPolicies', 'type': '[TrafficSelectorPolicy]'}, + 'enable_rate_limiting': {'key': 'properties.enableRateLimiting', 'type': 'bool'}, + 'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'}, + 'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'vpn_link_connections': {'key': 'properties.vpnLinkConnections', 'type': '[VpnSiteLinkConnection]'}, + 'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'}, } def __init__( self, *, id: Optional[str] = None, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - description: Optional[str] = None, - network_manager_scopes: Optional["NetworkManagerPropertiesNetworkManagerScopes"] = None, - network_manager_scope_accesses: Optional[List[Union[str, "ConfigurationType"]]] = None, + name: Optional[str] = None, + remote_vpn_site: Optional["SubResource"] = None, + routing_weight: Optional[int] = None, + dpd_timeout_seconds: Optional[int] = None, + vpn_connection_protocol_type: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None, + connection_bandwidth: Optional[int] = None, + shared_key: Optional[str] = None, + enable_bgp: Optional[bool] = None, + use_policy_based_traffic_selectors: Optional[bool] = None, + ipsec_policies: Optional[List["IpsecPolicy"]] = None, + traffic_selector_policies: Optional[List["TrafficSelectorPolicy"]] = None, + enable_rate_limiting: Optional[bool] = None, + enable_internet_security: Optional[bool] = None, + use_local_azure_ip_address: Optional[bool] = None, + vpn_link_connections: Optional[List["VpnSiteLinkConnection"]] = None, + routing_configuration: Optional["RoutingConfiguration"] = None, **kwargs ): """ :keyword id: Resource ID. :paramtype id: str - :keyword location: Resource location. - :paramtype location: str - :keyword tags: A set of tags. Resource tags. - :paramtype tags: dict[str, str] - :keyword description: A description of the network manager. - :paramtype description: str - :keyword network_manager_scopes: Scope of Network Manager. - :paramtype network_manager_scopes: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerPropertiesNetworkManagerScopes - :keyword network_manager_scope_accesses: Scope Access. - :paramtype network_manager_scope_accesses: list[str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType] + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword remote_vpn_site: Id of the connected vpn site. + :paramtype remote_vpn_site: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword routing_weight: Routing weight for vpn connection. + :paramtype routing_weight: int + :keyword dpd_timeout_seconds: DPD timeout in seconds for vpn connection. + :paramtype dpd_timeout_seconds: int + :keyword vpn_connection_protocol_type: Connection protocol used for this connection. Possible + values include: "IKEv2", "IKEv1". + :paramtype vpn_connection_protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :keyword connection_bandwidth: Expected bandwidth in MBPS. + :paramtype connection_bandwidth: int + :keyword shared_key: SharedKey for the vpn connection. + :paramtype shared_key: str + :keyword enable_bgp: EnableBgp flag. + :paramtype enable_bgp: bool + :keyword use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :paramtype use_policy_based_traffic_selectors: bool + :keyword ipsec_policies: The IPSec Policies to be considered by this connection. + :paramtype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :keyword traffic_selector_policies: The Traffic Selector Policies to be considered by this + connection. + :paramtype traffic_selector_policies: + list[~azure.mgmt.network.v2022_01_01.models.TrafficSelectorPolicy] + :keyword enable_rate_limiting: EnableBgp flag. + :paramtype enable_rate_limiting: bool + :keyword enable_internet_security: Enable internet security. + :paramtype enable_internet_security: bool + :keyword use_local_azure_ip_address: Use local azure ip to initiate connection. + :paramtype use_local_azure_ip_address: bool + :keyword vpn_link_connections: List of all vpn site link connections to the gateway. + :paramtype vpn_link_connections: + list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLinkConnection] + :keyword routing_configuration: The Routing Configuration indicating the associated and + propagated route tables on this connection. + :paramtype routing_configuration: ~azure.mgmt.network.v2022_01_01.models.RoutingConfiguration """ - super(NetworkManager, self).__init__(id=id, location=location, tags=tags, **kwargs) + super(VpnConnection, self).__init__(id=id, **kwargs) + self.name = name self.etag = None - self.system_data = None - self.description = description - self.network_manager_scopes = network_manager_scopes - self.network_manager_scope_accesses = network_manager_scope_accesses + self.remote_vpn_site = remote_vpn_site + self.routing_weight = routing_weight + self.dpd_timeout_seconds = dpd_timeout_seconds + self.connection_status = None + self.vpn_connection_protocol_type = vpn_connection_protocol_type + self.ingress_bytes_transferred = None + self.egress_bytes_transferred = None + self.connection_bandwidth = connection_bandwidth + self.shared_key = shared_key + self.enable_bgp = enable_bgp + self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors + self.ipsec_policies = ipsec_policies + self.traffic_selector_policies = traffic_selector_policies + self.enable_rate_limiting = enable_rate_limiting + self.enable_internet_security = enable_internet_security + self.use_local_azure_ip_address = use_local_azure_ip_address self.provisioning_state = None + self.vpn_link_connections = vpn_link_connections + self.routing_configuration = routing_configuration -class NetworkManagerCommit(msrest.serialization.Model): - """Network Manager Commit. +class VpnConnectionPacketCaptureStartParameters(msrest.serialization.Model): + """Vpn Connection packet capture parameters supplied to start packet capture on gateway connection. - Variables are only populated by the server, and will be ignored when sending a request. + :ivar filter_data: Start Packet capture parameters on vpn connection. + :vartype filter_data: str + :ivar link_connection_names: List of site link connection names. + :vartype link_connection_names: list[str] + """ - All required parameters must be populated in order to send to Azure. + _attribute_map = { + 'filter_data': {'key': 'filterData', 'type': 'str'}, + 'link_connection_names': {'key': 'linkConnectionNames', 'type': '[str]'}, + } - :ivar commit_id: Commit Id. - :vartype commit_id: str - :ivar target_locations: Required. List of target locations. - :vartype target_locations: list[str] - :ivar configuration_ids: List of configuration ids. - :vartype configuration_ids: list[str] - :ivar commit_type: Commit Type. Possible values include: "SecurityAdmin", "SecurityUser", - "Connectivity". - :vartype commit_type: str or ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType + def __init__( + self, + *, + filter_data: Optional[str] = None, + link_connection_names: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword filter_data: Start Packet capture parameters on vpn connection. + :paramtype filter_data: str + :keyword link_connection_names: List of site link connection names. + :paramtype link_connection_names: list[str] + """ + super(VpnConnectionPacketCaptureStartParameters, self).__init__(**kwargs) + self.filter_data = filter_data + self.link_connection_names = link_connection_names + + +class VpnConnectionPacketCaptureStopParameters(msrest.serialization.Model): + """Vpn Connection packet capture parameters supplied to stop packet capture on gateway connection. + + :ivar sas_url: SAS url for packet capture on vpn connection. + :vartype sas_url: str + :ivar link_connection_names: List of site link connection names. + :vartype link_connection_names: list[str] """ - _validation = { - 'commit_id': {'readonly': True}, - 'target_locations': {'required': True}, + _attribute_map = { + 'sas_url': {'key': 'sasUrl', 'type': 'str'}, + 'link_connection_names': {'key': 'linkConnectionNames', 'type': '[str]'}, } + def __init__( + self, + *, + sas_url: Optional[str] = None, + link_connection_names: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword sas_url: SAS url for packet capture on vpn connection. + :paramtype sas_url: str + :keyword link_connection_names: List of site link connection names. + :paramtype link_connection_names: list[str] + """ + super(VpnConnectionPacketCaptureStopParameters, self).__init__(**kwargs) + self.sas_url = sas_url + self.link_connection_names = link_connection_names + + +class VpnDeviceScriptParameters(msrest.serialization.Model): + """Vpn device configuration script generation parameters. + + :ivar vendor: The vendor for the vpn device. + :vartype vendor: str + :ivar device_family: The device family for the vpn device. + :vartype device_family: str + :ivar firmware_version: The firmware version for the vpn device. + :vartype firmware_version: str + """ + _attribute_map = { - 'commit_id': {'key': 'commitId', 'type': 'str'}, - 'target_locations': {'key': 'targetLocations', 'type': '[str]'}, - 'configuration_ids': {'key': 'configurationIds', 'type': '[str]'}, - 'commit_type': {'key': 'commitType', 'type': 'str'}, + 'vendor': {'key': 'vendor', 'type': 'str'}, + 'device_family': {'key': 'deviceFamily', 'type': 'str'}, + 'firmware_version': {'key': 'firmwareVersion', 'type': 'str'}, } def __init__( self, *, - target_locations: List[str], - configuration_ids: Optional[List[str]] = None, - commit_type: Optional[Union[str, "ConfigurationType"]] = None, + vendor: Optional[str] = None, + device_family: Optional[str] = None, + firmware_version: Optional[str] = None, **kwargs ): """ - :keyword target_locations: Required. List of target locations. - :paramtype target_locations: list[str] - :keyword configuration_ids: List of configuration ids. - :paramtype configuration_ids: list[str] - :keyword commit_type: Commit Type. Possible values include: "SecurityAdmin", "SecurityUser", - "Connectivity". - :paramtype commit_type: str or ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType + :keyword vendor: The vendor for the vpn device. + :paramtype vendor: str + :keyword device_family: The device family for the vpn device. + :paramtype device_family: str + :keyword firmware_version: The firmware version for the vpn device. + :paramtype firmware_version: str """ - super(NetworkManagerCommit, self).__init__(**kwargs) - self.commit_id = None - self.target_locations = target_locations - self.configuration_ids = configuration_ids - self.commit_type = commit_type + super(VpnDeviceScriptParameters, self).__init__(**kwargs) + self.vendor = vendor + self.device_family = device_family + self.firmware_version = firmware_version -class NetworkManagerConnection(ProxyResource): - """The Network Manager Connection resource. +class VpnGateway(Resource): + """VpnGateway Resource. Variables are only populated by the server, and will be ignored when sending a request. @@ -3172,575 +35983,545 @@ class NetworkManagerConnection(ProxyResource): :vartype name: str :ivar type: Resource type. :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar network_manager_id: Network Manager Id. - :vartype network_manager_id: str - :ivar connection_state: Connection state. Possible values include: "Connected", "Pending", - "Conflict", "Revoked", "Rejected". - :vartype connection_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnectionState - :ivar description: A description of the scope connection. - :vartype description: str + :ivar virtual_hub: The VirtualHub to which the gateway belongs. + :vartype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar connections: List of all vpn connections to the gateway. + :vartype connections: list[~azure.mgmt.network.v2022_01_01.models.VpnConnection] + :ivar bgp_settings: Local network gateway's BGP speaker settings. + :vartype bgp_settings: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + :ivar provisioning_state: The provisioning state of the VPN gateway resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar vpn_gateway_scale_unit: The scale unit for this vpn gateway. + :vartype vpn_gateway_scale_unit: int + :ivar ip_configurations: List of all IPs configured on the gateway. + :vartype ip_configurations: + list[~azure.mgmt.network.v2022_01_01.models.VpnGatewayIpConfiguration] + :ivar enable_bgp_route_translation_for_nat: Enable BGP routes translation for NAT on this + VpnGateway. + :vartype enable_bgp_route_translation_for_nat: bool + :ivar is_routing_preference_internet: Enable Routing Preference property for the Public IP + Interface of the VpnGateway. + :vartype is_routing_preference_internet: bool + :ivar nat_rules: List of all the nat Rules associated with the gateway. + :vartype nat_rules: list[~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule] """ _validation = { - 'id': {'readonly': True}, 'name': {'readonly': True}, 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, - 'connection_state': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'ip_configurations': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'network_manager_id': {'key': 'properties.networkManagerId', 'type': 'str'}, - 'connection_state': {'key': 'properties.connectionState', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - } - - def __init__( - self, - *, - network_manager_id: Optional[str] = None, - description: Optional[str] = None, - **kwargs - ): - """ - :keyword network_manager_id: Network Manager Id. - :paramtype network_manager_id: str - :keyword description: A description of the scope connection. - :paramtype description: str - """ - super(NetworkManagerConnection, self).__init__(**kwargs) - self.system_data = None - self.network_manager_id = network_manager_id - self.connection_state = None - self.description = description - - -class NetworkManagerConnectionListResult(msrest.serialization.Model): - """List of network manager connections. - - :ivar value: List of network manager connections. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection] - :ivar next_link: Gets the URL to get the next page of results. - :vartype next_link: str - """ - - _attribute_map = { - 'value': {'key': 'value', 'type': '[NetworkManagerConnection]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'}, + 'connections': {'key': 'properties.connections', 'type': '[VpnConnection]'}, + 'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'vpn_gateway_scale_unit': {'key': 'properties.vpnGatewayScaleUnit', 'type': 'int'}, + 'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VpnGatewayIpConfiguration]'}, + 'enable_bgp_route_translation_for_nat': {'key': 'properties.enableBgpRouteTranslationForNat', 'type': 'bool'}, + 'is_routing_preference_internet': {'key': 'properties.isRoutingPreferenceInternet', 'type': 'bool'}, + 'nat_rules': {'key': 'properties.natRules', 'type': '[VpnGatewayNatRule]'}, } def __init__( self, *, - value: Optional[List["NetworkManagerConnection"]] = None, - next_link: Optional[str] = None, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + virtual_hub: Optional["SubResource"] = None, + connections: Optional[List["VpnConnection"]] = None, + bgp_settings: Optional["BgpSettings"] = None, + vpn_gateway_scale_unit: Optional[int] = None, + enable_bgp_route_translation_for_nat: Optional[bool] = None, + is_routing_preference_internet: Optional[bool] = None, + nat_rules: Optional[List["VpnGatewayNatRule"]] = None, **kwargs ): """ - :keyword value: List of network manager connections. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection] - :keyword next_link: Gets the URL to get the next page of results. - :paramtype next_link: str + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword virtual_hub: The VirtualHub to which the gateway belongs. + :paramtype virtual_hub: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword connections: List of all vpn connections to the gateway. + :paramtype connections: list[~azure.mgmt.network.v2022_01_01.models.VpnConnection] + :keyword bgp_settings: Local network gateway's BGP speaker settings. + :paramtype bgp_settings: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + :keyword vpn_gateway_scale_unit: The scale unit for this vpn gateway. + :paramtype vpn_gateway_scale_unit: int + :keyword enable_bgp_route_translation_for_nat: Enable BGP routes translation for NAT on this + VpnGateway. + :paramtype enable_bgp_route_translation_for_nat: bool + :keyword is_routing_preference_internet: Enable Routing Preference property for the Public IP + Interface of the VpnGateway. + :paramtype is_routing_preference_internet: bool + :keyword nat_rules: List of all the nat Rules associated with the gateway. + :paramtype nat_rules: list[~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule] """ - super(NetworkManagerConnectionListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link + super(VpnGateway, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.virtual_hub = virtual_hub + self.connections = connections + self.bgp_settings = bgp_settings + self.provisioning_state = None + self.vpn_gateway_scale_unit = vpn_gateway_scale_unit + self.ip_configurations = None + self.enable_bgp_route_translation_for_nat = enable_bgp_route_translation_for_nat + self.is_routing_preference_internet = is_routing_preference_internet + self.nat_rules = nat_rules -class NetworkManagerDeploymentStatus(msrest.serialization.Model): - """Network Manager Deployment Status. +class VpnGatewayIpConfiguration(msrest.serialization.Model): + """IP Configuration of a VPN Gateway Resource. - :ivar commit_time: Commit Time. - :vartype commit_time: ~datetime.datetime - :ivar region: Region Name. - :vartype region: str - :ivar deployment_status: Deployment Status. Possible values include: "NotStarted", "Deploying", - "Deployed", "Failed". - :vartype deployment_status: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeploymentStatus - :ivar configuration_ids: List of configuration ids. - :vartype configuration_ids: list[str] - :ivar deployment_type: Configuration Deployment Type. Possible values include: "SecurityAdmin", - "SecurityUser", "Connectivity". - :vartype deployment_type: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType - :ivar error_message: Error Message. - :vartype error_message: str + :ivar id: The identifier of the IP configuration for a VPN Gateway. + :vartype id: str + :ivar public_ip_address: The public IP address of this IP configuration. + :vartype public_ip_address: str + :ivar private_ip_address: The private IP address of this IP configuration. + :vartype private_ip_address: str """ _attribute_map = { - 'commit_time': {'key': 'commitTime', 'type': 'iso-8601'}, - 'region': {'key': 'region', 'type': 'str'}, - 'deployment_status': {'key': 'deploymentStatus', 'type': 'str'}, - 'configuration_ids': {'key': 'configurationIds', 'type': '[str]'}, - 'deployment_type': {'key': 'deploymentType', 'type': 'str'}, - 'error_message': {'key': 'errorMessage', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'}, + 'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'}, } def __init__( self, *, - commit_time: Optional[datetime.datetime] = None, - region: Optional[str] = None, - deployment_status: Optional[Union[str, "DeploymentStatus"]] = None, - configuration_ids: Optional[List[str]] = None, - deployment_type: Optional[Union[str, "ConfigurationType"]] = None, - error_message: Optional[str] = None, + id: Optional[str] = None, + public_ip_address: Optional[str] = None, + private_ip_address: Optional[str] = None, **kwargs ): """ - :keyword commit_time: Commit Time. - :paramtype commit_time: ~datetime.datetime - :keyword region: Region Name. - :paramtype region: str - :keyword deployment_status: Deployment Status. Possible values include: "NotStarted", - "Deploying", "Deployed", "Failed". - :paramtype deployment_status: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeploymentStatus - :keyword configuration_ids: List of configuration ids. - :paramtype configuration_ids: list[str] - :keyword deployment_type: Configuration Deployment Type. Possible values include: - "SecurityAdmin", "SecurityUser", "Connectivity". - :paramtype deployment_type: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType - :keyword error_message: Error Message. - :paramtype error_message: str + :keyword id: The identifier of the IP configuration for a VPN Gateway. + :paramtype id: str + :keyword public_ip_address: The public IP address of this IP configuration. + :paramtype public_ip_address: str + :keyword private_ip_address: The private IP address of this IP configuration. + :paramtype private_ip_address: str """ - super(NetworkManagerDeploymentStatus, self).__init__(**kwargs) - self.commit_time = commit_time - self.region = region - self.deployment_status = deployment_status - self.configuration_ids = configuration_ids - self.deployment_type = deployment_type - self.error_message = error_message + super(VpnGatewayIpConfiguration, self).__init__(**kwargs) + self.id = id + self.public_ip_address = public_ip_address + self.private_ip_address = private_ip_address -class NetworkManagerDeploymentStatusListResult(msrest.serialization.Model): - """A list of Network Manager Deployment Status. +class VpnGatewayNatRule(SubResource): + """VpnGatewayNatRule Resource. - :ivar value: Gets a page of Network Manager Deployment Status. - :vartype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerDeploymentStatus] - :ivar skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :vartype skip_token: str + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar provisioning_state: The provisioning state of the NAT Rule resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar type_properties_type: The type of NAT rule for VPN NAT. Possible values include: + "Static", "Dynamic". + :vartype type_properties_type: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleType + :ivar mode: The Source NAT direction of a VPN NAT. Possible values include: "EgressSnat", + "IngressSnat". + :vartype mode: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMode + :ivar internal_mappings: The private IP address internal mapping for NAT. + :vartype internal_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :ivar external_mappings: The private IP address external mapping for NAT. + :vartype external_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :ivar ip_configuration_id: The IP Configuration ID this NAT rule applies to. + :vartype ip_configuration_id: str + :ivar egress_vpn_site_link_connections: List of egress VpnSiteLinkConnections. + :vartype egress_vpn_site_link_connections: + list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar ingress_vpn_site_link_connections: List of ingress VpnSiteLinkConnections. + :vartype ingress_vpn_site_link_connections: + list[~azure.mgmt.network.v2022_01_01.models.SubResource] """ + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'egress_vpn_site_link_connections': {'readonly': True}, + 'ingress_vpn_site_link_connections': {'readonly': True}, + } + _attribute_map = { - 'value': {'key': 'value', 'type': '[NetworkManagerDeploymentStatus]'}, - 'skip_token': {'key': 'skipToken', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'type_properties_type': {'key': 'properties.type', 'type': 'str'}, + 'mode': {'key': 'properties.mode', 'type': 'str'}, + 'internal_mappings': {'key': 'properties.internalMappings', 'type': '[VpnNatRuleMapping]'}, + 'external_mappings': {'key': 'properties.externalMappings', 'type': '[VpnNatRuleMapping]'}, + 'ip_configuration_id': {'key': 'properties.ipConfigurationId', 'type': 'str'}, + 'egress_vpn_site_link_connections': {'key': 'properties.egressVpnSiteLinkConnections', 'type': '[SubResource]'}, + 'ingress_vpn_site_link_connections': {'key': 'properties.ingressVpnSiteLinkConnections', 'type': '[SubResource]'}, } def __init__( self, *, - value: Optional[List["NetworkManagerDeploymentStatus"]] = None, - skip_token: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + type_properties_type: Optional[Union[str, "VpnNatRuleType"]] = None, + mode: Optional[Union[str, "VpnNatRuleMode"]] = None, + internal_mappings: Optional[List["VpnNatRuleMapping"]] = None, + external_mappings: Optional[List["VpnNatRuleMapping"]] = None, + ip_configuration_id: Optional[str] = None, **kwargs ): """ - :keyword value: Gets a page of Network Manager Deployment Status. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerDeploymentStatus] - :keyword skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :paramtype skip_token: str + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword type_properties_type: The type of NAT rule for VPN NAT. Possible values include: + "Static", "Dynamic". + :paramtype type_properties_type: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleType + :keyword mode: The Source NAT direction of a VPN NAT. Possible values include: "EgressSnat", + "IngressSnat". + :paramtype mode: str or ~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMode + :keyword internal_mappings: The private IP address internal mapping for NAT. + :paramtype internal_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :keyword external_mappings: The private IP address external mapping for NAT. + :paramtype external_mappings: list[~azure.mgmt.network.v2022_01_01.models.VpnNatRuleMapping] + :keyword ip_configuration_id: The IP Configuration ID this NAT rule applies to. + :paramtype ip_configuration_id: str """ - super(NetworkManagerDeploymentStatusListResult, self).__init__(**kwargs) - self.value = value - self.skip_token = skip_token + super(VpnGatewayNatRule, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.provisioning_state = None + self.type_properties_type = type_properties_type + self.mode = mode + self.internal_mappings = internal_mappings + self.external_mappings = external_mappings + self.ip_configuration_id = ip_configuration_id + self.egress_vpn_site_link_connections = None + self.ingress_vpn_site_link_connections = None -class NetworkManagerDeploymentStatusParameter(msrest.serialization.Model): - """Network Manager Deployment Status Parameter. +class VpnGatewayPacketCaptureStartParameters(msrest.serialization.Model): + """Start packet capture parameters. - :ivar regions: List of locations. - :vartype regions: list[str] - :ivar deployment_types: List of deployment types. - :vartype deployment_types: list[str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType] - :ivar skip_token: Continuation token for pagination, capturing the next page size and offset, - as well as the context of the query. - :vartype skip_token: str + :ivar filter_data: Start Packet capture parameters on vpn gateway. + :vartype filter_data: str """ _attribute_map = { - 'regions': {'key': 'regions', 'type': '[str]'}, - 'deployment_types': {'key': 'deploymentTypes', 'type': '[str]'}, - 'skip_token': {'key': 'skipToken', 'type': 'str'}, + 'filter_data': {'key': 'filterData', 'type': 'str'}, } def __init__( self, *, - regions: Optional[List[str]] = None, - deployment_types: Optional[List[Union[str, "ConfigurationType"]]] = None, - skip_token: Optional[str] = None, + filter_data: Optional[str] = None, **kwargs ): """ - :keyword regions: List of locations. - :paramtype regions: list[str] - :keyword deployment_types: List of deployment types. - :paramtype deployment_types: list[str or - ~azure.mgmt.network.v2022_02_01_preview.models.ConfigurationType] - :keyword skip_token: Continuation token for pagination, capturing the next page size and - offset, as well as the context of the query. - :paramtype skip_token: str + :keyword filter_data: Start Packet capture parameters on vpn gateway. + :paramtype filter_data: str """ - super(NetworkManagerDeploymentStatusParameter, self).__init__(**kwargs) - self.regions = regions - self.deployment_types = deployment_types - self.skip_token = skip_token + super(VpnGatewayPacketCaptureStartParameters, self).__init__(**kwargs) + self.filter_data = filter_data -class NetworkManagerEffectiveConnectivityConfigurationListResult(msrest.serialization.Model): - """Result of the request to list networkManagerEffectiveConnectivityConfiguration. It contains a list of groups and a skiptoken to get the next set of results. +class VpnGatewayPacketCaptureStopParameters(msrest.serialization.Model): + """Stop packet capture parameters. - :ivar value: Gets a page of NetworkManagerEffectiveConnectivityConfiguration. - :vartype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.EffectiveConnectivityConfiguration] - :ivar skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :vartype skip_token: str + :ivar sas_url: SAS url for packet capture on vpn gateway. + :vartype sas_url: str """ _attribute_map = { - 'value': {'key': 'value', 'type': '[EffectiveConnectivityConfiguration]'}, - 'skip_token': {'key': 'skipToken', 'type': 'str'}, + 'sas_url': {'key': 'sasUrl', 'type': 'str'}, } def __init__( self, *, - value: Optional[List["EffectiveConnectivityConfiguration"]] = None, - skip_token: Optional[str] = None, + sas_url: Optional[str] = None, **kwargs ): """ - :keyword value: Gets a page of NetworkManagerEffectiveConnectivityConfiguration. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.EffectiveConnectivityConfiguration] - :keyword skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :paramtype skip_token: str + :keyword sas_url: SAS url for packet capture on vpn gateway. + :paramtype sas_url: str """ - super(NetworkManagerEffectiveConnectivityConfigurationListResult, self).__init__(**kwargs) - self.value = value - self.skip_token = skip_token + super(VpnGatewayPacketCaptureStopParameters, self).__init__(**kwargs) + self.sas_url = sas_url -class NetworkManagerEffectiveSecurityAdminRulesListResult(msrest.serialization.Model): - """Result of the request to list networkManagerEffectiveSecurityAdminRules. It contains a list of groups and a skiptoken to get the next set of results. +class VpnLinkBgpSettings(msrest.serialization.Model): + """BGP settings details for a link. - :ivar value: Gets a page of NetworkManagerEffectiveSecurityAdminRules. - :vartype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.EffectiveBaseSecurityAdminRule] - :ivar skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :vartype skip_token: str + :ivar asn: The BGP speaker's ASN. + :vartype asn: long + :ivar bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker. + :vartype bgp_peering_address: str """ _attribute_map = { - 'value': {'key': 'value', 'type': '[EffectiveBaseSecurityAdminRule]'}, - 'skip_token': {'key': 'skipToken', 'type': 'str'}, + 'asn': {'key': 'asn', 'type': 'long'}, + 'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'}, } def __init__( self, *, - value: Optional[List["EffectiveBaseSecurityAdminRule"]] = None, - skip_token: Optional[str] = None, + asn: Optional[int] = None, + bgp_peering_address: Optional[str] = None, **kwargs ): """ - :keyword value: Gets a page of NetworkManagerEffectiveSecurityAdminRules. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.EffectiveBaseSecurityAdminRule] - :keyword skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :paramtype skip_token: str + :keyword asn: The BGP speaker's ASN. + :paramtype asn: long + :keyword bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker. + :paramtype bgp_peering_address: str """ - super(NetworkManagerEffectiveSecurityAdminRulesListResult, self).__init__(**kwargs) - self.value = value - self.skip_token = skip_token + super(VpnLinkBgpSettings, self).__init__(**kwargs) + self.asn = asn + self.bgp_peering_address = bgp_peering_address -class NetworkManagerListResult(msrest.serialization.Model): - """Result of the request to list NetworkManager. It contains a list of network managers and a URL link to get the next set of results. +class VpnLinkProviderProperties(msrest.serialization.Model): + """List of properties of a link provider. - :ivar value: Gets a page of NetworkManager. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager] - :ivar next_link: Gets the URL to get the next page of results. - :vartype next_link: str + :ivar link_provider_name: Name of the link provider. + :vartype link_provider_name: str + :ivar link_speed_in_mbps: Link speed. + :vartype link_speed_in_mbps: int """ _attribute_map = { - 'value': {'key': 'value', 'type': '[NetworkManager]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'link_provider_name': {'key': 'linkProviderName', 'type': 'str'}, + 'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'}, } def __init__( self, *, - value: Optional[List["NetworkManager"]] = None, - next_link: Optional[str] = None, + link_provider_name: Optional[str] = None, + link_speed_in_mbps: Optional[int] = None, **kwargs ): """ - :keyword value: Gets a page of NetworkManager. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager] - :keyword next_link: Gets the URL to get the next page of results. - :paramtype next_link: str + :keyword link_provider_name: Name of the link provider. + :paramtype link_provider_name: str + :keyword link_speed_in_mbps: Link speed. + :paramtype link_speed_in_mbps: int """ - super(NetworkManagerListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link + super(VpnLinkProviderProperties, self).__init__(**kwargs) + self.link_provider_name = link_provider_name + self.link_speed_in_mbps = link_speed_in_mbps -class NetworkManagerPropertiesNetworkManagerScopes(msrest.serialization.Model): - """Scope of Network Manager. - - Variables are only populated by the server, and will be ignored when sending a request. +class VpnNatRuleMapping(msrest.serialization.Model): + """Vpn NatRule mapping. - :ivar management_groups: List of management groups. - :vartype management_groups: list[str] - :ivar subscriptions: List of subscriptions. - :vartype subscriptions: list[str] - :ivar cross_tenant_scopes: List of cross tenant scopes. - :vartype cross_tenant_scopes: - list[~azure.mgmt.network.v2022_02_01_preview.models.CrossTenantScopes] + :ivar address_space: Address space for Vpn NatRule mapping. + :vartype address_space: str + :ivar port_range: Port range for Vpn NatRule mapping. + :vartype port_range: str """ - _validation = { - 'cross_tenant_scopes': {'readonly': True}, - } - _attribute_map = { - 'management_groups': {'key': 'managementGroups', 'type': '[str]'}, - 'subscriptions': {'key': 'subscriptions', 'type': '[str]'}, - 'cross_tenant_scopes': {'key': 'crossTenantScopes', 'type': '[CrossTenantScopes]'}, + 'address_space': {'key': 'addressSpace', 'type': 'str'}, + 'port_range': {'key': 'portRange', 'type': 'str'}, } def __init__( self, *, - management_groups: Optional[List[str]] = None, - subscriptions: Optional[List[str]] = None, + address_space: Optional[str] = None, + port_range: Optional[str] = None, **kwargs ): """ - :keyword management_groups: List of management groups. - :paramtype management_groups: list[str] - :keyword subscriptions: List of subscriptions. - :paramtype subscriptions: list[str] + :keyword address_space: Address space for Vpn NatRule mapping. + :paramtype address_space: str + :keyword port_range: Port range for Vpn NatRule mapping. + :paramtype port_range: str """ - super(NetworkManagerPropertiesNetworkManagerScopes, self).__init__(**kwargs) - self.management_groups = management_groups - self.subscriptions = subscriptions - self.cross_tenant_scopes = None + super(VpnNatRuleMapping, self).__init__(**kwargs) + self.address_space = address_space + self.port_range = port_range -class NetworkManagerSecurityGroupItem(msrest.serialization.Model): - """Network manager security group item. - - All required parameters must be populated in order to send to Azure. +class VpnPacketCaptureStartParameters(msrest.serialization.Model): + """Start packet capture parameters on virtual network gateway. - :ivar network_group_id: Required. Network manager group Id. - :vartype network_group_id: str + :ivar filter_data: Start Packet capture parameters. + :vartype filter_data: str """ - _validation = { - 'network_group_id': {'required': True}, - } - _attribute_map = { - 'network_group_id': {'key': 'networkGroupId', 'type': 'str'}, + 'filter_data': {'key': 'filterData', 'type': 'str'}, } def __init__( self, *, - network_group_id: str, + filter_data: Optional[str] = None, **kwargs ): """ - :keyword network_group_id: Required. Network manager group Id. - :paramtype network_group_id: str + :keyword filter_data: Start Packet capture parameters. + :paramtype filter_data: str """ - super(NetworkManagerSecurityGroupItem, self).__init__(**kwargs) - self.network_group_id = network_group_id + super(VpnPacketCaptureStartParameters, self).__init__(**kwargs) + self.filter_data = filter_data -class PatchObject(msrest.serialization.Model): - """Object for patch operations. +class VpnPacketCaptureStopParameters(msrest.serialization.Model): + """Stop packet capture parameters. - :ivar tags: A set of tags. Resource tags. - :vartype tags: dict[str, str] + :ivar sas_url: SAS url for packet capture on virtual network gateway. + :vartype sas_url: str """ _attribute_map = { - 'tags': {'key': 'tags', 'type': '{str}'}, + 'sas_url': {'key': 'sasUrl', 'type': 'str'}, } def __init__( self, *, - tags: Optional[Dict[str, str]] = None, + sas_url: Optional[str] = None, **kwargs ): """ - :keyword tags: A set of tags. Resource tags. - :paramtype tags: dict[str, str] + :keyword sas_url: SAS url for packet capture on virtual network gateway. + :paramtype sas_url: str """ - super(PatchObject, self).__init__(**kwargs) - self.tags = tags + super(VpnPacketCaptureStopParameters, self).__init__(**kwargs) + self.sas_url = sas_url -class QueryRequestOptions(msrest.serialization.Model): - """Query Request Options. +class VpnProfileResponse(msrest.serialization.Model): + """Vpn Profile Response for package generation. - :ivar skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :vartype skip_token: str + :ivar profile_url: URL to the VPN profile. + :vartype profile_url: str """ _attribute_map = { - 'skip_token': {'key': 'skipToken', 'type': 'str'}, + 'profile_url': {'key': 'profileUrl', 'type': 'str'}, } def __init__( self, *, - skip_token: Optional[str] = None, + profile_url: Optional[str] = None, **kwargs ): """ - :keyword skip_token: When present, the value can be passed to a subsequent query call (together - with the same query and scopes used in the current request) to retrieve the next page of data. - :paramtype skip_token: str + :keyword profile_url: URL to the VPN profile. + :paramtype profile_url: str """ - super(QueryRequestOptions, self).__init__(**kwargs) - self.skip_token = skip_token + super(VpnProfileResponse, self).__init__(**kwargs) + self.profile_url = profile_url -class ScopeConnection(ProxyResource): - """The Scope Connections resource. - - Variables are only populated by the server, and will be ignored when sending a request. +class VpnServerConfigRadiusClientRootCertificate(msrest.serialization.Model): + """Properties of the Radius client root certificate of VpnServerConfiguration. - :ivar id: Resource ID. - :vartype id: str - :ivar name: Resource name. + :ivar name: The certificate name. :vartype name: str - :ivar type: Resource type. - :vartype type: str - :ivar etag: A unique read-only string that changes whenever the resource is updated. - :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar tenant_id: Tenant ID. - :vartype tenant_id: str - :ivar resource_id: Resource ID. - :vartype resource_id: str - :ivar connection_state: Connection State. Possible values include: "Connected", "Pending", - "Conflict", "Revoked", "Rejected". - :vartype connection_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnectionState - :ivar description: A description of the scope connection. - :vartype description: str + :ivar thumbprint: The Radius client root certificate thumbprint. + :vartype thumbprint: str """ - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, - 'connection_state': {'readonly': True}, - } - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'resource_id': {'key': 'properties.resourceId', 'type': 'str'}, - 'connection_state': {'key': 'properties.connectionState', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, + 'thumbprint': {'key': 'thumbprint', 'type': 'str'}, } def __init__( self, *, - tenant_id: Optional[str] = None, - resource_id: Optional[str] = None, - description: Optional[str] = None, + name: Optional[str] = None, + thumbprint: Optional[str] = None, **kwargs ): """ - :keyword tenant_id: Tenant ID. - :paramtype tenant_id: str - :keyword resource_id: Resource ID. - :paramtype resource_id: str - :keyword description: A description of the scope connection. - :paramtype description: str + :keyword name: The certificate name. + :paramtype name: str + :keyword thumbprint: The Radius client root certificate thumbprint. + :paramtype thumbprint: str """ - super(ScopeConnection, self).__init__(**kwargs) - self.system_data = None - self.tenant_id = tenant_id - self.resource_id = resource_id - self.connection_state = None - self.description = description + super(VpnServerConfigRadiusClientRootCertificate, self).__init__(**kwargs) + self.name = name + self.thumbprint = thumbprint -class ScopeConnectionListResult(msrest.serialization.Model): - """List of scope connections. +class VpnServerConfigRadiusServerRootCertificate(msrest.serialization.Model): + """Properties of Radius Server root certificate of VpnServerConfiguration. - :ivar value: List of scope connections. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection] - :ivar next_link: Gets the URL to get the next page of results. - :vartype next_link: str + :ivar name: The certificate name. + :vartype name: str + :ivar public_cert_data: The certificate public data. + :vartype public_cert_data: str """ _attribute_map = { - 'value': {'key': 'value', 'type': '[ScopeConnection]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'public_cert_data': {'key': 'publicCertData', 'type': 'str'}, } def __init__( self, *, - value: Optional[List["ScopeConnection"]] = None, - next_link: Optional[str] = None, + name: Optional[str] = None, + public_cert_data: Optional[str] = None, **kwargs ): """ - :keyword value: List of scope connections. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection] - :keyword next_link: Gets the URL to get the next page of results. - :paramtype next_link: str + :keyword name: The certificate name. + :paramtype name: str + :keyword public_cert_data: The certificate public data. + :paramtype public_cert_data: str """ - super(ScopeConnectionListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link + super(VpnServerConfigRadiusServerRootCertificate, self).__init__(**kwargs) + self.name = name + self.public_cert_data = public_cert_data -class SecurityAdminConfiguration(ProxyResource): - """Defines the security admin configuration. +class VpnServerConfiguration(Resource): + """VpnServerConfiguration Resource. Variables are only populated by the server, and will be ignored when sending a request. @@ -3750,201 +36531,406 @@ class SecurityAdminConfiguration(ProxyResource): :vartype name: str :ivar type: Resource type. :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description of the security configuration. - :vartype description: str - :ivar apply_on_network_intent_policy_based_services: Enum list of network intent policy based - services. - :vartype apply_on_network_intent_policy_based_services: list[str or - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkIntentPolicyBasedService] - :ivar provisioning_state: The provisioning state of the resource. Possible values include: - "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar name_properties_name: The name of the VpnServerConfiguration that is unique within a + resource group. + :vartype name_properties_name: str + :ivar vpn_protocols: VPN protocols for the VpnServerConfiguration. + :vartype vpn_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnGatewayTunnelingProtocol] + :ivar vpn_authentication_types: VPN authentication types for the VpnServerConfiguration. + :vartype vpn_authentication_types: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnAuthenticationType] + :ivar vpn_client_root_certificates: VPN client root certificate of VpnServerConfiguration. + :vartype vpn_client_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigVpnClientRootCertificate] + :ivar vpn_client_revoked_certificates: VPN client revoked certificate of + VpnServerConfiguration. + :vartype vpn_client_revoked_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigVpnClientRevokedCertificate] + :ivar radius_server_root_certificates: Radius Server root certificate of + VpnServerConfiguration. + :vartype radius_server_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigRadiusServerRootCertificate] + :ivar radius_client_root_certificates: Radius client root certificate of + VpnServerConfiguration. + :vartype radius_client_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigRadiusClientRootCertificate] + :ivar vpn_client_ipsec_policies: VpnClientIpsecPolicies for VpnServerConfiguration. + :vartype vpn_client_ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :ivar radius_server_address: The radius server address property of the VpnServerConfiguration + resource for point to site client connection. + :vartype radius_server_address: str + :ivar radius_server_secret: The radius secret property of the VpnServerConfiguration resource + for point to site client connection. + :vartype radius_server_secret: str + :ivar radius_servers: Multiple Radius Server configuration for VpnServerConfiguration. + :vartype radius_servers: list[~azure.mgmt.network.v2022_01_01.models.RadiusServer] + :ivar aad_authentication_parameters: The set of aad vpn authentication parameters. + :vartype aad_authentication_parameters: + ~azure.mgmt.network.v2022_01_01.models.AadAuthenticationParameters + :ivar provisioning_state: The provisioning state of the VpnServerConfiguration resource. + Possible values are: 'Updating', 'Deleting', and 'Failed'. + :vartype provisioning_state: str + :ivar p2_s_vpn_gateways: List of references to P2SVpnGateways. + :vartype p2_s_vpn_gateways: list[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :ivar configuration_policy_groups: List of all VpnServerConfigurationPolicyGroups. + :vartype configuration_policy_groups: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup] + :ivar etag_properties_etag: A unique read-only string that changes whenever the resource is + updated. + :vartype etag_properties_etag: str """ _validation = { - 'id': {'readonly': True}, 'name': {'readonly': True}, 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, 'provisioning_state': {'readonly': True}, + 'p2_s_vpn_gateways': {'readonly': True}, + 'etag_properties_etag': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'apply_on_network_intent_policy_based_services': {'key': 'properties.applyOnNetworkIntentPolicyBasedServices', 'type': '[str]'}, + 'name_properties_name': {'key': 'properties.name', 'type': 'str'}, + 'vpn_protocols': {'key': 'properties.vpnProtocols', 'type': '[str]'}, + 'vpn_authentication_types': {'key': 'properties.vpnAuthenticationTypes', 'type': '[str]'}, + 'vpn_client_root_certificates': {'key': 'properties.vpnClientRootCertificates', 'type': '[VpnServerConfigVpnClientRootCertificate]'}, + 'vpn_client_revoked_certificates': {'key': 'properties.vpnClientRevokedCertificates', 'type': '[VpnServerConfigVpnClientRevokedCertificate]'}, + 'radius_server_root_certificates': {'key': 'properties.radiusServerRootCertificates', 'type': '[VpnServerConfigRadiusServerRootCertificate]'}, + 'radius_client_root_certificates': {'key': 'properties.radiusClientRootCertificates', 'type': '[VpnServerConfigRadiusClientRootCertificate]'}, + 'vpn_client_ipsec_policies': {'key': 'properties.vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'}, + 'radius_server_address': {'key': 'properties.radiusServerAddress', 'type': 'str'}, + 'radius_server_secret': {'key': 'properties.radiusServerSecret', 'type': 'str'}, + 'radius_servers': {'key': 'properties.radiusServers', 'type': '[RadiusServer]'}, + 'aad_authentication_parameters': {'key': 'properties.aadAuthenticationParameters', 'type': 'AadAuthenticationParameters'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'p2_s_vpn_gateways': {'key': 'properties.p2SVpnGateways', 'type': '[P2SVpnGateway]'}, + 'configuration_policy_groups': {'key': 'properties.configurationPolicyGroups', 'type': '[VpnServerConfigurationPolicyGroup]'}, + 'etag_properties_etag': {'key': 'properties.etag', 'type': 'str'}, } def __init__( self, *, - description: Optional[str] = None, - apply_on_network_intent_policy_based_services: Optional[List[Union[str, "NetworkIntentPolicyBasedService"]]] = None, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + name_properties_name: Optional[str] = None, + vpn_protocols: Optional[List[Union[str, "VpnGatewayTunnelingProtocol"]]] = None, + vpn_authentication_types: Optional[List[Union[str, "VpnAuthenticationType"]]] = None, + vpn_client_root_certificates: Optional[List["VpnServerConfigVpnClientRootCertificate"]] = None, + vpn_client_revoked_certificates: Optional[List["VpnServerConfigVpnClientRevokedCertificate"]] = None, + radius_server_root_certificates: Optional[List["VpnServerConfigRadiusServerRootCertificate"]] = None, + radius_client_root_certificates: Optional[List["VpnServerConfigRadiusClientRootCertificate"]] = None, + vpn_client_ipsec_policies: Optional[List["IpsecPolicy"]] = None, + radius_server_address: Optional[str] = None, + radius_server_secret: Optional[str] = None, + radius_servers: Optional[List["RadiusServer"]] = None, + aad_authentication_parameters: Optional["AadAuthenticationParameters"] = None, + configuration_policy_groups: Optional[List["VpnServerConfigurationPolicyGroup"]] = None, **kwargs ): """ - :keyword description: A description of the security configuration. - :paramtype description: str - :keyword apply_on_network_intent_policy_based_services: Enum list of network intent policy - based services. - :paramtype apply_on_network_intent_policy_based_services: list[str or - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkIntentPolicyBasedService] + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword name_properties_name: The name of the VpnServerConfiguration that is unique within a + resource group. + :paramtype name_properties_name: str + :keyword vpn_protocols: VPN protocols for the VpnServerConfiguration. + :paramtype vpn_protocols: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnGatewayTunnelingProtocol] + :keyword vpn_authentication_types: VPN authentication types for the VpnServerConfiguration. + :paramtype vpn_authentication_types: list[str or + ~azure.mgmt.network.v2022_01_01.models.VpnAuthenticationType] + :keyword vpn_client_root_certificates: VPN client root certificate of VpnServerConfiguration. + :paramtype vpn_client_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigVpnClientRootCertificate] + :keyword vpn_client_revoked_certificates: VPN client revoked certificate of + VpnServerConfiguration. + :paramtype vpn_client_revoked_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigVpnClientRevokedCertificate] + :keyword radius_server_root_certificates: Radius Server root certificate of + VpnServerConfiguration. + :paramtype radius_server_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigRadiusServerRootCertificate] + :keyword radius_client_root_certificates: Radius client root certificate of + VpnServerConfiguration. + :paramtype radius_client_root_certificates: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigRadiusClientRootCertificate] + :keyword vpn_client_ipsec_policies: VpnClientIpsecPolicies for VpnServerConfiguration. + :paramtype vpn_client_ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :keyword radius_server_address: The radius server address property of the + VpnServerConfiguration resource for point to site client connection. + :paramtype radius_server_address: str + :keyword radius_server_secret: The radius secret property of the VpnServerConfiguration + resource for point to site client connection. + :paramtype radius_server_secret: str + :keyword radius_servers: Multiple Radius Server configuration for VpnServerConfiguration. + :paramtype radius_servers: list[~azure.mgmt.network.v2022_01_01.models.RadiusServer] + :keyword aad_authentication_parameters: The set of aad vpn authentication parameters. + :paramtype aad_authentication_parameters: + ~azure.mgmt.network.v2022_01_01.models.AadAuthenticationParameters + :keyword configuration_policy_groups: List of all VpnServerConfigurationPolicyGroups. + :paramtype configuration_policy_groups: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup] """ - super(SecurityAdminConfiguration, self).__init__(**kwargs) - self.system_data = None - self.description = description - self.apply_on_network_intent_policy_based_services = apply_on_network_intent_policy_based_services + super(VpnServerConfiguration, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.name_properties_name = name_properties_name + self.vpn_protocols = vpn_protocols + self.vpn_authentication_types = vpn_authentication_types + self.vpn_client_root_certificates = vpn_client_root_certificates + self.vpn_client_revoked_certificates = vpn_client_revoked_certificates + self.radius_server_root_certificates = radius_server_root_certificates + self.radius_client_root_certificates = radius_client_root_certificates + self.vpn_client_ipsec_policies = vpn_client_ipsec_policies + self.radius_server_address = radius_server_address + self.radius_server_secret = radius_server_secret + self.radius_servers = radius_servers + self.aad_authentication_parameters = aad_authentication_parameters self.provisioning_state = None + self.p2_s_vpn_gateways = None + self.configuration_policy_groups = configuration_policy_groups + self.etag_properties_etag = None -class SecurityAdminConfigurationListResult(msrest.serialization.Model): - """A list of network manager security admin configurations. +class VpnServerConfigurationPolicyGroup(SubResource): + """VpnServerConfigurationPolicyGroup Resource. - :ivar value: Gets a page of security admin configurations. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration] - :ivar next_link: Gets the URL to get the next page of results. - :vartype next_link: str + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar is_default: Shows if this is a Default VpnServerConfigurationPolicyGroup or not. + :vartype is_default: bool + :ivar priority: Priority for VpnServerConfigurationPolicyGroup. + :vartype priority: int + :ivar policy_members: Multiple PolicyMembers for VpnServerConfigurationPolicyGroup. + :vartype policy_members: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroupMember] + :ivar p2_s_connection_configurations: List of references to P2SConnectionConfigurations. + :vartype p2_s_connection_configurations: + list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar provisioning_state: The provisioning state of the VpnServerConfigurationPolicyGroup + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'p2_s_connection_configurations': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + _attribute_map = { - 'value': {'key': 'value', 'type': '[SecurityAdminConfiguration]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'is_default': {'key': 'properties.isDefault', 'type': 'bool'}, + 'priority': {'key': 'properties.priority', 'type': 'int'}, + 'policy_members': {'key': 'properties.policyMembers', 'type': '[VpnServerConfigurationPolicyGroupMember]'}, + 'p2_s_connection_configurations': {'key': 'properties.p2SConnectionConfigurations', 'type': '[SubResource]'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, } def __init__( self, *, - value: Optional[List["SecurityAdminConfiguration"]] = None, - next_link: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + is_default: Optional[bool] = None, + priority: Optional[int] = None, + policy_members: Optional[List["VpnServerConfigurationPolicyGroupMember"]] = None, **kwargs ): """ - :keyword value: Gets a page of security admin configurations. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration] - :keyword next_link: Gets the URL to get the next page of results. - :paramtype next_link: str + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword is_default: Shows if this is a Default VpnServerConfigurationPolicyGroup or not. + :paramtype is_default: bool + :keyword priority: Priority for VpnServerConfigurationPolicyGroup. + :paramtype priority: int + :keyword policy_members: Multiple PolicyMembers for VpnServerConfigurationPolicyGroup. + :paramtype policy_members: + list[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroupMember] """ - super(SecurityAdminConfigurationListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link - + super(VpnServerConfigurationPolicyGroup, self).__init__(id=id, **kwargs) + self.etag = None + self.name = name + self.type = None + self.is_default = is_default + self.priority = priority + self.policy_members = policy_members + self.p2_s_connection_configurations = None + self.provisioning_state = None -class SecurityUserConfiguration(ProxyResource): - """Defines the security user configuration. - Variables are only populated by the server, and will be ignored when sending a request. +class VpnServerConfigurationPolicyGroupMember(msrest.serialization.Model): + """VpnServerConfiguration PolicyGroup member. - :ivar id: Resource ID. - :vartype id: str - :ivar name: Resource name. + :ivar name: Name of the VpnServerConfigurationPolicyGroupMember. :vartype name: str - :ivar type: Resource type. - :vartype type: str - :ivar etag: A unique read-only string that changes whenever the resource is updated. - :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description of the security user configuration. - :vartype description: str - :ivar delete_existing_ns_gs: Flag if need to delete existing network security groups. Possible - values include: "False", "True". - :vartype delete_existing_ns_gs: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingNSGs - :ivar provisioning_state: The provisioning state of the resource. Possible values include: - "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar attribute_type: The Vpn Policy member attribute type. Possible values include: + "CertificateGroupId", "AADGroupId", "RadiusAzureGroupId". + :vartype attribute_type: str or + ~azure.mgmt.network.v2022_01_01.models.VpnPolicyMemberAttributeType + :ivar attribute_value: The value of Attribute used for this + VpnServerConfigurationPolicyGroupMember. + :vartype attribute_value: str """ - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, - 'provisioning_state': {'readonly': True}, + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'attribute_type': {'key': 'attributeType', 'type': 'str'}, + 'attribute_value': {'key': 'attributeValue', 'type': 'str'}, } + def __init__( + self, + *, + name: Optional[str] = None, + attribute_type: Optional[Union[str, "VpnPolicyMemberAttributeType"]] = None, + attribute_value: Optional[str] = None, + **kwargs + ): + """ + :keyword name: Name of the VpnServerConfigurationPolicyGroupMember. + :paramtype name: str + :keyword attribute_type: The Vpn Policy member attribute type. Possible values include: + "CertificateGroupId", "AADGroupId", "RadiusAzureGroupId". + :paramtype attribute_type: str or + ~azure.mgmt.network.v2022_01_01.models.VpnPolicyMemberAttributeType + :keyword attribute_value: The value of Attribute used for this + VpnServerConfigurationPolicyGroupMember. + :paramtype attribute_value: str + """ + super(VpnServerConfigurationPolicyGroupMember, self).__init__(**kwargs) + self.name = name + self.attribute_type = attribute_type + self.attribute_value = attribute_value + + +class VpnServerConfigurationsResponse(msrest.serialization.Model): + """VpnServerConfigurations list associated with VirtualWan Response. + + :ivar vpn_server_configuration_resource_ids: List of VpnServerConfigurations associated with + VirtualWan. + :vartype vpn_server_configuration_resource_ids: list[str] + """ + + _attribute_map = { + 'vpn_server_configuration_resource_ids': {'key': 'vpnServerConfigurationResourceIds', 'type': '[str]'}, + } + + def __init__( + self, + *, + vpn_server_configuration_resource_ids: Optional[List[str]] = None, + **kwargs + ): + """ + :keyword vpn_server_configuration_resource_ids: List of VpnServerConfigurations associated with + VirtualWan. + :paramtype vpn_server_configuration_resource_ids: list[str] + """ + super(VpnServerConfigurationsResponse, self).__init__(**kwargs) + self.vpn_server_configuration_resource_ids = vpn_server_configuration_resource_ids + + +class VpnServerConfigVpnClientRevokedCertificate(msrest.serialization.Model): + """Properties of the revoked VPN client certificate of VpnServerConfiguration. + + :ivar name: The certificate name. + :vartype name: str + :ivar thumbprint: The revoked VPN client certificate thumbprint. + :vartype thumbprint: str + """ + _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'delete_existing_ns_gs': {'key': 'properties.deleteExistingNSGs', 'type': 'str'}, - 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'thumbprint': {'key': 'thumbprint', 'type': 'str'}, } def __init__( self, *, - description: Optional[str] = None, - delete_existing_ns_gs: Optional[Union[str, "DeleteExistingNSGs"]] = None, + name: Optional[str] = None, + thumbprint: Optional[str] = None, **kwargs ): """ - :keyword description: A description of the security user configuration. - :paramtype description: str - :keyword delete_existing_ns_gs: Flag if need to delete existing network security groups. - Possible values include: "False", "True". - :paramtype delete_existing_ns_gs: str or - ~azure.mgmt.network.v2022_02_01_preview.models.DeleteExistingNSGs + :keyword name: The certificate name. + :paramtype name: str + :keyword thumbprint: The revoked VPN client certificate thumbprint. + :paramtype thumbprint: str """ - super(SecurityUserConfiguration, self).__init__(**kwargs) - self.system_data = None - self.description = description - self.delete_existing_ns_gs = delete_existing_ns_gs - self.provisioning_state = None + super(VpnServerConfigVpnClientRevokedCertificate, self).__init__(**kwargs) + self.name = name + self.thumbprint = thumbprint -class SecurityUserConfigurationListResult(msrest.serialization.Model): - """A list of network manager security user configurations. +class VpnServerConfigVpnClientRootCertificate(msrest.serialization.Model): + """Properties of VPN client root certificate of VpnServerConfiguration. - :ivar value: Gets a page of security user configurations. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration] - :ivar next_link: Gets the URL to get the next page of results. - :vartype next_link: str + :ivar name: The certificate name. + :vartype name: str + :ivar public_cert_data: The certificate public data. + :vartype public_cert_data: str """ _attribute_map = { - 'value': {'key': 'value', 'type': '[SecurityUserConfiguration]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'public_cert_data': {'key': 'publicCertData', 'type': 'str'}, } def __init__( self, *, - value: Optional[List["SecurityUserConfiguration"]] = None, - next_link: Optional[str] = None, + name: Optional[str] = None, + public_cert_data: Optional[str] = None, **kwargs ): """ - :keyword value: Gets a page of security user configurations. - :paramtype value: - list[~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration] - :keyword next_link: Gets the URL to get the next page of results. - :paramtype next_link: str + :keyword name: The certificate name. + :paramtype name: str + :keyword public_cert_data: The certificate public data. + :paramtype public_cert_data: str """ - super(SecurityUserConfigurationListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link + super(VpnServerConfigVpnClientRootCertificate, self).__init__(**kwargs) + self.name = name + self.public_cert_data = public_cert_data -class StaticMember(ProxyResource): - """StaticMember Item. +class VpnSite(Resource): + """VpnSite Resource. Variables are only populated by the server, and will be ignored when sending a request. @@ -3954,311 +36940,484 @@ class StaticMember(ProxyResource): :vartype name: str :ivar type: Resource type. :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar resource_id: Resource Id. - :vartype resource_id: str + :ivar virtual_wan: The VirtualWAN to which the vpnSite belongs. + :vartype virtual_wan: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar device_properties: The device properties. + :vartype device_properties: ~azure.mgmt.network.v2022_01_01.models.DeviceProperties + :ivar ip_address: The ip-address for the vpn-site. + :vartype ip_address: str + :ivar site_key: The key for vpn-site that can be used for connections. + :vartype site_key: str + :ivar address_space: The AddressSpace that contains an array of IP address ranges. + :vartype address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :ivar bgp_properties: The set of bgp properties. + :vartype bgp_properties: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + :ivar provisioning_state: The provisioning state of the VPN site resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar is_security_site: IsSecuritySite flag. + :vartype is_security_site: bool + :ivar vpn_site_links: List of all vpn site links. + :vartype vpn_site_links: list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLink] + :ivar o365_policy: Office365 Policy. + :vartype o365_policy: ~azure.mgmt.network.v2022_01_01.models.O365PolicyProperties """ _validation = { - 'id': {'readonly': True}, 'name': {'readonly': True}, 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, + 'provisioning_state': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'resource_id': {'key': 'properties.resourceId', 'type': 'str'}, + 'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'}, + 'device_properties': {'key': 'properties.deviceProperties', 'type': 'DeviceProperties'}, + 'ip_address': {'key': 'properties.ipAddress', 'type': 'str'}, + 'site_key': {'key': 'properties.siteKey', 'type': 'str'}, + 'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'}, + 'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'BgpSettings'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'is_security_site': {'key': 'properties.isSecuritySite', 'type': 'bool'}, + 'vpn_site_links': {'key': 'properties.vpnSiteLinks', 'type': '[VpnSiteLink]'}, + 'o365_policy': {'key': 'properties.o365Policy', 'type': 'O365PolicyProperties'}, } def __init__( self, *, - resource_id: Optional[str] = None, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + virtual_wan: Optional["SubResource"] = None, + device_properties: Optional["DeviceProperties"] = None, + ip_address: Optional[str] = None, + site_key: Optional[str] = None, + address_space: Optional["AddressSpace"] = None, + bgp_properties: Optional["BgpSettings"] = None, + is_security_site: Optional[bool] = None, + vpn_site_links: Optional[List["VpnSiteLink"]] = None, + o365_policy: Optional["O365PolicyProperties"] = None, **kwargs ): """ - :keyword resource_id: Resource Id. - :paramtype resource_id: str + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword virtual_wan: The VirtualWAN to which the vpnSite belongs. + :paramtype virtual_wan: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword device_properties: The device properties. + :paramtype device_properties: ~azure.mgmt.network.v2022_01_01.models.DeviceProperties + :keyword ip_address: The ip-address for the vpn-site. + :paramtype ip_address: str + :keyword site_key: The key for vpn-site that can be used for connections. + :paramtype site_key: str + :keyword address_space: The AddressSpace that contains an array of IP address ranges. + :paramtype address_space: ~azure.mgmt.network.v2022_01_01.models.AddressSpace + :keyword bgp_properties: The set of bgp properties. + :paramtype bgp_properties: ~azure.mgmt.network.v2022_01_01.models.BgpSettings + :keyword is_security_site: IsSecuritySite flag. + :paramtype is_security_site: bool + :keyword vpn_site_links: List of all vpn site links. + :paramtype vpn_site_links: list[~azure.mgmt.network.v2022_01_01.models.VpnSiteLink] + :keyword o365_policy: Office365 Policy. + :paramtype o365_policy: ~azure.mgmt.network.v2022_01_01.models.O365PolicyProperties """ - super(StaticMember, self).__init__(**kwargs) - self.system_data = None - self.resource_id = resource_id + super(VpnSite, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.virtual_wan = virtual_wan + self.device_properties = device_properties + self.ip_address = ip_address + self.site_key = site_key + self.address_space = address_space + self.bgp_properties = bgp_properties + self.provisioning_state = None + self.is_security_site = is_security_site + self.vpn_site_links = vpn_site_links + self.o365_policy = o365_policy -class StaticMemberListResult(msrest.serialization.Model): - """Result of the request to list StaticMember. It contains a list of groups and a URL link to get the next set of results. +class VpnSiteId(msrest.serialization.Model): + """VpnSite Resource. - :ivar value: Gets a page of StaticMember. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.StaticMember] - :ivar next_link: Gets the URL to get the next set of results. - :vartype next_link: str + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar vpn_site: The resource-uri of the vpn-site for which config is to be fetched. + :vartype vpn_site: str """ + _validation = { + 'vpn_site': {'readonly': True}, + } + _attribute_map = { - 'value': {'key': 'value', 'type': '[StaticMember]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'vpn_site': {'key': 'vpnSite', 'type': 'str'}, } def __init__( self, - *, - value: Optional[List["StaticMember"]] = None, - next_link: Optional[str] = None, **kwargs ): """ - :keyword value: Gets a page of StaticMember. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.StaticMember] - :keyword next_link: Gets the URL to get the next set of results. - :paramtype next_link: str """ - super(StaticMemberListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link + super(VpnSiteId, self).__init__(**kwargs) + self.vpn_site = None -class SubResource(msrest.serialization.Model): - """Reference to another subresource. +class VpnSiteLink(SubResource): + """VpnSiteLink Resource. + + Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Resource ID. :vartype id: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar link_properties: The link provider properties. + :vartype link_properties: ~azure.mgmt.network.v2022_01_01.models.VpnLinkProviderProperties + :ivar ip_address: The ip-address for the vpn-site-link. + :vartype ip_address: str + :ivar fqdn: FQDN of vpn-site-link. + :vartype fqdn: str + :ivar bgp_properties: The set of bgp properties. + :vartype bgp_properties: ~azure.mgmt.network.v2022_01_01.models.VpnLinkBgpSettings + :ivar provisioning_state: The provisioning state of the VPN site link resource. Possible values + include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState """ + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + } + _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'link_properties': {'key': 'properties.linkProperties', 'type': 'VpnLinkProviderProperties'}, + 'ip_address': {'key': 'properties.ipAddress', 'type': 'str'}, + 'fqdn': {'key': 'properties.fqdn', 'type': 'str'}, + 'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'VpnLinkBgpSettings'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, } def __init__( self, *, id: Optional[str] = None, + name: Optional[str] = None, + link_properties: Optional["VpnLinkProviderProperties"] = None, + ip_address: Optional[str] = None, + fqdn: Optional[str] = None, + bgp_properties: Optional["VpnLinkBgpSettings"] = None, **kwargs ): """ :keyword id: Resource ID. :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword link_properties: The link provider properties. + :paramtype link_properties: ~azure.mgmt.network.v2022_01_01.models.VpnLinkProviderProperties + :keyword ip_address: The ip-address for the vpn-site-link. + :paramtype ip_address: str + :keyword fqdn: FQDN of vpn-site-link. + :paramtype fqdn: str + :keyword bgp_properties: The set of bgp properties. + :paramtype bgp_properties: ~azure.mgmt.network.v2022_01_01.models.VpnLinkBgpSettings """ - super(SubResource, self).__init__(**kwargs) - self.id = id + super(VpnSiteLink, self).__init__(id=id, **kwargs) + self.etag = None + self.name = name + self.type = None + self.link_properties = link_properties + self.ip_address = ip_address + self.fqdn = fqdn + self.bgp_properties = bgp_properties + self.provisioning_state = None -class SystemData(msrest.serialization.Model): - """Metadata pertaining to creation and last modification of the resource. +class VpnSiteLinkConnection(SubResource): + """VpnSiteLinkConnection Resource. - :ivar created_by: The identity that created the resource. - :vartype created_by: str - :ivar created_by_type: The type of identity that created the resource. Possible values include: - "User", "Application", "ManagedIdentity", "Key". - :vartype created_by_type: str or ~azure.mgmt.network.v2022_02_01_preview.models.CreatedByType - :ivar created_at: The timestamp of resource creation (UTC). - :vartype created_at: ~datetime.datetime - :ivar last_modified_by: The identity that last modified the resource. - :vartype last_modified_by: str - :ivar last_modified_by_type: The type of identity that last modified the resource. Possible - values include: "User", "Application", "ManagedIdentity", "Key". - :vartype last_modified_by_type: str or - ~azure.mgmt.network.v2022_02_01_preview.models.CreatedByType - :ivar last_modified_at: The type of identity that last modified the resource. - :vartype last_modified_at: ~datetime.datetime + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: The name of the resource that is unique within a resource group. This name can be + used to access the resource. + :vartype name: str + :ivar etag: A unique read-only string that changes whenever the resource is updated. + :vartype etag: str + :ivar type: Resource type. + :vartype type: str + :ivar vpn_site_link: Id of the connected vpn site link. + :vartype vpn_site_link: ~azure.mgmt.network.v2022_01_01.models.SubResource + :ivar routing_weight: Routing weight for vpn connection. + :vartype routing_weight: int + :ivar vpn_link_connection_mode: Vpn link connection mode. Possible values include: "Default", + "ResponderOnly", "InitiatorOnly". + :vartype vpn_link_connection_mode: str or + ~azure.mgmt.network.v2022_01_01.models.VpnLinkConnectionMode + :ivar connection_status: The connection status. Possible values include: "Unknown", + "Connecting", "Connected", "NotConnected". + :vartype connection_status: str or ~azure.mgmt.network.v2022_01_01.models.VpnConnectionStatus + :ivar vpn_connection_protocol_type: Connection protocol used for this connection. Possible + values include: "IKEv2", "IKEv1". + :vartype vpn_connection_protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :ivar ingress_bytes_transferred: Ingress bytes transferred. + :vartype ingress_bytes_transferred: long + :ivar egress_bytes_transferred: Egress bytes transferred. + :vartype egress_bytes_transferred: long + :ivar connection_bandwidth: Expected bandwidth in MBPS. + :vartype connection_bandwidth: int + :ivar shared_key: SharedKey for the vpn connection. + :vartype shared_key: str + :ivar enable_bgp: EnableBgp flag. + :vartype enable_bgp: bool + :ivar vpn_gateway_custom_bgp_addresses: vpnGatewayCustomBgpAddresses used by this connection. + :vartype vpn_gateway_custom_bgp_addresses: + list[~azure.mgmt.network.v2022_01_01.models.GatewayCustomBgpIpAddressIpConfiguration] + :ivar use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :vartype use_policy_based_traffic_selectors: bool + :ivar ipsec_policies: The IPSec Policies to be considered by this connection. + :vartype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :ivar enable_rate_limiting: EnableBgp flag. + :vartype enable_rate_limiting: bool + :ivar use_local_azure_ip_address: Use local azure ip to initiate connection. + :vartype use_local_azure_ip_address: bool + :ivar provisioning_state: The provisioning state of the VPN site link connection resource. + Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar ingress_nat_rules: List of ingress NatRules. + :vartype ingress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar egress_nat_rules: List of egress NatRules. + :vartype egress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] """ - _attribute_map = { - 'created_by': {'key': 'createdBy', 'type': 'str'}, - 'created_by_type': {'key': 'createdByType', 'type': 'str'}, - 'created_at': {'key': 'createdAt', 'type': 'iso-8601'}, - 'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'}, - 'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'}, - 'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'}, + _validation = { + 'etag': {'readonly': True}, + 'type': {'readonly': True}, + 'connection_status': {'readonly': True}, + 'ingress_bytes_transferred': {'readonly': True}, + 'egress_bytes_transferred': {'readonly': True}, + 'provisioning_state': {'readonly': True}, } - def __init__( - self, - *, - created_by: Optional[str] = None, - created_by_type: Optional[Union[str, "CreatedByType"]] = None, - created_at: Optional[datetime.datetime] = None, - last_modified_by: Optional[str] = None, - last_modified_by_type: Optional[Union[str, "CreatedByType"]] = None, - last_modified_at: Optional[datetime.datetime] = None, - **kwargs - ): - """ - :keyword created_by: The identity that created the resource. - :paramtype created_by: str - :keyword created_by_type: The type of identity that created the resource. Possible values - include: "User", "Application", "ManagedIdentity", "Key". - :paramtype created_by_type: str or ~azure.mgmt.network.v2022_02_01_preview.models.CreatedByType - :keyword created_at: The timestamp of resource creation (UTC). - :paramtype created_at: ~datetime.datetime - :keyword last_modified_by: The identity that last modified the resource. - :paramtype last_modified_by: str - :keyword last_modified_by_type: The type of identity that last modified the resource. Possible - values include: "User", "Application", "ManagedIdentity", "Key". - :paramtype last_modified_by_type: str or - ~azure.mgmt.network.v2022_02_01_preview.models.CreatedByType - :keyword last_modified_at: The type of identity that last modified the resource. - :paramtype last_modified_at: ~datetime.datetime - """ - super(SystemData, self).__init__(**kwargs) - self.created_by = created_by - self.created_by_type = created_by_type - self.created_at = created_at - self.last_modified_by = last_modified_by - self.last_modified_by_type = last_modified_by_type - self.last_modified_at = last_modified_at - - -class TagsObject(msrest.serialization.Model): - """Tags object for patch operations. - - :ivar tags: A set of tags. Resource tags. - :vartype tags: dict[str, str] - """ - _attribute_map = { - 'tags': {'key': 'tags', 'type': '{str}'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'etag': {'key': 'etag', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'vpn_site_link': {'key': 'properties.vpnSiteLink', 'type': 'SubResource'}, + 'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'}, + 'vpn_link_connection_mode': {'key': 'properties.vpnLinkConnectionMode', 'type': 'str'}, + 'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'}, + 'vpn_connection_protocol_type': {'key': 'properties.vpnConnectionProtocolType', 'type': 'str'}, + 'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'}, + 'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'}, + 'connection_bandwidth': {'key': 'properties.connectionBandwidth', 'type': 'int'}, + 'shared_key': {'key': 'properties.sharedKey', 'type': 'str'}, + 'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'}, + 'vpn_gateway_custom_bgp_addresses': {'key': 'properties.vpnGatewayCustomBgpAddresses', 'type': '[GatewayCustomBgpIpAddressIpConfiguration]'}, + 'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'}, + 'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'}, + 'enable_rate_limiting': {'key': 'properties.enableRateLimiting', 'type': 'bool'}, + 'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'ingress_nat_rules': {'key': 'properties.ingressNatRules', 'type': '[SubResource]'}, + 'egress_nat_rules': {'key': 'properties.egressNatRules', 'type': '[SubResource]'}, } def __init__( self, *, - tags: Optional[Dict[str, str]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + vpn_site_link: Optional["SubResource"] = None, + routing_weight: Optional[int] = None, + vpn_link_connection_mode: Optional[Union[str, "VpnLinkConnectionMode"]] = None, + vpn_connection_protocol_type: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None, + connection_bandwidth: Optional[int] = None, + shared_key: Optional[str] = None, + enable_bgp: Optional[bool] = None, + vpn_gateway_custom_bgp_addresses: Optional[List["GatewayCustomBgpIpAddressIpConfiguration"]] = None, + use_policy_based_traffic_selectors: Optional[bool] = None, + ipsec_policies: Optional[List["IpsecPolicy"]] = None, + enable_rate_limiting: Optional[bool] = None, + use_local_azure_ip_address: Optional[bool] = None, + ingress_nat_rules: Optional[List["SubResource"]] = None, + egress_nat_rules: Optional[List["SubResource"]] = None, **kwargs ): """ - :keyword tags: A set of tags. Resource tags. - :paramtype tags: dict[str, str] + :keyword id: Resource ID. + :paramtype id: str + :keyword name: The name of the resource that is unique within a resource group. This name can + be used to access the resource. + :paramtype name: str + :keyword vpn_site_link: Id of the connected vpn site link. + :paramtype vpn_site_link: ~azure.mgmt.network.v2022_01_01.models.SubResource + :keyword routing_weight: Routing weight for vpn connection. + :paramtype routing_weight: int + :keyword vpn_link_connection_mode: Vpn link connection mode. Possible values include: + "Default", "ResponderOnly", "InitiatorOnly". + :paramtype vpn_link_connection_mode: str or + ~azure.mgmt.network.v2022_01_01.models.VpnLinkConnectionMode + :keyword vpn_connection_protocol_type: Connection protocol used for this connection. Possible + values include: "IKEv2", "IKEv1". + :paramtype vpn_connection_protocol_type: str or + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionProtocol + :keyword connection_bandwidth: Expected bandwidth in MBPS. + :paramtype connection_bandwidth: int + :keyword shared_key: SharedKey for the vpn connection. + :paramtype shared_key: str + :keyword enable_bgp: EnableBgp flag. + :paramtype enable_bgp: bool + :keyword vpn_gateway_custom_bgp_addresses: vpnGatewayCustomBgpAddresses used by this + connection. + :paramtype vpn_gateway_custom_bgp_addresses: + list[~azure.mgmt.network.v2022_01_01.models.GatewayCustomBgpIpAddressIpConfiguration] + :keyword use_policy_based_traffic_selectors: Enable policy-based traffic selectors. + :paramtype use_policy_based_traffic_selectors: bool + :keyword ipsec_policies: The IPSec Policies to be considered by this connection. + :paramtype ipsec_policies: list[~azure.mgmt.network.v2022_01_01.models.IpsecPolicy] + :keyword enable_rate_limiting: EnableBgp flag. + :paramtype enable_rate_limiting: bool + :keyword use_local_azure_ip_address: Use local azure ip to initiate connection. + :paramtype use_local_azure_ip_address: bool + :keyword ingress_nat_rules: List of ingress NatRules. + :paramtype ingress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :keyword egress_nat_rules: List of egress NatRules. + :paramtype egress_nat_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] """ - super(TagsObject, self).__init__(**kwargs) - self.tags = tags + super(VpnSiteLinkConnection, self).__init__(id=id, **kwargs) + self.name = name + self.etag = None + self.type = None + self.vpn_site_link = vpn_site_link + self.routing_weight = routing_weight + self.vpn_link_connection_mode = vpn_link_connection_mode + self.connection_status = None + self.vpn_connection_protocol_type = vpn_connection_protocol_type + self.ingress_bytes_transferred = None + self.egress_bytes_transferred = None + self.connection_bandwidth = connection_bandwidth + self.shared_key = shared_key + self.enable_bgp = enable_bgp + self.vpn_gateway_custom_bgp_addresses = vpn_gateway_custom_bgp_addresses + self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors + self.ipsec_policies = ipsec_policies + self.enable_rate_limiting = enable_rate_limiting + self.use_local_azure_ip_address = use_local_azure_ip_address + self.provisioning_state = None + self.ingress_nat_rules = ingress_nat_rules + self.egress_nat_rules = egress_nat_rules -class UserRule(BaseUserRule): - """Network security user rule. +class WebApplicationFirewallCustomRule(msrest.serialization.Model): + """Defines contents of a web application rule. Variables are only populated by the server, and will be ignored when sending a request. All required parameters must be populated in order to send to Azure. - :ivar id: Resource ID. - :vartype id: str - :ivar name: Resource name. + :ivar name: The name of the resource that is unique within a policy. This name can be used to + access the resource. :vartype name: str - :ivar type: Resource type. - :vartype type: str :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar kind: Required. Whether the rule is custom or default.Constant filled by server. Possible - values include: "Custom", "Default". - :vartype kind: str or ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleKind - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description for this rule. - :vartype description: str - :ivar protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp", - "Icmp", "Esp", "Any", "Ah". - :vartype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :ivar sources: The CIDR or source IP ranges. - :vartype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar destinations: The destination address prefixes. CIDR or destination IP ranges. - :vartype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :ivar source_port_ranges: The source port ranges. - :vartype source_port_ranges: list[str] - :ivar destination_port_ranges: The destination port ranges. - :vartype destination_port_ranges: list[str] - :ivar direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :vartype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection - :ivar provisioning_state: The provisioning state of the security configuration user rule - resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar priority: Required. Priority of the rule. Rules with a lower value will be evaluated + before rules with a higher value. + :vartype priority: int + :ivar rule_type: Required. The rule type. Possible values include: "MatchRule", "Invalid". + :vartype rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallRuleType + :ivar match_conditions: Required. List of match conditions. + :vartype match_conditions: list[~azure.mgmt.network.v2022_01_01.models.MatchCondition] + :ivar action: Required. Type of Actions. Possible values include: "Allow", "Block", "Log". + :vartype action: str or ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallAction """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, + 'name': {'max_length': 128, 'min_length': 0}, 'etag': {'readonly': True}, - 'kind': {'required': True}, - 'system_data': {'readonly': True}, - 'provisioning_state': {'readonly': True}, + 'priority': {'required': True}, + 'rule_type': {'required': True}, + 'match_conditions': {'required': True}, + 'action': {'required': True}, } _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'protocol': {'key': 'properties.protocol', 'type': 'str'}, - 'sources': {'key': 'properties.sources', 'type': '[AddressPrefixItem]'}, - 'destinations': {'key': 'properties.destinations', 'type': '[AddressPrefixItem]'}, - 'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'}, - 'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'}, - 'direction': {'key': 'properties.direction', 'type': 'str'}, - 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'priority': {'key': 'priority', 'type': 'int'}, + 'rule_type': {'key': 'ruleType', 'type': 'str'}, + 'match_conditions': {'key': 'matchConditions', 'type': '[MatchCondition]'}, + 'action': {'key': 'action', 'type': 'str'}, } def __init__( self, *, - description: Optional[str] = None, - protocol: Optional[Union[str, "SecurityConfigurationRuleProtocol"]] = None, - sources: Optional[List["AddressPrefixItem"]] = None, - destinations: Optional[List["AddressPrefixItem"]] = None, - source_port_ranges: Optional[List[str]] = None, - destination_port_ranges: Optional[List[str]] = None, - direction: Optional[Union[str, "SecurityConfigurationRuleDirection"]] = None, + priority: int, + rule_type: Union[str, "WebApplicationFirewallRuleType"], + match_conditions: List["MatchCondition"], + action: Union[str, "WebApplicationFirewallAction"], + name: Optional[str] = None, **kwargs ): """ - :keyword description: A description for this rule. - :paramtype description: str - :keyword protocol: Network protocol this rule applies to. Possible values include: "Tcp", - "Udp", "Icmp", "Esp", "Any", "Ah". - :paramtype protocol: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleProtocol - :keyword sources: The CIDR or source IP ranges. - :paramtype sources: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :keyword destinations: The destination address prefixes. CIDR or destination IP ranges. - :paramtype destinations: list[~azure.mgmt.network.v2022_02_01_preview.models.AddressPrefixItem] - :keyword source_port_ranges: The source port ranges. - :paramtype source_port_ranges: list[str] - :keyword destination_port_ranges: The destination port ranges. - :paramtype destination_port_ranges: list[str] - :keyword direction: Indicates if the traffic matched against the rule in inbound or outbound. - Possible values include: "Inbound", "Outbound". - :paramtype direction: str or - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityConfigurationRuleDirection + :keyword name: The name of the resource that is unique within a policy. This name can be used + to access the resource. + :paramtype name: str + :keyword priority: Required. Priority of the rule. Rules with a lower value will be evaluated + before rules with a higher value. + :paramtype priority: int + :keyword rule_type: Required. The rule type. Possible values include: "MatchRule", "Invalid". + :paramtype rule_type: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallRuleType + :keyword match_conditions: Required. List of match conditions. + :paramtype match_conditions: list[~azure.mgmt.network.v2022_01_01.models.MatchCondition] + :keyword action: Required. Type of Actions. Possible values include: "Allow", "Block", "Log". + :paramtype action: str or ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallAction """ - super(UserRule, self).__init__(**kwargs) - self.kind = 'Custom' # type: str - self.description = description - self.protocol = protocol - self.sources = sources - self.destinations = destinations - self.source_port_ranges = source_port_ranges - self.destination_port_ranges = destination_port_ranges - self.direction = direction - self.provisioning_state = None + super(WebApplicationFirewallCustomRule, self).__init__(**kwargs) + self.name = name + self.etag = None + self.priority = priority + self.rule_type = rule_type + self.match_conditions = match_conditions + self.action = action -class UserRuleCollection(ProxyResource): - """Defines the user rule collection. +class WebApplicationFirewallPolicy(Resource): + """Defines web application firewall policy. Variables are only populated by the server, and will be ignored when sending a request. @@ -4268,121 +37427,128 @@ class UserRuleCollection(ProxyResource): :vartype name: str :ivar type: Resource type. :vartype type: str + :ivar location: Resource location. + :vartype location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] :ivar etag: A unique read-only string that changes whenever the resource is updated. :vartype etag: str - :ivar system_data: The system metadata related to this resource. - :vartype system_data: ~azure.mgmt.network.v2022_02_01_preview.models.SystemData - :ivar description: A description of the user rule collection. - :vartype description: str - :ivar applies_to_groups: Groups for configuration. - :vartype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] - :ivar provisioning_state: The provisioning state of the resource. Possible values include: - "Succeeded", "Updating", "Deleting", "Failed". - :vartype provisioning_state: str or - ~azure.mgmt.network.v2022_02_01_preview.models.ProvisioningState + :ivar policy_settings: The PolicySettings for policy. + :vartype policy_settings: ~azure.mgmt.network.v2022_01_01.models.PolicySettings + :ivar custom_rules: The custom rules inside the policy. + :vartype custom_rules: + list[~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallCustomRule] + :ivar application_gateways: A collection of references to application gateways. + :vartype application_gateways: list[~azure.mgmt.network.v2022_01_01.models.ApplicationGateway] + :ivar provisioning_state: The provisioning state of the web application firewall policy + resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed". + :vartype provisioning_state: str or ~azure.mgmt.network.v2022_01_01.models.ProvisioningState + :ivar resource_state: Resource status of the policy. Possible values include: "Creating", + "Enabling", "Enabled", "Disabling", "Disabled", "Deleting". + :vartype resource_state: str or + ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicyResourceState + :ivar managed_rules: Describes the managedRules structure. + :vartype managed_rules: ~azure.mgmt.network.v2022_01_01.models.ManagedRulesDefinition + :ivar http_listeners: A collection of references to application gateway http listeners. + :vartype http_listeners: list[~azure.mgmt.network.v2022_01_01.models.SubResource] + :ivar path_based_rules: A collection of references to application gateway path rules. + :vartype path_based_rules: list[~azure.mgmt.network.v2022_01_01.models.SubResource] """ _validation = { - 'id': {'readonly': True}, 'name': {'readonly': True}, 'type': {'readonly': True}, 'etag': {'readonly': True}, - 'system_data': {'readonly': True}, + 'application_gateways': {'readonly': True}, 'provisioning_state': {'readonly': True}, + 'resource_state': {'readonly': True}, + 'http_listeners': {'readonly': True}, + 'path_based_rules': {'readonly': True}, } _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, 'etag': {'key': 'etag', 'type': 'str'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'applies_to_groups': {'key': 'properties.appliesToGroups', 'type': '[NetworkManagerSecurityGroupItem]'}, + 'policy_settings': {'key': 'properties.policySettings', 'type': 'PolicySettings'}, + 'custom_rules': {'key': 'properties.customRules', 'type': '[WebApplicationFirewallCustomRule]'}, + 'application_gateways': {'key': 'properties.applicationGateways', 'type': '[ApplicationGateway]'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'resource_state': {'key': 'properties.resourceState', 'type': 'str'}, + 'managed_rules': {'key': 'properties.managedRules', 'type': 'ManagedRulesDefinition'}, + 'http_listeners': {'key': 'properties.httpListeners', 'type': '[SubResource]'}, + 'path_based_rules': {'key': 'properties.pathBasedRules', 'type': '[SubResource]'}, } def __init__( self, *, - description: Optional[str] = None, - applies_to_groups: Optional[List["NetworkManagerSecurityGroupItem"]] = None, + id: Optional[str] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + policy_settings: Optional["PolicySettings"] = None, + custom_rules: Optional[List["WebApplicationFirewallCustomRule"]] = None, + managed_rules: Optional["ManagedRulesDefinition"] = None, **kwargs ): """ - :keyword description: A description of the user rule collection. - :paramtype description: str - :keyword applies_to_groups: Groups for configuration. - :paramtype applies_to_groups: - list[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerSecurityGroupItem] + :keyword id: Resource ID. + :paramtype id: str + :keyword location: Resource location. + :paramtype location: str + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword policy_settings: The PolicySettings for policy. + :paramtype policy_settings: ~azure.mgmt.network.v2022_01_01.models.PolicySettings + :keyword custom_rules: The custom rules inside the policy. + :paramtype custom_rules: + list[~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallCustomRule] + :keyword managed_rules: Describes the managedRules structure. + :paramtype managed_rules: ~azure.mgmt.network.v2022_01_01.models.ManagedRulesDefinition """ - super(UserRuleCollection, self).__init__(**kwargs) - self.system_data = None - self.description = description - self.applies_to_groups = applies_to_groups + super(WebApplicationFirewallPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs) + self.etag = None + self.policy_settings = policy_settings + self.custom_rules = custom_rules + self.application_gateways = None self.provisioning_state = None + self.resource_state = None + self.managed_rules = managed_rules + self.http_listeners = None + self.path_based_rules = None -class UserRuleCollectionListResult(msrest.serialization.Model): - """Security user configuration rule collection list result. +class WebApplicationFirewallPolicyListResult(msrest.serialization.Model): + """Result of the request to list WebApplicationFirewallPolicies. It contains a list of WebApplicationFirewallPolicy objects and a URL link to get the next set of results. - :ivar value: A list of network manager security user configuration rule collections. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection] - :ivar next_link: Gets the URL to get the next set of results. + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: List of WebApplicationFirewallPolicies within a resource group. + :vartype value: list[~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicy] + :ivar next_link: URL to get the next set of WebApplicationFirewallPolicy objects if there are + any. :vartype next_link: str """ - _attribute_map = { - 'value': {'key': 'value', 'type': '[UserRuleCollection]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + _validation = { + 'value': {'readonly': True}, + 'next_link': {'readonly': True}, } - def __init__( - self, - *, - value: Optional[List["UserRuleCollection"]] = None, - next_link: Optional[str] = None, - **kwargs - ): - """ - :keyword value: A list of network manager security user configuration rule collections. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection] - :keyword next_link: Gets the URL to get the next set of results. - :paramtype next_link: str - """ - super(UserRuleCollectionListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link - - -class UserRuleListResult(msrest.serialization.Model): - """security user rule list result. - - :ivar value: A list of user rules. - :vartype value: list[~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule] - :ivar next_link: The URL to get the next set of results. - :vartype next_link: str - """ - _attribute_map = { - 'value': {'key': 'value', 'type': '[BaseUserRule]'}, + 'value': {'key': 'value', 'type': '[WebApplicationFirewallPolicy]'}, 'next_link': {'key': 'nextLink', 'type': 'str'}, } def __init__( self, - *, - value: Optional[List["BaseUserRule"]] = None, - next_link: Optional[str] = None, **kwargs ): """ - :keyword value: A list of user rules. - :paramtype value: list[~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule] - :keyword next_link: The URL to get the next set of results. - :paramtype next_link: str """ - super(UserRuleListResult, self).__init__(**kwargs) - self.value = value - self.next_link = next_link + super(WebApplicationFirewallPolicyListResult, self).__init__(**kwargs) + self.value = None + self.next_link = None diff --git a/src/network-manager/azext_network_manager/vendored_sdks/models/_network_management_client_enums.py b/src/network-manager/azext_network_manager/vendored_sdks/models/_network_management_client_enums.py index b8972792d6a..bfdcaf49874 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/models/_network_management_client_enums.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/models/_network_management_client_enums.py @@ -32,6 +32,167 @@ class AdminRuleKind(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): CUSTOM = "Custom" DEFAULT = "Default" +class ApplicationGatewayBackendHealthServerHealth(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Health of backend server. + """ + + UNKNOWN = "Unknown" + UP = "Up" + DOWN = "Down" + PARTIAL = "Partial" + DRAINING = "Draining" + +class ApplicationGatewayCookieBasedAffinity(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Cookie based affinity. + """ + + ENABLED = "Enabled" + DISABLED = "Disabled" + +class ApplicationGatewayCustomErrorStatusCode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Status code of the application gateway customer error. + """ + + HTTP_STATUS403 = "HttpStatus403" + HTTP_STATUS502 = "HttpStatus502" + +class ApplicationGatewayFirewallMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Web application firewall mode. + """ + + DETECTION = "Detection" + PREVENTION = "Prevention" + +class ApplicationGatewayLoadDistributionAlgorithm(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Load Distribution Algorithm enums. + """ + + ROUND_ROBIN = "RoundRobin" + LEAST_CONNECTIONS = "LeastConnections" + IP_HASH = "IpHash" + +class ApplicationGatewayOperationalState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Operational state of the application gateway resource. + """ + + STOPPED = "Stopped" + STARTING = "Starting" + RUNNING = "Running" + STOPPING = "Stopping" + +class ApplicationGatewayProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Application Gateway protocol. + """ + + HTTP = "Http" + HTTPS = "Https" + TCP = "Tcp" + TLS = "Tls" + +class ApplicationGatewayRedirectType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Redirect type enum. + """ + + PERMANENT = "Permanent" + FOUND = "Found" + SEE_OTHER = "SeeOther" + TEMPORARY = "Temporary" + +class ApplicationGatewayRequestRoutingRuleType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Rule type. + """ + + BASIC = "Basic" + PATH_BASED_ROUTING = "PathBasedRouting" + +class ApplicationGatewaySkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Name of an application gateway SKU. + """ + + STANDARD_SMALL = "Standard_Small" + STANDARD_MEDIUM = "Standard_Medium" + STANDARD_LARGE = "Standard_Large" + WAF_MEDIUM = "WAF_Medium" + WAF_LARGE = "WAF_Large" + STANDARD_V2 = "Standard_v2" + WAF_V2 = "WAF_v2" + +class ApplicationGatewaySslCipherSuite(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Ssl cipher suites enums. + """ + + TLS_ECDHE_RSA_WITH_AES256_CBC_SHA384 = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" + TLS_ECDHE_RSA_WITH_AES128_CBC_SHA256 = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + TLS_ECDHE_RSA_WITH_AES256_CBC_SHA = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + TLS_ECDHE_RSA_WITH_AES128_CBC_SHA = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" + TLS_DHE_RSA_WITH_AES256_GCM_SHA384 = "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" + TLS_DHE_RSA_WITH_AES128_GCM_SHA256 = "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" + TLS_DHE_RSA_WITH_AES256_CBC_SHA = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" + TLS_DHE_RSA_WITH_AES128_CBC_SHA = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" + TLS_RSA_WITH_AES256_GCM_SHA384 = "TLS_RSA_WITH_AES_256_GCM_SHA384" + TLS_RSA_WITH_AES128_GCM_SHA256 = "TLS_RSA_WITH_AES_128_GCM_SHA256" + TLS_RSA_WITH_AES256_CBC_SHA256 = "TLS_RSA_WITH_AES_256_CBC_SHA256" + TLS_RSA_WITH_AES128_CBC_SHA256 = "TLS_RSA_WITH_AES_128_CBC_SHA256" + TLS_RSA_WITH_AES256_CBC_SHA = "TLS_RSA_WITH_AES_256_CBC_SHA" + TLS_RSA_WITH_AES128_CBC_SHA = "TLS_RSA_WITH_AES_128_CBC_SHA" + TLS_ECDHE_ECDSA_WITH_AES256_GCM_SHA384 = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" + TLS_ECDHE_ECDSA_WITH_AES128_GCM_SHA256 = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" + TLS_ECDHE_ECDSA_WITH_AES256_CBC_SHA384 = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" + TLS_ECDHE_ECDSA_WITH_AES128_CBC_SHA256 = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" + TLS_ECDHE_ECDSA_WITH_AES256_CBC_SHA = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" + TLS_ECDHE_ECDSA_WITH_AES128_CBC_SHA = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" + TLS_DHE_DSS_WITH_AES256_CBC_SHA256 = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" + TLS_DHE_DSS_WITH_AES128_CBC_SHA256 = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" + TLS_DHE_DSS_WITH_AES256_CBC_SHA = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" + TLS_DHE_DSS_WITH_AES128_CBC_SHA = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" + TLS_RSA_WITH3_DES_EDE_CBC_SHA = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" + TLS_DHE_DSS_WITH3_DES_EDE_CBC_SHA = "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" + TLS_ECDHE_RSA_WITH_AES128_GCM_SHA256 = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" + TLS_ECDHE_RSA_WITH_AES256_GCM_SHA384 = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" + +class ApplicationGatewaySslPolicyName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Ssl predefined policy name enums. + """ + + APP_GW_SSL_POLICY20150501 = "AppGwSslPolicy20150501" + APP_GW_SSL_POLICY20170401 = "AppGwSslPolicy20170401" + APP_GW_SSL_POLICY20170401_S = "AppGwSslPolicy20170401S" + APP_GW_SSL_POLICY20220101 = "AppGwSslPolicy20220101" + APP_GW_SSL_POLICY20220101_S = "AppGwSslPolicy20220101S" + +class ApplicationGatewaySslPolicyType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Type of Ssl Policy. + """ + + PREDEFINED = "Predefined" + CUSTOM = "Custom" + CUSTOM_V2 = "CustomV2" + +class ApplicationGatewaySslProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Ssl protocol enums. + """ + + TL_SV1_0 = "TLSv1_0" + TL_SV1_1 = "TLSv1_1" + TL_SV1_2 = "TLSv1_2" + TL_SV1_3 = "TLSv1_3" + +class ApplicationGatewayTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Tier of an application gateway. + """ + + STANDARD = "Standard" + WAF = "WAF" + STANDARD_V2 = "Standard_v2" + WAF_V2 = "WAF_v2" + +class AssociationType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The association type of the child resource to the parent resource. + """ + + ASSOCIATED = "Associated" + CONTAINS = "Contains" + class AuthenticationMethod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """VPN client authentication method. """ @@ -39,123 +200,960 @@ class AuthenticationMethod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): EAPTLS = "EAPTLS" EAPMSCHA_PV2 = "EAPMSCHAPv2" +class AuthorizationUseStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The authorization use status. + """ + + AVAILABLE = "Available" + IN_USE = "InUse" + +class AutoLearnPrivateRangesMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The operation mode for automatically learning private ranges to not be SNAT + """ + + ENABLED = "Enabled" + DISABLED = "Disabled" + +class AzureFirewallApplicationRuleProtocolType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The protocol type of a Application Rule resource. + """ + + HTTP = "Http" + HTTPS = "Https" + MSSQL = "Mssql" + +class AzureFirewallNatRCActionType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The action type of a NAT rule collection. + """ + + SNAT = "Snat" + DNAT = "Dnat" + +class AzureFirewallNetworkRuleProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The protocol of a Network Rule resource. + """ + + TCP = "TCP" + UDP = "UDP" + ANY = "Any" + ICMP = "ICMP" + +class AzureFirewallRCActionType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The action type of a rule collection. + """ + + ALLOW = "Allow" + DENY = "Deny" + +class AzureFirewallSkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Name of an Azure Firewall SKU. + """ + + AZFW_VNET = "AZFW_VNet" + AZFW_HUB = "AZFW_Hub" + +class AzureFirewallSkuTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Tier of an Azure Firewall. + """ + + STANDARD = "Standard" + PREMIUM = "Premium" + BASIC = "Basic" + +class AzureFirewallThreatIntelMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The operation mode for Threat Intel. + """ + + ALERT = "Alert" + DENY = "Deny" + OFF = "Off" + +class BastionConnectProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The protocol used to connect to the target. + """ + + SSH = "SSH" + RDP = "RDP" + +class BastionHostSkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The name of this Bastion Host. + """ + + BASIC = "Basic" + STANDARD = "Standard" + +class BgpPeerState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The BGP peer state. + """ + + UNKNOWN = "Unknown" + STOPPED = "Stopped" + IDLE = "Idle" + CONNECTING = "Connecting" + CONNECTED = "Connected" + +class CircuitConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Express Route Circuit connection state. + """ + + CONNECTED = "Connected" + CONNECTING = "Connecting" + DISCONNECTED = "Disconnected" + +class CommissionedState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The commissioned state of the Custom IP Prefix. + """ + + PROVISIONING = "Provisioning" + PROVISIONED = "Provisioned" + COMMISSIONING = "Commissioning" + COMMISSIONED = "Commissioned" + DECOMMISSIONING = "Decommissioning" + DEPROVISIONING = "Deprovisioning" + COMMISSIONED_NO_INTERNET_ADVERTISE = "Commissioned-NoInternetAdvertise" + class ConfigurationType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Configuration Deployment Type. """ SECURITY_ADMIN = "SecurityAdmin" - SECURITY_USER = "SecurityUser" CONNECTIVITY = "Connectivity" +class ConnectionMonitorEndpointFilterItemType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of item included in the filter. Currently only 'AgentAddress' is supported. + """ + + AGENT_ADDRESS = "AgentAddress" + +class ConnectionMonitorEndpointFilterType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The behavior of the endpoint filter. Currently only 'Include' is supported. + """ + + INCLUDE = "Include" + +class ConnectionMonitorSourceStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Status of connection monitor source. + """ + + UNKNOWN = "Unknown" + ACTIVE = "Active" + INACTIVE = "Inactive" + +class ConnectionMonitorTestConfigurationProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The protocol to use in test evaluation. + """ + + TCP = "Tcp" + HTTP = "Http" + ICMP = "Icmp" + +class ConnectionMonitorType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Type of connection monitor. + """ + + MULTI_ENDPOINT = "MultiEndpoint" + SINGLE_SOURCE_DESTINATION = "SingleSourceDestination" + +class ConnectionState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The connection state. + """ + + REACHABLE = "Reachable" + UNREACHABLE = "Unreachable" + UNKNOWN = "Unknown" + +class ConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The connection status. + """ + + UNKNOWN = "Unknown" + CONNECTED = "Connected" + DISCONNECTED = "Disconnected" + DEGRADED = "Degraded" + class ConnectivityTopology(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Connectivity topology type. """ - HUB_AND_SPOKE = "HubAndSpoke" - MESH = "Mesh" + HUB_AND_SPOKE = "HubAndSpoke" + MESH = "Mesh" + +class CoverageLevel(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Test coverage for the endpoint. + """ + + DEFAULT = "Default" + LOW = "Low" + BELOW_AVERAGE = "BelowAverage" + AVERAGE = "Average" + ABOVE_AVERAGE = "AboveAverage" + FULL = "Full" + +class CreatedByType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of identity that created the resource. + """ + + USER = "User" + APPLICATION = "Application" + MANAGED_IDENTITY = "ManagedIdentity" + KEY = "Key" + +class DdosCustomPolicyProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The protocol for which the DDoS protection policy is being customized. + """ + + TCP = "Tcp" + UDP = "Udp" + SYN = "Syn" + +class DdosCustomPolicyTriggerSensitivityOverride(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The customized DDoS protection trigger rate sensitivity degrees. High: Trigger rate set with + most sensitivity w.r.t. normal traffic. Default: Trigger rate set with moderate sensitivity + w.r.t. normal traffic. Low: Trigger rate set with less sensitivity w.r.t. normal traffic. + Relaxed: Trigger rate set with least sensitivity w.r.t. normal traffic. + """ + + RELAXED = "Relaxed" + LOW = "Low" + DEFAULT = "Default" + HIGH = "High" + +class DdosSettingsProtectionCoverage(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The DDoS protection policy customizability of the public IP. Only standard coverage will have + the ability to be customized. + """ + + BASIC = "Basic" + STANDARD = "Standard" + +class DeleteExistingPeering(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Flag if need to remove current existing peerings. + """ + + FALSE = "False" + TRUE = "True" + +class DeleteOptions(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Specify what happens to the public IP address when the VM using it is deleted + """ + + DELETE = "Delete" + DETACH = "Detach" + +class DeploymentStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Deployment Status. + """ + + NOT_STARTED = "NotStarted" + DEPLOYING = "Deploying" + DEPLOYED = "Deployed" + FAILED = "Failed" + +class DestinationPortBehavior(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Destination port behavior. + """ + + NONE = "None" + LISTEN_IF_AVAILABLE = "ListenIfAvailable" + +class DhGroup(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The DH Groups used in IKE Phase 1 for initial SA. + """ + + NONE = "None" + DH_GROUP1 = "DHGroup1" + DH_GROUP2 = "DHGroup2" + DH_GROUP14 = "DHGroup14" + DH_GROUP2048 = "DHGroup2048" + ECP256 = "ECP256" + ECP384 = "ECP384" + DH_GROUP24 = "DHGroup24" + +class Direction(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The direction of the traffic. + """ + + INBOUND = "Inbound" + OUTBOUND = "Outbound" + +class EffectiveAdminRuleKind(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Whether the rule is custom or default. + """ + + CUSTOM = "Custom" + DEFAULT = "Default" + +class EffectiveRouteSource(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Who created the route. + """ + + UNKNOWN = "Unknown" + USER = "User" + VIRTUAL_NETWORK_GATEWAY = "VirtualNetworkGateway" + DEFAULT = "Default" + +class EffectiveRouteState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The value of effective route. + """ + + ACTIVE = "Active" + INVALID = "Invalid" + +class EffectiveSecurityRuleProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The network protocol this rule applies to. + """ + + TCP = "Tcp" + UDP = "Udp" + ALL = "All" + +class EndpointType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The endpoint type. + """ + + AZURE_VM = "AzureVM" + AZURE_V_NET = "AzureVNet" + AZURE_SUBNET = "AzureSubnet" + EXTERNAL_ADDRESS = "ExternalAddress" + MMA_WORKSPACE_MACHINE = "MMAWorkspaceMachine" + MMA_WORKSPACE_NETWORK = "MMAWorkspaceNetwork" + AZURE_ARC_VM = "AzureArcVM" + AZURE_VMSS = "AzureVMSS" + +class EvaluationState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Connectivity analysis evaluation state. + """ + + NOT_STARTED = "NotStarted" + IN_PROGRESS = "InProgress" + COMPLETED = "Completed" + +class ExpressRouteCircuitPeeringAdvertisedPublicPrefixState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The advertised public prefix state of the Peering resource. + """ + + NOT_CONFIGURED = "NotConfigured" + CONFIGURING = "Configuring" + CONFIGURED = "Configured" + VALIDATION_NEEDED = "ValidationNeeded" + +class ExpressRouteCircuitPeeringState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The state of peering. + """ + + DISABLED = "Disabled" + ENABLED = "Enabled" + +class ExpressRouteCircuitSkuFamily(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The family of the SKU. + """ + + UNLIMITED_DATA = "UnlimitedData" + METERED_DATA = "MeteredData" + +class ExpressRouteCircuitSkuTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The tier of the SKU. + """ + + STANDARD = "Standard" + PREMIUM = "Premium" + BASIC = "Basic" + LOCAL = "Local" + +class ExpressRouteLinkAdminState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Administrative state of the physical port. + """ + + ENABLED = "Enabled" + DISABLED = "Disabled" + +class ExpressRouteLinkConnectorType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Physical fiber port type. + """ + + LC = "LC" + SC = "SC" + +class ExpressRouteLinkMacSecCipher(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Mac security cipher. + """ + + GCM_AES256 = "GcmAes256" + GCM_AES128 = "GcmAes128" + GCM_AES_XPN128 = "GcmAesXpn128" + GCM_AES_XPN256 = "GcmAesXpn256" + +class ExpressRouteLinkMacSecSciState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Sci mode enabled/disabled. + """ + + DISABLED = "Disabled" + ENABLED = "Enabled" + +class ExpressRoutePeeringState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The state of peering. + """ + + DISABLED = "Disabled" + ENABLED = "Enabled" + +class ExpressRoutePeeringType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The peering type. + """ + + AZURE_PUBLIC_PEERING = "AzurePublicPeering" + AZURE_PRIVATE_PEERING = "AzurePrivatePeering" + MICROSOFT_PEERING = "MicrosoftPeering" + +class ExpressRoutePortAuthorizationUseStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The authorization use status. + """ + + AVAILABLE = "Available" + IN_USE = "InUse" + +class ExpressRoutePortsEncapsulation(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Encapsulation method on physical ports. + """ + + DOT1_Q = "Dot1Q" + QIN_Q = "QinQ" + +class ExtendedLocationTypes(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The supported ExtendedLocation types. Currently only EdgeZone is supported in Microsoft.Network + resources. + """ + + EDGE_ZONE = "EdgeZone" + +class FirewallPolicyFilterRuleCollectionActionType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The action type of a rule. + """ + + ALLOW = "Allow" + DENY = "Deny" + +class FirewallPolicyIDPSQuerySortOrder(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Describes if results should be in ascending/descending order + """ + + ASCENDING = "Ascending" + DESCENDING = "Descending" + +class FirewallPolicyIDPSSignatureDirection(with_metaclass(CaseInsensitiveEnumMeta, int, Enum)): + """Describes in which direction signature is being enforced: 0 - Inbound, 1 - OutBound, 2 - + Bidirectional + """ + + ZERO = 0 + ONE = 1 + TWO = 2 + +class FirewallPolicyIDPSSignatureMode(with_metaclass(CaseInsensitiveEnumMeta, int, Enum)): + """The current mode enforced, 0 - Disabled, 1 - Alert, 2 -Deny + """ + + ZERO = 0 + ONE = 1 + TWO = 2 + +class FirewallPolicyIDPSSignatureSeverity(with_metaclass(CaseInsensitiveEnumMeta, int, Enum)): + """Describes the severity of signature: 1 - Low, 2 - Medium, 3 - High + """ + + ONE = 1 + TWO = 2 + THREE = 3 + +class FirewallPolicyIntrusionDetectionProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Possible intrusion detection bypass traffic protocols. + """ + + TCP = "TCP" + UDP = "UDP" + ICMP = "ICMP" + ANY = "ANY" + +class FirewallPolicyIntrusionDetectionStateType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Possible state values. + """ + + OFF = "Off" + ALERT = "Alert" + DENY = "Deny" + +class FirewallPolicyNatRuleCollectionActionType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The action type of a rule. + """ + + DNAT = "DNAT" + +class FirewallPolicyRuleApplicationProtocolType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The application protocol type of a Rule. + """ + + HTTP = "Http" + HTTPS = "Https" + +class FirewallPolicyRuleCollectionType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of the rule collection. + """ + + FIREWALL_POLICY_NAT_RULE_COLLECTION = "FirewallPolicyNatRuleCollection" + FIREWALL_POLICY_FILTER_RULE_COLLECTION = "FirewallPolicyFilterRuleCollection" + +class FirewallPolicyRuleNetworkProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The Network protocol of a Rule. + """ + + TCP = "TCP" + UDP = "UDP" + ANY = "Any" + ICMP = "ICMP" + +class FirewallPolicyRuleType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Rule Type. + """ + + APPLICATION_RULE = "ApplicationRule" + NETWORK_RULE = "NetworkRule" + NAT_RULE = "NatRule" + +class FirewallPolicySkuTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Tier of Firewall Policy. + """ + + STANDARD = "Standard" + PREMIUM = "Premium" + BASIC = "Basic" + +class FlowLogFormatType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The file type of flow log. + """ + + JSON = "JSON" + +class GatewayLoadBalancerTunnelInterfaceType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Traffic type of gateway load balancer tunnel interface. + """ + + NONE = "None" + INTERNAL = "Internal" + EXTERNAL = "External" + +class GatewayLoadBalancerTunnelProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Protocol of gateway load balancer tunnel interface. + """ + + NONE = "None" + NATIVE = "Native" + VXLAN = "VXLAN" + +class GroupConnectivity(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Group connectivity type. + """ + + NONE = "None" + DIRECTLY_CONNECTED = "DirectlyConnected" + +class HTTPConfigurationMethod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The HTTP method to use. + """ + + GET = "Get" + POST = "Post" + +class HTTPMethod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """HTTP method. + """ + + GET = "Get" + +class HubBgpConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The current state of the VirtualHub to Peer. + """ + + UNKNOWN = "Unknown" + CONNECTING = "Connecting" + CONNECTED = "Connected" + NOT_CONNECTED = "NotConnected" + +class HubRoutingPreference(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The hub routing preference gateway types + """ + + EXPRESS_ROUTE = "ExpressRoute" + VPN_GATEWAY = "VpnGateway" + AS_PATH = "ASPath" + +class HubVirtualNetworkConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The current state of the VirtualHub to vnet connection. + """ + + UNKNOWN = "Unknown" + CONNECTING = "Connecting" + CONNECTED = "Connected" + NOT_CONNECTED = "NotConnected" + +class IkeEncryption(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The IKE encryption algorithm (IKE phase 2). + """ + + DES = "DES" + DES3 = "DES3" + AES128 = "AES128" + AES192 = "AES192" + AES256 = "AES256" + GCMAES256 = "GCMAES256" + GCMAES128 = "GCMAES128" + +class IkeIntegrity(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The IKE integrity algorithm (IKE phase 2). + """ + + MD5 = "MD5" + SHA1 = "SHA1" + SHA256 = "SHA256" + SHA384 = "SHA384" + GCMAES256 = "GCMAES256" + GCMAES128 = "GCMAES128" + +class InboundSecurityRulesProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Protocol. This should be either TCP or UDP. + """ + + TCP = "TCP" + UDP = "UDP" + +class IPAllocationMethod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """IP address allocation method. + """ + + STATIC = "Static" + DYNAMIC = "Dynamic" + +class IpAllocationType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """IpAllocation type. + """ + + UNDEFINED = "Undefined" + HYPERNET = "Hypernet" + +class IpFlowProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Protocol to be verified on. + """ + + TCP = "TCP" + UDP = "UDP" + +class IpsecEncryption(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The IPSec encryption algorithm (IKE phase 1). + """ + + NONE = "None" + DES = "DES" + DES3 = "DES3" + AES128 = "AES128" + AES192 = "AES192" + AES256 = "AES256" + GCMAES128 = "GCMAES128" + GCMAES192 = "GCMAES192" + GCMAES256 = "GCMAES256" + +class IpsecIntegrity(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The IPSec integrity algorithm (IKE phase 1). + """ + + MD5 = "MD5" + SHA1 = "SHA1" + SHA256 = "SHA256" + GCMAES128 = "GCMAES128" + GCMAES192 = "GCMAES192" + GCMAES256 = "GCMAES256" + +class IPVersion(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """IP address version. + """ + + I_PV4 = "IPv4" + I_PV6 = "IPv6" + +class IsGlobal(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Flag if global mesh is supported. + """ + + FALSE = "False" + TRUE = "True" + +class IssueType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of issue. + """ + + UNKNOWN = "Unknown" + AGENT_STOPPED = "AgentStopped" + GUEST_FIREWALL = "GuestFirewall" + DNS_RESOLUTION = "DnsResolution" + SOCKET_BIND = "SocketBind" + NETWORK_SECURITY_RULE = "NetworkSecurityRule" + USER_DEFINED_ROUTE = "UserDefinedRoute" + PORT_THROTTLED = "PortThrottled" + PLATFORM = "Platform" + +class LoadBalancerBackendAddressAdminState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """A list of administrative states which once set can override health probe so that Load Balancer + will always forward new connections to backend, or deny new connections and reset existing + connections. + """ + + NONE = "None" + UP = "Up" + DOWN = "Down" + DRAIN = "Drain" + +class LoadBalancerOutboundRuleProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The protocol for the outbound rule in load balancer. + """ + + TCP = "Tcp" + UDP = "Udp" + ALL = "All" + +class LoadBalancerSkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Name of a load balancer SKU. + """ + + BASIC = "Basic" + STANDARD = "Standard" + GATEWAY = "Gateway" + +class LoadBalancerSkuTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Tier of a load balancer SKU. + """ + + REGIONAL = "Regional" + GLOBAL_ENUM = "Global" + +class LoadDistribution(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The load distribution policy for this rule. + """ + + DEFAULT = "Default" + SOURCE_IP = "SourceIP" + SOURCE_IP_PROTOCOL = "SourceIPProtocol" + +class ManagedRuleEnabledState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The state of the managed rule. Defaults to Disabled if not specified. + """ + + DISABLED = "Disabled" + +class NatGatewaySkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Name of Nat Gateway SKU. + """ + + STANDARD = "Standard" + +class NetworkIntentPolicyBasedService(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Network intent policy based services. + """ + + NONE = "None" + ALL = "All" + +class NetworkInterfaceAuxiliaryMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Auxiliary mode of Network Interface resource. + """ + + NONE = "None" + MAX_CONNECTIONS = "MaxConnections" + FLOATING = "Floating" + +class NetworkInterfaceMigrationPhase(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Migration phase of Network Interface resource. + """ + + NONE = "None" + PREPARE = "Prepare" + COMMIT = "Commit" + ABORT = "Abort" + COMMITTED = "Committed" + +class NetworkInterfaceNicType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Type of Network Interface resource. + """ + + STANDARD = "Standard" + ELASTIC = "Elastic" + +class NetworkOperationStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Status of the Azure async operation. + """ + + IN_PROGRESS = "InProgress" + SUCCEEDED = "Succeeded" + FAILED = "Failed" + +class NextHopType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Next hop type. + """ + + INTERNET = "Internet" + VIRTUAL_APPLIANCE = "VirtualAppliance" + VIRTUAL_NETWORK_GATEWAY = "VirtualNetworkGateway" + VNET_LOCAL = "VnetLocal" + HYPER_NET_GATEWAY = "HyperNetGateway" + NONE = "None" + +class OfficeTrafficCategory(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The office traffic category. + """ + + OPTIMIZE = "Optimize" + OPTIMIZE_AND_ALLOW = "OptimizeAndAllow" + ALL = "All" + NONE = "None" + +class Origin(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The origin of the issue. + """ + + LOCAL = "Local" + INBOUND = "Inbound" + OUTBOUND = "Outbound" -class CreatedByType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """The type of identity that created the resource. +class OutputType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Connection monitor output destination type. Currently, only "Workspace" is supported. """ - USER = "User" - APPLICATION = "Application" - MANAGED_IDENTITY = "ManagedIdentity" - KEY = "Key" + WORKSPACE = "Workspace" -class DeleteExistingNSGs(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Flag if need to delete existing network security groups. +class OwaspCrsExclusionEntryMatchVariable(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The variable to be excluded. """ - FALSE = "False" - TRUE = "True" + REQUEST_HEADER_NAMES = "RequestHeaderNames" + REQUEST_COOKIE_NAMES = "RequestCookieNames" + REQUEST_ARG_NAMES = "RequestArgNames" + REQUEST_HEADER_KEYS = "RequestHeaderKeys" + REQUEST_HEADER_VALUES = "RequestHeaderValues" + REQUEST_COOKIE_KEYS = "RequestCookieKeys" + REQUEST_COOKIE_VALUES = "RequestCookieValues" + REQUEST_ARG_KEYS = "RequestArgKeys" + REQUEST_ARG_VALUES = "RequestArgValues" -class DeleteExistingPeering(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Flag if need to remove current existing peerings. +class OwaspCrsExclusionEntrySelectorMatchOperator(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """When matchVariable is a collection, operate on the selector to specify which elements in the + collection this exclusion applies to. """ - FALSE = "False" - TRUE = "True" + EQUALS = "Equals" + CONTAINS = "Contains" + STARTS_WITH = "StartsWith" + ENDS_WITH = "EndsWith" + EQUALS_ANY = "EqualsAny" -class DeploymentStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Deployment Status. +class PacketCaptureTargetType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Target type of the resource provided. """ - NOT_STARTED = "NotStarted" - DEPLOYING = "Deploying" - DEPLOYED = "Deployed" - FAILED = "Failed" + AZURE_VM = "AzureVM" + AZURE_VMSS = "AzureVMSS" -class EffectiveAdminRuleKind(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Whether the rule is custom or default. - """ +class PcError(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - CUSTOM = "Custom" - DEFAULT = "Default" + INTERNAL_ERROR = "InternalError" + AGENT_STOPPED = "AgentStopped" + CAPTURE_FAILED = "CaptureFailed" + LOCAL_FILE_FAILED = "LocalFileFailed" + STORAGE_FAILED = "StorageFailed" -class EffectiveUserRuleKind(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Whether the rule is custom or default. +class PcProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Protocol to be filtered on. """ - CUSTOM = "Custom" - DEFAULT = "Default" + TCP = "TCP" + UDP = "UDP" + ANY = "Any" -class ExtendedLocationTypes(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """The supported ExtendedLocation types. Currently only EdgeZone is supported in Microsoft.Network - resources. +class PcStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The status of the packet capture session. """ - EDGE_ZONE = "EdgeZone" + NOT_STARTED = "NotStarted" + RUNNING = "Running" + STOPPED = "Stopped" + ERROR = "Error" + UNKNOWN = "Unknown" -class GroupConnectivity(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Group connectivity type. +class PfsGroup(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The Pfs Groups used in IKE Phase 2 for new child SA. """ NONE = "None" - DIRECTLY_CONNECTED = "DirectlyConnected" + PFS1 = "PFS1" + PFS2 = "PFS2" + PFS2048 = "PFS2048" + ECP256 = "ECP256" + ECP384 = "ECP384" + PFS24 = "PFS24" + PFS14 = "PFS14" + PFSMM = "PFSMM" -class IPAllocationMethod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """IP address allocation method. +class PreferredIPVersion(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The preferred IP version to use in test evaluation. The connection monitor may choose to use a + different version depending on other parameters. """ - STATIC = "Static" - DYNAMIC = "Dynamic" + I_PV4 = "IPv4" + I_PV6 = "IPv6" -class IPVersion(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """IP address version. +class PreferredRoutingGateway(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The preferred routing gateway types """ - I_PV4 = "IPv4" - I_PV6 = "IPv6" + EXPRESS_ROUTE = "ExpressRoute" + VPN_GATEWAY = "VpnGateway" + NONE = "None" -class IsGlobal(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Flag if global mesh is supported. +class ProbeProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The protocol of the end point. If 'Tcp' is specified, a received ACK is required for the probe + to be successful. If 'Http' or 'Https' is specified, a 200 OK response from the specifies URI + is required for the probe to be successful. """ - FALSE = "False" - TRUE = "True" + HTTP = "Http" + TCP = "Tcp" + HTTPS = "Https" -class MembershipType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Membership Type. +class ProcessorArchitecture(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """VPN client Processor Architecture. """ - STATIC = "Static" - DYNAMIC = "Dynamic" + AMD64 = "Amd64" + X86 = "X86" -class NetworkIntentPolicyBasedService(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Network intent policy based services. +class Protocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Network protocol. """ - NONE = "None" - ALL = "All" + TCP = "Tcp" + HTTP = "Http" + HTTPS = "Https" + ICMP = "Icmp" -class NetworkOperationStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Status of the Azure async operation. +class ProtocolType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """RNM supported protocol types. """ - IN_PROGRESS = "InProgress" - SUCCEEDED = "Succeeded" - FAILED = "Failed" + DO_NOT_USE = "DoNotUse" + ICMP = "Icmp" + TCP = "Tcp" + UDP = "Udp" + GRE = "Gre" + ESP = "Esp" + AH = "Ah" + VXLAN = "Vxlan" + ALL = "All" class ProvisioningState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The current provisioning state. @@ -166,6 +1164,43 @@ class ProvisioningState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): DELETING = "Deleting" FAILED = "Failed" +class PublicIPAddressMigrationPhase(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Migration phase of Public IP Address. + """ + + NONE = "None" + PREPARE = "Prepare" + COMMIT = "Commit" + ABORT = "Abort" + COMMITTED = "Committed" + +class PublicIPAddressSkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Name of a public IP address SKU. + """ + + BASIC = "Basic" + STANDARD = "Standard" + +class PublicIPAddressSkuTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Tier of a public IP address SKU. + """ + + REGIONAL = "Regional" + GLOBAL_ENUM = "Global" + +class PublicIPPrefixSkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Name of a public IP prefix SKU. + """ + + STANDARD = "Standard" + +class PublicIPPrefixSkuTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Tier of a public IP prefix SKU. + """ + + REGIONAL = "Regional" + GLOBAL_ENUM = "Global" + class ResourceIdentityType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will @@ -177,6 +1212,31 @@ class ResourceIdentityType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): SYSTEM_ASSIGNED_USER_ASSIGNED = "SystemAssigned, UserAssigned" NONE = "None" +class RouteFilterRuleType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The rule type of the rule. + """ + + COMMUNITY = "Community" + +class RouteNextHopType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of Azure hop the packet should be sent to. + """ + + VIRTUAL_NETWORK_GATEWAY = "VirtualNetworkGateway" + VNET_LOCAL = "VnetLocal" + INTERNET = "Internet" + VIRTUAL_APPLIANCE = "VirtualAppliance" + NONE = "None" + +class RoutingState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The current routing state of the VirtualHub. + """ + + NONE = "None" + PROVISIONED = "Provisioned" + PROVISIONING = "Provisioning" + FAILED = "Failed" + class ScopeConnectionState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """The current scope connection state. """ @@ -214,6 +1274,92 @@ class SecurityConfigurationRuleProtocol(with_metaclass(CaseInsensitiveEnumMeta, ANY = "Any" AH = "Ah" +class SecurityPartnerProviderConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The current state of the connection with Security Partner Provider. + """ + + UNKNOWN = "Unknown" + PARTIALLY_CONNECTED = "PartiallyConnected" + CONNECTED = "Connected" + NOT_CONNECTED = "NotConnected" + +class SecurityProviderName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The Security Providers. + """ + + Z_SCALER = "ZScaler" + I_BOSS = "IBoss" + CHECKPOINT = "Checkpoint" + +class SecurityRuleAccess(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Whether network traffic is allowed or denied. + """ + + ALLOW = "Allow" + DENY = "Deny" + +class SecurityRuleDirection(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The direction of the rule. The direction specifies if rule will be evaluated on incoming or + outgoing traffic. + """ + + INBOUND = "Inbound" + OUTBOUND = "Outbound" + +class SecurityRuleProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Network protocol this rule applies to. + """ + + TCP = "Tcp" + UDP = "Udp" + ICMP = "Icmp" + ESP = "Esp" + ASTERISK = "*" + AH = "Ah" + +class ServiceProviderProvisioningState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The ServiceProviderProvisioningState state of the resource. + """ + + NOT_PROVISIONED = "NotProvisioned" + PROVISIONING = "Provisioning" + PROVISIONED = "Provisioned" + DEPROVISIONING = "Deprovisioning" + +class Severity(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The severity of the issue. + """ + + ERROR = "Error" + WARNING = "Warning" + +class SyncRemoteAddressSpace(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + + TRUE = "true" + +class TransportProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The transport protocol for the endpoint. + """ + + UDP = "Udp" + TCP = "Tcp" + ALL = "All" + +class TunnelConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The current state of the tunnel. + """ + + UNKNOWN = "Unknown" + CONNECTING = "Connecting" + CONNECTED = "Connected" + NOT_CONNECTED = "NotConnected" + +class UsageUnit(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """An enum describing the unit of measurement. + """ + + COUNT = "Count" + class UseHubGateway(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): """Flag if need to use hub gateway. """ @@ -221,9 +1367,298 @@ class UseHubGateway(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): FALSE = "False" TRUE = "True" -class UserRuleKind(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): - """Whether the rule is custom or default. +class VerbosityLevel(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Verbosity level. + """ + + NORMAL = "Normal" + MINIMUM = "Minimum" + FULL = "Full" + +class VirtualNetworkEncryptionEnforcement(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """If the encrypted VNet allows VM that does not support encryption + """ + + DROP_UNENCRYPTED = "DropUnencrypted" + ALLOW_UNENCRYPTED = "AllowUnencrypted" + +class VirtualNetworkGatewayConnectionMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Gateway connection type. + """ + + DEFAULT = "Default" + RESPONDER_ONLY = "ResponderOnly" + INITIATOR_ONLY = "InitiatorOnly" + +class VirtualNetworkGatewayConnectionProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Gateway connection protocol. + """ + + IK_EV2 = "IKEv2" + IK_EV1 = "IKEv1" + +class VirtualNetworkGatewayConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Virtual Network Gateway connection status. + """ + + UNKNOWN = "Unknown" + CONNECTING = "Connecting" + CONNECTED = "Connected" + NOT_CONNECTED = "NotConnected" + +class VirtualNetworkGatewayConnectionType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Gateway connection type. + """ + + I_PSEC = "IPsec" + VNET2_VNET = "Vnet2Vnet" + EXPRESS_ROUTE = "ExpressRoute" + VPN_CLIENT = "VPNClient" + +class VirtualNetworkGatewaySkuName(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Gateway SKU name. + """ + + BASIC = "Basic" + HIGH_PERFORMANCE = "HighPerformance" + STANDARD = "Standard" + ULTRA_PERFORMANCE = "UltraPerformance" + VPN_GW1 = "VpnGw1" + VPN_GW2 = "VpnGw2" + VPN_GW3 = "VpnGw3" + VPN_GW4 = "VpnGw4" + VPN_GW5 = "VpnGw5" + VPN_GW1_AZ = "VpnGw1AZ" + VPN_GW2_AZ = "VpnGw2AZ" + VPN_GW3_AZ = "VpnGw3AZ" + VPN_GW4_AZ = "VpnGw4AZ" + VPN_GW5_AZ = "VpnGw5AZ" + ER_GW1_AZ = "ErGw1AZ" + ER_GW2_AZ = "ErGw2AZ" + ER_GW3_AZ = "ErGw3AZ" + +class VirtualNetworkGatewaySkuTier(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Gateway SKU tier. + """ + + BASIC = "Basic" + HIGH_PERFORMANCE = "HighPerformance" + STANDARD = "Standard" + ULTRA_PERFORMANCE = "UltraPerformance" + VPN_GW1 = "VpnGw1" + VPN_GW2 = "VpnGw2" + VPN_GW3 = "VpnGw3" + VPN_GW4 = "VpnGw4" + VPN_GW5 = "VpnGw5" + VPN_GW1_AZ = "VpnGw1AZ" + VPN_GW2_AZ = "VpnGw2AZ" + VPN_GW3_AZ = "VpnGw3AZ" + VPN_GW4_AZ = "VpnGw4AZ" + VPN_GW5_AZ = "VpnGw5AZ" + ER_GW1_AZ = "ErGw1AZ" + ER_GW2_AZ = "ErGw2AZ" + ER_GW3_AZ = "ErGw3AZ" + +class VirtualNetworkGatewayType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of this virtual network gateway. + """ + + VPN = "Vpn" + EXPRESS_ROUTE = "ExpressRoute" + LOCAL_GATEWAY = "LocalGateway" + +class VirtualNetworkPeeringLevel(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The peering sync status of the virtual network peering. + """ + + FULLY_IN_SYNC = "FullyInSync" + REMOTE_NOT_IN_SYNC = "RemoteNotInSync" + LOCAL_NOT_IN_SYNC = "LocalNotInSync" + LOCAL_AND_REMOTE_NOT_IN_SYNC = "LocalAndRemoteNotInSync" + +class VirtualNetworkPeeringState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The status of the virtual network peering. + """ + + INITIATED = "Initiated" + CONNECTED = "Connected" + DISCONNECTED = "Disconnected" + +class VirtualNetworkPrivateEndpointNetworkPolicies(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Enable or Disable apply network policies on private end point in the subnet. + """ + + ENABLED = "Enabled" + DISABLED = "Disabled" + +class VirtualNetworkPrivateLinkServiceNetworkPolicies(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Enable or Disable apply network policies on private link service in the subnet. + """ + + ENABLED = "Enabled" + DISABLED = "Disabled" + +class VirtualWanSecurityProviderType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The virtual wan security provider type. + """ + + EXTERNAL = "External" + NATIVE = "Native" + +class VpnAuthenticationType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """VPN authentication types enabled for the virtual network gateway. + """ + + CERTIFICATE = "Certificate" + RADIUS = "Radius" + AAD = "AAD" + +class VpnClientProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """VPN client protocol enabled for the virtual network gateway. + """ + + IKE_V2 = "IkeV2" + SSTP = "SSTP" + OPEN_VPN = "OpenVPN" + +class VpnConnectionStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The current state of the vpn connection. + """ + + UNKNOWN = "Unknown" + CONNECTING = "Connecting" + CONNECTED = "Connected" + NOT_CONNECTED = "NotConnected" + +class VpnGatewayGeneration(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN. + """ + + NONE = "None" + GENERATION1 = "Generation1" + GENERATION2 = "Generation2" + +class VpnGatewayTunnelingProtocol(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """VPN protocol enabled for the VpnServerConfiguration. + """ + + IKE_V2 = "IkeV2" + OPEN_VPN = "OpenVPN" + +class VpnLinkConnectionMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Vpn link connection mode. """ - CUSTOM = "Custom" DEFAULT = "Default" + RESPONDER_ONLY = "ResponderOnly" + INITIATOR_ONLY = "InitiatorOnly" + +class VpnNatRuleMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The Source NAT direction of a VPN NAT. + """ + + EGRESS_SNAT = "EgressSnat" + INGRESS_SNAT = "IngressSnat" + +class VpnNatRuleType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of NAT rule for VPN NAT. + """ + + STATIC = "Static" + DYNAMIC = "Dynamic" + +class VpnPolicyMemberAttributeType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The Vpn Policy member attribute type. + """ + + CERTIFICATE_GROUP_ID = "CertificateGroupId" + AAD_GROUP_ID = "AADGroupId" + RADIUS_AZURE_GROUP_ID = "RadiusAzureGroupId" + +class VpnType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The type of this virtual network gateway. + """ + + POLICY_BASED = "PolicyBased" + ROUTE_BASED = "RouteBased" + +class WebApplicationFirewallAction(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Type of Actions. + """ + + ALLOW = "Allow" + BLOCK = "Block" + LOG = "Log" + +class WebApplicationFirewallEnabledState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The state of the policy. + """ + + DISABLED = "Disabled" + ENABLED = "Enabled" + +class WebApplicationFirewallMatchVariable(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Match Variable. + """ + + REMOTE_ADDR = "RemoteAddr" + REQUEST_METHOD = "RequestMethod" + QUERY_STRING = "QueryString" + POST_ARGS = "PostArgs" + REQUEST_URI = "RequestUri" + REQUEST_HEADERS = "RequestHeaders" + REQUEST_BODY = "RequestBody" + REQUEST_COOKIES = "RequestCookies" + +class WebApplicationFirewallMode(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The mode of the policy. + """ + + PREVENTION = "Prevention" + DETECTION = "Detection" + +class WebApplicationFirewallOperator(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The operator to be matched. + """ + + IP_MATCH = "IPMatch" + EQUAL = "Equal" + CONTAINS = "Contains" + LESS_THAN = "LessThan" + GREATER_THAN = "GreaterThan" + LESS_THAN_OR_EQUAL = "LessThanOrEqual" + GREATER_THAN_OR_EQUAL = "GreaterThanOrEqual" + BEGINS_WITH = "BeginsWith" + ENDS_WITH = "EndsWith" + REGEX = "Regex" + GEO_MATCH = "GeoMatch" + ANY = "Any" + +class WebApplicationFirewallPolicyResourceState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Resource status of the policy. + """ + + CREATING = "Creating" + ENABLING = "Enabling" + ENABLED = "Enabled" + DISABLING = "Disabling" + DISABLED = "Disabled" + DELETING = "Deleting" + +class WebApplicationFirewallRuleType(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """The rule type. + """ + + MATCH_RULE = "MatchRule" + INVALID = "Invalid" + +class WebApplicationFirewallTransform(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): + """Transforms applied before matching. + """ + + LOWERCASE = "Lowercase" + TRIM = "Trim" + URL_DECODE = "UrlDecode" + URL_ENCODE = "UrlEncode" + REMOVE_NULLS = "RemoveNulls" + HTML_ENTITY_DECODE = "HtmlEntityDecode" diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/__init__.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/__init__.py index 4a8edd7c584..eafdb11f5ad 100644 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/__init__.py +++ b/src/network-manager/azext_network_manager/vendored_sdks/operations/__init__.py @@ -6,42 +6,262 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._network_managers_operations import NetworkManagersOperations -from ._network_manager_commits_operations import NetworkManagerCommitsOperations -from ._network_manager_deployment_status_operations import NetworkManagerDeploymentStatusOperations -from ._effective_virtual_networks_operations import EffectiveVirtualNetworksOperations -from ._network_management_client_operations import NetworkManagementClientOperationsMixin -from ._connectivity_configurations_operations import ConnectivityConfigurationsOperations -from ._network_groups_operations import NetworkGroupsOperations -from ._list_effective_virtual_networks_operations import ListEffectiveVirtualNetworksOperations -from ._static_members_operations import StaticMembersOperations -from ._security_user_configurations_operations import SecurityUserConfigurationsOperations -from ._user_rule_collections_operations import UserRuleCollectionsOperations -from ._user_rules_operations import UserRulesOperations -from ._security_admin_configurations_operations import SecurityAdminConfigurationsOperations -from ._admin_rule_collections_operations import AdminRuleCollectionsOperations -from ._admin_rules_operations import AdminRulesOperations -from ._subscription_network_manager_connections_operations import SubscriptionNetworkManagerConnectionsOperations -from ._management_group_network_manager_connections_operations import ManagementGroupNetworkManagerConnectionsOperations -from ._scope_connections_operations import ScopeConnectionsOperations +from ._operations import ApplicationGatewaysOperations +from ._operations import ApplicationGatewayPrivateLinkResourcesOperations +from ._operations import ApplicationGatewayPrivateEndpointConnectionsOperations +from ._operations import ApplicationSecurityGroupsOperations +from ._operations import AvailableDelegationsOperations +from ._operations import AvailableResourceGroupDelegationsOperations +from ._operations import AvailableServiceAliasesOperations +from ._operations import AzureFirewallsOperations +from ._operations import AzureFirewallFqdnTagsOperations +from ._operations import WebCategoriesOperations +from ._operations import BastionHostsOperations +from ._operations import NetworkManagementClientOperationsMixin +from ._operations import NetworkInterfacesOperations +from ._operations import PublicIPAddressesOperations +from ._operations import CustomIPPrefixesOperations +from ._operations import DdosCustomPoliciesOperations +from ._operations import DdosProtectionPlansOperations +from ._operations import DscpConfigurationOperations +from ._operations import AvailableEndpointServicesOperations +from ._operations import ExpressRouteCircuitAuthorizationsOperations +from ._operations import ExpressRouteCircuitPeeringsOperations +from ._operations import ExpressRouteCircuitConnectionsOperations +from ._operations import PeerExpressRouteCircuitConnectionsOperations +from ._operations import ExpressRouteCircuitsOperations +from ._operations import ExpressRouteServiceProvidersOperations +from ._operations import ExpressRouteCrossConnectionsOperations +from ._operations import ExpressRouteCrossConnectionPeeringsOperations +from ._operations import ExpressRoutePortsLocationsOperations +from ._operations import ExpressRoutePortsOperations +from ._operations import ExpressRouteLinksOperations +from ._operations import ExpressRoutePortAuthorizationsOperations +from ._operations import FirewallPoliciesOperations +from ._operations import FirewallPolicyRuleCollectionGroupsOperations +from ._operations import FirewallPolicyIdpsSignaturesOperations +from ._operations import FirewallPolicyIdpsSignaturesOverridesOperations +from ._operations import FirewallPolicyIdpsSignaturesFilterValuesOperations +from ._operations import IpAllocationsOperations +from ._operations import IpGroupsOperations +from ._operations import LoadBalancersOperations +from ._operations import LoadBalancerBackendAddressPoolsOperations +from ._operations import LoadBalancerFrontendIPConfigurationsOperations +from ._operations import InboundNatRulesOperations +from ._operations import LoadBalancerLoadBalancingRulesOperations +from ._operations import LoadBalancerOutboundRulesOperations +from ._operations import LoadBalancerNetworkInterfacesOperations +from ._operations import LoadBalancerProbesOperations +from ._operations import NatGatewaysOperations +from ._operations import NetworkInterfaceIPConfigurationsOperations +from ._operations import NetworkInterfaceLoadBalancersOperations +from ._operations import NetworkInterfaceTapConfigurationsOperations +from ._operations import NetworkManagersOperations +from ._operations import NetworkManagerCommitsOperations +from ._operations import NetworkManagerDeploymentStatusOperations +from ._operations import SubscriptionNetworkManagerConnectionsOperations +from ._operations import ManagementGroupNetworkManagerConnectionsOperations +from ._operations import ConnectivityConfigurationsOperations +from ._operations import NetworkGroupsOperations +from ._operations import StaticMembersOperations +from ._operations import ScopeConnectionsOperations +from ._operations import SecurityAdminConfigurationsOperations +from ._operations import AdminRuleCollectionsOperations +from ._operations import AdminRulesOperations +from ._operations import NetworkProfilesOperations +from ._operations import NetworkSecurityGroupsOperations +from ._operations import SecurityRulesOperations +from ._operations import DefaultSecurityRulesOperations +from ._operations import NetworkVirtualAppliancesOperations +from ._operations import VirtualApplianceSitesOperations +from ._operations import VirtualApplianceSkusOperations +from ._operations import InboundSecurityRuleOperations +from ._operations import NetworkWatchersOperations +from ._operations import PacketCapturesOperations +from ._operations import ConnectionMonitorsOperations +from ._operations import FlowLogsOperations +from ._operations import Operations +from ._operations import PrivateEndpointsOperations +from ._operations import AvailablePrivateEndpointTypesOperations +from ._operations import PrivateDnsZoneGroupsOperations +from ._operations import PrivateLinkServicesOperations +from ._operations import PublicIPPrefixesOperations +from ._operations import RouteFiltersOperations +from ._operations import RouteFilterRulesOperations +from ._operations import RouteTablesOperations +from ._operations import RoutesOperations +from ._operations import SecurityPartnerProvidersOperations +from ._operations import BgpServiceCommunitiesOperations +from ._operations import ServiceEndpointPoliciesOperations +from ._operations import ServiceEndpointPolicyDefinitionsOperations +from ._operations import ServiceTagsOperations +from ._operations import ServiceTagInformationOperations +from ._operations import UsagesOperations +from ._operations import VirtualNetworksOperations +from ._operations import SubnetsOperations +from ._operations import ResourceNavigationLinksOperations +from ._operations import ServiceAssociationLinksOperations +from ._operations import VirtualNetworkPeeringsOperations +from ._operations import VirtualNetworkGatewaysOperations +from ._operations import VirtualNetworkGatewayConnectionsOperations +from ._operations import LocalNetworkGatewaysOperations +from ._operations import VirtualNetworkGatewayNatRulesOperations +from ._operations import VirtualNetworkTapsOperations +from ._operations import VirtualRoutersOperations +from ._operations import VirtualRouterPeeringsOperations +from ._operations import VirtualWansOperations +from ._operations import VpnSitesOperations +from ._operations import VpnSiteLinksOperations +from ._operations import VpnSitesConfigurationOperations +from ._operations import VpnServerConfigurationsOperations +from ._operations import ConfigurationPolicyGroupsOperations +from ._operations import VirtualHubsOperations +from ._operations import HubVirtualNetworkConnectionsOperations +from ._operations import VpnGatewaysOperations +from ._operations import VpnLinkConnectionsOperations +from ._operations import VpnConnectionsOperations +from ._operations import VpnSiteLinkConnectionsOperations +from ._operations import NatRulesOperations +from ._operations import P2SVpnGatewaysOperations +from ._operations import VpnServerConfigurationsAssociatedWithVirtualWanOperations +from ._operations import VirtualHubRouteTableV2SOperations +from ._operations import ExpressRouteGatewaysOperations +from ._operations import ExpressRouteConnectionsOperations +from ._operations import VirtualHubBgpConnectionOperations +from ._operations import VirtualHubBgpConnectionsOperations +from ._operations import VirtualHubIpConfigurationOperations +from ._operations import HubRouteTablesOperations +from ._operations import RoutingIntentOperations +from ._operations import WebApplicationFirewallPoliciesOperations +from ._operations import ExpressRouteProviderPortsLocationOperations __all__ = [ + 'ApplicationGatewaysOperations', + 'ApplicationGatewayPrivateLinkResourcesOperations', + 'ApplicationGatewayPrivateEndpointConnectionsOperations', + 'ApplicationSecurityGroupsOperations', + 'AvailableDelegationsOperations', + 'AvailableResourceGroupDelegationsOperations', + 'AvailableServiceAliasesOperations', + 'AzureFirewallsOperations', + 'AzureFirewallFqdnTagsOperations', + 'WebCategoriesOperations', + 'BastionHostsOperations', + 'NetworkManagementClientOperationsMixin', + 'NetworkInterfacesOperations', + 'PublicIPAddressesOperations', + 'CustomIPPrefixesOperations', + 'DdosCustomPoliciesOperations', + 'DdosProtectionPlansOperations', + 'DscpConfigurationOperations', + 'AvailableEndpointServicesOperations', + 'ExpressRouteCircuitAuthorizationsOperations', + 'ExpressRouteCircuitPeeringsOperations', + 'ExpressRouteCircuitConnectionsOperations', + 'PeerExpressRouteCircuitConnectionsOperations', + 'ExpressRouteCircuitsOperations', + 'ExpressRouteServiceProvidersOperations', + 'ExpressRouteCrossConnectionsOperations', + 'ExpressRouteCrossConnectionPeeringsOperations', + 'ExpressRoutePortsLocationsOperations', + 'ExpressRoutePortsOperations', + 'ExpressRouteLinksOperations', + 'ExpressRoutePortAuthorizationsOperations', + 'FirewallPoliciesOperations', + 'FirewallPolicyRuleCollectionGroupsOperations', + 'FirewallPolicyIdpsSignaturesOperations', + 'FirewallPolicyIdpsSignaturesOverridesOperations', + 'FirewallPolicyIdpsSignaturesFilterValuesOperations', + 'IpAllocationsOperations', + 'IpGroupsOperations', + 'LoadBalancersOperations', + 'LoadBalancerBackendAddressPoolsOperations', + 'LoadBalancerFrontendIPConfigurationsOperations', + 'InboundNatRulesOperations', + 'LoadBalancerLoadBalancingRulesOperations', + 'LoadBalancerOutboundRulesOperations', + 'LoadBalancerNetworkInterfacesOperations', + 'LoadBalancerProbesOperations', + 'NatGatewaysOperations', + 'NetworkInterfaceIPConfigurationsOperations', + 'NetworkInterfaceLoadBalancersOperations', + 'NetworkInterfaceTapConfigurationsOperations', 'NetworkManagersOperations', 'NetworkManagerCommitsOperations', 'NetworkManagerDeploymentStatusOperations', - 'EffectiveVirtualNetworksOperations', - 'NetworkManagementClientOperationsMixin', + 'SubscriptionNetworkManagerConnectionsOperations', + 'ManagementGroupNetworkManagerConnectionsOperations', 'ConnectivityConfigurationsOperations', 'NetworkGroupsOperations', - 'ListEffectiveVirtualNetworksOperations', 'StaticMembersOperations', - 'SecurityUserConfigurationsOperations', - 'UserRuleCollectionsOperations', - 'UserRulesOperations', + 'ScopeConnectionsOperations', 'SecurityAdminConfigurationsOperations', 'AdminRuleCollectionsOperations', 'AdminRulesOperations', - 'SubscriptionNetworkManagerConnectionsOperations', - 'ManagementGroupNetworkManagerConnectionsOperations', - 'ScopeConnectionsOperations', + 'NetworkProfilesOperations', + 'NetworkSecurityGroupsOperations', + 'SecurityRulesOperations', + 'DefaultSecurityRulesOperations', + 'NetworkVirtualAppliancesOperations', + 'VirtualApplianceSitesOperations', + 'VirtualApplianceSkusOperations', + 'InboundSecurityRuleOperations', + 'NetworkWatchersOperations', + 'PacketCapturesOperations', + 'ConnectionMonitorsOperations', + 'FlowLogsOperations', + 'Operations', + 'PrivateEndpointsOperations', + 'AvailablePrivateEndpointTypesOperations', + 'PrivateDnsZoneGroupsOperations', + 'PrivateLinkServicesOperations', + 'PublicIPPrefixesOperations', + 'RouteFiltersOperations', + 'RouteFilterRulesOperations', + 'RouteTablesOperations', + 'RoutesOperations', + 'SecurityPartnerProvidersOperations', + 'BgpServiceCommunitiesOperations', + 'ServiceEndpointPoliciesOperations', + 'ServiceEndpointPolicyDefinitionsOperations', + 'ServiceTagsOperations', + 'ServiceTagInformationOperations', + 'UsagesOperations', + 'VirtualNetworksOperations', + 'SubnetsOperations', + 'ResourceNavigationLinksOperations', + 'ServiceAssociationLinksOperations', + 'VirtualNetworkPeeringsOperations', + 'VirtualNetworkGatewaysOperations', + 'VirtualNetworkGatewayConnectionsOperations', + 'LocalNetworkGatewaysOperations', + 'VirtualNetworkGatewayNatRulesOperations', + 'VirtualNetworkTapsOperations', + 'VirtualRoutersOperations', + 'VirtualRouterPeeringsOperations', + 'VirtualWansOperations', + 'VpnSitesOperations', + 'VpnSiteLinksOperations', + 'VpnSitesConfigurationOperations', + 'VpnServerConfigurationsOperations', + 'ConfigurationPolicyGroupsOperations', + 'VirtualHubsOperations', + 'HubVirtualNetworkConnectionsOperations', + 'VpnGatewaysOperations', + 'VpnLinkConnectionsOperations', + 'VpnConnectionsOperations', + 'VpnSiteLinkConnectionsOperations', + 'NatRulesOperations', + 'P2SVpnGatewaysOperations', + 'VpnServerConfigurationsAssociatedWithVirtualWanOperations', + 'VirtualHubRouteTableV2SOperations', + 'ExpressRouteGatewaysOperations', + 'ExpressRouteConnectionsOperations', + 'VirtualHubBgpConnectionOperations', + 'VirtualHubBgpConnectionsOperations', + 'VirtualHubIpConfigurationOperations', + 'HubRouteTablesOperations', + 'RoutingIntentOperations', + 'WebApplicationFirewallPoliciesOperations', + 'ExpressRouteProviderPortsLocationOperations', ] diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_admin_rule_collections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_admin_rule_collections_operations.py deleted file mode 100644 index b5e5c9f7973..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_admin_rule_collections_operations.py +++ /dev/null @@ -1,540 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class AdminRuleCollectionsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`admin_rule_collections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.AdminRuleCollectionListResult"]: - """Lists all the rule collections in a security admin configuration, in a paginated format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AdminRuleCollectionListResult or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("AdminRuleCollectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections"} # type: ignore - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - **kwargs: Any - ) -> "_models.AdminRuleCollection": - """Gets a network manager security admin configuration rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AdminRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('AdminRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_collection: "_models.AdminRuleCollection", - **kwargs: Any - ) -> "_models.AdminRuleCollection": - """Creates or updates an admin rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_collection: The Rule Collection to create or update. - :type rule_collection: ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AdminRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(rule_collection, 'AdminRuleCollection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('AdminRuleCollection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('AdminRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes an admin rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_admin_rules_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_admin_rules_operations.py deleted file mode 100644 index 0ed62a0c1c1..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_admin_rules_operations.py +++ /dev/null @@ -1,565 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class AdminRulesOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`admin_rules` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.AdminRuleListResult"]: - """List all network manager security configuration admin rules. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AdminRuleListResult or the result of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.AdminRuleListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("AdminRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules"} # type: ignore - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - **kwargs: Any - ) -> "_models.BaseAdminRule": - """Gets a network manager security configuration admin rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseAdminRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('BaseAdminRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - admin_rule: "_models.BaseAdminRule", - **kwargs: Any - ) -> "_models.BaseAdminRule": - """Creates or updates an admin rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param admin_rule: The admin rule to create or update. - :type admin_rule: ~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseAdminRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseAdminRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(admin_rule, 'BaseAdminRule') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('BaseAdminRule', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('BaseAdminRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes an admin rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_connectivity_configurations_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_connectivity_configurations_operations.py deleted file mode 100644 index fcb90f874e2..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_connectivity_configurations_operations.py +++ /dev/null @@ -1,516 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class ConnectivityConfigurationsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`connectivity_configurations` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any - ) -> "_models.ConnectivityConfiguration": - """Gets a Network Connectivity Configuration, specified by the resource group, network manager - name, and connectivity Configuration name. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager connectivity configuration. - :type configuration_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ConnectivityConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - connectivity_configuration: "_models.ConnectivityConfiguration", - **kwargs: Any - ) -> "_models.ConnectivityConfiguration": - """Creates/Updates a new network manager connectivity configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager connectivity configuration. - :type configuration_name: str - :param connectivity_configuration: Parameters supplied to create/update a network manager - connectivity configuration. - :type connectivity_configuration: - ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ConnectivityConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(connectivity_configuration, 'ConnectivityConfiguration') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager connectivity configuration, specified by the resource group, network - manager name, and connectivity configuration name. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager connectivity configuration. - :type configuration_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.ConnectivityConfigurationListResult"]: - """Lists all the network manager connectivity configuration in a specified network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ConnectivityConfigurationListResult or the result - of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.ConnectivityConfigurationListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ConnectivityConfigurationListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_effective_virtual_networks_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_effective_virtual_networks_operations.py deleted file mode 100644 index 61cba1f997b..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_effective_virtual_networks_operations.py +++ /dev/null @@ -1,174 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_by_network_manager_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listEffectiveVirtualNetworks") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - -class EffectiveVirtualNetworksOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`effective_virtual_networks` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list_by_network_manager( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.EffectiveVirtualNetworksParameter", - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> "_models.EffectiveVirtualNetworksListResult": - """List effective virtual networks in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Effective Virtual Networks Parameter. - :type parameters: - ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetworksParameter - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: EffectiveVirtualNetworksListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetworksListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveVirtualNetworksListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'EffectiveVirtualNetworksParameter') - - request = build_list_by_network_manager_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - top=top, - skip_token=skip_token, - template_url=self.list_by_network_manager.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('EffectiveVirtualNetworksListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_by_network_manager.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listEffectiveVirtualNetworks"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_list_effective_virtual_networks_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_list_effective_virtual_networks_operations.py deleted file mode 100644 index c9a5afd5011..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_list_effective_virtual_networks_operations.py +++ /dev/null @@ -1,161 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_by_network_group_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/listEffectiveVirtualNetworks") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - -class ListEffectiveVirtualNetworksOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`list_effective_virtual_networks` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def by_network_group( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - parameters: "_models.QueryRequestOptions", - **kwargs: Any - ) -> "_models.EffectiveVirtualNetworksListResult": - """Lists all effective virtual networks by specified network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param parameters: Parameters supplied to list correct page. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.QueryRequestOptions - :keyword callable cls: A custom type or function that will be passed the direct response - :return: EffectiveVirtualNetworksListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.EffectiveVirtualNetworksListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveVirtualNetworksListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'QueryRequestOptions') - - request = build_by_network_group_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.by_network_group.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('EffectiveVirtualNetworksListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - by_network_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/listEffectiveVirtualNetworks"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_management_group_network_manager_connections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_management_group_network_manager_connections_operations.py deleted file mode 100644 index 7331d3fc41d..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_management_group_network_manager_connections_operations.py +++ /dev/null @@ -1,468 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_create_or_update_request( - management_group_id: str, - network_manager_connection_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), - "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_get_request( - management_group_id: str, - network_manager_connection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), - "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_delete_request( - management_group_id: str, - network_manager_connection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), - "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_list_request( - management_group_id: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections") # pylint: disable=line-too-long - path_format_arguments = { - "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class ManagementGroupNetworkManagerConnectionsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`management_group_network_manager_connections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def create_or_update( - self, - management_group_id: str, - network_manager_connection_name: str, - parameters: "_models.NetworkManagerConnection", - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Create a connection to a cross tenant network manager. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :param parameters: Network manager connection to be created/updated. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerConnection') - - request = build_create_or_update_request( - management_group_id=management_group_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def get( - self, - management_group_id: str, - network_manager_connection_name: str, - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Get a specified connection created by this management group. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - management_group_id=management_group_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - management_group_id: str, - network_manager_connection_name: str, - **kwargs: Any - ) -> None: - """Delete specified pending connection created by this management group. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - management_group_id=management_group_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def list( - self, - management_group_id: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.NetworkManagerConnectionListResult"]: - """List all network manager connections created by this management group. - - :param management_group_id: The management group Id which uniquely identify the Microsoft Azure - management group. - :type management_group_id: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerConnectionListResult or the result - of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - management_group_id=management_group_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - management_group_id=management_group_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_groups_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_groups_operations.py deleted file mode 100644 index 341fdcaec2d..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_groups_operations.py +++ /dev/null @@ -1,526 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - *, - json: JSONType = None, - content: Any = None, - if_match: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if if_match is not None: - _header_parameters['If-Match'] = _SERIALIZER.header("if_match", if_match, 'str') - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class NetworkGroupsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`network_groups` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - **kwargs: Any - ) -> "_models.NetworkGroup": - """Gets the specified network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkGroup, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkGroup', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - parameters: "_models.NetworkGroup", - if_match: Optional[str] = None, - **kwargs: Any - ) -> "_models.NetworkGroup": - """Creates or updates a network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param parameters: Parameters supplied to the specify which network group need to create. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup - :param if_match: The ETag of the transformation. Omit this value to always overwrite the - current resource. Specify the last-seen ETag value to prevent accidentally overwriting - concurrent changes. Default value is None. - :type if_match: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkGroup, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroup - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkGroup') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - content_type=content_type, - json=_json, - if_match=if_match, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 200: - response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) - - deserialized = self._deserialize('NetworkGroup', pipeline_response) - - if response.status_code == 201: - response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) - - deserialized = self._deserialize('NetworkGroup', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, response_headers) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.NetworkGroupListResult"]: - """Lists the specified network group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkGroupListResult or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkGroupListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroupListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkGroupListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_management_client_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_management_client_operations.py deleted file mode 100644 index 59cb3c13be2..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_management_client_operations.py +++ /dev/null @@ -1,577 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_active_connectivity_configurations_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveConnectivityConfigurations") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_list_active_security_admin_rules_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityAdminRules") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_list_active_security_user_rules_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityUserRules") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_list_network_manager_effective_connectivity_configurations_request( - subscription_id: str, - resource_group_name: str, - virtual_network_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveConnectivityConfigurations") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_list_network_manager_effective_security_admin_rules_request( - subscription_id: str, - resource_group_name: str, - virtual_network_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveSecurityAdminRules") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - -class NetworkManagementClientOperationsMixin(object): - - @distributed_trace - def list_active_connectivity_configurations( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.ActiveConfigurationParameter", - **kwargs: Any - ) -> "_models.ActiveConnectivityConfigurationsListResult": - """Lists active connectivity configurations in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Active Configuration Parameter. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConfigurationParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActiveConnectivityConfigurationsListResult, or the result of cls(response) - :rtype: - ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConnectivityConfigurationsListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveConnectivityConfigurationsListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') - - request = build_list_active_connectivity_configurations_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_active_connectivity_configurations.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActiveConnectivityConfigurationsListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_active_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveConnectivityConfigurations"} # type: ignore - - - @distributed_trace - def list_active_security_admin_rules( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.ActiveConfigurationParameter", - **kwargs: Any - ) -> "_models.ActiveSecurityAdminRulesListResult": - """Lists active security admin rules in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Active Configuration Parameter. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConfigurationParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActiveSecurityAdminRulesListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveSecurityAdminRulesListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveSecurityAdminRulesListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') - - request = build_list_active_security_admin_rules_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_active_security_admin_rules.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActiveSecurityAdminRulesListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_active_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityAdminRules"} # type: ignore - - - @distributed_trace - def list_active_security_user_rules( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.ActiveConfigurationParameter", - **kwargs: Any - ) -> "_models.ActiveSecurityUserRulesListResult": - """Lists Active Security User Rules in a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Active Configuration Parameter. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveConfigurationParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActiveSecurityUserRulesListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ActiveSecurityUserRulesListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveSecurityUserRulesListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') - - request = build_list_active_security_user_rules_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_active_security_user_rules.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActiveSecurityUserRulesListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_active_security_user_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityUserRules"} # type: ignore - - - @distributed_trace - def list_network_manager_effective_connectivity_configurations( - self, - resource_group_name: str, - virtual_network_name: str, - parameters: "_models.QueryRequestOptions", - **kwargs: Any - ) -> "_models.NetworkManagerEffectiveConnectivityConfigurationListResult": - """List all effective connectivity configurations applied on a virtual network. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param virtual_network_name: The name of the virtual network. - :type virtual_network_name: str - :param parameters: Parameters supplied to list correct page. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.QueryRequestOptions - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerEffectiveConnectivityConfigurationListResult, or the result of - cls(response) - :rtype: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerEffectiveConnectivityConfigurationListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveConnectivityConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'QueryRequestOptions') - - request = build_list_network_manager_effective_connectivity_configurations_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - virtual_network_name=virtual_network_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_network_manager_effective_connectivity_configurations.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerEffectiveConnectivityConfigurationListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_network_manager_effective_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveConnectivityConfigurations"} # type: ignore - - - @distributed_trace - def list_network_manager_effective_security_admin_rules( - self, - resource_group_name: str, - virtual_network_name: str, - parameters: "_models.QueryRequestOptions", - **kwargs: Any - ) -> "_models.NetworkManagerEffectiveSecurityAdminRulesListResult": - """List all effective security admin rules applied on a virtual network. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param virtual_network_name: The name of the virtual network. - :type virtual_network_name: str - :param parameters: Parameters supplied to list correct page. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.QueryRequestOptions - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerEffectiveSecurityAdminRulesListResult, or the result of cls(response) - :rtype: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerEffectiveSecurityAdminRulesListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveSecurityAdminRulesListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'QueryRequestOptions') - - request = build_list_network_manager_effective_security_admin_rules_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - virtual_network_name=virtual_network_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list_network_manager_effective_security_admin_rules.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerEffectiveSecurityAdminRulesListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_network_manager_effective_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveSecurityAdminRules"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_manager_commits_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_manager_commits_operations.py deleted file mode 100644 index af1a49684df..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_manager_commits_operations.py +++ /dev/null @@ -1,155 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_post_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - -class NetworkManagerCommitsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`network_manager_commits` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def post( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.NetworkManagerCommit", - **kwargs: Any - ) -> "_models.NetworkManagerCommit": - """Post a Network Manager Commit. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which Managed Network commit is. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerCommit - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerCommit, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerCommit - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerCommit"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerCommit') - - request = build_post_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.post.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - post.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_manager_deployment_status_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_manager_deployment_status_operations.py deleted file mode 100644 index f7324580eda..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_manager_deployment_status_operations.py +++ /dev/null @@ -1,156 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listDeploymentStatus") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="POST", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - -class NetworkManagerDeploymentStatusOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`network_manager_deployment_status` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.NetworkManagerDeploymentStatusParameter", - **kwargs: Any - ) -> "_models.NetworkManagerDeploymentStatusListResult": - """Post to List of Network Manager Deployment Status. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which Managed Network deployment status is. - :type parameters: - ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerDeploymentStatusParameter - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerDeploymentStatusListResult, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerDeploymentStatusListResult - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerDeploymentStatusListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerDeploymentStatusParameter') - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerDeploymentStatusListResult', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listDeploymentStatus"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_managers_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_managers_operations.py deleted file mode 100644 index 8775479ea5e..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_network_managers_operations.py +++ /dev/null @@ -1,722 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_patch_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PATCH", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_list_by_subscription_request( - subscription_id: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagers") - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_list_request( - subscription_id: str, - resource_group_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class NetworkManagersOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`network_managers` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - **kwargs: Any - ) -> "_models.NetworkManager": - """Gets the specified Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManager, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.NetworkManager", - **kwargs: Any - ) -> "_models.NetworkManager": - """Creates or updates a Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which network manager is. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManager, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManager') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace - def patch( - self, - resource_group_name: str, - network_manager_name: str, - parameters: "_models.PatchObject", - **kwargs: Any - ) -> "_models.NetworkManager": - """Patch NetworkManager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param parameters: Parameters supplied to specify which network manager is. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.PatchObject - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManager, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManager - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'PatchObject') - - request = build_patch_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.patch.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManager', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - patch.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore - - - @distributed_trace - def list_by_subscription( - self, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.NetworkManagerListResult"]: - """List all network managers in a subscription. - - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerListResult or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_by_subscription_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list_by_subscription.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_by_subscription_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagers"} # type: ignore - - @distributed_trace - def list( - self, - resource_group_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.NetworkManagerListResult"]: - """List network managers in a resource group. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerListResult or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_operations.py new file mode 100644 index 00000000000..c2276b90dcc --- /dev/null +++ b/src/network-manager/azext_network_manager/vendored_sdks/operations/_operations.py @@ -0,0 +1,82443 @@ +# pylint: disable=too-many-lines +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, Callable, Dict, Iterable, List, Optional, TypeVar, Union + +from msrest import Serializer + +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models as _models +from .._vendor import _convert_request, _format_url_section +T = TypeVar('T') +JSONType = Any +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + +def build_application_gateways_delete_request_initial( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_get_request( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_create_or_update_request_initial( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_application_gateways_update_tags_request( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_application_gateways_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_start_request_initial( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_stop_request_initial( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_backend_health_request_initial( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_backend_health_on_demand_request_initial( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/getBackendHealthOnDemand") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_application_gateways_list_available_server_variables_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableServerVariables") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_list_available_request_headers_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableRequestHeaders") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_list_available_response_headers_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableResponseHeaders") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_list_available_waf_rule_sets_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableWafRuleSets") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_list_available_ssl_options_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_list_available_ssl_predefined_policies_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateways_get_ssl_predefined_policy_request( + subscription_id: str, + predefined_policy_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/{predefinedPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "predefinedPolicyName": _SERIALIZER.url("predefined_policy_name", predefined_policy_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateway_private_link_resources_list_request( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateLinkResources") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateway_private_endpoint_connections_delete_request_initial( + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateway_private_endpoint_connections_update_request_initial( + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_application_gateway_private_endpoint_connections_get_request( + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_gateway_private_endpoint_connections_list_request( + resource_group_name: str, + application_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationGatewayName": _SERIALIZER.url("application_gateway_name", application_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_security_groups_delete_request_initial( + resource_group_name: str, + application_security_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationSecurityGroupName": _SERIALIZER.url("application_security_group_name", application_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_security_groups_get_request( + resource_group_name: str, + application_security_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationSecurityGroupName": _SERIALIZER.url("application_security_group_name", application_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_security_groups_create_or_update_request_initial( + resource_group_name: str, + application_security_group_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationSecurityGroupName": _SERIALIZER.url("application_security_group_name", application_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_application_security_groups_update_tags_request( + resource_group_name: str, + application_security_group_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "applicationSecurityGroupName": _SERIALIZER.url("application_security_group_name", application_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_application_security_groups_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationSecurityGroups") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_application_security_groups_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_available_delegations_list_request( + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableDelegations") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_available_resource_group_delegations_list_request( + location: str, + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableDelegations") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_available_service_aliases_list_request( + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableServiceAliases") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_available_service_aliases_list_by_resource_group_request( + resource_group_name: str, + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableServiceAliases") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_azure_firewalls_delete_request_initial( + resource_group_name: str, + azure_firewall_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "azureFirewallName": _SERIALIZER.url("azure_firewall_name", azure_firewall_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_azure_firewalls_get_request( + resource_group_name: str, + azure_firewall_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "azureFirewallName": _SERIALIZER.url("azure_firewall_name", azure_firewall_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_azure_firewalls_create_or_update_request_initial( + resource_group_name: str, + azure_firewall_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "azureFirewallName": _SERIALIZER.url("azure_firewall_name", azure_firewall_name, 'str', max_length=56, min_length=1), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_azure_firewalls_update_tags_request_initial( + resource_group_name: str, + azure_firewall_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "azureFirewallName": _SERIALIZER.url("azure_firewall_name", azure_firewall_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_azure_firewalls_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_azure_firewalls_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewalls") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_azure_firewalls_list_learned_prefixes_request_initial( + resource_group_name: str, + azure_firewall_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}/learnedIPPrefixes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "azureFirewallName": _SERIALIZER.url("azure_firewall_name", azure_firewall_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_azure_firewall_fqdn_tags_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewallFqdnTags") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_web_categories_get_request( + name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureWebCategories/{name}") # pylint: disable=line-too-long + path_format_arguments = { + "name": _SERIALIZER.url("name", name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_web_categories_list_by_subscription_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureWebCategories") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_bastion_hosts_delete_request_initial( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_bastion_hosts_get_request( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_bastion_hosts_create_or_update_request_initial( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_bastion_hosts_update_tags_request_initial( + subscription_id: str, + resource_group_name: str, + bastion_host_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_bastion_hosts_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/bastionHosts") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_bastion_hosts_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_put_bastion_shareable_link_request_initial( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/createShareableLinks") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_delete_bastion_shareable_link_request_initial( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/deleteShareableLinks") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_get_bastion_shareable_link_request( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getShareableLinks") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_get_active_sessions_request_initial( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getActiveSessions") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_disconnect_active_sessions_request( + resource_group_name: str, + bastion_host_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/disconnectActiveSessions") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "bastionHostName": _SERIALIZER.url("bastion_host_name", bastion_host_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_check_dns_name_availability_request( + location: str, + subscription_id: str, + *, + domain_name_label: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/CheckDnsNameAvailability") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['domainNameLabel'] = _SERIALIZER.query("domain_name_label", domain_name_label, 'str') + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_list_active_connectivity_configurations_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveConnectivityConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_list_active_security_admin_rules_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityAdminRules") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_list_network_manager_effective_connectivity_configurations_request( + subscription_id: str, + resource_group_name: str, + virtual_network_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveConnectivityConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_list_network_manager_effective_security_admin_rules_request( + subscription_id: str, + resource_group_name: str, + virtual_network_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveSecurityAdminRules") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_supported_security_providers_request( + subscription_id: str, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/supportedSecurityProviders") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_generatevirtualwanvpnserverconfigurationvpnprofile_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_wan_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/GenerateVpnProfile") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_provider_port_request( + providerport: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts/{providerport}") # pylint: disable=line-too-long + path_format_arguments = { + "providerport": _SERIALIZER.url("providerport", providerport, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_list_cloud_service_role_instance_network_interfaces_request( + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "cloudServiceName": _SERIALIZER.url("cloud_service_name", cloud_service_name, 'str'), + "roleInstanceName": _SERIALIZER.url("role_instance_name", role_instance_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_list_cloud_service_network_interfaces_request( + resource_group_name: str, + cloud_service_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/networkInterfaces") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "cloudServiceName": _SERIALIZER.url("cloud_service_name", cloud_service_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_get_cloud_service_network_interface_request( + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "cloudServiceName": _SERIALIZER.url("cloud_service_name", cloud_service_name, 'str'), + "roleInstanceName": _SERIALIZER.url("role_instance_name", role_instance_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_delete_request_initial( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_get_request( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_create_or_update_request_initial( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_interfaces_update_tags_request( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_interfaces_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkInterfaces") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_get_effective_route_table_request_initial( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveRouteTable") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_list_effective_network_security_groups_request_initial( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveNetworkSecurityGroups") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_list_virtual_machine_scale_set_vm_network_interfaces_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "virtualmachineIndex": _SERIALIZER.url("virtualmachine_index", virtualmachine_index, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_list_virtual_machine_scale_set_network_interfaces_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_get_virtual_machine_scale_set_network_interface_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "virtualmachineIndex": _SERIALIZER.url("virtualmachine_index", virtualmachine_index, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_list_virtual_machine_scale_set_ip_configurations_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "virtualmachineIndex": _SERIALIZER.url("virtualmachine_index", virtualmachine_index, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interfaces_get_virtual_machine_scale_set_ip_configuration_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "virtualmachineIndex": _SERIALIZER.url("virtualmachine_index", virtualmachine_index, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "ipConfigurationName": _SERIALIZER.url("ip_configuration_name", ip_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_list_cloud_service_public_ip_addresses_request( + resource_group_name: str, + cloud_service_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/publicipaddresses") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "cloudServiceName": _SERIALIZER.url("cloud_service_name", cloud_service_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_list_cloud_service_role_instance_public_ip_addresses_request( + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + ip_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "cloudServiceName": _SERIALIZER.url("cloud_service_name", cloud_service_name, 'str'), + "roleInstanceName": _SERIALIZER.url("role_instance_name", role_instance_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "ipConfigurationName": _SERIALIZER.url("ip_configuration_name", ip_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_get_cloud_service_public_ip_address_request( + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + ip_configuration_name: str, + public_ip_address_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "cloudServiceName": _SERIALIZER.url("cloud_service_name", cloud_service_name, 'str'), + "roleInstanceName": _SERIALIZER.url("role_instance_name", role_instance_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "ipConfigurationName": _SERIALIZER.url("ip_configuration_name", ip_configuration_name, 'str'), + "publicIpAddressName": _SERIALIZER.url("public_ip_address_name", public_ip_address_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_delete_request_initial( + resource_group_name: str, + public_ip_address_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpAddressName": _SERIALIZER.url("public_ip_address_name", public_ip_address_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_get_request( + resource_group_name: str, + public_ip_address_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpAddressName": _SERIALIZER.url("public_ip_address_name", public_ip_address_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_create_or_update_request_initial( + resource_group_name: str, + public_ip_address_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpAddressName": _SERIALIZER.url("public_ip_address_name", public_ip_address_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_public_ip_addresses_update_tags_request( + resource_group_name: str, + public_ip_address_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpAddressName": _SERIALIZER.url("public_ip_address_name", public_ip_address_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_public_ip_addresses_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_list_virtual_machine_scale_set_public_ip_addresses_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/publicipaddresses") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_list_virtual_machine_scale_set_vm_public_ip_addresses_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "virtualmachineIndex": _SERIALIZER.url("virtualmachine_index", virtualmachine_index, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "ipConfigurationName": _SERIALIZER.url("ip_configuration_name", ip_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_addresses_get_virtual_machine_scale_set_public_ip_address_request( + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + public_ip_address_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualMachineScaleSetName": _SERIALIZER.url("virtual_machine_scale_set_name", virtual_machine_scale_set_name, 'str'), + "virtualmachineIndex": _SERIALIZER.url("virtualmachine_index", virtualmachine_index, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "ipConfigurationName": _SERIALIZER.url("ip_configuration_name", ip_configuration_name, 'str'), + "publicIpAddressName": _SERIALIZER.url("public_ip_address_name", public_ip_address_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_custom_ip_prefixes_delete_request_initial( + resource_group_name: str, + custom_ip_prefix_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "customIpPrefixName": _SERIALIZER.url("custom_ip_prefix_name", custom_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_custom_ip_prefixes_get_request( + resource_group_name: str, + custom_ip_prefix_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "customIpPrefixName": _SERIALIZER.url("custom_ip_prefix_name", custom_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_custom_ip_prefixes_create_or_update_request_initial( + resource_group_name: str, + custom_ip_prefix_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "customIpPrefixName": _SERIALIZER.url("custom_ip_prefix_name", custom_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_custom_ip_prefixes_update_tags_request( + resource_group_name: str, + custom_ip_prefix_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "customIpPrefixName": _SERIALIZER.url("custom_ip_prefix_name", custom_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_custom_ip_prefixes_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/customIpPrefixes") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_custom_ip_prefixes_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ddos_custom_policies_delete_request_initial( + resource_group_name: str, + ddos_custom_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosCustomPolicyName": _SERIALIZER.url("ddos_custom_policy_name", ddos_custom_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ddos_custom_policies_get_request( + resource_group_name: str, + ddos_custom_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosCustomPolicyName": _SERIALIZER.url("ddos_custom_policy_name", ddos_custom_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ddos_custom_policies_create_or_update_request_initial( + resource_group_name: str, + ddos_custom_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosCustomPolicyName": _SERIALIZER.url("ddos_custom_policy_name", ddos_custom_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ddos_custom_policies_update_tags_request( + resource_group_name: str, + ddos_custom_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosCustomPolicyName": _SERIALIZER.url("ddos_custom_policy_name", ddos_custom_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ddos_protection_plans_delete_request_initial( + resource_group_name: str, + ddos_protection_plan_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosProtectionPlanName": _SERIALIZER.url("ddos_protection_plan_name", ddos_protection_plan_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ddos_protection_plans_get_request( + resource_group_name: str, + ddos_protection_plan_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosProtectionPlanName": _SERIALIZER.url("ddos_protection_plan_name", ddos_protection_plan_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ddos_protection_plans_create_or_update_request_initial( + resource_group_name: str, + ddos_protection_plan_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosProtectionPlanName": _SERIALIZER.url("ddos_protection_plan_name", ddos_protection_plan_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ddos_protection_plans_update_tags_request( + resource_group_name: str, + ddos_protection_plan_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ddosProtectionPlanName": _SERIALIZER.url("ddos_protection_plan_name", ddos_protection_plan_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ddos_protection_plans_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ddosProtectionPlans") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ddos_protection_plans_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_dscp_configuration_create_or_update_request_initial( + resource_group_name: str, + dscp_configuration_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "dscpConfigurationName": _SERIALIZER.url("dscp_configuration_name", dscp_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_dscp_configuration_delete_request_initial( + resource_group_name: str, + dscp_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "dscpConfigurationName": _SERIALIZER.url("dscp_configuration_name", dscp_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_dscp_configuration_get_request( + resource_group_name: str, + dscp_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "dscpConfigurationName": _SERIALIZER.url("dscp_configuration_name", dscp_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_dscp_configuration_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_dscp_configuration_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/dscpConfigurations") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_available_endpoint_services_list_request( + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/virtualNetworkAvailableEndpointServices") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_authorizations_delete_request_initial( + resource_group_name: str, + circuit_name: str, + authorization_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "authorizationName": _SERIALIZER.url("authorization_name", authorization_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_authorizations_get_request( + resource_group_name: str, + circuit_name: str, + authorization_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "authorizationName": _SERIALIZER.url("authorization_name", authorization_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_authorizations_create_or_update_request_initial( + resource_group_name: str, + circuit_name: str, + authorization_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "authorizationName": _SERIALIZER.url("authorization_name", authorization_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_circuit_authorizations_list_request( + resource_group_name: str, + circuit_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_peerings_delete_request_initial( + resource_group_name: str, + circuit_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_peerings_get_request( + resource_group_name: str, + circuit_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_peerings_create_or_update_request_initial( + resource_group_name: str, + circuit_name: str, + peering_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_circuit_peerings_list_request( + resource_group_name: str, + circuit_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_connections_delete_request_initial( + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_connections_get_request( + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuit_connections_create_or_update_request_initial( + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_circuit_connections_list_request( + resource_group_name: str, + circuit_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_peer_express_route_circuit_connections_get_request( + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_peer_express_route_circuit_connections_list_request( + resource_group_name: str, + circuit_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_delete_request_initial( + resource_group_name: str, + circuit_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_get_request( + resource_group_name: str, + circuit_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_create_or_update_request_initial( + resource_group_name: str, + circuit_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_circuits_update_tags_request( + resource_group_name: str, + circuit_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_circuits_list_arp_table_request_initial( + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/arpTables/{devicePath}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "devicePath": _SERIALIZER.url("device_path", device_path, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_list_routes_table_request_initial( + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTables/{devicePath}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "devicePath": _SERIALIZER.url("device_path", device_path, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_list_routes_table_summary_request_initial( + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTablesSummary/{devicePath}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "devicePath": _SERIALIZER.url("device_path", device_path, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_get_stats_request( + resource_group_name: str, + circuit_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/stats") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_get_peering_stats_request( + resource_group_name: str, + circuit_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/stats") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "circuitName": _SERIALIZER.url("circuit_name", circuit_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_circuits_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCircuits") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_service_providers_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteServiceProviders") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connections_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCrossConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connections_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connections_get_request( + resource_group_name: str, + cross_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connections_create_or_update_request_initial( + resource_group_name: str, + cross_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_cross_connections_update_tags_request( + resource_group_name: str, + cross_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_cross_connections_list_arp_table_request_initial( + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/arpTables/{devicePath}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "devicePath": _SERIALIZER.url("device_path", device_path, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connections_list_routes_table_summary_request_initial( + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTablesSummary/{devicePath}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "devicePath": _SERIALIZER.url("device_path", device_path, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connections_list_routes_table_request_initial( + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTables/{devicePath}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "devicePath": _SERIALIZER.url("device_path", device_path, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connection_peerings_list_request( + resource_group_name: str, + cross_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connection_peerings_delete_request_initial( + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connection_peerings_get_request( + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_cross_connection_peerings_create_or_update_request_initial( + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "crossConnectionName": _SERIALIZER.url("cross_connection_name", cross_connection_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_ports_locations_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_ports_locations_get_request( + subscription_id: str, + location_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations/{locationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "locationName": _SERIALIZER.url("location_name", location_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_ports_delete_request_initial( + subscription_id: str, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_ports_get_request( + subscription_id: str, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_ports_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + express_route_port_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_ports_update_tags_request( + subscription_id: str, + resource_group_name: str, + express_route_port_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_ports_list_by_resource_group_request( + subscription_id: str, + resource_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_ports_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePorts") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_ports_generate_loa_request( + subscription_id: str, + resource_group_name: str, + express_route_port_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/generateLoa") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_links_get_request( + subscription_id: str, + resource_group_name: str, + express_route_port_name: str, + link_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links/{linkName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + "linkName": _SERIALIZER.url("link_name", link_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_links_list_request( + subscription_id: str, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_port_authorizations_delete_request_initial( + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + "authorizationName": _SERIALIZER.url("authorization_name", authorization_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_port_authorizations_get_request( + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + "authorizationName": _SERIALIZER.url("authorization_name", authorization_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_port_authorizations_create_or_update_request_initial( + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + "authorizationName": _SERIALIZER.url("authorization_name", authorization_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_port_authorizations_list_request( + resource_group_name: str, + express_route_port_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRoutePortName": _SERIALIZER.url("express_route_port_name", express_route_port_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policies_delete_request_initial( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policies_get_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policies_create_or_update_request_initial( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_firewall_policies_update_tags_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_firewall_policies_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policies_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/firewallPolicies") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policy_rule_collection_groups_delete_request_initial( + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "ruleCollectionGroupName": _SERIALIZER.url("rule_collection_group_name", rule_collection_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policy_rule_collection_groups_get_request( + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "ruleCollectionGroupName": _SERIALIZER.url("rule_collection_group_name", rule_collection_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policy_rule_collection_groups_create_or_update_request_initial( + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "ruleCollectionGroupName": _SERIALIZER.url("rule_collection_group_name", rule_collection_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_firewall_policy_rule_collection_groups_list_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policy_idps_signatures_list_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/listIdpsSignatures") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_firewall_policy_idps_signatures_overrides_patch_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_firewall_policy_idps_signatures_overrides_put_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_firewall_policy_idps_signatures_overrides_get_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policy_idps_signatures_overrides_list_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_firewall_policy_idps_signatures_filter_values_list_request( + resource_group_name: str, + firewall_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/listIdpsFilterOptions") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "firewallPolicyName": _SERIALIZER.url("firewall_policy_name", firewall_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ip_allocations_delete_request_initial( + resource_group_name: str, + ip_allocation_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipAllocationName": _SERIALIZER.url("ip_allocation_name", ip_allocation_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ip_allocations_get_request( + resource_group_name: str, + ip_allocation_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipAllocationName": _SERIALIZER.url("ip_allocation_name", ip_allocation_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ip_allocations_create_or_update_request_initial( + resource_group_name: str, + ip_allocation_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipAllocationName": _SERIALIZER.url("ip_allocation_name", ip_allocation_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ip_allocations_update_tags_request( + resource_group_name: str, + ip_allocation_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipAllocationName": _SERIALIZER.url("ip_allocation_name", ip_allocation_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ip_allocations_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/IpAllocations") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ip_allocations_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ip_groups_get_request( + resource_group_name: str, + ip_groups_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipGroupsName": _SERIALIZER.url("ip_groups_name", ip_groups_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ip_groups_create_or_update_request_initial( + resource_group_name: str, + ip_groups_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipGroupsName": _SERIALIZER.url("ip_groups_name", ip_groups_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ip_groups_update_groups_request( + resource_group_name: str, + ip_groups_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipGroupsName": _SERIALIZER.url("ip_groups_name", ip_groups_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_ip_groups_delete_request_initial( + resource_group_name: str, + ip_groups_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "ipGroupsName": _SERIALIZER.url("ip_groups_name", ip_groups_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ip_groups_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_ip_groups_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ipGroups") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancers_delete_request_initial( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancers_get_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancers_create_or_update_request_initial( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_load_balancers_update_tags_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_load_balancers_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancers_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancers_swap_public_ip_addresses_request_initial( + location: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/setLoadBalancerFrontendPublicIpAddresses") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_load_balancers_list_inbound_nat_rule_port_mappings_request_initial( + group_name: str, + load_balancer_name: str, + backend_pool_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendPoolName}/queryInboundNatRulePortMapping") # pylint: disable=line-too-long + path_format_arguments = { + "groupName": _SERIALIZER.url("group_name", group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "backendPoolName": _SERIALIZER.url("backend_pool_name", backend_pool_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_load_balancer_backend_address_pools_list_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_backend_address_pools_get_request( + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "backendAddressPoolName": _SERIALIZER.url("backend_address_pool_name", backend_address_pool_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_backend_address_pools_create_or_update_request_initial( + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "backendAddressPoolName": _SERIALIZER.url("backend_address_pool_name", backend_address_pool_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_load_balancer_backend_address_pools_delete_request_initial( + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "backendAddressPoolName": _SERIALIZER.url("backend_address_pool_name", backend_address_pool_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_frontend_ip_configurations_list_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_frontend_ip_configurations_get_request( + resource_group_name: str, + load_balancer_name: str, + frontend_ip_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations/{frontendIPConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "frontendIPConfigurationName": _SERIALIZER.url("frontend_ip_configuration_name", frontend_ip_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_inbound_nat_rules_list_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_inbound_nat_rules_delete_request_initial( + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "inboundNatRuleName": _SERIALIZER.url("inbound_nat_rule_name", inbound_nat_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_inbound_nat_rules_get_request( + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "inboundNatRuleName": _SERIALIZER.url("inbound_nat_rule_name", inbound_nat_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_inbound_nat_rules_create_or_update_request_initial( + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "inboundNatRuleName": _SERIALIZER.url("inbound_nat_rule_name", inbound_nat_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_load_balancer_load_balancing_rules_list_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_load_balancing_rules_get_request( + resource_group_name: str, + load_balancer_name: str, + load_balancing_rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules/{loadBalancingRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "loadBalancingRuleName": _SERIALIZER.url("load_balancing_rule_name", load_balancing_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_outbound_rules_list_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_outbound_rules_get_request( + resource_group_name: str, + load_balancer_name: str, + outbound_rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules/{outboundRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "outboundRuleName": _SERIALIZER.url("outbound_rule_name", outbound_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_network_interfaces_list_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/networkInterfaces") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_probes_list_request( + resource_group_name: str, + load_balancer_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_load_balancer_probes_get_request( + resource_group_name: str, + load_balancer_name: str, + probe_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, 'str'), + "probeName": _SERIALIZER.url("probe_name", probe_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_nat_gateways_delete_request_initial( + resource_group_name: str, + nat_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "natGatewayName": _SERIALIZER.url("nat_gateway_name", nat_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_nat_gateways_get_request( + resource_group_name: str, + nat_gateway_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "natGatewayName": _SERIALIZER.url("nat_gateway_name", nat_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_nat_gateways_create_or_update_request_initial( + resource_group_name: str, + nat_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "natGatewayName": _SERIALIZER.url("nat_gateway_name", nat_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_nat_gateways_update_tags_request( + resource_group_name: str, + nat_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "natGatewayName": _SERIALIZER.url("nat_gateway_name", nat_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_nat_gateways_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/natGateways") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_nat_gateways_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interface_ip_configurations_list_request( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interface_ip_configurations_get_request( + resource_group_name: str, + network_interface_name: str, + ip_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "ipConfigurationName": _SERIALIZER.url("ip_configuration_name", ip_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interface_load_balancers_list_request( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/loadBalancers") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interface_tap_configurations_delete_request_initial( + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "tapConfigurationName": _SERIALIZER.url("tap_configuration_name", tap_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interface_tap_configurations_get_request( + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "tapConfigurationName": _SERIALIZER.url("tap_configuration_name", tap_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_interface_tap_configurations_create_or_update_request_initial( + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "tapConfigurationName": _SERIALIZER.url("tap_configuration_name", tap_configuration_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_interface_tap_configurations_list_request( + resource_group_name: str, + network_interface_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkInterfaceName": _SERIALIZER.url("network_interface_name", network_interface_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_managers_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_managers_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_managers_delete_request_initial( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + force: Optional[bool] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_managers_patch_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_managers_list_by_subscription_request( + subscription_id: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagers") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_managers_list_request( + subscription_id: str, + resource_group_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_manager_commits_post_request_initial( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_manager_deployment_status_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listDeploymentStatus") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_subscription_network_manager_connections_create_or_update_request( + subscription_id: str, + network_manager_connection_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_subscription_network_manager_connections_get_request( + subscription_id: str, + network_manager_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_subscription_network_manager_connections_delete_request( + subscription_id: str, + network_manager_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_subscription_network_manager_connections_list_request( + subscription_id: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_management_group_network_manager_connections_create_or_update_request( + management_group_id: str, + network_manager_connection_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), + "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_management_group_network_manager_connections_get_request( + management_group_id: str, + network_manager_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), + "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_management_group_network_manager_connections_delete_request( + management_group_id: str, + network_manager_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), + "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_management_group_network_manager_connections_list_request( + management_group_id: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections") # pylint: disable=line-too-long + path_format_arguments = { + "managementGroupId": _SERIALIZER.url("management_group_id", management_group_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connectivity_configurations_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connectivity_configurations_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_connectivity_configurations_delete_request_initial( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + *, + force: Optional[bool] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connectivity_configurations_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_groups_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_groups_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + *, + json: JSONType = None, + content: Any = None, + if_match: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if if_match is not None: + _header_parameters['If-Match'] = _SERIALIZER.header("if_match", if_match, 'str') + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_groups_delete_request_initial( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + *, + force: Optional[bool] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_groups_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_static_members_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), + "staticMemberName": _SERIALIZER.url("static_member_name", static_member_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_static_members_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), + "staticMemberName": _SERIALIZER.url("static_member_name", static_member_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_static_members_delete_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), + "staticMemberName": _SERIALIZER.url("static_member_name", static_member_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_static_members_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_scope_connections_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "scopeConnectionName": _SERIALIZER.url("scope_connection_name", scope_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_scope_connections_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "scopeConnectionName": _SERIALIZER.url("scope_connection_name", scope_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_scope_connections_delete_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "scopeConnectionName": _SERIALIZER.url("scope_connection_name", scope_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_scope_connections_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_admin_configurations_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_admin_configurations_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_admin_configurations_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_security_admin_configurations_delete_request_initial( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + *, + force: Optional[bool] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_admin_rule_collections_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_admin_rule_collections_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_admin_rule_collections_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_admin_rule_collections_delete_request_initial( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + *, + force: Optional[bool] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_admin_rules_list_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + *, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if top is not None: + _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) + if skip_token is not None: + _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_admin_rules_get_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_admin_rules_create_or_update_request( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_admin_rules_delete_request_initial( + subscription_id: str, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + *, + force: Optional[bool] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), + "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if force is not None: + _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_profiles_delete_request_initial( + resource_group_name: str, + network_profile_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkProfileName": _SERIALIZER.url("network_profile_name", network_profile_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_profiles_get_request( + resource_group_name: str, + network_profile_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkProfileName": _SERIALIZER.url("network_profile_name", network_profile_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_profiles_create_or_update_request( + resource_group_name: str, + network_profile_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkProfileName": _SERIALIZER.url("network_profile_name", network_profile_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_profiles_update_tags_request( + resource_group_name: str, + network_profile_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkProfileName": _SERIALIZER.url("network_profile_name", network_profile_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_profiles_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkProfiles") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_profiles_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_security_groups_delete_request_initial( + resource_group_name: str, + network_security_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_security_groups_get_request( + resource_group_name: str, + network_security_group_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_security_groups_create_or_update_request_initial( + resource_group_name: str, + network_security_group_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_security_groups_update_tags_request( + resource_group_name: str, + network_security_group_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_security_groups_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkSecurityGroups") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_security_groups_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_rules_delete_request_initial( + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "securityRuleName": _SERIALIZER.url("security_rule_name", security_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_rules_get_request( + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "securityRuleName": _SERIALIZER.url("security_rule_name", security_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_rules_create_or_update_request_initial( + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "securityRuleName": _SERIALIZER.url("security_rule_name", security_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_security_rules_list_request( + resource_group_name: str, + network_security_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_default_security_rules_list_request( + resource_group_name: str, + network_security_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_default_security_rules_get_request( + resource_group_name: str, + network_security_group_name: str, + default_security_rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules/{defaultSecurityRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkSecurityGroupName": _SERIALIZER.url("network_security_group_name", network_security_group_name, 'str'), + "defaultSecurityRuleName": _SERIALIZER.url("default_security_rule_name", default_security_rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_virtual_appliances_delete_request_initial( + resource_group_name: str, + network_virtual_appliance_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_virtual_appliances_get_request( + resource_group_name: str, + network_virtual_appliance_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_virtual_appliances_update_tags_request( + subscription_id: str, + resource_group_name: str, + network_virtual_appliance_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_virtual_appliances_create_or_update_request_initial( + resource_group_name: str, + network_virtual_appliance_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_virtual_appliances_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_virtual_appliances_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualAppliances") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_appliance_sites_delete_request_initial( + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "siteName": _SERIALIZER.url("site_name", site_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_appliance_sites_get_request( + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "siteName": _SERIALIZER.url("site_name", site_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_appliance_sites_create_or_update_request_initial( + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "siteName": _SERIALIZER.url("site_name", site_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_appliance_sites_list_request( + resource_group_name: str, + network_virtual_appliance_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_appliance_skus_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualApplianceSkus") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_appliance_skus_get_request( + subscription_id: str, + sku_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualApplianceSkus/{skuName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "skuName": _SERIALIZER.url("sku_name", sku_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_inbound_security_rule_create_or_update_request_initial( + resource_group_name: str, + network_virtual_appliance_name: str, + rule_collection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/inboundSecurityRules/{ruleCollectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkVirtualApplianceName": _SERIALIZER.url("network_virtual_appliance_name", network_virtual_appliance_name, 'str'), + "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_create_or_update_request( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_request( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_watchers_delete_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_watchers_update_tags_request( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_watchers_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkWatchers") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_network_watchers_get_topology_request( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/topology") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_verify_ip_flow_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_next_hop_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_vm_security_rules_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_troubleshooting_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_troubleshooting_result_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_set_flow_log_configuration_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_flow_log_status_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_check_connectivity_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectivityCheck") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_azure_reachability_report_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/azureReachabilityReport") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_list_available_providers_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/availableProvidersList") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_network_watchers_get_network_configuration_diagnostic_request_initial( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/networkConfigurationDiagnostic") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_packet_captures_create_request_initial( + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "packetCaptureName": _SERIALIZER.url("packet_capture_name", packet_capture_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_packet_captures_get_request( + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "packetCaptureName": _SERIALIZER.url("packet_capture_name", packet_capture_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_packet_captures_delete_request_initial( + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "packetCaptureName": _SERIALIZER.url("packet_capture_name", packet_capture_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_packet_captures_stop_request_initial( + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "packetCaptureName": _SERIALIZER.url("packet_capture_name", packet_capture_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_packet_captures_get_status_request_initial( + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "packetCaptureName": _SERIALIZER.url("packet_capture_name", packet_capture_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_packet_captures_list_request( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connection_monitors_create_or_update_request_initial( + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + migrate: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "connectionMonitorName": _SERIALIZER.url("connection_monitor_name", connection_monitor_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if migrate is not None: + _query_parameters['migrate'] = _SERIALIZER.query("migrate", migrate, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_connection_monitors_get_request( + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "connectionMonitorName": _SERIALIZER.url("connection_monitor_name", connection_monitor_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connection_monitors_delete_request_initial( + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "connectionMonitorName": _SERIALIZER.url("connection_monitor_name", connection_monitor_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connection_monitors_update_tags_request( + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "connectionMonitorName": _SERIALIZER.url("connection_monitor_name", connection_monitor_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_connection_monitors_stop_request_initial( + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/stop") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "connectionMonitorName": _SERIALIZER.url("connection_monitor_name", connection_monitor_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connection_monitors_start_request_initial( + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/start") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "connectionMonitorName": _SERIALIZER.url("connection_monitor_name", connection_monitor_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connection_monitors_query_request_initial( + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/query") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "connectionMonitorName": _SERIALIZER.url("connection_monitor_name", connection_monitor_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_connection_monitors_list_request( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_flow_logs_create_or_update_request_initial( + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "flowLogName": _SERIALIZER.url("flow_log_name", flow_log_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_flow_logs_update_tags_request( + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "flowLogName": _SERIALIZER.url("flow_log_name", flow_log_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_flow_logs_get_request( + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "flowLogName": _SERIALIZER.url("flow_log_name", flow_log_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_flow_logs_delete_request_initial( + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "flowLogName": _SERIALIZER.url("flow_log_name", flow_log_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_flow_logs_list_request( + resource_group_name: str, + network_watcher_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "networkWatcherName": _SERIALIZER.url("network_watcher_name", network_watcher_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_operations_list_request( + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/providers/Microsoft.Network/operations") + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_endpoints_delete_request_initial( + resource_group_name: str, + private_endpoint_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "privateEndpointName": _SERIALIZER.url("private_endpoint_name", private_endpoint_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_endpoints_get_request( + resource_group_name: str, + private_endpoint_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "privateEndpointName": _SERIALIZER.url("private_endpoint_name", private_endpoint_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_endpoints_create_or_update_request_initial( + resource_group_name: str, + private_endpoint_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "privateEndpointName": _SERIALIZER.url("private_endpoint_name", private_endpoint_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_private_endpoints_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_endpoints_list_by_subscription_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateEndpoints") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_available_private_endpoint_types_list_request( + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_available_private_endpoint_types_list_by_resource_group_request( + location: str, + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_dns_zone_groups_delete_request_initial( + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "privateEndpointName": _SERIALIZER.url("private_endpoint_name", private_endpoint_name, 'str'), + "privateDnsZoneGroupName": _SERIALIZER.url("private_dns_zone_group_name", private_dns_zone_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_dns_zone_groups_get_request( + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "privateEndpointName": _SERIALIZER.url("private_endpoint_name", private_endpoint_name, 'str'), + "privateDnsZoneGroupName": _SERIALIZER.url("private_dns_zone_group_name", private_dns_zone_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_dns_zone_groups_create_or_update_request_initial( + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "privateEndpointName": _SERIALIZER.url("private_endpoint_name", private_endpoint_name, 'str'), + "privateDnsZoneGroupName": _SERIALIZER.url("private_dns_zone_group_name", private_dns_zone_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_private_dns_zone_groups_list_request( + private_endpoint_name: str, + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups") # pylint: disable=line-too-long + path_format_arguments = { + "privateEndpointName": _SERIALIZER.url("private_endpoint_name", private_endpoint_name, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_delete_request_initial( + resource_group_name: str, + service_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceName": _SERIALIZER.url("service_name", service_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_get_request( + resource_group_name: str, + service_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceName": _SERIALIZER.url("service_name", service_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_create_or_update_request_initial( + resource_group_name: str, + service_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceName": _SERIALIZER.url("service_name", service_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_private_link_services_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_list_by_subscription_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateLinkServices") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_get_private_endpoint_connection_request( + resource_group_name: str, + service_name: str, + pe_connection_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceName": _SERIALIZER.url("service_name", service_name, 'str'), + "peConnectionName": _SERIALIZER.url("pe_connection_name", pe_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_update_private_endpoint_connection_request( + resource_group_name: str, + service_name: str, + pe_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceName": _SERIALIZER.url("service_name", service_name, 'str'), + "peConnectionName": _SERIALIZER.url("pe_connection_name", pe_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_private_link_services_delete_private_endpoint_connection_request_initial( + resource_group_name: str, + service_name: str, + pe_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceName": _SERIALIZER.url("service_name", service_name, 'str'), + "peConnectionName": _SERIALIZER.url("pe_connection_name", pe_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_list_private_endpoint_connections_request( + resource_group_name: str, + service_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceName": _SERIALIZER.url("service_name", service_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_check_private_link_service_visibility_request_initial( + location: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_private_link_services_check_private_link_service_visibility_by_resource_group_request_initial( + location: str, + resource_group_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_private_link_services_list_auto_approved_private_link_services_request( + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_private_link_services_list_auto_approved_private_link_services_by_resource_group_request( + location: str, + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_prefixes_delete_request_initial( + resource_group_name: str, + public_ip_prefix_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpPrefixName": _SERIALIZER.url("public_ip_prefix_name", public_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_prefixes_get_request( + resource_group_name: str, + public_ip_prefix_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpPrefixName": _SERIALIZER.url("public_ip_prefix_name", public_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_prefixes_create_or_update_request_initial( + resource_group_name: str, + public_ip_prefix_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpPrefixName": _SERIALIZER.url("public_ip_prefix_name", public_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_public_ip_prefixes_update_tags_request( + resource_group_name: str, + public_ip_prefix_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "publicIpPrefixName": _SERIALIZER.url("public_ip_prefix_name", public_ip_prefix_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_public_ip_prefixes_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPPrefixes") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_public_ip_prefixes_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_filters_delete_request_initial( + resource_group_name: str, + route_filter_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_filters_get_request( + resource_group_name: str, + route_filter_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_filters_create_or_update_request_initial( + resource_group_name: str, + route_filter_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_route_filters_update_tags_request( + resource_group_name: str, + route_filter_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_route_filters_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_filters_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeFilters") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_filter_rules_delete_request_initial( + resource_group_name: str, + route_filter_name: str, + rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_filter_rules_get_request( + resource_group_name: str, + route_filter_name: str, + rule_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_filter_rules_create_or_update_request_initial( + resource_group_name: str, + route_filter_name: str, + rule_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_route_filter_rules_list_by_route_filter_request( + resource_group_name: str, + route_filter_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeFilterName": _SERIALIZER.url("route_filter_name", route_filter_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_tables_delete_request_initial( + resource_group_name: str, + route_table_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_tables_get_request( + resource_group_name: str, + route_table_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_tables_create_or_update_request_initial( + resource_group_name: str, + route_table_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_route_tables_update_tags_request( + resource_group_name: str, + route_table_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_route_tables_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_route_tables_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_routes_delete_request_initial( + resource_group_name: str, + route_table_name: str, + route_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "routeName": _SERIALIZER.url("route_name", route_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_routes_get_request( + resource_group_name: str, + route_table_name: str, + route_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "routeName": _SERIALIZER.url("route_name", route_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_routes_create_or_update_request_initial( + resource_group_name: str, + route_table_name: str, + route_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "routeName": _SERIALIZER.url("route_name", route_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_routes_list_request( + resource_group_name: str, + route_table_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_partner_providers_delete_request_initial( + resource_group_name: str, + security_partner_provider_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "securityPartnerProviderName": _SERIALIZER.url("security_partner_provider_name", security_partner_provider_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_partner_providers_get_request( + resource_group_name: str, + security_partner_provider_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "securityPartnerProviderName": _SERIALIZER.url("security_partner_provider_name", security_partner_provider_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_partner_providers_create_or_update_request_initial( + resource_group_name: str, + security_partner_provider_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "securityPartnerProviderName": _SERIALIZER.url("security_partner_provider_name", security_partner_provider_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_security_partner_providers_update_tags_request( + resource_group_name: str, + security_partner_provider_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "securityPartnerProviderName": _SERIALIZER.url("security_partner_provider_name", security_partner_provider_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_security_partner_providers_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_security_partner_providers_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/securityPartnerProviders") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_bgp_service_communities_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/bgpServiceCommunities") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_endpoint_policies_delete_request_initial( + resource_group_name: str, + service_endpoint_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_endpoint_policies_get_request( + resource_group_name: str, + service_endpoint_policy_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_endpoint_policies_create_or_update_request_initial( + resource_group_name: str, + service_endpoint_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_service_endpoint_policies_update_tags_request( + resource_group_name: str, + service_endpoint_policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_service_endpoint_policies_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ServiceEndpointPolicies") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_endpoint_policies_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_endpoint_policy_definitions_delete_request_initial( + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "serviceEndpointPolicyDefinitionName": _SERIALIZER.url("service_endpoint_policy_definition_name", service_endpoint_policy_definition_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_endpoint_policy_definitions_get_request( + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "serviceEndpointPolicyDefinitionName": _SERIALIZER.url("service_endpoint_policy_definition_name", service_endpoint_policy_definition_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_endpoint_policy_definitions_create_or_update_request_initial( + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "serviceEndpointPolicyDefinitionName": _SERIALIZER.url("service_endpoint_policy_definition_name", service_endpoint_policy_definition_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_service_endpoint_policy_definitions_list_by_resource_group_request( + resource_group_name: str, + service_endpoint_policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "serviceEndpointPolicyName": _SERIALIZER.url("service_endpoint_policy_name", service_endpoint_policy_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_tags_list_request( + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTags") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_tag_information_list_request( + location: str, + subscription_id: str, + *, + no_address_prefixes: Optional[bool] = None, + tag_name: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTagDetails") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if no_address_prefixes is not None: + _query_parameters['noAddressPrefixes'] = _SERIALIZER.query("no_address_prefixes", no_address_prefixes, 'bool') + if tag_name is not None: + _query_parameters['tagName'] = _SERIALIZER.query("tag_name", tag_name, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_usages_list_request( + location: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/usages") # pylint: disable=line-too-long + path_format_arguments = { + "location": _SERIALIZER.url("location", location, 'str', pattern=r'^[-\w\._ ]+$'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_networks_delete_request_initial( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_networks_get_request( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_networks_create_or_update_request_initial( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_networks_update_tags_request( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_networks_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_networks_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_networks_check_ip_address_availability_request( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + *, + ip_address: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/CheckIPAddressAvailability") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['ipAddress'] = _SERIALIZER.query("ip_address", ip_address, 'str') + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_networks_list_usage_request( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_subnets_delete_request_initial( + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subnetName": _SERIALIZER.url("subnet_name", subnet_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_subnets_get_request( + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subnetName": _SERIALIZER.url("subnet_name", subnet_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_subnets_create_or_update_request_initial( + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subnetName": _SERIALIZER.url("subnet_name", subnet_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_subnets_prepare_network_policies_request_initial( + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/PrepareNetworkPolicies") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subnetName": _SERIALIZER.url("subnet_name", subnet_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_subnets_unprepare_network_policies_request_initial( + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/UnprepareNetworkPolicies") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subnetName": _SERIALIZER.url("subnet_name", subnet_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_subnets_list_request( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_resource_navigation_links_list_request( + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ResourceNavigationLinks") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subnetName": _SERIALIZER.url("subnet_name", subnet_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_service_association_links_list_request( + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ServiceAssociationLinks") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subnetName": _SERIALIZER.url("subnet_name", subnet_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_peerings_delete_request_initial( + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "virtualNetworkPeeringName": _SERIALIZER.url("virtual_network_peering_name", virtual_network_peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_peerings_get_request( + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "virtualNetworkPeeringName": _SERIALIZER.url("virtual_network_peering_name", virtual_network_peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_peerings_create_or_update_request_initial( + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + sync_remote_address_space: Optional[Union[str, "_models.SyncRemoteAddressSpace"]] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "virtualNetworkPeeringName": _SERIALIZER.url("virtual_network_peering_name", virtual_network_peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + if sync_remote_address_space is not None: + _query_parameters['syncRemoteAddressSpace'] = _SERIALIZER.query("sync_remote_address_space", sync_remote_address_space, 'str') + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_peerings_list_request( + resource_group_name: str, + virtual_network_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkName": _SERIALIZER.url("virtual_network_name", virtual_network_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_create_or_update_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_get_request( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_delete_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_update_tags_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_list_connections_request( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/connections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_reset_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + gateway_vip: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + if gateway_vip is not None: + _query_parameters['gatewayVip'] = _SERIALIZER.query("gateway_vip", gateway_vip, 'str') + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_reset_vpn_client_shared_key_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/resetvpnclientsharedkey") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_generatevpnclientpackage_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_generate_vpn_profile_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnprofile") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_get_vpn_profile_package_url_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnprofilepackageurl") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_get_bgp_peer_status_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + peer: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getBgpPeerStatus") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + if peer is not None: + _query_parameters['peer'] = _SERIALIZER.query("peer", peer, 'str') + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_supported_vpn_devices_request( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/supportedvpndevices") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_get_learned_routes_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getLearnedRoutes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_get_advertised_routes_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + peer: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getAdvertisedRoutes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['peer'] = _SERIALIZER.query("peer", peer, 'str') + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_set_vpnclient_ipsec_parameters_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/setvpnclientipsecparameters") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_get_vpnclient_ipsec_parameters_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnclientipsecparameters") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_vpn_device_configuration_script_request( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/vpndeviceconfigurationscript") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_start_packet_capture_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/startPacketCapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_stop_packet_capture_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/stopPacketCapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateways_get_vpnclient_connection_health_request_initial( + resource_group_name: str, + virtual_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getVpnClientConnectionHealth") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateways_disconnect_virtual_network_gateway_vpn_connections_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_network_gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/disconnectVirtualNetworkGatewayVpnConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_connections_create_or_update_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_connections_get_request( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_connections_delete_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_connections_update_tags_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_connections_set_shared_key_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_connections_get_shared_key_request( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_connections_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_connections_reset_shared_key_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_connections_start_packet_capture_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_connections_stop_packet_capture_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_connections_get_ike_sas_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/getikesas") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_connections_reset_connection_request_initial( + resource_group_name: str, + virtual_network_gateway_connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/resetconnection") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayConnectionName": _SERIALIZER.url("virtual_network_gateway_connection_name", virtual_network_gateway_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_local_network_gateways_create_or_update_request_initial( + resource_group_name: str, + local_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "localNetworkGatewayName": _SERIALIZER.url("local_network_gateway_name", local_network_gateway_name, 'str', min_length=1), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_local_network_gateways_get_request( + resource_group_name: str, + local_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "localNetworkGatewayName": _SERIALIZER.url("local_network_gateway_name", local_network_gateway_name, 'str', min_length=1), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_local_network_gateways_delete_request_initial( + resource_group_name: str, + local_network_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "localNetworkGatewayName": _SERIALIZER.url("local_network_gateway_name", local_network_gateway_name, 'str', min_length=1), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_local_network_gateways_update_tags_request( + resource_group_name: str, + local_network_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "localNetworkGatewayName": _SERIALIZER.url("local_network_gateway_name", local_network_gateway_name, 'str', min_length=1), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_local_network_gateways_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_nat_rules_get_request( + subscription_id: str, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "natRuleName": _SERIALIZER.url("nat_rule_name", nat_rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_nat_rules_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "natRuleName": _SERIALIZER.url("nat_rule_name", nat_rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_gateway_nat_rules_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + "natRuleName": _SERIALIZER.url("nat_rule_name", nat_rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_gateway_nat_rules_list_by_virtual_network_gateway_request( + subscription_id: str, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualNetworkGatewayName": _SERIALIZER.url("virtual_network_gateway_name", virtual_network_gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_taps_delete_request_initial( + resource_group_name: str, + tap_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "tapName": _SERIALIZER.url("tap_name", tap_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_taps_get_request( + resource_group_name: str, + tap_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "tapName": _SERIALIZER.url("tap_name", tap_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_taps_create_or_update_request_initial( + resource_group_name: str, + tap_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "tapName": _SERIALIZER.url("tap_name", tap_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_taps_update_tags_request( + resource_group_name: str, + tap_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "tapName": _SERIALIZER.url("tap_name", tap_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_network_taps_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworkTaps") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_network_taps_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_routers_delete_request_initial( + resource_group_name: str, + virtual_router_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualRouterName": _SERIALIZER.url("virtual_router_name", virtual_router_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_routers_get_request( + resource_group_name: str, + virtual_router_name: str, + subscription_id: str, + *, + expand: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualRouterName": _SERIALIZER.url("virtual_router_name", virtual_router_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if expand is not None: + _query_parameters['$expand'] = _SERIALIZER.query("expand", expand, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_routers_create_or_update_request_initial( + resource_group_name: str, + virtual_router_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualRouterName": _SERIALIZER.url("virtual_router_name", virtual_router_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_routers_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_routers_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualRouters") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_router_peerings_delete_request_initial( + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualRouterName": _SERIALIZER.url("virtual_router_name", virtual_router_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_router_peerings_get_request( + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualRouterName": _SERIALIZER.url("virtual_router_name", virtual_router_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_router_peerings_create_or_update_request_initial( + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualRouterName": _SERIALIZER.url("virtual_router_name", virtual_router_name, 'str'), + "peeringName": _SERIALIZER.url("peering_name", peering_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_router_peerings_list_request( + resource_group_name: str, + virtual_router_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualRouterName": _SERIALIZER.url("virtual_router_name", virtual_router_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_wans_get_request( + resource_group_name: str, + virtual_wan_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "VirtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_wans_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_wan_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "VirtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_wans_update_tags_request( + subscription_id: str, + resource_group_name: str, + virtual_wan_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "VirtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_wans_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "VirtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_wans_list_by_resource_group_request( + subscription_id: str, + resource_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_wans_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualWans") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_sites_get_request( + subscription_id: str, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnSiteName": _SERIALIZER.url("vpn_site_name", vpn_site_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_sites_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + vpn_site_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnSiteName": _SERIALIZER.url("vpn_site_name", vpn_site_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_sites_update_tags_request( + subscription_id: str, + resource_group_name: str, + vpn_site_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnSiteName": _SERIALIZER.url("vpn_site_name", vpn_site_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_sites_delete_request_initial( + subscription_id: str, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnSiteName": _SERIALIZER.url("vpn_site_name", vpn_site_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_sites_list_by_resource_group_request( + subscription_id: str, + resource_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_sites_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnSites") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_site_links_get_request( + subscription_id: str, + resource_group_name: str, + vpn_site_name: str, + vpn_site_link_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks/{vpnSiteLinkName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnSiteName": _SERIALIZER.url("vpn_site_name", vpn_site_name, 'str'), + "vpnSiteLinkName": _SERIALIZER.url("vpn_site_link_name", vpn_site_link_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_site_links_list_by_vpn_site_request( + subscription_id: str, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnSiteName": _SERIALIZER.url("vpn_site_name", vpn_site_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_sites_configuration_download_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_wan_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnConfiguration") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_server_configurations_get_request( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_server_configurations_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_server_configurations_update_tags_request( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_server_configurations_delete_request_initial( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_server_configurations_list_by_resource_group_request( + subscription_id: str, + resource_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_server_configurations_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnServerConfigurations") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_configuration_policy_groups_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + "configurationPolicyGroupName": _SERIALIZER.url("configuration_policy_group_name", configuration_policy_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_configuration_policy_groups_delete_request_initial( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + "configurationPolicyGroupName": _SERIALIZER.url("configuration_policy_group_name", configuration_policy_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_configuration_policy_groups_get_request( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + "configurationPolicyGroupName": _SERIALIZER.url("configuration_policy_group_name", configuration_policy_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_configuration_policy_groups_list_by_vpn_server_configuration_request( + subscription_id: str, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "vpnServerConfigurationName": _SERIALIZER.url("vpn_server_configuration_name", vpn_server_configuration_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hubs_get_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hubs_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_hubs_update_tags_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_hubs_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hubs_list_by_resource_group_request( + subscription_id: str, + resource_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hubs_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualHubs") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hubs_get_effective_virtual_hub_routes_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/effectiveRoutes") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_hub_virtual_network_connections_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_hub_virtual_network_connections_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_hub_virtual_network_connections_get_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_hub_virtual_network_connections_list_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_gateways_get_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_gateways_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_gateways_update_tags_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_gateways_delete_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_gateways_reset_request_initial( + resource_group_name: str, + gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/reset") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_gateways_start_packet_capture_request_initial( + resource_group_name: str, + gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/startpacketcapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_gateways_stop_packet_capture_request_initial( + resource_group_name: str, + gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/stoppacketcapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_gateways_list_by_resource_group_request( + subscription_id: str, + resource_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_gateways_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnGateways") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_link_connections_reset_connection_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/resetconnection") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "linkConnectionName": _SERIALIZER.url("link_connection_name", link_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_link_connections_get_ike_sas_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/getikesas") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "linkConnectionName": _SERIALIZER.url("link_connection_name", link_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_link_connections_list_by_vpn_connection_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_connections_get_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_connections_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + connection_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_connections_delete_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_connections_start_packet_capture_request_initial( + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/startpacketcapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "vpnConnectionName": _SERIALIZER.url("vpn_connection_name", vpn_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_connections_stop_packet_capture_request_initial( + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/stoppacketcapture") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "vpnConnectionName": _SERIALIZER.url("vpn_connection_name", vpn_connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_connections_list_by_vpn_gateway_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_vpn_site_link_connections_get_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "linkConnectionName": _SERIALIZER.url("link_connection_name", link_connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_nat_rules_get_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "natRuleName": _SERIALIZER.url("nat_rule_name", nat_rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_nat_rules_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "natRuleName": _SERIALIZER.url("nat_rule_name", nat_rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_nat_rules_delete_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "natRuleName": _SERIALIZER.url("nat_rule_name", nat_rule_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_nat_rules_list_by_vpn_gateway_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_p2_svpn_gateways_get_request( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_p2_svpn_gateways_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_p2_svpn_gateways_update_tags_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_p2_svpn_gateways_delete_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_p2_svpn_gateways_list_by_resource_group_request( + subscription_id: str, + resource_group_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_p2_svpn_gateways_list_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/p2svpnGateways") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_p2_svpn_gateways_reset_request_initial( + resource_group_name: str, + gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/reset") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_p2_svpn_gateways_generate_vpn_profile_request_initial( + resource_group_name: str, + gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/generatevpnprofile") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_p2_svpn_gateways_get_p2_s_vpn_connection_health_request_initial( + resource_group_name: str, + gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealth") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_p2_svpn_gateways_get_p2_s_vpn_connection_health_detailed_request_initial( + subscription_id: str, + resource_group_name: str, + gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealthDetailed") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "gatewayName": _SERIALIZER.url("gateway_name", gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_p2_svpn_gateways_disconnect_p2_s_vpn_connections_request_initial( + subscription_id: str, + resource_group_name: str, + p2_s_vpn_gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{p2sVpnGatewayName}/disconnectP2sVpnConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "p2sVpnGatewayName": _SERIALIZER.url("p2_s_vpn_gateway_name", p2_s_vpn_gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_vpn_server_configurations_associated_with_virtual_wan_list_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnServerConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualWANName": _SERIALIZER.url("virtual_wan_name", virtual_wan_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_route_table_v2_s_get_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_route_table_v2_s_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_hub_route_table_v2_s_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_route_table_v2_s_list_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_gateways_list_by_subscription_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteGateways") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_gateways_list_by_resource_group_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_gateways_create_or_update_request_initial( + resource_group_name: str, + express_route_gateway_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_gateways_update_tags_request_initial( + subscription_id: str, + resource_group_name: str, + express_route_gateway_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_gateways_get_request( + resource_group_name: str, + express_route_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_gateways_delete_request_initial( + resource_group_name: str, + express_route_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_connections_create_or_update_request_initial( + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_express_route_connections_get_request( + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_connections_delete_request_initial( + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_connections_list_request( + resource_group_name: str, + express_route_gateway_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "expressRouteGatewayName": _SERIALIZER.url("express_route_gateway_name", express_route_gateway_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_bgp_connection_get_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_bgp_connection_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_hub_bgp_connection_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_bgp_connections_list_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_bgp_connections_list_learned_routes_request_initial( + resource_group_name: str, + hub_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/learnedRoutes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "hubName": _SERIALIZER.url("hub_name", hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_bgp_connections_list_advertised_routes_request_initial( + resource_group_name: str, + hub_name: str, + connection_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/advertisedRoutes") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "hubName": _SERIALIZER.url("hub_name", hub_name, 'str'), + "connectionName": _SERIALIZER.url("connection_name", connection_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_ip_configuration_get_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "ipConfigName": _SERIALIZER.url("ip_config_name", ip_config_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_ip_configuration_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "ipConfigName": _SERIALIZER.url("ip_config_name", ip_config_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_virtual_hub_ip_configuration_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "ipConfigName": _SERIALIZER.url("ip_config_name", ip_config_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_virtual_hub_ip_configuration_list_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_hub_route_tables_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_hub_route_tables_get_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_hub_route_tables_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routeTableName": _SERIALIZER.url("route_table_name", route_table_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_hub_route_tables_list_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_routing_intent_create_or_update_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routingIntentName": _SERIALIZER.url("routing_intent_name", routing_intent_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_routing_intent_get_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routingIntentName": _SERIALIZER.url("routing_intent_name", routing_intent_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_routing_intent_delete_request_initial( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + "routingIntentName": _SERIALIZER.url("routing_intent_name", routing_intent_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_routing_intent_list_request( + subscription_id: str, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "virtualHubName": _SERIALIZER.url("virtual_hub_name", virtual_hub_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_web_application_firewall_policies_list_request( + resource_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_web_application_firewall_policies_list_all_request( + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_web_application_firewall_policies_get_request( + resource_group_name: str, + policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "policyName": _SERIALIZER.url("policy_name", policy_name, 'str', max_length=128, min_length=0), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_web_application_firewall_policies_create_or_update_request( + resource_group_name: str, + policy_name: str, + subscription_id: str, + *, + json: JSONType = None, + content: Any = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', None) # type: Optional[str] + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "policyName": _SERIALIZER.url("policy_name", policy_name, 'str', max_length=128, min_length=0), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + if content_type is not None: + _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_query_parameters, + headers=_header_parameters, + json=json, + content=content, + **kwargs + ) + + +def build_web_application_firewall_policies_delete_request_initial( + resource_group_name: str, + policy_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "policyName": _SERIALIZER.url("policy_name", policy_name, 'str', max_length=128, min_length=0), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + + +def build_express_route_provider_ports_location_list_request( + subscription_id: str, + *, + filter: Optional[str] = None, + **kwargs: Any +) -> HttpRequest: + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + accept = "application/json" + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] + _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + if filter is not None: + _query_parameters['$filter'] = _SERIALIZER.query("filter", filter, 'str') + + # Construct headers + _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] + _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_query_parameters, + headers=_header_parameters, + **kwargs + ) + +class ApplicationGatewaysOperations(object): # pylint: disable=too-many-public-methods + """ApplicationGatewaysOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_delete_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> "_models.ApplicationGateway": + """Gets the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_get_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + application_gateway_name: str, + parameters: "_models.ApplicationGateway", + **kwargs: Any + ) -> "_models.ApplicationGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ApplicationGateway') + + request = build_application_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + application_gateway_name: str, + parameters: "_models.ApplicationGateway", + **kwargs: Any + ) -> LROPoller["_models.ApplicationGateway"]: + """Creates or updates the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param parameters: Parameters supplied to the create or update application gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ApplicationGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ApplicationGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + application_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ApplicationGateway": + """Updates the specified application gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param parameters: Parameters supplied to update application gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_application_gateways_update_tags_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ApplicationGatewayListResult"]: + """Lists all application gateways in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.ApplicationGatewayListResult"]: + """Gets all the application gateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways"} # type: ignore + + def _start_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_start_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._start_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _start_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start"} # type: ignore + + + @distributed_trace + def begin_start( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Starts the specified application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._start_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start"} # type: ignore + + def _stop_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_stop_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop"} # type: ignore + + + @distributed_trace + def begin_stop( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Stops the specified application gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._stop_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop"} # type: ignore + + def _backend_health_initial( + self, + resource_group_name: str, + application_gateway_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.ApplicationGatewayBackendHealth"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ApplicationGatewayBackendHealth"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_backend_health_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self._backend_health_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGatewayBackendHealth', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _backend_health_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth"} # type: ignore + + + @distributed_trace + def begin_backend_health( + self, + resource_group_name: str, + application_gateway_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> LROPoller["_models.ApplicationGatewayBackendHealth"]: + """Gets the backend health of the specified application gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param expand: Expands BackendAddressPool and BackendHttpSettings referenced in backend health. + Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ApplicationGatewayBackendHealth or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealth] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayBackendHealth"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._backend_health_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + expand=expand, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGatewayBackendHealth', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_backend_health.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth"} # type: ignore + + def _backend_health_on_demand_initial( + self, + resource_group_name: str, + application_gateway_name: str, + probe_request: "_models.ApplicationGatewayOnDemandProbe", + expand: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.ApplicationGatewayBackendHealthOnDemand"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ApplicationGatewayBackendHealthOnDemand"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(probe_request, 'ApplicationGatewayOnDemandProbe') + + request = build_application_gateways_backend_health_on_demand_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + expand=expand, + template_url=self._backend_health_on_demand_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGatewayBackendHealthOnDemand', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _backend_health_on_demand_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/getBackendHealthOnDemand"} # type: ignore + + + @distributed_trace + def begin_backend_health_on_demand( + self, + resource_group_name: str, + application_gateway_name: str, + probe_request: "_models.ApplicationGatewayOnDemandProbe", + expand: Optional[str] = None, + **kwargs: Any + ) -> LROPoller["_models.ApplicationGatewayBackendHealthOnDemand"]: + """Gets the backend health for given combination of backend pool and http setting of the specified + application gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param probe_request: Request body for on-demand test probe operation. + :type probe_request: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayOnDemandProbe + :param expand: Expands BackendAddressPool and BackendHttpSettings referenced in backend health. + Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ApplicationGatewayBackendHealthOnDemand + or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayBackendHealthOnDemand] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayBackendHealthOnDemand"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._backend_health_on_demand_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + probe_request=probe_request, + expand=expand, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGatewayBackendHealthOnDemand', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_backend_health_on_demand.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/getBackendHealthOnDemand"} # type: ignore + + @distributed_trace + def list_available_server_variables( + self, + **kwargs: Any + ) -> List[str]: + """Lists all available server variables. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: list of str, or the result of cls(response) + :rtype: list[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[List[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_server_variables_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_server_variables.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('[str]', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_server_variables.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableServerVariables"} # type: ignore + + + @distributed_trace + def list_available_request_headers( + self, + **kwargs: Any + ) -> List[str]: + """Lists all available request headers. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: list of str, or the result of cls(response) + :rtype: list[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[List[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_request_headers_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_request_headers.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('[str]', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_request_headers.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableRequestHeaders"} # type: ignore + + + @distributed_trace + def list_available_response_headers( + self, + **kwargs: Any + ) -> List[str]: + """Lists all available response headers. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: list of str, or the result of cls(response) + :rtype: list[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[List[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_response_headers_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_response_headers.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('[str]', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_response_headers.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableResponseHeaders"} # type: ignore + + + @distributed_trace + def list_available_waf_rule_sets( + self, + **kwargs: Any + ) -> "_models.ApplicationGatewayAvailableWafRuleSetsResult": + """Lists all available web application firewall rule sets. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewayAvailableWafRuleSetsResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAvailableWafRuleSetsResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayAvailableWafRuleSetsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_waf_rule_sets_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_waf_rule_sets.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewayAvailableWafRuleSetsResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_waf_rule_sets.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableWafRuleSets"} # type: ignore + + + @distributed_trace + def list_available_ssl_options( + self, + **kwargs: Any + ) -> "_models.ApplicationGatewayAvailableSslOptions": + """Lists available Ssl options for configuring Ssl policy. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewayAvailableSslOptions, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAvailableSslOptions + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayAvailableSslOptions"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_list_available_ssl_options_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_ssl_options.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewayAvailableSslOptions', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_available_ssl_options.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default"} # type: ignore + + + @distributed_trace + def list_available_ssl_predefined_policies( + self, + **kwargs: Any + ) -> Iterable["_models.ApplicationGatewayAvailableSslPredefinedPolicies"]: + """Lists all SSL predefined policies for configuring Ssl policy. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayAvailableSslPredefinedPolicies + or the result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayAvailableSslPredefinedPolicies] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayAvailableSslPredefinedPolicies"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateways_list_available_ssl_predefined_policies_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_available_ssl_predefined_policies.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateways_list_available_ssl_predefined_policies_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayAvailableSslPredefinedPolicies", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_available_ssl_predefined_policies.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies"} # type: ignore + + @distributed_trace + def get_ssl_predefined_policy( + self, + predefined_policy_name: str, + **kwargs: Any + ) -> "_models.ApplicationGatewaySslPredefinedPolicy": + """Gets Ssl predefined policy with the specified policy name. + + :param predefined_policy_name: Name of Ssl predefined policy. + :type predefined_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewaySslPredefinedPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewaySslPredefinedPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewaySslPredefinedPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateways_get_ssl_predefined_policy_request( + subscription_id=self._config.subscription_id, + predefined_policy_name=predefined_policy_name, + api_version=api_version, + template_url=self.get_ssl_predefined_policy.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewaySslPredefinedPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_ssl_predefined_policy.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/{predefinedPolicyName}"} # type: ignore + +class ApplicationGatewayPrivateLinkResourcesOperations(object): + """ApplicationGatewayPrivateLinkResourcesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> Iterable["_models.ApplicationGatewayPrivateLinkResourceListResult"]: + """Lists all private link resources on an application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationGatewayPrivateLinkResourceListResult or + the result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateLinkResourceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateLinkResourceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateway_private_link_resources_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateway_private_link_resources_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayPrivateLinkResourceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateLinkResources"} # type: ignore +class ApplicationGatewayPrivateEndpointConnectionsOperations(object): + """ApplicationGatewayPrivateEndpointConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateway_private_endpoint_connections_delete_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified private endpoint connection on application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param connection_name: The name of the application gateway private endpoint connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + def _update_initial( + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + parameters: "_models.ApplicationGatewayPrivateEndpointConnection", + **kwargs: Any + ) -> Optional["_models.ApplicationGatewayPrivateEndpointConnection"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ApplicationGatewayPrivateEndpointConnection"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ApplicationGatewayPrivateEndpointConnection') + + request = build_application_gateway_private_endpoint_connections_update_request_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ApplicationGatewayPrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_update( + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + parameters: "_models.ApplicationGatewayPrivateEndpointConnection", + **kwargs: Any + ) -> LROPoller["_models.ApplicationGatewayPrivateEndpointConnection"]: + """Updates the specified private endpoint connection on application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param connection_name: The name of the application gateway private endpoint connection. + :type connection_name: str + :param parameters: Parameters supplied to update application gateway private endpoint + connection operation. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either + ApplicationGatewayPrivateEndpointConnection or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateEndpointConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_initial( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationGatewayPrivateEndpointConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + application_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.ApplicationGatewayPrivateEndpointConnection": + """Gets the specified private endpoint connection on application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :param connection_name: The name of the application gateway private endpoint connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationGatewayPrivateEndpointConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateEndpointConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_gateway_private_endpoint_connections_get_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationGatewayPrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + application_gateway_name: str, + **kwargs: Any + ) -> Iterable["_models.ApplicationGatewayPrivateEndpointConnectionListResult"]: + """Lists all private endpoint connections on an application gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_gateway_name: The name of the application gateway. + :type application_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either + ApplicationGatewayPrivateEndpointConnectionListResult or the result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationGatewayPrivateEndpointConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationGatewayPrivateEndpointConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_gateway_private_endpoint_connections_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_gateway_private_endpoint_connections_list_request( + resource_group_name=resource_group_name, + application_gateway_name=application_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationGatewayPrivateEndpointConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/privateEndpointConnections"} # type: ignore +class ApplicationSecurityGroupsOperations(object): + """ApplicationSecurityGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_security_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_security_groups_delete_request_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + application_security_group_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified application security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + application_security_group_name: str, + **kwargs: Any + ) -> "_models.ApplicationSecurityGroup": + """Gets information about the specified application security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_application_security_groups_get_request( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + application_security_group_name: str, + parameters: "_models.ApplicationSecurityGroup", + **kwargs: Any + ) -> "_models.ApplicationSecurityGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ApplicationSecurityGroup') + + request = build_application_security_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + application_security_group_name: str, + parameters: "_models.ApplicationSecurityGroup", + **kwargs: Any + ) -> LROPoller["_models.ApplicationSecurityGroup"]: + """Creates or updates an application security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :param parameters: Parameters supplied to the create or update ApplicationSecurityGroup + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ApplicationSecurityGroup or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + application_security_group_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ApplicationSecurityGroup": + """Updates an application security group's tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param application_security_group_name: The name of the application security group. + :type application_security_group_name: str + :param parameters: Parameters supplied to update application security group tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ApplicationSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_application_security_groups_update_tags_request( + resource_group_name=resource_group_name, + application_security_group_name=application_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ApplicationSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.ApplicationSecurityGroupListResult"]: + """Gets all application security groups in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationSecurityGroupListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationSecurityGroups"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ApplicationSecurityGroupListResult"]: + """Gets all the application security groups in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ApplicationSecurityGroupListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ApplicationSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ApplicationSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_application_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_application_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ApplicationSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups"} # type: ignore +class AvailableDelegationsOperations(object): + """AvailableDelegationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> Iterable["_models.AvailableDelegationsResult"]: + """Gets all of the available subnet delegations for this subscription in this region. + + :param location: The location of the subnet. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableDelegationsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableDelegationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableDelegationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_delegations_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_delegations_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableDelegationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableDelegations"} # type: ignore +class AvailableResourceGroupDelegationsOperations(object): + """AvailableResourceGroupDelegationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.AvailableDelegationsResult"]: + """Gets all of the available subnet delegations for this resource group in this region. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableDelegationsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableDelegationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableDelegationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_resource_group_delegations_list_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_resource_group_delegations_list_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableDelegationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableDelegations"} # type: ignore +class AvailableServiceAliasesOperations(object): + """AvailableServiceAliasesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> Iterable["_models.AvailableServiceAliasesResult"]: + """Gets all available service aliases for this subscription in this region. + + :param location: The location. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableServiceAliasesResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableServiceAliasesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableServiceAliasesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_service_aliases_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_service_aliases_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableServiceAliasesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableServiceAliases"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + location: str, + **kwargs: Any + ) -> Iterable["_models.AvailableServiceAliasesResult"]: + """Gets all available service aliases for this resource group in this region. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param location: The location. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailableServiceAliasesResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailableServiceAliasesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableServiceAliasesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_service_aliases_list_by_resource_group_request( + resource_group_name=resource_group_name, + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_service_aliases_list_by_resource_group_request( + resource_group_name=resource_group_name, + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AvailableServiceAliasesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableServiceAliases"} # type: ignore +class AzureFirewallsOperations(object): + """AzureFirewallsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_azure_firewalls_delete_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified Azure Firewall. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> "_models.AzureFirewall": + """Gets the specified Azure Firewall. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AzureFirewall, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AzureFirewall + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_azure_firewalls_get_request( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.AzureFirewall", + **kwargs: Any + ) -> "_models.AzureFirewall": + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'AzureFirewall') + + request = build_azure_firewalls_create_or_update_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.AzureFirewall", + **kwargs: Any + ) -> LROPoller["_models.AzureFirewall"]: + """Creates or updates the specified Azure Firewall. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :param parameters: Parameters supplied to the create or update Azure Firewall operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.AzureFirewall + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either AzureFirewall or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.AzureFirewall] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AzureFirewall', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + def _update_tags_initial( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.AzureFirewall"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.AzureFirewall"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_azure_firewalls_update_tags_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('AzureFirewall', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + + @distributed_trace + def begin_update_tags( + self, + resource_group_name: str, + azure_firewall_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> LROPoller["_models.AzureFirewall"]: + """Updates tags of an Azure Firewall resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the Azure Firewall. + :type azure_firewall_name: str + :param parameters: Parameters supplied to update azure firewall tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either AzureFirewall or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.AzureFirewall] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewall"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AzureFirewall', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.AzureFirewallListResult"]: + """Lists all Azure Firewalls in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureFirewallListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureFirewallListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewallListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_azure_firewalls_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_azure_firewalls_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AzureFirewallListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.AzureFirewallListResult"]: + """Gets all the Azure Firewalls in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureFirewallListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureFirewallListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewallListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_azure_firewalls_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_azure_firewalls_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AzureFirewallListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewalls"} # type: ignore + + def _list_learned_prefixes_initial( + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> Optional["_models.IPPrefixesList"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.IPPrefixesList"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_azure_firewalls_list_learned_prefixes_request_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_learned_prefixes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('IPPrefixesList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_learned_prefixes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}/learnedIPPrefixes"} # type: ignore + + + @distributed_trace + def begin_list_learned_prefixes( + self, + resource_group_name: str, + azure_firewall_name: str, + **kwargs: Any + ) -> LROPoller["_models.IPPrefixesList"]: + """Retrieves a list of all IP prefixes that azure firewall has learned to not SNAT. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param azure_firewall_name: The name of the azure firewall. + :type azure_firewall_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either IPPrefixesList or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.IPPrefixesList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.IPPrefixesList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_learned_prefixes_initial( + resource_group_name=resource_group_name, + azure_firewall_name=azure_firewall_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('IPPrefixesList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_learned_prefixes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}/learnedIPPrefixes"} # type: ignore +class AzureFirewallFqdnTagsOperations(object): + """AzureFirewallFqdnTagsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.AzureFirewallFqdnTagListResult"]: + """Gets all the Azure Firewall FQDN Tags in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureFirewallFqdnTagListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureFirewallFqdnTagListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureFirewallFqdnTagListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_azure_firewall_fqdn_tags_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_azure_firewall_fqdn_tags_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AzureFirewallFqdnTagListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewallFqdnTags"} # type: ignore +class WebCategoriesOperations(object): + """WebCategoriesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.AzureWebCategory": + """Gets the specified Azure Web Category. + + :param name: The name of the azureWebCategory. + :type name: str + :param expand: Expands resourceIds back referenced by the azureWebCategory resource. Default + value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AzureWebCategory, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AzureWebCategory + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureWebCategory"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_web_categories_get_request( + name=name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('AzureWebCategory', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureWebCategories/{name}"} # type: ignore + + + @distributed_trace + def list_by_subscription( + self, + **kwargs: Any + ) -> Iterable["_models.AzureWebCategoryListResult"]: + """Gets all the Azure Web Categories in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AzureWebCategoryListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AzureWebCategoryListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureWebCategoryListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_web_categories_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_web_categories_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AzureWebCategoryListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureWebCategories"} # type: ignore +class BastionHostsOperations(object): + """BastionHostsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_bastion_hosts_delete_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified Bastion Host. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> "_models.BastionHost": + """Gets the specified Bastion Host. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BastionHost, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BastionHost + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_bastion_hosts_get_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BastionHost', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.BastionHost", + **kwargs: Any + ) -> "_models.BastionHost": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'BastionHost') + + request = build_bastion_hosts_create_or_update_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BastionHost', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BastionHost', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.BastionHost", + **kwargs: Any + ) -> LROPoller["_models.BastionHost"]: + """Creates or updates the specified Bastion Host. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param parameters: Parameters supplied to the create or update Bastion Host operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.BastionHost + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either BastionHost or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.BastionHost] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BastionHost', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + def _update_tags_initial( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.BastionHost"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BastionHost"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_bastion_hosts_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BastionHost', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + + @distributed_trace + def begin_update_tags( + self, + resource_group_name: str, + bastion_host_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> LROPoller["_models.BastionHost"]: + """Updates Tags for BastionHost resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param parameters: Parameters supplied to update BastionHost tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either BastionHost or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.BastionHost] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHost"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BastionHost', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.BastionHostListResult"]: + """Lists all Bastion Hosts in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionHostListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionHostListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHostListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_bastion_hosts_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_bastion_hosts_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BastionHostListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/bastionHosts"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.BastionHostListResult"]: + """Lists all Bastion Hosts in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionHostListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionHostListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionHostListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_bastion_hosts_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_bastion_hosts_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BastionHostListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts"} # type: ignore +class NetworkManagementClientOperationsMixin(object): + + def _put_bastion_shareable_link_initial( + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> Optional["_models.BastionShareableLinkListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BastionShareableLinkListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_put_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._put_bastion_shareable_link_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BastionShareableLinkListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _put_bastion_shareable_link_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/createShareableLinks"} # type: ignore + + + @distributed_trace + def begin_put_bastion_shareable_link( + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> LROPoller[ItemPaged["_models.BastionShareableLinkListResult"]]: + """Creates a Bastion Shareable Links for all the VMs specified in the request. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param bsl_request: Post request for all the Bastion Shareable Link endpoints. + :type bsl_request: ~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns an iterator like instance of either + BastionShareableLinkListResult or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListResult]] + :raises: ~azure.core.exceptions.HttpResponseError + """ + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionShareableLinkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_put_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.begin_put_bastion_shareable_link.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_put_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BastionShareableLinkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionShareableLinkListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._put_bastion_shareable_link_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + bsl_request=bsl_request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + def internal_get_next(next_link=None): + if next_link is None: + return pipeline_response + return get_next(next_link) + + return ItemPaged( + internal_get_next, extract_data + ) + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_put_bastion_shareable_link.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/createShareableLinks"} # type: ignore + + + def _delete_bastion_shareable_link_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_delete_bastion_shareable_link_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._delete_bastion_shareable_link_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_bastion_shareable_link_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/deleteShareableLinks"} # type: ignore + + + @distributed_trace + def begin_delete_bastion_shareable_link( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the Bastion Shareable Links for all the VMs specified in the request. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param bsl_request: Post request for all the Bastion Shareable Link endpoints. + :type bsl_request: ~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_bastion_shareable_link_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + bsl_request=bsl_request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_bastion_shareable_link.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/deleteShareableLinks"} # type: ignore + + @distributed_trace + def get_bastion_shareable_link( + self, + resource_group_name: str, + bastion_host_name: str, + bsl_request: "_models.BastionShareableLinkListRequest", + **kwargs: Any + ) -> Iterable["_models.BastionShareableLinkListResult"]: + """Return the Bastion Shareable Links for all the VMs specified in the request. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param bsl_request: Post request for all the Bastion Shareable Link endpoints. + :type bsl_request: ~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionShareableLinkListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionShareableLinkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionShareableLinkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_get_bastion_shareable_link_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.get_bastion_shareable_link.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + _json = self._serialize.body(bsl_request, 'BastionShareableLinkListRequest') + + request = build_get_bastion_shareable_link_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BastionShareableLinkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + get_bastion_shareable_link.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getShareableLinks"} # type: ignore + + def _get_active_sessions_initial( + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> Optional["_models.BastionActiveSessionListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BastionActiveSessionListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_get_active_sessions_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_active_sessions_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BastionActiveSessionListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_active_sessions_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getActiveSessions"} # type: ignore + + + @distributed_trace + def begin_get_active_sessions( + self, + resource_group_name: str, + bastion_host_name: str, + **kwargs: Any + ) -> LROPoller[ItemPaged["_models.BastionActiveSessionListResult"]]: + """Returns the list of currently active sessions on the Bastion. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns an iterator like instance of either + BastionActiveSessionListResult or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionActiveSessionListResult]] + :raises: ~azure.core.exceptions.HttpResponseError + """ + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionActiveSessionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_get_active_sessions_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.begin_get_active_sessions.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_get_active_sessions_request_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BastionActiveSessionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionActiveSessionListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_active_sessions_initial( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + def internal_get_next(next_link=None): + if next_link is None: + return pipeline_response + return get_next(next_link) + + return ItemPaged( + internal_get_next, extract_data + ) + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_active_sessions.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getActiveSessions"} # type: ignore + + + @distributed_trace + def disconnect_active_sessions( + self, + resource_group_name: str, + bastion_host_name: str, + session_ids: "_models.SessionIds", + **kwargs: Any + ) -> Iterable["_models.BastionSessionDeleteResult"]: + """Returns the list of currently active sessions on the Bastion. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param bastion_host_name: The name of the Bastion Host. + :type bastion_host_name: str + :param session_ids: The list of sessionids to disconnect. + :type session_ids: ~azure.mgmt.network.v2022_01_01.models.SessionIds + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BastionSessionDeleteResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.BastionSessionDeleteResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BastionSessionDeleteResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + _json = self._serialize.body(session_ids, 'SessionIds') + + request = build_disconnect_active_sessions_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.disconnect_active_sessions.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + _json = self._serialize.body(session_ids, 'SessionIds') + + request = build_disconnect_active_sessions_request( + resource_group_name=resource_group_name, + bastion_host_name=bastion_host_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BastionSessionDeleteResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + disconnect_active_sessions.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/disconnectActiveSessions"} # type: ignore + + @distributed_trace + def check_dns_name_availability( + self, + location: str, + domain_name_label: str, + **kwargs: Any + ) -> "_models.DnsNameAvailabilityResult": + """Checks whether a domain name in the cloudapp.azure.com zone is available for use. + + :param location: The location of the domain name. + :type location: str + :param domain_name_label: The domain name to be verified. It must conform to the following + regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$. + :type domain_name_label: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DnsNameAvailabilityResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DnsNameAvailabilityResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DnsNameAvailabilityResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_check_dns_name_availability_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + domain_name_label=domain_name_label, + template_url=self.check_dns_name_availability.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DnsNameAvailabilityResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + check_dns_name_availability.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/CheckDnsNameAvailability"} # type: ignore + + + @distributed_trace + def list_active_connectivity_configurations( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.ActiveConfigurationParameter", + **kwargs: Any + ) -> "_models.ActiveConnectivityConfigurationsListResult": + """Lists active connectivity configurations in a network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Active Configuration Parameter. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ActiveConfigurationParameter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ActiveConnectivityConfigurationsListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ActiveConnectivityConfigurationsListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveConnectivityConfigurationsListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') + + request = build_list_active_connectivity_configurations_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_active_connectivity_configurations.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ActiveConnectivityConfigurationsListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_active_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveConnectivityConfigurations"} # type: ignore + + + @distributed_trace + def list_active_security_admin_rules( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.ActiveConfigurationParameter", + **kwargs: Any + ) -> "_models.ActiveSecurityAdminRulesListResult": + """Lists active security admin rules in a network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Active Configuration Parameter. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ActiveConfigurationParameter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ActiveSecurityAdminRulesListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ActiveSecurityAdminRulesListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ActiveSecurityAdminRulesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ActiveConfigurationParameter') + + request = build_list_active_security_admin_rules_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_active_security_admin_rules.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ActiveSecurityAdminRulesListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_active_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listActiveSecurityAdminRules"} # type: ignore + + + @distributed_trace + def list_network_manager_effective_connectivity_configurations( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.QueryRequestOptions", + **kwargs: Any + ) -> "_models.NetworkManagerEffectiveConnectivityConfigurationListResult": + """List all effective connectivity configurations applied on a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to list correct page. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryRequestOptions + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerEffectiveConnectivityConfigurationListResult, or the result of + cls(response) + :rtype: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerEffectiveConnectivityConfigurationListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveConnectivityConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryRequestOptions') + + request = build_list_network_manager_effective_connectivity_configurations_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_network_manager_effective_connectivity_configurations.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerEffectiveConnectivityConfigurationListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_network_manager_effective_connectivity_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveConnectivityConfigurations"} # type: ignore + + + @distributed_trace + def list_network_manager_effective_security_admin_rules( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.QueryRequestOptions", + **kwargs: Any + ) -> "_models.NetworkManagerEffectiveSecurityAdminRulesListResult": + """List all effective security admin rules applied on a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to list correct page. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryRequestOptions + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerEffectiveSecurityAdminRulesListResult, or the result of cls(response) + :rtype: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerEffectiveSecurityAdminRulesListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerEffectiveSecurityAdminRulesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryRequestOptions') + + request = build_list_network_manager_effective_security_admin_rules_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list_network_manager_effective_security_admin_rules.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerEffectiveSecurityAdminRulesListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_network_manager_effective_security_admin_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/listNetworkManagerEffectiveSecurityAdminRules"} # type: ignore + + + @distributed_trace + def supported_security_providers( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> "_models.VirtualWanSecurityProviders": + """Gives the supported security providers for the virtual wan. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN for which supported security providers are + needed. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualWanSecurityProviders, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualWanSecurityProviders + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWanSecurityProviders"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_supported_security_providers_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + template_url=self.supported_security_providers.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualWanSecurityProviders', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + supported_security_providers.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/supportedSecurityProviders"} # type: ignore + + + def _generatevirtualwanvpnserverconfigurationvpnprofile_initial( + self, + resource_group_name: str, + virtual_wan_name: str, + vpn_client_params: "_models.VirtualWanVpnProfileParameters", + **kwargs: Any + ) -> Optional["_models.VpnProfileResponse"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnProfileResponse"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_client_params, 'VirtualWanVpnProfileParameters') + + request = build_generatevirtualwanvpnserverconfigurationvpnprofile_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generatevirtualwanvpnserverconfigurationvpnprofile_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generatevirtualwanvpnserverconfigurationvpnprofile_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/GenerateVpnProfile"} # type: ignore + + + @distributed_trace + def begin_generatevirtualwanvpnserverconfigurationvpnprofile( + self, + resource_group_name: str, + virtual_wan_name: str, + vpn_client_params: "_models.VirtualWanVpnProfileParameters", + **kwargs: Any + ) -> LROPoller["_models.VpnProfileResponse"]: + """Generates a unique VPN profile for P2S clients for VirtualWan and associated + VpnServerConfiguration combination in the specified resource group. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN whose associated VpnServerConfigurations is + needed. + :type virtual_wan_name: str + :param vpn_client_params: Parameters supplied to the generate VirtualWan VPN profile generation + operation. + :type vpn_client_params: ~azure.mgmt.network.v2022_01_01.models.VirtualWanVpnProfileParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnProfileResponse or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnProfileResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnProfileResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._generatevirtualwanvpnserverconfigurationvpnprofile_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + vpn_client_params=vpn_client_params, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generatevirtualwanvpnserverconfigurationvpnprofile.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/GenerateVpnProfile"} # type: ignore + + @distributed_trace + def express_route_provider_port( + self, + providerport: str, + **kwargs: Any + ) -> "_models.ExpressRouteProviderPort": + """Retrieves detail of a provider port. + + :param providerport: The name of the provider port. + :type providerport: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteProviderPort, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteProviderPort + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteProviderPort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_provider_port_request( + providerport=providerport, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.express_route_provider_port.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteProviderPort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + express_route_provider_port.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts/{providerport}"} # type: ignore + +class NetworkInterfacesOperations(object): + """NetworkInterfacesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list_cloud_service_role_instance_network_interfaces( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceListResult"]: + """Gets information about all network interfaces in a role instance in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The name of role instance. + :type role_instance_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_cloud_service_role_instance_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_role_instance_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_cloud_service_role_instance_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_cloud_service_role_instance_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces"} # type: ignore + + @distributed_trace + def list_cloud_service_network_interfaces( + self, + resource_group_name: str, + cloud_service_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_cloud_service_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_cloud_service_network_interfaces_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_cloud_service_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/networkInterfaces"} # type: ignore + + @distributed_trace + def get_cloud_service_network_interface( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterface": + """Get the specified network interface in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The name of role instance. + :type role_instance_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_get_cloud_service_network_interface_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_cloud_service_network_interface.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_cloud_service_network_interface.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_delete_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterface": + """Gets information about the specified network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_get_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + network_interface_name: str, + parameters: "_models.NetworkInterface", + **kwargs: Any + ) -> "_models.NetworkInterface": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkInterface') + + request = build_network_interfaces_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_interface_name: str, + parameters: "_models.NetworkInterface", + **kwargs: Any + ) -> LROPoller["_models.NetworkInterface"]: + """Creates or updates a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param parameters: Parameters supplied to the create or update network interface operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NetworkInterface or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkInterface] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkInterface', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + network_interface_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkInterface": + """Updates a network interface tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param parameters: Parameters supplied to update network interface tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_interfaces_update_tags_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkInterfaces"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces"} # type: ignore + + def _get_effective_route_table_initial( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> Optional["_models.EffectiveRouteListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.EffectiveRouteListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_get_effective_route_table_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_effective_route_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('EffectiveRouteListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_effective_route_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveRouteTable"} # type: ignore + + + @distributed_trace + def begin_get_effective_route_table( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> LROPoller["_models.EffectiveRouteListResult"]: + """Gets all route tables applied to a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either EffectiveRouteListResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.EffectiveRouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveRouteListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_effective_route_table_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('EffectiveRouteListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_effective_route_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveRouteTable"} # type: ignore + + def _list_effective_network_security_groups_initial( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> Optional["_models.EffectiveNetworkSecurityGroupListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.EffectiveNetworkSecurityGroupListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interfaces_list_effective_network_security_groups_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_effective_network_security_groups_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('EffectiveNetworkSecurityGroupListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_effective_network_security_groups_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveNetworkSecurityGroups"} # type: ignore + + + @distributed_trace + def begin_list_effective_network_security_groups( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> LROPoller["_models.EffectiveNetworkSecurityGroupListResult"]: + """Gets all network security groups applied to a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either EffectiveNetworkSecurityGroupListResult + or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.EffectiveNetworkSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.EffectiveNetworkSecurityGroupListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_effective_network_security_groups_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('EffectiveNetworkSecurityGroupListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_effective_network_security_groups.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveNetworkSecurityGroups"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_vm_network_interfaces( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceListResult"]: + """Gets information about all network interfaces in a virtual machine in a virtual machine scale + set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_virtual_machine_scale_set_vm_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_vm_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_virtual_machine_scale_set_vm_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_vm_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_network_interfaces( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceListResult"]: + """Gets all network interfaces in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_virtual_machine_scale_set_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_network_interfaces.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_virtual_machine_scale_set_network_interfaces_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_network_interfaces.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces"} # type: ignore + + @distributed_trace + def get_virtual_machine_scale_set_network_interface( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterface": + """Get the specified network interface in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterface, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterface + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterface"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + + request = build_network_interfaces_get_virtual_machine_scale_set_network_interface_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_virtual_machine_scale_set_network_interface.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterface', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_virtual_machine_scale_set_network_interface.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}"} # type: ignore + + + @distributed_trace + def list_virtual_machine_scale_set_ip_configurations( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceIPConfigurationListResult"]: + """Get the specified network interface ip configuration in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceIPConfigurationListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interfaces_list_virtual_machine_scale_set_ip_configurations_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.list_virtual_machine_scale_set_ip_configurations.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interfaces_list_virtual_machine_scale_set_ip_configurations_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceIPConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_ip_configurations.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations"} # type: ignore + + @distributed_trace + def get_virtual_machine_scale_set_ip_configuration( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkInterfaceIPConfiguration": + """Get the specified network interface ip configuration in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the ip configuration. + :type ip_configuration_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterfaceIPConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + + request = build_network_interfaces_get_virtual_machine_scale_set_ip_configuration_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_virtual_machine_scale_set_ip_configuration.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterfaceIPConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_virtual_machine_scale_set_ip_configuration.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}"} # type: ignore + +class PublicIPAddressesOperations(object): + """PublicIPAddressesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list_cloud_service_public_ip_addresses( + self, + resource_group_name: str, + cloud_service_name: str, + **kwargs: Any + ) -> Iterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses on a cloud service level. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_cloud_service_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_cloud_service_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_cloud_service_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/publicipaddresses"} # type: ignore + + @distributed_trace + def list_cloud_service_role_instance_public_ip_addresses( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + ip_configuration_name: str, + **kwargs: Any + ) -> Iterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses in a role instance IP configuration in a cloud + service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The name of role instance. + :type role_instance_name: str + :param network_interface_name: The network interface name. + :type network_interface_name: str + :param ip_configuration_name: The IP configuration name. + :type ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_cloud_service_role_instance_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_cloud_service_role_instance_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_cloud_service_role_instance_public_ip_addresses_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_cloud_service_role_instance_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses"} # type: ignore + + @distributed_trace + def get_cloud_service_public_ip_address( + self, + resource_group_name: str, + cloud_service_name: str, + role_instance_name: str, + network_interface_name: str, + ip_configuration_name: str, + public_ip_address_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Get the specified public IP address in a cloud service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cloud_service_name: The name of the cloud service. + :type cloud_service_name: str + :param role_instance_name: The role instance name. + :type role_instance_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the IP configuration. + :type ip_configuration_name: str + :param public_ip_address_name: The name of the public IP Address. + :type public_ip_address_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_addresses_get_cloud_service_public_ip_address_request( + resource_group_name=resource_group_name, + cloud_service_name=cloud_service_name, + role_instance_name=role_instance_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_cloud_service_public_ip_address.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_cloud_service_public_ip_address.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}/roleInstances/{roleInstanceName}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_address_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_addresses_delete_request_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_address_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified public IP address. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + public_ip_address_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Gets the specified public IP address in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_addresses_get_request( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + public_ip_address_name: str, + parameters: "_models.PublicIPAddress", + **kwargs: Any + ) -> "_models.PublicIPAddress": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PublicIPAddress') + + request = build_public_ip_addresses_create_or_update_request_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + public_ip_address_name: str, + parameters: "_models.PublicIPAddress", + **kwargs: Any + ) -> LROPoller["_models.PublicIPAddress"]: + """Creates or updates a static or dynamic public IP address. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :param parameters: Parameters supplied to the create or update public IP address operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PublicIPAddress or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PublicIPAddress] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + public_ip_address_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Updates public IP address tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_address_name: The name of the public IP address. + :type public_ip_address_name: str + :param parameters: Parameters supplied to update public IP address tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_public_ip_addresses_update_tags_request( + resource_group_name=resource_group_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.PublicIPAddressListResult"]: + """Gets all the public IP addresses in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.PublicIPAddressListResult"]: + """Gets all public IP addresses in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_public_ip_addresses( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + **kwargs: Any + ) -> Iterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses on a virtual machine scale set level. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/publicipaddresses"} # type: ignore + + @distributed_trace + def list_virtual_machine_scale_set_vm_public_ip_addresses( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + **kwargs: Any + ) -> Iterable["_models.PublicIPAddressListResult"]: + """Gets information about all public IP addresses in a virtual machine IP configuration in a + virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The network interface name. + :type network_interface_name: str + :param ip_configuration_name: The IP configuration name. + :type ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPAddressListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPAddressListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddressListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_vm_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_virtual_machine_scale_set_vm_public_ip_addresses.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_addresses_list_virtual_machine_scale_set_vm_public_ip_addresses_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPAddressListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_virtual_machine_scale_set_vm_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses"} # type: ignore + + @distributed_trace + def get_virtual_machine_scale_set_public_ip_address( + self, + resource_group_name: str, + virtual_machine_scale_set_name: str, + virtualmachine_index: str, + network_interface_name: str, + ip_configuration_name: str, + public_ip_address_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPAddress": + """Get the specified public IP address in a virtual machine scale set. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_machine_scale_set_name: The name of the virtual machine scale set. + :type virtual_machine_scale_set_name: str + :param virtualmachine_index: The virtual machine index. + :type virtualmachine_index: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the IP configuration. + :type ip_configuration_name: str + :param public_ip_address_name: The name of the public IP Address. + :type public_ip_address_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2018-10-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPAddress, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPAddress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPAddress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2018-10-01") # type: str + + + request = build_public_ip_addresses_get_virtual_machine_scale_set_public_ip_address_request( + resource_group_name=resource_group_name, + virtual_machine_scale_set_name=virtual_machine_scale_set_name, + virtualmachine_index=virtualmachine_index, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + public_ip_address_name=public_ip_address_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_virtual_machine_scale_set_public_ip_address.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPAddress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_virtual_machine_scale_set_public_ip_address.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}"} # type: ignore + +class CustomIPPrefixesOperations(object): + """CustomIPPrefixesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + custom_ip_prefix_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_custom_ip_prefixes_delete_request_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + custom_ip_prefix_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified custom IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the CustomIpPrefix. + :type custom_ip_prefix_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.CustomIpPrefix": + """Gets the specified custom IP prefix in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the custom IP prefix. + :type custom_ip_prefix_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: CustomIpPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_custom_ip_prefixes_get_request( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + parameters: "_models.CustomIpPrefix", + **kwargs: Any + ) -> "_models.CustomIpPrefix": + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'CustomIpPrefix') + + request = build_custom_ip_prefixes_create_or_update_request_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + parameters: "_models.CustomIpPrefix", + **kwargs: Any + ) -> LROPoller["_models.CustomIpPrefix"]: + """Creates or updates a custom IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the custom IP prefix. + :type custom_ip_prefix_name: str + :param parameters: Parameters supplied to the create or update custom IP prefix operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either CustomIpPrefix or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + custom_ip_prefix_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.CustomIpPrefix": + """Updates custom IP prefix tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param custom_ip_prefix_name: The name of the custom IP prefix. + :type custom_ip_prefix_name: str + :param parameters: Parameters supplied to update custom IP prefix tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: CustomIpPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.CustomIpPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_custom_ip_prefixes_update_tags_request( + resource_group_name=resource_group_name, + custom_ip_prefix_name=custom_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('CustomIpPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes/{customIpPrefixName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.CustomIpPrefixListResult"]: + """Gets all the custom IP prefixes in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either CustomIpPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_custom_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_custom_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("CustomIpPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/customIpPrefixes"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.CustomIpPrefixListResult"]: + """Gets all custom IP prefixes in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either CustomIpPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.CustomIpPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.CustomIpPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_custom_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_custom_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("CustomIpPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/customIpPrefixes"} # type: ignore +class DdosCustomPoliciesOperations(object): + """DdosCustomPoliciesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_custom_policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_custom_policies_delete_request_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_custom_policy_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified DDoS custom policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + **kwargs: Any + ) -> "_models.DdosCustomPolicy": + """Gets information about the specified DDoS custom policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosCustomPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_custom_policies_get_request( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + parameters: "_models.DdosCustomPolicy", + **kwargs: Any + ) -> "_models.DdosCustomPolicy": + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'DdosCustomPolicy') + + request = build_ddos_custom_policies_create_or_update_request_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + parameters: "_models.DdosCustomPolicy", + **kwargs: Any + ) -> LROPoller["_models.DdosCustomPolicy"]: + """Creates or updates a DDoS custom policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :param parameters: Parameters supplied to the create or update operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either DdosCustomPolicy or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + ddos_custom_policy_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.DdosCustomPolicy": + """Update a DDoS custom policy tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_custom_policy_name: The name of the DDoS custom policy. + :type ddos_custom_policy_name: str + :param parameters: Parameters supplied to update DDoS custom policy resource tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosCustomPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosCustomPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosCustomPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ddos_custom_policies_update_tags_request( + resource_group_name=resource_group_name, + ddos_custom_policy_name=ddos_custom_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosCustomPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}"} # type: ignore + +class DdosProtectionPlansOperations(object): + """DdosProtectionPlansOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_protection_plan_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_protection_plans_delete_request_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ddos_protection_plan_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified DDoS protection plan. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + **kwargs: Any + ) -> "_models.DdosProtectionPlan": + """Gets information about the specified DDoS protection plan. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosProtectionPlan, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ddos_protection_plans_get_request( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + parameters: "_models.DdosProtectionPlan", + **kwargs: Any + ) -> "_models.DdosProtectionPlan": + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'DdosProtectionPlan') + + request = build_ddos_protection_plans_create_or_update_request_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + parameters: "_models.DdosProtectionPlan", + **kwargs: Any + ) -> LROPoller["_models.DdosProtectionPlan"]: + """Creates or updates a DDoS protection plan. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :param parameters: Parameters supplied to the create or update operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either DdosProtectionPlan or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + ddos_protection_plan_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.DdosProtectionPlan": + """Update a DDoS protection plan tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ddos_protection_plan_name: The name of the DDoS protection plan. + :type ddos_protection_plan_name: str + :param parameters: Parameters supplied to the update DDoS protection plan resource tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DdosProtectionPlan, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlan + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlan"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ddos_protection_plans_update_tags_request( + resource_group_name=resource_group_name, + ddos_protection_plan_name=ddos_protection_plan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DdosProtectionPlan', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}"} # type: ignore + + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.DdosProtectionPlanListResult"]: + """Gets all DDoS protection plans in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DdosProtectionPlanListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlanListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlanListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ddos_protection_plans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ddos_protection_plans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DdosProtectionPlanListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ddosProtectionPlans"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.DdosProtectionPlanListResult"]: + """Gets all the DDoS protection plans in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DdosProtectionPlanListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.DdosProtectionPlanListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DdosProtectionPlanListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ddos_protection_plans_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ddos_protection_plans_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DdosProtectionPlanListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans"} # type: ignore +class DscpConfigurationOperations(object): + """DscpConfigurationOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + dscp_configuration_name: str, + parameters: "_models.DscpConfiguration", + **kwargs: Any + ) -> "_models.DscpConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'DscpConfiguration') + + request = build_dscp_configuration_create_or_update_request_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + dscp_configuration_name: str, + parameters: "_models.DscpConfiguration", + **kwargs: Any + ) -> LROPoller["_models.DscpConfiguration"]: + """Creates or updates a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param dscp_configuration_name: The name of the resource. + :type dscp_configuration_name: str + :param parameters: Parameters supplied to the create or update dscp configuration operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.DscpConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either DscpConfiguration or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.DscpConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + dscp_configuration_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_dscp_configuration_delete_request_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + dscp_configuration_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param dscp_configuration_name: The name of the resource. + :type dscp_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + dscp_configuration_name: str, + **kwargs: Any + ) -> "_models.DscpConfiguration": + """Gets a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param dscp_configuration_name: The name of the resource. + :type dscp_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DscpConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.DscpConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_dscp_configuration_get_request( + resource_group_name=resource_group_name, + dscp_configuration_name=dscp_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('DscpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations/{dscpConfigurationName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.DscpConfigurationListResult"]: + """Gets a DSCP Configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DscpConfigurationListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.DscpConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_dscp_configuration_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_dscp_configuration_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DscpConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dscpConfigurations"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.DscpConfigurationListResult"]: + """Gets all dscp configurations in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DscpConfigurationListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.DscpConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.DscpConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_dscp_configuration_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_dscp_configuration_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DscpConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/dscpConfigurations"} # type: ignore +class AvailableEndpointServicesOperations(object): + """AvailableEndpointServicesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> Iterable["_models.EndpointServicesListResult"]: + """List what values of endpoint services are available for use. + + :param location: The location to check available endpoint services. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either EndpointServicesListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.EndpointServicesListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.EndpointServicesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_endpoint_services_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_endpoint_services_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("EndpointServicesListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/virtualNetworkAvailableEndpointServices"} # type: ignore +class ExpressRouteCircuitAuthorizationsOperations(object): + """ExpressRouteCircuitAuthorizationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_authorizations_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified authorization from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitAuthorization": + """Gets the specified authorization from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitAuthorization, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_authorizations_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRouteCircuitAuthorization", + **kwargs: Any + ) -> "_models.ExpressRouteCircuitAuthorization": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(authorization_parameters, 'ExpressRouteCircuitAuthorization') + + request = build_express_route_circuit_authorizations_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRouteCircuitAuthorization", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitAuthorization"]: + """Creates or updates an authorization in the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :param authorization_parameters: Parameters supplied to the create or update express route + circuit authorization operation. + :type authorization_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuitAuthorization or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitAuthorization] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitAuthorization"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + authorization_name=authorization_name, + authorization_parameters=authorization_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitAuthorization', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> Iterable["_models.AuthorizationListResult"]: + """Gets all authorizations in an express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AuthorizationListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AuthorizationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AuthorizationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuit_authorizations_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuit_authorizations_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AuthorizationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations"} # type: ignore +class ExpressRouteCircuitPeeringsOperations(object): + """ExpressRouteCircuitPeeringsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_peerings_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified peering from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitPeering": + """Gets the specified peering for the express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_peerings_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCircuitPeering", + **kwargs: Any + ) -> "_models.ExpressRouteCircuitPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(peering_parameters, 'ExpressRouteCircuitPeering') + + request = build_express_route_circuit_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCircuitPeering", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitPeering"]: + """Creates or updates a peering in the specified express route circuits. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param peering_parameters: Parameters supplied to the create or update express route circuit + peering operation. + :type peering_parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuitPeering or the result + of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + peering_parameters=peering_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteCircuitPeeringListResult"]: + """Gets all peerings in a specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitPeeringListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitPeeringListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitPeeringListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuit_peerings_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuit_peerings_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitPeeringListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings"} # type: ignore +class ExpressRouteCircuitConnectionsOperations(object): + """ExpressRouteCircuitConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_connections_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified Express Route Circuit Connection from the specified express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the express route circuit connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitConnection": + """Gets the specified Express Route Circuit Connection from the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the express route circuit connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuit_connections_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + express_route_circuit_connection_parameters: "_models.ExpressRouteCircuitConnection", + **kwargs: Any + ) -> "_models.ExpressRouteCircuitConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(express_route_circuit_connection_parameters, 'ExpressRouteCircuitConnection') + + request = build_express_route_circuit_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + express_route_circuit_connection_parameters: "_models.ExpressRouteCircuitConnection", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitConnection"]: + """Creates or updates a Express Route Circuit Connection in the specified express route circuits. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the express route circuit connection. + :type connection_name: str + :param express_route_circuit_connection_parameters: Parameters supplied to the create or update + express route circuit connection operation. + :type express_route_circuit_connection_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuitConnection or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + express_route_circuit_connection_parameters=express_route_circuit_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteCircuitConnectionListResult"]: + """Gets all global reach connections associated with a private peering in an express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections"} # type: ignore +class PeerExpressRouteCircuitConnectionsOperations(object): + """PeerExpressRouteCircuitConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.PeerExpressRouteCircuitConnection": + """Gets the specified Peer Express Route Circuit Connection from the specified express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param connection_name: The name of the peer express route circuit connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PeerExpressRouteCircuitConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PeerExpressRouteCircuitConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerExpressRouteCircuitConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_peer_express_route_circuit_connections_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PeerExpressRouteCircuitConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> Iterable["_models.PeerExpressRouteCircuitConnectionListResult"]: + """Gets all global reach peer connections associated with a private peering in an express route + circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PeerExpressRouteCircuitConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PeerExpressRouteCircuitConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerExpressRouteCircuitConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_peer_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_peer_express_route_circuit_connections_list_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PeerExpressRouteCircuitConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections"} # type: ignore +class ExpressRouteCircuitsOperations(object): + """ExpressRouteCircuitsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_delete_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuit": + """Gets information about the specified express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuit, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_get_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + circuit_name: str, + parameters: "_models.ExpressRouteCircuit", + **kwargs: Any + ) -> "_models.ExpressRouteCircuit": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ExpressRouteCircuit') + + request = build_express_route_circuits_create_or_update_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + circuit_name: str, + parameters: "_models.ExpressRouteCircuit", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuit"]: + """Creates or updates an express route circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param parameters: Parameters supplied to the create or update express route circuit operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuit or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + circuit_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ExpressRouteCircuit": + """Updates an express route circuit tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the circuit. + :type circuit_name: str + :param parameters: Parameters supplied to update express route circuit tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuit, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuit + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_express_route_circuits_update_tags_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}"} # type: ignore + + + def _list_arp_table_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsArpTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsArpTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_list_arp_table_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_arp_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_arp_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + + @distributed_trace + def begin_list_arp_table( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitsArpTableListResult"]: + """Gets the currently advertised ARP table associated with the express route circuit in a resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuitsArpTableListResult or + the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsArpTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsArpTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_arp_table_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_arp_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + def _list_routes_table_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_list_routes_table_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore + + + @distributed_trace + def begin_list_routes_table( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitsRoutesTableListResult"]: + """Gets the currently advertised routes table associated with the express route circuit in a + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuitsRoutesTableListResult + or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsRoutesTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsRoutesTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_routes_table_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore + + def _list_routes_table_summary_initial( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_list_routes_table_summary_request_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_summary_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableSummaryListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_summary_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + + @distributed_trace + def begin_list_routes_table_summary( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"]: + """Gets the currently advertised routes table summary associated with the express route circuit in + a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either + ExpressRouteCircuitsRoutesTableSummaryListResult or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsRoutesTableSummaryListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsRoutesTableSummaryListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_routes_table_summary_initial( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableSummaryListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table_summary.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + @distributed_trace + def get_stats( + self, + resource_group_name: str, + circuit_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitStats": + """Gets all the stats from an express route circuit in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitStats, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitStats + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitStats"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_get_stats_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get_stats.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitStats', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_stats.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/stats"} # type: ignore + + + @distributed_trace + def get_peering_stats( + self, + resource_group_name: str, + circuit_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCircuitStats": + """Gets all stats from an express route circuit in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param circuit_name: The name of the express route circuit. + :type circuit_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCircuitStats, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitStats + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitStats"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_circuits_get_peering_stats_request( + resource_group_name=resource_group_name, + circuit_name=circuit_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get_peering_stats.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCircuitStats', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_peering_stats.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/stats"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteCircuitListResult"]: + """Gets all the express route circuits in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuits_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuits_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteCircuitListResult"]: + """Gets all the express route circuits in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCircuitListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_circuits_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_circuits_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCircuitListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCircuits"} # type: ignore +class ExpressRouteServiceProvidersOperations(object): + """ExpressRouteServiceProvidersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteServiceProviderListResult"]: + """Gets all the available express route service providers. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteServiceProviderListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteServiceProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteServiceProviderListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_service_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_service_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteServiceProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteServiceProviders"} # type: ignore +class ExpressRouteCrossConnectionsOperations(object): + """ExpressRouteCrossConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteCrossConnectionListResult"]: + """Retrieves all the ExpressRouteCrossConnections in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCrossConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_cross_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_cross_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCrossConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCrossConnections"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteCrossConnectionListResult"]: + """Retrieves all the ExpressRouteCrossConnections in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCrossConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_cross_connections_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_cross_connections_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCrossConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + cross_connection_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnection": + """Gets details about the specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group (peering location of the circuit). + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection (service key of the + circuit). + :type cross_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCrossConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_get_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + cross_connection_name: str, + parameters: "_models.ExpressRouteCrossConnection", + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ExpressRouteCrossConnection') + + request = build_express_route_cross_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + cross_connection_name: str, + parameters: "_models.ExpressRouteCrossConnection", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCrossConnection"]: + """Update the specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param parameters: Parameters supplied to the update express route crossConnection operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCrossConnection or the result + of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + cross_connection_name: str, + cross_connection_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnection": + """Updates an express route cross connection tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the cross connection. + :type cross_connection_name: str + :param cross_connection_parameters: Parameters supplied to update express route cross + connection tags. + :type cross_connection_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCrossConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(cross_connection_parameters, 'TagsObject') + + request = build_express_route_cross_connections_update_tags_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}"} # type: ignore + + + def _list_arp_table_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsArpTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsArpTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_list_arp_table_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_arp_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_arp_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + + @distributed_trace + def begin_list_arp_table( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitsArpTableListResult"]: + """Gets the currently advertised ARP table associated with the express route cross connection in a + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuitsArpTableListResult or + the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsArpTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsArpTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_arp_table_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsArpTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_arp_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/arpTables/{devicePath}"} # type: ignore + + def _list_routes_table_summary_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_list_routes_table_summary_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_summary_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCrossConnectionsRoutesTableSummaryListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_summary_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + + @distributed_trace + def begin_list_routes_table_summary( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"]: + """Gets the route table summary associated with the express route cross connection in a resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either + ExpressRouteCrossConnectionsRoutesTableSummaryListResult or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionsRoutesTableSummaryListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_routes_table_summary_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCrossConnectionsRoutesTableSummaryListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table_summary.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTablesSummary/{devicePath}"} # type: ignore + + def _list_routes_table_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteCircuitsRoutesTableListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connections_list_routes_table_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_routes_table_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_routes_table_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore + + + @distributed_trace + def begin_list_routes_table( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + device_path: str, + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCircuitsRoutesTableListResult"]: + """Gets the currently advertised routes table associated with the express route cross connection + in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param device_path: The path of the device. + :type device_path: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCircuitsRoutesTableListResult + or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCircuitsRoutesTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCircuitsRoutesTableListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_routes_table_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + device_path=device_path, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCircuitsRoutesTableListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_routes_table.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTables/{devicePath}"} # type: ignore +class ExpressRouteCrossConnectionPeeringsOperations(object): + """ExpressRouteCrossConnectionPeeringsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + cross_connection_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteCrossConnectionPeeringList"]: + """Gets all peerings in a specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteCrossConnectionPeeringList or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeeringList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeeringList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_cross_connection_peerings_list_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_cross_connection_peerings_list_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteCrossConnectionPeeringList", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connection_peerings_delete_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified peering from the ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnectionPeering": + """Gets the specified peering for the ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteCrossConnectionPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_cross_connection_peerings_get_request( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCrossConnectionPeering", + **kwargs: Any + ) -> "_models.ExpressRouteCrossConnectionPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(peering_parameters, 'ExpressRouteCrossConnectionPeering') + + request = build_express_route_cross_connection_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + cross_connection_name: str, + peering_name: str, + peering_parameters: "_models.ExpressRouteCrossConnectionPeering", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteCrossConnectionPeering"]: + """Creates or updates a peering in the specified ExpressRouteCrossConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param cross_connection_name: The name of the ExpressRouteCrossConnection. + :type cross_connection_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :param peering_parameters: Parameters supplied to the create or update + ExpressRouteCrossConnection peering operation. + :type peering_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteCrossConnectionPeering or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteCrossConnectionPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteCrossConnectionPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + cross_connection_name=cross_connection_name, + peering_name=peering_name, + peering_parameters=peering_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteCrossConnectionPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}"} # type: ignore +class ExpressRoutePortsLocationsOperations(object): + """ExpressRoutePortsLocationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ExpressRoutePortsLocationListResult"]: + """Retrieves all ExpressRoutePort peering locations. Does not return available bandwidths for each + location. Available bandwidths can only be obtained when retrieving a specific peering + location. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortsLocationListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortsLocationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_ports_locations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_ports_locations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortsLocationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations"} # type: ignore + + @distributed_trace + def get( + self, + location_name: str, + **kwargs: Any + ) -> "_models.ExpressRoutePortsLocation": + """Retrieves a single ExpressRoutePort peering location, including the list of available + bandwidths available at said peering location. + + :param location_name: Name of the requested ExpressRoutePort peering location. + :type location_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePortsLocation, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortsLocation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortsLocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_ports_locations_get_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePortsLocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations/{locationName}"} # type: ignore + +class ExpressRoutePortsOperations(object): + """ExpressRoutePortsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_ports_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> "_models.ExpressRoutePort": + """Retrieves the requested ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of ExpressRoutePort. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePort, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_ports_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + express_route_port_name: str, + parameters: "_models.ExpressRoutePort", + **kwargs: Any + ) -> "_models.ExpressRoutePort": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ExpressRoutePort') + + request = build_express_route_ports_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + express_route_port_name: str, + parameters: "_models.ExpressRoutePort", + **kwargs: Any + ) -> LROPoller["_models.ExpressRoutePort"]: + """Creates or updates the specified ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :param parameters: Parameters supplied to the create ExpressRoutePort operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRoutePort or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + express_route_port_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ExpressRoutePort": + """Update ExpressRoutePort tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :param parameters: Parameters supplied to update ExpressRoutePort resource tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePort, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePort + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePort"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_express_route_ports_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePort', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}"} # type: ignore + + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRoutePortListResult"]: + """List all the ExpressRoutePort resources in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_ports_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_ports_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ExpressRoutePortListResult"]: + """List all the ExpressRoutePort resources in the specified subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_ports_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_ports_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePorts"} # type: ignore + + @distributed_trace + def generate_loa( + self, + resource_group_name: str, + express_route_port_name: str, + request: "_models.GenerateExpressRoutePortsLOARequest", + **kwargs: Any + ) -> "_models.GenerateExpressRoutePortsLOAResult": + """Generate a letter of authorization for the requested ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of ExpressRoutePort. + :type express_route_port_name: str + :param request: Request parameters supplied to generate a letter of authorization. + :type request: ~azure.mgmt.network.v2022_01_01.models.GenerateExpressRoutePortsLOARequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: GenerateExpressRoutePortsLOAResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.GenerateExpressRoutePortsLOAResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.GenerateExpressRoutePortsLOAResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'GenerateExpressRoutePortsLOARequest') + + request = build_express_route_ports_generate_loa_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.generate_loa.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('GenerateExpressRoutePortsLOAResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + generate_loa.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/generateLoa"} # type: ignore + +class ExpressRouteLinksOperations(object): + """ExpressRouteLinksOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + express_route_port_name: str, + link_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteLink": + """Retrieves the specified ExpressRouteLink resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :param link_name: The name of the ExpressRouteLink resource. + :type link_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteLink, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteLink + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteLink"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_links_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + link_name=link_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteLink', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links/{linkName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRouteLinkListResult"]: + """Retrieve the ExpressRouteLink sub-resources of the specified ExpressRoutePort resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the ExpressRoutePort resource. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRouteLinkListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRouteLinkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteLinkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_links_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_links_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRouteLinkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links"} # type: ignore +class ExpressRoutePortAuthorizationsOperations(object): + """ExpressRoutePortAuthorizationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_port_authorizations_delete_request_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified authorization from the specified express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + **kwargs: Any + ) -> "_models.ExpressRoutePortAuthorization": + """Gets the specified authorization from the specified express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRoutePortAuthorization, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_port_authorizations_get_request( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRoutePortAuthorization", + **kwargs: Any + ) -> "_models.ExpressRoutePortAuthorization": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorization"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(authorization_parameters, 'ExpressRoutePortAuthorization') + + request = build_express_route_port_authorizations_create_or_update_request_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + express_route_port_name: str, + authorization_name: str, + authorization_parameters: "_models.ExpressRoutePortAuthorization", + **kwargs: Any + ) -> LROPoller["_models.ExpressRoutePortAuthorization"]: + """Creates or updates an authorization in the specified express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :param authorization_name: The name of the authorization. + :type authorization_name: str + :param authorization_parameters: Parameters supplied to the create or update express route port + authorization operation. + :type authorization_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRoutePortAuthorization or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorization] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorization"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + authorization_name=authorization_name, + authorization_parameters=authorization_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRoutePortAuthorization', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations/{authorizationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + express_route_port_name: str, + **kwargs: Any + ) -> Iterable["_models.ExpressRoutePortAuthorizationListResult"]: + """Gets all authorizations in an express route port. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_port_name: The name of the express route port. + :type express_route_port_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ExpressRoutePortAuthorizationListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ExpressRoutePortAuthorizationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRoutePortAuthorizationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_express_route_port_authorizations_list_request( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_express_route_port_authorizations_list_request( + resource_group_name=resource_group_name, + express_route_port_name=express_route_port_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ExpressRoutePortAuthorizationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/authorizations"} # type: ignore +class FirewallPoliciesOperations(object): + """FirewallPoliciesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policies_delete_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified Firewall Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + firewall_policy_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.FirewallPolicy": + """Gets the specified Firewall Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policies_get_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.FirewallPolicy", + **kwargs: Any + ) -> "_models.FirewallPolicy": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FirewallPolicy') + + request = build_firewall_policies_create_or_update_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.FirewallPolicy", + **kwargs: Any + ) -> LROPoller["_models.FirewallPolicy"]: + """Creates or updates the specified Firewall Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Parameters supplied to the create or update Firewall Policy operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either FirewallPolicy or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.FirewallPolicy] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.FirewallPolicy": + """Updates tags of a Azure Firewall Policy resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Parameters supplied to update Azure Firewall Policy tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_firewall_policies_update_tags_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.FirewallPolicyListResult"]: + """Lists all Firewall Policies in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FirewallPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("FirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.FirewallPolicyListResult"]: + """Gets all the Firewall Policies in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FirewallPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("FirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/firewallPolicies"} # type: ignore +class FirewallPolicyRuleCollectionGroupsOperations(object): + """FirewallPolicyRuleCollectionGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_rule_collection_groups_delete_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified FirewallPolicyRuleCollectionGroup. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param rule_collection_group_name: The name of the FirewallPolicyRuleCollectionGroup. + :type rule_collection_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + **kwargs: Any + ) -> "_models.FirewallPolicyRuleCollectionGroup": + """Gets the specified FirewallPolicyRuleCollectionGroup. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param rule_collection_group_name: The name of the FirewallPolicyRuleCollectionGroup. + :type rule_collection_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FirewallPolicyRuleCollectionGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_rule_collection_groups_get_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + parameters: "_models.FirewallPolicyRuleCollectionGroup", + **kwargs: Any + ) -> "_models.FirewallPolicyRuleCollectionGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FirewallPolicyRuleCollectionGroup') + + request = build_firewall_policy_rule_collection_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + firewall_policy_name: str, + rule_collection_group_name: str, + parameters: "_models.FirewallPolicyRuleCollectionGroup", + **kwargs: Any + ) -> LROPoller["_models.FirewallPolicyRuleCollectionGroup"]: + """Creates or updates the specified FirewallPolicyRuleCollectionGroup. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param rule_collection_group_name: The name of the FirewallPolicyRuleCollectionGroup. + :type rule_collection_group_name: str + :param parameters: Parameters supplied to the create or update + FirewallPolicyRuleCollectionGroup operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either FirewallPolicyRuleCollectionGroup or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + rule_collection_group_name=rule_collection_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FirewallPolicyRuleCollectionGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups/{ruleCollectionGroupName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> Iterable["_models.FirewallPolicyRuleCollectionGroupListResult"]: + """Lists all FirewallPolicyRuleCollectionGroups in a FirewallPolicy resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FirewallPolicyRuleCollectionGroupListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.FirewallPolicyRuleCollectionGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FirewallPolicyRuleCollectionGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_firewall_policy_rule_collection_groups_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_firewall_policy_rule_collection_groups_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("FirewallPolicyRuleCollectionGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleCollectionGroups"} # type: ignore +class FirewallPolicyIdpsSignaturesOperations(object): + """FirewallPolicyIdpsSignaturesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.IDPSQueryObject", + **kwargs: Any + ) -> "_models.QueryResults": + """Retrieves the current status of IDPS signatures for the relevant policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: + :type parameters: ~azure.mgmt.network.v2022_01_01.models.IDPSQueryObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: QueryResults, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.QueryResults + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.QueryResults"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'IDPSQueryObject') + + request = build_firewall_policy_idps_signatures_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('QueryResults', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/listIdpsSignatures"} # type: ignore + +class FirewallPolicyIdpsSignaturesOverridesOperations(object): + """FirewallPolicyIdpsSignaturesOverridesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def patch( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.SignaturesOverrides", + **kwargs: Any + ) -> "_models.SignaturesOverrides": + """Will update the status of policy's signature overrides for IDPS. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Will contain all properties of the object to put. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverrides, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverrides"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SignaturesOverrides') + + request = build_firewall_policy_idps_signatures_overrides_patch_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.patch.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverrides', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + patch.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default"} # type: ignore + + + @distributed_trace + def put( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.SignaturesOverrides", + **kwargs: Any + ) -> "_models.SignaturesOverrides": + """Will override/create a new signature overrides for the policy's IDPS. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: Will contain all properties of the object to put. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverrides, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverrides"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SignaturesOverrides') + + request = build_firewall_policy_idps_signatures_overrides_put_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.put.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverrides', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + put.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default"} # type: ignore + + + @distributed_trace + def get( + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> "_models.SignaturesOverrides": + """Returns all signatures overrides for a specific policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverrides, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverrides + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverrides"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_idps_signatures_overrides_get_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverrides', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides/default"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + firewall_policy_name: str, + **kwargs: Any + ) -> "_models.SignaturesOverridesList": + """Returns all signatures overrides objects for a specific policy as a list containing a single + value. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignaturesOverridesList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignaturesOverridesList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignaturesOverridesList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_firewall_policy_idps_signatures_overrides_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignaturesOverridesList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/signatureOverrides"} # type: ignore + +class FirewallPolicyIdpsSignaturesFilterValuesOperations(object): + """FirewallPolicyIdpsSignaturesFilterValuesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + firewall_policy_name: str, + parameters: "_models.SignatureOverridesFilterValuesQuery", + **kwargs: Any + ) -> "_models.SignatureOverridesFilterValuesResponse": + """Retrieves the current filter values for the signatures overrides. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param firewall_policy_name: The name of the Firewall Policy. + :type firewall_policy_name: str + :param parameters: + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SignatureOverridesFilterValuesQuery + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SignatureOverridesFilterValuesResponse, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SignatureOverridesFilterValuesResponse + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SignatureOverridesFilterValuesResponse"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SignatureOverridesFilterValuesQuery') + + request = build_firewall_policy_idps_signatures_filter_values_list_request( + resource_group_name=resource_group_name, + firewall_policy_name=firewall_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SignatureOverridesFilterValuesResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/listIdpsFilterOptions"} # type: ignore + +class IpAllocationsOperations(object): + """IpAllocationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_allocation_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_allocations_delete_request_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_allocation_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified IpAllocation. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + ip_allocation_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.IpAllocation": + """Gets the specified IpAllocation by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpAllocation, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpAllocation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_allocations_get_request( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + ip_allocation_name: str, + parameters: "_models.IpAllocation", + **kwargs: Any + ) -> "_models.IpAllocation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'IpAllocation') + + request = build_ip_allocations_create_or_update_request_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + ip_allocation_name: str, + parameters: "_models.IpAllocation", + **kwargs: Any + ) -> LROPoller["_models.IpAllocation"]: + """Creates or updates an IpAllocation in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :param parameters: Parameters supplied to the create or update virtual network operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.IpAllocation + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either IpAllocation or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.IpAllocation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('IpAllocation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + ip_allocation_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.IpAllocation": + """Updates a IpAllocation tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_allocation_name: The name of the IpAllocation. + :type ip_allocation_name: str + :param parameters: Parameters supplied to update IpAllocation tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpAllocation, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpAllocation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ip_allocations_update_tags_request( + resource_group_name=resource_group_name, + ip_allocation_name=ip_allocation_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpAllocation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations/{ipAllocationName}"} # type: ignore + + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.IpAllocationListResult"]: + """Gets all IpAllocations in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpAllocationListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.IpAllocationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_allocations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_allocations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("IpAllocationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/IpAllocations"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.IpAllocationListResult"]: + """Gets all IpAllocations in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpAllocationListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.IpAllocationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpAllocationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_allocations_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_allocations_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("IpAllocationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/IpAllocations"} # type: ignore +class IpGroupsOperations(object): + """IpGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + ip_groups_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.IpGroup": + """Gets the specified ipGroups. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :param expand: Expands resourceIds (of Firewalls/Network Security Groups etc.) back referenced + by the IpGroups resource. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_groups_get_request( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + ip_groups_name: str, + parameters: "_models.IpGroup", + **kwargs: Any + ) -> "_models.IpGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'IpGroup') + + request = build_ip_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('IpGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('IpGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + ip_groups_name: str, + parameters: "_models.IpGroup", + **kwargs: Any + ) -> LROPoller["_models.IpGroup"]: + """Creates or updates an ipGroups in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :param parameters: Parameters supplied to the create or update IpGroups operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.IpGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either IpGroup or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.IpGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('IpGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + @distributed_trace + def update_groups( + self, + resource_group_name: str, + ip_groups_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.IpGroup": + """Updates tags of an IpGroups resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :param parameters: Parameters supplied to the update ipGroups operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IpGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IpGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_ip_groups_update_groups_request( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_groups.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IpGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_groups.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_groups_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_ip_groups_delete_request_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + ip_groups_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified ipGroups. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param ip_groups_name: The name of the ipGroups. + :type ip_groups_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + ip_groups_name=ip_groups_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.IpGroupListResult"]: + """Gets all IpGroups in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpGroupListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.IpGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_groups_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_groups_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("IpGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.IpGroupListResult"]: + """Gets all IpGroups in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IpGroupListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.IpGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.IpGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_ip_groups_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_ip_groups_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("IpGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ipGroups"} # type: ignore +class LoadBalancersOperations(object): + """LoadBalancersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancers_delete_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + load_balancer_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.LoadBalancer": + """Gets the specified load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LoadBalancer, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LoadBalancer + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancers_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + load_balancer_name: str, + parameters: "_models.LoadBalancer", + **kwargs: Any + ) -> "_models.LoadBalancer": + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'LoadBalancer') + + request = build_load_balancers_create_or_update_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + load_balancer_name: str, + parameters: "_models.LoadBalancer", + **kwargs: Any + ) -> LROPoller["_models.LoadBalancer"]: + """Creates or updates a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param parameters: Parameters supplied to the create or update load balancer operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.LoadBalancer + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either LoadBalancer or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.LoadBalancer] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('LoadBalancer', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + load_balancer_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.LoadBalancer": + """Updates a load balancer tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param parameters: Parameters supplied to update load balancer tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LoadBalancer, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LoadBalancer + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancer"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_load_balancers_update_tags_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LoadBalancer', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.LoadBalancerListResult"]: + """Gets all the load balancers in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.LoadBalancerListResult"]: + """Gets all the load balancers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers"} # type: ignore + + def _swap_public_ip_addresses_initial( # pylint: disable=inconsistent-return-statements + self, + location: str, + parameters: "_models.LoadBalancerVipSwapRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'LoadBalancerVipSwapRequest') + + request = build_load_balancers_swap_public_ip_addresses_request_initial( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._swap_public_ip_addresses_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _swap_public_ip_addresses_initial.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/setLoadBalancerFrontendPublicIpAddresses"} # type: ignore + + + @distributed_trace + def begin_swap_public_ip_addresses( # pylint: disable=inconsistent-return-statements + self, + location: str, + parameters: "_models.LoadBalancerVipSwapRequest", + **kwargs: Any + ) -> LROPoller[None]: + """Swaps VIPs between two load balancers. + + :param location: The region where load balancers are located at. + :type location: str + :param parameters: Parameters that define which VIPs should be swapped. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.LoadBalancerVipSwapRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._swap_public_ip_addresses_initial( + location=location, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_swap_public_ip_addresses.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/setLoadBalancerFrontendPublicIpAddresses"} # type: ignore + + def _list_inbound_nat_rule_port_mappings_initial( + self, + group_name: str, + load_balancer_name: str, + backend_pool_name: str, + parameters: "_models.QueryInboundNatRulePortMappingRequest", + **kwargs: Any + ) -> "_models.BackendAddressInboundNatRulePortMappings": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressInboundNatRulePortMappings"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryInboundNatRulePortMappingRequest') + + request = build_load_balancers_list_inbound_nat_rule_port_mappings_request_initial( + group_name=group_name, + load_balancer_name=load_balancer_name, + backend_pool_name=backend_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._list_inbound_nat_rule_port_mappings_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BackendAddressInboundNatRulePortMappings', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('BackendAddressInboundNatRulePortMappings', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_inbound_nat_rule_port_mappings_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendPoolName}/queryInboundNatRulePortMapping"} # type: ignore + + + @distributed_trace + def begin_list_inbound_nat_rule_port_mappings( + self, + group_name: str, + load_balancer_name: str, + backend_pool_name: str, + parameters: "_models.QueryInboundNatRulePortMappingRequest", + **kwargs: Any + ) -> LROPoller["_models.BackendAddressInboundNatRulePortMappings"]: + """List of inbound NAT rule port mappings. + + :param group_name: The name of the resource group. + :type group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_pool_name: The name of the load balancer backend address pool. + :type backend_pool_name: str + :param parameters: Query inbound NAT rule port mapping request. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryInboundNatRulePortMappingRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either BackendAddressInboundNatRulePortMappings + or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.BackendAddressInboundNatRulePortMappings] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressInboundNatRulePortMappings"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_inbound_nat_rule_port_mappings_initial( + group_name=group_name, + load_balancer_name=load_balancer_name, + backend_pool_name=backend_pool_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BackendAddressInboundNatRulePortMappings', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_inbound_nat_rule_port_mappings.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendPoolName}/queryInboundNatRulePortMapping"} # type: ignore +class LoadBalancerBackendAddressPoolsOperations(object): + """LoadBalancerBackendAddressPoolsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> Iterable["_models.LoadBalancerBackendAddressPoolListResult"]: + """Gets all the load balancer backed address pools. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerBackendAddressPoolListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerBackendAddressPoolListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerBackendAddressPoolListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_backend_address_pools_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_backend_address_pools_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerBackendAddressPoolListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + **kwargs: Any + ) -> "_models.BackendAddressPool": + """Gets load balancer backend address pool. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_address_pool_name: The name of the backend address pool. + :type backend_address_pool_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BackendAddressPool, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BackendAddressPool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressPool"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_backend_address_pools_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + parameters: "_models.BackendAddressPool", + **kwargs: Any + ) -> "_models.BackendAddressPool": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressPool"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'BackendAddressPool') + + request = build_load_balancer_backend_address_pools_create_or_update_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + parameters: "_models.BackendAddressPool", + **kwargs: Any + ) -> LROPoller["_models.BackendAddressPool"]: + """Creates or updates a load balancer backend address pool. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_address_pool_name: The name of the backend address pool. + :type backend_address_pool_name: str + :param parameters: Parameters supplied to the create or update load balancer backend address + pool operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.BackendAddressPool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either BackendAddressPool or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.BackendAddressPool] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BackendAddressPool"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BackendAddressPool', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_backend_address_pools_delete_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + backend_address_pool_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified load balancer backend address pool. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param backend_address_pool_name: The name of the backend address pool. + :type backend_address_pool_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + backend_address_pool_name=backend_address_pool_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}"} # type: ignore +class LoadBalancerFrontendIPConfigurationsOperations(object): + """LoadBalancerFrontendIPConfigurationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> Iterable["_models.LoadBalancerFrontendIPConfigurationListResult"]: + """Gets all the load balancer frontend IP configurations. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerFrontendIPConfigurationListResult or + the result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerFrontendIPConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerFrontendIPConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_frontend_ip_configurations_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_frontend_ip_configurations_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerFrontendIPConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + load_balancer_name: str, + frontend_ip_configuration_name: str, + **kwargs: Any + ) -> "_models.FrontendIPConfiguration": + """Gets load balancer frontend IP configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param frontend_ip_configuration_name: The name of the frontend IP configuration. + :type frontend_ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FrontendIPConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FrontendIPConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FrontendIPConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_frontend_ip_configurations_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + frontend_ip_configuration_name=frontend_ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FrontendIPConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations/{frontendIPConfigurationName}"} # type: ignore + +class InboundNatRulesOperations(object): + """InboundNatRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> Iterable["_models.InboundNatRuleListResult"]: + """Gets all the inbound NAT rules in a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either InboundNatRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.InboundNatRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_inbound_nat_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_inbound_nat_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("InboundNatRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_inbound_nat_rules_delete_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified load balancer inbound NAT rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param inbound_nat_rule_name: The name of the inbound NAT rule. + :type inbound_nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.InboundNatRule": + """Gets the specified load balancer inbound NAT rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param inbound_nat_rule_name: The name of the inbound NAT rule. + :type inbound_nat_rule_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: InboundNatRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.InboundNatRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_inbound_nat_rules_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('InboundNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + inbound_nat_rule_parameters: "_models.InboundNatRule", + **kwargs: Any + ) -> "_models.InboundNatRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(inbound_nat_rule_parameters, 'InboundNatRule') + + request = build_inbound_nat_rules_create_or_update_request_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('InboundNatRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('InboundNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + load_balancer_name: str, + inbound_nat_rule_name: str, + inbound_nat_rule_parameters: "_models.InboundNatRule", + **kwargs: Any + ) -> LROPoller["_models.InboundNatRule"]: + """Creates or updates a load balancer inbound NAT rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param inbound_nat_rule_name: The name of the inbound NAT rule. + :type inbound_nat_rule_name: str + :param inbound_nat_rule_parameters: Parameters supplied to the create or update inbound NAT + rule operation. + :type inbound_nat_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.InboundNatRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either InboundNatRule or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.InboundNatRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundNatRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + inbound_nat_rule_name=inbound_nat_rule_name, + inbound_nat_rule_parameters=inbound_nat_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('InboundNatRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}"} # type: ignore +class LoadBalancerLoadBalancingRulesOperations(object): + """LoadBalancerLoadBalancingRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> Iterable["_models.LoadBalancerLoadBalancingRuleListResult"]: + """Gets all the load balancing rules in a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerLoadBalancingRuleListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerLoadBalancingRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerLoadBalancingRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_load_balancing_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_load_balancing_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerLoadBalancingRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + load_balancer_name: str, + load_balancing_rule_name: str, + **kwargs: Any + ) -> "_models.LoadBalancingRule": + """Gets the specified load balancer load balancing rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param load_balancing_rule_name: The name of the load balancing rule. + :type load_balancing_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LoadBalancingRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LoadBalancingRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancingRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_load_balancing_rules_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + load_balancing_rule_name=load_balancing_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LoadBalancingRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules/{loadBalancingRuleName}"} # type: ignore + +class LoadBalancerOutboundRulesOperations(object): + """LoadBalancerOutboundRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> Iterable["_models.LoadBalancerOutboundRuleListResult"]: + """Gets all the outbound rules in a load balancer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerOutboundRuleListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerOutboundRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerOutboundRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_outbound_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_outbound_rules_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerOutboundRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + load_balancer_name: str, + outbound_rule_name: str, + **kwargs: Any + ) -> "_models.OutboundRule": + """Gets the specified load balancer outbound rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param outbound_rule_name: The name of the outbound rule. + :type outbound_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: OutboundRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.OutboundRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.OutboundRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_outbound_rules_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + outbound_rule_name=outbound_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('OutboundRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules/{outboundRuleName}"} # type: ignore + +class LoadBalancerNetworkInterfacesOperations(object): + """LoadBalancerNetworkInterfacesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceListResult"]: + """Gets associated load balancer network interfaces. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_network_interfaces_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_network_interfaces_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/networkInterfaces"} # type: ignore +class LoadBalancerProbesOperations(object): + """LoadBalancerProbesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + load_balancer_name: str, + **kwargs: Any + ) -> Iterable["_models.LoadBalancerProbeListResult"]: + """Gets all the load balancer probes. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LoadBalancerProbeListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LoadBalancerProbeListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LoadBalancerProbeListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_load_balancer_probes_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_load_balancer_probes_list_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LoadBalancerProbeListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + load_balancer_name: str, + probe_name: str, + **kwargs: Any + ) -> "_models.Probe": + """Gets load balancer probe. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param load_balancer_name: The name of the load balancer. + :type load_balancer_name: str + :param probe_name: The name of the probe. + :type probe_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Probe, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Probe + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Probe"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_load_balancer_probes_get_request( + resource_group_name=resource_group_name, + load_balancer_name=load_balancer_name, + probe_name=probe_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Probe', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}"} # type: ignore + +class NatGatewaysOperations(object): + """NatGatewaysOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + nat_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_gateways_delete_request_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + nat_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified nat gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + nat_gateway_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NatGateway": + """Gets the specified nat gateway in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NatGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_gateways_get_request( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NatGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + nat_gateway_name: str, + parameters: "_models.NatGateway", + **kwargs: Any + ) -> Optional["_models.NatGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.NatGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NatGateway') + + request = build_nat_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('NatGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NatGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + nat_gateway_name: str, + parameters: "_models.NatGateway", + **kwargs: Any + ) -> LROPoller["_models.NatGateway"]: + """Creates or updates a nat gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :param parameters: Parameters supplied to the create or update nat gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NatGateway or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NatGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NatGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + nat_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NatGateway": + """Updates nat gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param nat_gateway_name: The name of the nat gateway. + :type nat_gateway_name: str + :param parameters: Parameters supplied to update nat gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NatGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NatGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_nat_gateways_update_tags_request( + resource_group_name=resource_group_name, + nat_gateway_name=nat_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NatGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.NatGatewayListResult"]: + """Gets all the Nat Gateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NatGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NatGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_nat_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_nat_gateways_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NatGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/natGateways"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.NatGatewayListResult"]: + """Gets all nat gateways in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NatGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NatGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NatGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_nat_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_nat_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NatGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways"} # type: ignore +class NetworkInterfaceIPConfigurationsOperations(object): + """NetworkInterfaceIPConfigurationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceIPConfigurationListResult"]: + """Get all ip configurations in a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceIPConfigurationListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interface_ip_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interface_ip_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceIPConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_interface_name: str, + ip_configuration_name: str, + **kwargs: Any + ) -> "_models.NetworkInterfaceIPConfiguration": + """Gets the specified network interface ip configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param ip_configuration_name: The name of the ip configuration name. + :type ip_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterfaceIPConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceIPConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceIPConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interface_ip_configurations_get_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + ip_configuration_name=ip_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterfaceIPConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}"} # type: ignore + +class NetworkInterfaceLoadBalancersOperations(object): + """NetworkInterfaceLoadBalancersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceLoadBalancerListResult"]: + """List all load balancers in a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceLoadBalancerListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceLoadBalancerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceLoadBalancerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interface_load_balancers_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interface_load_balancers_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceLoadBalancerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/loadBalancers"} # type: ignore +class NetworkInterfaceTapConfigurationsOperations(object): + """NetworkInterfaceTapConfigurationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interface_tap_configurations_delete_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified tap configuration from the NetworkInterface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param tap_configuration_name: The name of the tap configuration. + :type tap_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + **kwargs: Any + ) -> "_models.NetworkInterfaceTapConfiguration": + """Get the specified tap configuration on a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param tap_configuration_name: The name of the tap configuration. + :type tap_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkInterfaceTapConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_interface_tap_configurations_get_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + tap_configuration_parameters: "_models.NetworkInterfaceTapConfiguration", + **kwargs: Any + ) -> "_models.NetworkInterfaceTapConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(tap_configuration_parameters, 'NetworkInterfaceTapConfiguration') + + request = build_network_interface_tap_configurations_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_interface_name: str, + tap_configuration_name: str, + tap_configuration_parameters: "_models.NetworkInterfaceTapConfiguration", + **kwargs: Any + ) -> LROPoller["_models.NetworkInterfaceTapConfiguration"]: + """Creates or updates a Tap configuration in the specified NetworkInterface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :param tap_configuration_name: The name of the tap configuration. + :type tap_configuration_name: str + :param tap_configuration_parameters: Parameters supplied to the create or update tap + configuration operation. + :type tap_configuration_parameters: + ~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NetworkInterfaceTapConfiguration or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + tap_configuration_name=tap_configuration_name, + tap_configuration_parameters=tap_configuration_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkInterfaceTapConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_interface_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkInterfaceTapConfigurationListResult"]: + """Get all Tap configurations in a network interface. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_interface_name: The name of the network interface. + :type network_interface_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkInterfaceTapConfigurationListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkInterfaceTapConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkInterfaceTapConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_interface_tap_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_interface_tap_configurations_list_request( + resource_group_name=resource_group_name, + network_interface_name=network_interface_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkInterfaceTapConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations"} # type: ignore +class NetworkManagersOperations(object): + """NetworkManagersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + **kwargs: Any + ) -> "_models.NetworkManager": + """Gets the specified Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManager, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_managers_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManager", + **kwargs: Any + ) -> "_models.NetworkManager": + """Creates or updates a Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which network manager is. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManager, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManager') + + request = build_network_managers_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_managers_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + @distributed_trace + def patch( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.PatchObject", + **kwargs: Any + ) -> "_models.NetworkManager": + """Patch NetworkManager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which network manager is. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PatchObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManager, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManager + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManager"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PatchObject') + + request = build_network_managers_patch_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.patch.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManager', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + patch.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}"} # type: ignore + + + @distributed_trace + def list_by_subscription( + self, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.NetworkManagerListResult"]: + """List all network managers in a subscription. + + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_managers_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_managers_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagers"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.NetworkManagerListResult"]: + """List network managers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_managers_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_managers_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers"} # type: ignore +class NetworkManagerCommitsOperations(object): + """NetworkManagerCommitsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _post_initial( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManagerCommit", + **kwargs: Any + ) -> "_models.NetworkManagerCommit": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerCommit"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerCommit') + + request = build_network_manager_commits_post_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._post_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 200: + deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) + + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _post_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit"} # type: ignore + + + @distributed_trace + def begin_post( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManagerCommit", + **kwargs: Any + ) -> LROPoller["_models.NetworkManagerCommit"]: + """Post a Network Manager Commit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which Managed Network commit is. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerCommit + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NetworkManagerCommit or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkManagerCommit] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerCommit"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._post_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkManagerCommit', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_post.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/commit"} # type: ignore +class NetworkManagerDeploymentStatusOperations(object): + """NetworkManagerDeploymentStatusOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + parameters: "_models.NetworkManagerDeploymentStatusParameter", + **kwargs: Any + ) -> "_models.NetworkManagerDeploymentStatusListResult": + """Post to List of Network Manager Deployment Status. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param parameters: Parameters supplied to specify which Managed Network deployment status is. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.NetworkManagerDeploymentStatusParameter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerDeploymentStatusListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerDeploymentStatusListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerDeploymentStatusListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerDeploymentStatusParameter') + + request = build_network_manager_deployment_status_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerDeploymentStatusListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/listDeploymentStatus"} # type: ignore + +class SubscriptionNetworkManagerConnectionsOperations(object): + """SubscriptionNetworkManagerConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def create_or_update( + self, + network_manager_connection_name: str, + parameters: "_models.NetworkManagerConnection", + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Create a network manager connection on this subscription. + + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :param parameters: Network manager connection to be created/updated. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerConnection') + + request = build_subscription_network_manager_connections_create_or_update_request( + subscription_id=self._config.subscription_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def get( + self, + network_manager_connection_name: str, + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Get a specified connection created by this subscription. + + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subscription_network_manager_connections_get_request( + subscription_id=self._config.subscription_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, + network_manager_connection_name: str, + **kwargs: Any + ) -> None: + """Delete specified connection created by this subscription. + + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subscription_network_manager_connections_delete_request( + subscription_id=self._config.subscription_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.NetworkManagerConnectionListResult"]: + """List all network manager connections created by this subscription. + + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerConnectionListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_subscription_network_manager_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_subscription_network_manager_connections_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore +class ManagementGroupNetworkManagerConnectionsOperations(object): + """ManagementGroupNetworkManagerConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def create_or_update( + self, + management_group_id: str, + network_manager_connection_name: str, + parameters: "_models.NetworkManagerConnection", + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Create a network manager connection on this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :param parameters: Network manager connection to be created/updated. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkManagerConnection') + + request = build_management_group_network_manager_connections_create_or_update_request( + management_group_id=management_group_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def get( + self, + management_group_id: str, + network_manager_connection_name: str, + **kwargs: Any + ) -> "_models.NetworkManagerConnection": + """Get a specified connection created by this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkManagerConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_management_group_network_manager_connections_get_request( + management_group_id=management_group_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, + management_group_id: str, + network_manager_connection_name: str, + **kwargs: Any + ) -> None: + """Delete specified pending connection created by this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param network_manager_connection_name: Name for the network manager connection. + :type network_manager_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_management_group_network_manager_connections_delete_request( + management_group_id=management_group_id, + network_manager_connection_name=network_manager_connection_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + management_group_id: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.NetworkManagerConnectionListResult"]: + """List all network manager connections created by this management group. + + :param management_group_id: The management group Id which uniquely identify the Microsoft Azure + management group. + :type management_group_id: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkManagerConnectionListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkManagerConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_management_group_network_manager_connections_list_request( + management_group_id=management_group_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_management_group_network_manager_connections_list_request( + management_group_id=management_group_id, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore +class ConnectivityConfigurationsOperations(object): + """ConnectivityConfigurationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + **kwargs: Any + ) -> "_models.ConnectivityConfiguration": + """Gets a Network Connectivity Configuration, specified by the resource group, network manager + name, and connectivity Configuration name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager connectivity configuration. + :type configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectivityConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connectivity_configurations_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + connectivity_configuration: "_models.ConnectivityConfiguration", + **kwargs: Any + ) -> "_models.ConnectivityConfiguration": + """Creates/Updates a new network manager connectivity configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager connectivity configuration. + :type configuration_name: str + :param connectivity_configuration: Parameters supplied to create/update a network manager + connectivity configuration. + :type connectivity_configuration: + ~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectivityConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectivityConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(connectivity_configuration, 'ConnectivityConfiguration') + + request = build_connectivity_configurations_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ConnectivityConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connectivity_configurations_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a network manager connectivity configuration, specified by the resource group, network + manager name, and connectivity configuration name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager connectivity configuration. + :type configuration_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations/{configurationName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.ConnectivityConfigurationListResult"]: + """Lists all the network manager connectivity configuration in a specified network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ConnectivityConfigurationListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ConnectivityConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_connectivity_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_connectivity_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ConnectivityConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/connectivityConfigurations"} # type: ignore +class NetworkGroupsOperations(object): + """NetworkGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + **kwargs: Any + ) -> "_models.NetworkGroup": + """Gets the specified network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_groups_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + parameters: "_models.NetworkGroup", + if_match: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkGroup": + """Creates or updates a network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param parameters: Parameters supplied to the specify which network group need to create. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkGroup + :param if_match: The ETag of the transformation. Omit this value to always overwrite the + current resource. Specify the last-seen ETag value to prevent accidentally overwriting + concurrent changes. Default value is None. + :type if_match: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkGroup') + + request = build_network_groups_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + content_type=content_type, + json=_json, + if_match=if_match, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 200: + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + + deserialized = self._deserialize('NetworkGroup', pipeline_response) + + if response.status_code == 201: + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + + deserialized = self._deserialize('NetworkGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_groups_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.NetworkGroupListResult"]: + """Lists the specified network group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_groups_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_groups_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups"} # type: ignore +class StaticMembersOperations(object): + """StaticMembersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + **kwargs: Any + ) -> "_models.StaticMember": + """Gets the specified static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param static_member_name: The name of the static member. + :type static_member_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: StaticMember, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.StaticMember + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_static_members_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + static_member_name=static_member_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('StaticMember', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + parameters: "_models.StaticMember", + **kwargs: Any + ) -> "_models.StaticMember": + """Creates or updates a static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param static_member_name: The name of the static member. + :type static_member_name: str + :param parameters: Parameters supplied to the specify the static member to create. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.StaticMember + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: StaticMember, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.StaticMember + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'StaticMember') + + request = build_static_members_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + static_member_name=static_member_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('StaticMember', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('StaticMember', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore + + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + static_member_name: str, + **kwargs: Any + ) -> None: + """Deletes a static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param static_member_name: The name of the static member. + :type static_member_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_static_members_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + static_member_name=static_member_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + network_group_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.StaticMemberListResult"]: + """Lists the specified static member. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param network_group_name: The name of the network group. + :type network_group_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either StaticMemberListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.StaticMemberListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMemberListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_static_members_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_static_members_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + network_group_name=network_group_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("StaticMemberListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers"} # type: ignore +class ScopeConnectionsOperations(object): + """ScopeConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + parameters: "_models.ScopeConnection", + **kwargs: Any + ) -> "_models.ScopeConnection": + """Creates or updates scope connection from Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param scope_connection_name: Name for the cross-tenant connection. + :type scope_connection_name: str + :param parameters: Scope connection to be created/updated. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ScopeConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ScopeConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ScopeConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ScopeConnection') + + request = build_scope_connections_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + scope_connection_name=scope_connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ScopeConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ScopeConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore + + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + **kwargs: Any + ) -> "_models.ScopeConnection": + """Get specified scope connection created by this Network Manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param scope_connection_name: Name for the cross-tenant connection. + :type scope_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ScopeConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ScopeConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_scope_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + scope_connection_name=scope_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ScopeConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore + + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + scope_connection_name: str, + **kwargs: Any + ) -> None: + """Delete the pending scope connection created by this network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param scope_connection_name: Name for the cross-tenant connection. + :type scope_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_scope_connections_delete_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + scope_connection_name=scope_connection_name, + api_version=api_version, + template_url=self.delete.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.ScopeConnectionListResult"]: + """List all scope connections created by this network manager. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ScopeConnectionListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ScopeConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_scope_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_scope_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ScopeConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections"} # type: ignore +class SecurityAdminConfigurationsOperations(object): + """SecurityAdminConfigurationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.SecurityAdminConfigurationListResult"]: + """Lists all the network manager security admin configurations in a network manager, in a + paginated format. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityAdminConfigurationListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfigurationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfigurationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_admin_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_admin_configurations_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityAdminConfigurationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + **kwargs: Any + ) -> "_models.SecurityAdminConfiguration": + """Retrieves a network manager security admin configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityAdminConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_admin_configurations_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + security_admin_configuration: "_models.SecurityAdminConfiguration", + **kwargs: Any + ) -> "_models.SecurityAdminConfiguration": + """Creates or updates a network manager security admin configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param security_admin_configuration: The security admin configuration to create or update. + :type security_admin_configuration: + ~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityAdminConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityAdminConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(security_admin_configuration, 'SecurityAdminConfiguration') + + request = build_security_admin_configurations_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_admin_configurations_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a network manager security admin configuration. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore +class AdminRuleCollectionsOperations(object): + """AdminRuleCollectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.AdminRuleCollectionListResult"]: + """Lists all the rule collections in a security admin configuration, in a paginated format. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AdminRuleCollectionListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AdminRuleCollectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_admin_rule_collections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_admin_rule_collections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AdminRuleCollectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + **kwargs: Any + ) -> "_models.AdminRuleCollection": + """Gets a network manager security admin configuration rule collection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AdminRuleCollection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rule_collections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('AdminRuleCollection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_collection: "_models.AdminRuleCollection", + **kwargs: Any + ) -> "_models.AdminRuleCollection": + """Creates or updates an admin rule collection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_collection: The Rule Collection to create or update. + :type rule_collection: ~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AdminRuleCollection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.AdminRuleCollection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleCollection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(rule_collection, 'AdminRuleCollection') + + request = build_admin_rule_collections_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AdminRuleCollection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('AdminRuleCollection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rule_collections_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes an admin rule collection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore +class AdminRulesOperations(object): + """AdminRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + top: Optional[int] = None, + skip_token: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.AdminRuleListResult"]: + """List all network manager security configuration admin rules. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param top: An optional query parameter which specifies the maximum number of records to be + returned by the server. Default value is None. + :type top: int + :param skip_token: SkipToken is only used if a previous operation returned a partial result. If + a previous response contains a nextLink element, the value of the nextLink element will include + a skipToken parameter that specifies a starting point to use for subsequent calls. Default + value is None. + :type skip_token: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AdminRuleListResult or the result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AdminRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AdminRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_admin_rules_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_admin_rules_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + api_version=api_version, + top=top, + skip_token=skip_token, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AdminRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + **kwargs: Any + ) -> "_models.BaseAdminRule": + """Gets a network manager security configuration admin rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BaseAdminRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BaseAdminRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rules_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BaseAdminRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + admin_rule: "_models.BaseAdminRule", + **kwargs: Any + ) -> "_models.BaseAdminRule": + """Creates or updates an admin rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :param admin_rule: The admin rule to create or update. + :type admin_rule: ~azure.mgmt.network.v2022_01_01.models.BaseAdminRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BaseAdminRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BaseAdminRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseAdminRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(admin_rule, 'BaseAdminRule') + + request = build_admin_rules_create_or_update_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BaseAdminRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BaseAdminRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_admin_rules_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + api_version=api_version, + force=force, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + + if cls: + return cls(pipeline_response, None, response_headers) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_manager_name: str, + configuration_name: str, + rule_collection_name: str, + rule_name: str, + force: Optional[bool] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes an admin rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_manager_name: The name of the network manager. + :type network_manager_name: str + :param configuration_name: The name of the network manager Security Configuration. + :type configuration_name: str + :param rule_collection_name: The name of the network manager security Configuration rule + collection. + :type rule_collection_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :param force: Deletes the resource even if it is part of a deployed configuration. If the + configuration has been deployed, the service will do a cleanup deployment in the background, + prior to the delete. Default value is None. + :type force: bool + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_manager_name=network_manager_name, + configuration_name=configuration_name, + rule_collection_name=rule_collection_name, + rule_name=rule_name, + force=force, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore +class NetworkProfilesOperations(object): + """NetworkProfilesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_profile_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_profiles_delete_request_initial( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_profile_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified network profile. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the NetworkProfile. + :type network_profile_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_profile_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkProfile": + """Gets the specified network profile in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the public IP prefix. + :type network_profile_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkProfile, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfile"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_profiles_get_request( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_profile_name: str, + parameters: "_models.NetworkProfile", + **kwargs: Any + ) -> "_models.NetworkProfile": + """Creates or updates a network profile. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the network profile. + :type network_profile_name: str + :param parameters: Parameters supplied to the create or update network profile operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkProfile, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfile"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkProfile') + + request = build_network_profiles_create_or_update_request( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + network_profile_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkProfile": + """Updates network profile tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_profile_name: The name of the network profile. + :type network_profile_name: str + :param parameters: Parameters supplied to update network profile tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkProfile, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkProfile + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfile"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_profiles_update_tags_request( + resource_group_name=resource_group_name, + network_profile_name=network_profile_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkProfile', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.NetworkProfileListResult"]: + """Gets all the network profiles in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkProfileListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkProfileListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfileListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_profiles_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_profiles_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkProfileListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkProfiles"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkProfileListResult"]: + """Gets all network profiles in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkProfileListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkProfileListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkProfileListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_profiles_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_profiles_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkProfileListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles"} # type: ignore +class NetworkSecurityGroupsOperations(object): + """NetworkSecurityGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_security_groups_delete_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_security_group_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkSecurityGroup": + """Gets the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_security_groups_get_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + network_security_group_name: str, + parameters: "_models.NetworkSecurityGroup", + **kwargs: Any + ) -> "_models.NetworkSecurityGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkSecurityGroup') + + request = build_network_security_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_security_group_name: str, + parameters: "_models.NetworkSecurityGroup", + **kwargs: Any + ) -> LROPoller["_models.NetworkSecurityGroup"]: + """Creates or updates a network security group in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param parameters: Parameters supplied to the create or update network security group + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NetworkSecurityGroup or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + network_security_group_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkSecurityGroup": + """Updates a network security group tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param parameters: Parameters supplied to update network security group tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkSecurityGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_security_groups_update_tags_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkSecurityGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.NetworkSecurityGroupListResult"]: + """Gets all network security groups in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkSecurityGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_security_groups_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkSecurityGroups"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkSecurityGroupListResult"]: + """Gets all network security groups in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkSecurityGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkSecurityGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkSecurityGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_security_groups_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkSecurityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups"} # type: ignore +class SecurityRulesOperations(object): + """SecurityRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_rules_delete_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified network security rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param security_rule_name: The name of the security rule. + :type security_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + **kwargs: Any + ) -> "_models.SecurityRule": + """Get the specified network security rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param security_rule_name: The name of the security rule. + :type security_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_rules_get_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + security_rule_parameters: "_models.SecurityRule", + **kwargs: Any + ) -> "_models.SecurityRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(security_rule_parameters, 'SecurityRule') + + request = build_security_rules_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_security_group_name: str, + security_rule_name: str, + security_rule_parameters: "_models.SecurityRule", + **kwargs: Any + ) -> LROPoller["_models.SecurityRule"]: + """Creates or updates a security rule in the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param security_rule_name: The name of the security rule. + :type security_rule_name: str + :param security_rule_parameters: Parameters supplied to the create or update network security + rule operation. + :type security_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.SecurityRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either SecurityRule or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.SecurityRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + security_rule_name=security_rule_name, + security_rule_parameters=security_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('SecurityRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> Iterable["_models.SecurityRuleListResult"]: + """Gets all security rules in a network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules"} # type: ignore +class DefaultSecurityRulesOperations(object): + """DefaultSecurityRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + network_security_group_name: str, + **kwargs: Any + ) -> Iterable["_models.SecurityRuleListResult"]: + """Gets all default security rules in a network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_default_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_default_security_rules_list_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_security_group_name: str, + default_security_rule_name: str, + **kwargs: Any + ) -> "_models.SecurityRule": + """Get the specified default network security rule. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_security_group_name: The name of the network security group. + :type network_security_group_name: str + :param default_security_rule_name: The name of the default security rule. + :type default_security_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_default_security_rules_get_request( + resource_group_name=resource_group_name, + network_security_group_name=network_security_group_name, + default_security_rule_name=default_security_rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules/{defaultSecurityRuleName}"} # type: ignore + +class NetworkVirtualAppliancesOperations(object): + """NetworkVirtualAppliancesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_virtual_appliances_delete_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified Network Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance. + :type network_virtual_appliance_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.NetworkVirtualAppliance": + """Gets the specified Network Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkVirtualAppliance, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_virtual_appliances_get_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkVirtualAppliance": + """Updates a Network Virtual Appliance. + + :param resource_group_name: The resource group name of Network Virtual Appliance. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance being updated. + :type network_virtual_appliance_name: str + :param parameters: Parameters supplied to Update Network Virtual Appliance Tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkVirtualAppliance, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_virtual_appliances_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + parameters: "_models.NetworkVirtualAppliance", + **kwargs: Any + ) -> "_models.NetworkVirtualAppliance": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkVirtualAppliance') + + request = build_network_virtual_appliances_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + parameters: "_models.NetworkVirtualAppliance", + **kwargs: Any + ) -> LROPoller["_models.NetworkVirtualAppliance"]: + """Creates or updates the specified Network Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param parameters: Parameters supplied to the create or update Network Virtual Appliance. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NetworkVirtualAppliance or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualAppliance] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualAppliance"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkVirtualAppliance', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkVirtualApplianceListResult"]: + """Lists all Network Virtual Appliances in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_virtual_appliances_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_virtual_appliances_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.NetworkVirtualApplianceListResult"]: + """Gets all Network Virtual Appliances in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_virtual_appliances_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_virtual_appliances_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualAppliances"} # type: ignore +class VirtualApplianceSitesOperations(object): + """VirtualApplianceSitesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_appliance_sites_delete_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified site from a Virtual Appliance. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param site_name: The name of the site. + :type site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + **kwargs: Any + ) -> "_models.VirtualApplianceSite": + """Gets the specified Virtual Appliance Site. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param site_name: The name of the site. + :type site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualApplianceSite, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualApplianceSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_appliance_sites_get_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + parameters: "_models.VirtualApplianceSite", + **kwargs: Any + ) -> "_models.VirtualApplianceSite": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualApplianceSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualApplianceSite') + + request = build_virtual_appliance_sites_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + site_name: str, + parameters: "_models.VirtualApplianceSite", + **kwargs: Any + ) -> LROPoller["_models.VirtualApplianceSite"]: + """Creates or updates the specified Network Virtual Appliance Site. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param site_name: The name of the site. + :type site_name: str + :param parameters: Parameters supplied to the create or update Network Virtual Appliance Site + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualApplianceSite or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualApplianceSite] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualApplianceSite"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + site_name=site_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualApplianceSite', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites/{siteName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkVirtualApplianceSiteListResult"]: + """Lists all Network Virtual Appliance Sites in a Network Virtual Appliance resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceSiteListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSiteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceSiteListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_appliance_sites_list_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_appliance_sites_list_request( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceSiteListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/virtualApplianceSites"} # type: ignore +class VirtualApplianceSkusOperations(object): + """VirtualApplianceSkusOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.NetworkVirtualApplianceSkuListResult"]: + """List all SKUs available for a virtual appliance. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkVirtualApplianceSkuListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSkuListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceSkuListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_appliance_skus_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_appliance_skus_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkVirtualApplianceSkuListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualApplianceSkus"} # type: ignore + + @distributed_trace + def get( + self, + sku_name: str, + **kwargs: Any + ) -> "_models.NetworkVirtualApplianceSku": + """Retrieves a single available sku for network virtual appliance. + + :param sku_name: Name of the Sku. + :type sku_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkVirtualApplianceSku, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkVirtualApplianceSku + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkVirtualApplianceSku"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_appliance_skus_get_request( + subscription_id=self._config.subscription_id, + sku_name=sku_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkVirtualApplianceSku', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkVirtualApplianceSkus/{skuName}"} # type: ignore + +class InboundSecurityRuleOperations(object): + """InboundSecurityRuleOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + rule_collection_name: str, + parameters: "_models.InboundSecurityRule", + **kwargs: Any + ) -> "_models.InboundSecurityRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundSecurityRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'InboundSecurityRule') + + request = build_inbound_security_rule_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + rule_collection_name=rule_collection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('InboundSecurityRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('InboundSecurityRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/inboundSecurityRules/{ruleCollectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_virtual_appliance_name: str, + rule_collection_name: str, + parameters: "_models.InboundSecurityRule", + **kwargs: Any + ) -> LROPoller["_models.InboundSecurityRule"]: + """Creates or updates the specified Network Virtual Appliance Inbound Security Rules. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_virtual_appliance_name: The name of the Network Virtual Appliance. + :type network_virtual_appliance_name: str + :param rule_collection_name: The name of security rule collection. + :type rule_collection_name: str + :param parameters: Parameters supplied to the create or update Network Virtual Appliance + Inbound Security Rules operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.InboundSecurityRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either InboundSecurityRule or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.InboundSecurityRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.InboundSecurityRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_virtual_appliance_name=network_virtual_appliance_name, + rule_collection_name=rule_collection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('InboundSecurityRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkVirtualAppliances/{networkVirtualApplianceName}/inboundSecurityRules/{ruleCollectionName}"} # type: ignore +class NetworkWatchersOperations(object): # pylint: disable=too-many-public-methods + """NetworkWatchersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NetworkWatcher", + **kwargs: Any + ) -> "_models.NetworkWatcher": + """Creates or updates a network watcher in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the network watcher resource. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkWatcher, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcher"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkWatcher') + + request = build_network_watchers_create_or_update_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + @distributed_trace + def get( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> "_models.NetworkWatcher": + """Gets the specified network watcher by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkWatcher, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcher"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_watchers_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_network_watchers_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified network watcher resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.NetworkWatcher": + """Updates a network watcher tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters supplied to update network watcher tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: NetworkWatcher, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.NetworkWatcher + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcher"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_network_watchers_update_tags_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('NetworkWatcher', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.NetworkWatcherListResult"]: + """Gets all network watchers by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkWatcherListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkWatcherListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcherListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_watchers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_watchers_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkWatcherListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.NetworkWatcherListResult"]: + """Gets all network watchers by subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either NetworkWatcherListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.NetworkWatcherListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkWatcherListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_network_watchers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_network_watchers_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("NetworkWatcherListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkWatchers"} # type: ignore + + @distributed_trace + def get_topology( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TopologyParameters", + **kwargs: Any + ) -> "_models.Topology": + """Gets the current network topology by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the representation of topology. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TopologyParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Topology, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Topology + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Topology"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TopologyParameters') + + request = build_network_watchers_get_topology_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.get_topology.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Topology', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_topology.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/topology"} # type: ignore + + + def _verify_ip_flow_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.VerificationIPFlowParameters", + **kwargs: Any + ) -> "_models.VerificationIPFlowResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VerificationIPFlowResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VerificationIPFlowParameters') + + request = build_network_watchers_verify_ip_flow_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._verify_ip_flow_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VerificationIPFlowResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('VerificationIPFlowResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _verify_ip_flow_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify"} # type: ignore + + + @distributed_trace + def begin_verify_ip_flow( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.VerificationIPFlowParameters", + **kwargs: Any + ) -> LROPoller["_models.VerificationIPFlowResult"]: + """Verify IP flow from the specified VM to a location given the currently configured NSG rules. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the IP flow to be verified. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VerificationIPFlowParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VerificationIPFlowResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VerificationIPFlowResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VerificationIPFlowResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._verify_ip_flow_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VerificationIPFlowResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_verify_ip_flow.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify"} # type: ignore + + def _get_next_hop_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NextHopParameters", + **kwargs: Any + ) -> "_models.NextHopResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NextHopResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NextHopParameters') + + request = build_network_watchers_get_next_hop_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_next_hop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NextHopResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('NextHopResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_next_hop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop"} # type: ignore + + + @distributed_trace + def begin_get_next_hop( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NextHopParameters", + **kwargs: Any + ) -> LROPoller["_models.NextHopResult"]: + """Gets the next hop from the specified VM. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the source and destination endpoint. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.NextHopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NextHopResult or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NextHopResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NextHopResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_next_hop_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NextHopResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_next_hop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop"} # type: ignore + + def _get_vm_security_rules_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.SecurityGroupViewParameters", + **kwargs: Any + ) -> "_models.SecurityGroupViewResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityGroupViewResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SecurityGroupViewParameters') + + request = build_network_watchers_get_vm_security_rules_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_vm_security_rules_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityGroupViewResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('SecurityGroupViewResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vm_security_rules_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView"} # type: ignore + + + @distributed_trace + def begin_get_vm_security_rules( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.SecurityGroupViewParameters", + **kwargs: Any + ) -> LROPoller["_models.SecurityGroupViewResult"]: + """Gets the configured and effective security group rules on the specified VM. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters that define the VM to check security groups for. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SecurityGroupViewParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either SecurityGroupViewResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.SecurityGroupViewResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityGroupViewResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_vm_security_rules_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('SecurityGroupViewResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vm_security_rules.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView"} # type: ignore + + def _get_troubleshooting_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TroubleshootingParameters", + **kwargs: Any + ) -> "_models.TroubleshootingResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TroubleshootingParameters') + + request = build_network_watchers_get_troubleshooting_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_troubleshooting_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_troubleshooting_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot"} # type: ignore + + + @distributed_trace + def begin_get_troubleshooting( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.TroubleshootingParameters", + **kwargs: Any + ) -> LROPoller["_models.TroubleshootingResult"]: + """Initiate troubleshooting on a specified resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define the resource to troubleshoot. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TroubleshootingParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either TroubleshootingResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.TroubleshootingResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_troubleshooting_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_troubleshooting.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot"} # type: ignore + + def _get_troubleshooting_result_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.QueryTroubleshootingParameters", + **kwargs: Any + ) -> "_models.TroubleshootingResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'QueryTroubleshootingParameters') + + request = build_network_watchers_get_troubleshooting_result_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_troubleshooting_result_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_troubleshooting_result_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult"} # type: ignore + + + @distributed_trace + def begin_get_troubleshooting_result( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.QueryTroubleshootingParameters", + **kwargs: Any + ) -> LROPoller["_models.TroubleshootingResult"]: + """Get the last completed troubleshooting result on a specified resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define the resource to query the troubleshooting result. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.QueryTroubleshootingParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either TroubleshootingResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.TroubleshootingResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.TroubleshootingResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_troubleshooting_result_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('TroubleshootingResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_troubleshooting_result.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult"} # type: ignore + + def _set_flow_log_configuration_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogInformation", + **kwargs: Any + ) -> "_models.FlowLogInformation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FlowLogInformation') + + request = build_network_watchers_set_flow_log_configuration_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._set_flow_log_configuration_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _set_flow_log_configuration_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog"} # type: ignore + + + @distributed_trace + def begin_set_flow_log_configuration( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogInformation", + **kwargs: Any + ) -> LROPoller["_models.FlowLogInformation"]: + """Configures flow log and traffic analytics (optional) on a specified resource. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define the configuration of flow log. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FlowLogInformation + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either FlowLogInformation or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.FlowLogInformation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._set_flow_log_configuration_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_set_flow_log_configuration.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog"} # type: ignore + + def _get_flow_log_status_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogStatusParameters", + **kwargs: Any + ) -> "_models.FlowLogInformation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FlowLogStatusParameters') + + request = build_network_watchers_get_flow_log_status_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_flow_log_status_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_flow_log_status_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus"} # type: ignore + + + @distributed_trace + def begin_get_flow_log_status( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.FlowLogStatusParameters", + **kwargs: Any + ) -> LROPoller["_models.FlowLogInformation"]: + """Queries status of flow log and traffic analytics (optional) on a specified resource. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that define a resource to query flow log and traffic analytics + (optional) status. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FlowLogStatusParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either FlowLogInformation or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.FlowLogInformation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogInformation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_flow_log_status_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FlowLogInformation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_flow_log_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus"} # type: ignore + + def _check_connectivity_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.ConnectivityParameters", + **kwargs: Any + ) -> "_models.ConnectivityInformation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityInformation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectivityParameters') + + request = build_network_watchers_check_connectivity_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._check_connectivity_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectivityInformation', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('ConnectivityInformation', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _check_connectivity_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectivityCheck"} # type: ignore + + + @distributed_trace + def begin_check_connectivity( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.ConnectivityParameters", + **kwargs: Any + ) -> LROPoller["_models.ConnectivityInformation"]: + """Verifies the possibility of establishing a direct TCP connection from a virtual machine to a + given endpoint including another VM or an arbitrary remote server. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that determine how the connectivity check will be performed. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectivityParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ConnectivityInformation or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectivityInformation] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectivityInformation"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._check_connectivity_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectivityInformation', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_check_connectivity.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectivityCheck"} # type: ignore + + def _get_azure_reachability_report_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AzureReachabilityReportParameters", + **kwargs: Any + ) -> "_models.AzureReachabilityReport": + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureReachabilityReport"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'AzureReachabilityReportParameters') + + request = build_network_watchers_get_azure_reachability_report_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_azure_reachability_report_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AzureReachabilityReport', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('AzureReachabilityReport', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_azure_reachability_report_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/azureReachabilityReport"} # type: ignore + + + @distributed_trace + def begin_get_azure_reachability_report( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AzureReachabilityReportParameters", + **kwargs: Any + ) -> LROPoller["_models.AzureReachabilityReport"]: + """NOTE: This feature is currently in preview and still being tested for stability. Gets the + relative latency score for internet service providers from a specified location to Azure + regions. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that determine Azure reachability report configuration. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReportParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either AzureReachabilityReport or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.AzureReachabilityReport] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AzureReachabilityReport"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_azure_reachability_report_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AzureReachabilityReport', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_azure_reachability_report.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/azureReachabilityReport"} # type: ignore + + def _list_available_providers_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AvailableProvidersListParameters", + **kwargs: Any + ) -> "_models.AvailableProvidersList": + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableProvidersList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'AvailableProvidersListParameters') + + request = build_network_watchers_list_available_providers_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._list_available_providers_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('AvailableProvidersList', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('AvailableProvidersList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_available_providers_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/availableProvidersList"} # type: ignore + + + @distributed_trace + def begin_list_available_providers( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.AvailableProvidersListParameters", + **kwargs: Any + ) -> LROPoller["_models.AvailableProvidersList"]: + """NOTE: This feature is currently in preview and still being tested for stability. Lists all + available internet service providers for a specified Azure region. + + :param resource_group_name: The name of the network watcher resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher resource. + :type network_watcher_name: str + :param parameters: Parameters that scope the list of available providers. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.AvailableProvidersListParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either AvailableProvidersList or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.AvailableProvidersList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailableProvidersList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_available_providers_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('AvailableProvidersList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_available_providers.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/availableProvidersList"} # type: ignore + + def _get_network_configuration_diagnostic_initial( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NetworkConfigurationDiagnosticParameters", + **kwargs: Any + ) -> "_models.NetworkConfigurationDiagnosticResponse": + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkConfigurationDiagnosticResponse"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'NetworkConfigurationDiagnosticParameters') + + request = build_network_watchers_get_network_configuration_diagnostic_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_network_configuration_diagnostic_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('NetworkConfigurationDiagnosticResponse', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('NetworkConfigurationDiagnosticResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_network_configuration_diagnostic_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/networkConfigurationDiagnostic"} # type: ignore + + + @distributed_trace + def begin_get_network_configuration_diagnostic( + self, + resource_group_name: str, + network_watcher_name: str, + parameters: "_models.NetworkConfigurationDiagnosticParameters", + **kwargs: Any + ) -> LROPoller["_models.NetworkConfigurationDiagnosticResponse"]: + """Gets Network Configuration Diagnostic data to help customers understand and debug network + behavior. It provides detailed information on what security rules were applied to a specified + traffic flow and the result of evaluating these rules. Customers must provide details of a flow + like source, destination, protocol, etc. The API returns whether traffic was allowed or denied, + the rules evaluated for the specified flow and the evaluation results. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param parameters: Parameters to get network configuration diagnostic. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either NetworkConfigurationDiagnosticResponse or + the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.NetworkConfigurationDiagnosticResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkConfigurationDiagnosticResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_network_configuration_diagnostic_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('NetworkConfigurationDiagnosticResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_network_configuration_diagnostic.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/networkConfigurationDiagnostic"} # type: ignore +class PacketCapturesOperations(object): + """PacketCapturesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_initial( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + parameters: "_models.PacketCapture", + **kwargs: Any + ) -> "_models.PacketCaptureResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PacketCapture') + + request = build_packet_captures_create_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PacketCaptureResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + + @distributed_trace + def begin_create( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + parameters: "_models.PacketCapture", + **kwargs: Any + ) -> LROPoller["_models.PacketCaptureResult"]: + """Create and start a packet capture on the specified VM. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :param parameters: Parameters that define the create packet capture operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PacketCapture + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PacketCaptureResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PacketCaptureResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PacketCaptureResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> "_models.PacketCaptureResult": + """Gets a packet capture session by name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PacketCaptureResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PacketCaptureResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PacketCaptureResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified packet capture session. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}"} # type: ignore + + def _stop_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_stop_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop"} # type: ignore + + + @distributed_trace + def begin_stop( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Stops a specified packet capture session. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param packet_capture_name: The name of the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._stop_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop"} # type: ignore + + def _get_status_initial( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> "_models.PacketCaptureQueryStatusResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureQueryStatusResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_packet_captures_get_status_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_status_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PacketCaptureQueryStatusResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('PacketCaptureQueryStatusResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_status_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus"} # type: ignore + + + @distributed_trace + def begin_get_status( + self, + resource_group_name: str, + network_watcher_name: str, + packet_capture_name: str, + **kwargs: Any + ) -> LROPoller["_models.PacketCaptureQueryStatusResult"]: + """Query the status of a running packet capture session. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param packet_capture_name: The name given to the packet capture session. + :type packet_capture_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PacketCaptureQueryStatusResult or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PacketCaptureQueryStatusResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureQueryStatusResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_status_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + packet_capture_name=packet_capture_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PacketCaptureQueryStatusResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> Iterable["_models.PacketCaptureListResult"]: + """Lists all packet capture sessions within the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PacketCaptureListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PacketCaptureListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PacketCaptureListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_packet_captures_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_packet_captures_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PacketCaptureListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures"} # type: ignore +class ConnectionMonitorsOperations(object): + """ConnectionMonitorsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + parameters: "_models.ConnectionMonitor", + migrate: Optional[str] = None, + **kwargs: Any + ) -> "_models.ConnectionMonitorResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectionMonitor') + + request = build_connection_monitors_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + migrate=migrate, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + parameters: "_models.ConnectionMonitor", + migrate: Optional[str] = None, + **kwargs: Any + ) -> LROPoller["_models.ConnectionMonitorResult"]: + """Create or update a connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :param parameters: Parameters that define the operation to create a connection monitor. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitor + :param migrate: Value indicating whether connection monitor V1 should be migrated to V2 format. + Default value is None. + :type migrate: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ConnectionMonitorResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + parameters=parameters, + migrate=migrate, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> "_models.ConnectionMonitorResult": + """Gets a connection monitor by name. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectionMonitorResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ConnectionMonitorResult": + """Update tags of the specified connection monitor. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :param parameters: Parameters supplied to update connection monitor tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectionMonitorResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_connection_monitors_update_tags_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectionMonitorResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}"} # type: ignore + + + def _stop_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_stop_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._stop_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _stop_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/stop"} # type: ignore + + + @distributed_trace + def begin_stop( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Stops the specified connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._stop_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/stop"} # type: ignore + + def _start_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_start_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._start_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _start_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/start"} # type: ignore + + + @distributed_trace + def begin_start( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Starts the specified connection monitor. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name of the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._start_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/start"} # type: ignore + + def _query_initial( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> "_models.ConnectionMonitorQueryResult": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorQueryResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_connection_monitors_query_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._query_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectionMonitorQueryResult', pipeline_response) + + if response.status_code == 202: + deserialized = self._deserialize('ConnectionMonitorQueryResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _query_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/query"} # type: ignore + + + @distributed_trace + def begin_query( + self, + resource_group_name: str, + network_watcher_name: str, + connection_monitor_name: str, + **kwargs: Any + ) -> LROPoller["_models.ConnectionMonitorQueryResult"]: + """Query a snapshot of the most recent connection states. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :param connection_monitor_name: The name given to the connection monitor. + :type connection_monitor_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ConnectionMonitorQueryResult or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorQueryResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorQueryResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._query_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + connection_monitor_name=connection_monitor_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionMonitorQueryResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_query.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/query"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> Iterable["_models.ConnectionMonitorListResult"]: + """Lists all connection monitors for the specified Network Watcher. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ConnectionMonitorListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ConnectionMonitorListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionMonitorListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_connection_monitors_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_connection_monitors_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ConnectionMonitorListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors"} # type: ignore +class FlowLogsOperations(object): + """FlowLogsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + parameters: "_models.FlowLog", + **kwargs: Any + ) -> "_models.FlowLog": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'FlowLog') + + request = build_flow_logs_create_or_update_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('FlowLog', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('FlowLog', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + parameters: "_models.FlowLog", + **kwargs: Any + ) -> LROPoller["_models.FlowLog"]: + """Create or update a flow log for the specified network security group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log. + :type flow_log_name: str + :param parameters: Parameters that define the create or update flow log resource. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.FlowLog + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either FlowLog or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.FlowLog] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('FlowLog', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.FlowLog": + """Update tags of the specified flow log. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log. + :type flow_log_name: str + :param parameters: Parameters supplied to update flow log tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FlowLog, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FlowLog + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_flow_logs_update_tags_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FlowLog', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + @distributed_trace + def get( + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + **kwargs: Any + ) -> "_models.FlowLog": + """Gets a flow log resource by name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log resource. + :type flow_log_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: FlowLog, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.FlowLog + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLog"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_flow_logs_get_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('FlowLog', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_flow_logs_delete_request_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + network_watcher_name: str, + flow_log_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified flow log resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param network_watcher_name: The name of the network watcher. + :type network_watcher_name: str + :param flow_log_name: The name of the flow log resource. + :type flow_log_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + flow_log_name=flow_log_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs/{flowLogName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + network_watcher_name: str, + **kwargs: Any + ) -> Iterable["_models.FlowLogListResult"]: + """Lists all flow log resources for the specified Network Watcher. + + :param resource_group_name: The name of the resource group containing Network Watcher. + :type resource_group_name: str + :param network_watcher_name: The name of the Network Watcher resource. + :type network_watcher_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either FlowLogListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.FlowLogListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.FlowLogListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_flow_logs_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_flow_logs_list_request( + resource_group_name=resource_group_name, + network_watcher_name=network_watcher_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("FlowLogListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/flowLogs"} # type: ignore +class Operations(object): + """Operations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.OperationListResult"]: + """Lists all of the available Network Rest API operations. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either OperationListResult or the result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.OperationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.OperationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_operations_list_request( + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_operations_list_request( + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("OperationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/providers/Microsoft.Network/operations"} # type: ignore +class PrivateEndpointsOperations(object): + """PrivateEndpointsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_endpoints_delete_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified private endpoint. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + private_endpoint_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PrivateEndpoint": + """Gets the specified private endpoint by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateEndpoint, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpoint"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_endpoints_get_request( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + private_endpoint_name: str, + parameters: "_models.PrivateEndpoint", + **kwargs: Any + ) -> "_models.PrivateEndpoint": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpoint"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateEndpoint') + + request = build_private_endpoints_create_or_update_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + private_endpoint_name: str, + parameters: "_models.PrivateEndpoint", + **kwargs: Any + ) -> LROPoller["_models.PrivateEndpoint"]: + """Creates or updates an private endpoint in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param parameters: Parameters supplied to the create or update private endpoint operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PrivateEndpoint or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateEndpoint] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpoint"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateEndpoint', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.PrivateEndpointListResult"]: + """Gets all private endpoints in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateEndpointListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_endpoints_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_endpoints_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateEndpointListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints"} # type: ignore + + @distributed_trace + def list_by_subscription( + self, + **kwargs: Any + ) -> Iterable["_models.PrivateEndpointListResult"]: + """Gets all private endpoints in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateEndpointListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_endpoints_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_endpoints_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateEndpointListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateEndpoints"} # type: ignore +class AvailablePrivateEndpointTypesOperations(object): + """AvailablePrivateEndpointTypesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> Iterable["_models.AvailablePrivateEndpointTypesResult"]: + """Returns all of the resource types that can be linked to a Private Endpoint in this subscription + in this region. + + :param location: The location of the domain name. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailablePrivateEndpointTypesResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailablePrivateEndpointTypesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailablePrivateEndpointTypesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_private_endpoint_types_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_private_endpoint_types_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AvailablePrivateEndpointTypesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + location: str, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.AvailablePrivateEndpointTypesResult"]: + """Returns all of the resource types that can be linked to a Private Endpoint in this subscription + in this region. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AvailablePrivateEndpointTypesResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AvailablePrivateEndpointTypesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AvailablePrivateEndpointTypesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_available_private_endpoint_types_list_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_available_private_endpoint_types_list_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AvailablePrivateEndpointTypesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes"} # type: ignore +class PrivateDnsZoneGroupsOperations(object): + """PrivateDnsZoneGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_dns_zone_groups_delete_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified private dns zone group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param private_dns_zone_group_name: The name of the private dns zone group. + :type private_dns_zone_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + **kwargs: Any + ) -> "_models.PrivateDnsZoneGroup": + """Gets the private dns zone group resource by specified private dns zone group name. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param private_dns_zone_group_name: The name of the private dns zone group. + :type private_dns_zone_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateDnsZoneGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_dns_zone_groups_get_request( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + parameters: "_models.PrivateDnsZoneGroup", + **kwargs: Any + ) -> "_models.PrivateDnsZoneGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateDnsZoneGroup') + + request = build_private_dns_zone_groups_create_or_update_request_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + private_endpoint_name: str, + private_dns_zone_group_name: str, + parameters: "_models.PrivateDnsZoneGroup", + **kwargs: Any + ) -> LROPoller["_models.PrivateDnsZoneGroup"]: + """Creates or updates a private dns zone group in the specified private endpoint. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param private_dns_zone_group_name: The name of the private dns zone group. + :type private_dns_zone_group_name: str + :param parameters: Parameters supplied to the create or update private dns zone group + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PrivateDnsZoneGroup or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + private_endpoint_name=private_endpoint_name, + private_dns_zone_group_name=private_dns_zone_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateDnsZoneGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups/{privateDnsZoneGroupName}"} # type: ignore + + @distributed_trace + def list( + self, + private_endpoint_name: str, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.PrivateDnsZoneGroupListResult"]: + """Gets all private dns zone groups in a private endpoint. + + :param private_endpoint_name: The name of the private endpoint. + :type private_endpoint_name: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateDnsZoneGroupListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateDnsZoneGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateDnsZoneGroupListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_dns_zone_groups_list_request( + private_endpoint_name=private_endpoint_name, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_dns_zone_groups_list_request( + private_endpoint_name=private_endpoint_name, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateDnsZoneGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}/privateDnsZoneGroups"} # type: ignore +class PrivateLinkServicesOperations(object): + """PrivateLinkServicesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_delete_request_initial( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified private link service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + service_name=service_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + service_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PrivateLinkService": + """Gets the specified private link service by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateLinkService, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateLinkService + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkService"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_get_request( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + service_name: str, + parameters: "_models.PrivateLinkService", + **kwargs: Any + ) -> "_models.PrivateLinkService": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkService"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateLinkService') + + request = build_private_link_services_create_or_update_request_initial( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + service_name: str, + parameters: "_models.PrivateLinkService", + **kwargs: Any + ) -> LROPoller["_models.PrivateLinkService"]: + """Creates or updates an private link service in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param parameters: Parameters supplied to the create or update private link service operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateLinkService + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PrivateLinkService or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateLinkService] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkService"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + service_name=service_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateLinkService', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.PrivateLinkServiceListResult"]: + """Gets all private link services in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateLinkServiceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateLinkServiceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices"} # type: ignore + + @distributed_trace + def list_by_subscription( + self, + **kwargs: Any + ) -> Iterable["_models.PrivateLinkServiceListResult"]: + """Gets all private link service in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateLinkServiceListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateLinkServiceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateLinkServices"} # type: ignore + + @distributed_trace + def get_private_endpoint_connection( + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PrivateEndpointConnection": + """Get the specific private end point connection by specific private link service in the resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param pe_connection_name: The name of the private end point connection. + :type pe_connection_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateEndpointConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_get_private_endpoint_connection_request( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get_private_endpoint_connection.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_private_endpoint_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + + @distributed_trace + def update_private_endpoint_connection( + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + parameters: "_models.PrivateEndpointConnection", + **kwargs: Any + ) -> "_models.PrivateEndpointConnection": + """Approve or reject private end point connection for a private link service in a subscription. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param pe_connection_name: The name of the private end point connection. + :type pe_connection_name: str + :param parameters: Parameters supplied to approve or reject the private end point connection. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PrivateEndpointConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PrivateEndpointConnection') + + request = build_private_link_services_update_private_endpoint_connection_request( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_private_endpoint_connection.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PrivateEndpointConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_private_endpoint_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + + def _delete_private_endpoint_connection_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_private_link_services_delete_private_endpoint_connection_request_initial( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_private_endpoint_connection_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_private_endpoint_connection_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + + @distributed_trace + def begin_delete_private_endpoint_connection( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_name: str, + pe_connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Delete private end point connection for a private link service in a subscription. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :param pe_connection_name: The name of the private end point connection. + :type pe_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_private_endpoint_connection_initial( + resource_group_name=resource_group_name, + service_name=service_name, + pe_connection_name=pe_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_private_endpoint_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}"} # type: ignore + + @distributed_trace + def list_private_endpoint_connections( + self, + resource_group_name: str, + service_name: str, + **kwargs: Any + ) -> Iterable["_models.PrivateEndpointConnectionListResult"]: + """Gets all private end point connections for a specific private link service. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_name: The name of the private link service. + :type service_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PrivateEndpointConnectionListResult or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PrivateEndpointConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateEndpointConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_private_endpoint_connections_request( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_private_endpoint_connections.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_private_endpoint_connections_request( + resource_group_name=resource_group_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PrivateEndpointConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_private_endpoint_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections"} # type: ignore + + def _check_private_link_service_visibility_initial( + self, + location: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> Optional["_models.PrivateLinkServiceVisibility"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PrivateLinkServiceVisibility"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'CheckPrivateLinkServiceVisibilityRequest') + + request = build_private_link_services_check_private_link_service_visibility_request_initial( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._check_private_link_service_visibility_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _check_private_link_service_visibility_initial.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + + @distributed_trace + def begin_check_private_link_service_visibility( + self, + location: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> LROPoller["_models.PrivateLinkServiceVisibility"]: + """Checks whether the subscription is visible to private link service. + + :param location: The location of the domain name. + :type location: str + :param parameters: The request body of CheckPrivateLinkService API call. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.CheckPrivateLinkServiceVisibilityRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PrivateLinkServiceVisibility or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceVisibility] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceVisibility"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._check_private_link_service_visibility_initial( + location=location, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_check_private_link_service_visibility.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + def _check_private_link_service_visibility_by_resource_group_initial( + self, + location: str, + resource_group_name: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> Optional["_models.PrivateLinkServiceVisibility"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PrivateLinkServiceVisibility"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'CheckPrivateLinkServiceVisibilityRequest') + + request = build_private_link_services_check_private_link_service_visibility_by_resource_group_request_initial( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._check_private_link_service_visibility_by_resource_group_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _check_private_link_service_visibility_by_resource_group_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + + @distributed_trace + def begin_check_private_link_service_visibility_by_resource_group( + self, + location: str, + resource_group_name: str, + parameters: "_models.CheckPrivateLinkServiceVisibilityRequest", + **kwargs: Any + ) -> LROPoller["_models.PrivateLinkServiceVisibility"]: + """Checks whether the subscription is visible to private link service in the specified resource + group. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param parameters: The request body of CheckPrivateLinkService API call. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.CheckPrivateLinkServiceVisibilityRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PrivateLinkServiceVisibility or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PrivateLinkServiceVisibility] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PrivateLinkServiceVisibility"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._check_private_link_service_visibility_by_resource_group_initial( + location=location, + resource_group_name=resource_group_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PrivateLinkServiceVisibility', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_check_private_link_service_visibility_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility"} # type: ignore + + @distributed_trace + def list_auto_approved_private_link_services( + self, + location: str, + **kwargs: Any + ) -> Iterable["_models.AutoApprovedPrivateLinkServicesResult"]: + """Returns all of the private link service ids that can be linked to a Private Endpoint with auto + approved in this subscription in this region. + + :param location: The location of the domain name. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AutoApprovedPrivateLinkServicesResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AutoApprovedPrivateLinkServicesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AutoApprovedPrivateLinkServicesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_auto_approved_private_link_services_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_auto_approved_private_link_services.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_auto_approved_private_link_services_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AutoApprovedPrivateLinkServicesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_auto_approved_private_link_services.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices"} # type: ignore + + @distributed_trace + def list_auto_approved_private_link_services_by_resource_group( + self, + location: str, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.AutoApprovedPrivateLinkServicesResult"]: + """Returns all of the private link service ids that can be linked to a Private Endpoint with auto + approved in this subscription in this region. + + :param location: The location of the domain name. + :type location: str + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AutoApprovedPrivateLinkServicesResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.AutoApprovedPrivateLinkServicesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.AutoApprovedPrivateLinkServicesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_private_link_services_list_auto_approved_private_link_services_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_auto_approved_private_link_services_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_private_link_services_list_auto_approved_private_link_services_by_resource_group_request( + location=location, + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AutoApprovedPrivateLinkServicesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_auto_approved_private_link_services_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices"} # type: ignore +class PublicIPPrefixesOperations(object): + """PublicIPPrefixesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_prefix_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_prefixes_delete_request_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + public_ip_prefix_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified public IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the PublicIpPrefix. + :type public_ip_prefix_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + public_ip_prefix_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.PublicIPPrefix": + """Gets the specified public IP prefix in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the public IP prefix. + :type public_ip_prefix_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_public_ip_prefixes_get_request( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + public_ip_prefix_name: str, + parameters: "_models.PublicIPPrefix", + **kwargs: Any + ) -> "_models.PublicIPPrefix": + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'PublicIPPrefix') + + request = build_public_ip_prefixes_create_or_update_request_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + public_ip_prefix_name: str, + parameters: "_models.PublicIPPrefix", + **kwargs: Any + ) -> LROPoller["_models.PublicIPPrefix"]: + """Creates or updates a static or dynamic public IP prefix. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the public IP prefix. + :type public_ip_prefix_name: str + :param parameters: Parameters supplied to the create or update public IP prefix operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PublicIPPrefix or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + public_ip_prefix_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.PublicIPPrefix": + """Updates public IP prefix tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param public_ip_prefix_name: The name of the public IP prefix. + :type public_ip_prefix_name: str + :param parameters: Parameters supplied to update public IP prefix tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: PublicIPPrefix, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.PublicIPPrefix + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefix"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_public_ip_prefixes_update_tags_request( + resource_group_name=resource_group_name, + public_ip_prefix_name=public_ip_prefix_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('PublicIPPrefix', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.PublicIPPrefixListResult"]: + """Gets all the public IP prefixes in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_prefixes_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPPrefixes"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.PublicIPPrefixListResult"]: + """Gets all public IP prefixes in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either PublicIPPrefixListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.PublicIPPrefixListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.PublicIPPrefixListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_public_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_public_ip_prefixes_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("PublicIPPrefixListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes"} # type: ignore +class RouteFiltersOperations(object): + """RouteFiltersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filters_delete_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + route_filter_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.RouteFilter": + """Gets the specified route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param expand: Expands referenced express route bgp peering resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteFilter, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteFilter + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filters_get_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + route_filter_name: str, + route_filter_parameters: "_models.RouteFilter", + **kwargs: Any + ) -> "_models.RouteFilter": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_filter_parameters, 'RouteFilter') + + request = build_route_filters_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + route_filter_name: str, + route_filter_parameters: "_models.RouteFilter", + **kwargs: Any + ) -> LROPoller["_models.RouteFilter"]: + """Creates or updates a route filter in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param route_filter_parameters: Parameters supplied to the create or update route filter + operation. + :type route_filter_parameters: ~azure.mgmt.network.v2022_01_01.models.RouteFilter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either RouteFilter or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.RouteFilter] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + route_filter_parameters=route_filter_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RouteFilter', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + route_filter_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.RouteFilter": + """Updates tags of a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param parameters: Parameters supplied to update route filter tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteFilter, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteFilter + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_route_filters_update_tags_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteFilter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}"} # type: ignore + + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.RouteFilterListResult"]: + """Gets all route filters in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteFilterListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteFilterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_filters_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_filters_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("RouteFilterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.RouteFilterListResult"]: + """Gets all route filters in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteFilterListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteFilterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_filters_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_filters_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("RouteFilterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeFilters"} # type: ignore +class RouteFilterRulesOperations(object): + """RouteFilterRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filter_rules_delete_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified rule from a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + **kwargs: Any + ) -> "_models.RouteFilterRule": + """Gets the specified rule from a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param rule_name: The name of the rule. + :type rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteFilterRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteFilterRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_filter_rules_get_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + route_filter_rule_parameters: "_models.RouteFilterRule", + **kwargs: Any + ) -> "_models.RouteFilterRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_filter_rule_parameters, 'RouteFilterRule') + + request = build_route_filter_rules_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + route_filter_name: str, + rule_name: str, + route_filter_rule_parameters: "_models.RouteFilterRule", + **kwargs: Any + ) -> LROPoller["_models.RouteFilterRule"]: + """Creates or updates a route in the specified route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :param rule_name: The name of the route filter rule. + :type rule_name: str + :param route_filter_rule_parameters: Parameters supplied to the create or update route filter + rule operation. + :type route_filter_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.RouteFilterRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either RouteFilterRule or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.RouteFilterRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + rule_name=rule_name, + route_filter_rule_parameters=route_filter_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RouteFilterRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}"} # type: ignore + + @distributed_trace + def list_by_route_filter( + self, + resource_group_name: str, + route_filter_name: str, + **kwargs: Any + ) -> Iterable["_models.RouteFilterRuleListResult"]: + """Gets all RouteFilterRules in a route filter. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_filter_name: The name of the route filter. + :type route_filter_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteFilterRuleListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteFilterRuleListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteFilterRuleListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_filter_rules_list_by_route_filter_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_route_filter.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_filter_rules_list_by_route_filter_request( + resource_group_name=resource_group_name, + route_filter_name=route_filter_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("RouteFilterRuleListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_route_filter.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules"} # type: ignore +class RouteTablesOperations(object): + """RouteTablesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_tables_delete_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + route_table_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.RouteTable": + """Gets the specified route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteTable, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_route_tables_get_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + route_table_name: str, + parameters: "_models.RouteTable", + **kwargs: Any + ) -> "_models.RouteTable": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'RouteTable') + + request = build_route_tables_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RouteTable', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + route_table_name: str, + parameters: "_models.RouteTable", + **kwargs: Any + ) -> LROPoller["_models.RouteTable"]: + """Create or updates a route table in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param parameters: Parameters supplied to the create or update route table operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either RouteTable or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.RouteTable] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RouteTable', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + route_table_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.RouteTable": + """Updates a route table tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param parameters: Parameters supplied to update route table tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RouteTable, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RouteTable + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_route_tables_update_tags_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.RouteTableListResult"]: + """Gets all route tables in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteTableListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTableListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_tables_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_tables_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("RouteTableListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.RouteTableListResult"]: + """Gets all route tables in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteTableListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteTableListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteTableListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_route_tables_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_route_tables_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("RouteTableListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables"} # type: ignore +class RoutesOperations(object): + """RoutesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routes_delete_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified route from a route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param route_name: The name of the route. + :type route_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + **kwargs: Any + ) -> "_models.Route": + """Gets the specified route from a route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param route_name: The name of the route. + :type route_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Route, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Route + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Route"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routes_get_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Route', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + route_parameters: "_models.Route", + **kwargs: Any + ) -> "_models.Route": + cls = kwargs.pop('cls', None) # type: ClsType["_models.Route"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_parameters, 'Route') + + request = build_routes_create_or_update_request_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('Route', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('Route', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + route_table_name: str, + route_name: str, + route_parameters: "_models.Route", + **kwargs: Any + ) -> LROPoller["_models.Route"]: + """Creates or updates a route in the specified route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :param route_name: The name of the route. + :type route_name: str + :param route_parameters: Parameters supplied to the create or update route operation. + :type route_parameters: ~azure.mgmt.network.v2022_01_01.models.Route + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either Route or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.Route] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.Route"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + route_name=route_name, + route_parameters=route_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('Route', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + route_table_name: str, + **kwargs: Any + ) -> Iterable["_models.RouteListResult"]: + """Gets all routes in a route table. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param route_table_name: The name of the route table. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RouteListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.RouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.RouteListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_routes_list_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_routes_list_request( + resource_group_name=resource_group_name, + route_table_name=route_table_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("RouteListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes"} # type: ignore +class SecurityPartnerProvidersOperations(object): + """SecurityPartnerProvidersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + security_partner_provider_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_partner_providers_delete_request_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + security_partner_provider_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified Security Partner Provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + security_partner_provider_name: str, + **kwargs: Any + ) -> "_models.SecurityPartnerProvider": + """Gets the specified Security Partner Provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityPartnerProvider, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_security_partner_providers_get_request( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + security_partner_provider_name: str, + parameters: "_models.SecurityPartnerProvider", + **kwargs: Any + ) -> "_models.SecurityPartnerProvider": + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'SecurityPartnerProvider') + + request = build_security_partner_providers_create_or_update_request_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + security_partner_provider_name: str, + parameters: "_models.SecurityPartnerProvider", + **kwargs: Any + ) -> LROPoller["_models.SecurityPartnerProvider"]: + """Creates or updates the specified Security Partner Provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :param parameters: Parameters supplied to the create or update Security Partner Provider + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either SecurityPartnerProvider or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + security_partner_provider_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.SecurityPartnerProvider": + """Updates tags of a Security Partner Provider resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param security_partner_provider_name: The name of the Security Partner Provider. + :type security_partner_provider_name: str + :param parameters: Parameters supplied to update Security Partner Provider tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: SecurityPartnerProvider, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProvider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProvider"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_security_partner_providers_update_tags_request( + resource_group_name=resource_group_name, + security_partner_provider_name=security_partner_provider_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('SecurityPartnerProvider', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders/{securityPartnerProviderName}"} # type: ignore + + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.SecurityPartnerProviderListResult"]: + """Lists all Security Partner Providers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityPartnerProviderListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProviderListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_partner_providers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_partner_providers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityPartnerProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/securityPartnerProviders"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.SecurityPartnerProviderListResult"]: + """Gets all the Security Partner Providers in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SecurityPartnerProviderListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.SecurityPartnerProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityPartnerProviderListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_security_partner_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_security_partner_providers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SecurityPartnerProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/securityPartnerProviders"} # type: ignore +class BgpServiceCommunitiesOperations(object): + """BgpServiceCommunitiesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.BgpServiceCommunityListResult"]: + """Gets all the available bgp service communities. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either BgpServiceCommunityListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.BgpServiceCommunityListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpServiceCommunityListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_bgp_service_communities_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_bgp_service_communities_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BgpServiceCommunityListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/bgpServiceCommunities"} # type: ignore +class ServiceEndpointPoliciesOperations(object): + """ServiceEndpointPoliciesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policies_delete_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified service endpoint policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.ServiceEndpointPolicy": + """Gets the specified service Endpoint Policies in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceEndpointPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policies_get_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + parameters: "_models.ServiceEndpointPolicy", + **kwargs: Any + ) -> "_models.ServiceEndpointPolicy": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ServiceEndpointPolicy') + + request = build_service_endpoint_policies_create_or_update_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + parameters: "_models.ServiceEndpointPolicy", + **kwargs: Any + ) -> LROPoller["_models.ServiceEndpointPolicy"]: + """Creates or updates a service Endpoint Policies. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param parameters: Parameters supplied to the create or update service endpoint policy + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ServiceEndpointPolicy or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.ServiceEndpointPolicy": + """Updates tags of a service endpoint policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param parameters: Parameters supplied to update service endpoint policy tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceEndpointPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_service_endpoint_policies_update_tags_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceEndpointPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}"} # type: ignore + + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ServiceEndpointPolicyListResult"]: + """Gets all the service endpoint policies in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceEndpointPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_endpoint_policies_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_endpoint_policies_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceEndpointPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ServiceEndpointPolicies"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ServiceEndpointPolicyListResult"]: + """Gets all service endpoint Policies in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceEndpointPolicyListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_endpoint_policies_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_endpoint_policies_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceEndpointPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies"} # type: ignore +class ServiceEndpointPolicyDefinitionsOperations(object): + """ServiceEndpointPolicyDefinitionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policy_definitions_delete_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified ServiceEndpoint policy definitions. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the Service Endpoint Policy. + :type service_endpoint_policy_name: str + :param service_endpoint_policy_definition_name: The name of the service endpoint policy + definition. + :type service_endpoint_policy_definition_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + **kwargs: Any + ) -> "_models.ServiceEndpointPolicyDefinition": + """Get the specified service endpoint policy definitions from service endpoint policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy name. + :type service_endpoint_policy_name: str + :param service_endpoint_policy_definition_name: The name of the service endpoint policy + definition name. + :type service_endpoint_policy_definition_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceEndpointPolicyDefinition, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinition"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_endpoint_policy_definitions_get_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + service_endpoint_policy_definitions: "_models.ServiceEndpointPolicyDefinition", + **kwargs: Any + ) -> "_models.ServiceEndpointPolicyDefinition": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinition"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(service_endpoint_policy_definitions, 'ServiceEndpointPolicyDefinition') + + request = build_service_endpoint_policy_definitions_create_or_update_request_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + service_endpoint_policy_definition_name: str, + service_endpoint_policy_definitions: "_models.ServiceEndpointPolicyDefinition", + **kwargs: Any + ) -> LROPoller["_models.ServiceEndpointPolicyDefinition"]: + """Creates or updates a service endpoint policy definition in the specified service endpoint + policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy. + :type service_endpoint_policy_name: str + :param service_endpoint_policy_definition_name: The name of the service endpoint policy + definition name. + :type service_endpoint_policy_definition_name: str + :param service_endpoint_policy_definitions: Parameters supplied to the create or update service + endpoint policy operation. + :type service_endpoint_policy_definitions: + ~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ServiceEndpointPolicyDefinition or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinition] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinition"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + service_endpoint_policy_definition_name=service_endpoint_policy_definition_name, + service_endpoint_policy_definitions=service_endpoint_policy_definitions, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ServiceEndpointPolicyDefinition', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + service_endpoint_policy_name: str, + **kwargs: Any + ) -> Iterable["_models.ServiceEndpointPolicyDefinitionListResult"]: + """Gets all service endpoint policy definitions in a service end point policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param service_endpoint_policy_name: The name of the service endpoint policy name. + :type service_endpoint_policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceEndpointPolicyDefinitionListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceEndpointPolicyDefinitionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceEndpointPolicyDefinitionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_endpoint_policy_definitions_list_by_resource_group_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_endpoint_policy_definitions_list_by_resource_group_request( + resource_group_name=resource_group_name, + service_endpoint_policy_name=service_endpoint_policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceEndpointPolicyDefinitionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions"} # type: ignore +class ServiceTagsOperations(object): + """ServiceTagsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> "_models.ServiceTagsListResult": + """Gets a list of service tag information resources. + + :param location: The location that will be used as a reference for version (not as a filter + based on location, you will get the list of service tags with prefix details across all regions + but limited to the cloud that your subscription belongs to). + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceTagsListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceTagsListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceTagsListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_tags_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceTagsListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTags"} # type: ignore + +class ServiceTagInformationOperations(object): + """ServiceTagInformationOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + no_address_prefixes: Optional[bool] = None, + tag_name: Optional[str] = None, + **kwargs: Any + ) -> Iterable["_models.ServiceTagInformationListResult"]: + """Gets a list of service tag information resources with pagination. + + :param location: The location that will be used as a reference for cloud (not as a filter based + on location, you will get the list of service tags with prefix details across all regions but + limited to the cloud that your subscription belongs to). + :type location: str + :param no_address_prefixes: Do not return address prefixes for the tag(s). Default value is + None. + :type no_address_prefixes: bool + :param tag_name: Return tag information for a particular tag. Default value is None. + :type tag_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ServiceTagInformationListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ServiceTagInformationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceTagInformationListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_service_tag_information_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + no_address_prefixes=no_address_prefixes, + tag_name=tag_name, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_service_tag_information_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + no_address_prefixes=no_address_prefixes, + tag_name=tag_name, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ServiceTagInformationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTagDetails"} # type: ignore +class UsagesOperations(object): + """UsagesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + location: str, + **kwargs: Any + ) -> Iterable["_models.UsagesListResult"]: + """List network usages for a subscription. + + :param location: The location where resource usage is queried. + :type location: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either UsagesListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.UsagesListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.UsagesListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_usages_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_usages_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("UsagesListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/usages"} # type: ignore +class VirtualNetworksOperations(object): + """VirtualNetworksOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_networks_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_network_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.VirtualNetwork": + """Gets the specified virtual network by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetwork, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetwork + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_networks_get_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.VirtualNetwork", + **kwargs: Any + ) -> "_models.VirtualNetwork": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetwork') + + request = build_virtual_networks_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.VirtualNetwork", + **kwargs: Any + ) -> LROPoller["_models.VirtualNetwork"]: + """Creates or updates a virtual network in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to the create or update virtual network operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetwork + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetwork or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetwork] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + virtual_network_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualNetwork": + """Updates a virtual network tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param parameters: Parameters supplied to update virtual network tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetwork, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetwork + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetwork"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_virtual_networks_update_tags_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetwork', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkListResult"]: + """Gets all virtual networks in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_networks_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_networks_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkListResult"]: + """Gets all virtual networks in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_networks_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_networks_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks"} # type: ignore + + @distributed_trace + def check_ip_address_availability( + self, + resource_group_name: str, + virtual_network_name: str, + ip_address: str, + **kwargs: Any + ) -> "_models.IPAddressAvailabilityResult": + """Checks whether a private IP address is available for use. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param ip_address: The private IP address to be verified. + :type ip_address: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: IPAddressAvailabilityResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.IPAddressAvailabilityResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.IPAddressAvailabilityResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_networks_check_ip_address_availability_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + ip_address=ip_address, + template_url=self.check_ip_address_availability.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('IPAddressAvailabilityResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + check_ip_address_availability.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/CheckIPAddressAvailability"} # type: ignore + + + @distributed_trace + def list_usage( + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkListUsageResult"]: + """Lists usage stats. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkListUsageResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkListUsageResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkListUsageResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_networks_list_usage_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_usage.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_networks_list_usage_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkListUsageResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_usage.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages"} # type: ignore +class SubnetsOperations(object): + """SubnetsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subnets_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified subnet. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.Subnet": + """Gets the specified subnet by virtual network and resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Subnet, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.Subnet + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.Subnet"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_subnets_get_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('Subnet', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subnet_parameters: "_models.Subnet", + **kwargs: Any + ) -> "_models.Subnet": + cls = kwargs.pop('cls', None) # type: ClsType["_models.Subnet"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(subnet_parameters, 'Subnet') + + request = build_subnets_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('Subnet', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('Subnet', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + subnet_parameters: "_models.Subnet", + **kwargs: Any + ) -> LROPoller["_models.Subnet"]: + """Creates or updates a subnet in the specified virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param subnet_parameters: Parameters supplied to the create or update subnet operation. + :type subnet_parameters: ~azure.mgmt.network.v2022_01_01.models.Subnet + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either Subnet or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.Subnet] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.Subnet"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subnet_parameters=subnet_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('Subnet', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}"} # type: ignore + + def _prepare_network_policies_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + prepare_network_policies_request_parameters: "_models.PrepareNetworkPoliciesRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(prepare_network_policies_request_parameters, 'PrepareNetworkPoliciesRequest') + + request = build_subnets_prepare_network_policies_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._prepare_network_policies_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _prepare_network_policies_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/PrepareNetworkPolicies"} # type: ignore + + + @distributed_trace + def begin_prepare_network_policies( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + prepare_network_policies_request_parameters: "_models.PrepareNetworkPoliciesRequest", + **kwargs: Any + ) -> LROPoller[None]: + """Prepares a subnet by applying network intent policies. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param prepare_network_policies_request_parameters: Parameters supplied to prepare subnet by + applying network intent policies. + :type prepare_network_policies_request_parameters: + ~azure.mgmt.network.v2022_01_01.models.PrepareNetworkPoliciesRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._prepare_network_policies_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + prepare_network_policies_request_parameters=prepare_network_policies_request_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_prepare_network_policies.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/PrepareNetworkPolicies"} # type: ignore + + def _unprepare_network_policies_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + unprepare_network_policies_request_parameters: "_models.UnprepareNetworkPoliciesRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(unprepare_network_policies_request_parameters, 'UnprepareNetworkPoliciesRequest') + + request = build_subnets_unprepare_network_policies_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._unprepare_network_policies_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _unprepare_network_policies_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/UnprepareNetworkPolicies"} # type: ignore + + + @distributed_trace + def begin_unprepare_network_policies( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + unprepare_network_policies_request_parameters: "_models.UnprepareNetworkPoliciesRequest", + **kwargs: Any + ) -> LROPoller[None]: + """Unprepares a subnet by removing network intent policies. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :param unprepare_network_policies_request_parameters: Parameters supplied to unprepare subnet + to remove network intent policies. + :type unprepare_network_policies_request_parameters: + ~azure.mgmt.network.v2022_01_01.models.UnprepareNetworkPoliciesRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._unprepare_network_policies_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + unprepare_network_policies_request_parameters=unprepare_network_policies_request_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_unprepare_network_policies.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/UnprepareNetworkPolicies"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> Iterable["_models.SubnetListResult"]: + """Gets all subnets in a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SubnetListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.SubnetListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.SubnetListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_subnets_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_subnets_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SubnetListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets"} # type: ignore +class ResourceNavigationLinksOperations(object): + """ResourceNavigationLinksOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> "_models.ResourceNavigationLinksListResult": + """Gets a list of resource navigation links for a subnet. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceNavigationLinksListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ResourceNavigationLinksListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ResourceNavigationLinksListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_resource_navigation_links_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ResourceNavigationLinksListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ResourceNavigationLinks"} # type: ignore + +class ServiceAssociationLinksOperations(object): + """ServiceAssociationLinksOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_network_name: str, + subnet_name: str, + **kwargs: Any + ) -> "_models.ServiceAssociationLinksListResult": + """Gets a list of service association links for a subnet. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param subnet_name: The name of the subnet. + :type subnet_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ServiceAssociationLinksListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ServiceAssociationLinksListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ServiceAssociationLinksListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_service_association_links_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subnet_name=subnet_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ServiceAssociationLinksListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ServiceAssociationLinks"} # type: ignore + +class VirtualNetworkPeeringsOperations(object): + """VirtualNetworkPeeringsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_peerings_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified virtual network peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param virtual_network_peering_name: The name of the virtual network peering. + :type virtual_network_peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkPeering": + """Gets the specified virtual network peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param virtual_network_peering_name: The name of the virtual network peering. + :type virtual_network_peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_peerings_get_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + virtual_network_peering_parameters: "_models.VirtualNetworkPeering", + sync_remote_address_space: Optional[Union[str, "_models.SyncRemoteAddressSpace"]] = None, + **kwargs: Any + ) -> "_models.VirtualNetworkPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_network_peering_parameters, 'VirtualNetworkPeering') + + request = build_virtual_network_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + sync_remote_address_space=sync_remote_address_space, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_name: str, + virtual_network_peering_name: str, + virtual_network_peering_parameters: "_models.VirtualNetworkPeering", + sync_remote_address_space: Optional[Union[str, "_models.SyncRemoteAddressSpace"]] = None, + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkPeering"]: + """Creates or updates a peering in the specified virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :param virtual_network_peering_name: The name of the peering. + :type virtual_network_peering_name: str + :param virtual_network_peering_parameters: Parameters supplied to the create or update virtual + network peering operation. + :type virtual_network_peering_parameters: + ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering + :param sync_remote_address_space: Parameter indicates the intention to sync the peering with + the current address space on the remote vNet after it's updated. Default value is None. + :type sync_remote_address_space: str or + ~azure.mgmt.network.v2022_01_01.models.SyncRemoteAddressSpace + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkPeering or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + virtual_network_peering_name=virtual_network_peering_name, + virtual_network_peering_parameters=virtual_network_peering_parameters, + sync_remote_address_space=sync_remote_address_space, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_network_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkPeeringListResult"]: + """Gets all virtual network peerings in a virtual network. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_name: The name of the virtual network. + :type virtual_network_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkPeeringListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkPeeringListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkPeeringListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_peerings_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_peerings_list_request( + resource_group_name=resource_group_name, + virtual_network_name=virtual_network_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkPeeringListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings"} # type: ignore +class VirtualNetworkGatewaysOperations(object): # pylint: disable=too-many-public-methods + """VirtualNetworkGatewaysOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VirtualNetworkGateway", + **kwargs: Any + ) -> "_models.VirtualNetworkGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetworkGateway') + + request = build_virtual_network_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VirtualNetworkGateway", + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkGateway"]: + """Creates or updates a virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to create or update virtual network gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkGateway": + """Gets the specified virtual network gateway by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified virtual network gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + def _update_tags_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.VirtualNetworkGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualNetworkGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_virtual_network_gateways_update_tags_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + + @distributed_trace + def begin_update_tags( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkGateway"]: + """Updates a virtual network gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to update virtual network gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkGatewayListResult"]: + """Gets all virtual network gateways by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways"} # type: ignore + + @distributed_trace + def list_connections( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkGatewayListConnectionsResult"]: + """Gets all the connections in a virtual network gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkGatewayListConnectionsResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayListConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayListConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateways_list_connections_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_connections.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateways_list_connections_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkGatewayListConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/connections"} # type: ignore + + def _reset_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + gateway_vip: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.VirtualNetworkGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualNetworkGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_reset_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + gateway_vip=gateway_vip, + template_url=self._reset_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset"} # type: ignore + + + @distributed_trace + def begin_reset( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + gateway_vip: Optional[str] = None, + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkGateway"]: + """Resets the primary of the virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param gateway_vip: Virtual network gateway vip address supplied to the begin reset of the + active-active feature enabled gateway. Default value is None. + :type gateway_vip: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._reset_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + gateway_vip=gateway_vip, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset"} # type: ignore + + def _reset_vpn_client_shared_key_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_reset_vpn_client_shared_key_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_vpn_client_shared_key_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _reset_vpn_client_shared_key_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/resetvpnclientsharedkey"} # type: ignore + + + @distributed_trace + def begin_reset_vpn_client_shared_key( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Resets the VPN client shared key of the virtual network gateway in the specified resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._reset_vpn_client_shared_key_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_vpn_client_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/resetvpnclientsharedkey"} # type: ignore + + def _generatevpnclientpackage_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnClientParameters') + + request = build_virtual_network_gateways_generatevpnclientpackage_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generatevpnclientpackage_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generatevpnclientpackage_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage"} # type: ignore + + + @distributed_trace + def begin_generatevpnclientpackage( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> LROPoller[str]: + """Generates VPN client package for P2S client of the virtual network gateway in the specified + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to the generate virtual network gateway VPN client + package operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnClientParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._generatevpnclientpackage_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generatevpnclientpackage.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage"} # type: ignore + + def _generate_vpn_profile_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnClientParameters') + + request = build_virtual_network_gateways_generate_vpn_profile_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generate_vpn_profile_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generate_vpn_profile_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnprofile"} # type: ignore + + + @distributed_trace + def begin_generate_vpn_profile( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnClientParameters", + **kwargs: Any + ) -> LROPoller[str]: + """Generates VPN profile for P2S client of the virtual network gateway in the specified resource + group. Used for IKEV2 and radius based authentication. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Parameters supplied to the generate virtual network gateway VPN client + package operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnClientParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._generate_vpn_profile_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generate_vpn_profile.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnprofile"} # type: ignore + + def _get_vpn_profile_package_url_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_vpn_profile_package_url_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_vpn_profile_package_url_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vpn_profile_package_url_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnprofilepackageurl"} # type: ignore + + + @distributed_trace + def begin_get_vpn_profile_package_url( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> LROPoller[str]: + """Gets pre-generated VPN profile for P2S client of the virtual network gateway in the specified + resource group. The profile needs to be generated first using generateVpnProfile. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_vpn_profile_package_url_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vpn_profile_package_url.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnprofilepackageurl"} # type: ignore + + def _get_bgp_peer_status_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: Optional[str] = None, + **kwargs: Any + ) -> Optional["_models.BgpPeerStatusListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.BgpPeerStatusListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_bgp_peer_status_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + peer=peer, + template_url=self._get_bgp_peer_status_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('BgpPeerStatusListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_bgp_peer_status_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getBgpPeerStatus"} # type: ignore + + + @distributed_trace + def begin_get_bgp_peer_status( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: Optional[str] = None, + **kwargs: Any + ) -> LROPoller["_models.BgpPeerStatusListResult"]: + """The GetBgpPeerStatus operation retrieves the status of all BGP peers. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param peer: The IP address of the peer to retrieve the status of. Default value is None. + :type peer: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either BgpPeerStatusListResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.BgpPeerStatusListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpPeerStatusListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_bgp_peer_status_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + peer=peer, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BgpPeerStatusListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_bgp_peer_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getBgpPeerStatus"} # type: ignore + + @distributed_trace + def supported_vpn_devices( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> str: + """Gets a xml format representation for supported vpn devices. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: str, or the result of cls(response) + :rtype: str + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[str] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_supported_vpn_devices_request( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.supported_vpn_devices.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + supported_vpn_devices.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/supportedvpndevices"} # type: ignore + + + def _get_learned_routes_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Optional["_models.GatewayRouteListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.GatewayRouteListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_learned_routes_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_learned_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_learned_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getLearnedRoutes"} # type: ignore + + + @distributed_trace + def begin_get_learned_routes( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> LROPoller["_models.GatewayRouteListResult"]: + """This operation retrieves a list of routes the virtual network gateway has learned, including + routes learned from BGP peers. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either GatewayRouteListResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.GatewayRouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.GatewayRouteListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_learned_routes_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_learned_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getLearnedRoutes"} # type: ignore + + def _get_advertised_routes_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: str, + **kwargs: Any + ) -> Optional["_models.GatewayRouteListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.GatewayRouteListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_advertised_routes_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + peer=peer, + template_url=self._get_advertised_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_advertised_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getAdvertisedRoutes"} # type: ignore + + + @distributed_trace + def begin_get_advertised_routes( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + peer: str, + **kwargs: Any + ) -> LROPoller["_models.GatewayRouteListResult"]: + """This operation retrieves a list of routes the virtual network gateway is advertising to the + specified peer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param peer: The IP address of the peer. + :type peer: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either GatewayRouteListResult or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.GatewayRouteListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.GatewayRouteListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_advertised_routes_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + peer=peer, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('GatewayRouteListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_advertised_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getAdvertisedRoutes"} # type: ignore + + def _set_vpnclient_ipsec_parameters_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + vpnclient_ipsec_params: "_models.VpnClientIPsecParameters", + **kwargs: Any + ) -> Optional["_models.VpnClientIPsecParameters"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnClientIPsecParameters"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpnclient_ipsec_params, 'VpnClientIPsecParameters') + + request = build_virtual_network_gateways_set_vpnclient_ipsec_parameters_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._set_vpnclient_ipsec_parameters_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _set_vpnclient_ipsec_parameters_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/setvpnclientipsecparameters"} # type: ignore + + + @distributed_trace + def begin_set_vpnclient_ipsec_parameters( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + vpnclient_ipsec_params: "_models.VpnClientIPsecParameters", + **kwargs: Any + ) -> LROPoller["_models.VpnClientIPsecParameters"]: + """The Set VpnclientIpsecParameters operation sets the vpnclient ipsec policy for P2S client of + virtual network gateway in the specified resource group through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param vpnclient_ipsec_params: Parameters supplied to the Begin Set vpnclient ipsec parameters + of Virtual Network Gateway P2S client operation through Network resource provider. + :type vpnclient_ipsec_params: ~azure.mgmt.network.v2022_01_01.models.VpnClientIPsecParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnClientIPsecParameters or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnClientIPsecParameters] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientIPsecParameters"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._set_vpnclient_ipsec_parameters_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + vpnclient_ipsec_params=vpnclient_ipsec_params, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_set_vpnclient_ipsec_parameters.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/setvpnclientipsecparameters"} # type: ignore + + def _get_vpnclient_ipsec_parameters_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> "_models.VpnClientIPsecParameters": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientIPsecParameters"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_vpnclient_ipsec_parameters_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_vpnclient_ipsec_parameters_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vpnclient_ipsec_parameters_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnclientipsecparameters"} # type: ignore + + + @distributed_trace + def begin_get_vpnclient_ipsec_parameters( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> LROPoller["_models.VpnClientIPsecParameters"]: + """The Get VpnclientIpsecParameters operation retrieves information about the vpnclient ipsec + policy for P2S client of virtual network gateway in the specified resource group through + Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The virtual network gateway name. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnClientIPsecParameters or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnClientIPsecParameters] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientIPsecParameters"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_vpnclient_ipsec_parameters_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnClientIPsecParameters', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vpnclient_ipsec_parameters.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnclientipsecparameters"} # type: ignore + + @distributed_trace + def vpn_device_configuration_script( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VpnDeviceScriptParameters", + **kwargs: Any + ) -> str: + """Gets a xml format representation for vpn device configuration script. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection for which the configuration script is generated. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the generate vpn device script operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnDeviceScriptParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: str, or the result of cls(response) + :rtype: str + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[str] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnDeviceScriptParameters') + + request = build_virtual_network_gateways_vpn_device_configuration_script_request( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.vpn_device_configuration_script.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + vpn_device_configuration_script.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/vpndeviceconfigurationscript"} # type: ignore + + + def _start_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnPacketCaptureStartParameters') + else: + _json = None + + request = build_virtual_network_gateways_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/startPacketCapture"} # type: ignore + + + @distributed_trace + def begin_start_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> LROPoller[str]: + """Starts packet capture on virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to start packet + capture on gateway. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._start_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/startPacketCapture"} # type: ignore + + def _stop_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnPacketCaptureStopParameters') + + request = build_virtual_network_gateways_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/stopPacketCapture"} # type: ignore + + + @distributed_trace + def begin_stop_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> LROPoller[str]: + """Stops packet capture on virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to stop packet + capture on gateway. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/stopPacketCapture"} # type: ignore + + def _get_vpnclient_connection_health_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Optional["_models.VpnClientConnectionHealthDetailListResult"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnClientConnectionHealthDetailListResult"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateways_get_vpnclient_connection_health_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_vpnclient_connection_health_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnClientConnectionHealthDetailListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_vpnclient_connection_health_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getVpnClientConnectionHealth"} # type: ignore + + + @distributed_trace + def begin_get_vpnclient_connection_health( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> LROPoller["_models.VpnClientConnectionHealthDetailListResult"]: + """Get VPN client connection health detail per P2S client connection of the virtual network + gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnClientConnectionHealthDetailListResult + or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnClientConnectionHealthDetailListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnClientConnectionHealthDetailListResult"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_vpnclient_connection_health_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnClientConnectionHealthDetailListResult', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_vpnclient_connection_health.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getVpnClientConnectionHealth"} # type: ignore + + def _disconnect_virtual_network_gateway_vpn_connections_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'P2SVpnConnectionRequest') + + request = build_virtual_network_gateways_disconnect_virtual_network_gateway_vpn_connections_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._disconnect_virtual_network_gateway_vpn_connections_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _disconnect_virtual_network_gateway_vpn_connections_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/disconnectVirtualNetworkGatewayVpnConnections"} # type: ignore + + + @distributed_trace + def begin_disconnect_virtual_network_gateway_vpn_connections( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> LROPoller[None]: + """Disconnect vpn connections of virtual network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the virtual network gateway. + :type virtual_network_gateway_name: str + :param request: The parameters are supplied to disconnect vpn connections. + :type request: ~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._disconnect_virtual_network_gateway_vpn_connections_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_disconnect_virtual_network_gateway_vpn_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/disconnectVirtualNetworkGatewayVpnConnections"} # type: ignore +class VirtualNetworkGatewayConnectionsOperations(object): # pylint: disable=too-many-public-methods + """VirtualNetworkGatewayConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VirtualNetworkGatewayConnection", + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetworkGatewayConnection') + + request = build_virtual_network_gateway_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VirtualNetworkGatewayConnection", + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkGatewayConnection"]: + """Creates or updates a virtual network gateway connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the create or update virtual network gateway + connection operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkGatewayConnection or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayConnection": + """Gets the specified virtual network gateway connection by resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkGatewayConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_get_request( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_delete_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified virtual network Gateway connection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + def _update_tags_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.VirtualNetworkGatewayConnection"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VirtualNetworkGatewayConnection"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_virtual_network_gateway_connections_update_tags_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + + @distributed_trace + def begin_update_tags( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkGatewayConnection"]: + """Updates a virtual network gateway connection tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to update virtual network gateway connection tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkGatewayConnection or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGatewayConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"} # type: ignore + + def _set_shared_key_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionSharedKey", + **kwargs: Any + ) -> "_models.ConnectionSharedKey": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionSharedKey"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectionSharedKey') + + request = build_virtual_network_gateway_connections_set_shared_key_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._set_shared_key_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _set_shared_key_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"} # type: ignore + + + @distributed_trace + def begin_set_shared_key( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionSharedKey", + **kwargs: Any + ) -> LROPoller["_models.ConnectionSharedKey"]: + """The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway + connection shared key for passed virtual network gateway connection in the specified resource + group through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The virtual network gateway connection name. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the Begin Set Virtual Network Gateway connection + Shared key operation throughNetwork resource provider. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectionSharedKey + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ConnectionSharedKey or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionSharedKey] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionSharedKey"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._set_shared_key_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_set_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"} # type: ignore + + @distributed_trace + def get_shared_key( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> "_models.ConnectionSharedKey": + """The Get VirtualNetworkGatewayConnectionSharedKey operation retrieves information about the + specified virtual network gateway connection shared key through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The virtual network gateway connection shared + key name. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ConnectionSharedKey, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ConnectionSharedKey + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionSharedKey"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_get_shared_key_request( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get_shared_key.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ConnectionSharedKey', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkGatewayConnectionListResult"]: + """The List VirtualNetworkGatewayConnections operation retrieves all the virtual network gateways + connections created. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkGatewayConnectionListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayConnectionListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayConnectionListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateway_connections_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateway_connections_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkGatewayConnectionListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections"} # type: ignore + + def _reset_shared_key_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionResetSharedKey", + **kwargs: Any + ) -> Optional["_models.ConnectionResetSharedKey"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ConnectionResetSharedKey"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'ConnectionResetSharedKey') + + request = build_virtual_network_gateway_connections_reset_shared_key_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._reset_shared_key_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ConnectionResetSharedKey', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_shared_key_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset"} # type: ignore + + + @distributed_trace + def begin_reset_shared_key( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.ConnectionResetSharedKey", + **kwargs: Any + ) -> LROPoller["_models.ConnectionResetSharedKey"]: + """The VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway + connection shared key for passed virtual network gateway connection in the specified resource + group through Network resource provider. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The virtual network gateway connection reset + shared key Name. + :type virtual_network_gateway_connection_name: str + :param parameters: Parameters supplied to the begin reset virtual network gateway connection + shared key operation through network resource provider. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.ConnectionResetSharedKey + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ConnectionResetSharedKey or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ConnectionResetSharedKey] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ConnectionResetSharedKey"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._reset_shared_key_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ConnectionResetSharedKey', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_shared_key.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset"} # type: ignore + + def _start_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnPacketCaptureStartParameters') + else: + _json = None + + request = build_virtual_network_gateway_connections_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture"} # type: ignore + + + @distributed_trace + def begin_start_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: Optional["_models.VpnPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> LROPoller[str]: + """Starts packet capture on virtual network gateway connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to start packet + capture on gateway connection. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._start_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture"} # type: ignore + + def _stop_packet_capture_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VpnPacketCaptureStopParameters') + + request = build_virtual_network_gateway_connections_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture"} # type: ignore + + + @distributed_trace + def begin_stop_packet_capture( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + parameters: "_models.VpnPacketCaptureStopParameters", + **kwargs: Any + ) -> LROPoller[str]: + """Stops packet capture on virtual network gateway connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + Connection. + :type virtual_network_gateway_connection_name: str + :param parameters: Virtual network gateway packet capture parameters supplied to stop packet + capture on gateway connection. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture"} # type: ignore + + def _get_ike_sas_initial( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_get_ike_sas_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_ike_sas_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_ike_sas_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/getikesas"} # type: ignore + + + @distributed_trace + def begin_get_ike_sas( + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> LROPoller[str]: + """Lists IKE Security Associations for the virtual network gateway connection in the specified + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + Connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_ike_sas_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_ike_sas.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/getikesas"} # type: ignore + + def _reset_connection_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_connections_reset_connection_request_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_connection_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _reset_connection_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/resetconnection"} # type: ignore + + + @distributed_trace + def begin_reset_connection( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Resets the virtual network gateway connection specified. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_network_gateway_connection_name: The name of the virtual network gateway + Connection. + :type virtual_network_gateway_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._reset_connection_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_connection_name=virtual_network_gateway_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/resetconnection"} # type: ignore +class LocalNetworkGatewaysOperations(object): + """LocalNetworkGatewaysOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + local_network_gateway_name: str, + parameters: "_models.LocalNetworkGateway", + **kwargs: Any + ) -> "_models.LocalNetworkGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'LocalNetworkGateway') + + request = build_local_network_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + local_network_gateway_name: str, + parameters: "_models.LocalNetworkGateway", + **kwargs: Any + ) -> LROPoller["_models.LocalNetworkGateway"]: + """Creates or updates a local network gateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :param parameters: Parameters supplied to the create or update local network gateway operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either LocalNetworkGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + local_network_gateway_name: str, + **kwargs: Any + ) -> "_models.LocalNetworkGateway": + """Gets the specified local network gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LocalNetworkGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_local_network_gateways_get_request( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + local_network_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_local_network_gateways_delete_request_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + local_network_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified local network gateway. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + local_network_gateway_name: str, + parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.LocalNetworkGateway": + """Updates a local network gateway tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param local_network_gateway_name: The name of the local network gateway. + :type local_network_gateway_name: str + :param parameters: Parameters supplied to update local network gateway tags. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: LocalNetworkGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.LocalNetworkGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'TagsObject') + + request = build_local_network_gateways_update_tags_request( + resource_group_name=resource_group_name, + local_network_gateway_name=local_network_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('LocalNetworkGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.LocalNetworkGatewayListResult"]: + """Gets all the local network gateways in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either LocalNetworkGatewayListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.LocalNetworkGatewayListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.LocalNetworkGatewayListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_local_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_local_network_gateways_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("LocalNetworkGatewayListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways"} # type: ignore +class VirtualNetworkGatewayNatRulesOperations(object): + """VirtualNetworkGatewayNatRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayNatRule": + """Retrieves the details of a nat rule. + + :param resource_group_name: The resource group name of the Virtual Network Gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkGatewayNatRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_nat_rules_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VirtualNetworkGatewayNatRule", + **kwargs: Any + ) -> "_models.VirtualNetworkGatewayNatRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(nat_rule_parameters, 'VirtualNetworkGatewayNatRule') + + request = build_virtual_network_gateway_nat_rules_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VirtualNetworkGatewayNatRule", + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkGatewayNatRule"]: + """Creates a nat rule to a scalable virtual network gateway if it doesn't exist else updates the + existing nat rules. + + :param resource_group_name: The resource group name of the Virtual Network Gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :param nat_rule_parameters: Parameters supplied to create or Update a Nat Rule. + :type nat_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkGatewayNatRule or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkGatewayNatRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkGatewayNatRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + nat_rule_parameters=nat_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkGatewayNatRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_gateway_nat_rules_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_network_gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a nat rule. + + :param resource_group_name: The resource group name of the Virtual Network Gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}"} # type: ignore + + @distributed_trace + def list_by_virtual_network_gateway( + self, + resource_group_name: str, + virtual_network_gateway_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVirtualNetworkGatewayNatRulesResult"]: + """Retrieves all nat rules for a particular virtual network gateway. + + :param resource_group_name: The resource group name of the virtual network gateway. + :type resource_group_name: str + :param virtual_network_gateway_name: The name of the gateway. + :type virtual_network_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualNetworkGatewayNatRulesResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualNetworkGatewayNatRulesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualNetworkGatewayNatRulesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_gateway_nat_rules_list_by_virtual_network_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + template_url=self.list_by_virtual_network_gateway.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_gateway_nat_rules_list_by_virtual_network_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_network_gateway_name=virtual_network_gateway_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualNetworkGatewayNatRulesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_virtual_network_gateway.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules"} # type: ignore +class VirtualNetworkTapsOperations(object): + """VirtualNetworkTapsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + tap_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_taps_delete_request_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + tap_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified virtual network tap. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of the virtual network tap. + :type tap_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + tap_name: str, + **kwargs: Any + ) -> "_models.VirtualNetworkTap": + """Gets information about the specified virtual network tap. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of virtual network tap. + :type tap_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkTap, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_network_taps_get_request( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + tap_name: str, + parameters: "_models.VirtualNetworkTap", + **kwargs: Any + ) -> "_models.VirtualNetworkTap": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualNetworkTap') + + request = build_virtual_network_taps_create_or_update_request_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + tap_name: str, + parameters: "_models.VirtualNetworkTap", + **kwargs: Any + ) -> LROPoller["_models.VirtualNetworkTap"]: + """Creates or updates a Virtual Network Tap. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of the virtual network tap. + :type tap_name: str + :param parameters: Parameters supplied to the create or update virtual network tap operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualNetworkTap or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + tap_name=tap_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + tap_name: str, + tap_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualNetworkTap": + """Updates an VirtualNetworkTap tags. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param tap_name: The name of the tap. + :type tap_name: str + :param tap_parameters: Parameters supplied to update VirtualNetworkTap tags. + :type tap_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualNetworkTap, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTap + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTap"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(tap_parameters, 'TagsObject') + + request = build_virtual_network_taps_update_tags_request( + resource_group_name=resource_group_name, + tap_name=tap_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualNetworkTap', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}"} # type: ignore + + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkTapListResult"]: + """Gets all the VirtualNetworkTaps in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkTapListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTapListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTapListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_taps_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_taps_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkTapListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworkTaps"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualNetworkTapListResult"]: + """Gets all the VirtualNetworkTaps in a subscription. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualNetworkTapListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualNetworkTapListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualNetworkTapListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_network_taps_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_network_taps_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualNetworkTapListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps"} # type: ignore +class VirtualRoutersOperations(object): + """VirtualRoutersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_routers_delete_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_router_name: str, + expand: Optional[str] = None, + **kwargs: Any + ) -> "_models.VirtualRouter": + """Gets the specified Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param expand: Expands referenced resources. Default value is None. + :type expand: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualRouter, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualRouter + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_routers_get_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + expand=expand, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualRouter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_router_name: str, + parameters: "_models.VirtualRouter", + **kwargs: Any + ) -> "_models.VirtualRouter": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouter"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualRouter') + + request = build_virtual_routers_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualRouter', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualRouter', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_router_name: str, + parameters: "_models.VirtualRouter", + **kwargs: Any + ) -> LROPoller["_models.VirtualRouter"]: + """Creates or updates the specified Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param parameters: Parameters supplied to the create or update Virtual Router. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualRouter + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualRouter or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualRouter] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouter"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualRouter', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualRouterListResult"]: + """Lists all Virtual Routers in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualRouterListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualRouterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_routers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_routers_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualRouterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.VirtualRouterListResult"]: + """Gets all the Virtual Routers in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualRouterListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualRouterListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_routers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_routers_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualRouterListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualRouters"} # type: ignore +class VirtualRouterPeeringsOperations(object): + """VirtualRouterPeeringsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_router_peerings_delete_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified peering from a Virtual Router. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param peering_name: The name of the peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + **kwargs: Any + ) -> "_models.VirtualRouterPeering": + """Gets the specified Virtual Router Peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param peering_name: The name of the Virtual Router Peering. + :type peering_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualRouterPeering, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_router_peerings_get_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + parameters: "_models.VirtualRouterPeering", + **kwargs: Any + ) -> "_models.VirtualRouterPeering": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeering"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'VirtualRouterPeering') + + request = build_virtual_router_peerings_create_or_update_request_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_router_name: str, + peering_name: str, + parameters: "_models.VirtualRouterPeering", + **kwargs: Any + ) -> LROPoller["_models.VirtualRouterPeering"]: + """Creates or updates the specified Virtual Router Peering. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :param peering_name: The name of the Virtual Router Peering. + :type peering_name: str + :param parameters: Parameters supplied to the create or update Virtual Router Peering + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualRouterPeering or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeering] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeering"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + peering_name=peering_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualRouterPeering', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_router_name: str, + **kwargs: Any + ) -> Iterable["_models.VirtualRouterPeeringListResult"]: + """Lists all Virtual Router Peerings in a Virtual Router resource. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param virtual_router_name: The name of the Virtual Router. + :type virtual_router_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either VirtualRouterPeeringListResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.VirtualRouterPeeringListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualRouterPeeringListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_router_peerings_list_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_router_peerings_list_request( + resource_group_name=resource_group_name, + virtual_router_name=virtual_router_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("VirtualRouterPeeringListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings"} # type: ignore +class VirtualWansOperations(object): + """VirtualWansOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> "_models.VirtualWAN": + """Retrieves the details of a VirtualWAN. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being retrieved. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualWAN, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualWAN + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_wans_get_request( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_wan_name: str, + wan_parameters: "_models.VirtualWAN", + **kwargs: Any + ) -> "_models.VirtualWAN": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(wan_parameters, 'VirtualWAN') + + request = build_virtual_wans_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_wan_name: str, + wan_parameters: "_models.VirtualWAN", + **kwargs: Any + ) -> LROPoller["_models.VirtualWAN"]: + """Creates a VirtualWAN resource if it doesn't exist else updates the existing VirtualWAN. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being created or updated. + :type virtual_wan_name: str + :param wan_parameters: Parameters supplied to create or update VirtualWAN. + :type wan_parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualWAN + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualWAN or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualWAN] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + wan_parameters=wan_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualWAN', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + virtual_wan_name: str, + wan_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualWAN": + """Updates a VirtualWAN tags. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being updated. + :type virtual_wan_name: str + :param wan_parameters: Parameters supplied to Update VirtualWAN tags. + :type wan_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualWAN, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualWAN + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualWAN"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(wan_parameters, 'TagsObject') + + request = build_virtual_wans_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualWAN', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_wans_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a VirtualWAN. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN being deleted. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVirtualWANsResult"]: + """Lists all the VirtualWANs in a resource group. + + :param resource_group_name: The resource group name of the VirtualWan. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualWANsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualWANsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualWANsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_wans_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_wans_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualWANsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ListVirtualWANsResult"]: + """Lists all the VirtualWANs in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualWANsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualWANsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualWANsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_wans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_wans_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualWANsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualWans"} # type: ignore +class VpnSitesOperations(object): + """VpnSitesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> "_models.VpnSite": + """Retrieves the details of a VPN site. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being retrieved. + :type vpn_site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSite, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSite + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_sites_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_parameters: "_models.VpnSite", + **kwargs: Any + ) -> "_models.VpnSite": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_site_parameters, 'VpnSite') + + request = build_vpn_sites_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnSite', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_parameters: "_models.VpnSite", + **kwargs: Any + ) -> LROPoller["_models.VpnSite"]: + """Creates a VpnSite resource if it doesn't exist else updates the existing VpnSite. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being created or updated. + :type vpn_site_name: str + :param vpn_site_parameters: Parameters supplied to create or update VpnSite. + :type vpn_site_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnSite + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnSite or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnSite] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + vpn_site_parameters=vpn_site_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnSite', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VpnSite": + """Updates VpnSite tags. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being updated. + :type vpn_site_name: str + :param vpn_site_parameters: Parameters supplied to update VpnSite tags. + :type vpn_site_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSite, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSite + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSite"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_site_parameters, 'TagsObject') + + request = build_vpn_sites_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSite', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_sites_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a VpnSite. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite being deleted. + :type vpn_site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnSitesResult"]: + """Lists all the vpnSites in a resource group. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSitesResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSitesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSitesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_sites_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_sites_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSitesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ListVpnSitesResult"]: + """Lists all the VpnSites in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSitesResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSitesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSitesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_sites_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_sites_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSitesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnSites"} # type: ignore +class VpnSiteLinksOperations(object): + """VpnSiteLinksOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + vpn_site_name: str, + vpn_site_link_name: str, + **kwargs: Any + ) -> "_models.VpnSiteLink": + """Retrieves the details of a VPN site link. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite. + :type vpn_site_name: str + :param vpn_site_link_name: The name of the VpnSiteLink being retrieved. + :type vpn_site_link_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSiteLink, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSiteLink + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSiteLink"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_site_links_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + vpn_site_link_name=vpn_site_link_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSiteLink', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks/{vpnSiteLinkName}"} # type: ignore + + + @distributed_trace + def list_by_vpn_site( + self, + resource_group_name: str, + vpn_site_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnSiteLinksResult"]: + """Lists all the vpnSiteLinks in a resource group for a vpn site. + + :param resource_group_name: The resource group name of the VpnSite. + :type resource_group_name: str + :param vpn_site_name: The name of the VpnSite. + :type vpn_site_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSiteLinksResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSiteLinksResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSiteLinksResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_site_links_list_by_vpn_site_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=self.list_by_vpn_site.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_site_links_list_by_vpn_site_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_site_name=vpn_site_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSiteLinksResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_vpn_site.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks"} # type: ignore +class VpnSitesConfigurationOperations(object): + """VpnSitesConfigurationOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _download_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + request: "_models.GetVpnSitesConfigurationRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'GetVpnSitesConfigurationRequest') + + request = build_vpn_sites_configuration_download_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._download_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _download_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnConfiguration"} # type: ignore + + + @distributed_trace + def begin_download( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_wan_name: str, + request: "_models.GetVpnSitesConfigurationRequest", + **kwargs: Any + ) -> LROPoller[None]: + """Gives the sas-url to download the configurations for vpn-sites in a resource group. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN for which configuration of all vpn-sites is + needed. + :type virtual_wan_name: str + :param request: Parameters supplied to download vpn-sites configuration. + :type request: ~azure.mgmt.network.v2022_01_01.models.GetVpnSitesConfigurationRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._download_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_download.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnConfiguration"} # type: ignore +class VpnServerConfigurationsOperations(object): + """VpnServerConfigurationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> "_models.VpnServerConfiguration": + """Retrieves the details of a VpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being retrieved. + :type vpn_server_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnServerConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_server_configurations_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + vpn_server_configuration_parameters: "_models.VpnServerConfiguration", + **kwargs: Any + ) -> "_models.VpnServerConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_server_configuration_parameters, 'VpnServerConfiguration') + + request = build_vpn_server_configurations_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + vpn_server_configuration_parameters: "_models.VpnServerConfiguration", + **kwargs: Any + ) -> LROPoller["_models.VpnServerConfiguration"]: + """Creates a VpnServerConfiguration resource if it doesn't exist else updates the existing + VpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being created or + updated. + :type vpn_server_configuration_name: str + :param vpn_server_configuration_parameters: Parameters supplied to create or update + VpnServerConfiguration. + :type vpn_server_configuration_parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnServerConfiguration or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + vpn_server_configuration_parameters=vpn_server_configuration_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + vpn_server_configuration_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VpnServerConfiguration": + """Updates VpnServerConfiguration tags. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being updated. + :type vpn_server_configuration_name: str + :param vpn_server_configuration_parameters: Parameters supplied to update + VpnServerConfiguration tags. + :type vpn_server_configuration_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnServerConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnServerConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_server_configuration_parameters, 'TagsObject') + + request = build_vpn_server_configurations_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnServerConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_server_configurations_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a VpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration being deleted. + :type vpn_server_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnServerConfigurationsResult"]: + """Lists all the vpnServerConfigurations in a resource group. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnServerConfigurationsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnServerConfigurationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnServerConfigurationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_server_configurations_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_server_configurations_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnServerConfigurationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ListVpnServerConfigurationsResult"]: + """Lists all the VpnServerConfigurations in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnServerConfigurationsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnServerConfigurationsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnServerConfigurationsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_server_configurations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_server_configurations_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnServerConfigurationsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnServerConfigurations"} # type: ignore +class ConfigurationPolicyGroupsOperations(object): + """ConfigurationPolicyGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + vpn_server_configuration_policy_group_parameters: "_models.VpnServerConfigurationPolicyGroup", + **kwargs: Any + ) -> "_models.VpnServerConfigurationPolicyGroup": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationPolicyGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_server_configuration_policy_group_parameters, 'VpnServerConfigurationPolicyGroup') + + request = build_configuration_policy_groups_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + vpn_server_configuration_policy_group_parameters: "_models.VpnServerConfigurationPolicyGroup", + **kwargs: Any + ) -> LROPoller["_models.VpnServerConfigurationPolicyGroup"]: + """Creates a ConfigurationPolicyGroup if it doesn't exist else updates the existing one. + + :param resource_group_name: The resource group name of the ConfigurationPolicyGroup. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :param configuration_policy_group_name: The name of the ConfigurationPolicyGroup. + :type configuration_policy_group_name: str + :param vpn_server_configuration_policy_group_parameters: Parameters supplied to create or + update a VpnServerConfiguration PolicyGroup. + :type vpn_server_configuration_policy_group_parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnServerConfigurationPolicyGroup or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationPolicyGroup"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + vpn_server_configuration_policy_group_parameters=vpn_server_configuration_policy_group_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_configuration_policy_groups_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a ConfigurationPolicyGroup. + + :param resource_group_name: The resource group name of the ConfigurationPolicyGroup. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :param configuration_policy_group_name: The name of the ConfigurationPolicyGroup. + :type configuration_policy_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + configuration_policy_group_name: str, + **kwargs: Any + ) -> "_models.VpnServerConfigurationPolicyGroup": + """Retrieves the details of a ConfigurationPolicyGroup. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :param configuration_policy_group_name: The name of the ConfigurationPolicyGroup being + retrieved. + :type configuration_policy_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnServerConfigurationPolicyGroup, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationPolicyGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationPolicyGroup"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_configuration_policy_groups_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + configuration_policy_group_name=configuration_policy_group_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnServerConfigurationPolicyGroup', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups/{configurationPolicyGroupName}"} # type: ignore + + + @distributed_trace + def list_by_vpn_server_configuration( + self, + resource_group_name: str, + vpn_server_configuration_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnServerConfigurationPolicyGroupsResult"]: + """Lists all the configurationPolicyGroups in a resource group for a vpnServerConfiguration. + + :param resource_group_name: The resource group name of the VpnServerConfiguration. + :type resource_group_name: str + :param vpn_server_configuration_name: The name of the VpnServerConfiguration. + :type vpn_server_configuration_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnServerConfigurationPolicyGroupsResult or + the result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnServerConfigurationPolicyGroupsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnServerConfigurationPolicyGroupsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_configuration_policy_groups_list_by_vpn_server_configuration_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=self.list_by_vpn_server_configuration.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_configuration_policy_groups_list_by_vpn_server_configuration_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + vpn_server_configuration_name=vpn_server_configuration_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnServerConfigurationPolicyGroupsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_vpn_server_configuration.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}/configurationPolicyGroups"} # type: ignore +class VirtualHubsOperations(object): + """VirtualHubsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> "_models.VirtualHub": + """Retrieves the details of a VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualHub, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualHub + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hubs_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + virtual_hub_parameters: "_models.VirtualHub", + **kwargs: Any + ) -> "_models.VirtualHub": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_hub_parameters, 'VirtualHub') + + request = build_virtual_hubs_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + virtual_hub_parameters: "_models.VirtualHub", + **kwargs: Any + ) -> LROPoller["_models.VirtualHub"]: + """Creates a VirtualHub resource if it doesn't exist else updates the existing VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param virtual_hub_parameters: Parameters supplied to create or update VirtualHub. + :type virtual_hub_parameters: ~azure.mgmt.network.v2022_01_01.models.VirtualHub + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualHub or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualHub] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + virtual_hub_parameters=virtual_hub_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualHub', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + @distributed_trace + def update_tags( + self, + resource_group_name: str, + virtual_hub_name: str, + virtual_hub_parameters: "_models.TagsObject", + **kwargs: Any + ) -> "_models.VirtualHub": + """Updates VirtualHub tags. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param virtual_hub_parameters: Parameters supplied to update VirtualHub tags. + :type virtual_hub_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualHub, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualHub + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHub"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_hub_parameters, 'TagsObject') + + request = build_virtual_hubs_update_tags_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualHub', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hubs_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVirtualHubsResult"]: + """Lists all the VirtualHubs in a resource group. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hubs_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hubs_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ListVirtualHubsResult"]: + """Lists all the VirtualHubs in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hubs_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hubs_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualHubs"} # type: ignore + + def _get_effective_virtual_hub_routes_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + effective_routes_parameters: Optional["_models.EffectiveRoutesParameters"] = None, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if effective_routes_parameters is not None: + _json = self._serialize.body(effective_routes_parameters, 'EffectiveRoutesParameters') + else: + _json = None + + request = build_virtual_hubs_get_effective_virtual_hub_routes_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_effective_virtual_hub_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _get_effective_virtual_hub_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/effectiveRoutes"} # type: ignore + + + @distributed_trace + def begin_get_effective_virtual_hub_routes( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + effective_routes_parameters: Optional["_models.EffectiveRoutesParameters"] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Gets the effective routes configured for the Virtual Hub resource or the specified resource . + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param effective_routes_parameters: Parameters supplied to get the effective routes for a + specific resource. Default value is None. + :type effective_routes_parameters: + ~azure.mgmt.network.v2022_01_01.models.EffectiveRoutesParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_effective_virtual_hub_routes_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + effective_routes_parameters=effective_routes_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_effective_virtual_hub_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/effectiveRoutes"} # type: ignore +class HubVirtualNetworkConnectionsOperations(object): + """HubVirtualNetworkConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + hub_virtual_network_connection_parameters: "_models.HubVirtualNetworkConnection", + **kwargs: Any + ) -> "_models.HubVirtualNetworkConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubVirtualNetworkConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(hub_virtual_network_connection_parameters, 'HubVirtualNetworkConnection') + + request = build_hub_virtual_network_connections_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + hub_virtual_network_connection_parameters: "_models.HubVirtualNetworkConnection", + **kwargs: Any + ) -> LROPoller["_models.HubVirtualNetworkConnection"]: + """Creates a hub virtual network connection if it doesn't exist else updates the existing one. + + :param resource_group_name: The resource group name of the HubVirtualNetworkConnection. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the HubVirtualNetworkConnection. + :type connection_name: str + :param hub_virtual_network_connection_parameters: Parameters supplied to create or update a hub + virtual network connection. + :type hub_virtual_network_connection_parameters: + ~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either HubVirtualNetworkConnection or the result + of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubVirtualNetworkConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + hub_virtual_network_connection_parameters=hub_virtual_network_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_virtual_network_connections_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a HubVirtualNetworkConnection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the HubVirtualNetworkConnection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.HubVirtualNetworkConnection": + """Retrieves the details of a HubVirtualNetworkConnection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HubVirtualNetworkConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.HubVirtualNetworkConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubVirtualNetworkConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_virtual_network_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('HubVirtualNetworkConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> Iterable["_models.ListHubVirtualNetworkConnectionsResult"]: + """Retrieves the details of all HubVirtualNetworkConnections. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListHubVirtualNetworkConnectionsResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListHubVirtualNetworkConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListHubVirtualNetworkConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_hub_virtual_network_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_hub_virtual_network_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListHubVirtualNetworkConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections"} # type: ignore +class VpnGatewaysOperations(object): + """VpnGatewaysOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> "_models.VpnGateway": + """Retrieves the details of a virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_gateways_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.VpnGateway", + **kwargs: Any + ) -> "_models.VpnGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_gateway_parameters, 'VpnGateway') + + request = build_vpn_gateways_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.VpnGateway", + **kwargs: Any + ) -> LROPoller["_models.VpnGateway"]: + """Creates a virtual wan vpn gateway if it doesn't exist else updates the existing gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_gateway_parameters: Parameters supplied to create or Update a virtual wan vpn + gateway. + :type vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnGateway or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_gateway_parameters=vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + def _update_tags_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.VpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_gateway_parameters, 'TagsObject') + + request = build_vpn_gateways_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace + def begin_update_tags( + self, + resource_group_name: str, + gateway_name: str, + vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> LROPoller["_models.VpnGateway"]: + """Updates virtual wan vpn gateway tags. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_gateway_parameters: Parameters supplied to update a virtual wan vpn gateway tags. + :type vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnGateway or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_gateway_parameters=vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_gateways_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}"} # type: ignore + + def _reset_initial( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Optional["_models.VpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_gateways_reset_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/reset"} # type: ignore + + + @distributed_trace + def begin_reset( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> LROPoller["_models.VpnGateway"]: + """Resets the primary of the vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnGateway or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._reset_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/reset"} # type: ignore + + def _start_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnGatewayPacketCaptureStartParameters') + else: + _json = None + + request = build_vpn_gateways_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/startpacketcapture"} # type: ignore + + + @distributed_trace + def begin_start_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> LROPoller[str]: + """Starts packet capture on vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param parameters: Vpn gateway packet capture parameters supplied to start packet capture on + vpn gateway. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._start_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/startpacketcapture"} # type: ignore + + def _stop_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnGatewayPacketCaptureStopParameters') + else: + _json = None + + request = build_vpn_gateways_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/stoppacketcapture"} # type: ignore + + + @distributed_trace + def begin_stop_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + parameters: Optional["_models.VpnGatewayPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> LROPoller[str]: + """Stops packet capture on vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param parameters: Vpn gateway packet capture parameters supplied to stop packet capture on vpn + gateway. Default value is None. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/stoppacketcapture"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnGatewaysResult"]: + """Lists all the VpnGateways in a resource group. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ListVpnGatewaysResult"]: + """Lists all the VpnGateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnGateways"} # type: ignore +class VpnLinkConnectionsOperations(object): + """VpnLinkConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _reset_connection_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_link_connections_reset_connection_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + template_url=self._reset_connection_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _reset_connection_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/resetconnection"} # type: ignore + + + @distributed_trace + def begin_reset_connection( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Resets the VpnLink connection specified. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :param link_connection_name: The name of the vpn link connection. + :type link_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._reset_connection_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/resetconnection"} # type: ignore + + def _get_ike_sas_initial( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_link_connections_get_ike_sas_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + template_url=self._get_ike_sas_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_ike_sas_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/getikesas"} # type: ignore + + + @distributed_trace + def begin_get_ike_sas( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> LROPoller[str]: + """Lists IKE Security Associations for Vpn Site Link Connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :param link_connection_name: The name of the vpn link connection. + :type link_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_ike_sas_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_ike_sas.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}/getikesas"} # type: ignore + + @distributed_trace + def list_by_vpn_connection( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnSiteLinkConnectionsResult"]: + """Retrieves all vpn site link connections for a particular virtual wan vpn gateway vpn + connection. + + :param resource_group_name: The resource group name of the vpn gateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnSiteLinkConnectionsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnSiteLinkConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnSiteLinkConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_link_connections_list_by_vpn_connection_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.list_by_vpn_connection.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_link_connections_list_by_vpn_connection_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnSiteLinkConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_vpn_connection.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections"} # type: ignore +class VpnConnectionsOperations(object): + """VpnConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.VpnConnection": + """Retrieves the details of a vpn connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + vpn_connection_parameters: "_models.VpnConnection", + **kwargs: Any + ) -> "_models.VpnConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(vpn_connection_parameters, 'VpnConnection') + + request = build_vpn_connections_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + vpn_connection_parameters: "_models.VpnConnection", + **kwargs: Any + ) -> LROPoller["_models.VpnConnection"]: + """Creates a vpn connection to a scalable vpn gateway if it doesn't exist else updates the + existing connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :param vpn_connection_parameters: Parameters supplied to create or Update a VPN Connection. + :type vpn_connection_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnConnection or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + vpn_connection_parameters=vpn_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_connections_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a vpn connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}"} # type: ignore + + def _start_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnConnectionPacketCaptureStartParameters') + else: + _json = None + + request = build_vpn_connections_start_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._start_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _start_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/startpacketcapture"} # type: ignore + + + @distributed_trace + def begin_start_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStartParameters"] = None, + **kwargs: Any + ) -> LROPoller[str]: + """Starts packet capture on Vpn connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_connection_name: The name of the vpn connection. + :type vpn_connection_name: str + :param parameters: Vpn Connection packet capture parameters supplied to start packet capture on + gateway connection. Default value is None. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnConnectionPacketCaptureStartParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._start_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_start_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/startpacketcapture"} # type: ignore + + def _stop_packet_capture_initial( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> Optional[str]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional[str]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + if parameters is not None: + _json = self._serialize.body(parameters, 'VpnConnectionPacketCaptureStopParameters') + else: + _json = None + + request = build_vpn_connections_stop_packet_capture_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._stop_packet_capture_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('str', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _stop_packet_capture_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/stoppacketcapture"} # type: ignore + + + @distributed_trace + def begin_stop_packet_capture( + self, + resource_group_name: str, + gateway_name: str, + vpn_connection_name: str, + parameters: Optional["_models.VpnConnectionPacketCaptureStopParameters"] = None, + **kwargs: Any + ) -> LROPoller[str]: + """Stops packet capture on Vpn connection in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param vpn_connection_name: The name of the vpn connection. + :type vpn_connection_name: str + :param parameters: Vpn Connection packet capture parameters supplied to stop packet capture on + gateway connection. Default value is None. + :type parameters: + ~azure.mgmt.network.v2022_01_01.models.VpnConnectionPacketCaptureStopParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either str or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[str] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._stop_packet_capture_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + vpn_connection_name=vpn_connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('str', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_stop_packet_capture.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{vpnConnectionName}/stoppacketcapture"} # type: ignore + + @distributed_trace + def list_by_vpn_gateway( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnConnectionsResult"]: + """Retrieves all vpn connections for a particular virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnConnectionsResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnConnectionsResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnConnectionsResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_vpn_connections_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.list_by_vpn_gateway.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_vpn_connections_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnConnectionsResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_vpn_gateway.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections"} # type: ignore +class VpnSiteLinkConnectionsOperations(object): + """VpnSiteLinkConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + gateway_name: str, + connection_name: str, + link_connection_name: str, + **kwargs: Any + ) -> "_models.VpnSiteLinkConnection": + """Retrieves the details of a vpn site link connection. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param connection_name: The name of the vpn connection. + :type connection_name: str + :param link_connection_name: The name of the vpn connection. + :type link_connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnSiteLinkConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnSiteLinkConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnSiteLinkConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_site_link_connections_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + connection_name=connection_name, + link_connection_name=link_connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnSiteLinkConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}"} # type: ignore + +class NatRulesOperations(object): + """NatRulesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> "_models.VpnGatewayNatRule": + """Retrieves the details of a nat ruleGet. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VpnGatewayNatRule, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_rules_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VpnGatewayNatRule", + **kwargs: Any + ) -> "_models.VpnGatewayNatRule": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGatewayNatRule"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(nat_rule_parameters, 'VpnGatewayNatRule') + + request = build_nat_rules_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + nat_rule_parameters: "_models.VpnGatewayNatRule", + **kwargs: Any + ) -> LROPoller["_models.VpnGatewayNatRule"]: + """Creates a nat rule to a scalable vpn gateway if it doesn't exist else updates the existing nat + rules. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :param nat_rule_parameters: Parameters supplied to create or Update a Nat Rule. + :type nat_rule_parameters: ~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnGatewayNatRule or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnGatewayNatRule] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnGatewayNatRule"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + nat_rule_parameters=nat_rule_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnGatewayNatRule', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_nat_rules_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + nat_rule_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a nat rule. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param nat_rule_name: The name of the nat rule. + :type nat_rule_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + nat_rule_name=nat_rule_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules/{natRuleName}"} # type: ignore + + @distributed_trace + def list_by_vpn_gateway( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVpnGatewayNatRulesResult"]: + """Retrieves all nat rules for a particular virtual wan vpn gateway. + + :param resource_group_name: The resource group name of the VpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVpnGatewayNatRulesResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVpnGatewayNatRulesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVpnGatewayNatRulesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_nat_rules_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.list_by_vpn_gateway.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_nat_rules_list_by_vpn_gateway_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVpnGatewayNatRulesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_vpn_gateway.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/natRules"} # type: ignore +class P2SVpnGatewaysOperations(object): + """P2SVpnGatewaysOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> "_models.P2SVpnGateway": + """Retrieves the details of a virtual wan p2s vpn gateway. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: P2SVpnGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.P2SVpnGateway", + **kwargs: Any + ) -> "_models.P2SVpnGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(p2_s_vpn_gateway_parameters, 'P2SVpnGateway') + + request = build_p2_svpn_gateways_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.P2SVpnGateway", + **kwargs: Any + ) -> LROPoller["_models.P2SVpnGateway"]: + """Creates a virtual wan p2s vpn gateway if it doesn't exist else updates the existing gateway. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param p2_s_vpn_gateway_parameters: Parameters supplied to create or Update a virtual wan p2s + vpn gateway. + :type p2_s_vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + p2_s_vpn_gateway_parameters=p2_s_vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + def _update_tags_initial( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.P2SVpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(p2_s_vpn_gateway_parameters, 'TagsObject') + + request = build_p2_svpn_gateways_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace + def begin_update_tags( + self, + resource_group_name: str, + gateway_name: str, + p2_s_vpn_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> LROPoller["_models.P2SVpnGateway"]: + """Updates virtual wan p2s vpn gateway tags. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :param p2_s_vpn_gateway_parameters: Parameters supplied to update a virtual wan p2s vpn gateway + tags. + :type p2_s_vpn_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + p2_s_vpn_gateway_parameters=p2_s_vpn_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a virtual wan p2s vpn gateway. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}"} # type: ignore + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.ListP2SVpnGatewaysResult"]: + """Lists all the P2SVpnGateways in a resource group. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListP2SVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListP2SVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListP2SVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_p2_svpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_p2_svpn_gateways_list_by_resource_group_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListP2SVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways"} # type: ignore + + @distributed_trace + def list( + self, + **kwargs: Any + ) -> Iterable["_models.ListP2SVpnGatewaysResult"]: + """Lists all the P2SVpnGateways in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListP2SVpnGatewaysResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListP2SVpnGatewaysResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListP2SVpnGatewaysResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_p2_svpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_p2_svpn_gateways_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListP2SVpnGatewaysResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/p2svpnGateways"} # type: ignore + + def _reset_initial( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Optional["_models.P2SVpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_reset_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._reset_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _reset_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/reset"} # type: ignore + + + @distributed_trace + def begin_reset( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> LROPoller["_models.P2SVpnGateway"]: + """Resets the primary of the p2s vpn gateway in the specified resource group. + + :param resource_group_name: The resource group name of the P2SVpnGateway. + :type resource_group_name: str + :param gateway_name: The name of the gateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._reset_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_reset.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/reset"} # type: ignore + + def _generate_vpn_profile_initial( + self, + resource_group_name: str, + gateway_name: str, + parameters: "_models.P2SVpnProfileParameters", + **kwargs: Any + ) -> Optional["_models.VpnProfileResponse"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnProfileResponse"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'P2SVpnProfileParameters') + + request = build_p2_svpn_gateways_generate_vpn_profile_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._generate_vpn_profile_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _generate_vpn_profile_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/generatevpnprofile"} # type: ignore + + + @distributed_trace + def begin_generate_vpn_profile( + self, + resource_group_name: str, + gateway_name: str, + parameters: "_models.P2SVpnProfileParameters", + **kwargs: Any + ) -> LROPoller["_models.VpnProfileResponse"]: + """Generates VPN profile for P2S client of the P2SVpnGateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the P2SVpnGateway. + :type gateway_name: str + :param parameters: Parameters supplied to the generate P2SVpnGateway VPN client package + operation. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.P2SVpnProfileParameters + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnProfileResponse or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnProfileResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnProfileResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._generate_vpn_profile_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnProfileResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_generate_vpn_profile.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/generatevpnprofile"} # type: ignore + + def _get_p2_s_vpn_connection_health_initial( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> Optional["_models.P2SVpnGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_p2_svpn_gateways_get_p2_s_vpn_connection_health_request_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._get_p2_s_vpn_connection_health_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_p2_s_vpn_connection_health_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealth"} # type: ignore + + + @distributed_trace + def begin_get_p2_s_vpn_connection_health( + self, + resource_group_name: str, + gateway_name: str, + **kwargs: Any + ) -> LROPoller["_models.P2SVpnGateway"]: + """Gets the connection health of P2S clients of the virtual wan P2SVpnGateway in the specified + resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the P2SVpnGateway. + :type gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either P2SVpnGateway or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_p2_s_vpn_connection_health_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_p2_s_vpn_connection_health.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealth"} # type: ignore + + def _get_p2_s_vpn_connection_health_detailed_initial( + self, + resource_group_name: str, + gateway_name: str, + request: "_models.P2SVpnConnectionHealthRequest", + **kwargs: Any + ) -> Optional["_models.P2SVpnConnectionHealth"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.P2SVpnConnectionHealth"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'P2SVpnConnectionHealthRequest') + + request = build_p2_svpn_gateways_get_p2_s_vpn_connection_health_detailed_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + gateway_name=gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._get_p2_s_vpn_connection_health_detailed_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('P2SVpnConnectionHealth', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _get_p2_s_vpn_connection_health_detailed_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealthDetailed"} # type: ignore + + + @distributed_trace + def begin_get_p2_s_vpn_connection_health_detailed( + self, + resource_group_name: str, + gateway_name: str, + request: "_models.P2SVpnConnectionHealthRequest", + **kwargs: Any + ) -> LROPoller["_models.P2SVpnConnectionHealth"]: + """Gets the sas url to get the connection health detail of P2S clients of the virtual wan + P2SVpnGateway in the specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param gateway_name: The name of the P2SVpnGateway. + :type gateway_name: str + :param request: Request parameters supplied to get p2s vpn connections detailed health. + :type request: ~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionHealthRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either P2SVpnConnectionHealth or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionHealth] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.P2SVpnConnectionHealth"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._get_p2_s_vpn_connection_health_detailed_initial( + resource_group_name=resource_group_name, + gateway_name=gateway_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('P2SVpnConnectionHealth', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_get_p2_s_vpn_connection_health_detailed.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealthDetailed"} # type: ignore + + def _disconnect_p2_s_vpn_connections_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + p2_s_vpn_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(request, 'P2SVpnConnectionRequest') + + request = build_p2_svpn_gateways_disconnect_p2_s_vpn_connections_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + p2_s_vpn_gateway_name=p2_s_vpn_gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._disconnect_p2_s_vpn_connections_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _disconnect_p2_s_vpn_connections_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{p2sVpnGatewayName}/disconnectP2sVpnConnections"} # type: ignore + + + @distributed_trace + def begin_disconnect_p2_s_vpn_connections( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + p2_s_vpn_gateway_name: str, + request: "_models.P2SVpnConnectionRequest", + **kwargs: Any + ) -> LROPoller[None]: + """Disconnect P2S vpn connections of the virtual wan P2SVpnGateway in the specified resource + group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param p2_s_vpn_gateway_name: The name of the P2S Vpn Gateway. + :type p2_s_vpn_gateway_name: str + :param request: The parameters are supplied to disconnect p2s vpn connections. + :type request: ~azure.mgmt.network.v2022_01_01.models.P2SVpnConnectionRequest + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._disconnect_p2_s_vpn_connections_initial( + resource_group_name=resource_group_name, + p2_s_vpn_gateway_name=p2_s_vpn_gateway_name, + request=request, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_disconnect_p2_s_vpn_connections.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{p2sVpnGatewayName}/disconnectP2sVpnConnections"} # type: ignore +class VpnServerConfigurationsAssociatedWithVirtualWanOperations(object): + """VpnServerConfigurationsAssociatedWithVirtualWanOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _list_initial( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> Optional["_models.VpnServerConfigurationsResponse"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.VpnServerConfigurationsResponse"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_vpn_server_configurations_associated_with_virtual_wan_list_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + template_url=self._list_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('VpnServerConfigurationsResponse', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnServerConfigurations"} # type: ignore + + + @distributed_trace + def begin_list( + self, + resource_group_name: str, + virtual_wan_name: str, + **kwargs: Any + ) -> LROPoller["_models.VpnServerConfigurationsResponse"]: + """Gives the list of VpnServerConfigurations associated with Virtual Wan in a resource group. + + :param resource_group_name: The resource group name. + :type resource_group_name: str + :param virtual_wan_name: The name of the VirtualWAN whose associated VpnServerConfigurations is + needed. + :type virtual_wan_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VpnServerConfigurationsResponse or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VpnServerConfigurationsResponse] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VpnServerConfigurationsResponse"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_initial( + resource_group_name=resource_group_name, + virtual_wan_name=virtual_wan_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VpnServerConfigurationsResponse', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnServerConfigurations"} # type: ignore +class VirtualHubRouteTableV2SOperations(object): + """VirtualHubRouteTableV2SOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> "_models.VirtualHubRouteTableV2": + """Retrieves the details of a VirtualHubRouteTableV2. + + :param resource_group_name: The resource group name of the VirtualHubRouteTableV2. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the VirtualHubRouteTableV2. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: VirtualHubRouteTableV2, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2 + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHubRouteTableV2"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_route_table_v2_s_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.Error, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + virtual_hub_route_table_v2_parameters: "_models.VirtualHubRouteTableV2", + **kwargs: Any + ) -> "_models.VirtualHubRouteTableV2": + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHubRouteTableV2"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(virtual_hub_route_table_v2_parameters, 'VirtualHubRouteTableV2') + + request = build_virtual_hub_route_table_v2_s_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + virtual_hub_route_table_v2_parameters: "_models.VirtualHubRouteTableV2", + **kwargs: Any + ) -> LROPoller["_models.VirtualHubRouteTableV2"]: + """Creates a VirtualHubRouteTableV2 resource if it doesn't exist else updates the existing + VirtualHubRouteTableV2. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the VirtualHubRouteTableV2. + :type route_table_name: str + :param virtual_hub_route_table_v2_parameters: Parameters supplied to create or update + VirtualHubRouteTableV2. + :type virtual_hub_route_table_v2_parameters: + ~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2 + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either VirtualHubRouteTableV2 or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.VirtualHubRouteTableV2] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.VirtualHubRouteTableV2"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + virtual_hub_route_table_v2_parameters=virtual_hub_route_table_v2_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('VirtualHubRouteTableV2', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_route_table_v2_s_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a VirtualHubRouteTableV2. + + :param resource_group_name: The resource group name of the VirtualHubRouteTableV2. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the VirtualHubRouteTableV2. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVirtualHubRouteTableV2SResult"]: + """Retrieves the details of all VirtualHubRouteTableV2s. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubRouteTableV2SResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubRouteTableV2SResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubRouteTableV2SResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hub_route_table_v2_s_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hub_route_table_v2_s_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubRouteTableV2SResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables"} # type: ignore +class ExpressRouteGatewaysOperations(object): + """ExpressRouteGatewaysOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list_by_subscription( + self, + **kwargs: Any + ) -> "_models.ExpressRouteGatewayList": + """Lists ExpressRoute gateways under a given subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteGatewayList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGatewayList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteGatewayList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteGateways"} # type: ignore + + + @distributed_trace + def list_by_resource_group( + self, + resource_group_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteGatewayList": + """Lists ExpressRoute gateways in a given resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteGatewayList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGatewayList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGatewayList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteGatewayList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + express_route_gateway_name: str, + put_express_route_gateway_parameters: "_models.ExpressRouteGateway", + **kwargs: Any + ) -> "_models.ExpressRouteGateway": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(put_express_route_gateway_parameters, 'ExpressRouteGateway') + + request = build_express_route_gateways_create_or_update_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + express_route_gateway_name: str, + put_express_route_gateway_parameters: "_models.ExpressRouteGateway", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteGateway"]: + """Creates or updates a ExpressRoute gateway in a specified resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param put_express_route_gateway_parameters: Parameters required in an ExpressRoute gateway PUT + operation. + :type put_express_route_gateway_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + put_express_route_gateway_parameters=put_express_route_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + def _update_tags_initial( + self, + resource_group_name: str, + express_route_gateway_name: str, + express_route_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> Optional["_models.ExpressRouteGateway"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.ExpressRouteGateway"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(express_route_gateway_parameters, 'TagsObject') + + request = build_express_route_gateways_update_tags_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._update_tags_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_tags_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + @distributed_trace + def begin_update_tags( + self, + resource_group_name: str, + express_route_gateway_name: str, + express_route_gateway_parameters: "_models.TagsObject", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteGateway"]: + """Updates express route gateway tags. + + :param resource_group_name: The resource group name of the ExpressRouteGateway. + :type resource_group_name: str + :param express_route_gateway_name: The name of the gateway. + :type express_route_gateway_name: str + :param express_route_gateway_parameters: Parameters supplied to update a virtual wan express + route gateway tags. + :type express_route_gateway_parameters: ~azure.mgmt.network.v2022_01_01.models.TagsObject + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteGateway or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + express_route_gateway_parameters=express_route_gateway_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteGateway": + """Fetches the details of a ExpressRoute gateway in a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteGateway, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteGateway + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteGateway"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_get_request( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteGateway', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_gateways_delete_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes the specified ExpressRoute gateway in a resource group. An ExpressRoute gateway + resource can only be deleted when there are no connection subresources. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}"} # type: ignore +class ExpressRouteConnectionsOperations(object): + """ExpressRouteConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + put_express_route_connection_parameters: "_models.ExpressRouteConnection", + **kwargs: Any + ) -> "_models.ExpressRouteConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(put_express_route_connection_parameters, 'ExpressRouteConnection') + + request = build_express_route_connections_create_or_update_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + put_express_route_connection_parameters: "_models.ExpressRouteConnection", + **kwargs: Any + ) -> LROPoller["_models.ExpressRouteConnection"]: + """Creates a connection between an ExpressRoute gateway and an ExpressRoute circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param connection_name: The name of the connection subresource. + :type connection_name: str + :param put_express_route_connection_parameters: Parameters required in an + ExpressRouteConnection PUT operation. + :type put_express_route_connection_parameters: + ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either ExpressRouteConnection or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + put_express_route_connection_parameters=put_express_route_connection_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteConnection": + """Gets the specified ExpressRouteConnection. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param connection_name: The name of the ExpressRoute connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_connections_get_request( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_connections_delete_request_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + express_route_gateway_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a connection to a ExpressRoute circuit. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :param connection_name: The name of the connection subresource. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + express_route_gateway_name: str, + **kwargs: Any + ) -> "_models.ExpressRouteConnectionList": + """Lists ExpressRouteConnections. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param express_route_gateway_name: The name of the ExpressRoute gateway. + :type express_route_gateway_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteConnectionList, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteConnectionList + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteConnectionList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_connections_list_request( + resource_group_name=resource_group_name, + express_route_gateway_name=express_route_gateway_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteConnectionList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections"} # type: ignore + +class VirtualHubBgpConnectionOperations(object): + """VirtualHubBgpConnectionOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> "_models.BgpConnection": + """Retrieves the details of a Virtual Hub Bgp Connection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: BgpConnection, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.BgpConnection + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connection_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('BgpConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + parameters: "_models.BgpConnection", + **kwargs: Any + ) -> "_models.BgpConnection": + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpConnection"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'BgpConnection') + + request = build_virtual_hub_bgp_connection_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('BgpConnection', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('BgpConnection', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + parameters: "_models.BgpConnection", + **kwargs: Any + ) -> LROPoller["_models.BgpConnection"]: + """Creates a VirtualHubBgpConnection resource if it doesn't exist else updates the existing + VirtualHubBgpConnection. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :param parameters: Parameters of Bgp connection. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.BgpConnection + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either BgpConnection or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.BgpConnection] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.BgpConnection"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('BgpConnection', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connection_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a VirtualHubBgpConnection. + + :param resource_group_name: The resource group name of the VirtualHubBgpConnection. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param connection_name: The name of the connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections/{connectionName}"} # type: ignore +class VirtualHubBgpConnectionsOperations(object): + """VirtualHubBgpConnectionsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVirtualHubBgpConnectionResults"]: + """Retrieves the details of all VirtualHubBgpConnections. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubBgpConnectionResults or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubBgpConnectionResults] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubBgpConnectionResults"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hub_bgp_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hub_bgp_connections_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubBgpConnectionResults", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/bgpConnections"} # type: ignore + + def _list_learned_routes_initial( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> Optional["_models.PeerRouteList"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PeerRouteList"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connections_list_learned_routes_request_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_learned_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PeerRouteList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_learned_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/learnedRoutes"} # type: ignore + + + @distributed_trace + def begin_list_learned_routes( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller["_models.PeerRouteList"]: + """Retrieves a list of routes the virtual hub bgp connection has learned. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param hub_name: The name of the virtual hub. + :type hub_name: str + :param connection_name: The name of the virtual hub bgp connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PeerRouteList or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PeerRouteList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerRouteList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_learned_routes_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PeerRouteList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_learned_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/learnedRoutes"} # type: ignore + + def _list_advertised_routes_initial( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> Optional["_models.PeerRouteList"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.PeerRouteList"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_bgp_connections_list_advertised_routes_request_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._list_advertised_routes_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('PeerRouteList', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _list_advertised_routes_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/advertisedRoutes"} # type: ignore + + + @distributed_trace + def begin_list_advertised_routes( + self, + resource_group_name: str, + hub_name: str, + connection_name: str, + **kwargs: Any + ) -> LROPoller["_models.PeerRouteList"]: + """Retrieves a list of routes the virtual hub bgp connection is advertising to the specified peer. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param hub_name: The name of the virtual hub. + :type hub_name: str + :param connection_name: The name of the virtual hub bgp connection. + :type connection_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either PeerRouteList or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.PeerRouteList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.PeerRouteList"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._list_advertised_routes_initial( + resource_group_name=resource_group_name, + hub_name=hub_name, + connection_name=connection_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('PeerRouteList', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_list_advertised_routes.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{hubName}/bgpConnections/{connectionName}/advertisedRoutes"} # type: ignore +class VirtualHubIpConfigurationOperations(object): + """VirtualHubIpConfigurationOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any + ) -> "_models.HubIpConfiguration": + """Retrieves the details of a Virtual Hub Ip configuration. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param ip_config_name: The name of the ipconfig. + :type ip_config_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HubIpConfiguration, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubIpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_ip_configuration_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + parameters: "_models.HubIpConfiguration", + **kwargs: Any + ) -> "_models.HubIpConfiguration": + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubIpConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'HubIpConfiguration') + + request = build_virtual_hub_ip_configuration_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + parameters: "_models.HubIpConfiguration", + **kwargs: Any + ) -> LROPoller["_models.HubIpConfiguration"]: + """Creates a VirtualHubIpConfiguration resource if it doesn't exist else updates the existing + VirtualHubIpConfiguration. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param ip_config_name: The name of the ipconfig. + :type ip_config_name: str + :param parameters: Hub Ip Configuration parameters. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either HubIpConfiguration or the result of + cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.HubIpConfiguration] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubIpConfiguration"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('HubIpConfiguration', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_virtual_hub_ip_configuration_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + ip_config_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a VirtualHubIpConfiguration. + + :param resource_group_name: The resource group name of the VirtualHubBgpConnection. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param ip_config_name: The name of the ipconfig. + :type ip_config_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + ip_config_name=ip_config_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations/{ipConfigName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> Iterable["_models.ListVirtualHubIpConfigurationResults"]: + """Retrieves the details of all VirtualHubIpConfigurations. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListVirtualHubIpConfigurationResults or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListVirtualHubIpConfigurationResults] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListVirtualHubIpConfigurationResults"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_virtual_hub_ip_configuration_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_virtual_hub_ip_configuration_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListVirtualHubIpConfigurationResults", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/ipConfigurations"} # type: ignore +class HubRouteTablesOperations(object): + """HubRouteTablesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + route_table_parameters: "_models.HubRouteTable", + **kwargs: Any + ) -> "_models.HubRouteTable": + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubRouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(route_table_parameters, 'HubRouteTable') + + request = build_hub_route_tables_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('HubRouteTable', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('HubRouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + route_table_parameters: "_models.HubRouteTable", + **kwargs: Any + ) -> LROPoller["_models.HubRouteTable"]: + """Creates a RouteTable resource if it doesn't exist else updates the existing RouteTable. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the RouteTable. + :type route_table_name: str + :param route_table_parameters: Parameters supplied to create or update RouteTable. + :type route_table_parameters: ~azure.mgmt.network.v2022_01_01.models.HubRouteTable + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either HubRouteTable or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.HubRouteTable] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubRouteTable"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + route_table_parameters=route_table_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('HubRouteTable', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> "_models.HubRouteTable": + """Retrieves the details of a RouteTable. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the RouteTable. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HubRouteTable, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.HubRouteTable + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.HubRouteTable"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_route_tables_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('HubRouteTable', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_hub_route_tables_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + route_table_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a RouteTable. + + :param resource_group_name: The resource group name of the RouteTable. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param route_table_name: The name of the RouteTable. + :type route_table_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + route_table_name=route_table_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables/{routeTableName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> Iterable["_models.ListHubRouteTablesResult"]: + """Retrieves the details of all RouteTables. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListHubRouteTablesResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListHubRouteTablesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListHubRouteTablesResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_hub_route_tables_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_hub_route_tables_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListHubRouteTablesResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubRouteTables"} # type: ignore +class RoutingIntentOperations(object): + """RoutingIntentOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _create_or_update_initial( + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + routing_intent_parameters: "_models.RoutingIntent", + **kwargs: Any + ) -> "_models.RoutingIntent": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoutingIntent"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(routing_intent_parameters, 'RoutingIntent') + + request = build_routing_intent_create_or_update_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('RoutingIntent', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('RoutingIntent', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + routing_intent_parameters: "_models.RoutingIntent", + **kwargs: Any + ) -> LROPoller["_models.RoutingIntent"]: + """Creates a RoutingIntent resource if it doesn't exist else updates the existing RoutingIntent. + + :param resource_group_name: The resource group name of the RoutingIntent. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param routing_intent_name: The name of the per VirtualHub singleton Routing Intent resource. + :type routing_intent_name: str + :param routing_intent_parameters: Parameters supplied to create or update RoutingIntent. + :type routing_intent_parameters: ~azure.mgmt.network.v2022_01_01.models.RoutingIntent + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either RoutingIntent or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.network.v2022_01_01.models.RoutingIntent] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoutingIntent"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + routing_intent_parameters=routing_intent_parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = self._deserialize('RoutingIntent', pipeline_response) + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any + ) -> "_models.RoutingIntent": + """Retrieves the details of a RoutingIntent. + + :param resource_group_name: The resource group name of the RoutingIntent. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param routing_intent_name: The name of the RoutingIntent. + :type routing_intent_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: RoutingIntent, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.RoutingIntent + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoutingIntent"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routing_intent_get_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('RoutingIntent', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_routing_intent_delete_request_initial( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + virtual_hub_name: str, + routing_intent_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a RoutingIntent. + + :param resource_group_name: The resource group name of the RoutingIntent. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :param routing_intent_name: The name of the RoutingIntent. + :type routing_intent_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + routing_intent_name=routing_intent_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent/{routingIntentName}"} # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + virtual_hub_name: str, + **kwargs: Any + ) -> Iterable["_models.ListRoutingIntentResult"]: + """Retrieves the details of all RoutingIntent child resources of the VirtualHub. + + :param resource_group_name: The resource group name of the VirtualHub. + :type resource_group_name: str + :param virtual_hub_name: The name of the VirtualHub. + :type virtual_hub_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ListRoutingIntentResult or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.ListRoutingIntentResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.ListRoutingIntentResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_routing_intent_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_routing_intent_list_request( + subscription_id=self._config.subscription_id, + resource_group_name=resource_group_name, + virtual_hub_name=virtual_hub_name, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ListRoutingIntentResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routingIntent"} # type: ignore +class WebApplicationFirewallPoliciesOperations(object): + """WebApplicationFirewallPoliciesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + resource_group_name: str, + **kwargs: Any + ) -> Iterable["_models.WebApplicationFirewallPolicyListResult"]: + """Lists all of the protection policies within a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either WebApplicationFirewallPolicyListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_web_application_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_web_application_firewall_policies_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("WebApplicationFirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies"} # type: ignore + + @distributed_trace + def list_all( + self, + **kwargs: Any + ) -> Iterable["_models.WebApplicationFirewallPolicyListResult"]: + """Gets all the WAF policies in a subscription. + + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either WebApplicationFirewallPolicyListResult or the + result of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicyListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicyListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + def prepare_request(next_link=None): + if not next_link: + + request = build_web_application_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_all.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + + request = build_web_application_firewall_policies_list_all_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("WebApplicationFirewallPolicyListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + + return ItemPaged( + get_next, extract_data + ) + list_all.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies"} # type: ignore + + @distributed_trace + def get( + self, + resource_group_name: str, + policy_name: str, + **kwargs: Any + ) -> "_models.WebApplicationFirewallPolicy": + """Retrieve protection policy with specified name within a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param policy_name: The name of the policy. + :type policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: WebApplicationFirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_web_application_firewall_policies_get_request( + resource_group_name=resource_group_name, + policy_name=policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.get.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('WebApplicationFirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore + + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + policy_name: str, + parameters: "_models.WebApplicationFirewallPolicy", + **kwargs: Any + ) -> "_models.WebApplicationFirewallPolicy": + """Creates or update policy with specified rule set name within a resource group. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param policy_name: The name of the policy. + :type policy_name: str + :param parameters: Policy to be created. + :type parameters: ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicy + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: WebApplicationFirewallPolicy, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.WebApplicationFirewallPolicy + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.WebApplicationFirewallPolicy"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + + _json = self._serialize.body(parameters, 'WebApplicationFirewallPolicy') + + request = build_web_application_firewall_policies_create_or_update_request( + resource_group_name=resource_group_name, + policy_name=policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.create_or_update.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize('WebApplicationFirewallPolicy', pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize('WebApplicationFirewallPolicy', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + policy_name: str, + **kwargs: Any + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_web_application_firewall_policies_delete_request_initial( + resource_group_name=resource_group_name, + policy_name=policy_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore + + + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + policy_name: str, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes Policy. + + :param resource_group_name: The name of the resource group. + :type resource_group_name: str + :param policy_name: The name of the policy. + :type policy_name: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + policy_name=policy_name, + api_version=api_version, + cls=lambda x,y,z: x, + **kwargs + ) + kwargs.pop('error_map', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'}, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}"} # type: ignore +class ExpressRouteProviderPortsLocationOperations(object): + """ExpressRouteProviderPortsLocationOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.network.v2022_01_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = _models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def list( + self, + filter: Optional[str] = None, + **kwargs: Any + ) -> "_models.ExpressRouteProviderPortListResult": + """Retrieves all the ExpressRouteProviderPorts in a subscription. + + :param filter: The filter to apply on the operation. For example, you can use $filter=location + eq '{state}'. Default value is None. + :type filter: str + :keyword api_version: Api Version. Default value is "2022-01-01". Note that overriding this + default value may result in unsupported behavior. + :paramtype api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ExpressRouteProviderPortListResult, or the result of cls(response) + :rtype: ~azure.mgmt.network.v2022_01_01.models.ExpressRouteProviderPortListResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["_models.ExpressRouteProviderPortListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + + api_version = kwargs.pop('api_version', "2022-01-01") # type: str + + + request = build_express_route_provider_ports_location_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + filter=filter, + template_url=self.list.metadata['url'], + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize('ExpressRouteProviderPortListResult', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts"} # type: ignore + diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_scope_connections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_scope_connections_operations.py deleted file mode 100644 index 2d856e12246..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_scope_connections_operations.py +++ /dev/null @@ -1,502 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "scopeConnectionName": _SERIALIZER.url("scope_connection_name", scope_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "scopeConnectionName": _SERIALIZER.url("scope_connection_name", scope_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "scopeConnectionName": _SERIALIZER.url("scope_connection_name", scope_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class ScopeConnectionsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`scope_connections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - parameters: "_models.ScopeConnection", - **kwargs: Any - ) -> "_models.ScopeConnection": - """Creates or updates scope connection from Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param scope_connection_name: Name for the cross-tenant connection. - :type scope_connection_name: str - :param parameters: Scope connection to be created/updated. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ScopeConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'ScopeConnection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - scope_connection_name=scope_connection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('ScopeConnection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('ScopeConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore - - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - **kwargs: Any - ) -> "_models.ScopeConnection": - """Get specified scope connection created by this Network Manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param scope_connection_name: Name for the cross-tenant connection. - :type scope_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ScopeConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - scope_connection_name=scope_connection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ScopeConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - scope_connection_name: str, - **kwargs: Any - ) -> None: - """Delete the pending scope connection created by this network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param scope_connection_name: Name for the cross-tenant connection. - :type scope_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - scope_connection_name=scope_connection_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections/{scopeConnectionName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.ScopeConnectionListResult"]: - """List all scope connections created by this network manager. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ScopeConnectionListResult or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.ScopeConnectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.ScopeConnectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ScopeConnectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/scopeConnections"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_security_admin_configurations_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_security_admin_configurations_operations.py deleted file mode 100644 index 89b442d7f87..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_security_admin_configurations_operations.py +++ /dev/null @@ -1,514 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class SecurityAdminConfigurationsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`security_admin_configurations` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.SecurityAdminConfigurationListResult"]: - """Lists all the network manager security admin configurations in a network manager, in a - paginated format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either SecurityAdminConfigurationListResult or the result - of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfigurationListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("SecurityAdminConfigurationListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations"} # type: ignore - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any - ) -> "_models.SecurityAdminConfiguration": - """Retrieves a network manager security admin configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityAdminConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - security_admin_configuration: "_models.SecurityAdminConfiguration", - **kwargs: Any - ) -> "_models.SecurityAdminConfiguration": - """Creates or updates a network manager security admin configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param security_admin_configuration: The security admin configuration to create or update. - :type security_admin_configuration: - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityAdminConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityAdminConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityAdminConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(security_admin_configuration, 'SecurityAdminConfiguration') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('SecurityAdminConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager security admin configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityAdminConfigurations/{configurationName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_security_user_configurations_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_security_user_configurations_operations.py deleted file mode 100644 index 07eb65c18a0..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_security_user_configurations_operations.py +++ /dev/null @@ -1,514 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class SecurityUserConfigurationsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`security_user_configurations` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.SecurityUserConfigurationListResult"]: - """Lists all the network manager security user configurations in a network manager, in a paginated - format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either SecurityUserConfigurationListResult or the result - of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfigurationListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityUserConfigurationListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("SecurityUserConfigurationListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations"} # type: ignore - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - **kwargs: Any - ) -> "_models.SecurityUserConfiguration": - """Retrieves a network manager security user configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityUserConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityUserConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('SecurityUserConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - security_user_configuration: "_models.SecurityUserConfiguration", - **kwargs: Any - ) -> "_models.SecurityUserConfiguration": - """Creates or updates a network manager security user configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param security_user_configuration: The security user configuration to create or update. - :type security_user_configuration: - ~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SecurityUserConfiguration, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.SecurityUserConfiguration - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SecurityUserConfiguration"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(security_user_configuration, 'SecurityUserConfiguration') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('SecurityUserConfiguration', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('SecurityUserConfiguration', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a network manager security user configuration. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_static_members_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_static_members_operations.py deleted file mode 100644 index 2154f6d63e1..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_static_members_operations.py +++ /dev/null @@ -1,527 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - "staticMemberName": _SERIALIZER.url("static_member_name", static_member_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - "staticMemberName": _SERIALIZER.url("static_member_name", static_member_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - "staticMemberName": _SERIALIZER.url("static_member_name", static_member_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "networkGroupName": _SERIALIZER.url("network_group_name", network_group_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class StaticMembersOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`static_members` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - **kwargs: Any - ) -> "_models.StaticMember": - """Gets the specified static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param static_member_name: The name of the static member. - :type static_member_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: StaticMember, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.StaticMember - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - static_member_name=static_member_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('StaticMember', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - parameters: "_models.StaticMember", - **kwargs: Any - ) -> "_models.StaticMember": - """Creates or updates a static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param static_member_name: The name of the static member. - :type static_member_name: str - :param parameters: Parameters supplied to the specify the static member to create. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.StaticMember - :keyword callable cls: A custom type or function that will be passed the direct response - :return: StaticMember, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.StaticMember - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMember"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'StaticMember') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - static_member_name=static_member_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('StaticMember', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('StaticMember', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - static_member_name: str, - **kwargs: Any - ) -> None: - """Deletes a static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param static_member_name: The name of the static member. - :type static_member_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - static_member_name=static_member_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers/{staticMemberName}"} # type: ignore - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - network_group_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.StaticMemberListResult"]: - """Lists the specified static member. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param network_group_name: The name of the network group. - :type network_group_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either StaticMemberListResult or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.StaticMemberListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.StaticMemberListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - network_group_name=network_group_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("StaticMemberListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/networkGroups/{networkGroupName}/staticMembers"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_subscription_network_manager_connections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_subscription_network_manager_connections_operations.py deleted file mode 100644 index 3a7bed4bf3e..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_subscription_network_manager_connections_operations.py +++ /dev/null @@ -1,452 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_create_or_update_request( - subscription_id: str, - network_manager_connection_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - network_manager_connection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - network_manager_connection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "networkManagerConnectionName": _SERIALIZER.url("network_manager_connection_name", network_manager_connection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_list_request( - subscription_id: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class SubscriptionNetworkManagerConnectionsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`subscription_network_manager_connections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def create_or_update( - self, - network_manager_connection_name: str, - parameters: "_models.NetworkManagerConnection", - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Create a connection from this subscription to a cross tenant network manager. - - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :param parameters: Network manager connection to be created/updated. - :type parameters: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(parameters, 'NetworkManagerConnection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def get( - self, - network_manager_connection_name: str, - **kwargs: Any - ) -> "_models.NetworkManagerConnection": - """Get a specified connection created by this subscription. - - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: NetworkManagerConnection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('NetworkManagerConnection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - network_manager_connection_name: str, - **kwargs: Any - ) -> None: - """Delete specified pending connection created by this subscription. - - :param network_manager_connection_name: Name for the network manager connection. - :type network_manager_connection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - network_manager_connection_name=network_manager_connection_name, - api_version=api_version, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections/{networkManagerConnectionName}"} # type: ignore - - - @distributed_trace - def list( - self, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.NetworkManagerConnectionListResult"]: - """List all network manager connections created by this subscription. - - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either NetworkManagerConnectionListResult or the result - of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.NetworkManagerConnectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.NetworkManagerConnectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("NetworkManagerConnectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkManagerConnections"} # type: ignore diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_user_rule_collections_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_user_rule_collections_operations.py deleted file mode 100644 index 6ca386ad924..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_user_rule_collections_operations.py +++ /dev/null @@ -1,540 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class UserRuleCollectionsOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`user_rule_collections` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.UserRuleCollectionListResult"]: - """Lists all the user rule collections in a security configuration, in a paginated format. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either UserRuleCollectionListResult or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollectionListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleCollectionListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("UserRuleCollectionListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections"} # type: ignore - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - **kwargs: Any - ) -> "_models.UserRuleCollection": - """Gets a network manager security user configuration rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: UserRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('UserRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - user_rule_collection: "_models.UserRuleCollection", - **kwargs: Any - ) -> "_models.UserRuleCollection": - """Creates or updates a user rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param user_rule_collection: The User Rule Collection to create or update. - :type user_rule_collection: ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection - :keyword callable cls: A custom type or function that will be passed the direct response - :return: UserRuleCollection, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.UserRuleCollection - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleCollection"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(user_rule_collection, 'UserRuleCollection') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('UserRuleCollection', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('UserRuleCollection', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a user rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}"} # type: ignore - diff --git a/src/network-manager/azext_network_manager/vendored_sdks/operations/_user_rules_operations.py b/src/network-manager/azext_network_manager/vendored_sdks/operations/_user_rules_operations.py deleted file mode 100644 index 9e085f29333..00000000000 --- a/src/network-manager/azext_network_manager/vendored_sdks/operations/_user_rules_operations.py +++ /dev/null @@ -1,565 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest -from azure.core.tracing.decorator import distributed_trace -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models as _models -from .._vendor import _convert_request, _format_url_section -T = TypeVar('T') -JSONType = Any -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - -def build_list_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - *, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if top is not None: - _query_parameters['$top'] = _SERIALIZER.query("top", top, 'int', maximum=20, minimum=1) - if skip_token is not None: - _query_parameters['$skipToken'] = _SERIALIZER.query("skip_token", skip_token, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_get_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="GET", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - - -def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - *, - json: JSONType = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', None) # type: Optional[str] - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - if content_type is not None: - _header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="PUT", - url=_url, - params=_query_parameters, - headers=_header_parameters, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - *, - force: Optional[bool] = None, - **kwargs: Any -) -> HttpRequest: - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - accept = "application/json" - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}") # pylint: disable=line-too-long - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "networkManagerName": _SERIALIZER.url("network_manager_name", network_manager_name, 'str'), - "configurationName": _SERIALIZER.url("configuration_name", configuration_name, 'str'), - "ruleCollectionName": _SERIALIZER.url("rule_collection_name", rule_collection_name, 'str'), - "ruleName": _SERIALIZER.url("rule_name", rule_name, 'str'), - } - - _url = _format_url_section(_url, **path_format_arguments) - - # Construct parameters - _query_parameters = kwargs.pop("params", {}) # type: Dict[str, Any] - _query_parameters['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') - if force is not None: - _query_parameters['force'] = _SERIALIZER.query("force", force, 'bool') - - # Construct headers - _header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - _header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_query_parameters, - headers=_header_parameters, - **kwargs - ) - -class UserRulesOperations(object): - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.network.v2022_02_01_preview.NetworkManagementClient`'s - :attr:`user_rules` attribute. - """ - - models = _models - - def __init__(self, *args, **kwargs): - args = list(args) - self._client = args.pop(0) if args else kwargs.pop("client") - self._config = args.pop(0) if args else kwargs.pop("config") - self._serialize = args.pop(0) if args else kwargs.pop("serializer") - self._deserialize = args.pop(0) if args else kwargs.pop("deserializer") - - - @distributed_trace - def list( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs: Any - ) -> Iterable["_models.UserRuleListResult"]: - """Lists all user rules in a rule collection. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param top: An optional query parameter which specifies the maximum number of records to be - returned by the server. Default value is None. - :type top: int - :param skip_token: SkipToken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skipToken parameter that specifies a starting point to use for subsequent calls. Default - value is None. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either UserRuleListResult or the result of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.network.v2022_02_01_preview.models.UserRuleListResult] - :raises: ~azure.core.exceptions.HttpResponseError - """ - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - cls = kwargs.pop('cls', None) # type: ClsType["_models.UserRuleListResult"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - def prepare_request(next_link=None): - if not next_link: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=self.list.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - api_version=api_version, - top=top, - skip_token=skip_token, - template_url=next_link, - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("UserRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules"} # type: ignore - - @distributed_trace - def get( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - **kwargs: Any - ) -> "_models.BaseUserRule": - """Gets a user rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseUserRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseUserRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_get_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - template_url=self.get.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('BaseUserRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - user_rule: "_models.BaseUserRule", - **kwargs: Any - ) -> "_models.BaseUserRule": - """Creates or updates a user rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param user_rule: The user rule to create or update. - :type user_rule: ~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule - :keyword callable cls: A custom type or function that will be passed the direct response - :return: BaseUserRule, or the result of cls(response) - :rtype: ~azure.mgmt.network.v2022_02_01_preview.models.BaseUserRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.BaseUserRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] - - _json = self._serialize.body(user_rule, 'BaseUserRule') - - request = build_create_or_update_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - content_type=content_type, - json=_json, - template_url=self.create_or_update.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('BaseUserRule', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('BaseUserRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - network_manager_name: str, - configuration_name: str, - rule_collection_name: str, - rule_name: str, - force: Optional[bool] = None, - **kwargs: Any - ) -> None: - """Deletes a user rule. - - :param resource_group_name: The name of the resource group. - :type resource_group_name: str - :param network_manager_name: The name of the network manager. - :type network_manager_name: str - :param configuration_name: The name of the network manager Security Configuration. - :type configuration_name: str - :param rule_collection_name: The name of the network manager security Configuration rule - collection. - :type rule_collection_name: str - :param rule_name: The name of the rule. - :type rule_name: str - :param force: Deletes the resource even if it is part of a deployed configuration. If the - configuration has been deployed, the service will do a cleanup deployment in the background, - prior to the delete. Default value is None. - :type force: bool - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - api_version = kwargs.pop('api_version', "2022-02-01-preview") # type: str - - - request = build_delete_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - network_manager_name=network_manager_name, - configuration_name=configuration_name, - rule_collection_name=rule_collection_name, - rule_name=rule_name, - api_version=api_version, - force=force, - template_url=self.delete.metadata['url'], - ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/securityUserConfigurations/{configurationName}/ruleCollections/{ruleCollectionName}/rules/{ruleName}"} # type: ignore - diff --git a/src/network-manager/setup.py b/src/network-manager/setup.py index ce20bc9206d..b5d5dc4ea8b 100644 --- a/src/network-manager/setup.py +++ b/src/network-manager/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '0.5.0' +VERSION = '0.5.1' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers diff --git a/src/quantum/HISTORY.rst b/src/quantum/HISTORY.rst index 1eea2d757d4..07c6ed925b1 100644 --- a/src/quantum/HISTORY.rst +++ b/src/quantum/HISTORY.rst @@ -3,6 +3,12 @@ Release History =============== +0.16.0 +++++++ +* [2022-06-30] Version intended to work with QDK version 0.25.218240 +* Providers participating in the "Credits for All" program will automatically be added when you create a workspace with the CLI. See https://docs.microsoft.com/en-us/azure/quantum/credits-faq +* You can pass a TargetCapability value to the Q# compiler by adding the --target-capability parameter to an az quantum run, execute, or job submit command. + 0.15.0 ++++++ * [2022-04-25] Version intended to work with QDK version v0.24.208024 @@ -64,7 +70,7 @@ Release History 0.6.1 ++++++ -* [2021-07-22] Reduced the lenghth of the user agent reported by the tool. +* [2021-07-22] Reduced the length of the user agent reported by the tool. 0.6.0 ++++++ diff --git a/src/quantum/azext_quantum/__init__.py b/src/quantum/azext_quantum/__init__.py index 27b30d585b6..193ee93b80d 100644 --- a/src/quantum/azext_quantum/__init__.py +++ b/src/quantum/azext_quantum/__init__.py @@ -11,7 +11,7 @@ # This is the version reported by the CLI to the service when submitting requests. # This should be in sync with the extension version in 'setup.py', unless we need to # submit using a different version. -CLI_REPORTED_VERSION = "0.15.0" +CLI_REPORTED_VERSION = "0.16.0" class QuantumCommandsLoader(AzCommandsLoader): diff --git a/src/quantum/azext_quantum/_help.py b/src/quantum/azext_quantum/_help.py index c8db80657fa..e4686ba83aa 100644 --- a/src/quantum/azext_quantum/_help.py +++ b/src/quantum/azext_quantum/_help.py @@ -22,6 +22,10 @@ text: |- az quantum execute -g MyResourceGroup -w MyWorkspace -l MyLocation -t MyTarget \\ --job-params key1=value1 key2=value2 -- --n-qubits=3 + - name: Submit and wait for a Q# program from the current folder with a target-capability parameter. + text: |- + az quantum execute -g MyResourceGroup -w MyWorkspace -l MyLocation -t MyTarget \\ + --target-capability MyTargetCapability """ helps['quantum run'] = """ @@ -35,6 +39,10 @@ text: |- az quantum run -g MyResourceGroup -w MyWorkspace -l MyLocation -t MyTarget \\ --job-params key1=value1 key2=value2 -- --n-qubits=3 + - name: Submit and wait for a Q# program from the current folder with a target-capability parameter. + text: |- + az quantum run -g MyResourceGroup -w MyWorkspace -l MyLocation -t MyTarget \\ + --target-capability MyTargetCapability """ helps['quantum job'] = """ @@ -87,6 +95,10 @@ text: |- az quantum job submit -g MyResourceGroup -w MyWorkspace -l MyLocation \\ --job-name MyJob -- --n-qubits=2 + - name: Submit a Q# program from the current folder with a target-capability parameter. + text: |- + az quantum job submit -g MyResourceGroup -w MyWorkspace -l MyLocation -t MyTarget \\ + --target-capability MyTargetCapability """ helps['quantum job wait'] = """ @@ -121,6 +133,9 @@ - name: List offerings available in an Azure location. text: |- az quantum offerings list -l MyLocation -o table + - name: List only the offerings flagged "autoAdd" in an Azure location. + text: |- + az quantum offerings list -l MyLocation --autoadd-only -o table """ helps['quantum offerings show-terms'] = """ @@ -200,6 +215,10 @@ type: command short-summary: Create a new Azure Quantum workspace. examples: + - name: Create a new Azure Quantum workspace with the providers that offer free credit. + text: |- + az quantum workspace create -g MyResourceGroup -w MyWorkspace -l MyLocation \\ + -a MyStorageAccountName - name: Create a new Azure Quantum workspace with a specific list of providers. text: |- az quantum workspace create -g MyResourceGroup -w MyWorkspace -l MyLocation \\ diff --git a/src/quantum/azext_quantum/_params.py b/src/quantum/azext_quantum/_params.py index bb43c5e3787..5f662e0c7ca 100644 --- a/src/quantum/azext_quantum/_params.py +++ b/src/quantum/azext_quantum/_params.py @@ -35,6 +35,7 @@ def load_arguments(self, _): job_name_type = CLIArgumentType(help='A friendly name to give to this run of the program.') job_id_type = CLIArgumentType(options_list=['--job-id', '-j'], help='Job unique identifier in GUID format.') job_params_type = CLIArgumentType(options_list=['--job-params'], help='Job parameters passed to the target as a list of key=value pairs.', action=JobParamsAction, nargs='+') + target_capability_type = CLIArgumentType(options_list=['--target-capability'], help='Target-capability parameter passed to the compiler.') shots_type = CLIArgumentType(help='The number of times to run the Q# program on the given target.') no_build_type = CLIArgumentType(help='If specified, the Q# program is not built before submitting.') storage_type = CLIArgumentType(help='If specified, the ConnectionString of an Azure Storage is used to store job data and results.') @@ -44,6 +45,8 @@ def load_arguments(self, _): provider_id_type = CLIArgumentType(options_list=['--provider-id', '-p'], help='Identifier of an Azure Quantum provider.') sku_type = CLIArgumentType(options_list=['--sku', '-k'], help='Identify a plan or SKU offered by an Azure Quantum provider.') provider_sku_list_type = CLIArgumentType(options_list=['--provider-sku-list', '-r'], help='Comma separated list of Provider/SKU pairs. Separate the Provider and SKU with a slash. Enclose the entire list in quotes. Values from `az quantum offerings list -l -o table`') + auto_accept_type = CLIArgumentType(help='If specified, provider terms are accepted without an interactive Y/N prompt.') + autoadd_only_type = CLIArgumentType(help='If specified, only the plans flagged "autoAdd" are displayed.') with self.argument_context('quantum workspace') as c: c.argument('workspace_name', workspace_name_type) @@ -51,6 +54,7 @@ def load_arguments(self, _): c.argument('tag', tag_type) c.argument('skip_role_assignment', skip_role_assignment_type) c.argument('provider_sku_list', provider_sku_list_type) + c.argument('auto_accept', auto_accept_type) with self.argument_context('quantum target') as c: c.argument('workspace_name', workspace_name_type) @@ -69,6 +73,7 @@ def load_arguments(self, _): with self.argument_context('quantum job submit') as c: c.argument('job_params', job_params_type) + c.argument('target_capability', target_capability_type) c.positional('program_args', program_args_type) with self.argument_context('quantum execute') as c: @@ -80,6 +85,7 @@ def load_arguments(self, _): c.argument('storage', storage_type) c.argument('no_build', no_build_type) c.argument('job_params', job_params_type) + c.argument('target_capability', target_capability_type) c.positional('program_args', program_args_type) with self.argument_context('quantum run') as c: @@ -91,8 +97,12 @@ def load_arguments(self, _): c.argument('storage', storage_type) c.argument('no_build', no_build_type) c.argument('job_params', job_params_type) + c.argument('target_capability', target_capability_type) c.positional('program_args', program_args_type) with self.argument_context('quantum offerings') as c: c.argument('provider_id', provider_id_type) c.argument('sku', sku_type) + + with self.argument_context('quantum offerings list') as c: + c.argument('autoadd_only', autoadd_only_type) diff --git a/src/quantum/azext_quantum/operations/job.py b/src/quantum/azext_quantum/operations/job.py index 711f045b872..1ca7b84dd6c 100644 --- a/src/quantum/azext_quantum/operations/job.py +++ b/src/quantum/azext_quantum/operations/job.py @@ -55,7 +55,7 @@ def _check_dotnet_available(): raise FileOperationError(f"Failed to run 'dotnet'. (Error {result.returncode})") -def build(cmd, target_id=None, project=None): +def build(cmd, target_id=None, project=None, target_capability=None): """ Compile a Q# program to run on Azure Quantum. """ @@ -71,6 +71,9 @@ def build(cmd, target_id=None, project=None): args.append(f"-property:ExecutionTarget={target.target_id}") + if target_capability: + args.append(f"-property:TargetCapability={target_capability}") + logger.debug("Building project with arguments:") logger.debug(args) @@ -166,7 +169,8 @@ def _has_completed(job): def submit(cmd, program_args, resource_group_name=None, workspace_name=None, location=None, target_id=None, - project=None, job_name=None, shots=None, storage=None, no_build=False, job_params=None): + project=None, job_name=None, shots=None, storage=None, no_build=False, job_params=None, + target_capability=None): """ Submit a Q# project to run on Azure Quantum. """ @@ -175,7 +179,7 @@ def submit(cmd, program_args, resource_group_name=None, workspace_name=None, loc # Can't call run directly because it fails to understand the # `ExecutionTarget` property when passed in the command line if not no_build: - build(cmd, target_id=target_id, project=project) + build(cmd, target_id=target_id, project=project, target_capability=target_capability) logger.info("Project built successfully.") else: _check_dotnet_available() @@ -331,12 +335,12 @@ def wait(cmd, job_id, resource_group_name=None, workspace_name=None, location=No def run(cmd, program_args, resource_group_name=None, workspace_name=None, location=None, target_id=None, - project=None, job_name=None, shots=None, storage=None, no_build=False, job_params=None): + project=None, job_name=None, shots=None, storage=None, no_build=False, job_params=None, target_capability=None): """ Submit a job to run on Azure Quantum, and waits for the result. """ job = submit(cmd, program_args, resource_group_name, workspace_name, location, target_id, - project, job_name, shots, storage, no_build, job_params) + project, job_name, shots, storage, no_build, job_params, target_capability) logger.warning("Job id: %s", job.id) logger.debug(job) diff --git a/src/quantum/azext_quantum/operations/offerings.py b/src/quantum/azext_quantum/operations/offerings.py index 21b963392cf..625483b1567 100644 --- a/src/quantum/azext_quantum/operations/offerings.py +++ b/src/quantum/azext_quantum/operations/offerings.py @@ -49,14 +49,25 @@ def _valid_publisher_and_offer(provider, publisher, offer): return True -def list_offerings(cmd, location=None): +def list_offerings(cmd, location=None, autoadd_only=False): """ Get the list of all provider offerings available on the given location. """ if not location: raise RequiredArgumentMissingError("A location is required to list offerings available.") client = cf_offerings(cmd.cli_ctx) - return client.list(location_name=location) + offerings = client.list(location_name=location) + if autoadd_only: + autoadd_offerings = [] + for offering in offerings: + for sku in offering.properties.skus: + if sku.auto_add: + autoadd_offering = offering + autoadd_offering.properties.skus = [] + autoadd_offering.properties.skus.append(sku) + autoadd_offerings.append(autoadd_offering) + return autoadd_offerings + return offerings def show_terms(cmd, provider_id=None, sku=None, location=None): diff --git a/src/quantum/azext_quantum/operations/workspace.py b/src/quantum/azext_quantum/operations/workspace.py index 2ca122f9da8..8563f7eaacd 100644 --- a/src/quantum/azext_quantum/operations/workspace.py +++ b/src/quantum/azext_quantum/operations/workspace.py @@ -7,6 +7,7 @@ import os.path import json +import sys import time from azure.cli.command_modules.storage.operations.account import list_storage_accounts @@ -22,7 +23,7 @@ from ..vendored_sdks.azure_mgmt_quantum.models import QuantumWorkspace from ..vendored_sdks.azure_mgmt_quantum.models import QuantumWorkspaceIdentity from ..vendored_sdks.azure_mgmt_quantum.models import Provider -from .offerings import _get_publisher_and_offer_from_provider_id, _get_terms_from_marketplace, OFFER_NOT_AVAILABLE, PUBLISHER_NOT_AVAILABLE +from .offerings import accept_terms, _get_publisher_and_offer_from_provider_id, _get_terms_from_marketplace, OFFER_NOT_AVAILABLE, PUBLISHER_NOT_AVAILABLE DEFAULT_WORKSPACE_LOCATION = 'westus' DEFAULT_STORAGE_SKU = 'Standard_LRS' @@ -36,6 +37,12 @@ MAX_RETRIES_ROLE_ASSIGNMENT = 20 MAX_POLLS_CREATE_WORKSPACE = 300 +C4A_TERMS_ACCEPTANCE_MESSAGE = "\nBy continuing you accept the Azure Quantum terms and conditions and privacy policy and agree that " \ + "Microsoft can share your account details with the provider for their transactional purposes.\n\n" \ + "https://privacy.microsoft.com/privacystatement\n" \ + "https://azure.microsoft.com/support/legal/preview-supplemental-terms/\n\n" \ + "Continue? (Y/N) " + class WorkspaceInfo: def __init__(self, cmd, resource_group_name=None, workspace_name=None, location=None): @@ -106,20 +113,57 @@ def _provider_terms_need_acceptance(cmd, provider): return not _get_terms_from_marketplace(cmd, provider['publisher_id'], provider['offer_id'], provider['sku']).accepted -def _add_quantum_providers(cmd, workspace, providers): +def _autoadd_providers(cmd, providers_in_region, providers_selected, workspace_location, auto_accept): + already_accepted_terms = False + for provider in providers_in_region: + for sku in provider.properties.skus: + if sku.auto_add: + # Don't duplicate a provider/sku if it was also specified in the command's -r parameter + provider_already_added = False + for already_selected_provider in providers_selected: + if already_selected_provider['provider_id'] == provider.id and already_selected_provider['sku'] == sku.id: + provider_already_added = True + break + if not provider_already_added: + (publisher, offer) = _get_publisher_and_offer_from_provider_id(providers_in_region, provider.id) + if (offer is None or publisher is None): + raise RequiredArgumentMissingError(f"Error adding 'autoAdd' provider: Publisher or Offer not found for '{provider.id}'") + + provider_selected = {'provider_id': provider.id, 'sku': sku.id, 'offer_id': offer, 'publisher_id': publisher} + if cmd is not None and not already_accepted_terms and _provider_terms_need_acceptance(cmd, provider_selected): + if not auto_accept: + print(C4A_TERMS_ACCEPTANCE_MESSAGE, end='') + if input().lower() != 'y': + sys.exit('Terms not accepted. No workspace created.') + accept_terms(cmd, provider.id, sku.id, workspace_location) + already_accepted_terms = True + providers_selected.append(provider_selected) + + # If there weren't any autoAdd providers and none were specified with the -r parameter, we have a problem... + if providers_selected == []: + raise RequiredArgumentMissingError("A list of Azure Quantum providers and SKUs is required.", + "Supply the missing -r parameter. For example:\n" + "\t-r \"Microsoft/Basic, Microsoft.FleetManagement/Basic\"\n" + "To display a list of Provider IDs and their SKUs, use the following command:\n" + "\taz quantum offerings list -l MyLocation -o table") + + +def _add_quantum_providers(cmd, workspace, providers, auto_accept): providers_in_region_paged = cf_offerings(cmd.cli_ctx).list(location_name=workspace.location) providers_in_region = [item for item in providers_in_region_paged] providers_selected = [] - for pair in providers.split(','): - es = [e.strip() for e in pair.split('/')] - if len(es) != 2: - raise InvalidArgumentValueError(f"Invalid Provider/SKU specified: '{pair.strip()}'") - provider_id = es[0] - sku = es[1] - (publisher, offer) = _get_publisher_and_offer_from_provider_id(providers_in_region, provider_id) - if (offer is None or publisher is None): - raise InvalidArgumentValueError(f"Provider '{provider_id}' not found in region {workspace.location}.") - providers_selected.append({'provider_id': provider_id, 'sku': sku, 'offer_id': offer, 'publisher_id': publisher}) + if providers is not None: + for pair in providers.split(','): + es = [e.strip() for e in pair.split('/')] + if len(es) != 2: + raise InvalidArgumentValueError(f"Invalid Provider/SKU specified: '{pair.strip()}'") + provider_id = es[0] + sku = es[1] + (publisher, offer) = _get_publisher_and_offer_from_provider_id(providers_in_region, provider_id) + if (offer is None or publisher is None): + raise InvalidArgumentValueError(f"Provider '{provider_id}' not found in region {workspace.location}.") + providers_selected.append({'provider_id': provider_id, 'sku': sku, 'offer_id': offer, 'publisher_id': publisher}) + _autoadd_providers(cmd, providers_in_region, providers_selected, workspace.location, auto_accept) _show_tip(f"Workspace creation has been requested with the following providers:\n{providers_selected}") # Now that the providers have been requested, add each of them into the workspace for provider in providers_selected: @@ -167,7 +211,7 @@ def _validate_storage_account(tier_or_kind_msg_text, tier_or_kind, supported_tie f"Storage account {tier_or_kind_msg_text}{plural} currently supported: {tier_or_kind_list[:-2]}") -def create(cmd, resource_group_name=None, workspace_name=None, location=None, storage_account=None, skip_role_assignment=False, provider_sku_list=None): +def create(cmd, resource_group_name=None, workspace_name=None, location=None, storage_account=None, skip_role_assignment=False, provider_sku_list=None, auto_accept=False): """ Create a new Azure Quantum workspace. """ @@ -178,12 +222,6 @@ def create(cmd, resource_group_name=None, workspace_name=None, location=None, st raise RequiredArgumentMissingError("A quantum workspace requires a valid storage account.") if not location: raise RequiredArgumentMissingError("A location for the new quantum workspace is required.") - if provider_sku_list is None: - raise RequiredArgumentMissingError("A list of Azure Quantum providers and SKUs is required.", - "Supply the missing -r parameter. For example:\n" - "\t-r \"Microsoft/Basic, Microsoft.FleetManagement/Basic\"\n" - "To display a list of Provider IDs and their SKUs, use the following command:\n" - "\taz quantum offerings list -l MyLocation -o table") info = WorkspaceInfo(cmd, resource_group_name, workspace_name, location) if not info.resource_group: raise ResourceNotFoundError("Please run 'az quantum workspace set' first to select a default resource group.") @@ -191,7 +229,7 @@ def create(cmd, resource_group_name=None, workspace_name=None, location=None, st # Until the "--skip-role-assignment" parameter is deprecated, use the old non-ARM code to create a workspace without doing a role assignment if skip_role_assignment: - _add_quantum_providers(cmd, quantum_workspace, provider_sku_list) + _add_quantum_providers(cmd, quantum_workspace, provider_sku_list, auto_accept) poller = client.begin_create_or_update(info.resource_group, info.name, quantum_workspace, polling=False) while not poller.done(): time.sleep(POLLING_TIME_DURATION) @@ -204,7 +242,7 @@ def create(cmd, resource_group_name=None, workspace_name=None, location=None, st with open(template_path, 'r', encoding='utf8') as template_file_fd: template = json.load(template_file_fd) - _add_quantum_providers(cmd, quantum_workspace, provider_sku_list) + _add_quantum_providers(cmd, quantum_workspace, provider_sku_list, auto_accept) validated_providers = [] for provider in quantum_workspace.providers: validated_providers.append({"providerId": provider.provider_id, "providerSku": provider.provider_sku}) diff --git a/src/quantum/azext_quantum/tests/latest/recordings/test_jobs.yaml b/src/quantum/azext_quantum/tests/latest/recordings/test_jobs.yaml index ebe86574287..670b90907f2 100644 --- a/src/quantum/azext_quantum/tests/latest/recordings/test_jobs.yaml +++ b/src/quantum/azext_quantum/tests/latest/recordings/test_jobs.yaml @@ -1,4 +1,130 @@ interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:20 GMT + expires: + - Fri, 27 May 2022 17:09:20 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:24 GMT + expires: + - Fri, 27 May 2022 17:09:24 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:25 GMT + expires: + - Fri, 27 May 2022 17:09:25 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently - request: body: null headers: @@ -13,24 +139,24 @@ interactions: ParameterSetName: - -g -w -l User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2022-01-10-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-09T22:52:06.6450832Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"ionq-standard","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-14T16:49:38.6414588Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"DZH3178M639F","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"},{"providerId":"Microsoft.Simulator","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft.Simulator","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"aq-internal-testing","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded","resourceUsageId":"45ad12c0-48b2-4339-b31b-c0e34b8fce4a"},{"providerId":"quantinuum","providerSku":"test1","applicationName":"e2e-qsharp-tests-quantinuum","provisioningState":"Succeeded","resourceUsageId":"9cbc9cad-9837-4fae-be4b-53909ad7277f"},{"providerId":"rigetti","providerSku":"rigetti-private-beta","applicationName":"e2e-qsharp-tests-rigetti","provisioningState":"Succeeded"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' headers: cache-control: - no-cache content-length: - - '1707' + - '2227' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:55 GMT + - Fri, 27 May 2022 17:09:29 GMT etag: - - '"000088b0-0000-0800-0000-6111b1970000"' + - '"6000c54b-0000-0800-0000-6258510c0000"' expires: - '-1' pragma: @@ -58,19 +184,21 @@ interactions: Connection: - keep-alive User-Agent: - - az-cli-ext/0.6.1 azsdk-python-quantum/0.0.0.1 Python/3.8.2 (Windows-10-10.0.19041-SP0) + - az-cli-ext/0.15.0.8 azsdk-python-quantum/0.0.0.1 Python/3.10.1 (Windows-10-10.0.22000-SP0) method: GET uri: https://westus2.quantum.azure.com/v1.0/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests/providerStatus response: body: - string: '{"value":[{"id":"Microsoft","currentAvailability":"Available","targets":[{"id":"microsoft.paralleltempering-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.paralleltempering.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.qmc.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null}]},{"id":"ionq","currentAvailability":"Available","targets":[{"id":"ionq.qpu","currentAvailability":"Available","averageQueueTime":718,"statusPage":"https://status.ionq.co"},{"id":"ionq.simulator","currentAvailability":"Available","averageQueueTime":1,"statusPage":"https://status.ionq.co"}]},{"id":"1qbit","currentAvailability":"Available","targets":[{"id":"1qbit.tabu","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pathrelinking","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pticm","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"}]},{"id":"toshiba","currentAvailability":"Available","targets":[{"id":"toshiba.sbm.ising","currentAvailability":"Available","averageQueueTime":5,"statusPage":null}]},{"id":"honeywell","currentAvailability":"Degraded","targets":[{"id":"honeywell.hqs-lt-s1","currentAvailability":"Unavailable","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-sim","currentAvailability":"Available","averageQueueTime":6,"statusPage":"https://www.honeywell.com/en-us/company/quantum"}]}],"nextLink":null}' + string: '{"value":[{"id":"Microsoft","currentAvailability":"Available","targets":[{"id":"microsoft.paralleltempering-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.paralleltempering.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.qmc.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null}]},{"id":"toshiba","currentAvailability":"Available","targets":[{"id":"toshiba.sbm.ising","currentAvailability":"Available","averageQueueTime":4,"statusPage":"https://aq-sbm.net/v1/service_monitor/index.html"}]},{"id":"honeywell","currentAvailability":"Degraded","targets":[{"id":"honeywell.hqs-lt-s1","currentAvailability":"Degraded","averageQueueTime":190070,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s2","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s2-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-sim","currentAvailability":"Available","averageQueueTime":10,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.honeywell.com/en-us/company/quantum"}]},{"id":"Microsoft.Simulator","currentAvailability":"Available","targets":[{"id":"microsoft.simulator.fullstate","currentAvailability":"Available","averageQueueTime":0,"statusPage":null}]},{"id":"1qbit","currentAvailability":"Available","targets":[{"id":"1qbit.tabu","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pathrelinking","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pticm","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"}]},{"id":"ionq","currentAvailability":"Available","targets":[{"id":"ionq.qpu","currentAvailability":"Available","averageQueueTime":668,"statusPage":"https://status.ionq.co"},{"id":"ionq.simulator","currentAvailability":"Available","averageQueueTime":2,"statusPage":"https://status.ionq.co"}]},{"id":"quantinuum","currentAvailability":"Degraded","targets":[{"id":"quantinuum.hqs-lt-s1","currentAvailability":"Degraded","averageQueueTime":190070,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s1-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s2","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s2-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s1-sim","currentAvailability":"Available","averageQueueTime":10,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s2-sim","currentAvailability":"Available","averageQueueTime":9,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.quantinuum.com/products/h1"}]},{"id":"rigetti","currentAvailability":"Available","targets":[{"id":"rigetti.sim.qvm","currentAvailability":"Available","averageQueueTime":5,"statusPage":"https://rigetti.statuspage.io/"},{"id":"rigetti.qpu.aspen-11","currentAvailability":"Available","averageQueueTime":5,"statusPage":"https://rigetti.statuspage.io/"},{"id":"rigetti.qpu.aspen-m-1","currentAvailability":"Available","averageQueueTime":5,"statusPage":"https://rigetti.statuspage.io/"}]}],"nextLink":null}' headers: content-length: - - '2781' + - '4992' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:56 GMT + - Fri, 27 May 2022 17:09:30 GMT + mise-correlation-id: + - ef4c3832-e30a-4c42-91a5-daf5265093fb request-context: - appId=cid-v1:4d6ac272-7369-45c6-9036-63d733c8519f server: @@ -79,7 +207,7 @@ interactions: - ARRAffinity=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24;Path=/;HttpOnly;Secure;Domain=westus2.quantum.azure.com - ARRAffinitySameSite=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24;Path=/;HttpOnly;SameSite=None;Secure;Domain=westus2.quantum.azure.com strict-transport-security: - - max-age=2592000 + - max-age=2592000; includeSubDomains transfer-encoding: - chunked vary: diff --git a/src/quantum/azext_quantum/tests/latest/recordings/test_targets.yaml b/src/quantum/azext_quantum/tests/latest/recordings/test_targets.yaml index bfe83923fe9..85fae9aeb71 100644 --- a/src/quantum/azext_quantum/tests/latest/recordings/test_targets.yaml +++ b/src/quantum/azext_quantum/tests/latest/recordings/test_targets.yaml @@ -1,4 +1,130 @@ interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:20 GMT + expires: + - Fri, 27 May 2022 17:09:20 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:24 GMT + expires: + - Fri, 27 May 2022 17:09:24 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:25 GMT + expires: + - Fri, 27 May 2022 17:09:25 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently - request: body: null headers: @@ -13,24 +139,24 @@ interactions: ParameterSetName: - -g -w -l User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2022-01-10-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-09T22:52:06.6450832Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"ionq-standard","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-14T16:49:38.6414588Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"DZH3178M639F","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"},{"providerId":"Microsoft.Simulator","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft.Simulator","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"aq-internal-testing","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded","resourceUsageId":"45ad12c0-48b2-4339-b31b-c0e34b8fce4a"},{"providerId":"quantinuum","providerSku":"test1","applicationName":"e2e-qsharp-tests-quantinuum","provisioningState":"Succeeded","resourceUsageId":"9cbc9cad-9837-4fae-be4b-53909ad7277f"},{"providerId":"rigetti","providerSku":"rigetti-private-beta","applicationName":"e2e-qsharp-tests-rigetti","provisioningState":"Succeeded"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' headers: cache-control: - no-cache content-length: - - '1707' + - '2227' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:54 GMT + - Fri, 27 May 2022 17:09:29 GMT etag: - - '"000088b0-0000-0800-0000-6111b1970000"' + - '"6000c54b-0000-0800-0000-6258510c0000"' expires: - '-1' pragma: @@ -58,28 +184,59 @@ interactions: Connection: - keep-alive User-Agent: - - az-cli-ext/0.6.1 azsdk-python-quantum/0.0.0.1 Python/3.8.2 (Windows-10-10.0.19041-SP0) + - az-cli-ext/0.15.0.8 azsdk-python-quantum/0.0.0.1 Python/3.10.1 (Windows-10-10.0.22000-SP0) method: GET uri: https://westus2.quantum.azure.com/v1.0/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests/providerStatus response: body: - string: '{"value":[{"id":"Microsoft","currentAvailability":"Available","targets":[{"id":"microsoft.paralleltempering-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.paralleltempering.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.qmc.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null}]},{"id":"ionq","currentAvailability":"Available","targets":[{"id":"ionq.qpu","currentAvailability":"Available","averageQueueTime":718,"statusPage":"https://status.ionq.co"},{"id":"ionq.simulator","currentAvailability":"Available","averageQueueTime":1,"statusPage":"https://status.ionq.co"}]},{"id":"1qbit","currentAvailability":"Available","targets":[{"id":"1qbit.tabu","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pathrelinking","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pticm","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"}]},{"id":"toshiba","currentAvailability":"Available","targets":[{"id":"toshiba.sbm.ising","currentAvailability":"Available","averageQueueTime":5,"statusPage":null}]},{"id":"honeywell","currentAvailability":"Degraded","targets":[{"id":"honeywell.hqs-lt-s1","currentAvailability":"Unavailable","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-sim","currentAvailability":"Available","averageQueueTime":6,"statusPage":"https://www.honeywell.com/en-us/company/quantum"}]}],"nextLink":null}' + string: 500 - The request timed out.

500 - The request timed out.

The + web server failed to respond within the specified time. headers: content-length: - - '2781' + - '221' + date: + - Fri, 27 May 2022 17:13:20 GMT + set-cookie: + - ARRAffinity=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24;Path=/;HttpOnly;Secure;Domain=westus2.quantum.azure.com + - ARRAffinitySameSite=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24;Path=/;HttpOnly;SameSite=None;Secure;Domain=westus2.quantum.azure.com + status: + code: 500 + message: '' +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Cookie: + - ARRAffinity=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24; + ARRAffinitySameSite=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24 + User-Agent: + - az-cli-ext/0.15.0.8 azsdk-python-quantum/0.0.0.1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://westus2.quantum.azure.com/v1.0/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests/providerStatus + response: + body: + string: '{"value":[{"id":"Microsoft","currentAvailability":"Available","targets":[{"id":"microsoft.paralleltempering-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.paralleltempering.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.simulatedannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.tabu.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.qmc.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.populationannealing-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null},{"id":"microsoft.substochasticmontecarlo-parameterfree.cpu","currentAvailability":"Available","averageQueueTime":0,"statusPage":null}]},{"id":"toshiba","currentAvailability":"Available","targets":[{"id":"toshiba.sbm.ising","currentAvailability":"Available","averageQueueTime":4,"statusPage":"https://aq-sbm.net/v1/service_monitor/index.html"}]},{"id":"honeywell","currentAvailability":"Available","targets":[{"id":"honeywell.hqs-lt-s1","currentAvailability":"Available","averageQueueTime":190070,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s2","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s2-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt-s1-sim","currentAvailability":"Available","averageQueueTime":10,"statusPage":"https://www.honeywell.com/en-us/company/quantum"},{"id":"honeywell.hqs-lt","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.honeywell.com/en-us/company/quantum"}]},{"id":"Microsoft.Simulator","currentAvailability":"Available","targets":[{"id":"microsoft.simulator.fullstate","currentAvailability":"Available","averageQueueTime":0,"statusPage":null}]},{"id":"1qbit","currentAvailability":"Available","targets":[{"id":"1qbit.tabu","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pathrelinking","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"},{"id":"1qbit.pticm","currentAvailability":"Available","averageQueueTime":0,"statusPage":"http://status.1qbit.com/"}]},{"id":"ionq","currentAvailability":"Available","targets":[{"id":"ionq.qpu","currentAvailability":"Available","averageQueueTime":509,"statusPage":"https://status.ionq.co"},{"id":"ionq.simulator","currentAvailability":"Available","averageQueueTime":2,"statusPage":"https://status.ionq.co"}]},{"id":"quantinuum","currentAvailability":"Available","targets":[{"id":"quantinuum.hqs-lt-s1","currentAvailability":"Available","averageQueueTime":190070,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s1-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s2","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s2-apival","currentAvailability":"Available","averageQueueTime":0,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s1-sim","currentAvailability":"Available","averageQueueTime":10,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt-s2-sim","currentAvailability":"Available","averageQueueTime":39,"statusPage":"https://www.quantinuum.com/products/h1"},{"id":"quantinuum.hqs-lt","currentAvailability":"Available","averageQueueTime":44761,"statusPage":"https://www.quantinuum.com/products/h1"}]},{"id":"rigetti","currentAvailability":"Available","targets":[{"id":"rigetti.sim.qvm","currentAvailability":"Available","averageQueueTime":5,"statusPage":"https://rigetti.statuspage.io/"},{"id":"rigetti.qpu.aspen-11","currentAvailability":"Available","averageQueueTime":5,"statusPage":"https://rigetti.statuspage.io/"},{"id":"rigetti.qpu.aspen-m-1","currentAvailability":"Available","averageQueueTime":5,"statusPage":"https://rigetti.statuspage.io/"}]}],"nextLink":null}' + headers: + content-length: + - '4997' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:56 GMT + - Fri, 27 May 2022 17:13:20 GMT + mise-correlation-id: + - 5d169e1d-d6a4-4886-a559-096635fd7a9b request-context: - appId=cid-v1:4d6ac272-7369-45c6-9036-63d733c8519f server: - Microsoft-IIS/10.0 - set-cookie: - - ARRAffinity=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24;Path=/;HttpOnly;Secure;Domain=westus2.quantum.azure.com - - ARRAffinitySameSite=a80c7c3a42bc29f88c9055a7e2789984b224746994993027ab866c65455cca24;Path=/;HttpOnly;SameSite=None;Secure;Domain=westus2.quantum.azure.com strict-transport-security: - - max-age=2592000 + - max-age=2592000; includeSubDomains transfer-encoding: - chunked vary: diff --git a/src/quantum/azext_quantum/tests/latest/recordings/test_version_check.yaml b/src/quantum/azext_quantum/tests/latest/recordings/test_version_check.yaml index efaeedb7d5d..aa2a1e0813f 100644 --- a/src/quantum/azext_quantum/tests/latest/recordings/test_version_check.yaml +++ b/src/quantum/azext_quantum/tests/latest/recordings/test_version_check.yaml @@ -9,7 +9,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -23,15 +23,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:23 GMT + - Fri, 27 May 2022 17:13:21 GMT expires: - - Thu, 23 Sep 2021 07:55:23 GMT + - Fri, 27 May 2022 17:13:21 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -51,7 +51,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -65,15 +65,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:25 GMT + - Fri, 27 May 2022 17:13:22 GMT expires: - - Thu, 23 Sep 2021 07:55:25 GMT + - Fri, 27 May 2022 17:13:22 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -93,7 +93,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -107,15 +107,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:27 GMT + - Fri, 27 May 2022 17:13:24 GMT expires: - - Thu, 23 Sep 2021 07:55:27 GMT + - Fri, 27 May 2022 17:13:24 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -135,7 +135,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -149,15 +149,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:29 GMT + - Fri, 27 May 2022 17:13:24 GMT expires: - - Thu, 23 Sep 2021 07:55:29 GMT + - Fri, 27 May 2022 17:13:24 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -177,7 +177,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -191,15 +191,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:30 GMT + - Fri, 27 May 2022 17:13:27 GMT expires: - - Thu, 23 Sep 2021 07:55:30 GMT + - Fri, 27 May 2022 17:13:27 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -219,7 +219,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -233,15 +233,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:32 GMT + - Fri, 27 May 2022 17:13:28 GMT expires: - - Thu, 23 Sep 2021 07:55:32 GMT + - Fri, 27 May 2022 17:13:28 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -261,7 +261,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -275,15 +275,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:33 GMT + - Fri, 27 May 2022 17:13:29 GMT expires: - - Thu, 23 Sep 2021 07:55:33 GMT + - Fri, 27 May 2022 17:13:29 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -303,7 +303,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -317,15 +317,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:34 GMT + - Fri, 27 May 2022 17:13:31 GMT expires: - - Thu, 23 Sep 2021 07:55:34 GMT + - Fri, 27 May 2022 17:13:31 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: @@ -345,7 +345,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.27.1 method: GET uri: https://aka.ms/azure-cli-extension-index-v1 response: @@ -359,15 +359,15 @@ interactions: content-length: - '0' date: - - Thu, 23 Sep 2021 07:55:35 GMT + - Fri, 27 May 2022 17:13:32 GMT expires: - - Thu, 23 Sep 2021 07:55:35 GMT + - Fri, 27 May 2022 17:13:32 GMT location: - https://azcliextensionsync.blob.core.windows.net/index1/index.json pragma: - no-cache request-context: - - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + - appId=cid-v1:26ef1154-5995-4d24-ad78-ef0b04f11587 server: - Kestrel strict-transport-security: diff --git a/src/quantum/azext_quantum/tests/latest/recordings/test_workspace.yaml b/src/quantum/azext_quantum/tests/latest/recordings/test_workspace.yaml index eb77f8f6e19..f50cd99cb91 100644 --- a/src/quantum/azext_quantum/tests/latest/recordings/test_workspace.yaml +++ b/src/quantum/azext_quantum/tests/latest/recordings/test_workspace.yaml @@ -1,4 +1,130 @@ interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:20 GMT + expires: + - Fri, 27 May 2022 17:09:20 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:7d63747b-487e-492a-872d-762362f77974 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:24 GMT + expires: + - Fri, 27 May 2022 17:09:24 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://aka.ms/azure-cli-extension-index-v1 + response: + body: + string: '' + headers: + cache-control: + - max-age=0, no-cache, no-store + connection: + - keep-alive + content-length: + - '0' + date: + - Fri, 27 May 2022 17:09:26 GMT + expires: + - Fri, 27 May 2022 17:09:26 GMT + location: + - https://azcliextensionsync.blob.core.windows.net/index1/index.json + pragma: + - no-cache + request-context: + - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 + server: + - Kestrel + strict-transport-security: + - max-age=31536000 ; includeSubDomains + x-response-cache-status: + - 'True' + status: + code: 301 + message: Moved Permanently - request: body: null headers: @@ -13,21 +139,63 @@ interactions: ParameterSetName: - -l -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.2 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.1 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?$filter=location%20eq%20%27westus2%27%20and%20resourceType%20eq%20%27Microsoft.Quantum%2FWorkspaces%27&$expand=createdTime%2CchangedTime%2CprovisioningState&api-version=2021-04-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-demo-2","name":"frtibble-demo-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2213768a-aa6c-4949-b3d7-f5d434e1e088","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-06T17:05:57.3048486Z","changedTime":"2021-07-27T05:47:10.0507963Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-07-06T17:05:58.7257667Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-06T17:06:13.5957969Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-demo-workspace","name":"frtibble-demo-workspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"290848fd-da74-4115-958f-a9c11f48a163","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-13T12:38:19.4032686Z","changedTime":"2021-07-27T05:47:57.917126Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-07-13T12:38:20.1561048Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-13T12:38:32.0680232Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/anraman-workspace","name":"anraman-workspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1dbf1cdb-8cf5-4fe4-9444-febd2bab3409","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-20T22:51:02.8804312Z","changedTime":"2021-07-27T05:44:50.4886063Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anraman@microsoft.com","createdByType":"User","createdAt":"2021-07-20T22:51:02.9329677Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-20T22:51:18.1153468Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/xfield-rg/providers/Microsoft.Quantum/Workspaces/azq-westuw2","name":"azq-westuw2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"37319216-7620-47a2-8030-a1e2b4b990bd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-12T21:23:39.6136763Z","changedTime":"2021-08-13T01:33:45.3421172Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"vitorcia@microsoft.com","createdByType":"User","createdAt":"2021-08-12T21:23:39.8031012Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-12T21:23:52.9328064Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3950376","name":"e2e-test-w3950376","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5022df26-4968-4226-8a58-d8d6a5c873ca","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T00:44:42.8443666Z","changedTime":"2021-08-25T00:55:05.8452953Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T00:44:43.1051158Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T00:44:57.1583338Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7129527","name":"e2e-test-w7129527","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ddf6fd12-eba6-4d98-b637-bab40fa84444","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T00:47:19.6819317Z","changedTime":"2021-08-25T00:47:37.5459563Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T00:47:19.9748024Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T00:47:31.6350202Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4098832","name":"e2e-test-w4098832","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"57c070dc-6434-432d-ac90-8d54b883dab0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:04:22.882857Z","changedTime":"2021-08-25T01:04:43.6049246Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:04:23.174168Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:04:37.5527729Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1315068","name":"e2e-test-w1315068","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1fc5427b-54f4-4dd5-96c5-1c7d04ed528f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:05:07.5431209Z","changedTime":"2021-08-25T01:05:27.9117062Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:05:07.8829937Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:05:22.2338331Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5352441","name":"e2e-test-w5352441","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5f7b94e9-e81a-400b-ab72-a4a2ec47c2bf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:18:32.5613149Z","changedTime":"2021-08-25T01:18:52.4851835Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:18:32.8224881Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:18:46.5385119Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1995962","name":"e2e-test-w1995962","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"19b91cca-8c7a-42fa-8551-b2f54a1d3404","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:31:21.0275647Z","changedTime":"2021-08-25T01:41:43.9999924Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:31:21.4143555Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:31:35.9401059Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6657221","name":"e2e-test-w6657221","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"27b3b127-67fa-40b6-8d98-d896b6b5cd23","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:32:43.5660443Z","changedTime":"2021-08-25T01:33:02.4976016Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:32:44.0270929Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:32:56.1919775Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9867934","name":"e2e-test-w9867934","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e4941863-fbb4-458a-99ed-4b2ef103badc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:36:47.0412303Z","changedTime":"2021-08-25T01:37:07.8041008Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:36:47.4354403Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:37:01.975321Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1471768","name":"e2e-test-w1471768","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7f575bf8-8dff-493b-9891-2ad653ee7c3a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:40:58.4735258Z","changedTime":"2021-08-25T01:41:19.4705908Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:40:58.9083241Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:41:13.8372459Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ms-canary4","name":"ms-canary4","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f159c531-f9e6-4ce9-858d-99491c363f17","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-01-12T22:03:20.6669678Z","changedTime":"2021-07-27T05:40:13.7100188Z","provisioningState":"Succeeded","tags":{"tag1":"value1"},"systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-01-12T22:03:21.0323859Z","lastModifiedBy":"georgenm@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-02-23T19:45:10.2561371Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adbai-test/providers/Microsoft.Quantum/Workspaces/adbai-privatepreview-test","name":"adbai-privatepreview-test","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a6469555-aa58-49c5-ab67-4ce4153d005f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-02-01T19:42:54.6555906Z","changedTime":"2021-07-27T05:35:59.3377455Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"adbai@microsoft.com","createdByType":"User","createdAt":"2021-02-01T19:42:56.2851246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-09T18:45:19.6652273Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-04-13T19:10:57.5675579Z","changedTime":"2021-08-09T23:02:13.3272331Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-09T22:52:06.6450832Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x5jmb-jpb-re","name":"temp-lg4x5jmb-jpb-re","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2bcfb156-7303-46b9-a786-67051d836bdf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:32:42.337053Z","changedTime":"2021-07-27T05:46:36.935754Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-11T18:32:42.3814041Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:32:54.3108749Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x","name":"temp-lg4x","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"21e4e4a0-51c5-44d1-a3ce-a33f3b9ef111","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:38:03.6680292Z","changedTime":"2021-07-27T06:46:36.799255Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T18:38:03.981634Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:38:18.051526Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x5jmb-re","name":"temp-lg4x5jmb-re","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"588757e1-ff2a-4d60-a9d8-6362c0d88635","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:40:40.9740311Z","changedTime":"2021-07-27T05:49:52.0964058Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T18:40:41.2019933Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:42:15.091327Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-xvjqusc5-tpf","name":"temp-xvjqusc5-tpf","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a1695601-54c1-4ede-b520-67a50fa491cd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T21:28:56.684082Z","changedTime":"2021-07-27T05:36:13.4405594Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T21:28:56.9129234Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T21:29:11.3864127Z"}}],"nextLink":"https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?%24filter=location+eq+%27westus2%27+and+resourceType+eq+%27Microsoft.Quantum%2fWorkspaces%27&%24expand=createdTime%2cchangedTime%2cprovisioningState&api-version=2021-04-01&%24skiptoken=eyJuZXh0TWFya2VyIjoiK1JJRDp%2bZjdOOUFQdlBLOGJ3WHBjSUFBQndEdz09I1JUOjEjVFJDOjEwMDAjSVNWOjIjSUVPOjY1NTUxI1FDRjo3I0ZQQzpBZ2hkSWdBQXdEMEFBRkE4QUFEQVBRQUFYU0lBQU1BOUFBQXVBUEFlWlVDL2FsbXJ0dWU1WkpYOUlrRC83ZzdvVVVELzY0WkFhLzI1K3YrL1gvNy92My8vRVVEL3Z5RkEveS9ZSWdBQXdEMEFBQUlBbklqY0lnQUF3RDBBQUFJQXFhemRJZ0FBd0QwQUFBSUFFWWJnSWdBQXdEMEFBQVFBNzU0ZGdQSWlBQURBUFFBQUJBQU52V3lBK0NJQUFNQTlBQUFFQUFhUVZxb0FJd0FBd0QwQUFBSUE4b3dGSXdBQXdEMEFBQlFBcDQ3M2dOMkF3SUI2aENXQkVRQ0FJT1dCRjRjTEl3QUF3RDBBQUFRQWU0Mi9nRW9qQUFEQVBRQUFDQUJRaGdtQWxZcXFsVkVqQUFEQVBRQUFCQUJLdlNtQVpTTUFBTUE5QUFBR0FJV1RBY0FBQm5zakFBREFQUUFBQ0FERWtBU0F6WUZyaVpFakFBREFQUUFBQWdBZ21BY2tBQURBUFFBQUFnQnpwQWtrQUFEQVBRQUFBZ0FZdndva0FBREFQUUFBQWdEVGh3d2tBQURBUFFBQUFnQmR2Q3NrQUFEQVBRQUFCQUJSQXlBR2ZTUUFBTUE5QUFBTUFKTUxRQTZBQUJJQXdZQThnNEVrQUFEQVBRQUFCQUR2dUFLQXl5UUFBTUE5QUFBRUFJS3JQSUhRSkFBQXdEMEFBQWdBd0pvR2dwcUpCWURVSkFBQXdEMEFBQUlBdmJ2WEpBQUF3RDBBQUFRQUpxcmFpOWtrQUFEQVBRQUFCQUIzaWlhTjlDUUFBTUE5QUFBRUFNZTFHNEQySkFBQXdEMEFBQUlBSTczNEpBQUF3RDBBQUFRQUlaeXVnUHNrQUFEQVBRQUFBZ0R3dXhRbEFBREFQUUFBQWdDYWhCMGxBQURBUFFBQUFnRFpwQjRsQUFEQVBRQUFCZ0F6bHVXQTNKVWhKUUFBd0QwQUFBSUFoN1VvSlFBQXdEMEFBQUlBTHJvcUpRQUF3RDBBQUFRQU5ZWkRneXdsQUFEQVBRQUFBZ0NOaHpBbEFBREFQUUFBQWdEU3FqUW1BQURBUFFBQUFnRHdyYThuQUFEQVBRQUFBZ0E0ayt3bkFBREFQUUFBQkFCMnZuaUE3U2NBQU1BOUFBQUVBR3VEODRVTktBQUF3RDBBQUFRQW1ZdENnbHNvQUFEQVBRQUFFQURQZ0txQTRRQUFvT3FBQ0lCOGtMR2NhU2dBQU1BOUFBQUlBTHluQWNBWUFONkNhaWdBQU1BOUFBQUVBRVdZVjVOeEtBQUF3RDBBQUFZQWNJeVppcmlCY3lnQUFNQTlBQUFDQU5HOWRDZ0FBTUE5QUFBQ0FLZXBnaWdBQU1BOUFBQUNBS20vaGlnQUFNQTlBQUFDQUp1ZGh5Z0FBTUE5QUFBQ0FHeTBpU2dBQU1BOUFBQUNBSm1NbGlnQUFNQTlBQUFFQUt1bStvZWJLQUFBd0QwQUFBUUFrcDBLZ0tNb0FBREFQUUFBQkFCUWg5MjFyQ2dBQU1BOUFBQUNBSlNTdkNnQUFNQTlBQUFDQUkrMmlpa0FBTUE5QUFBQ0FEQ21CaW9BQU1BOUFBQUNBQXk3Q1NvQUFNQTlBQUFDQUJhUURTb0FBTUE5QUFBQ0FLV0NlaW9BQU1BOUFBQUdBT3kwVDRIamdYMHFBQURBUFFBQUJBQkt0QW1BZ2lvQUFNQTlBQUFHQUZ1SERZQXdnSVVxQUFEQVBRQUFCZ0FuaHI2cEFJQ1hLZ0FBd0QwQUFBWUFiN2dSQUF3QXBpb0FBTUE5QUFBQ0FEYUtxaW9BQU1BOUFBQUdBSUNRQVlBU2dERXJBQURBUFFBQUFnRFRpRFVyQUFEQVBRQUFBZ0Jrdmp3ckFBREFQUUFBQWdEUGpWNHJBQURBUFFBQUJBQ01rQTJBd1NzQUFNQTlBQUFJQUErbmFvWkRnbHlBMHlzQUFNQTlBQUFFQUhtd0xJQkFMQUFBd0QwQUFCUUFrb3ZZaFRhQ3Q0RUFrZ0lCQUdBQkFGQ0MxSUZHTEFBQXdEMEFBQUlBNG9FR0xRQUF3RDBBQUFJQUE0dFRMZ0FBd0QwQUFBUUE0NnZWZ0ZndUFBREFQUUFBQmdCdHZnSEFCZ0JpTGdBQXdEMEFBQVlBVVNqQUFkYUJZeTRBQU1BOUFBQU9BUEVLQU9EaEFBQWM3NERjZ09tQ2F5NEFBTUE5QUFBQ0FDcVRieTRBQU1BOUFBQUNBTGFwZnk0QUFNQTlBQUFDQUNxY3BDNEFBTUE5QUFBQ0FCaVJCUzhBQU1BOUFBQUVBUEVtQUVpd0x3QUF3RDBBQUFJQWQ0UHFMd0FBd0QwQUFBSUFpcUk0TUFBQXdEMEFBQUlBNTcyQ01BQUF3RDBBQUFJQVc0d21NUUFBd0QwQUFBSUFRSmxoTVFBQXdEMEFBQUlBL0xwbE1RQUF3RDBBQUFnQXE3TCtnZUVER0FCeE1RQUF3RDBBQUFJQXU1MkNNUUFBd0QwQUFBSUFxWk9PTVFBQXdEMEFBQW9BNHpNQXdBRUFnQUh4ZzQ4eEFBREFQUUFBQmdCaUpRQXdBQWlVTVFBQXdEMEFBQXdBdW9RenJ3RUJBQjY1aENLQWxURUFBTUE5QUFBd0FJRUpBSGhpQVFBR0F3QmZnZ0hBR0tDZWdSK0FnUUJnQnR5QkFoQVlBQUVBMGdBQXdGQUFVWU95RVFBd0dBQ0tncGt4QUFEQVBRQUFBZ0J1cUJVeUFBREFQUUFBQkFBQk9BQW96eklBQU1BOUFBQUVBT0VRQUFaVk13QUF3RDBBQUJnQVhhQy9nQnVFR1lBamdUeUE1b01RZ0ZhQXdvSU9nRW1BWURNQUFNQTlBQUFHQUxDb2o0QUVnV0V6QUFEQVBRQUFCQUJWcGl5QWVqTUFBTUE5QUFCT0FFNkthb0JoZ1VHQVI0RGtpUU9BVklFWWdKYUFWSU5DZ0xLQVlvQVBnb21CYjRCQ2dDbUFab0NRZ011QXdJQlFnRXFCY29ERWdPU0hpNEVSZ0plQU1ZRFJnQVNBRG9BRWdFbUF3SUlMZ0hzekFBREFQUUFBTGdCOGhSS0FZSUJHZ0dhQURaQWdnZFNBYm9DV2dmNlFZUUJBUVBlRENJQ2dnRnlBcVlDeEFnQ0JaWUF1Z0MyQWZETUFBTUE5QUFBS0FHT0JHSUJhZ0JpQXlZQUhOQUFBd0QwQUFBZ0FyNU1Cd0ZFQXY0c01OQUFBd0QwQUFCUUFnUVV3d05JQmdBRU1BRFNFNllIQkFLTUExSVlqTkFBQXdEMEFBQUlBSElzbk5BQUF3RDBBQUFRQUFTZ0F3UFkwQUFEQVBRQUFCQUJ4REFBRE1EWUFBTUE5QUFBQ0FIaU5iellBQU1BOUFBQUNBQVNFakRZQUFNQTlBQUFFQU1FZ1FFQ1VOZ0FBd0QwQUFBUUFFVFFBb0pnMkFBREFQUUFBQWdDY3BzczJBQURBUFFBQUJBQWhBUUFESWpjQUFNQTlBQUFFQUhFMkFCSitPQUFBd0QwQUFBSUFySXJMT0FBQXdEMEFBQVFBR0o0WWdNODRBQURBUFFBQUFnQWRoblk1QUFEQVBRQUFDQUFSSmJBQUlRQUFCbnM1QUFEQVBRQUFCQUNSQ1JJQWlqa0FBTUE5QUFBQ0FCK1lrRGtBQU1BOUFBQUVBS21WSzZxUk9RQUF3RDBBQUFJQTlJQ1hPUUFBd0QwQUFBZ0F4clh1aVFIQUNRQ1lPUUFBd0QwQUFBSUFyb0djT1FBQXdEMEFBQW9BTVNnZ0FaRURBRkhvaUs0NUFBREFQUUFBQWdCRm5WQThBQURBUFFBQUFnQmp2Zz09In0%3d"}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocro-demo-workspace-2","name":"alchocro-demo-workspace-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ed3060de-325c-434a-b097-896b205b61e6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-24T15:49:53.2985494Z","changedTime":"2021-09-24T19:59:55.2499435Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-09-24T15:49:53.3331397Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-24T15:50:05.0541936Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5540527","name":"e2e-test-w5540527","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ad09ba85-52f5-4c79-ae3d-ed89d9e9be70","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-10-27T20:27:53.1133777Z","changedTime":"2021-10-28T00:38:13.3723627Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-10-27T20:27:53.1968225Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-10-27T20:28:05.1631771Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4855864","name":"e2e-test-w4855864","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"fd6a4003-cebc-419c-8c37-18c47b212eac","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:15:06.1850843Z","changedTime":"2021-11-17T05:25:30.3815395Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:15:06.3341028Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:15:17.6519593Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6228340","name":"e2e-test-w6228340","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"048a0a81-4726-4910-829c-010512be38eb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:21:41.0628732Z","changedTime":"2021-11-17T05:32:00.1514639Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:21:41.1044072Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:21:52.2788498Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8109079","name":"e2e-test-w8109079","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c4567da2-0059-456e-8ce6-fee612a7ee7e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:21:44.1631039Z","changedTime":"2021-11-17T05:31:45.8563779Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:21:44.2083378Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:21:55.4031899Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5782549","name":"e2e-test-w5782549","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"092325ee-ed8e-497a-b4c7-02b0b55db7c6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:45:16.2745407Z","changedTime":"2021-11-17T05:55:36.0498468Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:45:16.5884078Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:45:27.7474367Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4876898","name":"e2e-test-w4876898","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f91bc74e-0d13-450e-8f81-ca2c64f650ed","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:49:40.6106761Z","changedTime":"2021-11-17T05:59:59.7184388Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:49:40.7274133Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:49:51.8668722Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6670315","name":"e2e-test-w6670315","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"991ab25a-3235-469c-8b54-75d0413dd2ce","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:49:51.7564555Z","changedTime":"2021-11-17T05:59:53.1971139Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:49:51.813483Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:50:03.1397493Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8407759","name":"e2e-test-w8407759","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eabfc985-ca1e-42c9-8cad-056203c97046","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:32:14.2481459Z","changedTime":"2021-11-17T08:42:37.9931355Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:32:14.3542652Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:32:25.5323578Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8077566","name":"e2e-test-w8077566","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ae7f1936-4d88-4e40-ab38-1ab9a831b3bc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:32:17.1388858Z","changedTime":"2021-11-17T08:42:19.2327764Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:32:17.2229833Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:32:28.6473002Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5207694","name":"e2e-test-w5207694","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"381c9fed-03e8-49ee-9eee-f2622f583caa","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:35:42.2176879Z","changedTime":"2021-11-17T08:46:03.7562542Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:35:42.2830217Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:35:53.8898334Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6300926","name":"e2e-test-w6300926","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6f2294dc-e925-4506-9a97-8cd66640b811","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:35:43.0293703Z","changedTime":"2021-11-17T08:45:44.5428285Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:35:43.0970922Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:35:54.207906Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6665845","name":"e2e-test-w6665845","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5d176ebd-e296-4c4f-8911-4b3eef0197e2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:38:16.3423139Z","changedTime":"2021-11-17T08:48:35.6672338Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:38:16.434159Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:38:27.5708979Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4743300","name":"e2e-test-w4743300","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"299c639c-3492-4399-a148-3ed25c6afdf0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:38:19.2877562Z","changedTime":"2021-11-17T08:48:21.6339123Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:38:19.3548462Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:38:31.8462236Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1862027","name":"e2e-test-w1862027","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"aa72b24b-6caf-4484-ad42-b7291fcb6d91","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:43:09.1465801Z","changedTime":"2021-11-17T08:53:28.1558472Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:43:09.2208479Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:43:20.3800605Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9961035","name":"e2e-test-w9961035","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"67ec5fa2-5ee8-4e73-b667-3056b7067f4a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:43:11.7355696Z","changedTime":"2021-11-17T08:53:15.0709211Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:43:11.7927535Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:43:24.3950899Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8836578","name":"e2e-test-w8836578","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a08a3ed4-ce49-440e-98a7-19933b814c4d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:49:34.3348762Z","changedTime":"2021-11-17T08:59:53.7874047Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:49:34.6022564Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:49:45.6292246Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9201025","name":"e2e-test-w9201025","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ca16f94a-d6ec-430d-829b-99f326f431ee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:49:37.6674027Z","changedTime":"2021-11-17T08:59:40.0560962Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:49:37.7084872Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:49:49.0356399Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-aq-demo","name":"frtibble-aq-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9be73679-1dcb-40fa-9e59-b8c708652081","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T11:07:06.6164418Z","changedTime":"2021-11-17T15:17:10.4784318Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-11-17T11:07:08.1606526Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T11:07:24.7945612Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/aqua-live-tests-westus2","name":"aqua-live-tests-westus2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"fa194e97-b24f-4947-be25-cda79b4b89e7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T00:00:48.7169789Z","changedTime":"2021-11-20T04:10:51.1959746Z","provisioningState":"Succeeded","systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-11-20T00:00:48.9547426Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T00:06:27.9887571Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1664581","name":"e2e-test-w1664581","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"668ac433-20e4-474e-a69d-e62b69a10166","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T00:17:03.9667622Z","changedTime":"2021-11-20T04:27:24.070443Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T00:17:04.4593933Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T00:17:15.962484Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5042098","name":"e2e-test-w5042098","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"70d77896-182c-43fc-8367-9ae7a1389776","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T00:20:09.884656Z","changedTime":"2021-11-20T04:30:31.860609Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T00:20:10.6517794Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T00:20:22.7049235Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9280502","name":"e2e-test-w9280502","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"64d748f5-154a-4a91-96c1-92b3d8cc64d1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T01:05:36.1673761Z","changedTime":"2021-11-20T05:15:56.0615061Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T01:05:36.7063167Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T01:05:48.0496243Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9580647","name":"e2e-test-w9580647","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"47c800cd-4cb6-4968-b96a-0ce3a289a627","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T03:10:05.5194531Z","changedTime":"2021-11-20T07:20:10.5001866Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T03:10:06.4226022Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T03:10:17.8876556Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9917119","name":"e2e-test-w9917119","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5d7780b2-0637-49bf-aac2-43710ab0b757","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-22T20:55:11.4773678Z","changedTime":"2021-11-23T01:05:47.909964Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-22T20:55:12.1540687Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-22T20:55:24.4224163Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4880196","name":"e2e-test-w4880196","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a7bf9e3e-9ed7-4f3d-bceb-287b5b95ed1c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-22T22:26:12.8921343Z","changedTime":"2021-11-23T03:05:38.4242633Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-22T22:26:13.3547953Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-22T22:26:24.916178Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2946016","name":"e2e-test-w2946016","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ba0bc296-7cb7-4d1c-99f4-706f61ac42e3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-23T19:52:32.0441475Z","changedTime":"2021-11-24T00:02:52.8981204Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-23T19:52:32.1033454Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-23T19:52:43.7969179Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7100985","name":"e2e-test-w7100985","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"75452300-0608-439d-9420-32c6b0e8fc71","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-23T19:55:50.0506527Z","changedTime":"2021-11-24T00:06:11.6405091Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-23T19:55:50.7644563Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-23T19:56:02.124355Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w6072621","name":"e2e-test-w6072621","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ae63ce10-ef42-471b-848a-0c10832c2160","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T19:50:05.5374445Z","changedTime":"2021-11-25T01:05:47.0693628Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T19:50:06.4709757Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T19:50:18.6978461Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9533017","name":"e2e-test-w9533017","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b543ea04-d770-4d93-864e-3b5c925e07dd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T21:17:04.7307646Z","changedTime":"2021-11-25T01:27:23.5822555Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T21:17:04.7997369Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T21:17:16.2270365Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w6871058","name":"e2e-test-w6871058","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e14a6b19-dcd9-431c-8def-1615376ed814","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T21:24:05.8759355Z","changedTime":"2021-11-25T01:34:26.4676539Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T21:24:06.7536246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T21:24:18.3622439Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4863478","name":"e2e-test-w4863478","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0d0266dd-fdb3-436d-9345-fd0be6c062b7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T21:58:35.3039831Z","changedTime":"2021-11-25T02:08:59.3387135Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T21:58:36.4107392Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T21:58:49.455934Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5572441","name":"e2e-test-w5572441","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d043067d-14ea-4d12-a003-c8ca677e8bbc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:18:59.7514704Z","changedTime":"2021-11-25T03:29:01.347322Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:18:59.7944371Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:19:11.1930517Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7463427","name":"e2e-test-w7463427","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"04c680c3-6a94-4402-902d-6f4d22fa5f16","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:19:11.8478719Z","changedTime":"2021-11-25T02:29:13.2655969Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:19:11.901633Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:19:22.979348Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8570457","name":"e2e-test-w8570457","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"30016da7-6ee8-4f20-a1e1-8dfcb1fdc845","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:21:11.7908202Z","changedTime":"2021-11-25T02:31:21.129405Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T22:21:12.5426422Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:21:27.8992171Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6233595","name":"e2e-test-w6233595","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"65ecd9ef-670d-42ee-99eb-f9705bda2d7b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:27:15.609448Z","changedTime":"2021-11-25T02:37:36.4270079Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:27:15.6942224Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:27:26.9287465Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5860036","name":"e2e-test-w5860036","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c4888ec9-c989-4068-805b-b9b946ae98ea","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:27:16.2418828Z","changedTime":"2021-11-25T02:37:20.1496858Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:27:16.2965093Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:27:28.6567579Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3890773","name":"e2e-test-w3890773","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cc84afdf-9168-411d-b67a-43ae1d11961b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:29:36.2955356Z","changedTime":"2021-11-25T02:39:55.3776173Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:29:36.331524Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:29:47.7144381Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7457740","name":"e2e-test-w7457740","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"af5b8939-d925-4b8e-a42c-b5ff8442f10e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:34:56.7553748Z","changedTime":"2021-11-25T02:45:16.4660049Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:34:56.7962246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:35:08.018217Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9870475","name":"e2e-test-w9870475","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"945f9962-1feb-4ec4-8cae-86588be71012","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:41:42.6116209Z","changedTime":"2021-11-25T02:52:04.3476198Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T22:41:42.6566867Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:41:56.0738603Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6825514","name":"e2e-test-w6825514","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a0099ef0-f5df-484f-8b50-52528075e254","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:51:55.8144548Z","changedTime":"2021-11-25T04:02:15.7115345Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:51:55.8782928Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:52:07.4710334Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9967916","name":"e2e-test-w9967916","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a1c7c513-b690-44c7-a2e3-005e6029824f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:53:14.9051415Z","changedTime":"2021-11-25T04:03:34.4302023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:53:14.9906211Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:53:26.5211662Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6832524","name":"e2e-test-w6832524","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c113066b-df4c-480f-b6a9-a0be007375b2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:54:07.1179093Z","changedTime":"2021-11-25T03:04:26.6089025Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:54:07.1653425Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:54:18.2284545Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5527078","name":"e2e-test-w5527078","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5004f14b-1d72-4409-ad5a-5c60b684dddd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:55:19.822493Z","changedTime":"2021-11-25T03:05:21.3256673Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:55:19.890857Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:55:31.0914039Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8125607","name":"e2e-test-w8125607","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"107c2ab8-dc76-486d-a890-0ee44d0bcc34","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:57:03.4980861Z","changedTime":"2021-11-25T03:07:05.0084321Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:57:03.5443599Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:57:15.2177754Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5509202","name":"e2e-test-w5509202","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"842922a1-3cb0-4f66-8d02-c5ab57be3bdb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:57:29.6213311Z","changedTime":"2021-11-25T03:07:48.3737565Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:57:29.6792471Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:57:40.686122Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9356573","name":"e2e-test-w9356573","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f7b55351-a07a-4808-8935-a0a00f49afca","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:04:16.5021351Z","changedTime":"2021-11-25T04:14:18.38674Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:04:16.5663437Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:04:27.8826218Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1538504","name":"e2e-test-w1538504","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a95254e4-d55f-4618-b916-f29546440b7a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:20:50.7599634Z","changedTime":"2021-11-25T03:31:10.1978664Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:20:50.8691491Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:21:01.9607891Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8696381","name":"e2e-test-w8696381","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c3724c66-2e4c-4338-96f4-0f8d7dae4e1d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:28:47.4148975Z","changedTime":"2021-11-25T03:38:49.9153415Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:28:47.4766149Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:28:59.2548706Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7795273","name":"e2e-test-w7795273","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"dec4d277-d371-48d4-85f4-3da62d832f57","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:34:42.5773572Z","changedTime":"2021-11-25T03:44:44.7757396Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:34:42.6763231Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:34:54.7045343Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4326004","name":"e2e-test-w4326004","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a86c15c8-4e2b-4a55-b141-0a43c3c6f8af","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:35:12.1248876Z","changedTime":"2021-11-25T04:04:01.5434073Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T23:35:12.847694Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:35:24.6220347Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9108046","name":"e2e-test-w9108046","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2f431a83-e4bd-41c2-8ea9-96b2460ca00c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:36:19.7915882Z","changedTime":"2021-11-25T03:46:41.9977301Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:36:19.8273268Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:36:31.9386739Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7659677","name":"e2e-test-w7659677","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"71081933-8a77-432f-a3c7-cd6fbfc660d3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:44:52.1498756Z","changedTime":"2021-11-25T03:55:13.0881473Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:44:52.200568Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:45:03.4006213Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7182243","name":"e2e-test-w7182243","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f3219ba2-e348-47a1-9e2a-92253d8b93a3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:45:37.6276511Z","changedTime":"2021-11-25T03:55:39.8317319Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:45:37.6745429Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:45:48.7247684Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6406401","name":"e2e-test-w6406401","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e77f0891-7ec9-44c7-bf4f-19766647ef92","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:47:39.3364381Z","changedTime":"2021-11-25T03:58:01.6363827Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:47:39.409324Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:47:51.1517951Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7428752","name":"e2e-test-w7428752","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1f5ad39d-0201-42b1-9f8c-a76d130e4147","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:48:39.9576729Z","changedTime":"2021-11-25T03:59:03.1093366Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:48:40.0288305Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:48:51.0351743Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5701103","name":"e2e-test-w5701103","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"55a80bed-9e05-4164-bb1e-326a30dacf2e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:50:13.4740003Z","changedTime":"2021-11-25T05:00:32.1019452Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:50:13.5857643Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:50:24.9753471Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1965290","name":"e2e-test-w1965290","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0ed35025-4c81-48bf-80c2-04329b8a317d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:51:22.6021877Z","changedTime":"2021-11-25T04:01:43.1514675Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:51:22.6719801Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:51:34.2735861Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9101507","name":"e2e-test-w9101507","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5b74611c-76b5-4491-a48b-693f897560ec","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:52:00.2725449Z","changedTime":"2021-11-25T04:02:22.2798037Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:52:00.3174342Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:52:11.9052635Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5189269","name":"e2e-test-w5189269","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ffcd5add-a43a-43c0-8c65-55ea0f533cdf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T00:23:12.2934941Z","changedTime":"2021-11-25T04:33:32.1147423Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T00:23:12.3433276Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T00:23:23.6176145Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1967034","name":"e2e-test-w1967034","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d36e282b-91ed-475a-a661-1231521384db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:13:11.6543448Z","changedTime":"2021-11-25T05:23:32.4072334Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:13:11.7716155Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:13:23.1105113Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6195766","name":"e2e-test-w6195766","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"69619439-1ebf-4531-85ba-57703fe4fbfd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:13:52.3944319Z","changedTime":"2021-11-25T06:24:11.7754717Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:13:52.5021605Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:14:04.0162452Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4189912","name":"e2e-test-w4189912","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"db3a0be3-e3fe-4053-8173-1f647dfbc176","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:14:42.4329016Z","changedTime":"2021-11-25T05:25:00.5650161Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:14:42.5005022Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:14:53.5413605Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8313409","name":"e2e-test-w8313409","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"93e6c0cb-c533-4d8b-97de-1be38faf41e6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:17:00.4556848Z","changedTime":"2021-11-25T05:27:02.7115488Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:17:00.5283441Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:17:11.8984059Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7559796","name":"e2e-test-w7559796","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"799951c4-918b-4e1f-b078-4a1d7540e097","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:19:05.0022131Z","changedTime":"2021-11-25T05:29:24.7693469Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:19:05.0890624Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:19:16.2509778Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1549628","name":"e2e-test-w1549628","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ced1e797-0472-45f3-b43e-602d46594171","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:22:16.7883192Z","changedTime":"2021-11-25T05:32:37.0135288Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:22:16.8477428Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:22:28.6733309Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7638833","name":"e2e-test-w7638833","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ab1360e4-8375-4f72-8595-2bf2ac7a094f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:24:50.8580183Z","changedTime":"2021-11-25T05:35:11.4810717Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:24:50.9189473Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:25:02.0620308Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5472943","name":"e2e-test-w5472943","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d25b4631-0e6b-442a-be9d-dd360e7d3035","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:24:57.9331807Z","changedTime":"2021-11-25T05:35:00.6695862Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:24:57.9716656Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:25:09.0594506Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2421488","name":"e2e-test-w2421488","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8b4aa6bf-da6e-4153-86af-c12ea96d497c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:26:18.4789461Z","changedTime":"2021-11-25T05:36:38.3990152Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:26:18.5643019Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:26:29.9930254Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3474593","name":"e2e-test-w3474593","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"07414bfb-786a-429e-b679-aa888e81056f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:27:08.3240084Z","changedTime":"2021-11-25T05:37:28.085094Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:27:08.3667136Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:27:19.3735134Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9972591","name":"e2e-test-w9972591","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8703be6d-5ebb-4336-8f4b-7fe0536823d7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:29:05.9194618Z","changedTime":"2021-11-25T06:39:07.7183593Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:29:05.989571Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:29:17.0184959Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7610181","name":"e2e-test-w7610181","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"943ed456-d7ba-4714-bc5d-e3d9708258b1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:31:58.5460508Z","changedTime":"2021-11-25T05:42:17.4656289Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:31:58.5916601Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:32:09.8338521Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5262982","name":"e2e-test-w5262982","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1b0b7505-2722-4513-9e0f-cd944a38f0b3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T02:00:10.8605701Z","changedTime":"2021-11-25T06:10:32.288029Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-25T02:00:11.9584224Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T02:00:23.9054229Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9475780","name":"e2e-test-w9475780","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2e322003-21e6-403f-8280-3f25e02c6e86","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T02:18:35.942469Z","changedTime":"2021-11-25T06:29:00.0625644Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-25T02:18:36.9353617Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T02:18:49.0854048Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3177562","name":"e2e-test-w3177562","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"639c9c01-66ca-43f0-a9ba-f79aff8360ee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T02:54:42.6378572Z","changedTime":"2021-11-25T07:05:05.8969304Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-25T02:54:43.4317562Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T02:54:55.0561861Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8724250","name":"e2e-test-w8724250","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1889c9a7-fdc3-4fe0-8067-f56ff501bd48","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:02:47.4465897Z","changedTime":"2021-11-29T23:13:07.2249505Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:02:47.496661Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:02:59.247862Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2315821","name":"e2e-test-w2315821","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"650d907d-0673-4135-ba71-2d93d25327e7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:02:53.8957456Z","changedTime":"2021-11-29T23:12:55.060864Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:02:53.9780123Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:03:05.0652491Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3817194","name":"e2e-test-w3817194","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9f897f0b-d9a4-49fb-a6c4-cbc0390fa04c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:04:38.3106297Z","changedTime":"2021-11-29T23:14:58.7458013Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:04:38.3568636Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:04:49.6849875Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9276310","name":"e2e-test-w9276310","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7df99e98-7edc-4dcd-8504-20d5a6f6d96d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:05:39.1122204Z","changedTime":"2021-11-29T23:15:43.2300033Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:05:39.1561205Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:05:52.0303472Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5252312","name":"e2e-test-w5252312","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8eb4a9d0-f03d-4f2e-a2fa-96a60a4b59ef","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:07:13.091232Z","changedTime":"2021-11-29T23:17:15.2565612Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:07:13.1627581Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:07:24.5592467Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4361607","name":"e2e-test-w4361607","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"3ce7ea68-792f-4ed7-b4e2-8e98aea42a1b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:11:37.2689258Z","changedTime":"2021-11-29T23:21:56.3836401Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:11:37.3093303Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:11:48.8567867Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2163123","name":"e2e-test-w2163123","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6f11511c-912d-4024-bd9f-ec6aea16695d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:14:58.5607594Z","changedTime":"2021-11-29T23:25:18.6380062Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:14:58.6207239Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:15:09.9656946Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2434112","name":"e2e-test-w2434112","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6ebaa466-d9a9-48d6-b882-66b8a75d76de","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:21:04.513579Z","changedTime":"2021-11-29T23:31:07.0592672Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:21:04.5602201Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:21:15.6611706Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7875149","name":"e2e-test-w7875149","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b0fcdfc8-3aa5-4be9-917f-ad9329da3990","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:21:57.136968Z","changedTime":"2021-11-29T23:32:17.9253461Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:21:57.1749325Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:22:08.6271858Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3242529","name":"e2e-test-w3242529","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a5b25477-581b-492f-b3c9-1cd8fd2c3a5d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:29:03.2851269Z","changedTime":"2021-11-29T23:39:23.0803865Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:29:03.3441566Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:29:14.7642927Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7301010","name":"e2e-test-w7301010","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d01bb353-fe5c-4664-9fff-3a6ed4494550","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T20:14:07.3519283Z","changedTime":"2021-11-30T00:24:30.5174775Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-29T20:14:08.1194402Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T20:14:19.8674907Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8424849","name":"e2e-test-w8424849","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5ff957f9-824f-41c9-ad7a-0dea8d82d647","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T00:20:22.227195Z","changedTime":"2021-11-30T04:30:44.391078Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-30T00:20:23.1146634Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T00:20:34.9803578Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5821279","name":"e2e-test-w5821279","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"012ac8f3-df01-453a-8503-769910333492","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-03T22:32:17.3507745Z","changedTime":"2021-12-04T02:59:39.4956444Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-03T22:32:18.4454267Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-03T22:32:30.4885577Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/newworkspacealchocro","name":"newworkspacealchocro","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c0e36373-6730-4ef8-b5cc-f4574f2f02e9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-06T21:42:50.2215224Z","changedTime":"2021-12-07T02:05:46.1545647Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-12-06T21:42:50.7460926Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-06T21:46:32.597632Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocronewworkspace","name":"alchocronewworkspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cad54f37-3424-43dd-9d94-405311b2d66b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-06T21:47:56.2755818Z","changedTime":"2021-12-07T01:58:00.0808281Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-12-06T21:47:56.7360781Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-06T21:56:34.4025223Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3550672","name":"e2e-test-w3550672","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cf711001-6f5e-47d1-8646-7d87c8b1921c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-07T03:49:38.4698949Z","changedTime":"2021-12-07T07:59:44.6140031Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-07T03:49:39.3276489Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-07T03:49:50.8109751Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4120206","name":"e2e-test-w4120206","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2d7448f7-f57b-45af-8900-7e068fccda37","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-08T03:01:40.9648593Z","changedTime":"2021-12-08T09:05:37.9560468Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-08T03:01:41.7029575Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-08T03:01:53.2264744Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3124944","name":"e2e-test-w3124944","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6b96073f-d8a9-4dec-9e31-d986fd0ebd77","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-08T23:39:10.9884233Z","changedTime":"2021-12-09T03:49:17.5739855Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-08T23:39:12.0144124Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-08T23:39:23.3816353Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3909585","name":"e2e-test-w3909585","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7de13c8f-dada-4521-98b1-689fd8605e70","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-08T23:57:49.1577734Z","changedTime":"2021-12-09T04:08:11.0247659Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-08T23:57:49.6522239Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-08T23:58:01.1431035Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1268510","name":"e2e-test-w1268510","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"65017e5e-af56-46aa-81cc-69392b2477c4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T00:15:51.858697Z","changedTime":"2021-12-09T04:26:15.8244937Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T00:15:52.7641252Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T00:16:04.8999526Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7663672","name":"e2e-test-w7663672","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c554b4f8-5933-466e-b8ab-8235b23685bc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T04:30:48.2846062Z","changedTime":"2021-12-09T09:05:39.1892099Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T04:30:49.3605617Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T04:31:01.490172Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3400453","name":"e2e-test-w3400453","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"18ee497f-572e-4e01-84e9-5ffcf0d20ee5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:04:30.0028598Z","changedTime":"2021-12-09T23:02:04.4315668Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:04:30.8660384Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:04:42.8154391Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2798711","name":"e2e-test-w2798711","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"057ff8db-28bc-423f-b288-90ca4963e5d1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:28:56.3076109Z","changedTime":"2021-12-09T21:39:17.8979458Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:28:57.0971035Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:29:08.9570677Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5852082","name":"e2e-test-w5852082","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7ad68f6f-8284-4cd6-90bd-5f5b53788492","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:29:38.3787826Z","changedTime":"2021-12-09T22:39:40.90506Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:29:38.8370141Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:29:50.040925Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2943174","name":"e2e-test-w2943174","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f5216481-d6e3-4a12-ac52-05c736bf9d40","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:51:21.9040016Z","changedTime":"2021-12-09T22:01:28.9192599Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:51:23.4181811Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:51:35.6792135Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3490822","name":"e2e-test-w3490822","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5b170622-349f-4b9b-bdfe-f7bd5312bfce","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T18:13:52.3915697Z","changedTime":"2021-12-09T22:23:58.1941726Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T18:13:53.5773516Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T18:14:05.334819Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5343297","name":"e2e-test-w5343297","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"30bd7209-52ea-4424-937c-888d0eb5f3b2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T18:13:58.010279Z","changedTime":"2021-12-09T23:24:02.382978Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T18:13:58.7613952Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T18:14:10.6198278Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5357218","name":"e2e-test-w5357218","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e4bff9b2-aad2-4036-84c9-54c5a7956992","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T19:13:39.9593672Z","changedTime":"2021-12-09T23:24:04.2376062Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T19:13:41.2428804Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T19:13:53.464273Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7145824","name":"e2e-test-w7145824","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"61277803-fbb2-404c-8340-6da4f7ace41d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T19:48:07.8957778Z","changedTime":"2021-12-10T00:58:10.7812653Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T19:48:08.5686182Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T19:48:20.2215992Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7353592","name":"e2e-test-w7353592","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2eb6a336-fb74-49bb-a12a-45fc1c76ecef","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T19:58:40.0174097Z","changedTime":"2021-12-10T00:09:02.1761746Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T19:58:40.6876539Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T19:58:52.9880512Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo-sim","name":"demo-sim","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9f1e6bb4-9785-41e2-b70e-3f1b127cd47e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-28T23:18:34.6590352Z","changedTime":"2022-03-01T18:06:20.2959384Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2022-01-28T23:18:34.8885124Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-01T17:56:13.8011097Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5253669","name":"e2e-test-w5253669","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"691bbfbe-5c7e-4aa4-9391-ce266a27e404","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-04T22:38:35.7142728Z","changedTime":"2022-01-05T02:48:54.675188Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-04T22:38:36.0641894Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-04T22:38:47.2512664Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8901700","name":"e2e-test-w8901700","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"172c722f-27b0-45e2-a17f-b63cd7df3bcc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T06:31:07.8617803Z","changedTime":"2022-01-05T10:46:31.6090674Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T06:31:08.8659592Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T06:31:20.6644671Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8019232","name":"e2e-test-w8019232","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d897a3d1-02b2-4cc9-997f-d526ce6160df","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T06:35:46.0321044Z","changedTime":"2022-01-05T10:46:08.7976157Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T06:35:47.3420898Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T06:35:58.9770511Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5493261","name":"e2e-test-w5493261","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e7310df3-b1fd-462e-b986-023fbd44c4f8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T07:13:34.9191105Z","changedTime":"2022-01-05T11:23:39.5389526Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T07:13:35.3123037Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T07:13:46.7897722Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3529287","name":"e2e-test-w3529287","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1efd991c-ac51-4246-8ccc-659eb43bcff9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-06T02:24:59.5348333Z","changedTime":"2022-01-06T06:35:01.8224318Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-06T02:24:59.6501444Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-06T02:25:11.2618022Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5712230","name":"e2e-test-w5712230","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a5e36428-17f2-4728-933c-ab130d931795","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-06T02:45:50.3213712Z","changedTime":"2022-01-06T06:55:55.6595864Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-06T02:45:51.0615937Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-06T02:46:02.8523438Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8794959","name":"e2e-test-w8794959","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"dffd7c33-9a53-4085-9873-e0d8877dd3a8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-06T05:05:36.902245Z","changedTime":"2022-01-06T09:15:59.8972665Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-06T05:05:37.9334513Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-06T05:05:51.5104505Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5212893","name":"e2e-test-w5212893","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"01951b34-8ad8-437a-b4c9-fe63eb3e83d2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-07T19:59:17.7667235Z","changedTime":"2022-01-08T00:09:39.8566671Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-07T19:59:18.9897094Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-07T19:59:30.873895Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1209508","name":"e2e-test-w1209508","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"3adfe632-7e2b-471d-bac5-3188b08eaacf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-07T20:01:13.8822017Z","changedTime":"2022-01-08T00:11:20.4670308Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-07T20:01:14.6527066Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-07T20:01:26.1147577Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1856752","name":"e2e-test-w1856752","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"bccd1d59-6641-4ba8-8147-52e43b5395b2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-07T22:31:56.1196556Z","changedTime":"2022-01-08T02:42:15.9308523Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-07T22:31:56.4132583Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-07T22:32:07.9626589Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8729214","name":"e2e-test-w8729214","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8bac18dc-e16f-4351-8066-0a692d846701","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-10T19:48:29.1573176Z","changedTime":"2022-01-11T00:58:32.0187765Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-10T19:48:30.0963101Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-10T19:48:41.9011226Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8278700","name":"e2e-test-w8278700","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c147c39e-2f85-4cd5-97a1-fc358cec8c53","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-10T20:53:40.2006841Z","changedTime":"2022-01-11T01:03:58.9015895Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-10T20:53:40.2279457Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-10T20:53:51.474393Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8615116","name":"e2e-test-w8615116","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e12e0792-7b97-45fb-b86f-d65d056304b5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-11T22:19:42.0962035Z","changedTime":"2022-01-12T04:09:58.7768103Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-11T22:19:43.2660596Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-11T22:19:55.8778969Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3551380","name":"e2e-test-w3551380","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"121346fd-511a-4895-985c-ad808ba2231a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-11T22:58:58.9067103Z","changedTime":"2022-01-12T04:09:17.4142098Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-11T22:58:58.9397533Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-11T22:59:10.0671409Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7393275","name":"e2e-test-w7393275","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6191728e-d0c4-4e53-bf1d-aa2f3a59c72f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-11T23:02:14.0418013Z","changedTime":"2022-01-12T04:12:17.3820494Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-11T23:02:14.9268733Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-11T23:02:26.4138574Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5049998","name":"e2e-test-w5049998","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8a8e9a6b-95e1-425a-b5d5-792564e63199","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T00:40:04.5538135Z","changedTime":"2022-01-12T04:50:23.2913029Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T00:40:04.5840299Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T00:40:16.112013Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-private-1","name":"frtibble-fleetmgmt-private-1","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"283c7ef4-fdcb-4ecd-ab2e-b4a3d77e6fc6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T11:42:43.3861307Z","changedTime":"2022-01-12T15:52:45.4752512Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-12T11:42:43.6878507Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T11:42:55.3258191Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7737143","name":"e2e-test-w7737143","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c57dfa2f-8b59-47d3-ab19-c2515a7cc9db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T19:47:40.2039583Z","changedTime":"2022-01-12T23:58:01.1375115Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T19:47:41.3561573Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T19:47:52.9980354Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7867702","name":"e2e-test-w7867702","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1e32bb47-e4ce-4b04-842a-a9c20a003546","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T22:38:44.5110308Z","changedTime":"2022-01-13T02:49:04.284593Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T22:38:44.8790204Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T22:38:56.6200874Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9426449","name":"e2e-test-w9426449","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"3f520f2f-5961-4a31-8a45-94a14594ad81","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T22:44:51.1779124Z","changedTime":"2022-01-13T02:55:11.1377519Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T22:44:51.2348051Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T22:45:03.0855857Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5499410","name":"e2e-test-w5499410","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"94a3fd70-b8cf-479a-9ce1-e73b91b4b47f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T22:48:06.7146649Z","changedTime":"2022-01-13T02:58:28.1065208Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-12T22:48:06.7657289Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T22:48:19.3654277Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1159093","name":"e2e-test-w1159093","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"bff55d0a-5fac-4693-9a38-9dc9b465d139","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T01:02:51.4813928Z","changedTime":"2022-01-13T05:13:12.6284182Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T01:02:52.4287675Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T01:03:04.1279902Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5212937","name":"e2e-test-w5212937","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"284ef7e3-2b8b-4231-bff5-ca697582fb36","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T05:06:41.28402Z","changedTime":"2022-01-13T09:16:43.5330356Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T05:06:41.3469862Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T05:06:52.6212486Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1067893","name":"e2e-test-w1067893","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"31577564-fccd-4b0a-8236-d95f88ea657f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T07:38:54.3801754Z","changedTime":"2022-01-13T11:49:16.1891464Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T07:38:55.257785Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T07:39:06.6749356Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2333905","name":"e2e-test-w2333905","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"831060c3-1ac8-43d8-b33a-d0e0571ecc5b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T19:58:10.3973706Z","changedTime":"2022-01-14T00:08:13.6267619Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T19:58:10.6652944Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T19:58:22.1809677Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/ws-aqua-live-tests-westus2","name":"ws-aqua-live-tests-westus2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"228768a8-5cfa-4e18-995c-967829cfadb8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-14T02:57:34.8916485Z","changedTime":"2022-02-08T01:51:03.7878893Z","provisioningState":"Succeeded","systemData":{"createdBy":"b6f9942c-b71a-4a54-9ef1-dd0edcbaabe6","createdByType":"Application","createdAt":"2022-01-14T02:57:35.1035524Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T01:40:55.9750442Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1229760","name":"e2e-test-w1229760","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"01e04759-2626-4e39-ba71-ebbe5389f143","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-19T23:16:59.6468119Z","changedTime":"2022-01-20T04:05:33.3264939Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-19T23:16:59.6802026Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-19T23:17:10.7793869Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5807181","name":"e2e-test-w5807181","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2d6c8196-0926-4feb-acf0-e6bd80f94283","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T00:11:48.6756802Z","changedTime":"2022-01-20T05:00:17.4381936Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-20T00:11:49.4557896Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T00:12:01.0743585Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8274633","name":"e2e-test-w8274633","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a8ea1814-7a46-4195-81bd-bd37f6b9bdb5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T01:06:01.8452728Z","changedTime":"2022-01-20T05:16:20.8124023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T01:06:01.8873839Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T01:06:12.9020792Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2437541","name":"e2e-test-w2437541","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"76b98937-3be9-4a83-9f43-56c54531d916","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T02:19:07.8952451Z","changedTime":"2022-01-20T06:29:29.7655077Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-20T02:19:08.8432913Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T02:19:20.7929785Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w6958182","name":"e2e-test-w6958182","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"bc8099c8-3090-415d-962d-be71a3676e91","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T02:35:51.7000314Z","changedTime":"2022-01-20T06:46:12.3375168Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-20T02:35:52.543195Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T02:36:04.2540082Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2007341","name":"e2e-test-w2007341","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d0c61ba7-086f-4ca1-be61-13cb6042fb78","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T21:55:53.9882673Z","changedTime":"2022-01-21T02:06:14.0175836Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T21:55:54.0368654Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T21:56:05.4083033Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1893077","name":"e2e-test-w1893077","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"47426eb5-bd91-4338-8fc0-a51e4b2e9fb3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T22:06:36.2572204Z","changedTime":"2022-01-21T02:16:55.6998646Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T22:06:36.2862702Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T22:06:47.1357844Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5768798","name":"e2e-test-w5768798","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5b1ae0eb-0afb-450f-b389-aab2148164a3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T22:06:42.3799395Z","changedTime":"2022-01-21T02:16:44.0439132Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T22:06:42.4550954Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T22:06:53.5107701Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-bugbash","name":"frtibble-fleetmgmt-bugbash","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"02162d06-2c87-48c0-8d44-5fc826cf093c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T11:29:29.0641335Z","changedTime":"2022-01-21T15:39:33.3734347Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-21T11:29:29.8263398Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T11:57:12.3530991Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4232913","name":"e2e-test-w4232913","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"24c1cc56-666a-4eea-b61c-3d0c761ff566","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T19:38:33.8812928Z","changedTime":"2022-01-21T23:48:35.8387081Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T19:38:33.9751016Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T19:38:45.2997693Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4232941","name":"e2e-test-w4232941","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5024f174-776a-411f-bcc7-e6475e25387f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T19:38:38.4023258Z","changedTime":"2022-01-21T23:48:39.5720882Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T19:38:38.4316644Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T19:38:49.830419Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/v-wjones-workspace-from-cli-arm-template","name":"v-wjones-workspace-from-cli-arm-template","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"17edc1ba-e0c6-4140-ac7f-e469416bfbe7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T21:28:01.6040509Z","changedTime":"2022-01-22T01:38:02.9974227Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T21:28:01.6568525Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T21:28:12.525235Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1059928","name":"e2e-test-w1059928","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ce03755f-31ff-4698-b5b5-9da0fdcb0c31","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T21:40:54.914088Z","changedTime":"2022-01-22T01:51:15.9425958Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T21:40:54.9568789Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T21:41:07.2806516Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4618670","name":"e2e-test-w4618670","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"afc87737-f18b-46aa-adb3-1587b3905be4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T21:41:01.0622467Z","changedTime":"2022-01-22T01:51:03.6255824Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T21:41:01.1019933Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T21:41:13.4428995Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9443226","name":"e2e-test-w9443226","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2b7dd706-241f-4ae2-b5b0-25d794a3ce76","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:08:55.7959961Z","changedTime":"2022-01-22T02:19:18.3744493Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:08:55.844185Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:09:10.0312525Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4781667","name":"e2e-test-w4781667","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1d957a56-a328-4923-85b0-5237863b9831","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:09:04.2562201Z","changedTime":"2022-01-22T02:19:05.8644331Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:09:04.3171766Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:09:15.8200246Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8536616","name":"e2e-test-w8536616","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"83788073-5957-4086-ac34-d715a053100a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:49:11.8778031Z","changedTime":"2022-01-22T02:59:30.4451247Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:49:11.9118123Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:49:23.4430335Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4713038","name":"e2e-test-w4713038","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8fdd2278-9262-42a7-982f-74e45cfa6476","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:49:31.3772841Z","changedTime":"2022-01-22T02:59:32.6355697Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:49:31.4406091Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:49:42.1620106Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4296812","name":"e2e-test-w4296812","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9f38959c-3ba0-4cc6-96ee-3acf5aead0e8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:50:11.7369276Z","changedTime":"2022-01-22T04:05:33.7217323Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:50:11.7959011Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:50:22.9071109Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6050482","name":"e2e-test-w6050482","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"728fde73-9a81-4e2e-846f-196f333b467b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:50:16.3017106Z","changedTime":"2022-01-22T04:05:33.7396042Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:50:16.3509996Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:50:27.5971851Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8457338","name":"e2e-test-w8457338","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eabbc0f6-3fb6-424f-a441-84f8c5ab827d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T23:27:54.3904232Z","changedTime":"2022-01-22T03:38:02.5197076Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T23:27:55.4407299Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T23:28:07.4310182Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5028374","name":"e2e-test-w5028374","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"47f6f389-6216-441c-b390-a9aab4caac81","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T23:28:06.0800557Z","changedTime":"2022-01-22T03:38:07.37135Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T23:28:06.3568244Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T23:28:17.2561535Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8615046","name":"e2e-test-w8615046","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f95935a5-ba2d-4e20-99f0-979d54c3550a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T00:11:15.9768935Z","changedTime":"2022-01-22T04:21:36.2546169Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T00:11:16.8957274Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T00:11:29.1554241Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8169271","name":"e2e-test-w8169271","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8ec1eefa-8f60-4c4e-ab72-5ce9506f52e4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T00:11:26.8553265Z","changedTime":"2022-01-22T04:21:30.3992556Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T00:11:27.1389641Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T00:11:38.5123534Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9682824","name":"e2e-test-w9682824","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b55acd62-bf7b-466f-a7bb-77aef3d68fad","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T01:36:11.0326262Z","changedTime":"2022-01-22T05:46:32.7124614Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T01:36:11.6990581Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T01:36:23.2260917Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2367374","name":"e2e-test-w2367374","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9e0dfbe7-70f3-485e-871c-03df8144fff0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T01:36:21.7351754Z","changedTime":"2022-01-22T05:46:24.6810195Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T01:36:21.9260787Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T01:36:33.7484696Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5285906","name":"e2e-test-w5285906","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0c8199e1-818b-41e7-a5e4-a8153a06633c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T02:53:53.2113515Z","changedTime":"2022-01-22T07:04:16.8745044Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T02:53:53.9244155Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T02:54:06.5389167Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-bugbash-2","name":"frtibble-fleetmgmt-bugbash-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"87a93623-ee5f-4d0b-a5ed-fd20b7ee5565","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-24T12:49:44.0242243Z","changedTime":"2022-01-24T16:59:46.3863631Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-24T12:49:44.8795176Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-24T13:10:07.3746777Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-kpmg-1","name":"frtibble-kpmg-1","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eca289f2-8b1c-43c3-845e-61c2834ce283","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-24T14:30:19.7431261Z","changedTime":"2022-05-24T09:52:33.1053808Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-24T14:30:20.4049392Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-24T09:41:02.3902565Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5401556","name":"e2e-test-w5401556","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f8b0f55e-0c90-460d-b759-61430ee5f3df","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-25T17:33:07.5911571Z","changedTime":"2022-01-25T22:05:32.6304858Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-25T17:33:07.6527558Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-25T17:33:21.6329029Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9055305","name":"e2e-test-w9055305","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c715a8d4-1770-489e-b2b9-f1c01704ce18","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-25T17:33:22.1801087Z","changedTime":"2022-01-25T21:43:23.7991807Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-25T17:33:22.241869Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-25T17:33:33.3331095Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/anraman-fm-demo","name":"anraman-fm-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b96fe067-ebb3-43d8-ba39-02a40160a5b6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T14:28:54.0027093Z","changedTime":"2022-01-26T18:39:00.1057374Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anraman@microsoft.com","createdByType":"User","createdAt":"2022-01-26T14:28:54.0653202Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T14:29:09.4829169Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9641698","name":"e2e-test-w9641698","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"feee8719-8d05-4fb8-8971-365ed51927e1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T20:01:09.0220886Z","changedTime":"2022-01-27T00:11:36.4704577Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-26T20:01:10.398559Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T20:01:25.6588715Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9304177","name":"e2e-test-w9304177","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a78df5bf-02f6-4401-a126-dbe607cefe0a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T21:13:57.1940506Z","changedTime":"2022-01-27T01:26:39.1760253Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-26T21:13:58.1258651Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T21:14:13.6570859Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/temp-1nk5fpv1-zje","name":"temp-1nk5fpv1-zje","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"34f9d873-8780-4b86-b83d-fb568633e943","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T21:20:51.9781669Z","changedTime":"2022-01-27T01:30:54.4028382Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-26T21:20:52.2712881Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T21:21:03.4493592Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5854317","name":"e2e-test-w5854317","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"092fb1ea-bc25-449a-ba07-a67a38d1193e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-27T01:03:19.785783Z","changedTime":"2022-01-27T05:13:40.5387426Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-27T01:03:20.5526005Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-27T01:03:32.1668014Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9860091","name":"e2e-test-w9860091","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cf833190-ba79-4a9b-91dc-10f280e1fc34","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-27T02:28:03.6260846Z","changedTime":"2022-01-27T06:38:26.0677282Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-27T02:28:04.6078745Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-27T02:28:16.3325346Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/temp-5wuslmng-bny","name":"temp-5wuslmng-bny","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d73471df-57c2-43e9-ba98-d8f2006cb02a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-27T02:29:25.5743997Z","changedTime":"2022-01-27T06:39:27.4653184Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-27T02:29:26.2732494Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-27T02:29:37.5535219Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/v-wjones-workspace-from-cli-01","name":"v-wjones-workspace-from-cli-01","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e044ebcb-c6eb-4e3f-bec9-8b708432f722","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-28T01:40:15.6236438Z","changedTime":"2022-01-28T19:44:49.6166676Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-28T01:40:15.667938Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-28T19:34:42.9350221Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8573030","name":"e2e-test-w8573030","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"291f07ac-8aae-4534-acf5-0cd89bb641eb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-29T01:31:02.4637509Z","changedTime":"2022-01-29T06:41:06.3497398Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-29T01:31:03.3525354Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-29T01:31:15.1473843Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9461874","name":"e2e-test-w9461874","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0a02dcdc-7e9c-4f7a-b160-f3e465776b2b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-07T23:26:00.0445446Z","changedTime":"2022-02-08T03:36:07.3673586Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-07T23:26:01.1436177Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-07T23:26:12.9580696Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1575950","name":"e2e-test-w1575950","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"26788e7d-f689-4b71-a6f5-8d7780857f87","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T00:31:36.9023004Z","changedTime":"2022-02-08T04:41:56.0024874Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T00:31:37.1926973Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T00:31:48.4630553Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8763155","name":"e2e-test-w8763155","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"719bb180-3314-47bd-9946-5bc3479f7ad0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T00:56:42.6418408Z","changedTime":"2022-02-08T05:06:48.7803731Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T00:56:43.5094932Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T00:56:55.2538805Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5183728","name":"e2e-test-w5183728","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b6b025b7-f548-4619-ba6a-77ad353c1d30","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T01:31:55.3210785Z","changedTime":"2022-02-08T05:42:16.8463004Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T01:31:56.4638197Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T01:32:08.0209207Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2419233","name":"e2e-test-w2419233","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"4ee2bbd6-9de6-47eb-8ba4-02181a1ffc75","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T01:48:15.9139099Z","changedTime":"2022-02-08T05:58:18.4754074Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T01:48:16.4209192Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T01:48:27.9321794Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/fleet-management-1","name":"fleet-management-1","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"708ec5d6-7e26-4f5f-a95c-7d05a54e9b48","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T13:27:49.8718747Z","changedTime":"2022-02-08T17:37:51.6216178Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-02-08T13:27:50.1961246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T13:34:10.0033522Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/fleet-management-2","name":"fleet-management-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0f02ea43-e3cf-49e8-9678-52a92c8ec12e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T13:36:14.9362447Z","changedTime":"2022-02-08T18:09:59.4835803Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-02-08T13:36:15.5414692Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T13:36:27.2521227Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-3867c759-b998-4d9e-ab1e-84bf5cf7d83f","name":"ws-3867c759-b998-4d9e-ab1e-84bf5cf7d83f","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9744bde0-86d5-4c47-9634-a4b25c3045ce","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T17:10:40.8043426Z","changedTime":"2022-03-03T21:21:33.2465721Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-03T17:10:41.5015445Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-03T17:11:02.4612278Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-4f007244-9133-44dc-87b7-79d2e705f78f","name":"ws-4f007244-9133-44dc-87b7-79d2e705f78f","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7e1e5b5d-ecaf-4161-9e0f-2882d4e8cc5b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T17:13:38.1447512Z","changedTime":"2022-03-03T21:24:33.0510984Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-03T17:13:38.7153999Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-03T17:13:52.6284937Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-b18715e3-eb89-46a4-ba2c-af78435388c0","name":"ws-b18715e3-eb89-46a4-ba2c-af78435388c0","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"48a57027-f9c3-495e-9274-ced0238dd3e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-08T00:56:01.016557Z","changedTime":"2022-03-08T05:06:51.5869203Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-08T00:56:01.5815403Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-03-08T00:56:01.5815403Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-debug","name":"frtibble-debug","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6eac132d-380f-4441-bd69-49eb22653fa5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-15T13:27:30.50941Z","changedTime":"2022-02-15T17:37:32.8268507Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-02-15T13:27:31.2304406Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-15T13:27:44.5028783Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-ln4dt4v4-llh","name":"temp-ln4dt4v4-llh","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"151d8072-9f6b-4c78-94c4-44dfafcafbdd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-16T17:23:16.5856604Z","changedTime":"2022-02-16T21:33:19.6353753Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-16T17:23:16.6372604Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-16T17:23:55.7115304Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5508936","name":"e2e-test-w5508936","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"fbe63aa7-0330-4494-ae4b-42adb9a7fea3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:41:49.395258Z","changedTime":"2022-03-01T01:52:28.7964896Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:41:49.4636747Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:42:02.0531398Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7158361","name":"e2e-test-w7158361","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cffcd6f4-e964-4e78-b221-505c27f9d144","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:44:10.2967485Z","changedTime":"2022-03-01T01:54:55.3652023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:44:10.3704855Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:44:23.1627947Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3470984","name":"e2e-test-w3470984","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d4965f66-ee86-4408-b52c-619d0d509d79","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:45:13.8394458Z","changedTime":"2022-03-01T01:55:33.0390404Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:45:13.9178706Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:45:26.2202381Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5467513","name":"e2e-test-w5467513","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f43f3bc8-8d8e-4c8c-889a-f895344748ba","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:56:25.9991501Z","changedTime":"2022-03-01T02:07:07.4802023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:56:26.0855962Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:56:40.7104134Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4622849","name":"e2e-test-w4622849","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a18ac1b3-ab06-49c2-9d2d-4ef3afcf0506","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:03:36.5072772Z","changedTime":"2022-03-01T02:14:18.06209Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:03:36.5970659Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:03:48.2812811Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1514389","name":"e2e-test-w1514389","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"67939fb6-571b-470d-b6fa-4d12eb440e33","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:04:57.8856512Z","changedTime":"2022-03-01T03:15:17.1317955Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:04:57.956569Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:05:09.4751749Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2937160","name":"e2e-test-w2937160","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6c6280aa-669f-416b-a611-3673c17ffe06","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:21:37.0003944Z","changedTime":"2022-03-01T02:32:18.1596246Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:21:37.0290534Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:21:50.2947901Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4151016","name":"e2e-test-w4151016","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c688d082-467a-4fc7-b3e6-b1a872400904","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:23:51.5817767Z","changedTime":"2022-03-01T02:34:11.3342529Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:23:51.6543342Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:24:03.0651532Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2759052","name":"e2e-test-w2759052","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5d529693-dc81-4381-9874-b6e4c79c08cf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:24:23.2586887Z","changedTime":"2022-03-01T02:34:43.6849828Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:24:23.3175825Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:24:34.548653Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8926410","name":"e2e-test-w8926410","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6031fcd4-25d7-45fe-befc-f5d64ce7afa9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:29:55.1321658Z","changedTime":"2022-03-01T02:40:37.232686Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:29:55.197523Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:30:07.0136642Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2458953","name":"e2e-test-w2458953","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e49b9d45-02da-45b4-bce2-d9b4e9a2a07b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:40:44.2113496Z","changedTime":"2022-03-01T03:51:04.6985462Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:40:44.2807264Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:40:56.1444984Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-1605c01c-da26-435b-86b8-020679468a0b","name":"ws-1605c01c-da26-435b-86b8-020679468a0b","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a5b7f4c6-edfb-43a7-9c67-23b3e4fd470d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-23T16:42:54.5279448Z","changedTime":"2022-03-23T20:53:42.3422742Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-23T16:42:55.0139438Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-03-23T16:42:55.0139438Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5645956","name":"e2e-test-w5645956","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"316622e9-a77f-43fe-a905-ae69905d9364","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-11T22:37:37.2238925Z","changedTime":"2022-03-12T02:48:42.5369806Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-11T22:37:37.2692594Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-11T22:37:37.2692594Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1017848","name":"e2e-test-w1017848","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"425b359e-f74b-46aa-8c7e-514c751980a5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-11T22:39:09.7636878Z","changedTime":"2022-03-12T02:50:11.1373882Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-11T22:39:09.792918Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-11T22:39:09.792918Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6739882","name":"e2e-test-w6739882","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b491edc8-90da-4993-8855-2a711b849383","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-11T22:39:17.134794Z","changedTime":"2022-03-12T04:05:33.5712426Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-11T22:39:17.154469Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-11T22:39:17.154469Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5524320","name":"e2e-test-w5524320","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ce55c7b9-ad0d-4c00-8ef7-aaeb30f6d971","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:00:14.6743498Z","changedTime":"2022-03-15T00:11:12.6486126Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:00:14.7041566Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:00:14.7041566Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5463066","name":"e2e-test-w5463066","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eddedc6d-eb79-4835-a0ab-dc5ed9e8c365","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:00:25.8756335Z","changedTime":"2022-03-15T01:47:02.9149162Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:00:26.2380977Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:00:26.2380977Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6572902","name":"e2e-test-w6572902","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"527088d0-12dc-46fa-8d3a-156e2c8aae5f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:03:19.8795544Z","changedTime":"2022-03-15T00:14:25.6684413Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:03:20.0074378Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:03:20.0074378Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4401298","name":"e2e-test-w4401298","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5919e2b8-1185-4c75-8dab-91fd1f64e028","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:03:33.9836414Z","changedTime":"2022-03-15T00:14:19.4800795Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:03:34.0967803Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:03:34.0967803Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8506469","name":"e2e-test-w8506469","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8ac7aa0c-e2d8-4651-bba8-6db9517eb0fd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T21:14:06.2159112Z","changedTime":"2022-03-15T01:25:10.8498253Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T21:14:06.2391839Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T21:14:06.2391839Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5278936","name":"e2e-test-w5278936","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6f8c106a-6a1e-4a65-a704-eb9e19a2819e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T21:14:16.4384558Z","changedTime":"2022-03-15T01:25:04.5334968Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T21:14:16.456267Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T21:14:16.456267Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3666723","name":"e2e-test-w3666723","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ca668a13-5e95-4182-90a1-1455ab6c9ca9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-15T20:40:49.6630683Z","changedTime":"2022-03-16T00:52:11.4044037Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-15T20:40:49.6968867Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-15T20:40:49.6968867Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/alchocro-workspace-for-demo","name":"alchocro-workspace-for-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"04583d75-90c9-4a22-b85c-ea7f8e1bca21","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-16T20:43:34.0969896Z","changedTime":"2022-03-31T19:08:53.7589739Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2022-03-16T20:43:34.1260143Z","lastModifiedBy":"alchocro@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-31T18:57:32.9097786Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/coolworkspace","name":"coolworkspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b1371ce1-a62d-4895-aa8c-458e05126e7f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-31T23:25:17.967072Z","changedTime":"2022-04-01T03:35:56.0240863Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2022-03-31T23:25:18.0040693Z","lastModifiedBy":"alchocro@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-31T23:25:18.0040693Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/viveis-test/providers/Microsoft.Quantum/Workspaces/viveis-demo","name":"viveis-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cb63597e-5d60-4af0-be84-9aae8b6aaf4c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-16T04:40:40.429228Z","changedTime":"2022-04-16T09:05:35.1338628Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"viveis@microsoft.com","createdByType":"User","createdAt":"2022-04-16T04:40:40.9691895Z","lastModifiedBy":"viveis@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-16T04:40:40.9691895Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/wim-demo","name":"wim-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"718fd72d-8ac9-4349-a463-706af131f964","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-29T18:46:16.3944042Z","changedTime":"2022-04-29T22:57:09.7413545Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"viveis@microsoft.com","createdByType":"User","createdAt":"2022-04-29T18:46:16.4286827Z","lastModifiedBy":"viveis@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-29T18:46:16.4286827Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hgavranovic-dev-rg/providers/Microsoft.Quantum/Workspaces/quantum-ws-fleet-management-hgavranovic","name":"quantum-ws-fleet-management-hgavranovic","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5089cc8c-4a2c-46b0-aa50-2fa610ed042e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-02T20:31:40.3988986Z","changedTime":"2022-05-03T00:42:19.4276496Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"hgavranovic@microsoft.com","createdByType":"User","createdAt":"2022-05-02T20:31:40.5787015Z","lastModifiedBy":"hgavranovic@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T20:31:40.5787015Z"}}],"nextLink":"https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?%24filter=location+eq+%27westus2%27+and+resourceType+eq+%27Microsoft.Quantum%2fWorkspaces%27&%24expand=createdTime%2cchangedTime%2cprovisioningState&api-version=2021-04-01&%24skiptoken=eyJuZXh0TWFya2VyIjoiW3tcInRva2VuXCI6XCIrUklEOn5mN045QVB2UEs4WTEwOThQQUFDMERnPT0jUlQ6MSNUUkM6MTAwMCNJU1Y6MiNJRU86NjU1NTEjRlBQOkFnaC9Qd0FBMERvQUFGQThBQURBUFFBQWZ6OEFBTkE2QUFBQ0FEV1RnVDhBQU5BNkFBQUdBUEU4Z0FmOGdZSS9BQURRT2dBQUNBRFNGQURBQXdDbWhJUS9BQURRT2dBQURnRC9xd0hBQndBeEFROEFaNERLZ1l3L0FBRFFPZ0FBQWdDK2s0OC9BQURRT2dBQUJBQ2hOa0FCbmo4QUFOQTZBQUFHQUFFYzRBR0dnNk0vQUFEUU9nQUFCZ0FST0FBZVA0RUJRQUFBMERvQUFBWUFhSTZmZ2NxVWlFQUFBTkE2QUFBQ0FGQ0NrRUFBQU5BNkFBQUVBUHkyY1lDWFFBQUEwRG9BQUFJQXRvdjJRQUFBMERvQUFBb0FJZ3NBd0ErQWJZSHJzaDFCQUFEUU9nQUFCQURSTzZJQ0hrRUFBTkE2QUFBR0FLRUN3Z2lQZ3lKQkFBRFFPZ0FBQWdBM3NpUkJBQURRT2dBQUFnQUhoeVZCQUFEUU9nQUFEZ0I5dEEyQTU0QUJ3QUF3TVlCcGd6RkJBQURRT2dBQUNBQmRuREVBOEFEc2dUMUJBQURRT2dBQUJnRFlvTUVRZ0FGMFFRQUEwRG9BQUFRQVFieGxnWFZCQUFEUU9nQUFBZ0F3aVhwQkFBRFFPZ0FBQWdEUm95cENBQURRT2dBQURnQmhLUkFCRVlEeUFRQVlBZ0ROZ285Q0FBRFFPZ0FBQmdCQk1BQm9hSUdTUWdBQTBEb0FBQVlBc2owQThBTVFrMElBQU5BNkFBQUNBQ3lEbGtJQUFOQTZBQUFHQU9FYWFnS01qWnBDQUFEUU9nQUFIQUJIbkJNQUFEZ2cvd0VBSVFBMkFGRUFBTUF2Z0FDQWhJZ2lnQ09BcGtJQUFOQTZBQUFNQUlJRGdBSUVBTW1GQllBSWdMQkNBQURRT2dBQUJnRFRpTCtOTzRmUlFnQUEwRG9BQUFJQXRLNlhRd0FBMERvQUFBSUFGbzZmUXdBQTBEb0FBQVFBcllzVGxMQkRBQURRT2dBQUFnQ2pnTHREQUFEUU9nQUFBZ0FwaU9kREFBRFFPZ0FBQkFEZXRnS0FzRVFBQU5BNkFBQUNBQjZ5dGtRQUFOQTZBQUFDQVAyT3ZFUUFBTkE2QUFBRUFIK0wvNUhoUkFBQTBEb0FBQUlBMktaelJRQUEwRG9BQUFJQWE1OU9SZ0FBMERvQUFBSUFab3hQUmdBQTBEb0FBQUlBTmE3Y1JnQUEwRG9BQUFvQU13M0FBaUJBQUFqdGlPaEdBQURRT2dBQUFnQStrdjFHQUFEUU9nQUFBZ0RjdVFkSEFBRFFPZ0FBQkFDUklIb0JDMGNBQU5BNkFBQU1BQUV4d0FNQ0F3QXFBZ0Q1Z01kSEFBRFFPZ0FBQWdBZ2xzOUhBQURRT2dBQUFnQTRpZEZIQUFEUU9nQUFBZ0RXdis1SEFBRFFPZ0FBQkFEUks0Qkw4a2NBQU5BNkFBQUNBUFdNOTBjQUFOQTZBQUFDQUtpTXZFZ0FBTkE2QUFBSUFKSUZBRzRCQU4rQzVVZ0FBTkE2QUFBQ0FCaWZja2tBQU5BNkFBQUVBSitvVDRKMlNRQUEwRG9BQUFRQTRiTjlnbmRKQUFEUU9nQUFDQUFSRmprQTRvQTJnb1pKQUFEUU9nQUFEQUNSQmMrQVVRQUF3RFdCTm9DVVNRQUEwRG9BQUFZQTRqNEFOQkFBbFVrQUFOQTZBQUFDQUttR29rb0FBTkE2QUFBRUFERUdMQUM3U2dBQTBEb0FBQVlBZ1FNT0FOaUZHMHNBQU5BNkFBQU1BTEl2QWtRSUFDR0FUWUZ1akRwTEFBRFFPZ0FBQWdCSHVFVkxBQURRT2dBQUFnRGFuMHhMQUFEUU9nQUFCZ0NCRVFBRHJLMU5Td0FBMERvQUFBSUFqNHpBU3dBQTBEb0FBQUlBWWJyVFRBQUEwRG9BQUE0QXE1cFJBUm9BczRRZGd4RUJBd0NpVFFBQTBEb0FBQW9BTVRyZ0N2RUFIZ0QrZ3E5TkFBRFFPZ0FBQkFDcG1BNkFzVTBBQU5BNkFBQUdBSkUwQUxhdmlMUk5BQURRT2dBQUFnQVJzdkZPQUFEUU9nQUFBZ0FQajk5UEFBRFFPZ0FBQkFCdnVWV0FpVkVBQU5BNkFBQUNBQ3lNbVZFQUFOQTZBQUFHQU1FcERBUWNocDVSQUFEUU9nQUFCZ0JldndIQUlRQ2ZVUUFBMERvQUFBSUFSSVUvVkFBQTBEb0FBQUlBeHF4T1ZBQUEwRG9BQUFZQWJZTVFyOW1BV2xRQUFOQTZBQUFDQURpeVcxUUFBTkE2QUFBRUFDMkE3NFJTVlFBQTBEb0FBQVFBY3JVU2dGaFZBQURRT2dBQUFnRFpqR0JWQUFEUU9nQUFDQUF4SndCZ0VRQVlBR0ZWQUFEUU9nQUFBZ0FEaTJwVkFBRFFPZ0FBQWdCOHIyNVZBQURRT2dBQUJnQmhFdmdBV0llT1ZnQUEwRG9BQUFZQUJxdUxnUVdBZkZnQUFOQTZBQUFPQUJFd0lCQWFnQU9BV0lBTWdDK0RnVmdBQU5BNkFBQUNBUEd4b1ZnQUFOQTZBQUFDQUhxWHFWZ0FBTkE2QUFBRUFPbVRvWUE0QVFBQXdEMEFBQWdBUXhBQXdBRUJCQUJSQVFBQXdEMEFBQUlBeXJKYUFRQUF3RDBBQUFZQUhMWVJBQUFGeUFnQUFNQTlBQUFJQUJFUkFMeGhBRVlBMmdnQUFNQTlBQUFFQUJFWUFIREJEQUFBd0QwQUFBb0FZUlFBL0RJQkFQQURBTkVNQUFEQVBRQUFCQURSSDM0QTFRd0FBTUE5QUFBQ0FHMmQ1aEVBQU1BOUFBQUVBRStrRllEdkVRQUF3RDBBQUFJQVRabnhFUUFBd0QwQUFBSUFuNlgvRVFBQXdEMEFBQVlBSG92RWp3aUFEUklBQU1BOUFBQUNBT1NlRHhJQUFNQTlBQUFHQUdFWnZBTVZpaGtTQUFEQVBRQUFBZ0FmakJvU0FBREFQUUFBQmdBQkVBQmNGSURzRXdBQXdEMEFBQUlBeUtQOEZBQUF3RDBBQUFJQS83UUVGUUFBd0QwQUFBWUFRaElBaEl3Q0h4VUFBTUE5QUFBQ0FIaVJLQlVBQU1BOUFBQUdBS3Uzd1FFUUFya1ZBQURBUFFBQUFnQmRqTHNWQUFEQVBRQUFCZ0J5QjRBUEFBSEhGUUFBd0QwQUFBSUFrWTdrRlFBQXdEMEFBQWdBOHhzQUdBd0FBQUxsRlFBQXdEMEFBQUlBZUlCREZnQUF3RDBBQUFJQURveFdGZ0FBd0QwQUFBZ0FVU1R3QkJFQUJnQlhGZ0FBd0QwQUFBSUE1NEx0RmdBQXdEMEFBQUlBaWE3NkZnQUF3RDBBQUFJQXdxVUpGd0FBd0QwQUFBWUFhTDhoQUFjQUNoY0FBTUE5QUFBSUFIdUFHWURxaGhhQkRCY0FBTUE5QUFBSUFOU3ZUWUFCd0lBQkdCY0FBTUE5QUFBQ0FIT3VoQmNBQU1BOUFBQUdBR0lrQU9BQVJ0SVlBQURBUFFBQUFnQXpsZFFZQUFEQVBRQUFCZ0R5SWdEZ0VRRFZHQUFBd0QwQUFBWUFJajZBQVJBRDFoZ0FBTUE5QUFBT0FJTWFBQXdBUUFBd3NRL2dBeGFBMXhnQUFNQTlBQUFFQUEyV0JJRGFHQUFBd0QwQUFBd0E4NDRHZ0txR0FJRGJnUUdBNHhnQUFNQTlBQUFHQU4rK0FjQTRBT2NZQUFEQVBRQUFBZ0I5amVrWUFBREFQUUFBQ2dCaE1nQVdvUUVBT00rRTZoZ0FBTUE5QUFBUUFFaUZjNk1CQXpBQTBJQlBncEVBQUdEc0dBQUF3RDBBQUF3QWdUQVlBQkVBTUFCVWlWbUU5eGdBQU1BOUFBQUNBSWE4QUJrQUFNQTlBQUFHQUx5QkFjQkFDR2taQUFEQVBRQUFDZ0IzcHVFVkFBZFVnS1NDaXhrQUFNQTlBQUFHQUtJeFFIZ1NBSTBaQUFEQVBRQUFCZ0NpT3dEZ0F3QUZHZ0FBd0QwQUFBUUFBVGVCQUF3YUFBREFQUUFBQkFDRmtoT0FIQm9BQU1BOUFBQUNBUHVsSFJvQUFNQTlBQUFDQUEreUpob0FBTUE5QUFBQ0FMNkpMaG9BQU1BOUFBQUNBTEtyTHhvQUFNQTlBQUFHQU5TRFdxZHNnRFFhQUFEQVBRQUFCQUFQaFlHR09Cb0FBTUE5QUFBQ0FHbUZGeHNBQU1BOUFBQUVBTkVUQUFXNUhBQUF3RDBBQUFRQW43SUFnTDhjQUFEQVBRQUFBZ0FJcCtRY0FBREFQUUFBQWdCWW1wMGVBQURBUFFBQUNnQVNEd0NLSUFCbGh4eVF2eDRBQU1BOUFBQUNBRksvMXg0QUFNQTlBQUFHQUZ1WU1vTzhsOW9lQUFEQVBRQUFCZ0I1bXo2TUNZRGJIZ0FBd0QwQUFBb0FzUk1BUkdxQUFvQUVnUGNlQUFEQVBRQUFDQUNNdGh5QXVvVUlnSXNmQUFEQVBRQUFBZ0MrZzVBZkFBREFQUUFBQWdBOHJKb2ZBQURBUFFBQUFnREhrUVFnQUFEQVBRQUFBZ0FMaUNvZ0FBREFQUUFBQWdCNWlMWWdBQURBUFFBQUFnQ0t0Y1VnQUFEQVBRQUFBZ0RibXNZZ0FBREFQUUFBQWdCanRjOGdBQURBUFFBQUNBQUNFd0NFQXdEWmp0RWdBQURBUFFBQUJBRFp2Z2FBMVNBQUFNQTlBQUFHQUdLTWRvZzVpdFlnQUFEQVBRQUFBZ0RxcGRvZ0FBREFQUUFBQmdBUWthK1FEWURmSUFBQXdEMEFBQVFBaHFDbWcrQWdBQURBUFFBQUFnQXB0dVFnQUFEQVBRQUFCQUE4b2hHQTVTQUFBTUE5QUFBQ0FLaStpU0VBQU1BOUFBQUNBRnE5bENFQUFNQTlBQUFDQUxPMnBpRUFBTUE5QUFBVUFDSW9BQjRFUUNpRXd3Y0FCZ0VBb0FNc2dLZURzQ0VBQU1BOUFBQUtBTFdVRVFDQUFUT0FoSUd5SVFBQXdEMEFBQVFBdTROU2pMTWhBQURBUFFBQUFnQUNzczhoQUFEQVBRQUFBZ0FXck5BaEFBREFQUUFBQmdCQmtoRUFZQURTSVFBQXdEMEFBQWdBRDd3QndBd0FYb0xUSVFBQXdEMEFBQUlBcklYaElRQUF3RDBBQUFRQVk2SVFqdzhpQUFEQVBRQUFBZ0RNaWhFaUFBREFQUUFBQWdDMWh4SWlBQURBUFFBQUFnRE1raFFpQUFEQVBRQUFCQURWaHNpNFwiLFwicmFuZ2VcIjp7XCJtaW5cIjpcIjA1QzFFMUY3RTlCRDZBXCIsXCJtYXhcIjpcIjA1QzFFMzJCNEY5NzUwXCJ9fV0ifQ%3d%3d"}' + headers: + cache-control: + - no-cache + content-length: + - '167645' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 27 May 2022 17:09:29 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quantum workspace list + Connection: + - keep-alive + ParameterSetName: + - -l -o + User-Agent: + - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?%24filter=location+eq+%27westus2%27+and+resourceType+eq+%27Microsoft.Quantum%2FWorkspaces%27&%24expand=createdTime%2CchangedTime%2CprovisioningState&api-version=2021-04-01&%24skiptoken=eyJuZXh0TWFya2VyIjoiW3tcInRva2VuXCI6XCIrUklEOn5mN045QVB2UEs4WTEwOThQQUFDMERnPT0jUlQ6MSNUUkM6MTAwMCNJU1Y6MiNJRU86NjU1NTEjRlBQOkFnaC9Qd0FBMERvQUFGQThBQURBUFFBQWZ6OEFBTkE2QUFBQ0FEV1RnVDhBQU5BNkFBQUdBUEU4Z0FmOGdZSS9BQURRT2dBQUNBRFNGQURBQXdDbWhJUS9BQURRT2dBQURnRC9xd0hBQndBeEFROEFaNERLZ1l3L0FBRFFPZ0FBQWdDK2s0OC9BQURRT2dBQUJBQ2hOa0FCbmo4QUFOQTZBQUFHQUFFYzRBR0dnNk0vQUFEUU9nQUFCZ0FST0FBZVA0RUJRQUFBMERvQUFBWUFhSTZmZ2NxVWlFQUFBTkE2QUFBQ0FGQ0NrRUFBQU5BNkFBQUVBUHkyY1lDWFFBQUEwRG9BQUFJQXRvdjJRQUFBMERvQUFBb0FJZ3NBd0ErQWJZSHJzaDFCQUFEUU9nQUFCQURSTzZJQ0hrRUFBTkE2QUFBR0FLRUN3Z2lQZ3lKQkFBRFFPZ0FBQWdBM3NpUkJBQURRT2dBQUFnQUhoeVZCQUFEUU9nQUFEZ0I5dEEyQTU0QUJ3QUF3TVlCcGd6RkJBQURRT2dBQUNBQmRuREVBOEFEc2dUMUJBQURRT2dBQUJnRFlvTUVRZ0FGMFFRQUEwRG9BQUFRQVFieGxnWFZCQUFEUU9nQUFBZ0F3aVhwQkFBRFFPZ0FBQWdEUm95cENBQURRT2dBQURnQmhLUkFCRVlEeUFRQVlBZ0ROZ285Q0FBRFFPZ0FBQmdCQk1BQm9hSUdTUWdBQTBEb0FBQVlBc2owQThBTVFrMElBQU5BNkFBQUNBQ3lEbGtJQUFOQTZBQUFHQU9FYWFnS01qWnBDQUFEUU9nQUFIQUJIbkJNQUFEZ2cvd0VBSVFBMkFGRUFBTUF2Z0FDQWhJZ2lnQ09BcGtJQUFOQTZBQUFNQUlJRGdBSUVBTW1GQllBSWdMQkNBQURRT2dBQUJnRFRpTCtOTzRmUlFnQUEwRG9BQUFJQXRLNlhRd0FBMERvQUFBSUFGbzZmUXdBQTBEb0FBQVFBcllzVGxMQkRBQURRT2dBQUFnQ2pnTHREQUFEUU9nQUFBZ0FwaU9kREFBRFFPZ0FBQkFEZXRnS0FzRVFBQU5BNkFBQUNBQjZ5dGtRQUFOQTZBQUFDQVAyT3ZFUUFBTkE2QUFBRUFIK0wvNUhoUkFBQTBEb0FBQUlBMktaelJRQUEwRG9BQUFJQWE1OU9SZ0FBMERvQUFBSUFab3hQUmdBQTBEb0FBQUlBTmE3Y1JnQUEwRG9BQUFvQU13M0FBaUJBQUFqdGlPaEdBQURRT2dBQUFnQStrdjFHQUFEUU9nQUFBZ0RjdVFkSEFBRFFPZ0FBQkFDUklIb0JDMGNBQU5BNkFBQU1BQUV4d0FNQ0F3QXFBZ0Q1Z01kSEFBRFFPZ0FBQWdBZ2xzOUhBQURRT2dBQUFnQTRpZEZIQUFEUU9nQUFBZ0RXdis1SEFBRFFPZ0FBQkFEUks0Qkw4a2NBQU5BNkFBQUNBUFdNOTBjQUFOQTZBQUFDQUtpTXZFZ0FBTkE2QUFBSUFKSUZBRzRCQU4rQzVVZ0FBTkE2QUFBQ0FCaWZja2tBQU5BNkFBQUVBSitvVDRKMlNRQUEwRG9BQUFRQTRiTjlnbmRKQUFEUU9nQUFDQUFSRmprQTRvQTJnb1pKQUFEUU9nQUFEQUNSQmMrQVVRQUF3RFdCTm9DVVNRQUEwRG9BQUFZQTRqNEFOQkFBbFVrQUFOQTZBQUFDQUttR29rb0FBTkE2QUFBRUFERUdMQUM3U2dBQTBEb0FBQVlBZ1FNT0FOaUZHMHNBQU5BNkFBQU1BTEl2QWtRSUFDR0FUWUZ1akRwTEFBRFFPZ0FBQWdCSHVFVkxBQURRT2dBQUFnRGFuMHhMQUFEUU9nQUFCZ0NCRVFBRHJLMU5Td0FBMERvQUFBSUFqNHpBU3dBQTBEb0FBQUlBWWJyVFRBQUEwRG9BQUE0QXE1cFJBUm9BczRRZGd4RUJBd0NpVFFBQTBEb0FBQW9BTVRyZ0N2RUFIZ0QrZ3E5TkFBRFFPZ0FBQkFDcG1BNkFzVTBBQU5BNkFBQUdBSkUwQUxhdmlMUk5BQURRT2dBQUFnQVJzdkZPQUFEUU9nQUFBZ0FQajk5UEFBRFFPZ0FBQkFCdnVWV0FpVkVBQU5BNkFBQUNBQ3lNbVZFQUFOQTZBQUFHQU1FcERBUWNocDVSQUFEUU9nQUFCZ0JldndIQUlRQ2ZVUUFBMERvQUFBSUFSSVUvVkFBQTBEb0FBQUlBeHF4T1ZBQUEwRG9BQUFZQWJZTVFyOW1BV2xRQUFOQTZBQUFDQURpeVcxUUFBTkE2QUFBRUFDMkE3NFJTVlFBQTBEb0FBQVFBY3JVU2dGaFZBQURRT2dBQUFnRFpqR0JWQUFEUU9nQUFDQUF4SndCZ0VRQVlBR0ZWQUFEUU9nQUFBZ0FEaTJwVkFBRFFPZ0FBQWdCOHIyNVZBQURRT2dBQUJnQmhFdmdBV0llT1ZnQUEwRG9BQUFZQUJxdUxnUVdBZkZnQUFOQTZBQUFPQUJFd0lCQWFnQU9BV0lBTWdDK0RnVmdBQU5BNkFBQUNBUEd4b1ZnQUFOQTZBQUFDQUhxWHFWZ0FBTkE2QUFBRUFPbVRvWUE0QVFBQXdEMEFBQWdBUXhBQXdBRUJCQUJSQVFBQXdEMEFBQUlBeXJKYUFRQUF3RDBBQUFZQUhMWVJBQUFGeUFnQUFNQTlBQUFJQUJFUkFMeGhBRVlBMmdnQUFNQTlBQUFFQUJFWUFIREJEQUFBd0QwQUFBb0FZUlFBL0RJQkFQQURBTkVNQUFEQVBRQUFCQURSSDM0QTFRd0FBTUE5QUFBQ0FHMmQ1aEVBQU1BOUFBQUVBRStrRllEdkVRQUF3RDBBQUFJQVRabnhFUUFBd0QwQUFBSUFuNlgvRVFBQXdEMEFBQVlBSG92RWp3aUFEUklBQU1BOUFBQUNBT1NlRHhJQUFNQTlBQUFHQUdFWnZBTVZpaGtTQUFEQVBRQUFBZ0FmakJvU0FBREFQUUFBQmdBQkVBQmNGSURzRXdBQXdEMEFBQUlBeUtQOEZBQUF3RDBBQUFJQS83UUVGUUFBd0QwQUFBWUFRaElBaEl3Q0h4VUFBTUE5QUFBQ0FIaVJLQlVBQU1BOUFBQUdBS3Uzd1FFUUFya1ZBQURBUFFBQUFnQmRqTHNWQUFEQVBRQUFCZ0J5QjRBUEFBSEhGUUFBd0QwQUFBSUFrWTdrRlFBQXdEMEFBQWdBOHhzQUdBd0FBQUxsRlFBQXdEMEFBQUlBZUlCREZnQUF3RDBBQUFJQURveFdGZ0FBd0QwQUFBZ0FVU1R3QkJFQUJnQlhGZ0FBd0QwQUFBSUE1NEx0RmdBQXdEMEFBQUlBaWE3NkZnQUF3RDBBQUFJQXdxVUpGd0FBd0QwQUFBWUFhTDhoQUFjQUNoY0FBTUE5QUFBSUFIdUFHWURxaGhhQkRCY0FBTUE5QUFBSUFOU3ZUWUFCd0lBQkdCY0FBTUE5QUFBQ0FIT3VoQmNBQU1BOUFBQUdBR0lrQU9BQVJ0SVlBQURBUFFBQUFnQXpsZFFZQUFEQVBRQUFCZ0R5SWdEZ0VRRFZHQUFBd0QwQUFBWUFJajZBQVJBRDFoZ0FBTUE5QUFBT0FJTWFBQXdBUUFBd3NRL2dBeGFBMXhnQUFNQTlBQUFFQUEyV0JJRGFHQUFBd0QwQUFBd0E4NDRHZ0txR0FJRGJnUUdBNHhnQUFNQTlBQUFHQU4rK0FjQTRBT2NZQUFEQVBRQUFBZ0I5amVrWUFBREFQUUFBQ2dCaE1nQVdvUUVBT00rRTZoZ0FBTUE5QUFBUUFFaUZjNk1CQXpBQTBJQlBncEVBQUdEc0dBQUF3RDBBQUF3QWdUQVlBQkVBTUFCVWlWbUU5eGdBQU1BOUFBQUNBSWE4QUJrQUFNQTlBQUFHQUx5QkFjQkFDR2taQUFEQVBRQUFDZ0IzcHVFVkFBZFVnS1NDaXhrQUFNQTlBQUFHQUtJeFFIZ1NBSTBaQUFEQVBRQUFCZ0NpT3dEZ0F3QUZHZ0FBd0QwQUFBUUFBVGVCQUF3YUFBREFQUUFBQkFDRmtoT0FIQm9BQU1BOUFBQUNBUHVsSFJvQUFNQTlBQUFDQUEreUpob0FBTUE5QUFBQ0FMNkpMaG9BQU1BOUFBQUNBTEtyTHhvQUFNQTlBQUFHQU5TRFdxZHNnRFFhQUFEQVBRQUFCQUFQaFlHR09Cb0FBTUE5QUFBQ0FHbUZGeHNBQU1BOUFBQUVBTkVUQUFXNUhBQUF3RDBBQUFRQW43SUFnTDhjQUFEQVBRQUFBZ0FJcCtRY0FBREFQUUFBQWdCWW1wMGVBQURBUFFBQUNnQVNEd0NLSUFCbGh4eVF2eDRBQU1BOUFBQUNBRksvMXg0QUFNQTlBQUFHQUZ1WU1vTzhsOW9lQUFEQVBRQUFCZ0I1bXo2TUNZRGJIZ0FBd0QwQUFBb0FzUk1BUkdxQUFvQUVnUGNlQUFEQVBRQUFDQUNNdGh5QXVvVUlnSXNmQUFEQVBRQUFBZ0MrZzVBZkFBREFQUUFBQWdBOHJKb2ZBQURBUFFBQUFnREhrUVFnQUFEQVBRQUFBZ0FMaUNvZ0FBREFQUUFBQWdCNWlMWWdBQURBUFFBQUFnQ0t0Y1VnQUFEQVBRQUFBZ0RibXNZZ0FBREFQUUFBQWdCanRjOGdBQURBUFFBQUNBQUNFd0NFQXdEWmp0RWdBQURBUFFBQUJBRFp2Z2FBMVNBQUFNQTlBQUFHQUdLTWRvZzVpdFlnQUFEQVBRQUFBZ0RxcGRvZ0FBREFQUUFBQmdBUWthK1FEWURmSUFBQXdEMEFBQVFBaHFDbWcrQWdBQURBUFFBQUFnQXB0dVFnQUFEQVBRQUFCQUE4b2hHQTVTQUFBTUE5QUFBQ0FLaStpU0VBQU1BOUFBQUNBRnE5bENFQUFNQTlBQUFDQUxPMnBpRUFBTUE5QUFBVUFDSW9BQjRFUUNpRXd3Y0FCZ0VBb0FNc2dLZURzQ0VBQU1BOUFBQUtBTFdVRVFDQUFUT0FoSUd5SVFBQXdEMEFBQVFBdTROU2pMTWhBQURBUFFBQUFnQUNzczhoQUFEQVBRQUFBZ0FXck5BaEFBREFQUUFBQmdCQmtoRUFZQURTSVFBQXdEMEFBQWdBRDd3QndBd0FYb0xUSVFBQXdEMEFBQUlBcklYaElRQUF3RDBBQUFRQVk2SVFqdzhpQUFEQVBRQUFBZ0RNaWhFaUFBREFQUUFBQWdDMWh4SWlBQURBUFFBQUFnRE1raFFpQUFEQVBRQUFCQURWaHNpNFwiLFwicmFuZ2VcIjp7XCJtaW5cIjpcIjA1QzFFMUY3RTlCRDZBXCIsXCJtYXhcIjpcIjA1QzFFMzJCNEY5NzUwXCJ9fV0ifQ%3D%3D + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ms-canary4","name":"ms-canary4","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f159c531-f9e6-4ce9-858d-99491c363f17","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-01-12T22:03:20.6669678Z","changedTime":"2021-07-27T05:40:13.7100188Z","provisioningState":"Succeeded","tags":{"tag1":"value1"},"systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-01-12T22:03:21.0323859Z","lastModifiedBy":"georgenm@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-02-23T19:45:10.2561371Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adbai-test/providers/Microsoft.Quantum/Workspaces/adbai-privatepreview-test","name":"adbai-privatepreview-test","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a6469555-aa58-49c5-ab67-4ce4153d005f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-02-01T19:42:54.6555906Z","changedTime":"2021-09-02T21:54:41.4994698Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"adbai@microsoft.com","createdByType":"User","createdAt":"2021-02-01T19:42:56.2851246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-02T21:44:32.689972Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-04-13T19:10:57.5675579Z","changedTime":"2022-04-14T17:01:32.143089Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-14T16:49:38.6414588Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x","name":"temp-lg4x","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"21e4e4a0-51c5-44d1-a3ce-a33f3b9ef111","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:38:03.6680292Z","changedTime":"2021-07-27T06:46:36.799255Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T18:38:03.981634Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:38:18.051526Z"}}],"nextLink":"https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?%24filter=location+eq+%27westus2%27+and+resourceType+eq+%27Microsoft.Quantum%2fWorkspaces%27&%24expand=createdTime%2cchangedTime%2cprovisioningState&api-version=2021-04-01&%24skiptoken=eyJuZXh0TWFya2VyIjoiW3tcInRva2VuXCI6XCIrUklEOn5mN045QVB2UEs4WnZZSmNJQUFCd0R3PT0jUlQ6MiNUUkM6MjAwMCNJU1Y6MiNJRU86NjU1NTEjRlBDOkFnaGRJZ0FBd0QwQUFGQThBQURBUFFBQVhTSUFBTUE5QUFBWUFHK2dWa0JyL0xuNi83OWYvdisvYi84UlFQKy9JVUQvTDlnaUFBREFQUUFBQWdDY2lOd2lBQURBUFFBQUFnQ3ByTjBpQUFEQVBRQUFBZ0FSaHVBaUFBREFQUUFBQkFEdm5oMkE4aUlBQU1BOUFBQUVBQTI5YklENElnQUF3RDBBQUFRQUJwQldxZ0FqQUFEQVBRQUFBZ0R5akFVakFBREFQUUFBRkFDbmp2ZUEzWURBZ0hxRUpZRVJBSUFnNVlFWGh3c2pBQURBUFFBQUJBQjdqYitBU2lNQUFNQTlBQUFJQUZDR0NZQ1ZpcXFWVVNNQUFNQTlBQUFFQUVxOUtZQmxJd0FBd0QwQUFBWUFoWk1Cd0FBR2V5TUFBTUE5QUFBSUFNU1FCSUROZ1d1SmtTTUFBTUE5QUFBQ0FDQ1lCeVFBQU1BOUFBQUNBSE9rQ1NRQUFNQTlBQUFDQUJpL0NpUUFBTUE5QUFBQ0FOT0hEQ1FBQU1BOUFBQUNBRjI4S3lRQUFNQTlBQUFFQUZFRElBWjlKQUFBd0QwQUFBd0Frd3RBRG9BQUVnREJnRHlEZ1NRQUFNQTlBQUFFQU8rNEFvRExKQUFBd0QwQUFBUUFncXM4Z2RBa0FBREFQUUFBQ0FEQW1nYUNtb2tGZ05Ra0FBREFQUUFBQWdDOXU5Y2tBQURBUFFBQUFnQW1xdlFrQUFEQVBRQUFCQURIdFJ1QTlpUUFBTUE5QUFBQ0FDTzkrQ1FBQU1BOUFBQUVBQ0djcm9EN0pBQUF3RDBBQUFJQThMc1VKUUFBd0QwQUFBSUFtb1FkSlFBQXdEMEFBQUlBMmFRZUpRQUF3RDBBQUFZQU01YmxnTnlWSVNVQUFNQTlBQUFDQUllMUtDVUFBTUE5QUFBQ0FDNjZLaVVBQU1BOUFBQUVBRFdHUTRNc0pRQUF3RDBBQUFJQWpZY3dKUUFBd0QwQUFBSUEwcW8wSmdBQXdEMEFBQUlBOEsydkp3QUF3RDBBQUFJQU9KUHNKd0FBd0QwQUFBUUFkcjU0Z08wbkFBREFQUUFBQkFCcmcvT0ZEU2dBQU1BOUFBQUVBSm1MUW9KYktBQUF3RDBBQUJBQXo0Q3FnT0VBQUtEcWdBaUFmSkN4bkdrb0FBREFQUUFBQ0FDOHB3SEFHQURlZ21vb0FBREFQUUFBQkFCRm1GZVRjU2dBQU1BOUFBQUdBSENNbVlxNGdYTW9BQURBUFFBQUFnRFJ2WFFvQUFEQVBRQUFBZ0NucVlJb0FBREFQUUFBQWdDcHY0WW9BQURBUFFBQUFnQ2JuWWNvQUFEQVBRQUFBZ0JzdElrb0FBREFQUUFBQWdDWmpKWW9BQURBUFFBQUJBQ3JwdnFIbXlnQUFNQTlBQUFFQUpLZENvQ2pLQUFBd0QwQUFBUUFVSWZkdGF3b0FBREFQUUFBQWdDVWtyd29BQURBUFFBQUFnQ1B0b29wQUFEQVBRQUFBZ0F3cGdZcUFBREFQUUFBQWdBTXV3a3FBQURBUFFBQUFnQVdrQTBxQUFEQVBRQUFBZ0NsZ25vcUFBREFQUUFBQmdEc3RFK0I0NEY5S2dBQXdEMEFBQVFBU3JRSmdJSXFBQURBUFFBQUJnQmJodzJBTUlDRktnQUF3RDBBQUFZQUo0YStxUUNBbHlvQUFNQTlBQUFHQUcrNEVRQU1BS1lxQUFEQVBRQUFBZ0EyaXFvcUFBREFQUUFBQmdDQWtBR0FFb0F4S3dBQXdEMEFBQUlBMDRnMUt3QUF3RDBBQUFJQVpMNDhLd0FBd0QwQUFBSUF6NDFlS3dBQXdEMEFBQVFBakpBTmdNRXJBQURBUFFBQUNBQVBwMnFHUTRKY2dOTXJBQURBUFFBQUFnQjVzRUFzQUFEQVBRQUFGQUNTaTlpRk5vSzNnUUNTQWdFQVlBRUFVSUxVZ1VZc0FBREFQUUFBQWdEaWdRWXRBQURBUFFBQUFnQURpMU11QUFEQVBRQUFCQURqcTlXQVdDNEFBTUE5QUFBR0FHMitBY0FHQUdJdUFBREFQUUFBQmdCUktNQUIxb0ZqTGdBQXdEMEFBQTRBOFFvQTRPRUFBQnp2Z055QTZZSnJMZ0FBd0QwQUFBSUFLcE52TGdBQXdEMEFBQUlBdHFsL0xnQUF3RDBBQUFJQUtweWtMZ0FBd0QwQUFBSUFHSkVGTHdBQXdEMEFBQVFBOFNZQVNMQXZBQURBUFFBQUFnQjNnK292QUFEQVBRQUFBZ0NLb2pnd0FBREFQUUFBQWdEbnZZSXdBQURBUFFBQUFnQmJqR0V4QUFEQVBRQUFBZ0Q4dW1VeEFBREFQUUFBQ0FDcnN2NkI0UU1ZQUhFeEFBREFQUUFBQWdDN25ZSXhBQURBUFFBQUFnQ3BrNDR4QUFEQVBRQUFDZ0RqTXdEQUFRQ0FBZkdEanpFQUFNQTlBQUFHQUdJbEFEQUFDSlF4QUFEQVBRQUFEQUM2aERPdkFRRUFIcm1FSW9DVk1RQUF3RDBBQURBQWdRa0FlR0lCQUFZREFGK0NBY0FZb0o2Qkg0Q0JBR0FHM0lFQ0VCZ0FBUURTQUFEQVVBQlJnN0lSQURBWUFJcUNGVElBQU1BOUFBQUVBQUU0QUNqUE1nQUF3RDBBQUFRQTRSQUFCbFV6QUFEQVBRQUFGQUJkb0wrQUc0UVpnQ09CUElCbWhNS0NEb0JKZ0dBekFBREFQUUFBQkFCUHFRU0JZVE1BQU1BOUFBQUVBRldtTElCNk13QUF3RDBBQUVBQVRvcHFnTEdCUjREemlWU0JHSUNXZ0ZTRFFvQWlnUStDaVlGdmdFS0FLWUJtZ0pDQWtJR3FnWEtBeElEa2g0dUJFWUNYZ0JHQkJJQVVnRW1Bd0lJTGdIc3pBQURBUFFBQUtnQjhoUktBWUlDMmdBMlFJSUhVZ0c2QWxvSCtrR0VBUUVEM2d3aUFvSUJjZ0ttQXNRSUFnWjZBTFlCOE13QUF3RDBBQUFnQVk0RjZnQmlBeVlBSE5BQUF3RDBBQUFnQXI1TUJ3RkVBdjRzTU5BQUF3RDBBQUJRQWdRVXd3TklCZ0FFTUFEU0U2WUhCQUtNQTFJWWpOQUFBd0QwQUFBSUFISXNuTkFBQXdEMEFBQVFBQVNnQXdQWTBBQURBUFFBQUJBQnhEQUFETURZQUFNQTlBQUFDQUhpTmJ6WUFBTUE5QUFBQ0FBU0VqRFlBQU1BOUFBQUVBTUVnUUVDVU5nQUF3RDBBQUFRQUVUUUFvTXMyQUFEQVBRQUFCQUFoQVFBRElqY0FBTUE5QUFBRUFIRTJBQkorT0FBQXdEMEFBQUlBcklyTE9BQUF3RDBBQUFRQUdKNFlnTTg0QUFEQVBRQUFBZ0FkaG5ZNUFBREFQUUFBQ0FBUkpiQUFJUUFBQm5zNUFBREFQUUFBQWdDVWlZbzVBQURBUFFBQUFnQWZtSkE1QUFEQVBRQUFCQUNwbFN1cWtUa0FBTUE5QUFBQ0FQU0FsemtBQU1BOUFBQUlBTWExN29rQndBa0FtRGtBQU1BOUFBQUNBSzZCbkRrQUFNQTlBQUFLQURFb0lBR1JBd0JSNkloUVBBQUF3RDBBQUFJQVk3ND1cIixcInJhbmdlXCI6e1wibWluXCI6XCIwNUMxRTFGN0U5QkQ2QVwiLFwibWF4XCI6XCIwNUMxRTMyQjRGOTc1MFwifX1dIn0%3d"}' headers: cache-control: - no-cache content-length: - - '19471' + - '7203' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:56 GMT + - Fri, 27 May 2022 17:09:29 GMT expires: - '-1' pragma: @@ -55,9 +223,9 @@ interactions: ParameterSetName: - -l -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.2 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.1 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?%24filter=location+eq+%27westus2%27+and+resourceType+eq+%27Microsoft.Quantum%2FWorkspaces%27&%24expand=createdTime%2CchangedTime%2CprovisioningState&api-version=2021-04-01&%24skiptoken=eyJuZXh0TWFya2VyIjoiK1JJRDp%2BZjdOOUFQdlBLOGJ3WHBjSUFBQndEdz09I1JUOjEjVFJDOjEwMDAjSVNWOjIjSUVPOjY1NTUxI1FDRjo3I0ZQQzpBZ2hkSWdBQXdEMEFBRkE4QUFEQVBRQUFYU0lBQU1BOUFBQXVBUEFlWlVDL2FsbXJ0dWU1WkpYOUlrRC83ZzdvVVVELzY0WkFhLzI1K3YrL1gvNy92My8vRVVEL3Z5RkEveS9ZSWdBQXdEMEFBQUlBbklqY0lnQUF3RDBBQUFJQXFhemRJZ0FBd0QwQUFBSUFFWWJnSWdBQXdEMEFBQVFBNzU0ZGdQSWlBQURBUFFBQUJBQU52V3lBK0NJQUFNQTlBQUFFQUFhUVZxb0FJd0FBd0QwQUFBSUE4b3dGSXdBQXdEMEFBQlFBcDQ3M2dOMkF3SUI2aENXQkVRQ0FJT1dCRjRjTEl3QUF3RDBBQUFRQWU0Mi9nRW9qQUFEQVBRQUFDQUJRaGdtQWxZcXFsVkVqQUFEQVBRQUFCQUJLdlNtQVpTTUFBTUE5QUFBR0FJV1RBY0FBQm5zakFBREFQUUFBQ0FERWtBU0F6WUZyaVpFakFBREFQUUFBQWdBZ21BY2tBQURBUFFBQUFnQnpwQWtrQUFEQVBRQUFBZ0FZdndva0FBREFQUUFBQWdEVGh3d2tBQURBUFFBQUFnQmR2Q3NrQUFEQVBRQUFCQUJSQXlBR2ZTUUFBTUE5QUFBTUFKTUxRQTZBQUJJQXdZQThnNEVrQUFEQVBRQUFCQUR2dUFLQXl5UUFBTUE5QUFBRUFJS3JQSUhRSkFBQXdEMEFBQWdBd0pvR2dwcUpCWURVSkFBQXdEMEFBQUlBdmJ2WEpBQUF3RDBBQUFRQUpxcmFpOWtrQUFEQVBRQUFCQUIzaWlhTjlDUUFBTUE5QUFBRUFNZTFHNEQySkFBQXdEMEFBQUlBSTczNEpBQUF3RDBBQUFRQUlaeXVnUHNrQUFEQVBRQUFBZ0R3dXhRbEFBREFQUUFBQWdDYWhCMGxBQURBUFFBQUFnRFpwQjRsQUFEQVBRQUFCZ0F6bHVXQTNKVWhKUUFBd0QwQUFBSUFoN1VvSlFBQXdEMEFBQUlBTHJvcUpRQUF3RDBBQUFRQU5ZWkRneXdsQUFEQVBRQUFBZ0NOaHpBbEFBREFQUUFBQWdEU3FqUW1BQURBUFFBQUFnRHdyYThuQUFEQVBRQUFBZ0E0ayt3bkFBREFQUUFBQkFCMnZuaUE3U2NBQU1BOUFBQUVBR3VEODRVTktBQUF3RDBBQUFRQW1ZdENnbHNvQUFEQVBRQUFFQURQZ0txQTRRQUFvT3FBQ0lCOGtMR2NhU2dBQU1BOUFBQUlBTHluQWNBWUFONkNhaWdBQU1BOUFBQUVBRVdZVjVOeEtBQUF3RDBBQUFZQWNJeVppcmlCY3lnQUFNQTlBQUFDQU5HOWRDZ0FBTUE5QUFBQ0FLZXBnaWdBQU1BOUFBQUNBS20vaGlnQUFNQTlBQUFDQUp1ZGh5Z0FBTUE5QUFBQ0FHeTBpU2dBQU1BOUFBQUNBSm1NbGlnQUFNQTlBQUFFQUt1bStvZWJLQUFBd0QwQUFBUUFrcDBLZ0tNb0FBREFQUUFBQkFCUWg5MjFyQ2dBQU1BOUFBQUNBSlNTdkNnQUFNQTlBQUFDQUkrMmlpa0FBTUE5QUFBQ0FEQ21CaW9BQU1BOUFBQUNBQXk3Q1NvQUFNQTlBQUFDQUJhUURTb0FBTUE5QUFBQ0FLV0NlaW9BQU1BOUFBQUdBT3kwVDRIamdYMHFBQURBUFFBQUJBQkt0QW1BZ2lvQUFNQTlBQUFHQUZ1SERZQXdnSVVxQUFEQVBRQUFCZ0FuaHI2cEFJQ1hLZ0FBd0QwQUFBWUFiN2dSQUF3QXBpb0FBTUE5QUFBQ0FEYUtxaW9BQU1BOUFBQUdBSUNRQVlBU2dERXJBQURBUFFBQUFnRFRpRFVyQUFEQVBRQUFBZ0Jrdmp3ckFBREFQUUFBQWdEUGpWNHJBQURBUFFBQUJBQ01rQTJBd1NzQUFNQTlBQUFJQUErbmFvWkRnbHlBMHlzQUFNQTlBQUFFQUhtd0xJQkFMQUFBd0QwQUFCUUFrb3ZZaFRhQ3Q0RUFrZ0lCQUdBQkFGQ0MxSUZHTEFBQXdEMEFBQUlBNG9FR0xRQUF3RDBBQUFJQUE0dFRMZ0FBd0QwQUFBUUE0NnZWZ0ZndUFBREFQUUFBQmdCdHZnSEFCZ0JpTGdBQXdEMEFBQVlBVVNqQUFkYUJZeTRBQU1BOUFBQU9BUEVLQU9EaEFBQWM3NERjZ09tQ2F5NEFBTUE5QUFBQ0FDcVRieTRBQU1BOUFBQUNBTGFwZnk0QUFNQTlBQUFDQUNxY3BDNEFBTUE5QUFBQ0FCaVJCUzhBQU1BOUFBQUVBUEVtQUVpd0x3QUF3RDBBQUFJQWQ0UHFMd0FBd0QwQUFBSUFpcUk0TUFBQXdEMEFBQUlBNTcyQ01BQUF3RDBBQUFJQVc0d21NUUFBd0QwQUFBSUFRSmxoTVFBQXdEMEFBQUlBL0xwbE1RQUF3RDBBQUFnQXE3TCtnZUVER0FCeE1RQUF3RDBBQUFJQXU1MkNNUUFBd0QwQUFBSUFxWk9PTVFBQXdEMEFBQW9BNHpNQXdBRUFnQUh4ZzQ4eEFBREFQUUFBQmdCaUpRQXdBQWlVTVFBQXdEMEFBQXdBdW9RenJ3RUJBQjY1aENLQWxURUFBTUE5QUFBd0FJRUpBSGhpQVFBR0F3QmZnZ0hBR0tDZWdSK0FnUUJnQnR5QkFoQVlBQUVBMGdBQXdGQUFVWU95RVFBd0dBQ0tncGt4QUFEQVBRQUFBZ0J1cUJVeUFBREFQUUFBQkFBQk9BQW96eklBQU1BOUFBQUVBT0VRQUFaVk13QUF3RDBBQUJnQVhhQy9nQnVFR1lBamdUeUE1b01RZ0ZhQXdvSU9nRW1BWURNQUFNQTlBQUFHQUxDb2o0QUVnV0V6QUFEQVBRQUFCQUJWcGl5QWVqTUFBTUE5QUFCT0FFNkthb0JoZ1VHQVI0RGtpUU9BVklFWWdKYUFWSU5DZ0xLQVlvQVBnb21CYjRCQ2dDbUFab0NRZ011QXdJQlFnRXFCY29ERWdPU0hpNEVSZ0plQU1ZRFJnQVNBRG9BRWdFbUF3SUlMZ0hzekFBREFQUUFBTGdCOGhSS0FZSUJHZ0dhQURaQWdnZFNBYm9DV2dmNlFZUUJBUVBlRENJQ2dnRnlBcVlDeEFnQ0JaWUF1Z0MyQWZETUFBTUE5QUFBS0FHT0JHSUJhZ0JpQXlZQUhOQUFBd0QwQUFBZ0FyNU1Cd0ZFQXY0c01OQUFBd0QwQUFCUUFnUVV3d05JQmdBRU1BRFNFNllIQkFLTUExSVlqTkFBQXdEMEFBQUlBSElzbk5BQUF3RDBBQUFRQUFTZ0F3UFkwQUFEQVBRQUFCQUJ4REFBRE1EWUFBTUE5QUFBQ0FIaU5iellBQU1BOUFBQUNBQVNFakRZQUFNQTlBQUFFQU1FZ1FFQ1VOZ0FBd0QwQUFBUUFFVFFBb0pnMkFBREFQUUFBQWdDY3BzczJBQURBUFFBQUJBQWhBUUFESWpjQUFNQTlBQUFFQUhFMkFCSitPQUFBd0QwQUFBSUFySXJMT0FBQXdEMEFBQVFBR0o0WWdNODRBQURBUFFBQUFnQWRoblk1QUFEQVBRQUFDQUFSSmJBQUlRQUFCbnM1QUFEQVBRQUFCQUNSQ1JJQWlqa0FBTUE5QUFBQ0FCK1lrRGtBQU1BOUFBQUVBS21WSzZxUk9RQUF3RDBBQUFJQTlJQ1hPUUFBd0QwQUFBZ0F4clh1aVFIQUNRQ1lPUUFBd0QwQUFBSUFyb0djT1FBQXdEMEFBQW9BTVNnZ0FaRURBRkhvaUs0NUFBREFQUUFBQWdCRm5WQThBQURBUFFBQUFnQmp2Zz09In0%3D + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?%24filter=location+eq+%27westus2%27+and+resourceType+eq+%27Microsoft.Quantum%2FWorkspaces%27&%24expand=createdTime%2CchangedTime%2CprovisioningState&api-version=2021-04-01&%24skiptoken=eyJuZXh0TWFya2VyIjoiW3tcInRva2VuXCI6XCIrUklEOn5mN045QVB2UEs4WnZZSmNJQUFCd0R3PT0jUlQ6MiNUUkM6MjAwMCNJU1Y6MiNJRU86NjU1NTEjRlBDOkFnaGRJZ0FBd0QwQUFGQThBQURBUFFBQVhTSUFBTUE5QUFBWUFHK2dWa0JyL0xuNi83OWYvdisvYi84UlFQKy9JVUQvTDlnaUFBREFQUUFBQWdDY2lOd2lBQURBUFFBQUFnQ3ByTjBpQUFEQVBRQUFBZ0FSaHVBaUFBREFQUUFBQkFEdm5oMkE4aUlBQU1BOUFBQUVBQTI5YklENElnQUF3RDBBQUFRQUJwQldxZ0FqQUFEQVBRQUFBZ0R5akFVakFBREFQUUFBRkFDbmp2ZUEzWURBZ0hxRUpZRVJBSUFnNVlFWGh3c2pBQURBUFFBQUJBQjdqYitBU2lNQUFNQTlBQUFJQUZDR0NZQ1ZpcXFWVVNNQUFNQTlBQUFFQUVxOUtZQmxJd0FBd0QwQUFBWUFoWk1Cd0FBR2V5TUFBTUE5QUFBSUFNU1FCSUROZ1d1SmtTTUFBTUE5QUFBQ0FDQ1lCeVFBQU1BOUFBQUNBSE9rQ1NRQUFNQTlBQUFDQUJpL0NpUUFBTUE5QUFBQ0FOT0hEQ1FBQU1BOUFBQUNBRjI4S3lRQUFNQTlBQUFFQUZFRElBWjlKQUFBd0QwQUFBd0Frd3RBRG9BQUVnREJnRHlEZ1NRQUFNQTlBQUFFQU8rNEFvRExKQUFBd0QwQUFBUUFncXM4Z2RBa0FBREFQUUFBQ0FEQW1nYUNtb2tGZ05Ra0FBREFQUUFBQWdDOXU5Y2tBQURBUFFBQUFnQW1xdlFrQUFEQVBRQUFCQURIdFJ1QTlpUUFBTUE5QUFBQ0FDTzkrQ1FBQU1BOUFBQUVBQ0djcm9EN0pBQUF3RDBBQUFJQThMc1VKUUFBd0QwQUFBSUFtb1FkSlFBQXdEMEFBQUlBMmFRZUpRQUF3RDBBQUFZQU01YmxnTnlWSVNVQUFNQTlBQUFDQUllMUtDVUFBTUE5QUFBQ0FDNjZLaVVBQU1BOUFBQUVBRFdHUTRNc0pRQUF3RDBBQUFJQWpZY3dKUUFBd0QwQUFBSUEwcW8wSmdBQXdEMEFBQUlBOEsydkp3QUF3RDBBQUFJQU9KUHNKd0FBd0QwQUFBUUFkcjU0Z08wbkFBREFQUUFBQkFCcmcvT0ZEU2dBQU1BOUFBQUVBSm1MUW9KYktBQUF3RDBBQUJBQXo0Q3FnT0VBQUtEcWdBaUFmSkN4bkdrb0FBREFQUUFBQ0FDOHB3SEFHQURlZ21vb0FBREFQUUFBQkFCRm1GZVRjU2dBQU1BOUFBQUdBSENNbVlxNGdYTW9BQURBUFFBQUFnRFJ2WFFvQUFEQVBRQUFBZ0NucVlJb0FBREFQUUFBQWdDcHY0WW9BQURBUFFBQUFnQ2JuWWNvQUFEQVBRQUFBZ0JzdElrb0FBREFQUUFBQWdDWmpKWW9BQURBUFFBQUJBQ3JwdnFIbXlnQUFNQTlBQUFFQUpLZENvQ2pLQUFBd0QwQUFBUUFVSWZkdGF3b0FBREFQUUFBQWdDVWtyd29BQURBUFFBQUFnQ1B0b29wQUFEQVBRQUFBZ0F3cGdZcUFBREFQUUFBQWdBTXV3a3FBQURBUFFBQUFnQVdrQTBxQUFEQVBRQUFBZ0NsZ25vcUFBREFQUUFBQmdEc3RFK0I0NEY5S2dBQXdEMEFBQVFBU3JRSmdJSXFBQURBUFFBQUJnQmJodzJBTUlDRktnQUF3RDBBQUFZQUo0YStxUUNBbHlvQUFNQTlBQUFHQUcrNEVRQU1BS1lxQUFEQVBRQUFBZ0EyaXFvcUFBREFQUUFBQmdDQWtBR0FFb0F4S3dBQXdEMEFBQUlBMDRnMUt3QUF3RDBBQUFJQVpMNDhLd0FBd0QwQUFBSUF6NDFlS3dBQXdEMEFBQVFBakpBTmdNRXJBQURBUFFBQUNBQVBwMnFHUTRKY2dOTXJBQURBUFFBQUFnQjVzRUFzQUFEQVBRQUFGQUNTaTlpRk5vSzNnUUNTQWdFQVlBRUFVSUxVZ1VZc0FBREFQUUFBQWdEaWdRWXRBQURBUFFBQUFnQURpMU11QUFEQVBRQUFCQURqcTlXQVdDNEFBTUE5QUFBR0FHMitBY0FHQUdJdUFBREFQUUFBQmdCUktNQUIxb0ZqTGdBQXdEMEFBQTRBOFFvQTRPRUFBQnp2Z055QTZZSnJMZ0FBd0QwQUFBSUFLcE52TGdBQXdEMEFBQUlBdHFsL0xnQUF3RDBBQUFJQUtweWtMZ0FBd0QwQUFBSUFHSkVGTHdBQXdEMEFBQVFBOFNZQVNMQXZBQURBUFFBQUFnQjNnK292QUFEQVBRQUFBZ0NLb2pnd0FBREFQUUFBQWdEbnZZSXdBQURBUFFBQUFnQmJqR0V4QUFEQVBRQUFBZ0Q4dW1VeEFBREFQUUFBQ0FDcnN2NkI0UU1ZQUhFeEFBREFQUUFBQWdDN25ZSXhBQURBUFFBQUFnQ3BrNDR4QUFEQVBRQUFDZ0RqTXdEQUFRQ0FBZkdEanpFQUFNQTlBQUFHQUdJbEFEQUFDSlF4QUFEQVBRQUFEQUM2aERPdkFRRUFIcm1FSW9DVk1RQUF3RDBBQURBQWdRa0FlR0lCQUFZREFGK0NBY0FZb0o2Qkg0Q0JBR0FHM0lFQ0VCZ0FBUURTQUFEQVVBQlJnN0lSQURBWUFJcUNGVElBQU1BOUFBQUVBQUU0QUNqUE1nQUF3RDBBQUFRQTRSQUFCbFV6QUFEQVBRQUFGQUJkb0wrQUc0UVpnQ09CUElCbWhNS0NEb0JKZ0dBekFBREFQUUFBQkFCUHFRU0JZVE1BQU1BOUFBQUVBRldtTElCNk13QUF3RDBBQUVBQVRvcHFnTEdCUjREemlWU0JHSUNXZ0ZTRFFvQWlnUStDaVlGdmdFS0FLWUJtZ0pDQWtJR3FnWEtBeElEa2g0dUJFWUNYZ0JHQkJJQVVnRW1Bd0lJTGdIc3pBQURBUFFBQUtnQjhoUktBWUlDMmdBMlFJSUhVZ0c2QWxvSCtrR0VBUUVEM2d3aUFvSUJjZ0ttQXNRSUFnWjZBTFlCOE13QUF3RDBBQUFnQVk0RjZnQmlBeVlBSE5BQUF3RDBBQUFnQXI1TUJ3RkVBdjRzTU5BQUF3RDBBQUJRQWdRVXd3TklCZ0FFTUFEU0U2WUhCQUtNQTFJWWpOQUFBd0QwQUFBSUFISXNuTkFBQXdEMEFBQVFBQVNnQXdQWTBBQURBUFFBQUJBQnhEQUFETURZQUFNQTlBQUFDQUhpTmJ6WUFBTUE5QUFBQ0FBU0VqRFlBQU1BOUFBQUVBTUVnUUVDVU5nQUF3RDBBQUFRQUVUUUFvTXMyQUFEQVBRQUFCQUFoQVFBRElqY0FBTUE5QUFBRUFIRTJBQkorT0FBQXdEMEFBQUlBcklyTE9BQUF3RDBBQUFRQUdKNFlnTTg0QUFEQVBRQUFBZ0FkaG5ZNUFBREFQUUFBQ0FBUkpiQUFJUUFBQm5zNUFBREFQUUFBQWdDVWlZbzVBQURBUFFBQUFnQWZtSkE1QUFEQVBRQUFCQUNwbFN1cWtUa0FBTUE5QUFBQ0FQU0FsemtBQU1BOUFBQUlBTWExN29rQndBa0FtRGtBQU1BOUFBQUNBSzZCbkRrQUFNQTlBQUFLQURFb0lBR1JBd0JSNkloUVBBQUF3RDBBQUFJQVk3ND1cIixcInJhbmdlXCI6e1wibWluXCI6XCIwNUMxRTFGN0U5QkQ2QVwiLFwibWF4XCI6XCIwNUMxRTMyQjRGOTc1MFwifX1dIn0%3D response: body: string: '{"value":[]}' @@ -69,7 +237,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:56 GMT + - Fri, 27 May 2022 17:09:29 GMT expires: - '-1' pragma: @@ -97,21 +265,21 @@ interactions: ParameterSetName: - -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.2 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.36.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.10.1 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?$filter=resourceType%20eq%20%27Microsoft.Quantum%2FWorkspaces%27&$expand=createdTime%2CchangedTime%2CprovisioningState&api-version=2021-04-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-19581862-24ce-455d-b363-ef6936cc51b9","name":"ws-19581862-24ce-455d-b363-ef6936cc51b9","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f3961842-400c-4ea7-b170-bfd1782f2a92","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-17T17:29:25.3329306Z","changedTime":"2021-07-27T05:34:50.5202765Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-17T17:29:25.4492767Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-17T17:29:37.3071486Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-82882539-c48d-4506-bea6-9285ee94fda2","name":"ws-82882539-c48d-4506-bea6-9285ee94fda2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"85b313ac-654b-4e86-8cca-bb60aff502d8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-17T18:52:59.6021849Z","changedTime":"2021-07-27T05:38:06.7819782Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-17T18:52:59.6877962Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-17T18:53:11.414308Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/canary","name":"canary","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"d709673c-b97b-4819-8057-f0848b382f34","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-19T20:07:16.3145036Z","changedTime":"2021-07-27T05:39:25.5576071Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-05-19T20:07:16.628457Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-19T20:08:50.0226919Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/test-westus","name":"test-westus","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"f0ff013f-703a-4933-9ab1-f28d3357062f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-08T19:55:53.1199626Z","changedTime":"2021-07-27T05:35:27.7690727Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-08T19:55:53.3496304Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-08T19:56:04.7420561Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-80ee1bea-ab32-4e2f-98ea-cd3616a88fc8","name":"ws-80ee1bea-ab32-4e2f-98ea-cd3616a88fc8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c066ffac-00b3-4384-9aca-bcb9be40fc79","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-09T22:23:52.6143056Z","changedTime":"2021-07-27T05:38:21.6788266Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-09T22:23:52.83096Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-10T17:35:25.7307522Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-uksouth-rg/providers/Microsoft.Quantum/Workspaces/ws-e5d7be5e-7700-422d-9908-939e8500086b","name":"ws-e5d7be5e-7700-422d-9908-939e8500086b","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"86bdb98a-18b3-4d16-ba03-e0f25e8c80f4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-09T22:27:00.5629272Z","changedTime":"2021-07-27T05:37:13.1834501Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-09T22:27:00.6787536Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-09T22:27:14.1288761Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/ws-creation-test","name":"ws-creation-test","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"f6f537fb-8321-4415-ae00-341a6b44eee6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T19:50:27.684289Z","changedTime":"2021-07-27T05:32:49.0220013Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-15T19:50:30.9915621Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T19:50:48.0628268Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/ws-creation-canary-test","name":"ws-creation-canary-test","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e5afe3b7-703c-4961-a370-6ff859d76c05","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T19:51:21.6774642Z","changedTime":"2021-07-27T05:32:24.1232733Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-15T19:51:21.8817475Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T19:51:34.3523333Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/ws-creation-test-eastus","name":"ws-creation-test-eastus","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"2160781a-190c-49c9-9b8b-38c378016e86","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T19:53:00.9810492Z","changedTime":"2021-07-27T05:34:06.7682187Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-15T19:53:01.3380556Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T19:53:14.1899114Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/test-masenol-sa-issue","name":"test-masenol-sa-issue","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"65bccb1a-ad35-4ecc-afaf-1aedb84783da","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T22:27:50.0551472Z","changedTime":"2021-07-27T05:31:50.2131095Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-15T22:27:53.3289032Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T22:28:09.0109864Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/masenol-test-2","name":"masenol-test-2","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"2cf333ea-09a0-49e9-b078-a966310a8c3b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T22:33:31.7994898Z","changedTime":"2021-07-27T05:32:27.1032399Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-15T22:33:32.6142826Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T22:33:45.3684666Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/masenol-test-4","name":"masenol-test-4","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"28d606ec-5a3a-4128-aa51-d5bcda758d1d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T22:52:31.4620221Z","changedTime":"2021-07-27T05:30:56.6132909Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-15T22:52:31.7394563Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T22:52:44.4351538Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/masenol-test-provider-targets","name":"masenol-test-provider-targets","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"d5967699-efaf-430c-81a1-acd0bdcb95e8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-16T19:18:53.0594353Z","changedTime":"2021-07-27T05:34:26.801826Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-16T19:18:53.655946Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-16T19:19:05.5618636Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/masenol-test-sa-fix","name":"masenol-test-sa-fix","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"4820a0a8-0240-43b4-93d9-56b0318bc4e1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-16T19:27:39.1900889Z","changedTime":"2021-07-27T05:35:14.2058508Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-16T19:27:39.2276941Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-16T19:27:51.8972889Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/masenol-sa-fix-2","name":"masenol-sa-fix-2","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"b05bc084-ca5a-43d9-a256-ed3eb98f5104","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-16T19:28:39.1441701Z","changedTime":"2021-07-27T05:33:08.5509605Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-16T19:28:39.2059197Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-16T19:28:51.3529059Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/test-portal-update","name":"test-portal-update","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"7d0af39d-43b5-4c24-bad0-ceeb22c454f7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-22T17:23:32.8821047Z","changedTime":"2021-07-27T05:35:06.383646Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-06-22T17:23:33.1809523Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-22T17:23:46.1883876Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-20ded1a8-5879-4713-ab13-0811adc620b3","name":"ws-20ded1a8-5879-4713-ab13-0811adc620b3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"07ec0dd4-0979-49b6-bab7-e315fca781d7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-22T18:37:58.7588167Z","changedTime":"2021-07-27T05:36:52.9882034Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-22T18:37:59.6776245Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-22T18:38:16.8639085Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-78ca0435-77d8-4da3-a827-83bfaee208e1","name":"ws-78ca0435-77d8-4da3-a827-83bfaee208e1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4e84206f-2b67-4c2c-aa83-58b42cb67b6c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-22T18:43:41.5058846Z","changedTime":"2021-07-27T05:38:01.5612403Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-22T18:43:41.6217422Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-22T18:43:56.2601Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/EastUS2EUAP","name":"EastUS2EUAP","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"9e98d604-cb41-448d-9cda-b38f38942393","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-29T04:00:02.4503411Z","changedTime":"2021-08-16T21:46:32.4963147Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2021-05-29T04:00:03.0788927Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-16T21:36:23.702052Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-delete-me-14","name":"ricardoe-delete-me-14","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"3d375cec-c96a-49c3-8cd0-14c4de8afea1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-20T07:13:32.7658856Z","changedTime":"2021-07-27T05:48:56.302055Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-20T07:13:33.1506246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-20T07:13:44.3412508Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/aq-uk-south","name":"aq-uk-south","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"4afd9fcc-df4f-4d47-a47a-a6fe0978ed04","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-20T15:16:55.2426643Z","changedTime":"2021-07-27T05:46:56.5788681Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-05-20T15:16:56.7033242Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-20T15:17:11.4498134Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-new-solvers","name":"frtibble-new-solvers","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"f3b65a59-3dfd-4141-ab1b-fae6ec1a3c05","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-03T13:00:05.1373165Z","changedTime":"2021-07-27T05:48:58.4736777Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-06-03T13:00:06.481294Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-03T13:00:20.3958294Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/EfratJupyter1","name":"EfratJupyter1","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"8e3c5e2a-7072-4618-9e93-37b28a819ba9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T20:15:53.3787489Z","changedTime":"2021-07-27T05:48:55.7332897Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"efratsh@microsoft.com","createdByType":"User","createdAt":"2021-06-15T20:15:53.4165551Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T20:16:05.9618885Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/EfratJupyter2","name":"EfratJupyter2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"cdb0b6be-041f-489f-a25f-a26f1c90d534","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-15T20:20:39.2348306Z","changedTime":"2021-07-27T05:46:17.7367936Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"efratsh@microsoft.com","createdByType":"User","createdAt":"2021-06-15T20:20:39.3612728Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-15T20:20:52.2652786Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-bugrepro","name":"frtibble-bugrepro","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"b3856ec8-ce5b-45c1-a4ec-1c7256f4d280","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-16T14:34:23.0513363Z","changedTime":"2021-07-27T05:48:46.9660986Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-06-16T14:34:23.6362132Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-16T14:34:36.8153441Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibblebugrepro2","name":"frtibblebugrepro2","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"701c2a6b-afe2-4f4c-a7cc-cd237a380f67","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-16T14:39:49.0990559Z","changedTime":"2021-07-27T05:47:44.2196711Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-06-16T14:39:49.7157615Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-16T14:40:02.6894373Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-mphasis","name":"frtibble-mphasis","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"fdeb64cb-e136-4fef-a616-c2ffa5fb6622","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-30T10:07:14.4667573Z","changedTime":"2021-07-27T05:45:14.2776274Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-06-30T10:07:14.9422441Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-30T10:07:29.8782102Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-jason","name":"frtibble-jason","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"1a6fa537-4882-4766-bbd2-aac2efce6d32","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-01T09:26:46.0000438Z","changedTime":"2021-07-27T05:48:18.8286403Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-07-01T09:26:47.4009424Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-01T09:27:01.9147259Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-demo-2","name":"frtibble-demo-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2213768a-aa6c-4949-b3d7-f5d434e1e088","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-06T17:05:57.3048486Z","changedTime":"2021-07-27T05:47:10.0507963Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-07-06T17:05:58.7257667Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-06T17:06:13.5957969Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-uz2toacz-1f1","name":"temp-uz2toacz-1f1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"5ab5d301-350b-4ac1-8a40-401ae35b8572","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-06T19:24:48.6263629Z","changedTime":"2021-07-27T05:33:51.855902Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-07-06T19:24:48.8323034Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-06T19:25:01.8287069Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-demo4","name":"frtibble-demo4","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"dbd1a9cd-4e97-4e3f-ab47-fd3f5bf3a7f6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-08T10:54:34.7259273Z","changedTime":"2021-07-27T05:46:46.1300619Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-07-08T10:54:35.9555883Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-08T10:54:49.6600517Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-ionq-simtest","name":"ricardoe-ionq-simtest","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"8ebe2e32-486e-441f-96ba-64e155c086df","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-08T22:48:48.7965381Z","changedTime":"2021-07-27T05:44:53.6984676Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-07-08T22:48:49.0134559Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-08T22:50:35.2352054Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-delete-me-81","name":"ricardoe-delete-me-81","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"6207507d-ca60-48af-818a-48934e549a5a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-09T00:56:16.2038141Z","changedTime":"2021-07-27T05:44:37.3638359Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-07-09T00:56:16.7268655Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-09T00:57:43.7881834Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-demo-workspace","name":"frtibble-demo-workspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"290848fd-da74-4115-958f-a9c11f48a163","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-13T12:38:19.4032686Z","changedTime":"2021-07-27T05:47:57.917126Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-07-13T12:38:20.1561048Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-13T12:38:32.0680232Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-mphasis-ssmc","name":"frtibble-mphasis-ssmc","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"63683dae-e6a9-4969-afdf-7572c8086b59","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-14T08:31:17.7854684Z","changedTime":"2021-07-27T05:47:26.872455Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-07-14T08:31:18.4908659Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-14T08:31:32.0213154Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yinshen-test/providers/Microsoft.Quantum/Workspaces/creditTest","name":"creditTest","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"2c76260e-c3b5-4720-9cd2-07229c795e21","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-14T23:35:41.3713243Z","changedTime":"2021-08-09T21:26:59.7328278Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"yinshen@microsoft.com","createdByType":"User","createdAt":"2021-07-14T23:35:41.4236391Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-09T21:16:46.0436823Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yinshen-test/providers/Microsoft.Quantum/Workspaces/creditTestNoQuota","name":"creditTestNoQuota","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"80ab56f2-d81b-4a12-a568-c58318520058","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-16T16:44:10.4553886Z","changedTime":"2021-07-27T05:38:43.8338667Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"yinshen@microsoft.com","createdByType":"User","createdAt":"2021-07-16T16:44:10.515859Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-16T16:45:56.3626821Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yinshen-test/providers/Microsoft.Quantum/Workspaces/credit-demo","name":"credit-demo","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"6c6d39d4-c2a0-413e-8aa2-3e39d40599a2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-16T17:51:08.40511Z","changedTime":"2021-07-27T05:41:24.6205032Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"yinshen@microsoft.com","createdByType":"User","createdAt":"2021-07-16T17:51:08.4590293Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-16T17:52:49.578994Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/anraman-workspace","name":"anraman-workspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1dbf1cdb-8cf5-4fe4-9444-febd2bab3409","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-20T22:51:02.8804312Z","changedTime":"2021-07-27T05:44:50.4886063Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anraman@microsoft.com","createdByType":"User","createdAt":"2021-07-20T22:51:02.9329677Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-07-20T22:51:18.1153468Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-01","name":"ricardoe-deltest-01","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"e93bd558-d748-4320-9b18-c06668517f42","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:27:13.7830615Z","changedTime":"2021-07-27T05:47:12.5721985Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-10-18T23:40:30.2405298Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-10-18T23:40:30.2405298Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-05","name":"ricardoe-deltest-05","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"abef1b3a-6e1f-4ed6-b816-b774998b253c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:27:17.7146409Z","changedTime":"2021-07-27T05:46:54.0651859Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-08T02:32:05.4507761Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-19","name":"ricardoe-deltest-19","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"88d06c4c-49c5-4e91-a672-f1b5461c159d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:13.7477202Z","changedTime":"2021-07-27T05:46:35.8518Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:28:55.5439308Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:28:55.5439308Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-04","name":"ricardoe-deltest-04","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"7b8f1d3e-8557-4d9c-9834-bc3194b92be0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:26.0236528Z","changedTime":"2021-07-27T05:47:26.8631889Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:00:40.5363241Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:00:40.5363241Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-03","name":"ricardoe-deltest-03","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"9076164d-1224-4a1a-b0a0-753d15b3775d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:42.987003Z","changedTime":"2021-07-27T05:48:09.5128184Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:01:13.4373444Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:01:13.4373444Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-31","name":"ricardoe-deltest-31","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"fb3d2875-9461-4d3d-a24e-3944daf5020f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:54.9678754Z","changedTime":"2021-07-27T05:50:31.3711636Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:58:08.6172491Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:58:08.6172491Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-15","name":"ricardoe-deltest-15","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"35c149c1-1691-4860-951d-f0c9185e33ad","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:08.4226339Z","changedTime":"2021-07-27T05:48:12.5753464Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:28:12.5252018Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:28:12.5252018Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-10","name":"ricardoe-deltest-10","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"18f5ca89-6d34-4763-94fc-221a9eb30963","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:24.7668862Z","changedTime":"2021-07-27T05:46:30.8982073Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:17:04.2770733Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:17:04.2770733Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-06","name":"ricardoe-deltest-06","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"92d04368-5707-444b-8016-9803b5c2b6b1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:33.0093551Z","changedTime":"2021-07-27T05:45:44.9829486Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:00:45.1797408Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:00:45.1797408Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-07","name":"ricardoe-deltest-07","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"17c6976d-da60-4949-8155-3f0847d2d86e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:37.0579805Z","changedTime":"2021-07-27T05:48:32.4057159Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:03:00.6052213Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:03:00.6052213Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-02","name":"ricardoe-deltest-02","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"8fd53f7d-bdc8-4e81-90d3-76b689c82c94","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:57.3301759Z","changedTime":"2021-07-27T05:45:38.3633928Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:01:05.9429812Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:01:05.9429812Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-13","name":"ricardoe-deltest-13","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"277414ee-fb54-46a2-a4e8-11e563962528","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:30:06.3842803Z","changedTime":"2021-07-27T05:48:50.2363343Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:26:47.3770504Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:26:47.3770504Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-40","name":"ricardoe-deltest-40","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"879de15f-95de-4e00-afd1-d0d556d4a6cd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:30:06.6294793Z","changedTime":"2021-07-27T05:46:11.1226695Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T19:10:19.1950493Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T19:10:19.1950493Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-50","name":"ricardoe-deltest-50","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"0feb2152-24dd-4471-a7e7-ea0d9f04f9d5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:30:10.9622133Z","changedTime":"2021-07-27T05:49:13.923642Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T19:18:51.5371546Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T19:18:51.5371546Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-14","name":"ricardoe-deltest-14","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"d052646d-fccd-4044-85a7-6db3fa5468bc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:31:14.1508258Z","changedTime":"2021-07-27T05:48:06.2639714Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:27:25.7655604Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:27:25.7655604Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-32","name":"ricardoe-deltest-32","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"bfb4d6a0-9757-462a-95f0-86f213ce8651","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:31:33.0294784Z","changedTime":"2021-07-27T05:48:06.9458438Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:58:38.526603Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:58:38.526603Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-30","name":"ricardoe-deltest-30","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"656b5608-7833-4669-8aa4-1ad2715f4131","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:32:09.6078875Z","changedTime":"2021-07-27T05:47:34.8254547Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:54:11.0396061Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:54:11.0396061Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-cft2rz4a-x1d","name":"temp-cft2rz4a-x1d","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"2d5d6c6d-3e51-4957-a433-15ea50def407","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-10T21:20:46.296775Z","changedTime":"2021-08-11T01:35:00.6119121Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-10T21:20:46.3895393Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-10T21:21:01.4345109Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-cft2rz4a-x2d","name":"temp-cft2rz4a-x2d","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"def1f39a-a33e-4311-b5c6-99eba20e473c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-10T21:27:47.5423686Z","changedTime":"2021-08-11T01:37:50.9616237Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-10T21:27:47.591163Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-10T21:27:59.8405128Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-cft2rz4a-x3d","name":"temp-cft2rz4a-x3d","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"c20d3416-69a0-4c8c-8163-226dd08bffcb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-10T21:38:02.8395449Z","changedTime":"2021-08-11T01:48:07.7044265Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-10T21:38:02.8827193Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-10T21:38:17.175102Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-cft2rz4a-x4d","name":"temp-cft2rz4a-x4d","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"84f371eb-e574-4f7b-8e63-78930c89b4f5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-10T22:01:24.9097185Z","changedTime":"2021-08-11T02:11:37.6357364Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-10T22:01:24.9753467Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-10T22:01:45.4235826Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-cft2rz4a-x5d","name":"temp-cft2rz4a-x5d","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"9854f0a6-9a31-48a8-b567-d730ab38e189","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-10T22:09:11.4211037Z","changedTime":"2021-08-11T02:19:15.6888366Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-10T22:09:11.4731453Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-10T22:09:24.199947Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-cft2rz4a-x6d","name":"temp-cft2rz4a-x6d","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"128225ad-6d26-4647-a4b8-f9ef9f1bbe44","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-10T22:14:27.3845651Z","changedTime":"2021-08-11T02:29:17.7146903Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-10T22:14:27.4382312Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-10T22:14:42.7462682Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-cft2rz4a-x7d","name":"temp-cft2rz4a-x7d","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"cff417ea-fd25-4520-b258-28a927a8ebd0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-10T22:20:27.8002827Z","changedTime":"2021-08-11T02:30:31.750866Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-10T22:20:27.8372502Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-10T22:20:40.1998802Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/xfield-rg/providers/Microsoft.Quantum/Workspaces/azq-westuw2","name":"azq-westuw2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"37319216-7620-47a2-8030-a1e2b4b990bd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-12T21:23:39.6136763Z","changedTime":"2021-08-13T01:33:45.3421172Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"vitorcia@microsoft.com","createdByType":"User","createdAt":"2021-08-12T21:23:39.8031012Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-12T21:23:52.9328064Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/encoding-test","name":"encoding-test","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"dec7254b-5bff-40cf-8f0a-2c9204f79e63","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-11T18:15:14.9767312Z","changedTime":"2021-08-11T22:25:21.2645829Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-08-11T18:15:15.0907734Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-11T18:41:40.7072294Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-az","name":"frtibble-az","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"853dad83-2f4a-4824-acb6-5625c8ca9a96","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-12T13:47:56.6504514Z","changedTime":"2021-08-12T17:58:05.6862694Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-08-12T13:47:58.0595947Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-12T13:48:12.3936298Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-51gjn2yx-vj2","name":"temp-51gjn2yx-vj2","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"861c47e1-f3ff-4d20-bb4d-f8d19dbe0198","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-13T19:41:38.1521723Z","changedTime":"2021-08-13T23:51:41.6996714Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"aqtest001@outlook.com","createdByType":"User","createdAt":"2021-08-13T19:41:38.192438Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-13T19:41:50.6688016Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/anraman-fleet-workspace","name":"anraman-fleet-workspace","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"597bb6b1-ce4f-455d-8c9b-d360e1f495f7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-16T16:23:16.3734887Z","changedTime":"2021-08-16T20:33:20.2322264Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anraman@microsoft.com","createdByType":"User","createdAt":"2021-08-16T16:23:16.4332888Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-16T16:23:29.2295938Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocro-workspace-notebooks","name":"alchocro-workspace-notebooks","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"ca5ae73c-baa9-4130-b268-c576eccf3827","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-18T21:48:24.3115733Z","changedTime":"2021-08-19T01:58:28.027539Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-08-18T21:48:24.363207Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-18T21:48:36.7202629Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3950376","name":"e2e-test-w3950376","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5022df26-4968-4226-8a58-d8d6a5c873ca","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T00:44:42.8443666Z","changedTime":"2021-08-25T00:55:05.8452953Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T00:44:43.1051158Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T00:44:57.1583338Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7129527","name":"e2e-test-w7129527","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ddf6fd12-eba6-4d98-b637-bab40fa84444","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T00:47:19.6819317Z","changedTime":"2021-08-25T00:47:37.5459563Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T00:47:19.9748024Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T00:47:31.6350202Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4098832","name":"e2e-test-w4098832","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"57c070dc-6434-432d-ac90-8d54b883dab0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:04:22.882857Z","changedTime":"2021-08-25T01:04:43.6049246Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:04:23.174168Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:04:37.5527729Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1315068","name":"e2e-test-w1315068","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1fc5427b-54f4-4dd5-96c5-1c7d04ed528f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:05:07.5431209Z","changedTime":"2021-08-25T01:05:27.9117062Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:05:07.8829937Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:05:22.2338331Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5352441","name":"e2e-test-w5352441","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5f7b94e9-e81a-400b-ab72-a4a2ec47c2bf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:18:32.5613149Z","changedTime":"2021-08-25T01:18:52.4851835Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:18:32.8224881Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:18:46.5385119Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1995962","name":"e2e-test-w1995962","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"19b91cca-8c7a-42fa-8551-b2f54a1d3404","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:31:21.0275647Z","changedTime":"2021-08-25T01:41:43.9999924Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:31:21.4143555Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:31:35.9401059Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6657221","name":"e2e-test-w6657221","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"27b3b127-67fa-40b6-8d98-d896b6b5cd23","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:32:43.5660443Z","changedTime":"2021-08-25T01:33:02.4976016Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:32:44.0270929Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:32:56.1919775Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9867934","name":"e2e-test-w9867934","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e4941863-fbb4-458a-99ed-4b2ef103badc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:36:47.0412303Z","changedTime":"2021-08-25T01:37:07.8041008Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:36:47.4354403Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:37:01.975321Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1471768","name":"e2e-test-w1471768","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7f575bf8-8dff-493b-9891-2ad653ee7c3a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-25T01:40:58.4735258Z","changedTime":"2021-08-25T01:41:19.4705908Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:40:58.9083241Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-25T01:41:13.8372459Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/alylee-workspace","name":"alylee-workspace","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"b22fde14-2126-45fc-8e96-d8e87fc77b7e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-24T12:33:52.6439648Z","changedTime":"2021-07-27T05:45:58.4749455Z","provisioningState":"Succeeded","tags":{"createdbyuser":"frtibble"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/demo4uk","name":"demo4uk","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"d36d38b6-cf32-4a7a-adbd-6d4e21786db6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-10-31T03:18:32.4911336Z","changedTime":"2021-07-27T05:33:13.1974114Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2020-10-31T03:18:32.6189413Z","lastModifiedBy":"fabricfr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-10-31T03:18:32.6189413Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/chemistry-test/providers/Microsoft.Quantum/Workspaces/chemistrydemo","name":"chemistrydemo","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"97450f82-81fe-4c00-86d5-0651b7caa49a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-10-19T18:06:54.8481601Z","changedTime":"2021-07-27T05:45:27.0082131Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"},"systemData":{"lastModifiedBy":"hay@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-10-19T18:20:30.8402422Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/chemistry-test/providers/Microsoft.Quantum/Workspaces/chemistrydemo2","name":"chemistrydemo2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4d8bb55c-09c5-48e1-a311-e21c9fb1afee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-10-19T18:52:55.7526696Z","changedTime":"2021-07-27T05:44:58.0380107Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"},"systemData":{"createdBy":"hay@microsoft.com","createdByType":"User","createdAt":"2020-10-19T18:52:57.0930335Z","lastModifiedBy":"hay@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-10-19T18:52:57.0930335Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/demo4uk","name":"demo4uk","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"a4ec9329-0785-4908-8c7c-3d85ef77ecd8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-10-31T05:29:50.9418273Z","changedTime":"2021-07-27T05:45:03.1899034Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2020-10-31T05:29:51.4250198Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-22T16:09:02.0773712Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/testmultiproviders","name":"testmultiproviders","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"16f10b41-3658-4d7f-b591-71ced7873417","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-01T22:01:46.930544Z","changedTime":"2021-07-27T05:41:13.6744274Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2020-11-01T22:01:48.2022972Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-11-01T22:05:11.2732068Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/chemistry-test/providers/Microsoft.Quantum/Workspaces/chemistrydemo4","name":"chemistrydemo4","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e7cb79ab-788b-44ec-8059-a8a2246cf20b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-02T22:00:55.6725188Z","changedTime":"2021-07-27T05:43:53.7223296Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"yinshen@microsoft.com","createdByType":"User","createdAt":"2020-11-02T22:00:56.1692445Z","lastModifiedBy":"yinshen@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-02T22:00:56.1692445Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westeurope-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"westeurope","createdTime":"2020-12-08T19:59:26.9303109Z","changedTime":"2021-07-27T05:46:47.1451903Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2020-12-08T20:00:36.8345906Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-northeurope-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"northeurope","createdTime":"2020-12-08T20:09:04.9165992Z","changedTime":"2021-07-27T05:35:17.8418439Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2020-12-08T20:09:05.0145578Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2020-12-08T20:09:05.0145578Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-northeurope-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"northeurope","createdTime":"2020-12-08T21:15:32.9696864Z","changedTime":"2021-07-27T05:43:25.0741113Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2020-12-08T21:15:33.6243148Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2020-12-08T21:15:33.6243148Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-20201118-canary-test","name":"ryansha-20201118-canary-test","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e8ddf301-428f-490b-9bb6-40e6bbca9631","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-18T19:04:11.5616848Z","changedTime":"2021-08-04T05:57:03.8838774Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ryansha@microsoft.com","createdByType":"User","createdAt":"2020-11-18T19:04:12.0870707Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-11-18T19:07:23.7206889Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-20201118-test-eastus2euap","name":"ryansha-20201118-test-eastus2euap","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"54ec7f1a-7794-4ce5-bf45-8c39223db33f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-18T19:13:28.6340466Z","changedTime":"2021-07-27T05:38:03.7899047Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ryansha@microsoft.com","createdByType":"User","createdAt":"2020-11-18T19:13:28.9815188Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-11-18T19:26:35.6205782Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-westus-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"westus","createdTime":"2021-01-15T20:28:50.2229484Z","changedTime":"2021-07-27T05:33:34.626146Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-01-15T20:28:50.7384981Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2021-01-15T20:28:50.7384981Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ms-canary4","name":"ms-canary4","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f159c531-f9e6-4ce9-858d-99491c363f17","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-01-12T22:03:20.6669678Z","changedTime":"2021-07-27T05:40:13.7100188Z","provisioningState":"Succeeded","tags":{"tag1":"value1"},"systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-01-12T22:03:21.0323859Z","lastModifiedBy":"georgenm@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-02-23T19:45:10.2561371Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/toshibacanary2","name":"toshibacanary2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"b225c8ff-76f7-4350-ad26-796ba95c9f9b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-02-16T19:29:26.4871024Z","changedTime":"2021-07-27T05:39:12.6601861Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-02-16T19:29:26.8279557Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-02-16T19:31:11.029991Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgSingularity/providers/Microsoft.Quantum/Workspaces/masenol","name":"masenol","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"38575181-50ca-490d-b3e8-eabced3fb6a6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-12-23T19:15:56.7331326Z","changedTime":"2021-07-27T05:35:04.6776587Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2020-12-23T19:15:56.8125149Z","lastModifiedBy":"masenol@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-12-23T19:15:56.8125149Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/viveis-test/providers/Microsoft.Quantum/Workspaces/demo1","name":"demo1","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"8dd69939-3762-471f-a047-3828f03f3a07","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-12-14T02:24:10.5097769Z","changedTime":"2021-08-04T05:57:06.6237077Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"viveis@microsoft.com","createdByType":"User","createdAt":"2020-12-14T02:24:10.9622812Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-12-16T20:44:30.747034Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adbai-test/providers/Microsoft.Quantum/Workspaces/adbai-privatepreview-test","name":"adbai-privatepreview-test","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a6469555-aa58-49c5-ab67-4ce4153d005f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-02-01T19:42:54.6555906Z","changedTime":"2021-07-27T05:35:59.3377455Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"adbai@microsoft.com","createdByType":"User","createdAt":"2021-02-01T19:42:56.2851246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-09T18:45:19.6652273Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ashwinm-eastus2eap-003","name":"ashwinm-eastus2eap-003","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"975ffee9-7c2a-46ce-876c-a23ed362102a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-01-28T01:28:55.5155958Z","changedTime":"2021-07-27T05:40:42.9791846Z","provisioningState":"Succeeded","tags":{"IsCanary":"true"},"systemData":{"createdBy":"ashwinm@microsoft.com","createdByType":"User","createdAt":"2021-01-28T01:28:55.9928965Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-04-05T20:47:01.0670248Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocro-canary-workspace","name":"alchocro-canary-workspace","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"780a17e8-09c9-4b05-8f71-f1bb1ee5e9c9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-02-16T23:10:15.3527131Z","changedTime":"2021-07-27T05:43:54.1022892Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-02-16T23:10:15.484917Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-02-16T23:10:30.4015037Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/masenol-valid-canary","name":"masenol-valid-canary","type":"Microsoft.Quantum/Workspaces","location":"centraluseuap","identity":{"principalId":"1fe9af37-124b-432f-be21-612244177789","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-03-09T16:42:59.4534349Z","changedTime":"2021-07-27T05:31:20.7109002Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-03-09T16:43:00.0305111Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-03-09T16:51:52.9008033Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus-rg/providers/Microsoft.Quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"e1de3c0b-d0b6-4823-8540-8251f0957d69","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-03-23T20:52:23.4125237Z","changedTime":"2021-07-27T05:28:02.5807568Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-03-23T20:52:23.5263379Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-03-23T20:52:38.7525904Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qdk-validations/providers/Microsoft.Quantum/Workspaces/chgranad-0-15-2103-test5","name":"chgranad-0-15-2103-test5","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"6badb78d-1e88-406e-95e8-1974925a60bf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-03-30T18:55:35.5105874Z","changedTime":"2021-07-27T05:44:13.0288957Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"chgranad@microsoft.com","createdByType":"User","createdAt":"2021-03-30T18:55:35.805041Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-03-30T18:58:36.1488162Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/japanworkspace","name":"japanworkspace","type":"Microsoft.Quantum/Workspaces","location":"japanwest","identity":{"principalId":"4b6a2b36-97d1-49bd-aa6a-6c7d22ce56b3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T17:10:38.380903Z","changedTime":"2021-07-27T05:40:04.2901503Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T17:19:33.7662461Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/uksouthworkspace","name":"uksouthworkspace","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"54a8d7b0-88ff-4326-b3ab-d43f8b93578b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T17:22:16.7648994Z","changedTime":"2021-07-27T05:36:57.6849676Z","provisioningState":"Succeeded","systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-10T17:22:17.1080637Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T22:20:10.0985033Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo15","name":"demo15","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"8f475614-10ff-403c-955a-bbad8d2f2da3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-03-30T17:19:10.4271422Z","changedTime":"2021-08-19T18:09:49.3278758Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-03-30T17:19:10.766451Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-19T17:59:42.5995094Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/release-test-05-04","name":"release-test-05-04","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"fda9eae7-63ab-47b5-b670-69b32169a4cd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-04T19:07:14.2620312Z","changedTime":"2021-07-27T05:30:44.8486166Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-05-04T19:07:14.4328438Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-04T19:11:13.2633205Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/release-test-05-04-cli","name":"release-test-05-04-cli","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"084d3916-b84d-43da-854e-ad12cd2eed2f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-04T19:37:37.6537817Z","changedTime":"2021-07-27T05:34:56.5115116Z","provisioningState":"Succeeded","systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-05-04T19:37:37.9741263Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-04T19:37:49.8581475Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-ace31747-f581-4bec-8afd-c4b6e3be9858","name":"ws-ace31747-f581-4bec-8afd-c4b6e3be9858","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"004dc989-8b48-4681-94a2-e7e39b219391","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T17:36:09.3277219Z","changedTime":"2021-07-27T05:35:09.5831579Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-10T17:36:10.0856713Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T17:36:21.6613414Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-japaneast-rg/providers/Microsoft.Quantum/Workspaces/ws-8a1bb71e-578e-4a74-8bb1-4668e9ffd687","name":"ws-8a1bb71e-578e-4a74-8bb1-4668e9ffd687","type":"Microsoft.Quantum/Workspaces","location":"japaneast","identity":{"principalId":"512ddbaf-edf6-409d-8dc9-2436473a2703","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T21:30:30.9632512Z","changedTime":"2021-07-27T05:33:10.2487477Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-10T21:30:31.029215Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T21:30:47.505675Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-uksouth-rg/providers/Microsoft.Quantum/Workspaces/ws-51ab0adf-e041-44d7-8b1b-d8c6758afb13","name":"ws-51ab0adf-e041-44d7-8b1b-d8c6758afb13","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"5b68e746-2430-4254-8786-2d617b398c51","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T21:38:15.2661858Z","changedTime":"2021-07-27T05:37:00.5763397Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-10T21:38:15.7452817Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T21:38:29.2671419Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-cd058373-1fac-4b42-8ebe-0b5da36a72db","name":"ws-cd058373-1fac-4b42-8ebe-0b5da36a72db","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"08a46a2e-8068-4fea-9e0e-3ce98e8e1526","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T19:09:54.9447847Z","changedTime":"2021-07-27T05:34:16.8356021Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-14T19:09:55.1751321Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T19:10:07.3033174Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-a7c7cc69-6308-4861-9d1b-066d6a2bf579","name":"ws-a7c7cc69-6308-4861-9d1b-066d6a2bf579","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"7fde4131-799e-4d59-886d-a043372a3566","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T21:21:44.295569Z","changedTime":"2021-07-27T05:36:08.9667473Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-14T21:21:44.9806936Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T21:21:56.9223784Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-42ccd7a9-c725-447a-adf8-89dcf53ebd40","name":"ws-42ccd7a9-c725-447a-adf8-89dcf53ebd40","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c92484e2-6ec1-409c-83cd-48757aa7cd24","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T22:18:16.0382045Z","changedTime":"2021-07-27T05:37:11.1789332Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-14T22:18:16.2501822Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T22:18:28.0911083Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-04-13T19:10:57.5675579Z","changedTime":"2021-08-09T23:02:13.3272331Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-09T22:52:06.6450832Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantumEvents/providers/Microsoft.Quantum/Workspaces/TestFabrice","name":"TestFabrice","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"391e5c9a-d474-4716-b730-44979700b19b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-04-30T22:52:41.5468004Z","changedTime":"2021-07-27T05:41:45.6325188Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2021-04-30T22:52:42.0379578Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-04-30T22:55:40.0093654Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantumEvents/providers/Microsoft.Quantum/Workspaces/TestGuen","name":"TestGuen","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"35da91a7-4a91-4d72-a3ba-0a60aef9fd8e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-03T21:07:01.9029284Z","changedTime":"2021-07-27T05:44:12.6892024Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"guenp@microsoft.com","createdByType":"User","createdAt":"2021-05-03T21:07:02.6392678Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-03T21:08:36.7953548Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-aq","name":"frtibble-aq","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"4b6caabb-099d-4cd3-ab7d-109fe1ff19a6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-04-20T08:45:11.9804387Z","changedTime":"2021-07-27T05:46:52.4902769Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-04-20T08:45:12.887792Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-04-20T08:45:25.0787865Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/uksouthportal","name":"uksouthportal","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"1f50f731-61a6-4b80-a1f2-5b99960c6cb0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T18:10:22.1325316Z","changedTime":"2021-07-27T05:36:46.1688466Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-14T18:10:22.5683008Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T18:12:19.7393194Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ukwestportal","name":"ukwestportal","type":"Microsoft.Quantum/Workspaces","location":"ukwest","identity":{"principalId":"ae038165-9e1b-437c-b410-32a97053a903","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T18:31:39.4260545Z","changedTime":"2021-07-27T05:36:32.8411001Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-14T18:31:40.1306597Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T18:33:49.9076431Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/japaneastportal","name":"japaneastportal","type":"Microsoft.Quantum/Workspaces","location":"japaneast","identity":{"principalId":"dfe06860-5f17-4681-ad68-2765ce96920c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T18:32:23.3429253Z","changedTime":"2021-07-27T05:38:03.3852924Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-14T18:32:23.9132236Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T18:34:30.7263509Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/japanwestportal","name":"japanwestportal","type":"Microsoft.Quantum/Workspaces","location":"japanwest","identity":{"principalId":"1eebbda4-0d07-48b4-9327-bd58a83b7d4c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T18:33:08.844694Z","changedTime":"2021-07-27T05:37:23.039056Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-14T18:33:09.3559374Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-22T18:44:06.8506065Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq","name":"ricardoe-create-test-ionq","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"316e2609-d3f2-4a50-b3b2-c4d2ea424701","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:02:00.506835Z","changedTime":"2021-07-27T05:48:27.0880682Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:02:00.6086324Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:03:48.6768858Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-2","name":"ricardoe-create-test-ionq-2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"6c604223-84c5-42a4-8b49-cf197493b0f8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:03:25.1798398Z","changedTime":"2021-07-27T05:50:26.268039Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:03:25.2497037Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:05:07.6823653Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-3","name":"ricardoe-create-test-ionq-3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c94a0287-4287-4c45-a878-7075249ec9db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:07:18.5631383Z","changedTime":"2021-07-27T05:46:22.5698444Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:07:18.6145383Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:08:48.5000758Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-4","name":"ricardoe-create-test-ionq-4","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"c5e9eb62-157b-430d-96e8-ddf8c0dad103","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:09:30.6453993Z","changedTime":"2021-07-27T05:49:56.7102257Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:09:30.7059183Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:11:15.7325958Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-5","name":"ricardoe-create-test-ionq-5","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e6d91e57-f745-4d5f-a92e-3e7a62f8a842","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:12:09.5890031Z","changedTime":"2021-07-27T05:45:39.646327Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:12:09.6601462Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:13:43.4597291Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-6","name":"ricardoe-create-test-ionq-6","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"94255c0f-eef2-455e-b7a4-bb88da38392c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:21:31.0411406Z","changedTime":"2021-07-27T05:45:51.6409132Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:21:31.0880932Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:23:16.8621583Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-7","name":"ricardoe-create-test-ionq-7","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1a772a62-ab23-492e-aa57-fe6c1380e1a4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:22:39.7822798Z","changedTime":"2021-07-27T05:47:16.5384131Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:22:39.8326224Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:24:18.7623831Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-8","name":"ricardoe-create-test-ionq-8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"79a0122a-7265-4016-8d35-9c8c13cd0b4f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:27:40.9990914Z","changedTime":"2021-07-27T06:50:17.8986803Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:27:41.0913214Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:29:15.2027986Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mblouin-wksp","name":"mblouin-wksp","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"07233326-751b-4965-8167-5c3ddd6151da","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-06T15:42:30.3088057Z","changedTime":"2021-07-27T05:46:30.5549294Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"mblouin@microsoft.com","createdByType":"User","createdAt":"2021-05-06T15:42:31.3676223Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-06T15:49:29.7631622Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/test-storage-account-display","name":"test-storage-account-display","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"04c5ef71-7e63-4e3d-944e-259170a5d9f3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-07T18:58:05.7316085Z","changedTime":"2021-07-27T05:43:30.6084052Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-05-07T18:58:05.8808102Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T22:15:01.5720287Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x5jmb-jpb-re","name":"temp-lg4x5jmb-jpb-re","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2bcfb156-7303-46b9-a786-67051d836bdf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:32:42.337053Z","changedTime":"2021-07-27T05:46:36.935754Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-11T18:32:42.3814041Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:32:54.3108749Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x","name":"temp-lg4x","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"21e4e4a0-51c5-44d1-a3ce-a33f3b9ef111","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:38:03.6680292Z","changedTime":"2021-07-27T06:46:36.799255Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T18:38:03.981634Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:38:18.051526Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x5jmb-re","name":"temp-lg4x5jmb-re","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"588757e1-ff2a-4d60-a9d8-6362c0d88635","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:40:40.9740311Z","changedTime":"2021-07-27T05:49:52.0964058Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T18:40:41.2019933Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:42:15.091327Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-xvjqusc5-tpf","name":"temp-xvjqusc5-tpf","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a1695601-54c1-4ede-b520-67a50fa491cd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T21:28:56.684082Z","changedTime":"2021-07-27T05:36:13.4405594Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T21:28:56.9129234Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T21:29:11.3864127Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocrosandboxworkspacetest","name":"alchocrosandboxworkspacetest","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1e24628e-ec90-491c-ad3b-79834a12e4b6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-12T21:05:33.3708344Z","changedTime":"2021-07-27T05:44:06.7344186Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-05-12T21:05:33.6162939Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-12T21:07:17.4602122Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocrocliwkspc","name":"alchocrocliwkspc","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"87be4e35-b981-4d13-8d23-808e99960dff","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-12T21:11:12.1974353Z","changedTime":"2021-07-27T05:46:41.2569551Z","provisioningState":"Succeeded","systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-05-12T21:11:12.561658Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-12T21:13:07.2332421Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pp-test/providers/Microsoft.Quantum/Workspaces/pp-test","name":"pp-test","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-03-17T21:20:25.8697865Z","changedTime":"2021-07-27T05:38:49.1676166Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mblouin-aq-python-test/providers/Microsoft.Quantum/Workspaces/mblouin-aq-python-test","name":"mblouin-aq-python-test","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-03-20T00:05:23.6628817Z","changedTime":"2021-07-27T05:31:20.7546994Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qio-dev-wecker/providers/Microsoft.Quantum/Workspaces/wecker-aqpp","name":"wecker-aqpp","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-03-30T19:32:14.065601Z","changedTime":"2021-07-27T05:33:09.5875963Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ryansha-aqua20200331/providers/Microsoft.Quantum/Workspaces/ryansha-aqua20200331","name":"ryansha-aqua20200331","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-04-01T01:01:32.3820662Z","changedTime":"2021-07-27T05:29:11.9777158Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-testRG/providers/Microsoft.Quantum/Workspaces/dfDemoNew8","name":"dfDemoNew8","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-04-01T16:56:05.5462584Z","changedTime":"2021-07-27T01:47:01.2228449Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/contoso-canary1","name":"contoso-canary1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-04-30T17:08:47.527617Z","changedTime":"2021-07-27T05:40:55.7349621Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ionq-canary1","name":"ionq-canary1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-04-30T20:37:44.7113851Z","changedTime":"2021-07-27T05:37:42.4832044Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/testcons8","name":"testcons8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-01T22:39:30.2865332Z","changedTime":"2021-07-27T05:34:15.2500669Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/testionq8","name":"testionq8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-01T22:41:59.1084182Z","changedTime":"2021-07-27T05:29:39.7894059Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/testionq18","name":"testionq18","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-01T22:44:08.1749649Z","changedTime":"2021-07-27T07:00:32.7563908Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ionq-canary2","name":"ionq-canary2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-07T22:04:04.2713833Z","changedTime":"2021-07-27T05:38:33.2987961Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/nofails","name":"nofails","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:00:11.6033615Z","changedTime":"2021-07-27T05:29:53.6954103Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/nofails2","name":"nofails2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:23:20.6753879Z","changedTime":"2021-07-27T05:34:13.7288167Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/qw-alchocro-test","name":"qw-alchocro-test","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-01T18:35:38.1109194Z","changedTime":"2021-07-27T05:46:26.0304862Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocro-repro","name":"alchocro-repro","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-04T18:28:39.1635996Z","changedTime":"2021-07-27T05:45:50.8842207Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"},"systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-02-16T23:02:30.6291372Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-rg/providers/Microsoft.Quantum/Workspaces/khyati-wspc-051120-1","name":"khyati-wspc-051120-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T04:59:01.1790717Z","changedTime":"2021-07-27T01:45:44.8887014Z","provisioningState":"Succeeded","tags":{"Environment":"DEL","Team":"SEC"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo1","name":"demo1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T18:32:25.4704227Z","changedTime":"2021-07-27T05:41:36.0056907Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Demo4BuildRG/providers/Microsoft.Quantum/Workspaces/QuantumWorkspace4Build","name":"QuantumWorkspace4Build","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T19:12:52.9888258Z","changedTime":"2021-07-27T05:31:26.9545865Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo2","name":"demo2","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T23:43:45.4579572Z","changedTime":"2021-07-27T05:40:52.6261267Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo3","name":"demo3","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-13T17:20:45.0902825Z","changedTime":"2021-07-27T05:42:23.6030198Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo4","name":"demo4","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-13T18:15:32.1521646Z","changedTime":"2021-07-27T05:40:06.2104939Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-rg/providers/Microsoft.Quantum/Workspaces/khyati-wspc-051420-1","name":"khyati-wspc-051420-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-14T16:30:50.2706786Z","changedTime":"2021-07-27T01:44:28.5479208Z","provisioningState":"Succeeded","tags":{"Environment":"CPH","Team":"SEC"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo5","name":"demo5","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-15T17:09:09.5575194Z","changedTime":"2021-07-27T05:38:34.424513Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yinshen-test/providers/Microsoft.Quantum/Workspaces/yinshen-test-528-3","name":"yinshen-test-528-3","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-28T19:25:51.2382557Z","changedTime":"2021-07-27T05:41:14.4193394Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637242835417929282","name":"ma637242835417929282","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-05T20:52:29.8318859Z","changedTime":"2021-07-27T05:40:41.9303694Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest1","name":"failovertest1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-11T17:49:57.1436708Z","changedTime":"2021-07-27T06:33:19.3907129Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest2","name":"failovertest2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-11T22:50:50.0473121Z","changedTime":"2021-07-27T05:33:05.2549687Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest3","name":"failovertest3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T01:42:52.844317Z","changedTime":"2021-08-04T05:57:02.5771797Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest4","name":"failovertest4","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T06:22:38.2323068Z","changedTime":"2021-07-27T05:34:06.194701Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest5","name":"failovertest5","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T08:21:02.5289419Z","changedTime":"2021-07-27T05:34:06.8177447Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest6","name":"failovertest6","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T10:45:58.3692977Z","changedTime":"2021-07-27T05:32:45.9549985Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest7","name":"failovertest7","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T14:01:56.8745565Z","changedTime":"2021-07-27T05:32:59.12867Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ryansha-aqua20200331/providers/Microsoft.Quantum/Workspaces/ryansha-aqua20200518","name":"ryansha-aqua20200518","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-18T21:59:34.0906017Z","changedTime":"2021-07-27T05:32:38.8893625Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo6","name":"demo6","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-20T16:25:01.8010088Z","changedTime":"2021-07-27T05:38:43.5155722Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo7","name":"demo7","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-27T18:22:15.5076194Z","changedTime":"2021-07-27T05:40:48.9464685Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920","name":"khyati-prod-wspc-052920","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T03:54:03.9680025Z","changedTime":"2021-07-27T05:45:20.7190304Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-oldQW-wspc","name":"khyati-prod-oldQW-wspc","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T04:08:27.2577338Z","changedTime":"2021-07-27T05:46:18.7515178Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920-2","name":"khyati-prod-wspc-052920-2","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T05:34:06.0025272Z","changedTime":"2021-07-27T05:43:52.9414361Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920-NoIonQ-1","name":"khyati-prod-wspc-052920-NoIonQ-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T05:39:54.9199269Z","changedTime":"2021-07-27T05:47:32.5768492Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920-YesIonQ-1","name":"khyati-prod-wspc-052920-YesIonQ-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T05:43:24.0434198Z","changedTime":"2021-07-27T05:45:24.4821308Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-espc-bugbash-060120-1","name":"khyati-prod-espc-bugbash-060120-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-01T18:10:07.589127Z","changedTime":"2021-07-27T05:45:34.1804042Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-wspc-bugbash-060120-2","name":"khyati-wspc-bugbash-060120-2","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-01T18:12:00.9375002Z","changedTime":"2021-07-27T06:47:34.7271009Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest8","name":"failovertest8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:06:19.1200799Z","changedTime":"2021-07-27T05:32:25.0675665Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest81","name":"failovertest81","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:25:55.2746784Z","changedTime":"2021-07-27T05:32:45.6581803Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/FailOverTest","name":"FailOverTest","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-13T18:29:10.2526685Z","changedTime":"2021-07-27T05:34:50.2507468Z","provisioningState":"Succeeded","tags":{"department":"WeAreGreat","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/microsoft-canary1","name":"microsoft-canary1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-10T23:01:23.3768529Z","changedTime":"2021-08-16T18:07:05.5365864Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-16T17:56:56.8739064Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/microsoft-canary2","name":"microsoft-canary2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"287794c5-5bd9-49a1-93e4-f1f3e3b5813f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-10T23:06:07.1802335Z","changedTime":"2021-07-27T05:37:46.2272055Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/portal-workspace","name":"portal-workspace","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f946335d-bbfc-4e52-a0eb-c34b5e851757","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T18:16:10.6081414Z","changedTime":"2021-07-27T05:40:03.4981297Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/yinshen-test","name":"yinshen-test","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"bf77d2ad-acbb-447c-abfa-27a333d7b713","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T18:32:00.3798214Z","changedTime":"2021-07-27T05:39:53.9172217Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/portal-workspace2","name":"portal-workspace2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4fa031c2-eb58-4971-9595-c1bb70104cca","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T20:51:37.5693415Z","changedTime":"2021-07-27T05:39:41.3086497Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/portal-workspace3","name":"portal-workspace3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"a6b3d1ee-47d5-4ba9-9569-8d94fe9e022f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T20:55:12.7678095Z","changedTime":"2021-07-27T05:36:57.9374576Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/contoso-westus1","name":"contoso-westus1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-16T18:01:36.7909529Z","changedTime":"2021-07-27T05:38:43.5867837Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ionq-canary3","name":"ionq-canary3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"ccc31646-f55b-4614-972c-5881869ef641","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-17T23:34:42.5954443Z","changedTime":"2021-07-27T05:40:59.164703Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ionq-canary5","name":"ionq-canary5","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"247c69e4-7a46-4405-939a-6afa34d7e264","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-18T16:47:03.3402885Z","changedTime":"2021-07-27T05:40:53.4509289Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ionq-canary6","name":"ionq-canary6","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"6b0aef0a-c104-4d91-841c-8d509bd5306c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-18T18:49:12.9054762Z","changedTime":"2021-07-27T05:41:14.5228366Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-test-delete","name":"khyati-test-delete","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-01T23:43:01.9614151Z","changedTime":"2021-07-27T05:48:25.6068085Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/telemetry-delete","name":"telemetry-delete","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-02T22:17:38.0057903Z","changedTime":"2021-07-27T05:47:50.1931743Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/deleteinh","name":"deleteinh","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-03T20:08:07.4567066Z","changedTime":"2021-07-27T05:44:34.1252549Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo8","name":"demo8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-10T15:27:10.3226632Z","changedTime":"2021-07-27T05:41:44.4874658Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adbai-test/providers/Microsoft.Quantum/Workspaces/adbai-workspacetest","name":"adbai-workspacetest","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"33efbf55-ffe1-4761-8250-a3bcd0af8ab0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-13T00:17:18.9913327Z","changedTime":"2021-07-27T05:36:08.6939348Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/fabricfrdelete","name":"fabricfrdelete","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"139d6494-8fd2-4857-98fd-57864a7a5889","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-14T19:11:12.7873965Z","changedTime":"2021-07-27T05:35:52.3691987Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-test3-rg/providers/Microsoft.Quantum/Workspaces/khyati-test3-wspc-061720-1","name":"khyati-test3-wspc-061720-1","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"18980fb5-b6bb-4e51-8240-c7d470516e19","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-17T17:05:52.2291617Z","changedTime":"2021-07-27T05:36:08.6993189Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-testdelete/providers/Microsoft.Quantum/Workspaces/proddelete0","name":"proddelete0","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-28T17:38:25.5076165Z","changedTime":"2021-07-27T05:36:22.6294033Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cgranade-azqu-samples-rg/providers/Microsoft.Quantum/Workspaces/cgranade-azqu-samples","name":"cgranade-azqu-samples","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-09T18:23:19.9025923Z","changedTime":"2021-07-27T01:46:28.7490498Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-20200618","name":"ryansha-aqua-20200618","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"7c0736fe-6aef-4c68-a9b9-707b4bc00aec","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-18T19:23:27.6540866Z","changedTime":"2021-07-27T05:49:14.5886567Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/khyati-aqua-bugbash-062520-1","name":"khyati-aqua-bugbash-062520-1","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"964608d9-c335-459e-b33d-1fbc1197b72b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-25T20:24:07.7890245Z","changedTime":"2021-07-27T05:47:31.1406481Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo9","name":"demo9","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-19T00:45:04.4323754Z","changedTime":"2021-07-27T05:38:36.8730346Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-20200617-2","name":"ryansha-aqua-20200617-2","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"0848ede7-8acf-46e2-8d8c-e9a80a54584a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-17T19:53:52.0582544Z","changedTime":"2021-07-27T05:38:11.8986999Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-20200618","name":"ryansha-aqua-20200618","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"be5476a5-4df9-4705-9333-4099320f6546","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-18T03:02:43.378037Z","changedTime":"2021-07-27T05:39:00.7674842Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/khyati-test3-honeywell-07720-1","name":"khyati-test3-honeywell-07720-1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"dfc5abd8-0b09-4fd6-8945-4982b5b5ccc0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-07T18:47:26.9836417Z","changedTime":"2021-07-27T05:47:31.6054263Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/khyati-EthanTest-070820-1","name":"khyati-EthanTest-070820-1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"987125a0-a0e9-4dd1-8b00-a741ecd790e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-08T22:20:14.8351369Z","changedTime":"2021-07-27T05:48:34.7968438Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mblouinqbtesting2","name":"mblouinqbtesting2","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"a3fb99ad-b880-4e13-a752-f32b4db7b58e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-16T21:16:43.5557849Z","changedTime":"2021-07-27T05:49:21.356771Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/swernli-azq-test3","name":"swernli-azq-test3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"11160935-c18d-4635-ba21-89b1e3c35183","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-17T21:33:18.8174941Z","changedTime":"2021-07-27T05:50:25.0284826Z","provisioningState":"Succeeded","tags":{},"systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-10-23T20:12:17.3983001Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-westus-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-honeywell","name":"e2e-tests-workspace-honeywell","type":"microsoft.quantum/Workspaces","location":"westus","createdTime":"2020-07-16T23:17:46.2399788Z","changedTime":"2021-07-27T06:31:06.0383752Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-westus-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-ionq","name":"e2e-tests-workspace-ionq","type":"microsoft.quantum/Workspaces","location":"westus","createdTime":"2020-07-16T23:18:18.0342522Z","changedTime":"2021-07-27T05:30:30.5776842Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-ionq","name":"e2e-tests-workspace-ionq","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-30T20:46:14.2719621Z","changedTime":"2021-07-27T05:44:51.573602Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-1qbit","name":"e2e-tests-workspace-1qbit","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-30T20:53:01.1155377Z","changedTime":"2021-07-27T05:43:36.8603921Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-ionq","name":"e2e-tests-workspace-ionq","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-07-02T18:51:36.3093715Z","changedTime":"2021-07-27T05:34:56.1706517Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/SAtest","name":"SAtest","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"be5236f7-e1e4-4da2-8e8d-6a450975b75e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-29T19:59:19.2783129Z","changedTime":"2021-07-27T05:48:36.2429332Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-loadtests-workspace-Microsoft","name":"e2e-loadtests-workspace-Microsoft","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-07-14T22:14:43.767696Z","changedTime":"2021-07-27T05:35:32.1029049Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-test-20200814","name":"ryansha-aqua-test-20200814","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"ebd79bb9-667a-4596-a02e-a387d0d1a208","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-08-14T21:22:31.8653798Z","changedTime":"2021-07-27T05:49:49.7362512Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637321591493688655","name":"DogFoodCRUDByOBO637321591493688655","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T00:32:31.3718593Z","changedTime":"2021-07-27T05:34:29.739592Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637321602011277237","name":"DogFoodCRUDByOBO637321602011277237","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T00:50:03.2378982Z","changedTime":"2021-07-27T05:34:05.9984424Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637321608941603994","name":"DogFoodCRUDByOBO637321608941603994","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T01:01:36.2223803Z","changedTime":"2021-07-27T05:37:15.1478358Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637322595002853936","name":"DogFoodCRUDByOBO637322595002853936","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T21:25:00.7747425Z","changedTime":"2021-07-27T05:36:08.9214358Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637322660840384456","name":"DogFoodCRUDByOBO637322660840384456","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T23:14:52.437712Z","changedTime":"2021-07-27T05:33:08.36687Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324254973139435","name":"ma637324254973139435","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T19:31:38.8303632Z","changedTime":"2021-08-04T05:57:03.0464076Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324257155243090","name":"DogFoodCRUDByOBO637324257155243090","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T19:35:16.0624869Z","changedTime":"2021-07-27T05:36:47.8272335Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324019290354681","name":"DogFoodCRUDByOBO637324019290354681","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T19:58:54.1581624Z","changedTime":"2021-07-27T05:35:54.675747Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324021912570836","name":"ma637324021912570836","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:03:17.136267Z","changedTime":"2021-07-27T05:39:58.25424Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324024160248692","name":"DogFoodCRUDByOBO637324024160248692","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:07:01.2009205Z","changedTime":"2021-07-27T05:37:23.7446734Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324025989157219","name":"ma637324025989157219","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:10:05.2095016Z","changedTime":"2021-07-27T05:39:43.1211336Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324028404650354","name":"DogFoodCRUDByOBO637324028404650354","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:14:06.0070411Z","changedTime":"2021-07-27T05:37:59.9110526Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324028787661822","name":"ma637324028787661822","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:14:50.4420237Z","changedTime":"2021-07-27T05:39:38.9610501Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324030278622376","name":"ma637324030278622376","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:17:14.1409117Z","changedTime":"2021-08-04T05:57:03.0402034Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324032610347900","name":"DogFoodCRUDByOBO637324032610347900","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:21:05.9667872Z","changedTime":"2021-07-27T05:33:08.9064496Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324045106827439","name":"ma637324045106827439","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:41:57.7320443Z","changedTime":"2021-07-27T05:41:19.1268861Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324046796372466","name":"ma637324046796372466","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:44:46.6778805Z","changedTime":"2021-07-27T05:40:38.8171234Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324047936633908","name":"ma637324047936633908","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:46:52.8608743Z","changedTime":"2021-07-27T05:39:25.9852504Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324049158827388","name":"DogFoodCRUDByOBO637324049158827388","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:48:41.4642898Z","changedTime":"2021-07-27T05:37:20.5147911Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324054606323092","name":"ma637324054606323092","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:57:50.5325427Z","changedTime":"2021-07-27T05:43:13.1322485Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324074961183917","name":"ma637324074961183917","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T21:31:43.7113671Z","changedTime":"2021-08-04T05:57:03.6731158Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"IonQ"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324077739287041","name":"DogFoodCRUDByOBO637324077739287041","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T21:36:20.5949992Z","changedTime":"2021-07-27T05:36:21.246203Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324100652798522","name":"DogFoodCRUDByOBO637324100652798522","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:14:40.3449412Z","changedTime":"2021-07-27T05:34:33.1118987Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324101526311752","name":"DogFoodCRUDByOBO637324101526311752","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:17:15.02494Z","changedTime":"2021-07-27T05:33:03.3275836Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324104013337657","name":"DogFoodCRUDByOBO637324104013337657","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:20:09.8364512Z","changedTime":"2021-07-27T05:35:09.1448426Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324104306271974","name":"DogFoodCRUDByOBO637324104306271974","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:20:58.5737961Z","changedTime":"2021-07-27T05:36:47.8697841Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324108151559911","name":"DogFoodCRUDByOBO637324108151559911","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:27:03.5031959Z","changedTime":"2021-07-27T05:35:45.9738665Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324130349750773","name":"WorkspaceCRUD637324130349750773","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:04:02.5731789Z","changedTime":"2021-07-27T05:35:03.7213722Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO","name":"DogFoodCRUDByOBO","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:04:09.4449762Z","changedTime":"2021-07-27T05:36:43.6108843Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324136041193861","name":"ma637324136041193861","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:13:32.6296628Z","changedTime":"2021-07-27T05:39:55.4543983Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324138296810323","name":"WorkspaceCRUD637324138296810323","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:17:18.6195378Z","changedTime":"2021-07-27T05:35:52.0675612Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324394986402832","name":"ma637324394986402832","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:25:00.6944717Z","changedTime":"2021-08-04T05:57:02.6801352Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324396974259891","name":"WorkspaceCRUD637324396974259891","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:28:18.0515468Z","changedTime":"2021-07-27T05:37:40.9671961Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324413990368170","name":"ma637324413990368170","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:56:40.2264611Z","changedTime":"2021-08-04T05:57:03.7227918Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324416107382019","name":"WorkspaceCRUD637324416107382019","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-08T00:00:11.4419626Z","changedTime":"2021-07-27T05:37:10.4129822Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yinshen-test/providers/Microsoft.Quantum/Workspaces/yinshen-test-0825","name":"yinshen-test-0825","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"c25702d9-0c4e-4c19-8668-872627f818db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-08-25T17:45:46.8586351Z","changedTime":"2021-07-27T05:36:56.3963773Z","provisioningState":"Succeeded","tags":{},"systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-01-20T02:15:13.9269396Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mblouinqciprod","name":"mblouinqciprod","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"4829a137-df3d-4a55-be93-fda1b179c3ee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-03T00:48:11.4086461Z","changedTime":"2021-07-27T05:45:53.4673978Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-workspace","name":"frtibble-workspace","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"d88653ef-4b3d-4d4e-b795-5b3bb4b80769","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-08T10:04:44.6783217Z","changedTime":"2021-07-27T05:49:01.1208261Z","provisioningState":"Succeeded","tags":{"createdbyuser":"frtibble"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/IEEEQuantumWeekDemo","name":"IEEEQuantumWeekDemo","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"259a55be-a049-4bb6-8629-5c83a638ae33","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-09T17:16:14.2426067Z","changedTime":"2021-07-27T05:46:45.0850681Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-iee","name":"frtibble-iee","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"e12dd91d-3b09-45f6-ba4b-10a2b94e927c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-10T09:45:03.2479287Z","changedTime":"2021-07-27T05:50:14.6321358Z","provisioningState":"Succeeded","tags":{"createdbyuser":"frtibble"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/Test4Fabrice2","name":"Test4Fabrice2","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"eaca3591-732d-4719-8026-8da323a6070e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-14T05:40:59.7852686Z","changedTime":"2021-07-27T05:34:30.6014312Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/Test4FabriceCombined","name":"Test4FabriceCombined","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"0ac72faa-a416-4ed2-aded-02d264152314","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-14T23:12:16.0315031Z","changedTime":"2021-07-27T05:32:32.5315348Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-ieee","name":"frtibble-ieee","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"60b3eef0-7da2-49fd-8c5e-caf0cd174a91","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-11T11:29:36.8078005Z","changedTime":"2021-07-27T05:49:58.260649Z","provisioningState":"Succeeded","tags":{"createdbyuser":"frtibble"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/qw-workspace-boggle","name":"qw-workspace-boggle","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"1699a6f7-f52a-4f90-bccf-e6b010de3b27","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-15T18:31:09.8241727Z","changedTime":"2021-07-27T05:43:24.5204418Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/Demo-IEEEQuantumWeek","name":"Demo-IEEEQuantumWeek","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"615aeb2b-e7f2-4b60-9a2e-7a1eef79e2a8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-16T21:30:19.4128348Z","changedTime":"2021-07-27T05:51:09.6892426Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace","name":"e2e-tests-workspace","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-09-22T21:18:21.0810019Z","changedTime":"2021-07-27T05:47:14.7272638Z","provisioningState":"Succeeded"}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westcentralus/providers/Microsoft.Quantum/Workspaces/ws-aqua-live-tests-westcentralus","name":"ws-aqua-live-tests-westcentralus","type":"Microsoft.Quantum/Workspaces","location":"westcentralus","identity":{"principalId":"0cb38493-d3f7-4e81-a87c-5d32ac10b6e5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-10-04T17:37:46.465927Z","changedTime":"2021-10-04T21:47:49.622541Z","provisioningState":"Succeeded","systemData":{"createdBy":"b6f9942c-b71a-4a54-9ef1-dd0edcbaabe6","createdByType":"Application","createdAt":"2021-10-04T17:37:46.8034914Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-10-04T19:07:55.8374847Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-19581862-24ce-455d-b363-ef6936cc51b9","name":"ws-19581862-24ce-455d-b363-ef6936cc51b9","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f3961842-400c-4ea7-b170-bfd1782f2a92","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-17T17:29:25.3329306Z","changedTime":"2021-07-27T05:34:50.5202765Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-17T17:29:25.4492767Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-17T17:29:37.3071486Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-82882539-c48d-4506-bea6-9285ee94fda2","name":"ws-82882539-c48d-4506-bea6-9285ee94fda2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"85b313ac-654b-4e86-8cca-bb60aff502d8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-17T18:52:59.6021849Z","changedTime":"2021-07-27T05:38:06.7819782Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-17T18:52:59.6877962Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-17T18:53:11.414308Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-80ee1bea-ab32-4e2f-98ea-cd3616a88fc8","name":"ws-80ee1bea-ab32-4e2f-98ea-cd3616a88fc8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c066ffac-00b3-4384-9aca-bcb9be40fc79","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-09T22:23:52.6143056Z","changedTime":"2021-07-27T05:38:21.6788266Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-09T22:23:52.83096Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-10T17:35:25.7307522Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-uksouth-rg/providers/Microsoft.Quantum/Workspaces/ws-e5d7be5e-7700-422d-9908-939e8500086b","name":"ws-e5d7be5e-7700-422d-9908-939e8500086b","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"86bdb98a-18b3-4d16-ba03-e0f25e8c80f4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-09T22:27:00.5629272Z","changedTime":"2021-07-27T05:37:13.1834501Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-09T22:27:00.6787536Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-09T22:27:14.1288761Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-20ded1a8-5879-4713-ab13-0811adc620b3","name":"ws-20ded1a8-5879-4713-ab13-0811adc620b3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"07ec0dd4-0979-49b6-bab7-e315fca781d7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-22T18:37:58.7588167Z","changedTime":"2021-07-27T05:36:52.9882034Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-22T18:37:59.6776245Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-22T18:38:16.8639085Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-78ca0435-77d8-4da3-a827-83bfaee208e1","name":"ws-78ca0435-77d8-4da3-a827-83bfaee208e1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4e84206f-2b67-4c2c-aa83-58b42cb67b6c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-06-22T18:43:41.5058846Z","changedTime":"2021-07-27T05:38:01.5612403Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-06-22T18:43:41.6217422Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-06-22T18:43:56.2601Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/EastUS2EUAP","name":"EastUS2EUAP","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"9e98d604-cb41-448d-9cda-b38f38942393","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-29T04:00:02.4503411Z","changedTime":"2021-08-16T21:46:32.4963147Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2021-05-29T04:00:03.0788927Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-16T21:36:23.702052Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-delete-me-14","name":"ricardoe-delete-me-14","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"3d375cec-c96a-49c3-8cd0-14c4de8afea1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-20T07:13:32.7658856Z","changedTime":"2021-07-27T05:48:56.302055Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-20T07:13:33.1506246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-20T07:13:44.3412508Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-01","name":"ricardoe-deltest-01","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"e93bd558-d748-4320-9b18-c06668517f42","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:27:13.7830615Z","changedTime":"2021-07-27T05:47:12.5721985Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-10-18T23:40:30.2405298Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-10-18T23:40:30.2405298Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-05","name":"ricardoe-deltest-05","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"abef1b3a-6e1f-4ed6-b816-b774998b253c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:27:17.7146409Z","changedTime":"2021-07-27T05:46:54.0651859Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-08T02:32:05.4507761Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-19","name":"ricardoe-deltest-19","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"88d06c4c-49c5-4e91-a672-f1b5461c159d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:13.7477202Z","changedTime":"2021-07-27T05:46:35.8518Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:28:55.5439308Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:28:55.5439308Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-04","name":"ricardoe-deltest-04","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"7b8f1d3e-8557-4d9c-9834-bc3194b92be0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:26.0236528Z","changedTime":"2021-07-27T05:47:26.8631889Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:00:40.5363241Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:00:40.5363241Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-03","name":"ricardoe-deltest-03","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"9076164d-1224-4a1a-b0a0-753d15b3775d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:42.987003Z","changedTime":"2021-07-27T05:48:09.5128184Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:01:13.4373444Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:01:13.4373444Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-31","name":"ricardoe-deltest-31","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"fb3d2875-9461-4d3d-a24e-3944daf5020f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:28:54.9678754Z","changedTime":"2021-07-27T05:50:31.3711636Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:58:08.6172491Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:58:08.6172491Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-15","name":"ricardoe-deltest-15","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"35c149c1-1691-4860-951d-f0c9185e33ad","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:08.4226339Z","changedTime":"2021-07-27T05:48:12.5753464Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:28:12.5252018Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:28:12.5252018Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-10","name":"ricardoe-deltest-10","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"18f5ca89-6d34-4763-94fc-221a9eb30963","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:24.7668862Z","changedTime":"2021-07-27T05:46:30.8982073Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:17:04.2770733Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:17:04.2770733Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-06","name":"ricardoe-deltest-06","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"92d04368-5707-444b-8016-9803b5c2b6b1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:33.0093551Z","changedTime":"2021-07-27T05:45:44.9829486Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:00:45.1797408Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:00:45.1797408Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-07","name":"ricardoe-deltest-07","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"17c6976d-da60-4949-8155-3f0847d2d86e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:37.0579805Z","changedTime":"2021-07-27T05:48:32.4057159Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:03:00.6052213Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:03:00.6052213Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-02","name":"ricardoe-deltest-02","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"8fd53f7d-bdc8-4e81-90d3-76b689c82c94","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:29:57.3301759Z","changedTime":"2021-07-27T05:45:38.3633928Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:01:05.9429812Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:01:05.9429812Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-13","name":"ricardoe-deltest-13","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"277414ee-fb54-46a2-a4e8-11e563962528","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:30:06.3842803Z","changedTime":"2021-07-27T05:48:50.2363343Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:26:47.3770504Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:26:47.3770504Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-40","name":"ricardoe-deltest-40","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"879de15f-95de-4e00-afd1-d0d556d4a6cd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:30:06.6294793Z","changedTime":"2021-07-27T05:46:11.1226695Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T19:10:19.1950493Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T19:10:19.1950493Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-50","name":"ricardoe-deltest-50","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"0feb2152-24dd-4471-a7e7-ea0d9f04f9d5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:30:10.9622133Z","changedTime":"2021-07-27T05:49:13.923642Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T19:18:51.5371546Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T19:18:51.5371546Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-14","name":"ricardoe-deltest-14","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"d052646d-fccd-4044-85a7-6db3fa5468bc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:31:14.1508258Z","changedTime":"2021-07-27T05:48:06.2639714Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:27:25.7655604Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:27:25.7655604Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-32","name":"ricardoe-deltest-32","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"bfb4d6a0-9757-462a-95f0-86f213ce8651","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:31:33.0294784Z","changedTime":"2021-07-27T05:48:06.9458438Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:58:38.526603Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:58:38.526603Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-30","name":"ricardoe-deltest-30","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"656b5608-7833-4669-8aa4-1ad2715f4131","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-07-27T01:32:09.6078875Z","changedTime":"2021-07-27T05:47:34.8254547Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2020-11-09T18:54:11.0396061Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-09T18:54:11.0396061Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westeurope-rg/providers/Microsoft.Quantum/Workspaces/ws-3fa2c0e7-85f8-44c9-bd50-e99c9cf2bf99","name":"ws-3fa2c0e7-85f8-44c9-bd50-e99c9cf2bf99","type":"Microsoft.Quantum/Workspaces","location":"westeurope","identity":{"principalId":"8b740fbf-ff2e-431c-89d5-2c9a513afad2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-08T20:20:20.9387072Z","changedTime":"2021-09-09T00:30:29.9350199Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-09-08T20:20:21.5647676Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-08T20:20:34.9884284Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westeurope-rg/providers/Microsoft.Quantum/Workspaces/ws-aef6b2f1-15d8-41d3-bafd-655fe00fbbb1","name":"ws-aef6b2f1-15d8-41d3-bafd-655fe00fbbb1","type":"Microsoft.Quantum/Workspaces","location":"westeurope","identity":{"principalId":"80a060ab-de43-4fc6-bf81-bb2f57caf23f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-08T20:21:48.4398032Z","changedTime":"2021-09-09T00:31:55.8731187Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-09-08T20:21:48.9455419Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-08T20:22:01.9618519Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-northeurope-rg/providers/Microsoft.Quantum/Workspaces/ws-d950c6aa-c16b-47b3-bc36-afe45dfeedc2","name":"ws-d950c6aa-c16b-47b3-bc36-afe45dfeedc2","type":"Microsoft.Quantum/Workspaces","location":"northeurope","identity":{"principalId":"fb12104d-247e-4634-b5b8-1e7ccc5060cb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-09T17:41:55.448771Z","changedTime":"2021-09-09T21:52:07.3619872Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-09-09T17:41:55.5190876Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-09T17:42:11.3262667Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-northeurope-rg/providers/Microsoft.Quantum/Workspaces/ws-0e9795e7-a89f-444a-8465-943c59c21ff6","name":"ws-0e9795e7-a89f-444a-8465-943c59c21ff6","type":"Microsoft.Quantum/Workspaces","location":"northeurope","identity":{"principalId":"53e41462-eecb-4c5d-b0dd-3b9b37812128","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-09T18:06:17.4255147Z","changedTime":"2021-09-09T23:30:28.7006604Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-09-09T18:06:17.4850526Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-09T18:06:32.7519003Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/anraman-fleet-workspace","name":"anraman-fleet-workspace","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"597bb6b1-ce4f-455d-8c9b-d360e1f495f7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-16T16:23:16.3734887Z","changedTime":"2022-05-16T20:12:15.1747662Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anraman@microsoft.com","createdByType":"User","createdAt":"2021-08-16T16:23:16.4332888Z","lastModifiedBy":"anraman@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-16T20:00:00.5509278Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocro-workspace-notebooks","name":"alchocro-workspace-notebooks","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"ca5ae73c-baa9-4130-b268-c576eccf3827","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-08-18T21:48:24.3115733Z","changedTime":"2022-04-09T23:50:10.2643002Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-08-18T21:48:24.363207Z","lastModifiedBy":"alchocro@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-09T23:38:13.4816834Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantumEvents/providers/Microsoft.Quantum/Workspaces/azure-quantum-demo","name":"azure-quantum-demo","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"03b15e4f-45f7-42c8-88ef-2b43b901c9ca","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-01T23:40:33.5716371Z","changedTime":"2022-01-25T00:38:12.8758521Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"guenp@microsoft.com","createdByType":"User","createdAt":"2021-09-01T23:40:33.8636517Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-25T00:28:01.8446332Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westeurope-rg/providers/Microsoft.Quantum/Workspaces/ws-88644ebd-b63f-4683-8bd4-5e1d2a0b8756","name":"ws-88644ebd-b63f-4683-8bd4-5e1d2a0b8756","type":"Microsoft.Quantum/Workspaces","location":"westeurope","identity":{"principalId":"e449e701-0fb7-46db-92db-b32e46d0c10e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-13T21:23:19.9366106Z","changedTime":"2021-09-14T01:33:27.2115487Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-09-13T21:23:20.4517964Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-13T21:23:34.1840898Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westeurope-rg/providers/Microsoft.Quantum/Workspaces/ws-d06f4d80-7896-4c7f-9201-fedf05d21f63","name":"ws-d06f4d80-7896-4c7f-9201-fedf05d21f63","type":"Microsoft.Quantum/Workspaces","location":"westeurope","identity":{"principalId":"01cf2770-7d3f-40c3-8b59-4c7896800b7c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-14T15:47:30.5782386Z","changedTime":"2021-09-14T19:57:41.2134422Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-09-14T15:47:31.5551031Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-14T15:47:47.7539942Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/mblouin-canary-credits","name":"mblouin-canary-credits","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"6764570d-47d5-4163-b105-9bd3613f1c17","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-21T18:57:56.0587068Z","changedTime":"2022-02-23T16:31:02.2352097Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"mblouin@microsoft.com","createdByType":"User","createdAt":"2021-09-21T18:57:56.7894906Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-23T16:20:48.9811826Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocro-demo-workspace-2","name":"alchocro-demo-workspace-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ed3060de-325c-434a-b097-896b205b61e6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-09-24T15:49:53.2985494Z","changedTime":"2021-09-24T19:59:55.2499435Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-09-24T15:49:53.3331397Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-24T15:50:05.0541936Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/ws-aqua-live-tests-eastus2euap","name":"ws-aqua-live-tests-eastus2euap","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1bcbf6da-d439-46be-8e10-a88c13d3dabf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-10-04T21:21:19.5232481Z","changedTime":"2022-01-19T18:59:00.6514241Z","provisioningState":"Succeeded","systemData":{"createdBy":"b6f9942c-b71a-4a54-9ef1-dd0edcbaabe6","createdByType":"Application","createdAt":"2021-10-04T21:21:19.7933799Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-19T18:48:50.9601304Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westeurope-rg/providers/Microsoft.Quantum/Workspaces/ws-064c6602-cf90-4e04-8e2c-c3bc43d0c1f5","name":"ws-064c6602-cf90-4e04-8e2c-c3bc43d0c1f5","type":"Microsoft.Quantum/Workspaces","location":"westeurope","identity":{"principalId":"1af30399-2f43-46e4-988d-18be6a11e3e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-10-08T22:14:13.7125686Z","changedTime":"2021-10-09T02:24:20.5983672Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-10-08T22:14:14.5473507Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-10-08T22:14:27.6777919Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qir-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/qir-dogfood-test-workspace","name":"qir-dogfood-test-workspace","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"abe66b0d-c256-42b0-a555-707b8f7ae90f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-01T22:08:52.9064179Z","changedTime":"2021-11-02T18:28:02.1303673Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-11-01T22:08:53.5007066Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-02T18:17:53.6520371Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-682d69ef-3329-480f-aea0-435cb7572ece","name":"ws-682d69ef-3329-480f-aea0-435cb7572ece","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"99a4d84f-20ff-4c6a-9cb2-6fad2ece114d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-02T22:10:03.8605747Z","changedTime":"2021-11-03T02:20:09.5235527Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-11-02T22:10:04.4104303Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-02T22:12:24.5281608Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-ae3b9f57-4bc5-42da-84e2-32ef1cebd61e","name":"ws-ae3b9f57-4bc5-42da-84e2-32ef1cebd61e","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"260d6d78-d904-47fb-ac74-34b19de45266","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-02T22:13:33.2383547Z","changedTime":"2021-11-03T02:23:53.5414731Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-11-02T22:13:33.7448372Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-02T22:16:01.0754153Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-5ec491ee-085e-465d-9246-4ce52292663c","name":"ws-5ec491ee-085e-465d-9246-4ce52292663c","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1da0372c-64e3-4427-93a8-460fddfdace3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-02T22:19:12.7444486Z","changedTime":"2021-11-03T02:29:17.2056448Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-11-02T22:19:13.3237769Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-02T22:21:33.3671249Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-b32ad602-5cea-42e6-b77e-36f0b7089e59","name":"ws-b32ad602-5cea-42e6-b77e-36f0b7089e59","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"ba74989a-65f1-4f65-ab1f-b00bab9e3727","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-03T17:23:07.6732874Z","changedTime":"2021-11-03T21:33:12.8432719Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-11-03T17:23:08.3459367Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-03T17:25:55.1761096Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-e2f6118b-ca39-4ec5-975d-b04b86ab5dd7","name":"ws-e2f6118b-ca39-4ec5-975d-b04b86ab5dd7","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4cff66cb-47d6-49b8-8463-d35cd27e4475","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-03T17:37:02.5988616Z","changedTime":"2021-11-03T22:31:04.0846335Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-11-03T17:37:02.6734913Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-03T22:20:57.3871275Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-e2f6118b-ca39-4ec5-975d-b04b86ab5dd8","name":"ws-e2f6118b-ca39-4ec5-975d-b04b86ab5dd8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"8346adff-d3c0-40e1-b90b-146e6f70b352","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-03T17:58:38.9759315Z","changedTime":"2021-11-03T22:08:43.4851075Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-11-03T17:58:39.0265029Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-03T18:01:08.8557481Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vadym-azure-quantum-notebooks-01/providers/Microsoft.Quantum/Workspaces/vadym-azure-notebooks-01","name":"vadym-azure-notebooks-01","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"6892af68-b3e9-4a6d-8d3e-bb66940ab317","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-08T23:20:02.2544574Z","changedTime":"2021-11-09T05:47:35.9210232Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"vadym@microsoft.com","createdByType":"User","createdAt":"2021-11-08T23:20:02.9981901Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-08T23:20:14.1432083Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alexva-RE/providers/Microsoft.Quantum/Workspaces/alexva-RE","name":"alexva-RE","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"a61ebbb7-b380-4641-be5e-7b6b43c59de4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-08T23:24:19.7559481Z","changedTime":"2021-11-09T03:34:22.2395451Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alexva@microsoft.com","createdByType":"User","createdAt":"2021-11-08T23:24:20.4440516Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-08T23:24:32.057466Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5540527","name":"e2e-test-w5540527","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ad09ba85-52f5-4c79-ae3d-ed89d9e9be70","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-10-27T20:27:53.1133777Z","changedTime":"2021-10-28T00:38:13.3723627Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-10-27T20:27:53.1968225Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-10-27T20:28:05.1631771Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/StjordaQuantumTest2","name":"StjordaQuantumTest2","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"c5ef1263-e511-4a5e-ac89-7fb74c73fb8f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-02T04:56:49.3788592Z","changedTime":"2022-02-25T21:57:45.7808718Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"stjorda@microsoft.com","createdByType":"User","createdAt":"2021-11-02T04:56:49.4252197Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-25T21:47:38.9053117Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w5852594","name":"e2e-test-w5852594","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"5ff8f79f-cda9-43d2-b008-15dc53de3d2c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-02T19:18:20.2396638Z","changedTime":"2021-12-02T23:28:39.9505135Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-02T19:18:20.8944333Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-02T19:18:32.2764259Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w9256671","name":"e2e-test-w9256671","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"d6b26fcc-f81c-4145-9a1c-fb09fb1a7a6b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-02T19:32:02.9979368Z","changedTime":"2021-12-03T00:42:22.6140667Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-02T19:32:03.2728426Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-02T19:32:14.7896944Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w9465530","name":"e2e-test-w9465530","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"49f63756-c453-4d1c-bb98-27faa12d1f2d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-02T21:52:47.8363668Z","changedTime":"2021-12-03T02:02:53.3037729Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-02T21:52:48.4718942Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-02T21:52:59.7886565Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w4338433","name":"e2e-test-w4338433","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"b4e4e8ce-0aa8-47fb-b02b-d5c8c16df675","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-03T01:07:12.6097801Z","changedTime":"2021-12-03T06:04:53.6590038Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-03T01:07:13.1641324Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-03T01:07:24.7154413Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w8292884","name":"e2e-test-w8292884","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"ff64f41c-1459-4a82-9df3-8291aa81603e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-03T20:07:09.6114795Z","changedTime":"2021-12-04T01:17:33.5550073Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-03T20:07:10.8692122Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-03T20:07:22.6216816Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4855864","name":"e2e-test-w4855864","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"fd6a4003-cebc-419c-8c37-18c47b212eac","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:15:06.1850843Z","changedTime":"2021-11-17T05:25:30.3815395Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:15:06.3341028Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:15:17.6519593Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6228340","name":"e2e-test-w6228340","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"048a0a81-4726-4910-829c-010512be38eb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:21:41.0628732Z","changedTime":"2021-11-17T05:32:00.1514639Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:21:41.1044072Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:21:52.2788498Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8109079","name":"e2e-test-w8109079","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c4567da2-0059-456e-8ce6-fee612a7ee7e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:21:44.1631039Z","changedTime":"2021-11-17T05:31:45.8563779Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:21:44.2083378Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:21:55.4031899Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5782549","name":"e2e-test-w5782549","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"092325ee-ed8e-497a-b4c7-02b0b55db7c6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:45:16.2745407Z","changedTime":"2021-11-17T05:55:36.0498468Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:45:16.5884078Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:45:27.7474367Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4876898","name":"e2e-test-w4876898","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f91bc74e-0d13-450e-8f81-ca2c64f650ed","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:49:40.6106761Z","changedTime":"2021-11-17T05:59:59.7184388Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:49:40.7274133Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:49:51.8668722Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6670315","name":"e2e-test-w6670315","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"991ab25a-3235-469c-8b54-75d0413dd2ce","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T01:49:51.7564555Z","changedTime":"2021-11-17T05:59:53.1971139Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T01:49:51.813483Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T01:50:03.1397493Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8407759","name":"e2e-test-w8407759","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eabfc985-ca1e-42c9-8cad-056203c97046","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:32:14.2481459Z","changedTime":"2021-11-17T08:42:37.9931355Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:32:14.3542652Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:32:25.5323578Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8077566","name":"e2e-test-w8077566","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ae7f1936-4d88-4e40-ab38-1ab9a831b3bc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:32:17.1388858Z","changedTime":"2021-11-17T08:42:19.2327764Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:32:17.2229833Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:32:28.6473002Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5207694","name":"e2e-test-w5207694","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"381c9fed-03e8-49ee-9eee-f2622f583caa","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:35:42.2176879Z","changedTime":"2021-11-17T08:46:03.7562542Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:35:42.2830217Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:35:53.8898334Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6300926","name":"e2e-test-w6300926","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6f2294dc-e925-4506-9a97-8cd66640b811","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:35:43.0293703Z","changedTime":"2021-11-17T08:45:44.5428285Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:35:43.0970922Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:35:54.207906Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6665845","name":"e2e-test-w6665845","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5d176ebd-e296-4c4f-8911-4b3eef0197e2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:38:16.3423139Z","changedTime":"2021-11-17T08:48:35.6672338Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:38:16.434159Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:38:27.5708979Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4743300","name":"e2e-test-w4743300","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"299c639c-3492-4399-a148-3ed25c6afdf0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:38:19.2877562Z","changedTime":"2021-11-17T08:48:21.6339123Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:38:19.3548462Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:38:31.8462236Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1862027","name":"e2e-test-w1862027","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"aa72b24b-6caf-4484-ad42-b7291fcb6d91","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:43:09.1465801Z","changedTime":"2021-11-17T08:53:28.1558472Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:43:09.2208479Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:43:20.3800605Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9961035","name":"e2e-test-w9961035","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"67ec5fa2-5ee8-4e73-b667-3056b7067f4a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:43:11.7355696Z","changedTime":"2021-11-17T08:53:15.0709211Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:43:11.7927535Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:43:24.3950899Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8836578","name":"e2e-test-w8836578","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a08a3ed4-ce49-440e-98a7-19933b814c4d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:49:34.3348762Z","changedTime":"2021-11-17T08:59:53.7874047Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:49:34.6022564Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:49:45.6292246Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9201025","name":"e2e-test-w9201025","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ca16f94a-d6ec-430d-829b-99f326f431ee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T04:49:37.6674027Z","changedTime":"2021-11-17T08:59:40.0560962Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-17T04:49:37.7084872Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T04:49:49.0356399Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-aq-demo","name":"frtibble-aq-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9be73679-1dcb-40fa-9e59-b8c708652081","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-17T11:07:06.6164418Z","changedTime":"2021-11-17T15:17:10.4784318Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-11-17T11:07:08.1606526Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-17T11:07:24.7945612Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/aqua-live-tests-westus2","name":"aqua-live-tests-westus2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"fa194e97-b24f-4947-be25-cda79b4b89e7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T00:00:48.7169789Z","changedTime":"2021-11-20T04:10:51.1959746Z","provisioningState":"Succeeded","systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-11-20T00:00:48.9547426Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T00:06:27.9887571Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1664581","name":"e2e-test-w1664581","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"668ac433-20e4-474e-a69d-e62b69a10166","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T00:17:03.9667622Z","changedTime":"2021-11-20T04:27:24.070443Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T00:17:04.4593933Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T00:17:15.962484Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5042098","name":"e2e-test-w5042098","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"70d77896-182c-43fc-8367-9ae7a1389776","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T00:20:09.884656Z","changedTime":"2021-11-20T04:30:31.860609Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T00:20:10.6517794Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T00:20:22.7049235Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9280502","name":"e2e-test-w9280502","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"64d748f5-154a-4a91-96c1-92b3d8cc64d1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T01:05:36.1673761Z","changedTime":"2021-11-20T05:15:56.0615061Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T01:05:36.7063167Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T01:05:48.0496243Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9580647","name":"e2e-test-w9580647","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"47c800cd-4cb6-4968-b96a-0ce3a289a627","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-20T03:10:05.5194531Z","changedTime":"2021-11-20T07:20:10.5001866Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-20T03:10:06.4226022Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-20T03:10:17.8876556Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9917119","name":"e2e-test-w9917119","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5d7780b2-0637-49bf-aac2-43710ab0b757","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-22T20:55:11.4773678Z","changedTime":"2021-11-23T01:05:47.909964Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-22T20:55:12.1540687Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-22T20:55:24.4224163Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4880196","name":"e2e-test-w4880196","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a7bf9e3e-9ed7-4f3d-bceb-287b5b95ed1c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-22T22:26:12.8921343Z","changedTime":"2021-11-23T03:05:38.4242633Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-22T22:26:13.3547953Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-22T22:26:24.916178Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2946016","name":"e2e-test-w2946016","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ba0bc296-7cb7-4d1c-99f4-706f61ac42e3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-23T19:52:32.0441475Z","changedTime":"2021-11-24T00:02:52.8981204Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-23T19:52:32.1033454Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-23T19:52:43.7969179Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7100985","name":"e2e-test-w7100985","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"75452300-0608-439d-9420-32c6b0e8fc71","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-23T19:55:50.0506527Z","changedTime":"2021-11-24T00:06:11.6405091Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-23T19:55:50.7644563Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-23T19:56:02.124355Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w6072621","name":"e2e-test-w6072621","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ae63ce10-ef42-471b-848a-0c10832c2160","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T19:50:05.5374445Z","changedTime":"2021-11-25T01:05:47.0693628Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T19:50:06.4709757Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T19:50:18.6978461Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9533017","name":"e2e-test-w9533017","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b543ea04-d770-4d93-864e-3b5c925e07dd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T21:17:04.7307646Z","changedTime":"2021-11-25T01:27:23.5822555Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T21:17:04.7997369Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T21:17:16.2270365Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w6871058","name":"e2e-test-w6871058","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e14a6b19-dcd9-431c-8def-1615376ed814","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T21:24:05.8759355Z","changedTime":"2021-11-25T01:34:26.4676539Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T21:24:06.7536246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T21:24:18.3622439Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4863478","name":"e2e-test-w4863478","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0d0266dd-fdb3-436d-9345-fd0be6c062b7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T21:58:35.3039831Z","changedTime":"2021-11-25T02:08:59.3387135Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T21:58:36.4107392Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T21:58:49.455934Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5572441","name":"e2e-test-w5572441","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d043067d-14ea-4d12-a003-c8ca677e8bbc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:18:59.7514704Z","changedTime":"2021-11-25T03:29:01.347322Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:18:59.7944371Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:19:11.1930517Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7463427","name":"e2e-test-w7463427","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"04c680c3-6a94-4402-902d-6f4d22fa5f16","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:19:11.8478719Z","changedTime":"2021-11-25T02:29:13.2655969Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:19:11.901633Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:19:22.979348Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8570457","name":"e2e-test-w8570457","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"30016da7-6ee8-4f20-a1e1-8dfcb1fdc845","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:21:11.7908202Z","changedTime":"2021-11-25T02:31:21.129405Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T22:21:12.5426422Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:21:27.8992171Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6233595","name":"e2e-test-w6233595","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"65ecd9ef-670d-42ee-99eb-f9705bda2d7b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:27:15.609448Z","changedTime":"2021-11-25T02:37:36.4270079Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:27:15.6942224Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:27:26.9287465Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5860036","name":"e2e-test-w5860036","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c4888ec9-c989-4068-805b-b9b946ae98ea","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:27:16.2418828Z","changedTime":"2021-11-25T02:37:20.1496858Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:27:16.2965093Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:27:28.6567579Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3890773","name":"e2e-test-w3890773","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cc84afdf-9168-411d-b67a-43ae1d11961b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:29:36.2955356Z","changedTime":"2021-11-25T02:39:55.3776173Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:29:36.331524Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:29:47.7144381Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7457740","name":"e2e-test-w7457740","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"af5b8939-d925-4b8e-a42c-b5ff8442f10e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:34:56.7553748Z","changedTime":"2021-11-25T02:45:16.4660049Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:34:56.7962246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:35:08.018217Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9870475","name":"e2e-test-w9870475","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"945f9962-1feb-4ec4-8cae-86588be71012","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:41:42.6116209Z","changedTime":"2021-11-25T02:52:04.3476198Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T22:41:42.6566867Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:41:56.0738603Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6825514","name":"e2e-test-w6825514","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a0099ef0-f5df-484f-8b50-52528075e254","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:51:55.8144548Z","changedTime":"2021-11-25T04:02:15.7115345Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:51:55.8782928Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:52:07.4710334Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9967916","name":"e2e-test-w9967916","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a1c7c513-b690-44c7-a2e3-005e6029824f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:53:14.9051415Z","changedTime":"2021-11-25T04:03:34.4302023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:53:14.9906211Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:53:26.5211662Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6832524","name":"e2e-test-w6832524","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c113066b-df4c-480f-b6a9-a0be007375b2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:54:07.1179093Z","changedTime":"2021-11-25T03:04:26.6089025Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:54:07.1653425Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:54:18.2284545Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5527078","name":"e2e-test-w5527078","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5004f14b-1d72-4409-ad5a-5c60b684dddd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:55:19.822493Z","changedTime":"2021-11-25T03:05:21.3256673Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:55:19.890857Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:55:31.0914039Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8125607","name":"e2e-test-w8125607","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"107c2ab8-dc76-486d-a890-0ee44d0bcc34","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:57:03.4980861Z","changedTime":"2021-11-25T03:07:05.0084321Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:57:03.5443599Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:57:15.2177754Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5509202","name":"e2e-test-w5509202","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"842922a1-3cb0-4f66-8d02-c5ab57be3bdb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T22:57:29.6213311Z","changedTime":"2021-11-25T03:07:48.3737565Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T22:57:29.6792471Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T22:57:40.686122Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9356573","name":"e2e-test-w9356573","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f7b55351-a07a-4808-8935-a0a00f49afca","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:04:16.5021351Z","changedTime":"2021-11-25T04:14:18.38674Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:04:16.5663437Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:04:27.8826218Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1538504","name":"e2e-test-w1538504","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a95254e4-d55f-4618-b916-f29546440b7a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:20:50.7599634Z","changedTime":"2021-11-25T03:31:10.1978664Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:20:50.8691491Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:21:01.9607891Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8696381","name":"e2e-test-w8696381","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c3724c66-2e4c-4338-96f4-0f8d7dae4e1d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:28:47.4148975Z","changedTime":"2021-11-25T03:38:49.9153415Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:28:47.4766149Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:28:59.2548706Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7795273","name":"e2e-test-w7795273","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"dec4d277-d371-48d4-85f4-3da62d832f57","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:34:42.5773572Z","changedTime":"2021-11-25T03:44:44.7757396Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:34:42.6763231Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:34:54.7045343Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4326004","name":"e2e-test-w4326004","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a86c15c8-4e2b-4a55-b141-0a43c3c6f8af","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:35:12.1248876Z","changedTime":"2021-11-25T04:04:01.5434073Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-24T23:35:12.847694Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:35:24.6220347Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9108046","name":"e2e-test-w9108046","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2f431a83-e4bd-41c2-8ea9-96b2460ca00c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:36:19.7915882Z","changedTime":"2021-11-25T03:46:41.9977301Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:36:19.8273268Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:36:31.9386739Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7659677","name":"e2e-test-w7659677","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"71081933-8a77-432f-a3c7-cd6fbfc660d3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:44:52.1498756Z","changedTime":"2021-11-25T03:55:13.0881473Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:44:52.200568Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:45:03.4006213Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7182243","name":"e2e-test-w7182243","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f3219ba2-e348-47a1-9e2a-92253d8b93a3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:45:37.6276511Z","changedTime":"2021-11-25T03:55:39.8317319Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:45:37.6745429Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:45:48.7247684Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6406401","name":"e2e-test-w6406401","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e77f0891-7ec9-44c7-bf4f-19766647ef92","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:47:39.3364381Z","changedTime":"2021-11-25T03:58:01.6363827Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:47:39.409324Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:47:51.1517951Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7428752","name":"e2e-test-w7428752","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1f5ad39d-0201-42b1-9f8c-a76d130e4147","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:48:39.9576729Z","changedTime":"2021-11-25T03:59:03.1093366Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:48:40.0288305Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:48:51.0351743Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5701103","name":"e2e-test-w5701103","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"55a80bed-9e05-4164-bb1e-326a30dacf2e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:50:13.4740003Z","changedTime":"2021-11-25T05:00:32.1019452Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:50:13.5857643Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:50:24.9753471Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1965290","name":"e2e-test-w1965290","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0ed35025-4c81-48bf-80c2-04329b8a317d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:51:22.6021877Z","changedTime":"2021-11-25T04:01:43.1514675Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:51:22.6719801Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:51:34.2735861Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9101507","name":"e2e-test-w9101507","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5b74611c-76b5-4491-a48b-693f897560ec","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-24T23:52:00.2725449Z","changedTime":"2021-11-25T04:02:22.2798037Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-24T23:52:00.3174342Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-24T23:52:11.9052635Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5189269","name":"e2e-test-w5189269","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ffcd5add-a43a-43c0-8c65-55ea0f533cdf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T00:23:12.2934941Z","changedTime":"2021-11-25T04:33:32.1147423Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T00:23:12.3433276Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T00:23:23.6176145Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1967034","name":"e2e-test-w1967034","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d36e282b-91ed-475a-a661-1231521384db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:13:11.6543448Z","changedTime":"2021-11-25T05:23:32.4072334Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:13:11.7716155Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:13:23.1105113Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6195766","name":"e2e-test-w6195766","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"69619439-1ebf-4531-85ba-57703fe4fbfd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:13:52.3944319Z","changedTime":"2021-11-25T06:24:11.7754717Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:13:52.5021605Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:14:04.0162452Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4189912","name":"e2e-test-w4189912","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"db3a0be3-e3fe-4053-8173-1f647dfbc176","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:14:42.4329016Z","changedTime":"2021-11-25T05:25:00.5650161Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:14:42.5005022Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:14:53.5413605Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8313409","name":"e2e-test-w8313409","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"93e6c0cb-c533-4d8b-97de-1be38faf41e6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:17:00.4556848Z","changedTime":"2021-11-25T05:27:02.7115488Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:17:00.5283441Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:17:11.8984059Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7559796","name":"e2e-test-w7559796","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"799951c4-918b-4e1f-b078-4a1d7540e097","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:19:05.0022131Z","changedTime":"2021-11-25T05:29:24.7693469Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:19:05.0890624Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:19:16.2509778Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1549628","name":"e2e-test-w1549628","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ced1e797-0472-45f3-b43e-602d46594171","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:22:16.7883192Z","changedTime":"2021-11-25T05:32:37.0135288Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:22:16.8477428Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:22:28.6733309Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7638833","name":"e2e-test-w7638833","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ab1360e4-8375-4f72-8595-2bf2ac7a094f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:24:50.8580183Z","changedTime":"2021-11-25T05:35:11.4810717Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:24:50.9189473Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:25:02.0620308Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5472943","name":"e2e-test-w5472943","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d25b4631-0e6b-442a-be9d-dd360e7d3035","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:24:57.9331807Z","changedTime":"2021-11-25T05:35:00.6695862Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:24:57.9716656Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:25:09.0594506Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2421488","name":"e2e-test-w2421488","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8b4aa6bf-da6e-4153-86af-c12ea96d497c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:26:18.4789461Z","changedTime":"2021-11-25T05:36:38.3990152Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:26:18.5643019Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:26:29.9930254Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3474593","name":"e2e-test-w3474593","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"07414bfb-786a-429e-b679-aa888e81056f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:27:08.3240084Z","changedTime":"2021-11-25T05:37:28.085094Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:27:08.3667136Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:27:19.3735134Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9972591","name":"e2e-test-w9972591","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8703be6d-5ebb-4336-8f4b-7fe0536823d7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:29:05.9194618Z","changedTime":"2021-11-25T06:39:07.7183593Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:29:05.989571Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:29:17.0184959Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7610181","name":"e2e-test-w7610181","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"943ed456-d7ba-4714-bc5d-e3d9708258b1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T01:31:58.5460508Z","changedTime":"2021-11-25T05:42:17.4656289Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-25T01:31:58.5916601Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T01:32:09.8338521Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5262982","name":"e2e-test-w5262982","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1b0b7505-2722-4513-9e0f-cd944a38f0b3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T02:00:10.8605701Z","changedTime":"2021-11-25T06:10:32.288029Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-25T02:00:11.9584224Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T02:00:23.9054229Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9475780","name":"e2e-test-w9475780","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2e322003-21e6-403f-8280-3f25e02c6e86","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T02:18:35.942469Z","changedTime":"2021-11-25T06:29:00.0625644Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-25T02:18:36.9353617Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T02:18:49.0854048Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3177562","name":"e2e-test-w3177562","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"639c9c01-66ca-43f0-a9ba-f79aff8360ee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-25T02:54:42.6378572Z","changedTime":"2021-11-25T07:05:05.8969304Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-25T02:54:43.4317562Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-25T02:54:55.0561861Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w9199609","name":"e2e-test-w9199609","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"6bb9e2f1-e0c2-4d09-a110-c53fa7efe984","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-06T19:05:22.1297344Z","changedTime":"2021-12-07T00:15:40.4176033Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-06T19:05:22.4517098Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-06T19:05:33.4826384Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w8645403","name":"e2e-test-w8645403","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1668817f-0636-4d83-a02a-e89989042fcc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-07T19:48:40.0411174Z","changedTime":"2021-12-08T00:02:54.9063857Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-07T19:48:40.7845072Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-07T19:48:51.8552608Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w6357853","name":"e2e-test-w6357853","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c4dfb763-3142-47e7-986b-e370662434a4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-07T20:04:57.8445073Z","changedTime":"2021-12-08T01:15:01.4595583Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-07T20:04:58.1222473Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-07T20:05:09.577203Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w6709524","name":"e2e-test-w6709524","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"57067f4a-56b7-45c7-8e49-d6398158e07a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-07T20:29:16.3034804Z","changedTime":"2021-12-08T01:39:34.3772893Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-07T20:29:16.5687611Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-07T20:29:27.778876Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w2250164","name":"e2e-test-w2250164","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"98152bb3-cfb1-42c0-87ea-e5d629a83b41","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-07T22:54:32.1501042Z","changedTime":"2021-12-08T04:04:50.4615969Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-07T22:54:32.2519998Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-07T22:54:43.4296729Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w8156833","name":"e2e-test-w8156833","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f9d54ac9-8388-4e51-9ee3-4a1f0abbce41","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-08T00:12:39.9392778Z","changedTime":"2021-12-08T04:22:58.6927972Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-08T00:12:40.1714804Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-08T00:12:51.3186584Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8724250","name":"e2e-test-w8724250","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1889c9a7-fdc3-4fe0-8067-f56ff501bd48","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:02:47.4465897Z","changedTime":"2021-11-29T23:13:07.2249505Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:02:47.496661Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:02:59.247862Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2315821","name":"e2e-test-w2315821","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"650d907d-0673-4135-ba71-2d93d25327e7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:02:53.8957456Z","changedTime":"2021-11-29T23:12:55.060864Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:02:53.9780123Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:03:05.0652491Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3817194","name":"e2e-test-w3817194","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9f897f0b-d9a4-49fb-a6c4-cbc0390fa04c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:04:38.3106297Z","changedTime":"2021-11-29T23:14:58.7458013Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:04:38.3568636Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:04:49.6849875Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9276310","name":"e2e-test-w9276310","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7df99e98-7edc-4dcd-8504-20d5a6f6d96d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:05:39.1122204Z","changedTime":"2021-11-29T23:15:43.2300033Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:05:39.1561205Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:05:52.0303472Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5252312","name":"e2e-test-w5252312","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8eb4a9d0-f03d-4f2e-a2fa-96a60a4b59ef","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:07:13.091232Z","changedTime":"2021-11-29T23:17:15.2565612Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:07:13.1627581Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:07:24.5592467Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4361607","name":"e2e-test-w4361607","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"3ce7ea68-792f-4ed7-b4e2-8e98aea42a1b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:11:37.2689258Z","changedTime":"2021-11-29T23:21:56.3836401Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:11:37.3093303Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:11:48.8567867Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2163123","name":"e2e-test-w2163123","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6f11511c-912d-4024-bd9f-ec6aea16695d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:14:58.5607594Z","changedTime":"2021-11-29T23:25:18.6380062Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:14:58.6207239Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:15:09.9656946Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2434112","name":"e2e-test-w2434112","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6ebaa466-d9a9-48d6-b882-66b8a75d76de","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:21:04.513579Z","changedTime":"2021-11-29T23:31:07.0592672Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:21:04.5602201Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:21:15.6611706Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7875149","name":"e2e-test-w7875149","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b0fcdfc8-3aa5-4be9-917f-ad9329da3990","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:21:57.136968Z","changedTime":"2021-11-29T23:32:17.9253461Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:21:57.1749325Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:22:08.6271858Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3242529","name":"e2e-test-w3242529","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a5b25477-581b-492f-b3c9-1cd8fd2c3a5d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T19:29:03.2851269Z","changedTime":"2021-11-29T23:39:23.0803865Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-11-29T19:29:03.3441566Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T19:29:14.7642927Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7301010","name":"e2e-test-w7301010","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d01bb353-fe5c-4664-9fff-3a6ed4494550","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-29T20:14:07.3519283Z","changedTime":"2021-11-30T00:24:30.5174775Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-29T20:14:08.1194402Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-29T20:14:19.8674907Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8424849","name":"e2e-test-w8424849","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5ff957f9-824f-41c9-ad7a-0dea8d82d647","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T00:20:22.227195Z","changedTime":"2021-11-30T04:30:44.391078Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-11-30T00:20:23.1146634Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T00:20:34.9803578Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-33","name":"ricardoe-deltest-33","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"28939c37-7a9d-4037-a319-486dc2714db3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T21:59:52.3876555Z","changedTime":"2021-12-01T02:09:56.7715579Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-11-30T21:59:53.1436259Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T22:02:32.2278176Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-34","name":"ricardoe-deltest-34","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"3098f995-4098-422a-98e0-365c181a8a99","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T22:05:36.792899Z","changedTime":"2021-12-01T04:02:10.58538Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-11-30T22:05:37.7329034Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T22:08:32.9800547Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-381","name":"ricardoe-deltest-381","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"f5e40c37-3b37-4f85-ad30-60a4fb559316","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T22:44:10.7980026Z","changedTime":"2021-12-01T03:54:15.696133Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-11-30T22:44:11.4343547Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T22:46:27.719205Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-382","name":"ricardoe-deltest-382","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"c76d7f51-743b-4751-9232-757aa0f61dcf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T22:45:25.6657669Z","changedTime":"2021-12-01T02:55:31.3565031Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-11-30T22:45:26.4906408Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T22:47:42.6380251Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-383","name":"ricardoe-deltest-383","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"1ba3c2d8-976d-44da-8b03-cbe6c9d21660","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T22:47:40.2893808Z","changedTime":"2021-12-01T02:57:45.2098087Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-11-30T22:47:41.2048934Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T22:49:57.8262412Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-deltest-384","name":"ricardoe-deltest-384","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"a5c120b8-53af-4b5f-88e3-f081025603a5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-11-30T22:49:04.71835Z","changedTime":"2021-12-01T02:59:09.5425482Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-11-30T22:49:05.6305722Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-30T22:51:33.8840286Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5821279","name":"e2e-test-w5821279","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"012ac8f3-df01-453a-8503-769910333492","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-03T22:32:17.3507745Z","changedTime":"2021-12-04T02:59:39.4956444Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-03T22:32:18.4454267Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-03T22:32:30.4885577Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/newworkspacealchocro","name":"newworkspacealchocro","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c0e36373-6730-4ef8-b5cc-f4574f2f02e9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-06T21:42:50.2215224Z","changedTime":"2021-12-07T02:05:46.1545647Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-12-06T21:42:50.7460926Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-06T21:46:32.597632Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocronewworkspace","name":"alchocronewworkspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cad54f37-3424-43dd-9d94-405311b2d66b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-06T21:47:56.2755818Z","changedTime":"2021-12-07T01:58:00.0808281Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-12-06T21:47:56.7360781Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-06T21:56:34.4025223Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/caiesdjkafdasfcv","name":"caiesdjkafdasfcv","type":"Microsoft.Quantum/Workspaces","location":"westcentralus","identity":{"principalId":"ab9fac72-2ad7-4480-a8ef-1e8538bf3bed","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-06T22:19:12.4800151Z","changedTime":"2021-12-07T02:29:15.707932Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-12-06T22:19:13.0035204Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-06T22:19:24.655576Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/aaaaaaaaaaa","name":"aaaaaaaaaaa","type":"Microsoft.Quantum/Workspaces","location":"westcentralus","identity":{"principalId":"fe2b26d0-0935-4de4-af71-27b3223954b4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-06T22:21:08.4104909Z","changedTime":"2021-12-07T17:22:45.7983192Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-12-06T22:21:09.0113367Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-07T17:12:36.6410749Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3550672","name":"e2e-test-w3550672","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cf711001-6f5e-47d1-8646-7d87c8b1921c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-07T03:49:38.4698949Z","changedTime":"2021-12-07T07:59:44.6140031Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-07T03:49:39.3276489Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-07T03:49:50.8109751Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4120206","name":"e2e-test-w4120206","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2d7448f7-f57b-45af-8900-7e068fccda37","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-08T03:01:40.9648593Z","changedTime":"2021-12-08T09:05:37.9560468Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-08T03:01:41.7029575Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-08T03:01:53.2264744Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3124944","name":"e2e-test-w3124944","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6b96073f-d8a9-4dec-9e31-d986fd0ebd77","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-08T23:39:10.9884233Z","changedTime":"2021-12-09T03:49:17.5739855Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-08T23:39:12.0144124Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-08T23:39:23.3816353Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3909585","name":"e2e-test-w3909585","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7de13c8f-dada-4521-98b1-689fd8605e70","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-08T23:57:49.1577734Z","changedTime":"2021-12-09T04:08:11.0247659Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-08T23:57:49.6522239Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-08T23:58:01.1431035Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1268510","name":"e2e-test-w1268510","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"65017e5e-af56-46aa-81cc-69392b2477c4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T00:15:51.858697Z","changedTime":"2021-12-09T04:26:15.8244937Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T00:15:52.7641252Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T00:16:04.8999526Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7663672","name":"e2e-test-w7663672","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c554b4f8-5933-466e-b8ab-8235b23685bc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T04:30:48.2846062Z","changedTime":"2021-12-09T09:05:39.1892099Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T04:30:49.3605617Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T04:31:01.490172Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3400453","name":"e2e-test-w3400453","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"18ee497f-572e-4e01-84e9-5ffcf0d20ee5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:04:30.0028598Z","changedTime":"2021-12-09T23:02:04.4315668Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:04:30.8660384Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:04:42.8154391Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2798711","name":"e2e-test-w2798711","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"057ff8db-28bc-423f-b288-90ca4963e5d1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:28:56.3076109Z","changedTime":"2021-12-09T21:39:17.8979458Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:28:57.0971035Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:29:08.9570677Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5852082","name":"e2e-test-w5852082","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7ad68f6f-8284-4cd6-90bd-5f5b53788492","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:29:38.3787826Z","changedTime":"2021-12-09T22:39:40.90506Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:29:38.8370141Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:29:50.040925Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2943174","name":"e2e-test-w2943174","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f5216481-d6e3-4a12-ac52-05c736bf9d40","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T17:51:21.9040016Z","changedTime":"2021-12-09T22:01:28.9192599Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T17:51:23.4181811Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T17:51:35.6792135Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3490822","name":"e2e-test-w3490822","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5b170622-349f-4b9b-bdfe-f7bd5312bfce","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T18:13:52.3915697Z","changedTime":"2021-12-09T22:23:58.1941726Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T18:13:53.5773516Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T18:14:05.334819Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5343297","name":"e2e-test-w5343297","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"30bd7209-52ea-4424-937c-888d0eb5f3b2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T18:13:58.010279Z","changedTime":"2021-12-09T23:24:02.382978Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T18:13:58.7613952Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T18:14:10.6198278Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5357218","name":"e2e-test-w5357218","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e4bff9b2-aad2-4036-84c9-54c5a7956992","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T19:13:39.9593672Z","changedTime":"2021-12-09T23:24:04.2376062Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T19:13:41.2428804Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T19:13:53.464273Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7145824","name":"e2e-test-w7145824","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"61277803-fbb2-404c-8340-6da4f7ace41d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T19:48:07.8957778Z","changedTime":"2021-12-10T00:58:10.7812653Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T19:48:08.5686182Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T19:48:20.2215992Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7353592","name":"e2e-test-w7353592","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2eb6a336-fb74-49bb-a12a-45fc1c76ecef","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-09T19:58:40.0174097Z","changedTime":"2021-12-10T00:09:02.1761746Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-12-09T19:58:40.6876539Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-09T19:58:52.9880512Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-b76dd123-959f-4540-9b00-82ed39eafc86","name":"ws-b76dd123-959f-4540-9b00-82ed39eafc86","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"a30a2690-044e-4470-93f5-6f4ad1ba7f61","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-19T18:47:53.827657Z","changedTime":"2022-01-19T22:57:58.3604175Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-01-19T18:47:54.5187413Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-19T18:48:06.5682233Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-munichre","name":"frtibble-munichre","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"ba7c3d3e-703a-48bd-8603-d65c67bb098b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-12-15T10:01:15.5126256Z","changedTime":"2021-12-15T14:11:24.1741669Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2021-12-15T10:01:16.3568472Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-15T10:01:29.5910382Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azure-sdk-test-rg/providers/Microsoft.Quantum/Workspaces/azure-sdk-test-aqw","name":"azure-sdk-test-aqw","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"5fcc58df-a5bb-4c11-9942-2366542ff597","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-14T15:34:05.2145405Z","changedTime":"2022-04-05T17:42:59.4375737Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"vitorcia@microsoft.com","createdByType":"User","createdAt":"2022-01-14T15:34:05.6734882Z","lastModifiedBy":"vitorcia@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-05T17:31:04.0683092Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w3089483","name":"e2e-test-w3089483","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"b386f67a-0158-4b13-bf5c-cbe2ee407908","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-04T23:39:31.5990433Z","changedTime":"2022-01-05T03:49:52.8280282Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-04T23:39:32.2612319Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-04T23:39:43.9911718Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w9313082","name":"e2e-test-w9313082","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"7a34b608-172f-42d5-b939-9ad558e5ace0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T00:18:14.1157163Z","changedTime":"2022-01-05T04:28:33.3741998Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T00:18:14.4828531Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T00:18:25.9756704Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w5737629","name":"e2e-test-w5737629","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4d4ac006-1bb8-4ed4-80ef-bb101f3ca503","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T00:25:28.8769615Z","changedTime":"2022-01-05T04:35:47.4850389Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T00:25:29.2958861Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T00:25:40.4525838Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w4493697","name":"e2e-test-w4493697","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"6a602b72-82cd-401a-88be-0cfffe3c9ef4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T01:09:11.8385707Z","changedTime":"2022-01-05T05:19:36.8728501Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T01:09:13.0944561Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T01:09:25.8923664Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w8797519","name":"e2e-test-w8797519","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"b96cb40c-0221-440b-aef5-3ddc02a06053","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T23:07:55.2575324Z","changedTime":"2022-01-06T03:18:17.1695294Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T23:07:55.9663325Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T23:08:07.4932361Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w5717126","name":"e2e-test-w5717126","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"871ce64b-c0cd-421d-ac58-be67732a44dc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T23:27:31.0995854Z","changedTime":"2022-01-06T03:37:54.7553373Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T23:27:32.462869Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T23:27:44.4107048Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w5419923","name":"e2e-test-w5419923","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"8eafe8b8-afad-42f4-9f05-1044ccc1a198","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-11T23:53:01.7737082Z","changedTime":"2022-01-12T04:08:01.8723946Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-11T23:53:02.3963086Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-11T23:53:13.7052518Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w5734115","name":"e2e-test-w5734115","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"cb5764be-353e-4b29-b195-b10e4323e4f4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T00:35:20.5003842Z","changedTime":"2022-01-12T04:45:27.0190633Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T00:35:21.5988116Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T00:35:33.516894Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-private-2","name":"frtibble-fleetmgmt-private-2","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"3eba88fc-d82a-47be-aade-32c1c68f2539","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T13:19:20.6595867Z","changedTime":"2022-01-12T17:29:24.3003867Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-12T13:19:21.0895957Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T13:19:33.1187272Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-private-3","name":"frtibble-fleetmgmt-private-3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"6f027b9a-8f71-42c9-a46a-5484387798ea","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T17:18:36.1866146Z","changedTime":"2022-01-12T21:28:40.4487117Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-12T17:18:37.0544635Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T17:18:48.3765623Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w4757802","name":"e2e-test-w4757802","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1e8c6ca3-82a9-49ac-a544-3e6cf6a22a77","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T19:17:55.6366041Z","changedTime":"2022-01-12T23:28:25.072168Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T19:17:55.9176809Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T19:18:15.859301Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w1843186","name":"e2e-test-w1843186","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"86f850b2-38bb-4d39-a4d1-2a393f3227a6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T21:44:08.8262398Z","changedTime":"2022-01-14T02:54:12.5481342Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T21:44:10.2955243Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T21:44:22.2428758Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/fleet","name":"fleet","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1cd919a9-5f80-4394-bd78-7ecd54bdaa16","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T22:14:55.8590401Z","changedTime":"2022-03-04T19:08:16.9435072Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2022-01-13T22:14:56.3755679Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T22:15:08.8916104Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w3044807","name":"e2e-test-w3044807","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"b0e4a4ff-9f90-4e2b-ab42-828ca069941e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T22:59:24.6656273Z","changedTime":"2022-01-14T03:09:47.4962775Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T22:59:25.2358955Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T22:59:36.9680268Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w4222662","name":"e2e-test-w4222662","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c4004c8d-0502-425a-abdf-44c85b6bdbd3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T23:15:50.3209515Z","changedTime":"2022-01-14T03:25:54.2246203Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T23:15:50.8488343Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T23:16:02.6077713Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo16","name":"demo16","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1980d46b-b33d-4dc6-b3cc-6a07772f1d9f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-28T21:34:25.105085Z","changedTime":"2022-04-30T23:49:47.9282901Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2022-01-28T21:34:25.3179054Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-30T23:38:25.636179Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo-sim","name":"demo-sim","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9f1e6bb4-9785-41e2-b70e-3f1b127cd47e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-28T23:18:34.6590352Z","changedTime":"2022-03-01T18:06:20.2959384Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2022-01-28T23:18:34.8885124Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-01T17:56:13.8011097Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5253669","name":"e2e-test-w5253669","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"691bbfbe-5c7e-4aa4-9391-ce266a27e404","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-04T22:38:35.7142728Z","changedTime":"2022-01-05T02:48:54.675188Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-04T22:38:36.0641894Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-04T22:38:47.2512664Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8901700","name":"e2e-test-w8901700","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"172c722f-27b0-45e2-a17f-b63cd7df3bcc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T06:31:07.8617803Z","changedTime":"2022-01-05T10:46:31.6090674Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T06:31:08.8659592Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T06:31:20.6644671Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8019232","name":"e2e-test-w8019232","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d897a3d1-02b2-4cc9-997f-d526ce6160df","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T06:35:46.0321044Z","changedTime":"2022-01-05T10:46:08.7976157Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T06:35:47.3420898Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T06:35:58.9770511Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5493261","name":"e2e-test-w5493261","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e7310df3-b1fd-462e-b986-023fbd44c4f8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-05T07:13:34.9191105Z","changedTime":"2022-01-05T11:23:39.5389526Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-05T07:13:35.3123037Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-05T07:13:46.7897722Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3529287","name":"e2e-test-w3529287","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1efd991c-ac51-4246-8ccc-659eb43bcff9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-06T02:24:59.5348333Z","changedTime":"2022-01-06T06:35:01.8224318Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-06T02:24:59.6501444Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-06T02:25:11.2618022Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5712230","name":"e2e-test-w5712230","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a5e36428-17f2-4728-933c-ab130d931795","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-06T02:45:50.3213712Z","changedTime":"2022-01-06T06:55:55.6595864Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-06T02:45:51.0615937Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-06T02:46:02.8523438Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8794959","name":"e2e-test-w8794959","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"dffd7c33-9a53-4085-9873-e0d8877dd3a8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-06T05:05:36.902245Z","changedTime":"2022-01-06T09:15:59.8972665Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-06T05:05:37.9334513Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-06T05:05:51.5104505Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5212893","name":"e2e-test-w5212893","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"01951b34-8ad8-437a-b4c9-fe63eb3e83d2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-07T19:59:17.7667235Z","changedTime":"2022-01-08T00:09:39.8566671Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-07T19:59:18.9897094Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-07T19:59:30.873895Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1209508","name":"e2e-test-w1209508","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"3adfe632-7e2b-471d-bac5-3188b08eaacf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-07T20:01:13.8822017Z","changedTime":"2022-01-08T00:11:20.4670308Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-07T20:01:14.6527066Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-07T20:01:26.1147577Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1856752","name":"e2e-test-w1856752","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"bccd1d59-6641-4ba8-8147-52e43b5395b2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-07T22:31:56.1196556Z","changedTime":"2022-01-08T02:42:15.9308523Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-07T22:31:56.4132583Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-07T22:32:07.9626589Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8729214","name":"e2e-test-w8729214","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8bac18dc-e16f-4351-8066-0a692d846701","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-10T19:48:29.1573176Z","changedTime":"2022-01-11T00:58:32.0187765Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-10T19:48:30.0963101Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-10T19:48:41.9011226Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8278700","name":"e2e-test-w8278700","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c147c39e-2f85-4cd5-97a1-fc358cec8c53","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-10T20:53:40.2006841Z","changedTime":"2022-01-11T01:03:58.9015895Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-10T20:53:40.2279457Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-10T20:53:51.474393Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8615116","name":"e2e-test-w8615116","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e12e0792-7b97-45fb-b86f-d65d056304b5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-11T22:19:42.0962035Z","changedTime":"2022-01-12T04:09:58.7768103Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-11T22:19:43.2660596Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-11T22:19:55.8778969Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w3551380","name":"e2e-test-w3551380","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"121346fd-511a-4895-985c-ad808ba2231a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-11T22:58:58.9067103Z","changedTime":"2022-01-12T04:09:17.4142098Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-11T22:58:58.9397533Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-11T22:59:10.0671409Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7393275","name":"e2e-test-w7393275","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6191728e-d0c4-4e53-bf1d-aa2f3a59c72f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-11T23:02:14.0418013Z","changedTime":"2022-01-12T04:12:17.3820494Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-11T23:02:14.9268733Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-11T23:02:26.4138574Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5049998","name":"e2e-test-w5049998","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8a8e9a6b-95e1-425a-b5d5-792564e63199","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T00:40:04.5538135Z","changedTime":"2022-01-12T04:50:23.2913029Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T00:40:04.5840299Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T00:40:16.112013Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w1245910","name":"e2e-test-w1245910","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f05c5a13-3f51-4ce5-9e06-64844eb5b716","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-18T23:02:47.6232392Z","changedTime":"2022-01-19T03:13:06.7994348Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-18T23:02:47.6597228Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-18T23:02:59.2679886Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w5156975","name":"e2e-test-w5156975","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f5031b96-85d3-4559-abd4-876e5393147c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-19T18:20:24.428238Z","changedTime":"2022-01-19T22:30:46.8425682Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-19T18:20:25.0967258Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-19T18:20:36.8060859Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-eastus2euap/providers/Microsoft.Quantum/Workspaces/e2e-test-w5574785","name":"e2e-test-w5574785","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"ecc4d3f2-c3f2-4d25-8f0b-1cfa71efdd61","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-19T18:54:31.7903767Z","changedTime":"2022-01-19T23:04:35.2139014Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-19T18:54:32.8726455Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-19T18:54:45.0385682Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/TestWithFreeProviders","name":"TestWithFreeProviders","type":"Microsoft.Quantum/Workspaces","location":"westeurope","identity":{"principalId":"e251af26-d86f-4830-a7e8-c13db2268d42","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T20:30:06.8794453Z","changedTime":"2022-01-22T00:40:13.7353595Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2022-01-21T20:30:07.344529Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T20:34:04.8148074Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/workspacecanaryissue","name":"workspacecanaryissue","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e1d8800a-025d-40b5-8283-a17e0837a513","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T18:30:28.3098902Z","changedTime":"2022-03-03T22:40:30.9617108Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2022-03-03T18:30:28.6147911Z","lastModifiedBy":"georgenm@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-03T18:30:28.6147911Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/honeywellissue2","name":"honeywellissue2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e239e1dc-b999-47d6-9cf1-39250ee6762c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T23:43:44.4267557Z","changedTime":"2022-03-04T03:53:47.0531237Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2022-03-03T23:43:44.7404486Z","lastModifiedBy":"georgenm@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-03T23:43:44.7404486Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-private-1","name":"frtibble-fleetmgmt-private-1","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"283c7ef4-fdcb-4ecd-ab2e-b4a3d77e6fc6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T11:42:43.3861307Z","changedTime":"2022-01-12T15:52:45.4752512Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-12T11:42:43.6878507Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T11:42:55.3258191Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7737143","name":"e2e-test-w7737143","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c57dfa2f-8b59-47d3-ab19-c2515a7cc9db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T19:47:40.2039583Z","changedTime":"2022-01-12T23:58:01.1375115Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T19:47:41.3561573Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T19:47:52.9980354Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w7867702","name":"e2e-test-w7867702","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1e32bb47-e4ce-4b04-842a-a9c20a003546","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T22:38:44.5110308Z","changedTime":"2022-01-13T02:49:04.284593Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T22:38:44.8790204Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T22:38:56.6200874Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9426449","name":"e2e-test-w9426449","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"3f520f2f-5961-4a31-8a45-94a14594ad81","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T22:44:51.1779124Z","changedTime":"2022-01-13T02:55:11.1377519Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-12T22:44:51.2348051Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T22:45:03.0855857Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5499410","name":"e2e-test-w5499410","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"94a3fd70-b8cf-479a-9ce1-e73b91b4b47f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-12T22:48:06.7146649Z","changedTime":"2022-01-13T02:58:28.1065208Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-12T22:48:06.7657289Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-12T22:48:19.3654277Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1159093","name":"e2e-test-w1159093","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"bff55d0a-5fac-4693-9a38-9dc9b465d139","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T01:02:51.4813928Z","changedTime":"2022-01-13T05:13:12.6284182Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T01:02:52.4287675Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T01:03:04.1279902Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5212937","name":"e2e-test-w5212937","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"284ef7e3-2b8b-4231-bff5-ca697582fb36","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T05:06:41.28402Z","changedTime":"2022-01-13T09:16:43.5330356Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T05:06:41.3469862Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T05:06:52.6212486Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1067893","name":"e2e-test-w1067893","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"31577564-fccd-4b0a-8236-d95f88ea657f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T07:38:54.3801754Z","changedTime":"2022-01-13T11:49:16.1891464Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T07:38:55.257785Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T07:39:06.6749356Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/anraman-fleet-canary","name":"anraman-fleet-canary","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"dedaf0bf-3ed9-4dc4-97eb-5feb2904b488","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T19:01:07.7045377Z","changedTime":"2022-01-13T23:11:11.0343933Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anraman@microsoft.com","createdByType":"User","createdAt":"2022-01-13T19:01:07.7443649Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T19:01:20.2545408Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2333905","name":"e2e-test-w2333905","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"831060c3-1ac8-43d8-b33a-d0e0571ecc5b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T19:58:10.3973706Z","changedTime":"2022-01-14T00:08:13.6267619Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-13T19:58:10.6652944Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T19:58:22.1809677Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hgavranovic-dev-rg/providers/Microsoft.Quantum/Workspaces/azure-quantum-ws-hg","name":"azure-quantum-ws-hg","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"b4de689a-844b-469c-adb9-33b0432ea285","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-13T22:09:11.5247596Z","changedTime":"2022-01-14T02:19:22.6142077Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"hgavranovic@microsoft.com","createdByType":"User","createdAt":"2022-01-13T22:09:12.3612565Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-13T22:09:24.3413879Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/ws-aqua-live-tests-westus2","name":"ws-aqua-live-tests-westus2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"228768a8-5cfa-4e18-995c-967829cfadb8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-14T02:57:34.8916485Z","changedTime":"2022-02-08T01:51:03.7878893Z","provisioningState":"Succeeded","systemData":{"createdBy":"b6f9942c-b71a-4a54-9ef1-dd0edcbaabe6","createdByType":"Application","createdAt":"2022-01-14T02:57:35.1035524Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T01:40:55.9750442Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurequantum-ecad00d98f9f41cab9e300/providers/Microsoft.Quantum/Workspaces/maseol-bugbash-0218-4","name":"maseol-bugbash-0218-4","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"900cf622-0b20-4afa-b23f-3f1d5890e626","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-18T21:57:10.1730968Z","changedTime":"2022-02-19T02:07:12.7062691Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2022-02-18T21:57:10.5127446Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-18T22:00:27.9810028Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1229760","name":"e2e-test-w1229760","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"01e04759-2626-4e39-ba71-ebbe5389f143","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-19T23:16:59.6468119Z","changedTime":"2022-01-20T04:05:33.3264939Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-19T23:16:59.6802026Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-19T23:17:10.7793869Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5807181","name":"e2e-test-w5807181","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2d6c8196-0926-4feb-acf0-e6bd80f94283","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T00:11:48.6756802Z","changedTime":"2022-01-20T05:00:17.4381936Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-20T00:11:49.4557896Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T00:12:01.0743585Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8274633","name":"e2e-test-w8274633","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a8ea1814-7a46-4195-81bd-bd37f6b9bdb5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T01:06:01.8452728Z","changedTime":"2022-01-20T05:16:20.8124023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T01:06:01.8873839Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T01:06:12.9020792Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2437541","name":"e2e-test-w2437541","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"76b98937-3be9-4a83-9f43-56c54531d916","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T02:19:07.8952451Z","changedTime":"2022-01-20T06:29:29.7655077Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-20T02:19:08.8432913Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T02:19:20.7929785Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w6958182","name":"e2e-test-w6958182","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"bc8099c8-3090-415d-962d-be71a3676e91","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T02:35:51.7000314Z","changedTime":"2022-01-20T06:46:12.3375168Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-20T02:35:52.543195Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T02:36:04.2540082Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2007341","name":"e2e-test-w2007341","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d0c61ba7-086f-4ca1-be61-13cb6042fb78","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T21:55:53.9882673Z","changedTime":"2022-01-21T02:06:14.0175836Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T21:55:54.0368654Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T21:56:05.4083033Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1893077","name":"e2e-test-w1893077","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"47426eb5-bd91-4338-8fc0-a51e4b2e9fb3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T22:06:36.2572204Z","changedTime":"2022-01-21T02:16:55.6998646Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T22:06:36.2862702Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T22:06:47.1357844Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5768798","name":"e2e-test-w5768798","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5b1ae0eb-0afb-450f-b389-aab2148164a3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-20T22:06:42.3799395Z","changedTime":"2022-01-21T02:16:44.0439132Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-20T22:06:42.4550954Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-20T22:06:53.5107701Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-bugbash","name":"frtibble-fleetmgmt-bugbash","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"02162d06-2c87-48c0-8d44-5fc826cf093c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T11:29:29.0641335Z","changedTime":"2022-01-21T15:39:33.3734347Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-21T11:29:29.8263398Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T11:57:12.3530991Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4232913","name":"e2e-test-w4232913","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"24c1cc56-666a-4eea-b61c-3d0c761ff566","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T19:38:33.8812928Z","changedTime":"2022-01-21T23:48:35.8387081Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T19:38:33.9751016Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T19:38:45.2997693Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w4232941","name":"e2e-test-w4232941","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5024f174-776a-411f-bcc7-e6475e25387f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T19:38:38.4023258Z","changedTime":"2022-01-21T23:48:39.5720882Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T19:38:38.4316644Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T19:38:49.830419Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/autoaddbugbashalchocro","name":"autoaddbugbashalchocro","type":"Microsoft.Quantum/Workspaces","location":"ukwest","identity":{"principalId":"f3563d3a-4bf5-4001-ba9b-80a42f8873e4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T21:23:14.9761704Z","changedTime":"2022-01-22T01:33:24.5318213Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2022-01-21T21:23:15.0307148Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T21:25:35.8202778Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/v-wjones-workspace-from-cli-arm-template","name":"v-wjones-workspace-from-cli-arm-template","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"17edc1ba-e0c6-4140-ac7f-e469416bfbe7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T21:28:01.6040509Z","changedTime":"2022-01-22T01:38:02.9974227Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T21:28:01.6568525Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T21:28:12.525235Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1059928","name":"e2e-test-w1059928","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ce03755f-31ff-4698-b5b5-9da0fdcb0c31","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T21:40:54.914088Z","changedTime":"2022-01-22T01:51:15.9425958Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T21:40:54.9568789Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T21:41:07.2806516Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4618670","name":"e2e-test-w4618670","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"afc87737-f18b-46aa-adb3-1587b3905be4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T21:41:01.0622467Z","changedTime":"2022-01-22T01:51:03.6255824Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T21:41:01.1019933Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T21:41:13.4428995Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9443226","name":"e2e-test-w9443226","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"2b7dd706-241f-4ae2-b5b0-25d794a3ce76","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:08:55.7959961Z","changedTime":"2022-01-22T02:19:18.3744493Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:08:55.844185Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:09:10.0312525Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4781667","name":"e2e-test-w4781667","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"1d957a56-a328-4923-85b0-5237863b9831","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:09:04.2562201Z","changedTime":"2022-01-22T02:19:05.8644331Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:09:04.3171766Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:09:15.8200246Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8536616","name":"e2e-test-w8536616","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"83788073-5957-4086-ac34-d715a053100a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:49:11.8778031Z","changedTime":"2022-01-22T02:59:30.4451247Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:49:11.9118123Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:49:23.4430335Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4713038","name":"e2e-test-w4713038","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8fdd2278-9262-42a7-982f-74e45cfa6476","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:49:31.3772841Z","changedTime":"2022-01-22T02:59:32.6355697Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:49:31.4406091Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:49:42.1620106Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4296812","name":"e2e-test-w4296812","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9f38959c-3ba0-4cc6-96ee-3acf5aead0e8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:50:11.7369276Z","changedTime":"2022-01-22T04:05:33.7217323Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:50:11.7959011Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:50:22.9071109Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6050482","name":"e2e-test-w6050482","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"728fde73-9a81-4e2e-846f-196f333b467b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T22:50:16.3017106Z","changedTime":"2022-01-22T04:05:33.7396042Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-21T22:50:16.3509996Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T22:50:27.5971851Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8457338","name":"e2e-test-w8457338","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eabbc0f6-3fb6-424f-a441-84f8c5ab827d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T23:27:54.3904232Z","changedTime":"2022-01-22T03:38:02.5197076Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T23:27:55.4407299Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T23:28:07.4310182Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5028374","name":"e2e-test-w5028374","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"47f6f389-6216-441c-b390-a9aab4caac81","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-21T23:28:06.0800557Z","changedTime":"2022-01-22T03:38:07.37135Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-21T23:28:06.3568244Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-21T23:28:17.2561535Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8615046","name":"e2e-test-w8615046","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f95935a5-ba2d-4e20-99f0-979d54c3550a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T00:11:15.9768935Z","changedTime":"2022-01-22T04:21:36.2546169Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T00:11:16.8957274Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T00:11:29.1554241Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8169271","name":"e2e-test-w8169271","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8ec1eefa-8f60-4c4e-ab72-5ce9506f52e4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T00:11:26.8553265Z","changedTime":"2022-01-22T04:21:30.3992556Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T00:11:27.1389641Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T00:11:38.5123534Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9682824","name":"e2e-test-w9682824","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b55acd62-bf7b-466f-a7bb-77aef3d68fad","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T01:36:11.0326262Z","changedTime":"2022-01-22T05:46:32.7124614Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T01:36:11.6990581Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T01:36:23.2260917Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2367374","name":"e2e-test-w2367374","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9e0dfbe7-70f3-485e-871c-03df8144fff0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T01:36:21.7351754Z","changedTime":"2022-01-22T05:46:24.6810195Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T01:36:21.9260787Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T01:36:33.7484696Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5285906","name":"e2e-test-w5285906","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0c8199e1-818b-41e7-a5e4-a8153a06633c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-22T02:53:53.2113515Z","changedTime":"2022-01-22T07:04:16.8745044Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-22T02:53:53.9244155Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-22T02:54:06.5389167Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-fleetmgmt-bugbash-2","name":"frtibble-fleetmgmt-bugbash-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"87a93623-ee5f-4d0b-a5ed-fd20b7ee5565","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-24T12:49:44.0242243Z","changedTime":"2022-01-24T16:59:46.3863631Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-24T12:49:44.8795176Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-24T13:10:07.3746777Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-kpmg-1","name":"frtibble-kpmg-1","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eca289f2-8b1c-43c3-845e-61c2834ce283","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-24T14:30:19.7431261Z","changedTime":"2022-05-24T09:52:33.1053808Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-01-24T14:30:20.4049392Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-24T09:41:02.3902565Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5401556","name":"e2e-test-w5401556","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f8b0f55e-0c90-460d-b759-61430ee5f3df","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-25T17:33:07.5911571Z","changedTime":"2022-01-25T22:05:32.6304858Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-25T17:33:07.6527558Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-25T17:33:21.6329029Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w9055305","name":"e2e-test-w9055305","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c715a8d4-1770-489e-b2b9-f1c01704ce18","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-25T17:33:22.1801087Z","changedTime":"2022-01-25T21:43:23.7991807Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-25T17:33:22.241869Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-25T17:33:33.3331095Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/anraman-fm-demo","name":"anraman-fm-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b96fe067-ebb3-43d8-ba39-02a40160a5b6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T14:28:54.0027093Z","changedTime":"2022-01-26T18:39:00.1057374Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anraman@microsoft.com","createdByType":"User","createdAt":"2022-01-26T14:28:54.0653202Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T14:29:09.4829169Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9641698","name":"e2e-test-w9641698","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"feee8719-8d05-4fb8-8971-365ed51927e1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T20:01:09.0220886Z","changedTime":"2022-01-27T00:11:36.4704577Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-26T20:01:10.398559Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T20:01:25.6588715Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9304177","name":"e2e-test-w9304177","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a78df5bf-02f6-4401-a126-dbe607cefe0a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T21:13:57.1940506Z","changedTime":"2022-01-27T01:26:39.1760253Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-26T21:13:58.1258651Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T21:14:13.6570859Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/temp-1nk5fpv1-zje","name":"temp-1nk5fpv1-zje","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"34f9d873-8780-4b86-b83d-fb568633e943","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-26T21:20:51.9781669Z","changedTime":"2022-01-27T01:30:54.4028382Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-26T21:20:52.2712881Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-26T21:21:03.4493592Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5854317","name":"e2e-test-w5854317","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"092fb1ea-bc25-449a-ba07-a67a38d1193e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-27T01:03:19.785783Z","changedTime":"2022-01-27T05:13:40.5387426Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-27T01:03:20.5526005Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-27T01:03:32.1668014Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9860091","name":"e2e-test-w9860091","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cf833190-ba79-4a9b-91dc-10f280e1fc34","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-27T02:28:03.6260846Z","changedTime":"2022-01-27T06:38:26.0677282Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-27T02:28:04.6078745Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-27T02:28:16.3325346Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/temp-5wuslmng-bny","name":"temp-5wuslmng-bny","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d73471df-57c2-43e9-ba98-d8f2006cb02a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-27T02:29:25.5743997Z","changedTime":"2022-01-27T06:39:27.4653184Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-27T02:29:26.2732494Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-27T02:29:37.5535219Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/v-wjones-workspace-from-cli-01","name":"v-wjones-workspace-from-cli-01","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e044ebcb-c6eb-4e3f-bec9-8b708432f722","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-28T01:40:15.6236438Z","changedTime":"2022-01-28T19:44:49.6166676Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-01-28T01:40:15.667938Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-28T19:34:42.9350221Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8573030","name":"e2e-test-w8573030","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"291f07ac-8aae-4534-acf5-0cd89bb641eb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-01-29T01:31:02.4637509Z","changedTime":"2022-01-29T06:41:06.3497398Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-01-29T01:31:03.3525354Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-01-29T01:31:15.1473843Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/mblouin-quantinuum-test","name":"mblouin-quantinuum-test","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"cfd46962-ed77-4a6d-95aa-99288e207712","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-09T22:44:52.7881335Z","changedTime":"2022-02-10T02:54:55.1475669Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"mblouin@microsoft.com","createdByType":"User","createdAt":"2022-02-09T22:44:53.1670076Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-09T22:45:24.6240545Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/mblouin-quantinuum-canary","name":"mblouin-quantinuum-canary","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"57668ae0-39ca-4e57-9d87-ff9a8a7125d0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-09T23:37:55.2970309Z","changedTime":"2022-02-25T02:20:34.1646626Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"mblouin@microsoft.com","createdByType":"User","createdAt":"2022-02-09T23:37:55.4917857Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-25T02:10:28.5942069Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-3d8c5dd7-c4ba-4c1c-871f-5379f2f7cc15","name":"ws-3d8c5dd7-c4ba-4c1c-871f-5379f2f7cc15","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"02fe2e43-b159-407a-9196-2ee00ea8c3c8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-17T21:41:15.377813Z","changedTime":"2022-02-18T01:51:19.7437341Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-17T21:41:15.9569744Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-17T21:43:08.0801548Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-6d6b7834-1e34-4e5f-bcd8-520fdc2e2390","name":"ws-6d6b7834-1e34-4e5f-bcd8-520fdc2e2390","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4becc556-dfaf-4da7-b9cb-673e36c3d07b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-17T21:41:51.1087122Z","changedTime":"2022-02-18T01:51:56.0609086Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-17T21:41:51.7961232Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-17T21:43:23.991142Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-1a700e4a-3322-47da-babe-bda5439b1d2e","name":"ws-1a700e4a-3322-47da-babe-bda5439b1d2e","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4bba51d9-73eb-4b27-9602-9b74f836e6c7","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-17T21:45:11.5811685Z","changedTime":"2022-02-18T01:55:17.3672839Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-17T21:45:12.041554Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-17T21:46:57.9084554Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-8a441e71-de21-4632-868c-335a027a65fc","name":"ws-8a441e71-de21-4632-868c-335a027a65fc","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"ca8674c4-f158-4993-a33e-4ca1483d55ab","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T18:19:45.7256185Z","changedTime":"2022-02-22T22:29:51.4424514Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T18:19:46.3685114Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T18:21:33.3079846Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-7d7078ec-f5cf-4824-bdad-d0124e3bd371","name":"ws-7d7078ec-f5cf-4824-bdad-d0124e3bd371","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"6c477f01-d2fc-44ea-96c5-1fee12c0f859","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T21:24:01.8633759Z","changedTime":"2022-02-23T01:34:14.4812034Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T21:24:02.4480424Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T21:26:05.5327214Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-b784f500-dc3c-429f-92cc-fe4173a3f1a6","name":"ws-b784f500-dc3c-429f-92cc-fe4173a3f1a6","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"67d8195b-8ca9-4ab1-bae6-b377182cdb34","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T21:43:07.7363776Z","changedTime":"2022-02-23T01:53:14.8669626Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T21:43:08.3026369Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T21:45:01.1022966Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-d19d0913-5fe5-4f82-bfc9-dfb91614a616","name":"ws-d19d0913-5fe5-4f82-bfc9-dfb91614a616","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"573d8d5f-5808-429a-99a2-b3c0dac62539","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T22:13:15.9957921Z","changedTime":"2022-02-23T02:23:20.8339359Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T22:13:16.6402264Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T22:15:07.2190842Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-ff62148c-61b0-4144-8460-54740919ce5e","name":"ws-ff62148c-61b0-4144-8460-54740919ce5e","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"720206b6-e04d-4544-a436-967f15844635","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T22:16:48.3091488Z","changedTime":"2022-02-23T02:26:52.8288872Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T22:16:48.9326928Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T22:18:33.3183303Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-d279b6c4-ebbc-4625-8604-ae1d59a43379","name":"ws-d279b6c4-ebbc-4625-8604-ae1d59a43379","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c8fe2700-7eb5-4308-9e39-72f422565df1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T23:21:21.4339663Z","changedTime":"2022-02-23T03:31:26.8017418Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T23:21:21.9942054Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T23:21:37.7611408Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-3804cbdc-3bcc-48cf-9e1b-7c5b9d846628","name":"ws-3804cbdc-3bcc-48cf-9e1b-7c5b9d846628","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"5c9c9cc1-7eb6-4c22-8222-ea0ee623524d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T23:24:06.9274513Z","changedTime":"2022-02-23T03:34:10.9357254Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T23:24:07.4999906Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T23:25:46.4281746Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-dad21160-bfe5-47d0-a6e4-b82bfe3d74e6","name":"ws-dad21160-bfe5-47d0-a6e4-b82bfe3d74e6","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"265c27c3-ed39-4cfd-9a88-fa88effac1cc","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T23:29:35.5141493Z","changedTime":"2022-02-23T03:39:39.8540597Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T23:29:36.0069836Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T23:31:16.3381286Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-35e0b789-22ab-4546-a126-dea584651029","name":"ws-35e0b789-22ab-4546-a126-dea584651029","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"9bca1ffd-770b-4bca-8c69-200e8f941d4a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T23:44:09.9168964Z","changedTime":"2022-02-23T03:54:15.6649271Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T23:44:10.3594296Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T23:45:41.7395978Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-c7b51b02-a248-4623-ac02-cbd8cee0a5b8","name":"ws-c7b51b02-a248-4623-ac02-cbd8cee0a5b8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"bb85ff33-6058-4f06-acdf-991e9bf48c2e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-22T23:51:19.8581429Z","changedTime":"2022-02-23T04:01:23.41046Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-22T23:51:20.4815342Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-22T23:53:01.5279482Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-d2993971-9210-4ae8-9e4e-cf4fe6ed6e7c","name":"ws-d2993971-9210-4ae8-9e4e-cf4fe6ed6e7c","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"8763da6e-62fa-4b3e-9417-6ce4a5253e53","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-23T00:01:05.579005Z","changedTime":"2022-02-23T04:11:09.9789074Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-23T00:01:06.060029Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-23T00:02:50.1064131Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-d1ccc4fb-6958-46cf-b601-d3418dfa1314","name":"ws-d1ccc4fb-6958-46cf-b601-d3418dfa1314","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"cd03829b-f717-4882-a73a-21ac9a9eb8c1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-23T16:58:35.6175516Z","changedTime":"2022-02-23T21:08:40.1829002Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-23T16:58:36.179005Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-23T17:01:18.8174148Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-a5375a91-9d1e-48c8-b968-c53da2f54785","name":"ws-a5375a91-9d1e-48c8-b968-c53da2f54785","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"a0b3c0ff-3bd6-4bc1-ad98-19ff37e1ef3b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-23T21:35:49.1538006Z","changedTime":"2022-02-24T01:45:53.4700553Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-23T21:35:49.5393829Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-23T21:37:36.2677719Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-b5f6c512-919c-4c1b-bf4f-afb121c625a8","name":"ws-b5f6c512-919c-4c1b-bf4f-afb121c625a8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"2a7f977f-4218-4123-89b1-cc59149e8055","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-25T17:35:39.9082149Z","changedTime":"2022-02-25T21:45:47.6397634Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-25T17:35:40.6044055Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-25T17:37:39.1589591Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-a411752b-7674-4e43-b1fe-6f488822bc28","name":"ws-a411752b-7674-4e43-b1fe-6f488822bc28","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"7be4cbf5-fa33-48d4-a0af-17095dc031b2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-25T17:47:53.0014399Z","changedTime":"2022-02-25T21:57:56.9858867Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-25T17:47:53.5195071Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-25T17:49:38.1387219Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-50062d71-5a70-4785-b316-cf100aab0543","name":"ws-50062d71-5a70-4785-b316-cf100aab0543","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"29b77164-1a74-4d8e-95eb-7abc47d4bad4","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-25T17:51:41.0210006Z","changedTime":"2022-02-25T22:01:48.8666209Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-25T17:51:41.4949301Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-25T17:55:02.4917443Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-c67316ed-a596-4977-994a-8aacd510cae0","name":"ws-c67316ed-a596-4977-994a-8aacd510cae0","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f68a487f-d551-4515-9368-ed06359b6aa5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-25T17:52:31.1980213Z","changedTime":"2022-02-25T22:02:36.3394031Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-25T17:52:31.6825368Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-25T17:54:15.1759555Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w9461874","name":"e2e-test-w9461874","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0a02dcdc-7e9c-4f7a-b160-f3e465776b2b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-07T23:26:00.0445446Z","changedTime":"2022-02-08T03:36:07.3673586Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-07T23:26:01.1436177Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-07T23:26:12.9580696Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w1575950","name":"e2e-test-w1575950","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"26788e7d-f689-4b71-a6f5-8d7780857f87","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T00:31:36.9023004Z","changedTime":"2022-02-08T04:41:56.0024874Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T00:31:37.1926973Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T00:31:48.4630553Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w8763155","name":"e2e-test-w8763155","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"719bb180-3314-47bd-9946-5bc3479f7ad0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T00:56:42.6418408Z","changedTime":"2022-02-08T05:06:48.7803731Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T00:56:43.5094932Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T00:56:55.2538805Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w5183728","name":"e2e-test-w5183728","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b6b025b7-f548-4619-ba6a-77ad353c1d30","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T01:31:55.3210785Z","changedTime":"2022-02-08T05:42:16.8463004Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T01:31:56.4638197Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T01:32:08.0209207Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-live-tests-westus2/providers/Microsoft.Quantum/Workspaces/e2e-test-w2419233","name":"e2e-test-w2419233","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"4ee2bbd6-9de6-47eb-8ba4-02181a1ffc75","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T01:48:15.9139099Z","changedTime":"2022-02-08T05:58:18.4754074Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-08T01:48:16.4209192Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T01:48:27.9321794Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/fleet-management-1","name":"fleet-management-1","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"708ec5d6-7e26-4f5f-a95c-7d05a54e9b48","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T13:27:49.8718747Z","changedTime":"2022-02-08T17:37:51.6216178Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-02-08T13:27:50.1961246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T13:34:10.0033522Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/fleet-management-2","name":"fleet-management-2","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0f02ea43-e3cf-49e8-9678-52a92c8ec12e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-08T13:36:14.9362447Z","changedTime":"2022-02-08T18:09:59.4835803Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-02-08T13:36:15.5414692Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-08T13:36:27.2521227Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/megbrow-testAQ","name":"megbrow-testAQ","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"a2d9dd44-5840-4ef0-ae52-fea254209f31","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T17:07:36.4256142Z","changedTime":"2022-03-03T21:17:38.4804837Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"megbrow@microsoft.com","createdByType":"User","createdAt":"2022-03-03T17:07:36.7254234Z","lastModifiedBy":"megbrow@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-03T17:07:36.7254234Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/megbrow-test-canary","name":"megbrow-test-canary","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"96c065b3-f1b5-4b62-8d1b-d80b1ffd96c3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T17:17:18.389365Z","changedTime":"2022-03-03T22:27:22.5022956Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"megbrow@microsoft.com","createdByType":"User","createdAt":"2022-03-03T17:17:18.8251151Z","lastModifiedBy":"megbrow@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-03T17:17:18.8251151Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/megbrowtesting-canary","name":"megbrowtesting-canary","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"deb67218-9e48-4cc0-b9e8-2427f3b906e1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T17:54:46.3597386Z","changedTime":"2022-03-03T22:04:49.8538291Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"megbrow@microsoft.com","createdByType":"User","createdAt":"2022-03-03T17:54:46.8224718Z","lastModifiedBy":"megbrow@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-03T17:54:46.8224718Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-149b4956-3888-49ad-8c57-8198bd522d76","name":"ws-149b4956-3888-49ad-8c57-8198bd522d76","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"7f6d5484-4c4b-4beb-8f2e-bed2223d65a9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T17:55:01.3594961Z","changedTime":"2022-02-28T22:05:06.2712093Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-02-28T17:55:02.0810557Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T17:56:45.8744662Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-cb7a286d-e5a2-484b-907b-573c4ee49f3e","name":"ws-cb7a286d-e5a2-484b-907b-573c4ee49f3e","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"04d00351-ec14-45a8-8488-85aad37e65fe","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-02T00:46:22.9179819Z","changedTime":"2022-03-02T04:56:29.4762269Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-02T00:46:23.7912728Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-02T00:46:36.2857459Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-3867c759-b998-4d9e-ab1e-84bf5cf7d83f","name":"ws-3867c759-b998-4d9e-ab1e-84bf5cf7d83f","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"9744bde0-86d5-4c47-9634-a4b25c3045ce","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T17:10:40.8043426Z","changedTime":"2022-03-03T21:21:33.2465721Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-03T17:10:41.5015445Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-03T17:11:02.4612278Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-4f007244-9133-44dc-87b7-79d2e705f78f","name":"ws-4f007244-9133-44dc-87b7-79d2e705f78f","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"7e1e5b5d-ecaf-4161-9e0f-2882d4e8cc5b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T17:13:38.1447512Z","changedTime":"2022-03-03T21:24:33.0510984Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-03T17:13:38.7153999Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-03T17:13:52.6284937Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-b18715e3-eb89-46a4-ba2c-af78435388c0","name":"ws-b18715e3-eb89-46a4-ba2c-af78435388c0","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"48a57027-f9c3-495e-9274-ced0238dd3e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-08T00:56:01.016557Z","changedTime":"2022-03-08T05:06:51.5869203Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-08T00:56:01.5815403Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-03-08T00:56:01.5815403Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-debug","name":"frtibble-debug","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6eac132d-380f-4441-bd69-49eb22653fa5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-15T13:27:30.50941Z","changedTime":"2022-02-15T17:37:32.8268507Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-02-15T13:27:31.2304406Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-15T13:27:44.5028783Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/temp-ln4dt4v4-llh","name":"temp-ln4dt4v4-llh","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"151d8072-9f6b-4c78-94c4-44dfafcafbdd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-16T17:23:16.5856604Z","changedTime":"2022-02-16T21:33:19.6353753Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2022-02-16T17:23:16.6372604Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-16T17:23:55.7115304Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocroworkspacecreditstest","name":"alchocroworkspacecreditstest","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"9c5b65cb-2f44-4bd8-a823-0f277244509b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-23T21:58:01.055397Z","changedTime":"2022-03-31T00:33:33.0066251Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2022-02-23T21:58:01.0869555Z","lastModifiedBy":"alchocro@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-31T00:21:39.8799773Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/Test4Fabrice","name":"Test4Fabrice","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"200f8a2f-c9dc-4d99-94ff-7f8b0d272b0e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-07T23:21:33.0965326Z","changedTime":"2022-05-23T19:34:13.855629Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2022-03-07T23:21:33.6362672Z","lastModifiedBy":"fabricfr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-23T19:23:47.8614916Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-demo-workspace","name":"frtibble-demo-workspace","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"e35dc771-4e0b-41c5-8968-45e9dd276f50","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T14:51:05.6726428Z","changedTime":"2022-05-06T16:24:41.5649369Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-02-28T14:51:06.298692Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-06T16:13:11.880811Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5508936","name":"e2e-test-w5508936","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"fbe63aa7-0330-4494-ae4b-42adb9a7fea3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:41:49.395258Z","changedTime":"2022-03-01T01:52:28.7964896Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:41:49.4636747Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:42:02.0531398Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w7158361","name":"e2e-test-w7158361","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cffcd6f4-e964-4e78-b221-505c27f9d144","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:44:10.2967485Z","changedTime":"2022-03-01T01:54:55.3652023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:44:10.3704855Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:44:23.1627947Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3470984","name":"e2e-test-w3470984","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"d4965f66-ee86-4408-b52c-619d0d509d79","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:45:13.8394458Z","changedTime":"2022-03-01T01:55:33.0390404Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:45:13.9178706Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:45:26.2202381Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5467513","name":"e2e-test-w5467513","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f43f3bc8-8d8e-4c8c-889a-f895344748ba","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T21:56:25.9991501Z","changedTime":"2022-03-01T02:07:07.4802023Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T21:56:26.0855962Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T21:56:40.7104134Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4622849","name":"e2e-test-w4622849","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a18ac1b3-ab06-49c2-9d2d-4ef3afcf0506","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:03:36.5072772Z","changedTime":"2022-03-01T02:14:18.06209Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:03:36.5970659Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:03:48.2812811Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1514389","name":"e2e-test-w1514389","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"67939fb6-571b-470d-b6fa-4d12eb440e33","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:04:57.8856512Z","changedTime":"2022-03-01T03:15:17.1317955Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:04:57.956569Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:05:09.4751749Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2937160","name":"e2e-test-w2937160","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6c6280aa-669f-416b-a611-3673c17ffe06","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:21:37.0003944Z","changedTime":"2022-03-01T02:32:18.1596246Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:21:37.0290534Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:21:50.2947901Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4151016","name":"e2e-test-w4151016","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"c688d082-467a-4fc7-b3e6-b1a872400904","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:23:51.5817767Z","changedTime":"2022-03-01T02:34:11.3342529Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:23:51.6543342Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:24:03.0651532Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2759052","name":"e2e-test-w2759052","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5d529693-dc81-4381-9874-b6e4c79c08cf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:24:23.2586887Z","changedTime":"2022-03-01T02:34:43.6849828Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:24:23.3175825Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:24:34.548653Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8926410","name":"e2e-test-w8926410","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6031fcd4-25d7-45fe-befc-f5d64ce7afa9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:29:55.1321658Z","changedTime":"2022-03-01T02:40:37.232686Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:29:55.197523Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:30:07.0136642Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w2458953","name":"e2e-test-w2458953","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"e49b9d45-02da-45b4-bce2-d9b4e9a2a07b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-02-28T22:40:44.2113496Z","changedTime":"2022-03-01T03:51:04.6985462Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-02-28T22:40:44.2807264Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-02-28T22:40:56.1444984Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-workspace-multiverse","name":"frtibble-workspace-multiverse","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"c820e2ae-f8a7-4127-ae58-548dede2606f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-01T11:19:56.1914027Z","changedTime":"2022-03-01T15:30:06.5117331Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-03-01T11:19:57.0983246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-01T11:23:34.6314255Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/honeywelltest","name":"honeywelltest","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"d6413322-f58e-4d1e-a32c-dc5f9e5124c5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-03T18:20:32.2354817Z","changedTime":"2022-03-03T22:30:35.5377662Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2022-03-03T18:20:32.279482Z","lastModifiedBy":"georgenm@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-03T18:20:32.279482Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/abc","name":"abc","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"8ca6a432-d2c9-4179-ba38-62d037aae713","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-04T18:58:35.0619737Z","changedTime":"2022-03-04T23:09:45.4318205Z","provisioningState":"Succeeded","systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2022-03-04T18:58:35.130999Z","lastModifiedBy":"alchocro@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-04T18:58:35.130999Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus2-rg/providers/Microsoft.Quantum/Workspaces/ws-1605c01c-da26-435b-86b8-020679468a0b","name":"ws-1605c01c-da26-435b-86b8-020679468a0b","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a5b7f4c6-edfb-43a7-9c67-23b3e4fd470d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-23T16:42:54.5279448Z","changedTime":"2022-03-23T20:53:42.3422742Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-23T16:42:55.0139438Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-03-23T16:42:55.0139438Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-dc1336e2-0852-4b42-867e-b3eddc545118","name":"ws-dc1336e2-0852-4b42-867e-b3eddc545118","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"faa9e697-533d-4d70-b4c6-b877c4a0c036","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-23T16:45:49.5932478Z","changedTime":"2022-03-23T20:56:44.1461091Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-23T16:45:50.2681533Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-03-23T16:45:50.2681533Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-5ba8f1f4-f38e-49fb-a18a-ea3da48076c3","name":"ws-5ba8f1f4-f38e-49fb-a18a-ea3da48076c3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"1566f2bb-3c75-4c37-8adb-894f902457b6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-23T16:47:39.0987084Z","changedTime":"2022-03-23T20:58:49.5934538Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-23T16:47:39.700737Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-03-23T16:47:39.700737Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-3fca0732-500a-4ad2-9fca-37913da84cc0","name":"ws-3fca0732-500a-4ad2-9fca-37913da84cc0","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"d7985eaf-3ae7-4f03-a7e4-d405f6550ae3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-23T19:08:18.4147593Z","changedTime":"2022-03-23T23:19:17.5283352Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-03-23T19:08:19.0677677Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-03-23T19:08:19.0677677Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5645956","name":"e2e-test-w5645956","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"316622e9-a77f-43fe-a905-ae69905d9364","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-11T22:37:37.2238925Z","changedTime":"2022-03-12T02:48:42.5369806Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-11T22:37:37.2692594Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-11T22:37:37.2692594Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w1017848","name":"e2e-test-w1017848","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"425b359e-f74b-46aa-8c7e-514c751980a5","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-11T22:39:09.7636878Z","changedTime":"2022-03-12T02:50:11.1373882Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-11T22:39:09.792918Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-11T22:39:09.792918Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6739882","name":"e2e-test-w6739882","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b491edc8-90da-4993-8855-2a711b849383","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-11T22:39:17.134794Z","changedTime":"2022-03-12T04:05:33.5712426Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-11T22:39:17.154469Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-11T22:39:17.154469Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5524320","name":"e2e-test-w5524320","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ce55c7b9-ad0d-4c00-8ef7-aaeb30f6d971","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:00:14.6743498Z","changedTime":"2022-03-15T00:11:12.6486126Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:00:14.7041566Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:00:14.7041566Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5463066","name":"e2e-test-w5463066","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"eddedc6d-eb79-4835-a0ab-dc5ed9e8c365","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:00:25.8756335Z","changedTime":"2022-03-15T01:47:02.9149162Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:00:26.2380977Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:00:26.2380977Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w6572902","name":"e2e-test-w6572902","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"527088d0-12dc-46fa-8d3a-156e2c8aae5f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:03:19.8795544Z","changedTime":"2022-03-15T00:14:25.6684413Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:03:20.0074378Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:03:20.0074378Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w4401298","name":"e2e-test-w4401298","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5919e2b8-1185-4c75-8dab-91fd1f64e028","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T20:03:33.9836414Z","changedTime":"2022-03-15T00:14:19.4800795Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T20:03:34.0967803Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T20:03:34.0967803Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w8506469","name":"e2e-test-w8506469","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"8ac7aa0c-e2d8-4651-bba8-6db9517eb0fd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T21:14:06.2159112Z","changedTime":"2022-03-15T01:25:10.8498253Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T21:14:06.2391839Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T21:14:06.2391839Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w5278936","name":"e2e-test-w5278936","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"6f8c106a-6a1e-4a65-a704-eb9e19a2819e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-14T21:14:16.4384558Z","changedTime":"2022-03-15T01:25:04.5334968Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-14T21:14:16.456267Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-14T21:14:16.456267Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-test-w3666723","name":"e2e-test-w3666723","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"ca668a13-5e95-4182-90a1-1455ab6c9ca9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-15T20:40:49.6630683Z","changedTime":"2022-03-16T00:52:11.4044037Z","provisioningState":"Succeeded","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-03-15T20:40:49.6968867Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-15T20:40:49.6968867Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/alchocro-workspace-for-demo","name":"alchocro-workspace-for-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"04583d75-90c9-4a22-b85c-ea7f8e1bca21","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-16T20:43:34.0969896Z","changedTime":"2022-03-31T19:08:53.7589739Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2022-03-16T20:43:34.1260143Z","lastModifiedBy":"alchocro@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-31T18:57:32.9097786Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-f0f107bf-ab95-4d23-b30e-17e42f6cfeaa","name":"ws-f0f107bf-ab95-4d23-b30e-17e42f6cfeaa","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"116516e4-7634-44db-8748-05015f223701","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-04T17:14:47.9636543Z","changedTime":"2022-04-04T21:25:45.851304Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2022-04-04T17:14:48.6323373Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2022-04-04T17:14:48.6323373Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rigetti-bugbash/providers/Microsoft.Quantum/Workspaces/swernli-test-rigetti","name":"swernli-test-rigetti","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"d99639de-fe02-4c65-a049-cadfa77ebdbb","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-07T20:22:00.503782Z","changedTime":"2022-04-08T00:32:26.415221Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"swernli@ntdev.microsoft.com","createdByType":"User","createdAt":"2022-04-07T20:22:00.7290415Z","lastModifiedBy":"swernli@ntdev.microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-07T20:22:00.7290415Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mvp-demo-workspace","name":"mvp-demo-workspace","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"4aef50ac-92f1-449a-8dbb-c269814ab64b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-28T15:20:03.8367317Z","changedTime":"2022-03-28T20:48:31.782868Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-03-28T15:20:04.5173336Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-28T15:20:04.5173336Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mvp-demo-quantum","name":"mvp-demo-quantum","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"e5a8e9fe-7f0d-41c9-a3b9-0ff60ec607a2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-30T17:38:43.849722Z","changedTime":"2022-03-30T21:51:18.2071405Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-03-30T17:38:44.543401Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-30T17:38:44.543401Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/coolworkspace","name":"coolworkspace","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"b1371ce1-a62d-4895-aa8c-458e05126e7f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-03-31T23:25:17.967072Z","changedTime":"2022-04-01T03:35:56.0240863Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2022-03-31T23:25:18.0040693Z","lastModifiedBy":"alchocro@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-31T23:25:18.0040693Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-rigetti-bug-bash","name":"frtibble-rigetti-bug-bash","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"9341e258-861e-4f6f-9ebb-b7d6013f90bd","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-08T09:41:41.6566087Z","changedTime":"2022-04-08T13:54:10.2185477Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-04-08T09:41:42.3758827Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-08T09:41:42.3758827Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo17","name":"demo17","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"42ce36fb-e080-414b-a8a9-319eb6d7c02a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-02T19:44:00.4307993Z","changedTime":"2022-05-02T23:54:53.4186756Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2022-05-02T19:44:00.4936069Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T19:51:08.6780755Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/viveis-test/providers/Microsoft.Quantum/Workspaces/viveis-demo","name":"viveis-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"cb63597e-5d60-4af0-be84-9aae8b6aaf4c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-16T04:40:40.429228Z","changedTime":"2022-04-16T09:05:35.1338628Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"viveis@microsoft.com","createdByType":"User","createdAt":"2022-04-16T04:40:40.9691895Z","lastModifiedBy":"viveis@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-16T04:40:40.9691895Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/fmtest","name":"fmtest","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"d311c88a-9b25-4e9b-8867-945cb8c3cc0e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-02T20:24:03.8806827Z","changedTime":"2022-05-03T00:35:18.5286785Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"stjorda@microsoft.com","createdByType":"User","createdAt":"2022-05-02T20:24:04.190819Z","lastModifiedBy":"stjorda@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T20:24:04.190819Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/dofp-testing","name":"dofp-testing","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"164efaef-cd4c-4a95-8a37-6e80c0723d9f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-02T20:30:13.7346157Z","changedTime":"2022-05-03T00:40:40.4776994Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"dfernandez@microsoft.com","createdByType":"User","createdAt":"2022-05-02T20:30:14.324128Z","lastModifiedBy":"dfernandez@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T20:30:14.324128Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/aqfa-bug-test","name":"aqfa-bug-test","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"889552e8-6650-4d5b-9bce-6c57a1adef8e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-20T07:53:43.8207623Z","changedTime":"2022-04-20T12:06:24.4876618Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-04-20T07:53:44.0876935Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-20T07:53:44.0876935Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-portal-test","name":"ricardoe-portal-test","type":"Microsoft.Quantum/Workspaces","location":"westeurope","identity":{"principalId":"9b3e6fdb-eb77-43f2-88a8-a38ba462496d","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-22T21:55:58.2383255Z","changedTime":"2022-04-23T03:05:11.8465683Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2022-04-22T21:55:58.2991372Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-22T21:55:58.2991372Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/demo-workspace","name":"demo-workspace","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"f6a6e1ef-1dc2-4472-84b5-d6bd4cb6b81b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-25T09:29:53.1689642Z","changedTime":"2022-04-25T13:42:12.4325876Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-04-25T09:29:53.4770871Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-25T09:29:53.4770871Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/wim-demo","name":"wim-demo","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"718fd72d-8ac9-4349-a463-706af131f964","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-04-29T18:46:16.3944042Z","changedTime":"2022-04-29T22:57:09.7413545Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"viveis@microsoft.com","createdByType":"User","createdAt":"2022-04-29T18:46:16.4286827Z","lastModifiedBy":"viveis@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-29T18:46:16.4286827Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hgavranovic-dev-rg/providers/Microsoft.Quantum/Workspaces/quantum-ws-fleet-management-hgavranovic","name":"quantum-ws-fleet-management-hgavranovic","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"5089cc8c-4a2c-46b0-aa50-2fa610ed042e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-02T20:31:40.3988986Z","changedTime":"2022-05-03T00:42:19.4276496Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"hgavranovic@microsoft.com","createdByType":"User","createdAt":"2022-05-02T20:31:40.5787015Z","lastModifiedBy":"hgavranovic@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T20:31:40.5787015Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/swernli-azq-test4","name":"swernli-azq-test4","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c33443c1-e2b0-4ece-9ec1-f6fc50b7106c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-06T22:48:04.5291731Z","changedTime":"2022-05-07T02:59:09.0321715Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"swernli@ntdev.microsoft.com","createdByType":"User","createdAt":"2022-05-06T22:48:04.5826099Z","lastModifiedBy":"swernli@ntdev.microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-06T22:48:04.5826099Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/multiverse-slc-demo","name":"multiverse-slc-demo","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"b488d8a1-03f4-4845-a8b6-ca7bcae531c1","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-18T09:42:22.7786431Z","changedTime":"2022-05-18T13:55:29.9588427Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-05-18T09:42:23.584549Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-18T09:42:23.584549Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/cgranade-rigetti-dev","name":"cgranade-rigetti-dev","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"3233d0b7-085d-4306-a104-111414806281","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-19T20:03:45.1485177Z","changedTime":"2022-05-20T00:15:01.8383696Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"chgranad@microsoft.com","createdByType":"User","createdAt":"2022-05-19T20:03:45.3558405Z","lastModifiedBy":"chgranad@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-19T20:03:45.3558405Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/early-access-demo","name":"early-access-demo","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"0ace24b5-b732-4df5-a5ed-d67b00abf6d2","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2022-05-23T09:07:46.4576047Z","changedTime":"2022-05-23T13:20:22.0077091Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"frtibble@microsoft.com","createdByType":"User","createdAt":"2022-05-23T09:07:47.2328255Z","lastModifiedBy":"frtibble@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-23T09:18:27.3105416Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/demo4uk","name":"demo4uk","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"d36d38b6-cf32-4a7a-adbd-6d4e21786db6","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-10-31T03:18:32.4911336Z","changedTime":"2022-05-23T20:14:51.8130712Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2020-10-31T03:18:32.6189413Z","lastModifiedBy":"fabricfr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-23T20:02:33.6840949Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/chemistry-test/providers/Microsoft.Quantum/Workspaces/chemistrydemo","name":"chemistrydemo","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"97450f82-81fe-4c00-86d5-0651b7caa49a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-10-19T18:06:54.8481601Z","changedTime":"2021-07-27T05:45:27.0082131Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"},"systemData":{"lastModifiedBy":"hay@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-10-19T18:20:30.8402422Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/chemistry-test/providers/Microsoft.Quantum/Workspaces/chemistrydemo2","name":"chemistrydemo2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4d8bb55c-09c5-48e1-a311-e21c9fb1afee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-10-19T18:52:55.7526696Z","changedTime":"2021-07-27T05:44:58.0380107Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"},"systemData":{"createdBy":"hay@microsoft.com","createdByType":"User","createdAt":"2020-10-19T18:52:57.0930335Z","lastModifiedBy":"hay@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-10-19T18:52:57.0930335Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabrice/providers/Microsoft.Quantum/Workspaces/testmultiproviders","name":"testmultiproviders","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"16f10b41-3658-4d7f-b591-71ced7873417","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-01T22:01:46.930544Z","changedTime":"2021-07-27T05:41:13.6744274Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"fabricfr@microsoft.com","createdByType":"User","createdAt":"2020-11-01T22:01:48.2022972Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-11-01T22:05:11.2732068Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/chemistry-test/providers/Microsoft.Quantum/Workspaces/chemistrydemo4","name":"chemistrydemo4","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e7cb79ab-788b-44ec-8059-a8a2246cf20b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-02T22:00:55.6725188Z","changedTime":"2021-07-27T05:43:53.7223296Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"yinshen@microsoft.com","createdByType":"User","createdAt":"2020-11-02T22:00:56.1692445Z","lastModifiedBy":"yinshen@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2020-11-02T22:00:56.1692445Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westeurope-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"westeurope","createdTime":"2020-12-08T19:59:26.9303109Z","changedTime":"2021-07-27T05:46:47.1451903Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2020-12-08T20:00:36.8345906Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-northeurope-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"northeurope","createdTime":"2020-12-08T20:09:04.9165992Z","changedTime":"2021-07-27T05:35:17.8418439Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2020-12-08T20:09:05.0145578Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2020-12-08T20:09:05.0145578Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-northeurope-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"northeurope","createdTime":"2020-12-08T21:15:32.9696864Z","changedTime":"2021-07-27T05:43:25.0741113Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2020-12-08T21:15:33.6243148Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2020-12-08T21:15:33.6243148Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-20201118-canary-test","name":"ryansha-20201118-canary-test","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"e8ddf301-428f-490b-9bb6-40e6bbca9631","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-18T19:04:11.5616848Z","changedTime":"2021-08-04T05:57:03.8838774Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ryansha@microsoft.com","createdByType":"User","createdAt":"2020-11-18T19:04:12.0870707Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-11-18T19:07:23.7206889Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-20201118-test-eastus2euap","name":"ryansha-20201118-test-eastus2euap","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"54ec7f1a-7794-4ce5-bf45-8c39223db33f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-11-18T19:13:28.6340466Z","changedTime":"2021-07-27T05:38:03.7899047Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"ryansha@microsoft.com","createdByType":"User","createdAt":"2020-11-18T19:13:28.9815188Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-11-18T19:26:35.6205782Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-westus-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"microsoft.quantum/Workspaces","location":"westus","createdTime":"2021-01-15T20:28:50.2229484Z","changedTime":"2021-07-27T05:33:34.626146Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-01-15T20:28:50.7384981Z","lastModifiedBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","lastModifiedByType":"Application","lastModifiedAt":"2021-01-15T20:28:50.7384981Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ms-canary4","name":"ms-canary4","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"f159c531-f9e6-4ce9-858d-99491c363f17","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-01-12T22:03:20.6669678Z","changedTime":"2021-07-27T05:40:13.7100188Z","provisioningState":"Succeeded","tags":{"tag1":"value1"},"systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-01-12T22:03:21.0323859Z","lastModifiedBy":"georgenm@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-02-23T19:45:10.2561371Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/toshibacanary2","name":"toshibacanary2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"b225c8ff-76f7-4350-ad26-796ba95c9f9b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-02-16T19:29:26.4871024Z","changedTime":"2021-07-27T05:39:12.6601861Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-02-16T19:29:26.8279557Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-02-16T19:31:11.029991Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/viveis-test/providers/Microsoft.Quantum/Workspaces/demo1","name":"demo1","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"8dd69939-3762-471f-a047-3828f03f3a07","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-12-14T02:24:10.5097769Z","changedTime":"2022-04-16T04:47:54.978277Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"viveis@microsoft.com","createdByType":"User","createdAt":"2020-12-14T02:24:10.9622812Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2020-12-16T20:44:30.747034Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adbai-test/providers/Microsoft.Quantum/Workspaces/adbai-privatepreview-test","name":"adbai-privatepreview-test","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"a6469555-aa58-49c5-ab67-4ce4153d005f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-02-01T19:42:54.6555906Z","changedTime":"2021-09-02T21:54:41.4994698Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"adbai@microsoft.com","createdByType":"User","createdAt":"2021-02-01T19:42:56.2851246Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-02T21:44:32.689972Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-westus-rg/providers/Microsoft.Quantum/Workspaces/e2e-tests-workspace-MS","name":"e2e-tests-workspace-MS","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"e1de3c0b-d0b6-4823-8540-8251f0957d69","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-03-23T20:52:23.4125237Z","changedTime":"2021-07-27T05:28:02.5807568Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-03-23T20:52:23.5263379Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-03-23T20:52:38.7525904Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qdk-validations/providers/Microsoft.Quantum/Workspaces/chgranad-0-15-2103-test5","name":"chgranad-0-15-2103-test5","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"6badb78d-1e88-406e-95e8-1974925a60bf","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-03-30T18:55:35.5105874Z","changedTime":"2021-07-27T05:44:13.0288957Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"chgranad@microsoft.com","createdByType":"User","createdAt":"2021-03-30T18:55:35.805041Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-03-30T18:58:36.1488162Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo15","name":"demo15","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"8f475614-10ff-403c-955a-bbad8d2f2da3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-03-30T17:19:10.4271422Z","changedTime":"2021-08-19T18:09:49.3278758Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-03-30T17:19:10.766451Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-19T17:59:42.5995094Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/masenol-workarea/providers/Microsoft.Quantum/Workspaces/release-test-05-04-cli","name":"release-test-05-04-cli","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"084d3916-b84d-43da-854e-ad12cd2eed2f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-04T19:37:37.6537817Z","changedTime":"2022-05-17T22:48:05.4002765Z","provisioningState":"Succeeded","systemData":{"createdBy":"masenol@microsoft.com","createdByType":"User","createdAt":"2021-05-04T19:37:37.9741263Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-11-03T18:13:00.6787681Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-ace31747-f581-4bec-8afd-c4b6e3be9858","name":"ws-ace31747-f581-4bec-8afd-c4b6e3be9858","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"004dc989-8b48-4681-94a2-e7e39b219391","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T17:36:09.3277219Z","changedTime":"2021-07-27T05:35:09.5831579Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-10T17:36:10.0856713Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T17:36:21.6613414Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-japaneast-rg/providers/Microsoft.Quantum/Workspaces/ws-8a1bb71e-578e-4a74-8bb1-4668e9ffd687","name":"ws-8a1bb71e-578e-4a74-8bb1-4668e9ffd687","type":"Microsoft.Quantum/Workspaces","location":"japaneast","identity":{"principalId":"512ddbaf-edf6-409d-8dc9-2436473a2703","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T21:30:30.9632512Z","changedTime":"2021-07-27T05:33:10.2487477Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-10T21:30:31.029215Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T21:30:47.505675Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-uksouth-rg/providers/Microsoft.Quantum/Workspaces/ws-51ab0adf-e041-44d7-8b1b-d8c6758afb13","name":"ws-51ab0adf-e041-44d7-8b1b-d8c6758afb13","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"5b68e746-2430-4254-8786-2d617b398c51","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-10T21:38:15.2661858Z","changedTime":"2021-07-27T05:37:00.5763397Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-10T21:38:15.7452817Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-10T21:38:29.2671419Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-cd058373-1fac-4b42-8ebe-0b5da36a72db","name":"ws-cd058373-1fac-4b42-8ebe-0b5da36a72db","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"08a46a2e-8068-4fea-9e0e-3ce98e8e1526","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T19:09:54.9447847Z","changedTime":"2021-07-27T05:34:16.8356021Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-14T19:09:55.1751321Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T19:10:07.3033174Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-a7c7cc69-6308-4861-9d1b-066d6a2bf579","name":"ws-a7c7cc69-6308-4861-9d1b-066d6a2bf579","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"7fde4131-799e-4d59-886d-a043372a3566","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T21:21:44.295569Z","changedTime":"2021-07-27T05:36:08.9667473Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-14T21:21:44.9806936Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T21:21:56.9223784Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-eastus2euap-rg/providers/Microsoft.Quantum/Workspaces/ws-42ccd7a9-c725-447a-adf8-89dcf53ebd40","name":"ws-42ccd7a9-c725-447a-adf8-89dcf53ebd40","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c92484e2-6ec1-409c-83cd-48757aa7cd24","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T22:18:16.0382045Z","changedTime":"2021-07-27T05:37:11.1789332Z","provisioningState":"Succeeded","systemData":{"createdBy":"558e0fd6-c894-4dbc-a2e6-fafb22f72853","createdByType":"Application","createdAt":"2021-05-14T22:18:16.2501822Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T22:18:28.0911083Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-04-13T19:10:57.5675579Z","changedTime":"2022-04-14T17:01:32.143089Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-14T16:49:38.6414588Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureQuantumEvents/providers/Microsoft.Quantum/Workspaces/TestGuen","name":"TestGuen","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"35da91a7-4a91-4d72-a3ba-0a60aef9fd8e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-03T21:07:01.9029284Z","changedTime":"2022-05-02T22:09:48.0196947Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"guenp@microsoft.com","createdByType":"User","createdAt":"2021-05-03T21:07:02.6392678Z","lastModifiedBy":"guenp@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-02T21:57:56.0972914Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/uksouthportal","name":"uksouthportal","type":"Microsoft.Quantum/Workspaces","location":"uksouth","identity":{"principalId":"1f50f731-61a6-4b80-a1f2-5b99960c6cb0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T18:10:22.1325316Z","changedTime":"2021-07-27T05:36:46.1688466Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-14T18:10:22.5683008Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T18:12:19.7393194Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/ukwestportal","name":"ukwestportal","type":"Microsoft.Quantum/Workspaces","location":"ukwest","identity":{"principalId":"ae038165-9e1b-437c-b410-32a97053a903","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T18:31:39.4260545Z","changedTime":"2021-07-27T05:36:32.8411001Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-14T18:31:40.1306597Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T18:33:49.9076431Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/japaneastportal","name":"japaneastportal","type":"Microsoft.Quantum/Workspaces","location":"japaneast","identity":{"principalId":"dfe06860-5f17-4681-ad68-2765ce96920c","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-14T18:32:23.3429253Z","changedTime":"2021-07-27T05:38:03.3852924Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"georgenm@microsoft.com","createdByType":"User","createdAt":"2021-05-14T18:32:23.9132236Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-14T18:34:30.7263509Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq","name":"ricardoe-create-test-ionq","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"316e2609-d3f2-4a50-b3b2-c4d2ea424701","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:02:00.506835Z","changedTime":"2021-07-27T05:48:27.0880682Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:02:00.6086324Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:03:48.6768858Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-2","name":"ricardoe-create-test-ionq-2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"6c604223-84c5-42a4-8b49-cf197493b0f8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:03:25.1798398Z","changedTime":"2021-07-27T05:50:26.268039Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:03:25.2497037Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:05:07.6823653Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ricardoe-create-test-ionq-3","name":"ricardoe-create-test-ionq-3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"c94a0287-4287-4c45-a878-7075249ec9db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-05T22:07:18.5631383Z","changedTime":"2021-07-27T05:46:22.5698444Z","provisioningState":"Succeeded","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-05-05T22:07:18.6145383Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-05T22:08:48.5000758Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mblouin-wksp","name":"mblouin-wksp","type":"Microsoft.Quantum/Workspaces","location":"eastus","identity":{"principalId":"07233326-751b-4965-8167-5c3ddd6151da","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-06T15:42:30.3088057Z","changedTime":"2022-03-17T16:28:47.6993626Z","provisioningState":"Succeeded","tags":{},"systemData":{"createdBy":"mblouin@microsoft.com","createdByType":"User","createdAt":"2021-05-06T15:42:31.3676223Z","lastModifiedBy":"mblouin@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-03-17T16:17:38.4767207Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/temp-lg4x","name":"temp-lg4x","type":"Microsoft.Quantum/Workspaces","location":"westus2","identity":{"principalId":"21e4e4a0-51c5-44d1-a3ce-a33f3b9ef111","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-11T18:38:03.6680292Z","changedTime":"2021-07-27T06:46:36.799255Z","provisioningState":"Succeeded","systemData":{"createdBy":"ce7bd34e-a57e-46b7-b9c8-8e0d6119f011","createdByType":"Application","createdAt":"2021-05-11T18:38:03.981634Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-05-11T18:38:18.051526Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocrocliwkspc","name":"alchocrocliwkspc","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"87be4e35-b981-4d13-8d23-808e99960dff","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2021-05-12T21:11:12.1974353Z","changedTime":"2021-12-06T21:08:00.8766658Z","provisioningState":"Succeeded","systemData":{"createdBy":"alchocro@microsoft.com","createdByType":"User","createdAt":"2021-05-12T21:11:12.561658Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-12-06T20:57:42.3873774Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pp-test/providers/Microsoft.Quantum/Workspaces/pp-test","name":"pp-test","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-03-17T21:20:25.8697865Z","changedTime":"2021-07-27T05:38:49.1676166Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mblouin-aq-python-test/providers/Microsoft.Quantum/Workspaces/mblouin-aq-python-test","name":"mblouin-aq-python-test","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-03-20T00:05:23.6628817Z","changedTime":"2021-07-27T05:31:20.7546994Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qio-dev-wecker/providers/Microsoft.Quantum/Workspaces/wecker-aqpp","name":"wecker-aqpp","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-03-30T19:32:14.065601Z","changedTime":"2021-07-27T05:33:09.5875963Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ryansha-aqua20200331/providers/Microsoft.Quantum/Workspaces/ryansha-aqua20200331","name":"ryansha-aqua20200331","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-04-01T01:01:32.3820662Z","changedTime":"2021-07-27T05:29:11.9777158Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-testRG/providers/Microsoft.Quantum/Workspaces/dfDemoNew8","name":"dfDemoNew8","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-04-01T16:56:05.5462584Z","changedTime":"2021-07-27T01:47:01.2228449Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/contoso-canary1","name":"contoso-canary1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-04-30T17:08:47.527617Z","changedTime":"2021-07-27T05:40:55.7349621Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/testcons8","name":"testcons8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-01T22:39:30.2865332Z","changedTime":"2021-07-27T05:34:15.2500669Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/testionq8","name":"testionq8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-01T22:41:59.1084182Z","changedTime":"2021-07-27T05:29:39.7894059Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/testionq18","name":"testionq18","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-01T22:44:08.1749649Z","changedTime":"2021-07-27T07:00:32.7563908Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/nofails","name":"nofails","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:00:11.6033615Z","changedTime":"2021-07-27T05:29:53.6954103Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-marketplace/providers/Microsoft.Quantum/Workspaces/nofails2","name":"nofails2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:23:20.6753879Z","changedTime":"2021-07-27T05:34:13.7288167Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/qw-alchocro-test","name":"qw-alchocro-test","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-01T18:35:38.1109194Z","changedTime":"2021-07-27T05:46:26.0304862Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/alchocro-repro","name":"alchocro-repro","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-04T18:28:39.1635996Z","changedTime":"2021-07-27T05:45:50.8842207Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"},"systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-02-16T23:02:30.6291372Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-rg/providers/Microsoft.Quantum/Workspaces/khyati-wspc-051120-1","name":"khyati-wspc-051120-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T04:59:01.1790717Z","changedTime":"2021-07-27T01:45:44.8887014Z","provisioningState":"Succeeded","tags":{"Environment":"DEL","Team":"SEC"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo1","name":"demo1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T18:32:25.4704227Z","changedTime":"2021-07-27T05:41:36.0056907Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Demo4BuildRG/providers/Microsoft.Quantum/Workspaces/QuantumWorkspace4Build","name":"QuantumWorkspace4Build","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T19:12:52.9888258Z","changedTime":"2021-07-27T05:31:26.9545865Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo2","name":"demo2","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-12T23:43:45.4579572Z","changedTime":"2021-07-27T05:40:52.6261267Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo3","name":"demo3","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-13T17:20:45.0902825Z","changedTime":"2021-07-27T05:42:23.6030198Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo4","name":"demo4","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-13T18:15:32.1521646Z","changedTime":"2021-07-27T05:40:06.2104939Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-rg/providers/Microsoft.Quantum/Workspaces/khyati-wspc-051420-1","name":"khyati-wspc-051420-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-14T16:30:50.2706786Z","changedTime":"2021-07-27T01:44:28.5479208Z","provisioningState":"Succeeded","tags":{"Environment":"CPH","Team":"SEC"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo5","name":"demo5","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-15T17:09:09.5575194Z","changedTime":"2021-07-27T05:38:34.424513Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yinshen-test/providers/Microsoft.Quantum/Workspaces/yinshen-test-528-3","name":"yinshen-test-528-3","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-28T19:25:51.2382557Z","changedTime":"2021-07-27T05:41:14.4193394Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637242835417929282","name":"ma637242835417929282","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-05T20:52:29.8318859Z","changedTime":"2021-07-27T05:40:41.9303694Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest1","name":"failovertest1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-11T17:49:57.1436708Z","changedTime":"2021-07-27T06:33:19.3907129Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest2","name":"failovertest2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-11T22:50:50.0473121Z","changedTime":"2021-07-27T05:33:05.2549687Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest3","name":"failovertest3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T01:42:52.844317Z","changedTime":"2021-08-04T05:57:02.5771797Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest4","name":"failovertest4","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T06:22:38.2323068Z","changedTime":"2021-07-27T05:34:06.194701Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest5","name":"failovertest5","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T08:21:02.5289419Z","changedTime":"2021-07-27T05:34:06.8177447Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest6","name":"failovertest6","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T10:45:58.3692977Z","changedTime":"2021-07-27T05:32:45.9549985Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest7","name":"failovertest7","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T14:01:56.8745565Z","changedTime":"2021-07-27T05:32:59.12867Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ryansha-aqua20200331/providers/Microsoft.Quantum/Workspaces/ryansha-aqua20200518","name":"ryansha-aqua20200518","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-18T21:59:34.0906017Z","changedTime":"2021-07-27T05:32:38.8893625Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo6","name":"demo6","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-20T16:25:01.8010088Z","changedTime":"2021-07-27T05:38:43.5155722Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo7","name":"demo7","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-27T18:22:15.5076194Z","changedTime":"2021-07-27T05:40:48.9464685Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920","name":"khyati-prod-wspc-052920","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T03:54:03.9680025Z","changedTime":"2021-07-27T05:45:20.7190304Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-oldQW-wspc","name":"khyati-prod-oldQW-wspc","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T04:08:27.2577338Z","changedTime":"2021-07-27T05:46:18.7515178Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920-2","name":"khyati-prod-wspc-052920-2","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T05:34:06.0025272Z","changedTime":"2021-07-27T05:43:52.9414361Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920-NoIonQ-1","name":"khyati-prod-wspc-052920-NoIonQ-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T05:39:54.9199269Z","changedTime":"2021-07-27T05:47:32.5768492Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-wspc-052920-YesIonQ-1","name":"khyati-prod-wspc-052920-YesIonQ-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-05-30T05:43:24.0434198Z","changedTime":"2021-07-27T05:45:24.4821308Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-prod-espc-bugbash-060120-1","name":"khyati-prod-espc-bugbash-060120-1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-01T18:10:07.589127Z","changedTime":"2021-07-27T05:45:34.1804042Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-wspc-bugbash-060120-2","name":"khyati-wspc-bugbash-060120-2","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-01T18:12:00.9375002Z","changedTime":"2021-07-27T06:47:34.7271009Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest8","name":"failovertest8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:06:19.1200799Z","changedTime":"2021-07-27T05:32:25.0675665Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/failovertest81","name":"failovertest81","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-12T21:25:55.2746784Z","changedTime":"2021-07-27T05:32:45.6581803Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/failovertest-rg/providers/Microsoft.Quantum/Workspaces/FailOverTest","name":"FailOverTest","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-13T18:29:10.2526685Z","changedTime":"2021-07-27T05:34:50.2507468Z","provisioningState":"Succeeded","tags":{"department":"WeAreGreat","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/microsoft-canary1","name":"microsoft-canary1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-10T23:01:23.3768529Z","changedTime":"2021-08-16T18:07:05.5365864Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-16T17:56:56.8739064Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/microsoft-canary2","name":"microsoft-canary2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"287794c5-5bd9-49a1-93e4-f1f3e3b5813f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-10T23:06:07.1802335Z","changedTime":"2021-07-27T05:37:46.2272055Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/portal-workspace","name":"portal-workspace","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"f946335d-bbfc-4e52-a0eb-c34b5e851757","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T18:16:10.6081414Z","changedTime":"2021-07-27T05:40:03.4981297Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/yinshen-test","name":"yinshen-test","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"bf77d2ad-acbb-447c-abfa-27a333d7b713","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T18:32:00.3798214Z","changedTime":"2021-07-27T05:39:53.9172217Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/portal-workspace2","name":"portal-workspace2","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"4fa031c2-eb58-4971-9595-c1bb70104cca","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T20:51:37.5693415Z","changedTime":"2021-07-27T05:39:41.3086497Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/portal-workspace3","name":"portal-workspace3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"a6b3d1ee-47d5-4ba9-9569-8d94fe9e022f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-12T20:55:12.7678095Z","changedTime":"2021-07-27T05:36:57.9374576Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/george-test/providers/Microsoft.Quantum/Workspaces/contoso-westus1","name":"contoso-westus1","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-16T18:01:36.7909529Z","changedTime":"2022-03-03T17:27:19.2192893Z","provisioningState":"Succeeded","systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2022-03-03T17:17:08.0699999Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/khyati-test-delete","name":"khyati-test-delete","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-01T23:43:01.9614151Z","changedTime":"2021-07-27T05:48:25.6068085Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/telemetry-delete","name":"telemetry-delete","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-02T22:17:38.0057903Z","changedTime":"2021-07-27T05:47:50.1931743Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-prod-rg/providers/Microsoft.Quantum/Workspaces/deleteinh","name":"deleteinh","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-03T20:08:07.4567066Z","changedTime":"2021-07-27T05:44:34.1252549Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo8","name":"demo8","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-10T15:27:10.3226632Z","changedTime":"2021-07-27T05:41:44.4874658Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/adbai-test/providers/Microsoft.Quantum/Workspaces/adbai-workspacetest","name":"adbai-workspacetest","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"33efbf55-ffe1-4761-8250-a3bcd0af8ab0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-13T00:17:18.9913327Z","changedTime":"2021-09-02T21:42:13.292291Z","provisioningState":"Succeeded","tags":{},"systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-09-02T21:32:07.9357977Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/fabricfrdelete","name":"fabricfrdelete","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"139d6494-8fd2-4857-98fd-57864a7a5889","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-14T19:11:12.7873965Z","changedTime":"2021-07-27T05:35:52.3691987Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/khyati-test3-rg/providers/Microsoft.Quantum/Workspaces/khyati-test3-wspc-061720-1","name":"khyati-test3-wspc-061720-1","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"18980fb5-b6bb-4e51-8240-c7d470516e19","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-17T17:05:52.2291617Z","changedTime":"2021-07-27T05:36:08.6993189Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/hay-testdelete/providers/Microsoft.Quantum/Workspaces/proddelete0","name":"proddelete0","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-05-28T17:38:25.5076165Z","changedTime":"2021-07-27T05:36:22.6294033Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cgranade-azqu-samples-rg/providers/Microsoft.Quantum/Workspaces/cgranade-azqu-samples","name":"cgranade-azqu-samples","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-09T18:23:19.9025923Z","changedTime":"2021-07-27T01:46:28.7490498Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-20200618","name":"ryansha-aqua-20200618","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"7c0736fe-6aef-4c68-a9b9-707b4bc00aec","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-18T19:23:27.6540866Z","changedTime":"2021-07-27T05:49:14.5886567Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/khyati-aqua-bugbash-062520-1","name":"khyati-aqua-bugbash-062520-1","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"964608d9-c335-459e-b33d-1fbc1197b72b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-25T20:24:07.7890245Z","changedTime":"2021-07-27T05:47:31.1406481Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/anpaz-demos/providers/Microsoft.Quantum/Workspaces/demo9","name":"demo9","type":"Microsoft.Quantum/Workspaces","location":"westus","createdTime":"2020-06-19T00:45:04.4323754Z","changedTime":"2021-07-27T05:38:36.8730346Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-20200617-2","name":"ryansha-aqua-20200617-2","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"0848ede7-8acf-46e2-8d8c-e9a80a54584a","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-17T19:53:52.0582544Z","changedTime":"2021-07-27T05:38:11.8986999Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-eastus2-eap/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-20200618","name":"ryansha-aqua-20200618","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"be5476a5-4df9-4705-9333-4099320f6546","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-06-18T03:02:43.378037Z","changedTime":"2021-07-27T05:39:00.7674842Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/khyati-test3-honeywell-07720-1","name":"khyati-test3-honeywell-07720-1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"dfc5abd8-0b09-4fd6-8945-4982b5b5ccc0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-07T18:47:26.9836417Z","changedTime":"2021-07-27T05:47:31.6054263Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/khyati-EthanTest-070820-1","name":"khyati-EthanTest-070820-1","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"987125a0-a0e9-4dd1-8b00-a741ecd790e0","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-08T22:20:14.8351369Z","changedTime":"2021-07-27T05:48:34.7968438Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mblouinqbtesting2","name":"mblouinqbtesting2","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"a3fb99ad-b880-4e13-a752-f32b4db7b58e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-16T21:16:43.5557849Z","changedTime":"2021-07-27T05:49:21.356771Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/swernli-azq-test3","name":"swernli-azq-test3","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"11160935-c18d-4635-ba21-89b1e3c35183","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-17T21:33:18.8174941Z","changedTime":"2022-05-06T21:29:32.060335Z","provisioningState":"Succeeded","tags":{},"systemData":{"lastModifiedBy":"swernli@ntdev.microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-06T21:18:57.7791967Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-westus-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-honeywell","name":"e2e-tests-workspace-honeywell","type":"microsoft.quantum/Workspaces","location":"westus","createdTime":"2020-07-16T23:17:46.2399788Z","changedTime":"2021-07-27T06:31:06.0383752Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-westus-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-ionq","name":"e2e-tests-workspace-ionq","type":"microsoft.quantum/Workspaces","location":"westus","createdTime":"2020-07-16T23:18:18.0342522Z","changedTime":"2021-07-27T05:30:30.5776842Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-ionq","name":"e2e-tests-workspace-ionq","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-30T20:46:14.2719621Z","changedTime":"2021-07-27T05:44:51.573602Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-1qbit","name":"e2e-tests-workspace-1qbit","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-06-30T20:53:01.1155377Z","changedTime":"2021-07-27T05:43:36.8603921Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace-ionq","name":"e2e-tests-workspace-ionq","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-07-02T18:51:36.3093715Z","changedTime":"2021-07-27T05:34:56.1706517Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/SAtest","name":"SAtest","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"be5236f7-e1e4-4da2-8e8d-6a450975b75e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-07-29T19:59:19.2783129Z","changedTime":"2021-07-27T05:48:36.2429332Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/georgenm-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-loadtests-workspace-Microsoft","name":"e2e-loadtests-workspace-Microsoft","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-07-14T22:14:43.767696Z","changedTime":"2021-07-27T05:35:32.1029049Z","provisioningState":"Succeeded"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/ryansha-aqua-test-20200814","name":"ryansha-aqua-test-20200814","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"ebd79bb9-667a-4596-a02e-a387d0d1a208","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-08-14T21:22:31.8653798Z","changedTime":"2021-07-27T05:49:49.7362512Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637321591493688655","name":"DogFoodCRUDByOBO637321591493688655","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T00:32:31.3718593Z","changedTime":"2021-07-27T05:34:29.739592Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637321602011277237","name":"DogFoodCRUDByOBO637321602011277237","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T00:50:03.2378982Z","changedTime":"2021-07-27T05:34:05.9984424Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637321608941603994","name":"DogFoodCRUDByOBO637321608941603994","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T01:01:36.2223803Z","changedTime":"2021-07-27T05:37:15.1478358Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637322595002853936","name":"DogFoodCRUDByOBO637322595002853936","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T21:25:00.7747425Z","changedTime":"2021-07-27T05:36:08.9214358Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637322660840384456","name":"DogFoodCRUDByOBO637322660840384456","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-05T23:14:52.437712Z","changedTime":"2021-07-27T05:33:08.36687Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324254973139435","name":"ma637324254973139435","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T19:31:38.8303632Z","changedTime":"2021-08-04T05:57:03.0464076Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324257155243090","name":"DogFoodCRUDByOBO637324257155243090","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T19:35:16.0624869Z","changedTime":"2021-07-27T05:36:47.8272335Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324019290354681","name":"DogFoodCRUDByOBO637324019290354681","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T19:58:54.1581624Z","changedTime":"2021-07-27T05:35:54.675747Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324021912570836","name":"ma637324021912570836","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:03:17.136267Z","changedTime":"2021-07-27T05:39:58.25424Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324024160248692","name":"DogFoodCRUDByOBO637324024160248692","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:07:01.2009205Z","changedTime":"2021-07-27T05:37:23.7446734Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324025989157219","name":"ma637324025989157219","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:10:05.2095016Z","changedTime":"2021-07-27T05:39:43.1211336Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324028404650354","name":"DogFoodCRUDByOBO637324028404650354","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:14:06.0070411Z","changedTime":"2021-07-27T05:37:59.9110526Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324028787661822","name":"ma637324028787661822","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:14:50.4420237Z","changedTime":"2021-07-27T05:39:38.9610501Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324030278622376","name":"ma637324030278622376","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:17:14.1409117Z","changedTime":"2021-08-04T05:57:03.0402034Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324032610347900","name":"DogFoodCRUDByOBO637324032610347900","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:21:05.9667872Z","changedTime":"2021-07-27T05:33:08.9064496Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324045106827439","name":"ma637324045106827439","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:41:57.7320443Z","changedTime":"2021-07-27T05:41:19.1268861Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324046796372466","name":"ma637324046796372466","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:44:46.6778805Z","changedTime":"2021-07-27T05:40:38.8171234Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324047936633908","name":"ma637324047936633908","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:46:52.8608743Z","changedTime":"2021-07-27T05:39:25.9852504Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324049158827388","name":"DogFoodCRUDByOBO637324049158827388","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:48:41.4642898Z","changedTime":"2021-07-27T05:37:20.5147911Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324054606323092","name":"ma637324054606323092","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T20:57:50.5325427Z","changedTime":"2021-07-27T05:43:13.1322485Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324074961183917","name":"ma637324074961183917","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T21:31:43.7113671Z","changedTime":"2021-08-04T05:57:03.6731158Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"IonQ"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324077739287041","name":"DogFoodCRUDByOBO637324077739287041","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T21:36:20.5949992Z","changedTime":"2021-07-27T05:36:21.246203Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324100652798522","name":"DogFoodCRUDByOBO637324100652798522","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:14:40.3449412Z","changedTime":"2021-07-27T05:34:33.1118987Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324101526311752","name":"DogFoodCRUDByOBO637324101526311752","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:17:15.02494Z","changedTime":"2021-07-27T05:33:03.3275836Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324104013337657","name":"DogFoodCRUDByOBO637324104013337657","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:20:09.8364512Z","changedTime":"2021-07-27T05:35:09.1448426Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324104306271974","name":"DogFoodCRUDByOBO637324104306271974","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:20:58.5737961Z","changedTime":"2021-07-27T05:36:47.8697841Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO637324108151559911","name":"DogFoodCRUDByOBO637324108151559911","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T22:27:03.5031959Z","changedTime":"2021-07-27T05:35:45.9738665Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324130349750773","name":"WorkspaceCRUD637324130349750773","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:04:02.5731789Z","changedTime":"2021-07-27T05:35:03.7213722Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryTestRG/providers/Microsoft.Quantum/Workspaces/DogFoodCRUDByOBO","name":"DogFoodCRUDByOBO","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:04:09.4449762Z","changedTime":"2021-07-27T05:36:43.6108843Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324136041193861","name":"ma637324136041193861","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:13:32.6296628Z","changedTime":"2021-07-27T05:39:55.4543983Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324138296810323","name":"WorkspaceCRUD637324138296810323","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:17:18.6195378Z","changedTime":"2021-07-27T05:35:52.0675612Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324394986402832","name":"ma637324394986402832","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:25:00.6944717Z","changedTime":"2021-08-04T05:57:02.6801352Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324396974259891","name":"WorkspaceCRUD637324396974259891","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:28:18.0515468Z","changedTime":"2021-07-27T05:37:40.9671961Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-mockproviders-testrg-canary/providers/Microsoft.Quantum/Workspaces/ma637324413990368170","name":"ma637324413990368170","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-07T23:56:40.2264611Z","changedTime":"2021-08-04T05:57:03.7227918Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CanaryClientAutoTestRG/providers/Microsoft.Quantum/Workspaces/WorkspaceCRUD637324416107382019","name":"WorkspaceCRUD637324416107382019","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","createdTime":"2020-08-08T00:00:11.4419626Z","changedTime":"2021-07-27T05:37:10.4129822Z","provisioningState":"Succeeded","tags":{"department":"MightyMight","company":"Contoso"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yinshen-test/providers/Microsoft.Quantum/Workspaces/yinshen-test-0825","name":"yinshen-test-0825","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"c25702d9-0c4e-4c19-8668-872627f818db","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-08-25T17:45:46.8586351Z","changedTime":"2021-07-27T05:36:56.3963773Z","provisioningState":"Succeeded","tags":{},"systemData":{"lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-01-20T02:15:13.9269396Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/mblouinqciprod","name":"mblouinqciprod","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"4829a137-df3d-4a55-be93-fda1b179c3ee","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-03T00:48:11.4086461Z","changedTime":"2021-07-27T05:45:53.4673978Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/frtibble-workspace","name":"frtibble-workspace","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"d88653ef-4b3d-4d4e-b795-5b3bb4b80769","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-08T10:04:44.6783217Z","changedTime":"2021-07-27T05:49:01.1208261Z","provisioningState":"Succeeded","tags":{"createdbyuser":"frtibble"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/IEEEQuantumWeekDemo","name":"IEEEQuantumWeekDemo","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"259a55be-a049-4bb6-8629-5c83a638ae33","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-09T17:16:14.2426067Z","changedTime":"2021-07-27T05:46:45.0850681Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/Test4Fabrice2","name":"Test4Fabrice2","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"eaca3591-732d-4719-8026-8da323a6070e","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-14T05:40:59.7852686Z","changedTime":"2021-07-27T05:34:30.6014312Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fabricfrrg/providers/Microsoft.Quantum/Workspaces/Test4FabriceCombined","name":"Test4FabriceCombined","type":"Microsoft.Quantum/Workspaces","location":"eastus2euap","identity":{"principalId":"0ac72faa-a416-4ed2-aded-02d264152314","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-14T23:12:16.0315031Z","changedTime":"2021-07-27T05:32:32.5315348Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/alchocro-test/providers/Microsoft.Quantum/Workspaces/qw-workspace-boggle","name":"qw-workspace-boggle","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"1699a6f7-f52a-4f90-bccf-e6b010de3b27","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-15T18:31:09.8241727Z","changedTime":"2021-07-27T05:43:24.5204418Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aqua-testing-westus2/providers/Microsoft.Quantum/Workspaces/Demo-IEEEQuantumWeek","name":"Demo-IEEEQuantumWeek","type":"Microsoft.Quantum/Workspaces","location":"westus","identity":{"principalId":"615aeb2b-e7f2-4b60-9a2e-7a1eef79e2a8","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"createdTime":"2020-09-16T21:30:19.4128348Z","changedTime":"2021-07-27T05:51:09.6892426Z","provisioningState":"Succeeded","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testalias-e2e-tests-canary-rg/providers/microsoft.quantum/Workspaces/e2e-tests-workspace","name":"e2e-tests-workspace","type":"microsoft.quantum/Workspaces","location":"eastus2euap","createdTime":"2020-09-22T21:18:21.0810019Z","changedTime":"2021-07-27T05:47:14.7272638Z","provisioningState":"Succeeded"}]}' headers: cache-control: - no-cache content-length: - - '158478' + - '357151' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:57 GMT + - Fri, 27 May 2022 17:09:30 GMT expires: - '-1' pragma: @@ -139,24 +307,24 @@ interactions: ParameterSetName: - -g -w -l -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2022-01-10-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-09T22:52:06.6450832Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"ionq-standard","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-14T16:49:38.6414588Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"DZH3178M639F","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"},{"providerId":"Microsoft.Simulator","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft.Simulator","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"aq-internal-testing","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded","resourceUsageId":"45ad12c0-48b2-4339-b31b-c0e34b8fce4a"},{"providerId":"quantinuum","providerSku":"test1","applicationName":"e2e-qsharp-tests-quantinuum","provisioningState":"Succeeded","resourceUsageId":"9cbc9cad-9837-4fae-be4b-53909ad7277f"},{"providerId":"rigetti","providerSku":"rigetti-private-beta","applicationName":"e2e-qsharp-tests-rigetti","provisioningState":"Succeeded"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' headers: cache-control: - no-cache content-length: - - '1707' + - '2227' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:57 GMT + - Fri, 27 May 2022 17:09:30 GMT etag: - - '"000088b0-0000-0800-0000-6111b1970000"' + - '"6000c54b-0000-0800-0000-6258510c0000"' expires: - '-1' pragma: @@ -188,24 +356,24 @@ interactions: ParameterSetName: - -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-qsharp-tests?api-version=2022-01-10-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"a77d91dc-971b-4cf7-90c8-f183194249bc","lastModifiedByType":"Application","lastModifiedAt":"2021-08-09T22:52:06.6450832Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"ionq-standard","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/Workspaces/e2e-qsharp-tests","name":"e2e-qsharp-tests","type":"microsoft.quantum/workspaces","location":"westus2","tags":{},"systemData":{"createdBy":"anpaz@microsoft.com","createdByType":"User","createdAt":"2021-04-13T19:10:58.0366776Z","lastModifiedBy":"anpaz@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-04-14T16:49:38.6414588Z"},"identity":{"principalId":"0dbdbf52-26d4-470c-9234-bfa298dcda68","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"DZH3178M639F","applicationName":"e2e-qsharp-tests-Microsoft","provisioningState":"Succeeded"},{"providerId":"toshiba","providerSku":"toshiba-solutionseconds","applicationName":"e2e-qsharp-tests-toshiba","provisioningState":"Succeeded","resourceUsageId":"528149b6-fc29-4fcc-8cd6-c4cf345af146"},{"providerId":"honeywell","providerSku":"test1","applicationName":"e2e-qsharp-tests-honeywell","provisioningState":"Succeeded","resourceUsageId":"6d1769a8-a82e-4e5e-b1c8-1585dfa15467"},{"providerId":"Microsoft.Simulator","providerSku":"Basic","applicationName":"e2e-qsharp-tests-Microsoft.Simulator","provisioningState":"Succeeded"},{"providerId":"1qbit","providerSku":"1qbit-internal-free-plan","applicationName":"e2e-qsharp-tests-1qbit","provisioningState":"Succeeded"},{"providerId":"ionq","providerSku":"aq-internal-testing","applicationName":"e2e-qsharp-tests-ionq","provisioningState":"Succeeded","resourceUsageId":"45ad12c0-48b2-4339-b31b-c0e34b8fce4a"},{"providerId":"quantinuum","providerSku":"test1","applicationName":"e2e-qsharp-tests-quantinuum","provisioningState":"Succeeded","resourceUsageId":"9cbc9cad-9837-4fae-be4b-53909ad7277f"},{"providerId":"rigetti","providerSku":"rigetti-private-beta","applicationName":"e2e-qsharp-tests-rigetti","provisioningState":"Succeeded"}],"provisioningState":"Succeeded","usable":"Yes","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests","endpointUri":"https://e2e-qsharp-tests.westus2.quantum.azure.com"}}' headers: cache-control: - no-cache content-length: - - '1707' + - '2227' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:57 GMT + - Fri, 27 May 2022 17:09:31 GMT etag: - - '"000088b0-0000-0800-0000-6111b1970000"' + - '"6000c54b-0000-0800-0000-6258510c0000"' expires: - '-1' pragma: diff --git a/src/quantum/azext_quantum/tests/latest/recordings/test_workspace_create_destroy.yaml b/src/quantum/azext_quantum/tests/latest/recordings/test_workspace_create_destroy.yaml index c60fd2034c4..d748cd9e227 100644 --- a/src/quantum/azext_quantum/tests/latest/recordings/test_workspace_create_destroy.yaml +++ b/src/quantum/azext_quantum/tests/latest/recordings/test_workspace_create_destroy.yaml @@ -13,10 +13,10 @@ interactions: ParameterSetName: - -g -w -l -a -r -o --skip-role-assignment User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Quantum/locations/westus2/offerings?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Quantum/locations/westus2/offerings?api-version=2022-01-10-preview response: body: string: "{\"value\":[{\"id\":\"1qbit\",\"name\":\"1Qloud Optimization Platform\",\"properties\":{\"description\":\"1QBit @@ -28,37 +28,46 @@ interactions: a QUBO problem\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"1qbit.pticm\",\"name\":\"1QBit Quadratic Parallel Tempering Isoenergetic Cluster Moves Solver\",\"description\":\"The parallel tempering with isoenergetic cluster moves (PTICM) solver is a Monte - Carlo approach to solving QUBO problems\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"1qbit-internal-free-plan\",\"version\":\"1.0.1\",\"name\":\"1QBit + Carlo approach to solving QUBO problems\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"1qbit-internal-free-plan\",\"version\":\"1.0.3\",\"name\":\"1QBit No Charge Plan\",\"description\":\"1QBit plan with no charge for specific - customer arrangements\",\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu + customer arrangements\",\"autoAdd\":false,\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu Search Solver
Path-Relinking Solver
PTICM Solver\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"Free - for select customers\"}]},{\"id\":\"1qbit-fixed-monthly-202012\",\"version\":\"1.0.1\",\"name\":\"Fixed + for select customers\"}]},{\"id\":\"1qbit-fixed-monthly-202012\",\"version\":\"1.0.3\",\"name\":\"Fixed Monthly Plan\",\"description\":\"This plan provides access to all 1QBit quantum-inspired - optimization solvers with a flat monthly fee\",\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu + optimization solvers with a flat monthly fee\",\"autoAdd\":false,\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu Search Solver
Path-Relinking Solver
PTICM Solver\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"$7500 - USD per month\"}]},{\"id\":\"1qbit-pay-as-you-go-20210428\",\"version\":\"1.0.1\",\"name\":\"Pay + USD per month\"}]},{\"id\":\"1qbit-pay-as-you-go-20210428\",\"version\":\"1.0.3\",\"name\":\"Pay As You Go by CPU Usage\",\"description\":\"This plan provides access to all - 1QBit quantum-inspired optimization solvers with a pay as you go pricing\",\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu + 1QBit quantum-inspired optimization solvers with a pay as you go pricing\",\"autoAdd\":false,\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu Search Solver
Path-Relinking Solver
PTICM Solver\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"$0.075 per minute; rounded up to nearest second, with a minimum 1-second charge per solve request\"}]}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"honeywell\",\"name\":\"Honeywell Quantum Solutions\",\"properties\":{\"description\":\"Access to Honeywell Quantum Solutions' trapped-ion systems\",\"providerType\":\"qe\",\"company\":\"Honeywell\",\"managedApplication\":{\"publisherId\":\"honeywell-quantum\",\"offerId\":\"honeywell-quantum-aq\"},\"targets\":[{\"id\":\"honeywell.hqs-lt-s1\",\"name\":\"Honeywell - System Model: H1\",\"description\":\"Honeywell System Model H1\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s1-apival\",\"name\":\"H1 - API Validator\",\"description\":\"Honeywell System Model H1 API Validator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s1-sim\",\"name\":\"H1 - Simulator\",\"description\":\"Honeywell System Model H1 Simulator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"standard3\",\"version\":\"1.0.1\",\"name\":\"Standard\",\"description\":\"Monthly - subscription plan with 10K Honeywell quantum credits (HQCs) / month, available - through queue\",\"restrictedAccessUri\":\"mailto:HoneywellAzureQuantumSupport@Honeywell.com\",\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System - Model H1 API Validator
System Model H1 (10 qubits)\"},{\"id\":\"price\",\"value\":\"$ - 125,000 USD / Month\"}]},{\"id\":\"premium3\",\"version\":\"1.0.1\",\"name\":\"Premium\",\"description\":\"Monthly - subscription plan with 17K Honeywell quantum credits (HQCs) / month, available - through queue\",\"restrictedAccessUri\":\"mailto:HoneywellAzureQuantumSupport@Honeywell.com\",\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System - Model H1 API Validator
System Model H1 (10 qubits)\"},{\"id\":\"price\",\"value\":\"$ - 175,000 USD / Month\"}]},{\"id\":\"test1\",\"version\":\"1.0.1\",\"name\":\"Partner + System Model: H1\",\"description\":\"Honeywell System Model H1\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s2\",\"name\":\"Honeywell + System Model: H1-2\",\"description\":\"Honeywell System Model H1-2\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt\",\"name\":\"Honeywell + System Model: H1 Family\",\"description\":\"Honeywell System Model H1 Family\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s1-apival\",\"name\":\"H1 + API Validator\",\"description\":\"Honeywell System Model H1 API Validator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s2-apival\",\"name\":\"H1-2 + API Validator\",\"description\":\"Honeywell System Model H1-2 API Validator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s1-sim\",\"name\":\"H1 + Simulator\",\"description\":\"Honeywell System Model H1 Simulator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"test1\",\"version\":\"1.0.1\",\"name\":\"Partner Access\",\"description\":\"Charge-free access to Honeywell System Model H1 - for initial Azure integration verification\",\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\",\"honeywell.hqs-lt-s1-sim\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System - Model H0 API Validator
System Model H0 (6 qubits)\"},{\"id\":\"price\",\"value\":\"Free - for validation\"}]}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"ionq\",\"name\":\"IonQ\",\"properties\":{\"description\":\"IonQ\u2019s + for initial Azure integration verification\",\"autoAdd\":false,\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\",\"honeywell.hqs-lt-s2\",\"honeywell.hqs-lt-s2-apival\",\"honeywell.hqs-lt-s1-sim\",\"honeywell.hqs-lt\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System + Model H0 API Validator
System Model H0 (6 qubits)\"},{\"id\":\"limits\",\"value\":\"No + limit for integration testing\"},{\"id\":\"price\",\"value\":\"Free for validation\"}]},{\"id\":\"credits1\",\"version\":\"1.0.1\",\"name\":\"Azure + Quantum Credits\",\"description\":\"The Azure Quantum Credits program provides + sponsored access to Quantinuum hardware through Azure. You will not be charged + for usage created under the credits program, up to the limit of your credit + grant.\",\"autoAdd\":false,\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\",\"honeywell.hqs-lt-s2\",\"honeywell.hqs-lt-s2-apival\",\"honeywell.hqs-lt-s1-sim\",\"honeywell.hqs-lt\"],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System + Model H1 API Validator
Quantinuum H1, Powered by Honeywell (10 qubits)\"},{\"id\":\"limits\",\"value\":\"Up + to $500 of Quantinuum compute, unless you have received an additional project-based grant.

While availability + lasts, credits must be used within 6 months.

Learn more about quota for credits.\"},{\"id\":\"price\",\"value\":\"Free, + up to the granted value of your credits.\"}]}],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\",\"quota\":40,\"period\":\"Infinite\",\"name\":\"H1 + Quantum Credit\",\"description\":\"H1 Quantum Credits are used to calculate + the cost of a job. See Honeywell documentation for more information.\",\"unit\":\"HQC\",\"unitPlural\":\"HQC's\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\",\"quota\":160,\"period\":\"Infinite\",\"name\":\"Honeywell + Emulator QC\",\"description\":\"Honeywell Emulator Credits are used for job + estimation and the simulator.\",\"unit\":\"EHQC\",\"unitPlural\":\"EHQC's\"}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"limits\",\"name\":\"Limits\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"ionq\",\"name\":\"IonQ\",\"properties\":{\"description\":\"IonQ\u2019s trapped ion quantum computers perform calculations by manipulating charged atoms of Ytterbium held in a vacuum with lasers.\",\"providerType\":\"qe\",\"company\":\"IonQ\",\"managedApplication\":{\"publisherId\":\"ionqinc1582730893633\",\"offerId\":\"ionq-aq\"},\"targets\":[{\"id\":\"ionq.simulator\",\"name\":\"Trapped Ion Quantum Computer Simulator\",\"description\":\"GPU-accelerated idealized @@ -66,50 +75,57 @@ interactions: its quantum computers. No errors are modeled at present.\",\"acceptedDataFormats\":[\"ionq.circuit.v1\"],\"acceptedContentEncodings\":[\"identity\"]},{\"id\":\"ionq.qpu\",\"name\":\"Trapped Ion Quantum Computer\",\"description\":\"IonQ's quantum computer is dynamically reconfigurable in software to use up to 11 qubits. All qubits are fully connected, - meaning you can run a two-qubit gate between any pair.\",\"acceptedDataFormats\":[\"ionq.circuit.v1\"],\"acceptedContentEncodings\":[\"identity\"]}],\"skus\":[{\"id\":\"pay-as-you-go\",\"version\":\"0.0.5\",\"name\":\"Pay + meaning you can run a two-qubit gate between any pair.\",\"acceptedDataFormats\":[\"ionq.circuit.v1\"],\"acceptedContentEncodings\":[\"identity\"]}],\"skus\":[{\"id\":\"pay-as-you-go-cred\",\"version\":\"0.0.5\",\"name\":\"Azure + Quantum Credits\",\"description\":\"The Azure Quantum Credits program provides + sponsored access to IonQ hardware through Azure. You will not be charged for + usage created under the credits program.\",\"autoAdd\":true,\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"quotaDimensions\":[{\"id\":\"qgs\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ + Simulator
Trapped + Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"$500 worth of IonQ + compute, unless you have received an additional project-based grant.

While availability + lasts, credits must be used within 6 months.

Learn more about quota for credits.\"},{\"id\":\"price\",\"value\":\"Free, + up to the granted value of your credits.\"}]},{\"id\":\"pay-as-you-go\",\"version\":\"0.0.5\",\"name\":\"Pay As You Go\",\"description\":\"A la carte access based on resource requirements - and usage.\",\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ - Simulator
Trapped Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"$ + and usage.\",\"autoAdd\":false,\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ + Simulator
Trapped + Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"No limit\"},{\"id\":\"price\",\"value\":\"$ 3,000.00 USD / hour (est)
See preview documentation for details\"}]},{\"id\":\"pay-as-you-go-cred\",\"version\":\"0.0.5\",\"name\":\"Azure - Quantum Credits\",\"description\":\"The Azure Quantum Credits program provides - sponsored access to quantum hardware through Azure. You will not be charged - for usage created under the credits program, up to the limit of your credit - grant.\",\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"quotaDimensions\":[{\"id\":\"qgs\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ - Simulator
Trapped Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"Based - on granted value.\"},{\"id\":\"price\",\"value\":\"Sponsored\"}]},{\"id\":\"ionq-standard\",\"version\":\"0.0.5\",\"name\":\"IonQ - Standard\",\"description\":\"You're testing, so it's free! As in beer.\",\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ - Simulator
Trapped Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"Free\"}]}],\"quotaDimensions\":[{\"id\":\"qgs\",\"scope\":\"Subscription\",\"quota\":0,\"period\":\"Infinite\",\"name\":\"Credit - [Subscription]\",\"description\":\"Credited resource usage against your account. - See IonQ documentation for more information: https://aka.ms/AQ/IonQ/ProviderDocumentation.\",\"unit\":\"qubit-gate-shot\",\"unitPlural\":\"qubit-gate-shots\"}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"Microsoft\",\"name\":\"Microsoft + target=\\\"_blank\\\">See preview documentation for details\"}]},{\"id\":\"aq-internal-testing\",\"version\":\"0.0.1\",\"name\":\"Microsoft + Internal Testing\",\"description\":\"You're testing, so it's free! As in beer.\",\"autoAdd\":false,\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ + Simulator
Trapped Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"Free\"}]}],\"quotaDimensions\":[{\"id\":\"qgs\",\"scope\":\"Subscription\",\"quota\":16666667,\"period\":\"Infinite\",\"name\":\"QPU + Credit\",\"description\":\"Credited resource usage against your account. See + IonQ documentation for more information: https://aka.ms/AQ/IonQ/ProviderDocumentation.\",\"unit\":\"qubit-gate-shot\",\"unitPlural\":\"qubit-gate-shots\"}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"quota\",\"name\":\"Limits\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"Microsoft\",\"name\":\"Microsoft QIO\",\"properties\":{\"description\":\"Ground-breaking optimization algorithms - inspired by decades of quantum research.\",\"providerType\":\"qio\",\"company\":\"Microsoft\",\"managedApplication\":{\"publisherId\":\"N/A\",\"offerId\":\"N/A\"},\"targets\":[{\"id\":\"microsoft.paralleltempering.cpu\",\"name\":\"microsoft.paralleltempering.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing-parameterfree.cpu\",\"name\":\"microsoft.simulatedannealing-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.paralleltempering-parameterfree.cpu\",\"name\":\"microsoft.paralleltempering-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing.cpu\",\"name\":\"microsoft.simulatedannealing.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu.cpu\",\"name\":\"microsoft.tabu.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu-parameterfree.cpu\",\"name\":\"microsoft.tabu-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.qmc.cpu\",\"name\":\"microsoft.qmc.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.populationannealing.cpu\",\"name\":\"microsoft.populationannealing.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.substochasticmontecarlo.cpu\",\"name\":\"microsoft.substochasticmontecarlo.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"name\":\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.populationannealing-parameterfree.cpu\",\"name\":\"microsoft.populationannealing-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"Basic\",\"version\":\"1.0\",\"name\":\"Private + inspired by decades of quantum research.\",\"providerType\":\"qio\",\"company\":\"Microsoft\",\"managedApplication\":{\"publisherId\":\"N/A\",\"offerId\":\"N/A\"},\"targets\":[{\"id\":\"microsoft.paralleltempering.cpu\",\"name\":\"microsoft.paralleltempering.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing-parameterfree.cpu\",\"name\":\"microsoft.simulatedannealing-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.paralleltempering-parameterfree.cpu\",\"name\":\"microsoft.paralleltempering-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing.cpu\",\"name\":\"microsoft.simulatedannealing.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu.cpu\",\"name\":\"microsoft.tabu.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu.cpu.experimental\",\"name\":\"microsoft.tabu.cpu.experimental\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.qmc.cpu.experimental\",\"name\":\"microsoft.qmc.cpu.experimental\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu-parameterfree.cpu.experimental\",\"name\":\"microsoft.tabu-parameterfree.cpu.experimental\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing.cpu.experimental\",\"name\":\"microsoft.simulatedannealing.cpu.experimental\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing-parameterfree.cpu.experimental\",\"name\":\"microsoft.simulatedannealing-parameterfree.cpu.experimental\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.paralleltempering.cpu.experimental\",\"name\":\"microsoft.paralleltempering.cpu.experimental\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.paralleltempering-parameterfree.cpu.experimental\",\"name\":\"microsoft.paralleltempering-parameterfree.cpu.experimental\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu-parameterfree.cpu\",\"name\":\"microsoft.tabu-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.qmc.cpu\",\"name\":\"microsoft.qmc.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.populationannealing.cpu\",\"name\":\"microsoft.populationannealing.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.substochasticmontecarlo.cpu\",\"name\":\"microsoft.substochasticmontecarlo.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"name\":\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.populationannealing-parameterfree.cpu\",\"name\":\"microsoft.populationannealing-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"Basic\",\"version\":\"1.0\",\"name\":\"Private Preview\",\"description\":\"Free Private Preview access through February 15 - 2020\",\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"microsoft.populationannealing-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated + 2020\",\"autoAdd\":false,\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.populationannealing-parameterfree.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"microsoft.populationannealing-parameterfree.cpu\",\"microsoft.paralleltempering-parameterfree.cpu.experimental\",\"microsoft.paralleltempering.cpu.experimental\",\"microsoft.simulatedannealing-parameterfree.cpu.experimental\",\"microsoft.simulatedannealing.cpu.experimental\",\"microsoft.tabu-parameterfree.cpu.experimental\",\"microsoft.tabu.cpu.experimental\",\"microsoft.qmc.cpu.experimental\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
Population Annealing
all solvers above have a parameter-free mode

Quantum Monte Carlo\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 5 concurrent jobs\"},{\"id\":\"quota\",\"value\":\"CPU based: 5 hours / month\"},{\"id\":\"price\",\"value\":\"$ 0\"}]},{\"id\":\"DZH3178M639F\",\"version\":\"1.0\",\"name\":\"Learn & Develop\",\"description\":\"Learn - and develop with Optimization solutions.\",\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":20},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\",\"quota\":2},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated - Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
all - solvers above have a parameter-free mode

Quantum Monte Carlo
Population - Annealing\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 5 concurrent jobs\"},{\"id\":\"quota\",\"value\":\"CPU - based: 20 hours / month\"},{\"id\":\"price\",\"value\":\"Pay as you go
1 - free hour included

See pricing - sheet\"}]},{\"id\":\"DZH318RV7MW4\",\"version\":\"1.0\",\"name\":\"Scale\",\"description\":\"Deploy - world-class Optimization solutions.\",\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":1000},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\",\"quota\":100},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\",\"quota\":10},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\",\"quota\":1000},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated - Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
all - solvers above have a parameter-free mode

Quantum Monte Carlo
Population - Annealing\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 100 concurrent + and develop with Optimization solutions.\",\"autoAdd\":true,\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.populationannealing-parameterfree.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":20},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\",\"quota\":2},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated + Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
Population + Annealing
all solvers above have a parameter-free mode

Quantum + Monte Carlo\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 5 concurrent + jobs\"},{\"id\":\"quota\",\"value\":\"CPU based: 20 hours / month\"},{\"id\":\"price\",\"value\":\"Pay + as you go
1 free hour included

See + pricing sheet\"}]},{\"id\":\"DZH318RV7MW4\",\"version\":\"1.0\",\"name\":\"Scale\",\"description\":\"Deploy + world-class Optimization solutions.\",\"autoAdd\":false,\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.populationannealing-parameterfree.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":1000},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\",\"quota\":100},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\",\"quota\":10},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\",\"quota\":1000},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated + Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
Population + Annealing
all solvers above have a parameter-free mode

Quantum + Monte Carlo\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 100 concurrent jobs\"},{\"id\":\"quota\",\"value\":\"Up to 50,000 hours / month\"},{\"id\":\"price\",\"value\":\"Pay as you go
1 free hour included

See pricing sheet\"}]},{\"id\":\"EarlyAccess\",\"version\":\"1.0\",\"name\":\"Early Access\",\"description\":\"Help us test new capabilities in our Microsoft Optimization provider. This SKU is available to a select group of users and - limited to targets that we are currently running an Early Access test for.\",\"targets\":[\"microsoft.populationannealing-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":10},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Population - Annealing Parameter Free\"},{\"id\":\"quota\",\"value\":\"CPU based: 10 hours - / month\"},{\"id\":\"price\",\"value\":\"$ 0\"}]}],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":5,\"period\":\"Monthly\",\"name\":\"CPU + limited to targets that we are currently running an Early Access test for.\",\"autoAdd\":false,\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu.experimental\",\"microsoft.paralleltempering.cpu.experimental\",\"microsoft.simulatedannealing-parameterfree.cpu.experimental\",\"microsoft.simulatedannealing.cpu.experimental\",\"microsoft.tabu-parameterfree.cpu.experimental\",\"microsoft.tabu.cpu.experimental\",\"microsoft.qmc.cpu.experimental\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":10},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Tabu, + PT, SA, QMC, Tabu-PF, PT-PF and SA-PF experimental\"},{\"id\":\"quota\",\"value\":\"CPU + based: 10 hours / month\"},{\"id\":\"price\",\"value\":\"$ 0\"}]}],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":5,\"period\":\"Monthly\",\"name\":\"CPU Solver Hours [Workspace]\",\"description\":\"The amount of CPU solver time you may use per month within this workspace\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"CPU Solver Hours [Subscription]\",\"description\":\"The amount of CPU solver time @@ -119,51 +135,263 @@ interactions: Solver Hours [Subscription]\",\"description\":\"The amount of FPGA solver time you may use per month shared by all workspaces within the subscription\",\"unit\":\"hour\",\"unitPlural\":\"hours\"}],\"pricingDimensions\":[{\"id\":\"targets\",\"name\":\"Targets available\"},{\"id\":\"perf\",\"name\":\"Performance\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Price - per month\"}]}},{\"id\":\"qci\",\"name\":\"Quantum Circuits, Inc.\",\"properties\":{\"description\":\"Superconducting - circuits QC\",\"providerType\":\"qe\",\"company\":\"Quantum Circuits, Inc.\",\"managedApplication\":{\"publisherId\":\"quantumcircuitsinc1598045891596\",\"offerId\":\"quantumcircuitsinc-aq-test-preview\"},\"targets\":[{\"id\":\"qci.machine1\",\"name\":\"Machine - 1\",\"description\":\"Machine 1 Description\",\"acceptedDataFormats\":[\"qci.qcdl.v1\"],\"acceptedContentEncodings\":[\"identity\"]},{\"id\":\"qci.simulator\",\"name\":\"Simulator\",\"description\":\"Simulator - Description\",\"acceptedDataFormats\":[\"qci.qcdl.v1\"],\"acceptedContentEncodings\":[\"identity\"]}],\"skus\":[{\"id\":\"test\",\"version\":\"0.1.0\",\"name\":\"test\",\"description\":\"test - sku\",\"targets\":[\"qci.simulator\",\"qci.machine1\"],\"quotaDimensions\":[{\"id\":\"jobcount\",\"scope\":\"Workspace\"}]}],\"quotaDimensions\":[{\"id\":\"jobcount\",\"scope\":\"Workspace\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"Job - Count\",\"description\":\"Number of jobs you can run in a month.\",\"unit\":\"job\",\"unitPlural\":\"jobs\"}]}},{\"id\":\"toshiba\",\"name\":\"Toshiba - SBM\",\"properties\":{\"description\":\"Toshiba Simulated Bifurcation Machine - (SBM) for Azure Quantum\",\"providerType\":\"qio\",\"company\":\"Toshiba Digital - Solutions Corporation\",\"managedApplication\":{\"publisherId\":\"2812187\",\"offerId\":\"toshiba-aq\"},\"targets\":[{\"id\":\"toshiba.sbm.ising\",\"name\":\"Ising - solver\",\"description\":\"SBM is a practical and ready-to-use ISING machine - that solves large-scale \\\"combinatorial optimization problems\\\" at high - speed.\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"toshiba-solutionseconds\",\"version\":\"1.0.1\",\"name\":\"Pay - As You Go\",\"description\":\"This is the only plan for using SBM in Azure - Quantum Private Preview.\",\"targets\":[\"toshiba.sbm.ising\"],\"pricingDetails\":[{\"id\":\"price\",\"value\":\"This - plan is available for free during private preview.\"}]}],\"pricingDimensions\":[{\"id\":\"price\",\"name\":\"Pricing\"}]}}]}" + per month\"}]}},{\"id\":\"Microsoft.FleetManagement\",\"name\":\"Microsoft + Fleet Management Solution\",\"properties\":{\"description\":\"(Preview) Leverage + Azure Quantum's advanced optimization algorithms to solve fleet management + problems.\",\"providerType\":\"qio\",\"company\":\"Microsoft\",\"managedApplication\":{\"publisherId\":\"N/A\",\"offerId\":\"N/A\"},\"targets\":[{\"id\":\"microsoft.fleetmanagement\",\"name\":\"microsoft.fleetmanagement\",\"acceptedDataFormats\":[\"microsoft.fleetmanagement.v1\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"Basic\",\"version\":\"1.0\",\"name\":\"Private + Preview\",\"description\":\"Private preview fleet management SKU.\",\"autoAdd\":false,\"targets\":[\"microsoft.fleetManagement\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"}]}],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":20,\"period\":\"Monthly\",\"name\":\"Job + Hours [Workspace]\",\"description\":\"The amount of job time you may use per + month within this workspace\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"Job + Hours [Subscription]\",\"description\":\"The amount of job time you may use + per month shared by all workspaces within the subscription\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\",\"quota\":5}]}},{\"id\":\"Microsoft.Simulator\",\"name\":\"Microsoft + Simulation Tools\",\"properties\":{\"description\":\"Microsoft Simulation + Tools.\",\"providerType\":\"qe\",\"company\":\"Microsoft\",\"managedApplication\":{\"publisherId\":\"N/A\",\"offerId\":\"N/A\"},\"targets\":[{\"id\":\"microsoft.simulator.fullstate\",\"name\":\"Quantum + Simulator\",\"acceptedDataFormats\":[\"microsoft.qir.v1\",\"qir.v1/full-profile\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"Basic\",\"version\":\"1.0\",\"name\":\"Private + Preview\",\"description\":\"Private preview simulator SKU.\",\"autoAdd\":false,\"targets\":[\"microsoft.simulator.fullstate\"],\"quotaDimensions\":[{\"id\":\"simulator_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"simulator_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_simulator_jobs\",\"scope\":\"Workspace\"}]}],\"quotaDimensions\":[{\"id\":\"simulator_job_hours\",\"scope\":\"Workspace\",\"quota\":20,\"period\":\"Monthly\",\"name\":\"Simulator + Hours [Workspace]\",\"description\":\"The amount of simulator time you may + use per month within this workspace\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"simulator_job_hours\",\"scope\":\"Subscription\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"Simulator + Hours [Subscription]\",\"description\":\"The amount of simulator time you + may use per month shared by all workspaces within the subscription\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"concurrent_simulator_jobs\",\"scope\":\"Workspace\",\"quota\":5}]}},{\"id\":\"qci\",\"name\":\"Quantum + Circuits, Inc.\",\"properties\":{\"description\":\"Superconducting Circuits + Quantum Computing Systems\",\"providerType\":\"qe\",\"company\":\"Quantum + Circuits, Inc.\",\"managedApplication\":{\"publisherId\":\"quantumcircuitsinc1598045891596\",\"offerId\":\"qci-aq\"},\"targets\":[{\"id\":\"qci.machine1\",\"name\":\"Machine + 1\",\"description\":\"Machine 1 Description (TBD)\",\"acceptedDataFormats\":[\"qci.qcdl.v1\",\"qci.qir.v1\"],\"acceptedContentEncodings\":[\"identity\"]},{\"id\":\"qci.simulator\",\"name\":\"Simulator\",\"description\":\"Simulator + Description (TBD)\",\"acceptedDataFormats\":[\"qci.qcdl.v1\",\"qci.qir.v1\"],\"acceptedContentEncodings\":[\"identity\"]}],\"skus\":[{\"id\":\"qci-syspreview\",\"version\":\"0.1.0\",\"name\":\"System + Preview\",\"description\":\"A metered pricing preview of QCI's Systems and + Simulators\",\"autoAdd\":false,\"targets\":[\"qci.simulator\",\"qci.machine1\"],\"quotaDimensions\":[{\"id\":\"jobcount\",\"scope\":\"Workspace\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Integration + testing plan for Microsoft\"},{\"id\":\"quota\",\"value\":\"1000 jobs per + month\"},{\"id\":\"price\",\"value\":\"\"}]},{\"id\":\"qci-syspreview-free\",\"version\":\"0.1.0\",\"name\":\"System + Preview Free\",\"description\":\"A free preview of QCI's Systems and Simulators\",\"autoAdd\":false,\"targets\":[\"qci.simulator\",\"qci.machine1\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Integration + testing plan for Microsoft\"},{\"id\":\"quota\",\"value\":\"Unlimited jobs\"},{\"id\":\"price\",\"value\":\"\"}]}],\"quotaDimensions\":[{\"id\":\"jobcount\",\"scope\":\"Workspace\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"Job + Count\",\"description\":\"Number of jobs you can run in a month.\",\"unit\":\"job\",\"unitPlural\":\"jobs\"}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"quantinuum\",\"name\":\"Quantinuum\",\"properties\":{\"description\":\"Access + to Quantinuum trapped-ion systems\",\"providerType\":\"qe\",\"company\":\"Quantinuum\",\"managedApplication\":{\"publisherId\":\"quantinuumllc1640113159771\",\"offerId\":\"quantinuum-aq\"},\"targets\":[{\"id\":\"quantinuum.hqs-lt-s1\",\"name\":\"Quantinuum + System Model: H1\",\"description\":\"Quantinuum System Model H1\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"quantinuum.hqs-lt-s2\",\"name\":\"Quantinuum + System Model: H1-2\",\"description\":\"Quantinuum System Model H1-2\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"quantinuum.hqs-lt\",\"name\":\"Quantinuum + System Model: H1 Family\",\"description\":\"Quantinuum System Model H1 Family\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"quantinuum.hqs-lt-s1-apival\",\"name\":\"H1 + API Validator\",\"description\":\"Quantinuum System Model H1 API Validator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"quantinuum.hqs-lt-s2-apival\",\"name\":\"H1-2 + API Validator\",\"description\":\"Quantinuum System Model H1-2 API Validator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"quantinuum.hqs-lt-s1-sim\",\"name\":\"H1-1 + Simulator\",\"description\":\"Quantinuum System Model H1-1 Simulator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"quantinuum.hqs-lt-s2-sim\",\"name\":\"H1-2 + Simulator\",\"description\":\"Quantinuum System Model H1-2 Simulator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"credits1\",\"version\":\"1.0.0\",\"name\":\"Azure + Quantum Credits\",\"description\":\"The Azure Quantum Credits program provides + sponsored access to Quantinuum hardware through Azure. You will not be charged + for usage created under the credits program, up to the limit of your credit + grant.\",\"autoAdd\":false,\"targets\":[\"quantinuum.hqs-lt-s1\",\"quantinuum.hqs-lt-s1-apival\",\"quantinuum.hqs-lt-s2\",\"quantinuum.hqs-lt-s2-apival\",\"quantinuum.hqs-lt-s1-sim\",\"quantinuum.hqs-lt-s2-sim\",\"quantinuum.hqs-lt\"],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System + Model H1 API Validator
Quantinuum H1, Powered by Quantinuum (10 qubits)\"},{\"id\":\"limits\",\"value\":\"Up + to $500 of Quantinuum compute, unless you have received an additional project-based grant.

While availability + lasts, credits must be used within 6 months.

Learn more about quota for credits.\"},{\"id\":\"price\",\"value\":\"Free, + up to the granted value of your credits.\"}]},{\"id\":\"premium1\",\"version\":\"1.0.0\",\"name\":\"Premium\",\"description\":\"Monthly + subscription plan with 17K Quantinuum quantum credits (HQCs) / month, available + through queue\",\"autoAdd\":false,\"restrictedAccessUri\":\"mailto:QuantinuumAzureQuantumSupport@Quantinuum.com\",\"targets\":[\"quantinuum.hqs-lt-s1\",\"quantinuum.hqs-lt-s1-apival\",\"quantinuum.hqs-lt-s2\",\"quantinuum.hqs-lt-s2-apival\",\"quantinuum.hqs-lt-s1-sim\",\"quantinuum.hqs-lt-s2-sim\",\"quantinuum.hqs-lt\"],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System + Model H1 API Validator
System Model H1 (10 qubits)\"},{\"id\":\"limits\",\"value\":\"17K + H1 Quantum Credits (HQCs) / month\"},{\"id\":\"price\",\"value\":\"$ 175,000 + USD / Month\"}]},{\"id\":\"standard1\",\"version\":\"1.0.0\",\"name\":\"Standard\",\"description\":\"Monthly + subscription plan with 10K Quantinuum quantum credits (HQCs) / month, available + through queue\",\"autoAdd\":false,\"restrictedAccessUri\":\"mailto:QuantinuumAzureQuantumSupport@Quantinuum.com\",\"targets\":[\"quantinuum.hqs-lt-s1\",\"quantinuum.hqs-lt-s1-apival\",\"quantinuum.hqs-lt-s2\",\"quantinuum.hqs-lt-s2-apival\",\"quantinuum.hqs-lt-s1-sim\",\"quantinuum.hqs-lt-s2-sim\",\"quantinuum.hqs-lt\"],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System + Model H1 API Validator
System Model H1 (10 qubits)\"},{\"id\":\"limits\",\"value\":\"10K + H1 Quantum Credits (HQCs) / month\"},{\"id\":\"price\",\"value\":\"$ 125,000 + USD / Month\"}]},{\"id\":\"test1\",\"version\":\"1.0.0\",\"name\":\"Partner + Access\",\"description\":\"Charge-free access to Quantinuum System Model H1 + for initial Azure integration verification\",\"autoAdd\":false,\"targets\":[\"quantinuum.hqs-lt-s1\",\"quantinuum.hqs-lt-s1-apival\",\"quantinuum.hqs-lt-s2\",\"quantinuum.hqs-lt-s2-apival\",\"quantinuum.hqs-lt-s1-sim\",\"quantinuum.hqs-lt-s2-sim\",\"quantinuum.hqs-lt\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System + Model H0 API Validator
System Model H0 (6 qubits)\"},{\"id\":\"limits\",\"value\":\"No + limit for integration testing\"},{\"id\":\"price\",\"value\":\"Free for validation\"}]}],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\",\"quota\":40,\"period\":\"Infinite\",\"name\":\"H1 + Quantum Credit\",\"description\":\"H1 Quantum Credits are used to calculate + the cost of a job. See Quantinuum documentation for more information.\",\"unit\":\"HQC\",\"unitPlural\":\"HQC's\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\",\"quota\":160,\"period\":\"Infinite\",\"name\":\"Quantinuum + Emulator QC\",\"description\":\"Quantinuum Emulator Credits are used for submission + to the emulator.\",\"unit\":\"EHQC\",\"unitPlural\":\"EHQC's\"}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"limits\",\"name\":\"Limits\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"rigetti\",\"name\":\"Rigetti + Quantum\",\"properties\":{\"description\":\"Run quantum programs on Rigetti's + superconducting qubit-based quantum processors.\",\"providerType\":\"qe\",\"company\":\"Rigetti + Computing\",\"managedApplication\":{\"publisherId\":\"rigetticoinc1644276861431\",\"offerId\":\"rigetti-aq\"},\"targets\":[{\"id\":\"rigetti.sim.qvm\",\"name\":\"QVM\",\"description\":\"Simulate + Quil programs on the open-source Quantum Virtual Machine.\",\"acceptedDataFormats\":[\"rigetti.quil.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"rigetti.qpu.aspen-11\",\"name\":\"Aspen-11\",\"description\":\"A + 40-Qubit QPU\",\"acceptedDataFormats\":[\"rigetti.quil.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"rigetti.qpu.aspen-m-1\",\"name\":\"Aspen-M-1\",\"description\":\"An + 80-Qubit QPU\",\"acceptedDataFormats\":[\"rigetti.quil.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"rigetti-private-beta\",\"version\":\"0.0.0\",\"name\":\"Private + Preview\",\"description\":\"Limited-time free access to Rigetti quantum computers.\",\"autoAdd\":false,\"targets\":[\"rigetti.sim.qvm\",\"rigetti.qpu.aspen-11\",\"rigetti.qpu.aspen-m-1\"],\"pricingDetails\":[{\"id\":\"price\",\"value\":\"This + plan is free.\"}]}],\"quotaDimensions\":[],\"pricingDimensions\":[{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"toshiba\",\"name\":\"SQBM+ + Cloud on Azure Quantum\",\"properties\":{\"description\":\"A GPU-powered ISING + machine featuring the Simulated Bifurcation algorithm inspired by Toshiba's + research on quantum computing.\",\"providerType\":\"qio\",\"company\":\"Toshiba + Digital Solutions Corporation\",\"managedApplication\":{\"publisherId\":\"2812187\",\"offerId\":\"toshiba-aq\"},\"targets\":[{\"id\":\"toshiba.sbm.ising\",\"name\":\"Ising + solver\",\"description\":\"Originated from research on quantum bifurcation + machines, the SQBM+ is a practical and ready-to-use ISING machine that solves + large-scale \\\"combinatorial optimization problems\\\" at high speed.\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"toshiba-solutionseconds\",\"version\":\"1.0.1\",\"name\":\"Pay + As You Go\",\"description\":\"This is the only plan for using SQBM+ in Azure + Quantum Private Preview.\",\"autoAdd\":false,\"targets\":[\"toshiba.sbm.ising\"],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"toshiba.sbm.ising\"},{\"id\":\"quota\",\"value\":\"No + limit\"},{\"id\":\"price\",\"value\":\"This plan is available for free during + private preview.\"}]},{\"id\":\"learn_and_develop\",\"version\":\"1.0.1\",\"name\":\"Learn + & Develop\",\"description\":\"Learn and develop with SQBM+ (not for operational + use).\",\"autoAdd\":false,\"targets\":[\"toshiba.sbm.ising\"],\"quotaDimensions\":[{\"id\":\"learn_and_develop_concurrent_jobs\",\"scope\":\"Workspace\"},{\"id\":\"learn_and_develop_job_execution_time\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"toshiba.sbm.ising\"},{\"id\":\"quota\",\"value\":\"

Up + to 1 concurrent jobs.

1 hour of compute per month.

\"},{\"id\":\"price\",\"value\":\"This + value loaded from partner center.\"}]},{\"id\":\"performance_at_scale\",\"version\":\"1.0.1\",\"name\":\"Performance + at scale\",\"description\":\"Deploy world-class SQBM+ solutions.\",\"autoAdd\":false,\"targets\":[\"toshiba.sbm.ising\"],\"quotaDimensions\":[{\"id\":\"performance_at_scale_concurrent_jobs\",\"scope\":\"Workspace\"},{\"id\":\"performance_at_scale_job_execution_time\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"toshiba.sbm.ising\"},{\"id\":\"quota\",\"value\":\"

Up + to 3 concurrent jobs.

2,500 hours of compute per month.

\"},{\"id\":\"price\",\"value\":\"This + value loaded from partner center.\"}]}],\"quotaDimensions\":[{\"id\":\"learn_and_develop_concurrent_jobs\",\"scope\":\"Workspace\",\"quota\":1,\"name\":\"Concurrent + jobs\",\"description\":\"The number of jobs that you can submit within a single + workspace at the same time.\",\"unit\":\"job\",\"unitPlural\":\"jobs\"},{\"id\":\"learn_and_develop_job_execution_time\",\"scope\":\"Subscription\",\"quota\":1,\"period\":\"Monthly\",\"name\":\"Computing + hours per month\",\"description\":\"Computing hours within a subscription + per month.\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"performance_at_scale_concurrent_jobs\",\"scope\":\"Workspace\",\"quota\":3,\"name\":\"Concurrent + jobs\",\"description\":\"The number of jobs that you can submit within a single + workspace at the same time.\",\"unit\":\"job\",\"unitPlural\":\"jobs\"},{\"id\":\"performance_at_scale_job_execution_time\",\"scope\":\"Subscription\",\"quota\":2500,\"period\":\"Monthly\",\"name\":\"Computing + hours per month\",\"description\":\"Computing hours within a subscription + per month.\",\"unit\":\"hour\",\"unitPlural\":\"hours\"}],\"pricingDimensions\":[{\"id\":\"targets\",\"name\":\"Targets + available\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Price + per month\"}]}}]}" headers: cache-control: - no-cache content-length: - - '18125' + - '35247' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:42:55 GMT + - Fri, 27 May 2022 17:09:34 GMT expires: - '-1' + mise-correlation-id: + - 14cc126f-35f5-4e72-bfae-a2524bb86b83 pragma: - no-cache + request-context: + - appId=cid-v1:4d6ac272-7369-45c6-9036-63d733c8519f + set-cookie: + - ARRAffinity=e1ee935634f918d206fc13cec048f144deed3bb2bddcf22e95a65ea023b012fb;Path=/;HttpOnly;Secure;Domain=app-cp-westcentralus.azurewebsites.net + - ARRAffinitySameSite=e1ee935634f918d206fc13cec048f144deed3bb2bddcf22e95a65ea023b012fb;Path=/;HttpOnly;SameSite=None;Secure;Domain=app-cp-westcentralus.azurewebsites.net + - ASLBSA=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b; path=/; + secure + - ASLBSACORS=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b; + samesite=none; path=/; secure strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding + x-azure-ref: + - 0zAWRYgAAAACGqR8I+rTkQJ6AfE/AzI9TV1NURURHRTA4MjIAMzJhNzJjYWUtNWM3YS00NTk4LWEyOWYtYzkyMzM3OWUzMzcx + x-cache: + - CONFIG_NOCACHE x-content-type-options: - nosniff x-ms-providerhub-traffic: - 'True' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quantum workspace create + Connection: + - keep-alive + ParameterSetName: + - -g -w -l -a -r -o --skip-role-assignment + User-Agent: + - AZURECLI/2.36.0 azsdk-python-mgmt-marketplaceordering/1.1.0 Python/3.10.1 + (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MarketplaceOrdering/offerTypes/virtualmachine/publishers/ionqinc1582730893633/offers/ionq-aq/plans/pay-as-you-go-cred/agreements/current?api-version=2021-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MarketplaceOrdering/offerTypes/VirtualMachine/publishers/ionqinc1582730893633/offers/ionq-aq/plans/pay-as-you-go-cred/agreements/current","name":"pay-as-you-go-cred","type":"Microsoft.MarketplaceOrdering/offertypes","properties":{"publisher":"ionqinc1582730893633","product":"ionq-aq","plan":"pay-as-you-go-cred","licenseTextLink":"https://mpcprodsa.blob.core.windows.net/legalterms/3E5ED_legalterms_IONQINC1582730893633%253a24IONQ%253a2DAQ%253a24PAY%253a2DAS%253a2DYOU%253a2DGO%253a2DCRED%253a247ODGLEAK7RQISNHUEU4KJYVC6QLVZF5IANNQFGBHOKJMXWIW3OPRUADLB63ROSGS5FVYSHLINGX5BK7GF7Y2ZO24HKBHSPKMXBHFBAQ.txt","privacyPolicyLink":"https://ionq.com/privacy","marketplaceTermsLink":"https://mpcprodsa.blob.core.windows.net/marketplaceterms/3EDEF_marketplaceterms_AZUREAPPLICATION%253a24OF7TIMHFEMPZHRBYEO3SVLC7Q2MPXXAASJ5BO2FUY4UC6EZCN5TIL2KIGTA7WI2CSM3WV4L7QMPNRYPE2I7BOCM34RGOL3XTC6ADIMI.txt","retrieveDatetime":"2022-05-27T17:09:37.4133882Z","signature":"DLYKWHTVY3FCRG2MKOSQG3LPX5LXTBI2MYRYZ42N4TWQPA5RFJBYAWKQMC2JQUTZAWSLLBLHJ6CYPIDIN6RYAKQ6KUX6BUEBHUYFP5Y","accepted":true},"systemData":{"createdBy":"916dfd6d-030c-4bd9-b579-7bb6d1926e97","createdByType":"ManagedIdentity","createdAt":"2022-05-27T17:09:37.6008975+00:00","lastModifiedBy":"916dfd6d-030c-4bd9-b579-7bb6d1926e97","lastModifiedByType":"ManagedIdentity","lastModifiedAt":"2022-05-27T17:09:37.6008975+00:00"}}' + headers: + cache-control: + - no-cache + content-length: + - '1448' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 27 May 2022 17:09:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + set-cookie: + - ARRAffinity=f8b348ab603aeb654affd202b4559f2bcbc3b8205c82a60887bb0f9057a54b31;Path=/;HttpOnly;Secure;Domain=storeapi.azure.com + - ARRAffinitySameSite=f8b348ab603aeb654affd202b4559f2bcbc3b8205c82a60887bb0f9057a54b31;Path=/;HttpOnly;SameSite=None;Secure;Domain=storeapi.azure.com + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quantum workspace create + Connection: + - keep-alive + ParameterSetName: + - -g -w -l -a -r -o --skip-role-assignment + User-Agent: + - AZURECLI/2.36.0 azsdk-python-mgmt-marketplaceordering/1.1.0 Python/3.10.1 + (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MarketplaceOrdering/offerTypes/virtualmachine/publishers/ionqinc1582730893633/offers/ionq-aq/plans/pay-as-you-go-cred/agreements/current?api-version=2021-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MarketplaceOrdering/offerTypes/VirtualMachine/publishers/ionqinc1582730893633/offers/ionq-aq/plans/pay-as-you-go-cred/agreements/current","name":"pay-as-you-go-cred","type":"Microsoft.MarketplaceOrdering/offertypes","properties":{"publisher":"ionqinc1582730893633","product":"ionq-aq","plan":"pay-as-you-go-cred","licenseTextLink":"https://mpcprodsa.blob.core.windows.net/legalterms/3E5ED_legalterms_IONQINC1582730893633%253a24IONQ%253a2DAQ%253a24PAY%253a2DAS%253a2DYOU%253a2DGO%253a2DCRED%253a247ODGLEAK7RQISNHUEU4KJYVC6QLVZF5IANNQFGBHOKJMXWIW3OPRUADLB63ROSGS5FVYSHLINGX5BK7GF7Y2ZO24HKBHSPKMXBHFBAQ.txt","privacyPolicyLink":"https://ionq.com/privacy","marketplaceTermsLink":"https://mpcprodsa.blob.core.windows.net/marketplaceterms/3EDEF_marketplaceterms_AZUREAPPLICATION%253a24OF7TIMHFEMPZHRBYEO3SVLC7Q2MPXXAASJ5BO2FUY4UC6EZCN5TIL2KIGTA7WI2CSM3WV4L7QMPNRYPE2I7BOCM34RGOL3XTC6ADIMI.txt","retrieveDatetime":"2022-05-27T17:09:40.6651435Z","signature":"JONPJKO7FNJNPLYFPOZ27TBGNZWYIYDB3MWYSPYOZBSXTQALV4RTNCF5BGUPZ2QSAKRAONCAWILVMKNOEN7ETNM4OZ6KMAKC63BXUVQ","accepted":true},"systemData":{"createdBy":"916dfd6d-030c-4bd9-b579-7bb6d1926e97","createdByType":"ManagedIdentity","createdAt":"2022-05-27T17:09:40.7432673+00:00","lastModifiedBy":"916dfd6d-030c-4bd9-b579-7bb6d1926e97","lastModifiedByType":"ManagedIdentity","lastModifiedAt":"2022-05-27T17:09:40.7432673+00:00"}}' + headers: + cache-control: + - no-cache + content-length: + - '1448' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 27 May 2022 17:09:40 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + set-cookie: + - ARRAffinity=4cff0184ead6d39dd613dc1d1ceedd502dbd3bd0492c0eb1f0dd846179a6d377;Path=/;HttpOnly;Secure;Domain=storeapi.azure.com + - ARRAffinitySameSite=4cff0184ead6d39dd613dc1d1ceedd502dbd3bd0492c0eb1f0dd846179a6d377;Path=/;HttpOnly;SameSite=None;Secure;Domain=storeapi.azure.com + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-powered-by: + - ASP.NET status: code: 200 message: OK - request: body: '{"location": "westus2", "identity": {"type": "SystemAssigned"}, "properties": - {"providers": [{"providerId": "Microsoft", "providerSku": "Basic"}], "storageAccount": - "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' + {"providers": [{"providerId": "Microsoft", "providerSku": "Basic"}, {"providerId": + "ionq", "providerSku": "pay-as-you-go-cred"}, {"providerId": "Microsoft", "providerSku": + "DZH3178M639F"}], "storageAccount": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' headers: Accept: - application/json @@ -174,49 +402,53 @@ interactions: Connection: - keep-alive Content-Length: - - '302' + - '423' Content-Type: - application/json ParameterSetName: - -g -w -l -a -r -o --skip-role-assignment User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w6832034?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w7002802?api-version=2022-01-10-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w6832034","name":"e2e-test-w6832034","type":"microsoft.quantum/workspaces","location":"westus2","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:42:57.5418683Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-08-25T01:42:57.5418683Z"},"identity":{"principalId":"66a39ffc-c4b7-4915-9924-134a191d9134","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-test-w6832034-Microsoft","provisioningState":"Launching"}],"provisioningState":"Accepted","usable":"No","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w7002802","name":"e2e-test-w7002802","type":"microsoft.quantum/workspaces","location":"westus2","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-05-27T17:09:41.4822784Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-27T17:09:41.4822784Z"},"identity":{"principalId":"a3315aaa-a95b-44a6-a598-4f117baa637b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-test-w7002802-Microsoft","provisioningState":"Launching"},{"providerId":"ionq","providerSku":"pay-as-you-go-cred","applicationName":"e2e-test-w7002802-ionq","provisioningState":"Launching"},{"providerId":"Microsoft","providerSku":"DZH3178M639F","applicationName":"e2e-test-w7002802-Microsoft","provisioningState":"Launching"}],"provisioningState":"Accepted","usable":"No","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' headers: azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.Quantum/locations/WESTUS2/operationStatuses/9349f6be-cc51-4c61-8292-8c0e1779677c?api-version=2019-11-04-preview + - https://management.azure.com/providers/Microsoft.Quantum/locations/WESTUS2/operationStatuses/a82b6761-efcf-446b-9e34-91bb69e0f6a3*21F217EAEF919B58A46AABAF85588660F90CED18EC1DE07E620DC240F2EAAF0C?api-version=2022-01-10-preview cache-control: - no-cache content-length: - - '964' + - '1232' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:43:03 GMT + - Fri, 27 May 2022 17:09:46 GMT etag: - - '"0700737f-0000-0800-0000-6125a0270000"' + - '"03007b01-0000-0800-0000-629105da0000"' expires: - '-1' + mise-correlation-id: + - 1e981efa-4523-42f8-bf43-02b2d99b30bc pragma: - no-cache request-context: - appId=cid-v1:4d6ac272-7369-45c6-9036-63d733c8519f set-cookie: - - ARRAffinity=cdb338437d27d909ae95562b70c842a0f45673b5e26f35d5045b643cb1edc1f5;Path=/;HttpOnly;Secure;Domain=app-cp-westus2.azurewebsites.net - - ARRAffinitySameSite=cdb338437d27d909ae95562b70c842a0f45673b5e26f35d5045b643cb1edc1f5;Path=/;HttpOnly;SameSite=None;Secure;Domain=app-cp-westus2.azurewebsites.net - - ASLBSA=c5b1530e7d00364325ae7adc8c2146187c9a8e11e3a3b1f442c0c65f786208c0; path=/; + - ARRAffinity=e1ee935634f918d206fc13cec048f144deed3bb2bddcf22e95a65ea023b012fb;Path=/;HttpOnly;Secure;Domain=app-cp-westcentralus.azurewebsites.net + - ARRAffinitySameSite=e1ee935634f918d206fc13cec048f144deed3bb2bddcf22e95a65ea023b012fb;Path=/;HttpOnly;SameSite=None;Secure;Domain=app-cp-westcentralus.azurewebsites.net + - ASLBSA=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b; path=/; secure - - ASLBSACORS=c5b1530e7d00364325ae7adc8c2146187c9a8e11e3a3b1f442c0c65f786208c0; + - ASLBSACORS=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b; samesite=none; path=/; secure strict-transport-security: - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding x-azure-ref: - - 0JqAlYQAAAAAJw74Me5PkRauNAuo1A9EzV1NURURHRTA4MTcAMzJhNzJjYWUtNWM3YS00NTk4LWEyOWYtYzkyMzM3OWUzMzcx + - 01wWRYgAAAAAquLsPjt+2RZ+aVyir/Z1iV1NURURHRTA4MjAAMzJhNzJjYWUtNWM3YS00NTk4LWEyOWYtYzkyMzM3OWUzMzcx x-cache: - CONFIG_NOCACHE x-content-type-options: @@ -246,16 +478,16 @@ interactions: ParameterSetName: - -g -w -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w6832034?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w7002802?api-version=2022-01-10-preview response: body: string: 'null' headers: azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.Quantum/locations/WESTUS2/operationStatuses/c09ca75a-4a16-452c-bce2-55c4a635c3c4?api-version=2019-11-04-preview + - https://management.azure.com/providers/Microsoft.Quantum/locations/WESTUS2/operationStatuses/8fc77a12-1399-498b-a292-d484a1d5bcbb*21F217EAEF919B58A46AABAF85588660F90CED18EC1DE07E620DC240F2EAAF0C?api-version=2022-01-10-preview cache-control: - no-cache content-length: @@ -263,28 +495,30 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:43:03 GMT + - Fri, 27 May 2022 17:09:47 GMT etag: - - '"0700767f-0000-0800-0000-6125a0280000"' + - '"03007c01-0000-0800-0000-629105db0000"' expires: - '-1' location: - - https://management.azure.com/providers/Microsoft.Quantum/locations/WESTUS2/operationStatuses/c09ca75a-4a16-452c-bce2-55c4a635c3c4?api-version=2019-11-04-preview + - https://management.azure.com/providers/Microsoft.Quantum/locations/WESTUS2/operationStatuses/8fc77a12-1399-498b-a292-d484a1d5bcbb*21F217EAEF919B58A46AABAF85588660F90CED18EC1DE07E620DC240F2EAAF0C?api-version=2022-01-10-preview + mise-correlation-id: + - 605d8b85-d73e-4c78-a00f-d3f7043c9d39 pragma: - no-cache request-context: - appId=cid-v1:4d6ac272-7369-45c6-9036-63d733c8519f set-cookie: - - ARRAffinity=cdb338437d27d909ae95562b70c842a0f45673b5e26f35d5045b643cb1edc1f5;Path=/;HttpOnly;Secure;Domain=app-cp-westus2.azurewebsites.net - - ARRAffinitySameSite=cdb338437d27d909ae95562b70c842a0f45673b5e26f35d5045b643cb1edc1f5;Path=/;HttpOnly;SameSite=None;Secure;Domain=app-cp-westus2.azurewebsites.net - - ASLBSA=c5b1530e7d00364325ae7adc8c2146187c9a8e11e3a3b1f442c0c65f786208c0; path=/; + - ARRAffinity=e1ee935634f918d206fc13cec048f144deed3bb2bddcf22e95a65ea023b012fb;Path=/;HttpOnly;Secure;Domain=app-cp-westcentralus.azurewebsites.net + - ARRAffinitySameSite=e1ee935634f918d206fc13cec048f144deed3bb2bddcf22e95a65ea023b012fb;Path=/;HttpOnly;SameSite=None;Secure;Domain=app-cp-westcentralus.azurewebsites.net + - ASLBSA=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b; path=/; secure - - ASLBSACORS=c5b1530e7d00364325ae7adc8c2146187c9a8e11e3a3b1f442c0c65f786208c0; + - ASLBSACORS=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b; samesite=none; path=/; secure strict-transport-security: - max-age=31536000; includeSubDomains x-azure-ref: - - 0KKAlYQAAAABYkb7TbotbQZqyimdlomMlV1NURURHRTA4MTIAMzJhNzJjYWUtNWM3YS00NTk4LWEyOWYtYzkyMzM3OWUzMzcx + - 02wWRYgAAAAALqtYBG6DgQqNYPUQLq+mTV1NURURHRTA4MTQAMzJhNzJjYWUtNWM3YS00NTk4LWEyOWYtYzkyMzM3OWUzMzcx x-cache: - CONFIG_NOCACHE x-content-type-options: @@ -310,28 +544,28 @@ interactions: Connection: - keep-alive Cookie: - - ASLBSA=c5b1530e7d00364325ae7adc8c2146187c9a8e11e3a3b1f442c0c65f786208c0; ASLBSACORS=c5b1530e7d00364325ae7adc8c2146187c9a8e11e3a3b1f442c0c65f786208c0 + - ASLBSA=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b; ASLBSACORS=74b04a693c07a05668de4fa0412d2be43873e56c44af16f42e345afa1f5fac1b ParameterSetName: - -g -w -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.8.2 (Windows-10-10.0.19041-SP0) - az-cli-ext/0.6.1 + - AZURECLI/2.36.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.10.1 (Windows-10-10.0.22000-SP0) + az-cli-ext/0.15.0.8 method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w6832034?api-version=2019-11-04-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w7002802?api-version=2022-01-10-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w6832034","name":"e2e-test-w6832034","type":"microsoft.quantum/workspaces","location":"westus2","systemData":{"createdBy":"ricardoe@microsoft.com","createdByType":"User","createdAt":"2021-08-25T01:42:57.5418683Z","lastModifiedBy":"ricardoe@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-08-25T01:42:57.5418683Z"},"identity":{"principalId":"66a39ffc-c4b7-4915-9924-134a191d9134","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-test-w6832034-Microsoft","provisioningState":"Launching"}],"provisioningState":"Deleting","usable":"No","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w7002802","name":"e2e-test-w7002802","type":"microsoft.quantum/workspaces","location":"westus2","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2022-05-27T17:09:41.4822784Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-27T17:09:41.4822784Z"},"identity":{"principalId":"a3315aaa-a95b-44a6-a598-4f117baa637b","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-test-w7002802-Microsoft","provisioningState":"Launching"},{"providerId":"ionq","providerSku":"pay-as-you-go-cred","applicationName":"e2e-test-w7002802-ionq","provisioningState":"Launching"},{"providerId":"Microsoft","providerSku":"DZH3178M639F","applicationName":"e2e-test-w7002802-Microsoft","provisioningState":"Launching"}],"provisioningState":"Deleting","usable":"No","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' headers: cache-control: - no-cache content-length: - - '964' + - '1232' content-type: - application/json; charset=utf-8 date: - - Wed, 25 Aug 2021 01:43:04 GMT + - Fri, 27 May 2022 17:09:47 GMT etag: - - '"0700767f-0000-0800-0000-6125a0280000"' + - '"03007c01-0000-0800-0000-629105db0000"' expires: - '-1' pragma: diff --git a/src/quantum/azext_quantum/tests/latest/recordings/test_workspace_errors.yaml b/src/quantum/azext_quantum/tests/latest/recordings/test_workspace_errors.yaml deleted file mode 100644 index e333dbae1c4..00000000000 --- a/src/quantum/azext_quantum/tests/latest/recordings/test_workspace_errors.yaml +++ /dev/null @@ -1,260 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - quantum workspace create - Connection: - - keep-alive - ParameterSetName: - - -w -l -a -r --skip-role-assignment - User-Agent: - - AZURECLI/2.29.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.9.7 (Windows-10-10.0.19043-SP0) - az-cli-ext/0.8.0 - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Quantum/locations/westus2/offerings?api-version=2019-11-04-preview - response: - body: - string: "{\"value\":[{\"id\":\"1qbit\",\"name\":\"1Qloud Optimization Platform\",\"properties\":{\"description\":\"1QBit - 1Qloud Optimization Platform with Quantum Inspired Solutions\",\"providerType\":\"qio\",\"company\":\"1QBit\",\"managedApplication\":{\"publisherId\":\"1qbinformationtechnologies1580939206424\",\"offerId\":\"1qbit-1qloud-optimization-aq\"},\"targets\":[{\"id\":\"1qbit.tabu\",\"name\":\"1QBit - Quadratic Tabu Solver\",\"description\":\"An iterative heuristic algorithm - that uses local search techniques to solve a problem\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"1qbit.pathrelinking\",\"name\":\"1QBit - Quadratic Path-Relinking Solver\",\"description\":\"The path-relinking algorithm - is a heuristic algorithm that uses the tabu search as a subroutine to solve - a QUBO problem\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"1qbit.pticm\",\"name\":\"1QBit - Quadratic Parallel Tempering Isoenergetic Cluster Moves Solver\",\"description\":\"The - parallel tempering with isoenergetic cluster moves (PTICM) solver is a Monte - Carlo approach to solving QUBO problems\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"1qbit-internal-free-plan\",\"version\":\"1.0.1\",\"name\":\"1QBit - No Charge Plan\",\"description\":\"1QBit plan with no charge for specific - customer arrangements\",\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu - Search Solver
Path-Relinking Solver
PTICM Solver\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"Free - for select customers\"}]},{\"id\":\"1qbit-fixed-monthly-202012\",\"version\":\"1.0.1\",\"name\":\"Fixed - Monthly Plan\",\"description\":\"This plan provides access to all 1QBit quantum-inspired - optimization solvers with a flat monthly fee\",\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu - Search Solver
Path-Relinking Solver
PTICM Solver\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"$7500 - USD per month\"}]},{\"id\":\"1qbit-pay-as-you-go-20210428\",\"version\":\"1.0.1\",\"name\":\"Pay - As You Go by CPU Usage\",\"description\":\"This plan provides access to all - 1QBit quantum-inspired optimization solvers with a pay as you go pricing\",\"targets\":[\"1qbit.tabu\",\"1qbit.pathrelinking\",\"1qbit.pticm\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"Tabu - Search Solver
Path-Relinking Solver
PTICM Solver\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"$0.075 - per minute; rounded up to nearest second, with a minimum 1-second charge per - solve request\"}]}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"honeywell\",\"name\":\"Honeywell - Quantum Solutions\",\"properties\":{\"description\":\"Access to Honeywell - Quantum Solutions' trapped-ion systems\",\"providerType\":\"qe\",\"company\":\"Honeywell\",\"managedApplication\":{\"publisherId\":\"honeywell-quantum\",\"offerId\":\"honeywell-quantum-aq\"},\"targets\":[{\"id\":\"honeywell.hqs-lt-s1\",\"name\":\"Honeywell - System Model: H1\",\"description\":\"Honeywell System Model H1\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s2\",\"name\":\"Honeywell - System Model: H1-2\",\"description\":\"Honeywell System Model H1-2\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s1-apival\",\"name\":\"H1 - API Validator\",\"description\":\"Honeywell System Model H1 API Validator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s2-apival\",\"name\":\"H1-2 - API Validator\",\"description\":\"Honeywell System Model H1-2 API Validator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]},{\"id\":\"honeywell.hqs-lt-s1-sim\",\"name\":\"H1 - Simulator\",\"description\":\"Honeywell System Model H1 Simulator\",\"acceptedDataFormats\":[\"honeywell.openqasm.v1\"],\"acceptedContentEncodings\":[\"gzip\",\"identity\"]}],\"skus\":[{\"id\":\"standard3\",\"version\":\"1.0.1\",\"name\":\"Standard\",\"description\":\"Monthly - subscription plan with 10K Honeywell quantum credits (HQCs) / month, available - through queue\",\"restrictedAccessUri\":\"mailto:HoneywellAzureQuantumSupport@Honeywell.com\",\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\",\"honeywell.hqs-lt-s2\",\"honeywell.hqs-lt-s2-apival\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System - Model H1 API Validator
System Model H1 (10 qubits)\"},{\"id\":\"price\",\"value\":\"$ - 125,000 USD / Month\"}]},{\"id\":\"premium3\",\"version\":\"1.0.1\",\"name\":\"Premium\",\"description\":\"Monthly - subscription plan with 17K Honeywell quantum credits (HQCs) / month, available - through queue\",\"restrictedAccessUri\":\"mailto:HoneywellAzureQuantumSupport@Honeywell.com\",\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\",\"honeywell.hqs-lt-s2\",\"honeywell.hqs-lt-s2-apival\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System - Model H1 API Validator
System Model H1 (10 qubits)\"},{\"id\":\"price\",\"value\":\"$ - 175,000 USD / Month\"}]},{\"id\":\"test1\",\"version\":\"1.0.1\",\"name\":\"Partner - Access\",\"description\":\"Charge-free access to Honeywell System Model H1 - for initial Azure integration verification\",\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\",\"honeywell.hqs-lt-s2\",\"honeywell.hqs-lt-s2-apival\",\"honeywell.hqs-lt-s1-sim\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System - Model H0 API Validator
System Model H0 (6 qubits)\"},{\"id\":\"price\",\"value\":\"Free - for validation\"}]},{\"id\":\"credits1\",\"version\":\"1.0.1\",\"name\":\"Azure - Quantum Credits\",\"description\":\"Credits-based usage for Honeywell System - Model H1\",\"targets\":[\"honeywell.hqs-lt-s1\",\"honeywell.hqs-lt-s1-apival\",\"honeywell.hqs-lt-s2\",\"honeywell.hqs-lt-s2-apival\",\"honeywell.hqs-lt-s1-sim\"],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"System - Model H1 API Validator
System Model H1 (10 qubits)\"},{\"id\":\"price\",\"value\":\"Free, - up to the granted value of credits\"}]}],\"quotaDimensions\":[{\"id\":\"hqc\",\"scope\":\"Subscription\",\"quota\":0,\"period\":\"Infinite\",\"name\":\"Honeywell - Quantum Credit\",\"description\":\"Honeywell Quantum Credits are used to calculate - the cost of a job. See Honeywell documentation for more information.\",\"unit\":\"HQC\",\"unitPlural\":\"HQC's\"},{\"id\":\"ehqc\",\"scope\":\"Subscription\",\"quota\":0,\"period\":\"Infinite\",\"name\":\"Honeywell - Emulator QC\",\"description\":\"Honeywell Emulator Credits are used for job - estimation and the simulator.\",\"unit\":\"EHQC\",\"unitPlural\":\"EHQC's\"}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"ionq\",\"name\":\"IonQ\",\"properties\":{\"description\":\"IonQ\u2019s - trapped ion quantum computers perform calculations by manipulating charged - atoms of Ytterbium held in a vacuum with lasers.\",\"providerType\":\"qe\",\"company\":\"IonQ\",\"managedApplication\":{\"publisherId\":\"ionqinc1582730893633\",\"offerId\":\"ionq-aq\"},\"targets\":[{\"id\":\"ionq.simulator\",\"name\":\"Trapped - Ion Quantum Computer Simulator\",\"description\":\"GPU-accelerated idealized - simulator supporting up to 29 qubits, using the same gates IonQ provides on - its quantum computers. No errors are modeled at present.\",\"acceptedDataFormats\":[\"ionq.circuit.v1\"],\"acceptedContentEncodings\":[\"identity\"]},{\"id\":\"ionq.qpu\",\"name\":\"Trapped - Ion Quantum Computer\",\"description\":\"IonQ's quantum computer is dynamically - reconfigurable in software to use up to 11 qubits. All qubits are fully connected, - meaning you can run a two-qubit gate between any pair.\",\"acceptedDataFormats\":[\"ionq.circuit.v1\"],\"acceptedContentEncodings\":[\"identity\"]}],\"skus\":[{\"id\":\"pay-as-you-go\",\"version\":\"0.0.5\",\"name\":\"Pay - As You Go\",\"description\":\"A la carte access based on resource requirements - and usage.\",\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ - Simulator
Trapped Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"$ - 3,000.00 USD / hour (est)
See preview documentation for details\"}]},{\"id\":\"pay-as-you-go-cred\",\"version\":\"0.0.5\",\"name\":\"Azure - Quantum Credits\",\"description\":\"The Azure Quantum Credits program provides - sponsored access to quantum hardware through Azure. You will not be charged - for usage created under the credits program, up to the limit of your credit - grant.\",\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"quotaDimensions\":[{\"id\":\"qgs\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ - Simulator
Trapped Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"Based - on granted value.\"},{\"id\":\"price\",\"value\":\"Sponsored\"}]},{\"id\":\"ionq-standard\",\"version\":\"0.0.5\",\"name\":\"IonQ - Standard\",\"description\":\"You're testing, so it's free! As in beer.\",\"targets\":[\"ionq.qpu\",\"ionq.simulator\"],\"pricingDetails\":[{\"id\":\"features\",\"value\":\"IonQ - Simulator
Trapped Ion QC (11 qubits)\"},{\"id\":\"quota\",\"value\":\"N/A\"},{\"id\":\"price\",\"value\":\"Free\"}]}],\"quotaDimensions\":[{\"id\":\"qgs\",\"scope\":\"Subscription\",\"quota\":0,\"period\":\"Infinite\",\"name\":\"Credit - [Subscription]\",\"description\":\"Credited resource usage against your account. - See IonQ documentation for more information: https://aka.ms/AQ/IonQ/ProviderDocumentation.\",\"unit\":\"qubit-gate-shot\",\"unitPlural\":\"qubit-gate-shots\"}],\"pricingDimensions\":[{\"id\":\"features\",\"name\":\"Features\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Pricing\"}]}},{\"id\":\"Microsoft\",\"name\":\"Microsoft - QIO\",\"properties\":{\"description\":\"Ground-breaking optimization algorithms - inspired by decades of quantum research.\",\"providerType\":\"qio\",\"company\":\"Microsoft\",\"managedApplication\":{\"publisherId\":\"N/A\",\"offerId\":\"N/A\"},\"targets\":[{\"id\":\"microsoft.paralleltempering.cpu\",\"name\":\"microsoft.paralleltempering.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing-parameterfree.cpu\",\"name\":\"microsoft.simulatedannealing-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.paralleltempering-parameterfree.cpu\",\"name\":\"microsoft.paralleltempering-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.simulatedannealing.cpu\",\"name\":\"microsoft.simulatedannealing.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu.cpu\",\"name\":\"microsoft.tabu.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.tabu-parameterfree.cpu\",\"name\":\"microsoft.tabu-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.qmc.cpu\",\"name\":\"microsoft.qmc.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v1\",\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.populationannealing.cpu\",\"name\":\"microsoft.populationannealing.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.substochasticmontecarlo.cpu\",\"name\":\"microsoft.substochasticmontecarlo.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"name\":\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]},{\"id\":\"microsoft.populationannealing-parameterfree.cpu\",\"name\":\"microsoft.populationannealing-parameterfree.cpu\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"Basic\",\"version\":\"1.0\",\"name\":\"Private - Preview\",\"description\":\"Free Private Preview access through February 15 - 2020\",\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.populationannealing-parameterfree.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\",\"microsoft.populationannealing-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated - Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
Population - Annealing
all solvers above have a parameter-free mode

Quantum - Monte Carlo\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 5 concurrent - jobs\"},{\"id\":\"quota\",\"value\":\"CPU based: 5 hours / month\"},{\"id\":\"price\",\"value\":\"$ - 0\"}]},{\"id\":\"DZH3178M639F\",\"version\":\"1.0\",\"name\":\"Learn & Develop\",\"description\":\"Learn - and develop with Optimization solutions.\",\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.populationannealing-parameterfree.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":20},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\",\"quota\":2},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated - Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
Population - Annealing
all solvers above have a parameter-free mode

Quantum - Monte Carlo\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 5 concurrent - jobs\"},{\"id\":\"quota\",\"value\":\"CPU based: 20 hours / month\"},{\"id\":\"price\",\"value\":\"Pay - as you go
1 free hour included

See - pricing sheet\"}]},{\"id\":\"DZH318RV7MW4\",\"version\":\"1.0\",\"name\":\"Scale\",\"description\":\"Deploy - world-class Optimization solutions.\",\"targets\":[\"microsoft.paralleltempering-parameterfree.cpu\",\"microsoft.paralleltempering.cpu\",\"microsoft.simulatedannealing-parameterfree.cpu\",\"microsoft.simulatedannealing.cpu\",\"microsoft.tabu-parameterfree.cpu\",\"microsoft.tabu.cpu\",\"microsoft.qmc.cpu\",\"microsoft.populationannealing.cpu\",\"microsoft.populationannealing-parameterfree.cpu\",\"microsoft.substochasticmontecarlo.cpu\",\"microsoft.substochasticmontecarlo-parameterfree.cpu\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":1000},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\",\"quota\":100},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\",\"quota\":10},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\",\"quota\":1000},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"Simulated - Annealing
Parallel Tempering
Tabu Search
Substochastic Monte Carlo
Population - Annealing
all solvers above have a parameter-free mode

Quantum - Monte Carlo\"},{\"id\":\"perf\",\"value\":\"CPU based: Up to 100 concurrent - jobs\"},{\"id\":\"quota\",\"value\":\"Up to 50,000 hours / month\"},{\"id\":\"price\",\"value\":\"Pay - as you go
1 free hour included

See - pricing sheet\"}]},{\"id\":\"EarlyAccess\",\"version\":\"1.0\",\"name\":\"Early - Access\",\"description\":\"Help us test new capabilities in our Microsoft - Optimization provider. This SKU is available to a select group of users and - limited to targets that we are currently running an Early Access test for.\",\"targets\":[],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":10},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\"}],\"pricingDetails\":[{\"id\":\"targets\",\"value\":\"No - targets are currently in Early Access\"},{\"id\":\"quota\",\"value\":\"CPU - based: 10 hours / month\"},{\"id\":\"price\",\"value\":\"$ 0\"}]}],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":5,\"period\":\"Monthly\",\"name\":\"CPU - Solver Hours [Workspace]\",\"description\":\"The amount of CPU solver time - you may use per month within this workspace\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"CPU - Solver Hours [Subscription]\",\"description\":\"The amount of CPU solver time - you may use per month shared by all workspaces within the subscription\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\",\"quota\":5},{\"id\":\"concurrent_fpga_jobs\",\"scope\":\"Workspace\",\"quota\":1},{\"id\":\"fpga_job_hours\",\"scope\":\"Workspace\",\"quota\":1,\"period\":\"Monthly\",\"name\":\"FPGA - Solver Hours [Workspace]\",\"description\":\"The amount of FPGA solver time - you may use per month within this workspace\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"fpga_job_hours\",\"scope\":\"Subscription\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"FPGA - Solver Hours [Subscription]\",\"description\":\"The amount of FPGA solver - time you may use per month shared by all workspaces within the subscription\",\"unit\":\"hour\",\"unitPlural\":\"hours\"}],\"pricingDimensions\":[{\"id\":\"targets\",\"name\":\"Targets - available\"},{\"id\":\"perf\",\"name\":\"Performance\"},{\"id\":\"quota\",\"name\":\"Quota\"},{\"id\":\"price\",\"name\":\"Price - per month\"}]}},{\"id\":\"Microsoft.FleetManagement\",\"name\":\"Microsoft - Fleet Management Solution\",\"properties\":{\"description\":\"(Preview) Leverage - Azure Quantum's advanced optimization algorithms to solve fleet management - problems.\",\"providerType\":\"qio\",\"company\":\"Microsoft\",\"managedApplication\":{\"publisherId\":\"N/A\",\"offerId\":\"N/A\"},\"targets\":[{\"id\":\"microsoft.fleetmanagement\",\"name\":\"microsoft.fleetmanagement\",\"acceptedDataFormats\":[\"microsoft.fleetmanagement.v1\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"Basic\",\"version\":\"1.0\",\"name\":\"Private - Preview\",\"description\":\"Private preview fleet management SKU.\",\"targets\":[\"microsoft.fleetManagement\"],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\"}]}],\"quotaDimensions\":[{\"id\":\"combined_job_hours\",\"scope\":\"Workspace\",\"quota\":20,\"period\":\"Monthly\",\"name\":\"Job - Hours [Workspace]\",\"description\":\"The amount of job time you may use per - month within this workspace\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"combined_job_hours\",\"scope\":\"Subscription\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"Job - Hours [Subscription]\",\"description\":\"The amount of job time you may use - per month shared by all workspaces within the subscription\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"concurrent_cpu_jobs\",\"scope\":\"Workspace\",\"quota\":5}]}},{\"id\":\"Microsoft.Simulator\",\"name\":\"Microsoft - Simulation Tools\",\"properties\":{\"description\":\"Microsoft Simulation - Tools.\",\"providerType\":\"qe\",\"company\":\"Microsoft\",\"managedApplication\":{\"publisherId\":\"N/A\",\"offerId\":\"N/A\"},\"targets\":[{\"id\":\"microsoft.simulator.fullstate\",\"name\":\"Quantum - Simulator\",\"acceptedDataFormats\":[\"microsoft.qir.v1\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"Basic\",\"version\":\"1.0\",\"name\":\"Private - Preview\",\"description\":\"Private preview simulator SKU.\",\"targets\":[\"microsoft.simulator.fullstate\"],\"quotaDimensions\":[{\"id\":\"simulator_job_hours\",\"scope\":\"Workspace\"},{\"id\":\"simulator_job_hours\",\"scope\":\"Subscription\"},{\"id\":\"concurrent_simulator_jobs\",\"scope\":\"Workspace\"}]}],\"quotaDimensions\":[{\"id\":\"simulator_job_hours\",\"scope\":\"Workspace\",\"quota\":20,\"period\":\"Monthly\",\"name\":\"Simulator - Hours [Workspace]\",\"description\":\"The amount of simulator time you may - use per month within this workspace\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"simulator_job_hours\",\"scope\":\"Subscription\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"Simulator - Hours [Subscription]\",\"description\":\"The amount of simulator time you - may use per month shared by all workspaces within the subscription\",\"unit\":\"hour\",\"unitPlural\":\"hours\"},{\"id\":\"concurrent_simulator_jobs\",\"scope\":\"Workspace\",\"quota\":5}]}},{\"id\":\"qci\",\"name\":\"Quantum - Circuits, Inc.\",\"properties\":{\"description\":\"Superconducting circuits - QC\",\"providerType\":\"qe\",\"company\":\"Quantum Circuits, Inc.\",\"managedApplication\":{\"publisherId\":\"quantumcircuitsinc1598045891596\",\"offerId\":\"quantumcircuitsinc-aq-test-preview\"},\"targets\":[{\"id\":\"qci.machine1\",\"name\":\"Machine - 1\",\"description\":\"Machine 1 Description\",\"acceptedDataFormats\":[\"qci.qcdl.v1\"],\"acceptedContentEncodings\":[\"identity\"]},{\"id\":\"qci.simulator\",\"name\":\"Simulator\",\"description\":\"Simulator - Description\",\"acceptedDataFormats\":[\"qci.qcdl.v1\"],\"acceptedContentEncodings\":[\"identity\"]}],\"skus\":[{\"id\":\"test\",\"version\":\"0.1.0\",\"name\":\"test\",\"description\":\"test - sku\",\"targets\":[\"qci.simulator\",\"qci.machine1\"],\"quotaDimensions\":[{\"id\":\"jobcount\",\"scope\":\"Workspace\"}]}],\"quotaDimensions\":[{\"id\":\"jobcount\",\"scope\":\"Workspace\",\"quota\":1000,\"period\":\"Monthly\",\"name\":\"Job - Count\",\"description\":\"Number of jobs you can run in a month.\",\"unit\":\"job\",\"unitPlural\":\"jobs\"}]}},{\"id\":\"toshiba\",\"name\":\"Toshiba - SBM\",\"properties\":{\"description\":\"Toshiba Simulated Bifurcation Machine - (SBM) for Azure Quantum\",\"providerType\":\"qio\",\"company\":\"Toshiba Digital - Solutions Corporation\",\"managedApplication\":{\"publisherId\":\"2812187\",\"offerId\":\"toshiba-aq\"},\"targets\":[{\"id\":\"toshiba.sbm.ising\",\"name\":\"Ising - solver\",\"description\":\"SBM is a practical and ready-to-use ISING machine - that solves large-scale \\\"combinatorial optimization problems\\\" at high - speed.\",\"acceptedDataFormats\":[\"microsoft.qio.v2\"],\"acceptedContentEncodings\":[\"gzip\"]}],\"skus\":[{\"id\":\"toshiba-solutionseconds\",\"version\":\"1.0.1\",\"name\":\"Pay - As You Go\",\"description\":\"This is the only plan for using SBM in Azure - Quantum Private Preview.\",\"targets\":[\"toshiba.sbm.ising\"],\"pricingDetails\":[{\"id\":\"price\",\"value\":\"This - plan is available for free during private preview.\"}]}],\"pricingDimensions\":[{\"id\":\"price\",\"name\":\"Pricing\"}]}}]}" - headers: - cache-control: - - no-cache - content-length: - - '22559' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 20 Oct 2021 22:18:29 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - status: - code: 200 - message: OK -- request: - body: '{"location": "westus2", "identity": {"type": "SystemAssigned"}, "properties": - {"providers": [{"providerId": "Microsoft", "providerSku": "Basic"}], "storageAccount": - "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - quantum workspace create - Connection: - - keep-alive - Content-Length: - - '302' - Content-Type: - - application/json - ParameterSetName: - - -w -l -a -r --skip-role-assignment - User-Agent: - - AZURECLI/2.29.0 azsdk-python-mgmt-quantum/1.0.0b1 Python/3.9.7 (Windows-10-10.0.19043-SP0) - az-cli-ext/0.8.0 - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w7164078?api-version=2019-11-04-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Quantum/workspaces/e2e-test-w7164078","name":"e2e-test-w7164078","type":"microsoft.quantum/workspaces","location":"westus2","systemData":{"createdBy":"v-wjones@microsoft.com","createdByType":"User","createdAt":"2021-10-20T22:18:31.3777068Z","lastModifiedBy":"v-wjones@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-10-20T22:18:31.3777068Z"},"identity":{"principalId":"71792197-52e7-4bf1-882f-efd4512bf2d3","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"properties":{"providers":[{"providerId":"Microsoft","providerSku":"Basic","applicationName":"e2e-test-w7164078-Microsoft","provisioningState":"Launching"}],"provisioningState":"Accepted","usable":"No","storageAccount":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/e2e-scenarios/providers/Microsoft.Storage/storageAccounts/e2etests"}}' - headers: - azure-asyncoperation: - - https://management.azure.com/providers/Microsoft.Quantum/locations/WESTUS2/operationStatuses/c994e71a-0f55-44bd-a057-6cd00ea7247d*D5D93E7051E5EDE94E1E8E4B4A67216218D3E454FE9A6060E189AAD31916A390?api-version=2019-11-04-preview - cache-control: - - no-cache - content-length: - - '964' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 20 Oct 2021 22:18:33 GMT - etag: - - '"fc008570-0000-0800-0000-617095b90000"' - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:4d6ac272-7369-45c6-9036-63d733c8519f - set-cookie: - - ARRAffinity=14997f4c5744dc2dd6f1d030811af84714935ccafad4803799f4ee84048b04b3;Path=/;HttpOnly;Secure;Domain=app-cp-westcentralus.azurewebsites.net - - ARRAffinitySameSite=14997f4c5744dc2dd6f1d030811af84714935ccafad4803799f4ee84048b04b3;Path=/;HttpOnly;SameSite=None;Secure;Domain=app-cp-westcentralus.azurewebsites.net - - ASLBSA=408392c61f0d31b7c893857631c302d95c61c7c215089eb24b1c72720d55d8ec; path=/; - secure - - ASLBSACORS=408392c61f0d31b7c893857631c302d95c61c7c215089eb24b1c72720d55d8ec; - samesite=none; path=/; secure - strict-transport-security: - - max-age=31536000; includeSubDomains - x-azure-ref: - - 0uZVwYQAAAACTAckdpAlIQqgNabPwduL4V1NURURHRTA4MTMAMzJhNzJjYWUtNWM3YS00NTk4LWEyOWYtYzkyMzM3OWUzMzcx - x-cache: - - CONFIG_NOCACHE - x-content-type-options: - - nosniff - x-ms-providerhub-traffic: - - 'True' - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - status: - code: 201 - message: Created -version: 1 diff --git a/src/quantum/azext_quantum/tests/latest/source_for_build_test/Program.qs b/src/quantum/azext_quantum/tests/latest/source_for_build_test/Program.qs new file mode 100644 index 00000000000..30112545892 --- /dev/null +++ b/src/quantum/azext_quantum/tests/latest/source_for_build_test/Program.qs @@ -0,0 +1,12 @@ +namespace QuantumRNG { + open Microsoft.Quantum.Intrinsic; + open Microsoft.Quantum.Measurement; + open Microsoft.Quantum.Canon; + + @EntryPoint() + operation GenerateRandomBits() : Result[] { + use qubits = Qubit[4]; + ApplyToEach(H, qubits); + return MultiM(qubits); + } +} \ No newline at end of file diff --git a/src/quantum/azext_quantum/tests/latest/source_for_build_test/QuantumRNG.csproj b/src/quantum/azext_quantum/tests/latest/source_for_build_test/QuantumRNG.csproj new file mode 100644 index 00000000000..fff8f29d8b3 --- /dev/null +++ b/src/quantum/azext_quantum/tests/latest/source_for_build_test/QuantumRNG.csproj @@ -0,0 +1,7 @@ + + + Exe + netcoreapp3.1 + ionq.qpu + + \ No newline at end of file diff --git a/src/quantum/azext_quantum/tests/latest/test_quantum_jobs.py b/src/quantum/azext_quantum/tests/latest/test_quantum_jobs.py index 23155cef8e9..46e7ab3890c 100644 --- a/src/quantum/azext_quantum/tests/latest/test_quantum_jobs.py +++ b/src/quantum/azext_quantum/tests/latest/test_quantum_jobs.py @@ -9,14 +9,14 @@ from azure.cli.testsdk.scenario_tests import AllowLargeResponse, live_only from azure.cli.testsdk import (ScenarioTest, ResourceGroupPreparer) -from azure.cli.core.azclierror import InvalidArgumentValueError +from azure.cli.core.azclierror import InvalidArgumentValueError, AzureInternalError from .utils import get_test_subscription_id, get_test_resource_group, get_test_workspace, get_test_workspace_location from ..._client_factory import _get_data_credentials from ...commands import transform_output from ...operations.workspace import WorkspaceInfo from ...operations.target import TargetInfo -from ...operations.job import _generate_submit_args, _parse_blob_url, _validate_max_poll_wait_secs +from ...operations.job import _generate_submit_args, _parse_blob_url, _validate_max_poll_wait_secs, build TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..')) @@ -31,6 +31,21 @@ def test_jobs(self): targets = self.cmd('az quantum target list -o json').get_output_in_json() assert len(targets) > 0 + def test_build(self): + result = build(self, target_id='ionq.simulator', project='src\\quantum\\azext_quantum\\tests\\latest\\source_for_build_test\\QuantumRNG.csproj', target_capability='BasicQuantumFunctionality') + assert result == {'result': 'ok'} + + self.testfile = open(os.path.join(os.path.dirname(__file__), 'source_for_build_test/obj/qsharp/config/qsc.rsp')) + self.testdata = self.testfile.read() + self.assertIn('TargetCapability:BasicQuantumFunctionality', self.testdata) + self.testfile.close() + + try: + build(self, target_id='ionq.simulator', project='src\\quantum\\azext_quantum\\tests\\latest\\source_for_build_test\\QuantumRNG.csproj', target_capability='BogusQuantumFunctionality') + assert False + except AzureInternalError as e: + assert str(e) == "Failed to compile program." + @live_only() def test_submit_args(self): test_location = get_test_workspace_location() diff --git a/src/quantum/azext_quantum/tests/latest/test_quantum_workspace.py b/src/quantum/azext_quantum/tests/latest/test_quantum_workspace.py index d11808c3af5..9c6fae2f557 100644 --- a/src/quantum/azext_quantum/tests/latest/test_quantum_workspace.py +++ b/src/quantum/azext_quantum/tests/latest/test_quantum_workspace.py @@ -13,10 +13,45 @@ from ..._version_check_helper import check_version from datetime import datetime from ...__init__ import CLI_REPORTED_VERSION -from ...operations.workspace import _validate_storage_account, SUPPORTED_STORAGE_SKU_TIERS, SUPPORTED_STORAGE_KINDS, DEPLOYMENT_NAME_PREFIX +from ...operations.workspace import _validate_storage_account, _autoadd_providers, SUPPORTED_STORAGE_SKU_TIERS, SUPPORTED_STORAGE_KINDS, DEPLOYMENT_NAME_PREFIX TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..')) + +# Classes patterned after classes in azext_quantum.vendored_sdks.azure_mgmt_quantum.models._models_py3.py +# Used in test_autoadd_providers() +class TestSkuDescription(object): + def __init__(self, id, auto_add): + self.id = id + self.auto_add = auto_add + + __test__ = False + +class TestManagedApplicationDescription(object): + def __init__(self, offer_id, publisher_id): + self.offer_id = offer_id + self.publisher_id = publisher_id + + __test__ = False + +class TestPropertyDescription(object): + def __init__(self, managed_application, skus): + self.managed_application = TestManagedApplicationDescription(None, None) + self.skus = [TestSkuDescription(None, False)] + + __test__ = False + +class TestProviderDescription: + def __init__(self, id, properties): + id = str() + properties = TestPropertyDescription(TestManagedApplicationDescription(None, None), [TestSkuDescription(None, None)]) + + __test__ = False + id = None + properties = TestPropertyDescription(TestManagedApplicationDescription(None, None), [TestSkuDescription(None, None)]) +# End of test_autoadd_providers() class definitions + + class QuantumWorkspacesScenarioTest(ScenarioTest): @AllowLargeResponse() @@ -124,11 +159,12 @@ def test_workspace_errors(self): test_workspace_temp = get_test_workspace_random_name() test_storage_account = get_test_workspace_storage() - # Attempt to create workspace, but omit the provider/SKU parameter - try: - self.cmd(f'az quantum workspace create -g {test_resource_group} -w {test_workspace_temp} -l {test_location} -a {test_storage_account} --skip-role-assignment') - except RequiredArgumentMissingError: - pass + # NOTE: The following command will not fail when Credits For All providers are in the region: + # # Attempt to create workspace, but omit the provider/SKU parameter + # try: + # self.cmd(f'az quantum workspace create -g {test_resource_group} -w {test_workspace_temp} -l {test_location} -a {test_storage_account} --skip-role-assignment') + # except RequiredArgumentMissingError: + # pass # Attempt to create workspace, but omit the resource group parameter try: @@ -177,3 +213,32 @@ def test_validate_storage_account(self): assert False except InvalidArgumentValueError as e: assert str(e) == "Storage account kind 'BlobStorage' is not supported.\nStorage account kinds currently supported: Storage, StorageV2" + + def test_autoadd_providers(self): + test_managed_application = TestManagedApplicationDescription(None, None) + test_skus = [TestSkuDescription(None, False)] + test_provider_properties = TestPropertyDescription(test_managed_application, test_skus) + test_provider = TestProviderDescription("", test_provider_properties) + + # Populate providers_in_region with an auto_add provider: + test_provider.id = "foo" + test_provider.properties.managed_application.offer_id = "foo_offer" + test_provider.properties.managed_application.publisher_id = "foo0123456789" + test_provider.properties.skus[0].id = "foo_credits_for_all_plan" + test_provider.properties.skus[0].auto_add = True + providers_in_region = [] + providers_in_region.append(test_provider) + providers_selected = [] + cmd = None + workspace_location = None + _autoadd_providers(cmd, providers_in_region, providers_selected, workspace_location, True) + assert providers_selected[0] == {"provider_id": "foo", "sku": "foo_credits_for_all_plan", "offer_id": "foo_offer", "publisher_id": "foo0123456789"} + + # Make sure we get an error message if there are no auto_add providers and providers_selected is empty, like when there's no -r in the command: + try: + test_provider.properties.skus[0].auto_add = False + providers_selected = [] + _autoadd_providers(cmd, providers_in_region, providers_selected, workspace_location, True) + assert False + except RequiredArgumentMissingError as e: + assert str(e) == "A list of Azure Quantum providers and SKUs is required." diff --git a/src/quantum/azext_quantum/tests/latest/utils.py b/src/quantum/azext_quantum/tests/latest/utils.py index e7182d8b6f1..1f980038b55 100644 --- a/src/quantum/azext_quantum/tests/latest/utils.py +++ b/src/quantum/azext_quantum/tests/latest/utils.py @@ -45,7 +45,7 @@ def get_test_workspace_random_name(): return "e2e-test-w" + str(random.randint(1000000, 9999999)) def get_test_workspace_random_long_name(): - return get_test_workspace_random_name() + "-54-char-name123456789012345678901234" + return get_test_workspace_random_name() + "-53-char-name12345678901234567890123" def all_providers_are_in_capabilities(provider_sku_string, capabilities_string): for provide_sku_pair in provider_sku_string.split(';'): diff --git a/src/quantum/azext_quantum/vendored_sdks/_utils.py b/src/quantum/azext_quantum/vendored_sdks/_utils.py new file mode 100644 index 00000000000..fc4d4d9f76c --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/_utils.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +# This def was not built into Azure CLI 2.36.0, but since it was already in the Azure SDK for Python, +# AutoRest included it in the new control-plane client files (azext_quantum\vendored_sdks\azure_mgmt_quantum) +# generated to access the Quantum API version 2022-01-10-preview for PR #4784 + +def case_insensitive_dict(*args, **kwargs): + """Return a case-insensitive dict from a structure that a dict would have accepted. + + Rational is I don't want to re-implement this, but I don't want + to assume "requests" or "aiohttp" are installed either. + So I use the one from "requests" or the one from "aiohttp" ("multidict") + If one day this library is used in an HTTP context without "requests" nor "aiohttp" installed, + we can add "multidict" as a dependency or re-implement our own. + """ + try: + from requests.structures import CaseInsensitiveDict + + return CaseInsensitiveDict(*args, **kwargs) + except ImportError: + pass + try: + # multidict is installed by aiohttp + from multidict import CIMultiDict + + if len(kwargs) == 0 and len(args) == 1 and (not args[0]): + return CIMultiDict() # in case of case_insensitive_dict(None), we don't want to raise exception + return CIMultiDict(*args, **kwargs) + except ImportError: + raise ValueError( + "Neither 'requests' or 'multidict' are installed and no case-insensitive dict impl have been found" + ) diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/__init__.py index ecf2e7c67cd..91444021bb9 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/__init__.py @@ -10,10 +10,14 @@ from ._version import VERSION __version__ = VERSION -__all__ = ['AzureQuantumManagementClient'] try: - from ._patch import patch_sdk # type: ignore - patch_sdk() + from ._patch import __all__ as _patch_all + from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import except ImportError: - pass + _patch_all = [] +from ._patch import patch_sdk as _patch_sdk +__all__ = ['AzureQuantumManagementClient'] +__all__.extend([p for p in _patch_all if p not in __all__]) + +_patch_sdk() diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_azure_quantum_management_client.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_azure_quantum_management_client.py index 651522a88f0..673add4125c 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_azure_quantum_management_client.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_azure_quantum_management_client.py @@ -6,25 +6,23 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +from copy import deepcopy from typing import TYPE_CHECKING -from azure.mgmt.core import ARMPipelineClient from msrest import Deserializer, Serializer +from azure.mgmt.core import ARMPipelineClient + +from . import models +from ._configuration import AzureQuantumManagementClientConfiguration +from .operations import OfferingsOperations, Operations, WorkspaceOperations, WorkspacesOperations + if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Optional + from typing import Any from azure.core.credentials import TokenCredential - from azure.core.pipeline.transport import HttpRequest, HttpResponse - -from ._configuration import AzureQuantumManagementClientConfiguration -from .operations import WorkspacesOperations -from .operations import OfferingsOperations -from .operations import Operations -from .operations import WorkspaceOperations -from . import models - + from azure.core.rest import HttpRequest, HttpResponse class AzureQuantumManagementClient(object): """AzureQuantumManagementClient. @@ -41,54 +39,70 @@ class AzureQuantumManagementClient(object): :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The Azure subscription ID. :type subscription_id: str - :param str base_url: Service URL - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :param base_url: Service URL. Default value is "https://management.azure.com". + :type base_url: str + :keyword api_version: Api Version. Default value is "2022-01-10-preview". Note that overriding + this default value may result in unsupported behavior. + :paramtype api_version: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. """ def __init__( self, credential, # type: "TokenCredential" subscription_id, # type: str - base_url=None, # type: Optional[str] + base_url="https://management.azure.com", # type: str **kwargs # type: Any ): # type: (...) -> None - if not base_url: - base_url = 'https://management.azure.com' - self._config = AzureQuantumManagementClientConfiguration(credential, subscription_id, **kwargs) + self._config = AzureQuantumManagementClientConfiguration(credential=credential, subscription_id=subscription_id, **kwargs) self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) - self._serialize.client_side_validation = False self._deserialize = Deserializer(client_models) - + self._serialize.client_side_validation = False self.workspaces = WorkspacesOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.offerings = OfferingsOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.workspace = WorkspaceOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) - def _send_request(self, http_request, **kwargs): - # type: (HttpRequest, Any) -> HttpResponse + + def _send_request( + self, + request, # type: HttpRequest + **kwargs # type: Any + ): + # type: (...) -> HttpResponse """Runs the network request through the client's chained policies. - :param http_request: The network request you want to make. Required. - :type http_request: ~azure.core.pipeline.transport.HttpRequest - :keyword bool stream: Whether the response payload will be streamed. Defaults to True. + >>> from azure.core.rest import HttpRequest + >>> request = HttpRequest("GET", "https://www.example.org/") + + >>> response = client._send_request(request) + + + For more information on this code flow, see https://aka.ms/azsdk/python/protocol/quickstart + + :param request: The network request you want to make. Required. + :type request: ~azure.core.rest.HttpRequest + :keyword bool stream: Whether the response payload will be streamed. Defaults to False. :return: The response of your network call. Does not do error handling on your response. - :rtype: ~azure.core.pipeline.transport.HttpResponse + :rtype: ~azure.core.rest.HttpResponse """ - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - http_request.url = self._client.format_url(http_request.url, **path_format_arguments) - stream = kwargs.pop("stream", True) - pipeline_response = self._client._pipeline.run(http_request, stream=stream, **kwargs) - return pipeline_response.http_response + + request_copy = deepcopy(request) + request_copy.url = self._client.format_url(request_copy.url) + return self._client.send_request(request_copy, **kwargs) def close(self): # type: () -> None diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_configuration.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_configuration.py index e8b4b8dec35..5a9a36feffa 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_configuration.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_configuration.py @@ -10,7 +10,7 @@ from azure.core.configuration import Configuration from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy +from azure.mgmt.core.policies import ARMChallengeAuthenticationPolicy, ARMHttpLoggingPolicy from ._version import VERSION @@ -21,7 +21,7 @@ from azure.core.credentials import TokenCredential -class AzureQuantumManagementClientConfiguration(Configuration): +class AzureQuantumManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes """Configuration for AzureQuantumManagementClient. Note that all parameters used to create this instance are saved as instance @@ -31,6 +31,9 @@ class AzureQuantumManagementClientConfiguration(Configuration): :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The Azure subscription ID. :type subscription_id: str + :keyword api_version: Api Version. Default value is "2022-01-10-preview". Note that overriding + this default value may result in unsupported behavior. + :paramtype api_version: str """ def __init__( @@ -40,15 +43,17 @@ def __init__( **kwargs # type: Any ): # type: (...) -> None + super(AzureQuantumManagementClientConfiguration, self).__init__(**kwargs) + api_version = kwargs.pop('api_version', "2022-01-10-preview") # type: str + if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: raise ValueError("Parameter 'subscription_id' must not be None.") - super(AzureQuantumManagementClientConfiguration, self).__init__(**kwargs) self.credential = credential self.subscription_id = subscription_id - self.api_version = "2019-11-04-preview" + self.api_version = api_version self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-quantum/{}'.format(VERSION)) self._configure(**kwargs) @@ -68,4 +73,4 @@ def _configure( self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') if self.credential and not self.authentication_policy: - self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = ARMChallengeAuthenticationPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_vendor.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_vendor.py new file mode 100644 index 00000000000..138f663c53a --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/_vendor.py @@ -0,0 +1,27 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.core.pipeline.transport import HttpRequest + +def _convert_request(request, files=None): + data = request.content if not files else None + request = HttpRequest(method=request.method, url=request.url, headers=request.headers, data=data) + if files: + request.set_formdata_body(files) + return request + +def _format_url_section(template, **kwargs): + components = template.split("/") + while components: + try: + return template.format(**kwargs) + except KeyError as key: + formatted_components = template.split("/") + components = [ + c for c in formatted_components if "{}".format(key.args[0]) not in c + ] + template = "/".join(components) diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/__init__.py index 7927c1da8d3..2b9aa94738a 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/__init__.py @@ -7,4 +7,14 @@ # -------------------------------------------------------------------------- from ._azure_quantum_management_client import AzureQuantumManagementClient + +try: + from ._patch import __all__ as _patch_all + from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +except ImportError: + _patch_all = [] +from ._patch import patch_sdk as _patch_sdk __all__ = ['AzureQuantumManagementClient'] +__all__.extend([p for p in _patch_all if p not in __all__]) + +_patch_sdk() diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_azure_quantum_management_client.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_azure_quantum_management_client.py index a75f66daf87..2cdb991d25f 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_azure_quantum_management_client.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_azure_quantum_management_client.py @@ -6,25 +6,23 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Optional, TYPE_CHECKING +from copy import deepcopy +from typing import Any, Awaitable, TYPE_CHECKING -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core import AsyncARMPipelineClient from msrest import Deserializer, Serializer -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials_async import AsyncTokenCredential +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.mgmt.core import AsyncARMPipelineClient -from ._configuration import AzureQuantumManagementClientConfiguration -from .operations import WorkspacesOperations -from .operations import OfferingsOperations -from .operations import Operations -from .operations import WorkspaceOperations from .. import models +from ._configuration import AzureQuantumManagementClientConfiguration +from .operations import OfferingsOperations, Operations, WorkspaceOperations, WorkspacesOperations +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential -class AzureQuantumManagementClient(object): +class AzureQuantumManagementClient: """AzureQuantumManagementClient. :ivar workspaces: WorkspacesOperations operations @@ -39,52 +37,68 @@ class AzureQuantumManagementClient(object): :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The Azure subscription ID. :type subscription_id: str - :param str base_url: Service URL - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :param base_url: Service URL. Default value is "https://management.azure.com". + :type base_url: str + :keyword api_version: Api Version. Default value is "2022-01-10-preview". Note that overriding + this default value may result in unsupported behavior. + :paramtype api_version: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. """ def __init__( self, credential: "AsyncTokenCredential", subscription_id: str, - base_url: Optional[str] = None, + base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: - if not base_url: - base_url = 'https://management.azure.com' - self._config = AzureQuantumManagementClientConfiguration(credential, subscription_id, **kwargs) + self._config = AzureQuantumManagementClientConfiguration(credential=credential, subscription_id=subscription_id, **kwargs) self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) - self._serialize.client_side_validation = False self._deserialize = Deserializer(client_models) - + self._serialize.client_side_validation = False self.workspaces = WorkspacesOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.offerings = OfferingsOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) self.workspace = WorkspaceOperations( - self._client, self._config, self._serialize, self._deserialize) + self._client, self._config, self._serialize, self._deserialize + ) - async def _send_request(self, http_request: HttpRequest, **kwargs: Any) -> AsyncHttpResponse: + + def _send_request( + self, + request: HttpRequest, + **kwargs: Any + ) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. - :param http_request: The network request you want to make. Required. - :type http_request: ~azure.core.pipeline.transport.HttpRequest - :keyword bool stream: Whether the response payload will be streamed. Defaults to True. + >>> from azure.core.rest import HttpRequest + >>> request = HttpRequest("GET", "https://www.example.org/") + + >>> response = await client._send_request(request) + + + For more information on this code flow, see https://aka.ms/azsdk/python/protocol/quickstart + + :param request: The network request you want to make. Required. + :type request: ~azure.core.rest.HttpRequest + :keyword bool stream: Whether the response payload will be streamed. Defaults to False. :return: The response of your network call. Does not do error handling on your response. - :rtype: ~azure.core.pipeline.transport.AsyncHttpResponse + :rtype: ~azure.core.rest.AsyncHttpResponse """ - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - http_request.url = self._client.format_url(http_request.url, **path_format_arguments) - stream = kwargs.pop("stream", True) - pipeline_response = await self._client._pipeline.run(http_request, stream=stream, **kwargs) - return pipeline_response.http_response + + request_copy = deepcopy(request) + request_copy.url = self._client.format_url(request_copy.url) + return self._client.send_request(request_copy, **kwargs) async def close(self) -> None: await self._client.close() diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_configuration.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_configuration.py index 35fc3b1c23c..0ce096f14b9 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_configuration.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_configuration.py @@ -10,7 +10,7 @@ from azure.core.configuration import Configuration from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy +from azure.mgmt.core.policies import ARMHttpLoggingPolicy, AsyncARMChallengeAuthenticationPolicy from .._version import VERSION @@ -19,7 +19,7 @@ from azure.core.credentials_async import AsyncTokenCredential -class AzureQuantumManagementClientConfiguration(Configuration): +class AzureQuantumManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes """Configuration for AzureQuantumManagementClient. Note that all parameters used to create this instance are saved as instance @@ -29,6 +29,9 @@ class AzureQuantumManagementClientConfiguration(Configuration): :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The Azure subscription ID. :type subscription_id: str + :keyword api_version: Api Version. Default value is "2022-01-10-preview". Note that overriding + this default value may result in unsupported behavior. + :paramtype api_version: str """ def __init__( @@ -37,15 +40,17 @@ def __init__( subscription_id: str, **kwargs: Any ) -> None: + super(AzureQuantumManagementClientConfiguration, self).__init__(**kwargs) + api_version = kwargs.pop('api_version', "2022-01-10-preview") # type: str + if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: raise ValueError("Parameter 'subscription_id' must not be None.") - super(AzureQuantumManagementClientConfiguration, self).__init__(**kwargs) self.credential = credential self.subscription_id = subscription_id - self.api_version = "2019-11-04-preview" + self.api_version = api_version self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-quantum/{}'.format(VERSION)) self._configure(**kwargs) @@ -64,4 +69,4 @@ def _configure( self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') if self.credential and not self.authentication_policy: - self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = AsyncARMChallengeAuthenticationPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/__init__.py index 7eae3e8df6c..24f33d3cc27 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/__init__.py @@ -11,9 +11,14 @@ from ._operations import Operations from ._workspace_operations import WorkspaceOperations +from ._patch import __all__ as _patch_all +from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +from ._patch import patch_sdk as _patch_sdk __all__ = [ 'WorkspacesOperations', 'OfferingsOperations', 'Operations', 'WorkspaceOperations', ] +__all__.extend([p for p in _patch_all if p not in __all__]) +_patch_sdk() \ No newline at end of file diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_offerings_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_offerings_operations.py index f0a358e93a6..46164d7aae8 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_offerings_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_offerings_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,47 +6,50 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ...._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._offerings_operations import build_list_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class OfferingsOperations: - """OfferingsOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.aio.AzureQuantumManagementClient`'s + :attr:`offerings` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace def list( self, location_name: str, **kwargs: Any - ) -> AsyncIterable["_models.OfferingsListResult"]: + ) -> AsyncIterable[_models.OfferingsListResult]: """Returns the list of all provider offerings available for the given location. :param location_name: Location. @@ -55,40 +59,47 @@ def list( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.quantum.models.OfferingsListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.OfferingsListResult"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.OfferingsListResult] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'locationName': self._serialize.url("location_name", location_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + template_url=self.list.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('OfferingsListResult', pipeline_response) + deserialized = self._deserialize("OfferingsListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -97,17 +108,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/offerings'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/offerings"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_operations.py index cee85b21cc0..7221e9b5f3e 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,46 +6,49 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ...._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._operations import build_list_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class Operations: - """Operations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.aio.AzureQuantumManagementClient`'s + :attr:`operations` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace def list( self, **kwargs: Any - ) -> AsyncIterable["_models.OperationsList"]: + ) -> AsyncIterable[_models.OperationsList]: """Returns list of operations. :keyword callable cls: A custom type or function that will be passed the direct response @@ -52,35 +56,43 @@ def list( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.quantum.models.OperationsList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.OperationsList"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.OperationsList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = build_list_request( + api_version=api_version, + template_url=self.list.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore - request = self._client.get(url, query_parameters, header_parameters) else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('OperationsList', pipeline_response) + deserialized = self._deserialize("OperationsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -89,17 +101,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/providers/Microsoft.Quantum/operations'} # type: ignore + list.metadata = {'url': "/providers/Microsoft.Quantum/operations"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspace_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspace_operations.py index 394cd1481fd..327a3ab4523 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspace_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspace_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,94 +6,99 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, Callable, Dict, Optional, TypeVar from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator_async import distributed_trace_async +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ...._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._workspace_operations import build_check_name_availability_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class WorkspaceOperations: - """WorkspaceOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.aio.AzureQuantumManagementClient`'s + :attr:`workspace` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace_async async def check_name_availability( self, location_name: str, - check_name_availability_parameters: "_models.CheckNameAvailabilityParameters", + check_name_availability_parameters: _models.CheckNameAvailabilityParameters, **kwargs: Any - ) -> "_models.CheckNameAvailabilityResult": + ) -> _models.CheckNameAvailabilityResult: """Check the availability of the resource name. :param location_name: Location. :type location_name: str :param check_name_availability_parameters: The name and type of the resource. - :type check_name_availability_parameters: ~azure.mgmt.quantum.models.CheckNameAvailabilityParameters + :type check_name_availability_parameters: + ~azure.mgmt.quantum.models.CheckNameAvailabilityParameters :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResult, or the result of cls(response) :rtype: ~azure.mgmt.quantum.models.CheckNameAvailabilityResult :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.CheckNameAvailabilityResult"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.check_name_availability.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'locationName': self._serialize.url("location_name", location_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(check_name_availability_parameters, 'CheckNameAvailabilityParameters') - body_content_kwargs['content'] = body_content - request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.CheckNameAvailabilityResult] + + _json = self._serialize.body(check_name_availability_parameters, 'CheckNameAvailabilityParameters') + + request = build_check_name_availability_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.check_name_availability.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('CheckNameAvailabilityResult', pipeline_response) @@ -101,4 +107,6 @@ async def check_name_availability( return cls(pipeline_response, deserialized, {}) return deserialized - check_name_availability.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/checkNameAvailability'} # type: ignore + + check_name_availability.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/checkNameAvailability"} # type: ignore + diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspaces_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspaces_operations.py index 7164002c7e5..22b28cd7c0c 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspaces_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/aio/operations/_workspaces_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,50 +6,54 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union, cast from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ...._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models - +from ..._vendor import _convert_request +from ...operations._workspaces_operations import build_create_or_update_request_initial, build_delete_request_initial, build_get_request, build_list_by_resource_group_request, build_list_by_subscription_request, build_update_tags_request T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class WorkspacesOperations: - """WorkspacesOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.aio.AzureQuantumManagementClient`'s + :attr:`workspaces` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace_async async def get( self, resource_group_name: str, workspace_name: str, **kwargs: Any - ) -> "_models.QuantumWorkspace": + ) -> _models.QuantumWorkspace: """Returns the Workspace resource associated with the given name. :param resource_group_name: The name of the resource group. @@ -60,38 +65,40 @@ async def get( :rtype: ~azure.mgmt.quantum.models.QuantumWorkspace :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] + + + request = build_get_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + template_url=self.get.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('QuantumWorkspace', pipeline_response) @@ -100,53 +107,55 @@ async def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + async def _create_or_update_initial( self, resource_group_name: str, workspace_name: str, - quantum_workspace: "_models.QuantumWorkspace", + quantum_workspace: _models.QuantumWorkspace, **kwargs: Any - ) -> "_models.QuantumWorkspace": - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] + ) -> _models.QuantumWorkspace: error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_or_update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(quantum_workspace, 'QuantumWorkspace') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] + + _json = self._serialize.body(quantum_workspace, 'QuantumWorkspace') + + request = build_create_or_update_request_initial( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('QuantumWorkspace', pipeline_response) @@ -158,15 +167,18 @@ async def _create_or_update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + + + @distributed_trace_async async def begin_create_or_update( self, resource_group_name: str, workspace_name: str, - quantum_workspace: "_models.QuantumWorkspace", + quantum_workspace: _models.QuantumWorkspace, **kwargs: Any - ) -> AsyncLROPoller["_models.QuantumWorkspace"]: + ) -> AsyncLROPoller[_models.QuantumWorkspace]: """Creates or updates a workspace resource. :param resource_group_name: The name of the resource group. @@ -177,48 +189,58 @@ async def begin_create_or_update( :type quantum_workspace: ~azure.mgmt.quantum.models.QuantumWorkspace :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either QuantumWorkspace or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either QuantumWorkspace or the result of + cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.quantum.models.QuantumWorkspace] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval ) cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] if cont_token is None: - raw_result = await self._create_or_update_initial( + raw_result = await self._create_or_update_initial( # type: ignore resource_group_name=resource_group_name, workspace_name=workspace_name, quantum_workspace=quantum_workspace, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, + headers=_headers, + params=_params, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): deserialized = self._deserialize('QuantumWorkspace', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = AsyncNoPolling() + if polling is True: + polling_method = cast(AsyncPollingMethod, AsyncARMPolling( + lro_delay, + lro_options={'final-state-via': 'azure-async-operation'}, + + **kwargs + )) # type: AsyncPollingMethod + elif polling is False: polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) else: polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( @@ -227,17 +249,18 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + + @distributed_trace_async async def update_tags( self, resource_group_name: str, workspace_name: str, - workspace_tags: "_models.TagsObject", + workspace_tags: _models.TagsObject, **kwargs: Any - ) -> "_models.QuantumWorkspace": + ) -> _models.QuantumWorkspace: """Updates an existing workspace's tags. :param resource_group_name: The name of the resource group. @@ -251,43 +274,44 @@ async def update_tags( :rtype: ~azure.mgmt.quantum.models.QuantumWorkspace :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update_tags.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(workspace_tags, 'TagsObject') - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] + + _json = self._serialize.body(workspace_tags, 'TagsObject') + + request = build_update_tags_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('QuantumWorkspace', pipeline_response) @@ -296,54 +320,59 @@ async def update_tags( return cls(pipeline_response, deserialized, {}) return deserialized - update_tags.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore - async def _delete_initial( + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + + + async def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, workspace_name: str, **kwargs: Any ) -> None: - cls = kwargs.pop('cls', None) # type: ClsType[None] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[None] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore - async def begin_delete( + + @distributed_trace_async + async def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, workspace_name: str, @@ -357,44 +386,52 @@ async def begin_delete( :type workspace_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str cls = kwargs.pop('cls', None) # type: ClsType[None] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval ) cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] if cont_token is None: - raw_result = await self._delete_initial( + raw_result = await self._delete_initial( # type: ignore resource_group_name=resource_group_name, workspace_name=workspace_name, + api_version=api_version, cls=lambda x,y,z: x, + headers=_headers, + params=_params, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - if polling is True: polling_method = AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = AsyncNoPolling() + if polling is True: + polling_method = cast(AsyncPollingMethod, AsyncARMPolling( + lro_delay, + + + **kwargs + )) # type: AsyncPollingMethod + elif polling is False: polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) else: polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( @@ -403,14 +440,15 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + + @distributed_trace def list_by_subscription( self, **kwargs: Any - ) -> AsyncIterable["_models.WorkspaceListResult"]: + ) -> AsyncIterable[_models.WorkspaceListResult]: """Gets the list of Workspaces within a Subscription. :keyword callable cls: A custom type or function that will be passed the direct response @@ -418,39 +456,45 @@ def list_by_subscription( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.quantum.models.WorkspaceListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.WorkspaceListResult"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.WorkspaceListResult] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_subscription.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('WorkspaceListResult', pipeline_response) + deserialized = self._deserialize("WorkspaceListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -459,26 +503,32 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/workspaces'} # type: ignore + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/workspaces"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name: str, **kwargs: Any - ) -> AsyncIterable["_models.WorkspaceListResult"]: + ) -> AsyncIterable[_models.WorkspaceListResult]: """Gets the list of Workspaces within a resource group. :param resource_group_name: The name of the resource group. @@ -488,40 +538,47 @@ def list_by_resource_group( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.quantum.models.WorkspaceListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.WorkspaceListResult"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.WorkspaceListResult] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request async def extract_data(pipeline_response): - deserialized = self._deserialize('WorkspaceListResult', pipeline_response) + deserialized = self._deserialize("WorkspaceListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -530,17 +587,22 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return AsyncItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/__init__.py index 0ca1bf3b133..3261fe2fae6 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/__init__.py @@ -68,7 +68,9 @@ Status, UsableStatus, ) - +from ._patch import __all__ as _patch_all +from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +from ._patch import patch_sdk as _patch_sdk __all__ = [ 'CheckNameAvailabilityParameters', 'CheckNameAvailabilityResult', @@ -102,3 +104,5 @@ 'Status', 'UsableStatus', ] +__all__.extend([p for p in _patch_all if p not in __all__]) +_patch_sdk() \ No newline at end of file diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_azure_quantum_management_client_enums.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_azure_quantum_management_client_enums.py index 982c8b22779..613f1213e47 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_azure_quantum_management_client_enums.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_azure_quantum_management_client_enums.py @@ -6,27 +6,11 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from enum import Enum, EnumMeta -from six import with_metaclass +from enum import Enum +from azure.core import CaseInsensitiveEnumMeta -class _CaseInsensitiveEnumMeta(EnumMeta): - def __getitem__(self, name): - return super().__getitem__(name.upper()) - def __getattr__(cls, name): - """Return the enum member matching `name` - We use __getattr__ instead of descriptors or inserting into the enum - class' __dict__ in order to support `name` and `value` being both - properties for enum members (which live in the class' __dict__) and - enum members themselves. - """ - try: - return cls._member_map_[name.upper()] - except KeyError: - raise AttributeError(name) - - -class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The type of identity that created the resource. """ @@ -35,7 +19,7 @@ class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): MANAGED_IDENTITY = "ManagedIdentity" KEY = "Key" -class ProvisioningStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class ProvisioningStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Provisioning status field """ @@ -46,14 +30,14 @@ class ProvisioningStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): PROVIDER_PROVISIONING = "ProviderProvisioning" FAILED = "Failed" -class ResourceIdentityType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class ResourceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The identity type. """ SYSTEM_ASSIGNED = "SystemAssigned" NONE = "None" -class Status(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class Status(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Provisioning status field """ @@ -64,7 +48,7 @@ class Status(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): DELETED = "Deleted" FAILED = "Failed" -class UsableStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): +class UsableStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Whether the current workspace is ready to accept Jobs. """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models.py index ff110e9fb57..ab8408e48d6 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models.py @@ -13,10 +13,10 @@ class CheckNameAvailabilityParameters(msrest.serialization.Model): """Details of check name availability request body. - :param name: Name for checking availability. - :type name: str - :param type: The resource type of Quantum Workspace. - :type type: str + :ivar name: Name for checking availability. + :vartype name: str + :ivar type: The resource type of Quantum Workspace. + :vartype type: str """ _attribute_map = { @@ -28,6 +28,12 @@ def __init__( self, **kwargs ): + """ + :keyword name: Name for checking availability. + :paramtype name: str + :keyword type: The resource type of Quantum Workspace. + :paramtype type: str + """ super(CheckNameAvailabilityParameters, self).__init__(**kwargs) self.name = kwargs.get('name', None) self.type = kwargs.get('type', "Microsoft.Quantum/Workspaces") @@ -38,10 +44,10 @@ class CheckNameAvailabilityResult(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param name_available: Indicator of availability of the Quantum Workspace resource name. - :type name_available: bool - :param reason: The reason of unavailability. - :type reason: str + :ivar name_available: Indicator of availability of the Quantum Workspace resource name. + :vartype name_available: bool + :ivar reason: The reason of unavailability. + :vartype reason: str :ivar message: The detailed info regarding the reason associated with the Namespace. :vartype message: str """ @@ -60,6 +66,12 @@ def __init__( self, **kwargs ): + """ + :keyword name_available: Indicator of availability of the Quantum Workspace resource name. + :paramtype name_available: bool + :keyword reason: The reason of unavailability. + :paramtype reason: str + """ super(CheckNameAvailabilityResult, self).__init__(**kwargs) self.name_available = kwargs.get('name_available', None) self.reason = kwargs.get('reason', None) @@ -91,6 +103,8 @@ def __init__( self, **kwargs ): + """ + """ super(ErrorAdditionalInfo, self).__init__(**kwargs) self.type = None self.info = None @@ -133,6 +147,8 @@ def __init__( self, **kwargs ): + """ + """ super(ErrorDetail, self).__init__(**kwargs) self.code = None self.message = None @@ -144,8 +160,8 @@ def __init__( class ErrorResponse(msrest.serialization.Model): """Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). - :param error: The error object. - :type error: ~azure.mgmt.quantum.models.ErrorDetail + :ivar error: The error object. + :vartype error: ~azure.mgmt.quantum.models.ErrorDetail """ _attribute_map = { @@ -156,6 +172,10 @@ def __init__( self, **kwargs ): + """ + :keyword error: The error object. + :paramtype error: ~azure.mgmt.quantum.models.ErrorDetail + """ super(ErrorResponse, self).__init__(**kwargs) self.error = kwargs.get('error', None) @@ -163,11 +183,11 @@ def __init__( class OfferingsListResult(msrest.serialization.Model): """The response of a list Providers operation. - :param value: Result of a list Providers operation. - :type value: list[~azure.mgmt.quantum.models.ProviderDescription] - :param next_link: Link to the next set of results. Not empty if Value contains incomplete list + :ivar value: Result of a list Providers operation. + :vartype value: list[~azure.mgmt.quantum.models.ProviderDescription] + :ivar next_link: Link to the next set of results. Not empty if Value contains incomplete list of Providers. - :type next_link: str + :vartype next_link: str """ _attribute_map = { @@ -179,6 +199,13 @@ def __init__( self, **kwargs ): + """ + :keyword value: Result of a list Providers operation. + :paramtype value: list[~azure.mgmt.quantum.models.ProviderDescription] + :keyword next_link: Link to the next set of results. Not empty if Value contains incomplete + list of Providers. + :paramtype next_link: str + """ super(OfferingsListResult, self).__init__(**kwargs) self.value = kwargs.get('value', None) self.next_link = kwargs.get('next_link', None) @@ -187,12 +214,12 @@ def __init__( class Operation(msrest.serialization.Model): """Operation provided by provider. - :param name: Name of the operation. - :type name: str - :param is_data_action: Indicates whether the operation is a data action. - :type is_data_action: bool - :param display: Properties of the operation. - :type display: ~azure.mgmt.quantum.models.OperationDisplay + :ivar name: Name of the operation. + :vartype name: str + :ivar is_data_action: Indicates whether the operation is a data action. + :vartype is_data_action: bool + :ivar display: Properties of the operation. + :vartype display: ~azure.mgmt.quantum.models.OperationDisplay """ _attribute_map = { @@ -205,6 +232,14 @@ def __init__( self, **kwargs ): + """ + :keyword name: Name of the operation. + :paramtype name: str + :keyword is_data_action: Indicates whether the operation is a data action. + :paramtype is_data_action: bool + :keyword display: Properties of the operation. + :paramtype display: ~azure.mgmt.quantum.models.OperationDisplay + """ super(Operation, self).__init__(**kwargs) self.name = kwargs.get('name', None) self.is_data_action = kwargs.get('is_data_action', None) @@ -214,14 +249,14 @@ def __init__( class OperationDisplay(msrest.serialization.Model): """Properties of the operation. - :param provider: Provider name. - :type provider: str - :param resource: Resource name. - :type resource: str - :param operation: Operation name. - :type operation: str - :param description: Description of the operation. - :type description: str + :ivar provider: Provider name. + :vartype provider: str + :ivar resource: Resource name. + :vartype resource: str + :ivar operation: Operation name. + :vartype operation: str + :ivar description: Description of the operation. + :vartype description: str """ _attribute_map = { @@ -235,6 +270,16 @@ def __init__( self, **kwargs ): + """ + :keyword provider: Provider name. + :paramtype provider: str + :keyword resource: Resource name. + :paramtype resource: str + :keyword operation: Operation name. + :paramtype operation: str + :keyword description: Description of the operation. + :paramtype description: str + """ super(OperationDisplay, self).__init__(**kwargs) self.provider = kwargs.get('provider', None) self.resource = kwargs.get('resource', None) @@ -247,10 +292,10 @@ class OperationsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of operations. - :type next_link: str - :param value: Required. Array of operations. - :type value: list[~azure.mgmt.quantum.models.Operation] + :ivar next_link: Url to follow for getting next page of operations. + :vartype next_link: str + :ivar value: Required. Array of operations. + :vartype value: list[~azure.mgmt.quantum.models.Operation] """ _validation = { @@ -266,6 +311,12 @@ def __init__( self, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of operations. + :paramtype next_link: str + :keyword value: Required. Array of operations. + :paramtype value: list[~azure.mgmt.quantum.models.Operation] + """ super(OperationsList, self).__init__(**kwargs) self.next_link = kwargs.get('next_link', None) self.value = kwargs['value'] @@ -274,10 +325,10 @@ def __init__( class PricingDetail(msrest.serialization.Model): """Detailed pricing information for an sku. - :param id: Unique id for this pricing information. - :type id: str - :param value: The unit cost of this sku. - :type value: str + :ivar id: Unique id for this pricing information. + :vartype id: str + :ivar value: The unit cost of this sku. + :vartype value: str """ _attribute_map = { @@ -289,6 +340,12 @@ def __init__( self, **kwargs ): + """ + :keyword id: Unique id for this pricing information. + :paramtype id: str + :keyword value: The unit cost of this sku. + :paramtype value: str + """ super(PricingDetail, self).__init__(**kwargs) self.id = kwargs.get('id', None) self.value = kwargs.get('value', None) @@ -297,10 +354,10 @@ def __init__( class PricingDimension(msrest.serialization.Model): """Information about pricing dimension. - :param id: Unique id of this pricing dimension. - :type id: str - :param name: The display name of this pricing dimension. - :type name: str + :ivar id: Unique id of this pricing dimension. + :vartype id: str + :ivar name: The display name of this pricing dimension. + :vartype name: str """ _attribute_map = { @@ -312,6 +369,12 @@ def __init__( self, **kwargs ): + """ + :keyword id: Unique id of this pricing dimension. + :paramtype id: str + :keyword name: The display name of this pricing dimension. + :paramtype name: str + """ super(PricingDimension, self).__init__(**kwargs) self.id = kwargs.get('id', None) self.name = kwargs.get('name', None) @@ -320,19 +383,19 @@ def __init__( class Provider(msrest.serialization.Model): """Information about a Provider. A Provider is an entity that offers Targets to run Azure Quantum Jobs. - :param provider_id: Unique id of this provider. - :type provider_id: str - :param provider_sku: The sku associated with pricing information for this provider. - :type provider_sku: str - :param instance_uri: A Uri identifying the specific instance of this provider. - :type instance_uri: str - :param application_name: The provider's marketplace application display name. - :type application_name: str - :param provisioning_state: Provisioning status field. Possible values include: "Succeeded", + :ivar provider_id: Unique id of this provider. + :vartype provider_id: str + :ivar provider_sku: The sku associated with pricing information for this provider. + :vartype provider_sku: str + :ivar instance_uri: A Uri identifying the specific instance of this provider. + :vartype instance_uri: str + :ivar application_name: The provider's marketplace application display name. + :vartype application_name: str + :ivar provisioning_state: Provisioning status field. Known values are: "Succeeded", "Launching", "Updating", "Deleting", "Deleted", "Failed". - :type provisioning_state: str or ~azure.mgmt.quantum.models.Status - :param resource_usage_id: Id to track resource usage for the provider. - :type resource_usage_id: str + :vartype provisioning_state: str or ~azure.mgmt.quantum.models.Status + :ivar resource_usage_id: Id to track resource usage for the provider. + :vartype resource_usage_id: str """ _attribute_map = { @@ -348,6 +411,21 @@ def __init__( self, **kwargs ): + """ + :keyword provider_id: Unique id of this provider. + :paramtype provider_id: str + :keyword provider_sku: The sku associated with pricing information for this provider. + :paramtype provider_sku: str + :keyword instance_uri: A Uri identifying the specific instance of this provider. + :paramtype instance_uri: str + :keyword application_name: The provider's marketplace application display name. + :paramtype application_name: str + :keyword provisioning_state: Provisioning status field. Known values are: "Succeeded", + "Launching", "Updating", "Deleting", "Deleted", "Failed". + :paramtype provisioning_state: str or ~azure.mgmt.quantum.models.Status + :keyword resource_usage_id: Id to track resource usage for the provider. + :paramtype resource_usage_id: str + """ super(Provider, self).__init__(**kwargs) self.provider_id = kwargs.get('provider_id', None) self.provider_sku = kwargs.get('provider_sku', None) @@ -362,12 +440,12 @@ class ProviderDescription(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param id: Unique provider's id. - :type id: str + :ivar id: Unique provider's id. + :vartype id: str :ivar name: Provider's display name. :vartype name: str - :param properties: A list of provider-specific properties. - :type properties: ~azure.mgmt.quantum.models.ProviderProperties + :ivar properties: A list of provider-specific properties. + :vartype properties: ~azure.mgmt.quantum.models.ProviderProperties """ _validation = { @@ -384,6 +462,12 @@ def __init__( self, **kwargs ): + """ + :keyword id: Unique provider's id. + :paramtype id: str + :keyword properties: A list of provider-specific properties. + :paramtype properties: ~azure.mgmt.quantum.models.ProviderProperties + """ super(ProviderDescription, self).__init__(**kwargs) self.id = kwargs.get('id', None) self.name = None @@ -403,18 +487,18 @@ class ProviderProperties(msrest.serialization.Model): :vartype company: str :ivar default_endpoint: Provider's default endpoint. :vartype default_endpoint: str - :param aad: Azure Active Directory info. - :type aad: ~azure.mgmt.quantum.models.ProviderPropertiesAad - :param managed_application: Provider's Managed-Application info. - :type managed_application: ~azure.mgmt.quantum.models.ProviderPropertiesManagedApplication - :param targets: The list of targets available from this provider. - :type targets: list[~azure.mgmt.quantum.models.TargetDescription] - :param skus: The list of skus available from this provider. - :type skus: list[~azure.mgmt.quantum.models.SkuDescription] - :param quota_dimensions: The list of quota dimensions from the provider. - :type quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] - :param pricing_dimensions: The list of pricing dimensions from the provider. - :type pricing_dimensions: list[~azure.mgmt.quantum.models.PricingDimension] + :ivar aad: Azure Active Directory info. + :vartype aad: ~azure.mgmt.quantum.models.ProviderPropertiesAad + :ivar managed_application: Provider's Managed-Application info. + :vartype managed_application: ~azure.mgmt.quantum.models.ProviderPropertiesManagedApplication + :ivar targets: The list of targets available from this provider. + :vartype targets: list[~azure.mgmt.quantum.models.TargetDescription] + :ivar skus: The list of skus available from this provider. + :vartype skus: list[~azure.mgmt.quantum.models.SkuDescription] + :ivar quota_dimensions: The list of quota dimensions from the provider. + :vartype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :ivar pricing_dimensions: The list of pricing dimensions from the provider. + :vartype pricing_dimensions: list[~azure.mgmt.quantum.models.PricingDimension] """ _validation = { @@ -441,6 +525,20 @@ def __init__( self, **kwargs ): + """ + :keyword aad: Azure Active Directory info. + :paramtype aad: ~azure.mgmt.quantum.models.ProviderPropertiesAad + :keyword managed_application: Provider's Managed-Application info. + :paramtype managed_application: ~azure.mgmt.quantum.models.ProviderPropertiesManagedApplication + :keyword targets: The list of targets available from this provider. + :paramtype targets: list[~azure.mgmt.quantum.models.TargetDescription] + :keyword skus: The list of skus available from this provider. + :paramtype skus: list[~azure.mgmt.quantum.models.SkuDescription] + :keyword quota_dimensions: The list of quota dimensions from the provider. + :paramtype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :keyword pricing_dimensions: The list of pricing dimensions from the provider. + :paramtype pricing_dimensions: list[~azure.mgmt.quantum.models.PricingDimension] + """ super(ProviderProperties, self).__init__(**kwargs) self.description = None self.provider_type = None @@ -479,6 +577,8 @@ def __init__( self, **kwargs ): + """ + """ super(ProviderPropertiesAad, self).__init__(**kwargs) self.application_id = None self.tenant_id = None @@ -509,6 +609,8 @@ def __init__( self, **kwargs ): + """ + """ super(ProviderPropertiesManagedApplication, self).__init__(**kwargs) self.publisher_id = None self.offer_id = None @@ -545,6 +647,8 @@ def __init__( self, **kwargs ): + """ + """ super(Resource, self).__init__(**kwargs) self.id = None self.name = None @@ -566,10 +670,10 @@ class TrackedResource(Resource): :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts". :vartype type: str - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] - :param location: Required. The geo-location where the resource lives. - :type location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar location: Required. The geo-location where the resource lives. + :vartype location: str """ _validation = { @@ -591,6 +695,12 @@ def __init__( self, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword location: Required. The geo-location where the resource lives. + :paramtype location: str + """ super(TrackedResource, self).__init__(**kwargs) self.tags = kwargs.get('tags', None) self.location = kwargs['location'] @@ -611,24 +721,24 @@ class QuantumWorkspace(TrackedResource): :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts". :vartype type: str - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] - :param location: Required. The geo-location where the resource lives. - :type location: str - :param identity: Managed Identity information. - :type identity: ~azure.mgmt.quantum.models.QuantumWorkspaceIdentity + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar location: Required. The geo-location where the resource lives. + :vartype location: str + :ivar identity: Managed Identity information. + :vartype identity: ~azure.mgmt.quantum.models.QuantumWorkspaceIdentity :ivar system_data: System metadata. :vartype system_data: ~azure.mgmt.quantum.models.SystemData - :param providers: List of Providers selected for this Workspace. - :type providers: list[~azure.mgmt.quantum.models.Provider] - :ivar usable: Whether the current workspace is ready to accept Jobs. Possible values include: - "Yes", "No", "Partial". + :ivar providers: List of Providers selected for this Workspace. + :vartype providers: list[~azure.mgmt.quantum.models.Provider] + :ivar usable: Whether the current workspace is ready to accept Jobs. Known values are: "Yes", + "No", "Partial". :vartype usable: str or ~azure.mgmt.quantum.models.UsableStatus - :ivar provisioning_state: Provisioning status field. Possible values include: "Succeeded", + :ivar provisioning_state: Provisioning status field. Known values are: "Succeeded", "ProviderLaunching", "ProviderUpdating", "ProviderDeleting", "ProviderProvisioning", "Failed". :vartype provisioning_state: str or ~azure.mgmt.quantum.models.ProvisioningStatus - :param storage_account: ARM Resource Id of the storage account associated with this workspace. - :type storage_account: str + :ivar storage_account: ARM Resource Id of the storage account associated with this workspace. + :vartype storage_account: str :ivar endpoint_uri: The URI of the workspace endpoint. :vartype endpoint_uri: str """ @@ -663,6 +773,19 @@ def __init__( self, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword location: Required. The geo-location where the resource lives. + :paramtype location: str + :keyword identity: Managed Identity information. + :paramtype identity: ~azure.mgmt.quantum.models.QuantumWorkspaceIdentity + :keyword providers: List of Providers selected for this Workspace. + :paramtype providers: list[~azure.mgmt.quantum.models.Provider] + :keyword storage_account: ARM Resource Id of the storage account associated with this + workspace. + :paramtype storage_account: str + """ super(QuantumWorkspace, self).__init__(**kwargs) self.identity = kwargs.get('identity', None) self.system_data = None @@ -682,8 +805,8 @@ class QuantumWorkspaceIdentity(msrest.serialization.Model): :vartype principal_id: str :ivar tenant_id: The tenant ID of resource. :vartype tenant_id: str - :param type: The identity type. Possible values include: "SystemAssigned", "None". - :type type: str or ~azure.mgmt.quantum.models.ResourceIdentityType + :ivar type: The identity type. Known values are: "SystemAssigned", "None". + :vartype type: str or ~azure.mgmt.quantum.models.ResourceIdentityType """ _validation = { @@ -701,6 +824,10 @@ def __init__( self, **kwargs ): + """ + :keyword type: The identity type. Known values are: "SystemAssigned", "None". + :paramtype type: str or ~azure.mgmt.quantum.models.ResourceIdentityType + """ super(QuantumWorkspaceIdentity, self).__init__(**kwargs) self.principal_id = None self.tenant_id = None @@ -710,23 +837,23 @@ def __init__( class QuotaDimension(msrest.serialization.Model): """Information about a specific quota dimension. - :param id: Unique id of this dimension. - :type id: str - :param scope: The scope of this quota dimension. - :type scope: str - :param period: The reset period of this quota dimension. - :type period: str - :param quota: The max limit of this dimension. - :type quota: float - :param name: The display name of this quota dimension. - :type name: str - :param description: A description about this quota dimension. - :type description: str - :param unit: The standard unit of measurement used for this quota dimension. - :type unit: str - :param unit_plural: The standard unit of measurement used for this quota dimension in plural + :ivar id: Unique id of this dimension. + :vartype id: str + :ivar scope: The scope of this quota dimension. + :vartype scope: str + :ivar period: The reset period of this quota dimension. + :vartype period: str + :ivar quota: The max limit of this dimension. + :vartype quota: float + :ivar name: The display name of this quota dimension. + :vartype name: str + :ivar description: A description about this quota dimension. + :vartype description: str + :ivar unit: The standard unit of measurement used for this quota dimension. + :vartype unit: str + :ivar unit_plural: The standard unit of measurement used for this quota dimension in plural form. - :type unit_plural: str + :vartype unit_plural: str """ _attribute_map = { @@ -744,6 +871,25 @@ def __init__( self, **kwargs ): + """ + :keyword id: Unique id of this dimension. + :paramtype id: str + :keyword scope: The scope of this quota dimension. + :paramtype scope: str + :keyword period: The reset period of this quota dimension. + :paramtype period: str + :keyword quota: The max limit of this dimension. + :paramtype quota: float + :keyword name: The display name of this quota dimension. + :paramtype name: str + :keyword description: A description about this quota dimension. + :paramtype description: str + :keyword unit: The standard unit of measurement used for this quota dimension. + :paramtype unit: str + :keyword unit_plural: The standard unit of measurement used for this quota dimension in plural + form. + :paramtype unit_plural: str + """ super(QuotaDimension, self).__init__(**kwargs) self.id = kwargs.get('id', None) self.scope = kwargs.get('scope', None) @@ -758,22 +904,25 @@ def __init__( class SkuDescription(msrest.serialization.Model): """Information about a specific sku. - :param id: Unique sku id. - :type id: str - :param name: Display name of this sku. - :type name: str - :param version: Display name of this sku. - :type version: str - :param description: Description about this sku. - :type description: str - :param restricted_access_uri: Uri to subscribe to the restricted access sku. - :type restricted_access_uri: str - :param targets: The list of targets available for this sku. - :type targets: list[str] - :param quota_dimensions: The list of quota dimensions for this sku. - :type quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] - :param pricing_details: The list of pricing details for the sku. - :type pricing_details: list[~azure.mgmt.quantum.models.PricingDetail] + :ivar id: Unique sku id. + :vartype id: str + :ivar name: Display name of this sku. + :vartype name: str + :ivar version: Display name of this sku. + :vartype version: str + :ivar description: Description about this sku. + :vartype description: str + :ivar restricted_access_uri: Uri to subscribe to the restricted access sku. + :vartype restricted_access_uri: str + :ivar auto_add: Flag to indicate whether the sku should be automatically added during workspace + creation. + :vartype auto_add: bool + :ivar targets: The list of targets available for this sku. + :vartype targets: list[str] + :ivar quota_dimensions: The list of quota dimensions for this sku. + :vartype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :ivar pricing_details: The list of pricing details for the sku. + :vartype pricing_details: list[~azure.mgmt.quantum.models.PricingDetail] """ _attribute_map = { @@ -782,6 +931,7 @@ class SkuDescription(msrest.serialization.Model): 'version': {'key': 'version', 'type': 'str'}, 'description': {'key': 'description', 'type': 'str'}, 'restricted_access_uri': {'key': 'restrictedAccessUri', 'type': 'str'}, + 'auto_add': {'key': 'autoAdd', 'type': 'bool'}, 'targets': {'key': 'targets', 'type': '[str]'}, 'quota_dimensions': {'key': 'quotaDimensions', 'type': '[QuotaDimension]'}, 'pricing_details': {'key': 'pricingDetails', 'type': '[PricingDetail]'}, @@ -791,12 +941,34 @@ def __init__( self, **kwargs ): + """ + :keyword id: Unique sku id. + :paramtype id: str + :keyword name: Display name of this sku. + :paramtype name: str + :keyword version: Display name of this sku. + :paramtype version: str + :keyword description: Description about this sku. + :paramtype description: str + :keyword restricted_access_uri: Uri to subscribe to the restricted access sku. + :paramtype restricted_access_uri: str + :keyword auto_add: Flag to indicate whether the sku should be automatically added during + workspace creation. + :paramtype auto_add: bool + :keyword targets: The list of targets available for this sku. + :paramtype targets: list[str] + :keyword quota_dimensions: The list of quota dimensions for this sku. + :paramtype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :keyword pricing_details: The list of pricing details for the sku. + :paramtype pricing_details: list[~azure.mgmt.quantum.models.PricingDetail] + """ super(SkuDescription, self).__init__(**kwargs) self.id = kwargs.get('id', None) self.name = kwargs.get('name', None) self.version = kwargs.get('version', None) self.description = kwargs.get('description', None) self.restricted_access_uri = kwargs.get('restricted_access_uri', None) + self.auto_add = kwargs.get('auto_add', None) self.targets = kwargs.get('targets', None) self.quota_dimensions = kwargs.get('quota_dimensions', None) self.pricing_details = kwargs.get('pricing_details', None) @@ -805,20 +977,20 @@ def __init__( class SystemData(msrest.serialization.Model): """Metadata pertaining to creation and last modification of the resource. - :param created_by: The identity that created the resource. - :type created_by: str - :param created_by_type: The type of identity that created the resource. Possible values - include: "User", "Application", "ManagedIdentity", "Key". - :type created_by_type: str or ~azure.mgmt.quantum.models.CreatedByType - :param created_at: The timestamp of resource creation (UTC). - :type created_at: ~datetime.datetime - :param last_modified_by: The identity that last modified the resource. - :type last_modified_by: str - :param last_modified_by_type: The type of identity that last modified the resource. Possible - values include: "User", "Application", "ManagedIdentity", "Key". - :type last_modified_by_type: str or ~azure.mgmt.quantum.models.CreatedByType - :param last_modified_at: The timestamp of resource last modification (UTC). - :type last_modified_at: ~datetime.datetime + :ivar created_by: The identity that created the resource. + :vartype created_by: str + :ivar created_by_type: The type of identity that created the resource. Known values are: + "User", "Application", "ManagedIdentity", "Key". + :vartype created_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :ivar created_at: The timestamp of resource creation (UTC). + :vartype created_at: ~datetime.datetime + :ivar last_modified_by: The identity that last modified the resource. + :vartype last_modified_by: str + :ivar last_modified_by_type: The type of identity that last modified the resource. Known values + are: "User", "Application", "ManagedIdentity", "Key". + :vartype last_modified_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :ivar last_modified_at: The timestamp of resource last modification (UTC). + :vartype last_modified_at: ~datetime.datetime """ _attribute_map = { @@ -834,6 +1006,22 @@ def __init__( self, **kwargs ): + """ + :keyword created_by: The identity that created the resource. + :paramtype created_by: str + :keyword created_by_type: The type of identity that created the resource. Known values are: + "User", "Application", "ManagedIdentity", "Key". + :paramtype created_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :keyword created_at: The timestamp of resource creation (UTC). + :paramtype created_at: ~datetime.datetime + :keyword last_modified_by: The identity that last modified the resource. + :paramtype last_modified_by: str + :keyword last_modified_by_type: The type of identity that last modified the resource. Known + values are: "User", "Application", "ManagedIdentity", "Key". + :paramtype last_modified_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :keyword last_modified_at: The timestamp of resource last modification (UTC). + :paramtype last_modified_at: ~datetime.datetime + """ super(SystemData, self).__init__(**kwargs) self.created_by = kwargs.get('created_by', None) self.created_by_type = kwargs.get('created_by_type', None) @@ -846,8 +1034,8 @@ def __init__( class TagsObject(msrest.serialization.Model): """Tags object for patch operations. - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] """ _attribute_map = { @@ -858,6 +1046,10 @@ def __init__( self, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ super(TagsObject, self).__init__(**kwargs) self.tags = kwargs.get('tags', None) @@ -865,16 +1057,16 @@ def __init__( class TargetDescription(msrest.serialization.Model): """Information about a Target. A target is the component that can process a specific type of Job. - :param id: Unique target id. - :type id: str - :param name: Display name of this target. - :type name: str - :param description: A description about this target. - :type description: str - :param accepted_data_formats: List of data formats accepted by this target. - :type accepted_data_formats: list[str] - :param accepted_content_encodings: List of content encodings accepted by this target. - :type accepted_content_encodings: list[str] + :ivar id: Unique target id. + :vartype id: str + :ivar name: Display name of this target. + :vartype name: str + :ivar description: A description about this target. + :vartype description: str + :ivar accepted_data_formats: List of data formats accepted by this target. + :vartype accepted_data_formats: list[str] + :ivar accepted_content_encodings: List of content encodings accepted by this target. + :vartype accepted_content_encodings: list[str] """ _attribute_map = { @@ -889,6 +1081,18 @@ def __init__( self, **kwargs ): + """ + :keyword id: Unique target id. + :paramtype id: str + :keyword name: Display name of this target. + :paramtype name: str + :keyword description: A description about this target. + :paramtype description: str + :keyword accepted_data_formats: List of data formats accepted by this target. + :paramtype accepted_data_formats: list[str] + :keyword accepted_content_encodings: List of content encodings accepted by this target. + :paramtype accepted_content_encodings: list[str] + """ super(TargetDescription, self).__init__(**kwargs) self.id = kwargs.get('id', None) self.name = kwargs.get('name', None) @@ -900,11 +1104,11 @@ def __init__( class WorkspaceListResult(msrest.serialization.Model): """The response of a list Workspaces operation. - :param value: Result of a list Workspaces operation. - :type value: list[~azure.mgmt.quantum.models.QuantumWorkspace] - :param next_link: Link to the next set of results. Not empty if Value contains incomplete list + :ivar value: Result of a list Workspaces operation. + :vartype value: list[~azure.mgmt.quantum.models.QuantumWorkspace] + :ivar next_link: Link to the next set of results. Not empty if Value contains incomplete list of Workspaces. - :type next_link: str + :vartype next_link: str """ _attribute_map = { @@ -916,6 +1120,13 @@ def __init__( self, **kwargs ): + """ + :keyword value: Result of a list Workspaces operation. + :paramtype value: list[~azure.mgmt.quantum.models.QuantumWorkspace] + :keyword next_link: Link to the next set of results. Not empty if Value contains incomplete + list of Workspaces. + :paramtype next_link: str + """ super(WorkspaceListResult, self).__init__(**kwargs) self.value = kwargs.get('value', None) self.next_link = kwargs.get('next_link', None) diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models_py3.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models_py3.py index e84404877e6..5cb6e2a476b 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models_py3.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_models_py3.py @@ -7,21 +7,23 @@ # -------------------------------------------------------------------------- import datetime -from typing import Dict, List, Optional, Union +from typing import Dict, List, Optional, TYPE_CHECKING, Union from azure.core.exceptions import HttpResponseError import msrest.serialization -from ._azure_quantum_management_client_enums import * +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + import __init__ as _models class CheckNameAvailabilityParameters(msrest.serialization.Model): """Details of check name availability request body. - :param name: Name for checking availability. - :type name: str - :param type: The resource type of Quantum Workspace. - :type type: str + :ivar name: Name for checking availability. + :vartype name: str + :ivar type: The resource type of Quantum Workspace. + :vartype type: str """ _attribute_map = { @@ -36,6 +38,12 @@ def __init__( type: Optional[str] = "Microsoft.Quantum/Workspaces", **kwargs ): + """ + :keyword name: Name for checking availability. + :paramtype name: str + :keyword type: The resource type of Quantum Workspace. + :paramtype type: str + """ super(CheckNameAvailabilityParameters, self).__init__(**kwargs) self.name = name self.type = type @@ -46,10 +54,10 @@ class CheckNameAvailabilityResult(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param name_available: Indicator of availability of the Quantum Workspace resource name. - :type name_available: bool - :param reason: The reason of unavailability. - :type reason: str + :ivar name_available: Indicator of availability of the Quantum Workspace resource name. + :vartype name_available: bool + :ivar reason: The reason of unavailability. + :vartype reason: str :ivar message: The detailed info regarding the reason associated with the Namespace. :vartype message: str """ @@ -71,6 +79,12 @@ def __init__( reason: Optional[str] = None, **kwargs ): + """ + :keyword name_available: Indicator of availability of the Quantum Workspace resource name. + :paramtype name_available: bool + :keyword reason: The reason of unavailability. + :paramtype reason: str + """ super(CheckNameAvailabilityResult, self).__init__(**kwargs) self.name_available = name_available self.reason = reason @@ -102,6 +116,8 @@ def __init__( self, **kwargs ): + """ + """ super(ErrorAdditionalInfo, self).__init__(**kwargs) self.type = None self.info = None @@ -144,6 +160,8 @@ def __init__( self, **kwargs ): + """ + """ super(ErrorDetail, self).__init__(**kwargs) self.code = None self.message = None @@ -155,8 +173,8 @@ def __init__( class ErrorResponse(msrest.serialization.Model): """Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). - :param error: The error object. - :type error: ~azure.mgmt.quantum.models.ErrorDetail + :ivar error: The error object. + :vartype error: ~azure.mgmt.quantum.models.ErrorDetail """ _attribute_map = { @@ -166,9 +184,13 @@ class ErrorResponse(msrest.serialization.Model): def __init__( self, *, - error: Optional["ErrorDetail"] = None, + error: Optional["_models.ErrorDetail"] = None, **kwargs ): + """ + :keyword error: The error object. + :paramtype error: ~azure.mgmt.quantum.models.ErrorDetail + """ super(ErrorResponse, self).__init__(**kwargs) self.error = error @@ -176,11 +198,11 @@ def __init__( class OfferingsListResult(msrest.serialization.Model): """The response of a list Providers operation. - :param value: Result of a list Providers operation. - :type value: list[~azure.mgmt.quantum.models.ProviderDescription] - :param next_link: Link to the next set of results. Not empty if Value contains incomplete list + :ivar value: Result of a list Providers operation. + :vartype value: list[~azure.mgmt.quantum.models.ProviderDescription] + :ivar next_link: Link to the next set of results. Not empty if Value contains incomplete list of Providers. - :type next_link: str + :vartype next_link: str """ _attribute_map = { @@ -191,10 +213,17 @@ class OfferingsListResult(msrest.serialization.Model): def __init__( self, *, - value: Optional[List["ProviderDescription"]] = None, + value: Optional[List["_models.ProviderDescription"]] = None, next_link: Optional[str] = None, **kwargs ): + """ + :keyword value: Result of a list Providers operation. + :paramtype value: list[~azure.mgmt.quantum.models.ProviderDescription] + :keyword next_link: Link to the next set of results. Not empty if Value contains incomplete + list of Providers. + :paramtype next_link: str + """ super(OfferingsListResult, self).__init__(**kwargs) self.value = value self.next_link = next_link @@ -203,12 +232,12 @@ def __init__( class Operation(msrest.serialization.Model): """Operation provided by provider. - :param name: Name of the operation. - :type name: str - :param is_data_action: Indicates whether the operation is a data action. - :type is_data_action: bool - :param display: Properties of the operation. - :type display: ~azure.mgmt.quantum.models.OperationDisplay + :ivar name: Name of the operation. + :vartype name: str + :ivar is_data_action: Indicates whether the operation is a data action. + :vartype is_data_action: bool + :ivar display: Properties of the operation. + :vartype display: ~azure.mgmt.quantum.models.OperationDisplay """ _attribute_map = { @@ -222,9 +251,17 @@ def __init__( *, name: Optional[str] = None, is_data_action: Optional[bool] = None, - display: Optional["OperationDisplay"] = None, + display: Optional["_models.OperationDisplay"] = None, **kwargs ): + """ + :keyword name: Name of the operation. + :paramtype name: str + :keyword is_data_action: Indicates whether the operation is a data action. + :paramtype is_data_action: bool + :keyword display: Properties of the operation. + :paramtype display: ~azure.mgmt.quantum.models.OperationDisplay + """ super(Operation, self).__init__(**kwargs) self.name = name self.is_data_action = is_data_action @@ -234,14 +271,14 @@ def __init__( class OperationDisplay(msrest.serialization.Model): """Properties of the operation. - :param provider: Provider name. - :type provider: str - :param resource: Resource name. - :type resource: str - :param operation: Operation name. - :type operation: str - :param description: Description of the operation. - :type description: str + :ivar provider: Provider name. + :vartype provider: str + :ivar resource: Resource name. + :vartype resource: str + :ivar operation: Operation name. + :vartype operation: str + :ivar description: Description of the operation. + :vartype description: str """ _attribute_map = { @@ -260,6 +297,16 @@ def __init__( description: Optional[str] = None, **kwargs ): + """ + :keyword provider: Provider name. + :paramtype provider: str + :keyword resource: Resource name. + :paramtype resource: str + :keyword operation: Operation name. + :paramtype operation: str + :keyword description: Description of the operation. + :paramtype description: str + """ super(OperationDisplay, self).__init__(**kwargs) self.provider = provider self.resource = resource @@ -272,10 +319,10 @@ class OperationsList(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :param next_link: Url to follow for getting next page of operations. - :type next_link: str - :param value: Required. Array of operations. - :type value: list[~azure.mgmt.quantum.models.Operation] + :ivar next_link: Url to follow for getting next page of operations. + :vartype next_link: str + :ivar value: Required. Array of operations. + :vartype value: list[~azure.mgmt.quantum.models.Operation] """ _validation = { @@ -290,10 +337,16 @@ class OperationsList(msrest.serialization.Model): def __init__( self, *, - value: List["Operation"], + value: List["_models.Operation"], next_link: Optional[str] = None, **kwargs ): + """ + :keyword next_link: Url to follow for getting next page of operations. + :paramtype next_link: str + :keyword value: Required. Array of operations. + :paramtype value: list[~azure.mgmt.quantum.models.Operation] + """ super(OperationsList, self).__init__(**kwargs) self.next_link = next_link self.value = value @@ -302,10 +355,10 @@ def __init__( class PricingDetail(msrest.serialization.Model): """Detailed pricing information for an sku. - :param id: Unique id for this pricing information. - :type id: str - :param value: The unit cost of this sku. - :type value: str + :ivar id: Unique id for this pricing information. + :vartype id: str + :ivar value: The unit cost of this sku. + :vartype value: str """ _attribute_map = { @@ -320,6 +373,12 @@ def __init__( value: Optional[str] = None, **kwargs ): + """ + :keyword id: Unique id for this pricing information. + :paramtype id: str + :keyword value: The unit cost of this sku. + :paramtype value: str + """ super(PricingDetail, self).__init__(**kwargs) self.id = id self.value = value @@ -328,10 +387,10 @@ def __init__( class PricingDimension(msrest.serialization.Model): """Information about pricing dimension. - :param id: Unique id of this pricing dimension. - :type id: str - :param name: The display name of this pricing dimension. - :type name: str + :ivar id: Unique id of this pricing dimension. + :vartype id: str + :ivar name: The display name of this pricing dimension. + :vartype name: str """ _attribute_map = { @@ -346,6 +405,12 @@ def __init__( name: Optional[str] = None, **kwargs ): + """ + :keyword id: Unique id of this pricing dimension. + :paramtype id: str + :keyword name: The display name of this pricing dimension. + :paramtype name: str + """ super(PricingDimension, self).__init__(**kwargs) self.id = id self.name = name @@ -354,19 +419,19 @@ def __init__( class Provider(msrest.serialization.Model): """Information about a Provider. A Provider is an entity that offers Targets to run Azure Quantum Jobs. - :param provider_id: Unique id of this provider. - :type provider_id: str - :param provider_sku: The sku associated with pricing information for this provider. - :type provider_sku: str - :param instance_uri: A Uri identifying the specific instance of this provider. - :type instance_uri: str - :param application_name: The provider's marketplace application display name. - :type application_name: str - :param provisioning_state: Provisioning status field. Possible values include: "Succeeded", + :ivar provider_id: Unique id of this provider. + :vartype provider_id: str + :ivar provider_sku: The sku associated with pricing information for this provider. + :vartype provider_sku: str + :ivar instance_uri: A Uri identifying the specific instance of this provider. + :vartype instance_uri: str + :ivar application_name: The provider's marketplace application display name. + :vartype application_name: str + :ivar provisioning_state: Provisioning status field. Known values are: "Succeeded", "Launching", "Updating", "Deleting", "Deleted", "Failed". - :type provisioning_state: str or ~azure.mgmt.quantum.models.Status - :param resource_usage_id: Id to track resource usage for the provider. - :type resource_usage_id: str + :vartype provisioning_state: str or ~azure.mgmt.quantum.models.Status + :ivar resource_usage_id: Id to track resource usage for the provider. + :vartype resource_usage_id: str """ _attribute_map = { @@ -385,10 +450,25 @@ def __init__( provider_sku: Optional[str] = None, instance_uri: Optional[str] = None, application_name: Optional[str] = None, - provisioning_state: Optional[Union[str, "Status"]] = None, + provisioning_state: Optional[Union[str, "_models.Status"]] = None, resource_usage_id: Optional[str] = None, **kwargs ): + """ + :keyword provider_id: Unique id of this provider. + :paramtype provider_id: str + :keyword provider_sku: The sku associated with pricing information for this provider. + :paramtype provider_sku: str + :keyword instance_uri: A Uri identifying the specific instance of this provider. + :paramtype instance_uri: str + :keyword application_name: The provider's marketplace application display name. + :paramtype application_name: str + :keyword provisioning_state: Provisioning status field. Known values are: "Succeeded", + "Launching", "Updating", "Deleting", "Deleted", "Failed". + :paramtype provisioning_state: str or ~azure.mgmt.quantum.models.Status + :keyword resource_usage_id: Id to track resource usage for the provider. + :paramtype resource_usage_id: str + """ super(Provider, self).__init__(**kwargs) self.provider_id = provider_id self.provider_sku = provider_sku @@ -403,12 +483,12 @@ class ProviderDescription(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. - :param id: Unique provider's id. - :type id: str + :ivar id: Unique provider's id. + :vartype id: str :ivar name: Provider's display name. :vartype name: str - :param properties: A list of provider-specific properties. - :type properties: ~azure.mgmt.quantum.models.ProviderProperties + :ivar properties: A list of provider-specific properties. + :vartype properties: ~azure.mgmt.quantum.models.ProviderProperties """ _validation = { @@ -425,9 +505,15 @@ def __init__( self, *, id: Optional[str] = None, - properties: Optional["ProviderProperties"] = None, + properties: Optional["_models.ProviderProperties"] = None, **kwargs ): + """ + :keyword id: Unique provider's id. + :paramtype id: str + :keyword properties: A list of provider-specific properties. + :paramtype properties: ~azure.mgmt.quantum.models.ProviderProperties + """ super(ProviderDescription, self).__init__(**kwargs) self.id = id self.name = None @@ -447,18 +533,18 @@ class ProviderProperties(msrest.serialization.Model): :vartype company: str :ivar default_endpoint: Provider's default endpoint. :vartype default_endpoint: str - :param aad: Azure Active Directory info. - :type aad: ~azure.mgmt.quantum.models.ProviderPropertiesAad - :param managed_application: Provider's Managed-Application info. - :type managed_application: ~azure.mgmt.quantum.models.ProviderPropertiesManagedApplication - :param targets: The list of targets available from this provider. - :type targets: list[~azure.mgmt.quantum.models.TargetDescription] - :param skus: The list of skus available from this provider. - :type skus: list[~azure.mgmt.quantum.models.SkuDescription] - :param quota_dimensions: The list of quota dimensions from the provider. - :type quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] - :param pricing_dimensions: The list of pricing dimensions from the provider. - :type pricing_dimensions: list[~azure.mgmt.quantum.models.PricingDimension] + :ivar aad: Azure Active Directory info. + :vartype aad: ~azure.mgmt.quantum.models.ProviderPropertiesAad + :ivar managed_application: Provider's Managed-Application info. + :vartype managed_application: ~azure.mgmt.quantum.models.ProviderPropertiesManagedApplication + :ivar targets: The list of targets available from this provider. + :vartype targets: list[~azure.mgmt.quantum.models.TargetDescription] + :ivar skus: The list of skus available from this provider. + :vartype skus: list[~azure.mgmt.quantum.models.SkuDescription] + :ivar quota_dimensions: The list of quota dimensions from the provider. + :vartype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :ivar pricing_dimensions: The list of pricing dimensions from the provider. + :vartype pricing_dimensions: list[~azure.mgmt.quantum.models.PricingDimension] """ _validation = { @@ -484,14 +570,28 @@ class ProviderProperties(msrest.serialization.Model): def __init__( self, *, - aad: Optional["ProviderPropertiesAad"] = None, - managed_application: Optional["ProviderPropertiesManagedApplication"] = None, - targets: Optional[List["TargetDescription"]] = None, - skus: Optional[List["SkuDescription"]] = None, - quota_dimensions: Optional[List["QuotaDimension"]] = None, - pricing_dimensions: Optional[List["PricingDimension"]] = None, + aad: Optional["_models.ProviderPropertiesAad"] = None, + managed_application: Optional["_models.ProviderPropertiesManagedApplication"] = None, + targets: Optional[List["_models.TargetDescription"]] = None, + skus: Optional[List["_models.SkuDescription"]] = None, + quota_dimensions: Optional[List["_models.QuotaDimension"]] = None, + pricing_dimensions: Optional[List["_models.PricingDimension"]] = None, **kwargs ): + """ + :keyword aad: Azure Active Directory info. + :paramtype aad: ~azure.mgmt.quantum.models.ProviderPropertiesAad + :keyword managed_application: Provider's Managed-Application info. + :paramtype managed_application: ~azure.mgmt.quantum.models.ProviderPropertiesManagedApplication + :keyword targets: The list of targets available from this provider. + :paramtype targets: list[~azure.mgmt.quantum.models.TargetDescription] + :keyword skus: The list of skus available from this provider. + :paramtype skus: list[~azure.mgmt.quantum.models.SkuDescription] + :keyword quota_dimensions: The list of quota dimensions from the provider. + :paramtype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :keyword pricing_dimensions: The list of pricing dimensions from the provider. + :paramtype pricing_dimensions: list[~azure.mgmt.quantum.models.PricingDimension] + """ super(ProviderProperties, self).__init__(**kwargs) self.description = None self.provider_type = None @@ -530,6 +630,8 @@ def __init__( self, **kwargs ): + """ + """ super(ProviderPropertiesAad, self).__init__(**kwargs) self.application_id = None self.tenant_id = None @@ -560,6 +662,8 @@ def __init__( self, **kwargs ): + """ + """ super(ProviderPropertiesManagedApplication, self).__init__(**kwargs) self.publisher_id = None self.offer_id = None @@ -596,6 +700,8 @@ def __init__( self, **kwargs ): + """ + """ super(Resource, self).__init__(**kwargs) self.id = None self.name = None @@ -617,10 +723,10 @@ class TrackedResource(Resource): :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts". :vartype type: str - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] - :param location: Required. The geo-location where the resource lives. - :type location: str + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar location: Required. The geo-location where the resource lives. + :vartype location: str """ _validation = { @@ -645,6 +751,12 @@ def __init__( tags: Optional[Dict[str, str]] = None, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword location: Required. The geo-location where the resource lives. + :paramtype location: str + """ super(TrackedResource, self).__init__(**kwargs) self.tags = tags self.location = location @@ -665,24 +777,24 @@ class QuantumWorkspace(TrackedResource): :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts". :vartype type: str - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] - :param location: Required. The geo-location where the resource lives. - :type location: str - :param identity: Managed Identity information. - :type identity: ~azure.mgmt.quantum.models.QuantumWorkspaceIdentity + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] + :ivar location: Required. The geo-location where the resource lives. + :vartype location: str + :ivar identity: Managed Identity information. + :vartype identity: ~azure.mgmt.quantum.models.QuantumWorkspaceIdentity :ivar system_data: System metadata. :vartype system_data: ~azure.mgmt.quantum.models.SystemData - :param providers: List of Providers selected for this Workspace. - :type providers: list[~azure.mgmt.quantum.models.Provider] - :ivar usable: Whether the current workspace is ready to accept Jobs. Possible values include: - "Yes", "No", "Partial". + :ivar providers: List of Providers selected for this Workspace. + :vartype providers: list[~azure.mgmt.quantum.models.Provider] + :ivar usable: Whether the current workspace is ready to accept Jobs. Known values are: "Yes", + "No", "Partial". :vartype usable: str or ~azure.mgmt.quantum.models.UsableStatus - :ivar provisioning_state: Provisioning status field. Possible values include: "Succeeded", + :ivar provisioning_state: Provisioning status field. Known values are: "Succeeded", "ProviderLaunching", "ProviderUpdating", "ProviderDeleting", "ProviderProvisioning", "Failed". :vartype provisioning_state: str or ~azure.mgmt.quantum.models.ProvisioningStatus - :param storage_account: ARM Resource Id of the storage account associated with this workspace. - :type storage_account: str + :ivar storage_account: ARM Resource Id of the storage account associated with this workspace. + :vartype storage_account: str :ivar endpoint_uri: The URI of the workspace endpoint. :vartype endpoint_uri: str """ @@ -718,11 +830,24 @@ def __init__( *, location: str, tags: Optional[Dict[str, str]] = None, - identity: Optional["QuantumWorkspaceIdentity"] = None, - providers: Optional[List["Provider"]] = None, + identity: Optional["_models.QuantumWorkspaceIdentity"] = None, + providers: Optional[List["_models.Provider"]] = None, storage_account: Optional[str] = None, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + :keyword location: Required. The geo-location where the resource lives. + :paramtype location: str + :keyword identity: Managed Identity information. + :paramtype identity: ~azure.mgmt.quantum.models.QuantumWorkspaceIdentity + :keyword providers: List of Providers selected for this Workspace. + :paramtype providers: list[~azure.mgmt.quantum.models.Provider] + :keyword storage_account: ARM Resource Id of the storage account associated with this + workspace. + :paramtype storage_account: str + """ super(QuantumWorkspace, self).__init__(tags=tags, location=location, **kwargs) self.identity = identity self.system_data = None @@ -742,8 +867,8 @@ class QuantumWorkspaceIdentity(msrest.serialization.Model): :vartype principal_id: str :ivar tenant_id: The tenant ID of resource. :vartype tenant_id: str - :param type: The identity type. Possible values include: "SystemAssigned", "None". - :type type: str or ~azure.mgmt.quantum.models.ResourceIdentityType + :ivar type: The identity type. Known values are: "SystemAssigned", "None". + :vartype type: str or ~azure.mgmt.quantum.models.ResourceIdentityType """ _validation = { @@ -760,9 +885,13 @@ class QuantumWorkspaceIdentity(msrest.serialization.Model): def __init__( self, *, - type: Optional[Union[str, "ResourceIdentityType"]] = None, + type: Optional[Union[str, "_models.ResourceIdentityType"]] = None, **kwargs ): + """ + :keyword type: The identity type. Known values are: "SystemAssigned", "None". + :paramtype type: str or ~azure.mgmt.quantum.models.ResourceIdentityType + """ super(QuantumWorkspaceIdentity, self).__init__(**kwargs) self.principal_id = None self.tenant_id = None @@ -772,23 +901,23 @@ def __init__( class QuotaDimension(msrest.serialization.Model): """Information about a specific quota dimension. - :param id: Unique id of this dimension. - :type id: str - :param scope: The scope of this quota dimension. - :type scope: str - :param period: The reset period of this quota dimension. - :type period: str - :param quota: The max limit of this dimension. - :type quota: float - :param name: The display name of this quota dimension. - :type name: str - :param description: A description about this quota dimension. - :type description: str - :param unit: The standard unit of measurement used for this quota dimension. - :type unit: str - :param unit_plural: The standard unit of measurement used for this quota dimension in plural + :ivar id: Unique id of this dimension. + :vartype id: str + :ivar scope: The scope of this quota dimension. + :vartype scope: str + :ivar period: The reset period of this quota dimension. + :vartype period: str + :ivar quota: The max limit of this dimension. + :vartype quota: float + :ivar name: The display name of this quota dimension. + :vartype name: str + :ivar description: A description about this quota dimension. + :vartype description: str + :ivar unit: The standard unit of measurement used for this quota dimension. + :vartype unit: str + :ivar unit_plural: The standard unit of measurement used for this quota dimension in plural form. - :type unit_plural: str + :vartype unit_plural: str """ _attribute_map = { @@ -815,6 +944,25 @@ def __init__( unit_plural: Optional[str] = None, **kwargs ): + """ + :keyword id: Unique id of this dimension. + :paramtype id: str + :keyword scope: The scope of this quota dimension. + :paramtype scope: str + :keyword period: The reset period of this quota dimension. + :paramtype period: str + :keyword quota: The max limit of this dimension. + :paramtype quota: float + :keyword name: The display name of this quota dimension. + :paramtype name: str + :keyword description: A description about this quota dimension. + :paramtype description: str + :keyword unit: The standard unit of measurement used for this quota dimension. + :paramtype unit: str + :keyword unit_plural: The standard unit of measurement used for this quota dimension in plural + form. + :paramtype unit_plural: str + """ super(QuotaDimension, self).__init__(**kwargs) self.id = id self.scope = scope @@ -829,22 +977,25 @@ def __init__( class SkuDescription(msrest.serialization.Model): """Information about a specific sku. - :param id: Unique sku id. - :type id: str - :param name: Display name of this sku. - :type name: str - :param version: Display name of this sku. - :type version: str - :param description: Description about this sku. - :type description: str - :param restricted_access_uri: Uri to subscribe to the restricted access sku. - :type restricted_access_uri: str - :param targets: The list of targets available for this sku. - :type targets: list[str] - :param quota_dimensions: The list of quota dimensions for this sku. - :type quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] - :param pricing_details: The list of pricing details for the sku. - :type pricing_details: list[~azure.mgmt.quantum.models.PricingDetail] + :ivar id: Unique sku id. + :vartype id: str + :ivar name: Display name of this sku. + :vartype name: str + :ivar version: Display name of this sku. + :vartype version: str + :ivar description: Description about this sku. + :vartype description: str + :ivar restricted_access_uri: Uri to subscribe to the restricted access sku. + :vartype restricted_access_uri: str + :ivar auto_add: Flag to indicate whether the sku should be automatically added during workspace + creation. + :vartype auto_add: bool + :ivar targets: The list of targets available for this sku. + :vartype targets: list[str] + :ivar quota_dimensions: The list of quota dimensions for this sku. + :vartype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :ivar pricing_details: The list of pricing details for the sku. + :vartype pricing_details: list[~azure.mgmt.quantum.models.PricingDetail] """ _attribute_map = { @@ -853,6 +1004,7 @@ class SkuDescription(msrest.serialization.Model): 'version': {'key': 'version', 'type': 'str'}, 'description': {'key': 'description', 'type': 'str'}, 'restricted_access_uri': {'key': 'restrictedAccessUri', 'type': 'str'}, + 'auto_add': {'key': 'autoAdd', 'type': 'bool'}, 'targets': {'key': 'targets', 'type': '[str]'}, 'quota_dimensions': {'key': 'quotaDimensions', 'type': '[QuotaDimension]'}, 'pricing_details': {'key': 'pricingDetails', 'type': '[PricingDetail]'}, @@ -866,17 +1018,40 @@ def __init__( version: Optional[str] = None, description: Optional[str] = None, restricted_access_uri: Optional[str] = None, + auto_add: Optional[bool] = None, targets: Optional[List[str]] = None, - quota_dimensions: Optional[List["QuotaDimension"]] = None, - pricing_details: Optional[List["PricingDetail"]] = None, + quota_dimensions: Optional[List["_models.QuotaDimension"]] = None, + pricing_details: Optional[List["_models.PricingDetail"]] = None, **kwargs ): + """ + :keyword id: Unique sku id. + :paramtype id: str + :keyword name: Display name of this sku. + :paramtype name: str + :keyword version: Display name of this sku. + :paramtype version: str + :keyword description: Description about this sku. + :paramtype description: str + :keyword restricted_access_uri: Uri to subscribe to the restricted access sku. + :paramtype restricted_access_uri: str + :keyword auto_add: Flag to indicate whether the sku should be automatically added during + workspace creation. + :paramtype auto_add: bool + :keyword targets: The list of targets available for this sku. + :paramtype targets: list[str] + :keyword quota_dimensions: The list of quota dimensions for this sku. + :paramtype quota_dimensions: list[~azure.mgmt.quantum.models.QuotaDimension] + :keyword pricing_details: The list of pricing details for the sku. + :paramtype pricing_details: list[~azure.mgmt.quantum.models.PricingDetail] + """ super(SkuDescription, self).__init__(**kwargs) self.id = id self.name = name self.version = version self.description = description self.restricted_access_uri = restricted_access_uri + self.auto_add = auto_add self.targets = targets self.quota_dimensions = quota_dimensions self.pricing_details = pricing_details @@ -885,20 +1060,20 @@ def __init__( class SystemData(msrest.serialization.Model): """Metadata pertaining to creation and last modification of the resource. - :param created_by: The identity that created the resource. - :type created_by: str - :param created_by_type: The type of identity that created the resource. Possible values - include: "User", "Application", "ManagedIdentity", "Key". - :type created_by_type: str or ~azure.mgmt.quantum.models.CreatedByType - :param created_at: The timestamp of resource creation (UTC). - :type created_at: ~datetime.datetime - :param last_modified_by: The identity that last modified the resource. - :type last_modified_by: str - :param last_modified_by_type: The type of identity that last modified the resource. Possible - values include: "User", "Application", "ManagedIdentity", "Key". - :type last_modified_by_type: str or ~azure.mgmt.quantum.models.CreatedByType - :param last_modified_at: The timestamp of resource last modification (UTC). - :type last_modified_at: ~datetime.datetime + :ivar created_by: The identity that created the resource. + :vartype created_by: str + :ivar created_by_type: The type of identity that created the resource. Known values are: + "User", "Application", "ManagedIdentity", "Key". + :vartype created_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :ivar created_at: The timestamp of resource creation (UTC). + :vartype created_at: ~datetime.datetime + :ivar last_modified_by: The identity that last modified the resource. + :vartype last_modified_by: str + :ivar last_modified_by_type: The type of identity that last modified the resource. Known values + are: "User", "Application", "ManagedIdentity", "Key". + :vartype last_modified_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :ivar last_modified_at: The timestamp of resource last modification (UTC). + :vartype last_modified_at: ~datetime.datetime """ _attribute_map = { @@ -914,13 +1089,29 @@ def __init__( self, *, created_by: Optional[str] = None, - created_by_type: Optional[Union[str, "CreatedByType"]] = None, + created_by_type: Optional[Union[str, "_models.CreatedByType"]] = None, created_at: Optional[datetime.datetime] = None, last_modified_by: Optional[str] = None, - last_modified_by_type: Optional[Union[str, "CreatedByType"]] = None, + last_modified_by_type: Optional[Union[str, "_models.CreatedByType"]] = None, last_modified_at: Optional[datetime.datetime] = None, **kwargs ): + """ + :keyword created_by: The identity that created the resource. + :paramtype created_by: str + :keyword created_by_type: The type of identity that created the resource. Known values are: + "User", "Application", "ManagedIdentity", "Key". + :paramtype created_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :keyword created_at: The timestamp of resource creation (UTC). + :paramtype created_at: ~datetime.datetime + :keyword last_modified_by: The identity that last modified the resource. + :paramtype last_modified_by: str + :keyword last_modified_by_type: The type of identity that last modified the resource. Known + values are: "User", "Application", "ManagedIdentity", "Key". + :paramtype last_modified_by_type: str or ~azure.mgmt.quantum.models.CreatedByType + :keyword last_modified_at: The timestamp of resource last modification (UTC). + :paramtype last_modified_at: ~datetime.datetime + """ super(SystemData, self).__init__(**kwargs) self.created_by = created_by self.created_by_type = created_by_type @@ -933,8 +1124,8 @@ def __init__( class TagsObject(msrest.serialization.Model): """Tags object for patch operations. - :param tags: A set of tags. Resource tags. - :type tags: dict[str, str] + :ivar tags: A set of tags. Resource tags. + :vartype tags: dict[str, str] """ _attribute_map = { @@ -947,6 +1138,10 @@ def __init__( tags: Optional[Dict[str, str]] = None, **kwargs ): + """ + :keyword tags: A set of tags. Resource tags. + :paramtype tags: dict[str, str] + """ super(TagsObject, self).__init__(**kwargs) self.tags = tags @@ -954,16 +1149,16 @@ def __init__( class TargetDescription(msrest.serialization.Model): """Information about a Target. A target is the component that can process a specific type of Job. - :param id: Unique target id. - :type id: str - :param name: Display name of this target. - :type name: str - :param description: A description about this target. - :type description: str - :param accepted_data_formats: List of data formats accepted by this target. - :type accepted_data_formats: list[str] - :param accepted_content_encodings: List of content encodings accepted by this target. - :type accepted_content_encodings: list[str] + :ivar id: Unique target id. + :vartype id: str + :ivar name: Display name of this target. + :vartype name: str + :ivar description: A description about this target. + :vartype description: str + :ivar accepted_data_formats: List of data formats accepted by this target. + :vartype accepted_data_formats: list[str] + :ivar accepted_content_encodings: List of content encodings accepted by this target. + :vartype accepted_content_encodings: list[str] """ _attribute_map = { @@ -984,6 +1179,18 @@ def __init__( accepted_content_encodings: Optional[List[str]] = None, **kwargs ): + """ + :keyword id: Unique target id. + :paramtype id: str + :keyword name: Display name of this target. + :paramtype name: str + :keyword description: A description about this target. + :paramtype description: str + :keyword accepted_data_formats: List of data formats accepted by this target. + :paramtype accepted_data_formats: list[str] + :keyword accepted_content_encodings: List of content encodings accepted by this target. + :paramtype accepted_content_encodings: list[str] + """ super(TargetDescription, self).__init__(**kwargs) self.id = id self.name = name @@ -995,11 +1202,11 @@ def __init__( class WorkspaceListResult(msrest.serialization.Model): """The response of a list Workspaces operation. - :param value: Result of a list Workspaces operation. - :type value: list[~azure.mgmt.quantum.models.QuantumWorkspace] - :param next_link: Link to the next set of results. Not empty if Value contains incomplete list + :ivar value: Result of a list Workspaces operation. + :vartype value: list[~azure.mgmt.quantum.models.QuantumWorkspace] + :ivar next_link: Link to the next set of results. Not empty if Value contains incomplete list of Workspaces. - :type next_link: str + :vartype next_link: str """ _attribute_map = { @@ -1010,10 +1217,17 @@ class WorkspaceListResult(msrest.serialization.Model): def __init__( self, *, - value: Optional[List["QuantumWorkspace"]] = None, + value: Optional[List["_models.QuantumWorkspace"]] = None, next_link: Optional[str] = None, **kwargs ): + """ + :keyword value: Result of a list Workspaces operation. + :paramtype value: list[~azure.mgmt.quantum.models.QuantumWorkspace] + :keyword next_link: Link to the next set of results. Not empty if Value contains incomplete + list of Workspaces. + :paramtype next_link: str + """ super(WorkspaceListResult, self).__init__(**kwargs) self.value = value self.next_link = next_link diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/models/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/__init__.py index 7eae3e8df6c..24f33d3cc27 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/__init__.py @@ -11,9 +11,14 @@ from ._operations import Operations from ._workspace_operations import WorkspaceOperations +from ._patch import __all__ as _patch_all +from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +from ._patch import patch_sdk as _patch_sdk __all__ = [ 'WorkspacesOperations', 'OfferingsOperations', 'Operations', 'WorkspaceOperations', ] +__all__.extend([p for p in _patch_all if p not in __all__]) +_patch_sdk() \ No newline at end of file diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_offerings_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_offerings_operations.py index 4f947bcc9c8..8eae070cf9f 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_offerings_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_offerings_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,51 +7,95 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_list_request( + subscription_id, # type: str + location_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/offerings") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "locationName": _SERIALIZER.url("location_name", location_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + +# fmt: on class OfferingsOperations(object): - """OfferingsOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.AzureQuantumManagementClient`'s + :attr:`offerings` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace def list( self, location_name, # type: str **kwargs # type: Any ): - # type: (...) -> Iterable["_models.OfferingsListResult"] + # type: (...) -> Iterable[_models.OfferingsListResult] """Returns the list of all provider offerings available for the given location. :param location_name: Location. @@ -60,40 +105,47 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.quantum.models.OfferingsListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.OfferingsListResult"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.OfferingsListResult] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'locationName': self._serialize.url("location_name", location_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + template_url=self.list.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('OfferingsListResult', pipeline_response) + deserialized = self._deserialize("OfferingsListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -102,17 +154,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/offerings'} # type: ignore + list.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/offerings"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_operations.py index e1c5ea4d311..9b12cc4b552 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,50 +7,86 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._vendor import _convert_request if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] -class Operations(object): - """Operations operations. +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_list_request( + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + accept = _headers.pop('Accept', "application/json") - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + # Construct URL + _url = kwargs.pop("template_url", "/providers/Microsoft.Quantum/operations") - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + +# fmt: on +class Operations(object): + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.AzureQuantumManagementClient`'s + :attr:`operations` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace def list( self, **kwargs # type: Any ): - # type: (...) -> Iterable["_models.OperationsList"] + # type: (...) -> Iterable[_models.OperationsList] """Returns list of operations. :keyword callable cls: A custom type or function that will be passed the direct response @@ -57,35 +94,43 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.quantum.models.OperationsList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.OperationsList"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.OperationsList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = build_list_request( + api_version=api_version, + template_url=self.list.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore - request = self._client.get(url, query_parameters, header_parameters) else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_request( + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('OperationsList', pipeline_response) + deserialized = self._deserialize("OperationsList", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -94,17 +139,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/providers/Microsoft.Quantum/operations'} # type: ignore + list.metadata = {'url': "/providers/Microsoft.Quantum/operations"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspace_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspace_operations.py index 45da69e35ce..b606cd3adc1 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspace_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspace_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,98 +7,147 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Optional, TypeVar - + from typing import Any, Callable, Dict, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_check_name_availability_request( + subscription_id, # type: str + location_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/checkNameAvailability") # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "locationName": _SERIALIZER.url("location_name", location_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + if content_type is not None: + _headers['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="POST", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + +# fmt: on class WorkspaceOperations(object): - """WorkspaceOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.AzureQuantumManagementClient`'s + :attr:`workspace` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace def check_name_availability( self, location_name, # type: str - check_name_availability_parameters, # type: "_models.CheckNameAvailabilityParameters" + check_name_availability_parameters, # type: _models.CheckNameAvailabilityParameters **kwargs # type: Any ): - # type: (...) -> "_models.CheckNameAvailabilityResult" + # type: (...) -> _models.CheckNameAvailabilityResult """Check the availability of the resource name. :param location_name: Location. :type location_name: str :param check_name_availability_parameters: The name and type of the resource. - :type check_name_availability_parameters: ~azure.mgmt.quantum.models.CheckNameAvailabilityParameters + :type check_name_availability_parameters: + ~azure.mgmt.quantum.models.CheckNameAvailabilityParameters :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResult, or the result of cls(response) :rtype: ~azure.mgmt.quantum.models.CheckNameAvailabilityResult :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.CheckNameAvailabilityResult"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.check_name_availability.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'locationName': self._serialize.url("location_name", location_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(check_name_availability_parameters, 'CheckNameAvailabilityParameters') - body_content_kwargs['content'] = body_content - request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.CheckNameAvailabilityResult] + + _json = self._serialize.body(check_name_availability_parameters, 'CheckNameAvailabilityParameters') + + request = build_check_name_availability_request( + subscription_id=self._config.subscription_id, + location_name=location_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.check_name_availability.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('CheckNameAvailabilityResult', pipeline_response) @@ -106,4 +156,6 @@ def check_name_availability( return cls(pipeline_response, deserialized, {}) return deserialized - check_name_availability.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/checkNameAvailability'} # type: ignore + + check_name_availability.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/locations/{locationName}/checkNameAvailability"} # type: ignore + diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspaces_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspaces_operations.py index e0a88dfb196..c8586daca5d 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspaces_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/operations/_workspaces_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,55 +6,291 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import TYPE_CHECKING -import warnings +from typing import TYPE_CHECKING, cast + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False +# fmt: off + +def build_get_request( + resource_group_name, # type: str + subscription_id, # type: str + workspace_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + + +def build_create_or_update_request_initial( + resource_group_name, # type: str + subscription_id, # type: str + workspace_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + if content_type is not None: + _headers['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PUT", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + + +def build_update_tags_request( + resource_group_name, # type: str + subscription_id, # type: str + workspace_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + if content_type is not None: + _headers['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="PATCH", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + + +def build_delete_request_initial( + resource_group_name, # type: str + subscription_id, # type: str + workspace_name, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="DELETE", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + + +def build_list_by_subscription_request( + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/workspaces") + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + + +def build_list_by_resource_group_request( + resource_group_name, # type: str + subscription_id, # type: str + **kwargs # type: Any +): + # type: (...) -> HttpRequest + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + accept = _headers.pop('Accept', "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces") # pylint: disable=line-too-long + path_format_arguments = { + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + } + + _url = _format_url_section(_url, **path_format_arguments) + + # Construct parameters + _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + + # Construct headers + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + + return HttpRequest( + method="GET", + url=_url, + params=_params, + headers=_headers, + **kwargs + ) + +# fmt: on class WorkspacesOperations(object): - """WorkspacesOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.mgmt.quantum.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.mgmt.quantum.AzureQuantumManagementClient`'s + :attr:`workspaces` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace def get( self, resource_group_name, # type: str workspace_name, # type: str **kwargs # type: Any ): - # type: (...) -> "_models.QuantumWorkspace" + # type: (...) -> _models.QuantumWorkspace """Returns the Workspace resource associated with the given name. :param resource_group_name: The name of the resource group. @@ -65,38 +302,40 @@ def get( :rtype: ~azure.mgmt.quantum.models.QuantumWorkspace :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] + + + request = build_get_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + template_url=self.get.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('QuantumWorkspace', pipeline_response) @@ -105,54 +344,56 @@ def get( return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + + get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + def _create_or_update_initial( self, resource_group_name, # type: str workspace_name, # type: str - quantum_workspace, # type: "_models.QuantumWorkspace" + quantum_workspace, # type: _models.QuantumWorkspace **kwargs # type: Any ): - # type: (...) -> "_models.QuantumWorkspace" - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] + # type: (...) -> _models.QuantumWorkspace error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self._create_or_update_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(quantum_workspace, 'QuantumWorkspace') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] + + _json = self._serialize.body(quantum_workspace, 'QuantumWorkspace') + + request = build_create_or_update_request_initial( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self._create_or_update_initial.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: deserialized = self._deserialize('QuantumWorkspace', pipeline_response) @@ -164,16 +405,19 @@ def _create_or_update_initial( return cls(pipeline_response, deserialized, {}) return deserialized - _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + + + @distributed_trace def begin_create_or_update( self, resource_group_name, # type: str workspace_name, # type: str - quantum_workspace, # type: "_models.QuantumWorkspace" + quantum_workspace, # type: _models.QuantumWorkspace **kwargs # type: Any ): - # type: (...) -> LROPoller["_models.QuantumWorkspace"] + # type: (...) -> LROPoller[_models.QuantumWorkspace] """Creates or updates a workspace resource. :param resource_group_name: The name of the resource group. @@ -184,48 +428,58 @@ def begin_create_or_update( :type quantum_workspace: ~azure.mgmt.quantum.models.QuantumWorkspace :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. - :return: An instance of LROPoller that returns either QuantumWorkspace or the result of cls(response) + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either QuantumWorkspace or the result of + cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.quantum.models.QuantumWorkspace] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval ) cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] if cont_token is None: - raw_result = self._create_or_update_initial( + raw_result = self._create_or_update_initial( # type: ignore resource_group_name=resource_group_name, workspace_name=workspace_name, quantum_workspace=quantum_workspace, + api_version=api_version, + content_type=content_type, cls=lambda x,y,z: x, + headers=_headers, + params=_params, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): deserialized = self._deserialize('QuantumWorkspace', pipeline_response) - if cls: return cls(pipeline_response, deserialized, {}) return deserialized - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = NoPolling() + if polling is True: + polling_method = cast(PollingMethod, ARMPolling( + lro_delay, + lro_options={'final-state-via': 'azure-async-operation'}, + + **kwargs + )) # type: PollingMethod + elif polling is False: polling_method = cast(PollingMethod, NoPolling()) else: polling_method = polling if cont_token: return LROPoller.from_continuation_token( @@ -234,18 +488,19 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + @distributed_trace def update_tags( self, resource_group_name, # type: str workspace_name, # type: str - workspace_tags, # type: "_models.TagsObject" + workspace_tags, # type: _models.TagsObject **kwargs # type: Any ): - # type: (...) -> "_models.QuantumWorkspace" + # type: (...) -> _models.QuantumWorkspace """Updates an existing workspace's tags. :param resource_group_name: The name of the resource group. @@ -259,43 +514,44 @@ def update_tags( :rtype: ~azure.mgmt.quantum.models.QuantumWorkspace :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuantumWorkspace"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.update_tags.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(workspace_tags, 'TagsObject') - body_content_kwargs['content'] = body_content - request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuantumWorkspace] + + _json = self._serialize.body(workspace_tags, 'TagsObject') + + request = build_update_tags_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + content_type=content_type, + json=_json, + template_url=self.update_tags.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('QuantumWorkspace', pipeline_response) @@ -304,55 +560,60 @@ def update_tags( return cls(pipeline_response, deserialized, {}) return deserialized - update_tags.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore - def _delete_initial( + update_tags.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + + + def _delete_initial( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str workspace_name, # type: str **kwargs # type: Any ): # type: (...) -> None - cls = kwargs.pop('cls', None) # type: ClsType[None] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - - # Construct URL - url = self._delete_initial.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) + error_map.update(kwargs.pop('error_map', {}) or {}) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[None] - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = build_delete_request_initial( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + workspace_name=workspace_name, + api_version=api_version, + template_url=self._delete_initial.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) if cls: return cls(pipeline_response, None, {}) - _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + _delete_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + - def begin_delete( + @distributed_trace + def begin_delete( # pylint: disable=inconsistent-return-statements self, resource_group_name, # type: str workspace_name, # type: str @@ -367,44 +628,52 @@ def begin_delete( :type workspace_name: str :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. - Pass in False for this operation to not poll, or pass in your own initialized polling object for a personal polling strategy. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. :return: An instance of LROPoller that returns either None or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: + :raises: ~azure.core.exceptions.HttpResponseError """ - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str cls = kwargs.pop('cls', None) # type: ClsType[None] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval ) cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] if cont_token is None: - raw_result = self._delete_initial( + raw_result = self._delete_initial( # type: ignore resource_group_name=resource_group_name, workspace_name=workspace_name, + api_version=api_version, cls=lambda x,y,z: x, + headers=_headers, + params=_params, **kwargs ) - kwargs.pop('error_map', None) - kwargs.pop('content_type', None) def get_long_running_output(pipeline_response): if cls: return cls(pipeline_response, None, {}) - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str'), - } - if polling is True: polling_method = ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - elif polling is False: polling_method = NoPolling() + if polling is True: + polling_method = cast(PollingMethod, ARMPolling( + lro_delay, + + + **kwargs + )) # type: PollingMethod + elif polling is False: polling_method = cast(PollingMethod, NoPolling()) else: polling_method = polling if cont_token: return LROPoller.from_continuation_token( @@ -413,15 +682,16 @@ def get_long_running_output(pipeline_response): client=self._client, deserialization_callback=get_long_running_output ) - else: - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}'} # type: ignore + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}"} # type: ignore + @distributed_trace def list_by_subscription( self, **kwargs # type: Any ): - # type: (...) -> Iterable["_models.WorkspaceListResult"] + # type: (...) -> Iterable[_models.WorkspaceListResult] """Gets the list of Workspaces within a Subscription. :keyword callable cls: A custom type or function that will be passed the direct response @@ -429,39 +699,45 @@ def list_by_subscription( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.quantum.models.WorkspaceListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.WorkspaceListResult"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.WorkspaceListResult] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_subscription.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_subscription.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_subscription_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('WorkspaceListResult', pipeline_response) + deserialized = self._deserialize("WorkspaceListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -470,27 +746,33 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/workspaces'} # type: ignore + list_by_subscription.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.Quantum/workspaces"} # type: ignore + @distributed_trace def list_by_resource_group( self, resource_group_name, # type: str **kwargs # type: Any ): - # type: (...) -> Iterable["_models.WorkspaceListResult"] + # type: (...) -> Iterable[_models.WorkspaceListResult] """Gets the list of Workspaces within a resource group. :param resource_group_name: The name of the resource group. @@ -500,40 +782,47 @@ def list_by_resource_group( :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.quantum.models.WorkspaceListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.WorkspaceListResult"] + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-01-10-preview")) # type: str + cls = kwargs.pop('cls', None) # type: ClsType[_models.WorkspaceListResult] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2019-11-04-preview" - accept = "application/json" - + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - if not next_link: - # Construct URL - url = self.list_by_resource_group.metadata['url'] # type: ignore - path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=self.list_by_resource_group.metadata['url'], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + + request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + template_url=next_link, + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) # type: ignore + request.method = "GET" return request def extract_data(pipeline_response): - deserialized = self._deserialize('WorkspaceListResult', pipeline_response) + deserialized = self._deserialize("WorkspaceListResult", pipeline_response) list_of_elem = deserialized.value if cls: list_of_elem = cls(list_of_elem) @@ -542,17 +831,22 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, response) map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response + return ItemPaged( get_next, extract_data ) - list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces'} # type: ignore + list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces"} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/py.typed b/src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/py.typed similarity index 100% rename from src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/py.typed rename to src/quantum/azext_quantum/vendored_sdks/azure_mgmt_quantum/py.typed diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/__init__.py index bb04d45447a..b0a08f59c4d 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/__init__.py @@ -10,9 +10,14 @@ from ._version import VERSION __version__ = VERSION + +try: + from ._patch import __all__ as _patch_all + from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +except ImportError: + _patch_all = [] +from ._patch import patch_sdk as _patch_sdk __all__ = ['QuantumClient'] +__all__.extend([p for p in _patch_all if p not in __all__]) -# `._patch.py` is used for handwritten extensions to the generated code -# Example: https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md -from ._patch import patch_sdk -patch_sdk() +_patch_sdk() diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_configuration.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_configuration.py index 99286d1c74b..3f229e547f4 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_configuration.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_configuration.py @@ -20,7 +20,7 @@ from azure.core.credentials import TokenCredential -class QuantumClientConfiguration(Configuration): +class QuantumClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes """Configuration for QuantumClient. Note that all parameters used to create this instance are saved as instance @@ -28,7 +28,8 @@ class QuantumClientConfiguration(Configuration): :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: The Azure subscription ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + :param subscription_id: The Azure subscription ID. This is a GUID-formatted string (e.g. + 00000000-0000-0000-0000-000000000000). :type subscription_id: str :param resource_group_name: Name of an Azure resource group. :type resource_group_name: str diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_patch.py index 74e48ecd07c..8a35ddb87c7 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_patch.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_patch.py @@ -1,31 +1,23 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# The MIT License (MIT) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the ""Software""), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# -# -------------------------------------------------------------------------- +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level -# This file is used for handwritten extensions to the generated code. Example: -# https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md def patch_sdk(): - pass \ No newline at end of file + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_quantum_client.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_quantum_client.py index edc512ac850..4733638d7eb 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_quantum_client.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/_quantum_client.py @@ -9,16 +9,17 @@ from copy import deepcopy from typing import TYPE_CHECKING -from azure.core import PipelineClient from msrest import Deserializer, Serializer +from azure.core import PipelineClient + from . import models from ._configuration import QuantumClientConfiguration from .operations import JobsOperations, ProvidersOperations, QuotasOperations, StorageOperations if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Optional + from typing import Any from azure.core.credentials import TokenCredential from azure.core.rest import HttpRequest, HttpResponse @@ -43,7 +44,7 @@ class QuantumClient(object): :type resource_group_name: str :param workspace_name: Name of the workspace. :type workspace_name: str - :param base_url: Service URL. Default value is 'https://quantum.azure.com'. + :param base_url: Service URL. Default value is "https://quantum.azure.com". :type base_url: str """ @@ -64,10 +65,18 @@ def __init__( self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) self._serialize.client_side_validation = False - self.jobs = JobsOperations(self._client, self._config, self._serialize, self._deserialize) - self.providers = ProvidersOperations(self._client, self._config, self._serialize, self._deserialize) - self.storage = StorageOperations(self._client, self._config, self._serialize, self._deserialize) - self.quotas = QuotasOperations(self._client, self._config, self._serialize, self._deserialize) + self.jobs = JobsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.providers = ProvidersOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.storage = StorageOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.quotas = QuotasOperations( + self._client, self._config, self._serialize, self._deserialize + ) def _send_request( diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/__init__.py index 76a60c6f7cc..89f6b36e379 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/__init__.py @@ -7,9 +7,14 @@ # -------------------------------------------------------------------------- from ._quantum_client import QuantumClient + +try: + from ._patch import __all__ as _patch_all + from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +except ImportError: + _patch_all = [] +from ._patch import patch_sdk as _patch_sdk __all__ = ['QuantumClient'] +__all__.extend([p for p in _patch_all if p not in __all__]) -# `._patch.py` is used for handwritten extensions to the generated code -# Example: https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md -from ._patch import patch_sdk -patch_sdk() +_patch_sdk() diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_configuration.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_configuration.py index 0645ba9c519..34d2310e298 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_configuration.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_configuration.py @@ -18,7 +18,7 @@ from azure.core.credentials_async import AsyncTokenCredential -class QuantumClientConfiguration(Configuration): +class QuantumClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes """Configuration for QuantumClient. Note that all parameters used to create this instance are saved as instance @@ -26,7 +26,8 @@ class QuantumClientConfiguration(Configuration): :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: The Azure subscription ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + :param subscription_id: The Azure subscription ID. This is a GUID-formatted string (e.g. + 00000000-0000-0000-0000-000000000000). :type subscription_id: str :param resource_group_name: Name of an Azure resource group. :type resource_group_name: str diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_patch.py index 74e48ecd07c..8a35ddb87c7 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_patch.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_patch.py @@ -1,31 +1,23 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# The MIT License (MIT) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the ""Software""), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# -# -------------------------------------------------------------------------- +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level -# This file is used for handwritten extensions to the generated code. Example: -# https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md def patch_sdk(): - pass \ No newline at end of file + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_quantum_client.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_quantum_client.py index daa1d3a4d2d..e7530b13243 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_quantum_client.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/_quantum_client.py @@ -7,11 +7,12 @@ # -------------------------------------------------------------------------- from copy import deepcopy -from typing import Any, Awaitable, Optional, TYPE_CHECKING +from typing import Any, Awaitable, TYPE_CHECKING + +from msrest import Deserializer, Serializer from azure.core import AsyncPipelineClient from azure.core.rest import AsyncHttpResponse, HttpRequest -from msrest import Deserializer, Serializer from .. import models from ._configuration import QuantumClientConfiguration @@ -41,7 +42,7 @@ class QuantumClient: :type resource_group_name: str :param workspace_name: Name of the workspace. :type workspace_name: str - :param base_url: Service URL. Default value is 'https://quantum.azure.com'. + :param base_url: Service URL. Default value is "https://quantum.azure.com". :type base_url: str """ @@ -61,10 +62,18 @@ def __init__( self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) self._serialize.client_side_validation = False - self.jobs = JobsOperations(self._client, self._config, self._serialize, self._deserialize) - self.providers = ProvidersOperations(self._client, self._config, self._serialize, self._deserialize) - self.storage = StorageOperations(self._client, self._config, self._serialize, self._deserialize) - self.quotas = QuotasOperations(self._client, self._config, self._serialize, self._deserialize) + self.jobs = JobsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.providers = ProvidersOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.storage = StorageOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.quotas = QuotasOperations( + self._client, self._config, self._serialize, self._deserialize + ) def _send_request( diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/__init__.py index 2904bfb87b5..c65541f0638 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/__init__.py @@ -11,9 +11,14 @@ from ._storage_operations import StorageOperations from ._quotas_operations import QuotasOperations +from ._patch import __all__ as _patch_all +from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +from ._patch import patch_sdk as _patch_sdk __all__ = [ 'JobsOperations', 'ProvidersOperations', 'StorageOperations', 'QuotasOperations', ] +__all__.extend([p for p in _patch_all if p not in __all__]) +_patch_sdk() \ No newline at end of file diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_jobs_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_jobs_operations.py index 4487a6e5b43..70b0505948a 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_jobs_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_jobs_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,9 +6,7 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools -from typing import Any, AsyncIterable, Callable, Dict, Generic, List, Optional, TypeVar, Union -import warnings +from typing import Any, AsyncIterable, Callable, Dict, List, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error @@ -16,6 +15,8 @@ from azure.core.rest import HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ...._utils import case_insensitive_dict from ... import models as _models from ..._vendor import _convert_request @@ -24,32 +25,30 @@ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class JobsOperations: - """JobsOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.aio.QuantumClient`'s + :attr:`jobs` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace def list( self, **kwargs: Any - ) -> AsyncIterable["_models.JobDetailsList"]: + ) -> AsyncIterable[_models.JobDetailsList]: """List jobs. :keyword callable cls: A custom type or function that will be passed the direct response @@ -57,11 +56,15 @@ def list( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.quantum._client.models.JobDetailsList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.JobDetailsList"] + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.JobDetailsList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): if not next_link: @@ -70,9 +73,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=self.list.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore else: @@ -81,9 +86,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=next_link, + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore request.method = "GET" return request @@ -97,7 +104,11 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -110,14 +121,14 @@ async def get_next(next_link=None): return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs'} # type: ignore + list.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs"} # type: ignore @distributed_trace_async async def get( self, job_id: str, **kwargs: Any - ) -> "_models.JobDetails": + ) -> _models.JobDetails: """Get job by id. :param job_id: Id of the job. @@ -127,11 +138,15 @@ async def get( :rtype: ~azure.quantum._client.models.JobDetails :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.JobDetails"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.JobDetails] request = build_get_request( @@ -140,11 +155,17 @@ async def get( workspace_name=self._config.workspace_name, job_id=job_id, template_url=self.get.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -159,16 +180,16 @@ async def get( return deserialized - get.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + get.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore @distributed_trace_async async def create( self, job_id: str, - job: "_models.JobDetails", + job: _models.JobDetails, **kwargs: Any - ) -> "_models.JobDetails": + ) -> _models.JobDetails: """Create a job. :param job_id: Id of the job. @@ -180,13 +201,16 @@ async def create( :rtype: ~azure.quantum._client.models.JobDetails :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.JobDetails"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.JobDetails] _json = self._serialize.body(job, 'JobDetails') @@ -198,11 +222,17 @@ async def create( content_type=content_type, json=_json, template_url=self.create.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: @@ -221,11 +251,11 @@ async def create( return deserialized - create.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + create.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore @distributed_trace_async - async def cancel( + async def cancel( # pylint: disable=inconsistent-return-statements self, job_id: str, **kwargs: Any @@ -239,11 +269,15 @@ async def cancel( :rtype: None :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType[None] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[None] request = build_cancel_request( @@ -252,11 +286,17 @@ async def cancel( workspace_name=self._config.workspace_name, job_id=job_id, template_url=self.cancel.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [204]: @@ -267,16 +307,16 @@ async def cancel( if cls: return cls(pipeline_response, None, {}) - cancel.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + cancel.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore @distributed_trace_async async def patch( self, job_id: str, - patch_job: List["_models.JsonPatchDocument"], + patch_job: List[_models.JsonPatchDocument], **kwargs: Any - ) -> Optional["_models.JobDetails"]: + ) -> Optional[_models.JobDetails]: """Patch a job. :param job_id: Id of the job. @@ -288,13 +328,16 @@ async def patch( :rtype: ~azure.quantum._client.models.JobDetails or None :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.JobDetails"]] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[Optional[_models.JobDetails]] _json = self._serialize.body(patch_job, '[JsonPatchDocument]') @@ -306,11 +349,17 @@ async def patch( content_type=content_type, json=_json, template_url=self.patch.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 204]: @@ -327,5 +376,5 @@ async def patch( return deserialized - patch.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + patch.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_providers_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_providers_operations.py index 29903fa6ebd..600ade11ebb 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_providers_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_providers_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,9 +6,7 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error @@ -15,7 +14,6 @@ from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async from ... import models as _models from ..._vendor import _convert_request @@ -24,32 +22,30 @@ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class ProvidersOperations: - """ProvidersOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.aio.QuantumClient`'s + :attr:`providers` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace def get_status( self, **kwargs: Any - ) -> AsyncIterable["_models.ProviderStatusList"]: + ) -> AsyncIterable[_models.ProviderStatusList]: """Get provider status. :keyword callable cls: A custom type or function that will be passed the direct response @@ -58,11 +54,15 @@ def get_status( ~azure.core.async_paging.AsyncItemPaged[~azure.quantum._client.models.ProviderStatusList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ProviderStatusList"] + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.ProviderStatusList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): if not next_link: @@ -71,9 +71,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=self.get_status.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore else: @@ -82,9 +84,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=next_link, + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore request.method = "GET" return request @@ -98,7 +102,11 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -112,4 +120,4 @@ async def get_next(next_link=None): return AsyncItemPaged( get_next, extract_data ) - get_status.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/providerStatus'} # type: ignore + get_status.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/providerStatus"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_quotas_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_quotas_operations.py index a40009ffc13..23143f2b01f 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_quotas_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_quotas_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,9 +6,7 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error @@ -15,7 +14,6 @@ from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest from azure.core.tracing.decorator import distributed_trace -from azure.core.tracing.decorator_async import distributed_trace_async from ... import models as _models from ..._vendor import _convert_request @@ -24,32 +22,30 @@ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class QuotasOperations: - """QuotasOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.aio.QuantumClient`'s + :attr:`quotas` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace def list( self, **kwargs: Any - ) -> AsyncIterable["_models.QuotaList"]: + ) -> AsyncIterable[_models.QuotaList]: """List quotas for the given workspace. :keyword callable cls: A custom type or function that will be passed the direct response @@ -57,11 +53,15 @@ def list( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.quantum._client.models.QuotaList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuotaList"] + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuotaList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): if not next_link: @@ -70,9 +70,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=self.list.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore else: @@ -81,9 +83,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=next_link, + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore request.method = "GET" return request @@ -97,7 +101,11 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -111,4 +119,4 @@ async def get_next(next_link=None): return AsyncItemPaged( get_next, extract_data ) - list.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/quotas'} # type: ignore + list.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/quotas"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_storage_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_storage_operations.py index 840a6db8e6b..c43b78079b9 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_storage_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/aio/operations/_storage_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,15 +6,15 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools -from typing import Any, Callable, Dict, Generic, Optional, TypeVar -import warnings +from typing import Any, Callable, Dict, Optional, TypeVar from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ...._utils import case_insensitive_dict from ... import models as _models from ..._vendor import _convert_request @@ -22,33 +23,31 @@ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] class StorageOperations: - """StorageOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.aio.QuantumClient`'s + :attr:`storage` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace_async async def sas_uri( self, - blob_details: "_models.BlobDetails", + blob_details: _models.BlobDetails, **kwargs: Any - ) -> "_models.SasUriResponse": + ) -> _models.SasUriResponse: """Gets a URL with SAS token for a container/blob in the storage account associated with the workspace. The SAS URL can be used to upload job input and/or download job output. @@ -59,13 +58,16 @@ async def sas_uri( :rtype: ~azure.quantum._client.models.SasUriResponse :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SasUriResponse"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.SasUriResponse] _json = self._serialize.body(blob_details, 'BlobDetails') @@ -76,11 +78,17 @@ async def sas_uri( content_type=content_type, json=_json, template_url=self.sas_uri.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -95,5 +103,5 @@ async def sas_uri( return deserialized - sas_uri.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/storage/sasUri'} # type: ignore + sas_uri.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/storage/sasUri"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/__init__.py index 404fadad3fd..ad3caad3876 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/__init__.py @@ -45,7 +45,9 @@ ProviderAvailability, TargetAvailability, ) - +from ._patch import __all__ as _patch_all +from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +from ._patch import patch_sdk as _patch_sdk __all__ = [ 'BlobDetails', 'CostEstimate', @@ -68,3 +70,5 @@ 'ProviderAvailability', 'TargetAvailability', ] +__all__.extend([p for p in _patch_all if p not in __all__]) +_patch_sdk() \ No newline at end of file diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models.py index 90ed0a6f64d..721a3f23333 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models.py @@ -149,8 +149,8 @@ class JobDetails(msrest.serialization.Model): :vartype output_data_uri: str :ivar output_data_format: The format of the output data. :vartype output_data_format: str - :ivar status: The job status. Possible values include: "Waiting", "Executing", "Succeeded", - "Failed", "Cancelled". + :ivar status: The job status. Known values are: "Waiting", "Executing", "Succeeded", "Failed", + "Cancelled". :vartype status: str or ~azure.quantum._client.models.JobStatus :ivar creation_time: The creation time of the job. :vartype creation_time: ~datetime.datetime @@ -307,7 +307,7 @@ class JsonPatchDocument(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :ivar op: Required. The operation to be performed. Possible values include: "add", "remove", + :ivar op: Required. The operation to be performed. Known values are: "add", "remove", "replace", "move", "copy", "test". :vartype op: str or ~azure.quantum._client.models.JsonPatchOperation :ivar path: Required. A JSON-Pointer. @@ -335,7 +335,7 @@ def __init__( **kwargs ): """ - :keyword op: Required. The operation to be performed. Possible values include: "add", "remove", + :keyword op: Required. The operation to be performed. Known values are: "add", "remove", "replace", "move", "copy", "test". :paramtype op: str or ~azure.quantum._client.models.JsonPatchOperation :keyword path: Required. A JSON-Pointer. @@ -359,8 +359,8 @@ class ProviderStatus(msrest.serialization.Model): :ivar id: Provider id. :vartype id: str - :ivar current_availability: Provider availability. Possible values include: "Available", - "Degraded", "Unavailable". + :ivar current_availability: Provider availability. Known values are: "Available", "Degraded", + "Unavailable". :vartype current_availability: str or ~azure.quantum._client.models.ProviderAvailability :ivar targets: :vartype targets: list[~azure.quantum._client.models.TargetStatus] @@ -427,7 +427,7 @@ class Quota(msrest.serialization.Model): :ivar dimension: The name of the dimension associated with the quota. :vartype dimension: str - :ivar scope: The scope at which the quota is applied. Possible values include: "Workspace", + :ivar scope: The scope at which the quota is applied. Known values are: "Workspace", "Subscription". :vartype scope: str or ~azure.quantum._client.models.DimensionScope :ivar provider_id: The unique identifier for the provider. @@ -440,8 +440,7 @@ class Quota(msrest.serialization.Model): :ivar limit: The maximum amount of usage allowed for the current period. :vartype limit: float :ivar period: The time period in which the quota's underlying meter is accumulated. Based on - calendar year. 'None' is used for concurrent quotas. Possible values include: "None", - "Monthly". + calendar year. 'None' is used for concurrent quotas. Known values are: "None", "Monthly". :vartype period: str or ~azure.quantum._client.models.MeterPeriod """ @@ -462,7 +461,7 @@ def __init__( """ :keyword dimension: The name of the dimension associated with the quota. :paramtype dimension: str - :keyword scope: The scope at which the quota is applied. Possible values include: "Workspace", + :keyword scope: The scope at which the quota is applied. Known values are: "Workspace", "Subscription". :paramtype scope: str or ~azure.quantum._client.models.DimensionScope :keyword provider_id: The unique identifier for the provider. @@ -475,8 +474,7 @@ def __init__( :keyword limit: The maximum amount of usage allowed for the current period. :paramtype limit: float :keyword period: The time period in which the quota's underlying meter is accumulated. Based on - calendar year. 'None' is used for concurrent quotas. Possible values include: "None", - "Monthly". + calendar year. 'None' is used for concurrent quotas. Known values are: "None", "Monthly". :paramtype period: str or ~azure.quantum._client.models.MeterPeriod """ super(Quota, self).__init__(**kwargs) @@ -574,8 +572,8 @@ class TargetStatus(msrest.serialization.Model): :ivar id: Target id. :vartype id: str - :ivar current_availability: Target availability. Possible values include: "Available", - "Degraded", "Unavailable". + :ivar current_availability: Target availability. Known values are: "Available", "Degraded", + "Unavailable". :vartype current_availability: str or ~azure.quantum._client.models.TargetAvailability :ivar average_queue_time: Average queue time in seconds. :vartype average_queue_time: long diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models_py3.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models_py3.py index e8d9ab67fe1..2e78ff44a31 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models_py3.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_models_py3.py @@ -6,12 +6,14 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Optional, TYPE_CHECKING, Union from azure.core.exceptions import HttpResponseError import msrest.serialization -from ._quantum_client_enums import * +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + import __init__ as _models class BlobDetails(msrest.serialization.Model): @@ -73,7 +75,7 @@ def __init__( self, *, currency_code: Optional[str] = None, - events: Optional[List["UsageEvent"]] = None, + events: Optional[List["_models.UsageEvent"]] = None, estimated_total: Optional[float] = None, **kwargs ): @@ -163,8 +165,8 @@ class JobDetails(msrest.serialization.Model): :vartype output_data_uri: str :ivar output_data_format: The format of the output data. :vartype output_data_format: str - :ivar status: The job status. Possible values include: "Waiting", "Executing", "Succeeded", - "Failed", "Cancelled". + :ivar status: The job status. Known values are: "Waiting", "Executing", "Succeeded", "Failed", + "Cancelled". :vartype status: str or ~azure.quantum._client.models.JobStatus :ivar creation_time: The creation time of the job. :vartype creation_time: ~datetime.datetime @@ -336,7 +338,7 @@ class JsonPatchDocument(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. - :ivar op: Required. The operation to be performed. Possible values include: "add", "remove", + :ivar op: Required. The operation to be performed. Known values are: "add", "remove", "replace", "move", "copy", "test". :vartype op: str or ~azure.quantum._client.models.JsonPatchOperation :ivar path: Required. A JSON-Pointer. @@ -362,14 +364,14 @@ class JsonPatchDocument(msrest.serialization.Model): def __init__( self, *, - op: Union[str, "JsonPatchOperation"], + op: Union[str, "_models.JsonPatchOperation"], path: str, value: Optional[Any] = None, from_property: Optional[str] = None, **kwargs ): """ - :keyword op: Required. The operation to be performed. Possible values include: "add", "remove", + :keyword op: Required. The operation to be performed. Known values are: "add", "remove", "replace", "move", "copy", "test". :paramtype op: str or ~azure.quantum._client.models.JsonPatchOperation :keyword path: Required. A JSON-Pointer. @@ -393,8 +395,8 @@ class ProviderStatus(msrest.serialization.Model): :ivar id: Provider id. :vartype id: str - :ivar current_availability: Provider availability. Possible values include: "Available", - "Degraded", "Unavailable". + :ivar current_availability: Provider availability. Known values are: "Available", "Degraded", + "Unavailable". :vartype current_availability: str or ~azure.quantum._client.models.ProviderAvailability :ivar targets: :vartype targets: list[~azure.quantum._client.models.TargetStatus] @@ -461,7 +463,7 @@ class Quota(msrest.serialization.Model): :ivar dimension: The name of the dimension associated with the quota. :vartype dimension: str - :ivar scope: The scope at which the quota is applied. Possible values include: "Workspace", + :ivar scope: The scope at which the quota is applied. Known values are: "Workspace", "Subscription". :vartype scope: str or ~azure.quantum._client.models.DimensionScope :ivar provider_id: The unique identifier for the provider. @@ -474,8 +476,7 @@ class Quota(msrest.serialization.Model): :ivar limit: The maximum amount of usage allowed for the current period. :vartype limit: float :ivar period: The time period in which the quota's underlying meter is accumulated. Based on - calendar year. 'None' is used for concurrent quotas. Possible values include: "None", - "Monthly". + calendar year. 'None' is used for concurrent quotas. Known values are: "None", "Monthly". :vartype period: str or ~azure.quantum._client.models.MeterPeriod """ @@ -493,18 +494,18 @@ def __init__( self, *, dimension: Optional[str] = None, - scope: Optional[Union[str, "DimensionScope"]] = None, + scope: Optional[Union[str, "_models.DimensionScope"]] = None, provider_id: Optional[str] = None, utilization: Optional[float] = None, holds: Optional[float] = None, limit: Optional[float] = None, - period: Optional[Union[str, "MeterPeriod"]] = None, + period: Optional[Union[str, "_models.MeterPeriod"]] = None, **kwargs ): """ :keyword dimension: The name of the dimension associated with the quota. :paramtype dimension: str - :keyword scope: The scope at which the quota is applied. Possible values include: "Workspace", + :keyword scope: The scope at which the quota is applied. Known values are: "Workspace", "Subscription". :paramtype scope: str or ~azure.quantum._client.models.DimensionScope :keyword provider_id: The unique identifier for the provider. @@ -517,8 +518,7 @@ def __init__( :keyword limit: The maximum amount of usage allowed for the current period. :paramtype limit: float :keyword period: The time period in which the quota's underlying meter is accumulated. Based on - calendar year. 'None' is used for concurrent quotas. Possible values include: "None", - "Monthly". + calendar year. 'None' is used for concurrent quotas. Known values are: "None", "Monthly". :paramtype period: str or ~azure.quantum._client.models.MeterPeriod """ super(Quota, self).__init__(**kwargs) @@ -577,7 +577,7 @@ class RestError(msrest.serialization.Model): def __init__( self, *, - error: Optional["ErrorData"] = None, + error: Optional["_models.ErrorData"] = None, **kwargs ): """ @@ -620,8 +620,8 @@ class TargetStatus(msrest.serialization.Model): :ivar id: Target id. :vartype id: str - :ivar current_availability: Target availability. Possible values include: "Available", - "Degraded", "Unavailable". + :ivar current_availability: Target availability. Known values are: "Available", "Degraded", + "Unavailable". :vartype current_availability: str or ~azure.quantum._client.models.TargetAvailability :ivar average_queue_time: Average queue time in seconds. :vartype average_queue_time: long diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_quantum_client_enums.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_quantum_client_enums.py index 86e843202f4..2cc83a381c7 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_quantum_client_enums.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/models/_quantum_client_enums.py @@ -7,18 +7,17 @@ # -------------------------------------------------------------------------- from enum import Enum -from six import with_metaclass from azure.core import CaseInsensitiveEnumMeta -class DimensionScope(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): +class DimensionScope(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The scope at which the quota is applied. """ WORKSPACE = "Workspace" SUBSCRIPTION = "Subscription" -class JobStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): +class JobStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The job status. """ @@ -28,7 +27,7 @@ class JobStatus(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): FAILED = "Failed" CANCELLED = "Cancelled" -class JsonPatchOperation(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): +class JsonPatchOperation(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The operation to be performed. """ @@ -39,7 +38,7 @@ class JsonPatchOperation(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): COPY = "copy" TEST = "test" -class MeterPeriod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): +class MeterPeriod(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The time period in which the quota's underlying meter is accumulated. Based on calendar year. 'None' is used for concurrent quotas. """ @@ -47,7 +46,7 @@ class MeterPeriod(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): NONE = "None" MONTHLY = "Monthly" -class ProviderAvailability(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): +class ProviderAvailability(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Provider availability. """ @@ -55,7 +54,7 @@ class ProviderAvailability(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): DEGRADED = "Degraded" UNAVAILABLE = "Unavailable" -class TargetAvailability(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)): +class TargetAvailability(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Target availability. """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/__init__.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/__init__.py index 2904bfb87b5..c65541f0638 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/__init__.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/__init__.py @@ -11,9 +11,14 @@ from ._storage_operations import StorageOperations from ._quotas_operations import QuotasOperations +from ._patch import __all__ as _patch_all +from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import +from ._patch import patch_sdk as _patch_sdk __all__ = [ 'JobsOperations', 'ProvidersOperations', 'StorageOperations', 'QuotasOperations', ] +__all__.extend([p for p in _patch_all if p not in __all__]) +_patch_sdk() \ No newline at end of file diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_jobs_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_jobs_operations.py index 879019fa527..57b84d15f07 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_jobs_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_jobs_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,9 +6,9 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged @@ -15,14 +16,15 @@ from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest from azure.core.tracing.decorator import distributed_trace -from msrest import Serializer +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from .. import models as _models from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, List, Optional, TypeVar, Union + from typing import Any, Callable, Dict, Iterable, List, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -37,25 +39,27 @@ def build_list_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - accept = "application/json" + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + accept = _headers.pop('Accept', "application/json") + # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="GET", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) @@ -68,9 +72,12 @@ def build_get_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - accept = "application/json" + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + accept = _headers.pop('Accept', "application/json") + # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), @@ -78,16 +85,15 @@ def build_get_request( "jobId": _SERIALIZER.url("job_id", job_id, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="GET", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) @@ -100,11 +106,13 @@ def build_create_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - content_type = kwargs.pop('content_type', None) # type: Optional[str] + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] + accept = _headers.pop('Accept', "application/json") - accept = "application/json" # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), @@ -112,18 +120,17 @@ def build_create_request( "jobId": _SERIALIZER.url("job_id", job_id, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] if content_type is not None: - header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="PUT", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) @@ -136,9 +143,12 @@ def build_cancel_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - accept = "application/json" + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + accept = _headers.pop('Accept', "application/json") + # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), @@ -146,16 +156,15 @@ def build_cancel_request( "jobId": _SERIALIZER.url("job_id", job_id, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="DELETE", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) @@ -168,11 +177,13 @@ def build_patch_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - content_type = kwargs.pop('content_type', None) # type: Optional[str] + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] + accept = _headers.pop('Accept', "application/json") - accept = "application/json" # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), @@ -180,50 +191,47 @@ def build_patch_request( "jobId": _SERIALIZER.url("job_id", job_id, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] if content_type is not None: - header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="PATCH", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) # fmt: on class JobsOperations(object): - """JobsOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.QuantumClient`'s + :attr:`jobs` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace def list( self, **kwargs # type: Any ): - # type: (...) -> Iterable["_models.JobDetailsList"] + # type: (...) -> Iterable[_models.JobDetailsList] """List jobs. :keyword callable cls: A custom type or function that will be passed the direct response @@ -231,11 +239,15 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.quantum._client.models.JobDetailsList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.JobDetailsList"] + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.JobDetailsList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): if not next_link: @@ -244,9 +256,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=self.list.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore else: @@ -255,9 +269,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=next_link, + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore request.method = "GET" return request @@ -271,7 +287,11 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -284,7 +304,7 @@ def get_next(next_link=None): return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs'} # type: ignore + list.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs"} # type: ignore @distributed_trace def get( @@ -292,7 +312,7 @@ def get( job_id, # type: str **kwargs # type: Any ): - # type: (...) -> "_models.JobDetails" + # type: (...) -> _models.JobDetails """Get job by id. :param job_id: Id of the job. @@ -302,11 +322,15 @@ def get( :rtype: ~azure.quantum._client.models.JobDetails :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.JobDetails"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.JobDetails] request = build_get_request( @@ -315,11 +339,17 @@ def get( workspace_name=self._config.workspace_name, job_id=job_id, template_url=self.get.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -334,17 +364,17 @@ def get( return deserialized - get.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + get.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore @distributed_trace def create( self, job_id, # type: str - job, # type: "_models.JobDetails" + job, # type: _models.JobDetails **kwargs # type: Any ): - # type: (...) -> "_models.JobDetails" + # type: (...) -> _models.JobDetails """Create a job. :param job_id: Id of the job. @@ -356,13 +386,16 @@ def create( :rtype: ~azure.quantum._client.models.JobDetails :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.JobDetails"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.JobDetails] _json = self._serialize.body(job, 'JobDetails') @@ -374,11 +407,17 @@ def create( content_type=content_type, json=_json, template_url=self.create.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 201]: @@ -397,11 +436,11 @@ def create( return deserialized - create.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + create.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore @distributed_trace - def cancel( + def cancel( # pylint: disable=inconsistent-return-statements self, job_id, # type: str **kwargs # type: Any @@ -416,11 +455,15 @@ def cancel( :rtype: None :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType[None] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[None] request = build_cancel_request( @@ -429,11 +472,17 @@ def cancel( workspace_name=self._config.workspace_name, job_id=job_id, template_url=self.cancel.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [204]: @@ -444,17 +493,17 @@ def cancel( if cls: return cls(pipeline_response, None, {}) - cancel.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + cancel.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore @distributed_trace def patch( self, job_id, # type: str - patch_job, # type: List["_models.JsonPatchDocument"] + patch_job, # type: List[_models.JsonPatchDocument] **kwargs # type: Any ): - # type: (...) -> Optional["_models.JobDetails"] + # type: (...) -> Optional[_models.JobDetails] """Patch a job. :param job_id: Id of the job. @@ -466,13 +515,16 @@ def patch( :rtype: ~azure.quantum._client.models.JobDetails or None :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType[Optional["_models.JobDetails"]] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[Optional[_models.JobDetails]] _json = self._serialize.body(patch_job, '[JsonPatchDocument]') @@ -484,11 +536,17 @@ def patch( content_type=content_type, json=_json, template_url=self.patch.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200, 204]: @@ -505,5 +563,5 @@ def patch( return deserialized - patch.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}'} # type: ignore + patch.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/jobs/{jobId}"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_patch.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_patch.py new file mode 100644 index 00000000000..8a35ddb87c7 --- /dev/null +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_patch.py @@ -0,0 +1,23 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +"""Customize generated code here. + +Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize +""" +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import List + +__all__ = [] # type: List[str] # Add all objects you want publicly available to users at this package level + +def patch_sdk(): + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_providers_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_providers_operations.py index e18defa0514..bd9cab34023 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_providers_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_providers_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,9 +6,9 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged @@ -15,14 +16,15 @@ from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest from azure.core.tracing.decorator import distributed_trace -from msrest import Serializer +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from .. import models as _models from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -37,57 +39,57 @@ def build_get_status_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - accept = "application/json" + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + accept = _headers.pop('Accept', "application/json") + # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/providerStatus') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/providerStatus") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="GET", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) # fmt: on class ProvidersOperations(object): - """ProvidersOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.QuantumClient`'s + :attr:`providers` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace def get_status( self, **kwargs # type: Any ): - # type: (...) -> Iterable["_models.ProviderStatusList"] + # type: (...) -> Iterable[_models.ProviderStatusList] """Get provider status. :keyword callable cls: A custom type or function that will be passed the direct response @@ -95,11 +97,15 @@ def get_status( :rtype: ~azure.core.paging.ItemPaged[~azure.quantum._client.models.ProviderStatusList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.ProviderStatusList"] + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.ProviderStatusList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): if not next_link: @@ -108,9 +114,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=self.get_status.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore else: @@ -119,9 +127,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=next_link, + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore request.method = "GET" return request @@ -135,7 +145,11 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -149,4 +163,4 @@ def get_next(next_link=None): return ItemPaged( get_next, extract_data ) - get_status.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/providerStatus'} # type: ignore + get_status.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/providerStatus"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_quotas_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_quotas_operations.py index 8ebd532d227..59559d3f150 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_quotas_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_quotas_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,9 +6,9 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged @@ -15,14 +16,15 @@ from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest from azure.core.tracing.decorator import distributed_trace -from msrest import Serializer +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from .. import models as _models from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -37,57 +39,57 @@ def build_list_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - accept = "application/json" + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + accept = _headers.pop('Accept', "application/json") + # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/quotas') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/quotas") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="GET", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) # fmt: on class QuotasOperations(object): - """QuotasOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.QuantumClient`'s + :attr:`quotas` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace def list( self, **kwargs # type: Any ): - # type: (...) -> Iterable["_models.QuotaList"] + # type: (...) -> Iterable[_models.QuotaList] """List quotas for the given workspace. :keyword callable cls: A custom type or function that will be passed the direct response @@ -95,11 +97,15 @@ def list( :rtype: ~azure.core.paging.ItemPaged[~azure.quantum._client.models.QuotaList] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.QuotaList"] + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls = kwargs.pop('cls', None) # type: ClsType[_models.QuotaList] + error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) def prepare_request(next_link=None): if not next_link: @@ -108,9 +114,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=self.list.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore else: @@ -119,9 +127,11 @@ def prepare_request(next_link=None): resource_group_name=self._config.resource_group_name, workspace_name=self._config.workspace_name, template_url=next_link, + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore request.method = "GET" return request @@ -135,7 +145,11 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -149,4 +163,4 @@ def get_next(next_link=None): return ItemPaged( get_next, extract_data ) - list.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/quotas'} # type: ignore + list.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/quotas"} # type: ignore diff --git a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_storage_operations.py b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_storage_operations.py index 9133b65a449..e3c4a3fd4de 100644 --- a/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_storage_operations.py +++ b/src/quantum/azext_quantum/vendored_sdks/azure_quantum/operations/_storage_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -5,23 +6,24 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import functools from typing import TYPE_CHECKING -import warnings + +from msrest import Serializer from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest from azure.core.tracing.decorator import distributed_trace -from msrest import Serializer +# from azure.core.utils import case_insensitive_dict <--- Restore this line after Azure CLI version 2.38.0 is released +from ..._utils import case_insensitive_dict from .. import models as _models from .._vendor import _convert_request, _format_url_section if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Optional, TypeVar + from typing import Any, Callable, Dict, Optional, TypeVar T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -36,62 +38,61 @@ def build_sas_uri_request( **kwargs # type: Any ): # type: (...) -> HttpRequest - content_type = kwargs.pop('content_type', None) # type: Optional[str] + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] + accept = _headers.pop('Accept', "application/json") - accept = "application/json" # Construct URL - url = kwargs.pop("template_url", '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/storage/sasUri') + _url = kwargs.pop("template_url", "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/storage/sasUri") # pylint: disable=line-too-long path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), "workspaceName": _SERIALIZER.url("workspace_name", workspace_name, 'str'), } - url = _format_url_section(url, **path_format_arguments) + _url = _format_url_section(_url, **path_format_arguments) # Construct headers - header_parameters = kwargs.pop("headers", {}) # type: Dict[str, Any] if content_type is not None: - header_parameters['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') - header_parameters['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers['Content-Type'] = _SERIALIZER.header("content_type", content_type, 'str') + _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') return HttpRequest( method="POST", - url=url, - headers=header_parameters, + url=_url, + headers=_headers, **kwargs ) # fmt: on class StorageOperations(object): - """StorageOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. + """ + .. warning:: + **DO NOT** instantiate this class directly. - :ivar models: Alias to model classes used in this operation group. - :type models: ~azure.quantum._client.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. + Instead, you should access the following operations through + :class:`~azure.quantum._client.QuantumClient`'s + :attr:`storage` attribute. """ models = _models - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace def sas_uri( self, - blob_details, # type: "_models.BlobDetails" + blob_details, # type: _models.BlobDetails **kwargs # type: Any ): - # type: (...) -> "_models.SasUriResponse" + # type: (...) -> _models.SasUriResponse """Gets a URL with SAS token for a container/blob in the storage account associated with the workspace. The SAS URL can be used to upload job input and/or download job output. @@ -102,13 +103,16 @@ def sas_uri( :rtype: ~azure.quantum._client.models.SasUriResponse :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["_models.SasUriResponse"] error_map = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } - error_map.update(kwargs.pop('error_map', {})) + error_map.update(kwargs.pop('error_map', {}) or {}) - content_type = kwargs.pop('content_type', "application/json") # type: Optional[str] + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] + cls = kwargs.pop('cls', None) # type: ClsType[_models.SasUriResponse] _json = self._serialize.body(blob_details, 'BlobDetails') @@ -119,11 +123,17 @@ def sas_uri( content_type=content_type, json=_json, template_url=self.sas_uri.metadata['url'], + headers=_headers, + params=_params, ) request = _convert_request(request) - request.url = self._client.format_url(request.url) + request.url = self._client.format_url(request.url) # type: ignore - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, + stream=False, + **kwargs + ) response = pipeline_response.http_response if response.status_code not in [200]: @@ -138,5 +148,5 @@ def sas_uri( return deserialized - sas_uri.metadata = {'url': '/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/storage/sasUri'} # type: ignore + sas_uri.metadata = {'url': "/v1.0/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/workspaces/{workspaceName}/storage/sasUri"} # type: ignore diff --git a/src/quantum/eng/Generate-Client.ps1 b/src/quantum/eng/Generate-Client.ps1 new file mode 100644 index 00000000000..70b35fd9d88 --- /dev/null +++ b/src/quantum/eng/Generate-Client.ps1 @@ -0,0 +1,100 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +<# +.SYNOPSIS +(Re)Generate the underlying Azure Quantum Python data-plane or control-plane client for the CLI based on the latest published Swagger. +.DESCRIPTION +(Re)Generate the underlying Azure Quantum Python data-plane or control-plane client for the CLI based on the latest published Swagger. +.PARAMETER SwaggerRepoUrl +The URL of the git repo that contains the Swagger and AutoRest ReadMe.md configurations (defaults to "https://github.com/Azure/azure-rest-api-specs") +.PARAMETER SwaggerRepoBranch +The name of the swagger repo branch (defaults to "main") +.PARAMETER SwaggerTagVersion +The Swagger version to be used (defaults to "", which will use the default tag from the main ReadMe.md) +.PARAMETER ClientToGenerate +Select which client to generate: data-plane or control-plane (defaults to "data-plane") + +.EXAMPLE +./eng/Generate-Client.ps1 + +# Regenerate the data-plane client using the latest published Swagger from the official repo + +.EXAMPLE +./eng/Generate-Client.ps1 -SwaggerRepoBranch "feature/quantum/update-clients" + +# Regenerate the data-plane client using the Swagger from the official repo, but from a feature branch + +.EXAMPLE +./eng/Generate-Client.ps1 -SwaggerTagVersion "package-2019-11-04-preview" + +# Regenerate the data-plane client using the an older version of the Swagger + +.EXAMPLE +./eng/Generate-Client.ps1 -ClientToGenerate "control-plane" + +# Regenerate the control-plane client using the latest published Swagger from the official repo + +#> + +[CmdletBinding()] +Param ( + [string] $SwaggerRepoUrl = "https://github.com/Azure/azure-rest-api-specs", + [string] $SwaggerRepoBranch = "main", + [string] $SwaggerTagVersion, + [string] $ClientToGenerate = "data-plane" +) + +# Select which client to generate +if ([string]::IsNullOrEmpty($ClientToGenerate) -or ($ClientToGenerate -eq "data-plane")) +{ + $AutoRestConfig = "$SwaggerRepoUrl/blob/$SwaggerRepoBranch/specification/quantum/data-plane/readme.md" + $OutputFolder = "./azext_quantum/vendored_sdks/azure_quantum/" +} +else +{ + if ($ClientToGenerate -eq "control-plane") + { + $AutoRestConfig = "$SwaggerRepoUrl/blob/$SwaggerRepoBranch/specification/quantum/resource-manager/readme.md" + $OutputFolder = "./azext_quantum/vendored_sdks/azure_mgmt_quantum/" + } + else + { + Write-Error "ERROR: ClientToGenerate parameter not recognized." + return -1 + } +} + +Write-Verbose "Output folder: $OutputFolder" +Write-Verbose "Deleting previous output folder contents" +if (Test-Path $OutputFolder) +{ + Remove-Item $OutputFolder -Recurse | Write-Verbose +} + +Write-Verbose "Installing latest AutoRest client" +npm install -g autorest@latest | Write-Verbose + +if ([string]::IsNullOrEmpty($SwaggerTagVersion)) +{ + Write-Verbose "Generating the client based on:`nConfig: $AutoRestConfig" + autorest $AutoRestConfig ` + --verbose ` + --python ` + --python-mode=cli ` + --output-folder=$OutputFolder ` + | Write-Verbose +} +else +{ + Write-Verbose "Generating the client based on:`nConfig: $AutoRestConfig`nTag: $SwaggerTagVersion" + autorest $AutoRestConfig ` + --verbose ` + --python ` + --python-mode=cli ` + --tag=$SwaggerTagVersion ` + --output-folder=$OutputFolder ` + | Write-Verbose +} diff --git a/src/quantum/setup.py b/src/quantum/setup.py index 008e5ba61fb..3c26d228bd9 100644 --- a/src/quantum/setup.py +++ b/src/quantum/setup.py @@ -17,7 +17,7 @@ # This version should match the latest entry in HISTORY.rst # Also, when updating this, please review the version used by the extension to # submit requests, which can be found at './azext_quantum/__init__.py' -VERSION = '0.15.0' +VERSION = '0.16.0' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers diff --git a/src/redisenterprise/HISTORY.rst b/src/redisenterprise/HISTORY.rst index a0fd6ee6c9c..d0d09ba64b7 100644 --- a/src/redisenterprise/HISTORY.rst +++ b/src/redisenterprise/HISTORY.rst @@ -3,6 +3,14 @@ Release History =============== +0.1.2 +++++++ +- Added support for active georeplication + - Creating a georeplicated database + - Creating a cache with a georeplicated database + - Force unlinking databases +- Added support for importing from multiple blobs + 0.1.1 ++++++ * Renamed remaining snake_case command output fields to camelCase to be consistent with the REST API. diff --git a/src/redisenterprise/azext_redisenterprise/__init__.py b/src/redisenterprise/azext_redisenterprise/__init__.py index 9f14113fd28..52ff1444e6a 100644 --- a/src/redisenterprise/azext_redisenterprise/__init__.py +++ b/src/redisenterprise/azext_redisenterprise/__init__.py @@ -7,13 +7,10 @@ # Changes may cause incorrect behavior and will be lost if the code is # regenerated. # -------------------------------------------------------------------------- +# pylint: disable=unused-import +import azext_redisenterprise._help from azure.cli.core import AzCommandsLoader -from azext_redisenterprise.generated._help import helps # pylint: disable=unused-import -try: - from azext_redisenterprise.manual._help import helps # pylint: disable=reimported -except ImportError: - pass class RedisEnterpriseManagementClientCommandsLoader(AzCommandsLoader): @@ -33,8 +30,11 @@ def load_command_table(self, args): try: from azext_redisenterprise.manual.commands import load_command_table as load_command_table_manual load_command_table_manual(self, args) - except ImportError: - pass + except ImportError as e: + if e.name.endswith('manual.commands'): + pass + else: + raise e return self.command_table def load_arguments(self, command): @@ -43,8 +43,11 @@ def load_arguments(self, command): try: from azext_redisenterprise.manual._params import load_arguments as load_arguments_manual load_arguments_manual(self, command) - except ImportError: - pass + except ImportError as e: + if e.name.endswith('manual._params'): + pass + else: + raise e COMMAND_LOADER_CLS = RedisEnterpriseManagementClientCommandsLoader diff --git a/src/securityinsight/azext_sentinel/action.py b/src/redisenterprise/azext_redisenterprise/_help.py similarity index 66% rename from src/securityinsight/azext_sentinel/action.py rename to src/redisenterprise/azext_redisenterprise/_help.py index d95d53bf711..9b93f87a6e9 100644 --- a/src/securityinsight/azext_sentinel/action.py +++ b/src/redisenterprise/azext_redisenterprise/_help.py @@ -9,9 +9,12 @@ # -------------------------------------------------------------------------- # pylint: disable=wildcard-import # pylint: disable=unused-wildcard-import - -from .generated.action import * # noqa: F403 +# pylint: disable=unused-import +from .generated._help import helps # pylint: disable=reimported try: - from .manual.action import * # noqa: F403 -except ImportError: - pass + from .manual._help import helps # pylint: disable=reimported +except ImportError as e: + if e.name.endswith('manual._help'): + pass + else: + raise e diff --git a/src/redisenterprise/azext_redisenterprise/action.py b/src/redisenterprise/azext_redisenterprise/action.py index d95d53bf711..9b3d0a8a78c 100644 --- a/src/redisenterprise/azext_redisenterprise/action.py +++ b/src/redisenterprise/azext_redisenterprise/action.py @@ -13,5 +13,8 @@ from .generated.action import * # noqa: F403 try: from .manual.action import * # noqa: F403 -except ImportError: - pass +except ImportError as e: + if e.name.endswith('manual.action'): + pass + else: + raise e diff --git a/src/redisenterprise/azext_redisenterprise/azext_metadata.json b/src/redisenterprise/azext_redisenterprise/azext_metadata.json index 30fdaf614ee..3695b0d7077 100644 --- a/src/redisenterprise/azext_redisenterprise/azext_metadata.json +++ b/src/redisenterprise/azext_redisenterprise/azext_metadata.json @@ -1,4 +1,3 @@ { - "azext.isPreview": true, "azext.minCliCoreVersion": "2.15.0" } \ No newline at end of file diff --git a/src/redisenterprise/azext_redisenterprise/custom.py b/src/redisenterprise/azext_redisenterprise/custom.py index dbe9d5f9742..885447229d6 100644 --- a/src/redisenterprise/azext_redisenterprise/custom.py +++ b/src/redisenterprise/azext_redisenterprise/custom.py @@ -13,5 +13,8 @@ from .generated.custom import * # noqa: F403 try: from .manual.custom import * # noqa: F403 -except ImportError: - pass +except ImportError as e: + if e.name.endswith('manual.custom'): + pass + else: + raise e diff --git a/src/redisenterprise/azext_redisenterprise/generated/_help.py b/src/redisenterprise/azext_redisenterprise/generated/_help.py index 7972c1cf968..768ce9f5e94 100644 --- a/src/redisenterprise/azext_redisenterprise/generated/_help.py +++ b/src/redisenterprise/azext_redisenterprise/generated/_help.py @@ -12,6 +12,11 @@ from knack.help_files import helps +helps['redisenterprise'] = ''' + type: group + short-summary: Manage Redis Enterprise +''' + helps['redisenterprise operation-status'] = """ type: group short-summary: Manage operation status with redisenterprise @@ -26,11 +31,6 @@ az redisenterprise operation-status show --operation-id "testoperationid" --location "West US" """ -helps['redisenterprise'] = """ - type: group - short-summary: Manage redis enterprise with redisenterprise -""" - helps['redisenterprise list'] = """ type: command short-summary: "Lists all RedisEnterprise clusters in a resource group. And Gets all RedisEnterprise clusters in \ @@ -140,9 +140,17 @@ Usage: --modules name=XX args=XX name: Required. The name of the module, e.g. 'RedisBloom', 'RediSearch', 'RedisTimeSeries' - args: Configuration options for the module, e.g. 'ERROR_RATE 0.00 INITIAL_SIZE 400'. + args: Configuration options for the module, e.g. 'ERROR_RATE 0.01 INITIAL_SIZE 400'. Multiple actions can be specified by using more than one --modules argument. + - name: --linked-databases + short-summary: "List of database resources to link with this database" + long-summary: | + Usage: --linked-databases id=XX + + id: Resource ID of a database resource to link with this database. + + Multiple actions can be specified by using more than one --linked-databases argument. examples: - name: RedisEnterpriseDatabasesCreate text: |- @@ -150,6 +158,13 @@ --clustering-policy "EnterpriseCluster" --eviction-policy "AllKeysLRU" --modules name="RedisBloom" args="ERROR_RATE \ 0.00 INITIAL_SIZE 400" --modules name="RedisTimeSeries" args="RETENTION_POLICY 20" --modules name="RediSearch" \ --persistence aof-enabled=true aof-frequency="1s" --port 10000 --resource-group "rg1" + - name: RedisEnterpriseDatabasesCreate With Active Geo Replication + text: |- + az redisenterprise database create --cluster-name "cache1" --client-protocol "Encrypted" \ +--clustering-policy "EnterpriseCluster" --eviction-policy "NoEviction" --group-nickname "groupName" --linked-databases \ +id="/subscriptions/subid1/resourceGroups/rg1/providers/Microsoft.Cache/redisEnterprise/cache1/databases/default" \ +--linked-databases id="/subscriptions/subid2/resourceGroups/rg2/providers/Microsoft.Cache/redisEnterprise/cache2/databa\ +ses/default" --port 10000 --resource-group "rg1" """ helps['redisenterprise database update'] = """ @@ -165,6 +180,14 @@ rdb-enabled: Sets whether RDB is enabled. aof-frequency: Sets the frequency at which data is written to disk. rdb-frequency: Sets the frequency at which a snapshot of the database is created. + - name: --linked-databases + short-summary: "List of database resources to link with this database" + long-summary: | + Usage: --linked-databases id=XX + + id: Resource ID of a database resource to link with this database. + + Multiple actions can be specified by using more than one --linked-databases argument. examples: - name: RedisEnterpriseDatabasesUpdate text: |- @@ -191,14 +214,25 @@ indow.net/urlToBlobContainer?sasKeyParameters" --resource-group "rg1" """ +helps['redisenterprise database force-unlink'] = """ + type: command + short-summary: "Forcibly removes the link to the specified database resource." + examples: + - name: How to unlink a database during a regional outage + text: |- + az redisenterprise database force-unlink --cluster-name "cache1" --unlink-ids "/subscriptions/subid2/resourceGr\ +oups/rg2/providers/Microsoft.Cache/redisEnterprise/cache2/databases/default" --resource-group "rg1" +""" + helps['redisenterprise database import'] = """ type: command - short-summary: "Imports a database file to target database." + short-summary: "Imports database files to target database." examples: - name: RedisEnterpriseDatabasesImport text: |- - az redisenterprise database import --cluster-name "cache1" --sas-uri "https://contosostorage.blob.core.w\ -indow.net/urltoBlobFile?sasKeyParameters" --resource-group "rg1" + az redisenterprise database import --cluster-name "cache1" --sas-uris "https://contosostorage.blob.core.\ +window.net/urltoBlobFile1?sasKeyParameters" "https://contosostorage.blob.core.window.net/urltoBlobFile2?sasKeyParameter\ +s" --resource-group "rg1" """ helps['redisenterprise database list-keys'] = """ diff --git a/src/redisenterprise/azext_redisenterprise/generated/_params.py b/src/redisenterprise/azext_redisenterprise/generated/_params.py index 3c193dad258..ec27053a917 100644 --- a/src/redisenterprise/azext_redisenterprise/generated/_params.py +++ b/src/redisenterprise/azext_redisenterprise/generated/_params.py @@ -19,7 +19,8 @@ from azure.cli.core.commands.validators import get_default_location_from_resource_group from azext_redisenterprise.action import ( AddPersistence, - AddModules + AddModules, + AddLinkedDatabases ) @@ -107,6 +108,10 @@ def load_arguments(self, _): c.argument('persistence', action=AddPersistence, nargs='+', help='Persistence settings', is_preview=True) c.argument('modules', action=AddModules, nargs='+', help='Optional set of redis modules to enable in this ' 'database - modules can only be added at creation time.') + c.argument('group_nickname', type=str, help='Name for the group of linked database resources', arg_group='Geo ' + 'Replication') + c.argument('linked_databases', action=AddLinkedDatabases, nargs='+', help='List of database resources to link ' + 'with this database', arg_group='Geo Replication') with self.argument_context('redisenterprise database update') as c: c.argument('resource_group_name', resource_group_name_type) @@ -120,6 +125,10 @@ def load_arguments(self, _): 'VolatileRandom', 'NoEviction']), help='Redis eviction ' 'policy - default is VolatileLRU') c.argument('persistence', action=AddPersistence, nargs='+', help='Persistence settings', is_preview=True) + c.argument('group_nickname', type=str, help='Name for the group of linked database resources', arg_group='Geo ' + 'Replication') + c.argument('linked_databases', action=AddLinkedDatabases, nargs='+', help='List of database resources to link ' + 'with this database', arg_group='Geo Replication') with self.argument_context('redisenterprise database delete') as c: c.argument('resource_group_name', resource_group_name_type) @@ -132,11 +141,17 @@ def load_arguments(self, _): 'RedisEnterprise cluster.', id_part='name') c.argument('sas_uri', type=str, help='SAS URI for the target directory to export to') + with self.argument_context('redisenterprise database force-unlink') as c: + c.argument('resource_group_name', resource_group_name_type) + c.argument('cluster_name', options_list=['--cluster-name', '--name', '-n'], type=str, help='The name of the ' + 'RedisEnterprise cluster.', id_part='name') + c.argument('unlink_ids', nargs='+', help='The resource IDs of the database resources to be unlinked.') + with self.argument_context('redisenterprise database import') as c: c.argument('resource_group_name', resource_group_name_type) c.argument('cluster_name', options_list=['--cluster-name', '--name', '-n'], type=str, help='The name of the ' 'RedisEnterprise cluster.', id_part='name') - c.argument('sas_uri', type=str, help='SAS URI for the target blob to import from') + c.argument('sas_uris', nargs='+', help='SAS URIs for the target blobs to import from') with self.argument_context('redisenterprise database list-keys') as c: c.argument('resource_group_name', resource_group_name_type) diff --git a/src/redisenterprise/azext_redisenterprise/generated/action.py b/src/redisenterprise/azext_redisenterprise/generated/action.py index c644f910a46..5c406ffbff8 100644 --- a/src/redisenterprise/azext_redisenterprise/generated/action.py +++ b/src/redisenterprise/azext_redisenterprise/generated/action.py @@ -7,8 +7,13 @@ # Changes may cause incorrect behavior and will be lost if the code is # regenerated. # -------------------------------------------------------------------------- + + # pylint: disable=protected-access +# pylint: disable=no-self-use + + import argparse from collections import defaultdict from knack.util import CLIError @@ -19,7 +24,7 @@ def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) namespace.persistence = action - def get_action(self, values, option_string): # pylint: disable=no-self-use + def get_action(self, values, option_string): try: properties = defaultdict(list) for (k, v) in (x.split('=', 1) for x in values): @@ -31,17 +36,25 @@ def get_action(self, values, option_string): # pylint: disable=no-self-use for k in properties: kl = k.lower() v = properties[k] + if kl == 'aof-enabled': d['aof_enabled'] = v[0] + elif kl == 'rdb-enabled': d['rdb_enabled'] = v[0] + elif kl == 'aof-frequency': d['aof_frequency'] = v[0] + elif kl == 'rdb-frequency': d['rdb_frequency'] = v[0] + else: - raise CLIError('Unsupported Key {} is provided for parameter persistence. All possible keys are: ' - 'aof-enabled, rdb-enabled, aof-frequency, rdb-frequency'.format(k)) + raise CLIError( + 'Unsupported Key {} is provided for parameter persistence. All possible keys are: aof-enabled,' + ' rdb-enabled, aof-frequency, rdb-frequency'.format(k) + ) + return d @@ -50,7 +63,7 @@ def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) super(AddModules, self).__call__(parser, namespace, action, option_string) - def get_action(self, values, option_string): # pylint: disable=no-self-use + def get_action(self, values, option_string): try: properties = defaultdict(list) for (k, v) in (x.split('=', 1) for x in values): @@ -62,11 +75,45 @@ def get_action(self, values, option_string): # pylint: disable=no-self-use for k in properties: kl = k.lower() v = properties[k] + if kl == 'name': d['name'] = v[0] + elif kl == 'args': d['args'] = v[0] + else: - raise CLIError('Unsupported Key {} is provided for parameter modules. All possible keys are: name, ' - 'args'.format(k)) + raise CLIError( + 'Unsupported Key {} is provided for parameter modules. All possible keys are: name, args'.format(k) + ) + + return d + + +class AddLinkedDatabases(argparse._AppendAction): + def __call__(self, parser, namespace, values, option_string=None): + action = self.get_action(values, option_string) + super(AddLinkedDatabases, self).__call__(parser, namespace, action, option_string) + + def get_action(self, values, option_string): + try: + properties = defaultdict(list) + for (k, v) in (x.split('=', 1) for x in values): + properties[k].append(v) + properties = dict(properties) + except ValueError: + raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + d = {} + for k in properties: + kl = k.lower() + v = properties[k] + + if kl == 'id': + d['id'] = v[0] + + else: + raise CLIError( + 'Unsupported Key {} is provided for parameter linked-databases. All possible keys are: id'.format(k) + ) + return d diff --git a/src/redisenterprise/azext_redisenterprise/generated/commands.py b/src/redisenterprise/azext_redisenterprise/generated/commands.py index 7984a018dff..7133742a2c1 100644 --- a/src/redisenterprise/azext_redisenterprise/generated/commands.py +++ b/src/redisenterprise/azext_redisenterprise/generated/commands.py @@ -9,32 +9,37 @@ # -------------------------------------------------------------------------- # pylint: disable=too-many-statements # pylint: disable=too-many-locals +# pylint: disable=bad-continuation # pylint: disable=line-too-long from azure.cli.core.commands import CliCommandType +from azext_redisenterprise.generated._client_factory import cf_operation_status, cf_redis_enterprise, cf_database -def load_command_table(self, _): +redisenterprise_redis_enterprise = CliCommandType( + operations_tmpl='azext_redisenterprise.vendored_sdks.redisenterprise.operations._redis_enterprise_operations#RedisEnterpriseOperations.{}', + client_factory=cf_redis_enterprise, +) - from azext_redisenterprise.generated._client_factory import cf_operation_status - redisenterprise_operation_status = CliCommandType( - operations_tmpl='azext_redisenterprise.vendored_sdks.redisenterprise.operations._operations_status_operations#OperationsStatusOperations.{}', - client_factory=cf_operation_status, - ) - with self.command_group( - 'redisenterprise operation-status', redisenterprise_operation_status, client_factory=cf_operation_status - ) as g: - g.custom_show_command('show', 'redisenterprise_operation_status_show') +redisenterprise_database = CliCommandType( + operations_tmpl=( + 'azext_redisenterprise.vendored_sdks.redisenterprise.operations._databases_operations#DatabasesOperations.{}' + ), + client_factory=cf_database, +) - from azext_redisenterprise.generated._client_factory import cf_redis_enterprise - redisenterprise_redis_enterprise = CliCommandType( - operations_tmpl='azext_redisenterprise.vendored_sdks.redisenterprise.operations._redis_enterprise_operations#RedisEnterpriseOperations.{}', - client_factory=cf_redis_enterprise, - ) +redisenterprise_operation_status = CliCommandType( + operations_tmpl='azext_redisenterprise.vendored_sdks.redisenterprise.operations._operations_status_operations#OperationsStatusOperations.{}', + client_factory=cf_operation_status, +) + + +def load_command_table(self, _): + with self.command_group( - 'redisenterprise', redisenterprise_redis_enterprise, client_factory=cf_redis_enterprise + 'redisenterprise', redisenterprise_redis_enterprise, client_factory=cf_redis_enterprise ) as g: g.custom_command('list', 'redisenterprise_list') g.custom_show_command('show', 'redisenterprise_show') @@ -43,12 +48,6 @@ def load_command_table(self, _): g.custom_command('delete', 'redisenterprise_delete', supports_no_wait=True, confirmation=True) g.custom_wait_command('wait', 'redisenterprise_show') - from azext_redisenterprise.generated._client_factory import cf_database - - redisenterprise_database = CliCommandType( - operations_tmpl='azext_redisenterprise.vendored_sdks.redisenterprise.operations._databases_operations#DatabasesOperations.{}', - client_factory=cf_database, - ) with self.command_group('redisenterprise database', redisenterprise_database, client_factory=cf_database) as g: g.custom_command('list', 'redisenterprise_database_list') g.custom_show_command('show', 'redisenterprise_database_show') @@ -56,7 +55,13 @@ def load_command_table(self, _): g.custom_command('update', 'redisenterprise_database_update', supports_no_wait=True) g.custom_command('delete', 'redisenterprise_database_delete', supports_no_wait=True, confirmation=True) g.custom_command('export', 'redisenterprise_database_export', supports_no_wait=True) + g.custom_command('force-unlink', 'redisenterprise_database_force_unlink', supports_no_wait=True) g.custom_command('import', 'redisenterprise_database_import', supports_no_wait=True) g.custom_command('list-keys', 'redisenterprise_database_list_keys') g.custom_command('regenerate-key', 'redisenterprise_database_regenerate_key', supports_no_wait=True) g.custom_wait_command('wait', 'redisenterprise_database_show') + + with self.command_group( + 'redisenterprise operation-status', redisenterprise_operation_status, client_factory=cf_operation_status + ) as g: + g.custom_show_command('show', 'redisenterprise_operation_status_show') diff --git a/src/redisenterprise/azext_redisenterprise/generated/custom.py b/src/redisenterprise/azext_redisenterprise/generated/custom.py index 1d89160f322..a4cf7e42a78 100644 --- a/src/redisenterprise/azext_redisenterprise/generated/custom.py +++ b/src/redisenterprise/azext_redisenterprise/generated/custom.py @@ -43,14 +43,19 @@ def redisenterprise_create(client, zones=None, minimum_tls_version=None, no_wait=False): + exit(1) parameters = {} - parameters['tags'] = tags + if tags is not None: + parameters['tags'] = tags parameters['location'] = location parameters['sku'] = {} parameters['sku']['name'] = sku - parameters['sku']['capacity'] = capacity - parameters['zones'] = zones - parameters['minimum_tls_version'] = minimum_tls_version + if capacity is not None: + parameters['sku']['capacity'] = capacity + if zones is not None: + parameters['zones'] = zones + if minimum_tls_version is not None: + parameters['minimum_tls_version'] = minimum_tls_version return sdk_no_wait(no_wait, client.begin_create, resource_group_name=resource_group_name, @@ -61,7 +66,7 @@ def redisenterprise_create(client, def redisenterprise_update(client, resource_group_name, cluster_name, - sku=None, + sku, capacity=None, tags=None, minimum_tls_version=None, @@ -69,9 +74,14 @@ def redisenterprise_update(client, parameters = {} parameters['sku'] = {} parameters['sku']['name'] = sku - parameters['sku']['capacity'] = capacity - parameters['tags'] = tags - parameters['minimum_tls_version'] = minimum_tls_version + if capacity is not None: + parameters['sku']['capacity'] = capacity + if len(parameters['sku']) == 0: + del parameters['sku'] + if tags is not None: + parameters['tags'] = tags + if minimum_tls_version is not None: + parameters['minimum_tls_version'] = minimum_tls_version return sdk_no_wait(no_wait, client.begin_update, resource_group_name=resource_group_name, @@ -113,14 +123,29 @@ def redisenterprise_database_create(client, eviction_policy=None, persistence=None, modules=None, + group_nickname=None, + linked_databases=None, no_wait=False): parameters = {} - parameters['client_protocol'] = client_protocol - parameters['port'] = port - parameters['clustering_policy'] = clustering_policy - parameters['eviction_policy'] = eviction_policy - parameters['persistence'] = persistence - parameters['modules'] = modules + if client_protocol is not None: + parameters['client_protocol'] = client_protocol + if port is not None: + parameters['port'] = port + if clustering_policy is not None: + parameters['clustering_policy'] = clustering_policy + if eviction_policy is not None: + parameters['eviction_policy'] = eviction_policy + if persistence is not None: + parameters['persistence'] = persistence + if modules is not None: + parameters['modules'] = modules + parameters['geo_replication'] = {} + if group_nickname is not None: + parameters['geo_replication']['group_nickname'] = group_nickname + if linked_databases is not None: + parameters['geo_replication']['linked_databases'] = linked_databases + if len(parameters['geo_replication']) == 0: + del parameters['geo_replication'] return sdk_no_wait(no_wait, client.begin_create, resource_group_name=resource_group_name, @@ -135,11 +160,23 @@ def redisenterprise_database_update(client, client_protocol=None, eviction_policy=None, persistence=None, + group_nickname=None, + linked_databases=None, no_wait=False): parameters = {} - parameters['client_protocol'] = client_protocol - parameters['eviction_policy'] = eviction_policy - parameters['persistence'] = persistence + if client_protocol is not None: + parameters['client_protocol'] = client_protocol + if eviction_policy is not None: + parameters['eviction_policy'] = eviction_policy + if persistence is not None: + parameters['persistence'] = persistence + parameters['geo_replication'] = {} + if group_nickname is not None: + parameters['geo_replication']['group_nickname'] = group_nickname + if linked_databases is not None: + parameters['geo_replication']['linked_databases'] = linked_databases + if len(parameters['geo_replication']) == 0: + del parameters['geo_replication'] return sdk_no_wait(no_wait, client.begin_update, resource_group_name=resource_group_name, @@ -174,13 +211,28 @@ def redisenterprise_database_export(client, parameters=parameters) +def redisenterprise_database_force_unlink(client, + resource_group_name, + cluster_name, + unlink_ids, + no_wait=False): + parameters = {} + parameters['ids'] = unlink_ids + return sdk_no_wait(no_wait, + client.begin_force_unlink, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + database_name="default", + parameters=parameters) + + def redisenterprise_database_import(client, resource_group_name, cluster_name, - sas_uri, + sas_uris, no_wait=False): parameters = {} - parameters['sas_uri'] = sas_uri + parameters['sas_uris'] = sas_uris return sdk_no_wait(no_wait, client.begin_import_method, resource_group_name=resource_group_name, diff --git a/src/redisenterprise/azext_redisenterprise/manual/_params.py b/src/redisenterprise/azext_redisenterprise/manual/_params.py index 54a404b1fe6..89ac7fe8bcc 100644 --- a/src/redisenterprise/azext_redisenterprise/manual/_params.py +++ b/src/redisenterprise/azext_redisenterprise/manual/_params.py @@ -18,7 +18,8 @@ ) from ..action import ( AddPersistence, - AddModules + AddModules, + AddLinkedDatabases ) @@ -44,6 +45,10 @@ def load_arguments(self, _): # Add new argument c.argument('no_database', action='store_true', help='Advanced. Do not automatically create a ' 'default database. Warning: the cache will not be usable until you create a database.') + c.argument('group_nickname', type=str, help='Name for the group of linked database resources', arg_group='Geo ' + 'Replication') + c.argument('linked_databases', action=AddLinkedDatabases, nargs='+', help='List of database resources to link ' + 'with this database', arg_group='Geo Replication') with self.argument_context('redisenterprise update') as c: # Update help diff --git a/src/redisenterprise/azext_redisenterprise/manual/custom.py b/src/redisenterprise/azext_redisenterprise/manual/custom.py index 6eb9ef45008..a014d738907 100644 --- a/src/redisenterprise/azext_redisenterprise/manual/custom.py +++ b/src/redisenterprise/azext_redisenterprise/manual/custom.py @@ -29,6 +29,32 @@ def _get_cluster_with_databases(cluster, return result +def redisenterprise_update(client, + resource_group_name, + cluster_name, + sku=None, + capacity=None, + tags=None, + minimum_tls_version=None, + no_wait=False): + parameters = {} + parameters['sku'] = {} + parameters['sku']['name'] = sku + if capacity is not None: + parameters['sku']['capacity'] = capacity + if len(parameters['sku']) == 0: + del parameters['sku'] + if tags is not None: + parameters['tags'] = tags + if minimum_tls_version is not None: + parameters['minimum_tls_version'] = minimum_tls_version + return sdk_no_wait(no_wait, + client.begin_update, + resource_group_name=resource_group_name, + cluster_name=cluster_name, + parameters=parameters) + + def redisenterprise_list(cmd, client, resource_group_name=None): @@ -77,13 +103,17 @@ def redisenterprise_create(cmd, persistence=None, modules=None, no_database=False, - no_wait=False): + no_wait=False, + group_nickname=None, + linked_databases=None): if (no_database and any(x is not None for x in [client_protocol, port, clustering_policy, eviction_policy, persistence, - modules])): + modules, + group_nickname, + linked_databases])): database_param_list_str = [] if client_protocol is not None: database_param_list_str.append('--client-protocol') @@ -97,6 +127,10 @@ def redisenterprise_create(cmd, database_param_list_str.append('--persistence') if modules is not None: database_param_list_str.append('--modules') + if group_nickname is not None: + database_param_list_str.append('--group-nickname') + if linked_databases is not None: + database_param_list_str.append('--linked-databases') error_msg = ('--no-database conflicts with the specified database parameter(s): ' '{}'.format(', '.join(database_param_list_str))) recommendation = ('Try to use --no-database without specifying database parameters, ' @@ -117,7 +151,9 @@ def redisenterprise_create(cmd, clustering_policy, eviction_policy, persistence, - modules])): + modules, + group_nickname, + linked_databases])): return sdk_no_wait(no_wait, client.begin_create, resource_group_name=resource_group_name, @@ -138,6 +174,13 @@ def redisenterprise_create(cmd, database_parameters['eviction_policy'] = eviction_policy database_parameters['persistence'] = persistence database_parameters['modules'] = modules + database_parameters['geo_replication'] = {} + if group_nickname is not None: + database_parameters['geo_replication']['group_nickname'] = group_nickname + if linked_databases is not None: + database_parameters['geo_replication']['linked_databases'] = linked_databases + if len(database_parameters['geo_replication']) == 0: + del database_parameters['geo_replication'] database_name = "default" database_client = _get_database_client(cmd.cli_ctx) diff --git a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/example_steps.py b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/example_steps.py index de7e508b5a5..43852f37d22 100644 --- a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/example_steps.py +++ b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/example_steps.py @@ -7,10 +7,13 @@ # EXAMPLE: /RedisEnterprise/put/RedisEnterpriseCreate -def step_create(test, rg, checks=None): + +# NOTE: Functions will always first be looked up in manual/custom.py followed by generated/custom.py + +def step_create(test, checks=None, cache_num=1): if checks is None: checks = [] - if test.kwargs.get('no_database') is True: + if test.kwargs.get('no_database'): test.cmd('az redisenterprise create ' '--cluster-name "{cluster}" ' '--sku "EnterpriseFlash_F300" ' @@ -18,6 +21,29 @@ def step_create(test, rg, checks=None): '--no-database ' '--resource-group "{rg}"', checks=checks) + elif test.kwargs.get('geo-replication'): + if cache_num == 1: + test.cmd('az redisenterprise create ' + '--cluster-name "{cluster31}" ' + '--sku "EnterpriseFlash_F300" ' + '--tags tag1="value1" ' + '--no-database ' + '--resource-group "{rg31}"', + checks=checks) + elif cache_num == 2: + test.cmd('az redisenterprise create ' + '--location "West US" ' + '--cluster-name "{cluster32}" ' + '--sku "EnterpriseFlash_F300" ' + '--client-protocol "Encrypted" ' + '--clustering-policy "EnterpriseCluster" ' + '--eviction-policy "NoEviction" ' + '--group-nickname "groupName" ' + '--linked-databases id="/subscriptions/{subscription}/resourceGroups/{rg31}/providers/Microsoft.Cache/redisEnterprise/{cluster31}/databases/{database}" ' + '--linked-databases id="/subscriptions/{subscription}/resourceGroups/{rg32}/providers/Microsoft.Cache/redisEnterprise/{cluster32}/databases/{database}" ' + '--port 10000 ' + '--resource-group "{rg32}"', + checks=checks) else: test.cmd('az redisenterprise create ' '--cluster-name "{cluster}" ' @@ -37,52 +63,101 @@ def step_create(test, rg, checks=None): checks=checks) -# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseGet -def step_show(test, rg, checks=None): +# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesForceUnlink - unlinking a database during a regional outage +def step_database_force_unlink(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise show ' - '--cluster-name "{cluster}" ' - '--resource-group "{rg}"', + test.cmd('az redisenterprise database force-unlink ' + '--cluster-name "{cluster32}" ' + '--unlink-ids "/subscriptions/{subscription}/resourceGroups/{rg31}/providers/Microsoft.Cache/redisEnterprise/{' + 'myRedisEnterprise2}/databases/{database}" ' + '--resource-group "{rg32}"', checks=checks) +# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseGet +def step_show(test, checks=None): + if checks is None: + checks = [] + if test.kwargs.get('geo-replication'): + test.cmd('az redisenterprise show ' + '--cluster-name "{cluster32}" ' + '--resource-group "{rg32}"', + checks=checks) + else: + test.cmd('az redisenterprise show ' + '--cluster-name "{cluster}" ' + '--resource-group "{rg}"', + checks=checks) + + # EXAMPLE: /RedisEnterprise/delete/RedisEnterpriseDelete -def step_delete(test, rg, checks=None): +def step_delete(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise delete -y ' - '--cluster-name "{cluster}" ' - '--resource-group "{rg}"', - checks=checks) + if test.kwargs.get('geo-replication'): + test.cmd('az redisenterprise delete -y ' + '--cluster-name "{cluster31}" ' + '--resource-group "{rg31}"', + checks=checks) + test.cmd('az redisenterprise delete -y ' + '--cluster-name "{cluster32}" ' + '--resource-group "{rg32}"', + checks=checks) + else: + test.cmd('az redisenterprise delete -y ' + '--cluster-name "{cluster}" ' + '--resource-group "{rg}"', + checks=checks) # EXAMPLE: /Databases/put/RedisEnterpriseDatabasesCreate -def step_database_create(test, rg, checks=None): +def step_database_create(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database create ' - '--cluster-name "{cluster}" ' - '--client-protocol "Plaintext" ' - '--clustering-policy "OSSCluster" ' - '--eviction-policy "AllKeysLRU" ' - '--port 10000 ' - '--resource-group "{rg}"', - checks=checks) + if test.kwargs.get('geo-replication'): + test.cmd('az redisenterprise database create ' + '--cluster-name "{cluster31}" ' + '--client-protocol "Encrypted" ' + '--clustering-policy "EnterpriseCluster" ' + '--eviction-policy "NoEviction" ' + '--group-nickname "groupName" ' + '--linked-databases id="/subscriptions/{subscription}/resourceGroups/{rg31}/providers/Microsoft.Cache/redisEnterprise/{cluster31}/databases/{database}" ' + '--port 10000 ' + '--resource-group "{rg31}"', + checks=checks) + else: + test.cmd('az redisenterprise database create ' + '--cluster-name "{cluster}" ' + '--client-protocol "Plaintext" ' + '--clustering-policy "OSSCluster" ' + '--eviction-policy "AllKeysLRU" ' + '--port 10000 ' + '--resource-group "{rg}"', + checks=checks) +def step_database_force_unlink(test, checks=None): + if checks is None: + checks = [] + test.cmd('az redisenterprise database force-unlink ' + '--cluster-name "{cluster32}" ' + '--unlink-ids "/subscriptions/{subscription}/resourceGroups/{rg31}/providers/Microsoft.Cache/redisEnterprise/{' + 'cluster31}/databases/{database}" ' + '--resource-group "{rg32}"', + checks=checks) # EXAMPLE: /Databases/get/RedisEnterpriseDatabasesGet -def step_database_show(test, rg, checks=None): +def step_database_show(test, checks=None): if checks is None: checks = [] test.cmd('az redisenterprise database show ' - '--cluster-name "{cluster}" ' - '--resource-group "{rg}"', - checks=checks) + '--cluster-name "{cluster}" ' + '--resource-group "{rg}"', + checks=checks) # EXAMPLE: /Databases/get/RedisEnterpriseDatabasesListByCluster -def step_database_list(test, rg, checks=None): +def step_database_list(test, checks=None): if checks is None: checks = [] test.cmd('az redisenterprise database list ' @@ -92,7 +167,7 @@ def step_database_list(test, rg, checks=None): # EXAMPLE: /Databases/post/RedisEnterpriseDatabasesListKeys -def step_database_list_keys(test, rg, checks=None): +def step_database_list_keys(test, checks=None): if checks is None: checks = [] test.cmd('az redisenterprise database list-keys ' @@ -102,7 +177,7 @@ def step_database_list_keys(test, rg, checks=None): # EXAMPLE: /Databases/post/RedisEnterpriseDatabasesRegenerateKey -def step_database_regenerate_key(test, rg, checks=None): +def step_database_regenerate_key(test, checks=None): if checks is None: checks = [] test.cmd('az redisenterprise database regenerate-key ' @@ -113,10 +188,20 @@ def step_database_regenerate_key(test, rg, checks=None): # EXAMPLE: /Databases/delete/RedisEnterpriseDatabasesDelete -def step_database_delete(test, rg, checks=None): +def step_database_delete(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database delete -y ' - '--cluster-name "{cluster}" ' - '--resource-group "{rg}"', - checks=checks) + if test.kwargs.get('geo-replication'): + test.cmd('az redisenterprise database delete -y ' + '--cluster-name "{cluster31}" ' + '--resource-group "{rg31}"', + checks=checks) + test.cmd('az redisenterprise database delete -y ' + '--cluster-name "{cluster32}" ' + '--resource-group "{rg32}"', + checks=checks) + else: + test.cmd('az redisenterprise database delete -y ' + '--cluster-name "{cluster}" ' + '--resource-group "{rg}"', + checks=checks) diff --git a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario1.yaml b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario1.yaml index e3ea5f7ee0b..760e78acfd2 100644 --- a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario1.yaml +++ b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario1.yaml @@ -15,15 +15,12 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - python/3.8.7 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3 - azure-mgmt-resource/12.0.0 Azure-SDK-For-Python AZURECLI/2.21.0 (MSI) - accept-language: - - en-US + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest-redisenterprise-rg1-000002?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest-redisenterprise-rg1-000002?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002","name":"clitest-redisenterprise-rg1-000002","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2021-03-31T18:29:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002","name":"clitest-redisenterprise-rg1-000002","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-31T11:28:57Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -32,7 +29,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:07 GMT + - Tue, 31 May 2022 11:29:00 GMT expires: - '-1' pragma: @@ -68,10 +65,9 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2022-01-01 response: body: string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache1-000001\",\r\n @@ -79,24 +75,24 @@ interactions: \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"Enterprise_E20\",\r\n \ \"capacity\": 4\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Creating\",\r\n \"resourceState\": - \"Creating\"\r\n },\r\n \"zones\": [\r\n \"1\",\r\n \"2\",\r\n \"3\"\r\n - \ ]\r\n}" + \"1.2\",\r\n \"hostName\": \"clitest-cache1-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Creating\",\r\n \"resourceState\": \"Creating\"\r\n + \ },\r\n \"zones\": [\r\n \"1\",\r\n \"2\",\r\n \"3\"\r\n ]\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 cache-control: - no-cache content-length: - - '576' + - '657' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:10 GMT + - Tue, 31 May 2022 11:29:09 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2022-01-01 pragma: - no-cache server: @@ -108,7 +104,7 @@ interactions: x-ms-ratelimit-remaining-subscription-writes: - '1199' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 201 message: Created @@ -134,10 +130,9 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2022-01-01 response: body: string: "{\r\n \"name\": \"default\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default\",\r\n @@ -147,12 +142,12 @@ interactions: \"EnterpriseCluster\",\r\n \"evictionPolicy\": \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": \"RedisBloom\",\r\n \"args\": \"\",\r\n \ \"version\": \"2.2.4\"\r\n },\r\n {\r\n \"name\": - \"RedisTimeSeries\",\r\n \"args\": \"\",\r\n \"version\": \"1.4.7\"\r\n + \"RedisTimeSeries\",\r\n \"args\": \"\",\r\n \"version\": \"1.4.8\"\r\n \ },\r\n {\r\n \"name\": \"RediSearch\",\r\n \"args\": \"\",\r\n \"version\": \"2.0.6\"\r\n }\r\n ]\r\n }\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 cache-control: - no-cache content-length: @@ -160,11 +155,11 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:11 GMT + - Tue, 31 May 2022 11:29:13 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2022-01-01 pragma: - no-cache server: @@ -176,7 +171,7 @@ interactions: x-ms-ratelimit-remaining-subscription-writes: - '1199' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 201 message: Created @@ -196,14 +191,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -212,7 +206,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:40 GMT + - Tue, 31 May 2022 11:29:39 GMT expires: - '-1' pragma: @@ -228,7 +222,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -248,14 +242,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -264,7 +257,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:41 GMT + - Tue, 31 May 2022 11:29:43 GMT expires: - '-1' pragma: @@ -280,7 +273,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -300,14 +293,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -316,7 +308,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:30:10 GMT + - Tue, 31 May 2022 11:30:09 GMT expires: - '-1' pragma: @@ -332,7 +324,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -352,14 +344,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -368,7 +359,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:30:11 GMT + - Tue, 31 May 2022 11:30:13 GMT expires: - '-1' pragma: @@ -384,7 +375,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -404,14 +395,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -420,7 +410,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:30:41 GMT + - Tue, 31 May 2022 11:30:40 GMT expires: - '-1' pragma: @@ -436,7 +426,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -456,14 +446,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -472,7 +461,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:30:41 GMT + - Tue, 31 May 2022 11:30:44 GMT expires: - '-1' pragma: @@ -488,7 +477,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -508,14 +497,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -524,7 +512,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:31:11 GMT + - Tue, 31 May 2022 11:31:10 GMT expires: - '-1' pragma: @@ -540,7 +528,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -560,14 +548,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -576,7 +563,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:31:12 GMT + - Tue, 31 May 2022 11:31:14 GMT expires: - '-1' pragma: @@ -592,7 +579,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -612,14 +599,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -628,7 +614,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:31:41 GMT + - Tue, 31 May 2022 11:31:40 GMT expires: - '-1' pragma: @@ -644,7 +630,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -664,14 +650,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -680,7 +665,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:31:42 GMT + - Tue, 31 May 2022 11:31:44 GMT expires: - '-1' pragma: @@ -696,7 +681,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -716,14 +701,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -732,7 +716,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:32:11 GMT + - Tue, 31 May 2022 11:32:11 GMT expires: - '-1' pragma: @@ -748,7 +732,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -768,14 +752,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -784,7 +767,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:32:12 GMT + - Tue, 31 May 2022 11:32:15 GMT expires: - '-1' pragma: @@ -800,7 +783,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -820,14 +803,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -836,7 +818,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:32:41 GMT + - Tue, 31 May 2022 11:32:41 GMT expires: - '-1' pragma: @@ -852,7 +834,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -872,14 +854,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -888,7 +869,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:32:42 GMT + - Tue, 31 May 2022 11:32:45 GMT expires: - '-1' pragma: @@ -904,7 +885,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -924,14 +905,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -940,7 +920,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:33:11 GMT + - Tue, 31 May 2022 11:33:13 GMT expires: - '-1' pragma: @@ -956,7 +936,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -976,14 +956,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -992,7 +971,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:33:12 GMT + - Tue, 31 May 2022 11:33:16 GMT expires: - '-1' pragma: @@ -1008,7 +987,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1028,14 +1007,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -1044,7 +1022,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:33:41 GMT + - Tue, 31 May 2022 11:33:44 GMT expires: - '-1' pragma: @@ -1060,7 +1038,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1080,14 +1058,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -1096,7 +1073,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:33:42 GMT + - Tue, 31 May 2022 11:33:47 GMT expires: - '-1' pragma: @@ -1112,7 +1089,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1132,14 +1109,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -1148,7 +1124,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:34:11 GMT + - Tue, 31 May 2022 11:34:14 GMT expires: - '-1' pragma: @@ -1164,7 +1140,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1184,14 +1160,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -1200,7 +1175,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:34:12 GMT + - Tue, 31 May 2022 11:34:17 GMT expires: - '-1' pragma: @@ -1216,7 +1191,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1236,14 +1211,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -1252,7 +1226,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:34:41 GMT + - Tue, 31 May 2022 11:34:45 GMT expires: - '-1' pragma: @@ -1268,7 +1242,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1288,14 +1262,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -1304,7 +1277,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:34:42 GMT + - Tue, 31 May 2022 11:34:47 GMT expires: - '-1' pragma: @@ -1320,7 +1293,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1340,14 +1313,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -1356,7 +1328,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:35:12 GMT + - Tue, 31 May 2022 11:35:15 GMT expires: - '-1' pragma: @@ -1372,7 +1344,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1392,14 +1364,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -1408,7 +1379,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:35:12 GMT + - Tue, 31 May 2022 11:35:17 GMT expires: - '-1' pragma: @@ -1424,7 +1395,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1444,14 +1415,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -1460,7 +1430,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:35:42 GMT + - Tue, 31 May 2022 11:35:45 GMT expires: - '-1' pragma: @@ -1476,7 +1446,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1496,14 +1466,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -1512,7 +1481,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:35:43 GMT + - Tue, 31 May 2022 11:35:48 GMT expires: - '-1' pragma: @@ -1528,7 +1497,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1548,14 +1517,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"InProgress","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:29:11.2771929+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' headers: cache-control: - no-cache @@ -1564,7 +1532,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:36:12 GMT + - Tue, 31 May 2022 11:36:15 GMT expires: - '-1' pragma: @@ -1580,7 +1548,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1600,14 +1568,13 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Pending","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -1616,7 +1583,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:36:13 GMT + - Tue, 31 May 2022 11:36:18 GMT expires: - '-1' pragma: @@ -1632,7 +1599,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1652,14 +1619,319 @@ interactions: --clustering-policy --eviction-policy --modules --modules --modules --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/2256651e-359a-40ec-a081-345f6cae761e","name":"2256651e-359a-40ec-a081-345f6cae761e","status":"Succeeded","startTime":"2021-03-31T18:29:10.0735374+00:00","endTime":"2021-03-31T18:36:36.7406849+00:00"}' + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:36:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:36:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:37:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:37:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"InProgress","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:29:09.6670759+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:37:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Pending","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:37:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/30943d27-0cbb-4b4e-a75b-283d66616777","name":"30943d27-0cbb-4b4e-a75b-283d66616777","status":"Succeeded","startTime":"2022-05-31T11:29:08.2256189+00:00","endTime":"2022-05-31T11:38:12.5194905+00:00"}' headers: cache-control: - no-cache @@ -1668,7 +1940,273 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:36:42 GMT + - Tue, 31 May 2022 11:38:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache1-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"Enterprise_E20\",\r\n + \ \"capacity\": 4\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache1-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n + \ \"privateEndpointConnections\": []\r\n },\r\n \"zones\": [\r\n \"1\",\r\n + \ \"2\",\r\n \"3\"\r\n ]\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '696' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:38:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"InProgress","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"2022-05-31T11:38:15.2097773+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:38:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/058d6b0e-6a75-4089-909d-e946d8351b1e","name":"058d6b0e-6a75-4089-909d-e946d8351b1e","status":"Succeeded","startTime":"2022-05-31T11:29:13.6541916+00:00","endTime":"2022-05-31T11:38:22.6333528+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '319' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:38:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol + --clustering-policy --eviction-policy --modules --modules --modules --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2022-01-01 + response: + body: + string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Encrypted","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"EnterpriseCluster","evictionPolicy":"NoEviction","modules":[{"name":"RedisBloom","args":"","version":"2.2.9"},{"name":"RedisTimeSeries","args":"","version":"1.4.13"},{"name":"RediSearch","args":"","version":"2.2.6"}]}}' + headers: + cache-control: + - no-cache + content-length: + - '612' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:38:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise show + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache1-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"Enterprise_E20\",\r\n + \ \"capacity\": 4\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache1-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n + \ \"privateEndpointConnections\": []\r\n },\r\n \"zones\": [\r\n \"1\",\r\n + \ \"2\",\r\n \"3\"\r\n ]\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '696' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:38:56 GMT expires: - '-1' pragma: @@ -1684,7 +2222,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1692,41 +2230,43 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise create + - redisenterprise show Connection: - keep-alive ParameterSetName: - - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol - --clustering-policy --eviction-policy --modules --modules --modules --port - --resource-group + - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache1-000001\",\r\n - \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": - \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"Enterprise_E20\",\r\n - \ \"capacity\": 4\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": - \"Running\",\r\n \"privateEndpointConnections\": []\r\n },\r\n \"zones\": - [\r\n \"1\",\r\n \"2\",\r\n \"3\"\r\n ]\r\n}" + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": + \"RedisBloom\",\r\n \"args\": \"\",\r\n \"version\": + \"2.2.9\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n + \ \"args\": \"\",\r\n \"version\": \"1.4.13\"\r\n },\r\n + \ {\r\n \"name\": \"RediSearch\",\r\n \"args\": + \"\",\r\n \"version\": \"2.2.6\"\r\n }\r\n ]\r\n + \ }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '615' + - '985' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:36:42 GMT + - Tue, 31 May 2022 11:38:58 GMT expires: - '-1' pragma: @@ -1742,7 +2282,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1750,51 +2290,50 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise create + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol - --clustering-policy --eviction-policy --modules --modules --modules --port - --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/redisEnterprise?api-version=2022-01-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"InProgress","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"2021-03-31T18:36:42.2195959+00:00"}' + string: '{"value":[{"location":"East US","name":"RedisActiveGeo1","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"RedisActiveGeo1.eastus.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"East + US","name":"clitest-cache1-oj3yoh","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-h5w5yv/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-oj3yoh","type":"Microsoft.Cache/redisEnterprise","tags":{"tag1":"value1"},"sku":{"name":"Enterprise_E20","capacity":4},"properties":{"minimumTlsVersion":"1.2","hostName":"clitest-cache1-oj3yoh.eastus.redisenterprise.cache.azure.net","provisioningState":"Deleting","resourceState":"Deleting","privateEndpointConnections":[]},"zones":["1","2","3"]},{"location":"East + US","name":"clitest-cache1-000001","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001","type":"Microsoft.Cache/redisEnterprise","tags":{"tag1":"value1"},"sku":{"name":"Enterprise_E20","capacity":4},"properties":{"minimumTlsVersion":"1.2","hostName":"clitest-cache1-000001.eastus.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]},"zones":["1","2","3"]},{"location":"West + US 2","name":"ForceUnlink1","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink1.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"West + US 2","name":"ForceUnlink2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink2.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"West + US 2","name":"ForceUnlink4","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink4","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink4.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"West + US 2","name":"ForceUnlink5","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink5.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}}]}' headers: cache-control: - no-cache content-length: - - '320' + - '3552' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:36:43 GMT + - Tue, 31 May 2022 11:38:59 GMT expires: - '-1' pragma: - no-cache - server: - - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked vary: - Accept-Encoding x-content-type-options: - nosniff - x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + x-ms-original-request-ids: + - 91da1394-b799-4134-a939-554b34a45d0f + - d4d77d65-4e20-42f9-9ecb-497e92b89097 status: code: 200 message: OK @@ -1802,35 +2341,43 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise create + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol - --clustering-policy --eviction-policy --modules --modules --modules --port - --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1/databases?api-version=2022-01-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/565c4528-ef18-4a1b-9a59-80218c13d8dc","name":"565c4528-ef18-4a1b-9a59-80218c13d8dc","status":"Succeeded","startTime":"2021-03-31T18:29:11.6646467+00:00","endTime":"2021-03-31T18:37:07.1387513+00:00"}' + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"persistence\": {\r\n \"aofEnabled\": + false,\r\n \"rdbEnabled\": false,\r\n \"aofFrequency\": + null,\r\n \"rdbFrequency\": null\r\n },\r\n \"geoReplication\": + {\r\n \"linkedDatabases\": [\r\n {\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"activeGeoTesting\"\r\n }\r\n }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '319' + - '1103' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:14 GMT + - Tue, 31 May 2022 11:39:02 GMT expires: - '-1' pragma: @@ -1846,7 +2393,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1854,34 +2401,31 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise create + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --sku --capacity --tags --zones --minimum-tls-version --client-protocol - --clustering-policy --eviction-policy --modules --modules --modules --port - --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-h5w5yv/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-oj3yoh/databases?api-version=2022-01-01 response: body: - string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Encrypted","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"EnterpriseCluster","evictionPolicy":"NoEviction","modules":[{"name":"RedisBloom","args":"","version":"2.2.4"},{"name":"RedisTimeSeries","args":"","version":"1.4.7"},{"name":"RediSearch","args":"","version":"2.0.6"}]}}' + string: "{\r\n \"value\": []\r\n}" headers: cache-control: - no-cache content-length: - - '611' + - '19' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:14 GMT + - Tue, 31 May 2022 11:39:02 GMT expires: - '-1' pragma: @@ -1897,7 +2441,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1909,35 +2453,39 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise show + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache1-000001\",\r\n - \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": - \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"Enterprise_E20\",\r\n - \ \"capacity\": 4\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": - \"Running\",\r\n \"privateEndpointConnections\": []\r\n },\r\n \"zones\": - [\r\n \"1\",\r\n \"2\",\r\n \"3\"\r\n ]\r\n}" + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": + \"RedisBloom\",\r\n \"args\": \"\",\r\n \"version\": + \"2.2.9\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n + \ \"args\": \"\",\r\n \"version\": \"1.4.13\"\r\n },\r\n + \ {\r\n \"name\": \"RediSearch\",\r\n \"args\": + \"\",\r\n \"version\": \"2.2.6\"\r\n }\r\n ]\r\n + \ }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '615' + - '985' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:15 GMT + - Tue, 31 May 2022 11:39:03 GMT expires: - '-1' pragma: @@ -1953,7 +2501,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1965,40 +2513,43 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise show + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1/databases?api-version=2022-01-01 response: body: string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": - \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default\",\r\n + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1/databases/default\",\r\n \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": - \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": - \"RedisBloom\",\r\n \"args\": \"\",\r\n \"version\": - \"2.2.4\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n - \ \"args\": \"\",\r\n \"version\": \"1.4.7\"\r\n },\r\n - \ {\r\n \"name\": \"RediSearch\",\r\n \"args\": - \"\",\r\n \"version\": \"2.0.6\"\r\n }\r\n ]\r\n - \ }\r\n }\r\n ]\r\n}" + \"NoEviction\",\r\n \"persistence\": {\r\n \"aofEnabled\": + false,\r\n \"rdbEnabled\": false,\r\n \"aofFrequency\": + null,\r\n \"rdbFrequency\": null\r\n },\r\n \"geoReplication\": + {\r\n \"linkedDatabases\": [\r\n {\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n },\r\n {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n },\r\n {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '984' + - '1570' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:15 GMT + - Tue, 31 May 2022 11:39:05 GMT expires: - '-1' pragma: @@ -2014,7 +2565,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2032,37 +2583,30 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/redisEnterprise?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"value\": [\r\n {\r\n \"location\": \"East US\",\r\n - \ \"name\": \"clitest-cache1-000001\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n - \ \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": - \"Enterprise_E20\",\r\n \"capacity\": 4\r\n },\r\n \"properties\": - {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": - []\r\n },\r\n \"zones\": [\r\n \"1\",\r\n \"2\",\r\n - \ \"3\"\r\n ]\r\n },\r\n {\r\n \"location\": \"East - US\",\r\n \"name\": \"clitest-cache2-llytm7\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-te6mxc/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-llytm7\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n - \ \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": - \"EnterpriseFlash_F300\",\r\n \"capacity\": 3\r\n },\r\n \"properties\": - {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": - []\r\n }\r\n }\r\n ]\r\n}" + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"geoReplication\": {\r\n \"linkedDatabases\": + [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '1387' + - '923' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:15 GMT + - Tue, 31 May 2022 11:39:06 GMT expires: - '-1' pragma: @@ -2078,7 +2622,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2096,34 +2640,21 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink4/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": - \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": - {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n - \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": - \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": - \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": - \"RedisBloom\",\r\n \"args\": \"\",\r\n \"version\": - \"2.2.4\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n - \ \"args\": \"\",\r\n \"version\": \"1.4.7\"\r\n },\r\n - \ {\r\n \"name\": \"RediSearch\",\r\n \"args\": - \"\",\r\n \"version\": \"2.0.6\"\r\n }\r\n ]\r\n - \ }\r\n }\r\n ]\r\n}" + string: "{\r\n \"value\": []\r\n}" headers: cache-control: - no-cache content-length: - - '984' + - '19' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:16 GMT + - Tue, 31 May 2022 11:39:06 GMT expires: - '-1' pragma: @@ -2139,7 +2670,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2157,22 +2688,32 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-te6mxc/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-llytm7/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"value\": []\r\n}" + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"geoReplication\": {\r\n \"linkedDatabases\": + [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n },\r\n {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '19' + - '1163' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:16 GMT + - Tue, 31 May 2022 11:39:07 GMT expires: - '-1' pragma: @@ -2188,7 +2729,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2206,10 +2747,9 @@ interactions: ParameterSetName: - --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise?api-version=2022-01-01 response: body: string: "{\r\n \"value\": [\r\n {\r\n \"location\": \"East US\",\r\n @@ -2217,19 +2757,20 @@ interactions: \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \ \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"Enterprise_E20\",\r\n \"capacity\": 4\r\n },\r\n \"properties\": - {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": - []\r\n },\r\n \"zones\": [\r\n \"1\",\r\n \"2\",\r\n - \ \"3\"\r\n ]\r\n }\r\n ]\r\n}" + {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"hostName\": \"clitest-cache1-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"privateEndpointConnections\": []\r\n },\r\n + \ \"zones\": [\r\n \"1\",\r\n \"2\",\r\n \"3\"\r\n + \ ]\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '736' + - '821' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:16 GMT + - Tue, 31 May 2022 11:39:08 GMT expires: - '-1' pragma: @@ -2245,7 +2786,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2263,10 +2804,9 @@ interactions: ParameterSetName: - --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2022-01-01 response: body: string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": @@ -2277,20 +2817,20 @@ interactions: \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": \"RedisBloom\",\r\n \"args\": \"\",\r\n \"version\": - \"2.2.4\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n - \ \"args\": \"\",\r\n \"version\": \"1.4.7\"\r\n },\r\n + \"2.2.9\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n + \ \"args\": \"\",\r\n \"version\": \"1.4.13\"\r\n },\r\n \ {\r\n \"name\": \"RediSearch\",\r\n \"args\": - \"\",\r\n \"version\": \"2.0.6\"\r\n }\r\n ]\r\n + \"\",\r\n \"version\": \"2.2.6\"\r\n }\r\n ]\r\n \ }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '984' + - '985' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:17 GMT + - Tue, 31 May 2022 11:39:09 GMT expires: - '-1' pragma: @@ -2306,7 +2846,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2324,22 +2864,21 @@ interactions: ParameterSetName: - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default?api-version=2022-01-01 response: body: - string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Encrypted","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"EnterpriseCluster","evictionPolicy":"NoEviction","modules":[{"name":"RedisBloom","args":"","version":"2.2.4"},{"name":"RedisTimeSeries","args":"","version":"1.4.7"},{"name":"RediSearch","args":"","version":"2.0.6"}]}}' + string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Encrypted","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"EnterpriseCluster","evictionPolicy":"NoEviction","modules":[{"name":"RedisBloom","args":"","version":"2.2.9"},{"name":"RedisTimeSeries","args":"","version":"1.4.13"},{"name":"RediSearch","args":"","version":"2.2.6"}]}}' headers: cache-control: - no-cache content-length: - - '611' + - '612' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:18 GMT + - Tue, 31 May 2022 11:39:14 GMT expires: - '-1' pragma: @@ -2355,7 +2894,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2373,10 +2912,9 @@ interactions: ParameterSetName: - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases?api-version=2022-01-01 response: body: string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": @@ -2387,20 +2925,20 @@ interactions: \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": \"RedisBloom\",\r\n \"args\": \"\",\r\n \"version\": - \"2.2.4\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n - \ \"args\": \"\",\r\n \"version\": \"1.4.7\"\r\n },\r\n + \"2.2.9\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n + \ \"args\": \"\",\r\n \"version\": \"1.4.13\"\r\n },\r\n \ {\r\n \"name\": \"RediSearch\",\r\n \"args\": - \"\",\r\n \"version\": \"2.0.6\"\r\n }\r\n ]\r\n + \"\",\r\n \"version\": \"2.2.6\"\r\n }\r\n ]\r\n \ }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '984' + - '985' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:19 GMT + - Tue, 31 May 2022 11:39:17 GMT expires: - '-1' pragma: @@ -2416,7 +2954,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2436,14 +2974,13 @@ interactions: ParameterSetName: - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default/listKeys?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default/listKeys?api-version=2022-01-01 response: body: - string: "{\r\n \"primaryKey\": \"\",\r\n - \ \"secondaryKey\": \"\"\r\n}" + string: "{\r\n \"primaryKey\": \"\",\r\n + \ \"secondaryKey\": \"\"\r\n}" headers: cache-control: - no-cache @@ -2452,7 +2989,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:20 GMT + - Tue, 31 May 2022 11:39:19 GMT expires: - '-1' pragma: @@ -2470,7 +3007,7 @@ interactions: x-ms-ratelimit-remaining-subscription-writes: - '1199' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2492,14 +3029,13 @@ interactions: ParameterSetName: - --cluster-name --key-type --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default/regenerateKey?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/databases/default/regenerateKey?api-version=2022-01-01 response: body: - string: "{\r\n \"primaryKey\": \"\",\r\n - \ \"secondaryKey\": \"\"\r\n}" + string: "{\r\n \"primaryKey\": \"\",\r\n + \ \"secondaryKey\": \"\"\r\n}" headers: cache-control: - no-cache @@ -2508,7 +3044,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:21 GMT + - Tue, 31 May 2022 11:39:22 GMT expires: - '-1' pragma: @@ -2526,7 +3062,7 @@ interactions: x-ms-ratelimit-remaining-subscription-writes: - '1199' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2546,10 +3082,9 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001?api-version=2022-01-01 response: body: string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache1-000001\",\r\n @@ -2557,24 +3092,25 @@ interactions: \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"Enterprise_E20\",\r\n \ \"capacity\": 4\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Deleting\",\r\n \"resourceState\": - \"Deleting\",\r\n \"privateEndpointConnections\": []\r\n },\r\n \"zones\": - [\r\n \"1\",\r\n \"2\",\r\n \"3\"\r\n ]\r\n}" + \"1.2\",\r\n \"hostName\": \"clitest-cache1-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Deleting\",\r\n \"resourceState\": \"Deleting\",\r\n + \ \"privateEndpointConnections\": []\r\n },\r\n \"zones\": [\r\n \"1\",\r\n + \ \"2\",\r\n \"3\"\r\n ]\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 cache-control: - no-cache content-length: - - '615' + - '696' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:21 GMT + - Tue, 31 May 2022 11:39:24 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/operationresults/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-000001/operationresults/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 pragma: - no-cache server: @@ -2586,7 +3122,7 @@ interactions: x-ms-ratelimit-remaining-subscription-deletes: - '14999' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 202 message: Accepted @@ -2604,14 +3140,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"Pending","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"Pending","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"0001-01-01T00:00:00+00:00"}' headers: cache-control: - no-cache @@ -2620,157 +3155,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:51 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - redisenterprise delete - Connection: - - keep-alive - ParameterSetName: - - -y --cluster-name --resource-group - User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' - headers: - cache-control: - - no-cache - content-length: - - '320' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 31 Mar 2021 18:38:21 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - redisenterprise delete - Connection: - - keep-alive - ParameterSetName: - - -y --cluster-name --resource-group - User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' - headers: - cache-control: - - no-cache - content-length: - - '320' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 31 Mar 2021 18:38:52 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-HTTPAPI/2.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - redisenterprise delete - Connection: - - keep-alive - ParameterSetName: - - -y --cluster-name --resource-group - User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' - headers: - cache-control: - - no-cache - content-length: - - '320' - content-type: - - application/json; charset=utf-8 - date: - - Wed, 31 Mar 2021 18:39:22 GMT + - Tue, 31 May 2022 11:39:54 GMT expires: - '-1' pragma: @@ -2786,7 +3171,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2804,14 +3189,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -2820,7 +3204,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:39:52 GMT + - Tue, 31 May 2022 11:40:24 GMT expires: - '-1' pragma: @@ -2836,7 +3220,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2854,14 +3238,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -2870,7 +3253,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:40:22 GMT + - Tue, 31 May 2022 11:40:54 GMT expires: - '-1' pragma: @@ -2886,7 +3269,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2904,14 +3287,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -2920,7 +3302,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:40:53 GMT + - Tue, 31 May 2022 11:41:25 GMT expires: - '-1' pragma: @@ -2936,7 +3318,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2954,14 +3336,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -2970,7 +3351,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:41:23 GMT + - Tue, 31 May 2022 11:41:55 GMT expires: - '-1' pragma: @@ -2986,7 +3367,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3004,14 +3385,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3020,7 +3400,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:41:52 GMT + - Tue, 31 May 2022 11:42:25 GMT expires: - '-1' pragma: @@ -3036,7 +3416,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3054,14 +3434,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3070,7 +3449,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:42:22 GMT + - Tue, 31 May 2022 11:42:56 GMT expires: - '-1' pragma: @@ -3086,7 +3465,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3104,14 +3483,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3120,7 +3498,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:42:53 GMT + - Tue, 31 May 2022 11:43:26 GMT expires: - '-1' pragma: @@ -3136,7 +3514,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3154,14 +3532,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3170,7 +3547,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:43:23 GMT + - Tue, 31 May 2022 11:43:56 GMT expires: - '-1' pragma: @@ -3186,7 +3563,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3204,14 +3581,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3220,7 +3596,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:43:53 GMT + - Tue, 31 May 2022 11:44:26 GMT expires: - '-1' pragma: @@ -3236,7 +3612,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3254,14 +3630,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3270,7 +3645,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:44:23 GMT + - Tue, 31 May 2022 11:44:57 GMT expires: - '-1' pragma: @@ -3286,7 +3661,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3304,14 +3679,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3320,7 +3694,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:44:53 GMT + - Tue, 31 May 2022 11:45:28 GMT expires: - '-1' pragma: @@ -3336,7 +3710,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3354,14 +3728,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3370,7 +3743,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:45:24 GMT + - Tue, 31 May 2022 11:45:58 GMT expires: - '-1' pragma: @@ -3386,7 +3759,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3404,14 +3777,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3420,7 +3792,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:45:54 GMT + - Tue, 31 May 2022 11:46:29 GMT expires: - '-1' pragma: @@ -3436,7 +3808,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3454,14 +3826,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3470,7 +3841,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:46:24 GMT + - Tue, 31 May 2022 11:46:58 GMT expires: - '-1' pragma: @@ -3486,7 +3857,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3504,14 +3875,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"InProgress","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:37:52.7713632+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"InProgress","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:39:56.2570654+00:00"}' headers: cache-control: - no-cache @@ -3520,7 +3890,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:46:54 GMT + - Tue, 31 May 2022 11:47:29 GMT expires: - '-1' pragma: @@ -3536,7 +3906,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -3554,14 +3924,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/7e781239-15b0-4cdb-b455-a0e9eb561728","name":"7e781239-15b0-4cdb-b455-a0e9eb561728","status":"Succeeded","startTime":"2021-03-31T18:37:22.1700678+00:00","endTime":"2021-03-31T18:46:57.0120497+00:00"}' + US/operationsStatus/53c93eec-ce0b-4391-b6e6-118f755d0f9a","name":"53c93eec-ce0b-4391-b6e6-118f755d0f9a","status":"Succeeded","startTime":"2022-05-31T11:39:24.3959238+00:00","endTime":"2022-05-31T11:47:41.9470811+00:00"}' headers: cache-control: - no-cache @@ -3570,7 +3939,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:47:24 GMT + - Tue, 31 May 2022 11:48:00 GMT expires: - '-1' pragma: @@ -3586,7 +3955,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK diff --git a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario2.yaml b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario2.yaml index ba72a776008..b16456c47c1 100644 --- a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario2.yaml +++ b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario2.yaml @@ -13,15 +13,12 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - python/3.8.7 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3 - azure-mgmt-resource/12.0.0 Azure-SDK-For-Python AZURECLI/2.21.0 (MSI) - accept-language: - - en-US + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest-redisenterprise-rg2-000002?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest-redisenterprise-rg2-000002?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002","name":"clitest-redisenterprise-rg2-000002","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2021-03-31T18:29:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002","name":"clitest-redisenterprise-rg2-000002","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-31T11:49:39Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -30,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:06 GMT + - Tue, 31 May 2022 11:49:43 GMT expires: - '-1' pragma: @@ -62,10 +59,9 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2022-01-01 response: body: string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n @@ -73,23 +69,24 @@ interactions: \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Creating\",\r\n \"resourceState\": - \"Creating\"\r\n }\r\n}" + \"1.2\",\r\n \"hostName\": \"clitest-cache2-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Creating\",\r\n \"resourceState\": \"Creating\"\r\n + \ }\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 cache-control: - no-cache content-length: - - '533' + - '614' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:10 GMT + - Tue, 31 May 2022 11:49:50 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2022-01-01 pragma: - no-cache server: @@ -99,9 +96,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 201 message: Created @@ -119,14 +116,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -135,7 +131,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:29:40 GMT + - Tue, 31 May 2022 11:50:20 GMT expires: - '-1' pragma: @@ -151,7 +147,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -169,14 +165,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -185,7 +180,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:30:10 GMT + - Tue, 31 May 2022 11:50:51 GMT expires: - '-1' pragma: @@ -201,7 +196,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -219,14 +214,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -235,7 +229,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:30:41 GMT + - Tue, 31 May 2022 11:51:21 GMT expires: - '-1' pragma: @@ -251,7 +245,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -269,14 +263,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -285,7 +278,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:31:11 GMT + - Tue, 31 May 2022 11:51:52 GMT expires: - '-1' pragma: @@ -301,7 +294,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -319,14 +312,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -335,7 +327,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:31:41 GMT + - Tue, 31 May 2022 11:52:21 GMT expires: - '-1' pragma: @@ -351,7 +343,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -369,14 +361,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -385,7 +376,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:32:11 GMT + - Tue, 31 May 2022 11:52:52 GMT expires: - '-1' pragma: @@ -401,7 +392,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -419,14 +410,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -435,7 +425,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:32:41 GMT + - Tue, 31 May 2022 11:53:22 GMT expires: - '-1' pragma: @@ -451,7 +441,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -469,14 +459,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -485,7 +474,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:33:11 GMT + - Tue, 31 May 2022 11:53:52 GMT expires: - '-1' pragma: @@ -501,7 +490,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -519,14 +508,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -535,7 +523,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:33:41 GMT + - Tue, 31 May 2022 11:54:24 GMT expires: - '-1' pragma: @@ -551,7 +539,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -569,14 +557,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -585,7 +572,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:34:11 GMT + - Tue, 31 May 2022 11:54:54 GMT expires: - '-1' pragma: @@ -601,7 +588,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -619,14 +606,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -635,7 +621,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:34:42 GMT + - Tue, 31 May 2022 11:55:25 GMT expires: - '-1' pragma: @@ -651,7 +637,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -669,14 +655,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -685,7 +670,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:35:12 GMT + - Tue, 31 May 2022 11:55:55 GMT expires: - '-1' pragma: @@ -701,7 +686,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -719,14 +704,13 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"InProgress","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:49:53.1678878+00:00"}' headers: cache-control: - no-cache @@ -735,7 +719,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:35:42 GMT + - Tue, 31 May 2022 11:56:24 GMT expires: - '-1' pragma: @@ -751,7 +735,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -769,23 +753,22 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + US/operationsStatus/5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","name":"5c669bfa-5d0d-4007-9626-5f0ef5c5bc37","status":"Succeeded","startTime":"2022-05-31T11:49:49.2692106+00:00","endTime":"2022-05-31T11:56:31.1851259+00:00"}' headers: cache-control: - no-cache content-length: - - '320' + - '319' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:36:12 GMT + - Tue, 31 May 2022 11:56:55 GMT expires: - '-1' pragma: @@ -801,7 +784,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -819,23 +802,28 @@ interactions: ParameterSetName: - --cluster-name --sku --tags --no-database --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2022-01-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"InProgress","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:29:11.2301537+00:00"}' + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n + \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache2-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n + \ \"privateEndpointConnections\": []\r\n }\r\n}" headers: cache-control: - no-cache content-length: - - '320' + - '653' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:36:42 GMT + - Tue, 31 May 2022 11:56:56 GMT expires: - '-1' pragma: @@ -851,7 +839,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -859,33 +847,38 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise create + - redisenterprise show Connection: - keep-alive ParameterSetName: - - --cluster-name --sku --tags --no-database --resource-group + - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2022-01-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/4afd8d96-2d38-4511-8ce6-12ac86ab73ff","name":"4afd8d96-2d38-4511-8ce6-12ac86ab73ff","status":"Succeeded","startTime":"2021-03-31T18:29:10.2730801+00:00","endTime":"2021-03-31T18:36:50.6807357+00:00"}' + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n + \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache2-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n + \ \"privateEndpointConnections\": []\r\n }\r\n}" headers: cache-control: - no-cache content-length: - - '319' + - '653' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:13 GMT + - Tue, 31 May 2022 11:56:57 GMT expires: - '-1' pragma: @@ -901,7 +894,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -909,38 +902,31 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise create + - redisenterprise show Connection: - keep-alive ParameterSetName: - - --cluster-name --sku --tags --no-database --resource-group + - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n - \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": - \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n - \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": - \"Running\",\r\n \"privateEndpointConnections\": []\r\n }\r\n}" + string: "{\r\n \"value\": []\r\n}" headers: cache-control: - no-cache content-length: - - '572' + - '19' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:13 GMT + - Tue, 31 May 2022 11:56:58 GMT expires: - '-1' pragma: @@ -956,7 +942,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -968,34 +954,90 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise show + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/redisEnterprise?api-version=2022-01-01 response: body: - string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n - \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": - \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n - \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": - \"Running\",\r\n \"privateEndpointConnections\": []\r\n }\r\n}" + string: '{"value":[{"location":"East US","name":"RedisActiveGeo1","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"RedisActiveGeo1.eastus.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"East + US","name":"clitest-cache31-7ubnn","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-hlofa/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-7ubnn","type":"Microsoft.Cache/redisEnterprise","tags":{"tag1":"value1"},"sku":{"name":"EnterpriseFlash_F300","capacity":3},"properties":{"minimumTlsVersion":"1.2","hostName":"clitest-cache31-7ubnn.eastus.redisenterprise.cache.azure.net","provisioningState":"Creating","resourceState":"Creating","privateEndpointConnections":[]}},{"location":"East + US","name":"clitest-cache2-000001","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001","type":"Microsoft.Cache/redisEnterprise","tags":{"tag1":"value1"},"sku":{"name":"EnterpriseFlash_F300","capacity":3},"properties":{"minimumTlsVersion":"1.2","hostName":"clitest-cache2-000001.eastus.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"West + US 2","name":"ForceUnlink1","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink1.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"West + US 2","name":"ForceUnlink2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink2.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"West + US 2","name":"ForceUnlink4","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink4","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink4.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}},{"location":"West + US 2","name":"ForceUnlink5","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5","type":"Microsoft.Cache/redisEnterprise","tags":{},"sku":{"name":"Enterprise_E10","capacity":2},"properties":{"minimumTlsVersion":"1.2","hostName":"ForceUnlink5.westus2.redisenterprise.cache.azure.net","provisioningState":"Succeeded","resourceState":"Running","privateEndpointConnections":[]}}]}' headers: cache-control: - no-cache content-length: - - '572' + - '3520' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:13 GMT + - Tue, 31 May 2022 11:56:59 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-original-request-ids: + - 40f2d33f-0f53-4fb6-b5e3-aa1343d461f3 + - 01f1e114-a6c9-4fb7-91bf-4713cfd61ce8 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1/databases?api-version=2022-01-01 + response: + body: + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"persistence\": {\r\n \"aofEnabled\": + false,\r\n \"rdbEnabled\": false,\r\n \"aofFrequency\": + null,\r\n \"rdbFrequency\": null\r\n },\r\n \"geoReplication\": + {\r\n \"linkedDatabases\": [\r\n {\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/RedisActiveGeo1/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"activeGeoTesting\"\r\n }\r\n }\r\n }\r\n ]\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '1103' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:57:00 GMT expires: - '-1' pragma: @@ -1011,7 +1053,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1023,16 +1065,15 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise show + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-hlofa/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-7ubnn/databases?api-version=2022-01-01 response: body: string: "{\r\n \"value\": []\r\n}" @@ -1044,7 +1085,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:14 GMT + - Tue, 31 May 2022 11:57:00 GMT expires: - '-1' pragma: @@ -1060,7 +1101,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1078,37 +1119,21 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/redisEnterprise?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"value\": [\r\n {\r\n \"location\": \"East US\",\r\n - \ \"name\": \"clitest-cache1-yrekf4\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-n7oiyt/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-yrekf4\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n - \ \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": - \"Enterprise_E20\",\r\n \"capacity\": 4\r\n },\r\n \"properties\": - {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": - []\r\n },\r\n \"zones\": [\r\n \"1\",\r\n \"2\",\r\n - \ \"3\"\r\n ]\r\n },\r\n {\r\n \"location\": \"East - US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n - \ \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": - \"EnterpriseFlash_F300\",\r\n \"capacity\": 3\r\n },\r\n \"properties\": - {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": - []\r\n }\r\n }\r\n ]\r\n}" + string: "{\r\n \"value\": []\r\n}" headers: cache-control: - no-cache content-length: - - '1387' + - '19' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:15 GMT + - Tue, 31 May 2022 11:57:01 GMT expires: - '-1' pragma: @@ -1124,7 +1149,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1142,34 +1167,37 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-n7oiyt/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-yrekf4/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1/databases?api-version=2022-01-01 response: body: string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": - \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg1-n7oiyt/providers/Microsoft.Cache/redisEnterprise/clitest-cache1-yrekf4/databases/default\",\r\n + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1/databases/default\",\r\n \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": - \"NoEviction\",\r\n \"modules\": [\r\n {\r\n \"name\": - \"RedisBloom\",\r\n \"args\": \"\",\r\n \"version\": - \"2.2.4\"\r\n },\r\n {\r\n \"name\": \"RedisTimeSeries\",\r\n - \ \"args\": \"\",\r\n \"version\": \"1.4.7\"\r\n },\r\n - \ {\r\n \"name\": \"RediSearch\",\r\n \"args\": - \"\",\r\n \"version\": \"2.0.6\"\r\n }\r\n ]\r\n - \ }\r\n }\r\n ]\r\n}" + \"NoEviction\",\r\n \"persistence\": {\r\n \"aofEnabled\": + false,\r\n \"rdbEnabled\": false,\r\n \"aofFrequency\": + null,\r\n \"rdbFrequency\": null\r\n },\r\n \"geoReplication\": + {\r\n \"linkedDatabases\": [\r\n {\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink1/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n },\r\n {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n },\r\n {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '984' + - '1570' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:15 GMT + - Tue, 31 May 2022 11:57:01 GMT expires: - '-1' pragma: @@ -1185,7 +1213,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1203,22 +1231,30 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"value\": []\r\n}" + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"geoReplication\": {\r\n \"linkedDatabases\": + [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '19' + - '923' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:15 GMT + - Tue, 31 May 2022 11:57:02 GMT expires: - '-1' pragma: @@ -1234,7 +1270,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1250,31 +1286,23 @@ interactions: Connection: - keep-alive ParameterSetName: - - --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink4/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"value\": [\r\n {\r\n \"location\": \"East US\",\r\n - \ \"name\": \"clitest-cache2-000001\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n - \ \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": - \"EnterpriseFlash_F300\",\r\n \"capacity\": 3\r\n },\r\n \"properties\": - {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": - []\r\n }\r\n }\r\n ]\r\n}" + string: "{\r\n \"value\": []\r\n}" headers: cache-control: - no-cache content-length: - - '673' + - '19' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:16 GMT + - Tue, 31 May 2022 11:57:02 GMT expires: - '-1' pragma: @@ -1290,7 +1318,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1306,24 +1334,34 @@ interactions: Connection: - keep-alive ParameterSetName: - - --resource-group + - -g User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases?api-version=2022-01-01 response: body: - string: "{\r\n \"value\": []\r\n}" + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"geoReplication\": {\r\n \"linkedDatabases\": + [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink2/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n },\r\n {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/new-geo-sdk/providers/Microsoft.Cache/redisEnterprise/ForceUnlink5/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '19' + - '1163' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:16 GMT + - Tue, 31 May 2022 11:57:03 GMT expires: - '-1' pragma: @@ -1339,103 +1377,95 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK - request: - body: '{"properties": {"clientProtocol": "Plaintext", "port": 10000, "clusteringPolicy": - "OSSCluster", "evictionPolicy": "AllKeysLRU"}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise database create + - redisenterprise list Connection: - keep-alive - Content-Length: - - '128' - Content-Type: - - application/json ParameterSetName: - - --cluster-name --client-protocol --clustering-policy --eviction-policy --port - --resource-group + - --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2021-03-01 + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise?api-version=2022-01-01 response: body: - string: "{\r\n \"name\": \"default\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": - {\r\n \"clientProtocol\": \"Plaintext\",\r\n \"port\": 10000,\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"clusteringPolicy\": - \"OSSCluster\",\r\n \"evictionPolicy\": \"AllKeysLRU\"\r\n }\r\n}" + string: "{\r\n \"value\": [\r\n {\r\n \"location\": \"East US\",\r\n + \ \"name\": \"clitest-cache2-000001\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n + \ \"tag1\": \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": + \"EnterpriseFlash_F300\",\r\n \"capacity\": 3\r\n },\r\n \"properties\": + {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"hostName\": \"clitest-cache2-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"privateEndpointConnections\": []\r\n }\r\n + \ }\r\n ]\r\n}" headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/f0310afa-71d5-4341-920c-b6171a8c359b?api-version=2021-03-01 cache-control: - no-cache content-length: - - '505' + - '758' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:17 GMT + - Tue, 31 May 2022 11:57:05 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2021-03-01 pragma: - no-cache server: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: - code: 201 - message: Created + code: 200 + message: OK - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise database create + - redisenterprise list Connection: - keep-alive ParameterSetName: - - --cluster-name --client-protocol --clustering-policy --eviction-policy --port - --resource-group + - --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/f0310afa-71d5-4341-920c-b6171a8c359b?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2022-01-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/f0310afa-71d5-4341-920c-b6171a8c359b","name":"f0310afa-71d5-4341-920c-b6171a8c359b","status":"InProgress","startTime":"2021-03-31T18:37:18.4316933+00:00","endTime":"2021-03-31T18:37:20.6379522+00:00"}' + string: "{\r\n \"value\": []\r\n}" headers: cache-control: - no-cache content-length: - - '320' + - '19' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:37:48 GMT + - Tue, 31 May 2022 11:57:07 GMT expires: - '-1' pragma: @@ -1451,10 +1481,70 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK +- request: + body: '{"properties": {"clientProtocol": "Plaintext", "port": 10000, "clusteringPolicy": + "OSSCluster", "evictionPolicy": "AllKeysLRU"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database create + Connection: + - keep-alive + Content-Length: + - '128' + Content-Type: + - application/json + ParameterSetName: + - --cluster-name --client-protocol --clustering-policy --eviction-policy --port + --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2022-01-01 + response: + body: + string: "{\r\n \"name\": \"default\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Plaintext\",\r\n \"port\": 10000,\r\n \"provisioningState\": + \"Creating\",\r\n \"resourceState\": \"Creating\",\r\n \"clusteringPolicy\": + \"OSSCluster\",\r\n \"evictionPolicy\": \"AllKeysLRU\"\r\n }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/634bc75a-a263-40c5-a197-a0702af4c2b2?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '505' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:57:09 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 201 + message: Created - request: body: null headers: @@ -1470,14 +1560,13 @@ interactions: - --cluster-name --client-protocol --clustering-policy --eviction-policy --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/f0310afa-71d5-4341-920c-b6171a8c359b?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/634bc75a-a263-40c5-a197-a0702af4c2b2?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/f0310afa-71d5-4341-920c-b6171a8c359b","name":"f0310afa-71d5-4341-920c-b6171a8c359b","status":"Succeeded","startTime":"2021-03-31T18:37:18.4316933+00:00","endTime":"2021-03-31T18:37:53.4152047+00:00"}' + US/operationsStatus/634bc75a-a263-40c5-a197-a0702af4c2b2","name":"634bc75a-a263-40c5-a197-a0702af4c2b2","status":"Succeeded","startTime":"2022-05-31T11:57:09.6312592+00:00","endTime":"2022-05-31T11:57:27.2632666+00:00"}' headers: cache-control: - no-cache @@ -1486,7 +1575,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:18 GMT + - Tue, 31 May 2022 11:57:39 GMT expires: - '-1' pragma: @@ -1502,7 +1591,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1521,10 +1610,9 @@ interactions: - --cluster-name --client-protocol --clustering-policy --eviction-policy --port --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2022-01-01 response: body: string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Plaintext","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"OSSCluster","evictionPolicy":"AllKeysLRU"}}' @@ -1536,7 +1624,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:18 GMT + - Tue, 31 May 2022 11:57:40 GMT expires: - '-1' pragma: @@ -1552,7 +1640,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1570,10 +1658,9 @@ interactions: ParameterSetName: - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2022-01-01 response: body: string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Plaintext","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"OSSCluster","evictionPolicy":"AllKeysLRU"}}' @@ -1585,7 +1672,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:19 GMT + - Tue, 31 May 2022 11:57:41 GMT expires: - '-1' pragma: @@ -1601,7 +1688,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1619,10 +1706,9 @@ interactions: ParameterSetName: - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases?api-version=2022-01-01 response: body: string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": @@ -1640,7 +1726,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:21 GMT + - Tue, 31 May 2022 11:57:43 GMT expires: - '-1' pragma: @@ -1656,7 +1742,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1676,14 +1762,13 @@ interactions: ParameterSetName: - --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default/listKeys?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default/listKeys?api-version=2022-01-01 response: body: - string: "{\r\n \"primaryKey\": \"\",\r\n - \ \"secondaryKey\": \"\"\r\n}" + string: "{\r\n \"primaryKey\": \"\",\r\n + \ \"secondaryKey\": \"\"\r\n}" headers: cache-control: - no-cache @@ -1692,7 +1777,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:21 GMT + - Tue, 31 May 2022 11:57:43 GMT expires: - '-1' pragma: @@ -1708,9 +1793,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1732,14 +1817,13 @@ interactions: ParameterSetName: - --cluster-name --key-type --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default/regenerateKey?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default/regenerateKey?api-version=2022-01-01 response: body: - string: "{\r\n \"primaryKey\": \"\",\r\n - \ \"secondaryKey\": \"\"\r\n}" + string: "{\r\n \"primaryKey\": \"\",\r\n + \ \"secondaryKey\": \"\"\r\n}" headers: cache-control: - no-cache @@ -1748,7 +1832,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:22 GMT + - Tue, 31 May 2022 11:57:45 GMT expires: - '-1' pragma: @@ -1766,7 +1850,7 @@ interactions: x-ms-ratelimit-remaining-subscription-writes: - '1199' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1786,16 +1870,15 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default?api-version=2022-01-01 response: body: string: "{\r\n \"StatusCode\": 202\r\n}" headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/cd198889-3962-4ff0-9e27-9e2407c4d2ed?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/803fb1b8-17d4-4020-b6e7-b802781b0b44?api-version=2022-01-01 cache-control: - no-cache content-length: @@ -1803,11 +1886,11 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:23 GMT + - Tue, 31 May 2022 11:57:49 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default/operationresults/cd198889-3962-4ff0-9e27-9e2407c4d2ed?api-version=2021-03-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/databases/default/operationresults/803fb1b8-17d4-4020-b6e7-b802781b0b44?api-version=2022-01-01 pragma: - no-cache server: @@ -1819,7 +1902,7 @@ interactions: x-ms-ratelimit-remaining-subscription-deletes: - '14999' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 202 message: Accepted @@ -1837,23 +1920,22 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/cd198889-3962-4ff0-9e27-9e2407c4d2ed?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/803fb1b8-17d4-4020-b6e7-b802781b0b44?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/cd198889-3962-4ff0-9e27-9e2407c4d2ed","name":"cd198889-3962-4ff0-9e27-9e2407c4d2ed","status":"Pending","startTime":"2021-03-31T18:38:23.7204677+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + US/operationsStatus/803fb1b8-17d4-4020-b6e7-b802781b0b44","name":"803fb1b8-17d4-4020-b6e7-b802781b0b44","status":"Succeeded","startTime":"2022-05-31T11:57:50.4032928+00:00","endTime":"2022-05-31T11:58:04.9849873+00:00"}' headers: cache-control: - no-cache content-length: - - '309' + - '319' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:38:53 GMT + - Tue, 31 May 2022 11:58:20 GMT expires: - '-1' pragma: @@ -1869,10 +1951,69 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n + \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache2-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Deleting\",\r\n \"resourceState\": \"Deleting\",\r\n + \ \"privateEndpointConnections\": []\r\n }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '653' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 11:58:22 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/operationresults/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 202 + message: Accepted - request: body: null headers: @@ -1881,29 +2022,28 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - redisenterprise database delete + - redisenterprise delete Connection: - keep-alive ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/cd198889-3962-4ff0-9e27-9e2407c4d2ed?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/cd198889-3962-4ff0-9e27-9e2407c4d2ed","name":"cd198889-3962-4ff0-9e27-9e2407c4d2ed","status":"Succeeded","startTime":"2021-03-31T18:38:23.7204677+00:00","endTime":"2021-03-31T18:39:01.5354882+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache content-length: - - '319' + - '320' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:39:23 GMT + - Tue, 31 May 2022 11:58:52 GMT expires: - '-1' pragma: @@ -1919,7 +2059,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -1927,61 +2067,51 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - redisenterprise delete Connection: - keep-alive - Content-Length: - - '0' ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001?api-version=2021-03-01 + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: - string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache2-000001\",\r\n - \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001\",\r\n - \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": - \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n - \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": - \"1.2\",\r\n \"provisioningState\": \"Deleting\",\r\n \"resourceState\": - \"Deleting\",\r\n \"privateEndpointConnections\": []\r\n }\r\n}" + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 cache-control: - no-cache content-length: - - '572' + - '320' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:39:25 GMT + - Tue, 31 May 2022 11:59:22 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg2-000002/providers/Microsoft.Cache/redisEnterprise/clitest-cache2-000001/operationresults/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 pragma: - no-cache server: - Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -1996,14 +2126,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2012,7 +2141,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:39:55 GMT + - Tue, 31 May 2022 11:59:53 GMT expires: - '-1' pragma: @@ -2028,7 +2157,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2046,14 +2175,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2062,7 +2190,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:40:25 GMT + - Tue, 31 May 2022 12:00:23 GMT expires: - '-1' pragma: @@ -2078,7 +2206,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2096,14 +2224,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2112,7 +2239,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:40:55 GMT + - Tue, 31 May 2022 12:00:54 GMT expires: - '-1' pragma: @@ -2128,7 +2255,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2146,14 +2273,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2162,7 +2288,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:41:25 GMT + - Tue, 31 May 2022 12:01:24 GMT expires: - '-1' pragma: @@ -2178,7 +2304,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2196,14 +2322,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2212,7 +2337,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:41:55 GMT + - Tue, 31 May 2022 12:01:54 GMT expires: - '-1' pragma: @@ -2228,7 +2353,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2246,14 +2371,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2262,7 +2386,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:42:26 GMT + - Tue, 31 May 2022 12:02:24 GMT expires: - '-1' pragma: @@ -2278,7 +2402,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2296,14 +2420,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2312,7 +2435,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:42:56 GMT + - Tue, 31 May 2022 12:02:55 GMT expires: - '-1' pragma: @@ -2328,7 +2451,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2346,14 +2469,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2362,7 +2484,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:43:26 GMT + - Tue, 31 May 2022 12:03:25 GMT expires: - '-1' pragma: @@ -2378,7 +2500,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2396,14 +2518,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2412,7 +2533,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:43:56 GMT + - Tue, 31 May 2022 12:03:56 GMT expires: - '-1' pragma: @@ -2428,7 +2549,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2446,14 +2567,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2462,7 +2582,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:44:26 GMT + - Tue, 31 May 2022 12:04:26 GMT expires: - '-1' pragma: @@ -2478,7 +2598,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2496,14 +2616,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2512,7 +2631,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:44:56 GMT + - Tue, 31 May 2022 12:04:57 GMT expires: - '-1' pragma: @@ -2528,7 +2647,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2546,14 +2665,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2562,7 +2680,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:45:27 GMT + - Tue, 31 May 2022 12:05:27 GMT expires: - '-1' pragma: @@ -2578,7 +2696,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2596,14 +2714,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2612,7 +2729,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:45:57 GMT + - Tue, 31 May 2022 12:05:58 GMT expires: - '-1' pragma: @@ -2628,7 +2745,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2646,14 +2763,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2662,7 +2778,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:46:27 GMT + - Tue, 31 May 2022 12:06:28 GMT expires: - '-1' pragma: @@ -2678,7 +2794,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2696,14 +2812,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2712,7 +2827,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:46:57 GMT + - Tue, 31 May 2022 12:06:59 GMT expires: - '-1' pragma: @@ -2728,7 +2843,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2746,14 +2861,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2762,7 +2876,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:47:27 GMT + - Tue, 31 May 2022 12:07:29 GMT expires: - '-1' pragma: @@ -2778,7 +2892,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2796,14 +2910,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2812,7 +2925,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:47:58 GMT + - Tue, 31 May 2022 12:07:59 GMT expires: - '-1' pragma: @@ -2828,7 +2941,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2846,14 +2959,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2862,7 +2974,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:48:28 GMT + - Tue, 31 May 2022 12:08:30 GMT expires: - '-1' pragma: @@ -2878,7 +2990,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2896,14 +3008,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2912,7 +3023,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:48:57 GMT + - Tue, 31 May 2022 12:08:59 GMT expires: - '-1' pragma: @@ -2928,7 +3039,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2946,14 +3057,13 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"InProgress","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:39:25.8134425+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"InProgress","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T11:58:24.6338771+00:00"}' headers: cache-control: - no-cache @@ -2962,7 +3072,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:49:28 GMT + - Tue, 31 May 2022 12:09:30 GMT expires: - '-1' pragma: @@ -2978,7 +3088,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK @@ -2996,23 +3106,22 @@ interactions: ParameterSetName: - -y --cluster-name --resource-group User-Agent: - - AZURECLI/2.21.0 (MSI) azsdk-python-mgmt-redisenterprise/1.0.0 Python/3.8.7 - (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133?api-version=2021-03-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b?api-version=2022-01-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East - US/operationsStatus/745ebaa8-bb38-4380-910a-ed5a5c18d133","name":"745ebaa8-bb38-4380-910a-ed5a5c18d133","status":"Succeeded","startTime":"2021-03-31T18:39:25.3129662+00:00","endTime":"2021-03-31T18:49:30.149169+00:00"}' + US/operationsStatus/fe923281-5ef1-413a-a919-eb1d967a5d7b","name":"fe923281-5ef1-413a-a919-eb1d967a5d7b","status":"Succeeded","startTime":"2022-05-31T11:58:23.0665859+00:00","endTime":"2022-05-31T12:09:52.8281691+00:00"}' headers: cache-control: - no-cache content-length: - - '318' + - '319' content-type: - application/json; charset=utf-8 date: - - Wed, 31 Mar 2021 18:49:57 GMT + - Tue, 31 May 2022 12:10:00 GMT expires: - '-1' pragma: @@ -3028,7 +3137,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 791aee15-8953-41e6-ab52-085e4164442e + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 status: code: 200 message: OK diff --git a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario3.yaml b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario3.yaml new file mode 100644 index 00000000000..517bfe90602 --- /dev/null +++ b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/recordings/test_redisenterprise_scenario3.yaml @@ -0,0 +1,5312 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest-redisenterprise-rg31-000003?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003","name":"clitest-redisenterprise-rg31-000003","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-05-31T13:23:00Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '348' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:23:10 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"tags": {"tag1": "value1"}, "location": "eastus", "sku": {"name": "EnterpriseFlash_F300"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + Content-Length: + - '91' + Content-Type: + - application/json + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache31-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n + \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache31-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Creating\",\r\n \"resourceState\": \"Creating\"\r\n + \ }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '618' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:23:18 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:23:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:24:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:24:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:25:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:25:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:26:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:26:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:27:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:27:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:28:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:28:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:29:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:29:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:30:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"InProgress","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:23:18.6013664+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:30:54 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","name":"1a2fd8bc-3c43-49e6-a0ba-d2def0b7e4ce","status":"Succeeded","startTime":"2022-05-31T13:23:17.5510414+00:00","endTime":"2022-05-31T13:31:22.2289255+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '319' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:31:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --sku --tags --no-database --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache31-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n + \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache31-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n + \ \"privateEndpointConnections\": []\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '657' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:31:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"clientProtocol": "Encrypted", "port": 10000, "clusteringPolicy": + "EnterpriseCluster", "evictionPolicy": "NoEviction", "geoReplication": {"groupNickname": + "groupName", "linkedDatabases": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default"}]}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database create + Connection: + - keep-alive + Content-Length: + - '403' + Content-Type: + - application/json + ParameterSetName: + - --cluster-name --client-protocol --clustering-policy --eviction-policy --group-nickname + --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default?api-version=2022-01-01 + response: + body: + string: "{\r\n \"name\": \"default\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n \"provisioningState\": + \"Creating\",\r\n \"resourceState\": \"Creating\",\r\n \"clusteringPolicy\": + \"EnterpriseCluster\",\r\n \"evictionPolicy\": \"NoEviction\",\r\n \"geoReplication\": + {\r\n \"linkedDatabases\": [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default\",\r\n + \ \"state\": \"Linking\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fb411742-fa91-478d-8d40-c0996e2d3907?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '879' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:31:30 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --client-protocol --clustering-policy --eviction-policy --group-nickname + --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fb411742-fa91-478d-8d40-c0996e2d3907?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/fb411742-fa91-478d-8d40-c0996e2d3907","name":"fb411742-fa91-478d-8d40-c0996e2d3907","status":"InProgress","startTime":"2022-05-31T13:31:31.0597415+00:00","endTime":"2022-05-31T13:31:33.5680913+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:32:01 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --client-protocol --clustering-policy --eviction-policy --group-nickname + --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fb411742-fa91-478d-8d40-c0996e2d3907?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/fb411742-fa91-478d-8d40-c0996e2d3907","name":"fb411742-fa91-478d-8d40-c0996e2d3907","status":"InProgress","startTime":"2022-05-31T13:31:31.0597415+00:00","endTime":"2022-05-31T13:31:33.5680913+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:32:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --client-protocol --clustering-policy --eviction-policy --group-nickname + --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/fb411742-fa91-478d-8d40-c0996e2d3907?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/fb411742-fa91-478d-8d40-c0996e2d3907","name":"fb411742-fa91-478d-8d40-c0996e2d3907","status":"Succeeded","startTime":"2022-05-31T13:31:31.0597415+00:00","endTime":"2022-05-31T13:33:01.924778+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '318' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:33:01 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --client-protocol --clustering-policy --eviction-policy --group-nickname + --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default?api-version=2022-01-01 + response: + body: + string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Encrypted","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"EnterpriseCluster","evictionPolicy":"NoEviction","geoReplication":{"linkedDatabases":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default","state":"Linked"}],"groupNickname":"groupName"}}}' + headers: + cache-control: + - no-cache + content-length: + - '725' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:33:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database create + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --client-protocol --clustering-policy --eviction-policy --group-nickname + --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2019-11-01 + response: + body: + string: "{\"value\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus\",\"name\":\"eastus\",\"displayName\":\"East + US\",\"regionalDisplayName\":\"(US) East US\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"US\",\"longitude\":\"-79.8164\",\"latitude\":\"37.3719\",\"physicalLocation\":\"Virginia\",\"pairedRegion\":[{\"name\":\"westus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2\",\"name\":\"eastus2\",\"displayName\":\"East + US 2\",\"regionalDisplayName\":\"(US) East US 2\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"US\",\"longitude\":\"-78.3889\",\"latitude\":\"36.6681\",\"physicalLocation\":\"Virginia\",\"pairedRegion\":[{\"name\":\"centralus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus\",\"name\":\"southcentralus\",\"displayName\":\"South + Central US\",\"regionalDisplayName\":\"(US) South Central US\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"US\",\"longitude\":\"-98.5\",\"latitude\":\"29.4167\",\"physicalLocation\":\"Texas\",\"pairedRegion\":[{\"name\":\"northcentralus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2\",\"name\":\"westus2\",\"displayName\":\"West + US 2\",\"regionalDisplayName\":\"(US) West US 2\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"US\",\"longitude\":\"-119.852\",\"latitude\":\"47.233\",\"physicalLocation\":\"Washington\",\"pairedRegion\":[{\"name\":\"westcentralus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus3\",\"name\":\"westus3\",\"displayName\":\"West + US 3\",\"regionalDisplayName\":\"(US) West US 3\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"US\",\"longitude\":\"-112.074036\",\"latitude\":\"33.448376\",\"physicalLocation\":\"Phoenix\",\"pairedRegion\":[{\"name\":\"eastus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast\",\"name\":\"australiaeast\",\"displayName\":\"Australia + East\",\"regionalDisplayName\":\"(Asia Pacific) Australia East\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"151.2094\",\"latitude\":\"-33.86\",\"physicalLocation\":\"New + South Wales\",\"pairedRegion\":[{\"name\":\"australiasoutheast\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia\",\"name\":\"southeastasia\",\"displayName\":\"Southeast + Asia\",\"regionalDisplayName\":\"(Asia Pacific) Southeast Asia\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"103.833\",\"latitude\":\"1.283\",\"physicalLocation\":\"Singapore\",\"pairedRegion\":[{\"name\":\"eastasia\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope\",\"name\":\"northeurope\",\"displayName\":\"North + Europe\",\"regionalDisplayName\":\"(Europe) North Europe\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"-6.2597\",\"latitude\":\"53.3478\",\"physicalLocation\":\"Ireland\",\"pairedRegion\":[{\"name\":\"westeurope\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/swedencentral\",\"name\":\"swedencentral\",\"displayName\":\"Sweden + Central\",\"regionalDisplayName\":\"(Europe) Sweden Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"17.14127\",\"latitude\":\"60.67488\",\"physicalLocation\":\"G\xE4vle\",\"pairedRegion\":[{\"name\":\"swedensouth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/swedensouth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth\",\"name\":\"uksouth\",\"displayName\":\"UK + South\",\"regionalDisplayName\":\"(Europe) UK South\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"-0.799\",\"latitude\":\"50.941\",\"physicalLocation\":\"London\",\"pairedRegion\":[{\"name\":\"ukwest\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope\",\"name\":\"westeurope\",\"displayName\":\"West + Europe\",\"regionalDisplayName\":\"(Europe) West Europe\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"4.9\",\"latitude\":\"52.3667\",\"physicalLocation\":\"Netherlands\",\"pairedRegion\":[{\"name\":\"northeurope\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus\",\"name\":\"centralus\",\"displayName\":\"Central + US\",\"regionalDisplayName\":\"(US) Central US\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"US\",\"longitude\":\"-93.6208\",\"latitude\":\"41.5908\",\"physicalLocation\":\"Iowa\",\"pairedRegion\":[{\"name\":\"eastus2\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricanorth\",\"name\":\"southafricanorth\",\"displayName\":\"South + Africa North\",\"regionalDisplayName\":\"(Africa) South Africa North\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Africa\",\"longitude\":\"28.218370\",\"latitude\":\"-25.731340\",\"physicalLocation\":\"Johannesburg\",\"pairedRegion\":[{\"name\":\"southafricawest\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricawest\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia\",\"name\":\"centralindia\",\"displayName\":\"Central + India\",\"regionalDisplayName\":\"(Asia Pacific) Central India\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"73.9197\",\"latitude\":\"18.5822\",\"physicalLocation\":\"Pune\",\"pairedRegion\":[{\"name\":\"southindia\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia\",\"name\":\"eastasia\",\"displayName\":\"East + Asia\",\"regionalDisplayName\":\"(Asia Pacific) East Asia\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"114.188\",\"latitude\":\"22.267\",\"physicalLocation\":\"Hong + Kong\",\"pairedRegion\":[{\"name\":\"southeastasia\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast\",\"name\":\"japaneast\",\"displayName\":\"Japan + East\",\"regionalDisplayName\":\"(Asia Pacific) Japan East\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"139.77\",\"latitude\":\"35.68\",\"physicalLocation\":\"Tokyo, + Saitama\",\"pairedRegion\":[{\"name\":\"japanwest\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral\",\"name\":\"koreacentral\",\"displayName\":\"Korea + Central\",\"regionalDisplayName\":\"(Asia Pacific) Korea Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"126.9780\",\"latitude\":\"37.5665\",\"physicalLocation\":\"Seoul\",\"pairedRegion\":[{\"name\":\"koreasouth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral\",\"name\":\"canadacentral\",\"displayName\":\"Canada + Central\",\"regionalDisplayName\":\"(Canada) Canada Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Canada\",\"longitude\":\"-79.383\",\"latitude\":\"43.653\",\"physicalLocation\":\"Toronto\",\"pairedRegion\":[{\"name\":\"canadaeast\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral\",\"name\":\"francecentral\",\"displayName\":\"France + Central\",\"regionalDisplayName\":\"(Europe) France Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"2.3730\",\"latitude\":\"46.3772\",\"physicalLocation\":\"Paris\",\"pairedRegion\":[{\"name\":\"francesouth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanywestcentral\",\"name\":\"germanywestcentral\",\"displayName\":\"Germany + West Central\",\"regionalDisplayName\":\"(Europe) Germany West Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"8.682127\",\"latitude\":\"50.110924\",\"physicalLocation\":\"Frankfurt\",\"pairedRegion\":[{\"name\":\"germanynorth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanynorth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwayeast\",\"name\":\"norwayeast\",\"displayName\":\"Norway + East\",\"regionalDisplayName\":\"(Europe) Norway East\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"10.752245\",\"latitude\":\"59.913868\",\"physicalLocation\":\"Norway\",\"pairedRegion\":[{\"name\":\"norwaywest\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwaywest\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandnorth\",\"name\":\"switzerlandnorth\",\"displayName\":\"Switzerland + North\",\"regionalDisplayName\":\"(Europe) Switzerland North\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"Europe\",\"longitude\":\"8.564572\",\"latitude\":\"47.451542\",\"physicalLocation\":\"Zurich\",\"pairedRegion\":[{\"name\":\"switzerlandwest\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandwest\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth\",\"name\":\"brazilsouth\",\"displayName\":\"Brazil + South\",\"regionalDisplayName\":\"(South America) Brazil South\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"South + America\",\"longitude\":\"-46.633\",\"latitude\":\"-23.55\",\"physicalLocation\":\"Sao + Paulo State\",\"pairedRegion\":[{\"name\":\"southcentralus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2euap\",\"name\":\"eastus2euap\",\"displayName\":\"East + US 2 EUAP\",\"regionalDisplayName\":\"(US) East US 2 EUAP\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Recommended\",\"geographyGroup\":\"US\",\"longitude\":\"-78.3889\",\"latitude\":\"36.6681\",\"pairedRegion\":[{\"name\":\"centraluseuap\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centraluseuap\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralusstage\",\"name\":\"centralusstage\",\"displayName\":\"Central + US (Stage)\",\"regionalDisplayName\":\"(US) Central US (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastusstage\",\"name\":\"eastusstage\",\"displayName\":\"East + US (Stage)\",\"regionalDisplayName\":\"(US) East US (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2stage\",\"name\":\"eastus2stage\",\"displayName\":\"East + US 2 (Stage)\",\"regionalDisplayName\":\"(US) East US 2 (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralusstage\",\"name\":\"northcentralusstage\",\"displayName\":\"North + Central US (Stage)\",\"regionalDisplayName\":\"(US) North Central US (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralusstage\",\"name\":\"southcentralusstage\",\"displayName\":\"South + Central US (Stage)\",\"regionalDisplayName\":\"(US) South Central US (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westusstage\",\"name\":\"westusstage\",\"displayName\":\"West + US (Stage)\",\"regionalDisplayName\":\"(US) West US (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2stage\",\"name\":\"westus2stage\",\"displayName\":\"West + US 2 (Stage)\",\"regionalDisplayName\":\"(US) West US 2 (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/asia\",\"name\":\"asia\",\"displayName\":\"Asia\",\"regionalDisplayName\":\"Asia\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/asiapacific\",\"name\":\"asiapacific\",\"displayName\":\"Asia + Pacific\",\"regionalDisplayName\":\"Asia Pacific\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australia\",\"name\":\"australia\",\"displayName\":\"Australia\",\"regionalDisplayName\":\"Australia\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazil\",\"name\":\"brazil\",\"displayName\":\"Brazil\",\"regionalDisplayName\":\"Brazil\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canada\",\"name\":\"canada\",\"displayName\":\"Canada\",\"regionalDisplayName\":\"Canada\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/europe\",\"name\":\"europe\",\"displayName\":\"Europe\",\"regionalDisplayName\":\"Europe\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/france\",\"name\":\"france\",\"displayName\":\"France\",\"regionalDisplayName\":\"France\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germany\",\"name\":\"germany\",\"displayName\":\"Germany\",\"regionalDisplayName\":\"Germany\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/global\",\"name\":\"global\",\"displayName\":\"Global\",\"regionalDisplayName\":\"Global\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/india\",\"name\":\"india\",\"displayName\":\"India\",\"regionalDisplayName\":\"India\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japan\",\"name\":\"japan\",\"displayName\":\"Japan\",\"regionalDisplayName\":\"Japan\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/korea\",\"name\":\"korea\",\"displayName\":\"Korea\",\"regionalDisplayName\":\"Korea\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norway\",\"name\":\"norway\",\"displayName\":\"Norway\",\"regionalDisplayName\":\"Norway\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafrica\",\"name\":\"southafrica\",\"displayName\":\"South + Africa\",\"regionalDisplayName\":\"South Africa\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerland\",\"name\":\"switzerland\",\"displayName\":\"Switzerland\",\"regionalDisplayName\":\"Switzerland\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uae\",\"name\":\"uae\",\"displayName\":\"United + Arab Emirates\",\"regionalDisplayName\":\"United Arab Emirates\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uk\",\"name\":\"uk\",\"displayName\":\"United + Kingdom\",\"regionalDisplayName\":\"United Kingdom\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/unitedstates\",\"name\":\"unitedstates\",\"displayName\":\"United + States\",\"regionalDisplayName\":\"United States\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/unitedstateseuap\",\"name\":\"unitedstateseuap\",\"displayName\":\"United + States EUAP\",\"regionalDisplayName\":\"United States EUAP\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasiastage\",\"name\":\"eastasiastage\",\"displayName\":\"East + Asia (Stage)\",\"regionalDisplayName\":\"(Asia Pacific) East Asia (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasiastage\",\"name\":\"southeastasiastage\",\"displayName\":\"Southeast + Asia (Stage)\",\"regionalDisplayName\":\"(Asia Pacific) Southeast Asia (Stage)\",\"metadata\":{\"regionType\":\"Logical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus\",\"name\":\"northcentralus\",\"displayName\":\"North + Central US\",\"regionalDisplayName\":\"(US) North Central US\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\",\"longitude\":\"-87.6278\",\"latitude\":\"41.8819\",\"physicalLocation\":\"Illinois\",\"pairedRegion\":[{\"name\":\"southcentralus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus\",\"name\":\"westus\",\"displayName\":\"West + US\",\"regionalDisplayName\":\"(US) West US\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\",\"longitude\":\"-122.417\",\"latitude\":\"37.783\",\"physicalLocation\":\"California\",\"pairedRegion\":[{\"name\":\"eastus\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/jioindiawest\",\"name\":\"jioindiawest\",\"displayName\":\"Jio + India West\",\"regionalDisplayName\":\"(Asia Pacific) Jio India West\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"70.05773\",\"latitude\":\"22.470701\",\"physicalLocation\":\"Jamnagar\",\"pairedRegion\":[{\"name\":\"jioindiacentral\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/jioindiacentral\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaenorth\",\"name\":\"uaenorth\",\"displayName\":\"UAE + North\",\"regionalDisplayName\":\"(Middle East) UAE North\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Middle + East\",\"longitude\":\"55.316666\",\"latitude\":\"25.266666\",\"physicalLocation\":\"Dubai\",\"pairedRegion\":[{\"name\":\"uaecentral\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaecentral\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centraluseuap\",\"name\":\"centraluseuap\",\"displayName\":\"Central + US EUAP\",\"regionalDisplayName\":\"(US) Central US EUAP\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\",\"longitude\":\"-93.6208\",\"latitude\":\"41.5908\",\"pairedRegion\":[{\"name\":\"eastus2euap\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2euap\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus\",\"name\":\"westcentralus\",\"displayName\":\"West + Central US\",\"regionalDisplayName\":\"(US) West Central US\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"US\",\"longitude\":\"-110.234\",\"latitude\":\"40.890\",\"physicalLocation\":\"Wyoming\",\"pairedRegion\":[{\"name\":\"westus2\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricawest\",\"name\":\"southafricawest\",\"displayName\":\"South + Africa West\",\"regionalDisplayName\":\"(Africa) South Africa West\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Africa\",\"longitude\":\"18.843266\",\"latitude\":\"-34.075691\",\"physicalLocation\":\"Cape + Town\",\"pairedRegion\":[{\"name\":\"southafricanorth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricanorth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral\",\"name\":\"australiacentral\",\"displayName\":\"Australia + Central\",\"regionalDisplayName\":\"(Asia Pacific) Australia Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"149.1244\",\"latitude\":\"-35.3075\",\"physicalLocation\":\"Canberra\",\"pairedRegion\":[{\"name\":\"australiacentral\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2\",\"name\":\"australiacentral2\",\"displayName\":\"Australia + Central 2\",\"regionalDisplayName\":\"(Asia Pacific) Australia Central 2\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"149.1244\",\"latitude\":\"-35.3075\",\"physicalLocation\":\"Canberra\",\"pairedRegion\":[{\"name\":\"australiacentral2\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast\",\"name\":\"australiasoutheast\",\"displayName\":\"Australia + Southeast\",\"regionalDisplayName\":\"(Asia Pacific) Australia Southeast\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"144.9631\",\"latitude\":\"-37.8136\",\"physicalLocation\":\"Victoria\",\"pairedRegion\":[{\"name\":\"australiaeast\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest\",\"name\":\"japanwest\",\"displayName\":\"Japan + West\",\"regionalDisplayName\":\"(Asia Pacific) Japan West\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"135.5022\",\"latitude\":\"34.6939\",\"physicalLocation\":\"Osaka\",\"pairedRegion\":[{\"name\":\"japaneast\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/jioindiacentral\",\"name\":\"jioindiacentral\",\"displayName\":\"Jio + India Central\",\"regionalDisplayName\":\"(Asia Pacific) Jio India Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"79.08886\",\"latitude\":\"21.146633\",\"physicalLocation\":\"Nagpur\",\"pairedRegion\":[{\"name\":\"jioindiawest\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/jioindiawest\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth\",\"name\":\"koreasouth\",\"displayName\":\"Korea + South\",\"regionalDisplayName\":\"(Asia Pacific) Korea South\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"129.0756\",\"latitude\":\"35.1796\",\"physicalLocation\":\"Busan\",\"pairedRegion\":[{\"name\":\"koreacentral\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia\",\"name\":\"southindia\",\"displayName\":\"South + India\",\"regionalDisplayName\":\"(Asia Pacific) South India\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"80.1636\",\"latitude\":\"12.9822\",\"physicalLocation\":\"Chennai\",\"pairedRegion\":[{\"name\":\"centralindia\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia\",\"name\":\"westindia\",\"displayName\":\"West + India\",\"regionalDisplayName\":\"(Asia Pacific) West India\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Asia + Pacific\",\"longitude\":\"72.868\",\"latitude\":\"19.088\",\"physicalLocation\":\"Mumbai\",\"pairedRegion\":[{\"name\":\"southindia\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast\",\"name\":\"canadaeast\",\"displayName\":\"Canada + East\",\"regionalDisplayName\":\"(Canada) Canada East\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Canada\",\"longitude\":\"-71.217\",\"latitude\":\"46.817\",\"physicalLocation\":\"Quebec\",\"pairedRegion\":[{\"name\":\"canadacentral\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth\",\"name\":\"francesouth\",\"displayName\":\"France + South\",\"regionalDisplayName\":\"(Europe) France South\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Europe\",\"longitude\":\"2.1972\",\"latitude\":\"43.8345\",\"physicalLocation\":\"Marseille\",\"pairedRegion\":[{\"name\":\"francecentral\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanynorth\",\"name\":\"germanynorth\",\"displayName\":\"Germany + North\",\"regionalDisplayName\":\"(Europe) Germany North\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Europe\",\"longitude\":\"8.806422\",\"latitude\":\"53.073635\",\"physicalLocation\":\"Berlin\",\"pairedRegion\":[{\"name\":\"germanywestcentral\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanywestcentral\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwaywest\",\"name\":\"norwaywest\",\"displayName\":\"Norway + West\",\"regionalDisplayName\":\"(Europe) Norway West\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Europe\",\"longitude\":\"5.733107\",\"latitude\":\"58.969975\",\"physicalLocation\":\"Norway\",\"pairedRegion\":[{\"name\":\"norwayeast\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwayeast\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandwest\",\"name\":\"switzerlandwest\",\"displayName\":\"Switzerland + West\",\"regionalDisplayName\":\"(Europe) Switzerland West\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Europe\",\"longitude\":\"6.143158\",\"latitude\":\"46.204391\",\"physicalLocation\":\"Geneva\",\"pairedRegion\":[{\"name\":\"switzerlandnorth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandnorth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest\",\"name\":\"ukwest\",\"displayName\":\"UK + West\",\"regionalDisplayName\":\"(Europe) UK West\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Europe\",\"longitude\":\"-3.084\",\"latitude\":\"53.427\",\"physicalLocation\":\"Cardiff\",\"pairedRegion\":[{\"name\":\"uksouth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaecentral\",\"name\":\"uaecentral\",\"displayName\":\"UAE + Central\",\"regionalDisplayName\":\"(Middle East) UAE Central\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"Middle + East\",\"longitude\":\"54.366669\",\"latitude\":\"24.466667\",\"physicalLocation\":\"Abu + Dhabi\",\"pairedRegion\":[{\"name\":\"uaenorth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaenorth\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsoutheast\",\"name\":\"brazilsoutheast\",\"displayName\":\"Brazil + Southeast\",\"regionalDisplayName\":\"(South America) Brazil Southeast\",\"metadata\":{\"regionType\":\"Physical\",\"regionCategory\":\"Other\",\"geographyGroup\":\"South + America\",\"longitude\":\"-43.2075\",\"latitude\":\"-22.90278\",\"physicalLocation\":\"Rio\",\"pairedRegion\":[{\"name\":\"brazilsouth\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth\"}]}}]}" + headers: + cache-control: + - no-cache + content-length: + - '28764' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:33:04 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "westus", "sku": {"name": "EnterpriseFlash_F300"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + Content-Length: + - '63' + Content-Type: + - application/json + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"West US\",\r\n \"name\": \"clitest-cache32-000002\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": null,\r\n + \ \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n \"capacity\": + 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": \"1.2\",\r\n + \ \"hostName\": \"clitest-cache32-000002.westus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Creating\",\r\n \"resourceState\": \"Creating\"\r\n + \ }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '594' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:33:14 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 201 + message: Created +- request: + body: '{"properties": {"clientProtocol": "Encrypted", "port": 10000, "clusteringPolicy": + "EnterpriseCluster", "evictionPolicy": "NoEviction", "geoReplication": {"groupNickname": + "groupName", "linkedDatabases": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default"}, + {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default"}]}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + Content-Length: + - '600' + Content-Type: + - application/json + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default?api-version=2022-01-01 + response: + body: + string: "{\r\n \"name\": \"default\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n \"provisioningState\": + \"Creating\",\r\n \"resourceState\": \"Creating\",\r\n \"clusteringPolicy\": + \"EnterpriseCluster\",\r\n \"evictionPolicy\": \"NoEviction\",\r\n \"geoReplication\": + {\r\n \"linkedDatabases\": [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default\",\r\n + \ \"state\": \"Linking\"\r\n },\r\n {\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default\",\r\n + \ \"state\": \"Linking\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '1138' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:33:25 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:33:44 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:33:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:34:15 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:34:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:34:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:34:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:35:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:35:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:35:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:35:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:36:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:36:27 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:36:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:36:58 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:37:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:37:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:37:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:37:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"InProgress","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:33:14.1400335+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:38:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Pending","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"0001-01-01T00:00:00+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '309' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:38:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/407e0c33-70ac-4567-8505-f13bae2e18a7","name":"407e0c33-70ac-4567-8505-f13bae2e18a7","status":"Succeeded","startTime":"2022-05-31T13:33:13.5526292+00:00","endTime":"2022-05-31T13:38:34.9465865+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '319' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:38:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"West US\",\r\n \"name\": \"clitest-cache32-000002\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {},\r\n \"sku\": + {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n \"capacity\": 3\r\n },\r\n + \ \"properties\": {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"hostName\": + \"clitest-cache32-000002.westus.redisenterprise.cache.azure.net\",\r\n \"provisioningState\": + \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": + []\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '631' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:38:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"InProgress","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"2022-05-31T13:38:59.4912783+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:38:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"InProgress","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"2022-05-31T13:38:59.4912783+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:39:29 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"InProgress","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"2022-05-31T13:38:59.4912783+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:40:01 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/c180294f-4e65-4ff7-8b6b-81c6e00afd01","name":"c180294f-4e65-4ff7-8b6b-81c6e00afd01","status":"Succeeded","startTime":"2022-05-31T13:33:25.4863543+00:00","endTime":"2022-05-31T13:40:01.7233238+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '319' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:40:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise create + Connection: + - keep-alive + ParameterSetName: + - --location --cluster-name --sku --client-protocol --clustering-policy --eviction-policy + --group-nickname --linked-databases --linked-databases --port --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default?api-version=2022-01-01 + response: + body: + string: '{"name":"default","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default","type":"Microsoft.Cache/redisEnterprise/databases","properties":{"clientProtocol":"Encrypted","port":10000,"provisioningState":"Succeeded","resourceState":"Running","clusteringPolicy":"EnterpriseCluster","evictionPolicy":"NoEviction","geoReplication":{"linkedDatabases":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default","state":"Linked"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default","state":"Linked"}],"groupNickname":"groupName"}}}' + headers: + cache-control: + - no-cache + content-length: + - '937' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:40:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: '{"ids": ["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/databases/default"]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database force-unlink + Connection: + - keep-alive + Content-Length: + - '198' + Content-Type: + - application/json + ParameterSetName: + - --cluster-name --unlink-ids --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default/forceUnlink?api-version=2022-01-01 + response: + body: + string: "{\r\n \"StatusCode\": 202\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/6a8f424f-157f-4a7e-a3f3-7acb36cd3c01?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '25' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:40:36 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default/operationresults/6a8f424f-157f-4a7e-a3f3-7acb36cd3c01?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise database force-unlink + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --unlink-ids --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/6a8f424f-157f-4a7e-a3f3-7acb36cd3c01?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/6a8f424f-157f-4a7e-a3f3-7acb36cd3c01","name":"6a8f424f-157f-4a7e-a3f3-7acb36cd3c01","status":"Succeeded","startTime":"2022-05-31T13:40:36.1947226+00:00","endTime":"2022-05-31T13:40:50.0438718+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '319' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:41:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise show + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"West US\",\r\n \"name\": \"clitest-cache32-000002\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {},\r\n \"sku\": + {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n \"capacity\": 3\r\n },\r\n + \ \"properties\": {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"hostName\": + \"clitest-cache32-000002.westus.redisenterprise.cache.azure.net\",\r\n \"provisioningState\": + \"Succeeded\",\r\n \"resourceState\": \"Running\",\r\n \"privateEndpointConnections\": + []\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '631' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:41:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise show + Connection: + - keep-alive + ParameterSetName: + - --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases?api-version=2022-01-01 + response: + body: + string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"default\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise/databases\",\r\n \"properties\": + {\r\n \"clientProtocol\": \"Encrypted\",\r\n \"port\": 10000,\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceState\": + \"Running\",\r\n \"clusteringPolicy\": \"EnterpriseCluster\",\r\n \"evictionPolicy\": + \"NoEviction\",\r\n \"geoReplication\": {\r\n \"linkedDatabases\": + [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/databases/default\",\r\n + \ \"state\": \"Linked\"\r\n }\r\n ],\r\n \"groupNickname\": + \"groupName\"\r\n }\r\n }\r\n }\r\n ]\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '991' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:41:10 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"East US\",\r\n \"name\": \"clitest-cache31-000001\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {\r\n \"tag1\": + \"value1\"\r\n },\r\n \"sku\": {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n + \ \"capacity\": 3\r\n },\r\n \"properties\": {\r\n \"minimumTlsVersion\": + \"1.2\",\r\n \"hostName\": \"clitest-cache31-000001.eastus.redisenterprise.cache.azure.net\",\r\n + \ \"provisioningState\": \"Deleting\",\r\n \"resourceState\": \"Deleting\",\r\n + \ \"privateEndpointConnections\": []\r\n }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '657' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:41:14 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg31-000003/providers/Microsoft.Cache/redisEnterprise/clitest-cache31-000001/operationresults/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:41:45 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:42:15 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:42:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:43:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:43:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:44:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:44:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:45:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:45:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:46:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:46:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:47:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:47:51 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:48:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:48:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:49:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:49:52 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:50:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:50:53 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:51:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"InProgress","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:41:16.5784067+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:51:54 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East%20US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/East + US/operationsStatus/e0a53ad2-99af-4eeb-8ab4-c87c834d2524","name":"e0a53ad2-99af-4eeb-8ab4-c87c834d2524","status":"Succeeded","startTime":"2022-05-31T13:41:15.4027559+00:00","endTime":"2022-05-31T13:51:54.7569752+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '319' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:52:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002?api-version=2022-01-01 + response: + body: + string: "{\r\n \"location\": \"West US\",\r\n \"name\": \"clitest-cache32-000002\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002\",\r\n + \ \"type\": \"Microsoft.Cache/redisEnterprise\",\r\n \"tags\": {},\r\n \"sku\": + {\r\n \"name\": \"EnterpriseFlash_F300\",\r\n \"capacity\": 3\r\n },\r\n + \ \"properties\": {\r\n \"minimumTlsVersion\": \"1.2\",\r\n \"hostName\": + \"clitest-cache32-000002.westus.redisenterprise.cache.azure.net\",\r\n \"provisioningState\": + \"Deleting\",\r\n \"resourceState\": \"Deleting\",\r\n \"privateEndpointConnections\": + []\r\n }\r\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + cache-control: + - no-cache + content-length: + - '631' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:52:30 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest-redisenterprise-rg32-000004/providers/Microsoft.Cache/redisEnterprise/clitest-cache32-000002/operationresults/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:53:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:53:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:54:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:54:31 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:55:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:55:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:56:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:56:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:57:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:57:33 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:58:03 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:58:35 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:59:05 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 13:59:35 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:00:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:00:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:01:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:01:37 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:02:07 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:02:38 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"InProgress","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T13:52:32.3413386+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '320' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:03:09 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - redisenterprise delete + Connection: + - keep-alive + ParameterSetName: + - -y --cluster-name --resource-group + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-redisenterprise/2.0.0 Python/3.10.4 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West%20US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb?api-version=2022-01-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Cache/locations/West + US/operationsStatus/5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","name":"5edde1f3-e71c-4a73-bdfe-31c4026ab2eb","status":"Succeeded","startTime":"2022-05-31T13:52:29.9817475+00:00","endTime":"2022-05-31T14:03:21.7004921+00:00"}' + headers: + cache-control: + - no-cache + content-length: + - '319' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 31 May 2022 14:03:38 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - a3b3f693-6540-4e83-bb94-e0977b0ecae3 + status: + code: 200 + message: OK +version: 1 diff --git a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/test_redisenterprise_scenario.py b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/test_redisenterprise_scenario.py index cd715b94e69..ca37ba9f344 100644 --- a/src/redisenterprise/azext_redisenterprise/manual/tests/latest/test_redisenterprise_scenario.py +++ b/src/redisenterprise/azext_redisenterprise/manual/tests/latest/test_redisenterprise_scenario.py @@ -16,6 +16,8 @@ from .example_steps import step_delete from .example_steps import step_database_create from .example_steps import step_database_delete +from .example_steps import step_database_force_unlink + from .. import ( raise_if, calc_coverage @@ -25,8 +27,8 @@ # Testcase: scenario1 def call_scenario1(test, rg): from ....tests.latest import test_redisenterprise_scenario as g - g.setup_scenario1(test, rg) - step_create(test, rg, checks=[ + g.setup_scenario1(test) + step_create(test, checks=[ test.check("name", "default"), test.check("resourceGroup", "{rg}"), test.check("clientProtocol", "Encrypted"), @@ -38,7 +40,7 @@ def call_scenario1(test, rg): test.check("resourceState", "Running"), test.check("type", "Microsoft.Cache/redisEnterprise/databases") ]) - step_show(test, rg, checks=[ + step_show(test, checks=[ test.check("name", "{cluster}"), test.check("resourceGroup", "{rg}"), test.check("location", "East US"), @@ -61,11 +63,11 @@ def call_scenario1(test, rg): test.check("databases[0].resourceState", "Running"), test.check("databases[0].type", "Microsoft.Cache/redisEnterprise/databases") ]) - g.step_list(test, rg, checks=[]) - g.step_list2(test, rg, checks=[ + g.step_list(test, checks=[]) + g.step_list2(test, checks=[ test.check("length(@)", 1) ]) - step_database_show(test, rg, checks=[ + step_database_show(test, checks=[ test.check("name", "default"), test.check("resourceGroup", "{rg}"), test.check("clientProtocol", "Encrypted"), @@ -76,13 +78,13 @@ def call_scenario1(test, rg): test.check("resourceState", "Running"), test.check("type", "Microsoft.Cache/redisEnterprise/databases") ]) - step_database_list(test, rg, checks=[ + step_database_list(test, checks=[ test.check("length(@)", 1) ]) - step_database_list_keys(test, rg, checks=[]) - step_database_regenerate_key(test, rg, checks=[]) - step_delete(test, rg, checks=[]) - g.cleanup_scenario1(test, rg) + step_database_list_keys(test, checks=[]) + step_database_regenerate_key(test, checks=[]) + step_delete(test, checks=[]) + g.cleanup_scenario1(test) # Test class for scenario1 @@ -104,10 +106,10 @@ def test_redisenterprise_scenario1(self, rg): # Testcase: scenario2 -def call_scenario2(test, rg): +def call_scenario2(test): from ....tests.latest import test_redisenterprise_scenario as g - g.setup_scenario2(test, rg) - step_create(test, rg, checks=[ + g.setup_scenario2(test) + step_create(test, checks=[ test.check("name", "{cluster}"), test.check("resourceGroup", "{rg}"), test.check("location", "East US"), @@ -120,7 +122,7 @@ def call_scenario2(test, rg): test.check("resourceState", "Running"), test.check("type", "Microsoft.Cache/redisEnterprise") ]) - step_show(test, rg, checks=[ + step_show(test,checks=[ test.check("name", "{cluster}"), test.check("resourceGroup", "{rg}"), test.check("location", "East US"), @@ -134,11 +136,11 @@ def call_scenario2(test, rg): test.check("type", "Microsoft.Cache/redisEnterprise"), test.check("length(databases)", 0), ]) - g.step_list(test, rg, checks=[]) - g.step_list2(test, rg, checks=[ + g.step_list(test, checks=[]) + g.step_list2(test, checks=[ test.check("length(@)", 1) ]) - step_database_create(test, rg, checks=[ + step_database_create(test, checks=[ test.check("name", "default"), test.check("resourceGroup", "{rg}"), test.check("clientProtocol", "Plaintext"), @@ -149,7 +151,7 @@ def call_scenario2(test, rg): test.check("resourceState", "Running"), test.check("type", "Microsoft.Cache/redisEnterprise/databases") ]) - step_database_show(test, rg, checks=[ + step_database_show(test, checks=[ test.check("name", "default"), test.check("resourceGroup", "{rg}"), test.check("clientProtocol", "Plaintext"), @@ -160,14 +162,14 @@ def call_scenario2(test, rg): test.check("resourceState", "Running"), test.check("type", "Microsoft.Cache/redisEnterprise/databases") ]) - step_database_list(test, rg, checks=[ + step_database_list(test, checks=[ test.check("length(@)", 1) ]) - step_database_list_keys(test, rg, checks=[]) - step_database_regenerate_key(test, rg, checks=[]) - step_database_delete(test, rg, checks=[]) - step_delete(test, rg, checks=[]) - g.cleanup_scenario2(test, rg) + step_database_list_keys(test, checks=[]) + step_database_regenerate_key(test, checks=[]) + step_database_delete(test, checks=[]) + step_delete(test, checks=[]) + g.cleanup_scenario2(test) # Test class for scenario2 @@ -183,7 +185,72 @@ def __init__(self, *args, **kwargs): @ResourceGroupPreparer(name_prefix='clitest-redisenterprise-rg2-', key='rg', parameter_name='rg', location='eastus', random_name_length=34) - def test_redisenterprise_scenario2(self, rg): - call_scenario2(self, rg) + def test_redisenterprise_scenario2(self): + call_scenario2(self) calc_coverage(__file__) raise_if() + +# Testcase: scenario3. Testing active geo-replication scenarios +def call_scenario3(test): + from ....tests.latest import test_redisenterprise_scenario as g + # Create first georeplicated cache + step_create(test, checks=[ + test.check("name", "{cluster31}"), + test.check("resourceGroup", "{rg31}"), + test.check("sku.name", "EnterpriseFlash_F300"), + test.check("provisioningState", "Succeeded"), + test.check("resourceState", "Running"), + test.check("type", "Microsoft.Cache/redisEnterprise"), + ], cache_num=1) + step_database_create(test, checks=[ + test.check("clientProtocol", "Encrypted"), + test.check("evictionPolicy", "NoEviction"), + test.check("clusteringPolicy", "EnterpriseCluster"), + test.check("geoReplication.groupNickname", "groupName"), + test.check("geoReplication.linkedDatabases[0].id", "/subscriptions/{subscription}/resourceGroups/{rg31}/providers/Microsoft.Cache/redisEnterprise/{cluster31}/databases/{database}"), + ]) + # Create second georeplicated cache + step_create(test, checks=[ + test.check("name", "default"), + test.check("resourceGroup", "{rg32}"), + test.check("provisioningState", "Succeeded"), + test.check("resourceState", "Running"), + test.check("type", "Microsoft.Cache/redisEnterprise/databases"), + test.check("clientProtocol", "Encrypted"), + test.check("evictionPolicy", "NoEviction"), + test.check("clusteringPolicy", "EnterpriseCluster"), + test.check("geoReplication.groupNickname", "groupName"), + test.check("geoReplication.linkedDatabases[0].id", "/subscriptions/{subscription}/resourceGroups/{rg31}/providers/Microsoft.Cache/redisEnterprise/{cluster31}/databases/{database}"), + test.check("geoReplication.linkedDatabases[1].id", "/subscriptions/{subscription}/resourceGroups/{rg32}/providers/Microsoft.Cache/redisEnterprise/{cluster32}/databases/{database}"), + ], cache_num=2) + # Force unlink database 1 from active geo-replication group + step_database_force_unlink(test, checks=[]) + # Check if worked from database 2 + step_show(test, checks=[ + test.check("length(databases[0].geoReplication.linkedDatabases)", "1") + ]) + # placeholders for cleanup + step_delete(test, checks=[]) + + +# Test class for scenario3 +class Redisenterprisescenario3Test(ScenarioTest): + + def __init__(self, *args, **kwargs): + super(Redisenterprisescenario3Test, self).__init__(*args, **kwargs) + + self.kwargs.update({ + 'subscription': self.get_subscription_id(), + 'cluster31': self.create_random_name(prefix='clitest-cache31-', length=21), + 'cluster32': self.create_random_name(prefix='clitest-cache32-', length=21), + 'geo-replication': True, + 'database': 'default', + }) + @ResourceGroupPreparer(name_prefix='clitest-redisenterprise-rg31-', key='rg31', parameter_name='rg31', + location='eastus', random_name_length=34) + @ResourceGroupPreparer(name_prefix='clitest-redisenterprise-rg32-', key='rg32', parameter_name='rg32', + location='westus', random_name_length=34) + def test_redisenterprise_scenario3(self): + call_scenario3(self) + calc_coverage(__file__) + raise_if() \ No newline at end of file diff --git a/src/redisenterprise/azext_redisenterprise/tests/latest/example_steps.py b/src/redisenterprise/azext_redisenterprise/tests/latest/example_steps.py index ba09f155670..46a027d1946 100644 --- a/src/redisenterprise/azext_redisenterprise/tests/latest/example_steps.py +++ b/src/redisenterprise/azext_redisenterprise/tests/latest/example_steps.py @@ -7,205 +7,238 @@ # Changes may cause incorrect behavior and will be lost if the code is # regenerated. # -------------------------------------------------------------------------- -# pylint: disable=unused-argument from .. import try_manual -# EXAMPLE: /Databases/put/RedisEnterpriseDatabasesCreate +# EXAMPLE: /RedisEnterprise/put/RedisEnterpriseCreate @try_manual -def step_database_create(test, rg, checks=None): +def step_create(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database create ' - '--cluster-name "cache1" ' - '--client-protocol "Encrypted" ' - '--clustering-policy "EnterpriseCluster" ' - '--eviction-policy "AllKeysLRU" ' - '--modules name="RedisBloom" args="ERROR_RATE 0.00 INITIAL_SIZE 400" ' - '--modules name="RedisTimeSeries" args="RETENTION_POLICY 20" ' - '--modules name="RediSearch" ' - '--persistence aof-enabled=true aof-frequency="1s" ' - '--port 10000 ' + test.cmd('az redisenterprise create ' + '--cluster-name "{myRedisEnterprise}" ' + '--location "West US" ' + '--minimum-tls-version "1.2" ' + '--sku "EnterpriseFlash_F300" ' + '--capacity 3 ' + '--tags tag1="value1" ' + '--zones "1" "2" "3" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/get/RedisEnterpriseDatabasesGet +# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseGet @try_manual -def step_database_show(test, rg, checks=None): +def step_show(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database show ' - '--cluster-name "cache1" ' + test.cmd('az redisenterprise show ' + '--cluster-name "{myRedisEnterprise}" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/get/RedisEnterpriseDatabasesListByCluster +# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseList @try_manual -def step_database_list(test, rg, checks=None): +def step_list(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database list ' - '--cluster-name "cache1" ' + test.cmd('az redisenterprise list ' + '-g ""', + checks=checks) + + +# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseListByResourceGroup +@try_manual +def step_list2(test, checks=None): + if checks is None: + checks = [] + test.cmd('az redisenterprise list ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/patch/RedisEnterpriseDatabasesUpdate +# EXAMPLE: /RedisEnterprise/patch/RedisEnterpriseUpdate @try_manual -def step_database_update(test, rg, checks=None): +def step_update(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database update ' - '--cluster-name "cache1" ' + test.cmd('az redisenterprise update ' + '--cluster-name "{myRedisEnterprise}" ' + '--minimum-tls-version "1.2" ' + '--sku "EnterpriseFlash_F300" ' + '--capacity 9 ' + '--tags tag1="value1" ' + '--resource-group "{rg}"', + checks=checks) + + +# EXAMPLE: /Databases/put/RedisEnterpriseDatabasesCreate +@try_manual +def step_database_create(test, checks=None): + if checks is None: + checks = [] + test.cmd('az redisenterprise database create ' + '--cluster-name "{myRedisEnterprise}" ' '--client-protocol "Encrypted" ' + '--clustering-policy "EnterpriseCluster" ' '--eviction-policy "AllKeysLRU" ' - '--persistence rdb-enabled=true rdb-frequency="12h" ' + '--modules name="RedisBloom" args="ERROR_RATE 0.00 INITIAL_SIZE 400" ' + '--modules name="RedisTimeSeries" args="RETENTION_POLICY 20" ' + '--modules name="RediSearch" ' + '--persistence aof-enabled=true aof-frequency="1s" ' + '--port 10000 ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesExport +# EXAMPLE: /Databases/put/RedisEnterpriseDatabasesCreate With Active Geo Replication @try_manual -def step_database_export(test, rg, checks=None): +def step_database_create2(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database export ' - '--cluster-name "cache1" ' - '--sas-uri "https://contosostorage.blob.core.window.net/urlToBlobContainer?sasKeyParameters" ' + test.cmd('az redisenterprise database create ' + '--cluster-name "{myRedisEnterprise}" ' + '--client-protocol "Encrypted" ' + '--clustering-policy "EnterpriseCluster" ' + '--eviction-policy "NoEviction" ' + '--group-nickname "groupName" ' + '--linked-databases id="/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.Cache/red' + 'isEnterprise/{myRedisEnterprise}/databases/{myDatabas}" ' + '--linked-databases id="/subscriptions/{subscription_id}/resourceGroups/{rg_2}/providers/Microsoft.Cache/r' + 'edisEnterprise/{myRedisEnterprise2}/databases/{myDatabas}" ' + '--port 10000 ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesImport +# EXAMPLE: /Databases/get/RedisEnterpriseDatabasesGet @try_manual -def step_database_import(test, rg, checks=None): +def step_database_show(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database import ' - '--cluster-name "cache1" ' - '--sas-uri "https://contosostorage.blob.core.window.net/urltoBlobFile?sasKeyParameters" ' + test.cmd('az redisenterprise database show ' + '--cluster-name "{myRedisEnterprise}" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesListKeys +# EXAMPLE: /Databases/get/RedisEnterpriseDatabasesListByCluster @try_manual -def step_database_list_keys(test, rg, checks=None): +def step_database_list(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database list-keys ' - '--cluster-name "cache1" ' + test.cmd('az redisenterprise database list ' + '--cluster-name "{myRedisEnterprise}" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesRegenerateKey +# EXAMPLE: /Databases/patch/RedisEnterpriseDatabasesUpdate @try_manual -def step_database_regenerate_key(test, rg, checks=None): +def step_database_update(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database regenerate-key ' - '--cluster-name "cache1" ' - '--key-type "Primary" ' + test.cmd('az redisenterprise database update ' + '--cluster-name "{myRedisEnterprise}" ' + '--client-protocol "Encrypted" ' + '--eviction-policy "AllKeysLRU" ' + '--persistence rdb-enabled=true rdb-frequency="12h" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /Databases/delete/RedisEnterpriseDatabasesDelete +# EXAMPLE: /Databases/post/How to unlink a database during a regional outage @try_manual -def step_database_delete(test, rg, checks=None): +def step_database_force_unlink(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise database delete -y ' - '--cluster-name "cache1" ' + test.cmd('az redisenterprise database force-unlink ' + '--cluster-name "{myRedisEnterprise}" ' + '--unlink-ids "/subscriptions/{subscription_id}/resourceGroups/{rg_2}/providers/Microsoft.Cache/redisEnterprise/{' + 'myRedisEnterprise2}/databases/{myDatabas}" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /OperationsStatus/get/OperationsStatusGet +# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesExport @try_manual -def step_operation_status_show(test, rg, checks=None): +def step_database_export(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise operation-status show ' - '--operation-id "testoperationid" ' - '--location "West US"', + test.cmd('az redisenterprise database export ' + '--cluster-name "{myRedisEnterprise}" ' + '--sas-uri "https://contosostorage.blob.core.window.net/urlToBlobContainer?sasKeyParameters" ' + '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /RedisEnterprise/put/RedisEnterpriseCreate +# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesImport @try_manual -def step_create(test, rg, checks=None): +def step_database_import(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise create ' - '--cluster-name "cache1" ' - '--location "West US" ' - '--minimum-tls-version "1.2" ' - '--sku "EnterpriseFlash_F300" ' - '--capacity 3 ' - '--tags tag1="value1" ' - '--zones "1" "2" "3" ' + test.cmd('az redisenterprise database import ' + '--cluster-name "{myRedisEnterprise}" ' + '--sas-uris "https://contosostorage.blob.core.window.net/urltoBlobFile1?sasKeyParameters" ' + '"https://contosostorage.blob.core.window.net/urltoBlobFile2?sasKeyParameters" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseGet +# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesListKeys @try_manual -def step_show(test, rg, checks=None): +def step_database_list_keys(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise show ' - '--cluster-name "cache1" ' + test.cmd('az redisenterprise database list-keys ' + '--cluster-name "{myRedisEnterprise}" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseList +# EXAMPLE: /Databases/post/RedisEnterpriseDatabasesRegenerateKey @try_manual -def step_list(test, rg, checks=None): +def step_database_regenerate_key(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise list ' - '-g ""', + test.cmd('az redisenterprise database regenerate-key ' + '--cluster-name "{myRedisEnterprise}" ' + '--key-type "Primary" ' + '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /RedisEnterprise/get/RedisEnterpriseListByResourceGroup +# EXAMPLE: /Databases/delete/RedisEnterpriseDatabasesDelete @try_manual -def step_list2(test, rg, checks=None): +def step_database_delete(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise list ' + test.cmd('az redisenterprise database delete -y ' + '--cluster-name "{myRedisEnterprise}" ' '--resource-group "{rg}"', checks=checks) -# EXAMPLE: /RedisEnterprise/patch/RedisEnterpriseUpdate +# EXAMPLE: /OperationsStatus/get/OperationsStatusGet @try_manual -def step_update(test, rg, checks=None): +def step_operation_status_show(test, checks=None): if checks is None: checks = [] - test.cmd('az redisenterprise update ' - '--cluster-name "cache1" ' - '--minimum-tls-version "1.2" ' - '--sku "EnterpriseFlash_F300" ' - '--capacity 9 ' - '--tags tag1="value1" ' - '--resource-group "{rg}"', + test.cmd('az redisenterprise operation-status show ' + '--operation-id "testoperationid" ' + '--location "West US"', checks=checks) # EXAMPLE: /RedisEnterprise/delete/RedisEnterpriseDelete @try_manual -def step_delete(test, rg, checks=None): +def step_delete(test, checks=None): if checks is None: checks = [] test.cmd('az redisenterprise delete -y ' - '--cluster-name "cache1" ' + '--cluster-name "{myRedisEnterprise}" ' '--resource-group "{rg}"', checks=checks) diff --git a/src/redisenterprise/azext_redisenterprise/tests/latest/test_redisenterprise_scenario.py b/src/redisenterprise/azext_redisenterprise/tests/latest/test_redisenterprise_scenario.py index cb4e596e70c..193caaf8d2d 100644 --- a/src/redisenterprise/azext_redisenterprise/tests/latest/test_redisenterprise_scenario.py +++ b/src/redisenterprise/azext_redisenterprise/tests/latest/test_redisenterprise_scenario.py @@ -34,85 +34,112 @@ # Env setup_scenario1 @try_manual -def setup_scenario1(test, rg): +def setup_scenario1(test): pass # Env cleanup_scenario1 @try_manual -def cleanup_scenario1(test, rg): +def cleanup_scenario1(test): pass # Testcase: scenario1 @try_manual -def call_scenario1(test, rg): - setup_scenario1(test, rg) - step_create(test, rg, checks=[]) - step_show(test, rg, checks=[]) - step_list(test, rg, checks=[]) - step_list2(test, rg, checks=[]) - step_database_show(test, rg, checks=[]) - step_database_list(test, rg, checks=[]) - step_database_list_keys(test, rg, checks=[]) - step_database_regenerate_key(test, rg, checks=[]) - step_delete(test, rg, checks=[]) - cleanup_scenario1(test, rg) +def call_scenario1(test): + setup_scenario1(test) + step_create(test, checks=[]) + step_show(test, checks=[]) + step_list(test, checks=[]) + step_list2(test, checks=[]) + step_database_show(test, checks=[]) + step_database_list(test, checks=[]) + step_database_list_keys(test, checks=[]) + step_database_regenerate_key(test, checks=[]) + step_delete(test, checks=[]) + cleanup_scenario1(test) # Test class for scenario1 @try_manual class Redisenterprisescenario1Test(ScenarioTest): - def __init__(self, *args, **kwargs): super(Redisenterprisescenario1Test, self).__init__(*args, **kwargs) + self.kwargs.update({ + 'subscription_id': self.get_subscription_id() + }) + + self.kwargs.update({ + 'myRedisEnterprise': 'cache1', + 'myRedisEnterprise2': 'cache2', + 'myDatabas': 'default', + }) @ResourceGroupPreparer(name_prefix='clitestredisenterprise_rg1'[:7], key='rg', parameter_name='rg') - def test_redisenterprise_scenario1(self, rg): - call_scenario1(self, rg) + @ResourceGroupPreparer(name_prefix='clitestredisenterprise_rg2'[:7], key='rg_2', parameter_name='rg_2') + def test_redisenterprise_scenario1(self, rg, rg_2): + call_scenario1(self) calc_coverage(__file__) raise_if() - # Env setup_scenario2 @try_manual -def setup_scenario2(test, rg): +def setup_scenario2(test): pass # Env cleanup_scenario2 @try_manual -def cleanup_scenario2(test, rg): +def cleanup_scenario2(test): pass # Testcase: scenario2 @try_manual -def call_scenario2(test, rg): - setup_scenario2(test, rg) - step_create(test, rg, checks=[]) - step_show(test, rg, checks=[]) - step_list(test, rg, checks=[]) - step_list2(test, rg, checks=[]) - step_database_create(test, rg, checks=[]) - step_database_show(test, rg, checks=[]) - step_database_list(test, rg, checks=[]) - step_database_list_keys(test, rg, checks=[]) - step_database_regenerate_key(test, rg, checks=[]) - step_database_delete(test, rg, checks=[]) - step_delete(test, rg, checks=[]) - cleanup_scenario2(test, rg) +def call_scenario2(test): + setup_scenario2(test) + step_create(test, checks=[]) + step_show(test, checks=[]) + step_list(test, checks=[]) + step_list2(test, checks=[]) + step_database_create(test, checks=[]) + step_database_show(test, checks=[]) + step_database_list(test, checks=[]) + step_database_list_keys(test, checks=[]) + step_database_regenerate_key(test, checks=[]) + step_database_delete(test, checks=[]) + step_delete(test, checks=[]) + cleanup_scenario2(test) # Test class for scenario2 @try_manual class Redisenterprisescenario2Test(ScenarioTest): - def __init__(self, *args, **kwargs): super(Redisenterprisescenario2Test, self).__init__(*args, **kwargs) + self.kwargs.update({ + 'subscription_id': self.get_subscription_id() + }) + + self.kwargs.update({ + 'myRedisEnterprise': 'cache1', + 'myRedisEnterprise2': 'cache2', + 'myDatabas': 'default', + }) @ResourceGroupPreparer(name_prefix='clitestredisenterprise_rg1'[:7], key='rg', parameter_name='rg') - def test_redisenterprise_scenario2(self, rg): - call_scenario2(self, rg) + @ResourceGroupPreparer(name_prefix='clitestredisenterprise_rg2'[:7], key='rg_2', parameter_name='rg_2') + def test_redisenterprise_scenario2(self, rg, rg_2): + call_scenario2(self) calc_coverage(__file__) raise_if() + +# Testcase: scenario3 +@try_manual +def call_scenario3(test): + pass + +@try_manual +class Redisenterprisescenario3Test(ScenarioTest): + pass + diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_configuration.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_configuration.py index 284a0182c77..3006fd00ab8 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_configuration.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_configuration.py @@ -48,7 +48,7 @@ def __init__( self.credential = credential self.subscription_id = subscription_id - self.api_version = "2021-03-01" + self.api_version = "2022-01-01" self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-redisenterprise/{}'.format(VERSION)) self._configure(**kwargs) diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_version.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_version.py index c47f66669f1..48944bf3938 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_version.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/_version.py @@ -6,4 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0" +VERSION = "2.0.0" diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/_configuration.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/_configuration.py index ce5c61e781f..91438e04f36 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/_configuration.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/_configuration.py @@ -45,7 +45,7 @@ def __init__( self.credential = credential self.subscription_id = subscription_id - self.api_version = "2021-03-01" + self.api_version = "2022-01-01" self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'mgmt-redisenterprise/{}'.format(VERSION)) self._configure(**kwargs) diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_databases_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_databases_operations.py index 7346ef055a0..c13963fcfce 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_databases_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_databases_operations.py @@ -65,7 +65,7 @@ def list_by_cluster( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -78,7 +78,7 @@ def prepare_request(next_link=None): url = self.list_by_cluster.metadata['url'] # type: ignore path_format_arguments = { 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), } url = self._client.format_url(url, **path_format_arguments) @@ -131,14 +131,14 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._create_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -234,7 +234,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -267,14 +267,14 @@ async def _update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._update_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -368,7 +368,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -413,13 +413,13 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -463,13 +463,13 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self._delete_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -547,7 +547,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -592,13 +592,13 @@ async def list_keys( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.list_keys.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -643,14 +643,14 @@ async def _regenerate_key_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._regenerate_key_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -744,7 +744,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -777,14 +777,14 @@ async def _import_method_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._import_method_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -825,7 +825,7 @@ async def begin_import_method( parameters: "models.ImportClusterParameters", **kwargs ) -> AsyncLROPoller[None]: - """Imports a database file to target database. + """Imports database files to target database. :param resource_group_name: The name of the resource group. The name is case insensitive. :type resource_group_name: str @@ -870,7 +870,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -903,14 +903,14 @@ async def _export_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._export_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -996,7 +996,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -1015,3 +1015,129 @@ def get_long_running_output(pipeline_response): else: return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) begin_export.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/redisEnterprise/{clusterName}/databases/{databaseName}/export'} # type: ignore + + async def _force_unlink_initial( + self, + resource_group_name: str, + cluster_name: str, + database_name: str, + parameters: "models.ForceUnlinkParameters", + **kwargs + ) -> None: + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2022-01-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._force_unlink_initial.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), + 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), + 'databaseName': self._serialize.url("database_name", database_name, 'str'), + 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, 'ForceUnlinkParameters') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorResponse, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _force_unlink_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/redisEnterprise/{clusterName}/databases/{databaseName}/forceUnlink'} # type: ignore + + async def begin_force_unlink( + self, + resource_group_name: str, + cluster_name: str, + database_name: str, + parameters: "models.ForceUnlinkParameters", + **kwargs + ) -> AsyncLROPoller[None]: + """Forcibly removes the link to the specified database resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param cluster_name: The name of the RedisEnterprise cluster. + :type cluster_name: str + :param database_name: The name of the database. + :type database_name: str + :param parameters: Information identifying the database to be unlinked. + :type parameters: ~azure.mgmt.redisenterprise.models.ForceUnlinkParameters + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._force_unlink_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + database_name=database_name, + parameters=parameters, + cls=lambda x,y,z: x, + **kwargs + ) + + kwargs.pop('error_map', None) + kwargs.pop('content_type', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + path_format_arguments = { + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), + 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), + 'databaseName': self._serialize.url("database_name", database_name, 'str'), + 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), + } + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_force_unlink.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/redisEnterprise/{clusterName}/databases/{databaseName}/forceUnlink'} # type: ignore diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations.py index d66303e4cde..9c9f38dec45 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations.py @@ -57,7 +57,7 @@ def list( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations_status_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations_status_operations.py index 02b019ef96e..65cf64027c1 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations_status_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_operations_status_operations.py @@ -62,7 +62,7 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_endpoint_connections_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_endpoint_connections_operations.py index 27834293c11..5cbf1130f8d 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_endpoint_connections_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_endpoint_connections_operations.py @@ -65,7 +65,7 @@ def list( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -77,7 +77,7 @@ def prepare_request(next_link=None): # Construct URL url = self.list.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -144,13 +144,13 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -195,14 +195,14 @@ async def _put_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._put_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), @@ -296,7 +296,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), @@ -342,13 +342,13 @@ async def delete( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.delete.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_link_resources_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_link_resources_operations.py index eb7b0d44174..8b02304abcf 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_link_resources_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_private_link_resources_operations.py @@ -63,7 +63,7 @@ def list_by_cluster( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -75,7 +75,7 @@ def prepare_request(next_link=None): # Construct URL url = self.list_by_cluster.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_redis_enterprise_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_redis_enterprise_operations.py index 3f098b75a03..7748cf76281 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_redis_enterprise_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/aio/operations/_redis_enterprise_operations.py @@ -55,14 +55,14 @@ async def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._create_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -153,7 +153,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -184,14 +184,14 @@ async def _update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._update_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -280,7 +280,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -310,13 +310,13 @@ async def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self._delete_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -389,7 +389,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -430,13 +430,13 @@ async def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -486,7 +486,7 @@ def list_by_resource_group( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -498,7 +498,7 @@ def prepare_request(next_link=None): # Construct URL url = self.list_by_resource_group.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } url = self._client.format_url(url, **path_format_arguments) @@ -554,7 +554,7 @@ def list( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/__init__.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/__init__.py index d523be3efff..24541961b5a 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/__init__.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/__init__.py @@ -13,12 +13,15 @@ from ._models_py3 import ClusterUpdate from ._models_py3 import Database from ._models_py3 import DatabaseList + from ._models_py3 import DatabasePropertiesGeoReplication from ._models_py3 import DatabaseUpdate from ._models_py3 import ErrorAdditionalInfo from ._models_py3 import ErrorDetail from ._models_py3 import ErrorResponse from ._models_py3 import ExportClusterParameters + from ._models_py3 import ForceUnlinkParameters from ._models_py3 import ImportClusterParameters + from ._models_py3 import LinkedDatabase from ._models_py3 import Module from ._models_py3 import Operation from ._models_py3 import OperationDisplay @@ -43,12 +46,15 @@ from ._models import ClusterUpdate # type: ignore from ._models import Database # type: ignore from ._models import DatabaseList # type: ignore + from ._models import DatabasePropertiesGeoReplication # type: ignore from ._models import DatabaseUpdate # type: ignore from ._models import ErrorAdditionalInfo # type: ignore from ._models import ErrorDetail # type: ignore from ._models import ErrorResponse # type: ignore from ._models import ExportClusterParameters # type: ignore + from ._models import ForceUnlinkParameters # type: ignore from ._models import ImportClusterParameters # type: ignore + from ._models import LinkedDatabase # type: ignore from ._models import Module # type: ignore from ._models import Operation # type: ignore from ._models import OperationDisplay # type: ignore @@ -73,6 +79,7 @@ AofFrequency, ClusteringPolicy, EvictionPolicy, + LinkState, Origin, PrivateEndpointConnectionProvisioningState, PrivateEndpointServiceConnectionStatus, @@ -91,12 +98,15 @@ 'ClusterUpdate', 'Database', 'DatabaseList', + 'DatabasePropertiesGeoReplication', 'DatabaseUpdate', 'ErrorAdditionalInfo', 'ErrorDetail', 'ErrorResponse', 'ExportClusterParameters', + 'ForceUnlinkParameters', 'ImportClusterParameters', + 'LinkedDatabase', 'Module', 'Operation', 'OperationDisplay', @@ -119,6 +129,7 @@ 'AofFrequency', 'ClusteringPolicy', 'EvictionPolicy', + 'LinkState', 'Origin', 'PrivateEndpointConnectionProvisioningState', 'PrivateEndpointServiceConnectionStatus', diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models.py index 43947f741b6..da489ff65b5 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models.py @@ -340,6 +340,9 @@ class Database(Resource): :param modules: Optional set of redis modules to enable in this database - modules can only be added at creation time. :type modules: list[~azure.mgmt.redisenterprise.models.Module] + :param geo_replication: Optional set of properties to configure geo replication for this + database. + :type geo_replication: ~azure.mgmt.redisenterprise.models.DatabasePropertiesGeoReplication """ _validation = { @@ -362,6 +365,7 @@ class Database(Resource): 'eviction_policy': {'key': 'properties.evictionPolicy', 'type': 'str'}, 'persistence': {'key': 'properties.persistence', 'type': 'Persistence'}, 'modules': {'key': 'properties.modules', 'type': '[Module]'}, + 'geo_replication': {'key': 'properties.geoReplication', 'type': 'DatabasePropertiesGeoReplication'}, } def __init__( @@ -377,6 +381,7 @@ def __init__( self.eviction_policy = kwargs.get('eviction_policy', None) self.persistence = kwargs.get('persistence', None) self.modules = kwargs.get('modules', None) + self.geo_replication = kwargs.get('geo_replication', None) class DatabaseList(msrest.serialization.Model): @@ -408,6 +413,29 @@ def __init__( self.next_link = None +class DatabasePropertiesGeoReplication(msrest.serialization.Model): + """Optional set of properties to configure geo replication for this database. + + :param group_nickname: Name for the group of linked database resources. + :type group_nickname: str + :param linked_databases: List of database resources to link with this database. + :type linked_databases: list[~azure.mgmt.redisenterprise.models.LinkedDatabase] + """ + + _attribute_map = { + 'group_nickname': {'key': 'groupNickname', 'type': 'str'}, + 'linked_databases': {'key': 'linkedDatabases', 'type': '[LinkedDatabase]'}, + } + + def __init__( + self, + **kwargs + ): + super(DatabasePropertiesGeoReplication, self).__init__(**kwargs) + self.group_nickname = kwargs.get('group_nickname', None) + self.linked_databases = kwargs.get('linked_databases', None) + + class DatabaseUpdate(msrest.serialization.Model): """A partial update to the RedisEnterprise database. @@ -439,6 +467,9 @@ class DatabaseUpdate(msrest.serialization.Model): :param modules: Optional set of redis modules to enable in this database - modules can only be added at creation time. :type modules: list[~azure.mgmt.redisenterprise.models.Module] + :param geo_replication: Optional set of properties to configure geo replication for this + database. + :type geo_replication: ~azure.mgmt.redisenterprise.models.DatabasePropertiesGeoReplication """ _validation = { @@ -455,6 +486,7 @@ class DatabaseUpdate(msrest.serialization.Model): 'eviction_policy': {'key': 'properties.evictionPolicy', 'type': 'str'}, 'persistence': {'key': 'properties.persistence', 'type': 'Persistence'}, 'modules': {'key': 'properties.modules', 'type': '[Module]'}, + 'geo_replication': {'key': 'properties.geoReplication', 'type': 'DatabasePropertiesGeoReplication'}, } def __init__( @@ -470,6 +502,7 @@ def __init__( self.eviction_policy = kwargs.get('eviction_policy', None) self.persistence = kwargs.get('persistence', None) self.modules = kwargs.get('modules', None) + self.geo_replication = kwargs.get('geo_replication', None) class ErrorAdditionalInfo(msrest.serialization.Model): @@ -591,21 +624,46 @@ def __init__( self.sas_uri = kwargs['sas_uri'] +class ForceUnlinkParameters(msrest.serialization.Model): + """Parameters for a Redis Enterprise Active Geo Replication Force Unlink operation. + + All required parameters must be populated in order to send to Azure. + + :param ids: Required. The resource IDs of the database resources to be unlinked. + :type ids: list[str] + """ + + _validation = { + 'ids': {'required': True}, + } + + _attribute_map = { + 'ids': {'key': 'ids', 'type': '[str]'}, + } + + def __init__( + self, + **kwargs + ): + super(ForceUnlinkParameters, self).__init__(**kwargs) + self.ids = kwargs['ids'] + + class ImportClusterParameters(msrest.serialization.Model): """Parameters for a Redis Enterprise import operation. All required parameters must be populated in order to send to Azure. - :param sas_uri: Required. SAS URI for the target blob to import from. - :type sas_uri: str + :param sas_uris: Required. SAS URIs for the target blobs to import from. + :type sas_uris: list[str] """ _validation = { - 'sas_uri': {'required': True}, + 'sas_uris': {'required': True}, } _attribute_map = { - 'sas_uri': {'key': 'sasUri', 'type': 'str'}, + 'sas_uris': {'key': 'sasUris', 'type': '[str]'}, } def __init__( @@ -613,7 +671,37 @@ def __init__( **kwargs ): super(ImportClusterParameters, self).__init__(**kwargs) - self.sas_uri = kwargs['sas_uri'] + self.sas_uris = kwargs['sas_uris'] + + +class LinkedDatabase(msrest.serialization.Model): + """Specifies details of a linked database resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param id: Resource ID of a database resource to link with this database. + :type id: str + :ivar state: State of the link between the database resources. Possible values include: + "Linked", "Linking", "Unlinking", "LinkFailed", "UnlinkFailed". + :vartype state: str or ~azure.mgmt.redisenterprise.models.LinkState + """ + + _validation = { + 'state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'state': {'key': 'state', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(LinkedDatabase, self).__init__(**kwargs) + self.id = kwargs.get('id', None) + self.state = None class Module(msrest.serialization.Model): @@ -626,7 +714,7 @@ class Module(msrest.serialization.Model): :param name: Required. The name of the module, e.g. 'RedisBloom', 'RediSearch', 'RedisTimeSeries'. :type name: str - :param args: Configuration options for the module, e.g. 'ERROR_RATE 0.00 INITIAL_SIZE 400'. + :param args: Configuration options for the module, e.g. 'ERROR_RATE 0.01 INITIAL_SIZE 400'. :type args: str :ivar version: The version of the module, e.g. '1.0'. :vartype version: str diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models_py3.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models_py3.py index 701f2e49726..4545d280136 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models_py3.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_models_py3.py @@ -359,6 +359,9 @@ class Database(Resource): :param modules: Optional set of redis modules to enable in this database - modules can only be added at creation time. :type modules: list[~azure.mgmt.redisenterprise.models.Module] + :param geo_replication: Optional set of properties to configure geo replication for this + database. + :type geo_replication: ~azure.mgmt.redisenterprise.models.DatabasePropertiesGeoReplication """ _validation = { @@ -381,6 +384,7 @@ class Database(Resource): 'eviction_policy': {'key': 'properties.evictionPolicy', 'type': 'str'}, 'persistence': {'key': 'properties.persistence', 'type': 'Persistence'}, 'modules': {'key': 'properties.modules', 'type': '[Module]'}, + 'geo_replication': {'key': 'properties.geoReplication', 'type': 'DatabasePropertiesGeoReplication'}, } def __init__( @@ -392,6 +396,7 @@ def __init__( eviction_policy: Optional[Union[str, "EvictionPolicy"]] = None, persistence: Optional["Persistence"] = None, modules: Optional[List["Module"]] = None, + geo_replication: Optional["DatabasePropertiesGeoReplication"] = None, **kwargs ): super(Database, self).__init__(**kwargs) @@ -403,6 +408,7 @@ def __init__( self.eviction_policy = eviction_policy self.persistence = persistence self.modules = modules + self.geo_replication = geo_replication class DatabaseList(msrest.serialization.Model): @@ -436,6 +442,32 @@ def __init__( self.next_link = None +class DatabasePropertiesGeoReplication(msrest.serialization.Model): + """Optional set of properties to configure geo replication for this database. + + :param group_nickname: Name for the group of linked database resources. + :type group_nickname: str + :param linked_databases: List of database resources to link with this database. + :type linked_databases: list[~azure.mgmt.redisenterprise.models.LinkedDatabase] + """ + + _attribute_map = { + 'group_nickname': {'key': 'groupNickname', 'type': 'str'}, + 'linked_databases': {'key': 'linkedDatabases', 'type': '[LinkedDatabase]'}, + } + + def __init__( + self, + *, + group_nickname: Optional[str] = None, + linked_databases: Optional[List["LinkedDatabase"]] = None, + **kwargs + ): + super(DatabasePropertiesGeoReplication, self).__init__(**kwargs) + self.group_nickname = group_nickname + self.linked_databases = linked_databases + + class DatabaseUpdate(msrest.serialization.Model): """A partial update to the RedisEnterprise database. @@ -467,6 +499,9 @@ class DatabaseUpdate(msrest.serialization.Model): :param modules: Optional set of redis modules to enable in this database - modules can only be added at creation time. :type modules: list[~azure.mgmt.redisenterprise.models.Module] + :param geo_replication: Optional set of properties to configure geo replication for this + database. + :type geo_replication: ~azure.mgmt.redisenterprise.models.DatabasePropertiesGeoReplication """ _validation = { @@ -483,6 +518,7 @@ class DatabaseUpdate(msrest.serialization.Model): 'eviction_policy': {'key': 'properties.evictionPolicy', 'type': 'str'}, 'persistence': {'key': 'properties.persistence', 'type': 'Persistence'}, 'modules': {'key': 'properties.modules', 'type': '[Module]'}, + 'geo_replication': {'key': 'properties.geoReplication', 'type': 'DatabasePropertiesGeoReplication'}, } def __init__( @@ -494,6 +530,7 @@ def __init__( eviction_policy: Optional[Union[str, "EvictionPolicy"]] = None, persistence: Optional["Persistence"] = None, modules: Optional[List["Module"]] = None, + geo_replication: Optional["DatabasePropertiesGeoReplication"] = None, **kwargs ): super(DatabaseUpdate, self).__init__(**kwargs) @@ -505,6 +542,7 @@ def __init__( self.eviction_policy = eviction_policy self.persistence = persistence self.modules = modules + self.geo_replication = geo_replication class ErrorAdditionalInfo(msrest.serialization.Model): @@ -630,31 +668,90 @@ def __init__( self.sas_uri = sas_uri +class ForceUnlinkParameters(msrest.serialization.Model): + """Parameters for a Redis Enterprise Active Geo Replication Force Unlink operation. + + All required parameters must be populated in order to send to Azure. + + :param ids: Required. The resource IDs of the database resources to be unlinked. + :type ids: list[str] + """ + + _validation = { + 'ids': {'required': True}, + } + + _attribute_map = { + 'ids': {'key': 'ids', 'type': '[str]'}, + } + + def __init__( + self, + *, + ids: List[str], + **kwargs + ): + super(ForceUnlinkParameters, self).__init__(**kwargs) + self.ids = ids + + class ImportClusterParameters(msrest.serialization.Model): """Parameters for a Redis Enterprise import operation. All required parameters must be populated in order to send to Azure. - :param sas_uri: Required. SAS URI for the target blob to import from. - :type sas_uri: str + :param sas_uris: Required. SAS URIs for the target blobs to import from. + :type sas_uris: list[str] """ _validation = { - 'sas_uri': {'required': True}, + 'sas_uris': {'required': True}, } _attribute_map = { - 'sas_uri': {'key': 'sasUri', 'type': 'str'}, + 'sas_uris': {'key': 'sasUris', 'type': '[str]'}, } def __init__( self, *, - sas_uri: str, + sas_uris: List[str], **kwargs ): super(ImportClusterParameters, self).__init__(**kwargs) - self.sas_uri = sas_uri + self.sas_uris = sas_uris + + +class LinkedDatabase(msrest.serialization.Model): + """Specifies details of a linked database resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param id: Resource ID of a database resource to link with this database. + :type id: str + :ivar state: State of the link between the database resources. Possible values include: + "Linked", "Linking", "Unlinking", "LinkFailed", "UnlinkFailed". + :vartype state: str or ~azure.mgmt.redisenterprise.models.LinkState + """ + + _validation = { + 'state': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'state': {'key': 'state', 'type': 'str'}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + **kwargs + ): + super(LinkedDatabase, self).__init__(**kwargs) + self.id = id + self.state = None class Module(msrest.serialization.Model): @@ -667,7 +764,7 @@ class Module(msrest.serialization.Model): :param name: Required. The name of the module, e.g. 'RedisBloom', 'RediSearch', 'RedisTimeSeries'. :type name: str - :param args: Configuration options for the module, e.g. 'ERROR_RATE 0.00 INITIAL_SIZE 400'. + :param args: Configuration options for the module, e.g. 'ERROR_RATE 0.01 INITIAL_SIZE 400'. :type args: str :ivar version: The version of the module, e.g. '1.0'. :vartype version: str diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_redis_enterprise_management_client_enums.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_redis_enterprise_management_client_enums.py index c19fa2c79c2..b1e9115c920 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_redis_enterprise_management_client_enums.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/models/_redis_enterprise_management_client_enums.py @@ -66,6 +66,16 @@ class EvictionPolicy(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): VOLATILE_RANDOM = "VolatileRandom" NO_EVICTION = "NoEviction" +class LinkState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """State of the link between the database resources. + """ + + LINKED = "Linked" + LINKING = "Linking" + UNLINKING = "Unlinking" + LINK_FAILED = "LinkFailed" + UNLINK_FAILED = "UnlinkFailed" + class Origin(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): """The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_databases_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_databases_operations.py index a516b3c429f..c44ecec86e4 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_databases_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_databases_operations.py @@ -70,7 +70,7 @@ def list_by_cluster( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -83,7 +83,7 @@ def prepare_request(next_link=None): url = self.list_by_cluster.metadata['url'] # type: ignore path_format_arguments = { 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), } url = self._client.format_url(url, **path_format_arguments) @@ -137,14 +137,14 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._create_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -241,7 +241,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -275,14 +275,14 @@ def _update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._update_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -377,7 +377,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -423,13 +423,13 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -474,13 +474,13 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self._delete_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -559,7 +559,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -605,13 +605,13 @@ def list_keys( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.list_keys.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -657,14 +657,14 @@ def _regenerate_key_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._regenerate_key_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -759,7 +759,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -793,14 +793,14 @@ def _import_method_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._import_method_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -842,7 +842,7 @@ def begin_import_method( **kwargs # type: Any ): # type: (...) -> LROPoller[None] - """Imports a database file to target database. + """Imports database files to target database. :param resource_group_name: The name of the resource group. The name is case insensitive. :type resource_group_name: str @@ -887,7 +887,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -921,14 +921,14 @@ def _export_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._export_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -1015,7 +1015,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'databaseName': self._serialize.url("database_name", database_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -1034,3 +1034,131 @@ def get_long_running_output(pipeline_response): else: return LROPoller(self._client, raw_result, get_long_running_output, polling_method) begin_export.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/redisEnterprise/{clusterName}/databases/{databaseName}/export'} # type: ignore + + def _force_unlink_initial( + self, + resource_group_name, # type: str + cluster_name, # type: str + database_name, # type: str + parameters, # type: "models.ForceUnlinkParameters" + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2022-01-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._force_unlink_initial.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), + 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), + 'databaseName': self._serialize.url("database_name", database_name, 'str'), + 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, 'ForceUnlinkParameters') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorResponse, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _force_unlink_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/redisEnterprise/{clusterName}/databases/{databaseName}/forceUnlink'} # type: ignore + + def begin_force_unlink( + self, + resource_group_name, # type: str + cluster_name, # type: str + database_name, # type: str + parameters, # type: "models.ForceUnlinkParameters" + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Forcibly removes the link to the specified database resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param cluster_name: The name of the RedisEnterprise cluster. + :type cluster_name: str + :param database_name: The name of the database. + :type database_name: str + :param parameters: Information identifying the database to be unlinked. + :type parameters: ~azure.mgmt.redisenterprise.models.ForceUnlinkParameters + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType[None] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._force_unlink_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + database_name=database_name, + parameters=parameters, + cls=lambda x,y,z: x, + **kwargs + ) + + kwargs.pop('error_map', None) + kwargs.pop('content_type', None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + path_format_arguments = { + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), + 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), + 'databaseName': self._serialize.url("database_name", database_name, 'str'), + 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), + } + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_force_unlink.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/redisEnterprise/{clusterName}/databases/{databaseName}/forceUnlink'} # type: ignore diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations.py index a28b5cd823c..6c42480e7f6 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations.py @@ -62,7 +62,7 @@ def list( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations_status_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations_status_operations.py index d2320a56bf4..56075bab92d 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations_status_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_operations_status_operations.py @@ -67,7 +67,7 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_endpoint_connections_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_endpoint_connections_operations.py index 2614e0db94b..54111311cc2 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_endpoint_connections_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_endpoint_connections_operations.py @@ -70,7 +70,7 @@ def list( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -82,7 +82,7 @@ def prepare_request(next_link=None): # Construct URL url = self.list.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -150,13 +150,13 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), @@ -202,14 +202,14 @@ def _put_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._put_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), @@ -304,7 +304,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), @@ -351,13 +351,13 @@ def delete( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.delete.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), 'privateEndpointConnectionName': self._serialize.url("private_endpoint_connection_name", private_endpoint_connection_name, 'str'), diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_link_resources_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_link_resources_operations.py index f36df7aba29..a85c3eb7fed 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_link_resources_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_private_link_resources_operations.py @@ -68,7 +68,7 @@ def list_by_cluster( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -80,7 +80,7 @@ def prepare_request(next_link=None): # Construct URL url = self.list_by_cluster.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_redis_enterprise_operations.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_redis_enterprise_operations.py index c5b32a95700..993a23e4f57 100644 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_redis_enterprise_operations.py +++ b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/operations/_redis_enterprise_operations.py @@ -60,14 +60,14 @@ def _create_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._create_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -159,7 +159,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -191,14 +191,14 @@ def _update_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" content_type = kwargs.pop("content_type", "application/json") accept = "application/json" # Construct URL url = self._update_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -288,7 +288,7 @@ def get_long_running_output(pipeline_response): return deserialized path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -319,13 +319,13 @@ def _delete_initial( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self._delete_initial.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -399,7 +399,7 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, None, {}) path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -441,13 +441,13 @@ def get( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'clusterName': self._serialize.url("cluster_name", cluster_name, 'str'), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } @@ -498,7 +498,7 @@ def list_by_resource_group( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): @@ -510,7 +510,7 @@ def prepare_request(next_link=None): # Construct URL url = self.list_by_resource_group.metadata['url'] # type: ignore path_format_arguments = { - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1), 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1), } url = self._client.format_url(url, **path_format_arguments) @@ -567,7 +567,7 @@ def list( 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError } error_map.update(kwargs.pop('error_map', {})) - api_version = "2021-03-01" + api_version = "2022-01-01" accept = "application/json" def prepare_request(next_link=None): diff --git a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/setup.py b/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/setup.py deleted file mode 100644 index 02c267497d8..00000000000 --- a/src/redisenterprise/azext_redisenterprise/vendored_sdks/redisenterprise/setup.py +++ /dev/null @@ -1,37 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -# coding: utf-8 - -from setuptools import setup, find_packages - -NAME = "azure-mgmt-redisenterprise" -VERSION = "1.0.0" - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools - -REQUIRES = ["msrest>=0.6.18", "azure-core<2.0.0,>=1.8.2", "azure-mgmt-core<2.0.0,>=1.2.1"] - -setup( - name=NAME, - version=VERSION, - description="azure-mgmt-redisenterprise", - author_email="", - url="", - keywords=["Swagger", "RedisEnterpriseManagementClient"], - install_requires=REQUIRES, - packages=find_packages(), - include_package_data=True, - long_description="""\ - REST API for managing Redis Enterprise resources in Azure. - """ -) diff --git a/src/redisenterprise/report.md b/src/redisenterprise/report.md index 3e8e38e8d7a..b7ae35c4909 100644 --- a/src/redisenterprise/report.md +++ b/src/redisenterprise/report.md @@ -9,9 +9,9 @@ ### Command groups in `az redisenterprise` extension |CLI Command Group|Group Swagger name|Commands| |---------|------------|--------| -|az redisenterprise operation-status|OperationsStatus|[commands](#CommandsInOperationsStatus)| |az redisenterprise|RedisEnterprise|[commands](#CommandsInRedisEnterprise)| |az redisenterprise database|Databases|[commands](#CommandsInDatabases)| +|az redisenterprise operation-status|OperationsStatus|[commands](#CommandsInOperationsStatus)| ## COMMANDS ### Commands in `az redisenterprise` group @@ -33,6 +33,7 @@ |[az redisenterprise database update](#DatabasesUpdate)|Update|[Parameters](#ParametersDatabasesUpdate)|[Example](#ExamplesDatabasesUpdate)| |[az redisenterprise database delete](#DatabasesDelete)|Delete|[Parameters](#ParametersDatabasesDelete)|[Example](#ExamplesDatabasesDelete)| |[az redisenterprise database export](#DatabasesExport)|Export|[Parameters](#ParametersDatabasesExport)|[Example](#ExamplesDatabasesExport)| +|[az redisenterprise database force-unlink](#DatabasesForceUnlink)|ForceUnlink|[Parameters](#ParametersDatabasesForceUnlink)|[Example](#ExamplesDatabasesForceUnlink)| |[az redisenterprise database import](#DatabasesImport)|Import|[Parameters](#ParametersDatabasesImport)|[Example](#ExamplesDatabasesImport)| |[az redisenterprise database list-keys](#DatabasesListKeys)|ListKeys|[Parameters](#ParametersDatabasesListKeys)|[Example](#ExamplesDatabasesListKeys)| |[az redisenterprise database regenerate-key](#DatabasesRegenerateKey)|RegenerateKey|[Parameters](#ParametersDatabasesRegenerateKey)|[Example](#ExamplesDatabasesRegenerateKey)| @@ -44,7 +45,6 @@ ## COMMAND DETAILS - ### group `az redisenterprise` #### Command `az redisenterprise list` @@ -66,6 +66,7 @@ az redisenterprise list ##### Parameters |Option|Type|Description|Path (SDK)|Swagger name| |------|----|-----------|----------|------------| + #### Command `az redisenterprise show` ##### Example @@ -159,6 +160,11 @@ az redisenterprise database create --cluster-name "cache1" --client-protocol "En "EnterpriseCluster" --eviction-policy "AllKeysLRU" --modules name="RedisBloom" args="ERROR_RATE 0.00 INITIAL_SIZE 400" \ --modules name="RedisTimeSeries" args="RETENTION_POLICY 20" --modules name="RediSearch" --persistence aof-enabled=true \ aof-frequency="1s" --port 10000 --resource-group "rg1" +az redisenterprise database create --cluster-name "cache1" --client-protocol "Encrypted" --clustering-policy \ +"EnterpriseCluster" --eviction-policy "NoEviction" --group-nickname "groupName" --linked-databases \ +id="/subscriptions/subid1/resourceGroups/rg1/providers/Microsoft.Cache/redisEnterprise/cache1/databases/default" \ +--linked-databases id="/subscriptions/subid2/resourceGroups/rg2/providers/Microsoft.Cache/redisEnterprise/cache2/databa\ +ses/default" --port 10000 --resource-group "rg1" ``` ##### Parameters |Option|Type|Description|Path (SDK)|Swagger name| @@ -171,6 +177,8 @@ aof-frequency="1s" --port 10000 --resource-group "rg1" |**--eviction-policy**|choice|Redis eviction policy - default is VolatileLRU|eviction_policy|evictionPolicy| |**--persistence**|object|Persistence settings|persistence|persistence| |**--modules**|array|Optional set of redis modules to enable in this database - modules can only be added at creation time.|modules|modules| +|**--group-nickname**|string|Name for the group of linked database resources|group_nickname|groupNickname| +|**--linked-databases**|array|List of database resources to link with this database|linked_databases|linkedDatabases| #### Command `az redisenterprise database update` @@ -187,6 +195,8 @@ az redisenterprise database update --cluster-name "cache1" --client-protocol "En |**--client-protocol**|choice|Specifies whether redis clients can connect using TLS-encrypted or plaintext redis protocols. Default is TLS-encrypted.|client_protocol|clientProtocol| |**--eviction-policy**|choice|Redis eviction policy - default is VolatileLRU|eviction_policy|evictionPolicy| |**--persistence**|object|Persistence settings|persistence|persistence| +|**--group-nickname**|string|Name for the group of linked database resources|group_nickname|groupNickname| +|**--linked-databases**|array|List of database resources to link with this database|linked_databases|linkedDatabases| #### Command `az redisenterprise database delete` @@ -214,19 +224,34 @@ BlobContainer?sasKeyParameters" --resource-group "rg1" |**--cluster-name**|string|The name of the RedisEnterprise cluster.|cluster_name|clusterName| |**--sas-uri**|string|SAS URI for the target directory to export to|sas_uri|sasUri| +#### Command `az redisenterprise database force-unlink` + +##### Example +``` +az redisenterprise database force-unlink --cluster-name "cache1" --unlink-ids "/subscriptions/subid2/resourceGroups/rg2/provid\ +ers/Microsoft.Cache/redisEnterprise/cache2/databases/default" --resource-group "rg1" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName| +|**--cluster-name**|string|The name of the RedisEnterprise cluster.|cluster_name|clusterName| +|**--unlink-ids**|array|The resource IDs of the database resources to be unlinked.|unlink-ids|unlink-ids| + #### Command `az redisenterprise database import` ##### Example ``` -az redisenterprise database import --cluster-name "cache1" --sas-uri "https://contosostorage.blob.core.window.net/urlto\ -BlobFile?sasKeyParameters" --resource-group "rg1" +az redisenterprise database import --cluster-name "cache1" --sas-uris "https://contosostorage.blob.core.window.net/urlt\ +oBlobFile1?sasKeyParameters" "https://contosostorage.blob.core.window.net/urltoBlobFile2?sasKeyParameters" \ +--resource-group "rg1" ``` ##### Parameters |Option|Type|Description|Path (SDK)|Swagger name| |------|----|-----------|----------|------------| |**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName| |**--cluster-name**|string|The name of the RedisEnterprise cluster.|cluster_name|clusterName| -|**--sas-uri**|string|SAS URI for the target blob to import from|sas_uri|sasUri| +|**--sas-uris**|array|SAS URIs for the target blobs to import from|sas_uris|sasUris| #### Command `az redisenterprise database list-keys` diff --git a/src/redisenterprise/setup.py b/src/redisenterprise/setup.py index 1d04316f3f3..decce8d17f4 100644 --- a/src/redisenterprise/setup.py +++ b/src/redisenterprise/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '0.1.1' +VERSION = '0.1.2' try: from azext_redisenterprise.manual.version import VERSION except ImportError: @@ -48,7 +48,7 @@ description='Microsoft Azure Command-Line Tools RedisEnterpriseManagementClient Extension', author='Microsoft Corporation', author_email='azpycli@microsoft.com', - url='https://github.com/Azure/azure-cli-extensions/tree/main/src/redisenterprise', + url='https://github.com/Azure/azure-cli-extensions/tree/master/src/redisenterprise', long_description=README + '\n\n' + HISTORY, license='MIT', classifiers=CLASSIFIERS, diff --git a/src/scheduled-query/azext_scheduled_query/_help.py b/src/scheduled-query/azext_scheduled_query/_help.py index dfbbe52c19f..6f755a6ebbd 100644 --- a/src/scheduled-query/azext_scheduled_query/_help.py +++ b/src/scheduled-query/azext_scheduled_query/_help.py @@ -37,9 +37,9 @@ Dimensions can be queried by adding the 'where' keyword and multiple dimensions can be queried by combining them with the 'and' keyword. examples: - name: Create a scheduled query for a VM. - text: az monitor scheduled-query create -g {rg} -n {name1} --scopes {vm_id} --condition "count 'Placeholder_1' > 360 resource id _ResourceID at least 1 violations out of 5 aggregated points" --condition-query Placeholder_1="union Event, Syslog | where TimeGenerated > ago(1h) | where EventLevelName=='Error' or SeverityLevel=='err'" --description "Test rule" + text: az monitor scheduled-query create -g {rg} -n {name1} --scopes {vm_id} --condition "count 'Placeholder_1' > 360 resource id _ResourceId at least 1 violations out of 5 aggregated points" --condition-query Placeholder_1="union Event, Syslog | where TimeGenerated > ago(1h) | where EventLevelName=='Error' or SeverityLevel=='err'" --description "Test rule" - name: Create a scheduled query for VMs in a resource group. - text: az monitor scheduled-query create -g {rg} -n {name1} --scopes {rg_id} --condition "count 'Placeholder_1' > 360 resource id _ResourceID at least 1 violations out of 5 aggregated points" --condition-query Placeholder_1="union Event, Syslog | where TimeGenerated > ago(1h) | where EventLevelName=='Error' or SeverityLevel=='err'" --description "Test rule" + text: az monitor scheduled-query create -g {rg} -n {name1} --scopes {rg_id} --condition "count 'Placeholder_1' > 360 resource id _ResourceId at least 1 violations out of 5 aggregated points" --condition-query Placeholder_1="union Event, Syslog | where TimeGenerated > ago(1h) | where EventLevelName=='Error' or SeverityLevel=='err'" --description "Test rule" """ helps['monitor scheduled-query update'] = """ diff --git a/src/scheduled-query/azext_scheduled_query/tests/latest/recordings/test_scheduled_query.yaml b/src/scheduled-query/azext_scheduled_query/tests/latest/recordings/test_scheduled_query.yaml index 149e3d33c3b..ad5749aff7d 100644 --- a/src/scheduled-query/azext_scheduled_query/tests/latest/recordings/test_scheduled_query.yaml +++ b/src/scheduled-query/azext_scheduled_query/tests/latest/recordings/test_scheduled_query.yaml @@ -13,12 +13,12 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-01-28T04:19:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-13T08:36:24Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:21:09 GMT + - Mon, 13 Jun 2022 08:36:25 GMT expires: - '-1' pragma: @@ -53,7 +53,7 @@ interactions: User-Agent: - python-requests/2.26.0 method: GET - uri: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json + uri: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/arm-compute/quickstart-templates/aliases.json response: body: string: "{\n \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json\",\n @@ -67,16 +67,22 @@ interactions: \ },\n \"Flatcar\": {\n \"publisher\": \"kinvolk\",\n \ \"offer\": \"flatcar-container-linux-free\",\n \"sku\": \"stable\",\n \"version\": \"latest\"\n },\n \"openSUSE-Leap\": - {\n \"publisher\": \"SUSE\",\n \"offer\": \"openSUSE-Leap\",\n - \ \"sku\": \"42.3\",\n \"version\": \"latest\"\n },\n + {\n \"publisher\": \"SUSE\",\n \"offer\": \"opensuse-leap-15-3\",\n + \ \"sku\": \"gen2\",\n \"version\": \"latest\"\n },\n \ \"RHEL\": {\n \"publisher\": \"RedHat\",\n \"offer\": \"RHEL\",\n \"sku\": \"7-LVM\",\n \"version\": \"latest\"\n \ },\n \"SLES\": {\n \"publisher\": \"SUSE\",\n - \ \"offer\": \"SLES\",\n \"sku\": \"15\",\n \"version\": - \"latest\"\n },\n \"UbuntuLTS\": {\n \"publisher\": - \"Canonical\",\n \"offer\": \"UbuntuServer\",\n \"sku\": - \"18.04-LTS\",\n \"version\": \"latest\"\n }\n },\n - \ \"Windows\": {\n \"Win2019Datacenter\": {\n \"publisher\": + \ \"offer\": \"sles-15-sp3\",\n \"sku\": \"gen2\",\n + \ \"version\": \"latest\"\n },\n \"UbuntuLTS\": + {\n \"publisher\": \"Canonical\",\n \"offer\": \"UbuntuServer\",\n + \ \"sku\": \"18.04-LTS\",\n \"version\": \"latest\"\n + \ }\n },\n \"Windows\": {\n \"Win2022Datacenter\": + {\n \"publisher\": \"MicrosoftWindowsServer\",\n \"offer\": + \"WindowsServer\",\n \"sku\": \"2022-Datacenter\",\n \"version\": + \"latest\"\n },\n \"Win2022AzureEditionCore\": {\n \"publisher\": + \"MicrosoftWindowsServer\",\n \"offer\": \"WindowsServer\",\n \"sku\": + \"2022-datacenter-azure-edition-core\",\n \"version\": \"latest\"\n + \ },\n \"Win2019Datacenter\": {\n \"publisher\": \"MicrosoftWindowsServer\",\n \"offer\": \"WindowsServer\",\n \"sku\": \"2019-Datacenter\",\n \"version\": \"latest\"\n },\n \ \"Win2016Datacenter\": {\n \"publisher\": \"MicrosoftWindowsServer\",\n @@ -101,17 +107,17 @@ interactions: connection: - keep-alive content-length: - - '2525' + - '2974' content-security-policy: - default-src 'none'; style-src 'unsafe-inline'; sandbox content-type: - text/plain; charset=utf-8 date: - - Fri, 28 Jan 2022 04:21:10 GMT + - Mon, 13 Jun 2022 08:36:27 GMT etag: - - W/"54bceef15b892f2aa7f4c2145a49f1b5e33608722acdbb47933d7b6cbebbd7f4" + - W/"714b55b3e325c9c936add41807880935e033af5676c36a1ed8ab2e1e476a45f2" expires: - - Fri, 28 Jan 2022 04:26:10 GMT + - Mon, 13 Jun 2022 08:41:27 GMT source-age: - '0' strict-transport-security: @@ -121,21 +127,21 @@ interactions: via: - 1.1 varnish x-cache: - - MISS + - HIT x-cache-hits: - - '0' + - '1' x-content-type-options: - nosniff x-fastly-request-id: - - 1cb4e5f7978d7bb477349376e6e26d3e7331121c + - ddaf423f6ebea2d904e86573ac34b6f3ab71bd0d x-frame-options: - deny x-github-request-id: - - 945A:0F3C:48C1B1:6190CF:61F355DE + - 684A:3EB9:7B22E6:A74686:62A6D2F2 x-served-by: - - cache-hkg17929-HKG + - cache-qpg1274-QPG x-timer: - - S1643343670.345828,VS0,VE265 + - S1655109387.709695,VS0,VE320 x-xss-protection: - 1; mode=block status: @@ -155,13 +161,13 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-compute/23.1.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/publishers/Canonical/artifacttypes/vmimage/offers/UbuntuServer/skus/18.04-LTS/versions?$top=1&$orderby=name%20desc&api-version=2021-07-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/publishers/Canonical/artifacttypes/vmimage/offers/UbuntuServer/skus/18.04-LTS/versions?$top=1&$orderby=name%20desc&api-version=2022-03-01 response: body: - string: "[\r\n {\r\n \"location\": \"eastus\",\r\n \"name\": \"18.04.202201180\",\r\n - \ \"id\": \"/Subscriptions/00000000-0000-0000-0000-000000000000/Providers/Microsoft.Compute/Locations/eastus/Publishers/Canonical/ArtifactTypes/VMImage/Offers/UbuntuServer/Skus/18.04-LTS/Versions/18.04.202201180\"\r\n + string: "[\r\n {\r\n \"location\": \"eastus\",\r\n \"name\": \"18.04.202206090\",\r\n + \ \"id\": \"/Subscriptions/00000000-0000-0000-0000-000000000000/Providers/Microsoft.Compute/Locations/eastus/Publishers/Canonical/ArtifactTypes/VMImage/Offers/UbuntuServer/Skus/18.04-LTS/Versions/18.04.202206090\"\r\n \ }\r\n]" headers: cache-control: @@ -171,7 +177,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:21:11 GMT + - Mon, 13 Jun 2022 08:36:28 GMT expires: - '-1' pragma: @@ -188,7 +194,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/ListVMImagesVersionsFromLocation3Min;15999,Microsoft.Compute/ListVMImagesVersionsFromLocation30Min;43999 + - Microsoft.Compute/ListVMImagesVersionsFromLocation3Min;15999,Microsoft.Compute/ListVMImagesVersionsFromLocation30Min;43991 status: code: 200 message: OK @@ -206,28 +212,33 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-compute/23.1.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/publishers/Canonical/artifacttypes/vmimage/offers/UbuntuServer/skus/18.04-LTS/versions/18.04.202201180?api-version=2021-07-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/publishers/Canonical/artifacttypes/vmimage/offers/UbuntuServer/skus/18.04-LTS/versions/18.04.202206090?api-version=2022-03-01 response: body: string: "{\r\n \"properties\": {\r\n \"hyperVGeneration\": \"V1\",\r\n \"architecture\": \"x64\",\r\n \"replicaType\": \"Unmanaged\",\r\n \"disallowed\": {\r\n \ \"vmDiskType\": \"None\"\r\n },\r\n \"automaticOSUpgradeProperties\": {\r\n \"automaticOSUpgradeSupported\": true\r\n },\r\n \"imageDeprecationStatus\": - {\r\n \"imageState\": \"Active\"\r\n },\r\n \"osDiskImage\": {\r\n - \ \"operatingSystem\": \"Linux\",\r\n \"sizeInGb\": 31,\r\n \"sizeInBytes\": - 32213303808\r\n },\r\n \"dataDiskImages\": []\r\n },\r\n \"location\": - \"eastus\",\r\n \"name\": \"18.04.202201180\",\r\n \"id\": \"/Subscriptions/00000000-0000-0000-0000-000000000000/Providers/Microsoft.Compute/Locations/eastus/Publishers/Canonical/ArtifactTypes/VMImage/Offers/UbuntuServer/Skus/18.04-LTS/Versions/18.04.202201180\"\r\n}" + {\r\n \"imageState\": \"Active\"\r\n },\r\n \"features\": [\r\n + \ {\r\n \"name\": \"IsAcceleratedNetworkSupported\",\r\n \"value\": + \"True\"\r\n },\r\n {\r\n \"name\": \"DiskControllerTypes\",\r\n + \ \"value\": \"SCSI\"\r\n },\r\n {\r\n \"name\": \"IsHibernateSupported\",\r\n + \ \"value\": \"False\"\r\n }\r\n ],\r\n \"osDiskImage\": + {\r\n \"operatingSystem\": \"Linux\",\r\n \"sizeInGb\": 31,\r\n + \ \"sizeInBytes\": 32213303808\r\n },\r\n \"dataDiskImages\": []\r\n + \ },\r\n \"location\": \"eastus\",\r\n \"name\": \"18.04.202206090\",\r\n + \ \"id\": \"/Subscriptions/00000000-0000-0000-0000-000000000000/Providers/Microsoft.Compute/Locations/eastus/Publishers/Canonical/ArtifactTypes/VMImage/Offers/UbuntuServer/Skus/18.04-LTS/Versions/18.04.202206090\"\r\n}" headers: cache-control: - no-cache content-length: - - '753' + - '1043' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:21:13 GMT + - Mon, 13 Jun 2022 08:36:28 GMT expires: - '-1' pragma: @@ -244,7 +255,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/GetVMImageFromLocation3Min;12999,Microsoft.Compute/GetVMImageFromLocation30Min;73999 + - Microsoft.Compute/GetVMImageFromLocation3Min;12999,Microsoft.Compute/GetVMImageFromLocation30Min;73992 status: code: 200 message: OK @@ -262,7 +273,7 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/virtualNetworks?api-version=2018-01-01 response: @@ -276,7 +287,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:21:13 GMT + - Mon, 13 Jun 2022 08:36:29 GMT expires: - '-1' pragma: @@ -304,9 +315,9 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002?api-version=2021-06-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002?api-version=2021-12-01-preview response: body: string: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.OperationalInsights/workspaces/clitest000002'' @@ -320,7 +331,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:21:14 GMT + - Mon, 13 Jun 2022 08:36:30 GMT expires: - '-1' pragma: @@ -348,12 +359,12 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-01-28T04:19:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-13T08:36:24Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -362,7 +373,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:21:15 GMT + - Mon, 13 Jun 2022 08:36:30 GMT expires: - '-1' pragma: @@ -396,22 +407,22 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002?api-version=2021-06-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002?api-version=2021-12-01-preview response: body: string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": - \"59f4ec92-738e-4c60-b51c-cdf206d40f01\",\r\n \"provisioningState\": \"Creating\",\r\n + \"09b80918-d552-4a2d-ae78-85147ca2f36c\",\r\n \"provisioningState\": \"Creating\",\r\n \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": - \"Fri, 28 Jan 2022 04:21:27 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \"Mon, 13 Jun 2022 08:36:36 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": - \"Fri, 28 Jan 2022 12:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \"Mon, 13 Jun 2022 16:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": - \"Enabled\",\r\n \"createdDate\": \"Fri, 28 Jan 2022 04:21:26 GMT\",\r\n - \ \"modifiedDate\": \"Fri, 28 Jan 2022 04:21:26 GMT\"\r\n },\r\n \"id\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 13 Jun 2022 08:36:36 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 13 Jun 2022 08:36:36 GMT\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002\",\r\n \ \"name\": \"clitest000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n \ \"location\": \"eastus\"\r\n}" @@ -423,7 +434,7 @@ interactions: content-type: - application/json date: - - Fri, 28 Jan 2022 04:21:27 GMT + - Mon, 13 Jun 2022 08:36:37 GMT pragma: - no-cache server: @@ -434,7 +445,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' x-powered-by: - ASP.NET - ASP.NET @@ -455,22 +466,22 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002?api-version=2021-06-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002?api-version=2021-12-01-preview response: body: string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": - \"59f4ec92-738e-4c60-b51c-cdf206d40f01\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \"09b80918-d552-4a2d-ae78-85147ca2f36c\",\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": - \"Fri, 28 Jan 2022 04:21:27 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \"Mon, 13 Jun 2022 08:36:36 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": - \"Fri, 28 Jan 2022 12:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \"Mon, 13 Jun 2022 16:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": - \"Enabled\",\r\n \"createdDate\": \"Fri, 28 Jan 2022 04:21:27 GMT\",\r\n - \ \"modifiedDate\": \"Fri, 28 Jan 2022 04:21:28 GMT\"\r\n },\r\n \"id\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 13 Jun 2022 08:36:36 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 13 Jun 2022 08:36:37 GMT\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002\",\r\n \ \"name\": \"clitest000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n \ \"location\": \"eastus\"\r\n}" @@ -482,7 +493,7 @@ interactions: content-type: - application/json date: - - Fri, 28 Jan 2022 04:22:00 GMT + - Mon, 13 Jun 2022 08:37:07 GMT pragma: - no-cache server: @@ -529,7 +540,7 @@ interactions: "protectedSettings": {"workspaceKey": "[listKeys(parameters(''workspaceId''), ''2015-11-01-preview'').primarySharedKey]"}}, "name": "myvm1/OmsAgentForLinux", "location": "eastus", "dependsOn": ["Microsoft.Compute/virtualMachines/myvm1"]}, - {"apiVersion": "2021-07-01", "type": "Microsoft.Compute/virtualMachines", "name": + {"apiVersion": "2022-03-01", "type": "Microsoft.Compute/virtualMachines", "name": "myvm1", "location": "eastus", "tags": {}, "dependsOn": ["Microsoft.Network/networkInterfaces/myvm1VMNic"], "properties": {"hardwareProfile": {"vmSize": "Standard_DS1_v2"}, "networkProfile": {"networkInterfaces": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic", @@ -537,11 +548,10 @@ interactions: "fromImage", "name": null, "caching": "ReadWrite", "managedDisk": {"storageAccountType": null}}, "imageReference": {"publisher": "Canonical", "offer": "UbuntuServer", "sku": "18.04-LTS", "version": "latest"}}, "osProfile": {"computerName": "myvm1", - "adminUsername": "zhoxing", "linuxConfiguration": {"disablePasswordAuthentication": - true, "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDdfdN+YWbkBS84r36yJbgfTI+Gx1W/ErinzCGvXBeO0S8F8JBc45BGTSaNmgOiqVMef3L9Dne7xUv6CwK+NaPRF23B2Sfv1VT1RWjKzgsgLAGiMvMuXA8/BfnKyQU43P6ImgXW/89E8OE9tS2TYLWiSSOjSTiCDnH+bJOw0Gqb25CLhZiahL1lS8MPuZHQaLa71GGUJS93GeBBF6eM2aFKitdFif38RsHxwY/aLlKhjwuy0XPI/4HcIHJR9uyEiFsPQXZMbFPwfvTWyRQDqS0KfxgFXtoVQgaNq74zJv94JdqDykoXYrempJU33jCC06vi39u+xZHAdAagp6e8z/WQc7fIPEOoKqNBKO3UhjXfLfHsxM9QvEiE2kL1xBekS9XrzqSvYZBi4tiSiLAYajOdI5dlv9HgvRTdCtnfF6v8iVGpwql/B1OTOn/A9uCmRIu3o9aMjsQoegqGX6e+h7omfVaExdClXOrW1Qi5l9mUSDLJgsGm1sT9nLaVJlPotFM= - Zhou.Xing@microsoft.com\n", "path": "/home/zhoxing/.ssh/authorized_keys"}]}}}, - "additionalCapabilities": {}}}], "outputs": {}}, "parameters": {"workspaceId": - {"value": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002"}}, + "adminUsername": "v-tinani", "linuxConfiguration": {"disablePasswordAuthentication": + true, "ssh": {"publicKeys": [{"keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzgEIm/nLErNnRoeMBhFdEyItyOKCv09ga4x5dagDK06RO8lNSxqda3tmwwDepkfEzywDfvXNWfcD/8a/pH04F59eDXpq0MEoLpHMtrE5uyaOgQKEw1PVkAHYwbdLF4xZmdr41yqztTJZNHJbK1bIy814jSeuCNJISQxySNGwH5/z5i9WMxxWjOAZNMqpeqhYunrGCbMRafL1kg/7OWCSS9o+EKF4rJD0dSq/933FtcdPAgxJGh5mzafmSpmdppCavmsa9wLxUF+Khxyhfj7xtt2k/4z9OMuwIqE0buhnugv+NGWjUaNaJnet1XV5dIcKPlIY17bRRikKIViF7c/rJ", + "path": "/home/v-tinani/.ssh/authorized_keys"}]}}}}}], "outputs": {}}, "parameters": + {"workspaceId": {"value": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002"}}, "mode": "incremental"}}' headers: Accept: @@ -553,21 +563,21 @@ interactions: Connection: - keep-alive Content-Length: - - '4399' + - '4173' Content-Type: - application/json ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/vm_deploy_rvpCSoj3JhCdSLB7L7LVXdaFXLlHiK6f","name":"vm_deploy_rvpCSoj3JhCdSLB7L7LVXdaFXLlHiK6f","type":"Microsoft.Resources/deployments","properties":{"templateHash":"6937889556856091540","parameters":{"workspaceId":{"type":"SecureString"}},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2022-01-28T04:22:08.0171267Z","duration":"PT0.0002757S","correlationId":"cb79491e-2109-4878-860b-d8a1645c9df9","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus"]},{"resourceType":"networkSecurityGroups","locations":["eastus"]},{"resourceType":"publicIPAddresses","locations":["eastus"]},{"resourceType":"networkInterfaces","locations":["eastus"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachines/extensions","locations":["eastus"]},{"resourceType":"virtualMachines","locations":["eastus"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/virtualNetworks/myvm1VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"myvm1VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkSecurityGroups/myvm1NSG","resourceType":"Microsoft.Network/networkSecurityGroups","resourceName":"myvm1NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"myvm1PublicIP"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","apiVersion":"2015-11-01-preview"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","actionName":"listKeys","apiVersion":"2015-11-01-preview"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux","resourceType":"Microsoft.Compute/virtualMachines/extensions","resourceName":"myvm1/OmsAgentForLinux"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"}]}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/vm_deploy_CsE4BjfrhNb51DO4R59PERQwsDY46zHg","name":"vm_deploy_CsE4BjfrhNb51DO4R59PERQwsDY46zHg","type":"Microsoft.Resources/deployments","properties":{"templateHash":"10412097283398072325","parameters":{"workspaceId":{"type":"SecureString"}},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2022-06-13T08:37:13.154517Z","duration":"PT0.0007551S","correlationId":"7a0680c6-7fad-432d-b9f3-e8c76f99b060","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus"]},{"resourceType":"networkSecurityGroups","locations":["eastus"]},{"resourceType":"publicIPAddresses","locations":["eastus"]},{"resourceType":"networkInterfaces","locations":["eastus"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachines/extensions","locations":["eastus"]},{"resourceType":"virtualMachines","locations":["eastus"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/virtualNetworks/myvm1VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"myvm1VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkSecurityGroups/myvm1NSG","resourceType":"Microsoft.Network/networkSecurityGroups","resourceName":"myvm1NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"myvm1PublicIP"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","apiVersion":"2015-11-01-preview"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","actionName":"listKeys","apiVersion":"2015-11-01-preview"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux","resourceType":"Microsoft.Compute/virtualMachines/extensions","resourceName":"myvm1/OmsAgentForLinux"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"}]}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/vm_deploy_rvpCSoj3JhCdSLB7L7LVXdaFXLlHiK6f/operationStatuses/08585582631602680286?api-version=2021-04-01 + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/vm_deploy_CsE4BjfrhNb51DO4R59PERQwsDY46zHg/operationStatuses/08585464974550459637?api-version=2021-04-01 cache-control: - no-cache content-length: @@ -575,7 +585,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:22:09 GMT + - Mon, 13 Jun 2022 08:37:14 GMT expires: - '-1' pragma: @@ -603,9 +613,9 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585582631602680286?api-version=2021-04-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585464974550459637?api-version=2021-04-01 response: body: string: '{"status":"Running"}' @@ -617,7 +627,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:22:40 GMT + - Mon, 13 Jun 2022 08:37:45 GMT expires: - '-1' pragma: @@ -645,9 +655,9 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585582631602680286?api-version=2021-04-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585464974550459637?api-version=2021-04-01 response: body: string: '{"status":"Running"}' @@ -659,7 +669,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:23:10 GMT + - Mon, 13 Jun 2022 08:38:15 GMT expires: - '-1' pragma: @@ -687,9 +697,9 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585582631602680286?api-version=2021-04-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585464974550459637?api-version=2021-04-01 response: body: string: '{"status":"Running"}' @@ -701,7 +711,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:23:40 GMT + - Mon, 13 Jun 2022 08:38:47 GMT expires: - '-1' pragma: @@ -729,9 +739,9 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585582631602680286?api-version=2021-04-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08585464974550459637?api-version=2021-04-01 response: body: string: '{"status":"Succeeded"}' @@ -743,7 +753,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:11 GMT + - Mon, 13 Jun 2022 08:39:17 GMT expires: - '-1' pragma: @@ -771,21 +781,21 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/vm_deploy_rvpCSoj3JhCdSLB7L7LVXdaFXLlHiK6f","name":"vm_deploy_rvpCSoj3JhCdSLB7L7LVXdaFXLlHiK6f","type":"Microsoft.Resources/deployments","properties":{"templateHash":"6937889556856091540","parameters":{"workspaceId":{"type":"SecureString"}},"mode":"Incremental","provisioningState":"Succeeded","timestamp":"2022-01-28T04:23:55.8465975Z","duration":"PT1M47.8297465S","correlationId":"cb79491e-2109-4878-860b-d8a1645c9df9","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus"]},{"resourceType":"networkSecurityGroups","locations":["eastus"]},{"resourceType":"publicIPAddresses","locations":["eastus"]},{"resourceType":"networkInterfaces","locations":["eastus"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachines/extensions","locations":["eastus"]},{"resourceType":"virtualMachines","locations":["eastus"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/virtualNetworks/myvm1VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"myvm1VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkSecurityGroups/myvm1NSG","resourceType":"Microsoft.Network/networkSecurityGroups","resourceName":"myvm1NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"myvm1PublicIP"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","apiVersion":"2015-11-01-preview"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","actionName":"listKeys","apiVersion":"2015-11-01-preview"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux","resourceType":"Microsoft.Compute/virtualMachines/extensions","resourceName":"myvm1/OmsAgentForLinux"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"}],"outputs":{},"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkSecurityGroups/myvm1NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/virtualNetworks/myvm1VNET"}]}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Resources/deployments/vm_deploy_CsE4BjfrhNb51DO4R59PERQwsDY46zHg","name":"vm_deploy_CsE4BjfrhNb51DO4R59PERQwsDY46zHg","type":"Microsoft.Resources/deployments","properties":{"templateHash":"10412097283398072325","parameters":{"workspaceId":{"type":"SecureString"}},"mode":"Incremental","provisioningState":"Succeeded","timestamp":"2022-06-13T08:39:13.5721809Z","duration":"PT2M0.418419S","correlationId":"7a0680c6-7fad-432d-b9f3-e8c76f99b060","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus"]},{"resourceType":"networkSecurityGroups","locations":["eastus"]},{"resourceType":"publicIPAddresses","locations":["eastus"]},{"resourceType":"networkInterfaces","locations":["eastus"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachines/extensions","locations":["eastus"]},{"resourceType":"virtualMachines","locations":["eastus"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/virtualNetworks/myvm1VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"myvm1VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkSecurityGroups/myvm1NSG","resourceType":"Microsoft.Network/networkSecurityGroups","resourceName":"myvm1NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"myvm1PublicIP"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","apiVersion":"2015-11-01-preview"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.operationalinsights/workspaces/clitest000002","resourceType":"microsoft.operationalinsights/workspaces","resourceName":"clitest000002","actionName":"listKeys","apiVersion":"2015-11-01-preview"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux","resourceType":"Microsoft.Compute/virtualMachines/extensions","resourceName":"myvm1/OmsAgentForLinux"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"myvm1VMNic"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"myvm1"}],"outputs":{},"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkSecurityGroups/myvm1NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/virtualNetworks/myvm1VNET"}]}}' headers: cache-control: - no-cache content-length: - - '4740' + - '4739' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:11 GMT + - Mon, 13 Jun 2022 08:39:17 GMT expires: - '-1' pragma: @@ -813,82 +823,83 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-compute/23.1.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-compute/27.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1?$expand=instanceView&api-version=2021-07-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1?$expand=instanceView&api-version=2022-03-01 response: body: string: "{\r\n \"name\": \"myvm1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1\",\r\n \ \"type\": \"Microsoft.Compute/virtualMachines\",\r\n \"location\": \"eastus\",\r\n - \ \"tags\": {},\r\n \"properties\": {\r\n \"vmId\": \"cb776bfc-5c7f-44c5-a34b-05fa6ebcc3f7\",\r\n + \ \"tags\": {},\r\n \"properties\": {\r\n \"vmId\": \"8f5d801c-25f7-4ecf-a058-ca5ae14c2085\",\r\n \ \"hardwareProfile\": {\r\n \"vmSize\": \"Standard_DS1_v2\"\r\n },\r\n \ \"storageProfile\": {\r\n \"imageReference\": {\r\n \"publisher\": \"Canonical\",\r\n \"offer\": \"UbuntuServer\",\r\n \"sku\": \"18.04-LTS\",\r\n \"version\": \"latest\",\r\n \"exactVersion\": - \"18.04.202201180\"\r\n },\r\n \"osDisk\": {\r\n \"osType\": - \"Linux\",\r\n \"name\": \"myvm1_disk1_4b99cc7931bd4ac8899766c4804e0b96\",\r\n + \"18.04.202206090\"\r\n },\r\n \"osDisk\": {\r\n \"osType\": + \"Linux\",\r\n \"name\": \"myvm1_disk1_fe8b0eddd14146fcb47d0160f0fb4b63\",\r\n \ \"createOption\": \"FromImage\",\r\n \"caching\": \"ReadWrite\",\r\n \ \"managedDisk\": {\r\n \"storageAccountType\": \"Premium_LRS\",\r\n - \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/disks/myvm1_disk1_4b99cc7931bd4ac8899766c4804e0b96\"\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/disks/myvm1_disk1_fe8b0eddd14146fcb47d0160f0fb4b63\"\r\n \ },\r\n \"deleteOption\": \"Detach\",\r\n \"diskSizeGB\": 30\r\n },\r\n \"dataDisks\": []\r\n },\r\n \"osProfile\": - {\r\n \"computerName\": \"myvm1\",\r\n \"adminUsername\": \"zhoxing\",\r\n + {\r\n \"computerName\": \"myvm1\",\r\n \"adminUsername\": \"v-tinani\",\r\n \ \"linuxConfiguration\": {\r\n \"disablePasswordAuthentication\": true,\r\n \"ssh\": {\r\n \"publicKeys\": [\r\n {\r\n - \ \"path\": \"/home/zhoxing/.ssh/authorized_keys\",\r\n \"keyData\": - \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDdfdN+YWbkBS84r36yJbgfTI+Gx1W/ErinzCGvXBeO0S8F8JBc45BGTSaNmgOiqVMef3L9Dne7xUv6CwK+NaPRF23B2Sfv1VT1RWjKzgsgLAGiMvMuXA8/BfnKyQU43P6ImgXW/89E8OE9tS2TYLWiSSOjSTiCDnH+bJOw0Gqb25CLhZiahL1lS8MPuZHQaLa71GGUJS93GeBBF6eM2aFKitdFif38RsHxwY/aLlKhjwuy0XPI/4HcIHJR9uyEiFsPQXZMbFPwfvTWyRQDqS0KfxgFXtoVQgaNq74zJv94JdqDykoXYrempJU33jCC06vi39u+xZHAdAagp6e8z/WQc7fIPEOoKqNBKO3UhjXfLfHsxM9QvEiE2kL1xBekS9XrzqSvYZBi4tiSiLAYajOdI5dlv9HgvRTdCtnfF6v8iVGpwql/B1OTOn/A9uCmRIu3o9aMjsQoegqGX6e+h7omfVaExdClXOrW1Qi5l9mUSDLJgsGm1sT9nLaVJlPotFM= - Zhou.Xing@microsoft.com\\n\"\r\n }\r\n ]\r\n },\r\n - \ \"provisionVMAgent\": true,\r\n \"patchSettings\": {\r\n \"patchMode\": - \"ImageDefault\",\r\n \"assessmentMode\": \"ImageDefault\"\r\n }\r\n - \ },\r\n \"secrets\": [],\r\n \"allowExtensionOperations\": + \ \"path\": \"/home/v-tinani/.ssh/authorized_keys\",\r\n \"keyData\": + \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzgEIm/nLErNnRoeMBhFdEyItyOKCv09ga4x5dagDK06RO8lNSxqda3tmwwDepkfEzywDfvXNWfcD/8a/pH04F59eDXpq0MEoLpHMtrE5uyaOgQKEw1PVkAHYwbdLF4xZmdr41yqztTJZNHJbK1bIy814jSeuCNJISQxySNGwH5/z5i9WMxxWjOAZNMqpeqhYunrGCbMRafL1kg/7OWCSS9o+EKF4rJD0dSq/933FtcdPAgxJGh5mzafmSpmdppCavmsa9wLxUF+Khxyhfj7xtt2k/4z9OMuwIqE0buhnugv+NGWjUaNaJnet1XV5dIcKPlIY17bRRikKIViF7c/rJ\"\r\n + \ }\r\n ]\r\n },\r\n \"provisionVMAgent\": + true,\r\n \"patchSettings\": {\r\n \"patchMode\": \"ImageDefault\",\r\n + \ \"assessmentMode\": \"ImageDefault\"\r\n },\r\n \"enableVMAgentPlatformUpdates\": + false\r\n },\r\n \"secrets\": [],\r\n \"allowExtensionOperations\": true,\r\n \"requireGuestProvisionSignal\": true\r\n },\r\n \"networkProfile\": {\"networkInterfaces\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic\"}]},\r\n \ \"provisioningState\": \"Succeeded\",\r\n \"instanceView\": {\r\n \"computerName\": \"myvm1\",\r\n \"osName\": \"ubuntu\",\r\n \"osVersion\": \"18.04\",\r\n - \ \"vmAgent\": {\r\n \"vmAgentVersion\": \"2.6.0.2\",\r\n \"statuses\": + \ \"vmAgent\": {\r\n \"vmAgentVersion\": \"2.7.1.0\",\r\n \"statuses\": [\r\n {\r\n \"code\": \"ProvisioningState/succeeded\",\r\n \ \"level\": \"Info\",\r\n \"displayStatus\": \"Ready\",\r\n \ \"message\": \"Guest Agent is running\",\r\n \"time\": - \"2022-01-28T04:23:45+00:00\"\r\n }\r\n ],\r\n \"extensionHandlers\": + \"2022-06-13T08:39:00+00:00\"\r\n }\r\n ],\r\n \"extensionHandlers\": [\r\n {\r\n \"type\": \"Microsoft.EnterpriseCloud.Monitoring.OmsAgentForLinux\",\r\n - \ \"typeHandlerVersion\": \"1.14.9\",\r\n \"status\": + \ \"typeHandlerVersion\": \"1.14.16\",\r\n \"status\": {\r\n \"code\": \"ProvisioningState/succeeded\",\r\n \"level\": \"Info\",\r\n \"displayStatus\": \"Ready\",\r\n \"message\": \"Plugin enabled\"\r\n }\r\n }\r\n ]\r\n },\r\n - \ \"disks\": [\r\n {\r\n \"name\": \"myvm1_disk1_4b99cc7931bd4ac8899766c4804e0b96\",\r\n + \ \"disks\": [\r\n {\r\n \"name\": \"myvm1_disk1_fe8b0eddd14146fcb47d0160f0fb4b63\",\r\n \ \"statuses\": [\r\n {\r\n \"code\": \"ProvisioningState/succeeded\",\r\n \ \"level\": \"Info\",\r\n \"displayStatus\": \"Provisioning - succeeded\",\r\n \"time\": \"2022-01-28T04:22:32.7647937+00:00\"\r\n + succeeded\",\r\n \"time\": \"2022-06-13T08:37:38.6227725+00:00\"\r\n \ }\r\n ]\r\n }\r\n ],\r\n \"extensions\": [\r\n {\r\n \"name\": \"OmsAgentForLinux\",\r\n \"type\": \"Microsoft.EnterpriseCloud.Monitoring.OmsAgentForLinux\",\r\n \"typeHandlerVersion\": - \"1.14.9\",\r\n \"statuses\": [\r\n {\r\n \"code\": + \"1.14.16\",\r\n \"statuses\": [\r\n {\r\n \"code\": \"ProvisioningState/succeeded\",\r\n \"level\": \"Info\",\r\n \ \"displayStatus\": \"Provisioning succeeded\",\r\n \"message\": \"Enable succeeded\"\r\n }\r\n ]\r\n }\r\n ],\r\n \ \"hyperVGeneration\": \"V1\",\r\n \"statuses\": [\r\n {\r\n \ \"code\": \"ProvisioningState/succeeded\",\r\n \"level\": \"Info\",\r\n \"displayStatus\": \"Provisioning succeeded\",\r\n - \ \"time\": \"2022-01-28T04:23:51.5308573+00:00\"\r\n },\r\n + \ \"time\": \"2022-06-13T08:39:08.0765052+00:00\"\r\n },\r\n \ {\r\n \"code\": \"PowerState/running\",\r\n \"level\": \"Info\",\r\n \"displayStatus\": \"VM running\"\r\n }\r\n - \ ]\r\n }\r\n },\r\n \"resources\": [\r\n {\r\n \"name\": - \"OmsAgentForLinux\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux\",\r\n + \ ]\r\n },\r\n \"timeCreated\": \"2022-06-13T08:37:37.0915581+00:00\"\r\n + \ },\r\n \"resources\": [\r\n {\r\n \"name\": \"OmsAgentForLinux\",\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1/extensions/OmsAgentForLinux\",\r\n \ \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\r\n \"location\": \"eastus\",\r\n \"properties\": {\r\n \"autoUpgradeMinorVersion\": true,\r\n \"provisioningState\": \"Succeeded\",\r\n \"publisher\": \"Microsoft.EnterpriseCloud.Monitoring\",\r\n \"type\": \"OmsAgentForLinux\",\r\n - \ \"typeHandlerVersion\": \"1.0\",\r\n \"settings\": {\"workspaceId\":\"59f4ec92-738e-4c60-b51c-cdf206d40f01\",\"stopOnMultipleConnections\":\"true\"}\r\n + \ \"typeHandlerVersion\": \"1.0\",\r\n \"settings\": {\"workspaceId\":\"09b80918-d552-4a2d-ae78-85147ca2f36c\",\"stopOnMultipleConnections\":\"true\"}\r\n \ }\r\n }\r\n ]\r\n}" headers: cache-control: - no-cache content-length: - - '5539' + - '5450' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:13 GMT + - Mon, 13 Jun 2022 08:39:20 GMT expires: - '-1' pragma: @@ -905,7 +916,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-resource: - - Microsoft.Compute/LowCostGet3Min;3994,Microsoft.Compute/LowCostGet30Min;31990 + - Microsoft.Compute/LowCostGet3Min;3986,Microsoft.Compute/LowCostGet30Min;31881 status: code: 200 message: OK @@ -923,18 +934,18 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic?api-version=2018-01-01 response: body: string: "{\r\n \"name\": \"myvm1VMNic\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic\",\r\n - \ \"etag\": \"W/\\\"abe1cd82-5301-4218-895b-070760be9bb0\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"c2514101-aa86-4084-81c1-b50bdc1bbe8b\\\"\",\r\n \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceGuid\": \"29b0ba8f-6d88-4cb6-8410-8ece19551288\",\r\n + \"Succeeded\",\r\n \"resourceGuid\": \"33f8bdfc-f195-4fa0-ac06-ff93ca30645a\",\r\n \ \"ipConfigurations\": [\r\n {\r\n \"name\": \"ipconfigmyvm1\",\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic/ipConfigurations/ipconfigmyvm1\",\r\n - \ \"etag\": \"W/\\\"abe1cd82-5301-4218-895b-070760be9bb0\\\"\",\r\n + \ \"etag\": \"W/\\\"c2514101-aa86-4084-81c1-b50bdc1bbe8b\\\"\",\r\n \ \"type\": \"Microsoft.Network/networkInterfaces/ipConfigurations\",\r\n \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \ \"privateIPAddress\": \"10.0.0.4\",\r\n \"privateIPAllocationMethod\": @@ -943,8 +954,8 @@ interactions: \ },\r\n \"primary\": true,\r\n \"privateIPAddressVersion\": \"IPv4\"\r\n }\r\n }\r\n ],\r\n \"dnsSettings\": {\r\n \"dnsServers\": [],\r\n \"appliedDnsServers\": [],\r\n \"internalDomainNameSuffix\": - \"k0s3f0iakcvu1p53frmptnxhrc.bx.internal.cloudapp.net\"\r\n },\r\n \"macAddress\": - \"00-22-48-2B-4D-00\",\r\n \"enableAcceleratedNetworking\": false,\r\n + \"i2o0idzv5y5udgafmdyi0bo5bh.bx.internal.cloudapp.net\"\r\n },\r\n \"macAddress\": + \"00-22-48-32-6E-23\",\r\n \"enableAcceleratedNetworking\": false,\r\n \ \"enableIPForwarding\": false,\r\n \"networkSecurityGroup\": {\r\n \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkSecurityGroups/myvm1NSG\"\r\n \ },\r\n \"primary\": true,\r\n \"virtualMachine\": {\r\n \"id\": @@ -958,9 +969,9 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:13 GMT + - Mon, 13 Jun 2022 08:39:20 GMT etag: - - W/"abe1cd82-5301-4218-895b-070760be9bb0" + - W/"c2514101-aa86-4084-81c1-b50bdc1bbe8b" expires: - '-1' pragma: @@ -977,7 +988,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 99f63d96-92af-4ccf-b7ff-3255d5b30027 + - aab707c2-6e88-44f2-a994-f70f9cb80e9a status: code: 200 message: OK @@ -995,17 +1006,17 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-network/19.3.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-network/20.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP?api-version=2018-01-01 response: body: string: "{\r\n \"name\": \"myvm1PublicIP\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/publicIPAddresses/myvm1PublicIP\",\r\n - \ \"etag\": \"W/\\\"a0aa499b-c434-4157-845b-5dbf4350a037\\\"\",\r\n \"location\": + \ \"etag\": \"W/\\\"1650409b-8c17-4335-aade-8e96029bcd9d\\\"\",\r\n \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": - \"Succeeded\",\r\n \"resourceGuid\": \"a0be1600-1b0a-4e38-b524-e2a6bb6ce2fd\",\r\n - \ \"ipAddress\": \"20.124.198.85\",\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n - \ \"publicIPAllocationMethod\": \"Dynamic\",\r\n \"idleTimeoutInMinutes\": + \"Succeeded\",\r\n \"resourceGuid\": \"e5c64c77-8f4d-4f37-91ac-dfbadd22f26c\",\r\n + \ \"ipAddress\": \"20.228.221.211\",\r\n \"publicIPAddressVersion\": + \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Dynamic\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipTags\": [],\r\n \"ipConfiguration\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Network/networkInterfaces/myvm1VMNic/ipConfigurations/ipconfigmyvm1\"\r\n \ }\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \ \"sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}" @@ -1013,13 +1024,13 @@ interactions: cache-control: - no-cache content-length: - - '915' + - '916' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:14 GMT + - Mon, 13 Jun 2022 08:39:20 GMT etag: - - W/"a0aa499b-c434-4157-845b-5dbf4350a037" + - W/"1650409b-8c17-4335-aade-8e96029bcd9d" expires: - '-1' pragma: @@ -1036,7 +1047,7 @@ interactions: x-content-type-options: - nosniff x-ms-arm-service-request-id: - - 1ea4e5bb-29d2-410f-bf0b-ed3a1df46664 + - c49be5aa-c77d-426e-8ddd-308cc6098667 status: code: 200 message: OK @@ -1058,12 +1069,12 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/dataSources/DataSource_LinuxPerformanceCollection_88888888-0000-0000-0000-000000000001?api-version=2020-08-01 response: body: - string: '{"kind":"LinuxPerformanceCollection","properties":{"state":"Enabled"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceCollection_88888888-0000-0000-0000-000000000001","etag":"W/\"datetime''2022-01-28T04%3A24%3A15.8278911Z''\"","name":"DataSource_LinuxPerformanceCollection_88888888-0000-0000-0000-000000000001","type":"Microsoft.OperationalInsights/workspaces/datasources"}' + string: '{"kind":"LinuxPerformanceCollection","properties":{"state":"Enabled"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceCollection_88888888-0000-0000-0000-000000000001","etag":"W/\"datetime''2022-06-13T08%3A39%3A23.5259981Z''\"","name":"DataSource_LinuxPerformanceCollection_88888888-0000-0000-0000-000000000001","type":"Microsoft.OperationalInsights/workspaces/datasources"}' headers: cache-control: - no-cache @@ -1072,7 +1083,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:15 GMT + - Mon, 13 Jun 2022 08:39:23 GMT expires: - '-1' pragma: @@ -1088,7 +1099,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' x-powered-by: - ASP.NET status: @@ -1115,14 +1126,14 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/dataSources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000002?api-version=2020-08-01 response: body: string: '{"kind":"LinuxPerformanceObject","properties":{"instanceName":"*","intervalSeconds":10,"objectName":"Memory","performanceCounters":[{"counterName":"Available MBytes Memory"},{"counterName":"% Used Memory"},{"counterName":"% Used Swap - Space"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000002","etag":"W/\"datetime''2022-01-28T04%3A24%3A16.4696492Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000002","type":"Microsoft.OperationalInsights/workspaces/datasources"}' + Space"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000002","etag":"W/\"datetime''2022-06-13T08%3A39%3A24.2292625Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000002","type":"Microsoft.OperationalInsights/workspaces/datasources"}' headers: cache-control: - no-cache @@ -1131,7 +1142,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:15 GMT + - Mon, 13 Jun 2022 08:39:24 GMT expires: - '-1' pragma: @@ -1147,7 +1158,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1197' x-powered-by: - ASP.NET status: @@ -1173,13 +1184,13 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/dataSources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000003?api-version=2020-08-01 response: body: string: '{"kind":"LinuxPerformanceObject","properties":{"instanceName":"*","intervalSeconds":10,"objectName":"Processor","performanceCounters":[{"counterName":"% - Processor Time"},{"counterName":"% Privileged Time"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000003","etag":"W/\"datetime''2022-01-28T04%3A24%3A17.2572372Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000003","type":"Microsoft.OperationalInsights/workspaces/datasources"}' + Processor Time"},{"counterName":"% Privileged Time"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000003","etag":"W/\"datetime''2022-06-13T08%3A39%3A24.9167596Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000003","type":"Microsoft.OperationalInsights/workspaces/datasources"}' headers: cache-control: - no-cache @@ -1188,7 +1199,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:16 GMT + - Mon, 13 Jun 2022 08:39:25 GMT expires: - '-1' pragma: @@ -1204,7 +1215,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1196' x-powered-by: - ASP.NET status: @@ -1232,7 +1243,7 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/dataSources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000004?api-version=2020-08-01 response: @@ -1240,7 +1251,7 @@ interactions: string: '{"kind":"LinuxPerformanceObject","properties":{"instanceName":"*","intervalSeconds":10,"objectName":"Logical Disk","performanceCounters":[{"counterName":"% Used Inodes"},{"counterName":"Free Megabytes"},{"counterName":"% Used Space"},{"counterName":"Disk Transfers/sec"},{"counterName":"Disk - Reads/sec"},{"counterName":"Disk Writes/sec"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000004","etag":"W/\"datetime''2022-01-28T04%3A24%3A17.9743247Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000004","type":"Microsoft.OperationalInsights/workspaces/datasources"}' + Reads/sec"},{"counterName":"Disk Writes/sec"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000004","etag":"W/\"datetime''2022-06-13T08%3A39%3A25.6354873Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000004","type":"Microsoft.OperationalInsights/workspaces/datasources"}' headers: cache-control: - no-cache @@ -1249,7 +1260,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:17 GMT + - Mon, 13 Jun 2022 08:39:25 GMT expires: - '-1' pragma: @@ -1265,7 +1276,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1195' x-powered-by: - ASP.NET status: @@ -1291,13 +1302,13 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/dataSources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000005?api-version=2020-08-01 response: body: string: '{"kind":"LinuxPerformanceObject","properties":{"instanceName":"*","intervalSeconds":10,"objectName":"Network","performanceCounters":[{"counterName":"Total - Bytes Transmitted"},{"counterName":"Total Bytes Received"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000005","etag":"W/\"datetime''2022-01-28T04%3A24%3A18.7667825Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000005","type":"Microsoft.OperationalInsights/workspaces/datasources"}' + Bytes Transmitted"},{"counterName":"Total Bytes Received"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000005","etag":"W/\"datetime''2022-06-13T08%3A39%3A26.4167892Z''\"","name":"DataSource_LinuxPerformanceObject_88888888-0000-0000-0000-000000000005","type":"Microsoft.OperationalInsights/workspaces/datasources"}' headers: cache-control: - no-cache @@ -1306,7 +1317,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:19 GMT + - Mon, 13 Jun 2022 08:39:26 GMT expires: - '-1' pragma: @@ -1322,7 +1333,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1195' + - '1194' x-powered-by: - ASP.NET status: @@ -1346,12 +1357,12 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/dataSources/DataSource_LinuxSyslogCollection_88888888-0000-0000-0000-000000000006?api-version=2020-08-01 response: body: - string: '{"kind":"LinuxSyslogCollection","properties":{"state":"Enabled"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxSyslogCollection_88888888-0000-0000-0000-000000000006","etag":"W/\"datetime''2022-01-28T04%3A24%3A19.5222547Z''\"","name":"DataSource_LinuxSyslogCollection_88888888-0000-0000-0000-000000000006","type":"Microsoft.OperationalInsights/workspaces/datasources"}' + string: '{"kind":"LinuxSyslogCollection","properties":{"state":"Enabled"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxSyslogCollection_88888888-0000-0000-0000-000000000006","etag":"W/\"datetime''2022-06-13T08%3A39%3A27.2137476Z''\"","name":"DataSource_LinuxSyslogCollection_88888888-0000-0000-0000-000000000006","type":"Microsoft.OperationalInsights/workspaces/datasources"}' headers: cache-control: - no-cache @@ -1360,7 +1371,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:20 GMT + - Mon, 13 Jun 2022 08:39:27 GMT expires: - '-1' pragma: @@ -1376,7 +1387,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1194' + - '1193' x-powered-by: - ASP.NET status: @@ -1401,12 +1412,12 @@ interactions: ParameterSetName: - -n -g --image --nsg-rule --workspace --generate-ssh-keys User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-loganalytics/12.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/dataSources/DataSource_LinuxSyslog_88888888-0000-0000-0000-000000000007?api-version=2020-08-01 response: body: - string: '{"kind":"LinuxSyslog","properties":{"syslogName":"syslog","syslogSeverities":[{"severity":"notice"},{"severity":"info"},{"severity":"debug"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxSyslog_88888888-0000-0000-0000-000000000007","etag":"W/\"datetime''2022-01-28T04%3A24%3A20.4991842Z''\"","name":"DataSource_LinuxSyslog_88888888-0000-0000-0000-000000000007","type":"Microsoft.OperationalInsights/workspaces/datasources"}' + string: '{"kind":"LinuxSyslog","properties":{"syslogName":"syslog","syslogSeverities":[{"severity":"notice"},{"severity":"info"},{"severity":"debug"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.OperationalInsights/workspaces/clitest000002/datasources/DataSource_LinuxSyslog_88888888-0000-0000-0000-000000000007","etag":"W/\"datetime''2022-06-13T08%3A39%3A27.9950546Z''\"","name":"DataSource_LinuxSyslog_88888888-0000-0000-0000-000000000007","type":"Microsoft.OperationalInsights/workspaces/datasources"}' headers: cache-control: - no-cache @@ -1415,7 +1426,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:24:20 GMT + - Mon, 13 Jun 2022 08:39:28 GMT expires: - '-1' pragma: @@ -1431,7 +1442,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1193' + - '1192' x-powered-by: - ASP.NET status: @@ -1451,12 +1462,12 @@ interactions: ParameterSetName: - -g -n --scopes --condition --condition-query --description User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-01-28T04:19:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-13T08:36:24Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -1465,7 +1476,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:22 GMT + - Mon, 13 Jun 2022 08:42:28 GMT expires: - '-1' pragma: @@ -1504,23 +1515,23 @@ interactions: ParameterSetName: - -g -n --scopes --condition --condition-query --description User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:29.2470432Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:33.6934384Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: cache-control: - no-cache content-length: - - '1099' + - '1101' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:36 GMT + - Mon, 13 Jun 2022 08:42:44 GMT expires: - '-1' pragma: @@ -1538,7 +1549,7 @@ interactions: x-rate-limit-remaining: - '14' x-rate-limit-reset: - - '2022-01-28T04:28:29.2507144Z' + - '2022-06-13T08:43:33.6853374Z' status: code: 201 message: Created @@ -1556,12 +1567,12 @@ interactions: ParameterSetName: - -g -n --scopes --condition --description User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-01-28T04:19:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-13T08:36:24Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -1570,7 +1581,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:37 GMT + - Mon, 13 Jun 2022 08:42:45 GMT expires: - '-1' pragma: @@ -1609,12 +1620,12 @@ interactions: ParameterSetName: - -g -n --scopes --condition --description User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq02?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq02","name":"sq02","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:42.9354861Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:42.9354861Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq02","name":"sq02","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:50.248816Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:50.248816Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: @@ -1625,7 +1636,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:47 GMT + - Mon, 13 Jun 2022 08:42:53 GMT expires: - '-1' pragma: @@ -1643,7 +1654,7 @@ interactions: x-rate-limit-remaining: - '14' x-rate-limit-reset: - - '2022-01-28T04:28:43.7670603Z' + - '2022-06-13T08:43:50.3906272Z' status: code: 201 message: Created @@ -1662,23 +1673,23 @@ interactions: - -g -n --condition --condition-query --description --severity --disabled --evaluation-frequency --window-size User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:29.2470432Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:33.6934384Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: cache-control: - no-cache content-length: - - '1099' + - '1101' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:48 GMT + - Mon, 13 Jun 2022 08:42:54 GMT expires: - '-1' pragma: @@ -1698,7 +1709,7 @@ interactions: x-rate-limit-remaining: - '49' x-rate-limit-reset: - - '2022-01-28T04:28:48.8160279Z' + - '2022-06-13T08:43:54.5951002Z' status: code: 200 message: OK @@ -1728,23 +1739,23 @@ interactions: - -g -n --condition --condition-query --description --severity --disabled --evaluation-frequency --window-size User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:49.4972395Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:55.3058307Z"},"properties":{"description":"Test rule 2","severity":4,"enabled":false,"evaluationFrequency":"PT10M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT10M","criteria":{"allOf":[{"query":"union Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: cache-control: - no-cache content-length: - - '1126' + - '1128' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:50 GMT + - Mon, 13 Jun 2022 08:42:57 GMT expires: - '-1' pragma: @@ -1760,13 +1771,13 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' x-rate-limit-limit: - 1m x-rate-limit-remaining: - - '13' + - '14' x-rate-limit-reset: - - '2022-01-28T04:28:29.2507144Z' + - '2022-06-13T08:43:56.0289586Z' status: code: 200 message: OK @@ -1784,23 +1795,23 @@ interactions: ParameterSetName: - -g -n --mad --auto-mitigate --skip-query-validation User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:49.4972395Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:55.3058307Z"},"properties":{"description":"Test rule 2","severity":4,"enabled":false,"evaluationFrequency":"PT10M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT10M","criteria":{"allOf":[{"query":"union Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: cache-control: - no-cache content-length: - - '1126' + - '1128' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:51 GMT + - Mon, 13 Jun 2022 08:42:58 GMT expires: - '-1' pragma: @@ -1820,7 +1831,7 @@ interactions: x-rate-limit-remaining: - '49' x-rate-limit-reset: - - '2022-01-28T04:28:51.9201616Z' + - '2022-06-13T08:43:58.3861850Z' status: code: 200 message: OK @@ -1849,23 +1860,23 @@ interactions: ParameterSetName: - -g -n --mad --auto-mitigate --skip-query-validation User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:52.6372721Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:59.1465618Z"},"properties":{"description":"Test rule 2","severity":4,"enabled":true,"evaluationFrequency":"PT10M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT10M","criteria":{"allOf":[{"query":"union Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":false,"muteActionsDuration":"PT30M","checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":true}}' headers: cache-control: - no-cache content-length: - - '1155' + - '1157' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:27:55 GMT + - Mon, 13 Jun 2022 08:43:02 GMT expires: - '-1' pragma: @@ -1881,18 +1892,18 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' x-rate-limit-limit: - 1m x-rate-limit-remaining: - - '14' + - '13' x-rate-limit-reset: - - '2022-01-28T04:28:52.6126925Z' + - '2022-06-13T08:43:33.6853374Z' status: code: 200 message: OK - request: - body: '{"location": "global", "properties": {"groupShortName": "clitest4mavl", + body: '{"location": "global", "properties": {"groupShortName": "clitest24zx5", "enabled": true, "emailReceivers": [], "smsReceivers": [], "webhookReceivers": [], "itsmReceivers": [], "azureAppPushReceivers": [], "automationRunbookReceivers": [], "voiceReceivers": [], "logicAppReceivers": [], "azureFunctionReceivers": @@ -1913,12 +1924,12 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-monitor/3.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-monitor/3.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/actionGroups/clitest000003?api-version=2021-09-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000003","type":"Microsoft.Insights/ActionGroups","name":"clitest000003","location":"Global","kind":null,"tags":null,"properties":{"groupShortName":"clitest4mavl","enabled":true,"emailReceivers":[],"smsReceivers":[],"webhookReceivers":[],"eventHubReceivers":[],"itsmReceivers":[],"azureAppPushReceivers":[],"automationRunbookReceivers":[],"voiceReceivers":[],"logicAppReceivers":[],"azureFunctionReceivers":[],"armRoleReceivers":[]},"identity":null}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000003","type":"Microsoft.Insights/ActionGroups","name":"clitest000003","location":"Global","kind":null,"tags":null,"properties":{"groupShortName":"clitest24zx5","enabled":true,"emailReceivers":[],"smsReceivers":[],"webhookReceivers":[],"eventHubReceivers":[],"itsmReceivers":[],"azureAppPushReceivers":[],"automationRunbookReceivers":[],"voiceReceivers":[],"logicAppReceivers":[],"azureFunctionReceivers":[],"armRoleReceivers":[]},"identity":null}' headers: cache-control: - no-cache @@ -1927,7 +1938,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:04 GMT + - Mon, 13 Jun 2022 08:43:08 GMT expires: - '-1' pragma: @@ -1944,7 +1955,7 @@ interactions: code: 201 message: Created - request: - body: '{"location": "global", "properties": {"groupShortName": "clitest4dg5w", + body: '{"location": "global", "properties": {"groupShortName": "clitestgk7se", "enabled": true, "emailReceivers": [], "smsReceivers": [], "webhookReceivers": [], "itsmReceivers": [], "azureAppPushReceivers": [], "automationRunbookReceivers": [], "voiceReceivers": [], "logicAppReceivers": [], "azureFunctionReceivers": @@ -1965,12 +1976,12 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-monitor/3.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-monitor/3.0.0 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/actionGroups/clitest000004?api-version=2021-09-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000004","type":"Microsoft.Insights/ActionGroups","name":"clitest000004","location":"Global","kind":null,"tags":null,"properties":{"groupShortName":"clitest4dg5w","enabled":true,"emailReceivers":[],"smsReceivers":[],"webhookReceivers":[],"eventHubReceivers":[],"itsmReceivers":[],"azureAppPushReceivers":[],"automationRunbookReceivers":[],"voiceReceivers":[],"logicAppReceivers":[],"azureFunctionReceivers":[],"armRoleReceivers":[]},"identity":null}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000004","type":"Microsoft.Insights/ActionGroups","name":"clitest000004","location":"Global","kind":null,"tags":null,"properties":{"groupShortName":"clitestgk7se","enabled":true,"emailReceivers":[],"smsReceivers":[],"webhookReceivers":[],"eventHubReceivers":[],"itsmReceivers":[],"azureAppPushReceivers":[],"automationRunbookReceivers":[],"voiceReceivers":[],"logicAppReceivers":[],"azureFunctionReceivers":[],"armRoleReceivers":[]},"identity":null}' headers: cache-control: - no-cache @@ -1979,7 +1990,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:10 GMT + - Mon, 13 Jun 2022 08:43:14 GMT expires: - '-1' pragma: @@ -1991,7 +2002,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '23' + - '24' status: code: 201 message: Created @@ -2009,12 +2020,12 @@ interactions: ParameterSetName: - -g -n --scopes --condition --description --action-groups --custom-properties User-Agent: - - AZURECLI/2.32.0 azsdk-python-azure-mgmt-resource/20.0.0 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_scheduled_query000001?api-version=2021-04-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-01-28T04:19:04Z"},"properties":{"provisioningState":"Succeeded"}}' + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001","name":"cli_test_scheduled_query000001","type":"Microsoft.Resources/resourceGroups","location":"eastus","tags":{"product":"azurecli","cause":"automation","date":"2022-06-13T08:36:24Z"},"properties":{"provisioningState":"Succeeded"}}' headers: cache-control: - no-cache @@ -2023,7 +2034,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:10 GMT + - Mon, 13 Jun 2022 08:43:15 GMT expires: - '-1' pragma: @@ -2063,23 +2074,23 @@ interactions: ParameterSetName: - -g -n --scopes --condition --description --action-groups --custom-properties User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq03?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:28:17.6869819Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:28:17.6869819Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:43:19.7303682Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:43:19.7303682Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"actions":{"actionGroups":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000003"],"customProperties":{"k1":"v1"}},"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: cache-control: - no-cache content-length: - - '1298' + - '1300' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:21 GMT + - Mon, 13 Jun 2022 08:43:25 GMT expires: - '-1' pragma: @@ -2097,7 +2108,7 @@ interactions: x-rate-limit-remaining: - '14' x-rate-limit-reset: - - '2022-01-28T04:29:17.7848835Z' + - '2022-06-13T08:44:19.7678002Z' status: code: 201 message: Created @@ -2115,23 +2126,23 @@ interactions: ParameterSetName: - -g -n --action-groups --custom-properties User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq03?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:28:17.6869819Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:28:17.6869819Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:43:19.7303682Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:43:19.7303682Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"actions":{"actionGroups":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000003"],"customProperties":{"k1":"v1"}},"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: cache-control: - no-cache content-length: - - '1298' + - '1300' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:22 GMT + - Mon, 13 Jun 2022 08:43:26 GMT expires: - '-1' pragma: @@ -2151,7 +2162,7 @@ interactions: x-rate-limit-remaining: - '49' x-rate-limit-reset: - - '2022-01-28T04:29:23.0457673Z' + - '2022-06-13T08:44:26.9558907Z' status: code: 200 message: OK @@ -2181,23 +2192,23 @@ interactions: ParameterSetName: - -g -n --action-groups --custom-properties User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq03?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:28:17.6869819Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:28:23.8511676Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:43:19.7303682Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:43:27.6127566Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"actions":{"actionGroups":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000004"],"customProperties":{"k2":"v2"}},"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}' headers: cache-control: - no-cache content-length: - - '1298' + - '1300' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:27 GMT + - Mon, 13 Jun 2022 08:43:36 GMT expires: - '-1' pragma: @@ -2219,7 +2230,7 @@ interactions: x-rate-limit-remaining: - '14' x-rate-limit-reset: - - '2022-01-28T04:29:23.8626320Z' + - '2022-06-13T08:44:27.7412954Z' status: code: 200 message: OK @@ -2237,23 +2248,23 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:52.6372721Z"},"properties":{"description":"Test + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:59.1465618Z"},"properties":{"description":"Test rule 2","severity":4,"enabled":true,"evaluationFrequency":"PT10M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT10M","criteria":{"allOf":[{"query":"union Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":false,"muteActionsDuration":"PT30M","checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":true}}' headers: cache-control: - no-cache content-length: - - '1155' + - '1157' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:28 GMT + - Mon, 13 Jun 2022 08:43:38 GMT expires: - '-1' pragma: @@ -2273,7 +2284,7 @@ interactions: x-rate-limit-remaining: - '49' x-rate-limit-reset: - - '2022-01-28T04:29:29.1078538Z' + - '2022-06-13T08:44:37.5753769Z' status: code: 200 message: OK @@ -2291,27 +2302,27 @@ interactions: ParameterSetName: - -g User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules?api-version=2021-08-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:52.6372721Z"},"properties":{"description":"Test + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:59.1465618Z"},"properties":{"description":"Test rule 2","severity":4,"enabled":true,"evaluationFrequency":"PT10M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT10M","criteria":{"allOf":[{"query":"union - Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":false,"muteActionsDuration":"PT30M","checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":true}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq02","name":"sq02","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:42.9354861Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:42.9354861Z"},"properties":{"description":"Test + Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":false,"muteActionsDuration":"PT30M","checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":true}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq02","name":"sq02","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:50.248816Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:50.248816Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union - Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:28:17.6869819Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:28:23.8511676Z"},"properties":{"description":"Test + Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:43:19.7303682Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:43:27.6127566Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"actions":{"actionGroups":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000004"],"customProperties":{"k2":"v2"}},"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}]}' headers: cache-control: - no-cache content-length: - - '3549' + - '3553' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:29 GMT + - Mon, 13 Jun 2022 08:43:39 GMT expires: - '-1' pragma: @@ -2331,7 +2342,7 @@ interactions: x-rate-limit-remaining: - '49' x-rate-limit-reset: - - '2022-01-28T04:29:29.9341053Z' + - '2022-06-13T08:44:39.1678779Z' status: code: 200 message: OK @@ -2347,27 +2358,27 @@ interactions: Connection: - keep-alive User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/scheduledQueryRules?api-version=2021-08-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:29.2470432Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:52.6372721Z"},"properties":{"description":"Test + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq01","name":"sq01","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:33.6934384Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:59.1465618Z"},"properties":{"description":"Test rule 2","severity":4,"enabled":true,"evaluationFrequency":"PT10M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Compute/virtualMachines/myvm1"],"windowSize":"PT10M","criteria":{"allOf":[{"query":"union - Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":false,"muteActionsDuration":"PT30M","checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":true}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq02","name":"sq02","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:27:42.9354861Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:27:42.9354861Z"},"properties":{"description":"Test + Event | where TimeGenerated > ago(2h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"LessThan","threshold":260.0,"failingPeriods":{"numberOfEvaluationPeriods":3,"minFailingPeriodsToAlert":2}}]},"autoMitigate":false,"muteActionsDuration":"PT30M","checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":true}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq02","name":"sq02","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:42:50.248816Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:42:50.248816Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union - Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"zhoxing@microsoft.com","createdByType":"User","createdAt":"2022-01-28T04:28:17.6869819Z","lastModifiedBy":"zhoxing@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-01-28T04:28:23.8511676Z"},"properties":{"description":"Test + Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/scheduledqueryrules/sq03","name":"sq03","type":"microsoft.insights/scheduledqueryrules","location":"eastus","systemData":{"createdBy":"v-tinani@microsoft.com","createdByType":"User","createdAt":"2022-06-13T08:43:19.7303682Z","lastModifiedBy":"v-tinani@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-13T08:43:27.6127566Z"},"properties":{"description":"Test rule","severity":2,"enabled":true,"evaluationFrequency":"PT5M","scopes":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001"],"windowSize":"PT5M","criteria":{"allOf":[{"query":"union Event, Syslog | where TimeGenerated > ago(1h)","timeAggregation":"Count","dimensions":[],"resourceIdColumn":"_ResourceId","operator":"GreaterThan","threshold":360.0,"failingPeriods":{"numberOfEvaluationPeriods":1,"minFailingPeriodsToAlert":1}}]},"autoMitigate":true,"actions":{"actionGroups":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/microsoft.insights/actionGroups/clitest000004"],"customProperties":{"k2":"v2"}},"checkWorkspaceAlertsStorageConfigured":false,"skipQueryValidation":false}}]}' headers: cache-control: - no-cache content-length: - - '3549' + - '3553' content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:29 GMT + - Mon, 13 Jun 2022 08:43:40 GMT expires: - '-1' pragma: @@ -2401,7 +2412,7 @@ interactions: ParameterSetName: - -g -n -y User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: @@ -2413,7 +2424,7 @@ interactions: content-length: - '0' date: - - Fri, 28 Jan 2022 04:28:41 GMT + - Mon, 13 Jun 2022 08:43:49 GMT expires: - '-1' pragma: @@ -2425,7 +2436,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-deletes: - - '14998' + - '14999' status: code: 200 message: OK @@ -2443,7 +2454,7 @@ interactions: ParameterSetName: - -g -n User-Agent: - - AZURECLI/2.32.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.1 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-monitor/1.0.0b1 Python/3.8.9 (Windows-10-10.0.22000-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_scheduled_query000001/providers/Microsoft.Insights/scheduledQueryRules/sq01?api-version=2021-08-01 response: @@ -2459,7 +2470,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 28 Jan 2022 04:28:42 GMT + - Mon, 13 Jun 2022 08:43:50 GMT expires: - '-1' pragma: diff --git a/src/securityinsight/HISTORY.rst b/src/securityinsight/HISTORY.rst index 0eb45d18800..b285e62956b 100644 --- a/src/securityinsight/HISTORY.rst +++ b/src/securityinsight/HISTORY.rst @@ -3,6 +3,10 @@ Release History =============== +0.2.0 +++++++ +Upgrade based on 2022-06-01-preview. + 0.1.2 ++++++ Rebrand the terms in help. diff --git a/src/securityinsight/README.md b/src/securityinsight/README.md index 90913a91f07..42aac1686bd 100644 --- a/src/securityinsight/README.md +++ b/src/securityinsight/README.md @@ -1,5 +1,5 @@ -# Azure CLI sentinel Extension # -This is the extension for sentinel +# Azure CLI Sentinel Extension # +This is an extension to Azure CLI to manage sentinel resources. ### How to use ### Install this extension using the below CLI command @@ -11,174 +11,277 @@ az extension add --name sentinel #### sentinel alert-rule #### ##### Create ##### ``` -az sentinel alert-rule create --etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" \ - --logic-app-resource-id "/subscriptions/d0cfe6b2-9ac0-4464-9919-dccaee2e48c0/resourceGroups/myRg/providers/Microsoft.Logic/workflows/MyAlerts" \ - --trigger-uri "https://prod-31.northcentralus.logic.azure.com:443/workflows/cd3765391efd48549fd7681ded1d48d7/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=signature" \ - --action-id "912bec42-cb66-4c03-ac63-1761b6898c3e" --resource-group "myRg" \ - --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --workspace-name "myWorkspace" +az sentinel alert-rule create -n myRule -w myWorkspace -g myRG \ + --ms-security-incident "{product-filter:'Microsoft Cloud App Security',display-name:testing,enabled:true}" ``` -##### Show ##### +##### List ##### ``` -az sentinel alert-rule show --resource-group "myRg" --rule-id "myFirstFusionRule" --workspace-name "myWorkspace" +az sentinel alert-rule list -w myWorkspace -g myRG ``` -##### Show ##### +##### Update ##### ``` -az sentinel alert-rule show --resource-group "myRg" --rule-id "microsoftSecurityIncidentCreationRuleExample" \ - --workspace-name "myWorkspace" +az sentinel alert-rule update -n myRule -w myWorkspace -g myRG \ + --ms-security-incident display-name=tested ``` ##### Show ##### ``` -az sentinel alert-rule show --resource-group "myRg" --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" \ - --workspace-name "myWorkspace" +az sentinel alert-rule show -n myRule -w myWorkspace -g myRG +``` +##### Delete ##### +``` +az sentinel alert-rule delete -n myRule -w myWorkspace -g myRG --yes ``` + +#### sentinel alert-rule template #### ##### List ##### ``` -az sentinel alert-rule list --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel alert-rule template list -w myWorkspace -g myRG ``` -##### Get-action ##### +##### Show ##### ``` -az sentinel alert-rule get-action --action-id "912bec42-cb66-4c03-ac63-1761b6898c3e" --resource-group "myRg" \ - --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --workspace-name "myWorkspace" +az sentinel alert-rule template show -n myTemplate -w myWorkspace -g myRG ``` -##### Delete ##### + +#### sentinel automation-rule #### +##### Create ##### ``` -az sentinel alert-rule delete --action-id "912bec42-cb66-4c03-ac63-1761b6898c3e" --resource-group "myRg" \ - --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --workspace-name "myWorkspace" +az sentinel automation-rule create -n myRule -w myWorkspace -g myRG \ + --display-name 'High severity incidents escalation' --order 1 \ + --actions "[{order:1,modify-properties:{action-configuration:{severity:High}}}]" \ + --triggering-logic "{is-enabled:true,triggers-on:Incidents,triggers-when:Created}" ``` -#### sentinel action #### ##### List ##### ``` -az sentinel action list --resource-group "myRg" --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" \ - --workspace-name "myWorkspace" +az sentinel automation-rule list -w myWorkspace -g myRG ``` -#### sentinel alert-rule-template #### -##### List ##### +##### Update ##### ``` -az sentinel alert-rule-template list --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel automation-rule update -n myRule -w myWorkspace -g myRG \ + --display-name 'New name' ``` ##### Show ##### ``` -az sentinel alert-rule-template show --alert-rule-template-id "65360bb0-8986-4ade-a89d-af3cf44d28aa" \ - --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel automation-rule show -n myRule -w myWorkspace -g myRG ``` +##### Delete ##### +``` +az sentinel automation-rule delete -n myRule -w myWorkspace -g myRG --yes +``` + #### sentinel bookmark #### ##### Create ##### ``` -az sentinel bookmark create --etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" --created "2019-01-01T13:15:30Z" \ - --display-name "My bookmark" --labels "Tag1" --labels "Tag2" --notes "Found a suspicious activity" \ - --query "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)" \ - --query-result "Security Event query result" --updated "2019-01-01T13:15:30Z" \ - --bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel bookmark create -n myBookmark -w myWorkspace -g myRG \ + --query-content 'SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)' \ + --query-result 'Security Event query result' --display-name 'My bookmark' --notes 'Found a suspicious activity' \ + --entity-mappings "[{entity-type:Account,field-mappings:[{identifier:Fullname,value:johndoe@microsoft.com}]}]" \ + --tactics "[Execution]" --techniques "[T1609]" --labels "[Tag1,Tag2]" +``` +##### List ##### +``` +az sentinel bookmark list -w myWorkspace -g myRG ``` ##### Show ##### ``` -az sentinel bookmark show --bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel bookmark show -n myBookmark -w myWorkspace -g myRG +``` +##### Delete ##### +``` +az sentinel bookmark delete -n myBookmark -w myWorkspace -g myRG --yes +``` + +#### sentinel bookmark relation #### +##### Create ##### +``` +az sentinel bookmark relation create -n myRelation -w myWorkspace -g myRG \ + --bookmark-id myBookmark --related-resource-id myIncident ``` ##### List ##### ``` -az sentinel bookmark list --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel bookmark relation list -w myWorkspace -g myRG \ + --bookmark-id myBookmark +``` +##### Show ##### +``` +az sentinel bookmark relation show -n myRelation -w myWorkspace -g myRG \ + --bookmark-id myBookmark ``` ##### Delete ##### ``` -az sentinel bookmark delete --bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel bookmark relation delete -n myRelation -w myWorkspace -g myRG \ + --bookmark-id myBookmark --yes ``` -#### sentinel data-connector #### + +#### sentinel incident #### ##### Create ##### ``` -az sentinel data-connector create \ - --office-data-connector etag="\\"0300bf09-0000-0000-0000-5c37296e0000\\"" tenant-id="2070ecc9-b4d5-4ae4-adaa-936fa1954fa8" \ - --data-connector-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel incident create -n myIncident -w myWorkspace -g myRG \ + --classification FalsePositive --classification-reason IncorrectAlertLogic \ + --classification-comment 'Not a malicious activity' --first-activity-time-utc 2019-01-01T13:00:30Z \ + --last-activity-time-utc 2019-01-01T13:05:30Z --severity High --status Closed --title 'My incident' \ + --description 'This is a demo incident' \ + --owner "{object-id:2046feea-040d-4a46-9e2b-91c2941bfa70}" ``` -##### Show ##### +##### List ##### ``` -az sentinel data-connector show --data-connector-id "763f9fa1-c2d3-4fa2-93e9-bccd4899aa12" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel incident list -w myWorkspace -g myRG --orderby 'properties/createdTimeUtc desc' --top 1 ``` ##### Show ##### ``` -az sentinel data-connector show --data-connector-id "b96d014d-b5c2-4a01-9aba-a8058f629d42" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel incident show -n myIncident -w myWorkspace -g myRG ``` -##### Show ##### +##### Delete ##### ``` -az sentinel data-connector show --data-connector-id "06b3ccb8-1384-4bcc-aec7-852f6d57161b" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel incident delete -n myIncident -w myWorkspace -g myRG --yes ``` -##### Show ##### + +#### sentinel incident relation #### +##### Create ##### +``` +az sentinel incident relation create -n myRelation -w myWorkspace -g myRG \ + --incident-id myIncident --related-resource-id myBookmark +``` +##### List ##### ``` -az sentinel data-connector show --data-connector-id "c345bf40-8509-4ed2-b947-50cb773aaf04" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel incident relation list -w myWorkspace -g myRG \ + --incident-id myIncident ``` ##### Show ##### ``` -az sentinel data-connector show --data-connector-id "f0cd27d2-5f03-4c06-ba31-d2dc82dcb51d" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel incident relation show -n myRelation -w myWorkspace -g myRG \ + --incident-id myIncident +``` +##### Delete ##### +``` +az sentinel incident relation delete -n myRelation -w myWorkspace -g myRG \ + --incident-id myIncident --yes +``` + +#### sentinel incident comment #### +##### Create ##### +``` +az sentinel incident comment create -n myComment -w myWorkspace -g myRG \ + --incident-id myIncident --message 'Some message' +``` +##### List ##### +``` +az sentinel incident comment list -w myWorkspace -g myRG \ + --incident-id myIncident +``` +##### Update ##### +``` +az sentinel incident comment update -n myComment -w myWorkspace -g myRG \ + --incident-id myIncident --message 'Some messages' ``` ##### Show ##### ``` -az sentinel data-connector show --data-connector-id "07e42cb3-e658-4e90-801c-efa0f29d3d44" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel incident comment show -n myComment -w myWorkspace -g myRG \ + --incident-id myIncident +``` +##### Delete ##### +``` +az sentinel incident comment delete -n myComment -w myWorkspace -g myRG \ + --incident-id myIncident --yes ``` + +#### sentinel enrichment domain-whois #### ##### Show ##### ``` -az sentinel data-connector show --data-connector-id "c345bf40-8509-4ed2-b947-50cb773aaf04" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel enrichment domain-whois show -g myRG --domain microsoft.com ``` + +#### sentinel enrichment ip-geodata #### ##### Show ##### ``` -az sentinel data-connector show --data-connector-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel enrichment ip-geodata show -g myRG --ip-address 1.2.3.4 +``` + +#### sentinel metadata #### +##### Create ##### +``` +az sentinel metadata create -n myMetadata -w myWorkspace -g myRG \ + --content-id myContent --parent-id myRule --kind AnalyticsRule ``` ##### List ##### ``` -az sentinel data-connector list --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel metadata list -w myWorkspace -g myRG +``` +##### Update ##### +``` +az sentinel metadata update -n myMetadata -w myWorkspace -g myRG \ + --author "{name:cli,email:cli@microsoft.com}" +``` +##### Show ##### +``` +az sentinel metadata show -n myMetadata -w myWorkspace -g myRG ``` ##### Delete ##### ``` -az sentinel data-connector delete --data-connector-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel metadata delete -n myMetadata -w myWorkspace -g myRG --yes ``` -#### sentinel incident #### + +#### sentinel onboarding-state #### ##### Create ##### ``` -az sentinel incident create --etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" \ - --description "This is a demo incident" --classification "FalsePositive" \ - --classification-comment "Not a malicious activity" --classification-reason "IncorrectAlertLogic" \ - --first-activity-time-utc "2019-01-01T13:00:30Z" --last-activity-time-utc "2019-01-01T13:05:30Z" \ - --owner object-id="2046feea-040d-4a46-9e2b-91c2941bfa70" --severity "High" --status "Closed" --title "My incident" \ - --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel onboarding-state create -n defalut -w myWorkspace -g myRG \ + --customer-managed-key false +``` +##### List ##### +``` +az sentinel onboarding-state list -w myWorkspace -g myRG ``` ##### Show ##### ``` -az sentinel incident show --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel onboarding-state show -n defalut -w myWorkspace -g myRG +``` +##### Delete ##### +``` +az sentinel onboarding-state delete -n defalut -w myWorkspace -g myRG --yes +``` + +#### sentinel threat-indicator #### +##### Create ##### +``` +az sentinel threat-indicator create -w myWorkspace -g myRG \ + --source 'Microsoft Sentinel' --display-name 'new schema' --confidence 78 --created-by-ref contoso@contoso.com \ + --modified '' --pattern '[url:value = 'https://www.contoso.com']' --pattern-type url --revoked false \ + --valid-from 2022-06-15T17:44:00.114052Z --valid-until '' --description 'debugging indicators' \ + --threat-tags "['new schema']" --threat-types "[compromised]" --external-references "[]" ``` ##### List ##### ``` -az sentinel incident list --orderby "properties/createdTimeUtc desc" --top 1 --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel threat-indicator list -w myWorkspace -g myRG +``` +##### Show ##### +``` +az sentinel threat-indicator show -n myIndictor -w myWorkspace -g myRG ``` ##### Delete ##### ``` -az sentinel incident delete --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ - --workspace-name "myWorkspace" +az sentinel threat-indicator delete -n myIndictor -w myWorkspace -g myRG --yes ``` -#### sentinel incident-comment #### + +#### sentinel watchlist #### ##### Create ##### ``` -az sentinel incident-comment create --message "Some message" \ - --incident-comment-id "4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014" --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" \ - --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel watchlist create -n myWatchlist -w myWorkspace -g myRG \ + --description 'Watchlist from CSV content' --display-name 'High Value Assets Watchlist' + --provider Microsoft --items-search-key header1 +``` +##### List ##### +``` +az sentinel watchlist list -w myWorkspace -g myRG +``` +##### Update ##### +``` +az sentinel watchlist update -n myWatchlist -w myWorkspace -g myRG \ + --display-name 'New name' ``` ##### Show ##### ``` -az sentinel incident-comment show --incident-comment-id "4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014" \ - --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" --workspace-name "myWorkspace" +az sentinel watchlist show -n myWatchlist -w myWorkspace -g myRG ``` -##### List ##### +##### Delete ##### +``` +az sentinel watchlist delete -n myWatchlist -w myWorkspace -g myRG --yes ``` -az sentinel incident-comment list --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ - --workspace-name "myWorkspace" -``` \ No newline at end of file diff --git a/src/securityinsight/azext_sentinel/__init__.py b/src/securityinsight/azext_sentinel/__init__.py index cba11ad4731..3cd3dd1cf94 100644 --- a/src/securityinsight/azext_sentinel/__init__.py +++ b/src/securityinsight/azext_sentinel/__init__.py @@ -1,50 +1,42 @@ -# -------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. +# Licensed under the MIT License. See License.txt in the project root for license information. # -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- from azure.cli.core import AzCommandsLoader -from azext_sentinel.generated._help import helps # pylint: disable=unused-import -try: - from azext_sentinel.manual._help import helps # pylint: disable=reimported -except ImportError: - pass +from azext_sentinel._help import helps # pylint: disable=unused-import -class SecurityInsightsCommandsLoader(AzCommandsLoader): +class SentinelCommandsLoader(AzCommandsLoader): def __init__(self, cli_ctx=None): from azure.cli.core.commands import CliCommandType - from azext_sentinel.generated._client_factory import cf_sentinel_cl - sentinel_custom = CliCommandType( - operations_tmpl='azext_sentinel.custom#{}', - client_factory=cf_sentinel_cl) - parent = super(SecurityInsightsCommandsLoader, self) - parent.__init__(cli_ctx=cli_ctx, custom_command_type=sentinel_custom) + custom_command_type = CliCommandType( + operations_tmpl='azext_sentinel.custom#{}') + super().__init__(cli_ctx=cli_ctx, + custom_command_type=custom_command_type) def load_command_table(self, args): - from azext_sentinel.generated.commands import load_command_table - load_command_table(self, args) + from azext_sentinel.commands import load_command_table + from azure.cli.core.aaz import load_aaz_command_table try: - from azext_sentinel.manual.commands import load_command_table as load_command_table_manual - load_command_table_manual(self, args) + from . import aaz except ImportError: - pass + aaz = None + if aaz: + load_aaz_command_table( + loader=self, + aaz_pkg_name=aaz.__name__, + args=args + ) + load_command_table(self, args) return self.command_table def load_arguments(self, command): - from azext_sentinel.generated._params import load_arguments + from azext_sentinel._params import load_arguments load_arguments(self, command) - try: - from azext_sentinel.manual._params import load_arguments as load_arguments_manual - load_arguments_manual(self, command) - except ImportError: - pass -COMMAND_LOADER_CLS = SecurityInsightsCommandsLoader +COMMAND_LOADER_CLS = SentinelCommandsLoader diff --git a/src/securityinsight/azext_sentinel/_help.py b/src/securityinsight/azext_sentinel/_help.py new file mode 100644 index 00000000000..126d5d00714 --- /dev/null +++ b/src/securityinsight/azext_sentinel/_help.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=line-too-long +# pylint: disable=too-many-lines + +from knack.help_files import helps # pylint: disable=unused-import diff --git a/src/securityinsight/azext_sentinel/_params.py b/src/securityinsight/azext_sentinel/_params.py new file mode 100644 index 00000000000..cfcec717c9c --- /dev/null +++ b/src/securityinsight/azext_sentinel/_params.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + + +def load_arguments(self, _): # pylint: disable=unused-argument + pass diff --git a/src/securityinsight/azext_sentinel/aaz/__init__.py b/src/securityinsight/azext_sentinel/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/securityinsight/azext_sentinel/aaz/latest/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/__cmd_group.py new file mode 100644 index 00000000000..ef4b32bbd02 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel", +) +class __CMDGroup(AAZCommandGroup): + """Manage Microsoft Sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/__init__.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/__cmd_group.py new file mode 100644 index 00000000000..dbdb969c63f --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel alert-rule", +) +class __CMDGroup(AAZCommandGroup): + """Manage alert rule with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_create.py new file mode 100644 index 00000000000..c3c6d2c088f --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_create.py @@ -0,0 +1,1517 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["-n", "--name", "--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "AlertRule" + + _args_schema = cls._args_schema + _args_schema.fusion = AAZObjectArg( + options=["--fusion"], + arg_group="AlertRule", + ) + _args_schema.ml_behavior_analytics = AAZObjectArg( + options=["--ml-behavior-analytics"], + arg_group="AlertRule", + ) + _args_schema.ms_security_incident = AAZObjectArg( + options=["--ms-security-incident"], + arg_group="AlertRule", + help="Microsoft security incident creation.", + is_experimental=True, + ) + _args_schema.nrt = AAZObjectArg( + options=["--nrt"], + arg_group="AlertRule", + ) + _args_schema.scheduled = AAZObjectArg( + options=["--scheduled"], + arg_group="AlertRule", + ) + _args_schema.threat_intelligence = AAZObjectArg( + options=["--threat-intelligence"], + arg_group="AlertRule", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="AlertRule", + help="Etag of the azure resource", + ) + + fusion = cls._args_schema.fusion + fusion.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + fusion.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + fusion.scenario_exclusion_patterns = AAZListArg( + options=["scenario-exclusion-patterns"], + help="Configuration to exclude scenarios in fusion detection.", + ) + fusion.source_settings = AAZListArg( + options=["source-settings"], + help="Configuration for all supported source signals in fusion detection.", + ) + + scenario_exclusion_patterns = cls._args_schema.fusion.scenario_exclusion_patterns + scenario_exclusion_patterns.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.scenario_exclusion_patterns.Element + _element.date_added_in_utc = AAZStrArg( + options=["date-added-in-utc"], + help="DateTime when scenario exclusion pattern is added in UTC.", + required=True, + ) + _element.exclusion_pattern = AAZStrArg( + options=["exclusion-pattern"], + help="Scenario exclusion pattern.", + required=True, + ) + + source_settings = cls._args_schema.fusion.source_settings + source_settings.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.source_settings.Element + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this source signal is enabled or disabled in Fusion detection.", + required=True, + ) + _element.source_name = AAZStrArg( + options=["source-name"], + help="Name of the Fusion source signal. Refer to Fusion alert rule template for supported values.", + required=True, + ) + _element.source_sub_types = AAZListArg( + options=["source-sub-types"], + help="Configuration for all source subtypes under this source signal consumed in fusion detection.", + ) + + source_sub_types = cls._args_schema.fusion.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this source subtype under source signal is enabled or disabled in Fusion detection.", + required=True, + ) + _element.severity_filters = AAZObjectArg( + options=["severity-filters"], + help="Severity configuration for a source subtype consumed in fusion detection.", + required=True, + ) + _element.source_sub_type_name = AAZStrArg( + options=["source-sub-type-name"], + help="The Name of the source subtype under a given source signal in Fusion detection. Refer to Fusion alert rule template for supported values.", + required=True, + ) + + severity_filters = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element.severity_filters + severity_filters.filters = AAZListArg( + options=["filters"], + help="Individual Severity configuration settings for a given source subtype consumed in Fusion detection.", + ) + + filters = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element.severity_filters.filters + filters.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element.severity_filters.filters.Element + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this severity is enabled or disabled for this source subtype consumed in Fusion detection.", + required=True, + ) + _element.severity = AAZStrArg( + options=["severity"], + help="The Severity for a given source subtype consumed in Fusion detection.", + required=True, + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + + ml_behavior_analytics = cls._args_schema.ml_behavior_analytics + ml_behavior_analytics.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + ml_behavior_analytics.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + + ms_security_incident = cls._args_schema.ms_security_incident + ms_security_incident.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + ms_security_incident.description = AAZStrArg( + options=["description"], + help="The description of the alert rule.", + ) + ms_security_incident.display_name = AAZStrArg( + options=["display-name"], + help="The display name for alerts created by this alert rule.", + ) + ms_security_incident.display_names_exclude_filter = AAZListArg( + options=["display-names-exclude-filter"], + help="the alerts' displayNames on which the cases will not be generated", + ) + ms_security_incident.display_names_filter = AAZListArg( + options=["display-names-filter"], + help="the alerts' displayNames on which the cases will be generated", + ) + ms_security_incident.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + ms_security_incident.product_filter = AAZStrArg( + options=["product-filter"], + help="The alerts' productName on which the cases will be generated", + enum={"Azure Active Directory Identity Protection": "Azure Active Directory Identity Protection", "Azure Advanced Threat Protection": "Azure Advanced Threat Protection", "Azure Security Center": "Azure Security Center", "Azure Security Center for IoT": "Azure Security Center for IoT", "Microsoft Cloud App Security": "Microsoft Cloud App Security", "Microsoft Defender Advanced Threat Protection": "Microsoft Defender Advanced Threat Protection", "Office 365 Advanced Threat Protection": "Office 365 Advanced Threat Protection"}, + ) + ms_security_incident.severities_filter = AAZListArg( + options=["severities-filter"], + help="the alerts' severities on which the cases will be generated", + ) + + display_names_exclude_filter = cls._args_schema.ms_security_incident.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrArg() + + display_names_filter = cls._args_schema.ms_security_incident.display_names_filter + display_names_filter.Element = AAZStrArg() + + severities_filter = cls._args_schema.ms_security_incident.severities_filter + severities_filter.Element = AAZStrArg( + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + + nrt = cls._args_schema.nrt + nrt.alert_details_override = AAZObjectArg( + options=["alert-details-override"], + help="The alert details override settings", + ) + cls._build_args_alert_details_override_create(nrt.alert_details_override) + nrt.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + nrt.custom_details = AAZDictArg( + options=["custom-details"], + help="Dictionary of string key-value pairs of columns to be attached to the alert", + ) + nrt.description = AAZStrArg( + options=["description"], + help="The description of the alert rule.", + ) + nrt.display_name = AAZStrArg( + options=["display-name"], + help="The display name for alerts created by this alert rule.", + ) + nrt.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + nrt.entity_mappings = AAZListArg( + options=["entity-mappings"], + help="Array of the entity mappings of the alert rule", + ) + cls._build_args_entity_mappings_create(nrt.entity_mappings) + nrt.incident_configuration = AAZObjectArg( + options=["incident-configuration"], + help="The settings of the incidents that created from alerts triggered by this analytics rule", + ) + cls._build_args_incident_configuration_create(nrt.incident_configuration) + nrt.query = AAZStrArg( + options=["query"], + help="The query that creates alerts for this rule.", + ) + nrt.severity = AAZStrArg( + options=["severity"], + help="The severity for alerts created by this alert rule.", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + nrt.suppression_duration = AAZStrArg( + options=["suppression-duration"], + help="The suppression (in ISO 8601 duration format) to wait since last time this alert rule been triggered.", + ) + nrt.suppression_enabled = AAZBoolArg( + options=["suppression-enabled"], + help="Determines whether the suppression for this alert rule is enabled or disabled.", + ) + nrt.tactics = AAZListArg( + options=["tactics"], + help="The tactics of the alert rule", + ) + nrt.techniques = AAZListArg( + options=["techniques"], + help="The techniques of the alert rule", + ) + nrt.template_version = AAZStrArg( + options=["template-version"], + help="The version of the alert rule template used to create this rule - in format , where all are numbers, for example 0 <1.0.2>", + ) + + custom_details = cls._args_schema.nrt.custom_details + custom_details.Element = AAZStrArg() + + tactics = cls._args_schema.nrt.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.nrt.techniques + techniques.Element = AAZStrArg() + + scheduled = cls._args_schema.scheduled + scheduled.alert_details_override = AAZObjectArg( + options=["alert-details-override"], + help="The alert details override settings", + ) + cls._build_args_alert_details_override_create(scheduled.alert_details_override) + scheduled.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + scheduled.custom_details = AAZDictArg( + options=["custom-details"], + help="Dictionary of string key-value pairs of columns to be attached to the alert", + ) + scheduled.description = AAZStrArg( + options=["description"], + help="The description of the alert rule.", + ) + scheduled.display_name = AAZStrArg( + options=["display-name"], + help="The display name for alerts created by this alert rule.", + ) + scheduled.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + scheduled.entity_mappings = AAZListArg( + options=["entity-mappings"], + help="Array of the entity mappings of the alert rule", + ) + cls._build_args_entity_mappings_create(scheduled.entity_mappings) + scheduled.event_grouping_settings = AAZObjectArg( + options=["event-grouping-settings"], + help="The event grouping settings.", + ) + scheduled.incident_configuration = AAZObjectArg( + options=["incident-configuration"], + help="The settings of the incidents that created from alerts triggered by this analytics rule", + ) + cls._build_args_incident_configuration_create(scheduled.incident_configuration) + scheduled.query = AAZStrArg( + options=["query"], + help="The query that creates alerts for this rule.", + ) + scheduled.query_frequency = AAZStrArg( + options=["query-frequency"], + help="The frequency (in ISO 8601 duration format) for this alert rule to run.", + ) + scheduled.query_period = AAZStrArg( + options=["query-period"], + help="The period (in ISO 8601 duration format) that this alert rule looks at.", + ) + scheduled.severity = AAZStrArg( + options=["severity"], + help="The severity for alerts created by this alert rule.", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + scheduled.suppression_duration = AAZStrArg( + options=["suppression-duration"], + help="The suppression (in ISO 8601 duration format) to wait since last time this alert rule been triggered.", + ) + scheduled.suppression_enabled = AAZBoolArg( + options=["suppression-enabled"], + help="Determines whether the suppression for this alert rule is enabled or disabled.", + ) + scheduled.tactics = AAZListArg( + options=["tactics"], + help="The tactics of the alert rule", + ) + scheduled.techniques = AAZListArg( + options=["techniques"], + help="The techniques of the alert rule", + ) + scheduled.template_version = AAZStrArg( + options=["template-version"], + help="The version of the alert rule template used to create this rule - in format , where all are numbers, for example 0 <1.0.2>", + ) + scheduled.trigger_operator = AAZStrArg( + options=["trigger-operator"], + help="The operation against the threshold that triggers alert rule.", + enum={"Equal": "Equal", "GreaterThan": "GreaterThan", "LessThan": "LessThan", "NotEqual": "NotEqual"}, + ) + scheduled.trigger_threshold = AAZIntArg( + options=["trigger-threshold"], + help="The threshold triggers this alert rule.", + ) + + custom_details = cls._args_schema.scheduled.custom_details + custom_details.Element = AAZStrArg() + + event_grouping_settings = cls._args_schema.scheduled.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrArg( + options=["aggregation-kind"], + help="The event grouping aggregation kinds", + enum={"AlertPerResult": "AlertPerResult", "SingleAlert": "SingleAlert"}, + ) + + tactics = cls._args_schema.scheduled.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.scheduled.techniques + techniques.Element = AAZStrArg() + + threat_intelligence = cls._args_schema.threat_intelligence + threat_intelligence.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + threat_intelligence.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + return cls._args_schema + + _args_alert_details_override_create = None + + @classmethod + def _build_args_alert_details_override_create(cls, _schema): + if cls._args_alert_details_override_create is not None: + _schema.alert_description_format = cls._args_alert_details_override_create.alert_description_format + _schema.alert_display_name_format = cls._args_alert_details_override_create.alert_display_name_format + _schema.alert_severity_column_name = cls._args_alert_details_override_create.alert_severity_column_name + _schema.alert_tactics_column_name = cls._args_alert_details_override_create.alert_tactics_column_name + return + + cls._args_alert_details_override_create = AAZObjectArg() + + alert_details_override_create = cls._args_alert_details_override_create + alert_details_override_create.alert_description_format = AAZStrArg( + options=["alert-description-format"], + help="the format containing columns name(s) to override the alert description", + ) + alert_details_override_create.alert_display_name_format = AAZStrArg( + options=["alert-display-name-format"], + help="the format containing columns name(s) to override the alert name", + ) + alert_details_override_create.alert_severity_column_name = AAZStrArg( + options=["alert-severity-column-name"], + help="the column name to take the alert severity from", + ) + alert_details_override_create.alert_tactics_column_name = AAZStrArg( + options=["alert-tactics-column-name"], + help="the column name to take the alert tactics from", + ) + + _schema.alert_description_format = cls._args_alert_details_override_create.alert_description_format + _schema.alert_display_name_format = cls._args_alert_details_override_create.alert_display_name_format + _schema.alert_severity_column_name = cls._args_alert_details_override_create.alert_severity_column_name + _schema.alert_tactics_column_name = cls._args_alert_details_override_create.alert_tactics_column_name + + _args_entity_mappings_create = None + + @classmethod + def _build_args_entity_mappings_create(cls, _schema): + if cls._args_entity_mappings_create is not None: + _schema.Element = cls._args_entity_mappings_create.Element + return + + cls._args_entity_mappings_create = AAZListArg() + + entity_mappings_create = cls._args_entity_mappings_create + entity_mappings_create.Element = AAZObjectArg() + + _element = cls._args_entity_mappings_create.Element + _element.entity_type = AAZStrArg( + options=["entity-type"], + help="The V3 type of the mapped entity", + enum={"Account": "Account", "AzureResource": "AzureResource", "CloudApplication": "CloudApplication", "DNS": "DNS", "File": "File", "FileHash": "FileHash", "Host": "Host", "IP": "IP", "MailCluster": "MailCluster", "MailMessage": "MailMessage", "Mailbox": "Mailbox", "Malware": "Malware", "Process": "Process", "RegistryKey": "RegistryKey", "RegistryValue": "RegistryValue", "SecurityGroup": "SecurityGroup", "SubmissionMail": "SubmissionMail", "URL": "URL"}, + ) + _element.field_mappings = AAZListArg( + options=["field-mappings"], + help="array of field mappings for the given entity mapping", + ) + + field_mappings = cls._args_entity_mappings_create.Element.field_mappings + field_mappings.Element = AAZObjectArg() + + _element = cls._args_entity_mappings_create.Element.field_mappings.Element + _element.column_name = AAZStrArg( + options=["column-name"], + help="the column name to be mapped to the identifier", + ) + _element.identifier = AAZStrArg( + options=["identifier"], + help="the V3 identifier of the entity", + ) + + _schema.Element = cls._args_entity_mappings_create.Element + + _args_incident_configuration_create = None + + @classmethod + def _build_args_incident_configuration_create(cls, _schema): + if cls._args_incident_configuration_create is not None: + _schema.create_incident = cls._args_incident_configuration_create.create_incident + _schema.grouping_configuration = cls._args_incident_configuration_create.grouping_configuration + return + + cls._args_incident_configuration_create = AAZObjectArg() + + incident_configuration_create = cls._args_incident_configuration_create + incident_configuration_create.create_incident = AAZBoolArg( + options=["create-incident"], + help="Create incidents from alerts triggered by this analytics rule", + required=True, + ) + incident_configuration_create.grouping_configuration = AAZObjectArg( + options=["grouping-configuration"], + help="Set how the alerts that are triggered by this analytics rule, are grouped into incidents", + ) + + grouping_configuration = cls._args_incident_configuration_create.grouping_configuration + grouping_configuration.enabled = AAZBoolArg( + options=["enabled"], + help="Grouping enabled", + required=True, + ) + grouping_configuration.group_by_alert_details = AAZListArg( + options=["group-by-alert-details"], + help="A list of alert details to group by (when matchingMethod is Selected)", + ) + grouping_configuration.group_by_custom_details = AAZListArg( + options=["group-by-custom-details"], + help="A list of custom details keys to group by (when matchingMethod is Selected). Only keys defined in the current alert rule may be used.", + ) + grouping_configuration.group_by_entities = AAZListArg( + options=["group-by-entities"], + help="A list of entity types to group by (when matchingMethod is Selected). Only entities defined in the current alert rule may be used.", + ) + grouping_configuration.lookback_duration = AAZStrArg( + options=["lookback-duration"], + help="Limit the group to alerts created within the lookback duration (in ISO 8601 duration format)", + required=True, + ) + grouping_configuration.matching_method = AAZStrArg( + options=["matching-method"], + help="Grouping matching method. When method is Selected at least one of groupByEntities, groupByAlertDetails, groupByCustomDetails must be provided and not empty.", + required=True, + enum={"AllEntities": "AllEntities", "AnyAlert": "AnyAlert", "Selected": "Selected"}, + ) + grouping_configuration.reopen_closed_incident = AAZBoolArg( + options=["reopen-closed-incident"], + help="Re-open closed matching incidents", + required=True, + ) + + group_by_alert_details = cls._args_incident_configuration_create.grouping_configuration.group_by_alert_details + group_by_alert_details.Element = AAZStrArg( + enum={"DisplayName": "DisplayName", "Severity": "Severity"}, + ) + + group_by_custom_details = cls._args_incident_configuration_create.grouping_configuration.group_by_custom_details + group_by_custom_details.Element = AAZStrArg() + + group_by_entities = cls._args_incident_configuration_create.grouping_configuration.group_by_entities + group_by_entities.Element = AAZStrArg( + enum={"Account": "Account", "AzureResource": "AzureResource", "CloudApplication": "CloudApplication", "DNS": "DNS", "File": "File", "FileHash": "FileHash", "Host": "Host", "IP": "IP", "MailCluster": "MailCluster", "MailMessage": "MailMessage", "Mailbox": "Mailbox", "Malware": "Malware", "Process": "Process", "RegistryKey": "RegistryKey", "RegistryValue": "RegistryValue", "SecurityGroup": "SecurityGroup", "SubmissionMail": "SubmissionMail", "URL": "URL"}, + ) + + _schema.create_incident = cls._args_incident_configuration_create.create_incident + _schema.grouping_configuration = cls._args_incident_configuration_create.grouping_configuration + + def _execute_operations(self): + self.AlertRulesCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class AlertRulesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "Fusion", AAZStrType, ".fusion", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MLBehaviorAnalytics", AAZStrType, ".ml_behavior_analytics", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftSecurityIncidentCreation", AAZStrType, ".ms_security_incident", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "NRT", AAZStrType, ".nrt", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Scheduled", AAZStrType, ".scheduled", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "ThreatIntelligence", AAZStrType, ".threat_intelligence", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "Fusion") + _builder.discriminate_by("kind", "MLBehaviorAnalytics") + _builder.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + _builder.discriminate_by("kind", "NRT") + _builder.discriminate_by("kind", "Scheduled") + _builder.discriminate_by("kind", "ThreatIntelligence") + + disc_fusion = _builder.get("{kind:Fusion}") + if disc_fusion is not None: + disc_fusion.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Fusion}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".fusion.alert_rule_template_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".fusion.enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("scenarioExclusionPatterns", AAZListType, ".fusion.scenario_exclusion_patterns") + properties.set_prop("sourceSettings", AAZListType, ".fusion.source_settings") + + scenario_exclusion_patterns = _builder.get("{kind:Fusion}.properties.scenarioExclusionPatterns") + if scenario_exclusion_patterns is not None: + scenario_exclusion_patterns.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.scenarioExclusionPatterns[]") + if _elements is not None: + _elements.set_prop("dateAddedInUTC", AAZStrType, ".date_added_in_utc", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("exclusionPattern", AAZStrType, ".exclusion_pattern", typ_kwargs={"flags": {"required": True}}) + + source_settings = _builder.get("{kind:Fusion}.properties.sourceSettings") + if source_settings is not None: + source_settings.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.sourceSettings[]") + if _elements is not None: + _elements.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("sourceName", AAZStrType, ".source_name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("sourceSubTypes", AAZListType, ".source_sub_types") + + source_sub_types = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes") + if source_sub_types is not None: + source_sub_types.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[]") + if _elements is not None: + _elements.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("severityFilters", AAZObjectType, ".severity_filters", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("sourceSubTypeName", AAZStrType, ".source_sub_type_name", typ_kwargs={"flags": {"required": True}}) + + severity_filters = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[].severityFilters") + if severity_filters is not None: + severity_filters.set_prop("filters", AAZListType, ".filters") + + filters = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[].severityFilters.filters") + if filters is not None: + filters.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[].severityFilters.filters[]") + if _elements is not None: + _elements.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("severity", AAZStrType, ".severity", typ_kwargs={"flags": {"required": True}}) + + disc_ml_behavior_analytics = _builder.get("{kind:MLBehaviorAnalytics}") + if disc_ml_behavior_analytics is not None: + disc_ml_behavior_analytics.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MLBehaviorAnalytics}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".ml_behavior_analytics.alert_rule_template_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".ml_behavior_analytics.enabled", typ_kwargs={"flags": {"required": True}}) + + disc_microsoft_security_incident_creation = _builder.get("{kind:MicrosoftSecurityIncidentCreation}") + if disc_microsoft_security_incident_creation is not None: + disc_microsoft_security_incident_creation.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".ms_security_incident.alert_rule_template_name") + properties.set_prop("description", AAZStrType, ".ms_security_incident.description") + properties.set_prop("displayName", AAZStrType, ".ms_security_incident.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("displayNamesExcludeFilter", AAZListType, ".ms_security_incident.display_names_exclude_filter") + properties.set_prop("displayNamesFilter", AAZListType, ".ms_security_incident.display_names_filter") + properties.set_prop("enabled", AAZBoolType, ".ms_security_incident.enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("productFilter", AAZStrType, ".ms_security_incident.product_filter", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("severitiesFilter", AAZListType, ".ms_security_incident.severities_filter") + + display_names_exclude_filter = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties.displayNamesExcludeFilter") + if display_names_exclude_filter is not None: + display_names_exclude_filter.set_elements(AAZStrType, ".") + + display_names_filter = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties.displayNamesFilter") + if display_names_filter is not None: + display_names_filter.set_elements(AAZStrType, ".") + + severities_filter = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties.severitiesFilter") + if severities_filter is not None: + severities_filter.set_elements(AAZStrType, ".") + + disc_nrt = _builder.get("{kind:NRT}") + if disc_nrt is not None: + disc_nrt.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:NRT}.properties") + if properties is not None: + _build_schema_alert_details_override_create(properties.set_prop("alertDetailsOverride", AAZObjectType, ".nrt.alert_details_override")) + properties.set_prop("alertRuleTemplateName", AAZStrType, ".nrt.alert_rule_template_name") + properties.set_prop("customDetails", AAZDictType, ".nrt.custom_details") + properties.set_prop("description", AAZStrType, ".nrt.description") + properties.set_prop("displayName", AAZStrType, ".nrt.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".nrt.enabled", typ_kwargs={"flags": {"required": True}}) + _build_schema_entity_mappings_create(properties.set_prop("entityMappings", AAZListType, ".nrt.entity_mappings")) + _build_schema_incident_configuration_create(properties.set_prop("incidentConfiguration", AAZObjectType, ".nrt.incident_configuration")) + properties.set_prop("query", AAZStrType, ".nrt.query", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("severity", AAZStrType, ".nrt.severity", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionDuration", AAZStrType, ".nrt.suppression_duration", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionEnabled", AAZBoolType, ".nrt.suppression_enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tactics", AAZListType, ".nrt.tactics") + properties.set_prop("techniques", AAZListType, ".nrt.techniques") + properties.set_prop("templateVersion", AAZStrType, ".nrt.template_version") + + custom_details = _builder.get("{kind:NRT}.properties.customDetails") + if custom_details is not None: + custom_details.set_elements(AAZStrType, ".") + + tactics = _builder.get("{kind:NRT}.properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get("{kind:NRT}.properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + disc_scheduled = _builder.get("{kind:Scheduled}") + if disc_scheduled is not None: + disc_scheduled.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Scheduled}.properties") + if properties is not None: + _build_schema_alert_details_override_create(properties.set_prop("alertDetailsOverride", AAZObjectType, ".scheduled.alert_details_override")) + properties.set_prop("alertRuleTemplateName", AAZStrType, ".scheduled.alert_rule_template_name") + properties.set_prop("customDetails", AAZDictType, ".scheduled.custom_details") + properties.set_prop("description", AAZStrType, ".scheduled.description") + properties.set_prop("displayName", AAZStrType, ".scheduled.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".scheduled.enabled", typ_kwargs={"flags": {"required": True}}) + _build_schema_entity_mappings_create(properties.set_prop("entityMappings", AAZListType, ".scheduled.entity_mappings")) + properties.set_prop("eventGroupingSettings", AAZObjectType, ".scheduled.event_grouping_settings") + _build_schema_incident_configuration_create(properties.set_prop("incidentConfiguration", AAZObjectType, ".scheduled.incident_configuration")) + properties.set_prop("query", AAZStrType, ".scheduled.query", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("queryFrequency", AAZStrType, ".scheduled.query_frequency", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("queryPeriod", AAZStrType, ".scheduled.query_period", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("severity", AAZStrType, ".scheduled.severity", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionDuration", AAZStrType, ".scheduled.suppression_duration", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionEnabled", AAZBoolType, ".scheduled.suppression_enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tactics", AAZListType, ".scheduled.tactics") + properties.set_prop("techniques", AAZListType, ".scheduled.techniques") + properties.set_prop("templateVersion", AAZStrType, ".scheduled.template_version") + properties.set_prop("triggerOperator", AAZStrType, ".scheduled.trigger_operator", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("triggerThreshold", AAZIntType, ".scheduled.trigger_threshold", typ_kwargs={"flags": {"required": True}}) + + custom_details = _builder.get("{kind:Scheduled}.properties.customDetails") + if custom_details is not None: + custom_details.set_elements(AAZStrType, ".") + + event_grouping_settings = _builder.get("{kind:Scheduled}.properties.eventGroupingSettings") + if event_grouping_settings is not None: + event_grouping_settings.set_prop("aggregationKind", AAZStrType, ".aggregation_kind") + + tactics = _builder.get("{kind:Scheduled}.properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get("{kind:Scheduled}.properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + disc_threat_intelligence = _builder.get("{kind:ThreatIntelligence}") + if disc_threat_intelligence is not None: + disc_threat_intelligence.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:ThreatIntelligence}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".threat_intelligence.alert_rule_template_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".threat_intelligence.enabled", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_fusion = cls._schema_on_200_201.discriminate_by("kind", "Fusion") + disc_fusion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.scenario_exclusion_patterns = AAZListType( + serialized_name="scenarioExclusionPatterns", + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.source_settings = AAZListType( + serialized_name="sourceSettings", + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + scenario_exclusion_patterns = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns + scenario_exclusion_patterns.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns.Element + _element.date_added_in_utc = AAZStrType( + serialized_name="dateAddedInUTC", + flags={"required": True}, + ) + _element.exclusion_pattern = AAZStrType( + serialized_name="exclusionPattern", + flags={"required": True}, + ) + + source_settings = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.source_settings + source_settings.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.source_settings.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.source_name = AAZStrType( + serialized_name="sourceName", + flags={"required": True}, + ) + _element.source_sub_types = AAZListType( + serialized_name="sourceSubTypes", + ) + + source_sub_types = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity_filters = AAZObjectType( + serialized_name="severityFilters", + flags={"required": True}, + ) + _element.source_sub_type_display_name = AAZStrType( + serialized_name="sourceSubTypeDisplayName", + flags={"read_only": True}, + ) + _element.source_sub_type_name = AAZStrType( + serialized_name="sourceSubTypeName", + flags={"required": True}, + ) + + severity_filters = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters + severity_filters.filters = AAZListType() + severity_filters.is_supported = AAZBoolType( + serialized_name="isSupported", + flags={"read_only": True}, + ) + + filters = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters + filters.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity = AAZStrType( + flags={"required": True}, + ) + + tactics = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200_201.discriminate_by("kind", "Fusion").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_ml_behavior_analytics = cls._schema_on_200_201.discriminate_by("kind", "MLBehaviorAnalytics") + disc_ml_behavior_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "MLBehaviorAnalytics").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200_201.discriminate_by("kind", "MLBehaviorAnalytics").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200_201.discriminate_by("kind", "MLBehaviorAnalytics").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_microsoft_security_incident_creation = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + disc_microsoft_security_incident_creation.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.display_names_exclude_filter = AAZListType( + serialized_name="displayNamesExcludeFilter", + ) + properties.display_names_filter = AAZListType( + serialized_name="displayNamesFilter", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.product_filter = AAZStrType( + serialized_name="productFilter", + flags={"required": True}, + ) + properties.severities_filter = AAZListType( + serialized_name="severitiesFilter", + ) + + display_names_exclude_filter = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrType() + + display_names_filter = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_filter + display_names_filter.Element = AAZStrType() + + severities_filter = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.severities_filter + severities_filter.Element = AAZStrType() + + disc_nrt = cls._schema_on_200_201.discriminate_by("kind", "NRT") + disc_nrt.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "NRT").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + + custom_details = cls._schema_on_200_201.discriminate_by("kind", "NRT").properties.custom_details + custom_details.Element = AAZStrType() + + tactics = cls._schema_on_200_201.discriminate_by("kind", "NRT").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200_201.discriminate_by("kind", "NRT").properties.techniques + techniques.Element = AAZStrType() + + disc_scheduled = cls._schema_on_200_201.discriminate_by("kind", "Scheduled") + disc_scheduled.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Scheduled").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.event_grouping_settings = AAZObjectType( + serialized_name="eventGroupingSettings", + ) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_frequency = AAZStrType( + serialized_name="queryFrequency", + flags={"required": True}, + ) + properties.query_period = AAZStrType( + serialized_name="queryPeriod", + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + properties.trigger_operator = AAZStrType( + serialized_name="triggerOperator", + flags={"required": True}, + ) + properties.trigger_threshold = AAZIntType( + serialized_name="triggerThreshold", + flags={"required": True}, + ) + + custom_details = cls._schema_on_200_201.discriminate_by("kind", "Scheduled").properties.custom_details + custom_details.Element = AAZStrType() + + event_grouping_settings = cls._schema_on_200_201.discriminate_by("kind", "Scheduled").properties.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrType( + serialized_name="aggregationKind", + ) + + tactics = cls._schema_on_200_201.discriminate_by("kind", "Scheduled").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200_201.discriminate_by("kind", "Scheduled").properties.techniques + techniques.Element = AAZStrType() + + disc_threat_intelligence = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +def _build_schema_alert_details_override_create(_builder): + if _builder is None: + return + _builder.set_prop("alertDescriptionFormat", AAZStrType, ".alert_description_format") + _builder.set_prop("alertDisplayNameFormat", AAZStrType, ".alert_display_name_format") + _builder.set_prop("alertSeverityColumnName", AAZStrType, ".alert_severity_column_name") + _builder.set_prop("alertTacticsColumnName", AAZStrType, ".alert_tactics_column_name") + + +def _build_schema_entity_mappings_create(_builder): + if _builder is None: + return + _builder.set_elements(AAZObjectType) + + _elements = _builder.get("[]") + if _elements is not None: + _elements.set_prop("entityType", AAZStrType, "@EntityMappings_create.[].entity_type") + _elements.set_prop("fieldMappings", AAZListType, "@EntityMappings_create.[].field_mappings") + + field_mappings = _builder.get("[].fieldMappings") + if field_mappings is not None: + field_mappings.set_elements(AAZObjectType) + + _elements = _builder.get("[].fieldMappings[]") + if _elements is not None: + _elements.set_prop("columnName", AAZStrType, "@EntityMappings_create.[].field_mappings.[].column_name") + _elements.set_prop("identifier", AAZStrType, "@EntityMappings_create.[].field_mappings.[].identifier") + + +def _build_schema_incident_configuration_create(_builder): + if _builder is None: + return + _builder.set_prop("createIncident", AAZBoolType, ".create_incident", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("groupingConfiguration", AAZObjectType, ".grouping_configuration") + + grouping_configuration = _builder.get(".groupingConfiguration") + if grouping_configuration is not None: + grouping_configuration.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + grouping_configuration.set_prop("groupByAlertDetails", AAZListType, ".group_by_alert_details") + grouping_configuration.set_prop("groupByCustomDetails", AAZListType, ".group_by_custom_details") + grouping_configuration.set_prop("groupByEntities", AAZListType, ".group_by_entities") + grouping_configuration.set_prop("lookbackDuration", AAZStrType, ".lookback_duration", typ_kwargs={"flags": {"required": True}}) + grouping_configuration.set_prop("matchingMethod", AAZStrType, ".matching_method", typ_kwargs={"flags": {"required": True}}) + grouping_configuration.set_prop("reopenClosedIncident", AAZBoolType, ".reopen_closed_incident", typ_kwargs={"flags": {"required": True}}) + + group_by_alert_details = _builder.get(".groupingConfiguration.groupByAlertDetails") + if group_by_alert_details is not None: + group_by_alert_details.set_elements(AAZStrType, ".") + + group_by_custom_details = _builder.get(".groupingConfiguration.groupByCustomDetails") + if group_by_custom_details is not None: + group_by_custom_details.set_elements(AAZStrType, ".") + + group_by_entities = _builder.get(".groupingConfiguration.groupByEntities") + if group_by_entities is not None: + group_by_entities.set_elements(AAZStrType, ".") + + +_schema_alert_details_override_read = None + + +def _build_schema_alert_details_override_read(_schema): + global _schema_alert_details_override_read + if _schema_alert_details_override_read is not None: + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + return + + _schema_alert_details_override_read = AAZObjectType() + + alert_details_override_read = _schema_alert_details_override_read + alert_details_override_read.alert_description_format = AAZStrType( + serialized_name="alertDescriptionFormat", + ) + alert_details_override_read.alert_display_name_format = AAZStrType( + serialized_name="alertDisplayNameFormat", + ) + alert_details_override_read.alert_severity_column_name = AAZStrType( + serialized_name="alertSeverityColumnName", + ) + alert_details_override_read.alert_tactics_column_name = AAZStrType( + serialized_name="alertTacticsColumnName", + ) + + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + + +_schema_entity_mappings_read = None + + +def _build_schema_entity_mappings_read(_schema): + global _schema_entity_mappings_read + if _schema_entity_mappings_read is not None: + _schema.Element = _schema_entity_mappings_read.Element + return + + _schema_entity_mappings_read = AAZListType() + + entity_mappings_read = _schema_entity_mappings_read + entity_mappings_read.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = _schema_entity_mappings_read.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element.field_mappings.Element + _element.column_name = AAZStrType( + serialized_name="columnName", + ) + _element.identifier = AAZStrType() + + _schema.Element = _schema_entity_mappings_read.Element + + +_schema_incident_configuration_read = None + + +def _build_schema_incident_configuration_read(_schema): + global _schema_incident_configuration_read + if _schema_incident_configuration_read is not None: + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + return + + _schema_incident_configuration_read = AAZObjectType() + + incident_configuration_read = _schema_incident_configuration_read + incident_configuration_read.create_incident = AAZBoolType( + serialized_name="createIncident", + flags={"required": True}, + ) + incident_configuration_read.grouping_configuration = AAZObjectType( + serialized_name="groupingConfiguration", + ) + + grouping_configuration = _schema_incident_configuration_read.grouping_configuration + grouping_configuration.enabled = AAZBoolType( + flags={"required": True}, + ) + grouping_configuration.group_by_alert_details = AAZListType( + serialized_name="groupByAlertDetails", + ) + grouping_configuration.group_by_custom_details = AAZListType( + serialized_name="groupByCustomDetails", + ) + grouping_configuration.group_by_entities = AAZListType( + serialized_name="groupByEntities", + ) + grouping_configuration.lookback_duration = AAZStrType( + serialized_name="lookbackDuration", + flags={"required": True}, + ) + grouping_configuration.matching_method = AAZStrType( + serialized_name="matchingMethod", + flags={"required": True}, + ) + grouping_configuration.reopen_closed_incident = AAZBoolType( + serialized_name="reopenClosedIncident", + flags={"required": True}, + ) + + group_by_alert_details = _schema_incident_configuration_read.grouping_configuration.group_by_alert_details + group_by_alert_details.Element = AAZStrType() + + group_by_custom_details = _schema_incident_configuration_read.grouping_configuration.group_by_custom_details + group_by_custom_details.Element = AAZStrType() + + group_by_entities = _schema_incident_configuration_read.grouping_configuration.group_by_entities + group_by_entities.Element = AAZStrType() + + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_delete.py new file mode 100644 index 00000000000..36ac241fe3f --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_delete.py @@ -0,0 +1,135 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["-n", "--name", "--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.AlertRulesDelete(ctx=self.ctx)() + + class AlertRulesDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_list.py new file mode 100644 index 00000000000..da3bfbab427 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_list.py @@ -0,0 +1,733 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule list", + is_experimental=True, +) +class List(AAZCommand): + """Get all alert rules. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.AlertRulesList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class AlertRulesList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_fusion = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion") + disc_fusion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.scenario_exclusion_patterns = AAZListType( + serialized_name="scenarioExclusionPatterns", + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.source_settings = AAZListType( + serialized_name="sourceSettings", + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + scenario_exclusion_patterns = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns + scenario_exclusion_patterns.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns.Element + _element.date_added_in_utc = AAZStrType( + serialized_name="dateAddedInUTC", + flags={"required": True}, + ) + _element.exclusion_pattern = AAZStrType( + serialized_name="exclusionPattern", + flags={"required": True}, + ) + + source_settings = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings + source_settings.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.source_name = AAZStrType( + serialized_name="sourceName", + flags={"required": True}, + ) + _element.source_sub_types = AAZListType( + serialized_name="sourceSubTypes", + ) + + source_sub_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity_filters = AAZObjectType( + serialized_name="severityFilters", + flags={"required": True}, + ) + _element.source_sub_type_display_name = AAZStrType( + serialized_name="sourceSubTypeDisplayName", + flags={"read_only": True}, + ) + _element.source_sub_type_name = AAZStrType( + serialized_name="sourceSubTypeName", + flags={"required": True}, + ) + + severity_filters = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters + severity_filters.filters = AAZListType() + severity_filters.is_supported = AAZBoolType( + serialized_name="isSupported", + flags={"read_only": True}, + ) + + filters = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters + filters.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity = AAZStrType( + flags={"required": True}, + ) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_ml_behavior_analytics = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics") + disc_ml_behavior_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_microsoft_security_incident_creation = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + disc_microsoft_security_incident_creation.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.display_names_exclude_filter = AAZListType( + serialized_name="displayNamesExcludeFilter", + ) + properties.display_names_filter = AAZListType( + serialized_name="displayNamesFilter", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.product_filter = AAZStrType( + serialized_name="productFilter", + flags={"required": True}, + ) + properties.severities_filter = AAZListType( + serialized_name="severitiesFilter", + ) + + display_names_exclude_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrType() + + display_names_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_filter + display_names_filter.Element = AAZStrType() + + severities_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.severities_filter + severities_filter.Element = AAZStrType() + + disc_nrt = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT") + disc_nrt.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + + custom_details = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties.custom_details + custom_details.Element = AAZStrType() + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties.techniques + techniques.Element = AAZStrType() + + disc_scheduled = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled") + disc_scheduled.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.event_grouping_settings = AAZObjectType( + serialized_name="eventGroupingSettings", + ) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_frequency = AAZStrType( + serialized_name="queryFrequency", + flags={"required": True}, + ) + properties.query_period = AAZStrType( + serialized_name="queryPeriod", + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + properties.trigger_operator = AAZStrType( + serialized_name="triggerOperator", + flags={"required": True}, + ) + properties.trigger_threshold = AAZIntType( + serialized_name="triggerThreshold", + flags={"required": True}, + ) + + custom_details = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.custom_details + custom_details.Element = AAZStrType() + + event_grouping_settings = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrType( + serialized_name="aggregationKind", + ) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.techniques + techniques.Element = AAZStrType() + + disc_threat_intelligence = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_alert_details_override_read = None + + +def _build_schema_alert_details_override_read(_schema): + global _schema_alert_details_override_read + if _schema_alert_details_override_read is not None: + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + return + + _schema_alert_details_override_read = AAZObjectType() + + alert_details_override_read = _schema_alert_details_override_read + alert_details_override_read.alert_description_format = AAZStrType( + serialized_name="alertDescriptionFormat", + ) + alert_details_override_read.alert_display_name_format = AAZStrType( + serialized_name="alertDisplayNameFormat", + ) + alert_details_override_read.alert_severity_column_name = AAZStrType( + serialized_name="alertSeverityColumnName", + ) + alert_details_override_read.alert_tactics_column_name = AAZStrType( + serialized_name="alertTacticsColumnName", + ) + + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + + +_schema_entity_mappings_read = None + + +def _build_schema_entity_mappings_read(_schema): + global _schema_entity_mappings_read + if _schema_entity_mappings_read is not None: + _schema.Element = _schema_entity_mappings_read.Element + return + + _schema_entity_mappings_read = AAZListType() + + entity_mappings_read = _schema_entity_mappings_read + entity_mappings_read.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = _schema_entity_mappings_read.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element.field_mappings.Element + _element.column_name = AAZStrType( + serialized_name="columnName", + ) + _element.identifier = AAZStrType() + + _schema.Element = _schema_entity_mappings_read.Element + + +_schema_incident_configuration_read = None + + +def _build_schema_incident_configuration_read(_schema): + global _schema_incident_configuration_read + if _schema_incident_configuration_read is not None: + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + return + + _schema_incident_configuration_read = AAZObjectType() + + incident_configuration_read = _schema_incident_configuration_read + incident_configuration_read.create_incident = AAZBoolType( + serialized_name="createIncident", + flags={"required": True}, + ) + incident_configuration_read.grouping_configuration = AAZObjectType( + serialized_name="groupingConfiguration", + ) + + grouping_configuration = _schema_incident_configuration_read.grouping_configuration + grouping_configuration.enabled = AAZBoolType( + flags={"required": True}, + ) + grouping_configuration.group_by_alert_details = AAZListType( + serialized_name="groupByAlertDetails", + ) + grouping_configuration.group_by_custom_details = AAZListType( + serialized_name="groupByCustomDetails", + ) + grouping_configuration.group_by_entities = AAZListType( + serialized_name="groupByEntities", + ) + grouping_configuration.lookback_duration = AAZStrType( + serialized_name="lookbackDuration", + flags={"required": True}, + ) + grouping_configuration.matching_method = AAZStrType( + serialized_name="matchingMethod", + flags={"required": True}, + ) + grouping_configuration.reopen_closed_incident = AAZBoolType( + serialized_name="reopenClosedIncident", + flags={"required": True}, + ) + + group_by_alert_details = _schema_incident_configuration_read.grouping_configuration.group_by_alert_details + group_by_alert_details.Element = AAZStrType() + + group_by_custom_details = _schema_incident_configuration_read.grouping_configuration.group_by_custom_details + group_by_custom_details.Element = AAZStrType() + + group_by_entities = _schema_incident_configuration_read.grouping_configuration.group_by_entities + group_by_entities.Element = AAZStrType() + + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_show.py new file mode 100644 index 00000000000..adf2a5a06a0 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_show.py @@ -0,0 +1,733 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule show", + is_experimental=True, +) +class Show(AAZCommand): + """Get the alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["-n", "--name", "--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.AlertRulesGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class AlertRulesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_fusion = cls._schema_on_200.discriminate_by("kind", "Fusion") + disc_fusion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Fusion").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.scenario_exclusion_patterns = AAZListType( + serialized_name="scenarioExclusionPatterns", + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.source_settings = AAZListType( + serialized_name="sourceSettings", + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + scenario_exclusion_patterns = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns + scenario_exclusion_patterns.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns.Element + _element.date_added_in_utc = AAZStrType( + serialized_name="dateAddedInUTC", + flags={"required": True}, + ) + _element.exclusion_pattern = AAZStrType( + serialized_name="exclusionPattern", + flags={"required": True}, + ) + + source_settings = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings + source_settings.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.source_name = AAZStrType( + serialized_name="sourceName", + flags={"required": True}, + ) + _element.source_sub_types = AAZListType( + serialized_name="sourceSubTypes", + ) + + source_sub_types = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity_filters = AAZObjectType( + serialized_name="severityFilters", + flags={"required": True}, + ) + _element.source_sub_type_display_name = AAZStrType( + serialized_name="sourceSubTypeDisplayName", + flags={"read_only": True}, + ) + _element.source_sub_type_name = AAZStrType( + serialized_name="sourceSubTypeName", + flags={"required": True}, + ) + + severity_filters = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters + severity_filters.filters = AAZListType() + severity_filters.is_supported = AAZBoolType( + serialized_name="isSupported", + flags={"read_only": True}, + ) + + filters = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters + filters.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity = AAZStrType( + flags={"required": True}, + ) + + tactics = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_ml_behavior_analytics = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics") + disc_ml_behavior_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_microsoft_security_incident_creation = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + disc_microsoft_security_incident_creation.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.display_names_exclude_filter = AAZListType( + serialized_name="displayNamesExcludeFilter", + ) + properties.display_names_filter = AAZListType( + serialized_name="displayNamesFilter", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.product_filter = AAZStrType( + serialized_name="productFilter", + flags={"required": True}, + ) + properties.severities_filter = AAZListType( + serialized_name="severitiesFilter", + ) + + display_names_exclude_filter = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrType() + + display_names_filter = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_filter + display_names_filter.Element = AAZStrType() + + severities_filter = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.severities_filter + severities_filter.Element = AAZStrType() + + disc_nrt = cls._schema_on_200.discriminate_by("kind", "NRT") + disc_nrt.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "NRT").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + + custom_details = cls._schema_on_200.discriminate_by("kind", "NRT").properties.custom_details + custom_details.Element = AAZStrType() + + tactics = cls._schema_on_200.discriminate_by("kind", "NRT").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "NRT").properties.techniques + techniques.Element = AAZStrType() + + disc_scheduled = cls._schema_on_200.discriminate_by("kind", "Scheduled") + disc_scheduled.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.event_grouping_settings = AAZObjectType( + serialized_name="eventGroupingSettings", + ) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_frequency = AAZStrType( + serialized_name="queryFrequency", + flags={"required": True}, + ) + properties.query_period = AAZStrType( + serialized_name="queryPeriod", + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + properties.trigger_operator = AAZStrType( + serialized_name="triggerOperator", + flags={"required": True}, + ) + properties.trigger_threshold = AAZIntType( + serialized_name="triggerThreshold", + flags={"required": True}, + ) + + custom_details = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.custom_details + custom_details.Element = AAZStrType() + + event_grouping_settings = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrType( + serialized_name="aggregationKind", + ) + + tactics = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.techniques + techniques.Element = AAZStrType() + + disc_threat_intelligence = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_alert_details_override_read = None + + +def _build_schema_alert_details_override_read(_schema): + global _schema_alert_details_override_read + if _schema_alert_details_override_read is not None: + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + return + + _schema_alert_details_override_read = AAZObjectType() + + alert_details_override_read = _schema_alert_details_override_read + alert_details_override_read.alert_description_format = AAZStrType( + serialized_name="alertDescriptionFormat", + ) + alert_details_override_read.alert_display_name_format = AAZStrType( + serialized_name="alertDisplayNameFormat", + ) + alert_details_override_read.alert_severity_column_name = AAZStrType( + serialized_name="alertSeverityColumnName", + ) + alert_details_override_read.alert_tactics_column_name = AAZStrType( + serialized_name="alertTacticsColumnName", + ) + + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + + +_schema_entity_mappings_read = None + + +def _build_schema_entity_mappings_read(_schema): + global _schema_entity_mappings_read + if _schema_entity_mappings_read is not None: + _schema.Element = _schema_entity_mappings_read.Element + return + + _schema_entity_mappings_read = AAZListType() + + entity_mappings_read = _schema_entity_mappings_read + entity_mappings_read.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = _schema_entity_mappings_read.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element.field_mappings.Element + _element.column_name = AAZStrType( + serialized_name="columnName", + ) + _element.identifier = AAZStrType() + + _schema.Element = _schema_entity_mappings_read.Element + + +_schema_incident_configuration_read = None + + +def _build_schema_incident_configuration_read(_schema): + global _schema_incident_configuration_read + if _schema_incident_configuration_read is not None: + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + return + + _schema_incident_configuration_read = AAZObjectType() + + incident_configuration_read = _schema_incident_configuration_read + incident_configuration_read.create_incident = AAZBoolType( + serialized_name="createIncident", + flags={"required": True}, + ) + incident_configuration_read.grouping_configuration = AAZObjectType( + serialized_name="groupingConfiguration", + ) + + grouping_configuration = _schema_incident_configuration_read.grouping_configuration + grouping_configuration.enabled = AAZBoolType( + flags={"required": True}, + ) + grouping_configuration.group_by_alert_details = AAZListType( + serialized_name="groupByAlertDetails", + ) + grouping_configuration.group_by_custom_details = AAZListType( + serialized_name="groupByCustomDetails", + ) + grouping_configuration.group_by_entities = AAZListType( + serialized_name="groupByEntities", + ) + grouping_configuration.lookback_duration = AAZStrType( + serialized_name="lookbackDuration", + flags={"required": True}, + ) + grouping_configuration.matching_method = AAZStrType( + serialized_name="matchingMethod", + flags={"required": True}, + ) + grouping_configuration.reopen_closed_incident = AAZBoolType( + serialized_name="reopenClosedIncident", + flags={"required": True}, + ) + + group_by_alert_details = _schema_incident_configuration_read.grouping_configuration.group_by_alert_details + group_by_alert_details.Element = AAZStrType() + + group_by_custom_details = _schema_incident_configuration_read.grouping_configuration.group_by_custom_details + group_by_custom_details.Element = AAZStrType() + + group_by_entities = _schema_incident_configuration_read.grouping_configuration.group_by_entities + group_by_entities.Element = AAZStrType() + + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_update.py new file mode 100644 index 00000000000..eca6cdce926 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/_update.py @@ -0,0 +1,1785 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["-n", "--name", "--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "AlertRule" + + _args_schema = cls._args_schema + _args_schema.fusion = AAZObjectArg( + options=["--fusion"], + arg_group="AlertRule", + ) + _args_schema.ml_behavior_analytics = AAZObjectArg( + options=["--ml-behavior-analytics"], + arg_group="AlertRule", + ) + _args_schema.ms_security_incident = AAZObjectArg( + options=["--ms-security-incident"], + arg_group="AlertRule", + help="Microsoft security incident creation.", + is_experimental=True, + ) + _args_schema.nrt = AAZObjectArg( + options=["--nrt"], + arg_group="AlertRule", + ) + _args_schema.scheduled = AAZObjectArg( + options=["--scheduled"], + arg_group="AlertRule", + ) + _args_schema.threat_intelligence = AAZObjectArg( + options=["--threat-intelligence"], + arg_group="AlertRule", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="AlertRule", + help="Etag of the azure resource", + nullable=True, + ) + + fusion = cls._args_schema.fusion + fusion.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + fusion.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + fusion.scenario_exclusion_patterns = AAZListArg( + options=["scenario-exclusion-patterns"], + help="Configuration to exclude scenarios in fusion detection.", + nullable=True, + ) + fusion.source_settings = AAZListArg( + options=["source-settings"], + help="Configuration for all supported source signals in fusion detection.", + nullable=True, + ) + + scenario_exclusion_patterns = cls._args_schema.fusion.scenario_exclusion_patterns + scenario_exclusion_patterns.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.scenario_exclusion_patterns.Element + _element.date_added_in_utc = AAZStrArg( + options=["date-added-in-utc"], + help="DateTime when scenario exclusion pattern is added in UTC.", + ) + _element.exclusion_pattern = AAZStrArg( + options=["exclusion-pattern"], + help="Scenario exclusion pattern.", + ) + + source_settings = cls._args_schema.fusion.source_settings + source_settings.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.source_settings.Element + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this source signal is enabled or disabled in Fusion detection.", + ) + _element.source_name = AAZStrArg( + options=["source-name"], + help="Name of the Fusion source signal. Refer to Fusion alert rule template for supported values.", + ) + _element.source_sub_types = AAZListArg( + options=["source-sub-types"], + help="Configuration for all source subtypes under this source signal consumed in fusion detection.", + nullable=True, + ) + + source_sub_types = cls._args_schema.fusion.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this source subtype under source signal is enabled or disabled in Fusion detection.", + ) + _element.severity_filters = AAZObjectArg( + options=["severity-filters"], + help="Severity configuration for a source subtype consumed in fusion detection.", + ) + _element.source_sub_type_name = AAZStrArg( + options=["source-sub-type-name"], + help="The Name of the source subtype under a given source signal in Fusion detection. Refer to Fusion alert rule template for supported values.", + ) + + severity_filters = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element.severity_filters + severity_filters.filters = AAZListArg( + options=["filters"], + help="Individual Severity configuration settings for a given source subtype consumed in Fusion detection.", + nullable=True, + ) + + filters = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element.severity_filters.filters + filters.Element = AAZObjectArg() + + _element = cls._args_schema.fusion.source_settings.Element.source_sub_types.Element.severity_filters.filters.Element + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this severity is enabled or disabled for this source subtype consumed in Fusion detection.", + ) + _element.severity = AAZStrArg( + options=["severity"], + help="The Severity for a given source subtype consumed in Fusion detection.", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + + ml_behavior_analytics = cls._args_schema.ml_behavior_analytics + ml_behavior_analytics.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + ml_behavior_analytics.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + + ms_security_incident = cls._args_schema.ms_security_incident + ms_security_incident.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + nullable=True, + ) + ms_security_incident.description = AAZStrArg( + options=["description"], + help="The description of the alert rule.", + nullable=True, + ) + ms_security_incident.display_name = AAZStrArg( + options=["display-name"], + help="The display name for alerts created by this alert rule.", + ) + ms_security_incident.display_names_exclude_filter = AAZListArg( + options=["display-names-exclude-filter"], + help="the alerts' displayNames on which the cases will not be generated", + nullable=True, + ) + ms_security_incident.display_names_filter = AAZListArg( + options=["display-names-filter"], + help="the alerts' displayNames on which the cases will be generated", + nullable=True, + ) + ms_security_incident.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + ms_security_incident.product_filter = AAZStrArg( + options=["product-filter"], + help="The alerts' productName on which the cases will be generated", + enum={"Azure Active Directory Identity Protection": "Azure Active Directory Identity Protection", "Azure Advanced Threat Protection": "Azure Advanced Threat Protection", "Azure Security Center": "Azure Security Center", "Azure Security Center for IoT": "Azure Security Center for IoT", "Microsoft Cloud App Security": "Microsoft Cloud App Security", "Microsoft Defender Advanced Threat Protection": "Microsoft Defender Advanced Threat Protection", "Office 365 Advanced Threat Protection": "Office 365 Advanced Threat Protection"}, + ) + ms_security_incident.severities_filter = AAZListArg( + options=["severities-filter"], + help="the alerts' severities on which the cases will be generated", + nullable=True, + ) + + display_names_exclude_filter = cls._args_schema.ms_security_incident.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrArg() + + display_names_filter = cls._args_schema.ms_security_incident.display_names_filter + display_names_filter.Element = AAZStrArg() + + severities_filter = cls._args_schema.ms_security_incident.severities_filter + severities_filter.Element = AAZStrArg( + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + + nrt = cls._args_schema.nrt + nrt.alert_details_override = AAZObjectArg( + options=["alert-details-override"], + help="The alert details override settings", + nullable=True, + ) + cls._build_args_alert_details_override_update(nrt.alert_details_override) + nrt.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + nullable=True, + ) + nrt.custom_details = AAZDictArg( + options=["custom-details"], + help="Dictionary of string key-value pairs of columns to be attached to the alert", + nullable=True, + ) + nrt.description = AAZStrArg( + options=["description"], + help="The description of the alert rule.", + nullable=True, + ) + nrt.display_name = AAZStrArg( + options=["display-name"], + help="The display name for alerts created by this alert rule.", + ) + nrt.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + nrt.entity_mappings = AAZListArg( + options=["entity-mappings"], + help="Array of the entity mappings of the alert rule", + nullable=True, + ) + cls._build_args_entity_mappings_update(nrt.entity_mappings) + nrt.incident_configuration = AAZObjectArg( + options=["incident-configuration"], + help="The settings of the incidents that created from alerts triggered by this analytics rule", + nullable=True, + ) + cls._build_args_incident_configuration_update(nrt.incident_configuration) + nrt.query = AAZStrArg( + options=["query"], + help="The query that creates alerts for this rule.", + ) + nrt.severity = AAZStrArg( + options=["severity"], + help="The severity for alerts created by this alert rule.", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + nrt.suppression_duration = AAZStrArg( + options=["suppression-duration"], + help="The suppression (in ISO 8601 duration format) to wait since last time this alert rule been triggered.", + ) + nrt.suppression_enabled = AAZBoolArg( + options=["suppression-enabled"], + help="Determines whether the suppression for this alert rule is enabled or disabled.", + ) + nrt.tactics = AAZListArg( + options=["tactics"], + help="The tactics of the alert rule", + nullable=True, + ) + nrt.techniques = AAZListArg( + options=["techniques"], + help="The techniques of the alert rule", + nullable=True, + ) + nrt.template_version = AAZStrArg( + options=["template-version"], + help="The version of the alert rule template used to create this rule - in format , where all are numbers, for example 0 <1.0.2>", + nullable=True, + ) + + custom_details = cls._args_schema.nrt.custom_details + custom_details.Element = AAZStrArg() + + tactics = cls._args_schema.nrt.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.nrt.techniques + techniques.Element = AAZStrArg() + + scheduled = cls._args_schema.scheduled + scheduled.alert_details_override = AAZObjectArg( + options=["alert-details-override"], + help="The alert details override settings", + nullable=True, + ) + cls._build_args_alert_details_override_update(scheduled.alert_details_override) + scheduled.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + nullable=True, + ) + scheduled.custom_details = AAZDictArg( + options=["custom-details"], + help="Dictionary of string key-value pairs of columns to be attached to the alert", + nullable=True, + ) + scheduled.description = AAZStrArg( + options=["description"], + help="The description of the alert rule.", + nullable=True, + ) + scheduled.display_name = AAZStrArg( + options=["display-name"], + help="The display name for alerts created by this alert rule.", + ) + scheduled.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + scheduled.entity_mappings = AAZListArg( + options=["entity-mappings"], + help="Array of the entity mappings of the alert rule", + nullable=True, + ) + cls._build_args_entity_mappings_update(scheduled.entity_mappings) + scheduled.event_grouping_settings = AAZObjectArg( + options=["event-grouping-settings"], + help="The event grouping settings.", + nullable=True, + ) + scheduled.incident_configuration = AAZObjectArg( + options=["incident-configuration"], + help="The settings of the incidents that created from alerts triggered by this analytics rule", + nullable=True, + ) + cls._build_args_incident_configuration_update(scheduled.incident_configuration) + scheduled.query = AAZStrArg( + options=["query"], + help="The query that creates alerts for this rule.", + ) + scheduled.query_frequency = AAZStrArg( + options=["query-frequency"], + help="The frequency (in ISO 8601 duration format) for this alert rule to run.", + ) + scheduled.query_period = AAZStrArg( + options=["query-period"], + help="The period (in ISO 8601 duration format) that this alert rule looks at.", + ) + scheduled.severity = AAZStrArg( + options=["severity"], + help="The severity for alerts created by this alert rule.", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + scheduled.suppression_duration = AAZStrArg( + options=["suppression-duration"], + help="The suppression (in ISO 8601 duration format) to wait since last time this alert rule been triggered.", + ) + scheduled.suppression_enabled = AAZBoolArg( + options=["suppression-enabled"], + help="Determines whether the suppression for this alert rule is enabled or disabled.", + ) + scheduled.tactics = AAZListArg( + options=["tactics"], + help="The tactics of the alert rule", + nullable=True, + ) + scheduled.techniques = AAZListArg( + options=["techniques"], + help="The techniques of the alert rule", + nullable=True, + ) + scheduled.template_version = AAZStrArg( + options=["template-version"], + help="The version of the alert rule template used to create this rule - in format , where all are numbers, for example 0 <1.0.2>", + nullable=True, + ) + scheduled.trigger_operator = AAZStrArg( + options=["trigger-operator"], + help="The operation against the threshold that triggers alert rule.", + enum={"Equal": "Equal", "GreaterThan": "GreaterThan", "LessThan": "LessThan", "NotEqual": "NotEqual"}, + ) + scheduled.trigger_threshold = AAZIntArg( + options=["trigger-threshold"], + help="The threshold triggers this alert rule.", + ) + + custom_details = cls._args_schema.scheduled.custom_details + custom_details.Element = AAZStrArg() + + event_grouping_settings = cls._args_schema.scheduled.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrArg( + options=["aggregation-kind"], + help="The event grouping aggregation kinds", + nullable=True, + enum={"AlertPerResult": "AlertPerResult", "SingleAlert": "SingleAlert"}, + ) + + tactics = cls._args_schema.scheduled.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.scheduled.techniques + techniques.Element = AAZStrArg() + + threat_intelligence = cls._args_schema.threat_intelligence + threat_intelligence.alert_rule_template_name = AAZStrArg( + options=["alert-rule-template-name"], + help="The Name of the alert rule template used to create this rule.", + ) + threat_intelligence.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this alert rule is enabled or disabled.", + ) + return cls._args_schema + + _args_alert_details_override_update = None + + @classmethod + def _build_args_alert_details_override_update(cls, _schema): + if cls._args_alert_details_override_update is not None: + _schema.alert_description_format = cls._args_alert_details_override_update.alert_description_format + _schema.alert_display_name_format = cls._args_alert_details_override_update.alert_display_name_format + _schema.alert_severity_column_name = cls._args_alert_details_override_update.alert_severity_column_name + _schema.alert_tactics_column_name = cls._args_alert_details_override_update.alert_tactics_column_name + return + + cls._args_alert_details_override_update = AAZObjectArg( + nullable=True, + ) + + alert_details_override_update = cls._args_alert_details_override_update + alert_details_override_update.alert_description_format = AAZStrArg( + options=["alert-description-format"], + help="the format containing columns name(s) to override the alert description", + nullable=True, + ) + alert_details_override_update.alert_display_name_format = AAZStrArg( + options=["alert-display-name-format"], + help="the format containing columns name(s) to override the alert name", + nullable=True, + ) + alert_details_override_update.alert_severity_column_name = AAZStrArg( + options=["alert-severity-column-name"], + help="the column name to take the alert severity from", + nullable=True, + ) + alert_details_override_update.alert_tactics_column_name = AAZStrArg( + options=["alert-tactics-column-name"], + help="the column name to take the alert tactics from", + nullable=True, + ) + + _schema.alert_description_format = cls._args_alert_details_override_update.alert_description_format + _schema.alert_display_name_format = cls._args_alert_details_override_update.alert_display_name_format + _schema.alert_severity_column_name = cls._args_alert_details_override_update.alert_severity_column_name + _schema.alert_tactics_column_name = cls._args_alert_details_override_update.alert_tactics_column_name + + _args_entity_mappings_update = None + + @classmethod + def _build_args_entity_mappings_update(cls, _schema): + if cls._args_entity_mappings_update is not None: + _schema.Element = cls._args_entity_mappings_update.Element + return + + cls._args_entity_mappings_update = AAZListArg( + nullable=True, + ) + + entity_mappings_update = cls._args_entity_mappings_update + entity_mappings_update.Element = AAZObjectArg() + + _element = cls._args_entity_mappings_update.Element + _element.entity_type = AAZStrArg( + options=["entity-type"], + help="The V3 type of the mapped entity", + nullable=True, + enum={"Account": "Account", "AzureResource": "AzureResource", "CloudApplication": "CloudApplication", "DNS": "DNS", "File": "File", "FileHash": "FileHash", "Host": "Host", "IP": "IP", "MailCluster": "MailCluster", "MailMessage": "MailMessage", "Mailbox": "Mailbox", "Malware": "Malware", "Process": "Process", "RegistryKey": "RegistryKey", "RegistryValue": "RegistryValue", "SecurityGroup": "SecurityGroup", "SubmissionMail": "SubmissionMail", "URL": "URL"}, + ) + _element.field_mappings = AAZListArg( + options=["field-mappings"], + help="array of field mappings for the given entity mapping", + nullable=True, + ) + + field_mappings = cls._args_entity_mappings_update.Element.field_mappings + field_mappings.Element = AAZObjectArg() + + _element = cls._args_entity_mappings_update.Element.field_mappings.Element + _element.column_name = AAZStrArg( + options=["column-name"], + help="the column name to be mapped to the identifier", + nullable=True, + ) + _element.identifier = AAZStrArg( + options=["identifier"], + help="the V3 identifier of the entity", + nullable=True, + ) + + _schema.Element = cls._args_entity_mappings_update.Element + + _args_incident_configuration_update = None + + @classmethod + def _build_args_incident_configuration_update(cls, _schema): + if cls._args_incident_configuration_update is not None: + _schema.create_incident = cls._args_incident_configuration_update.create_incident + _schema.grouping_configuration = cls._args_incident_configuration_update.grouping_configuration + return + + cls._args_incident_configuration_update = AAZObjectArg( + nullable=True, + ) + + incident_configuration_update = cls._args_incident_configuration_update + incident_configuration_update.create_incident = AAZBoolArg( + options=["create-incident"], + help="Create incidents from alerts triggered by this analytics rule", + ) + incident_configuration_update.grouping_configuration = AAZObjectArg( + options=["grouping-configuration"], + help="Set how the alerts that are triggered by this analytics rule, are grouped into incidents", + nullable=True, + ) + + grouping_configuration = cls._args_incident_configuration_update.grouping_configuration + grouping_configuration.enabled = AAZBoolArg( + options=["enabled"], + help="Grouping enabled", + ) + grouping_configuration.group_by_alert_details = AAZListArg( + options=["group-by-alert-details"], + help="A list of alert details to group by (when matchingMethod is Selected)", + nullable=True, + ) + grouping_configuration.group_by_custom_details = AAZListArg( + options=["group-by-custom-details"], + help="A list of custom details keys to group by (when matchingMethod is Selected). Only keys defined in the current alert rule may be used.", + nullable=True, + ) + grouping_configuration.group_by_entities = AAZListArg( + options=["group-by-entities"], + help="A list of entity types to group by (when matchingMethod is Selected). Only entities defined in the current alert rule may be used.", + nullable=True, + ) + grouping_configuration.lookback_duration = AAZStrArg( + options=["lookback-duration"], + help="Limit the group to alerts created within the lookback duration (in ISO 8601 duration format)", + ) + grouping_configuration.matching_method = AAZStrArg( + options=["matching-method"], + help="Grouping matching method. When method is Selected at least one of groupByEntities, groupByAlertDetails, groupByCustomDetails must be provided and not empty.", + enum={"AllEntities": "AllEntities", "AnyAlert": "AnyAlert", "Selected": "Selected"}, + ) + grouping_configuration.reopen_closed_incident = AAZBoolArg( + options=["reopen-closed-incident"], + help="Re-open closed matching incidents", + ) + + group_by_alert_details = cls._args_incident_configuration_update.grouping_configuration.group_by_alert_details + group_by_alert_details.Element = AAZStrArg( + enum={"DisplayName": "DisplayName", "Severity": "Severity"}, + ) + + group_by_custom_details = cls._args_incident_configuration_update.grouping_configuration.group_by_custom_details + group_by_custom_details.Element = AAZStrArg() + + group_by_entities = cls._args_incident_configuration_update.grouping_configuration.group_by_entities + group_by_entities.Element = AAZStrArg( + enum={"Account": "Account", "AzureResource": "AzureResource", "CloudApplication": "CloudApplication", "DNS": "DNS", "File": "File", "FileHash": "FileHash", "Host": "Host", "IP": "IP", "MailCluster": "MailCluster", "MailMessage": "MailMessage", "Mailbox": "Mailbox", "Malware": "Malware", "Process": "Process", "RegistryKey": "RegistryKey", "RegistryValue": "RegistryValue", "SecurityGroup": "SecurityGroup", "SubmissionMail": "SubmissionMail", "URL": "URL"}, + ) + + _schema.create_incident = cls._args_incident_configuration_update.create_incident + _schema.grouping_configuration = cls._args_incident_configuration_update.grouping_configuration + + def _execute_operations(self): + self.AlertRulesGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.AlertRulesCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class AlertRulesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_alert_rule_read(cls._schema_on_200) + + return cls._schema_on_200 + + class AlertRulesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_alert_rule_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "Fusion", AAZStrType, ".fusion", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MLBehaviorAnalytics", AAZStrType, ".ml_behavior_analytics", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftSecurityIncidentCreation", AAZStrType, ".ms_security_incident", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "NRT", AAZStrType, ".nrt", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Scheduled", AAZStrType, ".scheduled", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "ThreatIntelligence", AAZStrType, ".threat_intelligence", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "Fusion") + _builder.discriminate_by("kind", "MLBehaviorAnalytics") + _builder.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + _builder.discriminate_by("kind", "NRT") + _builder.discriminate_by("kind", "Scheduled") + _builder.discriminate_by("kind", "ThreatIntelligence") + + disc_fusion = _builder.get("{kind:Fusion}") + if disc_fusion is not None: + disc_fusion.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Fusion}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".fusion.alert_rule_template_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".fusion.enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("scenarioExclusionPatterns", AAZListType, ".fusion.scenario_exclusion_patterns") + properties.set_prop("sourceSettings", AAZListType, ".fusion.source_settings") + + scenario_exclusion_patterns = _builder.get("{kind:Fusion}.properties.scenarioExclusionPatterns") + if scenario_exclusion_patterns is not None: + scenario_exclusion_patterns.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.scenarioExclusionPatterns[]") + if _elements is not None: + _elements.set_prop("dateAddedInUTC", AAZStrType, ".date_added_in_utc", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("exclusionPattern", AAZStrType, ".exclusion_pattern", typ_kwargs={"flags": {"required": True}}) + + source_settings = _builder.get("{kind:Fusion}.properties.sourceSettings") + if source_settings is not None: + source_settings.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.sourceSettings[]") + if _elements is not None: + _elements.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("sourceName", AAZStrType, ".source_name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("sourceSubTypes", AAZListType, ".source_sub_types") + + source_sub_types = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes") + if source_sub_types is not None: + source_sub_types.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[]") + if _elements is not None: + _elements.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("severityFilters", AAZObjectType, ".severity_filters", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("sourceSubTypeName", AAZStrType, ".source_sub_type_name", typ_kwargs={"flags": {"required": True}}) + + severity_filters = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[].severityFilters") + if severity_filters is not None: + severity_filters.set_prop("filters", AAZListType, ".filters") + + filters = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[].severityFilters.filters") + if filters is not None: + filters.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Fusion}.properties.sourceSettings[].sourceSubTypes[].severityFilters.filters[]") + if _elements is not None: + _elements.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("severity", AAZStrType, ".severity", typ_kwargs={"flags": {"required": True}}) + + disc_ml_behavior_analytics = _builder.get("{kind:MLBehaviorAnalytics}") + if disc_ml_behavior_analytics is not None: + disc_ml_behavior_analytics.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MLBehaviorAnalytics}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".ml_behavior_analytics.alert_rule_template_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".ml_behavior_analytics.enabled", typ_kwargs={"flags": {"required": True}}) + + disc_microsoft_security_incident_creation = _builder.get("{kind:MicrosoftSecurityIncidentCreation}") + if disc_microsoft_security_incident_creation is not None: + disc_microsoft_security_incident_creation.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".ms_security_incident.alert_rule_template_name") + properties.set_prop("description", AAZStrType, ".ms_security_incident.description") + properties.set_prop("displayName", AAZStrType, ".ms_security_incident.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("displayNamesExcludeFilter", AAZListType, ".ms_security_incident.display_names_exclude_filter") + properties.set_prop("displayNamesFilter", AAZListType, ".ms_security_incident.display_names_filter") + properties.set_prop("enabled", AAZBoolType, ".ms_security_incident.enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("productFilter", AAZStrType, ".ms_security_incident.product_filter", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("severitiesFilter", AAZListType, ".ms_security_incident.severities_filter") + + display_names_exclude_filter = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties.displayNamesExcludeFilter") + if display_names_exclude_filter is not None: + display_names_exclude_filter.set_elements(AAZStrType, ".") + + display_names_filter = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties.displayNamesFilter") + if display_names_filter is not None: + display_names_filter.set_elements(AAZStrType, ".") + + severities_filter = _builder.get("{kind:MicrosoftSecurityIncidentCreation}.properties.severitiesFilter") + if severities_filter is not None: + severities_filter.set_elements(AAZStrType, ".") + + disc_nrt = _builder.get("{kind:NRT}") + if disc_nrt is not None: + disc_nrt.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:NRT}.properties") + if properties is not None: + _build_schema_alert_details_override_update(properties.set_prop("alertDetailsOverride", AAZObjectType, ".nrt.alert_details_override")) + properties.set_prop("alertRuleTemplateName", AAZStrType, ".nrt.alert_rule_template_name") + properties.set_prop("customDetails", AAZDictType, ".nrt.custom_details") + properties.set_prop("description", AAZStrType, ".nrt.description") + properties.set_prop("displayName", AAZStrType, ".nrt.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".nrt.enabled", typ_kwargs={"flags": {"required": True}}) + _build_schema_entity_mappings_update(properties.set_prop("entityMappings", AAZListType, ".nrt.entity_mappings")) + _build_schema_incident_configuration_update(properties.set_prop("incidentConfiguration", AAZObjectType, ".nrt.incident_configuration")) + properties.set_prop("query", AAZStrType, ".nrt.query", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("severity", AAZStrType, ".nrt.severity", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionDuration", AAZStrType, ".nrt.suppression_duration", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionEnabled", AAZBoolType, ".nrt.suppression_enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tactics", AAZListType, ".nrt.tactics") + properties.set_prop("techniques", AAZListType, ".nrt.techniques") + properties.set_prop("templateVersion", AAZStrType, ".nrt.template_version") + + custom_details = _builder.get("{kind:NRT}.properties.customDetails") + if custom_details is not None: + custom_details.set_elements(AAZStrType, ".") + + tactics = _builder.get("{kind:NRT}.properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get("{kind:NRT}.properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + disc_scheduled = _builder.get("{kind:Scheduled}") + if disc_scheduled is not None: + disc_scheduled.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Scheduled}.properties") + if properties is not None: + _build_schema_alert_details_override_update(properties.set_prop("alertDetailsOverride", AAZObjectType, ".scheduled.alert_details_override")) + properties.set_prop("alertRuleTemplateName", AAZStrType, ".scheduled.alert_rule_template_name") + properties.set_prop("customDetails", AAZDictType, ".scheduled.custom_details") + properties.set_prop("description", AAZStrType, ".scheduled.description") + properties.set_prop("displayName", AAZStrType, ".scheduled.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".scheduled.enabled", typ_kwargs={"flags": {"required": True}}) + _build_schema_entity_mappings_update(properties.set_prop("entityMappings", AAZListType, ".scheduled.entity_mappings")) + properties.set_prop("eventGroupingSettings", AAZObjectType, ".scheduled.event_grouping_settings") + _build_schema_incident_configuration_update(properties.set_prop("incidentConfiguration", AAZObjectType, ".scheduled.incident_configuration")) + properties.set_prop("query", AAZStrType, ".scheduled.query", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("queryFrequency", AAZStrType, ".scheduled.query_frequency", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("queryPeriod", AAZStrType, ".scheduled.query_period", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("severity", AAZStrType, ".scheduled.severity", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionDuration", AAZStrType, ".scheduled.suppression_duration", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("suppressionEnabled", AAZBoolType, ".scheduled.suppression_enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tactics", AAZListType, ".scheduled.tactics") + properties.set_prop("techniques", AAZListType, ".scheduled.techniques") + properties.set_prop("templateVersion", AAZStrType, ".scheduled.template_version") + properties.set_prop("triggerOperator", AAZStrType, ".scheduled.trigger_operator", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("triggerThreshold", AAZIntType, ".scheduled.trigger_threshold", typ_kwargs={"flags": {"required": True}}) + + custom_details = _builder.get("{kind:Scheduled}.properties.customDetails") + if custom_details is not None: + custom_details.set_elements(AAZStrType, ".") + + event_grouping_settings = _builder.get("{kind:Scheduled}.properties.eventGroupingSettings") + if event_grouping_settings is not None: + event_grouping_settings.set_prop("aggregationKind", AAZStrType, ".aggregation_kind") + + tactics = _builder.get("{kind:Scheduled}.properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get("{kind:Scheduled}.properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + disc_threat_intelligence = _builder.get("{kind:ThreatIntelligence}") + if disc_threat_intelligence is not None: + disc_threat_intelligence.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:ThreatIntelligence}.properties") + if properties is not None: + properties.set_prop("alertRuleTemplateName", AAZStrType, ".threat_intelligence.alert_rule_template_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".threat_intelligence.enabled", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +def _build_schema_alert_details_override_update(_builder): + if _builder is None: + return + _builder.set_prop("alertDescriptionFormat", AAZStrType, ".alert_description_format") + _builder.set_prop("alertDisplayNameFormat", AAZStrType, ".alert_display_name_format") + _builder.set_prop("alertSeverityColumnName", AAZStrType, ".alert_severity_column_name") + _builder.set_prop("alertTacticsColumnName", AAZStrType, ".alert_tactics_column_name") + + +def _build_schema_entity_mappings_update(_builder): + if _builder is None: + return + _builder.set_elements(AAZObjectType) + + _elements = _builder.get("[]") + if _elements is not None: + _elements.set_prop("entityType", AAZStrType, "@EntityMappings_update.[].entity_type") + _elements.set_prop("fieldMappings", AAZListType, "@EntityMappings_update.[].field_mappings") + + field_mappings = _builder.get("[].fieldMappings") + if field_mappings is not None: + field_mappings.set_elements(AAZObjectType) + + _elements = _builder.get("[].fieldMappings[]") + if _elements is not None: + _elements.set_prop("columnName", AAZStrType, "@EntityMappings_update.[].field_mappings.[].column_name") + _elements.set_prop("identifier", AAZStrType, "@EntityMappings_update.[].field_mappings.[].identifier") + + +def _build_schema_incident_configuration_update(_builder): + if _builder is None: + return + _builder.set_prop("createIncident", AAZBoolType, ".create_incident", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("groupingConfiguration", AAZObjectType, ".grouping_configuration") + + grouping_configuration = _builder.get(".groupingConfiguration") + if grouping_configuration is not None: + grouping_configuration.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + grouping_configuration.set_prop("groupByAlertDetails", AAZListType, ".group_by_alert_details") + grouping_configuration.set_prop("groupByCustomDetails", AAZListType, ".group_by_custom_details") + grouping_configuration.set_prop("groupByEntities", AAZListType, ".group_by_entities") + grouping_configuration.set_prop("lookbackDuration", AAZStrType, ".lookback_duration", typ_kwargs={"flags": {"required": True}}) + grouping_configuration.set_prop("matchingMethod", AAZStrType, ".matching_method", typ_kwargs={"flags": {"required": True}}) + grouping_configuration.set_prop("reopenClosedIncident", AAZBoolType, ".reopen_closed_incident", typ_kwargs={"flags": {"required": True}}) + + group_by_alert_details = _builder.get(".groupingConfiguration.groupByAlertDetails") + if group_by_alert_details is not None: + group_by_alert_details.set_elements(AAZStrType, ".") + + group_by_custom_details = _builder.get(".groupingConfiguration.groupByCustomDetails") + if group_by_custom_details is not None: + group_by_custom_details.set_elements(AAZStrType, ".") + + group_by_entities = _builder.get(".groupingConfiguration.groupByEntities") + if group_by_entities is not None: + group_by_entities.set_elements(AAZStrType, ".") + + +_schema_alert_details_override_read = None + + +def _build_schema_alert_details_override_read(_schema): + global _schema_alert_details_override_read + if _schema_alert_details_override_read is not None: + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + return + + _schema_alert_details_override_read = AAZObjectType() + + alert_details_override_read = _schema_alert_details_override_read + alert_details_override_read.alert_description_format = AAZStrType( + serialized_name="alertDescriptionFormat", + ) + alert_details_override_read.alert_display_name_format = AAZStrType( + serialized_name="alertDisplayNameFormat", + ) + alert_details_override_read.alert_severity_column_name = AAZStrType( + serialized_name="alertSeverityColumnName", + ) + alert_details_override_read.alert_tactics_column_name = AAZStrType( + serialized_name="alertTacticsColumnName", + ) + + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + + +_schema_alert_rule_read = None + + +def _build_schema_alert_rule_read(_schema): + global _schema_alert_rule_read + if _schema_alert_rule_read is not None: + _schema.etag = _schema_alert_rule_read.etag + _schema.id = _schema_alert_rule_read.id + _schema.kind = _schema_alert_rule_read.kind + _schema.name = _schema_alert_rule_read.name + _schema.system_data = _schema_alert_rule_read.system_data + _schema.type = _schema_alert_rule_read.type + _schema.discriminate_by( + "kind", + "Fusion", + _schema_alert_rule_read.discriminate_by( + "kind", + "Fusion", + ) + ) + _schema.discriminate_by( + "kind", + "MLBehaviorAnalytics", + _schema_alert_rule_read.discriminate_by( + "kind", + "MLBehaviorAnalytics", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftSecurityIncidentCreation", + _schema_alert_rule_read.discriminate_by( + "kind", + "MicrosoftSecurityIncidentCreation", + ) + ) + _schema.discriminate_by( + "kind", + "NRT", + _schema_alert_rule_read.discriminate_by( + "kind", + "NRT", + ) + ) + _schema.discriminate_by( + "kind", + "Scheduled", + _schema_alert_rule_read.discriminate_by( + "kind", + "Scheduled", + ) + ) + _schema.discriminate_by( + "kind", + "ThreatIntelligence", + _schema_alert_rule_read.discriminate_by( + "kind", + "ThreatIntelligence", + ) + ) + return + + _schema_alert_rule_read = AAZObjectType() + + alert_rule_read = _schema_alert_rule_read + alert_rule_read.etag = AAZStrType() + alert_rule_read.id = AAZStrType( + flags={"read_only": True}, + ) + alert_rule_read.kind = AAZStrType( + flags={"required": True}, + ) + alert_rule_read.name = AAZStrType( + flags={"read_only": True}, + ) + alert_rule_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + alert_rule_read.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = _schema_alert_rule_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_fusion = _schema_alert_rule_read.discriminate_by("kind", "Fusion") + disc_fusion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.scenario_exclusion_patterns = AAZListType( + serialized_name="scenarioExclusionPatterns", + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.source_settings = AAZListType( + serialized_name="sourceSettings", + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + scenario_exclusion_patterns = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns + scenario_exclusion_patterns.Element = AAZObjectType() + + _element = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.scenario_exclusion_patterns.Element + _element.date_added_in_utc = AAZStrType( + serialized_name="dateAddedInUTC", + flags={"required": True}, + ) + _element.exclusion_pattern = AAZStrType( + serialized_name="exclusionPattern", + flags={"required": True}, + ) + + source_settings = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.source_settings + source_settings.Element = AAZObjectType() + + _element = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.source_settings.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.source_name = AAZStrType( + serialized_name="sourceName", + flags={"required": True}, + ) + _element.source_sub_types = AAZListType( + serialized_name="sourceSubTypes", + ) + + source_sub_types = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectType() + + _element = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity_filters = AAZObjectType( + serialized_name="severityFilters", + flags={"required": True}, + ) + _element.source_sub_type_display_name = AAZStrType( + serialized_name="sourceSubTypeDisplayName", + flags={"read_only": True}, + ) + _element.source_sub_type_name = AAZStrType( + serialized_name="sourceSubTypeName", + flags={"required": True}, + ) + + severity_filters = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters + severity_filters.filters = AAZListType() + severity_filters.is_supported = AAZBoolType( + serialized_name="isSupported", + flags={"read_only": True}, + ) + + filters = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters + filters.Element = AAZObjectType() + + _element = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filters.filters.Element + _element.enabled = AAZBoolType( + flags={"required": True}, + ) + _element.severity = AAZStrType( + flags={"required": True}, + ) + + tactics = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = _schema_alert_rule_read.discriminate_by("kind", "Fusion").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_ml_behavior_analytics = _schema_alert_rule_read.discriminate_by("kind", "MLBehaviorAnalytics") + disc_ml_behavior_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_alert_rule_read.discriminate_by("kind", "MLBehaviorAnalytics").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = _schema_alert_rule_read.discriminate_by("kind", "MLBehaviorAnalytics").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = _schema_alert_rule_read.discriminate_by("kind", "MLBehaviorAnalytics").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_microsoft_security_incident_creation = _schema_alert_rule_read.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + disc_microsoft_security_incident_creation.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_alert_rule_read.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.display_names_exclude_filter = AAZListType( + serialized_name="displayNamesExcludeFilter", + ) + properties.display_names_filter = AAZListType( + serialized_name="displayNamesFilter", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.product_filter = AAZStrType( + serialized_name="productFilter", + flags={"required": True}, + ) + properties.severities_filter = AAZListType( + serialized_name="severitiesFilter", + ) + + display_names_exclude_filter = _schema_alert_rule_read.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrType() + + display_names_filter = _schema_alert_rule_read.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_filter + display_names_filter.Element = AAZStrType() + + severities_filter = _schema_alert_rule_read.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.severities_filter + severities_filter.Element = AAZStrType() + + disc_nrt = _schema_alert_rule_read.discriminate_by("kind", "NRT") + disc_nrt.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_alert_rule_read.discriminate_by("kind", "NRT").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + + custom_details = _schema_alert_rule_read.discriminate_by("kind", "NRT").properties.custom_details + custom_details.Element = AAZStrType() + + tactics = _schema_alert_rule_read.discriminate_by("kind", "NRT").properties.tactics + tactics.Element = AAZStrType() + + techniques = _schema_alert_rule_read.discriminate_by("kind", "NRT").properties.techniques + techniques.Element = AAZStrType() + + disc_scheduled = _schema_alert_rule_read.discriminate_by("kind", "Scheduled") + disc_scheduled.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_alert_rule_read.discriminate_by("kind", "Scheduled").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.event_grouping_settings = AAZObjectType( + serialized_name="eventGroupingSettings", + ) + properties.incident_configuration = AAZObjectType( + serialized_name="incidentConfiguration", + ) + _build_schema_incident_configuration_read(properties.incident_configuration) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_frequency = AAZStrType( + serialized_name="queryFrequency", + flags={"required": True}, + ) + properties.query_period = AAZStrType( + serialized_name="queryPeriod", + flags={"required": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.suppression_duration = AAZStrType( + serialized_name="suppressionDuration", + flags={"required": True}, + ) + properties.suppression_enabled = AAZBoolType( + serialized_name="suppressionEnabled", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.template_version = AAZStrType( + serialized_name="templateVersion", + ) + properties.trigger_operator = AAZStrType( + serialized_name="triggerOperator", + flags={"required": True}, + ) + properties.trigger_threshold = AAZIntType( + serialized_name="triggerThreshold", + flags={"required": True}, + ) + + custom_details = _schema_alert_rule_read.discriminate_by("kind", "Scheduled").properties.custom_details + custom_details.Element = AAZStrType() + + event_grouping_settings = _schema_alert_rule_read.discriminate_by("kind", "Scheduled").properties.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrType( + serialized_name="aggregationKind", + ) + + tactics = _schema_alert_rule_read.discriminate_by("kind", "Scheduled").properties.tactics + tactics.Element = AAZStrType() + + techniques = _schema_alert_rule_read.discriminate_by("kind", "Scheduled").properties.techniques + techniques.Element = AAZStrType() + + disc_threat_intelligence = _schema_alert_rule_read.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_alert_rule_read.discriminate_by("kind", "ThreatIntelligence").properties + properties.alert_rule_template_name = AAZStrType( + serialized_name="alertRuleTemplateName", + flags={"required": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.techniques = AAZListType( + flags={"read_only": True}, + ) + + tactics = _schema_alert_rule_read.discriminate_by("kind", "ThreatIntelligence").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = _schema_alert_rule_read.discriminate_by("kind", "ThreatIntelligence").properties.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + _schema.etag = _schema_alert_rule_read.etag + _schema.id = _schema_alert_rule_read.id + _schema.kind = _schema_alert_rule_read.kind + _schema.name = _schema_alert_rule_read.name + _schema.system_data = _schema_alert_rule_read.system_data + _schema.type = _schema_alert_rule_read.type + _schema.discriminate_by( + "kind", + "Fusion", + _schema_alert_rule_read.discriminate_by( + "kind", + "Fusion", + ) + ) + _schema.discriminate_by( + "kind", + "MLBehaviorAnalytics", + _schema_alert_rule_read.discriminate_by( + "kind", + "MLBehaviorAnalytics", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftSecurityIncidentCreation", + _schema_alert_rule_read.discriminate_by( + "kind", + "MicrosoftSecurityIncidentCreation", + ) + ) + _schema.discriminate_by( + "kind", + "NRT", + _schema_alert_rule_read.discriminate_by( + "kind", + "NRT", + ) + ) + _schema.discriminate_by( + "kind", + "Scheduled", + _schema_alert_rule_read.discriminate_by( + "kind", + "Scheduled", + ) + ) + _schema.discriminate_by( + "kind", + "ThreatIntelligence", + _schema_alert_rule_read.discriminate_by( + "kind", + "ThreatIntelligence", + ) + ) + + +_schema_entity_mappings_read = None + + +def _build_schema_entity_mappings_read(_schema): + global _schema_entity_mappings_read + if _schema_entity_mappings_read is not None: + _schema.Element = _schema_entity_mappings_read.Element + return + + _schema_entity_mappings_read = AAZListType() + + entity_mappings_read = _schema_entity_mappings_read + entity_mappings_read.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = _schema_entity_mappings_read.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element.field_mappings.Element + _element.column_name = AAZStrType( + serialized_name="columnName", + ) + _element.identifier = AAZStrType() + + _schema.Element = _schema_entity_mappings_read.Element + + +_schema_incident_configuration_read = None + + +def _build_schema_incident_configuration_read(_schema): + global _schema_incident_configuration_read + if _schema_incident_configuration_read is not None: + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + return + + _schema_incident_configuration_read = AAZObjectType() + + incident_configuration_read = _schema_incident_configuration_read + incident_configuration_read.create_incident = AAZBoolType( + serialized_name="createIncident", + flags={"required": True}, + ) + incident_configuration_read.grouping_configuration = AAZObjectType( + serialized_name="groupingConfiguration", + ) + + grouping_configuration = _schema_incident_configuration_read.grouping_configuration + grouping_configuration.enabled = AAZBoolType( + flags={"required": True}, + ) + grouping_configuration.group_by_alert_details = AAZListType( + serialized_name="groupByAlertDetails", + ) + grouping_configuration.group_by_custom_details = AAZListType( + serialized_name="groupByCustomDetails", + ) + grouping_configuration.group_by_entities = AAZListType( + serialized_name="groupByEntities", + ) + grouping_configuration.lookback_duration = AAZStrType( + serialized_name="lookbackDuration", + flags={"required": True}, + ) + grouping_configuration.matching_method = AAZStrType( + serialized_name="matchingMethod", + flags={"required": True}, + ) + grouping_configuration.reopen_closed_incident = AAZBoolType( + serialized_name="reopenClosedIncident", + flags={"required": True}, + ) + + group_by_alert_details = _schema_incident_configuration_read.grouping_configuration.group_by_alert_details + group_by_alert_details.Element = AAZStrType() + + group_by_custom_details = _schema_incident_configuration_read.grouping_configuration.group_by_custom_details + group_by_custom_details.Element = AAZStrType() + + group_by_entities = _schema_incident_configuration_read.grouping_configuration.group_by_entities + group_by_entities.Element = AAZStrType() + + _schema.create_incident = _schema_incident_configuration_read.create_incident + _schema.grouping_configuration = _schema_incident_configuration_read.grouping_configuration + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/__cmd_group.py new file mode 100644 index 00000000000..227f199b1fe --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel alert-rule action", +) +class __CMDGroup(AAZCommandGroup): + """Manage alert rule action with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_create.py new file mode 100644 index 00000000000..54e6390a858 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_create.py @@ -0,0 +1,266 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule action create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the action of alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}/actions/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.action_name = AAZStrArg( + options=["-n", "--name", "--action-name"], + help="Name of action.", + required=True, + is_experimental=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Action" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Action", + help="Etag of the azure resource", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.logic_app_resource_id = AAZStrArg( + options=["--logic-app-resource-id"], + arg_group="Properties", + help="Logic App Resource Id, /subscriptions/{my-subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my-workflow-id}.", + ) + _args_schema.trigger_uri = AAZStrArg( + options=["--trigger-uri"], + arg_group="Properties", + help="Logic App Callback URL for this specific workflow.", + ) + return cls._args_schema + + def _execute_operations(self): + self.ActionsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ActionsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "actionId", self.ctx.args.action_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("logicAppResourceId", AAZStrType, ".logic_app_resource_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("triggerUri", AAZStrType, ".trigger_uri", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + flags={"required": True}, + ) + properties.workflow_id = AAZStrType( + serialized_name="workflowId", + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_delete.py new file mode 100644 index 00000000000..2141d371cb0 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_delete.py @@ -0,0 +1,146 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule action delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the action of alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}/actions/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.action_name = AAZStrArg( + options=["-n", "--name", "--action-name"], + help="Name of action.", + required=True, + is_experimental=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.ActionsDelete(ctx=self.ctx)() + + class ActionsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "actionId", self.ctx.args.action_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_list.py new file mode 100644 index 00000000000..96e4038dc15 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_list.py @@ -0,0 +1,222 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule action list", + is_experimental=True, +) +class List(AAZCommand): + """Get all actions of alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}/actions", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.ActionsListByAlertRule(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class ActionsListByAlertRule(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + flags={"required": True}, + ) + properties.workflow_id = AAZStrType( + serialized_name="workflowId", + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_show.py new file mode 100644 index 00000000000..32aa7332a80 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_show.py @@ -0,0 +1,223 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule action show", + is_experimental=True, +) +class Show(AAZCommand): + """Get the action of alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}/actions/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.action_name = AAZStrArg( + options=["-n", "--name", "--action-name"], + help="Name of action.", + required=True, + is_experimental=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.ActionsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ActionsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "actionId", self.ctx.args.action_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + flags={"required": True}, + ) + properties.workflow_id = AAZStrType( + serialized_name="workflowId", + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_update.py new file mode 100644 index 00000000000..eb0f83d011f --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/action/_update.py @@ -0,0 +1,409 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule action update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the action of alert rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertrules/{}/actions/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.action_name = AAZStrArg( + options=["-n", "--name", "--action-name"], + help="Name of action.", + required=True, + is_experimental=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rule_name = AAZStrArg( + options=["--rule-name"], + help="Name of alert rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Action" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Action", + help="Etag of the azure resource", + nullable=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.logic_app_resource_id = AAZStrArg( + options=["--logic-app-resource-id"], + arg_group="Properties", + help="Logic App Resource Id, /subscriptions/{my-subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my-workflow-id}.", + ) + _args_schema.trigger_uri = AAZStrArg( + options=["--trigger-uri"], + arg_group="Properties", + help="Logic App Callback URL for this specific workflow.", + ) + return cls._args_schema + + def _execute_operations(self): + self.ActionsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.ActionsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ActionsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "actionId", self.ctx.args.action_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_action_response_read(cls._schema_on_200) + + return cls._schema_on_200 + + class ActionsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "actionId", self.ctx.args.action_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "ruleId", self.ctx.args.rule_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_action_response_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("logicAppResourceId", AAZStrType, ".logic_app_resource_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("triggerUri", AAZStrType, ".trigger_uri", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_action_response_read = None + + +def _build_schema_action_response_read(_schema): + global _schema_action_response_read + if _schema_action_response_read is not None: + _schema.etag = _schema_action_response_read.etag + _schema.id = _schema_action_response_read.id + _schema.name = _schema_action_response_read.name + _schema.properties = _schema_action_response_read.properties + _schema.system_data = _schema_action_response_read.system_data + _schema.type = _schema_action_response_read.type + return + + _schema_action_response_read = AAZObjectType() + + action_response_read = _schema_action_response_read + action_response_read.etag = AAZStrType() + action_response_read.id = AAZStrType( + flags={"read_only": True}, + ) + action_response_read.name = AAZStrType( + flags={"read_only": True}, + ) + action_response_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + action_response_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + action_response_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_action_response_read.properties + properties.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + flags={"required": True}, + ) + properties.workflow_id = AAZStrType( + serialized_name="workflowId", + ) + + system_data = _schema_action_response_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_action_response_read.etag + _schema.id = _schema_action_response_read.id + _schema.name = _schema_action_response_read.name + _schema.properties = _schema_action_response_read.properties + _schema.system_data = _schema_action_response_read.system_data + _schema.type = _schema_action_response_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/__cmd_group.py new file mode 100644 index 00000000000..a9c9a722ef6 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel alert-rule template", +) +class __CMDGroup(AAZCommandGroup): + """Manage alert rule template with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/__init__.py new file mode 100644 index 00000000000..2df85698253 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/__init__.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._list import * +from ._show import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/_list.py new file mode 100644 index 00000000000..1c3dd6118d3 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/_list.py @@ -0,0 +1,698 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule template list", + is_experimental=True, +) +class List(AAZCommand): + """Get all alert rule templates. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertruletemplates", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.AlertRuleTemplatesList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class AlertRuleTemplatesList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRuleTemplates", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_fusion = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion") + disc_fusion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.source_settings = AAZListType( + serialized_name="sourceSettings", + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + source_settings = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings + source_settings.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element + _element.source_name = AAZStrType( + serialized_name="sourceName", + flags={"required": True}, + ) + _element.source_sub_types = AAZListType( + serialized_name="sourceSubTypes", + ) + + source_sub_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element + _element.severity_filter = AAZObjectType( + serialized_name="severityFilter", + flags={"required": True}, + ) + _element.source_sub_type_display_name = AAZStrType( + serialized_name="sourceSubTypeDisplayName", + flags={"read_only": True}, + ) + _element.source_sub_type_name = AAZStrType( + serialized_name="sourceSubTypeName", + flags={"required": True}, + ) + + severity_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filter + severity_filter.is_supported = AAZBoolType( + serialized_name="isSupported", + flags={"required": True}, + ) + severity_filter.severity_filters = AAZListType( + serialized_name="severityFilters", + ) + + severity_filters = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filter.severity_filters + severity_filters.Element = AAZStrType() + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "Fusion").properties.techniques + techniques.Element = AAZStrType() + + disc_ml_behavior_analytics = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics") + disc_ml_behavior_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "MLBehaviorAnalytics").properties.techniques + techniques.Element = AAZStrType() + + disc_microsoft_security_incident_creation = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + disc_microsoft_security_incident_creation.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"required": True, "read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.display_names_exclude_filter = AAZListType( + serialized_name="displayNamesExcludeFilter", + ) + properties.display_names_filter = AAZListType( + serialized_name="displayNamesFilter", + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.product_filter = AAZStrType( + serialized_name="productFilter", + flags={"required": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severities_filter = AAZListType( + serialized_name="severitiesFilter", + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + + display_names_exclude_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrType() + + display_names_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_filter + display_names_filter.Element = AAZStrType() + + required_data_connectors = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + severities_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.severities_filter + severities_filter.Element = AAZStrType() + + disc_nrt = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT") + disc_nrt.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.version = AAZStrType( + flags={"required": True}, + ) + + custom_details = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties.custom_details + custom_details.Element = AAZStrType() + + required_data_connectors = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "NRT").properties.techniques + techniques.Element = AAZStrType() + + disc_scheduled = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled") + disc_scheduled.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.event_grouping_settings = AAZObjectType( + serialized_name="eventGroupingSettings", + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_frequency = AAZStrType( + serialized_name="queryFrequency", + flags={"required": True}, + ) + properties.query_period = AAZStrType( + serialized_name="queryPeriod", + flags={"required": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.trigger_operator = AAZStrType( + serialized_name="triggerOperator", + flags={"required": True}, + ) + properties.trigger_threshold = AAZIntType( + serialized_name="triggerThreshold", + flags={"required": True}, + ) + properties.version = AAZStrType( + flags={"required": True}, + ) + + custom_details = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.custom_details + custom_details.Element = AAZStrType() + + event_grouping_settings = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrType( + serialized_name="aggregationKind", + ) + + required_data_connectors = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "Scheduled").properties.techniques + techniques.Element = AAZStrType() + + disc_threat_intelligence = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties.techniques + techniques.Element = AAZStrType() + + return cls._schema_on_200 + + +_schema_alert_details_override_read = None + + +def _build_schema_alert_details_override_read(_schema): + global _schema_alert_details_override_read + if _schema_alert_details_override_read is not None: + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + return + + _schema_alert_details_override_read = AAZObjectType() + + alert_details_override_read = _schema_alert_details_override_read + alert_details_override_read.alert_description_format = AAZStrType( + serialized_name="alertDescriptionFormat", + ) + alert_details_override_read.alert_display_name_format = AAZStrType( + serialized_name="alertDisplayNameFormat", + ) + alert_details_override_read.alert_severity_column_name = AAZStrType( + serialized_name="alertSeverityColumnName", + ) + alert_details_override_read.alert_tactics_column_name = AAZStrType( + serialized_name="alertTacticsColumnName", + ) + + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + + +_schema_alert_rule_template_data_source_read = None + + +def _build_schema_alert_rule_template_data_source_read(_schema): + global _schema_alert_rule_template_data_source_read + if _schema_alert_rule_template_data_source_read is not None: + _schema.connector_id = _schema_alert_rule_template_data_source_read.connector_id + _schema.data_types = _schema_alert_rule_template_data_source_read.data_types + return + + _schema_alert_rule_template_data_source_read = AAZObjectType() + + alert_rule_template_data_source_read = _schema_alert_rule_template_data_source_read + alert_rule_template_data_source_read.connector_id = AAZStrType( + serialized_name="connectorId", + ) + alert_rule_template_data_source_read.data_types = AAZListType( + serialized_name="dataTypes", + ) + + data_types = _schema_alert_rule_template_data_source_read.data_types + data_types.Element = AAZStrType() + + _schema.connector_id = _schema_alert_rule_template_data_source_read.connector_id + _schema.data_types = _schema_alert_rule_template_data_source_read.data_types + + +_schema_entity_mappings_read = None + + +def _build_schema_entity_mappings_read(_schema): + global _schema_entity_mappings_read + if _schema_entity_mappings_read is not None: + _schema.Element = _schema_entity_mappings_read.Element + return + + _schema_entity_mappings_read = AAZListType() + + entity_mappings_read = _schema_entity_mappings_read + entity_mappings_read.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = _schema_entity_mappings_read.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element.field_mappings.Element + _element.column_name = AAZStrType( + serialized_name="columnName", + ) + _element.identifier = AAZStrType() + + _schema.Element = _schema_entity_mappings_read.Element + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/_show.py new file mode 100644 index 00000000000..c7747d9e06e --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/alert_rule/template/_show.py @@ -0,0 +1,697 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel alert-rule template show", + is_experimental=True, +) +class Show(AAZCommand): + """Get the alert rule template. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/alertruletemplates/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.alert_rule_template_id = AAZStrArg( + options=["-n", "--name", "--alert-rule-template-id"], + help="Alert rule template ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.AlertRuleTemplatesGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class AlertRuleTemplatesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRuleTemplates/{alertRuleTemplateId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "alertRuleTemplateId", self.ctx.args.alert_rule_template_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_fusion = cls._schema_on_200.discriminate_by("kind", "Fusion") + disc_fusion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Fusion").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.source_settings = AAZListType( + serialized_name="sourceSettings", + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + source_settings = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings + source_settings.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element + _element.source_name = AAZStrType( + serialized_name="sourceName", + flags={"required": True}, + ) + _element.source_sub_types = AAZListType( + serialized_name="sourceSubTypes", + ) + + source_sub_types = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types + source_sub_types.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element + _element.severity_filter = AAZObjectType( + serialized_name="severityFilter", + flags={"required": True}, + ) + _element.source_sub_type_display_name = AAZStrType( + serialized_name="sourceSubTypeDisplayName", + flags={"read_only": True}, + ) + _element.source_sub_type_name = AAZStrType( + serialized_name="sourceSubTypeName", + flags={"required": True}, + ) + + severity_filter = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filter + severity_filter.is_supported = AAZBoolType( + serialized_name="isSupported", + flags={"required": True}, + ) + severity_filter.severity_filters = AAZListType( + serialized_name="severityFilters", + ) + + severity_filters = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.source_settings.Element.source_sub_types.Element.severity_filter.severity_filters + severity_filters.Element = AAZStrType() + + tactics = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "Fusion").properties.techniques + techniques.Element = AAZStrType() + + disc_ml_behavior_analytics = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics") + disc_ml_behavior_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "MLBehaviorAnalytics").properties.techniques + techniques.Element = AAZStrType() + + disc_microsoft_security_incident_creation = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation") + disc_microsoft_security_incident_creation.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"required": True, "read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.display_names_exclude_filter = AAZListType( + serialized_name="displayNamesExcludeFilter", + ) + properties.display_names_filter = AAZListType( + serialized_name="displayNamesFilter", + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.product_filter = AAZStrType( + serialized_name="productFilter", + flags={"required": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severities_filter = AAZListType( + serialized_name="severitiesFilter", + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + + display_names_exclude_filter = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_exclude_filter + display_names_exclude_filter.Element = AAZStrType() + + display_names_filter = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.display_names_filter + display_names_filter.Element = AAZStrType() + + required_data_connectors = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + severities_filter = cls._schema_on_200.discriminate_by("kind", "MicrosoftSecurityIncidentCreation").properties.severities_filter + severities_filter.Element = AAZStrType() + + disc_nrt = cls._schema_on_200.discriminate_by("kind", "NRT") + disc_nrt.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "NRT").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.version = AAZStrType( + flags={"required": True}, + ) + + custom_details = cls._schema_on_200.discriminate_by("kind", "NRT").properties.custom_details + custom_details.Element = AAZStrType() + + required_data_connectors = cls._schema_on_200.discriminate_by("kind", "NRT").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.discriminate_by("kind", "NRT").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "NRT").properties.techniques + techniques.Element = AAZStrType() + + disc_scheduled = cls._schema_on_200.discriminate_by("kind", "Scheduled") + disc_scheduled.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties + properties.alert_details_override = AAZObjectType( + serialized_name="alertDetailsOverride", + ) + _build_schema_alert_details_override_read(properties.alert_details_override) + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.custom_details = AAZDictType( + serialized_name="customDetails", + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + _build_schema_entity_mappings_read(properties.entity_mappings) + properties.event_grouping_settings = AAZObjectType( + serialized_name="eventGroupingSettings", + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_frequency = AAZStrType( + serialized_name="queryFrequency", + flags={"required": True}, + ) + properties.query_period = AAZStrType( + serialized_name="queryPeriod", + flags={"required": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.trigger_operator = AAZStrType( + serialized_name="triggerOperator", + flags={"required": True}, + ) + properties.trigger_threshold = AAZIntType( + serialized_name="triggerThreshold", + flags={"required": True}, + ) + properties.version = AAZStrType( + flags={"required": True}, + ) + + custom_details = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.custom_details + custom_details.Element = AAZStrType() + + event_grouping_settings = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.event_grouping_settings + event_grouping_settings.aggregation_kind = AAZStrType( + serialized_name="aggregationKind", + ) + + required_data_connectors = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "Scheduled").properties.techniques + techniques.Element = AAZStrType() + + disc_threat_intelligence = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties + properties.alert_rules_created_by_template_count = AAZIntType( + serialized_name="alertRulesCreatedByTemplateCount", + flags={"required": True}, + ) + properties.created_date_utc = AAZStrType( + serialized_name="createdDateUTC", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"required": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_updated_date_utc = AAZStrType( + serialized_name="lastUpdatedDateUTC", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + _build_schema_alert_rule_template_data_source_read(required_data_connectors.Element) + + tactics = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties.techniques + techniques.Element = AAZStrType() + + return cls._schema_on_200 + + +_schema_alert_details_override_read = None + + +def _build_schema_alert_details_override_read(_schema): + global _schema_alert_details_override_read + if _schema_alert_details_override_read is not None: + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + return + + _schema_alert_details_override_read = AAZObjectType() + + alert_details_override_read = _schema_alert_details_override_read + alert_details_override_read.alert_description_format = AAZStrType( + serialized_name="alertDescriptionFormat", + ) + alert_details_override_read.alert_display_name_format = AAZStrType( + serialized_name="alertDisplayNameFormat", + ) + alert_details_override_read.alert_severity_column_name = AAZStrType( + serialized_name="alertSeverityColumnName", + ) + alert_details_override_read.alert_tactics_column_name = AAZStrType( + serialized_name="alertTacticsColumnName", + ) + + _schema.alert_description_format = _schema_alert_details_override_read.alert_description_format + _schema.alert_display_name_format = _schema_alert_details_override_read.alert_display_name_format + _schema.alert_severity_column_name = _schema_alert_details_override_read.alert_severity_column_name + _schema.alert_tactics_column_name = _schema_alert_details_override_read.alert_tactics_column_name + + +_schema_alert_rule_template_data_source_read = None + + +def _build_schema_alert_rule_template_data_source_read(_schema): + global _schema_alert_rule_template_data_source_read + if _schema_alert_rule_template_data_source_read is not None: + _schema.connector_id = _schema_alert_rule_template_data_source_read.connector_id + _schema.data_types = _schema_alert_rule_template_data_source_read.data_types + return + + _schema_alert_rule_template_data_source_read = AAZObjectType() + + alert_rule_template_data_source_read = _schema_alert_rule_template_data_source_read + alert_rule_template_data_source_read.connector_id = AAZStrType( + serialized_name="connectorId", + ) + alert_rule_template_data_source_read.data_types = AAZListType( + serialized_name="dataTypes", + ) + + data_types = _schema_alert_rule_template_data_source_read.data_types + data_types.Element = AAZStrType() + + _schema.connector_id = _schema_alert_rule_template_data_source_read.connector_id + _schema.data_types = _schema_alert_rule_template_data_source_read.data_types + + +_schema_entity_mappings_read = None + + +def _build_schema_entity_mappings_read(_schema): + global _schema_entity_mappings_read + if _schema_entity_mappings_read is not None: + _schema.Element = _schema_entity_mappings_read.Element + return + + _schema_entity_mappings_read = AAZListType() + + entity_mappings_read = _schema_entity_mappings_read + entity_mappings_read.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = _schema_entity_mappings_read.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = _schema_entity_mappings_read.Element.field_mappings.Element + _element.column_name = AAZStrType( + serialized_name="columnName", + ) + _element.identifier = AAZStrType() + + _schema.Element = _schema_entity_mappings_read.Element + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/__cmd_group.py new file mode 100644 index 00000000000..dc27c23fbcc --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel analytics-setting", +) +class __CMDGroup(AAZCommandGroup): + """Manage security ml analytics setting with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_create.py new file mode 100644 index 00000000000..f55ced3e592 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_create.py @@ -0,0 +1,411 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel analytics-setting create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the Security ML Analytics Settings. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/securitymlanalyticssettings/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_resource_name = AAZStrArg( + options=["-n", "--name", "--settings-resource-name"], + help="Security ML Analytics Settings resource name", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "SecurityMLAnalyticsSetting" + + _args_schema = cls._args_schema + _args_schema.anomaly = AAZObjectArg( + options=["--anomaly"], + arg_group="SecurityMLAnalyticsSetting", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="SecurityMLAnalyticsSetting", + help="Etag of the azure resource", + ) + + anomaly = cls._args_schema.anomaly + anomaly.anomaly_settings_version = AAZIntArg( + options=["anomaly-settings-version"], + help="The anomaly settings version of the Anomaly security ml analytics settings that dictates whether job version gets updated or not.", + ) + anomaly.anomaly_version = AAZStrArg( + options=["anomaly-version"], + help="The anomaly version of the AnomalySecurityMLAnalyticsSettings.", + ) + anomaly.description = AAZStrArg( + options=["description"], + help="The description of the SecurityMLAnalyticsSettings.", + ) + anomaly.display_name = AAZStrArg( + options=["display-name"], + help="The display name for settings created by this SecurityMLAnalyticsSettings.", + ) + anomaly.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this settings is enabled or disabled.", + ) + anomaly.frequency = AAZStrArg( + options=["frequency"], + help="The frequency that this SecurityMLAnalyticsSettings will be run.", + ) + anomaly.is_default_settings = AAZBoolArg( + options=["is-default-settings"], + help="Determines whether this anomaly security ml analytics settings is a default settings", + ) + anomaly.required_data_connectors = AAZListArg( + options=["required-data-connectors"], + help="The required data sources for this SecurityMLAnalyticsSettings", + ) + anomaly.settings_definition_id = AAZStrArg( + options=["settings-definition-id"], + help="The anomaly settings definition Id", + ) + anomaly.settings_status = AAZStrArg( + options=["settings-status"], + help="The anomaly SecurityMLAnalyticsSettings status", + enum={"Flighting": "Flighting", "Production": "Production"}, + ) + anomaly.tactics = AAZListArg( + options=["tactics"], + help="The tactics of the SecurityMLAnalyticsSettings", + ) + anomaly.techniques = AAZListArg( + options=["techniques"], + help="The techniques of the SecurityMLAnalyticsSettings", + ) + + required_data_connectors = cls._args_schema.anomaly.required_data_connectors + required_data_connectors.Element = AAZObjectArg() + + _element = cls._args_schema.anomaly.required_data_connectors.Element + _element.connector_id = AAZStrArg( + options=["connector-id"], + help="The connector id that provides the following data types", + ) + _element.data_types = AAZListArg( + options=["data-types"], + help="The data types used by the security ml analytics settings", + ) + + data_types = cls._args_schema.anomaly.required_data_connectors.Element.data_types + data_types.Element = AAZStrArg() + + tactics = cls._args_schema.anomaly.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.anomaly.techniques + techniques.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.SecurityMLAnalyticsSettingsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SecurityMLAnalyticsSettingsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/securityMLAnalyticsSettings/{settingsResourceName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsResourceName", self.ctx.args.settings_resource_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "Anomaly", AAZStrType, ".anomaly", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "Anomaly") + + disc_anomaly = _builder.get("{kind:Anomaly}") + if disc_anomaly is not None: + disc_anomaly.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Anomaly}.properties") + if properties is not None: + properties.set_prop("anomalySettingsVersion", AAZIntType, ".anomaly.anomaly_settings_version") + properties.set_prop("anomalyVersion", AAZStrType, ".anomaly.anomaly_version", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("description", AAZStrType, ".anomaly.description") + properties.set_prop("displayName", AAZStrType, ".anomaly.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".anomaly.enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("frequency", AAZStrType, ".anomaly.frequency", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("isDefaultSettings", AAZBoolType, ".anomaly.is_default_settings", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("requiredDataConnectors", AAZListType, ".anomaly.required_data_connectors") + properties.set_prop("settingsDefinitionId", AAZStrType, ".anomaly.settings_definition_id") + properties.set_prop("settingsStatus", AAZStrType, ".anomaly.settings_status", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tactics", AAZListType, ".anomaly.tactics") + properties.set_prop("techniques", AAZListType, ".anomaly.techniques") + + required_data_connectors = _builder.get("{kind:Anomaly}.properties.requiredDataConnectors") + if required_data_connectors is not None: + required_data_connectors.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Anomaly}.properties.requiredDataConnectors[]") + if _elements is not None: + _elements.set_prop("connectorId", AAZStrType, ".connector_id") + _elements.set_prop("dataTypes", AAZListType, ".data_types") + + data_types = _builder.get("{kind:Anomaly}.properties.requiredDataConnectors[].dataTypes") + if data_types is not None: + data_types.set_elements(AAZStrType, ".") + + tactics = _builder.get("{kind:Anomaly}.properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get("{kind:Anomaly}.properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomaly = cls._schema_on_200_201.discriminate_by("kind", "Anomaly") + disc_anomaly.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Anomaly").properties + properties.anomaly_settings_version = AAZIntType( + serialized_name="anomalySettingsVersion", + ) + properties.anomaly_version = AAZStrType( + serialized_name="anomalyVersion", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.frequency = AAZStrType( + flags={"required": True}, + ) + properties.is_default_settings = AAZBoolType( + serialized_name="isDefaultSettings", + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.settings_definition_id = AAZStrType( + serialized_name="settingsDefinitionId", + ) + properties.settings_status = AAZStrType( + serialized_name="settingsStatus", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200_201.discriminate_by("kind", "Anomaly").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element + _element.connector_id = AAZStrType( + serialized_name="connectorId", + ) + _element.data_types = AAZListType( + serialized_name="dataTypes", + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element.data_types + data_types.Element = AAZStrType() + + tactics = cls._schema_on_200_201.discriminate_by("kind", "Anomaly").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200_201.discriminate_by("kind", "Anomaly").properties.techniques + techniques.Element = AAZStrType() + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_delete.py new file mode 100644 index 00000000000..4731dcbc9fa --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel analytics-setting delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the Security ML Analytics Settings. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/securitymlanalyticssettings/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_resource_name = AAZStrArg( + options=["-n", "--name", "--settings-resource-name"], + help="Security ML Analytics Settings resource name", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.SecurityMLAnalyticsSettingsDelete(ctx=self.ctx)() + + class SecurityMLAnalyticsSettingsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/securityMLAnalyticsSettings/{settingsResourceName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsResourceName", self.ctx.args.settings_resource_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_list.py new file mode 100644 index 00000000000..b8954e1b923 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_list.py @@ -0,0 +1,268 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel analytics-setting list", + is_experimental=True, +) +class List(AAZCommand): + """Get all Security ML Analytics Settings. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/securitymlanalyticssettings", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.SecurityMLAnalyticsSettingsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class SecurityMLAnalyticsSettingsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/securityMLAnalyticsSettings", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomaly = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomaly") + disc_anomaly.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomaly").properties + properties.anomaly_settings_version = AAZIntType( + serialized_name="anomalySettingsVersion", + ) + properties.anomaly_version = AAZStrType( + serialized_name="anomalyVersion", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.frequency = AAZStrType( + flags={"required": True}, + ) + properties.is_default_settings = AAZBoolType( + serialized_name="isDefaultSettings", + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.settings_definition_id = AAZStrType( + serialized_name="settingsDefinitionId", + ) + properties.settings_status = AAZStrType( + serialized_name="settingsStatus", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomaly").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element + _element.connector_id = AAZStrType( + serialized_name="connectorId", + ) + _element.data_types = AAZListType( + serialized_name="dataTypes", + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element.data_types + data_types.Element = AAZStrType() + + tactics = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomaly").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomaly").properties.techniques + techniques.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_show.py new file mode 100644 index 00000000000..a198633f14c --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_show.py @@ -0,0 +1,267 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel analytics-setting show", + is_experimental=True, +) +class Show(AAZCommand): + """Get the Security ML Analytics Settings. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/securitymlanalyticssettings/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_resource_name = AAZStrArg( + options=["-n", "--name", "--settings-resource-name"], + help="Security ML Analytics Settings resource name", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.SecurityMLAnalyticsSettingsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SecurityMLAnalyticsSettingsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/securityMLAnalyticsSettings/{settingsResourceName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsResourceName", self.ctx.args.settings_resource_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomaly = cls._schema_on_200.discriminate_by("kind", "Anomaly") + disc_anomaly.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Anomaly").properties + properties.anomaly_settings_version = AAZIntType( + serialized_name="anomalySettingsVersion", + ) + properties.anomaly_version = AAZStrType( + serialized_name="anomalyVersion", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.frequency = AAZStrType( + flags={"required": True}, + ) + properties.is_default_settings = AAZBoolType( + serialized_name="isDefaultSettings", + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.settings_definition_id = AAZStrType( + serialized_name="settingsDefinitionId", + ) + properties.settings_status = AAZStrType( + serialized_name="settingsStatus", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = cls._schema_on_200.discriminate_by("kind", "Anomaly").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element + _element.connector_id = AAZStrType( + serialized_name="connectorId", + ) + _element.data_types = AAZListType( + serialized_name="dataTypes", + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element.data_types + data_types.Element = AAZStrType() + + tactics = cls._schema_on_200.discriminate_by("kind", "Anomaly").properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.discriminate_by("kind", "Anomaly").properties.techniques + techniques.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_update.py new file mode 100644 index 00000000000..06724e23643 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/analytics_setting/_update.py @@ -0,0 +1,574 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel analytics-setting update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the Security ML Analytics Settings. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/securitymlanalyticssettings/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_resource_name = AAZStrArg( + options=["-n", "--name", "--settings-resource-name"], + help="Security ML Analytics Settings resource name", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "SecurityMLAnalyticsSetting" + + _args_schema = cls._args_schema + _args_schema.anomaly = AAZObjectArg( + options=["--anomaly"], + arg_group="SecurityMLAnalyticsSetting", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="SecurityMLAnalyticsSetting", + help="Etag of the azure resource", + nullable=True, + ) + + anomaly = cls._args_schema.anomaly + anomaly.anomaly_settings_version = AAZIntArg( + options=["anomaly-settings-version"], + help="The anomaly settings version of the Anomaly security ml analytics settings that dictates whether job version gets updated or not.", + nullable=True, + ) + anomaly.anomaly_version = AAZStrArg( + options=["anomaly-version"], + help="The anomaly version of the AnomalySecurityMLAnalyticsSettings.", + ) + anomaly.description = AAZStrArg( + options=["description"], + help="The description of the SecurityMLAnalyticsSettings.", + nullable=True, + ) + anomaly.display_name = AAZStrArg( + options=["display-name"], + help="The display name for settings created by this SecurityMLAnalyticsSettings.", + ) + anomaly.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this settings is enabled or disabled.", + ) + anomaly.frequency = AAZStrArg( + options=["frequency"], + help="The frequency that this SecurityMLAnalyticsSettings will be run.", + ) + anomaly.is_default_settings = AAZBoolArg( + options=["is-default-settings"], + help="Determines whether this anomaly security ml analytics settings is a default settings", + ) + anomaly.required_data_connectors = AAZListArg( + options=["required-data-connectors"], + help="The required data sources for this SecurityMLAnalyticsSettings", + nullable=True, + ) + anomaly.settings_definition_id = AAZStrArg( + options=["settings-definition-id"], + help="The anomaly settings definition Id", + nullable=True, + ) + anomaly.settings_status = AAZStrArg( + options=["settings-status"], + help="The anomaly SecurityMLAnalyticsSettings status", + enum={"Flighting": "Flighting", "Production": "Production"}, + ) + anomaly.tactics = AAZListArg( + options=["tactics"], + help="The tactics of the SecurityMLAnalyticsSettings", + nullable=True, + ) + anomaly.techniques = AAZListArg( + options=["techniques"], + help="The techniques of the SecurityMLAnalyticsSettings", + nullable=True, + ) + + required_data_connectors = cls._args_schema.anomaly.required_data_connectors + required_data_connectors.Element = AAZObjectArg() + + _element = cls._args_schema.anomaly.required_data_connectors.Element + _element.connector_id = AAZStrArg( + options=["connector-id"], + help="The connector id that provides the following data types", + nullable=True, + ) + _element.data_types = AAZListArg( + options=["data-types"], + help="The data types used by the security ml analytics settings", + nullable=True, + ) + + data_types = cls._args_schema.anomaly.required_data_connectors.Element.data_types + data_types.Element = AAZStrArg() + + tactics = cls._args_schema.anomaly.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.anomaly.techniques + techniques.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.SecurityMLAnalyticsSettingsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.SecurityMLAnalyticsSettingsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SecurityMLAnalyticsSettingsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/securityMLAnalyticsSettings/{settingsResourceName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsResourceName", self.ctx.args.settings_resource_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_security_ml_analytics_setting_read(cls._schema_on_200) + + return cls._schema_on_200 + + class SecurityMLAnalyticsSettingsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/securityMLAnalyticsSettings/{settingsResourceName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsResourceName", self.ctx.args.settings_resource_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_security_ml_analytics_setting_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "Anomaly", AAZStrType, ".anomaly", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "Anomaly") + + disc_anomaly = _builder.get("{kind:Anomaly}") + if disc_anomaly is not None: + disc_anomaly.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Anomaly}.properties") + if properties is not None: + properties.set_prop("anomalySettingsVersion", AAZIntType, ".anomaly.anomaly_settings_version") + properties.set_prop("anomalyVersion", AAZStrType, ".anomaly.anomaly_version", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("description", AAZStrType, ".anomaly.description") + properties.set_prop("displayName", AAZStrType, ".anomaly.display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("enabled", AAZBoolType, ".anomaly.enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("frequency", AAZStrType, ".anomaly.frequency", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("isDefaultSettings", AAZBoolType, ".anomaly.is_default_settings", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("requiredDataConnectors", AAZListType, ".anomaly.required_data_connectors") + properties.set_prop("settingsDefinitionId", AAZStrType, ".anomaly.settings_definition_id") + properties.set_prop("settingsStatus", AAZStrType, ".anomaly.settings_status", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tactics", AAZListType, ".anomaly.tactics") + properties.set_prop("techniques", AAZListType, ".anomaly.techniques") + + required_data_connectors = _builder.get("{kind:Anomaly}.properties.requiredDataConnectors") + if required_data_connectors is not None: + required_data_connectors.set_elements(AAZObjectType) + + _elements = _builder.get("{kind:Anomaly}.properties.requiredDataConnectors[]") + if _elements is not None: + _elements.set_prop("connectorId", AAZStrType, ".connector_id") + _elements.set_prop("dataTypes", AAZListType, ".data_types") + + data_types = _builder.get("{kind:Anomaly}.properties.requiredDataConnectors[].dataTypes") + if data_types is not None: + data_types.set_elements(AAZStrType, ".") + + tactics = _builder.get("{kind:Anomaly}.properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get("{kind:Anomaly}.properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_security_ml_analytics_setting_read = None + + +def _build_schema_security_ml_analytics_setting_read(_schema): + global _schema_security_ml_analytics_setting_read + if _schema_security_ml_analytics_setting_read is not None: + _schema.etag = _schema_security_ml_analytics_setting_read.etag + _schema.id = _schema_security_ml_analytics_setting_read.id + _schema.kind = _schema_security_ml_analytics_setting_read.kind + _schema.name = _schema_security_ml_analytics_setting_read.name + _schema.system_data = _schema_security_ml_analytics_setting_read.system_data + _schema.type = _schema_security_ml_analytics_setting_read.type + _schema.discriminate_by( + "kind", + "Anomaly", + _schema_security_ml_analytics_setting_read.discriminate_by( + "kind", + "Anomaly", + ) + ) + return + + _schema_security_ml_analytics_setting_read = AAZObjectType() + + security_ml_analytics_setting_read = _schema_security_ml_analytics_setting_read + security_ml_analytics_setting_read.etag = AAZStrType() + security_ml_analytics_setting_read.id = AAZStrType( + flags={"read_only": True}, + ) + security_ml_analytics_setting_read.kind = AAZStrType( + flags={"required": True}, + ) + security_ml_analytics_setting_read.name = AAZStrType( + flags={"read_only": True}, + ) + security_ml_analytics_setting_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + security_ml_analytics_setting_read.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = _schema_security_ml_analytics_setting_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomaly = _schema_security_ml_analytics_setting_read.discriminate_by("kind", "Anomaly") + disc_anomaly.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_security_ml_analytics_setting_read.discriminate_by("kind", "Anomaly").properties + properties.anomaly_settings_version = AAZIntType( + serialized_name="anomalySettingsVersion", + ) + properties.anomaly_version = AAZStrType( + serialized_name="anomalyVersion", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.frequency = AAZStrType( + flags={"required": True}, + ) + properties.is_default_settings = AAZBoolType( + serialized_name="isDefaultSettings", + flags={"required": True}, + ) + properties.last_modified_utc = AAZStrType( + serialized_name="lastModifiedUtc", + flags={"read_only": True}, + ) + properties.required_data_connectors = AAZListType( + serialized_name="requiredDataConnectors", + ) + properties.settings_definition_id = AAZStrType( + serialized_name="settingsDefinitionId", + ) + properties.settings_status = AAZStrType( + serialized_name="settingsStatus", + flags={"required": True}, + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + + required_data_connectors = _schema_security_ml_analytics_setting_read.discriminate_by("kind", "Anomaly").properties.required_data_connectors + required_data_connectors.Element = AAZObjectType() + + _element = _schema_security_ml_analytics_setting_read.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element + _element.connector_id = AAZStrType( + serialized_name="connectorId", + ) + _element.data_types = AAZListType( + serialized_name="dataTypes", + ) + + data_types = _schema_security_ml_analytics_setting_read.discriminate_by("kind", "Anomaly").properties.required_data_connectors.Element.data_types + data_types.Element = AAZStrType() + + tactics = _schema_security_ml_analytics_setting_read.discriminate_by("kind", "Anomaly").properties.tactics + tactics.Element = AAZStrType() + + techniques = _schema_security_ml_analytics_setting_read.discriminate_by("kind", "Anomaly").properties.techniques + techniques.Element = AAZStrType() + + _schema.etag = _schema_security_ml_analytics_setting_read.etag + _schema.id = _schema_security_ml_analytics_setting_read.id + _schema.kind = _schema_security_ml_analytics_setting_read.kind + _schema.name = _schema_security_ml_analytics_setting_read.name + _schema.system_data = _schema_security_ml_analytics_setting_read.system_data + _schema.type = _schema_security_ml_analytics_setting_read.type + _schema.discriminate_by( + "kind", + "Anomaly", + _schema_security_ml_analytics_setting_read.discriminate_by( + "kind", + "Anomaly", + ) + ) + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/__cmd_group.py new file mode 100644 index 00000000000..6eedd4328ed --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel automation-rule", +) +class __CMDGroup(AAZCommandGroup): + """Manage automation rule with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_create.py new file mode 100644 index 00000000000..80ca9c80446 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_create.py @@ -0,0 +1,791 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel automation-rule create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the automation rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/automationrules/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.automation_rule_name = AAZStrArg( + options=["-n", "--name", "--automation-rule-name"], + help="Name of automation rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "AutomationRuleToUpsert" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="AutomationRuleToUpsert", + help="Etag of the azure resource", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.actions = AAZListArg( + options=["--actions"], + arg_group="Properties", + help="The actions to execute when the automation rule is triggered.", + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the automation rule.", + ) + _args_schema.order = AAZIntArg( + options=["--order"], + arg_group="Properties", + help="The order of execution of the automation rule.", + ) + _args_schema.triggering_logic = AAZObjectArg( + options=["--triggering-logic"], + arg_group="Properties", + help="Describes automation rule triggering logic.", + ) + + actions = cls._args_schema.actions + actions.Element = AAZObjectArg() + + _element = cls._args_schema.actions.Element + _element.modify_properties = AAZObjectArg( + options=["modify-properties"], + ) + _element.run_playbook = AAZObjectArg( + options=["run-playbook"], + ) + _element.order = AAZIntArg( + options=["order"], + required=True, + ) + + modify_properties = cls._args_schema.actions.Element.modify_properties + modify_properties.action_configuration = AAZObjectArg( + options=["action-configuration"], + ) + + action_configuration = cls._args_schema.actions.Element.modify_properties.action_configuration + action_configuration.classification = AAZStrArg( + options=["classification"], + help="The reason the incident was closed", + enum={"BenignPositive": "BenignPositive", "FalsePositive": "FalsePositive", "TruePositive": "TruePositive", "Undetermined": "Undetermined"}, + ) + action_configuration.classification_comment = AAZStrArg( + options=["classification-comment"], + help="Describes the reason the incident was closed.", + ) + action_configuration.classification_reason = AAZStrArg( + options=["classification-reason"], + help="The classification reason the incident was closed with", + enum={"InaccurateData": "InaccurateData", "IncorrectAlertLogic": "IncorrectAlertLogic", "SuspiciousActivity": "SuspiciousActivity", "SuspiciousButExpected": "SuspiciousButExpected"}, + ) + action_configuration.labels = AAZListArg( + options=["labels"], + help="List of labels to add to the incident.", + ) + action_configuration.owner = AAZObjectArg( + options=["owner"], + help="Information on the user an incident is assigned to", + ) + action_configuration.severity = AAZStrArg( + options=["severity"], + help="The severity of the incident", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + action_configuration.status = AAZStrArg( + options=["status"], + help="The status of the incident", + enum={"Active": "Active", "Closed": "Closed", "New": "New"}, + ) + + labels = cls._args_schema.actions.Element.modify_properties.action_configuration.labels + labels.Element = AAZObjectArg() + + _element = cls._args_schema.actions.Element.modify_properties.action_configuration.labels.Element + _element.label_name = AAZStrArg( + options=["label-name"], + help="The name of the label", + required=True, + ) + + owner = cls._args_schema.actions.Element.modify_properties.action_configuration.owner + owner.assigned_to = AAZStrArg( + options=["assigned-to"], + help="The name of the user the incident is assigned to.", + ) + owner.email = AAZStrArg( + options=["email"], + help="The email of the user the incident is assigned to.", + ) + owner.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user the incident is assigned to.", + ) + owner.owner_type = AAZStrArg( + options=["owner-type"], + help="The type of the owner the incident is assigned to.", + enum={"Group": "Group", "Unknown": "Unknown", "User": "User"}, + ) + owner.user_principal_name = AAZStrArg( + options=["user-principal-name"], + help="The user principal name of the user the incident is assigned to.", + ) + + run_playbook = cls._args_schema.actions.Element.run_playbook + run_playbook.action_configuration = AAZObjectArg( + options=["action-configuration"], + ) + + action_configuration = cls._args_schema.actions.Element.run_playbook.action_configuration + action_configuration.logic_app_resource_id = AAZStrArg( + options=["logic-app-resource-id"], + help="The resource id of the playbook resource.", + ) + action_configuration.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id of the playbook resource.", + ) + + triggering_logic = cls._args_schema.triggering_logic + triggering_logic.conditions = AAZListArg( + options=["conditions"], + help="The conditions to evaluate to determine if the automation rule should be triggered on a given object.", + ) + triggering_logic.expiration_time_utc = AAZStrArg( + options=["expiration-time-utc"], + help="Determines when the automation rule should automatically expire and be disabled.", + ) + triggering_logic.is_enabled = AAZBoolArg( + options=["is-enabled"], + help="Determines whether the automation rule is enabled or disabled.", + required=True, + ) + triggering_logic.triggers_on = AAZStrArg( + options=["triggers-on"], + required=True, + enum={"Incidents": "Incidents"}, + ) + triggering_logic.triggers_when = AAZStrArg( + options=["triggers-when"], + required=True, + enum={"Created": "Created", "Updated": "Updated"}, + ) + + conditions = cls._args_schema.triggering_logic.conditions + conditions.Element = AAZObjectArg() + + _element = cls._args_schema.triggering_logic.conditions.Element + _element.property = AAZObjectArg( + options=["property"], + ) + _element.property_array_changed = AAZObjectArg( + options=["property-array-changed"], + ) + _element.property_changed = AAZObjectArg( + options=["property-changed"], + ) + + property = cls._args_schema.triggering_logic.conditions.Element.property + property.condition_properties = AAZObjectArg( + options=["condition-properties"], + ) + + condition_properties = cls._args_schema.triggering_logic.conditions.Element.property.condition_properties + condition_properties.operator = AAZStrArg( + options=["operator"], + enum={"Contains": "Contains", "EndsWith": "EndsWith", "Equals": "Equals", "NotContains": "NotContains", "NotEndsWith": "NotEndsWith", "NotEquals": "NotEquals", "NotStartsWith": "NotStartsWith", "StartsWith": "StartsWith"}, + ) + condition_properties.property_name = AAZStrArg( + options=["property-name"], + help="The property to evaluate in an automation rule property condition.", + enum={"AccountAadTenantId": "AccountAadTenantId", "AccountAadUserId": "AccountAadUserId", "AccountNTDomain": "AccountNTDomain", "AccountName": "AccountName", "AccountObjectGuid": "AccountObjectGuid", "AccountPUID": "AccountPUID", "AccountSid": "AccountSid", "AccountUPNSuffix": "AccountUPNSuffix", "AlertProductNames": "AlertProductNames", "AzureResourceResourceId": "AzureResourceResourceId", "AzureResourceSubscriptionId": "AzureResourceSubscriptionId", "CloudApplicationAppId": "CloudApplicationAppId", "CloudApplicationAppName": "CloudApplicationAppName", "DNSDomainName": "DNSDomainName", "FileDirectory": "FileDirectory", "FileHashValue": "FileHashValue", "FileName": "FileName", "HostAzureID": "HostAzureID", "HostNTDomain": "HostNTDomain", "HostName": "HostName", "HostNetBiosName": "HostNetBiosName", "HostOSVersion": "HostOSVersion", "IPAddress": "IPAddress", "IncidentDescription": "IncidentDescription", "IncidentLabel": "IncidentLabel", "IncidentProviderName": "IncidentProviderName", "IncidentRelatedAnalyticRuleIds": "IncidentRelatedAnalyticRuleIds", "IncidentSeverity": "IncidentSeverity", "IncidentStatus": "IncidentStatus", "IncidentTactics": "IncidentTactics", "IncidentTitle": "IncidentTitle", "IoTDeviceId": "IoTDeviceId", "IoTDeviceModel": "IoTDeviceModel", "IoTDeviceName": "IoTDeviceName", "IoTDeviceOperatingSystem": "IoTDeviceOperatingSystem", "IoTDeviceType": "IoTDeviceType", "IoTDeviceVendor": "IoTDeviceVendor", "MailMessageDeliveryAction": "MailMessageDeliveryAction", "MailMessageDeliveryLocation": "MailMessageDeliveryLocation", "MailMessageP1Sender": "MailMessageP1Sender", "MailMessageP2Sender": "MailMessageP2Sender", "MailMessageRecipient": "MailMessageRecipient", "MailMessageSenderIP": "MailMessageSenderIP", "MailMessageSubject": "MailMessageSubject", "MailboxDisplayName": "MailboxDisplayName", "MailboxPrimaryAddress": "MailboxPrimaryAddress", "MailboxUPN": "MailboxUPN", "MalwareCategory": "MalwareCategory", "MalwareName": "MalwareName", "ProcessCommandLine": "ProcessCommandLine", "ProcessId": "ProcessId", "RegistryKey": "RegistryKey", "RegistryValueData": "RegistryValueData", "Url": "Url"}, + ) + condition_properties.property_values = AAZListArg( + options=["property-values"], + ) + + property_values = cls._args_schema.triggering_logic.conditions.Element.property.condition_properties.property_values + property_values.Element = AAZStrArg() + + property_array_changed = cls._args_schema.triggering_logic.conditions.Element.property_array_changed + property_array_changed.condition_properties = AAZObjectArg( + options=["condition-properties"], + ) + + condition_properties = cls._args_schema.triggering_logic.conditions.Element.property_array_changed.condition_properties + condition_properties.array_type = AAZStrArg( + options=["array-type"], + enum={"Alerts": "Alerts", "Comments": "Comments", "Labels": "Labels", "Tactics": "Tactics"}, + ) + condition_properties.change_type = AAZStrArg( + options=["change-type"], + enum={"Added": "Added"}, + ) + + property_changed = cls._args_schema.triggering_logic.conditions.Element.property_changed + property_changed.condition_properties = AAZObjectArg( + options=["condition-properties"], + ) + + condition_properties = cls._args_schema.triggering_logic.conditions.Element.property_changed.condition_properties + condition_properties.change_type = AAZStrArg( + options=["change-type"], + enum={"ChangedFrom": "ChangedFrom", "ChangedTo": "ChangedTo"}, + ) + condition_properties.operator = AAZStrArg( + options=["operator"], + enum={"Contains": "Contains", "EndsWith": "EndsWith", "Equals": "Equals", "NotContains": "NotContains", "NotEndsWith": "NotEndsWith", "NotEquals": "NotEquals", "NotStartsWith": "NotStartsWith", "StartsWith": "StartsWith"}, + ) + condition_properties.property_name = AAZStrArg( + options=["property-name"], + enum={"IncidentOwner": "IncidentOwner", "IncidentSeverity": "IncidentSeverity", "IncidentStatus": "IncidentStatus"}, + ) + condition_properties.property_values = AAZListArg( + options=["property-values"], + ) + + property_values = cls._args_schema.triggering_logic.conditions.Element.property_changed.condition_properties.property_values + property_values.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.AutomationRulesCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class AutomationRulesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/automationRules/{automationRuleId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "automationRuleId", self.ctx.args.automation_rule_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, ".", typ_kwargs={"flags": {"required": True, "client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("actions", AAZListType, ".actions", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("order", AAZIntType, ".order", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("triggeringLogic", AAZObjectType, ".triggering_logic", typ_kwargs={"flags": {"required": True}}) + + actions = _builder.get(".properties.actions") + if actions is not None: + actions.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.actions[]") + if _elements is not None: + _elements.set_const("actionType", "ModifyProperties", AAZStrType, ".modify_properties", typ_kwargs={"flags": {"required": True}}) + _elements.set_const("actionType", "RunPlaybook", AAZStrType, ".run_playbook", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("order", AAZIntType, ".order", typ_kwargs={"flags": {"required": True}}) + _elements.discriminate_by("actionType", "ModifyProperties") + _elements.discriminate_by("actionType", "RunPlaybook") + + disc_modify_properties = _builder.get(".properties.actions[]{actionType:ModifyProperties}") + if disc_modify_properties is not None: + disc_modify_properties.set_prop("actionConfiguration", AAZObjectType, ".modify_properties.action_configuration") + + action_configuration = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration") + if action_configuration is not None: + action_configuration.set_prop("classification", AAZStrType, ".classification") + action_configuration.set_prop("classificationComment", AAZStrType, ".classification_comment") + action_configuration.set_prop("classificationReason", AAZStrType, ".classification_reason") + action_configuration.set_prop("labels", AAZListType, ".labels") + action_configuration.set_prop("owner", AAZObjectType, ".owner") + action_configuration.set_prop("severity", AAZStrType, ".severity") + action_configuration.set_prop("status", AAZStrType, ".status") + + labels = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration.labels") + if labels is not None: + labels.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration.labels[]") + if _elements is not None: + _elements.set_prop("labelName", AAZStrType, ".label_name", typ_kwargs={"flags": {"required": True}}) + + owner = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration.owner") + if owner is not None: + owner.set_prop("assignedTo", AAZStrType, ".assigned_to") + owner.set_prop("email", AAZStrType, ".email") + owner.set_prop("objectId", AAZStrType, ".object_id") + owner.set_prop("ownerType", AAZStrType, ".owner_type") + owner.set_prop("userPrincipalName", AAZStrType, ".user_principal_name") + + disc_run_playbook = _builder.get(".properties.actions[]{actionType:RunPlaybook}") + if disc_run_playbook is not None: + disc_run_playbook.set_prop("actionConfiguration", AAZObjectType, ".run_playbook.action_configuration") + + action_configuration = _builder.get(".properties.actions[]{actionType:RunPlaybook}.actionConfiguration") + if action_configuration is not None: + action_configuration.set_prop("logicAppResourceId", AAZStrType, ".logic_app_resource_id") + action_configuration.set_prop("tenantId", AAZStrType, ".tenant_id") + + triggering_logic = _builder.get(".properties.triggeringLogic") + if triggering_logic is not None: + triggering_logic.set_prop("conditions", AAZListType, ".conditions") + triggering_logic.set_prop("expirationTimeUtc", AAZStrType, ".expiration_time_utc") + triggering_logic.set_prop("isEnabled", AAZBoolType, ".is_enabled", typ_kwargs={"flags": {"required": True}}) + triggering_logic.set_prop("triggersOn", AAZStrType, ".triggers_on", typ_kwargs={"flags": {"required": True}}) + triggering_logic.set_prop("triggersWhen", AAZStrType, ".triggers_when", typ_kwargs={"flags": {"required": True}}) + + conditions = _builder.get(".properties.triggeringLogic.conditions") + if conditions is not None: + conditions.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.triggeringLogic.conditions[]") + if _elements is not None: + _elements.set_const("conditionType", "Property", AAZStrType, ".property", typ_kwargs={"flags": {"required": True}}) + _elements.set_const("conditionType", "PropertyArrayChanged", AAZStrType, ".property_array_changed", typ_kwargs={"flags": {"required": True}}) + _elements.set_const("conditionType", "PropertyChanged", AAZStrType, ".property_changed", typ_kwargs={"flags": {"required": True}}) + _elements.discriminate_by("conditionType", "Property") + _elements.discriminate_by("conditionType", "PropertyArrayChanged") + _elements.discriminate_by("conditionType", "PropertyChanged") + + disc_property = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:Property}") + if disc_property is not None: + disc_property.set_prop("conditionProperties", AAZObjectType, ".property.condition_properties") + + condition_properties = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:Property}.conditionProperties") + if condition_properties is not None: + condition_properties.set_prop("operator", AAZStrType, ".operator") + condition_properties.set_prop("propertyName", AAZStrType, ".property_name") + condition_properties.set_prop("propertyValues", AAZListType, ".property_values") + + property_values = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:Property}.conditionProperties.propertyValues") + if property_values is not None: + property_values.set_elements(AAZStrType, ".") + + disc_property_array_changed = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyArrayChanged}") + if disc_property_array_changed is not None: + disc_property_array_changed.set_prop("conditionProperties", AAZObjectType, ".property_array_changed.condition_properties") + + condition_properties = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyArrayChanged}.conditionProperties") + if condition_properties is not None: + condition_properties.set_prop("arrayType", AAZStrType, ".array_type") + condition_properties.set_prop("changeType", AAZStrType, ".change_type") + + disc_property_changed = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyChanged}") + if disc_property_changed is not None: + disc_property_changed.set_prop("conditionProperties", AAZObjectType, ".property_changed.condition_properties") + + condition_properties = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyChanged}.conditionProperties") + if condition_properties is not None: + condition_properties.set_prop("changeType", AAZStrType, ".change_type") + condition_properties.set_prop("operator", AAZStrType, ".operator") + condition_properties.set_prop("propertyName", AAZStrType, ".property_name") + condition_properties.set_prop("propertyValues", AAZListType, ".property_values") + + property_values = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyChanged}.conditionProperties.propertyValues") + if property_values is not None: + property_values.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"required": True, "client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.actions = AAZListType( + flags={"required": True}, + ) + properties.created_by = AAZObjectType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.created_by) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_modified_by = AAZObjectType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.last_modified_by) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.order = AAZIntType( + flags={"required": True}, + ) + properties.triggering_logic = AAZObjectType( + serialized_name="triggeringLogic", + flags={"required": True}, + ) + + actions = cls._schema_on_200_201.properties.actions + actions.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.actions.Element + _element.action_type = AAZStrType( + serialized_name="actionType", + flags={"required": True}, + ) + _element.order = AAZIntType( + flags={"required": True}, + ) + + disc_modify_properties = cls._schema_on_200_201.properties.actions.Element.discriminate_by("action_type", "ModifyProperties") + disc_modify_properties.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = cls._schema_on_200_201.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration + action_configuration.classification = AAZStrType() + action_configuration.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + action_configuration.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + action_configuration.labels = AAZListType() + action_configuration.owner = AAZObjectType() + action_configuration.severity = AAZStrType() + action_configuration.status = AAZStrType() + + labels = cls._schema_on_200_201.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels + labels.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = cls._schema_on_200_201.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + disc_run_playbook = cls._schema_on_200_201.properties.actions.Element.discriminate_by("action_type", "RunPlaybook") + disc_run_playbook.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = cls._schema_on_200_201.properties.actions.Element.discriminate_by("action_type", "RunPlaybook").action_configuration + action_configuration.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + ) + action_configuration.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + + triggering_logic = cls._schema_on_200_201.properties.triggering_logic + triggering_logic.conditions = AAZListType() + triggering_logic.expiration_time_utc = AAZStrType( + serialized_name="expirationTimeUtc", + ) + triggering_logic.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"required": True}, + ) + triggering_logic.triggers_on = AAZStrType( + serialized_name="triggersOn", + flags={"required": True}, + ) + triggering_logic.triggers_when = AAZStrType( + serialized_name="triggersWhen", + flags={"required": True}, + ) + + conditions = cls._schema_on_200_201.properties.triggering_logic.conditions + conditions.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.triggering_logic.conditions.Element + _element.condition_type = AAZStrType( + serialized_name="conditionType", + flags={"required": True}, + ) + + disc_property = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property") + disc_property.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties.property_values + property_values.Element = AAZStrType() + + disc_property_array_changed = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged") + disc_property_array_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged").condition_properties + condition_properties.array_type = AAZStrType( + serialized_name="arrayType", + ) + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + + disc_property_changed = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged") + disc_property_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = cls._schema_on_200_201.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties.property_values + property_values.Element = AAZStrType() + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +_schema_client_info_read = None + + +def _build_schema_client_info_read(_schema): + global _schema_client_info_read + if _schema_client_info_read is not None: + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + return + + _schema_client_info_read = AAZObjectType( + flags={"read_only": True} + ) + + client_info_read = _schema_client_info_read + client_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + client_info_read.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_delete.py new file mode 100644 index 00000000000..828cffd08af --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_delete.py @@ -0,0 +1,135 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel automation-rule delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the automation rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/automationrules/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.automation_rule_name = AAZStrArg( + options=["-n", "--name", "--automation-rule-name"], + help="Name of automation rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.AutomationRulesDelete(ctx=self.ctx)() + + class AutomationRulesDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/automationRules/{automationRuleId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "automationRuleId", self.ctx.args.automation_rule_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_list.py new file mode 100644 index 00000000000..0a7b634b650 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_list.py @@ -0,0 +1,420 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel automation-rule list", + is_experimental=True, +) +class List(AAZCommand): + """Get all automation rules. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/automationrules", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.AutomationRulesList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class AutomationRulesList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/automationRules", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType() + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"required": True, "client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.actions = AAZListType( + flags={"required": True}, + ) + properties.created_by = AAZObjectType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.created_by) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_modified_by = AAZObjectType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.last_modified_by) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.order = AAZIntType( + flags={"required": True}, + ) + properties.triggering_logic = AAZObjectType( + serialized_name="triggeringLogic", + flags={"required": True}, + ) + + actions = cls._schema_on_200.value.Element.properties.actions + actions.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.actions.Element + _element.action_type = AAZStrType( + serialized_name="actionType", + flags={"required": True}, + ) + _element.order = AAZIntType( + flags={"required": True}, + ) + + disc_modify_properties = cls._schema_on_200.value.Element.properties.actions.Element.discriminate_by("action_type", "ModifyProperties") + disc_modify_properties.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = cls._schema_on_200.value.Element.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration + action_configuration.classification = AAZStrType() + action_configuration.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + action_configuration.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + action_configuration.labels = AAZListType() + action_configuration.owner = AAZObjectType() + action_configuration.severity = AAZStrType() + action_configuration.status = AAZStrType() + + labels = cls._schema_on_200.value.Element.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels + labels.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = cls._schema_on_200.value.Element.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + disc_run_playbook = cls._schema_on_200.value.Element.properties.actions.Element.discriminate_by("action_type", "RunPlaybook") + disc_run_playbook.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = cls._schema_on_200.value.Element.properties.actions.Element.discriminate_by("action_type", "RunPlaybook").action_configuration + action_configuration.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + ) + action_configuration.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + + triggering_logic = cls._schema_on_200.value.Element.properties.triggering_logic + triggering_logic.conditions = AAZListType() + triggering_logic.expiration_time_utc = AAZStrType( + serialized_name="expirationTimeUtc", + ) + triggering_logic.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"required": True}, + ) + triggering_logic.triggers_on = AAZStrType( + serialized_name="triggersOn", + flags={"required": True}, + ) + triggering_logic.triggers_when = AAZStrType( + serialized_name="triggersWhen", + flags={"required": True}, + ) + + conditions = cls._schema_on_200.value.Element.properties.triggering_logic.conditions + conditions.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element + _element.condition_type = AAZStrType( + serialized_name="conditionType", + flags={"required": True}, + ) + + disc_property = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property") + disc_property.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties.property_values + property_values.Element = AAZStrType() + + disc_property_array_changed = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged") + disc_property_array_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged").condition_properties + condition_properties.array_type = AAZStrType( + serialized_name="arrayType", + ) + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + + disc_property_changed = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged") + disc_property_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = cls._schema_on_200.value.Element.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties.property_values + property_values.Element = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_client_info_read = None + + +def _build_schema_client_info_read(_schema): + global _schema_client_info_read + if _schema_client_info_read is not None: + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + return + + _schema_client_info_read = AAZObjectType( + flags={"read_only": True} + ) + + client_info_read = _schema_client_info_read + client_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + client_info_read.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_show.py new file mode 100644 index 00000000000..90054bbf44b --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_show.py @@ -0,0 +1,423 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel automation-rule show", + is_experimental=True, +) +class Show(AAZCommand): + """Get the automation rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/automationrules/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.automation_rule_name = AAZStrArg( + options=["-n", "--name", "--automation-rule-name"], + help="Name of automation rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.AutomationRulesGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class AutomationRulesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/automationRules/{automationRuleId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "automationRuleId", self.ctx.args.automation_rule_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"required": True, "client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.actions = AAZListType( + flags={"required": True}, + ) + properties.created_by = AAZObjectType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.created_by) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_modified_by = AAZObjectType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.last_modified_by) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.order = AAZIntType( + flags={"required": True}, + ) + properties.triggering_logic = AAZObjectType( + serialized_name="triggeringLogic", + flags={"required": True}, + ) + + actions = cls._schema_on_200.properties.actions + actions.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.actions.Element + _element.action_type = AAZStrType( + serialized_name="actionType", + flags={"required": True}, + ) + _element.order = AAZIntType( + flags={"required": True}, + ) + + disc_modify_properties = cls._schema_on_200.properties.actions.Element.discriminate_by("action_type", "ModifyProperties") + disc_modify_properties.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = cls._schema_on_200.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration + action_configuration.classification = AAZStrType() + action_configuration.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + action_configuration.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + action_configuration.labels = AAZListType() + action_configuration.owner = AAZObjectType() + action_configuration.severity = AAZStrType() + action_configuration.status = AAZStrType() + + labels = cls._schema_on_200.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels + labels.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = cls._schema_on_200.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + disc_run_playbook = cls._schema_on_200.properties.actions.Element.discriminate_by("action_type", "RunPlaybook") + disc_run_playbook.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = cls._schema_on_200.properties.actions.Element.discriminate_by("action_type", "RunPlaybook").action_configuration + action_configuration.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + ) + action_configuration.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + + triggering_logic = cls._schema_on_200.properties.triggering_logic + triggering_logic.conditions = AAZListType() + triggering_logic.expiration_time_utc = AAZStrType( + serialized_name="expirationTimeUtc", + ) + triggering_logic.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"required": True}, + ) + triggering_logic.triggers_on = AAZStrType( + serialized_name="triggersOn", + flags={"required": True}, + ) + triggering_logic.triggers_when = AAZStrType( + serialized_name="triggersWhen", + flags={"required": True}, + ) + + conditions = cls._schema_on_200.properties.triggering_logic.conditions + conditions.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.triggering_logic.conditions.Element + _element.condition_type = AAZStrType( + serialized_name="conditionType", + flags={"required": True}, + ) + + disc_property = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property") + disc_property.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties.property_values + property_values.Element = AAZStrType() + + disc_property_array_changed = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged") + disc_property_array_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged").condition_properties + condition_properties.array_type = AAZStrType( + serialized_name="arrayType", + ) + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + + disc_property_changed = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged") + disc_property_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = cls._schema_on_200.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties.property_values + property_values.Element = AAZStrType() + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_client_info_read = None + + +def _build_schema_client_info_read(_schema): + global _schema_client_info_read + if _schema_client_info_read is not None: + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + return + + _schema_client_info_read = AAZObjectType( + flags={"read_only": True} + ) + + client_info_read = _schema_client_info_read + client_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + client_info_read.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_update.py new file mode 100644 index 00000000000..14b70bd29b2 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/automation_rule/_update.py @@ -0,0 +1,955 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel automation-rule update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the automation rule. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/automationrules/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.automation_rule_name = AAZStrArg( + options=["-n", "--name", "--automation-rule-name"], + help="Name of automation rule.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "AutomationRuleToUpsert" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="AutomationRuleToUpsert", + help="Etag of the azure resource", + nullable=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.actions = AAZListArg( + options=["--actions"], + arg_group="Properties", + help="The actions to execute when the automation rule is triggered.", + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the automation rule.", + ) + _args_schema.order = AAZIntArg( + options=["--order"], + arg_group="Properties", + help="The order of execution of the automation rule.", + ) + _args_schema.triggering_logic = AAZObjectArg( + options=["--triggering-logic"], + arg_group="Properties", + help="Describes automation rule triggering logic.", + ) + + actions = cls._args_schema.actions + actions.Element = AAZObjectArg() + + _element = cls._args_schema.actions.Element + _element.modify_properties = AAZObjectArg( + options=["modify-properties"], + ) + _element.run_playbook = AAZObjectArg( + options=["run-playbook"], + ) + _element.order = AAZIntArg( + options=["order"], + ) + + modify_properties = cls._args_schema.actions.Element.modify_properties + modify_properties.action_configuration = AAZObjectArg( + options=["action-configuration"], + nullable=True, + ) + + action_configuration = cls._args_schema.actions.Element.modify_properties.action_configuration + action_configuration.classification = AAZStrArg( + options=["classification"], + help="The reason the incident was closed", + nullable=True, + enum={"BenignPositive": "BenignPositive", "FalsePositive": "FalsePositive", "TruePositive": "TruePositive", "Undetermined": "Undetermined"}, + ) + action_configuration.classification_comment = AAZStrArg( + options=["classification-comment"], + help="Describes the reason the incident was closed.", + nullable=True, + ) + action_configuration.classification_reason = AAZStrArg( + options=["classification-reason"], + help="The classification reason the incident was closed with", + nullable=True, + enum={"InaccurateData": "InaccurateData", "IncorrectAlertLogic": "IncorrectAlertLogic", "SuspiciousActivity": "SuspiciousActivity", "SuspiciousButExpected": "SuspiciousButExpected"}, + ) + action_configuration.labels = AAZListArg( + options=["labels"], + help="List of labels to add to the incident.", + nullable=True, + ) + action_configuration.owner = AAZObjectArg( + options=["owner"], + help="Information on the user an incident is assigned to", + nullable=True, + ) + action_configuration.severity = AAZStrArg( + options=["severity"], + help="The severity of the incident", + nullable=True, + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + action_configuration.status = AAZStrArg( + options=["status"], + help="The status of the incident", + nullable=True, + enum={"Active": "Active", "Closed": "Closed", "New": "New"}, + ) + + labels = cls._args_schema.actions.Element.modify_properties.action_configuration.labels + labels.Element = AAZObjectArg() + + _element = cls._args_schema.actions.Element.modify_properties.action_configuration.labels.Element + _element.label_name = AAZStrArg( + options=["label-name"], + help="The name of the label", + ) + + owner = cls._args_schema.actions.Element.modify_properties.action_configuration.owner + owner.assigned_to = AAZStrArg( + options=["assigned-to"], + help="The name of the user the incident is assigned to.", + nullable=True, + ) + owner.email = AAZStrArg( + options=["email"], + help="The email of the user the incident is assigned to.", + nullable=True, + ) + owner.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user the incident is assigned to.", + nullable=True, + ) + owner.owner_type = AAZStrArg( + options=["owner-type"], + help="The type of the owner the incident is assigned to.", + nullable=True, + enum={"Group": "Group", "Unknown": "Unknown", "User": "User"}, + ) + owner.user_principal_name = AAZStrArg( + options=["user-principal-name"], + help="The user principal name of the user the incident is assigned to.", + nullable=True, + ) + + run_playbook = cls._args_schema.actions.Element.run_playbook + run_playbook.action_configuration = AAZObjectArg( + options=["action-configuration"], + nullable=True, + ) + + action_configuration = cls._args_schema.actions.Element.run_playbook.action_configuration + action_configuration.logic_app_resource_id = AAZStrArg( + options=["logic-app-resource-id"], + help="The resource id of the playbook resource.", + nullable=True, + ) + action_configuration.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id of the playbook resource.", + nullable=True, + ) + + triggering_logic = cls._args_schema.triggering_logic + triggering_logic.conditions = AAZListArg( + options=["conditions"], + help="The conditions to evaluate to determine if the automation rule should be triggered on a given object.", + nullable=True, + ) + triggering_logic.expiration_time_utc = AAZStrArg( + options=["expiration-time-utc"], + help="Determines when the automation rule should automatically expire and be disabled.", + nullable=True, + ) + triggering_logic.is_enabled = AAZBoolArg( + options=["is-enabled"], + help="Determines whether the automation rule is enabled or disabled.", + ) + triggering_logic.triggers_on = AAZStrArg( + options=["triggers-on"], + enum={"Incidents": "Incidents"}, + ) + triggering_logic.triggers_when = AAZStrArg( + options=["triggers-when"], + enum={"Created": "Created", "Updated": "Updated"}, + ) + + conditions = cls._args_schema.triggering_logic.conditions + conditions.Element = AAZObjectArg() + + _element = cls._args_schema.triggering_logic.conditions.Element + _element.property = AAZObjectArg( + options=["property"], + ) + _element.property_array_changed = AAZObjectArg( + options=["property-array-changed"], + ) + _element.property_changed = AAZObjectArg( + options=["property-changed"], + ) + + property = cls._args_schema.triggering_logic.conditions.Element.property + property.condition_properties = AAZObjectArg( + options=["condition-properties"], + nullable=True, + ) + + condition_properties = cls._args_schema.triggering_logic.conditions.Element.property.condition_properties + condition_properties.operator = AAZStrArg( + options=["operator"], + nullable=True, + enum={"Contains": "Contains", "EndsWith": "EndsWith", "Equals": "Equals", "NotContains": "NotContains", "NotEndsWith": "NotEndsWith", "NotEquals": "NotEquals", "NotStartsWith": "NotStartsWith", "StartsWith": "StartsWith"}, + ) + condition_properties.property_name = AAZStrArg( + options=["property-name"], + help="The property to evaluate in an automation rule property condition.", + nullable=True, + enum={"AccountAadTenantId": "AccountAadTenantId", "AccountAadUserId": "AccountAadUserId", "AccountNTDomain": "AccountNTDomain", "AccountName": "AccountName", "AccountObjectGuid": "AccountObjectGuid", "AccountPUID": "AccountPUID", "AccountSid": "AccountSid", "AccountUPNSuffix": "AccountUPNSuffix", "AlertProductNames": "AlertProductNames", "AzureResourceResourceId": "AzureResourceResourceId", "AzureResourceSubscriptionId": "AzureResourceSubscriptionId", "CloudApplicationAppId": "CloudApplicationAppId", "CloudApplicationAppName": "CloudApplicationAppName", "DNSDomainName": "DNSDomainName", "FileDirectory": "FileDirectory", "FileHashValue": "FileHashValue", "FileName": "FileName", "HostAzureID": "HostAzureID", "HostNTDomain": "HostNTDomain", "HostName": "HostName", "HostNetBiosName": "HostNetBiosName", "HostOSVersion": "HostOSVersion", "IPAddress": "IPAddress", "IncidentDescription": "IncidentDescription", "IncidentLabel": "IncidentLabel", "IncidentProviderName": "IncidentProviderName", "IncidentRelatedAnalyticRuleIds": "IncidentRelatedAnalyticRuleIds", "IncidentSeverity": "IncidentSeverity", "IncidentStatus": "IncidentStatus", "IncidentTactics": "IncidentTactics", "IncidentTitle": "IncidentTitle", "IoTDeviceId": "IoTDeviceId", "IoTDeviceModel": "IoTDeviceModel", "IoTDeviceName": "IoTDeviceName", "IoTDeviceOperatingSystem": "IoTDeviceOperatingSystem", "IoTDeviceType": "IoTDeviceType", "IoTDeviceVendor": "IoTDeviceVendor", "MailMessageDeliveryAction": "MailMessageDeliveryAction", "MailMessageDeliveryLocation": "MailMessageDeliveryLocation", "MailMessageP1Sender": "MailMessageP1Sender", "MailMessageP2Sender": "MailMessageP2Sender", "MailMessageRecipient": "MailMessageRecipient", "MailMessageSenderIP": "MailMessageSenderIP", "MailMessageSubject": "MailMessageSubject", "MailboxDisplayName": "MailboxDisplayName", "MailboxPrimaryAddress": "MailboxPrimaryAddress", "MailboxUPN": "MailboxUPN", "MalwareCategory": "MalwareCategory", "MalwareName": "MalwareName", "ProcessCommandLine": "ProcessCommandLine", "ProcessId": "ProcessId", "RegistryKey": "RegistryKey", "RegistryValueData": "RegistryValueData", "Url": "Url"}, + ) + condition_properties.property_values = AAZListArg( + options=["property-values"], + nullable=True, + ) + + property_values = cls._args_schema.triggering_logic.conditions.Element.property.condition_properties.property_values + property_values.Element = AAZStrArg() + + property_array_changed = cls._args_schema.triggering_logic.conditions.Element.property_array_changed + property_array_changed.condition_properties = AAZObjectArg( + options=["condition-properties"], + nullable=True, + ) + + condition_properties = cls._args_schema.triggering_logic.conditions.Element.property_array_changed.condition_properties + condition_properties.array_type = AAZStrArg( + options=["array-type"], + nullable=True, + enum={"Alerts": "Alerts", "Comments": "Comments", "Labels": "Labels", "Tactics": "Tactics"}, + ) + condition_properties.change_type = AAZStrArg( + options=["change-type"], + nullable=True, + enum={"Added": "Added"}, + ) + + property_changed = cls._args_schema.triggering_logic.conditions.Element.property_changed + property_changed.condition_properties = AAZObjectArg( + options=["condition-properties"], + nullable=True, + ) + + condition_properties = cls._args_schema.triggering_logic.conditions.Element.property_changed.condition_properties + condition_properties.change_type = AAZStrArg( + options=["change-type"], + nullable=True, + enum={"ChangedFrom": "ChangedFrom", "ChangedTo": "ChangedTo"}, + ) + condition_properties.operator = AAZStrArg( + options=["operator"], + nullable=True, + enum={"Contains": "Contains", "EndsWith": "EndsWith", "Equals": "Equals", "NotContains": "NotContains", "NotEndsWith": "NotEndsWith", "NotEquals": "NotEquals", "NotStartsWith": "NotStartsWith", "StartsWith": "StartsWith"}, + ) + condition_properties.property_name = AAZStrArg( + options=["property-name"], + nullable=True, + enum={"IncidentOwner": "IncidentOwner", "IncidentSeverity": "IncidentSeverity", "IncidentStatus": "IncidentStatus"}, + ) + condition_properties.property_values = AAZListArg( + options=["property-values"], + nullable=True, + ) + + property_values = cls._args_schema.triggering_logic.conditions.Element.property_changed.condition_properties.property_values + property_values.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.AutomationRulesGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.AutomationRulesCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class AutomationRulesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/automationRules/{automationRuleId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "automationRuleId", self.ctx.args.automation_rule_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_automation_rule_read(cls._schema_on_200) + + return cls._schema_on_200 + + class AutomationRulesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/automationRules/{automationRuleId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "automationRuleId", self.ctx.args.automation_rule_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_automation_rule_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, ".", typ_kwargs={"flags": {"required": True, "client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("actions", AAZListType, ".actions", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("order", AAZIntType, ".order", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("triggeringLogic", AAZObjectType, ".triggering_logic", typ_kwargs={"flags": {"required": True}}) + + actions = _builder.get(".properties.actions") + if actions is not None: + actions.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.actions[]") + if _elements is not None: + _elements.set_const("actionType", "ModifyProperties", AAZStrType, ".modify_properties", typ_kwargs={"flags": {"required": True}}) + _elements.set_const("actionType", "RunPlaybook", AAZStrType, ".run_playbook", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("order", AAZIntType, ".order", typ_kwargs={"flags": {"required": True}}) + _elements.discriminate_by("actionType", "ModifyProperties") + _elements.discriminate_by("actionType", "RunPlaybook") + + disc_modify_properties = _builder.get(".properties.actions[]{actionType:ModifyProperties}") + if disc_modify_properties is not None: + disc_modify_properties.set_prop("actionConfiguration", AAZObjectType, ".modify_properties.action_configuration") + + action_configuration = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration") + if action_configuration is not None: + action_configuration.set_prop("classification", AAZStrType, ".classification") + action_configuration.set_prop("classificationComment", AAZStrType, ".classification_comment") + action_configuration.set_prop("classificationReason", AAZStrType, ".classification_reason") + action_configuration.set_prop("labels", AAZListType, ".labels") + action_configuration.set_prop("owner", AAZObjectType, ".owner") + action_configuration.set_prop("severity", AAZStrType, ".severity") + action_configuration.set_prop("status", AAZStrType, ".status") + + labels = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration.labels") + if labels is not None: + labels.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration.labels[]") + if _elements is not None: + _elements.set_prop("labelName", AAZStrType, ".label_name", typ_kwargs={"flags": {"required": True}}) + + owner = _builder.get(".properties.actions[]{actionType:ModifyProperties}.actionConfiguration.owner") + if owner is not None: + owner.set_prop("assignedTo", AAZStrType, ".assigned_to") + owner.set_prop("email", AAZStrType, ".email") + owner.set_prop("objectId", AAZStrType, ".object_id") + owner.set_prop("ownerType", AAZStrType, ".owner_type") + owner.set_prop("userPrincipalName", AAZStrType, ".user_principal_name") + + disc_run_playbook = _builder.get(".properties.actions[]{actionType:RunPlaybook}") + if disc_run_playbook is not None: + disc_run_playbook.set_prop("actionConfiguration", AAZObjectType, ".run_playbook.action_configuration") + + action_configuration = _builder.get(".properties.actions[]{actionType:RunPlaybook}.actionConfiguration") + if action_configuration is not None: + action_configuration.set_prop("logicAppResourceId", AAZStrType, ".logic_app_resource_id") + action_configuration.set_prop("tenantId", AAZStrType, ".tenant_id") + + triggering_logic = _builder.get(".properties.triggeringLogic") + if triggering_logic is not None: + triggering_logic.set_prop("conditions", AAZListType, ".conditions") + triggering_logic.set_prop("expirationTimeUtc", AAZStrType, ".expiration_time_utc") + triggering_logic.set_prop("isEnabled", AAZBoolType, ".is_enabled", typ_kwargs={"flags": {"required": True}}) + triggering_logic.set_prop("triggersOn", AAZStrType, ".triggers_on", typ_kwargs={"flags": {"required": True}}) + triggering_logic.set_prop("triggersWhen", AAZStrType, ".triggers_when", typ_kwargs={"flags": {"required": True}}) + + conditions = _builder.get(".properties.triggeringLogic.conditions") + if conditions is not None: + conditions.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.triggeringLogic.conditions[]") + if _elements is not None: + _elements.set_const("conditionType", "Property", AAZStrType, ".property", typ_kwargs={"flags": {"required": True}}) + _elements.set_const("conditionType", "PropertyArrayChanged", AAZStrType, ".property_array_changed", typ_kwargs={"flags": {"required": True}}) + _elements.set_const("conditionType", "PropertyChanged", AAZStrType, ".property_changed", typ_kwargs={"flags": {"required": True}}) + _elements.discriminate_by("conditionType", "Property") + _elements.discriminate_by("conditionType", "PropertyArrayChanged") + _elements.discriminate_by("conditionType", "PropertyChanged") + + disc_property = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:Property}") + if disc_property is not None: + disc_property.set_prop("conditionProperties", AAZObjectType, ".property.condition_properties") + + condition_properties = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:Property}.conditionProperties") + if condition_properties is not None: + condition_properties.set_prop("operator", AAZStrType, ".operator") + condition_properties.set_prop("propertyName", AAZStrType, ".property_name") + condition_properties.set_prop("propertyValues", AAZListType, ".property_values") + + property_values = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:Property}.conditionProperties.propertyValues") + if property_values is not None: + property_values.set_elements(AAZStrType, ".") + + disc_property_array_changed = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyArrayChanged}") + if disc_property_array_changed is not None: + disc_property_array_changed.set_prop("conditionProperties", AAZObjectType, ".property_array_changed.condition_properties") + + condition_properties = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyArrayChanged}.conditionProperties") + if condition_properties is not None: + condition_properties.set_prop("arrayType", AAZStrType, ".array_type") + condition_properties.set_prop("changeType", AAZStrType, ".change_type") + + disc_property_changed = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyChanged}") + if disc_property_changed is not None: + disc_property_changed.set_prop("conditionProperties", AAZObjectType, ".property_changed.condition_properties") + + condition_properties = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyChanged}.conditionProperties") + if condition_properties is not None: + condition_properties.set_prop("changeType", AAZStrType, ".change_type") + condition_properties.set_prop("operator", AAZStrType, ".operator") + condition_properties.set_prop("propertyName", AAZStrType, ".property_name") + condition_properties.set_prop("propertyValues", AAZListType, ".property_values") + + property_values = _builder.get(".properties.triggeringLogic.conditions[]{conditionType:PropertyChanged}.conditionProperties.propertyValues") + if property_values is not None: + property_values.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_automation_rule_read = None + + +def _build_schema_automation_rule_read(_schema): + global _schema_automation_rule_read + if _schema_automation_rule_read is not None: + _schema.etag = _schema_automation_rule_read.etag + _schema.id = _schema_automation_rule_read.id + _schema.name = _schema_automation_rule_read.name + _schema.properties = _schema_automation_rule_read.properties + _schema.system_data = _schema_automation_rule_read.system_data + _schema.type = _schema_automation_rule_read.type + return + + _schema_automation_rule_read = AAZObjectType() + + automation_rule_read = _schema_automation_rule_read + automation_rule_read.etag = AAZStrType() + automation_rule_read.id = AAZStrType( + flags={"read_only": True}, + ) + automation_rule_read.name = AAZStrType( + flags={"read_only": True}, + ) + automation_rule_read.properties = AAZObjectType( + flags={"required": True, "client_flatten": True}, + ) + automation_rule_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + automation_rule_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_automation_rule_read.properties + properties.actions = AAZListType( + flags={"required": True}, + ) + properties.created_by = AAZObjectType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.created_by) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.last_modified_by = AAZObjectType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + _build_schema_client_info_read(properties.last_modified_by) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.order = AAZIntType( + flags={"required": True}, + ) + properties.triggering_logic = AAZObjectType( + serialized_name="triggeringLogic", + flags={"required": True}, + ) + + actions = _schema_automation_rule_read.properties.actions + actions.Element = AAZObjectType() + + _element = _schema_automation_rule_read.properties.actions.Element + _element.action_type = AAZStrType( + serialized_name="actionType", + flags={"required": True}, + ) + _element.order = AAZIntType( + flags={"required": True}, + ) + + disc_modify_properties = _schema_automation_rule_read.properties.actions.Element.discriminate_by("action_type", "ModifyProperties") + disc_modify_properties.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = _schema_automation_rule_read.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration + action_configuration.classification = AAZStrType() + action_configuration.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + action_configuration.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + action_configuration.labels = AAZListType() + action_configuration.owner = AAZObjectType() + action_configuration.severity = AAZStrType() + action_configuration.status = AAZStrType() + + labels = _schema_automation_rule_read.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels + labels.Element = AAZObjectType() + + _element = _schema_automation_rule_read.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = _schema_automation_rule_read.properties.actions.Element.discriminate_by("action_type", "ModifyProperties").action_configuration.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + disc_run_playbook = _schema_automation_rule_read.properties.actions.Element.discriminate_by("action_type", "RunPlaybook") + disc_run_playbook.action_configuration = AAZObjectType( + serialized_name="actionConfiguration", + ) + + action_configuration = _schema_automation_rule_read.properties.actions.Element.discriminate_by("action_type", "RunPlaybook").action_configuration + action_configuration.logic_app_resource_id = AAZStrType( + serialized_name="logicAppResourceId", + ) + action_configuration.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + + triggering_logic = _schema_automation_rule_read.properties.triggering_logic + triggering_logic.conditions = AAZListType() + triggering_logic.expiration_time_utc = AAZStrType( + serialized_name="expirationTimeUtc", + ) + triggering_logic.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"required": True}, + ) + triggering_logic.triggers_on = AAZStrType( + serialized_name="triggersOn", + flags={"required": True}, + ) + triggering_logic.triggers_when = AAZStrType( + serialized_name="triggersWhen", + flags={"required": True}, + ) + + conditions = _schema_automation_rule_read.properties.triggering_logic.conditions + conditions.Element = AAZObjectType() + + _element = _schema_automation_rule_read.properties.triggering_logic.conditions.Element + _element.condition_type = AAZStrType( + serialized_name="conditionType", + flags={"required": True}, + ) + + disc_property = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property") + disc_property.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "Property").condition_properties.property_values + property_values.Element = AAZStrType() + + disc_property_array_changed = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged") + disc_property_array_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyArrayChanged").condition_properties + condition_properties.array_type = AAZStrType( + serialized_name="arrayType", + ) + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + + disc_property_changed = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged") + disc_property_changed.condition_properties = AAZObjectType( + serialized_name="conditionProperties", + ) + + condition_properties = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties + condition_properties.change_type = AAZStrType( + serialized_name="changeType", + ) + condition_properties.operator = AAZStrType() + condition_properties.property_name = AAZStrType( + serialized_name="propertyName", + ) + condition_properties.property_values = AAZListType( + serialized_name="propertyValues", + ) + + property_values = _schema_automation_rule_read.properties.triggering_logic.conditions.Element.discriminate_by("condition_type", "PropertyChanged").condition_properties.property_values + property_values.Element = AAZStrType() + + system_data = _schema_automation_rule_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_automation_rule_read.etag + _schema.id = _schema_automation_rule_read.id + _schema.name = _schema_automation_rule_read.name + _schema.properties = _schema_automation_rule_read.properties + _schema.system_data = _schema_automation_rule_read.system_data + _schema.type = _schema_automation_rule_read.type + + +_schema_client_info_read = None + + +def _build_schema_client_info_read(_schema): + global _schema_client_info_read + if _schema_client_info_read is not None: + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + return + + _schema_client_info_read = AAZObjectType( + flags={"read_only": True} + ) + + client_info_read = _schema_client_info_read + client_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + client_info_read.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + client_info_read.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + _schema.email = _schema_client_info_read.email + _schema.name = _schema_client_info_read.name + _schema.object_id = _schema_client_info_read.object_id + _schema.user_principal_name = _schema_client_info_read.user_principal_name + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/__cmd_group.py new file mode 100644 index 00000000000..d5bfeee1719 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel bookmark", +) +class __CMDGroup(AAZCommandGroup): + """Manage bookmark with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/__init__.py new file mode 100644 index 00000000000..9d2c5bb51f0 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/__init__.py @@ -0,0 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._expand import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_create.py new file mode 100644 index 00000000000..6ba25eaa059 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_create.py @@ -0,0 +1,559 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the bookmark. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["-n", "--name", "--bookmark-id"], + help="ID of bookmark.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Bookmark" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Bookmark", + help="Etag of the azure resource", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.created = AAZStrArg( + options=["--created"], + arg_group="Properties", + help="The time the bookmark was created", + ) + _args_schema.created_by = AAZObjectArg( + options=["--created-by"], + arg_group="Properties", + help="Describes a user that created the bookmark", + ) + cls._build_args_user_info_create(_args_schema.created_by) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the bookmark", + ) + _args_schema.entity_mappings = AAZListArg( + options=["--entity-mappings"], + arg_group="Properties", + help="Describes the entity mappings of the bookmark", + ) + _args_schema.event_time = AAZStrArg( + options=["--event-time"], + arg_group="Properties", + help="The bookmark event time", + ) + _args_schema.incident_info = AAZObjectArg( + options=["--incident-info"], + arg_group="Properties", + help="Describes an incident that relates to bookmark", + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="List of labels relevant to this bookmark", + ) + _args_schema.notes = AAZStrArg( + options=["--notes"], + arg_group="Properties", + help="The notes of the bookmark", + ) + _args_schema.query_content = AAZStrArg( + options=["--query-content"], + arg_group="Properties", + help="The query of the bookmark.", + is_experimental=True, + ) + _args_schema.query_end_time = AAZStrArg( + options=["--query-end-time"], + arg_group="Properties", + help="The end time for the query", + ) + _args_schema.query_result = AAZStrArg( + options=["--query-result"], + arg_group="Properties", + help="The query result of the bookmark.", + ) + _args_schema.query_start_time = AAZStrArg( + options=["--query-start-time"], + arg_group="Properties", + help="The start time for the query", + ) + _args_schema.tactics = AAZListArg( + options=["--tactics"], + arg_group="Properties", + help="A list of relevant mitre attacks", + ) + _args_schema.techniques = AAZListArg( + options=["--techniques"], + arg_group="Properties", + help="A list of relevant mitre techniques", + ) + _args_schema.updated = AAZStrArg( + options=["--updated"], + arg_group="Properties", + help="The last time the bookmark was updated", + ) + _args_schema.updated_by = AAZObjectArg( + options=["--updated-by"], + arg_group="Properties", + help="Describes a user that updated the bookmark", + ) + cls._build_args_user_info_create(_args_schema.updated_by) + + entity_mappings = cls._args_schema.entity_mappings + entity_mappings.Element = AAZObjectArg() + + _element = cls._args_schema.entity_mappings.Element + _element.entity_type = AAZStrArg( + options=["entity-type"], + help="The entity type", + ) + _element.field_mappings = AAZListArg( + options=["field-mappings"], + help="Array of fields mapping for that entity type", + ) + + field_mappings = cls._args_schema.entity_mappings.Element.field_mappings + field_mappings.Element = AAZObjectArg() + + _element = cls._args_schema.entity_mappings.Element.field_mappings.Element + _element.identifier = AAZStrArg( + options=["identifier"], + help="Alert V3 identifier", + ) + _element.value = AAZStrArg( + options=["value"], + help="The value of the identifier", + ) + + incident_info = cls._args_schema.incident_info + incident_info.incident_id = AAZStrArg( + options=["incident-id"], + help="Incident Id", + ) + incident_info.relation_name = AAZStrArg( + options=["relation-name"], + help="Relation Name", + ) + incident_info.severity = AAZStrArg( + options=["severity"], + help="The severity of the incident", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + incident_info.title = AAZStrArg( + options=["title"], + help="The title of the incident", + ) + + labels = cls._args_schema.labels + labels.Element = AAZStrArg() + + tactics = cls._args_schema.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.techniques + techniques.Element = AAZStrArg() + return cls._args_schema + + _args_user_info_create = None + + @classmethod + def _build_args_user_info_create(cls, _schema): + if cls._args_user_info_create is not None: + _schema.object_id = cls._args_user_info_create.object_id + return + + cls._args_user_info_create = AAZObjectArg() + + user_info_create = cls._args_user_info_create + user_info_create.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user.", + nullable=True, + ) + + _schema.object_id = cls._args_user_info_create.object_id + + def _execute_operations(self): + self.BookmarksCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class BookmarksCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("created", AAZStrType, ".created") + _build_schema_user_info_create(properties.set_prop("createdBy", AAZObjectType, ".created_by")) + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("entityMappings", AAZListType, ".entity_mappings") + properties.set_prop("eventTime", AAZStrType, ".event_time") + properties.set_prop("incidentInfo", AAZObjectType, ".incident_info") + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("notes", AAZStrType, ".notes") + properties.set_prop("query", AAZStrType, ".query_content", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("queryEndTime", AAZStrType, ".query_end_time") + properties.set_prop("queryResult", AAZStrType, ".query_result") + properties.set_prop("queryStartTime", AAZStrType, ".query_start_time") + properties.set_prop("tactics", AAZListType, ".tactics") + properties.set_prop("techniques", AAZListType, ".techniques") + properties.set_prop("updated", AAZStrType, ".updated") + _build_schema_user_info_create(properties.set_prop("updatedBy", AAZObjectType, ".updated_by")) + + entity_mappings = _builder.get(".properties.entityMappings") + if entity_mappings is not None: + entity_mappings.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.entityMappings[]") + if _elements is not None: + _elements.set_prop("entityType", AAZStrType, ".entity_type") + _elements.set_prop("fieldMappings", AAZListType, ".field_mappings") + + field_mappings = _builder.get(".properties.entityMappings[].fieldMappings") + if field_mappings is not None: + field_mappings.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.entityMappings[].fieldMappings[]") + if _elements is not None: + _elements.set_prop("identifier", AAZStrType, ".identifier") + _elements.set_prop("value", AAZStrType, ".value") + + incident_info = _builder.get(".properties.incidentInfo") + if incident_info is not None: + incident_info.set_prop("incidentId", AAZStrType, ".incident_id") + incident_info.set_prop("relationName", AAZStrType, ".relation_name") + incident_info.set_prop("severity", AAZStrType, ".severity") + incident_info.set_prop("title", AAZStrType, ".title") + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + tactics = _builder.get(".properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get(".properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + properties.event_time = AAZStrType( + serialized_name="eventTime", + ) + properties.incident_info = AAZObjectType( + serialized_name="incidentInfo", + ) + properties.labels = AAZListType() + properties.notes = AAZStrType() + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_end_time = AAZStrType( + serialized_name="queryEndTime", + ) + properties.query_result = AAZStrType( + serialized_name="queryResult", + ) + properties.query_start_time = AAZStrType( + serialized_name="queryStartTime", + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + + entity_mappings = cls._schema_on_200_201.properties.entity_mappings + entity_mappings.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.entity_mappings.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = cls._schema_on_200_201.properties.entity_mappings.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.entity_mappings.Element.field_mappings.Element + _element.identifier = AAZStrType() + _element.value = AAZStrType() + + incident_info = cls._schema_on_200_201.properties.incident_info + incident_info.incident_id = AAZStrType( + serialized_name="incidentId", + ) + incident_info.relation_name = AAZStrType( + serialized_name="relationName", + ) + incident_info.severity = AAZStrType() + incident_info.title = AAZStrType() + + labels = cls._schema_on_200_201.properties.labels + labels.Element = AAZStrType() + + tactics = cls._schema_on_200_201.properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200_201.properties.techniques + techniques.Element = AAZStrType() + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +def _build_schema_user_info_create(_builder): + if _builder is None: + return + _builder.set_prop("objectId", AAZStrType, ".object_id", typ_kwargs={"nullable": True}) + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_delete.py new file mode 100644 index 00000000000..e4779af49a4 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_delete.py @@ -0,0 +1,135 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the bookmark. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["-n", "--name", "--bookmark-id"], + help="ID of bookmark.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarksDelete(ctx=self.ctx)() + + class BookmarksDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_expand.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_expand.py new file mode 100644 index 00000000000..d75e4f19859 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_expand.py @@ -0,0 +1,1400 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark expand", + is_experimental=True, +) +class Expand(AAZCommand): + """Expand an bookmark + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}/expand", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["-n", "--name", "--bookmark-id"], + help="ID of bookmark.", + required=True, + is_experimental=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + + # define Arg Group "Parameters" + + _args_schema = cls._args_schema + _args_schema.end_time = AAZStrArg( + options=["--end-time"], + arg_group="Parameters", + help="The end date filter, so the only expansion results returned are before this date.", + ) + _args_schema.expansion_id = AAZStrArg( + options=["--expansion-id"], + arg_group="Parameters", + help="The Id of the expansion to perform.", + ) + _args_schema.start_time = AAZStrArg( + options=["--start-time"], + arg_group="Parameters", + help="The start date filter, so the only expansion results returned are after this date.", + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarkExpand(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class BookmarkExpand(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}/expand", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("endTime", AAZStrType, ".end_time") + _builder.set_prop("expansionId", AAZStrType, ".expansion_id") + _builder.set_prop("startTime", AAZStrType, ".start_time") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.meta_data = AAZObjectType( + serialized_name="metaData", + ) + _schema_on_200.value = AAZObjectType() + + meta_data = cls._schema_on_200.meta_data + meta_data.aggregations = AAZListType() + + aggregations = cls._schema_on_200.meta_data.aggregations + aggregations.Element = AAZObjectType() + + _element = cls._schema_on_200.meta_data.aggregations.Element + _element.aggregation_type = AAZStrType( + serialized_name="aggregationType", + ) + _element.count = AAZIntType( + flags={"required": True}, + ) + _element.display_name = AAZStrType( + serialized_name="displayName", + ) + _element.entity_kind = AAZStrType( + serialized_name="entityKind", + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.edges = AAZListType() + value.entities = AAZListType() + + edges = cls._schema_on_200.value.edges + edges.Element = AAZObjectType() + + _element = cls._schema_on_200.value.edges.Element + _element.target_entity_id = AAZStrType( + serialized_name="targetEntityId", + ) + + entities = cls._schema_on_200.value.entities + entities.Element = AAZObjectType() + + _element = cls._schema_on_200.value.entities.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.entities.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_account = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Account") + disc_account.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Account").properties + properties.aad_tenant_id = AAZStrType( + serialized_name="aadTenantId", + flags={"read_only": True}, + ) + properties.aad_user_id = AAZStrType( + serialized_name="aadUserId", + flags={"read_only": True}, + ) + properties.account_name = AAZStrType( + serialized_name="accountName", + flags={"read_only": True}, + ) + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.dns_domain = AAZStrType( + serialized_name="dnsDomain", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + properties.is_domain_joined = AAZBoolType( + serialized_name="isDomainJoined", + flags={"read_only": True}, + ) + properties.nt_domain = AAZStrType( + serialized_name="ntDomain", + flags={"read_only": True}, + ) + properties.object_guid = AAZStrType( + serialized_name="objectGuid", + flags={"read_only": True}, + ) + properties.puid = AAZStrType( + flags={"read_only": True}, + ) + properties.sid = AAZStrType( + flags={"read_only": True}, + ) + properties.upn_suffix = AAZStrType( + serialized_name="upnSuffix", + flags={"read_only": True}, + ) + + disc_azure_resource = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "AzureResource") + disc_azure_resource.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "AzureResource").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.resource_id = AAZStrType( + serialized_name="resourceId", + flags={"read_only": True}, + ) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + + disc_bookmark = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Bookmark") + disc_bookmark.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Bookmark").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.event_time = AAZStrType( + serialized_name="eventTime", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.incident_info = AAZObjectType( + serialized_name="incidentInfo", + ) + properties.labels = AAZListType() + properties.notes = AAZStrType() + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_result = AAZStrType( + serialized_name="queryResult", + ) + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + + incident_info = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Bookmark").properties.incident_info + incident_info.incident_id = AAZStrType( + serialized_name="incidentId", + ) + incident_info.relation_name = AAZStrType( + serialized_name="relationName", + ) + incident_info.severity = AAZStrType() + incident_info.title = AAZStrType() + + labels = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Bookmark").properties.labels + labels.Element = AAZStrType() + + disc_cloud_application = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "CloudApplication") + disc_cloud_application.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "CloudApplication").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.app_id = AAZIntType( + serialized_name="appId", + flags={"read_only": True}, + ) + properties.app_name = AAZStrType( + serialized_name="appName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.instance_name = AAZStrType( + serialized_name="instanceName", + flags={"read_only": True}, + ) + + disc_dns_resolution = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "DnsResolution") + disc_dns_resolution.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "DnsResolution").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.dns_server_ip_entity_id = AAZStrType( + serialized_name="dnsServerIpEntityId", + flags={"read_only": True}, + ) + properties.domain_name = AAZStrType( + serialized_name="domainName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_ip_address_entity_id = AAZStrType( + serialized_name="hostIpAddressEntityId", + flags={"read_only": True}, + ) + properties.ip_address_entity_ids = AAZListType( + serialized_name="ipAddressEntityIds", + flags={"read_only": True}, + ) + + ip_address_entity_ids = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "DnsResolution").properties.ip_address_entity_ids + ip_address_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_file = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "File") + disc_file.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "File").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.directory = AAZStrType( + flags={"read_only": True}, + ) + properties.file_hash_entity_ids = AAZListType( + serialized_name="fileHashEntityIds", + flags={"read_only": True}, + ) + properties.file_name = AAZStrType( + serialized_name="fileName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + + file_hash_entity_ids = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "File").properties.file_hash_entity_ids + file_hash_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_file_hash = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "FileHash") + disc_file_hash.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "FileHash").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.algorithm = AAZStrType( + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.hash_value = AAZStrType( + serialized_name="hashValue", + flags={"read_only": True}, + ) + + disc_host = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Host") + disc_host.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Host").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.azure_id = AAZStrType( + serialized_name="azureID", + flags={"read_only": True}, + ) + properties.dns_domain = AAZStrType( + serialized_name="dnsDomain", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_name = AAZStrType( + serialized_name="hostName", + flags={"read_only": True}, + ) + properties.is_domain_joined = AAZBoolType( + serialized_name="isDomainJoined", + flags={"read_only": True}, + ) + properties.net_bios_name = AAZStrType( + serialized_name="netBiosName", + flags={"read_only": True}, + ) + properties.nt_domain = AAZStrType( + serialized_name="ntDomain", + flags={"read_only": True}, + ) + properties.oms_agent_id = AAZStrType( + serialized_name="omsAgentID", + flags={"read_only": True}, + ) + properties.os_family = AAZStrType( + serialized_name="osFamily", + ) + properties.os_version = AAZStrType( + serialized_name="osVersion", + flags={"read_only": True}, + ) + + disc_io_t_device = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "IoTDevice") + disc_io_t_device.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "IoTDevice").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.device_id = AAZStrType( + serialized_name="deviceId", + flags={"read_only": True}, + ) + properties.device_name = AAZStrType( + serialized_name="deviceName", + flags={"read_only": True}, + ) + properties.device_type = AAZStrType( + serialized_name="deviceType", + flags={"read_only": True}, + ) + properties.edge_id = AAZStrType( + serialized_name="edgeId", + flags={"read_only": True}, + ) + properties.firmware_version = AAZStrType( + serialized_name="firmwareVersion", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + properties.iot_hub_entity_id = AAZStrType( + serialized_name="iotHubEntityId", + flags={"read_only": True}, + ) + properties.iot_security_agent_id = AAZStrType( + serialized_name="iotSecurityAgentId", + flags={"read_only": True}, + ) + properties.ip_address_entity_id = AAZStrType( + serialized_name="ipAddressEntityId", + flags={"read_only": True}, + ) + properties.mac_address = AAZStrType( + serialized_name="macAddress", + flags={"read_only": True}, + ) + properties.model = AAZStrType( + flags={"read_only": True}, + ) + properties.operating_system = AAZStrType( + serialized_name="operatingSystem", + flags={"read_only": True}, + ) + properties.protocols = AAZListType( + flags={"read_only": True}, + ) + properties.serial_number = AAZStrType( + serialized_name="serialNumber", + flags={"read_only": True}, + ) + properties.source = AAZStrType( + flags={"read_only": True}, + ) + properties.threat_intelligence = AAZListType( + serialized_name="threatIntelligence", + flags={"read_only": True}, + ) + properties.vendor = AAZStrType( + flags={"read_only": True}, + ) + + protocols = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "IoTDevice").properties.protocols + protocols.Element = AAZStrType( + flags={"read_only": True}, + ) + + threat_intelligence = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "IoTDevice").properties.threat_intelligence + threat_intelligence.Element = AAZObjectType( + flags={"read_only": True}, + ) + _build_schema_threat_intelligence_read(threat_intelligence.Element) + + disc_ip = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Ip") + disc_ip.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Ip").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.address = AAZStrType( + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.location = AAZObjectType( + flags={"read_only": True}, + ) + properties.threat_intelligence = AAZListType( + serialized_name="threatIntelligence", + flags={"read_only": True}, + ) + + location = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Ip").properties.location + location.asn = AAZIntType( + flags={"read_only": True}, + ) + location.city = AAZStrType( + flags={"read_only": True}, + ) + location.country_code = AAZStrType( + serialized_name="countryCode", + flags={"read_only": True}, + ) + location.country_name = AAZStrType( + serialized_name="countryName", + flags={"read_only": True}, + ) + location.latitude = AAZFloatType( + flags={"read_only": True}, + ) + location.longitude = AAZFloatType( + flags={"read_only": True}, + ) + location.state = AAZStrType( + flags={"read_only": True}, + ) + + threat_intelligence = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Ip").properties.threat_intelligence + threat_intelligence.Element = AAZObjectType( + flags={"read_only": True}, + ) + _build_schema_threat_intelligence_read(threat_intelligence.Element) + + disc_mail_cluster = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailCluster") + disc_mail_cluster.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailCluster").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.cluster_group = AAZStrType( + serialized_name="clusterGroup", + flags={"read_only": True}, + ) + properties.cluster_query_end_time = AAZStrType( + serialized_name="clusterQueryEndTime", + flags={"read_only": True}, + ) + properties.cluster_query_start_time = AAZStrType( + serialized_name="clusterQueryStartTime", + flags={"read_only": True}, + ) + properties.cluster_source_identifier = AAZStrType( + serialized_name="clusterSourceIdentifier", + flags={"read_only": True}, + ) + properties.cluster_source_type = AAZStrType( + serialized_name="clusterSourceType", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.is_volume_anomaly = AAZBoolType( + serialized_name="isVolumeAnomaly", + flags={"read_only": True}, + ) + properties.mail_count = AAZIntType( + serialized_name="mailCount", + flags={"read_only": True}, + ) + properties.network_message_ids = AAZListType( + serialized_name="networkMessageIds", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"read_only": True}, + ) + properties.query_time = AAZStrType( + serialized_name="queryTime", + flags={"read_only": True}, + ) + properties.source = AAZStrType( + flags={"read_only": True}, + ) + properties.threats = AAZListType( + flags={"read_only": True}, + ) + + network_message_ids = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailCluster").properties.network_message_ids + network_message_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + threats = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailCluster").properties.threats + threats.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_mail_message = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailMessage") + disc_mail_message.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailMessage").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.antispam_direction = AAZStrType( + serialized_name="antispamDirection", + ) + properties.body_fingerprint_bin1 = AAZIntType( + serialized_name="bodyFingerprintBin1", + ) + properties.body_fingerprint_bin2 = AAZIntType( + serialized_name="bodyFingerprintBin2", + ) + properties.body_fingerprint_bin3 = AAZIntType( + serialized_name="bodyFingerprintBin3", + ) + properties.body_fingerprint_bin4 = AAZIntType( + serialized_name="bodyFingerprintBin4", + ) + properties.body_fingerprint_bin5 = AAZIntType( + serialized_name="bodyFingerprintBin5", + ) + properties.delivery_action = AAZStrType( + serialized_name="deliveryAction", + ) + properties.delivery_location = AAZStrType( + serialized_name="deliveryLocation", + ) + properties.file_entity_ids = AAZListType( + serialized_name="fileEntityIds", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.internet_message_id = AAZStrType( + serialized_name="internetMessageId", + flags={"read_only": True}, + ) + properties.language = AAZStrType( + flags={"read_only": True}, + ) + properties.network_message_id = AAZStrType( + serialized_name="networkMessageId", + flags={"read_only": True}, + ) + properties.p1_sender = AAZStrType( + serialized_name="p1Sender", + flags={"read_only": True}, + ) + properties.p1_sender_display_name = AAZStrType( + serialized_name="p1SenderDisplayName", + flags={"read_only": True}, + ) + properties.p1_sender_domain = AAZStrType( + serialized_name="p1SenderDomain", + flags={"read_only": True}, + ) + properties.p2_sender = AAZStrType( + serialized_name="p2Sender", + flags={"read_only": True}, + ) + properties.p2_sender_display_name = AAZStrType( + serialized_name="p2SenderDisplayName", + flags={"read_only": True}, + ) + properties.p2_sender_domain = AAZStrType( + serialized_name="p2SenderDomain", + flags={"read_only": True}, + ) + properties.receive_date = AAZStrType( + serialized_name="receiveDate", + flags={"read_only": True}, + ) + properties.recipient = AAZStrType( + flags={"read_only": True}, + ) + properties.sender_ip = AAZStrType( + serialized_name="senderIP", + flags={"read_only": True}, + ) + properties.subject = AAZStrType( + flags={"read_only": True}, + ) + properties.threat_detection_methods = AAZListType( + serialized_name="threatDetectionMethods", + flags={"read_only": True}, + ) + properties.threats = AAZListType( + flags={"read_only": True}, + ) + properties.urls = AAZListType( + flags={"read_only": True}, + ) + + file_entity_ids = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailMessage").properties.file_entity_ids + file_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + threat_detection_methods = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailMessage").properties.threat_detection_methods + threat_detection_methods.Element = AAZStrType( + flags={"read_only": True}, + ) + + threats = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailMessage").properties.threats + threats.Element = AAZStrType( + flags={"read_only": True}, + ) + + urls = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "MailMessage").properties.urls + urls.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_mailbox = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Mailbox") + disc_mailbox.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Mailbox").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.external_directory_object_id = AAZStrType( + serialized_name="externalDirectoryObjectId", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.mailbox_primary_address = AAZStrType( + serialized_name="mailboxPrimaryAddress", + flags={"read_only": True}, + ) + properties.upn = AAZStrType( + flags={"read_only": True}, + ) + + disc_malware = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Malware") + disc_malware.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Malware").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.category = AAZStrType( + flags={"read_only": True}, + ) + properties.file_entity_ids = AAZListType( + serialized_name="fileEntityIds", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.malware_name = AAZStrType( + serialized_name="malwareName", + flags={"read_only": True}, + ) + properties.process_entity_ids = AAZListType( + serialized_name="processEntityIds", + flags={"read_only": True}, + ) + + file_entity_ids = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Malware").properties.file_entity_ids + file_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + process_entity_ids = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Malware").properties.process_entity_ids + process_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_process = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Process") + disc_process.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Process").properties + properties.account_entity_id = AAZStrType( + serialized_name="accountEntityId", + flags={"read_only": True}, + ) + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.command_line = AAZStrType( + serialized_name="commandLine", + flags={"read_only": True}, + ) + properties.creation_time_utc = AAZStrType( + serialized_name="creationTimeUtc", + flags={"read_only": True}, + ) + properties.elevation_token = AAZStrType( + serialized_name="elevationToken", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + properties.host_logon_session_entity_id = AAZStrType( + serialized_name="hostLogonSessionEntityId", + flags={"read_only": True}, + ) + properties.image_file_entity_id = AAZStrType( + serialized_name="imageFileEntityId", + flags={"read_only": True}, + ) + properties.parent_process_entity_id = AAZStrType( + serialized_name="parentProcessEntityId", + flags={"read_only": True}, + ) + properties.process_id = AAZStrType( + serialized_name="processId", + flags={"read_only": True}, + ) + + disc_registry_key = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "RegistryKey") + disc_registry_key.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "RegistryKey").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.hive = AAZStrType( + flags={"read_only": True}, + ) + properties.key = AAZStrType( + flags={"read_only": True}, + ) + + disc_registry_value = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "RegistryValue") + disc_registry_value.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "RegistryValue").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.key_entity_id = AAZStrType( + serialized_name="keyEntityId", + flags={"read_only": True}, + ) + properties.value_data = AAZStrType( + serialized_name="valueData", + flags={"read_only": True}, + ) + properties.value_name = AAZStrType( + serialized_name="valueName", + flags={"read_only": True}, + ) + properties.value_type = AAZStrType( + serialized_name="valueType", + flags={"read_only": True}, + ) + + disc_security_alert = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityAlert") + disc_security_alert.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityAlert").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.alert_display_name = AAZStrType( + serialized_name="alertDisplayName", + flags={"read_only": True}, + ) + properties.alert_link = AAZStrType( + serialized_name="alertLink", + flags={"read_only": True}, + ) + properties.alert_type = AAZStrType( + serialized_name="alertType", + flags={"read_only": True}, + ) + properties.compromised_entity = AAZStrType( + serialized_name="compromisedEntity", + flags={"read_only": True}, + ) + properties.confidence_level = AAZStrType( + serialized_name="confidenceLevel", + flags={"read_only": True}, + ) + properties.confidence_reasons = AAZListType( + serialized_name="confidenceReasons", + flags={"read_only": True}, + ) + properties.confidence_score = AAZFloatType( + serialized_name="confidenceScore", + flags={"read_only": True}, + ) + properties.confidence_score_status = AAZStrType( + serialized_name="confidenceScoreStatus", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.end_time_utc = AAZStrType( + serialized_name="endTimeUtc", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.intent = AAZStrType( + flags={"read_only": True}, + ) + properties.processing_end_time = AAZStrType( + serialized_name="processingEndTime", + flags={"read_only": True}, + ) + properties.product_component_name = AAZStrType( + serialized_name="productComponentName", + flags={"read_only": True}, + ) + properties.product_name = AAZStrType( + serialized_name="productName", + flags={"read_only": True}, + ) + properties.product_version = AAZStrType( + serialized_name="productVersion", + flags={"read_only": True}, + ) + properties.provider_alert_id = AAZStrType( + serialized_name="providerAlertId", + flags={"read_only": True}, + ) + properties.remediation_steps = AAZListType( + serialized_name="remediationSteps", + flags={"read_only": True}, + ) + properties.severity = AAZStrType() + properties.start_time_utc = AAZStrType( + serialized_name="startTimeUtc", + flags={"read_only": True}, + ) + properties.status = AAZStrType( + flags={"read_only": True}, + ) + properties.system_alert_id = AAZStrType( + serialized_name="systemAlertId", + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.time_generated = AAZStrType( + serialized_name="timeGenerated", + flags={"read_only": True}, + ) + properties.vendor_name = AAZStrType( + serialized_name="vendorName", + flags={"read_only": True}, + ) + + confidence_reasons = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityAlert").properties.confidence_reasons + confidence_reasons.Element = AAZObjectType( + flags={"read_only": True}, + ) + + _element = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityAlert").properties.confidence_reasons.Element + _element.reason = AAZStrType( + flags={"read_only": True}, + ) + _element.reason_type = AAZStrType( + serialized_name="reasonType", + flags={"read_only": True}, + ) + + remediation_steps = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityAlert").properties.remediation_steps + remediation_steps.Element = AAZStrType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityAlert").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_security_group = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityGroup") + disc_security_group.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SecurityGroup").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.distinguished_name = AAZStrType( + serialized_name="distinguishedName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.object_guid = AAZStrType( + serialized_name="objectGuid", + flags={"read_only": True}, + ) + properties.sid = AAZStrType( + flags={"read_only": True}, + ) + + disc_submission_mail = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SubmissionMail") + disc_submission_mail.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "SubmissionMail").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.network_message_id = AAZStrType( + serialized_name="networkMessageId", + flags={"read_only": True}, + ) + properties.recipient = AAZStrType( + flags={"read_only": True}, + ) + properties.report_type = AAZStrType( + serialized_name="reportType", + flags={"read_only": True}, + ) + properties.sender = AAZStrType( + flags={"read_only": True}, + ) + properties.sender_ip = AAZStrType( + serialized_name="senderIp", + flags={"read_only": True}, + ) + properties.subject = AAZStrType( + flags={"read_only": True}, + ) + properties.submission_date = AAZStrType( + serialized_name="submissionDate", + flags={"read_only": True}, + ) + properties.submission_id = AAZStrType( + serialized_name="submissionId", + flags={"read_only": True}, + ) + properties.submitter = AAZStrType( + flags={"read_only": True}, + ) + properties.timestamp = AAZStrType( + flags={"read_only": True}, + ) + + disc_url = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Url") + disc_url.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.entities.Element.discriminate_by("kind", "Url").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.url = AAZStrType( + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_threat_intelligence_read = None + + +def _build_schema_threat_intelligence_read(_schema): + global _schema_threat_intelligence_read + if _schema_threat_intelligence_read is not None: + _schema.confidence = _schema_threat_intelligence_read.confidence + _schema.provider_name = _schema_threat_intelligence_read.provider_name + _schema.report_link = _schema_threat_intelligence_read.report_link + _schema.threat_description = _schema_threat_intelligence_read.threat_description + _schema.threat_name = _schema_threat_intelligence_read.threat_name + _schema.threat_type = _schema_threat_intelligence_read.threat_type + return + + _schema_threat_intelligence_read = AAZObjectType( + flags={"read_only": True} + ) + + threat_intelligence_read = _schema_threat_intelligence_read + threat_intelligence_read.confidence = AAZFloatType( + flags={"read_only": True}, + ) + threat_intelligence_read.provider_name = AAZStrType( + serialized_name="providerName", + flags={"read_only": True}, + ) + threat_intelligence_read.report_link = AAZStrType( + serialized_name="reportLink", + flags={"read_only": True}, + ) + threat_intelligence_read.threat_description = AAZStrType( + serialized_name="threatDescription", + flags={"read_only": True}, + ) + threat_intelligence_read.threat_name = AAZStrType( + serialized_name="threatName", + flags={"read_only": True}, + ) + threat_intelligence_read.threat_type = AAZStrType( + serialized_name="threatType", + flags={"read_only": True}, + ) + + _schema.confidence = _schema_threat_intelligence_read.confidence + _schema.provider_name = _schema_threat_intelligence_read.provider_name + _schema.report_link = _schema_threat_intelligence_read.report_link + _schema.threat_description = _schema_threat_intelligence_read.threat_description + _schema.threat_name = _schema_threat_intelligence_read.threat_name + _schema.threat_type = _schema_threat_intelligence_read.threat_type + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["Expand"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_list.py new file mode 100644 index 00000000000..76717510c8a --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_list.py @@ -0,0 +1,311 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark list", + is_experimental=True, +) +class List(AAZCommand): + """Get all bookmarks. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarksList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class BookmarksList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + properties.event_time = AAZStrType( + serialized_name="eventTime", + ) + properties.incident_info = AAZObjectType( + serialized_name="incidentInfo", + ) + properties.labels = AAZListType() + properties.notes = AAZStrType() + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_end_time = AAZStrType( + serialized_name="queryEndTime", + ) + properties.query_result = AAZStrType( + serialized_name="queryResult", + ) + properties.query_start_time = AAZStrType( + serialized_name="queryStartTime", + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + + entity_mappings = cls._schema_on_200.value.Element.properties.entity_mappings + entity_mappings.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.entity_mappings.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = cls._schema_on_200.value.Element.properties.entity_mappings.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.entity_mappings.Element.field_mappings.Element + _element.identifier = AAZStrType() + _element.value = AAZStrType() + + incident_info = cls._schema_on_200.value.Element.properties.incident_info + incident_info.incident_id = AAZStrType( + serialized_name="incidentId", + ) + incident_info.relation_name = AAZStrType( + serialized_name="relationName", + ) + incident_info.severity = AAZStrType() + incident_info.title = AAZStrType() + + labels = cls._schema_on_200.value.Element.properties.labels + labels.Element = AAZStrType() + + tactics = cls._schema_on_200.value.Element.properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.value.Element.properties.techniques + techniques.Element = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_show.py new file mode 100644 index 00000000000..4dbc4c4a3d4 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_show.py @@ -0,0 +1,311 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark show", + is_experimental=True, +) +class Show(AAZCommand): + """Get a bookmark. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["-n", "--name", "--bookmark-id"], + help="ID of bookmark.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarksGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class BookmarksGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + properties.event_time = AAZStrType( + serialized_name="eventTime", + ) + properties.incident_info = AAZObjectType( + serialized_name="incidentInfo", + ) + properties.labels = AAZListType() + properties.notes = AAZStrType() + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_end_time = AAZStrType( + serialized_name="queryEndTime", + ) + properties.query_result = AAZStrType( + serialized_name="queryResult", + ) + properties.query_start_time = AAZStrType( + serialized_name="queryStartTime", + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + + entity_mappings = cls._schema_on_200.properties.entity_mappings + entity_mappings.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.entity_mappings.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = cls._schema_on_200.properties.entity_mappings.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.entity_mappings.Element.field_mappings.Element + _element.identifier = AAZStrType() + _element.value = AAZStrType() + + incident_info = cls._schema_on_200.properties.incident_info + incident_info.incident_id = AAZStrType( + serialized_name="incidentId", + ) + incident_info.relation_name = AAZStrType( + serialized_name="relationName", + ) + incident_info.severity = AAZStrType() + incident_info.title = AAZStrType() + + labels = cls._schema_on_200.properties.labels + labels.Element = AAZStrType() + + tactics = cls._schema_on_200.properties.tactics + tactics.Element = AAZStrType() + + techniques = cls._schema_on_200.properties.techniques + techniques.Element = AAZStrType() + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_update.py new file mode 100644 index 00000000000..f1ee3dea926 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/_update.py @@ -0,0 +1,722 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the bookmark. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["-n", "--name", "--bookmark-id"], + help="ID of bookmark.", + required=True, + is_experimental=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Bookmark" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Bookmark", + help="Etag of the azure resource", + nullable=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.created = AAZStrArg( + options=["--created"], + arg_group="Properties", + help="The time the bookmark was created", + nullable=True, + ) + _args_schema.created_by = AAZObjectArg( + options=["--created-by"], + arg_group="Properties", + help="Describes a user that created the bookmark", + nullable=True, + ) + cls._build_args_user_info_update(_args_schema.created_by) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the bookmark", + ) + _args_schema.entity_mappings = AAZListArg( + options=["--entity-mappings"], + arg_group="Properties", + help="Describes the entity mappings of the bookmark", + nullable=True, + ) + _args_schema.event_time = AAZStrArg( + options=["--event-time"], + arg_group="Properties", + help="The bookmark event time", + nullable=True, + ) + _args_schema.incident_info = AAZObjectArg( + options=["--incident-info"], + arg_group="Properties", + help="Describes an incident that relates to bookmark", + nullable=True, + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="List of labels relevant to this bookmark", + nullable=True, + ) + _args_schema.notes = AAZStrArg( + options=["--notes"], + arg_group="Properties", + help="The notes of the bookmark", + nullable=True, + ) + _args_schema.query_content = AAZStrArg( + options=["--query-content"], + arg_group="Properties", + help="The query of the bookmark.", + is_experimental=True, + ) + _args_schema.query_end_time = AAZStrArg( + options=["--query-end-time"], + arg_group="Properties", + help="The end time for the query", + nullable=True, + ) + _args_schema.query_result = AAZStrArg( + options=["--query-result"], + arg_group="Properties", + help="The query result of the bookmark.", + nullable=True, + ) + _args_schema.query_start_time = AAZStrArg( + options=["--query-start-time"], + arg_group="Properties", + help="The start time for the query", + nullable=True, + ) + _args_schema.tactics = AAZListArg( + options=["--tactics"], + arg_group="Properties", + help="A list of relevant mitre attacks", + nullable=True, + ) + _args_schema.techniques = AAZListArg( + options=["--techniques"], + arg_group="Properties", + help="A list of relevant mitre techniques", + nullable=True, + ) + _args_schema.updated = AAZStrArg( + options=["--updated"], + arg_group="Properties", + help="The last time the bookmark was updated", + nullable=True, + ) + _args_schema.updated_by = AAZObjectArg( + options=["--updated-by"], + arg_group="Properties", + help="Describes a user that updated the bookmark", + nullable=True, + ) + cls._build_args_user_info_update(_args_schema.updated_by) + + entity_mappings = cls._args_schema.entity_mappings + entity_mappings.Element = AAZObjectArg() + + _element = cls._args_schema.entity_mappings.Element + _element.entity_type = AAZStrArg( + options=["entity-type"], + help="The entity type", + nullable=True, + ) + _element.field_mappings = AAZListArg( + options=["field-mappings"], + help="Array of fields mapping for that entity type", + nullable=True, + ) + + field_mappings = cls._args_schema.entity_mappings.Element.field_mappings + field_mappings.Element = AAZObjectArg() + + _element = cls._args_schema.entity_mappings.Element.field_mappings.Element + _element.identifier = AAZStrArg( + options=["identifier"], + help="Alert V3 identifier", + nullable=True, + ) + _element.value = AAZStrArg( + options=["value"], + help="The value of the identifier", + nullable=True, + ) + + incident_info = cls._args_schema.incident_info + incident_info.incident_id = AAZStrArg( + options=["incident-id"], + help="Incident Id", + nullable=True, + ) + incident_info.relation_name = AAZStrArg( + options=["relation-name"], + help="Relation Name", + nullable=True, + ) + incident_info.severity = AAZStrArg( + options=["severity"], + help="The severity of the incident", + nullable=True, + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + incident_info.title = AAZStrArg( + options=["title"], + help="The title of the incident", + nullable=True, + ) + + labels = cls._args_schema.labels + labels.Element = AAZStrArg() + + tactics = cls._args_schema.tactics + tactics.Element = AAZStrArg( + enum={"Collection": "Collection", "CommandAndControl": "CommandAndControl", "CredentialAccess": "CredentialAccess", "DefenseEvasion": "DefenseEvasion", "Discovery": "Discovery", "Execution": "Execution", "Exfiltration": "Exfiltration", "Impact": "Impact", "ImpairProcessControl": "ImpairProcessControl", "InhibitResponseFunction": "InhibitResponseFunction", "InitialAccess": "InitialAccess", "LateralMovement": "LateralMovement", "Persistence": "Persistence", "PreAttack": "PreAttack", "PrivilegeEscalation": "PrivilegeEscalation", "Reconnaissance": "Reconnaissance", "ResourceDevelopment": "ResourceDevelopment"}, + ) + + techniques = cls._args_schema.techniques + techniques.Element = AAZStrArg() + return cls._args_schema + + _args_user_info_update = None + + @classmethod + def _build_args_user_info_update(cls, _schema): + if cls._args_user_info_update is not None: + _schema.object_id = cls._args_user_info_update.object_id + return + + cls._args_user_info_update = AAZObjectArg( + nullable=True, + ) + + user_info_update = cls._args_user_info_update + user_info_update.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user.", + nullable=True, + ) + + _schema.object_id = cls._args_user_info_update.object_id + + def _execute_operations(self): + self.BookmarksGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.BookmarksCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class BookmarksGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_bookmark_read(cls._schema_on_200) + + return cls._schema_on_200 + + class BookmarksCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_bookmark_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("created", AAZStrType, ".created") + _build_schema_user_info_update(properties.set_prop("createdBy", AAZObjectType, ".created_by")) + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("entityMappings", AAZListType, ".entity_mappings") + properties.set_prop("eventTime", AAZStrType, ".event_time") + properties.set_prop("incidentInfo", AAZObjectType, ".incident_info") + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("notes", AAZStrType, ".notes") + properties.set_prop("query", AAZStrType, ".query_content", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("queryEndTime", AAZStrType, ".query_end_time") + properties.set_prop("queryResult", AAZStrType, ".query_result") + properties.set_prop("queryStartTime", AAZStrType, ".query_start_time") + properties.set_prop("tactics", AAZListType, ".tactics") + properties.set_prop("techniques", AAZListType, ".techniques") + properties.set_prop("updated", AAZStrType, ".updated") + _build_schema_user_info_update(properties.set_prop("updatedBy", AAZObjectType, ".updated_by")) + + entity_mappings = _builder.get(".properties.entityMappings") + if entity_mappings is not None: + entity_mappings.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.entityMappings[]") + if _elements is not None: + _elements.set_prop("entityType", AAZStrType, ".entity_type") + _elements.set_prop("fieldMappings", AAZListType, ".field_mappings") + + field_mappings = _builder.get(".properties.entityMappings[].fieldMappings") + if field_mappings is not None: + field_mappings.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.entityMappings[].fieldMappings[]") + if _elements is not None: + _elements.set_prop("identifier", AAZStrType, ".identifier") + _elements.set_prop("value", AAZStrType, ".value") + + incident_info = _builder.get(".properties.incidentInfo") + if incident_info is not None: + incident_info.set_prop("incidentId", AAZStrType, ".incident_id") + incident_info.set_prop("relationName", AAZStrType, ".relation_name") + incident_info.set_prop("severity", AAZStrType, ".severity") + incident_info.set_prop("title", AAZStrType, ".title") + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + tactics = _builder.get(".properties.tactics") + if tactics is not None: + tactics.set_elements(AAZStrType, ".") + + techniques = _builder.get(".properties.techniques") + if techniques is not None: + techniques.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +def _build_schema_user_info_update(_builder): + if _builder is None: + return + _builder.set_prop("objectId", AAZStrType, ".object_id", typ_kwargs={"nullable": True}) + + +_schema_bookmark_read = None + + +def _build_schema_bookmark_read(_schema): + global _schema_bookmark_read + if _schema_bookmark_read is not None: + _schema.etag = _schema_bookmark_read.etag + _schema.id = _schema_bookmark_read.id + _schema.name = _schema_bookmark_read.name + _schema.properties = _schema_bookmark_read.properties + _schema.system_data = _schema_bookmark_read.system_data + _schema.type = _schema_bookmark_read.type + return + + _schema_bookmark_read = AAZObjectType() + + bookmark_read = _schema_bookmark_read + bookmark_read.etag = AAZStrType() + bookmark_read.id = AAZStrType( + flags={"read_only": True}, + ) + bookmark_read.name = AAZStrType( + flags={"read_only": True}, + ) + bookmark_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + bookmark_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + bookmark_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_bookmark_read.properties + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.entity_mappings = AAZListType( + serialized_name="entityMappings", + ) + properties.event_time = AAZStrType( + serialized_name="eventTime", + ) + properties.incident_info = AAZObjectType( + serialized_name="incidentInfo", + ) + properties.labels = AAZListType() + properties.notes = AAZStrType() + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_end_time = AAZStrType( + serialized_name="queryEndTime", + ) + properties.query_result = AAZStrType( + serialized_name="queryResult", + ) + properties.query_start_time = AAZStrType( + serialized_name="queryStartTime", + ) + properties.tactics = AAZListType() + properties.techniques = AAZListType() + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + + entity_mappings = _schema_bookmark_read.properties.entity_mappings + entity_mappings.Element = AAZObjectType() + + _element = _schema_bookmark_read.properties.entity_mappings.Element + _element.entity_type = AAZStrType( + serialized_name="entityType", + ) + _element.field_mappings = AAZListType( + serialized_name="fieldMappings", + ) + + field_mappings = _schema_bookmark_read.properties.entity_mappings.Element.field_mappings + field_mappings.Element = AAZObjectType() + + _element = _schema_bookmark_read.properties.entity_mappings.Element.field_mappings.Element + _element.identifier = AAZStrType() + _element.value = AAZStrType() + + incident_info = _schema_bookmark_read.properties.incident_info + incident_info.incident_id = AAZStrType( + serialized_name="incidentId", + ) + incident_info.relation_name = AAZStrType( + serialized_name="relationName", + ) + incident_info.severity = AAZStrType() + incident_info.title = AAZStrType() + + labels = _schema_bookmark_read.properties.labels + labels.Element = AAZStrType() + + tactics = _schema_bookmark_read.properties.tactics + tactics.Element = AAZStrType() + + techniques = _schema_bookmark_read.properties.techniques + techniques.Element = AAZStrType() + + system_data = _schema_bookmark_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_bookmark_read.etag + _schema.id = _schema_bookmark_read.id + _schema.name = _schema_bookmark_read.name + _schema.properties = _schema_bookmark_read.properties + _schema.system_data = _schema_bookmark_read.system_data + _schema.type = _schema_bookmark_read.type + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/__cmd_group.py new file mode 100644 index 00000000000..2dd02e3e1f7 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel bookmark relation", +) +class __CMDGroup(AAZCommandGroup): + """Manage bookmark relation with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_create.py new file mode 100644 index 00000000000..d87ce9787af --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_create.py @@ -0,0 +1,266 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark relation create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the bookmark relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}/relations/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["--bookmark-id"], + help="Bookmark ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.related_resource_id = AAZStrArg( + options=["--related-resource-id"], + arg_group="Properties", + help="The resource ID of the related resource", + ) + + # define Arg Group "Relation" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Relation", + help="Etag of the azure resource", + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarkRelationsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class BookmarkRelationsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("relatedResourceId", AAZStrType, ".related_resource_id", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_delete.py new file mode 100644 index 00000000000..a3a6d7133e5 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_delete.py @@ -0,0 +1,143 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark relation delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the bookmark relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}/relations/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["--bookmark-id"], + help="Bookmark ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarkRelationsDelete(ctx=self.ctx)() + + class BookmarkRelationsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_list.py new file mode 100644 index 00000000000..7a7c369c8d5 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_list.py @@ -0,0 +1,257 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark relation list", + is_experimental=True, +) +class List(AAZCommand): + """Get all bookmark relations. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}/relations", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["--bookmark-id"], + help="Bookmark ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + ) + _args_schema.filter = AAZStrArg( + options=["--filter"], + help="Filters the results, based on a Boolean condition. Optional.", + ) + _args_schema.orderby = AAZStrArg( + options=["--orderby"], + help="Sorts the results. Optional.", + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.", + ) + _args_schema.top = AAZIntArg( + options=["--top"], + help="Returns only the first n results. Optional.", + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarkRelationsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class BookmarkRelationsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}/relations", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$filter", self.ctx.args.filter, + ), + **self.serialize_query_param( + "$orderby", self.ctx.args.orderby, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$top", self.ctx.args.top, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_show.py new file mode 100644 index 00000000000..2694c264d58 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_show.py @@ -0,0 +1,229 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark relation show", + is_experimental=True, +) +class Show(AAZCommand): + """Get a bookmark relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}/relations/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["--bookmark-id"], + help="Bookmark ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarkRelationsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class BookmarkRelationsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_update.py new file mode 100644 index 00000000000..e029f984b5b --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/bookmark/relation/_update.py @@ -0,0 +1,409 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel bookmark relation update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the bookmark relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/bookmarks/{}/relations/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.bookmark_id = AAZStrArg( + options=["--bookmark-id"], + help="Bookmark ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.related_resource_id = AAZStrArg( + options=["--related-resource-id"], + arg_group="Properties", + help="The resource ID of the related resource", + ) + + # define Arg Group "Relation" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Relation", + help="Etag of the azure resource", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.BookmarkRelationsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.BookmarkRelationsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class BookmarkRelationsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_relation_read(cls._schema_on_200) + + return cls._schema_on_200 + + class BookmarkRelationsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "bookmarkId", self.ctx.args.bookmark_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_relation_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("relatedResourceId", AAZStrType, ".related_resource_id", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_relation_read = None + + +def _build_schema_relation_read(_schema): + global _schema_relation_read + if _schema_relation_read is not None: + _schema.etag = _schema_relation_read.etag + _schema.id = _schema_relation_read.id + _schema.name = _schema_relation_read.name + _schema.properties = _schema_relation_read.properties + _schema.system_data = _schema_relation_read.system_data + _schema.type = _schema_relation_read.type + return + + _schema_relation_read = AAZObjectType() + + relation_read = _schema_relation_read + relation_read.etag = AAZStrType() + relation_read.id = AAZStrType( + flags={"read_only": True}, + ) + relation_read.name = AAZStrType( + flags={"read_only": True}, + ) + relation_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + relation_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + relation_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_relation_read.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = _schema_relation_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_relation_read.etag + _schema.id = _schema_relation_read.id + _schema.name = _schema_relation_read.name + _schema.properties = _schema_relation_read.properties + _schema.system_data = _schema_relation_read.system_data + _schema.type = _schema_relation_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/__cmd_group.py new file mode 100644 index 00000000000..a4de63a7923 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel data-connector", +) +class __CMDGroup(AAZCommandGroup): + """Manage data connector with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/__init__.py new file mode 100644 index 00000000000..0adac0577a6 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/__init__.py @@ -0,0 +1,18 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._connect import * +from ._create import * +from ._delete import * +from ._disconnect import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_connect.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_connect.py new file mode 100644 index 00000000000..e2f8d997618 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_connect.py @@ -0,0 +1,210 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel data-connector connect", + is_experimental=True, +) +class Connect(AAZCommand): + """Connect a data connector. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/dataconnectors/{}/connect", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.data_connector_id = AAZStrArg( + options=["--data-connector-id"], + help="Connector ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + + # define Arg Group "ConnectBody" + + _args_schema = cls._args_schema + _args_schema.api_key = AAZStrArg( + options=["--api-key"], + arg_group="ConnectBody", + help="The API key of the audit server.", + ) + _args_schema.authorization_code = AAZStrArg( + options=["--authorization-code"], + arg_group="ConnectBody", + help="The authorization code used in OAuth 2.0 code flow to issue a token.", + ) + _args_schema.client_id = AAZStrArg( + options=["--client-id"], + arg_group="ConnectBody", + help="The client id of the OAuth 2.0 application.", + ) + _args_schema.client_secret = AAZStrArg( + options=["--client-secret"], + arg_group="ConnectBody", + help="The client secret of the OAuth 2.0 application.", + ) + _args_schema.endpoint = AAZStrArg( + options=["--endpoint"], + arg_group="ConnectBody", + help="Used in v2 logs connector. Represents the data collection ingestion endpoint in log analytics.", + ) + _args_schema.rule_immutable_id = AAZStrArg( + options=["--rule-immutable-id"], + arg_group="ConnectBody", + help="Used in v2 logs connector. The data collection rule immutable id, the rule defines the transformation and data destination.", + ) + _args_schema.kind = AAZStrArg( + options=["--kind"], + arg_group="ConnectBody", + help="The authentication kind used to poll the data", + enum={"APIKey": "APIKey", "Basic": "Basic", "OAuth2": "OAuth2"}, + ) + _args_schema.output_stream = AAZStrArg( + options=["--output-stream"], + arg_group="ConnectBody", + help="Used in v2 logs connector. The stream we are sending the data to, this is the name of the streamDeclarations defined in the DCR.", + ) + _args_schema.password = AAZStrArg( + options=["--password"], + arg_group="ConnectBody", + help="The user password in the audit log server.", + ) + _args_schema.user_name = AAZStrArg( + options=["--user-name"], + arg_group="ConnectBody", + help="The user name in the audit log server.", + ) + return cls._args_schema + + def _execute_operations(self): + self.DataConnectorsConnect(ctx=self.ctx)() + + class DataConnectorsConnect(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}/connect", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "dataConnectorId", self.ctx.args.data_connector_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("apiKey", AAZStrType, ".api_key") + _builder.set_prop("authorizationCode", AAZStrType, ".authorization_code") + _builder.set_prop("clientId", AAZStrType, ".client_id") + _builder.set_prop("clientSecret", AAZStrType, ".client_secret") + _builder.set_prop("dataCollectionEndpoint", AAZStrType, ".endpoint") + _builder.set_prop("dataCollectionRuleImmutableId", AAZStrType, ".rule_immutable_id") + _builder.set_prop("kind", AAZStrType, ".kind") + _builder.set_prop("outputStream", AAZStrType, ".output_stream") + _builder.set_prop("password", AAZStrType, ".password") + _builder.set_prop("userName", AAZStrType, ".user_name") + + return self.serialize_content(_content_value) + + def on_200(self, session): + pass + + +__all__ = ["Connect"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_create.py new file mode 100644 index 00000000000..661bd4fcae7 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_create.py @@ -0,0 +1,2598 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel data-connector create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the data connector. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/dataconnectors/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.data_connector_id = AAZStrArg( + options=["-n", "--name", "--data-connector-id"], + help="Connector ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "DataConnector" + + _args_schema = cls._args_schema + _args_schema.api_polling = AAZObjectArg( + options=["--api-polling"], + arg_group="DataConnector", + ) + _args_schema.aws_cloud_trail = AAZObjectArg( + options=["--aws-cloud-trail"], + arg_group="DataConnector", + help="Amazon web services cloud trail.", + ) + _args_schema.aws_s3 = AAZObjectArg( + options=["--aws-s3"], + arg_group="DataConnector", + help="Amazon web services s3.", + ) + _args_schema.azure_active_directory = AAZObjectArg( + options=["--azure-active-directory"], + arg_group="DataConnector", + ) + _args_schema.azure_protection = AAZObjectArg( + options=["--azure-protection"], + arg_group="DataConnector", + help="Azure advanced threat protection.", + ) + _args_schema.azure_security_center = AAZObjectArg( + options=["--azure-security-center"], + arg_group="DataConnector", + ) + _args_schema.dynamics365 = AAZObjectArg( + options=["--dynamics365"], + arg_group="DataConnector", + ) + _args_schema.generic_ui = AAZObjectArg( + options=["--generic-ui"], + arg_group="DataConnector", + ) + _args_schema.iot = AAZObjectArg( + options=["--iot"], + arg_group="DataConnector", + ) + _args_schema.cloud_app_security = AAZObjectArg( + options=["--cloud-app-security"], + arg_group="DataConnector", + help="Microsoft cloud app security.", + ) + _args_schema.defender_protection = AAZObjectArg( + options=["--defender-protection"], + arg_group="DataConnector", + help="Microsoft defender advanced threat protection.", + ) + _args_schema.microsoft_intelligence = AAZObjectArg( + options=["--microsoft-intelligence"], + arg_group="DataConnector", + help="Microsoft threat intelligence.", + ) + _args_schema.microsoft_protection = AAZObjectArg( + options=["--microsoft-protection"], + arg_group="DataConnector", + help="Microsoft threat protection.", + ) + _args_schema.office365 = AAZObjectArg( + options=["--office365"], + arg_group="DataConnector", + ) + _args_schema.office365_project = AAZObjectArg( + options=["--office365-project"], + arg_group="DataConnector", + ) + _args_schema.office_atp = AAZObjectArg( + options=["--office-atp"], + arg_group="DataConnector", + ) + _args_schema.office_irm = AAZObjectArg( + options=["--office-irm"], + arg_group="DataConnector", + ) + _args_schema.office_power_bi = AAZObjectArg( + options=["--office-power-bi"], + arg_group="DataConnector", + ) + _args_schema.threat_intelligence = AAZObjectArg( + options=["--threat-intelligence"], + arg_group="DataConnector", + ) + _args_schema.intelligence_taxii = AAZObjectArg( + options=["--intelligence-taxii"], + arg_group="DataConnector", + help="Threat intelligence taxii.", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="DataConnector", + help="Etag of the azure resource", + ) + + api_polling = cls._args_schema.api_polling + api_polling.connector_ui_config = AAZObjectArg( + options=["connector-ui-config"], + help="Config to describe the instructions blade", + ) + cls._build_args_codeless_ui_connector_config_properties_create(api_polling.connector_ui_config) + api_polling.polling_config = AAZObjectArg( + options=["polling-config"], + help="Config to describe the polling instructions", + ) + + polling_config = cls._args_schema.api_polling.polling_config + polling_config.auth = AAZObjectArg( + options=["auth"], + help="Describe the authentication type of the poller", + required=True, + ) + polling_config.is_active = AAZBoolArg( + options=["is-active"], + help="The poller active status", + ) + polling_config.paging = AAZObjectArg( + options=["paging"], + help="Describe the poll request paging config of the poller", + ) + polling_config.request = AAZObjectArg( + options=["request"], + help="Describe the poll request config parameters of the poller", + required=True, + ) + polling_config.response = AAZObjectArg( + options=["response"], + help="Describe the response config parameters of the poller", + ) + + auth = cls._args_schema.api_polling.polling_config.auth + auth.api_key_identifier = AAZStrArg( + options=["api-key-identifier"], + help="A prefix send in the header before the actual token", + ) + auth.api_key_name = AAZStrArg( + options=["api-key-name"], + help="The header name which the token is sent with", + ) + auth.auth_type = AAZStrArg( + options=["auth-type"], + help="The authentication type", + required=True, + ) + auth.authorization_endpoint = AAZStrArg( + options=["authorization-endpoint"], + help="The endpoint used to authorize the user, used in Oauth 2.0 flow", + ) + auth.flow_name = AAZStrArg( + options=["flow-name"], + help="Describes the flow name, for example 'AuthCode' for Oauth 2.0", + ) + auth.is_api_key_in_post_payload = AAZStrArg( + options=["is-api-key-in-post-payload"], + help="Marks if the key should sent in header", + ) + auth.is_client_secret_in_header = AAZBoolArg( + options=["is-client-secret-in-header"], + help="Marks if we should send the client secret in header or payload, used in Oauth 2.0 flow", + ) + auth.redirection_endpoint = AAZStrArg( + options=["redirection-endpoint"], + help="The redirect endpoint where we will get the authorization code, used in Oauth 2.0 flow", + ) + auth.scope = AAZStrArg( + options=["scope"], + help="The OAuth token scope", + ) + auth.token_endpoint = AAZStrArg( + options=["token-endpoint"], + help="The endpoint used to issue a token, used in Oauth 2.0 flow", + ) + + paging = cls._args_schema.api_polling.polling_config.paging + paging.next_page_para_name = AAZStrArg( + options=["next-page-para-name"], + help="Defines the name of a next page attribute", + ) + paging.next_page_token_json_path = AAZStrArg( + options=["next-page-token-json-path"], + help="Defines the path to a next page token JSON", + ) + paging.page_count_attribute_path = AAZStrArg( + options=["page-count-attribute-path"], + help="Defines the path to a page count attribute", + ) + paging.page_size = AAZIntArg( + options=["page-size"], + help="Defines the paging size", + ) + paging.page_size_para_name = AAZStrArg( + options=["page-size-para-name"], + help="Defines the name of the page size parameter", + ) + paging.page_time_stamp_attribute_path = AAZStrArg( + options=["page-time-stamp-attribute-path"], + help="Defines the path to a paging time stamp attribute", + ) + paging.page_total_count_attribute_path = AAZStrArg( + options=["page-total-count-attribute-path"], + help="Defines the path to a page total count attribute", + ) + paging.paging_type = AAZStrArg( + options=["paging-type"], + help="Describes the type. could be 'None', 'PageToken', 'PageCount', 'TimeStamp'", + required=True, + ) + paging.search_the_latest_time_stamp_from_events_list = AAZStrArg( + options=["search-the-latest-time-stamp-from-events-list"], + help="Determines whether to search for the latest time stamp in the events list", + ) + + request = cls._args_schema.api_polling.polling_config.request + request.api_endpoint = AAZStrArg( + options=["api-endpoint"], + help="Describe the endpoint we should pull the data from", + required=True, + ) + request.end_time_attribute_name = AAZStrArg( + options=["end-time-attribute-name"], + help="This will be used the query events from the end of the time window", + ) + request.http_method = AAZStrArg( + options=["http-method"], + help="The http method type we will use in the poll request, GET or POST", + required=True, + ) + request.query_parameters_template = AAZStrArg( + options=["query-parameters-template"], + help="For advanced scenarios for example user name/password embedded in nested JSON payload", + ) + request.query_time_format = AAZStrArg( + options=["query-time-format"], + help="The time format will be used the query events in a specific window", + required=True, + ) + request.query_window_in_min = AAZIntArg( + options=["query-window-in-min"], + help="The window interval we will use the pull the data", + required=True, + ) + request.rate_limit_qps = AAZIntArg( + options=["rate-limit-qps"], + help="Defines the rate limit QPS", + ) + request.retry_count = AAZIntArg( + options=["retry-count"], + help="Describe the amount of time we should try and poll the data in case of failure", + ) + request.start_time_attribute_name = AAZStrArg( + options=["start-time-attribute-name"], + help="This will be used the query events from a start of the time window", + ) + request.timeout_in_seconds = AAZIntArg( + options=["timeout-in-seconds"], + help="The number of seconds we will consider as a request timeout", + ) + + response = cls._args_schema.api_polling.polling_config.response + response.events_json_paths = AAZListArg( + options=["events-json-paths"], + help="Describes the path we should extract the data in the response", + required=True, + ) + response.is_gzip_compressed = AAZBoolArg( + options=["is-gzip-compressed"], + help="Describes if the data in the response is Gzip", + ) + response.success_status_json_path = AAZStrArg( + options=["success-status-json-path"], + help="Describes the path we should extract the status code in the response", + ) + response.success_status_value = AAZStrArg( + options=["success-status-value"], + help="Describes the path we should extract the status value in the response", + ) + + events_json_paths = cls._args_schema.api_polling.polling_config.response.events_json_paths + events_json_paths.Element = AAZStrArg() + + aws_cloud_trail = cls._args_schema.aws_cloud_trail + aws_cloud_trail.aws_role_arn = AAZStrArg( + options=["aws-role-arn"], + help="The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access the Aws account.", + ) + aws_cloud_trail.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + + data_types = cls._args_schema.aws_cloud_trail.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + required=True, + ) + + logs = cls._args_schema.aws_cloud_trail.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + aws_s3 = cls._args_schema.aws_s3 + aws_s3.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + aws_s3.destination_table = AAZStrArg( + options=["destination-table"], + help="The logs destination table name in LogAnalytics.", + ) + aws_s3.role_arn = AAZStrArg( + options=["role-arn"], + help="The Aws Role Arn that is used to access the Aws account.", + ) + aws_s3.sqs_urls = AAZListArg( + options=["sqs-urls"], + help="The AWS sqs urls for the connector.", + ) + + data_types = cls._args_schema.aws_s3.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + required=True, + ) + + logs = cls._args_schema.aws_s3.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + sqs_urls = cls._args_schema.aws_s3.sqs_urls + sqs_urls.Element = AAZStrArg() + + azure_active_directory = cls._args_schema.azure_active_directory + azure_active_directory.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cls._build_args_alerts_data_type_of_data_connector_create(azure_active_directory.data_types) + azure_active_directory.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + azure_protection = cls._args_schema.azure_protection + azure_protection.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cls._build_args_alerts_data_type_of_data_connector_create(azure_protection.data_types) + azure_protection.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + azure_security_center = cls._args_schema.azure_security_center + azure_security_center.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cls._build_args_alerts_data_type_of_data_connector_create(azure_security_center.data_types) + azure_security_center.subscription_id = AAZStrArg( + options=["subscription-id"], + help="The subscription id to connect to, and get the data from.", + ) + + dynamics365 = cls._args_schema.dynamics365 + dynamics365.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + dynamics365.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.dynamics365.data_types + data_types.dynamics365_cds_activities = AAZObjectArg( + options=["dynamics365-cds-activities"], + help="Common Data Service data type connection.", + required=True, + ) + + dynamics365_cds_activities = cls._args_schema.dynamics365.data_types.dynamics365_cds_activities + dynamics365_cds_activities.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + generic_ui = cls._args_schema.generic_ui + generic_ui.connector_ui_config = AAZObjectArg( + options=["connector-ui-config"], + help="Config to describe the instructions blade", + ) + cls._build_args_codeless_ui_connector_config_properties_create(generic_ui.connector_ui_config) + + iot = cls._args_schema.iot + iot.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cls._build_args_alerts_data_type_of_data_connector_create(iot.data_types) + iot.subscription_id = AAZStrArg( + options=["subscription-id"], + help="The subscription id to connect to, and get the data from.", + ) + + cloud_app_security = cls._args_schema.cloud_app_security + cloud_app_security.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cloud_app_security.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.cloud_app_security.data_types + data_types.alerts = AAZObjectArg( + options=["alerts"], + help="Alerts data type connection.", + required=True, + ) + cls._build_args_data_connector_data_type_common_create(data_types.alerts) + data_types.discovery_logs = AAZObjectArg( + options=["discovery-logs"], + help="Discovery log data type connection.", + ) + cls._build_args_data_connector_data_type_common_create(data_types.discovery_logs) + + defender_protection = cls._args_schema.defender_protection + defender_protection.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cls._build_args_alerts_data_type_of_data_connector_create(defender_protection.data_types) + defender_protection.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + microsoft_intelligence = cls._args_schema.microsoft_intelligence + microsoft_intelligence.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + microsoft_intelligence.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.microsoft_intelligence.data_types + data_types.bing_safety_phishing_url = AAZObjectArg( + options=["bing-safety-phishing-url"], + help="Data type for Microsoft Threat Intelligence Platforms data connector.", + required=True, + ) + data_types.microsoft_emerging_threat_feed = AAZObjectArg( + options=["microsoft-emerging-threat-feed"], + help="Data type for Microsoft Threat Intelligence Platforms data connector.", + required=True, + ) + + bing_safety_phishing_url = cls._args_schema.microsoft_intelligence.data_types.bing_safety_phishing_url + bing_safety_phishing_url.lookback_period = AAZStrArg( + options=["lookback-period"], + help="lookback period", + required=True, + ) + bing_safety_phishing_url.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + microsoft_emerging_threat_feed = cls._args_schema.microsoft_intelligence.data_types.microsoft_emerging_threat_feed + microsoft_emerging_threat_feed.lookback_period = AAZStrArg( + options=["lookback-period"], + help="lookback period", + required=True, + ) + microsoft_emerging_threat_feed.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + microsoft_protection = cls._args_schema.microsoft_protection + microsoft_protection.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + microsoft_protection.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.microsoft_protection.data_types + data_types.incidents = AAZObjectArg( + options=["incidents"], + help="Data type for Microsoft Threat Protection Platforms data connector.", + required=True, + ) + + incidents = cls._args_schema.microsoft_protection.data_types.incidents + incidents.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + office365 = cls._args_schema.office365 + office365.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + office365.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.office365.data_types + data_types.exchange = AAZObjectArg( + options=["exchange"], + help="Exchange data type connection.", + required=True, + ) + data_types.share_point = AAZObjectArg( + options=["share-point"], + help="SharePoint data type connection.", + required=True, + ) + data_types.teams = AAZObjectArg( + options=["teams"], + help="Teams data type connection.", + required=True, + ) + + exchange = cls._args_schema.office365.data_types.exchange + exchange.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + share_point = cls._args_schema.office365.data_types.share_point + share_point.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + teams = cls._args_schema.office365.data_types.teams + teams.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + office365_project = cls._args_schema.office365_project + office365_project.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + office365_project.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.office365_project.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + required=True, + ) + + logs = cls._args_schema.office365_project.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + office_atp = cls._args_schema.office_atp + office_atp.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cls._build_args_alerts_data_type_of_data_connector_create(office_atp.data_types) + office_atp.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + office_irm = cls._args_schema.office_irm + office_irm.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cls._build_args_alerts_data_type_of_data_connector_create(office_irm.data_types) + office_irm.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + office_power_bi = cls._args_schema.office_power_bi + office_power_bi.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + office_power_bi.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.office_power_bi.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + required=True, + ) + + logs = cls._args_schema.office_power_bi.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + threat_intelligence = cls._args_schema.threat_intelligence + threat_intelligence.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + threat_intelligence.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + threat_intelligence.tip_lookback_period = AAZStrArg( + options=["tip-lookback-period"], + help="The lookback period for the feed to be imported.", + nullable=True, + ) + + data_types = cls._args_schema.threat_intelligence.data_types + data_types.indicators = AAZObjectArg( + options=["indicators"], + help="Data type for indicators connection.", + required=True, + ) + + indicators = cls._args_schema.threat_intelligence.data_types.indicators + indicators.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + intelligence_taxii = cls._args_schema.intelligence_taxii + intelligence_taxii.collection_id = AAZStrArg( + options=["collection-id"], + help="The collection id of the TAXII server.", + ) + intelligence_taxii.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for Threat Intelligence TAXII data connector.", + ) + intelligence_taxii.friendly_name = AAZStrArg( + options=["friendly-name"], + help="The friendly name for the TAXII server.", + ) + intelligence_taxii.password = AAZStrArg( + options=["password"], + help="The password for the TAXII server.", + ) + intelligence_taxii.polling_frequency = AAZStrArg( + options=["polling-frequency"], + help="The polling frequency for the TAXII server.", + nullable=True, + enum={"OnceADay": "OnceADay", "OnceAMinute": "OnceAMinute", "OnceAnHour": "OnceAnHour"}, + ) + intelligence_taxii.taxii_lookback_period = AAZStrArg( + options=["taxii-lookback-period"], + help="The lookback period for the TAXII server.", + nullable=True, + ) + intelligence_taxii.taxii_server = AAZStrArg( + options=["taxii-server"], + help="The API root for the TAXII server.", + ) + intelligence_taxii.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + intelligence_taxii.user_name = AAZStrArg( + options=["user-name"], + help="The userName for the TAXII server.", + ) + intelligence_taxii.workspace_id = AAZStrArg( + options=["workspace-id"], + help="The workspace id.", + ) + + data_types = cls._args_schema.intelligence_taxii.data_types + data_types.taxii_client = AAZObjectArg( + options=["taxii-client"], + help="Data type for TAXII connector.", + required=True, + ) + + taxii_client = cls._args_schema.intelligence_taxii.data_types.taxii_client + taxii_client.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + return cls._args_schema + + _args_alerts_data_type_of_data_connector_create = None + + @classmethod + def _build_args_alerts_data_type_of_data_connector_create(cls, _schema): + if cls._args_alerts_data_type_of_data_connector_create is not None: + _schema.alerts = cls._args_alerts_data_type_of_data_connector_create.alerts + return + + cls._args_alerts_data_type_of_data_connector_create = AAZObjectArg() + + alerts_data_type_of_data_connector_create = cls._args_alerts_data_type_of_data_connector_create + alerts_data_type_of_data_connector_create.alerts = AAZObjectArg( + options=["alerts"], + help="Alerts data type connection.", + required=True, + ) + cls._build_args_data_connector_data_type_common_create(alerts_data_type_of_data_connector_create.alerts) + + _schema.alerts = cls._args_alerts_data_type_of_data_connector_create.alerts + + _args_codeless_ui_connector_config_properties_create = None + + @classmethod + def _build_args_codeless_ui_connector_config_properties_create(cls, _schema): + if cls._args_codeless_ui_connector_config_properties_create is not None: + _schema.availability = cls._args_codeless_ui_connector_config_properties_create.availability + _schema.connectivity_criteria = cls._args_codeless_ui_connector_config_properties_create.connectivity_criteria + _schema.custom_image = cls._args_codeless_ui_connector_config_properties_create.custom_image + _schema.data_types = cls._args_codeless_ui_connector_config_properties_create.data_types + _schema.description_markdown = cls._args_codeless_ui_connector_config_properties_create.description_markdown + _schema.graph_queries = cls._args_codeless_ui_connector_config_properties_create.graph_queries + _schema.graph_queries_table_name = cls._args_codeless_ui_connector_config_properties_create.graph_queries_table_name + _schema.instruction_steps = cls._args_codeless_ui_connector_config_properties_create.instruction_steps + _schema.permissions = cls._args_codeless_ui_connector_config_properties_create.permissions + _schema.publisher = cls._args_codeless_ui_connector_config_properties_create.publisher + _schema.sample_queries = cls._args_codeless_ui_connector_config_properties_create.sample_queries + _schema.title = cls._args_codeless_ui_connector_config_properties_create.title + return + + cls._args_codeless_ui_connector_config_properties_create = AAZObjectArg() + + codeless_ui_connector_config_properties_create = cls._args_codeless_ui_connector_config_properties_create + codeless_ui_connector_config_properties_create.availability = AAZObjectArg( + options=["availability"], + help="Connector Availability Status", + required=True, + ) + codeless_ui_connector_config_properties_create.connectivity_criteria = AAZListArg( + options=["connectivity-criteria"], + help="Define the way the connector check connectivity", + required=True, + ) + codeless_ui_connector_config_properties_create.custom_image = AAZStrArg( + options=["custom-image"], + help="An optional custom image to be used when displaying the connector within Azure Sentinel's connector's gallery", + ) + codeless_ui_connector_config_properties_create.data_types = AAZListArg( + options=["data-types"], + help="Data types to check for last data received", + required=True, + ) + codeless_ui_connector_config_properties_create.description_markdown = AAZStrArg( + options=["description-markdown"], + help="Connector description", + required=True, + ) + codeless_ui_connector_config_properties_create.graph_queries = AAZListArg( + options=["graph-queries"], + help="The graph query to show the current data status", + required=True, + ) + codeless_ui_connector_config_properties_create.graph_queries_table_name = AAZStrArg( + options=["graph-queries-table-name"], + help="Name of the table the connector will insert the data to", + required=True, + ) + codeless_ui_connector_config_properties_create.instruction_steps = AAZListArg( + options=["instruction-steps"], + help="Instruction steps to enable the connector", + required=True, + ) + codeless_ui_connector_config_properties_create.permissions = AAZObjectArg( + options=["permissions"], + help="Permissions required for the connector", + required=True, + ) + codeless_ui_connector_config_properties_create.publisher = AAZStrArg( + options=["publisher"], + help="Connector publisher name", + required=True, + ) + codeless_ui_connector_config_properties_create.sample_queries = AAZListArg( + options=["sample-queries"], + help="The sample queries for the connector", + required=True, + ) + codeless_ui_connector_config_properties_create.title = AAZStrArg( + options=["title"], + help="Connector blade title", + required=True, + ) + + availability = cls._args_codeless_ui_connector_config_properties_create.availability + availability.is_preview = AAZBoolArg( + options=["is-preview"], + help="Set connector as preview", + ) + availability.status = AAZIntArg( + options=["status"], + help="The connector Availability Status", + enum={"1": 1}, + ) + + connectivity_criteria = cls._args_codeless_ui_connector_config_properties_create.connectivity_criteria + connectivity_criteria.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.connectivity_criteria.Element + _element.type = AAZStrArg( + options=["type"], + help="type of connectivity", + enum={"IsConnectedQuery": "IsConnectedQuery"}, + ) + _element.value = AAZListArg( + options=["value"], + help="Queries for checking connectivity", + ) + + value = cls._args_codeless_ui_connector_config_properties_create.connectivity_criteria.Element.value + value.Element = AAZStrArg() + + data_types = cls._args_codeless_ui_connector_config_properties_create.data_types + data_types.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.data_types.Element + _element.last_data_received_query = AAZStrArg( + options=["last-data-received-query"], + help="Query for indicate last data received", + ) + _element.name = AAZStrArg( + options=["name"], + help="Name of the data type to show in the graph. can be use with {{graphQueriesTableName}} placeholder", + ) + + graph_queries = cls._args_codeless_ui_connector_config_properties_create.graph_queries + graph_queries.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.graph_queries.Element + _element.base_query = AAZStrArg( + options=["base-query"], + help="The base query for the graph", + ) + _element.legend = AAZStrArg( + options=["legend"], + help="The legend for the graph", + ) + _element.metric_name = AAZStrArg( + options=["metric-name"], + help="the metric that the query is checking", + ) + + instruction_steps = cls._args_codeless_ui_connector_config_properties_create.instruction_steps + instruction_steps.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.instruction_steps.Element + _element.description = AAZStrArg( + options=["description"], + help="Instruction step description", + ) + _element.instructions = AAZListArg( + options=["instructions"], + help="Instruction step details", + ) + _element.title = AAZStrArg( + options=["title"], + help="Instruction step title", + ) + + instructions = cls._args_codeless_ui_connector_config_properties_create.instruction_steps.Element.instructions + instructions.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.instruction_steps.Element.instructions.Element + _element.type = AAZStrArg( + options=["type"], + help="The kind of the setting", + required=True, + enum={"CopyableLabel": "CopyableLabel", "InfoMessage": "InfoMessage", "InstructionStepsGroup": "InstructionStepsGroup"}, + ) + + permissions = cls._args_codeless_ui_connector_config_properties_create.permissions + permissions.customs = AAZListArg( + options=["customs"], + help="Customs permissions required for the connector", + ) + permissions.resource_provider = AAZListArg( + options=["resource-provider"], + help="Resource provider permissions required for the connector", + ) + + customs = cls._args_codeless_ui_connector_config_properties_create.permissions.customs + customs.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.permissions.customs.Element + _element.description = AAZStrArg( + options=["description"], + help="Customs permissions description", + ) + _element.name = AAZStrArg( + options=["name"], + help="Customs permissions name", + ) + + resource_provider = cls._args_codeless_ui_connector_config_properties_create.permissions.resource_provider + resource_provider.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.permissions.resource_provider.Element + _element.permissions_display_text = AAZStrArg( + options=["permissions-display-text"], + help="Permission description text", + ) + _element.provider = AAZStrArg( + options=["provider"], + help="Provider name", + enum={"Microsoft.Authorization/policyAssignments": "Microsoft.Authorization/policyAssignments", "Microsoft.OperationalInsights/solutions": "Microsoft.OperationalInsights/solutions", "Microsoft.OperationalInsights/workspaces": "Microsoft.OperationalInsights/workspaces", "Microsoft.OperationalInsights/workspaces/datasources": "Microsoft.OperationalInsights/workspaces/datasources", "Microsoft.OperationalInsights/workspaces/sharedKeys": "Microsoft.OperationalInsights/workspaces/sharedKeys", "microsoft.aadiam/diagnosticSettings": "microsoft.aadiam/diagnosticSettings"}, + ) + _element.provider_display_name = AAZStrArg( + options=["provider-display-name"], + help="Permission provider display name", + ) + _element.required_permissions = AAZObjectArg( + options=["required-permissions"], + help="Required permissions for the connector", + ) + _element.scope = AAZStrArg( + options=["scope"], + help="Permission provider scope", + enum={"ResourceGroup": "ResourceGroup", "Subscription": "Subscription", "Workspace": "Workspace"}, + ) + + required_permissions = cls._args_codeless_ui_connector_config_properties_create.permissions.resource_provider.Element.required_permissions + required_permissions.action = AAZBoolArg( + options=["action"], + help="action permission", + ) + required_permissions.delete = AAZBoolArg( + options=["delete"], + help="delete permission", + ) + required_permissions.read = AAZBoolArg( + options=["read"], + help="read permission", + ) + required_permissions.write = AAZBoolArg( + options=["write"], + help="write permission", + ) + + sample_queries = cls._args_codeless_ui_connector_config_properties_create.sample_queries + sample_queries.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_create.sample_queries.Element + _element.description = AAZStrArg( + options=["description"], + help="The sample query description", + ) + _element.query = AAZStrArg( + options=["query"], + help="the sample query", + ) + + _schema.availability = cls._args_codeless_ui_connector_config_properties_create.availability + _schema.connectivity_criteria = cls._args_codeless_ui_connector_config_properties_create.connectivity_criteria + _schema.custom_image = cls._args_codeless_ui_connector_config_properties_create.custom_image + _schema.data_types = cls._args_codeless_ui_connector_config_properties_create.data_types + _schema.description_markdown = cls._args_codeless_ui_connector_config_properties_create.description_markdown + _schema.graph_queries = cls._args_codeless_ui_connector_config_properties_create.graph_queries + _schema.graph_queries_table_name = cls._args_codeless_ui_connector_config_properties_create.graph_queries_table_name + _schema.instruction_steps = cls._args_codeless_ui_connector_config_properties_create.instruction_steps + _schema.permissions = cls._args_codeless_ui_connector_config_properties_create.permissions + _schema.publisher = cls._args_codeless_ui_connector_config_properties_create.publisher + _schema.sample_queries = cls._args_codeless_ui_connector_config_properties_create.sample_queries + _schema.title = cls._args_codeless_ui_connector_config_properties_create.title + + _args_data_connector_data_type_common_create = None + + @classmethod + def _build_args_data_connector_data_type_common_create(cls, _schema): + if cls._args_data_connector_data_type_common_create is not None: + _schema.state = cls._args_data_connector_data_type_common_create.state + return + + cls._args_data_connector_data_type_common_create = AAZObjectArg() + + data_connector_data_type_common_create = cls._args_data_connector_data_type_common_create + data_connector_data_type_common_create.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + required=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + _schema.state = cls._args_data_connector_data_type_common_create.state + + def _execute_operations(self): + self.DataConnectorsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class DataConnectorsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "dataConnectorId", self.ctx.args.data_connector_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "APIPolling", AAZStrType, ".api_polling", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AmazonWebServicesCloudTrail", AAZStrType, ".aws_cloud_trail", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AmazonWebServicesS3", AAZStrType, ".aws_s3", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AzureActiveDirectory", AAZStrType, ".azure_active_directory", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AzureAdvancedThreatProtection", AAZStrType, ".azure_protection", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AzureSecurityCenter", AAZStrType, ".azure_security_center", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Dynamics365", AAZStrType, ".dynamics365", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "GenericUI", AAZStrType, ".generic_ui", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "IOT", AAZStrType, ".iot", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftCloudAppSecurity", AAZStrType, ".cloud_app_security", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftDefenderAdvancedThreatProtection", AAZStrType, ".defender_protection", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftThreatIntelligence", AAZStrType, ".microsoft_intelligence", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftThreatProtection", AAZStrType, ".microsoft_protection", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Office365", AAZStrType, ".office365", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Office365Project", AAZStrType, ".office365_project", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "OfficeATP", AAZStrType, ".office_atp", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "OfficeIRM", AAZStrType, ".office_irm", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "OfficePowerBI", AAZStrType, ".office_power_bi", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "ThreatIntelligence", AAZStrType, ".threat_intelligence", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "ThreatIntelligenceTaxii", AAZStrType, ".intelligence_taxii", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "APIPolling") + _builder.discriminate_by("kind", "AmazonWebServicesCloudTrail") + _builder.discriminate_by("kind", "AmazonWebServicesS3") + _builder.discriminate_by("kind", "AzureActiveDirectory") + _builder.discriminate_by("kind", "AzureAdvancedThreatProtection") + _builder.discriminate_by("kind", "AzureSecurityCenter") + _builder.discriminate_by("kind", "Dynamics365") + _builder.discriminate_by("kind", "GenericUI") + _builder.discriminate_by("kind", "IOT") + _builder.discriminate_by("kind", "MicrosoftCloudAppSecurity") + _builder.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection") + _builder.discriminate_by("kind", "MicrosoftThreatIntelligence") + _builder.discriminate_by("kind", "MicrosoftThreatProtection") + _builder.discriminate_by("kind", "Office365") + _builder.discriminate_by("kind", "Office365Project") + _builder.discriminate_by("kind", "OfficeATP") + _builder.discriminate_by("kind", "OfficeIRM") + _builder.discriminate_by("kind", "OfficePowerBI") + _builder.discriminate_by("kind", "ThreatIntelligence") + _builder.discriminate_by("kind", "ThreatIntelligenceTaxii") + + disc_api_polling = _builder.get("{kind:APIPolling}") + if disc_api_polling is not None: + disc_api_polling.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:APIPolling}.properties") + if properties is not None: + _build_schema_codeless_ui_connector_config_properties_create(properties.set_prop("connectorUiConfig", AAZObjectType, ".api_polling.connector_ui_config")) + properties.set_prop("pollingConfig", AAZObjectType, ".api_polling.polling_config") + + polling_config = _builder.get("{kind:APIPolling}.properties.pollingConfig") + if polling_config is not None: + polling_config.set_prop("auth", AAZObjectType, ".auth", typ_kwargs={"flags": {"required": True}}) + polling_config.set_prop("isActive", AAZBoolType, ".is_active") + polling_config.set_prop("paging", AAZObjectType, ".paging") + polling_config.set_prop("request", AAZObjectType, ".request", typ_kwargs={"flags": {"required": True}}) + polling_config.set_prop("response", AAZObjectType, ".response") + + auth = _builder.get("{kind:APIPolling}.properties.pollingConfig.auth") + if auth is not None: + auth.set_prop("apiKeyIdentifier", AAZStrType, ".api_key_identifier") + auth.set_prop("apiKeyName", AAZStrType, ".api_key_name") + auth.set_prop("authType", AAZStrType, ".auth_type", typ_kwargs={"flags": {"required": True}}) + auth.set_prop("authorizationEndpoint", AAZStrType, ".authorization_endpoint") + auth.set_prop("flowName", AAZStrType, ".flow_name") + auth.set_prop("isApiKeyInPostPayload", AAZStrType, ".is_api_key_in_post_payload") + auth.set_prop("isClientSecretInHeader", AAZBoolType, ".is_client_secret_in_header") + auth.set_prop("redirectionEndpoint", AAZStrType, ".redirection_endpoint") + auth.set_prop("scope", AAZStrType, ".scope") + auth.set_prop("tokenEndpoint", AAZStrType, ".token_endpoint") + + paging = _builder.get("{kind:APIPolling}.properties.pollingConfig.paging") + if paging is not None: + paging.set_prop("nextPageParaName", AAZStrType, ".next_page_para_name") + paging.set_prop("nextPageTokenJsonPath", AAZStrType, ".next_page_token_json_path") + paging.set_prop("pageCountAttributePath", AAZStrType, ".page_count_attribute_path") + paging.set_prop("pageSize", AAZIntType, ".page_size") + paging.set_prop("pageSizeParaName", AAZStrType, ".page_size_para_name") + paging.set_prop("pageTimeStampAttributePath", AAZStrType, ".page_time_stamp_attribute_path") + paging.set_prop("pageTotalCountAttributePath", AAZStrType, ".page_total_count_attribute_path") + paging.set_prop("pagingType", AAZStrType, ".paging_type", typ_kwargs={"flags": {"required": True}}) + paging.set_prop("searchTheLatestTimeStampFromEventsList", AAZStrType, ".search_the_latest_time_stamp_from_events_list") + + request = _builder.get("{kind:APIPolling}.properties.pollingConfig.request") + if request is not None: + request.set_prop("apiEndpoint", AAZStrType, ".api_endpoint", typ_kwargs={"flags": {"required": True}}) + request.set_prop("endTimeAttributeName", AAZStrType, ".end_time_attribute_name") + request.set_prop("httpMethod", AAZStrType, ".http_method", typ_kwargs={"flags": {"required": True}}) + request.set_prop("queryParametersTemplate", AAZStrType, ".query_parameters_template") + request.set_prop("queryTimeFormat", AAZStrType, ".query_time_format", typ_kwargs={"flags": {"required": True}}) + request.set_prop("queryWindowInMin", AAZIntType, ".query_window_in_min", typ_kwargs={"flags": {"required": True}}) + request.set_prop("rateLimitQps", AAZIntType, ".rate_limit_qps") + request.set_prop("retryCount", AAZIntType, ".retry_count") + request.set_prop("startTimeAttributeName", AAZStrType, ".start_time_attribute_name") + request.set_prop("timeoutInSeconds", AAZIntType, ".timeout_in_seconds") + + response = _builder.get("{kind:APIPolling}.properties.pollingConfig.response") + if response is not None: + response.set_prop("eventsJsonPaths", AAZListType, ".events_json_paths", typ_kwargs={"flags": {"required": True}}) + response.set_prop("isGzipCompressed", AAZBoolType, ".is_gzip_compressed") + response.set_prop("successStatusJsonPath", AAZStrType, ".success_status_json_path") + response.set_prop("successStatusValue", AAZStrType, ".success_status_value") + + events_json_paths = _builder.get("{kind:APIPolling}.properties.pollingConfig.response.eventsJsonPaths") + if events_json_paths is not None: + events_json_paths.set_elements(AAZStrType, ".") + + disc_amazon_web_services_cloud_trail = _builder.get("{kind:AmazonWebServicesCloudTrail}") + if disc_amazon_web_services_cloud_trail is not None: + disc_amazon_web_services_cloud_trail.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AmazonWebServicesCloudTrail}.properties") + if properties is not None: + properties.set_prop("awsRoleArn", AAZStrType, ".aws_cloud_trail.aws_role_arn") + properties.set_prop("dataTypes", AAZObjectType, ".aws_cloud_trail.data_types", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:AmazonWebServicesCloudTrail}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:AmazonWebServicesCloudTrail}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_amazon_web_services_s3 = _builder.get("{kind:AmazonWebServicesS3}") + if disc_amazon_web_services_s3 is not None: + disc_amazon_web_services_s3.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AmazonWebServicesS3}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".aws_s3.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("destinationTable", AAZStrType, ".aws_s3.destination_table", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("roleArn", AAZStrType, ".aws_s3.role_arn", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("sqsUrls", AAZListType, ".aws_s3.sqs_urls", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:AmazonWebServicesS3}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:AmazonWebServicesS3}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + sqs_urls = _builder.get("{kind:AmazonWebServicesS3}.properties.sqsUrls") + if sqs_urls is not None: + sqs_urls.set_elements(AAZStrType, ".") + + disc_azure_active_directory = _builder.get("{kind:AzureActiveDirectory}") + if disc_azure_active_directory is not None: + disc_azure_active_directory.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AzureActiveDirectory}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_create(properties.set_prop("dataTypes", AAZObjectType, ".azure_active_directory.data_types")) + properties.set_prop("tenantId", AAZStrType, ".azure_active_directory.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_azure_advanced_threat_protection = _builder.get("{kind:AzureAdvancedThreatProtection}") + if disc_azure_advanced_threat_protection is not None: + disc_azure_advanced_threat_protection.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AzureAdvancedThreatProtection}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_create(properties.set_prop("dataTypes", AAZObjectType, ".azure_protection.data_types")) + properties.set_prop("tenantId", AAZStrType, ".azure_protection.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_azure_security_center = _builder.get("{kind:AzureSecurityCenter}") + if disc_azure_security_center is not None: + disc_azure_security_center.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AzureSecurityCenter}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_create(properties.set_prop("dataTypes", AAZObjectType, ".azure_security_center.data_types")) + properties.set_prop("subscriptionId", AAZStrType, ".azure_security_center.subscription_id") + + disc_dynamics365 = _builder.get("{kind:Dynamics365}") + if disc_dynamics365 is not None: + disc_dynamics365.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Dynamics365}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".dynamics365.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".dynamics365.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:Dynamics365}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("dynamics365CdsActivities", AAZObjectType, ".dynamics365_cds_activities", typ_kwargs={"flags": {"required": True}}) + + dynamics365_cds_activities = _builder.get("{kind:Dynamics365}.properties.dataTypes.dynamics365CdsActivities") + if dynamics365_cds_activities is not None: + dynamics365_cds_activities.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_generic_ui = _builder.get("{kind:GenericUI}") + if disc_generic_ui is not None: + disc_generic_ui.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:GenericUI}.properties") + if properties is not None: + _build_schema_codeless_ui_connector_config_properties_create(properties.set_prop("connectorUiConfig", AAZObjectType, ".generic_ui.connector_ui_config")) + + disc_iot = _builder.get("{kind:IOT}") + if disc_iot is not None: + disc_iot.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:IOT}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_create(properties.set_prop("dataTypes", AAZObjectType, ".iot.data_types")) + properties.set_prop("subscriptionId", AAZStrType, ".iot.subscription_id") + + disc_microsoft_cloud_app_security = _builder.get("{kind:MicrosoftCloudAppSecurity}") + if disc_microsoft_cloud_app_security is not None: + disc_microsoft_cloud_app_security.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftCloudAppSecurity}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".cloud_app_security.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".cloud_app_security.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:MicrosoftCloudAppSecurity}.properties.dataTypes") + if data_types is not None: + _build_schema_data_connector_data_type_common_create(data_types.set_prop("alerts", AAZObjectType, ".alerts", typ_kwargs={"flags": {"required": True}})) + _build_schema_data_connector_data_type_common_create(data_types.set_prop("discoveryLogs", AAZObjectType, ".discovery_logs")) + + disc_microsoft_defender_advanced_threat_protection = _builder.get("{kind:MicrosoftDefenderAdvancedThreatProtection}") + if disc_microsoft_defender_advanced_threat_protection is not None: + disc_microsoft_defender_advanced_threat_protection.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftDefenderAdvancedThreatProtection}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_create(properties.set_prop("dataTypes", AAZObjectType, ".defender_protection.data_types")) + properties.set_prop("tenantId", AAZStrType, ".defender_protection.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_microsoft_threat_intelligence = _builder.get("{kind:MicrosoftThreatIntelligence}") + if disc_microsoft_threat_intelligence is not None: + disc_microsoft_threat_intelligence.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftThreatIntelligence}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".microsoft_intelligence.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".microsoft_intelligence.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:MicrosoftThreatIntelligence}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("bingSafetyPhishingURL", AAZObjectType, ".bing_safety_phishing_url", typ_kwargs={"flags": {"required": True}}) + data_types.set_prop("microsoftEmergingThreatFeed", AAZObjectType, ".microsoft_emerging_threat_feed", typ_kwargs={"flags": {"required": True}}) + + bing_safety_phishing_url = _builder.get("{kind:MicrosoftThreatIntelligence}.properties.dataTypes.bingSafetyPhishingURL") + if bing_safety_phishing_url is not None: + bing_safety_phishing_url.set_prop("lookbackPeriod", AAZStrType, ".lookback_period", typ_kwargs={"flags": {"required": True}}) + bing_safety_phishing_url.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + microsoft_emerging_threat_feed = _builder.get("{kind:MicrosoftThreatIntelligence}.properties.dataTypes.microsoftEmergingThreatFeed") + if microsoft_emerging_threat_feed is not None: + microsoft_emerging_threat_feed.set_prop("lookbackPeriod", AAZStrType, ".lookback_period", typ_kwargs={"flags": {"required": True}}) + microsoft_emerging_threat_feed.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_microsoft_threat_protection = _builder.get("{kind:MicrosoftThreatProtection}") + if disc_microsoft_threat_protection is not None: + disc_microsoft_threat_protection.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftThreatProtection}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".microsoft_protection.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".microsoft_protection.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:MicrosoftThreatProtection}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("incidents", AAZObjectType, ".incidents", typ_kwargs={"flags": {"required": True}}) + + incidents = _builder.get("{kind:MicrosoftThreatProtection}.properties.dataTypes.incidents") + if incidents is not None: + incidents.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_office365 = _builder.get("{kind:Office365}") + if disc_office365 is not None: + disc_office365.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Office365}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".office365.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".office365.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:Office365}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("exchange", AAZObjectType, ".exchange", typ_kwargs={"flags": {"required": True}}) + data_types.set_prop("sharePoint", AAZObjectType, ".share_point", typ_kwargs={"flags": {"required": True}}) + data_types.set_prop("teams", AAZObjectType, ".teams", typ_kwargs={"flags": {"required": True}}) + + exchange = _builder.get("{kind:Office365}.properties.dataTypes.exchange") + if exchange is not None: + exchange.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + share_point = _builder.get("{kind:Office365}.properties.dataTypes.sharePoint") + if share_point is not None: + share_point.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + teams = _builder.get("{kind:Office365}.properties.dataTypes.teams") + if teams is not None: + teams.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_office365_project = _builder.get("{kind:Office365Project}") + if disc_office365_project is not None: + disc_office365_project.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Office365Project}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".office365_project.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".office365_project.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:Office365Project}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:Office365Project}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_office_atp = _builder.get("{kind:OfficeATP}") + if disc_office_atp is not None: + disc_office_atp.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:OfficeATP}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_create(properties.set_prop("dataTypes", AAZObjectType, ".office_atp.data_types")) + properties.set_prop("tenantId", AAZStrType, ".office_atp.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_office_irm = _builder.get("{kind:OfficeIRM}") + if disc_office_irm is not None: + disc_office_irm.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:OfficeIRM}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_create(properties.set_prop("dataTypes", AAZObjectType, ".office_irm.data_types")) + properties.set_prop("tenantId", AAZStrType, ".office_irm.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_office_power_bi = _builder.get("{kind:OfficePowerBI}") + if disc_office_power_bi is not None: + disc_office_power_bi.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:OfficePowerBI}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".office_power_bi.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".office_power_bi.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:OfficePowerBI}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:OfficePowerBI}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_threat_intelligence = _builder.get("{kind:ThreatIntelligence}") + if disc_threat_intelligence is not None: + disc_threat_intelligence.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:ThreatIntelligence}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".threat_intelligence.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".threat_intelligence.tenant_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tipLookbackPeriod", AAZStrType, ".threat_intelligence.tip_lookback_period", typ_kwargs={"nullable": True}) + + data_types = _builder.get("{kind:ThreatIntelligence}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("indicators", AAZObjectType, ".indicators", typ_kwargs={"flags": {"required": True}}) + + indicators = _builder.get("{kind:ThreatIntelligence}.properties.dataTypes.indicators") + if indicators is not None: + indicators.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_threat_intelligence_taxii = _builder.get("{kind:ThreatIntelligenceTaxii}") + if disc_threat_intelligence_taxii is not None: + disc_threat_intelligence_taxii.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:ThreatIntelligenceTaxii}.properties") + if properties is not None: + properties.set_prop("collectionId", AAZStrType, ".intelligence_taxii.collection_id") + properties.set_prop("dataTypes", AAZObjectType, ".intelligence_taxii.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("friendlyName", AAZStrType, ".intelligence_taxii.friendly_name") + properties.set_prop("password", AAZStrType, ".intelligence_taxii.password") + properties.set_prop("pollingFrequency", AAZStrType, ".intelligence_taxii.polling_frequency", typ_kwargs={"flags": {"required": True}, "nullable": True}) + properties.set_prop("taxiiLookbackPeriod", AAZStrType, ".intelligence_taxii.taxii_lookback_period", typ_kwargs={"nullable": True}) + properties.set_prop("taxiiServer", AAZStrType, ".intelligence_taxii.taxii_server") + properties.set_prop("tenantId", AAZStrType, ".intelligence_taxii.tenant_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("userName", AAZStrType, ".intelligence_taxii.user_name") + properties.set_prop("workspaceId", AAZStrType, ".intelligence_taxii.workspace_id") + + data_types = _builder.get("{kind:ThreatIntelligenceTaxii}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("taxiiClient", AAZObjectType, ".taxii_client", typ_kwargs={"flags": {"required": True}}) + + taxii_client = _builder.get("{kind:ThreatIntelligenceTaxii}.properties.dataTypes.taxiiClient") + if taxii_client is not None: + taxii_client.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_api_polling = cls._schema_on_200_201.discriminate_by("kind", "APIPolling") + disc_api_polling.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "APIPolling").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + properties.polling_config = AAZObjectType( + serialized_name="pollingConfig", + ) + + polling_config = cls._schema_on_200_201.discriminate_by("kind", "APIPolling").properties.polling_config + polling_config.auth = AAZObjectType( + flags={"required": True}, + ) + polling_config.is_active = AAZBoolType( + serialized_name="isActive", + ) + polling_config.paging = AAZObjectType() + polling_config.request = AAZObjectType( + flags={"required": True}, + ) + polling_config.response = AAZObjectType() + + auth = cls._schema_on_200_201.discriminate_by("kind", "APIPolling").properties.polling_config.auth + auth.api_key_identifier = AAZStrType( + serialized_name="apiKeyIdentifier", + ) + auth.api_key_name = AAZStrType( + serialized_name="apiKeyName", + ) + auth.auth_type = AAZStrType( + serialized_name="authType", + flags={"required": True}, + ) + auth.authorization_endpoint = AAZStrType( + serialized_name="authorizationEndpoint", + ) + auth.flow_name = AAZStrType( + serialized_name="flowName", + ) + auth.is_api_key_in_post_payload = AAZStrType( + serialized_name="isApiKeyInPostPayload", + ) + auth.is_client_secret_in_header = AAZBoolType( + serialized_name="isClientSecretInHeader", + ) + auth.redirection_endpoint = AAZStrType( + serialized_name="redirectionEndpoint", + ) + auth.scope = AAZStrType() + auth.token_endpoint = AAZStrType( + serialized_name="tokenEndpoint", + ) + + paging = cls._schema_on_200_201.discriminate_by("kind", "APIPolling").properties.polling_config.paging + paging.next_page_para_name = AAZStrType( + serialized_name="nextPageParaName", + ) + paging.next_page_token_json_path = AAZStrType( + serialized_name="nextPageTokenJsonPath", + ) + paging.page_count_attribute_path = AAZStrType( + serialized_name="pageCountAttributePath", + ) + paging.page_size = AAZIntType( + serialized_name="pageSize", + ) + paging.page_size_para_name = AAZStrType( + serialized_name="pageSizeParaName", + ) + paging.page_time_stamp_attribute_path = AAZStrType( + serialized_name="pageTimeStampAttributePath", + ) + paging.page_total_count_attribute_path = AAZStrType( + serialized_name="pageTotalCountAttributePath", + ) + paging.paging_type = AAZStrType( + serialized_name="pagingType", + flags={"required": True}, + ) + paging.search_the_latest_time_stamp_from_events_list = AAZStrType( + serialized_name="searchTheLatestTimeStampFromEventsList", + ) + + request = cls._schema_on_200_201.discriminate_by("kind", "APIPolling").properties.polling_config.request + request.api_endpoint = AAZStrType( + serialized_name="apiEndpoint", + flags={"required": True}, + ) + request.end_time_attribute_name = AAZStrType( + serialized_name="endTimeAttributeName", + ) + request.http_method = AAZStrType( + serialized_name="httpMethod", + flags={"required": True}, + ) + request.query_parameters_template = AAZStrType( + serialized_name="queryParametersTemplate", + ) + request.query_time_format = AAZStrType( + serialized_name="queryTimeFormat", + flags={"required": True}, + ) + request.query_window_in_min = AAZIntType( + serialized_name="queryWindowInMin", + flags={"required": True}, + ) + request.rate_limit_qps = AAZIntType( + serialized_name="rateLimitQps", + ) + request.retry_count = AAZIntType( + serialized_name="retryCount", + ) + request.start_time_attribute_name = AAZStrType( + serialized_name="startTimeAttributeName", + ) + request.timeout_in_seconds = AAZIntType( + serialized_name="timeoutInSeconds", + ) + + response = cls._schema_on_200_201.discriminate_by("kind", "APIPolling").properties.polling_config.response + response.events_json_paths = AAZListType( + serialized_name="eventsJsonPaths", + flags={"required": True}, + ) + response.is_gzip_compressed = AAZBoolType( + serialized_name="isGzipCompressed", + ) + response.success_status_json_path = AAZStrType( + serialized_name="successStatusJsonPath", + ) + response.success_status_value = AAZStrType( + serialized_name="successStatusValue", + ) + + events_json_paths = cls._schema_on_200_201.discriminate_by("kind", "APIPolling").properties.polling_config.response.events_json_paths + events_json_paths.Element = AAZStrType() + + disc_amazon_web_services_cloud_trail = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesCloudTrail") + disc_amazon_web_services_cloud_trail.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties + properties.aws_role_arn = AAZStrType( + serialized_name="awsRoleArn", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_amazon_web_services_s3 = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesS3") + disc_amazon_web_services_s3.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesS3").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.destination_table = AAZStrType( + serialized_name="destinationTable", + flags={"required": True}, + ) + properties.role_arn = AAZStrType( + serialized_name="roleArn", + flags={"required": True}, + ) + properties.sqs_urls = AAZListType( + serialized_name="sqsUrls", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + sqs_urls = cls._schema_on_200_201.discriminate_by("kind", "AmazonWebServicesS3").properties.sqs_urls + sqs_urls.Element = AAZStrType() + + disc_azure_active_directory = cls._schema_on_200_201.discriminate_by("kind", "AzureActiveDirectory") + disc_azure_active_directory.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "AzureActiveDirectory").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_advanced_threat_protection = cls._schema_on_200_201.discriminate_by("kind", "AzureAdvancedThreatProtection") + disc_azure_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "AzureAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_security_center = cls._schema_on_200_201.discriminate_by("kind", "AzureSecurityCenter") + disc_azure_security_center.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "AzureSecurityCenter").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_dynamics365 = cls._schema_on_200_201.discriminate_by("kind", "Dynamics365") + disc_dynamics365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Dynamics365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "Dynamics365").properties.data_types + data_types.dynamics365_cds_activities = AAZObjectType( + serialized_name="dynamics365CdsActivities", + flags={"required": True}, + ) + + dynamics365_cds_activities = cls._schema_on_200_201.discriminate_by("kind", "Dynamics365").properties.data_types.dynamics365_cds_activities + dynamics365_cds_activities.state = AAZStrType( + flags={"required": True}, + ) + + disc_generic_ui = cls._schema_on_200_201.discriminate_by("kind", "GenericUI") + disc_generic_ui.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "GenericUI").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + + disc_iot = cls._schema_on_200_201.discriminate_by("kind", "IOT") + disc_iot.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "IOT").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_microsoft_cloud_app_security = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftCloudAppSecurity") + disc_microsoft_cloud_app_security.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties.data_types + data_types.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(data_types.alerts) + data_types.discovery_logs = AAZObjectType( + serialized_name="discoveryLogs", + ) + _build_schema_data_connector_data_type_common_read(data_types.discovery_logs) + + disc_microsoft_defender_advanced_threat_protection = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection") + disc_microsoft_defender_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_microsoft_threat_intelligence = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatIntelligence") + disc_microsoft_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types + data_types.bing_safety_phishing_url = AAZObjectType( + serialized_name="bingSafetyPhishingURL", + flags={"required": True}, + ) + data_types.microsoft_emerging_threat_feed = AAZObjectType( + serialized_name="microsoftEmergingThreatFeed", + flags={"required": True}, + ) + + bing_safety_phishing_url = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.bing_safety_phishing_url + bing_safety_phishing_url.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + bing_safety_phishing_url.state = AAZStrType( + flags={"required": True}, + ) + + microsoft_emerging_threat_feed = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.microsoft_emerging_threat_feed + microsoft_emerging_threat_feed.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + microsoft_emerging_threat_feed.state = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_threat_protection = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatProtection") + disc_microsoft_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types + data_types.incidents = AAZObjectType( + flags={"required": True}, + ) + + incidents = cls._schema_on_200_201.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types.incidents + incidents.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365 = cls._schema_on_200_201.discriminate_by("kind", "Office365") + disc_office365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Office365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "Office365").properties.data_types + data_types.exchange = AAZObjectType( + flags={"required": True}, + ) + data_types.share_point = AAZObjectType( + serialized_name="sharePoint", + flags={"required": True}, + ) + data_types.teams = AAZObjectType( + flags={"required": True}, + ) + + exchange = cls._schema_on_200_201.discriminate_by("kind", "Office365").properties.data_types.exchange + exchange.state = AAZStrType( + flags={"required": True}, + ) + + share_point = cls._schema_on_200_201.discriminate_by("kind", "Office365").properties.data_types.share_point + share_point.state = AAZStrType( + flags={"required": True}, + ) + + teams = cls._schema_on_200_201.discriminate_by("kind", "Office365").properties.data_types.teams + teams.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365_project = cls._schema_on_200_201.discriminate_by("kind", "Office365Project") + disc_office365_project.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Office365Project").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "Office365Project").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200_201.discriminate_by("kind", "Office365Project").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_office_atp = cls._schema_on_200_201.discriminate_by("kind", "OfficeATP") + disc_office_atp.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "OfficeATP").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_irm = cls._schema_on_200_201.discriminate_by("kind", "OfficeIRM") + disc_office_irm.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "OfficeIRM").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_power_bi = cls._schema_on_200_201.discriminate_by("kind", "OfficePowerBI") + disc_office_power_bi.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "OfficePowerBI").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "OfficePowerBI").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200_201.discriminate_by("kind", "OfficePowerBI").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.tip_lookback_period = AAZStrType( + serialized_name="tipLookbackPeriod", + nullable=True, + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence").properties.data_types + data_types.indicators = AAZObjectType( + flags={"required": True}, + ) + + indicators = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligence").properties.data_types.indicators + indicators.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence_taxii = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligenceTaxii") + disc_threat_intelligence_taxii.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligenceTaxii").properties + properties.collection_id = AAZStrType( + serialized_name="collectionId", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + ) + properties.password = AAZStrType() + properties.polling_frequency = AAZStrType( + serialized_name="pollingFrequency", + flags={"required": True}, + nullable=True, + ) + properties.taxii_lookback_period = AAZStrType( + serialized_name="taxiiLookbackPeriod", + nullable=True, + ) + properties.taxii_server = AAZStrType( + serialized_name="taxiiServer", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.user_name = AAZStrType( + serialized_name="userName", + ) + properties.workspace_id = AAZStrType( + serialized_name="workspaceId", + ) + + data_types = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types + data_types.taxii_client = AAZObjectType( + serialized_name="taxiiClient", + flags={"required": True}, + ) + + taxii_client = cls._schema_on_200_201.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types.taxii_client + taxii_client.state = AAZStrType( + flags={"required": True}, + ) + + return cls._schema_on_200_201 + + +def _build_schema_alerts_data_type_of_data_connector_create(_builder): + if _builder is None: + return + _build_schema_data_connector_data_type_common_create(_builder.set_prop("alerts", AAZObjectType, ".alerts", typ_kwargs={"flags": {"required": True}})) + + +def _build_schema_codeless_ui_connector_config_properties_create(_builder): + if _builder is None: + return + _builder.set_prop("availability", AAZObjectType, ".availability", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("connectivityCriteria", AAZListType, ".connectivity_criteria", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("customImage", AAZStrType, ".custom_image") + _builder.set_prop("dataTypes", AAZListType, ".data_types", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("descriptionMarkdown", AAZStrType, ".description_markdown", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("graphQueries", AAZListType, ".graph_queries", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("graphQueriesTableName", AAZStrType, ".graph_queries_table_name", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("instructionSteps", AAZListType, ".instruction_steps", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("permissions", AAZObjectType, ".permissions", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("publisher", AAZStrType, ".publisher", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("sampleQueries", AAZListType, ".sample_queries", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("title", AAZStrType, ".title", typ_kwargs={"flags": {"required": True}}) + + availability = _builder.get(".availability") + if availability is not None: + availability.set_prop("isPreview", AAZBoolType, ".is_preview") + availability.set_prop("status", AAZIntType, ".status") + + connectivity_criteria = _builder.get(".connectivityCriteria") + if connectivity_criteria is not None: + connectivity_criteria.set_elements(AAZObjectType) + + _elements = _builder.get(".connectivityCriteria[]") + if _elements is not None: + _elements.set_prop("type", AAZStrType, "@CodelessUiConnectorConfigProperties_create.connectivity_criteria.[].type") + _elements.set_prop("value", AAZListType, "@CodelessUiConnectorConfigProperties_create.connectivity_criteria.[].value") + + value = _builder.get(".connectivityCriteria[].value") + if value is not None: + value.set_elements(AAZStrType, ".") + + data_types = _builder.get(".dataTypes") + if data_types is not None: + data_types.set_elements(AAZObjectType) + + _elements = _builder.get(".dataTypes[]") + if _elements is not None: + _elements.set_prop("lastDataReceivedQuery", AAZStrType, "@CodelessUiConnectorConfigProperties_create.data_types.[].last_data_received_query") + _elements.set_prop("name", AAZStrType, "@CodelessUiConnectorConfigProperties_create.data_types.[].name") + + graph_queries = _builder.get(".graphQueries") + if graph_queries is not None: + graph_queries.set_elements(AAZObjectType) + + _elements = _builder.get(".graphQueries[]") + if _elements is not None: + _elements.set_prop("baseQuery", AAZStrType, "@CodelessUiConnectorConfigProperties_create.graph_queries.[].base_query") + _elements.set_prop("legend", AAZStrType, "@CodelessUiConnectorConfigProperties_create.graph_queries.[].legend") + _elements.set_prop("metricName", AAZStrType, "@CodelessUiConnectorConfigProperties_create.graph_queries.[].metric_name") + + instruction_steps = _builder.get(".instructionSteps") + if instruction_steps is not None: + instruction_steps.set_elements(AAZObjectType) + + _elements = _builder.get(".instructionSteps[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, "@CodelessUiConnectorConfigProperties_create.instruction_steps.[].description") + _elements.set_prop("instructions", AAZListType, "@CodelessUiConnectorConfigProperties_create.instruction_steps.[].instructions") + _elements.set_prop("title", AAZStrType, "@CodelessUiConnectorConfigProperties_create.instruction_steps.[].title") + + instructions = _builder.get(".instructionSteps[].instructions") + if instructions is not None: + instructions.set_elements(AAZObjectType) + + _elements = _builder.get(".instructionSteps[].instructions[]") + if _elements is not None: + _elements.set_prop("type", AAZStrType, "@CodelessUiConnectorConfigProperties_create.instruction_steps.[].instructions.[].type", typ_kwargs={"flags": {"required": True}}) + + permissions = _builder.get(".permissions") + if permissions is not None: + permissions.set_prop("customs", AAZListType, ".customs") + permissions.set_prop("resourceProvider", AAZListType, ".resource_provider") + + customs = _builder.get(".permissions.customs") + if customs is not None: + customs.set_elements(AAZObjectType) + + _elements = _builder.get(".permissions.customs[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, "@CodelessUiConnectorConfigProperties_create.permissions.customs.[].description") + _elements.set_prop("name", AAZStrType, "@CodelessUiConnectorConfigProperties_create.permissions.customs.[].name") + + resource_provider = _builder.get(".permissions.resourceProvider") + if resource_provider is not None: + resource_provider.set_elements(AAZObjectType) + + _elements = _builder.get(".permissions.resourceProvider[]") + if _elements is not None: + _elements.set_prop("permissionsDisplayText", AAZStrType, "@CodelessUiConnectorConfigProperties_create.permissions.resource_provider.[].permissions_display_text") + _elements.set_prop("provider", AAZStrType, "@CodelessUiConnectorConfigProperties_create.permissions.resource_provider.[].provider") + _elements.set_prop("providerDisplayName", AAZStrType, "@CodelessUiConnectorConfigProperties_create.permissions.resource_provider.[].provider_display_name") + _elements.set_prop("requiredPermissions", AAZObjectType, "@CodelessUiConnectorConfigProperties_create.permissions.resource_provider.[].required_permissions") + _elements.set_prop("scope", AAZStrType, "@CodelessUiConnectorConfigProperties_create.permissions.resource_provider.[].scope") + + required_permissions = _builder.get(".permissions.resourceProvider[].requiredPermissions") + if required_permissions is not None: + required_permissions.set_prop("action", AAZBoolType, ".action") + required_permissions.set_prop("delete", AAZBoolType, ".delete") + required_permissions.set_prop("read", AAZBoolType, ".read") + required_permissions.set_prop("write", AAZBoolType, ".write") + + sample_queries = _builder.get(".sampleQueries") + if sample_queries is not None: + sample_queries.set_elements(AAZObjectType) + + _elements = _builder.get(".sampleQueries[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, "@CodelessUiConnectorConfigProperties_create.sample_queries.[].description") + _elements.set_prop("query", AAZStrType, "@CodelessUiConnectorConfigProperties_create.sample_queries.[].query") + + +def _build_schema_data_connector_data_type_common_create(_builder): + if _builder is None: + return + _builder.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + +_schema_alerts_data_type_of_data_connector_read = None + + +def _build_schema_alerts_data_type_of_data_connector_read(_schema): + global _schema_alerts_data_type_of_data_connector_read + if _schema_alerts_data_type_of_data_connector_read is not None: + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + return + + _schema_alerts_data_type_of_data_connector_read = AAZObjectType() + + alerts_data_type_of_data_connector_read = _schema_alerts_data_type_of_data_connector_read + alerts_data_type_of_data_connector_read.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(alerts_data_type_of_data_connector_read.alerts) + + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + + +_schema_codeless_ui_connector_config_properties_read = None + + +def _build_schema_codeless_ui_connector_config_properties_read(_schema): + global _schema_codeless_ui_connector_config_properties_read + if _schema_codeless_ui_connector_config_properties_read is not None: + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + return + + _schema_codeless_ui_connector_config_properties_read = AAZObjectType() + + codeless_ui_connector_config_properties_read = _schema_codeless_ui_connector_config_properties_read + codeless_ui_connector_config_properties_read.availability = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.connectivity_criteria = AAZListType( + serialized_name="connectivityCriteria", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.custom_image = AAZStrType( + serialized_name="customImage", + ) + codeless_ui_connector_config_properties_read.data_types = AAZListType( + serialized_name="dataTypes", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.description_markdown = AAZStrType( + serialized_name="descriptionMarkdown", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries = AAZListType( + serialized_name="graphQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries_table_name = AAZStrType( + serialized_name="graphQueriesTableName", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.instruction_steps = AAZListType( + serialized_name="instructionSteps", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.permissions = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.publisher = AAZStrType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.sample_queries = AAZListType( + serialized_name="sampleQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.title = AAZStrType( + flags={"required": True}, + ) + + availability = _schema_codeless_ui_connector_config_properties_read.availability + availability.is_preview = AAZBoolType( + serialized_name="isPreview", + ) + availability.status = AAZIntType() + + connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + connectivity_criteria.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element + _element.type = AAZStrType() + _element.value = AAZListType() + + value = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element.value + value.Element = AAZStrType() + + data_types = _schema_codeless_ui_connector_config_properties_read.data_types + data_types.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.data_types.Element + _element.last_data_received_query = AAZStrType( + serialized_name="lastDataReceivedQuery", + ) + _element.name = AAZStrType() + + graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + graph_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.graph_queries.Element + _element.base_query = AAZStrType( + serialized_name="baseQuery", + ) + _element.legend = AAZStrType() + _element.metric_name = AAZStrType( + serialized_name="metricName", + ) + + instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + instruction_steps.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element + _element.description = AAZStrType() + _element.instructions = AAZListType() + _element.title = AAZStrType() + + instructions = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions + instructions.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions.Element + _element.type = AAZStrType( + flags={"required": True}, + ) + + permissions = _schema_codeless_ui_connector_config_properties_read.permissions + permissions.customs = AAZListType() + permissions.resource_provider = AAZListType( + serialized_name="resourceProvider", + ) + + customs = _schema_codeless_ui_connector_config_properties_read.permissions.customs + customs.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.customs.Element + _element.description = AAZStrType() + _element.name = AAZStrType() + + resource_provider = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider + resource_provider.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element + _element.permissions_display_text = AAZStrType( + serialized_name="permissionsDisplayText", + ) + _element.provider = AAZStrType() + _element.provider_display_name = AAZStrType( + serialized_name="providerDisplayName", + ) + _element.required_permissions = AAZObjectType( + serialized_name="requiredPermissions", + ) + _element.scope = AAZStrType() + + required_permissions = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element.required_permissions + required_permissions.action = AAZBoolType() + required_permissions.delete = AAZBoolType() + required_permissions.read = AAZBoolType() + required_permissions.write = AAZBoolType() + + sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + sample_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.sample_queries.Element + _element.description = AAZStrType() + _element.query = AAZStrType() + + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + + +_schema_data_connector_data_type_common_read = None + + +def _build_schema_data_connector_data_type_common_read(_schema): + global _schema_data_connector_data_type_common_read + if _schema_data_connector_data_type_common_read is not None: + _schema.state = _schema_data_connector_data_type_common_read.state + return + + _schema_data_connector_data_type_common_read = AAZObjectType() + + data_connector_data_type_common_read = _schema_data_connector_data_type_common_read + data_connector_data_type_common_read.state = AAZStrType( + flags={"required": True}, + ) + + _schema.state = _schema_data_connector_data_type_common_read.state + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_delete.py new file mode 100644 index 00000000000..6c93f462a45 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel data-connector delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the data connector. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/dataconnectors/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.data_connector_id = AAZStrArg( + options=["-n", "--name", "--data-connector-id"], + help="Connector ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.DataConnectorsDelete(ctx=self.ctx)() + + class DataConnectorsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "dataConnectorId", self.ctx.args.data_connector_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_disconnect.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_disconnect.py new file mode 100644 index 00000000000..53e1b7adc79 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_disconnect.py @@ -0,0 +1,126 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel data-connector disconnect", + is_experimental=True, +) +class Disconnect(AAZCommand): + """Disconnect a data connector. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/dataconnectors/{}/disconnect", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.data_connector_id = AAZStrArg( + options=["--data-connector-id"], + help="Connector ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.DataConnectorsDisconnect(ctx=self.ctx)() + + class DataConnectorsDisconnect(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}/disconnect", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "dataConnectorId", self.ctx.args.data_connector_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + +__all__ = ["Disconnect"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_list.py new file mode 100644 index 00000000000..a6a6604f8b3 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_list.py @@ -0,0 +1,1025 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel data-connector list", + is_experimental=True, +) +class List(AAZCommand): + """Get all data connectors. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/dataconnectors", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.DataConnectorsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class DataConnectorsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_api_polling = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling") + disc_api_polling.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + properties.polling_config = AAZObjectType( + serialized_name="pollingConfig", + ) + + polling_config = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling").properties.polling_config + polling_config.auth = AAZObjectType( + flags={"required": True}, + ) + polling_config.is_active = AAZBoolType( + serialized_name="isActive", + ) + polling_config.paging = AAZObjectType() + polling_config.request = AAZObjectType( + flags={"required": True}, + ) + polling_config.response = AAZObjectType() + + auth = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling").properties.polling_config.auth + auth.api_key_identifier = AAZStrType( + serialized_name="apiKeyIdentifier", + ) + auth.api_key_name = AAZStrType( + serialized_name="apiKeyName", + ) + auth.auth_type = AAZStrType( + serialized_name="authType", + flags={"required": True}, + ) + auth.authorization_endpoint = AAZStrType( + serialized_name="authorizationEndpoint", + ) + auth.flow_name = AAZStrType( + serialized_name="flowName", + ) + auth.is_api_key_in_post_payload = AAZStrType( + serialized_name="isApiKeyInPostPayload", + ) + auth.is_client_secret_in_header = AAZBoolType( + serialized_name="isClientSecretInHeader", + ) + auth.redirection_endpoint = AAZStrType( + serialized_name="redirectionEndpoint", + ) + auth.scope = AAZStrType() + auth.token_endpoint = AAZStrType( + serialized_name="tokenEndpoint", + ) + + paging = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling").properties.polling_config.paging + paging.next_page_para_name = AAZStrType( + serialized_name="nextPageParaName", + ) + paging.next_page_token_json_path = AAZStrType( + serialized_name="nextPageTokenJsonPath", + ) + paging.page_count_attribute_path = AAZStrType( + serialized_name="pageCountAttributePath", + ) + paging.page_size = AAZIntType( + serialized_name="pageSize", + ) + paging.page_size_para_name = AAZStrType( + serialized_name="pageSizeParaName", + ) + paging.page_time_stamp_attribute_path = AAZStrType( + serialized_name="pageTimeStampAttributePath", + ) + paging.page_total_count_attribute_path = AAZStrType( + serialized_name="pageTotalCountAttributePath", + ) + paging.paging_type = AAZStrType( + serialized_name="pagingType", + flags={"required": True}, + ) + paging.search_the_latest_time_stamp_from_events_list = AAZStrType( + serialized_name="searchTheLatestTimeStampFromEventsList", + ) + + request = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling").properties.polling_config.request + request.api_endpoint = AAZStrType( + serialized_name="apiEndpoint", + flags={"required": True}, + ) + request.end_time_attribute_name = AAZStrType( + serialized_name="endTimeAttributeName", + ) + request.http_method = AAZStrType( + serialized_name="httpMethod", + flags={"required": True}, + ) + request.query_parameters_template = AAZStrType( + serialized_name="queryParametersTemplate", + ) + request.query_time_format = AAZStrType( + serialized_name="queryTimeFormat", + flags={"required": True}, + ) + request.query_window_in_min = AAZIntType( + serialized_name="queryWindowInMin", + flags={"required": True}, + ) + request.rate_limit_qps = AAZIntType( + serialized_name="rateLimitQps", + ) + request.retry_count = AAZIntType( + serialized_name="retryCount", + ) + request.start_time_attribute_name = AAZStrType( + serialized_name="startTimeAttributeName", + ) + request.timeout_in_seconds = AAZIntType( + serialized_name="timeoutInSeconds", + ) + + response = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling").properties.polling_config.response + response.events_json_paths = AAZListType( + serialized_name="eventsJsonPaths", + flags={"required": True}, + ) + response.is_gzip_compressed = AAZBoolType( + serialized_name="isGzipCompressed", + ) + response.success_status_json_path = AAZStrType( + serialized_name="successStatusJsonPath", + ) + response.success_status_value = AAZStrType( + serialized_name="successStatusValue", + ) + + events_json_paths = cls._schema_on_200.value.Element.discriminate_by("kind", "APIPolling").properties.polling_config.response.events_json_paths + events_json_paths.Element = AAZStrType() + + disc_amazon_web_services_cloud_trail = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesCloudTrail") + disc_amazon_web_services_cloud_trail.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties + properties.aws_role_arn = AAZStrType( + serialized_name="awsRoleArn", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_amazon_web_services_s3 = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesS3") + disc_amazon_web_services_s3.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesS3").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.destination_table = AAZStrType( + serialized_name="destinationTable", + flags={"required": True}, + ) + properties.role_arn = AAZStrType( + serialized_name="roleArn", + flags={"required": True}, + ) + properties.sqs_urls = AAZListType( + serialized_name="sqsUrls", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + sqs_urls = cls._schema_on_200.value.Element.discriminate_by("kind", "AmazonWebServicesS3").properties.sqs_urls + sqs_urls.Element = AAZStrType() + + disc_azure_active_directory = cls._schema_on_200.value.Element.discriminate_by("kind", "AzureActiveDirectory") + disc_azure_active_directory.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "AzureActiveDirectory").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_advanced_threat_protection = cls._schema_on_200.value.Element.discriminate_by("kind", "AzureAdvancedThreatProtection") + disc_azure_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "AzureAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_security_center = cls._schema_on_200.value.Element.discriminate_by("kind", "AzureSecurityCenter") + disc_azure_security_center.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "AzureSecurityCenter").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_dynamics365 = cls._schema_on_200.value.Element.discriminate_by("kind", "Dynamics365") + disc_dynamics365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Dynamics365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Dynamics365").properties.data_types + data_types.dynamics365_cds_activities = AAZObjectType( + serialized_name="dynamics365CdsActivities", + flags={"required": True}, + ) + + dynamics365_cds_activities = cls._schema_on_200.value.Element.discriminate_by("kind", "Dynamics365").properties.data_types.dynamics365_cds_activities + dynamics365_cds_activities.state = AAZStrType( + flags={"required": True}, + ) + + disc_generic_ui = cls._schema_on_200.value.Element.discriminate_by("kind", "GenericUI") + disc_generic_ui.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "GenericUI").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + + disc_iot = cls._schema_on_200.value.Element.discriminate_by("kind", "IOT") + disc_iot.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "IOT").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_microsoft_cloud_app_security = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftCloudAppSecurity") + disc_microsoft_cloud_app_security.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties.data_types + data_types.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(data_types.alerts) + data_types.discovery_logs = AAZObjectType( + serialized_name="discoveryLogs", + ) + _build_schema_data_connector_data_type_common_read(data_types.discovery_logs) + + disc_microsoft_defender_advanced_threat_protection = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection") + disc_microsoft_defender_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_microsoft_threat_intelligence = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatIntelligence") + disc_microsoft_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types + data_types.bing_safety_phishing_url = AAZObjectType( + serialized_name="bingSafetyPhishingURL", + flags={"required": True}, + ) + data_types.microsoft_emerging_threat_feed = AAZObjectType( + serialized_name="microsoftEmergingThreatFeed", + flags={"required": True}, + ) + + bing_safety_phishing_url = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.bing_safety_phishing_url + bing_safety_phishing_url.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + bing_safety_phishing_url.state = AAZStrType( + flags={"required": True}, + ) + + microsoft_emerging_threat_feed = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.microsoft_emerging_threat_feed + microsoft_emerging_threat_feed.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + microsoft_emerging_threat_feed.state = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_threat_protection = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatProtection") + disc_microsoft_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types + data_types.incidents = AAZObjectType( + flags={"required": True}, + ) + + incidents = cls._schema_on_200.value.Element.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types.incidents + incidents.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365 = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365") + disc_office365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365").properties.data_types + data_types.exchange = AAZObjectType( + flags={"required": True}, + ) + data_types.share_point = AAZObjectType( + serialized_name="sharePoint", + flags={"required": True}, + ) + data_types.teams = AAZObjectType( + flags={"required": True}, + ) + + exchange = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365").properties.data_types.exchange + exchange.state = AAZStrType( + flags={"required": True}, + ) + + share_point = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365").properties.data_types.share_point + share_point.state = AAZStrType( + flags={"required": True}, + ) + + teams = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365").properties.data_types.teams + teams.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365_project = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365Project") + disc_office365_project.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365Project").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365Project").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.value.Element.discriminate_by("kind", "Office365Project").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_office_atp = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficeATP") + disc_office_atp.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficeATP").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_irm = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficeIRM") + disc_office_irm.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficeIRM").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_power_bi = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficePowerBI") + disc_office_power_bi.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficePowerBI").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficePowerBI").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.value.Element.discriminate_by("kind", "OfficePowerBI").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.tip_lookback_period = AAZStrType( + serialized_name="tipLookbackPeriod", + nullable=True, + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties.data_types + data_types.indicators = AAZObjectType( + flags={"required": True}, + ) + + indicators = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligence").properties.data_types.indicators + indicators.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence_taxii = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligenceTaxii") + disc_threat_intelligence_taxii.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligenceTaxii").properties + properties.collection_id = AAZStrType( + serialized_name="collectionId", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + ) + properties.password = AAZStrType() + properties.polling_frequency = AAZStrType( + serialized_name="pollingFrequency", + flags={"required": True}, + nullable=True, + ) + properties.taxii_lookback_period = AAZStrType( + serialized_name="taxiiLookbackPeriod", + nullable=True, + ) + properties.taxii_server = AAZStrType( + serialized_name="taxiiServer", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.user_name = AAZStrType( + serialized_name="userName", + ) + properties.workspace_id = AAZStrType( + serialized_name="workspaceId", + ) + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types + data_types.taxii_client = AAZObjectType( + serialized_name="taxiiClient", + flags={"required": True}, + ) + + taxii_client = cls._schema_on_200.value.Element.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types.taxii_client + taxii_client.state = AAZStrType( + flags={"required": True}, + ) + + return cls._schema_on_200 + + +_schema_alerts_data_type_of_data_connector_read = None + + +def _build_schema_alerts_data_type_of_data_connector_read(_schema): + global _schema_alerts_data_type_of_data_connector_read + if _schema_alerts_data_type_of_data_connector_read is not None: + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + return + + _schema_alerts_data_type_of_data_connector_read = AAZObjectType() + + alerts_data_type_of_data_connector_read = _schema_alerts_data_type_of_data_connector_read + alerts_data_type_of_data_connector_read.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(alerts_data_type_of_data_connector_read.alerts) + + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + + +_schema_codeless_ui_connector_config_properties_read = None + + +def _build_schema_codeless_ui_connector_config_properties_read(_schema): + global _schema_codeless_ui_connector_config_properties_read + if _schema_codeless_ui_connector_config_properties_read is not None: + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + return + + _schema_codeless_ui_connector_config_properties_read = AAZObjectType() + + codeless_ui_connector_config_properties_read = _schema_codeless_ui_connector_config_properties_read + codeless_ui_connector_config_properties_read.availability = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.connectivity_criteria = AAZListType( + serialized_name="connectivityCriteria", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.custom_image = AAZStrType( + serialized_name="customImage", + ) + codeless_ui_connector_config_properties_read.data_types = AAZListType( + serialized_name="dataTypes", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.description_markdown = AAZStrType( + serialized_name="descriptionMarkdown", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries = AAZListType( + serialized_name="graphQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries_table_name = AAZStrType( + serialized_name="graphQueriesTableName", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.instruction_steps = AAZListType( + serialized_name="instructionSteps", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.permissions = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.publisher = AAZStrType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.sample_queries = AAZListType( + serialized_name="sampleQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.title = AAZStrType( + flags={"required": True}, + ) + + availability = _schema_codeless_ui_connector_config_properties_read.availability + availability.is_preview = AAZBoolType( + serialized_name="isPreview", + ) + availability.status = AAZIntType() + + connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + connectivity_criteria.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element + _element.type = AAZStrType() + _element.value = AAZListType() + + value = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element.value + value.Element = AAZStrType() + + data_types = _schema_codeless_ui_connector_config_properties_read.data_types + data_types.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.data_types.Element + _element.last_data_received_query = AAZStrType( + serialized_name="lastDataReceivedQuery", + ) + _element.name = AAZStrType() + + graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + graph_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.graph_queries.Element + _element.base_query = AAZStrType( + serialized_name="baseQuery", + ) + _element.legend = AAZStrType() + _element.metric_name = AAZStrType( + serialized_name="metricName", + ) + + instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + instruction_steps.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element + _element.description = AAZStrType() + _element.instructions = AAZListType() + _element.title = AAZStrType() + + instructions = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions + instructions.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions.Element + _element.type = AAZStrType( + flags={"required": True}, + ) + + permissions = _schema_codeless_ui_connector_config_properties_read.permissions + permissions.customs = AAZListType() + permissions.resource_provider = AAZListType( + serialized_name="resourceProvider", + ) + + customs = _schema_codeless_ui_connector_config_properties_read.permissions.customs + customs.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.customs.Element + _element.description = AAZStrType() + _element.name = AAZStrType() + + resource_provider = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider + resource_provider.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element + _element.permissions_display_text = AAZStrType( + serialized_name="permissionsDisplayText", + ) + _element.provider = AAZStrType() + _element.provider_display_name = AAZStrType( + serialized_name="providerDisplayName", + ) + _element.required_permissions = AAZObjectType( + serialized_name="requiredPermissions", + ) + _element.scope = AAZStrType() + + required_permissions = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element.required_permissions + required_permissions.action = AAZBoolType() + required_permissions.delete = AAZBoolType() + required_permissions.read = AAZBoolType() + required_permissions.write = AAZBoolType() + + sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + sample_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.sample_queries.Element + _element.description = AAZStrType() + _element.query = AAZStrType() + + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + + +_schema_data_connector_data_type_common_read = None + + +def _build_schema_data_connector_data_type_common_read(_schema): + global _schema_data_connector_data_type_common_read + if _schema_data_connector_data_type_common_read is not None: + _schema.state = _schema_data_connector_data_type_common_read.state + return + + _schema_data_connector_data_type_common_read = AAZObjectType() + + data_connector_data_type_common_read = _schema_data_connector_data_type_common_read + data_connector_data_type_common_read.state = AAZStrType( + flags={"required": True}, + ) + + _schema.state = _schema_data_connector_data_type_common_read.state + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_show.py new file mode 100644 index 00000000000..4fd4ad6ca70 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_show.py @@ -0,0 +1,1024 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel data-connector show", + is_experimental=True, +) +class Show(AAZCommand): + """Get a data connector. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/dataconnectors/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.data_connector_id = AAZStrArg( + options=["-n", "--name", "--data-connector-id"], + help="Connector ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.DataConnectorsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class DataConnectorsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "dataConnectorId", self.ctx.args.data_connector_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_api_polling = cls._schema_on_200.discriminate_by("kind", "APIPolling") + disc_api_polling.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "APIPolling").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + properties.polling_config = AAZObjectType( + serialized_name="pollingConfig", + ) + + polling_config = cls._schema_on_200.discriminate_by("kind", "APIPolling").properties.polling_config + polling_config.auth = AAZObjectType( + flags={"required": True}, + ) + polling_config.is_active = AAZBoolType( + serialized_name="isActive", + ) + polling_config.paging = AAZObjectType() + polling_config.request = AAZObjectType( + flags={"required": True}, + ) + polling_config.response = AAZObjectType() + + auth = cls._schema_on_200.discriminate_by("kind", "APIPolling").properties.polling_config.auth + auth.api_key_identifier = AAZStrType( + serialized_name="apiKeyIdentifier", + ) + auth.api_key_name = AAZStrType( + serialized_name="apiKeyName", + ) + auth.auth_type = AAZStrType( + serialized_name="authType", + flags={"required": True}, + ) + auth.authorization_endpoint = AAZStrType( + serialized_name="authorizationEndpoint", + ) + auth.flow_name = AAZStrType( + serialized_name="flowName", + ) + auth.is_api_key_in_post_payload = AAZStrType( + serialized_name="isApiKeyInPostPayload", + ) + auth.is_client_secret_in_header = AAZBoolType( + serialized_name="isClientSecretInHeader", + ) + auth.redirection_endpoint = AAZStrType( + serialized_name="redirectionEndpoint", + ) + auth.scope = AAZStrType() + auth.token_endpoint = AAZStrType( + serialized_name="tokenEndpoint", + ) + + paging = cls._schema_on_200.discriminate_by("kind", "APIPolling").properties.polling_config.paging + paging.next_page_para_name = AAZStrType( + serialized_name="nextPageParaName", + ) + paging.next_page_token_json_path = AAZStrType( + serialized_name="nextPageTokenJsonPath", + ) + paging.page_count_attribute_path = AAZStrType( + serialized_name="pageCountAttributePath", + ) + paging.page_size = AAZIntType( + serialized_name="pageSize", + ) + paging.page_size_para_name = AAZStrType( + serialized_name="pageSizeParaName", + ) + paging.page_time_stamp_attribute_path = AAZStrType( + serialized_name="pageTimeStampAttributePath", + ) + paging.page_total_count_attribute_path = AAZStrType( + serialized_name="pageTotalCountAttributePath", + ) + paging.paging_type = AAZStrType( + serialized_name="pagingType", + flags={"required": True}, + ) + paging.search_the_latest_time_stamp_from_events_list = AAZStrType( + serialized_name="searchTheLatestTimeStampFromEventsList", + ) + + request = cls._schema_on_200.discriminate_by("kind", "APIPolling").properties.polling_config.request + request.api_endpoint = AAZStrType( + serialized_name="apiEndpoint", + flags={"required": True}, + ) + request.end_time_attribute_name = AAZStrType( + serialized_name="endTimeAttributeName", + ) + request.http_method = AAZStrType( + serialized_name="httpMethod", + flags={"required": True}, + ) + request.query_parameters_template = AAZStrType( + serialized_name="queryParametersTemplate", + ) + request.query_time_format = AAZStrType( + serialized_name="queryTimeFormat", + flags={"required": True}, + ) + request.query_window_in_min = AAZIntType( + serialized_name="queryWindowInMin", + flags={"required": True}, + ) + request.rate_limit_qps = AAZIntType( + serialized_name="rateLimitQps", + ) + request.retry_count = AAZIntType( + serialized_name="retryCount", + ) + request.start_time_attribute_name = AAZStrType( + serialized_name="startTimeAttributeName", + ) + request.timeout_in_seconds = AAZIntType( + serialized_name="timeoutInSeconds", + ) + + response = cls._schema_on_200.discriminate_by("kind", "APIPolling").properties.polling_config.response + response.events_json_paths = AAZListType( + serialized_name="eventsJsonPaths", + flags={"required": True}, + ) + response.is_gzip_compressed = AAZBoolType( + serialized_name="isGzipCompressed", + ) + response.success_status_json_path = AAZStrType( + serialized_name="successStatusJsonPath", + ) + response.success_status_value = AAZStrType( + serialized_name="successStatusValue", + ) + + events_json_paths = cls._schema_on_200.discriminate_by("kind", "APIPolling").properties.polling_config.response.events_json_paths + events_json_paths.Element = AAZStrType() + + disc_amazon_web_services_cloud_trail = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesCloudTrail") + disc_amazon_web_services_cloud_trail.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties + properties.aws_role_arn = AAZStrType( + serialized_name="awsRoleArn", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_amazon_web_services_s3 = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesS3") + disc_amazon_web_services_s3.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesS3").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.destination_table = AAZStrType( + serialized_name="destinationTable", + flags={"required": True}, + ) + properties.role_arn = AAZStrType( + serialized_name="roleArn", + flags={"required": True}, + ) + properties.sqs_urls = AAZListType( + serialized_name="sqsUrls", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + sqs_urls = cls._schema_on_200.discriminate_by("kind", "AmazonWebServicesS3").properties.sqs_urls + sqs_urls.Element = AAZStrType() + + disc_azure_active_directory = cls._schema_on_200.discriminate_by("kind", "AzureActiveDirectory") + disc_azure_active_directory.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "AzureActiveDirectory").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_advanced_threat_protection = cls._schema_on_200.discriminate_by("kind", "AzureAdvancedThreatProtection") + disc_azure_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "AzureAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_security_center = cls._schema_on_200.discriminate_by("kind", "AzureSecurityCenter") + disc_azure_security_center.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "AzureSecurityCenter").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_dynamics365 = cls._schema_on_200.discriminate_by("kind", "Dynamics365") + disc_dynamics365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Dynamics365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "Dynamics365").properties.data_types + data_types.dynamics365_cds_activities = AAZObjectType( + serialized_name="dynamics365CdsActivities", + flags={"required": True}, + ) + + dynamics365_cds_activities = cls._schema_on_200.discriminate_by("kind", "Dynamics365").properties.data_types.dynamics365_cds_activities + dynamics365_cds_activities.state = AAZStrType( + flags={"required": True}, + ) + + disc_generic_ui = cls._schema_on_200.discriminate_by("kind", "GenericUI") + disc_generic_ui.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "GenericUI").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + + disc_iot = cls._schema_on_200.discriminate_by("kind", "IOT") + disc_iot.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "IOT").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_microsoft_cloud_app_security = cls._schema_on_200.discriminate_by("kind", "MicrosoftCloudAppSecurity") + disc_microsoft_cloud_app_security.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties.data_types + data_types.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(data_types.alerts) + data_types.discovery_logs = AAZObjectType( + serialized_name="discoveryLogs", + ) + _build_schema_data_connector_data_type_common_read(data_types.discovery_logs) + + disc_microsoft_defender_advanced_threat_protection = cls._schema_on_200.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection") + disc_microsoft_defender_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_microsoft_threat_intelligence = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatIntelligence") + disc_microsoft_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types + data_types.bing_safety_phishing_url = AAZObjectType( + serialized_name="bingSafetyPhishingURL", + flags={"required": True}, + ) + data_types.microsoft_emerging_threat_feed = AAZObjectType( + serialized_name="microsoftEmergingThreatFeed", + flags={"required": True}, + ) + + bing_safety_phishing_url = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.bing_safety_phishing_url + bing_safety_phishing_url.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + bing_safety_phishing_url.state = AAZStrType( + flags={"required": True}, + ) + + microsoft_emerging_threat_feed = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.microsoft_emerging_threat_feed + microsoft_emerging_threat_feed.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + microsoft_emerging_threat_feed.state = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_threat_protection = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatProtection") + disc_microsoft_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types + data_types.incidents = AAZObjectType( + flags={"required": True}, + ) + + incidents = cls._schema_on_200.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types.incidents + incidents.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365 = cls._schema_on_200.discriminate_by("kind", "Office365") + disc_office365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Office365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "Office365").properties.data_types + data_types.exchange = AAZObjectType( + flags={"required": True}, + ) + data_types.share_point = AAZObjectType( + serialized_name="sharePoint", + flags={"required": True}, + ) + data_types.teams = AAZObjectType( + flags={"required": True}, + ) + + exchange = cls._schema_on_200.discriminate_by("kind", "Office365").properties.data_types.exchange + exchange.state = AAZStrType( + flags={"required": True}, + ) + + share_point = cls._schema_on_200.discriminate_by("kind", "Office365").properties.data_types.share_point + share_point.state = AAZStrType( + flags={"required": True}, + ) + + teams = cls._schema_on_200.discriminate_by("kind", "Office365").properties.data_types.teams + teams.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365_project = cls._schema_on_200.discriminate_by("kind", "Office365Project") + disc_office365_project.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Office365Project").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "Office365Project").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.discriminate_by("kind", "Office365Project").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_office_atp = cls._schema_on_200.discriminate_by("kind", "OfficeATP") + disc_office_atp.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "OfficeATP").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_irm = cls._schema_on_200.discriminate_by("kind", "OfficeIRM") + disc_office_irm.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "OfficeIRM").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_power_bi = cls._schema_on_200.discriminate_by("kind", "OfficePowerBI") + disc_office_power_bi.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "OfficePowerBI").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "OfficePowerBI").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = cls._schema_on_200.discriminate_by("kind", "OfficePowerBI").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.tip_lookback_period = AAZStrType( + serialized_name="tipLookbackPeriod", + nullable=True, + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties.data_types + data_types.indicators = AAZObjectType( + flags={"required": True}, + ) + + indicators = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligence").properties.data_types.indicators + indicators.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence_taxii = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligenceTaxii") + disc_threat_intelligence_taxii.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligenceTaxii").properties + properties.collection_id = AAZStrType( + serialized_name="collectionId", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + ) + properties.password = AAZStrType() + properties.polling_frequency = AAZStrType( + serialized_name="pollingFrequency", + flags={"required": True}, + nullable=True, + ) + properties.taxii_lookback_period = AAZStrType( + serialized_name="taxiiLookbackPeriod", + nullable=True, + ) + properties.taxii_server = AAZStrType( + serialized_name="taxiiServer", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.user_name = AAZStrType( + serialized_name="userName", + ) + properties.workspace_id = AAZStrType( + serialized_name="workspaceId", + ) + + data_types = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types + data_types.taxii_client = AAZObjectType( + serialized_name="taxiiClient", + flags={"required": True}, + ) + + taxii_client = cls._schema_on_200.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types.taxii_client + taxii_client.state = AAZStrType( + flags={"required": True}, + ) + + return cls._schema_on_200 + + +_schema_alerts_data_type_of_data_connector_read = None + + +def _build_schema_alerts_data_type_of_data_connector_read(_schema): + global _schema_alerts_data_type_of_data_connector_read + if _schema_alerts_data_type_of_data_connector_read is not None: + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + return + + _schema_alerts_data_type_of_data_connector_read = AAZObjectType() + + alerts_data_type_of_data_connector_read = _schema_alerts_data_type_of_data_connector_read + alerts_data_type_of_data_connector_read.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(alerts_data_type_of_data_connector_read.alerts) + + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + + +_schema_codeless_ui_connector_config_properties_read = None + + +def _build_schema_codeless_ui_connector_config_properties_read(_schema): + global _schema_codeless_ui_connector_config_properties_read + if _schema_codeless_ui_connector_config_properties_read is not None: + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + return + + _schema_codeless_ui_connector_config_properties_read = AAZObjectType() + + codeless_ui_connector_config_properties_read = _schema_codeless_ui_connector_config_properties_read + codeless_ui_connector_config_properties_read.availability = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.connectivity_criteria = AAZListType( + serialized_name="connectivityCriteria", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.custom_image = AAZStrType( + serialized_name="customImage", + ) + codeless_ui_connector_config_properties_read.data_types = AAZListType( + serialized_name="dataTypes", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.description_markdown = AAZStrType( + serialized_name="descriptionMarkdown", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries = AAZListType( + serialized_name="graphQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries_table_name = AAZStrType( + serialized_name="graphQueriesTableName", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.instruction_steps = AAZListType( + serialized_name="instructionSteps", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.permissions = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.publisher = AAZStrType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.sample_queries = AAZListType( + serialized_name="sampleQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.title = AAZStrType( + flags={"required": True}, + ) + + availability = _schema_codeless_ui_connector_config_properties_read.availability + availability.is_preview = AAZBoolType( + serialized_name="isPreview", + ) + availability.status = AAZIntType() + + connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + connectivity_criteria.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element + _element.type = AAZStrType() + _element.value = AAZListType() + + value = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element.value + value.Element = AAZStrType() + + data_types = _schema_codeless_ui_connector_config_properties_read.data_types + data_types.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.data_types.Element + _element.last_data_received_query = AAZStrType( + serialized_name="lastDataReceivedQuery", + ) + _element.name = AAZStrType() + + graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + graph_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.graph_queries.Element + _element.base_query = AAZStrType( + serialized_name="baseQuery", + ) + _element.legend = AAZStrType() + _element.metric_name = AAZStrType( + serialized_name="metricName", + ) + + instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + instruction_steps.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element + _element.description = AAZStrType() + _element.instructions = AAZListType() + _element.title = AAZStrType() + + instructions = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions + instructions.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions.Element + _element.type = AAZStrType( + flags={"required": True}, + ) + + permissions = _schema_codeless_ui_connector_config_properties_read.permissions + permissions.customs = AAZListType() + permissions.resource_provider = AAZListType( + serialized_name="resourceProvider", + ) + + customs = _schema_codeless_ui_connector_config_properties_read.permissions.customs + customs.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.customs.Element + _element.description = AAZStrType() + _element.name = AAZStrType() + + resource_provider = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider + resource_provider.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element + _element.permissions_display_text = AAZStrType( + serialized_name="permissionsDisplayText", + ) + _element.provider = AAZStrType() + _element.provider_display_name = AAZStrType( + serialized_name="providerDisplayName", + ) + _element.required_permissions = AAZObjectType( + serialized_name="requiredPermissions", + ) + _element.scope = AAZStrType() + + required_permissions = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element.required_permissions + required_permissions.action = AAZBoolType() + required_permissions.delete = AAZBoolType() + required_permissions.read = AAZBoolType() + required_permissions.write = AAZBoolType() + + sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + sample_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.sample_queries.Element + _element.description = AAZStrType() + _element.query = AAZStrType() + + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + + +_schema_data_connector_data_type_common_read = None + + +def _build_schema_data_connector_data_type_common_read(_schema): + global _schema_data_connector_data_type_common_read + if _schema_data_connector_data_type_common_read is not None: + _schema.state = _schema_data_connector_data_type_common_read.state + return + + _schema_data_connector_data_type_common_read = AAZObjectType() + + data_connector_data_type_common_read = _schema_data_connector_data_type_common_read + data_connector_data_type_common_read.state = AAZStrType( + flags={"required": True}, + ) + + _schema.state = _schema_data_connector_data_type_common_read.state + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_update.py new file mode 100644 index 00000000000..1510ee484bb --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/data_connector/_update.py @@ -0,0 +1,3085 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel data-connector update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the data connector. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/dataconnectors/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.data_connector_id = AAZStrArg( + options=["-n", "--name", "--data-connector-id"], + help="Connector ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "DataConnector" + + _args_schema = cls._args_schema + _args_schema.api_polling = AAZObjectArg( + options=["--api-polling"], + arg_group="DataConnector", + ) + _args_schema.aws_cloud_trail = AAZObjectArg( + options=["--aws-cloud-trail"], + arg_group="DataConnector", + help="Amazon web services cloud trail.", + ) + _args_schema.aws_s3 = AAZObjectArg( + options=["--aws-s3"], + arg_group="DataConnector", + help="Amazon web services s3.", + ) + _args_schema.azure_active_directory = AAZObjectArg( + options=["--azure-active-directory"], + arg_group="DataConnector", + ) + _args_schema.azure_protection = AAZObjectArg( + options=["--azure-protection"], + arg_group="DataConnector", + help="Azure advanced threat protection.", + ) + _args_schema.azure_security_center = AAZObjectArg( + options=["--azure-security-center"], + arg_group="DataConnector", + ) + _args_schema.dynamics365 = AAZObjectArg( + options=["--dynamics365"], + arg_group="DataConnector", + ) + _args_schema.generic_ui = AAZObjectArg( + options=["--generic-ui"], + arg_group="DataConnector", + ) + _args_schema.iot = AAZObjectArg( + options=["--iot"], + arg_group="DataConnector", + ) + _args_schema.cloud_app_security = AAZObjectArg( + options=["--cloud-app-security"], + arg_group="DataConnector", + help="Microsoft cloud app security.", + ) + _args_schema.defender_protection = AAZObjectArg( + options=["--defender-protection"], + arg_group="DataConnector", + help="Microsoft defender advanced threat protection.", + ) + _args_schema.microsoft_intelligence = AAZObjectArg( + options=["--microsoft-intelligence"], + arg_group="DataConnector", + help="Microsoft threat intelligence.", + ) + _args_schema.microsoft_protection = AAZObjectArg( + options=["--microsoft-protection"], + arg_group="DataConnector", + help="Microsoft threat protection.", + ) + _args_schema.office365 = AAZObjectArg( + options=["--office365"], + arg_group="DataConnector", + ) + _args_schema.office365_project = AAZObjectArg( + options=["--office365-project"], + arg_group="DataConnector", + ) + _args_schema.office_atp = AAZObjectArg( + options=["--office-atp"], + arg_group="DataConnector", + ) + _args_schema.office_irm = AAZObjectArg( + options=["--office-irm"], + arg_group="DataConnector", + ) + _args_schema.office_power_bi = AAZObjectArg( + options=["--office-power-bi"], + arg_group="DataConnector", + ) + _args_schema.threat_intelligence = AAZObjectArg( + options=["--threat-intelligence"], + arg_group="DataConnector", + ) + _args_schema.intelligence_taxii = AAZObjectArg( + options=["--intelligence-taxii"], + arg_group="DataConnector", + help="Threat intelligence taxii.", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="DataConnector", + help="Etag of the azure resource", + nullable=True, + ) + + api_polling = cls._args_schema.api_polling + api_polling.connector_ui_config = AAZObjectArg( + options=["connector-ui-config"], + help="Config to describe the instructions blade", + nullable=True, + ) + cls._build_args_codeless_ui_connector_config_properties_update(api_polling.connector_ui_config) + api_polling.polling_config = AAZObjectArg( + options=["polling-config"], + help="Config to describe the polling instructions", + nullable=True, + ) + + polling_config = cls._args_schema.api_polling.polling_config + polling_config.auth = AAZObjectArg( + options=["auth"], + help="Describe the authentication type of the poller", + ) + polling_config.is_active = AAZBoolArg( + options=["is-active"], + help="The poller active status", + nullable=True, + ) + polling_config.paging = AAZObjectArg( + options=["paging"], + help="Describe the poll request paging config of the poller", + nullable=True, + ) + polling_config.request = AAZObjectArg( + options=["request"], + help="Describe the poll request config parameters of the poller", + ) + polling_config.response = AAZObjectArg( + options=["response"], + help="Describe the response config parameters of the poller", + nullable=True, + ) + + auth = cls._args_schema.api_polling.polling_config.auth + auth.api_key_identifier = AAZStrArg( + options=["api-key-identifier"], + help="A prefix send in the header before the actual token", + nullable=True, + ) + auth.api_key_name = AAZStrArg( + options=["api-key-name"], + help="The header name which the token is sent with", + nullable=True, + ) + auth.auth_type = AAZStrArg( + options=["auth-type"], + help="The authentication type", + ) + auth.authorization_endpoint = AAZStrArg( + options=["authorization-endpoint"], + help="The endpoint used to authorize the user, used in Oauth 2.0 flow", + nullable=True, + ) + auth.flow_name = AAZStrArg( + options=["flow-name"], + help="Describes the flow name, for example 'AuthCode' for Oauth 2.0", + nullable=True, + ) + auth.is_api_key_in_post_payload = AAZStrArg( + options=["is-api-key-in-post-payload"], + help="Marks if the key should sent in header", + nullable=True, + ) + auth.is_client_secret_in_header = AAZBoolArg( + options=["is-client-secret-in-header"], + help="Marks if we should send the client secret in header or payload, used in Oauth 2.0 flow", + nullable=True, + ) + auth.redirection_endpoint = AAZStrArg( + options=["redirection-endpoint"], + help="The redirect endpoint where we will get the authorization code, used in Oauth 2.0 flow", + nullable=True, + ) + auth.scope = AAZStrArg( + options=["scope"], + help="The OAuth token scope", + nullable=True, + ) + auth.token_endpoint = AAZStrArg( + options=["token-endpoint"], + help="The endpoint used to issue a token, used in Oauth 2.0 flow", + nullable=True, + ) + + paging = cls._args_schema.api_polling.polling_config.paging + paging.next_page_para_name = AAZStrArg( + options=["next-page-para-name"], + help="Defines the name of a next page attribute", + nullable=True, + ) + paging.next_page_token_json_path = AAZStrArg( + options=["next-page-token-json-path"], + help="Defines the path to a next page token JSON", + nullable=True, + ) + paging.page_count_attribute_path = AAZStrArg( + options=["page-count-attribute-path"], + help="Defines the path to a page count attribute", + nullable=True, + ) + paging.page_size = AAZIntArg( + options=["page-size"], + help="Defines the paging size", + nullable=True, + ) + paging.page_size_para_name = AAZStrArg( + options=["page-size-para-name"], + help="Defines the name of the page size parameter", + nullable=True, + ) + paging.page_time_stamp_attribute_path = AAZStrArg( + options=["page-time-stamp-attribute-path"], + help="Defines the path to a paging time stamp attribute", + nullable=True, + ) + paging.page_total_count_attribute_path = AAZStrArg( + options=["page-total-count-attribute-path"], + help="Defines the path to a page total count attribute", + nullable=True, + ) + paging.paging_type = AAZStrArg( + options=["paging-type"], + help="Describes the type. could be 'None', 'PageToken', 'PageCount', 'TimeStamp'", + ) + paging.search_the_latest_time_stamp_from_events_list = AAZStrArg( + options=["search-the-latest-time-stamp-from-events-list"], + help="Determines whether to search for the latest time stamp in the events list", + nullable=True, + ) + + request = cls._args_schema.api_polling.polling_config.request + request.api_endpoint = AAZStrArg( + options=["api-endpoint"], + help="Describe the endpoint we should pull the data from", + ) + request.end_time_attribute_name = AAZStrArg( + options=["end-time-attribute-name"], + help="This will be used the query events from the end of the time window", + nullable=True, + ) + request.http_method = AAZStrArg( + options=["http-method"], + help="The http method type we will use in the poll request, GET or POST", + ) + request.query_parameters_template = AAZStrArg( + options=["query-parameters-template"], + help="For advanced scenarios for example user name/password embedded in nested JSON payload", + nullable=True, + ) + request.query_time_format = AAZStrArg( + options=["query-time-format"], + help="The time format will be used the query events in a specific window", + ) + request.query_window_in_min = AAZIntArg( + options=["query-window-in-min"], + help="The window interval we will use the pull the data", + ) + request.rate_limit_qps = AAZIntArg( + options=["rate-limit-qps"], + help="Defines the rate limit QPS", + nullable=True, + ) + request.retry_count = AAZIntArg( + options=["retry-count"], + help="Describe the amount of time we should try and poll the data in case of failure", + nullable=True, + ) + request.start_time_attribute_name = AAZStrArg( + options=["start-time-attribute-name"], + help="This will be used the query events from a start of the time window", + nullable=True, + ) + request.timeout_in_seconds = AAZIntArg( + options=["timeout-in-seconds"], + help="The number of seconds we will consider as a request timeout", + nullable=True, + ) + + response = cls._args_schema.api_polling.polling_config.response + response.events_json_paths = AAZListArg( + options=["events-json-paths"], + help="Describes the path we should extract the data in the response", + ) + response.is_gzip_compressed = AAZBoolArg( + options=["is-gzip-compressed"], + help="Describes if the data in the response is Gzip", + nullable=True, + ) + response.success_status_json_path = AAZStrArg( + options=["success-status-json-path"], + help="Describes the path we should extract the status code in the response", + nullable=True, + ) + response.success_status_value = AAZStrArg( + options=["success-status-value"], + help="Describes the path we should extract the status value in the response", + nullable=True, + ) + + events_json_paths = cls._args_schema.api_polling.polling_config.response.events_json_paths + events_json_paths.Element = AAZStrArg() + + aws_cloud_trail = cls._args_schema.aws_cloud_trail + aws_cloud_trail.aws_role_arn = AAZStrArg( + options=["aws-role-arn"], + help="The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access the Aws account.", + nullable=True, + ) + aws_cloud_trail.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + + data_types = cls._args_schema.aws_cloud_trail.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + ) + + logs = cls._args_schema.aws_cloud_trail.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + aws_s3 = cls._args_schema.aws_s3 + aws_s3.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + aws_s3.destination_table = AAZStrArg( + options=["destination-table"], + help="The logs destination table name in LogAnalytics.", + ) + aws_s3.role_arn = AAZStrArg( + options=["role-arn"], + help="The Aws Role Arn that is used to access the Aws account.", + ) + aws_s3.sqs_urls = AAZListArg( + options=["sqs-urls"], + help="The AWS sqs urls for the connector.", + ) + + data_types = cls._args_schema.aws_s3.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + ) + + logs = cls._args_schema.aws_s3.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + sqs_urls = cls._args_schema.aws_s3.sqs_urls + sqs_urls.Element = AAZStrArg() + + azure_active_directory = cls._args_schema.azure_active_directory + azure_active_directory.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + nullable=True, + ) + cls._build_args_alerts_data_type_of_data_connector_update(azure_active_directory.data_types) + azure_active_directory.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + azure_protection = cls._args_schema.azure_protection + azure_protection.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + nullable=True, + ) + cls._build_args_alerts_data_type_of_data_connector_update(azure_protection.data_types) + azure_protection.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + azure_security_center = cls._args_schema.azure_security_center + azure_security_center.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + nullable=True, + ) + cls._build_args_alerts_data_type_of_data_connector_update(azure_security_center.data_types) + azure_security_center.subscription_id = AAZStrArg( + options=["subscription-id"], + help="The subscription id to connect to, and get the data from.", + nullable=True, + ) + + dynamics365 = cls._args_schema.dynamics365 + dynamics365.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + dynamics365.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.dynamics365.data_types + data_types.dynamics365_cds_activities = AAZObjectArg( + options=["dynamics365-cds-activities"], + help="Common Data Service data type connection.", + ) + + dynamics365_cds_activities = cls._args_schema.dynamics365.data_types.dynamics365_cds_activities + dynamics365_cds_activities.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + generic_ui = cls._args_schema.generic_ui + generic_ui.connector_ui_config = AAZObjectArg( + options=["connector-ui-config"], + help="Config to describe the instructions blade", + nullable=True, + ) + cls._build_args_codeless_ui_connector_config_properties_update(generic_ui.connector_ui_config) + + iot = cls._args_schema.iot + iot.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + nullable=True, + ) + cls._build_args_alerts_data_type_of_data_connector_update(iot.data_types) + iot.subscription_id = AAZStrArg( + options=["subscription-id"], + help="The subscription id to connect to, and get the data from.", + nullable=True, + ) + + cloud_app_security = cls._args_schema.cloud_app_security + cloud_app_security.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + cloud_app_security.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.cloud_app_security.data_types + data_types.alerts = AAZObjectArg( + options=["alerts"], + help="Alerts data type connection.", + ) + cls._build_args_data_connector_data_type_common_update(data_types.alerts) + data_types.discovery_logs = AAZObjectArg( + options=["discovery-logs"], + help="Discovery log data type connection.", + ) + cls._build_args_data_connector_data_type_common_update(data_types.discovery_logs) + + defender_protection = cls._args_schema.defender_protection + defender_protection.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + nullable=True, + ) + cls._build_args_alerts_data_type_of_data_connector_update(defender_protection.data_types) + defender_protection.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + microsoft_intelligence = cls._args_schema.microsoft_intelligence + microsoft_intelligence.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + microsoft_intelligence.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.microsoft_intelligence.data_types + data_types.bing_safety_phishing_url = AAZObjectArg( + options=["bing-safety-phishing-url"], + help="Data type for Microsoft Threat Intelligence Platforms data connector.", + ) + data_types.microsoft_emerging_threat_feed = AAZObjectArg( + options=["microsoft-emerging-threat-feed"], + help="Data type for Microsoft Threat Intelligence Platforms data connector.", + ) + + bing_safety_phishing_url = cls._args_schema.microsoft_intelligence.data_types.bing_safety_phishing_url + bing_safety_phishing_url.lookback_period = AAZStrArg( + options=["lookback-period"], + help="lookback period", + ) + bing_safety_phishing_url.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + microsoft_emerging_threat_feed = cls._args_schema.microsoft_intelligence.data_types.microsoft_emerging_threat_feed + microsoft_emerging_threat_feed.lookback_period = AAZStrArg( + options=["lookback-period"], + help="lookback period", + ) + microsoft_emerging_threat_feed.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + microsoft_protection = cls._args_schema.microsoft_protection + microsoft_protection.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + microsoft_protection.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.microsoft_protection.data_types + data_types.incidents = AAZObjectArg( + options=["incidents"], + help="Data type for Microsoft Threat Protection Platforms data connector.", + ) + + incidents = cls._args_schema.microsoft_protection.data_types.incidents + incidents.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + office365 = cls._args_schema.office365 + office365.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + office365.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.office365.data_types + data_types.exchange = AAZObjectArg( + options=["exchange"], + help="Exchange data type connection.", + ) + data_types.share_point = AAZObjectArg( + options=["share-point"], + help="SharePoint data type connection.", + ) + data_types.teams = AAZObjectArg( + options=["teams"], + help="Teams data type connection.", + ) + + exchange = cls._args_schema.office365.data_types.exchange + exchange.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + share_point = cls._args_schema.office365.data_types.share_point + share_point.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + teams = cls._args_schema.office365.data_types.teams + teams.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + office365_project = cls._args_schema.office365_project + office365_project.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + office365_project.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.office365_project.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + ) + + logs = cls._args_schema.office365_project.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + office_atp = cls._args_schema.office_atp + office_atp.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + nullable=True, + ) + cls._build_args_alerts_data_type_of_data_connector_update(office_atp.data_types) + office_atp.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + office_irm = cls._args_schema.office_irm + office_irm.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + nullable=True, + ) + cls._build_args_alerts_data_type_of_data_connector_update(office_irm.data_types) + office_irm.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + office_power_bi = cls._args_schema.office_power_bi + office_power_bi.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + office_power_bi.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + + data_types = cls._args_schema.office_power_bi.data_types + data_types.logs = AAZObjectArg( + options=["logs"], + help="Logs data type.", + ) + + logs = cls._args_schema.office_power_bi.data_types.logs + logs.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + threat_intelligence = cls._args_schema.threat_intelligence + threat_intelligence.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for the connector.", + ) + threat_intelligence.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + threat_intelligence.tip_lookback_period = AAZStrArg( + options=["tip-lookback-period"], + help="The lookback period for the feed to be imported.", + nullable=True, + ) + + data_types = cls._args_schema.threat_intelligence.data_types + data_types.indicators = AAZObjectArg( + options=["indicators"], + help="Data type for indicators connection.", + ) + + indicators = cls._args_schema.threat_intelligence.data_types.indicators + indicators.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + intelligence_taxii = cls._args_schema.intelligence_taxii + intelligence_taxii.collection_id = AAZStrArg( + options=["collection-id"], + help="The collection id of the TAXII server.", + nullable=True, + ) + intelligence_taxii.data_types = AAZObjectArg( + options=["data-types"], + help="The available data types for Threat Intelligence TAXII data connector.", + ) + intelligence_taxii.friendly_name = AAZStrArg( + options=["friendly-name"], + help="The friendly name for the TAXII server.", + nullable=True, + ) + intelligence_taxii.password = AAZStrArg( + options=["password"], + help="The password for the TAXII server.", + nullable=True, + ) + intelligence_taxii.polling_frequency = AAZStrArg( + options=["polling-frequency"], + help="The polling frequency for the TAXII server.", + nullable=True, + enum={"OnceADay": "OnceADay", "OnceAMinute": "OnceAMinute", "OnceAnHour": "OnceAnHour"}, + ) + intelligence_taxii.taxii_lookback_period = AAZStrArg( + options=["taxii-lookback-period"], + help="The lookback period for the TAXII server.", + nullable=True, + ) + intelligence_taxii.taxii_server = AAZStrArg( + options=["taxii-server"], + help="The API root for the TAXII server.", + nullable=True, + ) + intelligence_taxii.tenant_id = AAZStrArg( + options=["tenant-id"], + help="The tenant id to connect to, and get the data from.", + ) + intelligence_taxii.user_name = AAZStrArg( + options=["user-name"], + help="The userName for the TAXII server.", + nullable=True, + ) + intelligence_taxii.workspace_id = AAZStrArg( + options=["workspace-id"], + help="The workspace id.", + nullable=True, + ) + + data_types = cls._args_schema.intelligence_taxii.data_types + data_types.taxii_client = AAZObjectArg( + options=["taxii-client"], + help="Data type for TAXII connector.", + ) + + taxii_client = cls._args_schema.intelligence_taxii.data_types.taxii_client + taxii_client.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + return cls._args_schema + + _args_alerts_data_type_of_data_connector_update = None + + @classmethod + def _build_args_alerts_data_type_of_data_connector_update(cls, _schema): + if cls._args_alerts_data_type_of_data_connector_update is not None: + _schema.alerts = cls._args_alerts_data_type_of_data_connector_update.alerts + return + + cls._args_alerts_data_type_of_data_connector_update = AAZObjectArg( + nullable=True, + ) + + alerts_data_type_of_data_connector_update = cls._args_alerts_data_type_of_data_connector_update + alerts_data_type_of_data_connector_update.alerts = AAZObjectArg( + options=["alerts"], + help="Alerts data type connection.", + ) + cls._build_args_data_connector_data_type_common_update(alerts_data_type_of_data_connector_update.alerts) + + _schema.alerts = cls._args_alerts_data_type_of_data_connector_update.alerts + + _args_codeless_ui_connector_config_properties_update = None + + @classmethod + def _build_args_codeless_ui_connector_config_properties_update(cls, _schema): + if cls._args_codeless_ui_connector_config_properties_update is not None: + _schema.availability = cls._args_codeless_ui_connector_config_properties_update.availability + _schema.connectivity_criteria = cls._args_codeless_ui_connector_config_properties_update.connectivity_criteria + _schema.custom_image = cls._args_codeless_ui_connector_config_properties_update.custom_image + _schema.data_types = cls._args_codeless_ui_connector_config_properties_update.data_types + _schema.description_markdown = cls._args_codeless_ui_connector_config_properties_update.description_markdown + _schema.graph_queries = cls._args_codeless_ui_connector_config_properties_update.graph_queries + _schema.graph_queries_table_name = cls._args_codeless_ui_connector_config_properties_update.graph_queries_table_name + _schema.instruction_steps = cls._args_codeless_ui_connector_config_properties_update.instruction_steps + _schema.permissions = cls._args_codeless_ui_connector_config_properties_update.permissions + _schema.publisher = cls._args_codeless_ui_connector_config_properties_update.publisher + _schema.sample_queries = cls._args_codeless_ui_connector_config_properties_update.sample_queries + _schema.title = cls._args_codeless_ui_connector_config_properties_update.title + return + + cls._args_codeless_ui_connector_config_properties_update = AAZObjectArg( + nullable=True, + ) + + codeless_ui_connector_config_properties_update = cls._args_codeless_ui_connector_config_properties_update + codeless_ui_connector_config_properties_update.availability = AAZObjectArg( + options=["availability"], + help="Connector Availability Status", + ) + codeless_ui_connector_config_properties_update.connectivity_criteria = AAZListArg( + options=["connectivity-criteria"], + help="Define the way the connector check connectivity", + ) + codeless_ui_connector_config_properties_update.custom_image = AAZStrArg( + options=["custom-image"], + help="An optional custom image to be used when displaying the connector within Azure Sentinel's connector's gallery", + nullable=True, + ) + codeless_ui_connector_config_properties_update.data_types = AAZListArg( + options=["data-types"], + help="Data types to check for last data received", + ) + codeless_ui_connector_config_properties_update.description_markdown = AAZStrArg( + options=["description-markdown"], + help="Connector description", + ) + codeless_ui_connector_config_properties_update.graph_queries = AAZListArg( + options=["graph-queries"], + help="The graph query to show the current data status", + ) + codeless_ui_connector_config_properties_update.graph_queries_table_name = AAZStrArg( + options=["graph-queries-table-name"], + help="Name of the table the connector will insert the data to", + ) + codeless_ui_connector_config_properties_update.instruction_steps = AAZListArg( + options=["instruction-steps"], + help="Instruction steps to enable the connector", + ) + codeless_ui_connector_config_properties_update.permissions = AAZObjectArg( + options=["permissions"], + help="Permissions required for the connector", + ) + codeless_ui_connector_config_properties_update.publisher = AAZStrArg( + options=["publisher"], + help="Connector publisher name", + ) + codeless_ui_connector_config_properties_update.sample_queries = AAZListArg( + options=["sample-queries"], + help="The sample queries for the connector", + ) + codeless_ui_connector_config_properties_update.title = AAZStrArg( + options=["title"], + help="Connector blade title", + ) + + availability = cls._args_codeless_ui_connector_config_properties_update.availability + availability.is_preview = AAZBoolArg( + options=["is-preview"], + help="Set connector as preview", + nullable=True, + ) + availability.status = AAZIntArg( + options=["status"], + help="The connector Availability Status", + nullable=True, + enum={"1": 1}, + ) + + connectivity_criteria = cls._args_codeless_ui_connector_config_properties_update.connectivity_criteria + connectivity_criteria.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.connectivity_criteria.Element + _element.type = AAZStrArg( + options=["type"], + help="type of connectivity", + nullable=True, + enum={"IsConnectedQuery": "IsConnectedQuery"}, + ) + _element.value = AAZListArg( + options=["value"], + help="Queries for checking connectivity", + nullable=True, + ) + + value = cls._args_codeless_ui_connector_config_properties_update.connectivity_criteria.Element.value + value.Element = AAZStrArg() + + data_types = cls._args_codeless_ui_connector_config_properties_update.data_types + data_types.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.data_types.Element + _element.last_data_received_query = AAZStrArg( + options=["last-data-received-query"], + help="Query for indicate last data received", + nullable=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="Name of the data type to show in the graph. can be use with {{graphQueriesTableName}} placeholder", + nullable=True, + ) + + graph_queries = cls._args_codeless_ui_connector_config_properties_update.graph_queries + graph_queries.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.graph_queries.Element + _element.base_query = AAZStrArg( + options=["base-query"], + help="The base query for the graph", + nullable=True, + ) + _element.legend = AAZStrArg( + options=["legend"], + help="The legend for the graph", + nullable=True, + ) + _element.metric_name = AAZStrArg( + options=["metric-name"], + help="the metric that the query is checking", + nullable=True, + ) + + instruction_steps = cls._args_codeless_ui_connector_config_properties_update.instruction_steps + instruction_steps.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.instruction_steps.Element + _element.description = AAZStrArg( + options=["description"], + help="Instruction step description", + nullable=True, + ) + _element.instructions = AAZListArg( + options=["instructions"], + help="Instruction step details", + nullable=True, + ) + _element.title = AAZStrArg( + options=["title"], + help="Instruction step title", + nullable=True, + ) + + instructions = cls._args_codeless_ui_connector_config_properties_update.instruction_steps.Element.instructions + instructions.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.instruction_steps.Element.instructions.Element + _element.type = AAZStrArg( + options=["type"], + help="The kind of the setting", + enum={"CopyableLabel": "CopyableLabel", "InfoMessage": "InfoMessage", "InstructionStepsGroup": "InstructionStepsGroup"}, + ) + + permissions = cls._args_codeless_ui_connector_config_properties_update.permissions + permissions.customs = AAZListArg( + options=["customs"], + help="Customs permissions required for the connector", + nullable=True, + ) + permissions.resource_provider = AAZListArg( + options=["resource-provider"], + help="Resource provider permissions required for the connector", + nullable=True, + ) + + customs = cls._args_codeless_ui_connector_config_properties_update.permissions.customs + customs.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.permissions.customs.Element + _element.description = AAZStrArg( + options=["description"], + help="Customs permissions description", + nullable=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="Customs permissions name", + nullable=True, + ) + + resource_provider = cls._args_codeless_ui_connector_config_properties_update.permissions.resource_provider + resource_provider.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.permissions.resource_provider.Element + _element.permissions_display_text = AAZStrArg( + options=["permissions-display-text"], + help="Permission description text", + nullable=True, + ) + _element.provider = AAZStrArg( + options=["provider"], + help="Provider name", + nullable=True, + enum={"Microsoft.Authorization/policyAssignments": "Microsoft.Authorization/policyAssignments", "Microsoft.OperationalInsights/solutions": "Microsoft.OperationalInsights/solutions", "Microsoft.OperationalInsights/workspaces": "Microsoft.OperationalInsights/workspaces", "Microsoft.OperationalInsights/workspaces/datasources": "Microsoft.OperationalInsights/workspaces/datasources", "Microsoft.OperationalInsights/workspaces/sharedKeys": "Microsoft.OperationalInsights/workspaces/sharedKeys", "microsoft.aadiam/diagnosticSettings": "microsoft.aadiam/diagnosticSettings"}, + ) + _element.provider_display_name = AAZStrArg( + options=["provider-display-name"], + help="Permission provider display name", + nullable=True, + ) + _element.required_permissions = AAZObjectArg( + options=["required-permissions"], + help="Required permissions for the connector", + nullable=True, + ) + _element.scope = AAZStrArg( + options=["scope"], + help="Permission provider scope", + nullable=True, + enum={"ResourceGroup": "ResourceGroup", "Subscription": "Subscription", "Workspace": "Workspace"}, + ) + + required_permissions = cls._args_codeless_ui_connector_config_properties_update.permissions.resource_provider.Element.required_permissions + required_permissions.action = AAZBoolArg( + options=["action"], + help="action permission", + nullable=True, + ) + required_permissions.delete = AAZBoolArg( + options=["delete"], + help="delete permission", + nullable=True, + ) + required_permissions.read = AAZBoolArg( + options=["read"], + help="read permission", + nullable=True, + ) + required_permissions.write = AAZBoolArg( + options=["write"], + help="write permission", + nullable=True, + ) + + sample_queries = cls._args_codeless_ui_connector_config_properties_update.sample_queries + sample_queries.Element = AAZObjectArg() + + _element = cls._args_codeless_ui_connector_config_properties_update.sample_queries.Element + _element.description = AAZStrArg( + options=["description"], + help="The sample query description", + nullable=True, + ) + _element.query = AAZStrArg( + options=["query"], + help="the sample query", + nullable=True, + ) + + _schema.availability = cls._args_codeless_ui_connector_config_properties_update.availability + _schema.connectivity_criteria = cls._args_codeless_ui_connector_config_properties_update.connectivity_criteria + _schema.custom_image = cls._args_codeless_ui_connector_config_properties_update.custom_image + _schema.data_types = cls._args_codeless_ui_connector_config_properties_update.data_types + _schema.description_markdown = cls._args_codeless_ui_connector_config_properties_update.description_markdown + _schema.graph_queries = cls._args_codeless_ui_connector_config_properties_update.graph_queries + _schema.graph_queries_table_name = cls._args_codeless_ui_connector_config_properties_update.graph_queries_table_name + _schema.instruction_steps = cls._args_codeless_ui_connector_config_properties_update.instruction_steps + _schema.permissions = cls._args_codeless_ui_connector_config_properties_update.permissions + _schema.publisher = cls._args_codeless_ui_connector_config_properties_update.publisher + _schema.sample_queries = cls._args_codeless_ui_connector_config_properties_update.sample_queries + _schema.title = cls._args_codeless_ui_connector_config_properties_update.title + + _args_data_connector_data_type_common_update = None + + @classmethod + def _build_args_data_connector_data_type_common_update(cls, _schema): + if cls._args_data_connector_data_type_common_update is not None: + _schema.state = cls._args_data_connector_data_type_common_update.state + return + + cls._args_data_connector_data_type_common_update = AAZObjectArg() + + data_connector_data_type_common_update = cls._args_data_connector_data_type_common_update + data_connector_data_type_common_update.state = AAZStrArg( + options=["state"], + help="Describe whether this data type connection is enabled or not.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + _schema.state = cls._args_data_connector_data_type_common_update.state + + def _execute_operations(self): + self.DataConnectorsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.DataConnectorsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class DataConnectorsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "dataConnectorId", self.ctx.args.data_connector_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_data_connector_read(cls._schema_on_200) + + return cls._schema_on_200 + + class DataConnectorsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "dataConnectorId", self.ctx.args.data_connector_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_data_connector_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "APIPolling", AAZStrType, ".api_polling", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AmazonWebServicesCloudTrail", AAZStrType, ".aws_cloud_trail", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AmazonWebServicesS3", AAZStrType, ".aws_s3", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AzureActiveDirectory", AAZStrType, ".azure_active_directory", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AzureAdvancedThreatProtection", AAZStrType, ".azure_protection", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "AzureSecurityCenter", AAZStrType, ".azure_security_center", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Dynamics365", AAZStrType, ".dynamics365", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "GenericUI", AAZStrType, ".generic_ui", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "IOT", AAZStrType, ".iot", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftCloudAppSecurity", AAZStrType, ".cloud_app_security", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftDefenderAdvancedThreatProtection", AAZStrType, ".defender_protection", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftThreatIntelligence", AAZStrType, ".microsoft_intelligence", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "MicrosoftThreatProtection", AAZStrType, ".microsoft_protection", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Office365", AAZStrType, ".office365", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Office365Project", AAZStrType, ".office365_project", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "OfficeATP", AAZStrType, ".office_atp", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "OfficeIRM", AAZStrType, ".office_irm", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "OfficePowerBI", AAZStrType, ".office_power_bi", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "ThreatIntelligence", AAZStrType, ".threat_intelligence", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "ThreatIntelligenceTaxii", AAZStrType, ".intelligence_taxii", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "APIPolling") + _builder.discriminate_by("kind", "AmazonWebServicesCloudTrail") + _builder.discriminate_by("kind", "AmazonWebServicesS3") + _builder.discriminate_by("kind", "AzureActiveDirectory") + _builder.discriminate_by("kind", "AzureAdvancedThreatProtection") + _builder.discriminate_by("kind", "AzureSecurityCenter") + _builder.discriminate_by("kind", "Dynamics365") + _builder.discriminate_by("kind", "GenericUI") + _builder.discriminate_by("kind", "IOT") + _builder.discriminate_by("kind", "MicrosoftCloudAppSecurity") + _builder.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection") + _builder.discriminate_by("kind", "MicrosoftThreatIntelligence") + _builder.discriminate_by("kind", "MicrosoftThreatProtection") + _builder.discriminate_by("kind", "Office365") + _builder.discriminate_by("kind", "Office365Project") + _builder.discriminate_by("kind", "OfficeATP") + _builder.discriminate_by("kind", "OfficeIRM") + _builder.discriminate_by("kind", "OfficePowerBI") + _builder.discriminate_by("kind", "ThreatIntelligence") + _builder.discriminate_by("kind", "ThreatIntelligenceTaxii") + + disc_api_polling = _builder.get("{kind:APIPolling}") + if disc_api_polling is not None: + disc_api_polling.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:APIPolling}.properties") + if properties is not None: + _build_schema_codeless_ui_connector_config_properties_update(properties.set_prop("connectorUiConfig", AAZObjectType, ".api_polling.connector_ui_config")) + properties.set_prop("pollingConfig", AAZObjectType, ".api_polling.polling_config") + + polling_config = _builder.get("{kind:APIPolling}.properties.pollingConfig") + if polling_config is not None: + polling_config.set_prop("auth", AAZObjectType, ".auth", typ_kwargs={"flags": {"required": True}}) + polling_config.set_prop("isActive", AAZBoolType, ".is_active") + polling_config.set_prop("paging", AAZObjectType, ".paging") + polling_config.set_prop("request", AAZObjectType, ".request", typ_kwargs={"flags": {"required": True}}) + polling_config.set_prop("response", AAZObjectType, ".response") + + auth = _builder.get("{kind:APIPolling}.properties.pollingConfig.auth") + if auth is not None: + auth.set_prop("apiKeyIdentifier", AAZStrType, ".api_key_identifier") + auth.set_prop("apiKeyName", AAZStrType, ".api_key_name") + auth.set_prop("authType", AAZStrType, ".auth_type", typ_kwargs={"flags": {"required": True}}) + auth.set_prop("authorizationEndpoint", AAZStrType, ".authorization_endpoint") + auth.set_prop("flowName", AAZStrType, ".flow_name") + auth.set_prop("isApiKeyInPostPayload", AAZStrType, ".is_api_key_in_post_payload") + auth.set_prop("isClientSecretInHeader", AAZBoolType, ".is_client_secret_in_header") + auth.set_prop("redirectionEndpoint", AAZStrType, ".redirection_endpoint") + auth.set_prop("scope", AAZStrType, ".scope") + auth.set_prop("tokenEndpoint", AAZStrType, ".token_endpoint") + + paging = _builder.get("{kind:APIPolling}.properties.pollingConfig.paging") + if paging is not None: + paging.set_prop("nextPageParaName", AAZStrType, ".next_page_para_name") + paging.set_prop("nextPageTokenJsonPath", AAZStrType, ".next_page_token_json_path") + paging.set_prop("pageCountAttributePath", AAZStrType, ".page_count_attribute_path") + paging.set_prop("pageSize", AAZIntType, ".page_size") + paging.set_prop("pageSizeParaName", AAZStrType, ".page_size_para_name") + paging.set_prop("pageTimeStampAttributePath", AAZStrType, ".page_time_stamp_attribute_path") + paging.set_prop("pageTotalCountAttributePath", AAZStrType, ".page_total_count_attribute_path") + paging.set_prop("pagingType", AAZStrType, ".paging_type", typ_kwargs={"flags": {"required": True}}) + paging.set_prop("searchTheLatestTimeStampFromEventsList", AAZStrType, ".search_the_latest_time_stamp_from_events_list") + + request = _builder.get("{kind:APIPolling}.properties.pollingConfig.request") + if request is not None: + request.set_prop("apiEndpoint", AAZStrType, ".api_endpoint", typ_kwargs={"flags": {"required": True}}) + request.set_prop("endTimeAttributeName", AAZStrType, ".end_time_attribute_name") + request.set_prop("httpMethod", AAZStrType, ".http_method", typ_kwargs={"flags": {"required": True}}) + request.set_prop("queryParametersTemplate", AAZStrType, ".query_parameters_template") + request.set_prop("queryTimeFormat", AAZStrType, ".query_time_format", typ_kwargs={"flags": {"required": True}}) + request.set_prop("queryWindowInMin", AAZIntType, ".query_window_in_min", typ_kwargs={"flags": {"required": True}}) + request.set_prop("rateLimitQps", AAZIntType, ".rate_limit_qps") + request.set_prop("retryCount", AAZIntType, ".retry_count") + request.set_prop("startTimeAttributeName", AAZStrType, ".start_time_attribute_name") + request.set_prop("timeoutInSeconds", AAZIntType, ".timeout_in_seconds") + + response = _builder.get("{kind:APIPolling}.properties.pollingConfig.response") + if response is not None: + response.set_prop("eventsJsonPaths", AAZListType, ".events_json_paths", typ_kwargs={"flags": {"required": True}}) + response.set_prop("isGzipCompressed", AAZBoolType, ".is_gzip_compressed") + response.set_prop("successStatusJsonPath", AAZStrType, ".success_status_json_path") + response.set_prop("successStatusValue", AAZStrType, ".success_status_value") + + events_json_paths = _builder.get("{kind:APIPolling}.properties.pollingConfig.response.eventsJsonPaths") + if events_json_paths is not None: + events_json_paths.set_elements(AAZStrType, ".") + + disc_amazon_web_services_cloud_trail = _builder.get("{kind:AmazonWebServicesCloudTrail}") + if disc_amazon_web_services_cloud_trail is not None: + disc_amazon_web_services_cloud_trail.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AmazonWebServicesCloudTrail}.properties") + if properties is not None: + properties.set_prop("awsRoleArn", AAZStrType, ".aws_cloud_trail.aws_role_arn") + properties.set_prop("dataTypes", AAZObjectType, ".aws_cloud_trail.data_types", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:AmazonWebServicesCloudTrail}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:AmazonWebServicesCloudTrail}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_amazon_web_services_s3 = _builder.get("{kind:AmazonWebServicesS3}") + if disc_amazon_web_services_s3 is not None: + disc_amazon_web_services_s3.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AmazonWebServicesS3}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".aws_s3.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("destinationTable", AAZStrType, ".aws_s3.destination_table", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("roleArn", AAZStrType, ".aws_s3.role_arn", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("sqsUrls", AAZListType, ".aws_s3.sqs_urls", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:AmazonWebServicesS3}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:AmazonWebServicesS3}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + sqs_urls = _builder.get("{kind:AmazonWebServicesS3}.properties.sqsUrls") + if sqs_urls is not None: + sqs_urls.set_elements(AAZStrType, ".") + + disc_azure_active_directory = _builder.get("{kind:AzureActiveDirectory}") + if disc_azure_active_directory is not None: + disc_azure_active_directory.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AzureActiveDirectory}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_update(properties.set_prop("dataTypes", AAZObjectType, ".azure_active_directory.data_types")) + properties.set_prop("tenantId", AAZStrType, ".azure_active_directory.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_azure_advanced_threat_protection = _builder.get("{kind:AzureAdvancedThreatProtection}") + if disc_azure_advanced_threat_protection is not None: + disc_azure_advanced_threat_protection.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AzureAdvancedThreatProtection}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_update(properties.set_prop("dataTypes", AAZObjectType, ".azure_protection.data_types")) + properties.set_prop("tenantId", AAZStrType, ".azure_protection.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_azure_security_center = _builder.get("{kind:AzureSecurityCenter}") + if disc_azure_security_center is not None: + disc_azure_security_center.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:AzureSecurityCenter}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_update(properties.set_prop("dataTypes", AAZObjectType, ".azure_security_center.data_types")) + properties.set_prop("subscriptionId", AAZStrType, ".azure_security_center.subscription_id") + + disc_dynamics365 = _builder.get("{kind:Dynamics365}") + if disc_dynamics365 is not None: + disc_dynamics365.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Dynamics365}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".dynamics365.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".dynamics365.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:Dynamics365}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("dynamics365CdsActivities", AAZObjectType, ".dynamics365_cds_activities", typ_kwargs={"flags": {"required": True}}) + + dynamics365_cds_activities = _builder.get("{kind:Dynamics365}.properties.dataTypes.dynamics365CdsActivities") + if dynamics365_cds_activities is not None: + dynamics365_cds_activities.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_generic_ui = _builder.get("{kind:GenericUI}") + if disc_generic_ui is not None: + disc_generic_ui.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:GenericUI}.properties") + if properties is not None: + _build_schema_codeless_ui_connector_config_properties_update(properties.set_prop("connectorUiConfig", AAZObjectType, ".generic_ui.connector_ui_config")) + + disc_iot = _builder.get("{kind:IOT}") + if disc_iot is not None: + disc_iot.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:IOT}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_update(properties.set_prop("dataTypes", AAZObjectType, ".iot.data_types")) + properties.set_prop("subscriptionId", AAZStrType, ".iot.subscription_id") + + disc_microsoft_cloud_app_security = _builder.get("{kind:MicrosoftCloudAppSecurity}") + if disc_microsoft_cloud_app_security is not None: + disc_microsoft_cloud_app_security.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftCloudAppSecurity}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".cloud_app_security.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".cloud_app_security.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:MicrosoftCloudAppSecurity}.properties.dataTypes") + if data_types is not None: + _build_schema_data_connector_data_type_common_update(data_types.set_prop("alerts", AAZObjectType, ".alerts", typ_kwargs={"flags": {"required": True}})) + _build_schema_data_connector_data_type_common_update(data_types.set_prop("discoveryLogs", AAZObjectType, ".discovery_logs")) + + disc_microsoft_defender_advanced_threat_protection = _builder.get("{kind:MicrosoftDefenderAdvancedThreatProtection}") + if disc_microsoft_defender_advanced_threat_protection is not None: + disc_microsoft_defender_advanced_threat_protection.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftDefenderAdvancedThreatProtection}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_update(properties.set_prop("dataTypes", AAZObjectType, ".defender_protection.data_types")) + properties.set_prop("tenantId", AAZStrType, ".defender_protection.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_microsoft_threat_intelligence = _builder.get("{kind:MicrosoftThreatIntelligence}") + if disc_microsoft_threat_intelligence is not None: + disc_microsoft_threat_intelligence.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftThreatIntelligence}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".microsoft_intelligence.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".microsoft_intelligence.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:MicrosoftThreatIntelligence}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("bingSafetyPhishingURL", AAZObjectType, ".bing_safety_phishing_url", typ_kwargs={"flags": {"required": True}}) + data_types.set_prop("microsoftEmergingThreatFeed", AAZObjectType, ".microsoft_emerging_threat_feed", typ_kwargs={"flags": {"required": True}}) + + bing_safety_phishing_url = _builder.get("{kind:MicrosoftThreatIntelligence}.properties.dataTypes.bingSafetyPhishingURL") + if bing_safety_phishing_url is not None: + bing_safety_phishing_url.set_prop("lookbackPeriod", AAZStrType, ".lookback_period", typ_kwargs={"flags": {"required": True}}) + bing_safety_phishing_url.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + microsoft_emerging_threat_feed = _builder.get("{kind:MicrosoftThreatIntelligence}.properties.dataTypes.microsoftEmergingThreatFeed") + if microsoft_emerging_threat_feed is not None: + microsoft_emerging_threat_feed.set_prop("lookbackPeriod", AAZStrType, ".lookback_period", typ_kwargs={"flags": {"required": True}}) + microsoft_emerging_threat_feed.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_microsoft_threat_protection = _builder.get("{kind:MicrosoftThreatProtection}") + if disc_microsoft_threat_protection is not None: + disc_microsoft_threat_protection.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:MicrosoftThreatProtection}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".microsoft_protection.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".microsoft_protection.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:MicrosoftThreatProtection}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("incidents", AAZObjectType, ".incidents", typ_kwargs={"flags": {"required": True}}) + + incidents = _builder.get("{kind:MicrosoftThreatProtection}.properties.dataTypes.incidents") + if incidents is not None: + incidents.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_office365 = _builder.get("{kind:Office365}") + if disc_office365 is not None: + disc_office365.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Office365}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".office365.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".office365.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:Office365}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("exchange", AAZObjectType, ".exchange", typ_kwargs={"flags": {"required": True}}) + data_types.set_prop("sharePoint", AAZObjectType, ".share_point", typ_kwargs={"flags": {"required": True}}) + data_types.set_prop("teams", AAZObjectType, ".teams", typ_kwargs={"flags": {"required": True}}) + + exchange = _builder.get("{kind:Office365}.properties.dataTypes.exchange") + if exchange is not None: + exchange.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + share_point = _builder.get("{kind:Office365}.properties.dataTypes.sharePoint") + if share_point is not None: + share_point.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + teams = _builder.get("{kind:Office365}.properties.dataTypes.teams") + if teams is not None: + teams.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_office365_project = _builder.get("{kind:Office365Project}") + if disc_office365_project is not None: + disc_office365_project.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Office365Project}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".office365_project.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".office365_project.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:Office365Project}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:Office365Project}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_office_atp = _builder.get("{kind:OfficeATP}") + if disc_office_atp is not None: + disc_office_atp.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:OfficeATP}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_update(properties.set_prop("dataTypes", AAZObjectType, ".office_atp.data_types")) + properties.set_prop("tenantId", AAZStrType, ".office_atp.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_office_irm = _builder.get("{kind:OfficeIRM}") + if disc_office_irm is not None: + disc_office_irm.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:OfficeIRM}.properties") + if properties is not None: + _build_schema_alerts_data_type_of_data_connector_update(properties.set_prop("dataTypes", AAZObjectType, ".office_irm.data_types")) + properties.set_prop("tenantId", AAZStrType, ".office_irm.tenant_id", typ_kwargs={"flags": {"required": True}}) + + disc_office_power_bi = _builder.get("{kind:OfficePowerBI}") + if disc_office_power_bi is not None: + disc_office_power_bi.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:OfficePowerBI}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".office_power_bi.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".office_power_bi.tenant_id", typ_kwargs={"flags": {"required": True}}) + + data_types = _builder.get("{kind:OfficePowerBI}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("logs", AAZObjectType, ".logs", typ_kwargs={"flags": {"required": True}}) + + logs = _builder.get("{kind:OfficePowerBI}.properties.dataTypes.logs") + if logs is not None: + logs.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_threat_intelligence = _builder.get("{kind:ThreatIntelligence}") + if disc_threat_intelligence is not None: + disc_threat_intelligence.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:ThreatIntelligence}.properties") + if properties is not None: + properties.set_prop("dataTypes", AAZObjectType, ".threat_intelligence.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tenantId", AAZStrType, ".threat_intelligence.tenant_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("tipLookbackPeriod", AAZStrType, ".threat_intelligence.tip_lookback_period", typ_kwargs={"nullable": True}) + + data_types = _builder.get("{kind:ThreatIntelligence}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("indicators", AAZObjectType, ".indicators", typ_kwargs={"flags": {"required": True}}) + + indicators = _builder.get("{kind:ThreatIntelligence}.properties.dataTypes.indicators") + if indicators is not None: + indicators.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + disc_threat_intelligence_taxii = _builder.get("{kind:ThreatIntelligenceTaxii}") + if disc_threat_intelligence_taxii is not None: + disc_threat_intelligence_taxii.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:ThreatIntelligenceTaxii}.properties") + if properties is not None: + properties.set_prop("collectionId", AAZStrType, ".intelligence_taxii.collection_id") + properties.set_prop("dataTypes", AAZObjectType, ".intelligence_taxii.data_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("friendlyName", AAZStrType, ".intelligence_taxii.friendly_name") + properties.set_prop("password", AAZStrType, ".intelligence_taxii.password") + properties.set_prop("pollingFrequency", AAZStrType, ".intelligence_taxii.polling_frequency", typ_kwargs={"flags": {"required": True}, "nullable": True}) + properties.set_prop("taxiiLookbackPeriod", AAZStrType, ".intelligence_taxii.taxii_lookback_period", typ_kwargs={"nullable": True}) + properties.set_prop("taxiiServer", AAZStrType, ".intelligence_taxii.taxii_server") + properties.set_prop("tenantId", AAZStrType, ".intelligence_taxii.tenant_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("userName", AAZStrType, ".intelligence_taxii.user_name") + properties.set_prop("workspaceId", AAZStrType, ".intelligence_taxii.workspace_id") + + data_types = _builder.get("{kind:ThreatIntelligenceTaxii}.properties.dataTypes") + if data_types is not None: + data_types.set_prop("taxiiClient", AAZObjectType, ".taxii_client", typ_kwargs={"flags": {"required": True}}) + + taxii_client = _builder.get("{kind:ThreatIntelligenceTaxii}.properties.dataTypes.taxiiClient") + if taxii_client is not None: + taxii_client.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +def _build_schema_alerts_data_type_of_data_connector_update(_builder): + if _builder is None: + return + _build_schema_data_connector_data_type_common_update(_builder.set_prop("alerts", AAZObjectType, ".alerts", typ_kwargs={"flags": {"required": True}})) + + +def _build_schema_codeless_ui_connector_config_properties_update(_builder): + if _builder is None: + return + _builder.set_prop("availability", AAZObjectType, ".availability", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("connectivityCriteria", AAZListType, ".connectivity_criteria", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("customImage", AAZStrType, ".custom_image") + _builder.set_prop("dataTypes", AAZListType, ".data_types", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("descriptionMarkdown", AAZStrType, ".description_markdown", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("graphQueries", AAZListType, ".graph_queries", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("graphQueriesTableName", AAZStrType, ".graph_queries_table_name", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("instructionSteps", AAZListType, ".instruction_steps", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("permissions", AAZObjectType, ".permissions", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("publisher", AAZStrType, ".publisher", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("sampleQueries", AAZListType, ".sample_queries", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("title", AAZStrType, ".title", typ_kwargs={"flags": {"required": True}}) + + availability = _builder.get(".availability") + if availability is not None: + availability.set_prop("isPreview", AAZBoolType, ".is_preview") + availability.set_prop("status", AAZIntType, ".status") + + connectivity_criteria = _builder.get(".connectivityCriteria") + if connectivity_criteria is not None: + connectivity_criteria.set_elements(AAZObjectType) + + _elements = _builder.get(".connectivityCriteria[]") + if _elements is not None: + _elements.set_prop("type", AAZStrType, "@CodelessUiConnectorConfigProperties_update.connectivity_criteria.[].type") + _elements.set_prop("value", AAZListType, "@CodelessUiConnectorConfigProperties_update.connectivity_criteria.[].value") + + value = _builder.get(".connectivityCriteria[].value") + if value is not None: + value.set_elements(AAZStrType, ".") + + data_types = _builder.get(".dataTypes") + if data_types is not None: + data_types.set_elements(AAZObjectType) + + _elements = _builder.get(".dataTypes[]") + if _elements is not None: + _elements.set_prop("lastDataReceivedQuery", AAZStrType, "@CodelessUiConnectorConfigProperties_update.data_types.[].last_data_received_query") + _elements.set_prop("name", AAZStrType, "@CodelessUiConnectorConfigProperties_update.data_types.[].name") + + graph_queries = _builder.get(".graphQueries") + if graph_queries is not None: + graph_queries.set_elements(AAZObjectType) + + _elements = _builder.get(".graphQueries[]") + if _elements is not None: + _elements.set_prop("baseQuery", AAZStrType, "@CodelessUiConnectorConfigProperties_update.graph_queries.[].base_query") + _elements.set_prop("legend", AAZStrType, "@CodelessUiConnectorConfigProperties_update.graph_queries.[].legend") + _elements.set_prop("metricName", AAZStrType, "@CodelessUiConnectorConfigProperties_update.graph_queries.[].metric_name") + + instruction_steps = _builder.get(".instructionSteps") + if instruction_steps is not None: + instruction_steps.set_elements(AAZObjectType) + + _elements = _builder.get(".instructionSteps[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, "@CodelessUiConnectorConfigProperties_update.instruction_steps.[].description") + _elements.set_prop("instructions", AAZListType, "@CodelessUiConnectorConfigProperties_update.instruction_steps.[].instructions") + _elements.set_prop("title", AAZStrType, "@CodelessUiConnectorConfigProperties_update.instruction_steps.[].title") + + instructions = _builder.get(".instructionSteps[].instructions") + if instructions is not None: + instructions.set_elements(AAZObjectType) + + _elements = _builder.get(".instructionSteps[].instructions[]") + if _elements is not None: + _elements.set_prop("type", AAZStrType, "@CodelessUiConnectorConfigProperties_update.instruction_steps.[].instructions.[].type", typ_kwargs={"flags": {"required": True}}) + + permissions = _builder.get(".permissions") + if permissions is not None: + permissions.set_prop("customs", AAZListType, ".customs") + permissions.set_prop("resourceProvider", AAZListType, ".resource_provider") + + customs = _builder.get(".permissions.customs") + if customs is not None: + customs.set_elements(AAZObjectType) + + _elements = _builder.get(".permissions.customs[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, "@CodelessUiConnectorConfigProperties_update.permissions.customs.[].description") + _elements.set_prop("name", AAZStrType, "@CodelessUiConnectorConfigProperties_update.permissions.customs.[].name") + + resource_provider = _builder.get(".permissions.resourceProvider") + if resource_provider is not None: + resource_provider.set_elements(AAZObjectType) + + _elements = _builder.get(".permissions.resourceProvider[]") + if _elements is not None: + _elements.set_prop("permissionsDisplayText", AAZStrType, "@CodelessUiConnectorConfigProperties_update.permissions.resource_provider.[].permissions_display_text") + _elements.set_prop("provider", AAZStrType, "@CodelessUiConnectorConfigProperties_update.permissions.resource_provider.[].provider") + _elements.set_prop("providerDisplayName", AAZStrType, "@CodelessUiConnectorConfigProperties_update.permissions.resource_provider.[].provider_display_name") + _elements.set_prop("requiredPermissions", AAZObjectType, "@CodelessUiConnectorConfigProperties_update.permissions.resource_provider.[].required_permissions") + _elements.set_prop("scope", AAZStrType, "@CodelessUiConnectorConfigProperties_update.permissions.resource_provider.[].scope") + + required_permissions = _builder.get(".permissions.resourceProvider[].requiredPermissions") + if required_permissions is not None: + required_permissions.set_prop("action", AAZBoolType, ".action") + required_permissions.set_prop("delete", AAZBoolType, ".delete") + required_permissions.set_prop("read", AAZBoolType, ".read") + required_permissions.set_prop("write", AAZBoolType, ".write") + + sample_queries = _builder.get(".sampleQueries") + if sample_queries is not None: + sample_queries.set_elements(AAZObjectType) + + _elements = _builder.get(".sampleQueries[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, "@CodelessUiConnectorConfigProperties_update.sample_queries.[].description") + _elements.set_prop("query", AAZStrType, "@CodelessUiConnectorConfigProperties_update.sample_queries.[].query") + + +def _build_schema_data_connector_data_type_common_update(_builder): + if _builder is None: + return + _builder.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + +_schema_alerts_data_type_of_data_connector_read = None + + +def _build_schema_alerts_data_type_of_data_connector_read(_schema): + global _schema_alerts_data_type_of_data_connector_read + if _schema_alerts_data_type_of_data_connector_read is not None: + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + return + + _schema_alerts_data_type_of_data_connector_read = AAZObjectType() + + alerts_data_type_of_data_connector_read = _schema_alerts_data_type_of_data_connector_read + alerts_data_type_of_data_connector_read.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(alerts_data_type_of_data_connector_read.alerts) + + _schema.alerts = _schema_alerts_data_type_of_data_connector_read.alerts + + +_schema_codeless_ui_connector_config_properties_read = None + + +def _build_schema_codeless_ui_connector_config_properties_read(_schema): + global _schema_codeless_ui_connector_config_properties_read + if _schema_codeless_ui_connector_config_properties_read is not None: + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + return + + _schema_codeless_ui_connector_config_properties_read = AAZObjectType() + + codeless_ui_connector_config_properties_read = _schema_codeless_ui_connector_config_properties_read + codeless_ui_connector_config_properties_read.availability = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.connectivity_criteria = AAZListType( + serialized_name="connectivityCriteria", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.custom_image = AAZStrType( + serialized_name="customImage", + ) + codeless_ui_connector_config_properties_read.data_types = AAZListType( + serialized_name="dataTypes", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.description_markdown = AAZStrType( + serialized_name="descriptionMarkdown", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries = AAZListType( + serialized_name="graphQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.graph_queries_table_name = AAZStrType( + serialized_name="graphQueriesTableName", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.instruction_steps = AAZListType( + serialized_name="instructionSteps", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.permissions = AAZObjectType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.publisher = AAZStrType( + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.sample_queries = AAZListType( + serialized_name="sampleQueries", + flags={"required": True}, + ) + codeless_ui_connector_config_properties_read.title = AAZStrType( + flags={"required": True}, + ) + + availability = _schema_codeless_ui_connector_config_properties_read.availability + availability.is_preview = AAZBoolType( + serialized_name="isPreview", + ) + availability.status = AAZIntType() + + connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + connectivity_criteria.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element + _element.type = AAZStrType() + _element.value = AAZListType() + + value = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria.Element.value + value.Element = AAZStrType() + + data_types = _schema_codeless_ui_connector_config_properties_read.data_types + data_types.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.data_types.Element + _element.last_data_received_query = AAZStrType( + serialized_name="lastDataReceivedQuery", + ) + _element.name = AAZStrType() + + graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + graph_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.graph_queries.Element + _element.base_query = AAZStrType( + serialized_name="baseQuery", + ) + _element.legend = AAZStrType() + _element.metric_name = AAZStrType( + serialized_name="metricName", + ) + + instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + instruction_steps.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element + _element.description = AAZStrType() + _element.instructions = AAZListType() + _element.title = AAZStrType() + + instructions = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions + instructions.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.instruction_steps.Element.instructions.Element + _element.type = AAZStrType( + flags={"required": True}, + ) + + permissions = _schema_codeless_ui_connector_config_properties_read.permissions + permissions.customs = AAZListType() + permissions.resource_provider = AAZListType( + serialized_name="resourceProvider", + ) + + customs = _schema_codeless_ui_connector_config_properties_read.permissions.customs + customs.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.customs.Element + _element.description = AAZStrType() + _element.name = AAZStrType() + + resource_provider = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider + resource_provider.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element + _element.permissions_display_text = AAZStrType( + serialized_name="permissionsDisplayText", + ) + _element.provider = AAZStrType() + _element.provider_display_name = AAZStrType( + serialized_name="providerDisplayName", + ) + _element.required_permissions = AAZObjectType( + serialized_name="requiredPermissions", + ) + _element.scope = AAZStrType() + + required_permissions = _schema_codeless_ui_connector_config_properties_read.permissions.resource_provider.Element.required_permissions + required_permissions.action = AAZBoolType() + required_permissions.delete = AAZBoolType() + required_permissions.read = AAZBoolType() + required_permissions.write = AAZBoolType() + + sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + sample_queries.Element = AAZObjectType() + + _element = _schema_codeless_ui_connector_config_properties_read.sample_queries.Element + _element.description = AAZStrType() + _element.query = AAZStrType() + + _schema.availability = _schema_codeless_ui_connector_config_properties_read.availability + _schema.connectivity_criteria = _schema_codeless_ui_connector_config_properties_read.connectivity_criteria + _schema.custom_image = _schema_codeless_ui_connector_config_properties_read.custom_image + _schema.data_types = _schema_codeless_ui_connector_config_properties_read.data_types + _schema.description_markdown = _schema_codeless_ui_connector_config_properties_read.description_markdown + _schema.graph_queries = _schema_codeless_ui_connector_config_properties_read.graph_queries + _schema.graph_queries_table_name = _schema_codeless_ui_connector_config_properties_read.graph_queries_table_name + _schema.instruction_steps = _schema_codeless_ui_connector_config_properties_read.instruction_steps + _schema.permissions = _schema_codeless_ui_connector_config_properties_read.permissions + _schema.publisher = _schema_codeless_ui_connector_config_properties_read.publisher + _schema.sample_queries = _schema_codeless_ui_connector_config_properties_read.sample_queries + _schema.title = _schema_codeless_ui_connector_config_properties_read.title + + +_schema_data_connector_data_type_common_read = None + + +def _build_schema_data_connector_data_type_common_read(_schema): + global _schema_data_connector_data_type_common_read + if _schema_data_connector_data_type_common_read is not None: + _schema.state = _schema_data_connector_data_type_common_read.state + return + + _schema_data_connector_data_type_common_read = AAZObjectType() + + data_connector_data_type_common_read = _schema_data_connector_data_type_common_read + data_connector_data_type_common_read.state = AAZStrType( + flags={"required": True}, + ) + + _schema.state = _schema_data_connector_data_type_common_read.state + + +_schema_data_connector_read = None + + +def _build_schema_data_connector_read(_schema): + global _schema_data_connector_read + if _schema_data_connector_read is not None: + _schema.etag = _schema_data_connector_read.etag + _schema.id = _schema_data_connector_read.id + _schema.kind = _schema_data_connector_read.kind + _schema.name = _schema_data_connector_read.name + _schema.system_data = _schema_data_connector_read.system_data + _schema.type = _schema_data_connector_read.type + _schema.discriminate_by( + "kind", + "APIPolling", + _schema_data_connector_read.discriminate_by( + "kind", + "APIPolling", + ) + ) + _schema.discriminate_by( + "kind", + "AmazonWebServicesCloudTrail", + _schema_data_connector_read.discriminate_by( + "kind", + "AmazonWebServicesCloudTrail", + ) + ) + _schema.discriminate_by( + "kind", + "AmazonWebServicesS3", + _schema_data_connector_read.discriminate_by( + "kind", + "AmazonWebServicesS3", + ) + ) + _schema.discriminate_by( + "kind", + "AzureActiveDirectory", + _schema_data_connector_read.discriminate_by( + "kind", + "AzureActiveDirectory", + ) + ) + _schema.discriminate_by( + "kind", + "AzureAdvancedThreatProtection", + _schema_data_connector_read.discriminate_by( + "kind", + "AzureAdvancedThreatProtection", + ) + ) + _schema.discriminate_by( + "kind", + "AzureSecurityCenter", + _schema_data_connector_read.discriminate_by( + "kind", + "AzureSecurityCenter", + ) + ) + _schema.discriminate_by( + "kind", + "Dynamics365", + _schema_data_connector_read.discriminate_by( + "kind", + "Dynamics365", + ) + ) + _schema.discriminate_by( + "kind", + "GenericUI", + _schema_data_connector_read.discriminate_by( + "kind", + "GenericUI", + ) + ) + _schema.discriminate_by( + "kind", + "IOT", + _schema_data_connector_read.discriminate_by( + "kind", + "IOT", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftCloudAppSecurity", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftCloudAppSecurity", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftDefenderAdvancedThreatProtection", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftDefenderAdvancedThreatProtection", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftThreatIntelligence", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftThreatIntelligence", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftThreatProtection", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftThreatProtection", + ) + ) + _schema.discriminate_by( + "kind", + "Office365", + _schema_data_connector_read.discriminate_by( + "kind", + "Office365", + ) + ) + _schema.discriminate_by( + "kind", + "Office365Project", + _schema_data_connector_read.discriminate_by( + "kind", + "Office365Project", + ) + ) + _schema.discriminate_by( + "kind", + "OfficeATP", + _schema_data_connector_read.discriminate_by( + "kind", + "OfficeATP", + ) + ) + _schema.discriminate_by( + "kind", + "OfficeIRM", + _schema_data_connector_read.discriminate_by( + "kind", + "OfficeIRM", + ) + ) + _schema.discriminate_by( + "kind", + "OfficePowerBI", + _schema_data_connector_read.discriminate_by( + "kind", + "OfficePowerBI", + ) + ) + _schema.discriminate_by( + "kind", + "ThreatIntelligence", + _schema_data_connector_read.discriminate_by( + "kind", + "ThreatIntelligence", + ) + ) + _schema.discriminate_by( + "kind", + "ThreatIntelligenceTaxii", + _schema_data_connector_read.discriminate_by( + "kind", + "ThreatIntelligenceTaxii", + ) + ) + return + + _schema_data_connector_read = AAZObjectType() + + data_connector_read = _schema_data_connector_read + data_connector_read.etag = AAZStrType() + data_connector_read.id = AAZStrType( + flags={"read_only": True}, + ) + data_connector_read.kind = AAZStrType( + flags={"required": True}, + ) + data_connector_read.name = AAZStrType( + flags={"read_only": True}, + ) + data_connector_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + data_connector_read.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = _schema_data_connector_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_api_polling = _schema_data_connector_read.discriminate_by("kind", "APIPolling") + disc_api_polling.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "APIPolling").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + properties.polling_config = AAZObjectType( + serialized_name="pollingConfig", + ) + + polling_config = _schema_data_connector_read.discriminate_by("kind", "APIPolling").properties.polling_config + polling_config.auth = AAZObjectType( + flags={"required": True}, + ) + polling_config.is_active = AAZBoolType( + serialized_name="isActive", + ) + polling_config.paging = AAZObjectType() + polling_config.request = AAZObjectType( + flags={"required": True}, + ) + polling_config.response = AAZObjectType() + + auth = _schema_data_connector_read.discriminate_by("kind", "APIPolling").properties.polling_config.auth + auth.api_key_identifier = AAZStrType( + serialized_name="apiKeyIdentifier", + ) + auth.api_key_name = AAZStrType( + serialized_name="apiKeyName", + ) + auth.auth_type = AAZStrType( + serialized_name="authType", + flags={"required": True}, + ) + auth.authorization_endpoint = AAZStrType( + serialized_name="authorizationEndpoint", + ) + auth.flow_name = AAZStrType( + serialized_name="flowName", + ) + auth.is_api_key_in_post_payload = AAZStrType( + serialized_name="isApiKeyInPostPayload", + ) + auth.is_client_secret_in_header = AAZBoolType( + serialized_name="isClientSecretInHeader", + ) + auth.redirection_endpoint = AAZStrType( + serialized_name="redirectionEndpoint", + ) + auth.scope = AAZStrType() + auth.token_endpoint = AAZStrType( + serialized_name="tokenEndpoint", + ) + + paging = _schema_data_connector_read.discriminate_by("kind", "APIPolling").properties.polling_config.paging + paging.next_page_para_name = AAZStrType( + serialized_name="nextPageParaName", + ) + paging.next_page_token_json_path = AAZStrType( + serialized_name="nextPageTokenJsonPath", + ) + paging.page_count_attribute_path = AAZStrType( + serialized_name="pageCountAttributePath", + ) + paging.page_size = AAZIntType( + serialized_name="pageSize", + ) + paging.page_size_para_name = AAZStrType( + serialized_name="pageSizeParaName", + ) + paging.page_time_stamp_attribute_path = AAZStrType( + serialized_name="pageTimeStampAttributePath", + ) + paging.page_total_count_attribute_path = AAZStrType( + serialized_name="pageTotalCountAttributePath", + ) + paging.paging_type = AAZStrType( + serialized_name="pagingType", + flags={"required": True}, + ) + paging.search_the_latest_time_stamp_from_events_list = AAZStrType( + serialized_name="searchTheLatestTimeStampFromEventsList", + ) + + request = _schema_data_connector_read.discriminate_by("kind", "APIPolling").properties.polling_config.request + request.api_endpoint = AAZStrType( + serialized_name="apiEndpoint", + flags={"required": True}, + ) + request.end_time_attribute_name = AAZStrType( + serialized_name="endTimeAttributeName", + ) + request.http_method = AAZStrType( + serialized_name="httpMethod", + flags={"required": True}, + ) + request.query_parameters_template = AAZStrType( + serialized_name="queryParametersTemplate", + ) + request.query_time_format = AAZStrType( + serialized_name="queryTimeFormat", + flags={"required": True}, + ) + request.query_window_in_min = AAZIntType( + serialized_name="queryWindowInMin", + flags={"required": True}, + ) + request.rate_limit_qps = AAZIntType( + serialized_name="rateLimitQps", + ) + request.retry_count = AAZIntType( + serialized_name="retryCount", + ) + request.start_time_attribute_name = AAZStrType( + serialized_name="startTimeAttributeName", + ) + request.timeout_in_seconds = AAZIntType( + serialized_name="timeoutInSeconds", + ) + + response = _schema_data_connector_read.discriminate_by("kind", "APIPolling").properties.polling_config.response + response.events_json_paths = AAZListType( + serialized_name="eventsJsonPaths", + flags={"required": True}, + ) + response.is_gzip_compressed = AAZBoolType( + serialized_name="isGzipCompressed", + ) + response.success_status_json_path = AAZStrType( + serialized_name="successStatusJsonPath", + ) + response.success_status_value = AAZStrType( + serialized_name="successStatusValue", + ) + + events_json_paths = _schema_data_connector_read.discriminate_by("kind", "APIPolling").properties.polling_config.response.events_json_paths + events_json_paths.Element = AAZStrType() + + disc_amazon_web_services_cloud_trail = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesCloudTrail") + disc_amazon_web_services_cloud_trail.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties + properties.aws_role_arn = AAZStrType( + serialized_name="awsRoleArn", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesCloudTrail").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_amazon_web_services_s3 = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesS3") + disc_amazon_web_services_s3.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesS3").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.destination_table = AAZStrType( + serialized_name="destinationTable", + flags={"required": True}, + ) + properties.role_arn = AAZStrType( + serialized_name="roleArn", + flags={"required": True}, + ) + properties.sqs_urls = AAZListType( + serialized_name="sqsUrls", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesS3").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + sqs_urls = _schema_data_connector_read.discriminate_by("kind", "AmazonWebServicesS3").properties.sqs_urls + sqs_urls.Element = AAZStrType() + + disc_azure_active_directory = _schema_data_connector_read.discriminate_by("kind", "AzureActiveDirectory") + disc_azure_active_directory.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "AzureActiveDirectory").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_advanced_threat_protection = _schema_data_connector_read.discriminate_by("kind", "AzureAdvancedThreatProtection") + disc_azure_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "AzureAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_azure_security_center = _schema_data_connector_read.discriminate_by("kind", "AzureSecurityCenter") + disc_azure_security_center.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "AzureSecurityCenter").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_dynamics365 = _schema_data_connector_read.discriminate_by("kind", "Dynamics365") + disc_dynamics365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "Dynamics365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "Dynamics365").properties.data_types + data_types.dynamics365_cds_activities = AAZObjectType( + serialized_name="dynamics365CdsActivities", + flags={"required": True}, + ) + + dynamics365_cds_activities = _schema_data_connector_read.discriminate_by("kind", "Dynamics365").properties.data_types.dynamics365_cds_activities + dynamics365_cds_activities.state = AAZStrType( + flags={"required": True}, + ) + + disc_generic_ui = _schema_data_connector_read.discriminate_by("kind", "GenericUI") + disc_generic_ui.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "GenericUI").properties + properties.connector_ui_config = AAZObjectType( + serialized_name="connectorUiConfig", + ) + _build_schema_codeless_ui_connector_config_properties_read(properties.connector_ui_config) + + disc_iot = _schema_data_connector_read.discriminate_by("kind", "IOT") + disc_iot.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "IOT").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + ) + + disc_microsoft_cloud_app_security = _schema_data_connector_read.discriminate_by("kind", "MicrosoftCloudAppSecurity") + disc_microsoft_cloud_app_security.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "MicrosoftCloudAppSecurity").properties.data_types + data_types.alerts = AAZObjectType( + flags={"required": True}, + ) + _build_schema_data_connector_data_type_common_read(data_types.alerts) + data_types.discovery_logs = AAZObjectType( + serialized_name="discoveryLogs", + ) + _build_schema_data_connector_data_type_common_read(data_types.discovery_logs) + + disc_microsoft_defender_advanced_threat_protection = _schema_data_connector_read.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection") + disc_microsoft_defender_advanced_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "MicrosoftDefenderAdvancedThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_microsoft_threat_intelligence = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatIntelligence") + disc_microsoft_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types + data_types.bing_safety_phishing_url = AAZObjectType( + serialized_name="bingSafetyPhishingURL", + flags={"required": True}, + ) + data_types.microsoft_emerging_threat_feed = AAZObjectType( + serialized_name="microsoftEmergingThreatFeed", + flags={"required": True}, + ) + + bing_safety_phishing_url = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.bing_safety_phishing_url + bing_safety_phishing_url.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + bing_safety_phishing_url.state = AAZStrType( + flags={"required": True}, + ) + + microsoft_emerging_threat_feed = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatIntelligence").properties.data_types.microsoft_emerging_threat_feed + microsoft_emerging_threat_feed.lookback_period = AAZStrType( + serialized_name="lookbackPeriod", + flags={"required": True}, + ) + microsoft_emerging_threat_feed.state = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_threat_protection = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatProtection") + disc_microsoft_threat_protection.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatProtection").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types + data_types.incidents = AAZObjectType( + flags={"required": True}, + ) + + incidents = _schema_data_connector_read.discriminate_by("kind", "MicrosoftThreatProtection").properties.data_types.incidents + incidents.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365 = _schema_data_connector_read.discriminate_by("kind", "Office365") + disc_office365.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "Office365").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "Office365").properties.data_types + data_types.exchange = AAZObjectType( + flags={"required": True}, + ) + data_types.share_point = AAZObjectType( + serialized_name="sharePoint", + flags={"required": True}, + ) + data_types.teams = AAZObjectType( + flags={"required": True}, + ) + + exchange = _schema_data_connector_read.discriminate_by("kind", "Office365").properties.data_types.exchange + exchange.state = AAZStrType( + flags={"required": True}, + ) + + share_point = _schema_data_connector_read.discriminate_by("kind", "Office365").properties.data_types.share_point + share_point.state = AAZStrType( + flags={"required": True}, + ) + + teams = _schema_data_connector_read.discriminate_by("kind", "Office365").properties.data_types.teams + teams.state = AAZStrType( + flags={"required": True}, + ) + + disc_office365_project = _schema_data_connector_read.discriminate_by("kind", "Office365Project") + disc_office365_project.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "Office365Project").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "Office365Project").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = _schema_data_connector_read.discriminate_by("kind", "Office365Project").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_office_atp = _schema_data_connector_read.discriminate_by("kind", "OfficeATP") + disc_office_atp.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "OfficeATP").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_irm = _schema_data_connector_read.discriminate_by("kind", "OfficeIRM") + disc_office_irm.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "OfficeIRM").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + ) + _build_schema_alerts_data_type_of_data_connector_read(properties.data_types) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + disc_office_power_bi = _schema_data_connector_read.discriminate_by("kind", "OfficePowerBI") + disc_office_power_bi.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "OfficePowerBI").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "OfficePowerBI").properties.data_types + data_types.logs = AAZObjectType( + flags={"required": True}, + ) + + logs = _schema_data_connector_read.discriminate_by("kind", "OfficePowerBI").properties.data_types.logs + logs.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligence") + disc_threat_intelligence.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligence").properties + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.tip_lookback_period = AAZStrType( + serialized_name="tipLookbackPeriod", + nullable=True, + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligence").properties.data_types + data_types.indicators = AAZObjectType( + flags={"required": True}, + ) + + indicators = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligence").properties.data_types.indicators + indicators.state = AAZStrType( + flags={"required": True}, + ) + + disc_threat_intelligence_taxii = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligenceTaxii") + disc_threat_intelligence_taxii.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligenceTaxii").properties + properties.collection_id = AAZStrType( + serialized_name="collectionId", + ) + properties.data_types = AAZObjectType( + serialized_name="dataTypes", + flags={"required": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + ) + properties.password = AAZStrType() + properties.polling_frequency = AAZStrType( + serialized_name="pollingFrequency", + flags={"required": True}, + nullable=True, + ) + properties.taxii_lookback_period = AAZStrType( + serialized_name="taxiiLookbackPeriod", + nullable=True, + ) + properties.taxii_server = AAZStrType( + serialized_name="taxiiServer", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"required": True}, + ) + properties.user_name = AAZStrType( + serialized_name="userName", + ) + properties.workspace_id = AAZStrType( + serialized_name="workspaceId", + ) + + data_types = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types + data_types.taxii_client = AAZObjectType( + serialized_name="taxiiClient", + flags={"required": True}, + ) + + taxii_client = _schema_data_connector_read.discriminate_by("kind", "ThreatIntelligenceTaxii").properties.data_types.taxii_client + taxii_client.state = AAZStrType( + flags={"required": True}, + ) + + _schema.etag = _schema_data_connector_read.etag + _schema.id = _schema_data_connector_read.id + _schema.kind = _schema_data_connector_read.kind + _schema.name = _schema_data_connector_read.name + _schema.system_data = _schema_data_connector_read.system_data + _schema.type = _schema_data_connector_read.type + _schema.discriminate_by( + "kind", + "APIPolling", + _schema_data_connector_read.discriminate_by( + "kind", + "APIPolling", + ) + ) + _schema.discriminate_by( + "kind", + "AmazonWebServicesCloudTrail", + _schema_data_connector_read.discriminate_by( + "kind", + "AmazonWebServicesCloudTrail", + ) + ) + _schema.discriminate_by( + "kind", + "AmazonWebServicesS3", + _schema_data_connector_read.discriminate_by( + "kind", + "AmazonWebServicesS3", + ) + ) + _schema.discriminate_by( + "kind", + "AzureActiveDirectory", + _schema_data_connector_read.discriminate_by( + "kind", + "AzureActiveDirectory", + ) + ) + _schema.discriminate_by( + "kind", + "AzureAdvancedThreatProtection", + _schema_data_connector_read.discriminate_by( + "kind", + "AzureAdvancedThreatProtection", + ) + ) + _schema.discriminate_by( + "kind", + "AzureSecurityCenter", + _schema_data_connector_read.discriminate_by( + "kind", + "AzureSecurityCenter", + ) + ) + _schema.discriminate_by( + "kind", + "Dynamics365", + _schema_data_connector_read.discriminate_by( + "kind", + "Dynamics365", + ) + ) + _schema.discriminate_by( + "kind", + "GenericUI", + _schema_data_connector_read.discriminate_by( + "kind", + "GenericUI", + ) + ) + _schema.discriminate_by( + "kind", + "IOT", + _schema_data_connector_read.discriminate_by( + "kind", + "IOT", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftCloudAppSecurity", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftCloudAppSecurity", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftDefenderAdvancedThreatProtection", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftDefenderAdvancedThreatProtection", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftThreatIntelligence", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftThreatIntelligence", + ) + ) + _schema.discriminate_by( + "kind", + "MicrosoftThreatProtection", + _schema_data_connector_read.discriminate_by( + "kind", + "MicrosoftThreatProtection", + ) + ) + _schema.discriminate_by( + "kind", + "Office365", + _schema_data_connector_read.discriminate_by( + "kind", + "Office365", + ) + ) + _schema.discriminate_by( + "kind", + "Office365Project", + _schema_data_connector_read.discriminate_by( + "kind", + "Office365Project", + ) + ) + _schema.discriminate_by( + "kind", + "OfficeATP", + _schema_data_connector_read.discriminate_by( + "kind", + "OfficeATP", + ) + ) + _schema.discriminate_by( + "kind", + "OfficeIRM", + _schema_data_connector_read.discriminate_by( + "kind", + "OfficeIRM", + ) + ) + _schema.discriminate_by( + "kind", + "OfficePowerBI", + _schema_data_connector_read.discriminate_by( + "kind", + "OfficePowerBI", + ) + ) + _schema.discriminate_by( + "kind", + "ThreatIntelligence", + _schema_data_connector_read.discriminate_by( + "kind", + "ThreatIntelligence", + ) + ) + _schema.discriminate_by( + "kind", + "ThreatIntelligenceTaxii", + _schema_data_connector_read.discriminate_by( + "kind", + "ThreatIntelligenceTaxii", + ) + ) + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/__cmd_group.py new file mode 100644 index 00000000000..bb6c4ba5522 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel enrichment", +) +class __CMDGroup(AAZCommandGroup): + """Manage enrichment with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/__init__.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/__cmd_group.py new file mode 100644 index 00000000000..2e30df4c948 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel enrichment domain-whois", +) +class __CMDGroup(AAZCommandGroup): + """Manage domain whois with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/__init__.py new file mode 100644 index 00000000000..28d5f355813 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/__init__.py @@ -0,0 +1,12 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._show import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/_show.py new file mode 100644 index 00000000000..c83bc0c95cd --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/domain_whois/_show.py @@ -0,0 +1,242 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel enrichment domain-whois show", + is_experimental=True, +) +class Show(AAZCommand): + """Get whois information for a single domain name + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.securityinsights/enrichment/domain/whois/", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.domain = AAZStrArg( + options=["--domain"], + help="Domain name to be enriched", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.DomainWhoisGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class DomainWhoisGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SecurityInsights/enrichment/domain/whois/", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "domain", self.ctx.args.domain, + required=True, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.created = AAZStrType() + _schema_on_200.domain = AAZStrType() + _schema_on_200.expires = AAZStrType() + _schema_on_200.parsed_whois = AAZObjectType( + serialized_name="parsedWhois", + ) + _schema_on_200.server = AAZStrType() + _schema_on_200.updated = AAZStrType() + + parsed_whois = cls._schema_on_200.parsed_whois + parsed_whois.contacts = AAZObjectType() + parsed_whois.name_servers = AAZListType( + serialized_name="nameServers", + ) + parsed_whois.registrar = AAZObjectType() + parsed_whois.statuses = AAZListType() + + contacts = cls._schema_on_200.parsed_whois.contacts + contacts.admin = AAZObjectType() + _build_schema_enrichment_domain_whois_contact_read(contacts.admin) + contacts.billing = AAZObjectType() + _build_schema_enrichment_domain_whois_contact_read(contacts.billing) + contacts.registrant = AAZObjectType() + _build_schema_enrichment_domain_whois_contact_read(contacts.registrant) + contacts.tech = AAZObjectType() + _build_schema_enrichment_domain_whois_contact_read(contacts.tech) + + name_servers = cls._schema_on_200.parsed_whois.name_servers + name_servers.Element = AAZStrType() + + registrar = cls._schema_on_200.parsed_whois.registrar + registrar.abuse_contact_email = AAZStrType( + serialized_name="abuseContactEmail", + ) + registrar.abuse_contact_phone = AAZStrType( + serialized_name="abuseContactPhone", + ) + registrar.iana_id = AAZStrType( + serialized_name="ianaId", + ) + registrar.name = AAZStrType() + registrar.url = AAZStrType() + registrar.whois_server = AAZStrType( + serialized_name="whoisServer", + ) + + statuses = cls._schema_on_200.parsed_whois.statuses + statuses.Element = AAZStrType() + + return cls._schema_on_200 + + +_schema_enrichment_domain_whois_contact_read = None + + +def _build_schema_enrichment_domain_whois_contact_read(_schema): + global _schema_enrichment_domain_whois_contact_read + if _schema_enrichment_domain_whois_contact_read is not None: + _schema.city = _schema_enrichment_domain_whois_contact_read.city + _schema.country = _schema_enrichment_domain_whois_contact_read.country + _schema.email = _schema_enrichment_domain_whois_contact_read.email + _schema.fax = _schema_enrichment_domain_whois_contact_read.fax + _schema.name = _schema_enrichment_domain_whois_contact_read.name + _schema.org = _schema_enrichment_domain_whois_contact_read.org + _schema.phone = _schema_enrichment_domain_whois_contact_read.phone + _schema.postal = _schema_enrichment_domain_whois_contact_read.postal + _schema.state = _schema_enrichment_domain_whois_contact_read.state + _schema.street = _schema_enrichment_domain_whois_contact_read.street + return + + _schema_enrichment_domain_whois_contact_read = AAZObjectType() + + enrichment_domain_whois_contact_read = _schema_enrichment_domain_whois_contact_read + enrichment_domain_whois_contact_read.city = AAZStrType() + enrichment_domain_whois_contact_read.country = AAZStrType() + enrichment_domain_whois_contact_read.email = AAZStrType() + enrichment_domain_whois_contact_read.fax = AAZStrType() + enrichment_domain_whois_contact_read.name = AAZStrType() + enrichment_domain_whois_contact_read.org = AAZStrType() + enrichment_domain_whois_contact_read.phone = AAZStrType() + enrichment_domain_whois_contact_read.postal = AAZStrType() + enrichment_domain_whois_contact_read.state = AAZStrType() + enrichment_domain_whois_contact_read.street = AAZListType() + + street = _schema_enrichment_domain_whois_contact_read.street + street.Element = AAZStrType() + + _schema.city = _schema_enrichment_domain_whois_contact_read.city + _schema.country = _schema_enrichment_domain_whois_contact_read.country + _schema.email = _schema_enrichment_domain_whois_contact_read.email + _schema.fax = _schema_enrichment_domain_whois_contact_read.fax + _schema.name = _schema_enrichment_domain_whois_contact_read.name + _schema.org = _schema_enrichment_domain_whois_contact_read.org + _schema.phone = _schema_enrichment_domain_whois_contact_read.phone + _schema.postal = _schema_enrichment_domain_whois_contact_read.postal + _schema.state = _schema_enrichment_domain_whois_contact_read.state + _schema.street = _schema_enrichment_domain_whois_contact_read.street + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/__cmd_group.py new file mode 100644 index 00000000000..cda7270b3bf --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel enrichment ip-geodata", +) +class __CMDGroup(AAZCommandGroup): + """Manage ip geodata with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/__init__.py new file mode 100644 index 00000000000..28d5f355813 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/__init__.py @@ -0,0 +1,12 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._show import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/_show.py new file mode 100644 index 00000000000..6636f7d3a9b --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/enrichment/ip_geodata/_show.py @@ -0,0 +1,178 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel enrichment ip-geodata show", + is_experimental=True, +) +class Show(AAZCommand): + """Get geodata for a single IP address + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.securityinsights/enrichment/ip/geodata/", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.ip_address = AAZStrArg( + options=["--ip-address"], + help="IP address (v4 or v6) to be enriched", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.IPGeodataGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IPGeodataGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SecurityInsights/enrichment/ip/geodata/", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "ipAddress", self.ctx.args.ip_address, + required=True, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.asn = AAZStrType() + _schema_on_200.carrier = AAZStrType() + _schema_on_200.city = AAZStrType() + _schema_on_200.city_cf = AAZIntType( + serialized_name="cityCf", + ) + _schema_on_200.continent = AAZStrType() + _schema_on_200.country = AAZStrType() + _schema_on_200.country_cf = AAZIntType( + serialized_name="countryCf", + ) + _schema_on_200.ip_addr = AAZStrType( + serialized_name="ipAddr", + ) + _schema_on_200.ip_routing_type = AAZStrType( + serialized_name="ipRoutingType", + ) + _schema_on_200.latitude = AAZStrType() + _schema_on_200.longitude = AAZStrType() + _schema_on_200.organization = AAZStrType() + _schema_on_200.organization_type = AAZStrType( + serialized_name="organizationType", + ) + _schema_on_200.region = AAZStrType() + _schema_on_200.state = AAZStrType() + _schema_on_200.state_cf = AAZIntType( + serialized_name="stateCf", + ) + _schema_on_200.state_code = AAZStrType( + serialized_name="stateCode", + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/__cmd_group.py new file mode 100644 index 00000000000..130beedd856 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel entity-query", +) +class __CMDGroup(AAZCommandGroup): + """Manage entity query with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_create.py new file mode 100644 index 00000000000..edba2948fc2 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_create.py @@ -0,0 +1,407 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel entity-query create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the entity query. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/entityqueries/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.entity_query_id = AAZStrArg( + options=["-n", "--name", "--entity-query-id"], + help="entity query ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "EntityQuery" + + _args_schema = cls._args_schema + _args_schema.activity = AAZObjectArg( + options=["--activity"], + arg_group="EntityQuery", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="EntityQuery", + help="Etag of the azure resource", + ) + + activity = cls._args_schema.activity + activity.content = AAZStrArg( + options=["content"], + help="The entity query content to display in timeline", + ) + activity.description = AAZStrArg( + options=["description"], + help="The entity query description", + ) + activity.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this activity is enabled or disabled.", + ) + activity.entities_filter = AAZDictArg( + options=["entities-filter"], + help="The query applied only to entities matching to all filters", + ) + activity.input_entity_type = AAZStrArg( + options=["input-entity-type"], + help="The type of the query's source entity", + enum={"Account": "Account", "AzureResource": "AzureResource", "CloudApplication": "CloudApplication", "DNS": "DNS", "File": "File", "FileHash": "FileHash", "Host": "Host", "HuntingBookmark": "HuntingBookmark", "IP": "IP", "IoTDevice": "IoTDevice", "MailCluster": "MailCluster", "MailMessage": "MailMessage", "Mailbox": "Mailbox", "Malware": "Malware", "Process": "Process", "RegistryKey": "RegistryKey", "RegistryValue": "RegistryValue", "SecurityAlert": "SecurityAlert", "SecurityGroup": "SecurityGroup", "SubmissionMail": "SubmissionMail", "URL": "URL"}, + ) + activity.query_definitions = AAZObjectArg( + options=["query-definitions"], + help="The Activity query definitions", + ) + activity.required_input_fields_sets = AAZListArg( + options=["required-input-fields-sets"], + help="List of the fields of the source entity that are required to run the query", + ) + activity.template_name = AAZStrArg( + options=["template-name"], + help="The template id this activity was created from", + ) + activity.title = AAZStrArg( + options=["title"], + help="The entity query title", + ) + + entities_filter = cls._args_schema.activity.entities_filter + entities_filter.Element = AAZListArg() + + _element = cls._args_schema.activity.entities_filter.Element + _element.Element = AAZStrArg() + + query_definitions = cls._args_schema.activity.query_definitions + query_definitions.query = AAZStrArg( + options=["query"], + help="The Activity query to run on a given entity", + ) + + required_input_fields_sets = cls._args_schema.activity.required_input_fields_sets + required_input_fields_sets.Element = AAZListArg() + + _element = cls._args_schema.activity.required_input_fields_sets.Element + _element.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.EntityQueriesCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class EntityQueriesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueries/{entityQueryId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "entityQueryId", self.ctx.args.entity_query_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "Activity", AAZStrType, ".activity", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "Activity") + + disc_activity = _builder.get("{kind:Activity}") + if disc_activity is not None: + disc_activity.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Activity}.properties") + if properties is not None: + properties.set_prop("content", AAZStrType, ".activity.content") + properties.set_prop("description", AAZStrType, ".activity.description") + properties.set_prop("enabled", AAZBoolType, ".activity.enabled") + properties.set_prop("entitiesFilter", AAZDictType, ".activity.entities_filter") + properties.set_prop("inputEntityType", AAZStrType, ".activity.input_entity_type") + properties.set_prop("queryDefinitions", AAZObjectType, ".activity.query_definitions") + properties.set_prop("requiredInputFieldsSets", AAZListType, ".activity.required_input_fields_sets") + properties.set_prop("templateName", AAZStrType, ".activity.template_name") + properties.set_prop("title", AAZStrType, ".activity.title") + + entities_filter = _builder.get("{kind:Activity}.properties.entitiesFilter") + if entities_filter is not None: + entities_filter.set_elements(AAZListType) + + _elements = _builder.get("{kind:Activity}.properties.entitiesFilter{}") + if _elements is not None: + _elements.set_elements(AAZStrType, ".") + + query_definitions = _builder.get("{kind:Activity}.properties.queryDefinitions") + if query_definitions is not None: + query_definitions.set_prop("query", AAZStrType, ".query") + + required_input_fields_sets = _builder.get("{kind:Activity}.properties.requiredInputFieldsSets") + if required_input_fields_sets is not None: + required_input_fields_sets.set_elements(AAZListType) + + _elements = _builder.get("{kind:Activity}.properties.requiredInputFieldsSets[]") + if _elements is not None: + _elements.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_activity = cls._schema_on_200_201.discriminate_by("kind", "Activity") + disc_activity.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Activity").properties + properties.content = AAZStrType() + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.entities_filter = AAZDictType( + serialized_name="entitiesFilter", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.query_definitions = AAZObjectType( + serialized_name="queryDefinitions", + ) + properties.required_input_fields_sets = AAZListType( + serialized_name="requiredInputFieldsSets", + ) + properties.template_name = AAZStrType( + serialized_name="templateName", + ) + properties.title = AAZStrType() + + entities_filter = cls._schema_on_200_201.discriminate_by("kind", "Activity").properties.entities_filter + entities_filter.Element = AAZListType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "Activity").properties.entities_filter.Element + _element.Element = AAZStrType() + + query_definitions = cls._schema_on_200_201.discriminate_by("kind", "Activity").properties.query_definitions + query_definitions.query = AAZStrType() + + required_input_fields_sets = cls._schema_on_200_201.discriminate_by("kind", "Activity").properties.required_input_fields_sets + required_input_fields_sets.Element = AAZListType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "Activity").properties.required_input_fields_sets.Element + _element.Element = AAZStrType() + + disc_expansion = cls._schema_on_200_201.discriminate_by("kind", "Expansion") + disc_expansion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "Expansion").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.input_fields = AAZListType( + serialized_name="inputFields", + ) + properties.output_entity_types = AAZListType( + serialized_name="outputEntityTypes", + ) + properties.query_template = AAZStrType( + serialized_name="queryTemplate", + ) + + data_sources = cls._schema_on_200_201.discriminate_by("kind", "Expansion").properties.data_sources + data_sources.Element = AAZStrType() + + input_fields = cls._schema_on_200_201.discriminate_by("kind", "Expansion").properties.input_fields + input_fields.Element = AAZStrType() + + output_entity_types = cls._schema_on_200_201.discriminate_by("kind", "Expansion").properties.output_entity_types + output_entity_types.Element = AAZStrType() + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_delete.py new file mode 100644 index 00000000000..f91ba226a9d --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel entity-query delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the entity query. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/entityqueries/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.entity_query_id = AAZStrArg( + options=["-n", "--name", "--entity-query-id"], + help="entity query ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.EntityQueriesDelete(ctx=self.ctx)() + + class EntityQueriesDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueries/{entityQueryId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "entityQueryId", self.ctx.args.entity_query_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_list.py new file mode 100644 index 00000000000..dfe0a277498 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_list.py @@ -0,0 +1,294 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel entity-query list", + is_experimental=True, +) +class List(AAZCommand): + """Get all entity queries. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/entityqueries", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.kind = AAZStrArg( + options=["--kind"], + help="The entity query kind we want to fetch", + enum={"Activity": "Activity", "Expansion": "Expansion"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.EntityQueriesList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class EntityQueriesList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueries", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "kind", self.ctx.args.kind, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_activity = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity") + disc_activity.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties + properties.content = AAZStrType() + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.entities_filter = AAZDictType( + serialized_name="entitiesFilter", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.query_definitions = AAZObjectType( + serialized_name="queryDefinitions", + ) + properties.required_input_fields_sets = AAZListType( + serialized_name="requiredInputFieldsSets", + ) + properties.template_name = AAZStrType( + serialized_name="templateName", + ) + properties.title = AAZStrType() + + entities_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.entities_filter + entities_filter.Element = AAZListType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.entities_filter.Element + _element.Element = AAZStrType() + + query_definitions = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.query_definitions + query_definitions.query = AAZStrType() + + required_input_fields_sets = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.required_input_fields_sets + required_input_fields_sets.Element = AAZListType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.required_input_fields_sets.Element + _element.Element = AAZStrType() + + disc_expansion = cls._schema_on_200.value.Element.discriminate_by("kind", "Expansion") + disc_expansion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Expansion").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.input_fields = AAZListType( + serialized_name="inputFields", + ) + properties.output_entity_types = AAZListType( + serialized_name="outputEntityTypes", + ) + properties.query_template = AAZStrType( + serialized_name="queryTemplate", + ) + + data_sources = cls._schema_on_200.value.Element.discriminate_by("kind", "Expansion").properties.data_sources + data_sources.Element = AAZStrType() + + input_fields = cls._schema_on_200.value.Element.discriminate_by("kind", "Expansion").properties.input_fields + input_fields.Element = AAZStrType() + + output_entity_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Expansion").properties.output_entity_types + output_entity_types.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_show.py new file mode 100644 index 00000000000..5ed9dc148f7 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_show.py @@ -0,0 +1,285 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel entity-query show", + is_experimental=True, +) +class Show(AAZCommand): + """Get an entity query. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/entityqueries/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.entity_query_id = AAZStrArg( + options=["-n", "--name", "--entity-query-id"], + help="entity query ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.EntityQueriesGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class EntityQueriesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueries/{entityQueryId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "entityQueryId", self.ctx.args.entity_query_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_activity = cls._schema_on_200.discriminate_by("kind", "Activity") + disc_activity.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Activity").properties + properties.content = AAZStrType() + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.entities_filter = AAZDictType( + serialized_name="entitiesFilter", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.query_definitions = AAZObjectType( + serialized_name="queryDefinitions", + ) + properties.required_input_fields_sets = AAZListType( + serialized_name="requiredInputFieldsSets", + ) + properties.template_name = AAZStrType( + serialized_name="templateName", + ) + properties.title = AAZStrType() + + entities_filter = cls._schema_on_200.discriminate_by("kind", "Activity").properties.entities_filter + entities_filter.Element = AAZListType() + + _element = cls._schema_on_200.discriminate_by("kind", "Activity").properties.entities_filter.Element + _element.Element = AAZStrType() + + query_definitions = cls._schema_on_200.discriminate_by("kind", "Activity").properties.query_definitions + query_definitions.query = AAZStrType() + + required_input_fields_sets = cls._schema_on_200.discriminate_by("kind", "Activity").properties.required_input_fields_sets + required_input_fields_sets.Element = AAZListType() + + _element = cls._schema_on_200.discriminate_by("kind", "Activity").properties.required_input_fields_sets.Element + _element.Element = AAZStrType() + + disc_expansion = cls._schema_on_200.discriminate_by("kind", "Expansion") + disc_expansion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Expansion").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.input_fields = AAZListType( + serialized_name="inputFields", + ) + properties.output_entity_types = AAZListType( + serialized_name="outputEntityTypes", + ) + properties.query_template = AAZStrType( + serialized_name="queryTemplate", + ) + + data_sources = cls._schema_on_200.discriminate_by("kind", "Expansion").properties.data_sources + data_sources.Element = AAZStrType() + + input_fields = cls._schema_on_200.discriminate_by("kind", "Expansion").properties.input_fields + input_fields.Element = AAZStrType() + + output_entity_types = cls._schema_on_200.discriminate_by("kind", "Expansion").properties.output_entity_types + output_entity_types.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_update.py new file mode 100644 index 00000000000..8999fb986c5 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/_update.py @@ -0,0 +1,588 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel entity-query update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the entity query. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/entityqueries/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.entity_query_id = AAZStrArg( + options=["-n", "--name", "--entity-query-id"], + help="entity query ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "EntityQuery" + + _args_schema = cls._args_schema + _args_schema.activity = AAZObjectArg( + options=["--activity"], + arg_group="EntityQuery", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="EntityQuery", + help="Etag of the azure resource", + nullable=True, + ) + + activity = cls._args_schema.activity + activity.content = AAZStrArg( + options=["content"], + help="The entity query content to display in timeline", + nullable=True, + ) + activity.description = AAZStrArg( + options=["description"], + help="The entity query description", + nullable=True, + ) + activity.enabled = AAZBoolArg( + options=["enabled"], + help="Determines whether this activity is enabled or disabled.", + nullable=True, + ) + activity.entities_filter = AAZDictArg( + options=["entities-filter"], + help="The query applied only to entities matching to all filters", + nullable=True, + ) + activity.input_entity_type = AAZStrArg( + options=["input-entity-type"], + help="The type of the query's source entity", + nullable=True, + enum={"Account": "Account", "AzureResource": "AzureResource", "CloudApplication": "CloudApplication", "DNS": "DNS", "File": "File", "FileHash": "FileHash", "Host": "Host", "HuntingBookmark": "HuntingBookmark", "IP": "IP", "IoTDevice": "IoTDevice", "MailCluster": "MailCluster", "MailMessage": "MailMessage", "Mailbox": "Mailbox", "Malware": "Malware", "Process": "Process", "RegistryKey": "RegistryKey", "RegistryValue": "RegistryValue", "SecurityAlert": "SecurityAlert", "SecurityGroup": "SecurityGroup", "SubmissionMail": "SubmissionMail", "URL": "URL"}, + ) + activity.query_definitions = AAZObjectArg( + options=["query-definitions"], + help="The Activity query definitions", + nullable=True, + ) + activity.required_input_fields_sets = AAZListArg( + options=["required-input-fields-sets"], + help="List of the fields of the source entity that are required to run the query", + nullable=True, + ) + activity.template_name = AAZStrArg( + options=["template-name"], + help="The template id this activity was created from", + nullable=True, + ) + activity.title = AAZStrArg( + options=["title"], + help="The entity query title", + nullable=True, + ) + + entities_filter = cls._args_schema.activity.entities_filter + entities_filter.Element = AAZListArg() + + _element = cls._args_schema.activity.entities_filter.Element + _element.Element = AAZStrArg() + + query_definitions = cls._args_schema.activity.query_definitions + query_definitions.query = AAZStrArg( + options=["query"], + help="The Activity query to run on a given entity", + nullable=True, + ) + + required_input_fields_sets = cls._args_schema.activity.required_input_fields_sets + required_input_fields_sets.Element = AAZListArg() + + _element = cls._args_schema.activity.required_input_fields_sets.Element + _element.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.EntityQueriesGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.EntityQueriesCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class EntityQueriesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueries/{entityQueryId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "entityQueryId", self.ctx.args.entity_query_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_entity_query_read(cls._schema_on_200) + + return cls._schema_on_200 + + class EntityQueriesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueries/{entityQueryId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "entityQueryId", self.ctx.args.entity_query_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_entity_query_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "Activity", AAZStrType, ".activity", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "Activity") + + disc_activity = _builder.get("{kind:Activity}") + if disc_activity is not None: + disc_activity.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Activity}.properties") + if properties is not None: + properties.set_prop("content", AAZStrType, ".activity.content") + properties.set_prop("description", AAZStrType, ".activity.description") + properties.set_prop("enabled", AAZBoolType, ".activity.enabled") + properties.set_prop("entitiesFilter", AAZDictType, ".activity.entities_filter") + properties.set_prop("inputEntityType", AAZStrType, ".activity.input_entity_type") + properties.set_prop("queryDefinitions", AAZObjectType, ".activity.query_definitions") + properties.set_prop("requiredInputFieldsSets", AAZListType, ".activity.required_input_fields_sets") + properties.set_prop("templateName", AAZStrType, ".activity.template_name") + properties.set_prop("title", AAZStrType, ".activity.title") + + entities_filter = _builder.get("{kind:Activity}.properties.entitiesFilter") + if entities_filter is not None: + entities_filter.set_elements(AAZListType) + + _elements = _builder.get("{kind:Activity}.properties.entitiesFilter{}") + if _elements is not None: + _elements.set_elements(AAZStrType, ".") + + query_definitions = _builder.get("{kind:Activity}.properties.queryDefinitions") + if query_definitions is not None: + query_definitions.set_prop("query", AAZStrType, ".query") + + required_input_fields_sets = _builder.get("{kind:Activity}.properties.requiredInputFieldsSets") + if required_input_fields_sets is not None: + required_input_fields_sets.set_elements(AAZListType) + + _elements = _builder.get("{kind:Activity}.properties.requiredInputFieldsSets[]") + if _elements is not None: + _elements.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_entity_query_read = None + + +def _build_schema_entity_query_read(_schema): + global _schema_entity_query_read + if _schema_entity_query_read is not None: + _schema.etag = _schema_entity_query_read.etag + _schema.id = _schema_entity_query_read.id + _schema.kind = _schema_entity_query_read.kind + _schema.name = _schema_entity_query_read.name + _schema.system_data = _schema_entity_query_read.system_data + _schema.type = _schema_entity_query_read.type + _schema.discriminate_by( + "kind", + "Activity", + _schema_entity_query_read.discriminate_by( + "kind", + "Activity", + ) + ) + _schema.discriminate_by( + "kind", + "Expansion", + _schema_entity_query_read.discriminate_by( + "kind", + "Expansion", + ) + ) + return + + _schema_entity_query_read = AAZObjectType() + + entity_query_read = _schema_entity_query_read + entity_query_read.etag = AAZStrType() + entity_query_read.id = AAZStrType( + flags={"read_only": True}, + ) + entity_query_read.kind = AAZStrType( + flags={"required": True}, + ) + entity_query_read.name = AAZStrType( + flags={"read_only": True}, + ) + entity_query_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + entity_query_read.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = _schema_entity_query_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_activity = _schema_entity_query_read.discriminate_by("kind", "Activity") + disc_activity.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_entity_query_read.discriminate_by("kind", "Activity").properties + properties.content = AAZStrType() + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.entities_filter = AAZDictType( + serialized_name="entitiesFilter", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.query_definitions = AAZObjectType( + serialized_name="queryDefinitions", + ) + properties.required_input_fields_sets = AAZListType( + serialized_name="requiredInputFieldsSets", + ) + properties.template_name = AAZStrType( + serialized_name="templateName", + ) + properties.title = AAZStrType() + + entities_filter = _schema_entity_query_read.discriminate_by("kind", "Activity").properties.entities_filter + entities_filter.Element = AAZListType() + + _element = _schema_entity_query_read.discriminate_by("kind", "Activity").properties.entities_filter.Element + _element.Element = AAZStrType() + + query_definitions = _schema_entity_query_read.discriminate_by("kind", "Activity").properties.query_definitions + query_definitions.query = AAZStrType() + + required_input_fields_sets = _schema_entity_query_read.discriminate_by("kind", "Activity").properties.required_input_fields_sets + required_input_fields_sets.Element = AAZListType() + + _element = _schema_entity_query_read.discriminate_by("kind", "Activity").properties.required_input_fields_sets.Element + _element.Element = AAZStrType() + + disc_expansion = _schema_entity_query_read.discriminate_by("kind", "Expansion") + disc_expansion.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_entity_query_read.discriminate_by("kind", "Expansion").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.input_fields = AAZListType( + serialized_name="inputFields", + ) + properties.output_entity_types = AAZListType( + serialized_name="outputEntityTypes", + ) + properties.query_template = AAZStrType( + serialized_name="queryTemplate", + ) + + data_sources = _schema_entity_query_read.discriminate_by("kind", "Expansion").properties.data_sources + data_sources.Element = AAZStrType() + + input_fields = _schema_entity_query_read.discriminate_by("kind", "Expansion").properties.input_fields + input_fields.Element = AAZStrType() + + output_entity_types = _schema_entity_query_read.discriminate_by("kind", "Expansion").properties.output_entity_types + output_entity_types.Element = AAZStrType() + + _schema.etag = _schema_entity_query_read.etag + _schema.id = _schema_entity_query_read.id + _schema.kind = _schema_entity_query_read.kind + _schema.name = _schema_entity_query_read.name + _schema.system_data = _schema_entity_query_read.system_data + _schema.type = _schema_entity_query_read.type + _schema.discriminate_by( + "kind", + "Activity", + _schema_entity_query_read.discriminate_by( + "kind", + "Activity", + ) + ) + _schema.discriminate_by( + "kind", + "Expansion", + _schema_entity_query_read.discriminate_by( + "kind", + "Expansion", + ) + ) + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/__cmd_group.py new file mode 100644 index 00000000000..91049c1fe8f --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel entity-query template", +) +class __CMDGroup(AAZCommandGroup): + """Manage entity query template with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/__init__.py new file mode 100644 index 00000000000..2df85698253 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/__init__.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._list import * +from ._show import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/_list.py new file mode 100644 index 00000000000..1bb9910b114 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/_list.py @@ -0,0 +1,261 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel entity-query template list", + is_experimental=True, +) +class List(AAZCommand): + """Get all entity query templates. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/entityquerytemplates", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.kind = AAZStrArg( + options=["--kind"], + help="The entity template query kind we want to fetch", + enum={"Activity": "Activity"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.EntityQueryTemplatesList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class EntityQueryTemplatesList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueryTemplates", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "kind", self.ctx.args.kind, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_activity = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity") + disc_activity.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties + properties.content = AAZStrType() + properties.data_types = AAZListType( + serialized_name="dataTypes", + ) + properties.description = AAZStrType() + properties.entities_filter = AAZDictType( + serialized_name="entitiesFilter", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.query_definitions = AAZObjectType( + serialized_name="queryDefinitions", + ) + properties.required_input_fields_sets = AAZListType( + serialized_name="requiredInputFieldsSets", + ) + properties.title = AAZStrType() + + data_types = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.data_types + data_types.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.data_types.Element + _element.data_type = AAZStrType( + serialized_name="dataType", + ) + + entities_filter = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.entities_filter + entities_filter.Element = AAZListType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.entities_filter.Element + _element.Element = AAZStrType() + + query_definitions = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.query_definitions + query_definitions.query = AAZStrType() + query_definitions.summarize_by = AAZStrType( + serialized_name="summarizeBy", + ) + + required_input_fields_sets = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.required_input_fields_sets + required_input_fields_sets.Element = AAZListType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "Activity").properties.required_input_fields_sets.Element + _element.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/_show.py new file mode 100644 index 00000000000..de178a5a286 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/entity_query/template/_show.py @@ -0,0 +1,252 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel entity-query template show", + is_experimental=True, +) +class Show(AAZCommand): + """Get an entity query. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/entityquerytemplates/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.entity_query_template_id = AAZStrArg( + options=["-n", "--name", "--entity-query-template-id"], + help="entity query template ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.EntityQueryTemplatesGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class EntityQueryTemplatesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/entityQueryTemplates/{entityQueryTemplateId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "entityQueryTemplateId", self.ctx.args.entity_query_template_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_activity = cls._schema_on_200.discriminate_by("kind", "Activity") + disc_activity.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Activity").properties + properties.content = AAZStrType() + properties.data_types = AAZListType( + serialized_name="dataTypes", + ) + properties.description = AAZStrType() + properties.entities_filter = AAZDictType( + serialized_name="entitiesFilter", + ) + properties.input_entity_type = AAZStrType( + serialized_name="inputEntityType", + ) + properties.query_definitions = AAZObjectType( + serialized_name="queryDefinitions", + ) + properties.required_input_fields_sets = AAZListType( + serialized_name="requiredInputFieldsSets", + ) + properties.title = AAZStrType() + + data_types = cls._schema_on_200.discriminate_by("kind", "Activity").properties.data_types + data_types.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "Activity").properties.data_types.Element + _element.data_type = AAZStrType( + serialized_name="dataType", + ) + + entities_filter = cls._schema_on_200.discriminate_by("kind", "Activity").properties.entities_filter + entities_filter.Element = AAZListType() + + _element = cls._schema_on_200.discriminate_by("kind", "Activity").properties.entities_filter.Element + _element.Element = AAZStrType() + + query_definitions = cls._schema_on_200.discriminate_by("kind", "Activity").properties.query_definitions + query_definitions.query = AAZStrType() + query_definitions.summarize_by = AAZStrType( + serialized_name="summarizeBy", + ) + + required_input_fields_sets = cls._schema_on_200.discriminate_by("kind", "Activity").properties.required_input_fields_sets + required_input_fields_sets.Element = AAZListType() + + _element = cls._schema_on_200.discriminate_by("kind", "Activity").properties.required_input_fields_sets.Element + _element.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/__cmd_group.py new file mode 100644 index 00000000000..0068f32f032 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel incident", +) +class __CMDGroup(AAZCommandGroup): + """Manage incident with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/__init__.py new file mode 100644 index 00000000000..81156f1fe9e --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/__init__.py @@ -0,0 +1,21 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._create_team import * +from ._delete import * +from ._list import * +from ._list_alert import * +from ._list_bookmark import * +from ._list_entity import * +from ._run_playbook import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_create.py new file mode 100644 index 00000000000..767da7c83b2 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_create.py @@ -0,0 +1,520 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the incident. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["-n", "--name", "--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Incident" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Incident", + help="Etag of the azure resource", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.classification = AAZStrArg( + options=["--classification"], + arg_group="Properties", + help="The reason the incident was closed", + enum={"BenignPositive": "BenignPositive", "FalsePositive": "FalsePositive", "TruePositive": "TruePositive", "Undetermined": "Undetermined"}, + ) + _args_schema.classification_comment = AAZStrArg( + options=["--classification-comment"], + arg_group="Properties", + help="Describes the reason the incident was closed", + ) + _args_schema.classification_reason = AAZStrArg( + options=["--classification-reason"], + arg_group="Properties", + help="The classification reason the incident was closed with", + enum={"InaccurateData": "InaccurateData", "IncorrectAlertLogic": "IncorrectAlertLogic", "SuspiciousActivity": "SuspiciousActivity", "SuspiciousButExpected": "SuspiciousButExpected"}, + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="The description of the incident", + ) + _args_schema.first_activity_time_utc = AAZStrArg( + options=["--first-activity-time-utc"], + arg_group="Properties", + help="The time of the first activity in the incident", + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="List of labels relevant to this incident", + ) + _args_schema.last_activity_time_utc = AAZStrArg( + options=["--last-activity-time-utc"], + arg_group="Properties", + help="The time of the last activity in the incident", + ) + _args_schema.owner = AAZObjectArg( + options=["--owner"], + arg_group="Properties", + help="Describes a user that the incident is assigned to", + ) + _args_schema.provider_incident_id = AAZStrArg( + options=["--provider-incident-id"], + arg_group="Properties", + help="The incident ID assigned by the incident provider", + ) + _args_schema.provider_name = AAZStrArg( + options=["--provider-name"], + arg_group="Properties", + help="The name of the source provider that generated the incident", + ) + _args_schema.severity = AAZStrArg( + options=["--severity"], + arg_group="Properties", + help="The severity of the incident", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + _args_schema.status = AAZStrArg( + options=["--status"], + arg_group="Properties", + help="The status of the incident", + enum={"Active": "Active", "Closed": "Closed", "New": "New"}, + ) + _args_schema.title = AAZStrArg( + options=["--title"], + arg_group="Properties", + help="The title of the incident", + ) + + labels = cls._args_schema.labels + labels.Element = AAZObjectArg() + + _element = cls._args_schema.labels.Element + _element.label_name = AAZStrArg( + options=["label-name"], + help="The name of the label", + required=True, + ) + + owner = cls._args_schema.owner + owner.assigned_to = AAZStrArg( + options=["assigned-to"], + help="The name of the user the incident is assigned to.", + ) + owner.email = AAZStrArg( + options=["email"], + help="The email of the user the incident is assigned to.", + ) + owner.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user the incident is assigned to.", + ) + owner.owner_type = AAZStrArg( + options=["owner-type"], + help="The type of the owner the incident is assigned to.", + enum={"Group": "Group", "Unknown": "Unknown", "User": "User"}, + ) + owner.user_principal_name = AAZStrArg( + options=["user-principal-name"], + help="The user principal name of the user the incident is assigned to.", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("classification", AAZStrType, ".classification") + properties.set_prop("classificationComment", AAZStrType, ".classification_comment") + properties.set_prop("classificationReason", AAZStrType, ".classification_reason") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("firstActivityTimeUtc", AAZStrType, ".first_activity_time_utc") + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("lastActivityTimeUtc", AAZStrType, ".last_activity_time_utc") + properties.set_prop("owner", AAZObjectType, ".owner") + properties.set_prop("providerIncidentId", AAZStrType, ".provider_incident_id") + properties.set_prop("providerName", AAZStrType, ".provider_name") + properties.set_prop("severity", AAZStrType, ".severity", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("status", AAZStrType, ".status", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("title", AAZStrType, ".title", typ_kwargs={"flags": {"required": True}}) + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.labels[]") + if _elements is not None: + _elements.set_prop("labelName", AAZStrType, ".label_name", typ_kwargs={"flags": {"required": True}}) + + owner = _builder.get(".properties.owner") + if owner is not None: + owner.set_prop("assignedTo", AAZStrType, ".assigned_to") + owner.set_prop("email", AAZStrType, ".email") + owner.set_prop("objectId", AAZStrType, ".object_id") + owner.set_prop("ownerType", AAZStrType, ".owner_type") + owner.set_prop("userPrincipalName", AAZStrType, ".user_principal_name") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.additional_data = AAZObjectType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.classification = AAZStrType() + properties.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + properties.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.first_activity_time_utc = AAZStrType( + serialized_name="firstActivityTimeUtc", + ) + properties.incident_number = AAZIntType( + serialized_name="incidentNumber", + flags={"read_only": True}, + ) + properties.incident_url = AAZStrType( + serialized_name="incidentUrl", + flags={"read_only": True}, + ) + properties.labels = AAZListType() + properties.last_activity_time_utc = AAZStrType( + serialized_name="lastActivityTimeUtc", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.owner = AAZObjectType() + properties.provider_incident_id = AAZStrType( + serialized_name="providerIncidentId", + ) + properties.provider_name = AAZStrType( + serialized_name="providerName", + ) + properties.related_analytic_rule_ids = AAZListType( + serialized_name="relatedAnalyticRuleIds", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.team_information = AAZObjectType( + serialized_name="teamInformation", + ) + properties.title = AAZStrType( + flags={"required": True}, + ) + + additional_data = cls._schema_on_200_201.properties.additional_data + additional_data.alert_product_names = AAZListType( + serialized_name="alertProductNames", + flags={"read_only": True}, + ) + additional_data.alerts_count = AAZIntType( + serialized_name="alertsCount", + flags={"read_only": True}, + ) + additional_data.bookmarks_count = AAZIntType( + serialized_name="bookmarksCount", + flags={"read_only": True}, + ) + additional_data.comments_count = AAZIntType( + serialized_name="commentsCount", + flags={"read_only": True}, + ) + additional_data.provider_incident_url = AAZStrType( + serialized_name="providerIncidentUrl", + flags={"read_only": True}, + ) + additional_data.tactics = AAZListType( + flags={"read_only": True}, + ) + additional_data.techniques = AAZListType( + flags={"read_only": True}, + ) + + alert_product_names = cls._schema_on_200_201.properties.additional_data.alert_product_names + alert_product_names.Element = AAZStrType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200_201.properties.additional_data.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200_201.properties.additional_data.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + labels = cls._schema_on_200_201.properties.labels + labels.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = cls._schema_on_200_201.properties.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + related_analytic_rule_ids = cls._schema_on_200_201.properties.related_analytic_rule_ids + related_analytic_rule_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + team_information = cls._schema_on_200_201.properties.team_information + team_information.description = AAZStrType( + flags={"read_only": True}, + ) + team_information.name = AAZStrType( + flags={"read_only": True}, + ) + team_information.primary_channel_url = AAZStrType( + serialized_name="primaryChannelUrl", + flags={"read_only": True}, + ) + team_information.team_creation_time_utc = AAZStrType( + serialized_name="teamCreationTimeUtc", + flags={"read_only": True}, + ) + team_information.team_id = AAZStrType( + serialized_name="teamId", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_create_team.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_create_team.py new file mode 100644 index 00000000000..5042a9c3f5e --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_create_team.py @@ -0,0 +1,231 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident create-team", + is_experimental=True, +) +class CreateTeam(AAZCommand): + """Create a Microsoft team to investigate the incident by sharing information and insights between participants. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/createteam", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + + # define Arg Group "TeamProperties" + + _args_schema = cls._args_schema + _args_schema.group_ids = AAZListArg( + options=["--group-ids"], + arg_group="TeamProperties", + help="List of group IDs to add their members to the team", + ) + _args_schema.member_ids = AAZListArg( + options=["--member-ids"], + arg_group="TeamProperties", + help="List of member IDs to add to the team", + ) + _args_schema.team_description = AAZStrArg( + options=["--team-description"], + arg_group="TeamProperties", + help="The description of the team", + ) + _args_schema.team_name = AAZStrArg( + options=["--team-name"], + arg_group="TeamProperties", + help="The name of the team", + required=True, + ) + + group_ids = cls._args_schema.group_ids + group_ids.Element = AAZStrArg() + + member_ids = cls._args_schema.member_ids + member_ids.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.IncidentsCreateTeam(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentsCreateTeam(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/createTeam", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("groupIds", AAZListType, ".group_ids") + _builder.set_prop("memberIds", AAZListType, ".member_ids") + _builder.set_prop("teamDescription", AAZStrType, ".team_description") + _builder.set_prop("teamName", AAZStrType, ".team_name", typ_kwargs={"flags": {"required": True}}) + + group_ids = _builder.get(".groupIds") + if group_ids is not None: + group_ids.set_elements(AAZStrType, ".") + + member_ids = _builder.get(".memberIds") + if member_ids is not None: + member_ids.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.description = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.primary_channel_url = AAZStrType( + serialized_name="primaryChannelUrl", + flags={"read_only": True}, + ) + _schema_on_200.team_creation_time_utc = AAZStrType( + serialized_name="teamCreationTimeUtc", + flags={"read_only": True}, + ) + _schema_on_200.team_id = AAZStrType( + serialized_name="teamId", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["CreateTeam"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_delete.py new file mode 100644 index 00000000000..b2d64dac1bd --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the incident. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["-n", "--name", "--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsDelete(ctx=self.ctx)() + + class IncidentsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list.py new file mode 100644 index 00000000000..3ee786e78ab --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list.py @@ -0,0 +1,387 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident list", + is_experimental=True, +) +class List(AAZCommand): + """Get all incidents. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.filter = AAZStrArg( + options=["--filter"], + help="Filters the results, based on a Boolean condition. Optional.", + ) + _args_schema.orderby = AAZStrArg( + options=["--orderby"], + help="Sorts the results. Optional.", + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.", + ) + _args_schema.top = AAZIntArg( + options=["--top"], + help="Returns only the first n results. Optional.", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class IncidentsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$filter", self.ctx.args.filter, + ), + **self.serialize_query_param( + "$orderby", self.ctx.args.orderby, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$top", self.ctx.args.top, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.additional_data = AAZObjectType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.classification = AAZStrType() + properties.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + properties.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.first_activity_time_utc = AAZStrType( + serialized_name="firstActivityTimeUtc", + ) + properties.incident_number = AAZIntType( + serialized_name="incidentNumber", + flags={"read_only": True}, + ) + properties.incident_url = AAZStrType( + serialized_name="incidentUrl", + flags={"read_only": True}, + ) + properties.labels = AAZListType() + properties.last_activity_time_utc = AAZStrType( + serialized_name="lastActivityTimeUtc", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.owner = AAZObjectType() + properties.provider_incident_id = AAZStrType( + serialized_name="providerIncidentId", + ) + properties.provider_name = AAZStrType( + serialized_name="providerName", + ) + properties.related_analytic_rule_ids = AAZListType( + serialized_name="relatedAnalyticRuleIds", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.team_information = AAZObjectType( + serialized_name="teamInformation", + ) + properties.title = AAZStrType( + flags={"required": True}, + ) + + additional_data = cls._schema_on_200.value.Element.properties.additional_data + additional_data.alert_product_names = AAZListType( + serialized_name="alertProductNames", + flags={"read_only": True}, + ) + additional_data.alerts_count = AAZIntType( + serialized_name="alertsCount", + flags={"read_only": True}, + ) + additional_data.bookmarks_count = AAZIntType( + serialized_name="bookmarksCount", + flags={"read_only": True}, + ) + additional_data.comments_count = AAZIntType( + serialized_name="commentsCount", + flags={"read_only": True}, + ) + additional_data.provider_incident_url = AAZStrType( + serialized_name="providerIncidentUrl", + flags={"read_only": True}, + ) + additional_data.tactics = AAZListType( + flags={"read_only": True}, + ) + additional_data.techniques = AAZListType( + flags={"read_only": True}, + ) + + alert_product_names = cls._schema_on_200.value.Element.properties.additional_data.alert_product_names + alert_product_names.Element = AAZStrType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.value.Element.properties.additional_data.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.value.Element.properties.additional_data.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + labels = cls._schema_on_200.value.Element.properties.labels + labels.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = cls._schema_on_200.value.Element.properties.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + related_analytic_rule_ids = cls._schema_on_200.value.Element.properties.related_analytic_rule_ids + related_analytic_rule_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + team_information = cls._schema_on_200.value.Element.properties.team_information + team_information.description = AAZStrType( + flags={"read_only": True}, + ) + team_information.name = AAZStrType( + flags={"read_only": True}, + ) + team_information.primary_channel_url = AAZStrType( + serialized_name="primaryChannelUrl", + flags={"read_only": True}, + ) + team_information.team_creation_time_utc = AAZStrType( + serialized_name="teamCreationTimeUtc", + flags={"read_only": True}, + ) + team_information.team_id = AAZStrType( + serialized_name="teamId", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_alert.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_alert.py new file mode 100644 index 00000000000..d31a1e1eece --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_alert.py @@ -0,0 +1,333 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident list-alert", + is_experimental=True, +) +class ListAlert(AAZCommand): + """Get all incident alerts. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/alerts", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsListAlerts(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentsListAlerts(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/alerts", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.alert_display_name = AAZStrType( + serialized_name="alertDisplayName", + flags={"read_only": True}, + ) + properties.alert_link = AAZStrType( + serialized_name="alertLink", + flags={"read_only": True}, + ) + properties.alert_type = AAZStrType( + serialized_name="alertType", + flags={"read_only": True}, + ) + properties.compromised_entity = AAZStrType( + serialized_name="compromisedEntity", + flags={"read_only": True}, + ) + properties.confidence_level = AAZStrType( + serialized_name="confidenceLevel", + flags={"read_only": True}, + ) + properties.confidence_reasons = AAZListType( + serialized_name="confidenceReasons", + flags={"read_only": True}, + ) + properties.confidence_score = AAZFloatType( + serialized_name="confidenceScore", + flags={"read_only": True}, + ) + properties.confidence_score_status = AAZStrType( + serialized_name="confidenceScoreStatus", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.end_time_utc = AAZStrType( + serialized_name="endTimeUtc", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.intent = AAZStrType( + flags={"read_only": True}, + ) + properties.processing_end_time = AAZStrType( + serialized_name="processingEndTime", + flags={"read_only": True}, + ) + properties.product_component_name = AAZStrType( + serialized_name="productComponentName", + flags={"read_only": True}, + ) + properties.product_name = AAZStrType( + serialized_name="productName", + flags={"read_only": True}, + ) + properties.product_version = AAZStrType( + serialized_name="productVersion", + flags={"read_only": True}, + ) + properties.provider_alert_id = AAZStrType( + serialized_name="providerAlertId", + flags={"read_only": True}, + ) + properties.remediation_steps = AAZListType( + serialized_name="remediationSteps", + flags={"read_only": True}, + ) + properties.severity = AAZStrType() + properties.start_time_utc = AAZStrType( + serialized_name="startTimeUtc", + flags={"read_only": True}, + ) + properties.status = AAZStrType( + flags={"read_only": True}, + ) + properties.system_alert_id = AAZStrType( + serialized_name="systemAlertId", + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.time_generated = AAZStrType( + serialized_name="timeGenerated", + flags={"read_only": True}, + ) + properties.vendor_name = AAZStrType( + serialized_name="vendorName", + flags={"read_only": True}, + ) + + confidence_reasons = cls._schema_on_200.value.Element.properties.confidence_reasons + confidence_reasons.Element = AAZObjectType( + flags={"read_only": True}, + ) + + _element = cls._schema_on_200.value.Element.properties.confidence_reasons.Element + _element.reason = AAZStrType( + flags={"read_only": True}, + ) + _element.reason_type = AAZStrType( + serialized_name="reasonType", + flags={"read_only": True}, + ) + + remediation_steps = cls._schema_on_200.value.Element.properties.remediation_steps + remediation_steps.Element = AAZStrType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.value.Element.properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["ListAlert"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_bookmark.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_bookmark.py new file mode 100644 index 00000000000..5136451fdcc --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_bookmark.py @@ -0,0 +1,291 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident list-bookmark", + is_experimental=True, +) +class ListBookmark(AAZCommand): + """Get all incident bookmarks. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/bookmarks", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsListBookmarks(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentsListBookmarks(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/bookmarks", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.event_time = AAZStrType( + serialized_name="eventTime", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.incident_info = AAZObjectType( + serialized_name="incidentInfo", + ) + properties.labels = AAZListType() + properties.notes = AAZStrType() + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_result = AAZStrType( + serialized_name="queryResult", + ) + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + + incident_info = cls._schema_on_200.value.Element.properties.incident_info + incident_info.incident_id = AAZStrType( + serialized_name="incidentId", + ) + incident_info.relation_name = AAZStrType( + serialized_name="relationName", + ) + incident_info.severity = AAZStrType() + incident_info.title = AAZStrType() + + labels = cls._schema_on_200.value.Element.properties.labels + labels.Element = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["ListBookmark"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_entity.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_entity.py new file mode 100644 index 00000000000..d211daab8bc --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_list_entity.py @@ -0,0 +1,1343 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident list-entity", + is_experimental=True, +) +class ListEntity(AAZCommand): + """Get all incident related entities. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/entities", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsListEntities(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentsListEntities(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/entities", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.entities = AAZListType() + _schema_on_200.meta_data = AAZListType( + serialized_name="metaData", + ) + + entities = cls._schema_on_200.entities + entities.Element = AAZObjectType() + + _element = cls._schema_on_200.entities.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.entities.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_account = cls._schema_on_200.entities.Element.discriminate_by("kind", "Account") + disc_account.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Account").properties + properties.aad_tenant_id = AAZStrType( + serialized_name="aadTenantId", + flags={"read_only": True}, + ) + properties.aad_user_id = AAZStrType( + serialized_name="aadUserId", + flags={"read_only": True}, + ) + properties.account_name = AAZStrType( + serialized_name="accountName", + flags={"read_only": True}, + ) + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.dns_domain = AAZStrType( + serialized_name="dnsDomain", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + properties.is_domain_joined = AAZBoolType( + serialized_name="isDomainJoined", + flags={"read_only": True}, + ) + properties.nt_domain = AAZStrType( + serialized_name="ntDomain", + flags={"read_only": True}, + ) + properties.object_guid = AAZStrType( + serialized_name="objectGuid", + flags={"read_only": True}, + ) + properties.puid = AAZStrType( + flags={"read_only": True}, + ) + properties.sid = AAZStrType( + flags={"read_only": True}, + ) + properties.upn_suffix = AAZStrType( + serialized_name="upnSuffix", + flags={"read_only": True}, + ) + + disc_azure_resource = cls._schema_on_200.entities.Element.discriminate_by("kind", "AzureResource") + disc_azure_resource.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "AzureResource").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.resource_id = AAZStrType( + serialized_name="resourceId", + flags={"read_only": True}, + ) + properties.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + + disc_bookmark = cls._schema_on_200.entities.Element.discriminate_by("kind", "Bookmark") + disc_bookmark.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Bookmark").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.event_time = AAZStrType( + serialized_name="eventTime", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.incident_info = AAZObjectType( + serialized_name="incidentInfo", + ) + properties.labels = AAZListType() + properties.notes = AAZStrType() + properties.query = AAZStrType( + flags={"required": True}, + ) + properties.query_result = AAZStrType( + serialized_name="queryResult", + ) + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + + incident_info = cls._schema_on_200.entities.Element.discriminate_by("kind", "Bookmark").properties.incident_info + incident_info.incident_id = AAZStrType( + serialized_name="incidentId", + ) + incident_info.relation_name = AAZStrType( + serialized_name="relationName", + ) + incident_info.severity = AAZStrType() + incident_info.title = AAZStrType() + + labels = cls._schema_on_200.entities.Element.discriminate_by("kind", "Bookmark").properties.labels + labels.Element = AAZStrType() + + disc_cloud_application = cls._schema_on_200.entities.Element.discriminate_by("kind", "CloudApplication") + disc_cloud_application.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "CloudApplication").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.app_id = AAZIntType( + serialized_name="appId", + flags={"read_only": True}, + ) + properties.app_name = AAZStrType( + serialized_name="appName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.instance_name = AAZStrType( + serialized_name="instanceName", + flags={"read_only": True}, + ) + + disc_dns_resolution = cls._schema_on_200.entities.Element.discriminate_by("kind", "DnsResolution") + disc_dns_resolution.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "DnsResolution").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.dns_server_ip_entity_id = AAZStrType( + serialized_name="dnsServerIpEntityId", + flags={"read_only": True}, + ) + properties.domain_name = AAZStrType( + serialized_name="domainName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_ip_address_entity_id = AAZStrType( + serialized_name="hostIpAddressEntityId", + flags={"read_only": True}, + ) + properties.ip_address_entity_ids = AAZListType( + serialized_name="ipAddressEntityIds", + flags={"read_only": True}, + ) + + ip_address_entity_ids = cls._schema_on_200.entities.Element.discriminate_by("kind", "DnsResolution").properties.ip_address_entity_ids + ip_address_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_file = cls._schema_on_200.entities.Element.discriminate_by("kind", "File") + disc_file.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "File").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.directory = AAZStrType( + flags={"read_only": True}, + ) + properties.file_hash_entity_ids = AAZListType( + serialized_name="fileHashEntityIds", + flags={"read_only": True}, + ) + properties.file_name = AAZStrType( + serialized_name="fileName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + + file_hash_entity_ids = cls._schema_on_200.entities.Element.discriminate_by("kind", "File").properties.file_hash_entity_ids + file_hash_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_file_hash = cls._schema_on_200.entities.Element.discriminate_by("kind", "FileHash") + disc_file_hash.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "FileHash").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.algorithm = AAZStrType( + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.hash_value = AAZStrType( + serialized_name="hashValue", + flags={"read_only": True}, + ) + + disc_host = cls._schema_on_200.entities.Element.discriminate_by("kind", "Host") + disc_host.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Host").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.azure_id = AAZStrType( + serialized_name="azureID", + flags={"read_only": True}, + ) + properties.dns_domain = AAZStrType( + serialized_name="dnsDomain", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_name = AAZStrType( + serialized_name="hostName", + flags={"read_only": True}, + ) + properties.is_domain_joined = AAZBoolType( + serialized_name="isDomainJoined", + flags={"read_only": True}, + ) + properties.net_bios_name = AAZStrType( + serialized_name="netBiosName", + flags={"read_only": True}, + ) + properties.nt_domain = AAZStrType( + serialized_name="ntDomain", + flags={"read_only": True}, + ) + properties.oms_agent_id = AAZStrType( + serialized_name="omsAgentID", + flags={"read_only": True}, + ) + properties.os_family = AAZStrType( + serialized_name="osFamily", + ) + properties.os_version = AAZStrType( + serialized_name="osVersion", + flags={"read_only": True}, + ) + + disc_io_t_device = cls._schema_on_200.entities.Element.discriminate_by("kind", "IoTDevice") + disc_io_t_device.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "IoTDevice").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.device_id = AAZStrType( + serialized_name="deviceId", + flags={"read_only": True}, + ) + properties.device_name = AAZStrType( + serialized_name="deviceName", + flags={"read_only": True}, + ) + properties.device_type = AAZStrType( + serialized_name="deviceType", + flags={"read_only": True}, + ) + properties.edge_id = AAZStrType( + serialized_name="edgeId", + flags={"read_only": True}, + ) + properties.firmware_version = AAZStrType( + serialized_name="firmwareVersion", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + properties.iot_hub_entity_id = AAZStrType( + serialized_name="iotHubEntityId", + flags={"read_only": True}, + ) + properties.iot_security_agent_id = AAZStrType( + serialized_name="iotSecurityAgentId", + flags={"read_only": True}, + ) + properties.ip_address_entity_id = AAZStrType( + serialized_name="ipAddressEntityId", + flags={"read_only": True}, + ) + properties.mac_address = AAZStrType( + serialized_name="macAddress", + flags={"read_only": True}, + ) + properties.model = AAZStrType( + flags={"read_only": True}, + ) + properties.operating_system = AAZStrType( + serialized_name="operatingSystem", + flags={"read_only": True}, + ) + properties.protocols = AAZListType( + flags={"read_only": True}, + ) + properties.serial_number = AAZStrType( + serialized_name="serialNumber", + flags={"read_only": True}, + ) + properties.source = AAZStrType( + flags={"read_only": True}, + ) + properties.threat_intelligence = AAZListType( + serialized_name="threatIntelligence", + flags={"read_only": True}, + ) + properties.vendor = AAZStrType( + flags={"read_only": True}, + ) + + protocols = cls._schema_on_200.entities.Element.discriminate_by("kind", "IoTDevice").properties.protocols + protocols.Element = AAZStrType( + flags={"read_only": True}, + ) + + threat_intelligence = cls._schema_on_200.entities.Element.discriminate_by("kind", "IoTDevice").properties.threat_intelligence + threat_intelligence.Element = AAZObjectType( + flags={"read_only": True}, + ) + _build_schema_threat_intelligence_read(threat_intelligence.Element) + + disc_ip = cls._schema_on_200.entities.Element.discriminate_by("kind", "Ip") + disc_ip.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Ip").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.address = AAZStrType( + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.location = AAZObjectType( + flags={"read_only": True}, + ) + properties.threat_intelligence = AAZListType( + serialized_name="threatIntelligence", + flags={"read_only": True}, + ) + + location = cls._schema_on_200.entities.Element.discriminate_by("kind", "Ip").properties.location + location.asn = AAZIntType( + flags={"read_only": True}, + ) + location.city = AAZStrType( + flags={"read_only": True}, + ) + location.country_code = AAZStrType( + serialized_name="countryCode", + flags={"read_only": True}, + ) + location.country_name = AAZStrType( + serialized_name="countryName", + flags={"read_only": True}, + ) + location.latitude = AAZFloatType( + flags={"read_only": True}, + ) + location.longitude = AAZFloatType( + flags={"read_only": True}, + ) + location.state = AAZStrType( + flags={"read_only": True}, + ) + + threat_intelligence = cls._schema_on_200.entities.Element.discriminate_by("kind", "Ip").properties.threat_intelligence + threat_intelligence.Element = AAZObjectType( + flags={"read_only": True}, + ) + _build_schema_threat_intelligence_read(threat_intelligence.Element) + + disc_mail_cluster = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailCluster") + disc_mail_cluster.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailCluster").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.cluster_group = AAZStrType( + serialized_name="clusterGroup", + flags={"read_only": True}, + ) + properties.cluster_query_end_time = AAZStrType( + serialized_name="clusterQueryEndTime", + flags={"read_only": True}, + ) + properties.cluster_query_start_time = AAZStrType( + serialized_name="clusterQueryStartTime", + flags={"read_only": True}, + ) + properties.cluster_source_identifier = AAZStrType( + serialized_name="clusterSourceIdentifier", + flags={"read_only": True}, + ) + properties.cluster_source_type = AAZStrType( + serialized_name="clusterSourceType", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.is_volume_anomaly = AAZBoolType( + serialized_name="isVolumeAnomaly", + flags={"read_only": True}, + ) + properties.mail_count = AAZIntType( + serialized_name="mailCount", + flags={"read_only": True}, + ) + properties.network_message_ids = AAZListType( + serialized_name="networkMessageIds", + flags={"read_only": True}, + ) + properties.query = AAZStrType( + flags={"read_only": True}, + ) + properties.query_time = AAZStrType( + serialized_name="queryTime", + flags={"read_only": True}, + ) + properties.source = AAZStrType( + flags={"read_only": True}, + ) + properties.threats = AAZListType( + flags={"read_only": True}, + ) + + network_message_ids = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailCluster").properties.network_message_ids + network_message_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + threats = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailCluster").properties.threats + threats.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_mail_message = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailMessage") + disc_mail_message.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailMessage").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.antispam_direction = AAZStrType( + serialized_name="antispamDirection", + ) + properties.body_fingerprint_bin1 = AAZIntType( + serialized_name="bodyFingerprintBin1", + ) + properties.body_fingerprint_bin2 = AAZIntType( + serialized_name="bodyFingerprintBin2", + ) + properties.body_fingerprint_bin3 = AAZIntType( + serialized_name="bodyFingerprintBin3", + ) + properties.body_fingerprint_bin4 = AAZIntType( + serialized_name="bodyFingerprintBin4", + ) + properties.body_fingerprint_bin5 = AAZIntType( + serialized_name="bodyFingerprintBin5", + ) + properties.delivery_action = AAZStrType( + serialized_name="deliveryAction", + ) + properties.delivery_location = AAZStrType( + serialized_name="deliveryLocation", + ) + properties.file_entity_ids = AAZListType( + serialized_name="fileEntityIds", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.internet_message_id = AAZStrType( + serialized_name="internetMessageId", + flags={"read_only": True}, + ) + properties.language = AAZStrType( + flags={"read_only": True}, + ) + properties.network_message_id = AAZStrType( + serialized_name="networkMessageId", + flags={"read_only": True}, + ) + properties.p1_sender = AAZStrType( + serialized_name="p1Sender", + flags={"read_only": True}, + ) + properties.p1_sender_display_name = AAZStrType( + serialized_name="p1SenderDisplayName", + flags={"read_only": True}, + ) + properties.p1_sender_domain = AAZStrType( + serialized_name="p1SenderDomain", + flags={"read_only": True}, + ) + properties.p2_sender = AAZStrType( + serialized_name="p2Sender", + flags={"read_only": True}, + ) + properties.p2_sender_display_name = AAZStrType( + serialized_name="p2SenderDisplayName", + flags={"read_only": True}, + ) + properties.p2_sender_domain = AAZStrType( + serialized_name="p2SenderDomain", + flags={"read_only": True}, + ) + properties.receive_date = AAZStrType( + serialized_name="receiveDate", + flags={"read_only": True}, + ) + properties.recipient = AAZStrType( + flags={"read_only": True}, + ) + properties.sender_ip = AAZStrType( + serialized_name="senderIP", + flags={"read_only": True}, + ) + properties.subject = AAZStrType( + flags={"read_only": True}, + ) + properties.threat_detection_methods = AAZListType( + serialized_name="threatDetectionMethods", + flags={"read_only": True}, + ) + properties.threats = AAZListType( + flags={"read_only": True}, + ) + properties.urls = AAZListType( + flags={"read_only": True}, + ) + + file_entity_ids = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailMessage").properties.file_entity_ids + file_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + threat_detection_methods = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailMessage").properties.threat_detection_methods + threat_detection_methods.Element = AAZStrType( + flags={"read_only": True}, + ) + + threats = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailMessage").properties.threats + threats.Element = AAZStrType( + flags={"read_only": True}, + ) + + urls = cls._schema_on_200.entities.Element.discriminate_by("kind", "MailMessage").properties.urls + urls.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_mailbox = cls._schema_on_200.entities.Element.discriminate_by("kind", "Mailbox") + disc_mailbox.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Mailbox").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.external_directory_object_id = AAZStrType( + serialized_name="externalDirectoryObjectId", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.mailbox_primary_address = AAZStrType( + serialized_name="mailboxPrimaryAddress", + flags={"read_only": True}, + ) + properties.upn = AAZStrType( + flags={"read_only": True}, + ) + + disc_malware = cls._schema_on_200.entities.Element.discriminate_by("kind", "Malware") + disc_malware.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Malware").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.category = AAZStrType( + flags={"read_only": True}, + ) + properties.file_entity_ids = AAZListType( + serialized_name="fileEntityIds", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.malware_name = AAZStrType( + serialized_name="malwareName", + flags={"read_only": True}, + ) + properties.process_entity_ids = AAZListType( + serialized_name="processEntityIds", + flags={"read_only": True}, + ) + + file_entity_ids = cls._schema_on_200.entities.Element.discriminate_by("kind", "Malware").properties.file_entity_ids + file_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + process_entity_ids = cls._schema_on_200.entities.Element.discriminate_by("kind", "Malware").properties.process_entity_ids + process_entity_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_process = cls._schema_on_200.entities.Element.discriminate_by("kind", "Process") + disc_process.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Process").properties + properties.account_entity_id = AAZStrType( + serialized_name="accountEntityId", + flags={"read_only": True}, + ) + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.command_line = AAZStrType( + serialized_name="commandLine", + flags={"read_only": True}, + ) + properties.creation_time_utc = AAZStrType( + serialized_name="creationTimeUtc", + flags={"read_only": True}, + ) + properties.elevation_token = AAZStrType( + serialized_name="elevationToken", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.host_entity_id = AAZStrType( + serialized_name="hostEntityId", + flags={"read_only": True}, + ) + properties.host_logon_session_entity_id = AAZStrType( + serialized_name="hostLogonSessionEntityId", + flags={"read_only": True}, + ) + properties.image_file_entity_id = AAZStrType( + serialized_name="imageFileEntityId", + flags={"read_only": True}, + ) + properties.parent_process_entity_id = AAZStrType( + serialized_name="parentProcessEntityId", + flags={"read_only": True}, + ) + properties.process_id = AAZStrType( + serialized_name="processId", + flags={"read_only": True}, + ) + + disc_registry_key = cls._schema_on_200.entities.Element.discriminate_by("kind", "RegistryKey") + disc_registry_key.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "RegistryKey").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.hive = AAZStrType( + flags={"read_only": True}, + ) + properties.key = AAZStrType( + flags={"read_only": True}, + ) + + disc_registry_value = cls._schema_on_200.entities.Element.discriminate_by("kind", "RegistryValue") + disc_registry_value.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "RegistryValue").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.key_entity_id = AAZStrType( + serialized_name="keyEntityId", + flags={"read_only": True}, + ) + properties.value_data = AAZStrType( + serialized_name="valueData", + flags={"read_only": True}, + ) + properties.value_name = AAZStrType( + serialized_name="valueName", + flags={"read_only": True}, + ) + properties.value_type = AAZStrType( + serialized_name="valueType", + flags={"read_only": True}, + ) + + disc_security_alert = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityAlert") + disc_security_alert.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityAlert").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.alert_display_name = AAZStrType( + serialized_name="alertDisplayName", + flags={"read_only": True}, + ) + properties.alert_link = AAZStrType( + serialized_name="alertLink", + flags={"read_only": True}, + ) + properties.alert_type = AAZStrType( + serialized_name="alertType", + flags={"read_only": True}, + ) + properties.compromised_entity = AAZStrType( + serialized_name="compromisedEntity", + flags={"read_only": True}, + ) + properties.confidence_level = AAZStrType( + serialized_name="confidenceLevel", + flags={"read_only": True}, + ) + properties.confidence_reasons = AAZListType( + serialized_name="confidenceReasons", + flags={"read_only": True}, + ) + properties.confidence_score = AAZFloatType( + serialized_name="confidenceScore", + flags={"read_only": True}, + ) + properties.confidence_score_status = AAZStrType( + serialized_name="confidenceScoreStatus", + flags={"read_only": True}, + ) + properties.description = AAZStrType( + flags={"read_only": True}, + ) + properties.end_time_utc = AAZStrType( + serialized_name="endTimeUtc", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.intent = AAZStrType( + flags={"read_only": True}, + ) + properties.processing_end_time = AAZStrType( + serialized_name="processingEndTime", + flags={"read_only": True}, + ) + properties.product_component_name = AAZStrType( + serialized_name="productComponentName", + flags={"read_only": True}, + ) + properties.product_name = AAZStrType( + serialized_name="productName", + flags={"read_only": True}, + ) + properties.product_version = AAZStrType( + serialized_name="productVersion", + flags={"read_only": True}, + ) + properties.provider_alert_id = AAZStrType( + serialized_name="providerAlertId", + flags={"read_only": True}, + ) + properties.remediation_steps = AAZListType( + serialized_name="remediationSteps", + flags={"read_only": True}, + ) + properties.severity = AAZStrType() + properties.start_time_utc = AAZStrType( + serialized_name="startTimeUtc", + flags={"read_only": True}, + ) + properties.status = AAZStrType( + flags={"read_only": True}, + ) + properties.system_alert_id = AAZStrType( + serialized_name="systemAlertId", + flags={"read_only": True}, + ) + properties.tactics = AAZListType( + flags={"read_only": True}, + ) + properties.time_generated = AAZStrType( + serialized_name="timeGenerated", + flags={"read_only": True}, + ) + properties.vendor_name = AAZStrType( + serialized_name="vendorName", + flags={"read_only": True}, + ) + + confidence_reasons = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityAlert").properties.confidence_reasons + confidence_reasons.Element = AAZObjectType( + flags={"read_only": True}, + ) + + _element = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityAlert").properties.confidence_reasons.Element + _element.reason = AAZStrType( + flags={"read_only": True}, + ) + _element.reason_type = AAZStrType( + serialized_name="reasonType", + flags={"read_only": True}, + ) + + remediation_steps = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityAlert").properties.remediation_steps + remediation_steps.Element = AAZStrType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityAlert").properties.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + disc_security_group = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityGroup") + disc_security_group.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "SecurityGroup").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.distinguished_name = AAZStrType( + serialized_name="distinguishedName", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.object_guid = AAZStrType( + serialized_name="objectGuid", + flags={"read_only": True}, + ) + properties.sid = AAZStrType( + flags={"read_only": True}, + ) + + disc_submission_mail = cls._schema_on_200.entities.Element.discriminate_by("kind", "SubmissionMail") + disc_submission_mail.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "SubmissionMail").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.network_message_id = AAZStrType( + serialized_name="networkMessageId", + flags={"read_only": True}, + ) + properties.recipient = AAZStrType( + flags={"read_only": True}, + ) + properties.report_type = AAZStrType( + serialized_name="reportType", + flags={"read_only": True}, + ) + properties.sender = AAZStrType( + flags={"read_only": True}, + ) + properties.sender_ip = AAZStrType( + serialized_name="senderIp", + flags={"read_only": True}, + ) + properties.subject = AAZStrType( + flags={"read_only": True}, + ) + properties.submission_date = AAZStrType( + serialized_name="submissionDate", + flags={"read_only": True}, + ) + properties.submission_id = AAZStrType( + serialized_name="submissionId", + flags={"read_only": True}, + ) + properties.submitter = AAZStrType( + flags={"read_only": True}, + ) + properties.timestamp = AAZStrType( + flags={"read_only": True}, + ) + + disc_url = cls._schema_on_200.entities.Element.discriminate_by("kind", "Url") + disc_url.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.entities.Element.discriminate_by("kind", "Url").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.url = AAZStrType( + flags={"read_only": True}, + ) + + meta_data = cls._schema_on_200.meta_data + meta_data.Element = AAZObjectType() + + _element = cls._schema_on_200.meta_data.Element + _element.count = AAZIntType( + flags={"required": True}, + ) + _element.entity_kind = AAZStrType( + serialized_name="entityKind", + flags={"required": True}, + ) + + return cls._schema_on_200 + + +_schema_threat_intelligence_read = None + + +def _build_schema_threat_intelligence_read(_schema): + global _schema_threat_intelligence_read + if _schema_threat_intelligence_read is not None: + _schema.confidence = _schema_threat_intelligence_read.confidence + _schema.provider_name = _schema_threat_intelligence_read.provider_name + _schema.report_link = _schema_threat_intelligence_read.report_link + _schema.threat_description = _schema_threat_intelligence_read.threat_description + _schema.threat_name = _schema_threat_intelligence_read.threat_name + _schema.threat_type = _schema_threat_intelligence_read.threat_type + return + + _schema_threat_intelligence_read = AAZObjectType( + flags={"read_only": True} + ) + + threat_intelligence_read = _schema_threat_intelligence_read + threat_intelligence_read.confidence = AAZFloatType( + flags={"read_only": True}, + ) + threat_intelligence_read.provider_name = AAZStrType( + serialized_name="providerName", + flags={"read_only": True}, + ) + threat_intelligence_read.report_link = AAZStrType( + serialized_name="reportLink", + flags={"read_only": True}, + ) + threat_intelligence_read.threat_description = AAZStrType( + serialized_name="threatDescription", + flags={"read_only": True}, + ) + threat_intelligence_read.threat_name = AAZStrType( + serialized_name="threatName", + flags={"read_only": True}, + ) + threat_intelligence_read.threat_type = AAZStrType( + serialized_name="threatType", + flags={"read_only": True}, + ) + + _schema.confidence = _schema_threat_intelligence_read.confidence + _schema.provider_name = _schema_threat_intelligence_read.provider_name + _schema.report_link = _schema_threat_intelligence_read.report_link + _schema.threat_description = _schema_threat_intelligence_read.threat_description + _schema.threat_name = _schema_threat_intelligence_read.threat_name + _schema.threat_type = _schema_threat_intelligence_read.threat_type + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["ListEntity"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_run_playbook.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_run_playbook.py new file mode 100644 index 00000000000..879ed7f4913 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_run_playbook.py @@ -0,0 +1,161 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident run-playbook", + is_experimental=True, +) +class RunPlaybook(AAZCommand): + """Trigger playbook on a specific incident + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/runplaybook", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_identifier = AAZStrArg( + options=["--incident-identifier"], + help="Identifier of incident.", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + + # define Arg Group "RequestBody" + + _args_schema = cls._args_schema + _args_schema.logic_apps_resource_id = AAZStrArg( + options=["--logic-apps-resource-id"], + arg_group="RequestBody", + help="Resource ID of logic apps.", + ) + _args_schema.tenant_id = AAZStrArg( + options=["--tenant-id"], + arg_group="RequestBody", + help="ID of tenant.", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsRunPlaybook(ctx=self.ctx)() + + class IncidentsRunPlaybook(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentIdentifier}/runPlaybook", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentIdentifier", self.ctx.args.incident_identifier, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"client_flatten": True}} + ) + _builder.set_prop("logicAppsResourceId", AAZStrType, ".logic_apps_resource_id") + _builder.set_prop("tenantId", AAZStrType, ".tenant_id") + + return self.serialize_content(_content_value) + + def on_204(self, session): + pass + + +__all__ = ["RunPlaybook"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_show.py new file mode 100644 index 00000000000..49f6f57a7e1 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_show.py @@ -0,0 +1,358 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident show", + is_experimental=True, +) +class Show(AAZCommand): + """Get an incident. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["-n", "--name", "--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.additional_data = AAZObjectType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.classification = AAZStrType() + properties.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + properties.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.first_activity_time_utc = AAZStrType( + serialized_name="firstActivityTimeUtc", + ) + properties.incident_number = AAZIntType( + serialized_name="incidentNumber", + flags={"read_only": True}, + ) + properties.incident_url = AAZStrType( + serialized_name="incidentUrl", + flags={"read_only": True}, + ) + properties.labels = AAZListType() + properties.last_activity_time_utc = AAZStrType( + serialized_name="lastActivityTimeUtc", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.owner = AAZObjectType() + properties.provider_incident_id = AAZStrType( + serialized_name="providerIncidentId", + ) + properties.provider_name = AAZStrType( + serialized_name="providerName", + ) + properties.related_analytic_rule_ids = AAZListType( + serialized_name="relatedAnalyticRuleIds", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.team_information = AAZObjectType( + serialized_name="teamInformation", + ) + properties.title = AAZStrType( + flags={"required": True}, + ) + + additional_data = cls._schema_on_200.properties.additional_data + additional_data.alert_product_names = AAZListType( + serialized_name="alertProductNames", + flags={"read_only": True}, + ) + additional_data.alerts_count = AAZIntType( + serialized_name="alertsCount", + flags={"read_only": True}, + ) + additional_data.bookmarks_count = AAZIntType( + serialized_name="bookmarksCount", + flags={"read_only": True}, + ) + additional_data.comments_count = AAZIntType( + serialized_name="commentsCount", + flags={"read_only": True}, + ) + additional_data.provider_incident_url = AAZStrType( + serialized_name="providerIncidentUrl", + flags={"read_only": True}, + ) + additional_data.tactics = AAZListType( + flags={"read_only": True}, + ) + additional_data.techniques = AAZListType( + flags={"read_only": True}, + ) + + alert_product_names = cls._schema_on_200.properties.additional_data.alert_product_names + alert_product_names.Element = AAZStrType( + flags={"read_only": True}, + ) + + tactics = cls._schema_on_200.properties.additional_data.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = cls._schema_on_200.properties.additional_data.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + labels = cls._schema_on_200.properties.labels + labels.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = cls._schema_on_200.properties.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + related_analytic_rule_ids = cls._schema_on_200.properties.related_analytic_rule_ids + related_analytic_rule_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + team_information = cls._schema_on_200.properties.team_information + team_information.description = AAZStrType( + flags={"read_only": True}, + ) + team_information.name = AAZStrType( + flags={"read_only": True}, + ) + team_information.primary_channel_url = AAZStrType( + serialized_name="primaryChannelUrl", + flags={"read_only": True}, + ) + team_information.team_creation_time_utc = AAZStrType( + serialized_name="teamCreationTimeUtc", + flags={"read_only": True}, + ) + team_information.team_id = AAZStrType( + serialized_name="teamId", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_update.py new file mode 100644 index 00000000000..7b026a1e753 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/_update.py @@ -0,0 +1,673 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the incident. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["-n", "--name", "--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Incident" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Incident", + help="Etag of the azure resource", + nullable=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.classification = AAZStrArg( + options=["--classification"], + arg_group="Properties", + help="The reason the incident was closed", + nullable=True, + enum={"BenignPositive": "BenignPositive", "FalsePositive": "FalsePositive", "TruePositive": "TruePositive", "Undetermined": "Undetermined"}, + ) + _args_schema.classification_comment = AAZStrArg( + options=["--classification-comment"], + arg_group="Properties", + help="Describes the reason the incident was closed", + nullable=True, + ) + _args_schema.classification_reason = AAZStrArg( + options=["--classification-reason"], + arg_group="Properties", + help="The classification reason the incident was closed with", + nullable=True, + enum={"InaccurateData": "InaccurateData", "IncorrectAlertLogic": "IncorrectAlertLogic", "SuspiciousActivity": "SuspiciousActivity", "SuspiciousButExpected": "SuspiciousButExpected"}, + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="The description of the incident", + nullable=True, + ) + _args_schema.first_activity_time_utc = AAZStrArg( + options=["--first-activity-time-utc"], + arg_group="Properties", + help="The time of the first activity in the incident", + nullable=True, + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="List of labels relevant to this incident", + nullable=True, + ) + _args_schema.last_activity_time_utc = AAZStrArg( + options=["--last-activity-time-utc"], + arg_group="Properties", + help="The time of the last activity in the incident", + nullable=True, + ) + _args_schema.owner = AAZObjectArg( + options=["--owner"], + arg_group="Properties", + help="Describes a user that the incident is assigned to", + nullable=True, + ) + _args_schema.provider_incident_id = AAZStrArg( + options=["--provider-incident-id"], + arg_group="Properties", + help="The incident ID assigned by the incident provider", + nullable=True, + ) + _args_schema.provider_name = AAZStrArg( + options=["--provider-name"], + arg_group="Properties", + help="The name of the source provider that generated the incident", + nullable=True, + ) + _args_schema.severity = AAZStrArg( + options=["--severity"], + arg_group="Properties", + help="The severity of the incident", + enum={"High": "High", "Informational": "Informational", "Low": "Low", "Medium": "Medium"}, + ) + _args_schema.status = AAZStrArg( + options=["--status"], + arg_group="Properties", + help="The status of the incident", + enum={"Active": "Active", "Closed": "Closed", "New": "New"}, + ) + _args_schema.title = AAZStrArg( + options=["--title"], + arg_group="Properties", + help="The title of the incident", + ) + + labels = cls._args_schema.labels + labels.Element = AAZObjectArg() + + _element = cls._args_schema.labels.Element + _element.label_name = AAZStrArg( + options=["label-name"], + help="The name of the label", + ) + + owner = cls._args_schema.owner + owner.assigned_to = AAZStrArg( + options=["assigned-to"], + help="The name of the user the incident is assigned to.", + nullable=True, + ) + owner.email = AAZStrArg( + options=["email"], + help="The email of the user the incident is assigned to.", + nullable=True, + ) + owner.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user the incident is assigned to.", + nullable=True, + ) + owner.owner_type = AAZStrArg( + options=["owner-type"], + help="The type of the owner the incident is assigned to.", + nullable=True, + enum={"Group": "Group", "Unknown": "Unknown", "User": "User"}, + ) + owner.user_principal_name = AAZStrArg( + options=["user-principal-name"], + help="The user principal name of the user the incident is assigned to.", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.IncidentsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_incident_read(cls._schema_on_200) + + return cls._schema_on_200 + + class IncidentsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_incident_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("classification", AAZStrType, ".classification") + properties.set_prop("classificationComment", AAZStrType, ".classification_comment") + properties.set_prop("classificationReason", AAZStrType, ".classification_reason") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("firstActivityTimeUtc", AAZStrType, ".first_activity_time_utc") + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("lastActivityTimeUtc", AAZStrType, ".last_activity_time_utc") + properties.set_prop("owner", AAZObjectType, ".owner") + properties.set_prop("providerIncidentId", AAZStrType, ".provider_incident_id") + properties.set_prop("providerName", AAZStrType, ".provider_name") + properties.set_prop("severity", AAZStrType, ".severity", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("status", AAZStrType, ".status", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("title", AAZStrType, ".title", typ_kwargs={"flags": {"required": True}}) + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.labels[]") + if _elements is not None: + _elements.set_prop("labelName", AAZStrType, ".label_name", typ_kwargs={"flags": {"required": True}}) + + owner = _builder.get(".properties.owner") + if owner is not None: + owner.set_prop("assignedTo", AAZStrType, ".assigned_to") + owner.set_prop("email", AAZStrType, ".email") + owner.set_prop("objectId", AAZStrType, ".object_id") + owner.set_prop("ownerType", AAZStrType, ".owner_type") + owner.set_prop("userPrincipalName", AAZStrType, ".user_principal_name") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_incident_read = None + + +def _build_schema_incident_read(_schema): + global _schema_incident_read + if _schema_incident_read is not None: + _schema.etag = _schema_incident_read.etag + _schema.id = _schema_incident_read.id + _schema.name = _schema_incident_read.name + _schema.properties = _schema_incident_read.properties + _schema.system_data = _schema_incident_read.system_data + _schema.type = _schema_incident_read.type + return + + _schema_incident_read = AAZObjectType() + + incident_read = _schema_incident_read + incident_read.etag = AAZStrType() + incident_read.id = AAZStrType( + flags={"read_only": True}, + ) + incident_read.name = AAZStrType( + flags={"read_only": True}, + ) + incident_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + incident_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + incident_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_incident_read.properties + properties.additional_data = AAZObjectType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.classification = AAZStrType() + properties.classification_comment = AAZStrType( + serialized_name="classificationComment", + ) + properties.classification_reason = AAZStrType( + serialized_name="classificationReason", + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.description = AAZStrType() + properties.first_activity_time_utc = AAZStrType( + serialized_name="firstActivityTimeUtc", + ) + properties.incident_number = AAZIntType( + serialized_name="incidentNumber", + flags={"read_only": True}, + ) + properties.incident_url = AAZStrType( + serialized_name="incidentUrl", + flags={"read_only": True}, + ) + properties.labels = AAZListType() + properties.last_activity_time_utc = AAZStrType( + serialized_name="lastActivityTimeUtc", + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.owner = AAZObjectType() + properties.provider_incident_id = AAZStrType( + serialized_name="providerIncidentId", + ) + properties.provider_name = AAZStrType( + serialized_name="providerName", + ) + properties.related_analytic_rule_ids = AAZListType( + serialized_name="relatedAnalyticRuleIds", + flags={"read_only": True}, + ) + properties.severity = AAZStrType( + flags={"required": True}, + ) + properties.status = AAZStrType( + flags={"required": True}, + ) + properties.team_information = AAZObjectType( + serialized_name="teamInformation", + ) + properties.title = AAZStrType( + flags={"required": True}, + ) + + additional_data = _schema_incident_read.properties.additional_data + additional_data.alert_product_names = AAZListType( + serialized_name="alertProductNames", + flags={"read_only": True}, + ) + additional_data.alerts_count = AAZIntType( + serialized_name="alertsCount", + flags={"read_only": True}, + ) + additional_data.bookmarks_count = AAZIntType( + serialized_name="bookmarksCount", + flags={"read_only": True}, + ) + additional_data.comments_count = AAZIntType( + serialized_name="commentsCount", + flags={"read_only": True}, + ) + additional_data.provider_incident_url = AAZStrType( + serialized_name="providerIncidentUrl", + flags={"read_only": True}, + ) + additional_data.tactics = AAZListType( + flags={"read_only": True}, + ) + additional_data.techniques = AAZListType( + flags={"read_only": True}, + ) + + alert_product_names = _schema_incident_read.properties.additional_data.alert_product_names + alert_product_names.Element = AAZStrType( + flags={"read_only": True}, + ) + + tactics = _schema_incident_read.properties.additional_data.tactics + tactics.Element = AAZStrType( + flags={"read_only": True}, + ) + + techniques = _schema_incident_read.properties.additional_data.techniques + techniques.Element = AAZStrType( + flags={"read_only": True}, + ) + + labels = _schema_incident_read.properties.labels + labels.Element = AAZObjectType() + + _element = _schema_incident_read.properties.labels.Element + _element.label_name = AAZStrType( + serialized_name="labelName", + flags={"required": True}, + ) + _element.label_type = AAZStrType( + serialized_name="labelType", + flags={"read_only": True}, + ) + + owner = _schema_incident_read.properties.owner + owner.assigned_to = AAZStrType( + serialized_name="assignedTo", + ) + owner.email = AAZStrType() + owner.object_id = AAZStrType( + serialized_name="objectId", + ) + owner.owner_type = AAZStrType( + serialized_name="ownerType", + ) + owner.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + ) + + related_analytic_rule_ids = _schema_incident_read.properties.related_analytic_rule_ids + related_analytic_rule_ids.Element = AAZStrType( + flags={"read_only": True}, + ) + + team_information = _schema_incident_read.properties.team_information + team_information.description = AAZStrType( + flags={"read_only": True}, + ) + team_information.name = AAZStrType( + flags={"read_only": True}, + ) + team_information.primary_channel_url = AAZStrType( + serialized_name="primaryChannelUrl", + flags={"read_only": True}, + ) + team_information.team_creation_time_utc = AAZStrType( + serialized_name="teamCreationTimeUtc", + flags={"read_only": True}, + ) + team_information.team_id = AAZStrType( + serialized_name="teamId", + flags={"read_only": True}, + ) + + system_data = _schema_incident_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_incident_read.etag + _schema.id = _schema_incident_read.id + _schema.name = _schema_incident_read.name + _schema.properties = _schema_incident_read.properties + _schema.system_data = _schema_incident_read.system_data + _schema.type = _schema_incident_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/__cmd_group.py new file mode 100644 index 00000000000..77550b39cff --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel incident comment", +) +class __CMDGroup(AAZCommandGroup): + """Manage incident comment with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_create.py new file mode 100644 index 00000000000..d8f46483ef0 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_create.py @@ -0,0 +1,281 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident comment create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the incident comment. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/comments/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_comment_id = AAZStrArg( + options=["-n", "--name", "--incident-comment-id"], + help="Incident comment ID", + required=True, + id_part="child_name_2", + ) + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "IncidentComment" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="IncidentComment", + help="Etag of the azure resource", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.message = AAZStrArg( + options=["--message"], + arg_group="Properties", + help="The comment message", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentCommentsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentCommentsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentCommentId", self.ctx.args.incident_comment_id, + required=True, + ), + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("message", AAZStrType, ".message", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.author = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.message = AAZStrType( + flags={"required": True}, + ) + + author = cls._schema_on_200_201.properties.author + author.email = AAZStrType( + flags={"read_only": True}, + ) + author.name = AAZStrType( + flags={"read_only": True}, + ) + author.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + author.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_delete.py new file mode 100644 index 00000000000..495d5589649 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_delete.py @@ -0,0 +1,144 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident comment delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the incident comment. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/comments/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_comment_id = AAZStrArg( + options=["-n", "--name", "--incident-comment-id"], + help="Incident comment ID", + required=True, + id_part="child_name_2", + ) + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentCommentsDelete(ctx=self.ctx)() + + class IncidentCommentsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentCommentId", self.ctx.args.incident_comment_id, + required=True, + ), + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_list.py new file mode 100644 index 00000000000..e1072785a75 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_list.py @@ -0,0 +1,272 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident comment list", + is_experimental=True, +) +class List(AAZCommand): + """Get all incident comments. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/comments", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.filter = AAZStrArg( + options=["--filter"], + help="Filters the results, based on a Boolean condition. Optional.", + ) + _args_schema.orderby = AAZStrArg( + options=["--orderby"], + help="Sorts the results. Optional.", + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.", + ) + _args_schema.top = AAZIntArg( + options=["--top"], + help="Returns only the first n results. Optional.", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentCommentsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class IncidentCommentsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$filter", self.ctx.args.filter, + ), + **self.serialize_query_param( + "$orderby", self.ctx.args.orderby, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$top", self.ctx.args.top, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.author = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.message = AAZStrType( + flags={"required": True}, + ) + + author = cls._schema_on_200.value.Element.properties.author + author.email = AAZStrType( + flags={"read_only": True}, + ) + author.name = AAZStrType( + flags={"read_only": True}, + ) + author.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + author.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_show.py new file mode 100644 index 00000000000..46cf5939c55 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_show.py @@ -0,0 +1,244 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident comment show", + is_experimental=True, +) +class Show(AAZCommand): + """Get an incident comment. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/comments/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_comment_id = AAZStrArg( + options=["-n", "--name", "--incident-comment-id"], + help="Incident comment ID", + required=True, + id_part="child_name_2", + ) + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentCommentsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentCommentsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentCommentId", self.ctx.args.incident_comment_id, + required=True, + ), + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.author = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.message = AAZStrType( + flags={"required": True}, + ) + + author = cls._schema_on_200.properties.author + author.email = AAZStrType( + flags={"read_only": True}, + ) + author.name = AAZStrType( + flags={"read_only": True}, + ) + author.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + author.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_update.py new file mode 100644 index 00000000000..2d7a57ff4fb --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/comment/_update.py @@ -0,0 +1,424 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident comment update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the incident comment. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/comments/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_comment_id = AAZStrArg( + options=["-n", "--name", "--incident-comment-id"], + help="Incident comment ID", + required=True, + id_part="child_name_2", + ) + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "IncidentComment" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="IncidentComment", + help="Etag of the azure resource", + nullable=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.message = AAZStrArg( + options=["--message"], + arg_group="Properties", + help="The comment message", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentCommentsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.IncidentCommentsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentCommentsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentCommentId", self.ctx.args.incident_comment_id, + required=True, + ), + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_incident_comment_read(cls._schema_on_200) + + return cls._schema_on_200 + + class IncidentCommentsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentCommentId", self.ctx.args.incident_comment_id, + required=True, + ), + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_incident_comment_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("message", AAZStrType, ".message", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_incident_comment_read = None + + +def _build_schema_incident_comment_read(_schema): + global _schema_incident_comment_read + if _schema_incident_comment_read is not None: + _schema.etag = _schema_incident_comment_read.etag + _schema.id = _schema_incident_comment_read.id + _schema.name = _schema_incident_comment_read.name + _schema.properties = _schema_incident_comment_read.properties + _schema.system_data = _schema_incident_comment_read.system_data + _schema.type = _schema_incident_comment_read.type + return + + _schema_incident_comment_read = AAZObjectType() + + incident_comment_read = _schema_incident_comment_read + incident_comment_read.etag = AAZStrType() + incident_comment_read.id = AAZStrType( + flags={"read_only": True}, + ) + incident_comment_read.name = AAZStrType( + flags={"read_only": True}, + ) + incident_comment_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + incident_comment_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + incident_comment_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_incident_comment_read.properties + properties.author = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_time_utc = AAZStrType( + serialized_name="createdTimeUtc", + flags={"read_only": True}, + ) + properties.last_modified_time_utc = AAZStrType( + serialized_name="lastModifiedTimeUtc", + flags={"read_only": True}, + ) + properties.message = AAZStrType( + flags={"required": True}, + ) + + author = _schema_incident_comment_read.properties.author + author.email = AAZStrType( + flags={"read_only": True}, + ) + author.name = AAZStrType( + flags={"read_only": True}, + ) + author.object_id = AAZStrType( + serialized_name="objectId", + flags={"read_only": True}, + ) + author.user_principal_name = AAZStrType( + serialized_name="userPrincipalName", + flags={"read_only": True}, + ) + + system_data = _schema_incident_comment_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_incident_comment_read.etag + _schema.id = _schema_incident_comment_read.id + _schema.name = _schema_incident_comment_read.name + _schema.properties = _schema_incident_comment_read.properties + _schema.system_data = _schema_incident_comment_read.system_data + _schema.type = _schema_incident_comment_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/__cmd_group.py new file mode 100644 index 00000000000..360d93d62d0 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel incident relation", +) +class __CMDGroup(AAZCommandGroup): + """Manage incident relation with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_create.py new file mode 100644 index 00000000000..6887615cfa3 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_create.py @@ -0,0 +1,267 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident relation create", + is_experimental=True, +) +class Create(AAZCommand): + """Create the incident relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/relations/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.related_resource_id = AAZStrArg( + options=["--related-resource-id"], + arg_group="Properties", + help="The resource ID of the related resource", + ) + + # define Arg Group "Relation" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Relation", + help="Etag of the azure resource", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentRelationsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentRelationsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("relatedResourceId", AAZStrType, ".related_resource_id", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_delete.py new file mode 100644 index 00000000000..1bfb161d6bd --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_delete.py @@ -0,0 +1,144 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident relation delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the incident relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/relations/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentRelationsDelete(ctx=self.ctx)() + + class IncidentRelationsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_list.py new file mode 100644 index 00000000000..10b7ae11aca --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_list.py @@ -0,0 +1,258 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident relation list", + is_experimental=True, +) +class List(AAZCommand): + """Get all incident relations. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/relations", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.filter = AAZStrArg( + options=["--filter"], + help="Filters the results, based on a Boolean condition. Optional.", + ) + _args_schema.orderby = AAZStrArg( + options=["--orderby"], + help="Sorts the results. Optional.", + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.", + ) + _args_schema.top = AAZIntArg( + options=["--top"], + help="Returns only the first n results. Optional.", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentRelationsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class IncidentRelationsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/relations", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$filter", self.ctx.args.filter, + ), + **self.serialize_query_param( + "$orderby", self.ctx.args.orderby, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$top", self.ctx.args.top, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_show.py new file mode 100644 index 00000000000..82e424507dd --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_show.py @@ -0,0 +1,230 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident relation show", + is_experimental=True, +) +class Show(AAZCommand): + """Get an incident relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/relations/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentRelationsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentRelationsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_update.py new file mode 100644 index 00000000000..205a6a1e40a --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/incident/relation/_update.py @@ -0,0 +1,410 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel incident relation update", + is_experimental=True, +) +class Update(AAZCommand): + """Update the incident relation. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/incidents/{}/relations/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.incident_id = AAZStrArg( + options=["--incident-id"], + help="Incident ID", + required=True, + id_part="child_name_1", + ) + _args_schema.relation_name = AAZStrArg( + options=["-n", "--name", "--relation-name"], + help="Relation Name", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.related_resource_id = AAZStrArg( + options=["--related-resource-id"], + arg_group="Properties", + help="The resource ID of the related resource", + ) + + # define Arg Group "Relation" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Relation", + help="Etag of the azure resource", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.IncidentRelationsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.IncidentRelationsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class IncidentRelationsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_relation_read(cls._schema_on_200) + + return cls._schema_on_200 + + class IncidentRelationsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/relations/{relationName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "incidentId", self.ctx.args.incident_id, + required=True, + ), + **self.serialize_url_param( + "relationName", self.ctx.args.relation_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_relation_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("relatedResourceId", AAZStrType, ".related_resource_id", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_relation_read = None + + +def _build_schema_relation_read(_schema): + global _schema_relation_read + if _schema_relation_read is not None: + _schema.etag = _schema_relation_read.etag + _schema.id = _schema_relation_read.id + _schema.name = _schema_relation_read.name + _schema.properties = _schema_relation_read.properties + _schema.system_data = _schema_relation_read.system_data + _schema.type = _schema_relation_read.type + return + + _schema_relation_read = AAZObjectType() + + relation_read = _schema_relation_read + relation_read.etag = AAZStrType() + relation_read.id = AAZStrType( + flags={"read_only": True}, + ) + relation_read.name = AAZStrType( + flags={"read_only": True}, + ) + relation_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + relation_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + relation_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_relation_read.properties + properties.related_resource_id = AAZStrType( + serialized_name="relatedResourceId", + flags={"required": True}, + ) + properties.related_resource_kind = AAZStrType( + serialized_name="relatedResourceKind", + flags={"read_only": True}, + ) + properties.related_resource_name = AAZStrType( + serialized_name="relatedResourceName", + flags={"read_only": True}, + ) + properties.related_resource_type = AAZStrType( + serialized_name="relatedResourceType", + flags={"read_only": True}, + ) + + system_data = _schema_relation_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_relation_read.etag + _schema.id = _schema_relation_read.id + _schema.name = _schema_relation_read.name + _schema.properties = _schema_relation_read.properties + _schema.system_data = _schema_relation_read.system_data + _schema.type = _schema_relation_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/__cmd_group.py new file mode 100644 index 00000000000..b6d3d8c78ce --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel metadata", +) +class __CMDGroup(AAZCommandGroup): + """Manage metadata with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_create.py new file mode 100644 index 00000000000..09551c7e215 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_create.py @@ -0,0 +1,681 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel metadata create", + is_experimental=True, +) +class Create(AAZCommand): + """Create a Metadata. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/metadata/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.metadata_name = AAZStrArg( + options=["-n", "--name", "--metadata-name"], + help="The Metadata name.", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Metadata" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Metadata", + help="Etag of the azure resource", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.author = AAZObjectArg( + options=["--author"], + arg_group="Properties", + help="The creator of the content item.", + ) + _args_schema.categories = AAZObjectArg( + options=["--categories"], + arg_group="Properties", + help="Categories for the solution content item", + ) + _args_schema.content_id = AAZStrArg( + options=["--content-id"], + arg_group="Properties", + help="Static ID for the content. Used to identify dependencies and content from solutions or community. Hard-coded/static for out of the box content and solutions. Dynamic for user-created. This is the resource name", + ) + _args_schema.content_schema_version = AAZStrArg( + options=["--content-schema-version"], + arg_group="Properties", + help="Schema version of the content. Can be used to distinguish between different flow based on the schema version", + ) + _args_schema.custom_version = AAZStrArg( + options=["--custom-version"], + arg_group="Properties", + help="The custom version of the content. A optional free text", + ) + _args_schema.dependencies = AAZObjectArg( + options=["--dependencies"], + arg_group="Properties", + help="Dependencies for the content item, what other content items it requires to work. Can describe more complex dependencies using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for complex formats.", + ) + cls._build_args_metadata_dependencies_create(_args_schema.dependencies) + _args_schema.first_publish_date = AAZStrArg( + options=["--first-publish-date"], + arg_group="Properties", + help="first publish date solution content item", + ) + _args_schema.icon = AAZStrArg( + options=["--icon"], + arg_group="Properties", + help="the icon identifier. this id can later be fetched from the solution template", + ) + _args_schema.kind = AAZStrArg( + options=["--kind"], + arg_group="Properties", + help="The kind of content the metadata is for.", + enum={"AnalyticsRule": "AnalyticsRule", "AnalyticsRuleTemplate": "AnalyticsRuleTemplate", "AutomationRule": "AutomationRule", "AzureFunction": "AzureFunction", "DataConnector": "DataConnector", "DataType": "DataType", "HuntingQuery": "HuntingQuery", "InvestigationQuery": "InvestigationQuery", "LogicAppsCustomConnector": "LogicAppsCustomConnector", "Parser": "Parser", "Playbook": "Playbook", "PlaybookTemplate": "PlaybookTemplate", "Solution": "Solution", "Watchlist": "Watchlist", "WatchlistTemplate": "WatchlistTemplate", "Workbook": "Workbook", "WorkbookTemplate": "WorkbookTemplate"}, + ) + _args_schema.last_publish_date = AAZStrArg( + options=["--last-publish-date"], + arg_group="Properties", + help="last publish date for the solution content item", + ) + _args_schema.parent_id = AAZStrArg( + options=["--parent-id"], + arg_group="Properties", + help="Full parent resource ID of the content item the metadata is for. This is the full resource ID including the scope (subscription and resource group)", + ) + _args_schema.preview_images = AAZListArg( + options=["--preview-images"], + arg_group="Properties", + help="preview image file names. These will be taken from the solution artifacts", + ) + _args_schema.preview_images_dark = AAZListArg( + options=["--preview-images-dark"], + arg_group="Properties", + help="preview image file names. These will be taken from the solution artifacts. used for dark theme support", + ) + _args_schema.providers = AAZListArg( + options=["--providers"], + arg_group="Properties", + help="Providers for the solution content item", + ) + _args_schema.source = AAZObjectArg( + options=["--source"], + arg_group="Properties", + help="Source of the content. This is where/how it was created.", + ) + _args_schema.support = AAZObjectArg( + options=["--support"], + arg_group="Properties", + help="Support information for the metadata - type, name, contact information", + ) + _args_schema.threat_tactics = AAZListArg( + options=["--threat-tactics"], + arg_group="Properties", + help="the tactics the resource covers", + ) + _args_schema.threat_techniques = AAZListArg( + options=["--threat-techniques"], + arg_group="Properties", + help="the techniques the resource covers, these have to be aligned with the tactics being used", + ) + _args_schema.version = AAZStrArg( + options=["--version"], + arg_group="Properties", + help="Version of the content. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM template best practices. Can also be any string, but then we cannot guarantee any version checks", + ) + + author = cls._args_schema.author + author.email = AAZStrArg( + options=["email"], + help="Email of author contact", + ) + author.link = AAZStrArg( + options=["link"], + help="Link for author/vendor page", + ) + author.name = AAZStrArg( + options=["name"], + help="Name of the author. Company or person.", + ) + + categories = cls._args_schema.categories + categories.domains = AAZListArg( + options=["domains"], + help="domain for the solution content item", + ) + categories.verticals = AAZListArg( + options=["verticals"], + help="Industry verticals for the solution content item", + ) + + domains = cls._args_schema.categories.domains + domains.Element = AAZStrArg() + + verticals = cls._args_schema.categories.verticals + verticals.Element = AAZStrArg() + + preview_images = cls._args_schema.preview_images + preview_images.Element = AAZStrArg() + + preview_images_dark = cls._args_schema.preview_images_dark + preview_images_dark.Element = AAZStrArg() + + providers = cls._args_schema.providers + providers.Element = AAZStrArg() + + source = cls._args_schema.source + source.kind = AAZStrArg( + options=["kind"], + help="Source type of the content", + required=True, + enum={"Community": "Community", "LocalWorkspace": "LocalWorkspace", "Solution": "Solution", "SourceRepository": "SourceRepository"}, + ) + source.name = AAZStrArg( + options=["name"], + help="Name of the content source. The repo name, solution name, LA workspace name etc.", + ) + source.source_id = AAZStrArg( + options=["source-id"], + help="ID of the content source. The solution ID, workspace ID, etc", + ) + + support = cls._args_schema.support + support.email = AAZStrArg( + options=["email"], + help="Email of support contact", + ) + support.link = AAZStrArg( + options=["link"], + help="Link for support help, like to support page to open a ticket etc.", + ) + support.name = AAZStrArg( + options=["name"], + help="Name of the support contact. Company or person.", + ) + support.tier = AAZStrArg( + options=["tier"], + help="Type of support for content item", + required=True, + enum={"Community": "Community", "Microsoft": "Microsoft", "Partner": "Partner"}, + ) + + threat_tactics = cls._args_schema.threat_tactics + threat_tactics.Element = AAZStrArg() + + threat_techniques = cls._args_schema.threat_techniques + threat_techniques.Element = AAZStrArg() + return cls._args_schema + + _args_metadata_dependencies_create = None + + @classmethod + def _build_args_metadata_dependencies_create(cls, _schema): + if cls._args_metadata_dependencies_create is not None: + _schema.content_id = cls._args_metadata_dependencies_create.content_id + _schema.criteria = cls._args_metadata_dependencies_create.criteria + _schema.kind = cls._args_metadata_dependencies_create.kind + _schema.name = cls._args_metadata_dependencies_create.name + _schema.operator = cls._args_metadata_dependencies_create.operator + _schema.version = cls._args_metadata_dependencies_create.version + return + + cls._args_metadata_dependencies_create = AAZObjectArg() + + metadata_dependencies_create = cls._args_metadata_dependencies_create + metadata_dependencies_create.content_id = AAZStrArg( + options=["content-id"], + help="Id of the content item we depend on", + ) + metadata_dependencies_create.criteria = AAZListArg( + options=["criteria"], + help="This is the list of dependencies we must fulfill, according to the AND/OR operator", + ) + metadata_dependencies_create.kind = AAZStrArg( + options=["kind"], + help="Type of the content item we depend on", + enum={"AnalyticsRule": "AnalyticsRule", "AnalyticsRuleTemplate": "AnalyticsRuleTemplate", "AutomationRule": "AutomationRule", "AzureFunction": "AzureFunction", "DataConnector": "DataConnector", "DataType": "DataType", "HuntingQuery": "HuntingQuery", "InvestigationQuery": "InvestigationQuery", "LogicAppsCustomConnector": "LogicAppsCustomConnector", "Parser": "Parser", "Playbook": "Playbook", "PlaybookTemplate": "PlaybookTemplate", "Solution": "Solution", "Watchlist": "Watchlist", "WatchlistTemplate": "WatchlistTemplate", "Workbook": "Workbook", "WorkbookTemplate": "WorkbookTemplate"}, + ) + metadata_dependencies_create.name = AAZStrArg( + options=["name"], + help="Name of the content item", + ) + metadata_dependencies_create.operator = AAZStrArg( + options=["operator"], + help="Operator used for list of dependencies in criteria array.", + enum={"AND": "AND", "OR": "OR"}, + ) + metadata_dependencies_create.version = AAZStrArg( + options=["version"], + help="Version of the the content item we depend on. Can be blank, * or missing to indicate any version fulfills the dependency. If version does not match our defined numeric format then an exact match is required.", + ) + + criteria = cls._args_metadata_dependencies_create.criteria + criteria.Element = AAZObjectArg() + cls._build_args_metadata_dependencies_create(criteria.Element) + + _schema.content_id = cls._args_metadata_dependencies_create.content_id + _schema.criteria = cls._args_metadata_dependencies_create.criteria + _schema.kind = cls._args_metadata_dependencies_create.kind + _schema.name = cls._args_metadata_dependencies_create.name + _schema.operator = cls._args_metadata_dependencies_create.operator + _schema.version = cls._args_metadata_dependencies_create.version + + def _execute_operations(self): + self.MetadataCreate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MetadataCreate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/metadata/{metadataName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "metadataName", self.ctx.args.metadata_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("author", AAZObjectType, ".author") + properties.set_prop("categories", AAZObjectType, ".categories") + properties.set_prop("contentId", AAZStrType, ".content_id") + properties.set_prop("contentSchemaVersion", AAZStrType, ".content_schema_version") + properties.set_prop("customVersion", AAZStrType, ".custom_version") + _build_schema_metadata_dependencies_create(properties.set_prop("dependencies", AAZObjectType, ".dependencies")) + properties.set_prop("firstPublishDate", AAZStrType, ".first_publish_date") + properties.set_prop("icon", AAZStrType, ".icon") + properties.set_prop("kind", AAZStrType, ".kind", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("lastPublishDate", AAZStrType, ".last_publish_date") + properties.set_prop("parentId", AAZStrType, ".parent_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("previewImages", AAZListType, ".preview_images") + properties.set_prop("previewImagesDark", AAZListType, ".preview_images_dark") + properties.set_prop("providers", AAZListType, ".providers") + properties.set_prop("source", AAZObjectType, ".source") + properties.set_prop("support", AAZObjectType, ".support") + properties.set_prop("threatAnalysisTactics", AAZListType, ".threat_tactics") + properties.set_prop("threatAnalysisTechniques", AAZListType, ".threat_techniques") + properties.set_prop("version", AAZStrType, ".version") + + author = _builder.get(".properties.author") + if author is not None: + author.set_prop("email", AAZStrType, ".email") + author.set_prop("link", AAZStrType, ".link") + author.set_prop("name", AAZStrType, ".name") + + categories = _builder.get(".properties.categories") + if categories is not None: + categories.set_prop("domains", AAZListType, ".domains") + categories.set_prop("verticals", AAZListType, ".verticals") + + domains = _builder.get(".properties.categories.domains") + if domains is not None: + domains.set_elements(AAZStrType, ".") + + verticals = _builder.get(".properties.categories.verticals") + if verticals is not None: + verticals.set_elements(AAZStrType, ".") + + preview_images = _builder.get(".properties.previewImages") + if preview_images is not None: + preview_images.set_elements(AAZStrType, ".") + + preview_images_dark = _builder.get(".properties.previewImagesDark") + if preview_images_dark is not None: + preview_images_dark.set_elements(AAZStrType, ".") + + providers = _builder.get(".properties.providers") + if providers is not None: + providers.set_elements(AAZStrType, ".") + + source = _builder.get(".properties.source") + if source is not None: + source.set_prop("kind", AAZStrType, ".kind", typ_kwargs={"flags": {"required": True}}) + source.set_prop("name", AAZStrType, ".name") + source.set_prop("sourceId", AAZStrType, ".source_id") + + support = _builder.get(".properties.support") + if support is not None: + support.set_prop("email", AAZStrType, ".email") + support.set_prop("link", AAZStrType, ".link") + support.set_prop("name", AAZStrType, ".name") + support.set_prop("tier", AAZStrType, ".tier", typ_kwargs={"flags": {"required": True}}) + + threat_analysis_tactics = _builder.get(".properties.threatAnalysisTactics") + if threat_analysis_tactics is not None: + threat_analysis_tactics.set_elements(AAZStrType, ".") + + threat_analysis_techniques = _builder.get(".properties.threatAnalysisTechniques") + if threat_analysis_techniques is not None: + threat_analysis_techniques.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.author = AAZObjectType() + properties.categories = AAZObjectType() + properties.content_id = AAZStrType( + serialized_name="contentId", + ) + properties.content_schema_version = AAZStrType( + serialized_name="contentSchemaVersion", + ) + properties.custom_version = AAZStrType( + serialized_name="customVersion", + ) + properties.dependencies = AAZObjectType() + _build_schema_metadata_dependencies_read(properties.dependencies) + properties.first_publish_date = AAZStrType( + serialized_name="firstPublishDate", + ) + properties.icon = AAZStrType() + properties.kind = AAZStrType( + flags={"required": True}, + ) + properties.last_publish_date = AAZStrType( + serialized_name="lastPublishDate", + ) + properties.parent_id = AAZStrType( + serialized_name="parentId", + flags={"required": True}, + ) + properties.preview_images = AAZListType( + serialized_name="previewImages", + ) + properties.preview_images_dark = AAZListType( + serialized_name="previewImagesDark", + ) + properties.providers = AAZListType() + properties.source = AAZObjectType() + properties.support = AAZObjectType() + properties.threat_analysis_tactics = AAZListType( + serialized_name="threatAnalysisTactics", + ) + properties.threat_analysis_techniques = AAZListType( + serialized_name="threatAnalysisTechniques", + ) + properties.version = AAZStrType() + + author = cls._schema_on_200_201.properties.author + author.email = AAZStrType() + author.link = AAZStrType() + author.name = AAZStrType() + + categories = cls._schema_on_200_201.properties.categories + categories.domains = AAZListType() + categories.verticals = AAZListType() + + domains = cls._schema_on_200_201.properties.categories.domains + domains.Element = AAZStrType() + + verticals = cls._schema_on_200_201.properties.categories.verticals + verticals.Element = AAZStrType() + + preview_images = cls._schema_on_200_201.properties.preview_images + preview_images.Element = AAZStrType() + + preview_images_dark = cls._schema_on_200_201.properties.preview_images_dark + preview_images_dark.Element = AAZStrType() + + providers = cls._schema_on_200_201.properties.providers + providers.Element = AAZStrType() + + source = cls._schema_on_200_201.properties.source + source.kind = AAZStrType( + flags={"required": True}, + ) + source.name = AAZStrType() + source.source_id = AAZStrType( + serialized_name="sourceId", + ) + + support = cls._schema_on_200_201.properties.support + support.email = AAZStrType() + support.link = AAZStrType() + support.name = AAZStrType() + support.tier = AAZStrType( + flags={"required": True}, + ) + + threat_analysis_tactics = cls._schema_on_200_201.properties.threat_analysis_tactics + threat_analysis_tactics.Element = AAZStrType() + + threat_analysis_techniques = cls._schema_on_200_201.properties.threat_analysis_techniques + threat_analysis_techniques.Element = AAZStrType() + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +def _build_schema_metadata_dependencies_create(_builder): + if _builder is None: + return + _builder.set_prop("contentId", AAZStrType, ".content_id") + _builder.set_prop("criteria", AAZListType, ".criteria") + _builder.set_prop("kind", AAZStrType, ".kind") + _builder.set_prop("name", AAZStrType, ".name") + _builder.set_prop("operator", AAZStrType, ".operator") + _builder.set_prop("version", AAZStrType, ".version") + + criteria = _builder.get(".criteria") + if criteria is not None: + _build_schema_metadata_dependencies_create(criteria.set_elements(AAZObjectType, ".")) + + +_schema_metadata_dependencies_read = None + + +def _build_schema_metadata_dependencies_read(_schema): + global _schema_metadata_dependencies_read + if _schema_metadata_dependencies_read is not None: + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + return + + _schema_metadata_dependencies_read = AAZObjectType() + + metadata_dependencies_read = _schema_metadata_dependencies_read + metadata_dependencies_read.content_id = AAZStrType( + serialized_name="contentId", + ) + metadata_dependencies_read.criteria = AAZListType() + metadata_dependencies_read.kind = AAZStrType() + metadata_dependencies_read.name = AAZStrType() + metadata_dependencies_read.operator = AAZStrType() + metadata_dependencies_read.version = AAZStrType() + + criteria = _schema_metadata_dependencies_read.criteria + criteria.Element = AAZObjectType() + _build_schema_metadata_dependencies_read(criteria.Element) + + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_delete.py new file mode 100644 index 00000000000..1e023025c52 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel metadata delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a Metadata. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/metadata/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.metadata_name = AAZStrArg( + options=["-n", "--name", "--metadata-name"], + help="The Metadata name.", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.MetadataDelete(ctx=self.ctx)() + + class MetadataDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/metadata/{metadataName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "metadataName", self.ctx.args.metadata_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_list.py new file mode 100644 index 00000000000..919cd84c73c --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_list.py @@ -0,0 +1,361 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel metadata list", + is_experimental=True, +) +class List(AAZCommand): + """List of all metadata + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/metadata", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.filter = AAZStrArg( + options=["--filter"], + help="Filters the results, based on a Boolean condition. Optional.", + ) + _args_schema.orderby = AAZStrArg( + options=["--orderby"], + help="Sorts the results. Optional.", + ) + _args_schema.skip = AAZIntArg( + options=["--skip"], + help="Used to skip n elements in the OData query (offset). Returns a nextLink to the next page of results if there are any left.", + ) + _args_schema.top = AAZIntArg( + options=["--top"], + help="Returns only the first n results. Optional.", + ) + return cls._args_schema + + def _execute_operations(self): + self.MetadataList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class MetadataList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/metadata", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$filter", self.ctx.args.filter, + ), + **self.serialize_query_param( + "$orderby", self.ctx.args.orderby, + ), + **self.serialize_query_param( + "$skip", self.ctx.args.skip, + ), + **self.serialize_query_param( + "$top", self.ctx.args.top, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.author = AAZObjectType() + properties.categories = AAZObjectType() + properties.content_id = AAZStrType( + serialized_name="contentId", + ) + properties.content_schema_version = AAZStrType( + serialized_name="contentSchemaVersion", + ) + properties.custom_version = AAZStrType( + serialized_name="customVersion", + ) + properties.dependencies = AAZObjectType() + _build_schema_metadata_dependencies_read(properties.dependencies) + properties.first_publish_date = AAZStrType( + serialized_name="firstPublishDate", + ) + properties.icon = AAZStrType() + properties.kind = AAZStrType( + flags={"required": True}, + ) + properties.last_publish_date = AAZStrType( + serialized_name="lastPublishDate", + ) + properties.parent_id = AAZStrType( + serialized_name="parentId", + flags={"required": True}, + ) + properties.preview_images = AAZListType( + serialized_name="previewImages", + ) + properties.preview_images_dark = AAZListType( + serialized_name="previewImagesDark", + ) + properties.providers = AAZListType() + properties.source = AAZObjectType() + properties.support = AAZObjectType() + properties.threat_analysis_tactics = AAZListType( + serialized_name="threatAnalysisTactics", + ) + properties.threat_analysis_techniques = AAZListType( + serialized_name="threatAnalysisTechniques", + ) + properties.version = AAZStrType() + + author = cls._schema_on_200.value.Element.properties.author + author.email = AAZStrType() + author.link = AAZStrType() + author.name = AAZStrType() + + categories = cls._schema_on_200.value.Element.properties.categories + categories.domains = AAZListType() + categories.verticals = AAZListType() + + domains = cls._schema_on_200.value.Element.properties.categories.domains + domains.Element = AAZStrType() + + verticals = cls._schema_on_200.value.Element.properties.categories.verticals + verticals.Element = AAZStrType() + + preview_images = cls._schema_on_200.value.Element.properties.preview_images + preview_images.Element = AAZStrType() + + preview_images_dark = cls._schema_on_200.value.Element.properties.preview_images_dark + preview_images_dark.Element = AAZStrType() + + providers = cls._schema_on_200.value.Element.properties.providers + providers.Element = AAZStrType() + + source = cls._schema_on_200.value.Element.properties.source + source.kind = AAZStrType( + flags={"required": True}, + ) + source.name = AAZStrType() + source.source_id = AAZStrType( + serialized_name="sourceId", + ) + + support = cls._schema_on_200.value.Element.properties.support + support.email = AAZStrType() + support.link = AAZStrType() + support.name = AAZStrType() + support.tier = AAZStrType( + flags={"required": True}, + ) + + threat_analysis_tactics = cls._schema_on_200.value.Element.properties.threat_analysis_tactics + threat_analysis_tactics.Element = AAZStrType() + + threat_analysis_techniques = cls._schema_on_200.value.Element.properties.threat_analysis_techniques + threat_analysis_techniques.Element = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_metadata_dependencies_read = None + + +def _build_schema_metadata_dependencies_read(_schema): + global _schema_metadata_dependencies_read + if _schema_metadata_dependencies_read is not None: + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + return + + _schema_metadata_dependencies_read = AAZObjectType() + + metadata_dependencies_read = _schema_metadata_dependencies_read + metadata_dependencies_read.content_id = AAZStrType( + serialized_name="contentId", + ) + metadata_dependencies_read.criteria = AAZListType() + metadata_dependencies_read.kind = AAZStrType() + metadata_dependencies_read.name = AAZStrType() + metadata_dependencies_read.operator = AAZStrType() + metadata_dependencies_read.version = AAZStrType() + + criteria = _schema_metadata_dependencies_read.criteria + criteria.Element = AAZObjectType() + _build_schema_metadata_dependencies_read(criteria.Element) + + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_show.py new file mode 100644 index 00000000000..18232335898 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_show.py @@ -0,0 +1,332 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel metadata show", + is_experimental=True, +) +class Show(AAZCommand): + """Get a Metadata. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/metadata/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.metadata_name = AAZStrArg( + options=["-n", "--name", "--metadata-name"], + help="The Metadata name.", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.MetadataGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MetadataGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/metadata/{metadataName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "metadataName", self.ctx.args.metadata_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.author = AAZObjectType() + properties.categories = AAZObjectType() + properties.content_id = AAZStrType( + serialized_name="contentId", + ) + properties.content_schema_version = AAZStrType( + serialized_name="contentSchemaVersion", + ) + properties.custom_version = AAZStrType( + serialized_name="customVersion", + ) + properties.dependencies = AAZObjectType() + _build_schema_metadata_dependencies_read(properties.dependencies) + properties.first_publish_date = AAZStrType( + serialized_name="firstPublishDate", + ) + properties.icon = AAZStrType() + properties.kind = AAZStrType( + flags={"required": True}, + ) + properties.last_publish_date = AAZStrType( + serialized_name="lastPublishDate", + ) + properties.parent_id = AAZStrType( + serialized_name="parentId", + flags={"required": True}, + ) + properties.preview_images = AAZListType( + serialized_name="previewImages", + ) + properties.preview_images_dark = AAZListType( + serialized_name="previewImagesDark", + ) + properties.providers = AAZListType() + properties.source = AAZObjectType() + properties.support = AAZObjectType() + properties.threat_analysis_tactics = AAZListType( + serialized_name="threatAnalysisTactics", + ) + properties.threat_analysis_techniques = AAZListType( + serialized_name="threatAnalysisTechniques", + ) + properties.version = AAZStrType() + + author = cls._schema_on_200.properties.author + author.email = AAZStrType() + author.link = AAZStrType() + author.name = AAZStrType() + + categories = cls._schema_on_200.properties.categories + categories.domains = AAZListType() + categories.verticals = AAZListType() + + domains = cls._schema_on_200.properties.categories.domains + domains.Element = AAZStrType() + + verticals = cls._schema_on_200.properties.categories.verticals + verticals.Element = AAZStrType() + + preview_images = cls._schema_on_200.properties.preview_images + preview_images.Element = AAZStrType() + + preview_images_dark = cls._schema_on_200.properties.preview_images_dark + preview_images_dark.Element = AAZStrType() + + providers = cls._schema_on_200.properties.providers + providers.Element = AAZStrType() + + source = cls._schema_on_200.properties.source + source.kind = AAZStrType( + flags={"required": True}, + ) + source.name = AAZStrType() + source.source_id = AAZStrType( + serialized_name="sourceId", + ) + + support = cls._schema_on_200.properties.support + support.email = AAZStrType() + support.link = AAZStrType() + support.name = AAZStrType() + support.tier = AAZStrType( + flags={"required": True}, + ) + + threat_analysis_tactics = cls._schema_on_200.properties.threat_analysis_tactics + threat_analysis_tactics.Element = AAZStrType() + + threat_analysis_techniques = cls._schema_on_200.properties.threat_analysis_techniques + threat_analysis_techniques.Element = AAZStrType() + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_metadata_dependencies_read = None + + +def _build_schema_metadata_dependencies_read(_schema): + global _schema_metadata_dependencies_read + if _schema_metadata_dependencies_read is not None: + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + return + + _schema_metadata_dependencies_read = AAZObjectType() + + metadata_dependencies_read = _schema_metadata_dependencies_read + metadata_dependencies_read.content_id = AAZStrType( + serialized_name="contentId", + ) + metadata_dependencies_read.criteria = AAZListType() + metadata_dependencies_read.kind = AAZStrType() + metadata_dependencies_read.name = AAZStrType() + metadata_dependencies_read.operator = AAZStrType() + metadata_dependencies_read.version = AAZStrType() + + criteria = _schema_metadata_dependencies_read.criteria + criteria.Element = AAZObjectType() + _build_schema_metadata_dependencies_read(criteria.Element) + + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_update.py new file mode 100644 index 00000000000..e97adc2345c --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/metadata/_update.py @@ -0,0 +1,855 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel metadata update", + is_experimental=True, +) +class Update(AAZCommand): + """Update a Metadata. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/metadata/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.metadata_name = AAZStrArg( + options=["-n", "--name", "--metadata-name"], + help="The Metadata name.", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Metadata" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Metadata", + help="Etag of the azure resource", + nullable=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.author = AAZObjectArg( + options=["--author"], + arg_group="Properties", + help="The creator of the content item.", + nullable=True, + ) + _args_schema.categories = AAZObjectArg( + options=["--categories"], + arg_group="Properties", + help="Categories for the solution content item", + nullable=True, + ) + _args_schema.content_id = AAZStrArg( + options=["--content-id"], + arg_group="Properties", + help="Static ID for the content. Used to identify dependencies and content from solutions or community. Hard-coded/static for out of the box content and solutions. Dynamic for user-created. This is the resource name", + nullable=True, + ) + _args_schema.content_schema_version = AAZStrArg( + options=["--content-schema-version"], + arg_group="Properties", + help="Schema version of the content. Can be used to distinguish between different flow based on the schema version", + nullable=True, + ) + _args_schema.custom_version = AAZStrArg( + options=["--custom-version"], + arg_group="Properties", + help="The custom version of the content. A optional free text", + nullable=True, + ) + _args_schema.dependencies = AAZObjectArg( + options=["--dependencies"], + arg_group="Properties", + help="Dependencies for the content item, what other content items it requires to work. Can describe more complex dependencies using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for complex formats.", + nullable=True, + ) + cls._build_args_metadata_dependencies_update(_args_schema.dependencies) + _args_schema.first_publish_date = AAZStrArg( + options=["--first-publish-date"], + arg_group="Properties", + help="first publish date solution content item", + nullable=True, + ) + _args_schema.icon = AAZStrArg( + options=["--icon"], + arg_group="Properties", + help="the icon identifier. this id can later be fetched from the solution template", + nullable=True, + ) + _args_schema.kind = AAZStrArg( + options=["--kind"], + arg_group="Properties", + help="The kind of content the metadata is for.", + enum={"AnalyticsRule": "AnalyticsRule", "AnalyticsRuleTemplate": "AnalyticsRuleTemplate", "AutomationRule": "AutomationRule", "AzureFunction": "AzureFunction", "DataConnector": "DataConnector", "DataType": "DataType", "HuntingQuery": "HuntingQuery", "InvestigationQuery": "InvestigationQuery", "LogicAppsCustomConnector": "LogicAppsCustomConnector", "Parser": "Parser", "Playbook": "Playbook", "PlaybookTemplate": "PlaybookTemplate", "Solution": "Solution", "Watchlist": "Watchlist", "WatchlistTemplate": "WatchlistTemplate", "Workbook": "Workbook", "WorkbookTemplate": "WorkbookTemplate"}, + ) + _args_schema.last_publish_date = AAZStrArg( + options=["--last-publish-date"], + arg_group="Properties", + help="last publish date for the solution content item", + nullable=True, + ) + _args_schema.parent_id = AAZStrArg( + options=["--parent-id"], + arg_group="Properties", + help="Full parent resource ID of the content item the metadata is for. This is the full resource ID including the scope (subscription and resource group)", + ) + _args_schema.preview_images = AAZListArg( + options=["--preview-images"], + arg_group="Properties", + help="preview image file names. These will be taken from the solution artifacts", + nullable=True, + ) + _args_schema.preview_images_dark = AAZListArg( + options=["--preview-images-dark"], + arg_group="Properties", + help="preview image file names. These will be taken from the solution artifacts. used for dark theme support", + nullable=True, + ) + _args_schema.providers = AAZListArg( + options=["--providers"], + arg_group="Properties", + help="Providers for the solution content item", + nullable=True, + ) + _args_schema.source = AAZObjectArg( + options=["--source"], + arg_group="Properties", + help="Source of the content. This is where/how it was created.", + nullable=True, + ) + _args_schema.support = AAZObjectArg( + options=["--support"], + arg_group="Properties", + help="Support information for the metadata - type, name, contact information", + nullable=True, + ) + _args_schema.threat_tactics = AAZListArg( + options=["--threat-tactics"], + arg_group="Properties", + help="the tactics the resource covers", + nullable=True, + ) + _args_schema.threat_techniques = AAZListArg( + options=["--threat-techniques"], + arg_group="Properties", + help="the techniques the resource covers, these have to be aligned with the tactics being used", + nullable=True, + ) + _args_schema.version = AAZStrArg( + options=["--version"], + arg_group="Properties", + help="Version of the content. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM template best practices. Can also be any string, but then we cannot guarantee any version checks", + nullable=True, + ) + + author = cls._args_schema.author + author.email = AAZStrArg( + options=["email"], + help="Email of author contact", + nullable=True, + ) + author.link = AAZStrArg( + options=["link"], + help="Link for author/vendor page", + nullable=True, + ) + author.name = AAZStrArg( + options=["name"], + help="Name of the author. Company or person.", + nullable=True, + ) + + categories = cls._args_schema.categories + categories.domains = AAZListArg( + options=["domains"], + help="domain for the solution content item", + nullable=True, + ) + categories.verticals = AAZListArg( + options=["verticals"], + help="Industry verticals for the solution content item", + nullable=True, + ) + + domains = cls._args_schema.categories.domains + domains.Element = AAZStrArg() + + verticals = cls._args_schema.categories.verticals + verticals.Element = AAZStrArg() + + preview_images = cls._args_schema.preview_images + preview_images.Element = AAZStrArg() + + preview_images_dark = cls._args_schema.preview_images_dark + preview_images_dark.Element = AAZStrArg() + + providers = cls._args_schema.providers + providers.Element = AAZStrArg() + + source = cls._args_schema.source + source.kind = AAZStrArg( + options=["kind"], + help="Source type of the content", + enum={"Community": "Community", "LocalWorkspace": "LocalWorkspace", "Solution": "Solution", "SourceRepository": "SourceRepository"}, + ) + source.name = AAZStrArg( + options=["name"], + help="Name of the content source. The repo name, solution name, LA workspace name etc.", + nullable=True, + ) + source.source_id = AAZStrArg( + options=["source-id"], + help="ID of the content source. The solution ID, workspace ID, etc", + nullable=True, + ) + + support = cls._args_schema.support + support.email = AAZStrArg( + options=["email"], + help="Email of support contact", + nullable=True, + ) + support.link = AAZStrArg( + options=["link"], + help="Link for support help, like to support page to open a ticket etc.", + nullable=True, + ) + support.name = AAZStrArg( + options=["name"], + help="Name of the support contact. Company or person.", + nullable=True, + ) + support.tier = AAZStrArg( + options=["tier"], + help="Type of support for content item", + enum={"Community": "Community", "Microsoft": "Microsoft", "Partner": "Partner"}, + ) + + threat_tactics = cls._args_schema.threat_tactics + threat_tactics.Element = AAZStrArg() + + threat_techniques = cls._args_schema.threat_techniques + threat_techniques.Element = AAZStrArg() + return cls._args_schema + + _args_metadata_dependencies_update = None + + @classmethod + def _build_args_metadata_dependencies_update(cls, _schema): + if cls._args_metadata_dependencies_update is not None: + _schema.content_id = cls._args_metadata_dependencies_update.content_id + _schema.criteria = cls._args_metadata_dependencies_update.criteria + _schema.kind = cls._args_metadata_dependencies_update.kind + _schema.name = cls._args_metadata_dependencies_update.name + _schema.operator = cls._args_metadata_dependencies_update.operator + _schema.version = cls._args_metadata_dependencies_update.version + return + + cls._args_metadata_dependencies_update = AAZObjectArg( + nullable=True, + ) + + metadata_dependencies_update = cls._args_metadata_dependencies_update + metadata_dependencies_update.content_id = AAZStrArg( + options=["content-id"], + help="Id of the content item we depend on", + nullable=True, + ) + metadata_dependencies_update.criteria = AAZListArg( + options=["criteria"], + help="This is the list of dependencies we must fulfill, according to the AND/OR operator", + nullable=True, + ) + metadata_dependencies_update.kind = AAZStrArg( + options=["kind"], + help="Type of the content item we depend on", + nullable=True, + enum={"AnalyticsRule": "AnalyticsRule", "AnalyticsRuleTemplate": "AnalyticsRuleTemplate", "AutomationRule": "AutomationRule", "AzureFunction": "AzureFunction", "DataConnector": "DataConnector", "DataType": "DataType", "HuntingQuery": "HuntingQuery", "InvestigationQuery": "InvestigationQuery", "LogicAppsCustomConnector": "LogicAppsCustomConnector", "Parser": "Parser", "Playbook": "Playbook", "PlaybookTemplate": "PlaybookTemplate", "Solution": "Solution", "Watchlist": "Watchlist", "WatchlistTemplate": "WatchlistTemplate", "Workbook": "Workbook", "WorkbookTemplate": "WorkbookTemplate"}, + ) + metadata_dependencies_update.name = AAZStrArg( + options=["name"], + help="Name of the content item", + nullable=True, + ) + metadata_dependencies_update.operator = AAZStrArg( + options=["operator"], + help="Operator used for list of dependencies in criteria array.", + nullable=True, + enum={"AND": "AND", "OR": "OR"}, + ) + metadata_dependencies_update.version = AAZStrArg( + options=["version"], + help="Version of the the content item we depend on. Can be blank, * or missing to indicate any version fulfills the dependency. If version does not match our defined numeric format then an exact match is required.", + nullable=True, + ) + + criteria = cls._args_metadata_dependencies_update.criteria + criteria.Element = AAZObjectArg( + nullable=True, + ) + cls._build_args_metadata_dependencies_update(criteria.Element) + + _schema.content_id = cls._args_metadata_dependencies_update.content_id + _schema.criteria = cls._args_metadata_dependencies_update.criteria + _schema.kind = cls._args_metadata_dependencies_update.kind + _schema.name = cls._args_metadata_dependencies_update.name + _schema.operator = cls._args_metadata_dependencies_update.operator + _schema.version = cls._args_metadata_dependencies_update.version + + def _execute_operations(self): + self.MetadataGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.MetadataCreate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MetadataGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/metadata/{metadataName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "metadataName", self.ctx.args.metadata_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_metadata_model_read(cls._schema_on_200) + + return cls._schema_on_200 + + class MetadataCreate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/metadata/{metadataName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "metadataName", self.ctx.args.metadata_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_metadata_model_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("author", AAZObjectType, ".author") + properties.set_prop("categories", AAZObjectType, ".categories") + properties.set_prop("contentId", AAZStrType, ".content_id") + properties.set_prop("contentSchemaVersion", AAZStrType, ".content_schema_version") + properties.set_prop("customVersion", AAZStrType, ".custom_version") + _build_schema_metadata_dependencies_update(properties.set_prop("dependencies", AAZObjectType, ".dependencies")) + properties.set_prop("firstPublishDate", AAZStrType, ".first_publish_date") + properties.set_prop("icon", AAZStrType, ".icon") + properties.set_prop("kind", AAZStrType, ".kind", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("lastPublishDate", AAZStrType, ".last_publish_date") + properties.set_prop("parentId", AAZStrType, ".parent_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("previewImages", AAZListType, ".preview_images") + properties.set_prop("previewImagesDark", AAZListType, ".preview_images_dark") + properties.set_prop("providers", AAZListType, ".providers") + properties.set_prop("source", AAZObjectType, ".source") + properties.set_prop("support", AAZObjectType, ".support") + properties.set_prop("threatAnalysisTactics", AAZListType, ".threat_tactics") + properties.set_prop("threatAnalysisTechniques", AAZListType, ".threat_techniques") + properties.set_prop("version", AAZStrType, ".version") + + author = _builder.get(".properties.author") + if author is not None: + author.set_prop("email", AAZStrType, ".email") + author.set_prop("link", AAZStrType, ".link") + author.set_prop("name", AAZStrType, ".name") + + categories = _builder.get(".properties.categories") + if categories is not None: + categories.set_prop("domains", AAZListType, ".domains") + categories.set_prop("verticals", AAZListType, ".verticals") + + domains = _builder.get(".properties.categories.domains") + if domains is not None: + domains.set_elements(AAZStrType, ".") + + verticals = _builder.get(".properties.categories.verticals") + if verticals is not None: + verticals.set_elements(AAZStrType, ".") + + preview_images = _builder.get(".properties.previewImages") + if preview_images is not None: + preview_images.set_elements(AAZStrType, ".") + + preview_images_dark = _builder.get(".properties.previewImagesDark") + if preview_images_dark is not None: + preview_images_dark.set_elements(AAZStrType, ".") + + providers = _builder.get(".properties.providers") + if providers is not None: + providers.set_elements(AAZStrType, ".") + + source = _builder.get(".properties.source") + if source is not None: + source.set_prop("kind", AAZStrType, ".kind", typ_kwargs={"flags": {"required": True}}) + source.set_prop("name", AAZStrType, ".name") + source.set_prop("sourceId", AAZStrType, ".source_id") + + support = _builder.get(".properties.support") + if support is not None: + support.set_prop("email", AAZStrType, ".email") + support.set_prop("link", AAZStrType, ".link") + support.set_prop("name", AAZStrType, ".name") + support.set_prop("tier", AAZStrType, ".tier", typ_kwargs={"flags": {"required": True}}) + + threat_analysis_tactics = _builder.get(".properties.threatAnalysisTactics") + if threat_analysis_tactics is not None: + threat_analysis_tactics.set_elements(AAZStrType, ".") + + threat_analysis_techniques = _builder.get(".properties.threatAnalysisTechniques") + if threat_analysis_techniques is not None: + threat_analysis_techniques.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +def _build_schema_metadata_dependencies_update(_builder): + if _builder is None: + return + _builder.set_prop("contentId", AAZStrType, ".content_id") + _builder.set_prop("criteria", AAZListType, ".criteria") + _builder.set_prop("kind", AAZStrType, ".kind") + _builder.set_prop("name", AAZStrType, ".name") + _builder.set_prop("operator", AAZStrType, ".operator") + _builder.set_prop("version", AAZStrType, ".version") + + criteria = _builder.get(".criteria") + if criteria is not None: + _build_schema_metadata_dependencies_update(criteria.set_elements(AAZObjectType, ".")) + + +_schema_metadata_dependencies_read = None + + +def _build_schema_metadata_dependencies_read(_schema): + global _schema_metadata_dependencies_read + if _schema_metadata_dependencies_read is not None: + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + return + + _schema_metadata_dependencies_read = AAZObjectType() + + metadata_dependencies_read = _schema_metadata_dependencies_read + metadata_dependencies_read.content_id = AAZStrType( + serialized_name="contentId", + ) + metadata_dependencies_read.criteria = AAZListType() + metadata_dependencies_read.kind = AAZStrType() + metadata_dependencies_read.name = AAZStrType() + metadata_dependencies_read.operator = AAZStrType() + metadata_dependencies_read.version = AAZStrType() + + criteria = _schema_metadata_dependencies_read.criteria + criteria.Element = AAZObjectType() + _build_schema_metadata_dependencies_read(criteria.Element) + + _schema.content_id = _schema_metadata_dependencies_read.content_id + _schema.criteria = _schema_metadata_dependencies_read.criteria + _schema.kind = _schema_metadata_dependencies_read.kind + _schema.name = _schema_metadata_dependencies_read.name + _schema.operator = _schema_metadata_dependencies_read.operator + _schema.version = _schema_metadata_dependencies_read.version + + +_schema_metadata_model_read = None + + +def _build_schema_metadata_model_read(_schema): + global _schema_metadata_model_read + if _schema_metadata_model_read is not None: + _schema.etag = _schema_metadata_model_read.etag + _schema.id = _schema_metadata_model_read.id + _schema.name = _schema_metadata_model_read.name + _schema.properties = _schema_metadata_model_read.properties + _schema.system_data = _schema_metadata_model_read.system_data + _schema.type = _schema_metadata_model_read.type + return + + _schema_metadata_model_read = AAZObjectType() + + metadata_model_read = _schema_metadata_model_read + metadata_model_read.etag = AAZStrType() + metadata_model_read.id = AAZStrType( + flags={"read_only": True}, + ) + metadata_model_read.name = AAZStrType( + flags={"read_only": True}, + ) + metadata_model_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + metadata_model_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + metadata_model_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_metadata_model_read.properties + properties.author = AAZObjectType() + properties.categories = AAZObjectType() + properties.content_id = AAZStrType( + serialized_name="contentId", + ) + properties.content_schema_version = AAZStrType( + serialized_name="contentSchemaVersion", + ) + properties.custom_version = AAZStrType( + serialized_name="customVersion", + ) + properties.dependencies = AAZObjectType() + _build_schema_metadata_dependencies_read(properties.dependencies) + properties.first_publish_date = AAZStrType( + serialized_name="firstPublishDate", + ) + properties.icon = AAZStrType() + properties.kind = AAZStrType( + flags={"required": True}, + ) + properties.last_publish_date = AAZStrType( + serialized_name="lastPublishDate", + ) + properties.parent_id = AAZStrType( + serialized_name="parentId", + flags={"required": True}, + ) + properties.preview_images = AAZListType( + serialized_name="previewImages", + ) + properties.preview_images_dark = AAZListType( + serialized_name="previewImagesDark", + ) + properties.providers = AAZListType() + properties.source = AAZObjectType() + properties.support = AAZObjectType() + properties.threat_analysis_tactics = AAZListType( + serialized_name="threatAnalysisTactics", + ) + properties.threat_analysis_techniques = AAZListType( + serialized_name="threatAnalysisTechniques", + ) + properties.version = AAZStrType() + + author = _schema_metadata_model_read.properties.author + author.email = AAZStrType() + author.link = AAZStrType() + author.name = AAZStrType() + + categories = _schema_metadata_model_read.properties.categories + categories.domains = AAZListType() + categories.verticals = AAZListType() + + domains = _schema_metadata_model_read.properties.categories.domains + domains.Element = AAZStrType() + + verticals = _schema_metadata_model_read.properties.categories.verticals + verticals.Element = AAZStrType() + + preview_images = _schema_metadata_model_read.properties.preview_images + preview_images.Element = AAZStrType() + + preview_images_dark = _schema_metadata_model_read.properties.preview_images_dark + preview_images_dark.Element = AAZStrType() + + providers = _schema_metadata_model_read.properties.providers + providers.Element = AAZStrType() + + source = _schema_metadata_model_read.properties.source + source.kind = AAZStrType( + flags={"required": True}, + ) + source.name = AAZStrType() + source.source_id = AAZStrType( + serialized_name="sourceId", + ) + + support = _schema_metadata_model_read.properties.support + support.email = AAZStrType() + support.link = AAZStrType() + support.name = AAZStrType() + support.tier = AAZStrType( + flags={"required": True}, + ) + + threat_analysis_tactics = _schema_metadata_model_read.properties.threat_analysis_tactics + threat_analysis_tactics.Element = AAZStrType() + + threat_analysis_techniques = _schema_metadata_model_read.properties.threat_analysis_techniques + threat_analysis_techniques.Element = AAZStrType() + + system_data = _schema_metadata_model_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_metadata_model_read.etag + _schema.id = _schema_metadata_model_read.id + _schema.name = _schema_metadata_model_read.name + _schema.properties = _schema_metadata_model_read.properties + _schema.system_data = _schema_metadata_model_read.system_data + _schema.type = _schema_metadata_model_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/__cmd_group.py new file mode 100644 index 00000000000..330fba8e7e1 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel office-consent", +) +class __CMDGroup(AAZCommandGroup): + """Manage office consent with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/__init__.py new file mode 100644 index 00000000000..054d52707ea --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/__init__.py @@ -0,0 +1,14 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._delete import * +from ._list import * +from ._show import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_delete.py new file mode 100644 index 00000000000..c733e0dfea3 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel office-consent delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete the office365 consent. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/officeconsents/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.consent_id = AAZStrArg( + options=["-n", "--name", "--consent-id"], + help="consent ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.OfficeConsentsDelete(ctx=self.ctx)() + + class OfficeConsentsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/officeConsents/{consentId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "consentId", self.ctx.args.consent_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_list.py new file mode 100644 index 00000000000..c0c1e9624bc --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_list.py @@ -0,0 +1,210 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel office-consent list", + is_experimental=True, +) +class List(AAZCommand): + """Get all office365 consents. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/officeconsents", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.OfficeConsentsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class OfficeConsentsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/officeConsents", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.consent_id = AAZStrType( + serialized_name="consentId", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_show.py new file mode 100644 index 00000000000..ea319808b12 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/office_consent/_show.py @@ -0,0 +1,209 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel office-consent show", + is_experimental=True, +) +class Show(AAZCommand): + """Get an office365 consent. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/officeconsents/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.consent_id = AAZStrArg( + options=["-n", "--name", "--consent-id"], + help="consent ID", + required=True, + id_part="child_name_1", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.OfficeConsentsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class OfficeConsentsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/officeConsents/{consentId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "consentId", self.ctx.args.consent_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.consent_id = AAZStrType( + serialized_name="consentId", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/__cmd_group.py new file mode 100644 index 00000000000..333c2550efd --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel onboarding-state", +) +class __CMDGroup(AAZCommandGroup): + """Manage onboarding state with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_create.py new file mode 100644 index 00000000000..79166889b5f --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_create.py @@ -0,0 +1,244 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel onboarding-state create", + is_experimental=True, +) +class Create(AAZCommand): + """Create Sentinel onboarding state + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/onboardingstates/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.sentinel_onboarding_state_name = AAZStrArg( + options=["-n", "--name", "--sentinel-onboarding-state-name"], + help="The Sentinel onboarding state name. Supports - default", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.customer_managed_key = AAZBoolArg( + options=["--customer-managed-key"], + arg_group="Properties", + help="Flag that indicates the status of the CMK setting", + ) + + # define Arg Group "SentinelOnboardingStateParameter" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="SentinelOnboardingStateParameter", + help="Etag of the azure resource", + ) + return cls._args_schema + + def _execute_operations(self): + self.SentinelOnboardingStatesCreate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SentinelOnboardingStatesCreate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/onboardingStates/{sentinelOnboardingStateName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sentinelOnboardingStateName", self.ctx.args.sentinel_onboarding_state_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("customerManagedKey", AAZBoolType, ".customer_managed_key") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.customer_managed_key = AAZBoolType( + serialized_name="customerManagedKey", + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_delete.py new file mode 100644 index 00000000000..b74e3ffb83e --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel onboarding-state delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete Sentinel onboarding state + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/onboardingstates/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.sentinel_onboarding_state_name = AAZStrArg( + options=["-n", "--name", "--sentinel-onboarding-state-name"], + help="The Sentinel onboarding state name. Supports - default", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.SentinelOnboardingStatesDelete(ctx=self.ctx)() + + class SentinelOnboardingStatesDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/onboardingStates/{sentinelOnboardingStateName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sentinelOnboardingStateName", self.ctx.args.sentinel_onboarding_state_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_list.py new file mode 100644 index 00000000000..4b0461cfb33 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_list.py @@ -0,0 +1,204 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel onboarding-state list", + is_experimental=True, +) +class List(AAZCommand): + """Get all Sentinel onboarding states + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/onboardingstates", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.SentinelOnboardingStatesList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SentinelOnboardingStatesList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/onboardingStates", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.customer_managed_key = AAZBoolType( + serialized_name="customerManagedKey", + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_show.py new file mode 100644 index 00000000000..0f55fe3da99 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_show.py @@ -0,0 +1,207 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel onboarding-state show", + is_experimental=True, +) +class Show(AAZCommand): + """Get Sentinel onboarding state + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/onboardingstates/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.sentinel_onboarding_state_name = AAZStrArg( + options=["-n", "--name", "--sentinel-onboarding-state-name"], + help="The Sentinel onboarding state name. Supports - default", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.SentinelOnboardingStatesGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SentinelOnboardingStatesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/onboardingStates/{sentinelOnboardingStateName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sentinelOnboardingStateName", self.ctx.args.sentinel_onboarding_state_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.customer_managed_key = AAZBoolType( + serialized_name="customerManagedKey", + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_update.py new file mode 100644 index 00000000000..a98c4c7dbc8 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/onboarding_state/_update.py @@ -0,0 +1,384 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel onboarding-state update", + is_experimental=True, +) +class Update(AAZCommand): + """Update Sentinel onboarding state + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/onboardingstates/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.sentinel_onboarding_state_name = AAZStrArg( + options=["-n", "--name", "--sentinel-onboarding-state-name"], + help="The Sentinel onboarding state name. Supports - default", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.customer_managed_key = AAZBoolArg( + options=["--customer-managed-key"], + arg_group="Properties", + help="Flag that indicates the status of the CMK setting", + nullable=True, + ) + + # define Arg Group "SentinelOnboardingStateParameter" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="SentinelOnboardingStateParameter", + help="Etag of the azure resource", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.SentinelOnboardingStatesGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.SentinelOnboardingStatesCreate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SentinelOnboardingStatesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/onboardingStates/{sentinelOnboardingStateName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sentinelOnboardingStateName", self.ctx.args.sentinel_onboarding_state_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_sentinel_onboarding_state_read(cls._schema_on_200) + + return cls._schema_on_200 + + class SentinelOnboardingStatesCreate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/onboardingStates/{sentinelOnboardingStateName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sentinelOnboardingStateName", self.ctx.args.sentinel_onboarding_state_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_sentinel_onboarding_state_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("customerManagedKey", AAZBoolType, ".customer_managed_key") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_sentinel_onboarding_state_read = None + + +def _build_schema_sentinel_onboarding_state_read(_schema): + global _schema_sentinel_onboarding_state_read + if _schema_sentinel_onboarding_state_read is not None: + _schema.etag = _schema_sentinel_onboarding_state_read.etag + _schema.id = _schema_sentinel_onboarding_state_read.id + _schema.name = _schema_sentinel_onboarding_state_read.name + _schema.properties = _schema_sentinel_onboarding_state_read.properties + _schema.system_data = _schema_sentinel_onboarding_state_read.system_data + _schema.type = _schema_sentinel_onboarding_state_read.type + return + + _schema_sentinel_onboarding_state_read = AAZObjectType() + + sentinel_onboarding_state_read = _schema_sentinel_onboarding_state_read + sentinel_onboarding_state_read.etag = AAZStrType() + sentinel_onboarding_state_read.id = AAZStrType( + flags={"read_only": True}, + ) + sentinel_onboarding_state_read.name = AAZStrType( + flags={"read_only": True}, + ) + sentinel_onboarding_state_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + sentinel_onboarding_state_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + sentinel_onboarding_state_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_sentinel_onboarding_state_read.properties + properties.customer_managed_key = AAZBoolType( + serialized_name="customerManagedKey", + ) + + system_data = _schema_sentinel_onboarding_state_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_sentinel_onboarding_state_read.etag + _schema.id = _schema_sentinel_onboarding_state_read.id + _schema.name = _schema_sentinel_onboarding_state_read.name + _schema.properties = _schema_sentinel_onboarding_state_read.properties + _schema.system_data = _schema_sentinel_onboarding_state_read.system_data + _schema.type = _schema_sentinel_onboarding_state_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/__cmd_group.py new file mode 100644 index 00000000000..f89894fc7b8 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel setting", +) +class __CMDGroup(AAZCommandGroup): + """Manage setting with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_create.py new file mode 100644 index 00000000000..cc2dc77fa37 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_create.py @@ -0,0 +1,331 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel setting create", + is_experimental=True, +) +class Create(AAZCommand): + """Create setting. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/settings/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_name = AAZStrArg( + options=["-n", "--name", "--settings-name"], + help="The setting name. Supports - Anomalies, EyesOn, EntityAnalytics, Ueba", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Settings" + + _args_schema = cls._args_schema + _args_schema.entity_analytics = AAZObjectArg( + options=["--entity-analytics"], + arg_group="Settings", + ) + _args_schema.ueba = AAZObjectArg( + options=["--ueba"], + arg_group="Settings", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Settings", + help="Etag of the azure resource", + ) + + entity_analytics = cls._args_schema.entity_analytics + entity_analytics.entity_providers = AAZListArg( + options=["entity-providers"], + help="The relevant entity providers that are synced", + ) + + entity_providers = cls._args_schema.entity_analytics.entity_providers + entity_providers.Element = AAZStrArg( + enum={"ActiveDirectory": "ActiveDirectory", "AzureActiveDirectory": "AzureActiveDirectory"}, + ) + + ueba = cls._args_schema.ueba + ueba.data_sources = AAZListArg( + options=["data-sources"], + help="The relevant data sources that enriched by ueba", + ) + + data_sources = cls._args_schema.ueba.data_sources + data_sources.Element = AAZStrArg( + enum={"AuditLogs": "AuditLogs", "AzureActivity": "AzureActivity", "SecurityEvent": "SecurityEvent", "SigninLogs": "SigninLogs"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.ProductSettingsUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ProductSettingsUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/settings/{settingsName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsName", self.ctx.args.settings_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "EntityAnalytics", AAZStrType, ".entity_analytics", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Ueba", AAZStrType, ".ueba", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "EntityAnalytics") + _builder.discriminate_by("kind", "Ueba") + + disc_entity_analytics = _builder.get("{kind:EntityAnalytics}") + if disc_entity_analytics is not None: + disc_entity_analytics.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:EntityAnalytics}.properties") + if properties is not None: + properties.set_prop("entityProviders", AAZListType, ".entity_analytics.entity_providers") + + entity_providers = _builder.get("{kind:EntityAnalytics}.properties.entityProviders") + if entity_providers is not None: + entity_providers.set_elements(AAZStrType, ".") + + disc_ueba = _builder.get("{kind:Ueba}") + if disc_ueba is not None: + disc_ueba.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Ueba}.properties") + if properties is not None: + properties.set_prop("dataSources", AAZListType, ".ueba.data_sources") + + data_sources = _builder.get("{kind:Ueba}.properties.dataSources") + if data_sources is not None: + data_sources.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomalies = cls._schema_on_200.discriminate_by("kind", "Anomalies") + disc_anomalies.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Anomalies").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_entity_analytics = cls._schema_on_200.discriminate_by("kind", "EntityAnalytics") + disc_entity_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "EntityAnalytics").properties + properties.entity_providers = AAZListType( + serialized_name="entityProviders", + ) + + entity_providers = cls._schema_on_200.discriminate_by("kind", "EntityAnalytics").properties.entity_providers + entity_providers.Element = AAZStrType() + + disc_eyes_on = cls._schema_on_200.discriminate_by("kind", "EyesOn") + disc_eyes_on.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "EyesOn").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_ueba = cls._schema_on_200.discriminate_by("kind", "Ueba") + disc_ueba.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Ueba").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + + data_sources = cls._schema_on_200.discriminate_by("kind", "Ueba").properties.data_sources + data_sources.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_delete.py new file mode 100644 index 00000000000..925890f90f3 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel setting delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete setting of the product. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/settings/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_name = AAZStrArg( + options=["-n", "--name", "--settings-name"], + help="The setting name. Supports - Anomalies, EyesOn, EntityAnalytics, Ueba", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.ProductSettingsDelete(ctx=self.ctx)() + + class ProductSettingsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/settings/{settingsName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsName", self.ctx.args.settings_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_list.py new file mode 100644 index 00000000000..0da4c6a41ef --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_list.py @@ -0,0 +1,247 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel setting list", + is_experimental=True, +) +class List(AAZCommand): + """List of all the settings + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/settings", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.ProductSettingsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ProductSettingsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/settings", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomalies = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomalies") + disc_anomalies.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Anomalies").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_entity_analytics = cls._schema_on_200.value.Element.discriminate_by("kind", "EntityAnalytics") + disc_entity_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "EntityAnalytics").properties + properties.entity_providers = AAZListType( + serialized_name="entityProviders", + ) + + entity_providers = cls._schema_on_200.value.Element.discriminate_by("kind", "EntityAnalytics").properties.entity_providers + entity_providers.Element = AAZStrType() + + disc_eyes_on = cls._schema_on_200.value.Element.discriminate_by("kind", "EyesOn") + disc_eyes_on.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "EyesOn").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_ueba = cls._schema_on_200.value.Element.discriminate_by("kind", "Ueba") + disc_ueba.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "Ueba").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + + data_sources = cls._schema_on_200.value.Element.discriminate_by("kind", "Ueba").properties.data_sources + data_sources.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_show.py new file mode 100644 index 00000000000..3d63672715a --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_show.py @@ -0,0 +1,250 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel setting show", + is_experimental=True, +) +class Show(AAZCommand): + """Get a setting. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/settings/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_name = AAZStrArg( + options=["-n", "--name", "--settings-name"], + help="The setting name. Supports - Anomalies, EyesOn, EntityAnalytics, Ueba", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.ProductSettingsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ProductSettingsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/settings/{settingsName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsName", self.ctx.args.settings_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomalies = cls._schema_on_200.discriminate_by("kind", "Anomalies") + disc_anomalies.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Anomalies").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_entity_analytics = cls._schema_on_200.discriminate_by("kind", "EntityAnalytics") + disc_entity_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "EntityAnalytics").properties + properties.entity_providers = AAZListType( + serialized_name="entityProviders", + ) + + entity_providers = cls._schema_on_200.discriminate_by("kind", "EntityAnalytics").properties.entity_providers + entity_providers.Element = AAZStrType() + + disc_eyes_on = cls._schema_on_200.discriminate_by("kind", "EyesOn") + disc_eyes_on.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "EyesOn").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_ueba = cls._schema_on_200.discriminate_by("kind", "Ueba") + disc_ueba.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "Ueba").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + + data_sources = cls._schema_on_200.discriminate_by("kind", "Ueba").properties.data_sources + data_sources.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_update.py new file mode 100644 index 00000000000..a9aa8cb0454 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/setting/_update.py @@ -0,0 +1,536 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel setting update", + is_experimental=True, +) +class Update(AAZCommand): + """Update setting. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/settings/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.settings_name = AAZStrArg( + options=["-n", "--name", "--settings-name"], + help="The setting name. Supports - Anomalies, EyesOn, EntityAnalytics, Ueba", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Settings" + + _args_schema = cls._args_schema + _args_schema.entity_analytics = AAZObjectArg( + options=["--entity-analytics"], + arg_group="Settings", + ) + _args_schema.ueba = AAZObjectArg( + options=["--ueba"], + arg_group="Settings", + ) + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Settings", + help="Etag of the azure resource", + nullable=True, + ) + + entity_analytics = cls._args_schema.entity_analytics + entity_analytics.entity_providers = AAZListArg( + options=["entity-providers"], + help="The relevant entity providers that are synced", + nullable=True, + ) + + entity_providers = cls._args_schema.entity_analytics.entity_providers + entity_providers.Element = AAZStrArg( + enum={"ActiveDirectory": "ActiveDirectory", "AzureActiveDirectory": "AzureActiveDirectory"}, + ) + + ueba = cls._args_schema.ueba + ueba.data_sources = AAZListArg( + options=["data-sources"], + help="The relevant data sources that enriched by ueba", + nullable=True, + ) + + data_sources = cls._args_schema.ueba.data_sources + data_sources.Element = AAZStrArg( + enum={"AuditLogs": "AuditLogs", "AzureActivity": "AzureActivity", "SecurityEvent": "SecurityEvent", "SigninLogs": "SigninLogs"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.ProductSettingsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.ProductSettingsUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ProductSettingsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/settings/{settingsName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsName", self.ctx.args.settings_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_settings_read(cls._schema_on_200) + + return cls._schema_on_200 + + class ProductSettingsUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/settings/{settingsName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "settingsName", self.ctx.args.settings_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_settings_read(cls._schema_on_200) + + return cls._schema_on_200 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "EntityAnalytics", AAZStrType, ".entity_analytics", typ_kwargs={"flags": {"required": True}}) + _builder.set_const("kind", "Ueba", AAZStrType, ".ueba", typ_kwargs={"flags": {"required": True}}) + _builder.discriminate_by("kind", "EntityAnalytics") + _builder.discriminate_by("kind", "Ueba") + + disc_entity_analytics = _builder.get("{kind:EntityAnalytics}") + if disc_entity_analytics is not None: + disc_entity_analytics.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:EntityAnalytics}.properties") + if properties is not None: + properties.set_prop("entityProviders", AAZListType, ".entity_analytics.entity_providers") + + entity_providers = _builder.get("{kind:EntityAnalytics}.properties.entityProviders") + if entity_providers is not None: + entity_providers.set_elements(AAZStrType, ".") + + disc_ueba = _builder.get("{kind:Ueba}") + if disc_ueba is not None: + disc_ueba.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get("{kind:Ueba}.properties") + if properties is not None: + properties.set_prop("dataSources", AAZListType, ".ueba.data_sources") + + data_sources = _builder.get("{kind:Ueba}.properties.dataSources") + if data_sources is not None: + data_sources.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_settings_read = None + + +def _build_schema_settings_read(_schema): + global _schema_settings_read + if _schema_settings_read is not None: + _schema.etag = _schema_settings_read.etag + _schema.id = _schema_settings_read.id + _schema.kind = _schema_settings_read.kind + _schema.name = _schema_settings_read.name + _schema.system_data = _schema_settings_read.system_data + _schema.type = _schema_settings_read.type + _schema.discriminate_by( + "kind", + "Anomalies", + _schema_settings_read.discriminate_by( + "kind", + "Anomalies", + ) + ) + _schema.discriminate_by( + "kind", + "EntityAnalytics", + _schema_settings_read.discriminate_by( + "kind", + "EntityAnalytics", + ) + ) + _schema.discriminate_by( + "kind", + "EyesOn", + _schema_settings_read.discriminate_by( + "kind", + "EyesOn", + ) + ) + _schema.discriminate_by( + "kind", + "Ueba", + _schema_settings_read.discriminate_by( + "kind", + "Ueba", + ) + ) + return + + _schema_settings_read = AAZObjectType() + + settings_read = _schema_settings_read + settings_read.etag = AAZStrType() + settings_read.id = AAZStrType( + flags={"read_only": True}, + ) + settings_read.kind = AAZStrType( + flags={"required": True}, + ) + settings_read.name = AAZStrType( + flags={"read_only": True}, + ) + settings_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + settings_read.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = _schema_settings_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_anomalies = _schema_settings_read.discriminate_by("kind", "Anomalies") + disc_anomalies.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_settings_read.discriminate_by("kind", "Anomalies").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_entity_analytics = _schema_settings_read.discriminate_by("kind", "EntityAnalytics") + disc_entity_analytics.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_settings_read.discriminate_by("kind", "EntityAnalytics").properties + properties.entity_providers = AAZListType( + serialized_name="entityProviders", + ) + + entity_providers = _schema_settings_read.discriminate_by("kind", "EntityAnalytics").properties.entity_providers + entity_providers.Element = AAZStrType() + + disc_eyes_on = _schema_settings_read.discriminate_by("kind", "EyesOn") + disc_eyes_on.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_settings_read.discriminate_by("kind", "EyesOn").properties + properties.is_enabled = AAZBoolType( + serialized_name="isEnabled", + flags={"read_only": True}, + ) + + disc_ueba = _schema_settings_read.discriminate_by("kind", "Ueba") + disc_ueba.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = _schema_settings_read.discriminate_by("kind", "Ueba").properties + properties.data_sources = AAZListType( + serialized_name="dataSources", + ) + + data_sources = _schema_settings_read.discriminate_by("kind", "Ueba").properties.data_sources + data_sources.Element = AAZStrType() + + _schema.etag = _schema_settings_read.etag + _schema.id = _schema_settings_read.id + _schema.kind = _schema_settings_read.kind + _schema.name = _schema_settings_read.name + _schema.system_data = _schema_settings_read.system_data + _schema.type = _schema_settings_read.type + _schema.discriminate_by( + "kind", + "Anomalies", + _schema_settings_read.discriminate_by( + "kind", + "Anomalies", + ) + ) + _schema.discriminate_by( + "kind", + "EntityAnalytics", + _schema_settings_read.discriminate_by( + "kind", + "EntityAnalytics", + ) + ) + _schema.discriminate_by( + "kind", + "EyesOn", + _schema_settings_read.discriminate_by( + "kind", + "EyesOn", + ) + ) + _schema.discriminate_by( + "kind", + "Ueba", + _schema_settings_read.discriminate_by( + "kind", + "Ueba", + ) + ) + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/__cmd_group.py new file mode 100644 index 00000000000..59cf381bcb7 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel source-control", +) +class __CMDGroup(AAZCommandGroup): + """Manage source control with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/__init__.py new file mode 100644 index 00000000000..e954a625544 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/__init__.py @@ -0,0 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._list_repository import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_create.py new file mode 100644 index 00000000000..6dac4da67bc --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_create.py @@ -0,0 +1,585 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel source-control create", + is_experimental=True, +) +class Create(AAZCommand): + """Create a source control. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/sourcecontrols/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.source_control_id = AAZStrArg( + options=["-n", "--name", "--source-control-id"], + help="Source control Id", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.content_types = AAZListArg( + options=["--content-types"], + arg_group="Properties", + help="Array of source control content types.", + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="A description of the source control", + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the source control", + ) + _args_schema.id = AAZStrArg( + options=["--id"], + arg_group="Properties", + help="The id (a Guid) of the source control", + ) + _args_schema.last_deployment_info = AAZObjectArg( + options=["--last-deployment-info"], + arg_group="Properties", + help="Information regarding the latest deployment for the source control.", + ) + _args_schema.repo_type = AAZStrArg( + options=["--repo-type"], + arg_group="Properties", + help="The repository type of the source control", + enum={"DevOps": "DevOps", "Github": "Github"}, + ) + _args_schema.repository = AAZObjectArg( + options=["--repository"], + arg_group="Properties", + help="Repository metadata.", + ) + _args_schema.repository_info = AAZObjectArg( + options=["--repository-info"], + arg_group="Properties", + help="Information regarding the resources created in user's repository.", + ) + _args_schema.version = AAZStrArg( + options=["--version"], + arg_group="Properties", + help="The version number associated with the source control", + enum={"V1": "V1", "V2": "V2"}, + ) + + content_types = cls._args_schema.content_types + content_types.Element = AAZStrArg( + enum={"AnalyticRule": "AnalyticRule", "Workbook": "Workbook"}, + ) + + last_deployment_info = cls._args_schema.last_deployment_info + last_deployment_info.deployment = AAZObjectArg( + options=["deployment"], + help="Deployment information.", + ) + last_deployment_info.deployment_fetch_status = AAZStrArg( + options=["deployment-fetch-status"], + help="Status while fetching the last deployment.", + enum={"NotFound": "NotFound", "Success": "Success", "Unauthorized": "Unauthorized"}, + ) + last_deployment_info.message = AAZStrArg( + options=["message"], + help="Additional details about the deployment that can be shown to the user.", + ) + + deployment = cls._args_schema.last_deployment_info.deployment + deployment.deployment_id = AAZStrArg( + options=["deployment-id"], + help="Deployment identifier.", + ) + deployment.deployment_logs_url = AAZStrArg( + options=["deployment-logs-url"], + help="Url to access repository action logs.", + ) + deployment.deployment_result = AAZStrArg( + options=["deployment-result"], + help="The outcome of the deployment.", + enum={"Canceled": "Canceled", "Failed": "Failed", "Success": "Success"}, + ) + deployment.deployment_state = AAZStrArg( + options=["deployment-state"], + help="Current status of the deployment.", + enum={"Canceling": "Canceling", "Completed": "Completed", "In_Progress": "In_Progress", "Queued": "Queued"}, + ) + deployment.deployment_time = AAZStrArg( + options=["deployment-time"], + help="The time when the deployment finished.", + ) + + repository = cls._args_schema.repository + repository.branch = AAZStrArg( + options=["branch"], + help="Branch name of repository.", + ) + repository.deployment_logs_url = AAZStrArg( + options=["deployment-logs-url"], + help="Url to access repository action logs.", + ) + repository.display_url = AAZStrArg( + options=["display-url"], + help="Display url of repository.", + ) + repository.path_mapping = AAZListArg( + options=["path-mapping"], + help="Dictionary of source control content type and path mapping.", + ) + repository.url = AAZStrArg( + options=["url"], + help="Url of repository.", + ) + + path_mapping = cls._args_schema.repository.path_mapping + path_mapping.Element = AAZObjectArg() + + _element = cls._args_schema.repository.path_mapping.Element + _element.content_type = AAZStrArg( + options=["content-type"], + help="Content type.", + enum={"AnalyticRule": "AnalyticRule", "Workbook": "Workbook"}, + ) + _element.path = AAZStrArg( + options=["path"], + help="The path to the content.", + ) + + repository_info = cls._args_schema.repository_info + repository_info.azure_dev_ops_resource_info = AAZObjectArg( + options=["azure-dev-ops-resource-info"], + help="Resources created in Azure DevOps for this source-control.", + ) + repository_info.git_hub_resource_info = AAZObjectArg( + options=["git-hub-resource-info"], + help="Resources created in GitHub for this source-control.", + ) + repository_info.webhook = AAZObjectArg( + options=["webhook"], + help="The webhook object created for the source-control.", + ) + + azure_dev_ops_resource_info = cls._args_schema.repository_info.azure_dev_ops_resource_info + azure_dev_ops_resource_info.pipeline_id = AAZStrArg( + options=["pipeline-id"], + help="Id of the pipeline created for the source-control.", + ) + azure_dev_ops_resource_info.service_connection_id = AAZStrArg( + options=["service-connection-id"], + help="Id of the service-connection created for the source-control.", + ) + + git_hub_resource_info = cls._args_schema.repository_info.git_hub_resource_info + git_hub_resource_info.app_installation_id = AAZStrArg( + options=["app-installation-id"], + help="GitHub application installation id.", + ) + + webhook = cls._args_schema.repository_info.webhook + webhook.rotate_webhook_secret = AAZBoolArg( + options=["rotate-webhook-secret"], + help="A flag to instruct the backend service to rotate webhook secret.", + ) + webhook.webhook_id = AAZStrArg( + options=["webhook-id"], + help="Unique identifier for the webhook.", + ) + webhook.webhook_secret_update_time = AAZStrArg( + options=["webhook-secret-update-time"], + help="Time when the webhook secret was updated.", + ) + webhook.webhook_url = AAZStrArg( + options=["webhook-url"], + help="URL that gets invoked by the webhook.", + ) + + # define Arg Group "SourceControl" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="SourceControl", + help="Etag of the azure resource", + ) + return cls._args_schema + + def _execute_operations(self): + self.SourceControlsCreate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SourceControlsCreate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/sourcecontrols/{sourceControlId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sourceControlId", self.ctx.args.source_control_id, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("contentTypes", AAZListType, ".content_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("id", AAZStrType, ".id") + properties.set_prop("lastDeploymentInfo", AAZObjectType, ".last_deployment_info") + properties.set_prop("repoType", AAZStrType, ".repo_type", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("repository", AAZObjectType, ".repository", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("repositoryResourceInfo", AAZObjectType, ".repository_info") + properties.set_prop("version", AAZStrType, ".version") + + content_types = _builder.get(".properties.contentTypes") + if content_types is not None: + content_types.set_elements(AAZStrType, ".") + + last_deployment_info = _builder.get(".properties.lastDeploymentInfo") + if last_deployment_info is not None: + last_deployment_info.set_prop("deployment", AAZObjectType, ".deployment") + last_deployment_info.set_prop("deploymentFetchStatus", AAZStrType, ".deployment_fetch_status") + last_deployment_info.set_prop("message", AAZStrType, ".message") + + deployment = _builder.get(".properties.lastDeploymentInfo.deployment") + if deployment is not None: + deployment.set_prop("deploymentId", AAZStrType, ".deployment_id") + deployment.set_prop("deploymentLogsUrl", AAZStrType, ".deployment_logs_url") + deployment.set_prop("deploymentResult", AAZStrType, ".deployment_result") + deployment.set_prop("deploymentState", AAZStrType, ".deployment_state") + deployment.set_prop("deploymentTime", AAZStrType, ".deployment_time") + + repository = _builder.get(".properties.repository") + if repository is not None: + repository.set_prop("branch", AAZStrType, ".branch") + repository.set_prop("deploymentLogsUrl", AAZStrType, ".deployment_logs_url") + repository.set_prop("displayUrl", AAZStrType, ".display_url") + repository.set_prop("pathMapping", AAZListType, ".path_mapping") + repository.set_prop("url", AAZStrType, ".url") + + path_mapping = _builder.get(".properties.repository.pathMapping") + if path_mapping is not None: + path_mapping.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.repository.pathMapping[]") + if _elements is not None: + _elements.set_prop("contentType", AAZStrType, ".content_type") + _elements.set_prop("path", AAZStrType, ".path") + + repository_resource_info = _builder.get(".properties.repositoryResourceInfo") + if repository_resource_info is not None: + repository_resource_info.set_prop("azureDevOpsResourceInfo", AAZObjectType, ".azure_dev_ops_resource_info") + repository_resource_info.set_prop("gitHubResourceInfo", AAZObjectType, ".git_hub_resource_info") + repository_resource_info.set_prop("webhook", AAZObjectType, ".webhook") + + azure_dev_ops_resource_info = _builder.get(".properties.repositoryResourceInfo.azureDevOpsResourceInfo") + if azure_dev_ops_resource_info is not None: + azure_dev_ops_resource_info.set_prop("pipelineId", AAZStrType, ".pipeline_id") + azure_dev_ops_resource_info.set_prop("serviceConnectionId", AAZStrType, ".service_connection_id") + + git_hub_resource_info = _builder.get(".properties.repositoryResourceInfo.gitHubResourceInfo") + if git_hub_resource_info is not None: + git_hub_resource_info.set_prop("appInstallationId", AAZStrType, ".app_installation_id") + + webhook = _builder.get(".properties.repositoryResourceInfo.webhook") + if webhook is not None: + webhook.set_prop("rotateWebhookSecret", AAZBoolType, ".rotate_webhook_secret") + webhook.set_prop("webhookId", AAZStrType, ".webhook_id") + webhook.set_prop("webhookSecretUpdateTime", AAZStrType, ".webhook_secret_update_time") + webhook.set_prop("webhookUrl", AAZStrType, ".webhook_url") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.content_types = AAZListType( + serialized_name="contentTypes", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.id = AAZStrType() + properties.last_deployment_info = AAZObjectType( + serialized_name="lastDeploymentInfo", + ) + properties.repo_type = AAZStrType( + serialized_name="repoType", + flags={"required": True}, + ) + properties.repository = AAZObjectType( + flags={"required": True}, + ) + properties.repository_resource_info = AAZObjectType( + serialized_name="repositoryResourceInfo", + ) + properties.version = AAZStrType() + + content_types = cls._schema_on_200_201.properties.content_types + content_types.Element = AAZStrType() + + last_deployment_info = cls._schema_on_200_201.properties.last_deployment_info + last_deployment_info.deployment = AAZObjectType() + last_deployment_info.deployment_fetch_status = AAZStrType( + serialized_name="deploymentFetchStatus", + ) + last_deployment_info.message = AAZStrType() + + deployment = cls._schema_on_200_201.properties.last_deployment_info.deployment + deployment.deployment_id = AAZStrType( + serialized_name="deploymentId", + ) + deployment.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + deployment.deployment_result = AAZStrType( + serialized_name="deploymentResult", + ) + deployment.deployment_state = AAZStrType( + serialized_name="deploymentState", + ) + deployment.deployment_time = AAZStrType( + serialized_name="deploymentTime", + ) + + repository = cls._schema_on_200_201.properties.repository + repository.branch = AAZStrType() + repository.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + repository.display_url = AAZStrType( + serialized_name="displayUrl", + ) + repository.path_mapping = AAZListType( + serialized_name="pathMapping", + ) + repository.url = AAZStrType() + + path_mapping = cls._schema_on_200_201.properties.repository.path_mapping + path_mapping.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.repository.path_mapping.Element + _element.content_type = AAZStrType( + serialized_name="contentType", + ) + _element.path = AAZStrType() + + repository_resource_info = cls._schema_on_200_201.properties.repository_resource_info + repository_resource_info.azure_dev_ops_resource_info = AAZObjectType( + serialized_name="azureDevOpsResourceInfo", + ) + repository_resource_info.git_hub_resource_info = AAZObjectType( + serialized_name="gitHubResourceInfo", + ) + repository_resource_info.webhook = AAZObjectType() + + azure_dev_ops_resource_info = cls._schema_on_200_201.properties.repository_resource_info.azure_dev_ops_resource_info + azure_dev_ops_resource_info.pipeline_id = AAZStrType( + serialized_name="pipelineId", + ) + azure_dev_ops_resource_info.service_connection_id = AAZStrType( + serialized_name="serviceConnectionId", + ) + + git_hub_resource_info = cls._schema_on_200_201.properties.repository_resource_info.git_hub_resource_info + git_hub_resource_info.app_installation_id = AAZStrType( + serialized_name="appInstallationId", + ) + + webhook = cls._schema_on_200_201.properties.repository_resource_info.webhook + webhook.rotate_webhook_secret = AAZBoolType( + serialized_name="rotateWebhookSecret", + ) + webhook.webhook_id = AAZStrType( + serialized_name="webhookId", + ) + webhook.webhook_secret_update_time = AAZStrType( + serialized_name="webhookSecretUpdateTime", + ) + webhook.webhook_url = AAZStrType( + serialized_name="webhookUrl", + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_delete.py new file mode 100644 index 00000000000..42197c756f9 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel source-control delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a source control. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/sourcecontrols/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.source_control_id = AAZStrArg( + options=["-n", "--name", "--source-control-id"], + help="Source control Id", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.SourceControlsDelete(ctx=self.ctx)() + + class SourceControlsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/sourcecontrols/{sourceControlId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sourceControlId", self.ctx.args.source_control_id, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_list.py new file mode 100644 index 00000000000..2878ab38f9d --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_list.py @@ -0,0 +1,314 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel source-control list", + is_experimental=True, +) +class List(AAZCommand): + """Get all source controls, without source control items. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/sourcecontrols", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.SourceControlsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class SourceControlsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/sourcecontrols", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.content_types = AAZListType( + serialized_name="contentTypes", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.id = AAZStrType() + properties.last_deployment_info = AAZObjectType( + serialized_name="lastDeploymentInfo", + ) + properties.repo_type = AAZStrType( + serialized_name="repoType", + flags={"required": True}, + ) + properties.repository = AAZObjectType( + flags={"required": True}, + ) + properties.repository_resource_info = AAZObjectType( + serialized_name="repositoryResourceInfo", + ) + properties.version = AAZStrType() + + content_types = cls._schema_on_200.value.Element.properties.content_types + content_types.Element = AAZStrType() + + last_deployment_info = cls._schema_on_200.value.Element.properties.last_deployment_info + last_deployment_info.deployment = AAZObjectType() + last_deployment_info.deployment_fetch_status = AAZStrType( + serialized_name="deploymentFetchStatus", + ) + last_deployment_info.message = AAZStrType() + + deployment = cls._schema_on_200.value.Element.properties.last_deployment_info.deployment + deployment.deployment_id = AAZStrType( + serialized_name="deploymentId", + ) + deployment.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + deployment.deployment_result = AAZStrType( + serialized_name="deploymentResult", + ) + deployment.deployment_state = AAZStrType( + serialized_name="deploymentState", + ) + deployment.deployment_time = AAZStrType( + serialized_name="deploymentTime", + ) + + repository = cls._schema_on_200.value.Element.properties.repository + repository.branch = AAZStrType() + repository.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + repository.display_url = AAZStrType( + serialized_name="displayUrl", + ) + repository.path_mapping = AAZListType( + serialized_name="pathMapping", + ) + repository.url = AAZStrType() + + path_mapping = cls._schema_on_200.value.Element.properties.repository.path_mapping + path_mapping.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.repository.path_mapping.Element + _element.content_type = AAZStrType( + serialized_name="contentType", + ) + _element.path = AAZStrType() + + repository_resource_info = cls._schema_on_200.value.Element.properties.repository_resource_info + repository_resource_info.azure_dev_ops_resource_info = AAZObjectType( + serialized_name="azureDevOpsResourceInfo", + ) + repository_resource_info.git_hub_resource_info = AAZObjectType( + serialized_name="gitHubResourceInfo", + ) + repository_resource_info.webhook = AAZObjectType() + + azure_dev_ops_resource_info = cls._schema_on_200.value.Element.properties.repository_resource_info.azure_dev_ops_resource_info + azure_dev_ops_resource_info.pipeline_id = AAZStrType( + serialized_name="pipelineId", + ) + azure_dev_ops_resource_info.service_connection_id = AAZStrType( + serialized_name="serviceConnectionId", + ) + + git_hub_resource_info = cls._schema_on_200.value.Element.properties.repository_resource_info.git_hub_resource_info + git_hub_resource_info.app_installation_id = AAZStrType( + serialized_name="appInstallationId", + ) + + webhook = cls._schema_on_200.value.Element.properties.repository_resource_info.webhook + webhook.rotate_webhook_secret = AAZBoolType( + serialized_name="rotateWebhookSecret", + ) + webhook.webhook_id = AAZStrType( + serialized_name="webhookId", + ) + webhook.webhook_secret_update_time = AAZStrType( + serialized_name="webhookSecretUpdateTime", + ) + webhook.webhook_url = AAZStrType( + serialized_name="webhookUrl", + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_list_repository.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_list_repository.py new file mode 100644 index 00000000000..1f66005db84 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_list_repository.py @@ -0,0 +1,187 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel source-control list-repository", + is_experimental=True, +) +class ListRepository(AAZCommand): + """Get a list of repositories metadata. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/listrepositories", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.repo_type = AAZStrArg( + options=["--repo-type"], + help="The type of repository.", + required=True, + enum={"DevOps": "DevOps", "Github": "Github"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.SourceControlListRepositories(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class SourceControlListRepositories(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/listRepositories", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args.repo_type, + typ=AAZStrType, + typ_kwargs={"flags": {"required": True}} + ) + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.branches = AAZListType() + _element.full_name = AAZStrType( + serialized_name="fullName", + ) + _element.url = AAZStrType() + + branches = cls._schema_on_200.value.Element.branches + branches.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["ListRepository"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_show.py new file mode 100644 index 00000000000..1cb74c4c84a --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_show.py @@ -0,0 +1,313 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel source-control show", + is_experimental=True, +) +class Show(AAZCommand): + """Get a source control by its identifier. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/sourcecontrols/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.source_control_id = AAZStrArg( + options=["-n", "--name", "--source-control-id"], + help="Source control Id", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.SourceControlsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SourceControlsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/sourcecontrols/{sourceControlId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sourceControlId", self.ctx.args.source_control_id, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.content_types = AAZListType( + serialized_name="contentTypes", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.id = AAZStrType() + properties.last_deployment_info = AAZObjectType( + serialized_name="lastDeploymentInfo", + ) + properties.repo_type = AAZStrType( + serialized_name="repoType", + flags={"required": True}, + ) + properties.repository = AAZObjectType( + flags={"required": True}, + ) + properties.repository_resource_info = AAZObjectType( + serialized_name="repositoryResourceInfo", + ) + properties.version = AAZStrType() + + content_types = cls._schema_on_200.properties.content_types + content_types.Element = AAZStrType() + + last_deployment_info = cls._schema_on_200.properties.last_deployment_info + last_deployment_info.deployment = AAZObjectType() + last_deployment_info.deployment_fetch_status = AAZStrType( + serialized_name="deploymentFetchStatus", + ) + last_deployment_info.message = AAZStrType() + + deployment = cls._schema_on_200.properties.last_deployment_info.deployment + deployment.deployment_id = AAZStrType( + serialized_name="deploymentId", + ) + deployment.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + deployment.deployment_result = AAZStrType( + serialized_name="deploymentResult", + ) + deployment.deployment_state = AAZStrType( + serialized_name="deploymentState", + ) + deployment.deployment_time = AAZStrType( + serialized_name="deploymentTime", + ) + + repository = cls._schema_on_200.properties.repository + repository.branch = AAZStrType() + repository.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + repository.display_url = AAZStrType( + serialized_name="displayUrl", + ) + repository.path_mapping = AAZListType( + serialized_name="pathMapping", + ) + repository.url = AAZStrType() + + path_mapping = cls._schema_on_200.properties.repository.path_mapping + path_mapping.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.repository.path_mapping.Element + _element.content_type = AAZStrType( + serialized_name="contentType", + ) + _element.path = AAZStrType() + + repository_resource_info = cls._schema_on_200.properties.repository_resource_info + repository_resource_info.azure_dev_ops_resource_info = AAZObjectType( + serialized_name="azureDevOpsResourceInfo", + ) + repository_resource_info.git_hub_resource_info = AAZObjectType( + serialized_name="gitHubResourceInfo", + ) + repository_resource_info.webhook = AAZObjectType() + + azure_dev_ops_resource_info = cls._schema_on_200.properties.repository_resource_info.azure_dev_ops_resource_info + azure_dev_ops_resource_info.pipeline_id = AAZStrType( + serialized_name="pipelineId", + ) + azure_dev_ops_resource_info.service_connection_id = AAZStrType( + serialized_name="serviceConnectionId", + ) + + git_hub_resource_info = cls._schema_on_200.properties.repository_resource_info.git_hub_resource_info + git_hub_resource_info.app_installation_id = AAZStrType( + serialized_name="appInstallationId", + ) + + webhook = cls._schema_on_200.properties.repository_resource_info.webhook + webhook.rotate_webhook_secret = AAZBoolType( + serialized_name="rotateWebhookSecret", + ) + webhook.webhook_id = AAZStrType( + serialized_name="webhookId", + ) + webhook.webhook_secret_update_time = AAZStrType( + serialized_name="webhookSecretUpdateTime", + ) + webhook.webhook_url = AAZStrType( + serialized_name="webhookUrl", + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_update.py new file mode 100644 index 00000000000..0b2522924e0 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/source_control/_update.py @@ -0,0 +1,754 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel source-control update", + is_experimental=True, +) +class Update(AAZCommand): + """Create a source control. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/sourcecontrols/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.source_control_id = AAZStrArg( + options=["-n", "--name", "--source-control-id"], + help="Source control Id", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.content_types = AAZListArg( + options=["--content-types"], + arg_group="Properties", + help="Array of source control content types.", + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="A description of the source control", + nullable=True, + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the source control", + ) + _args_schema.id = AAZStrArg( + options=["--id"], + arg_group="Properties", + help="The id (a Guid) of the source control", + nullable=True, + ) + _args_schema.last_deployment_info = AAZObjectArg( + options=["--last-deployment-info"], + arg_group="Properties", + help="Information regarding the latest deployment for the source control.", + nullable=True, + ) + _args_schema.repo_type = AAZStrArg( + options=["--repo-type"], + arg_group="Properties", + help="The repository type of the source control", + enum={"DevOps": "DevOps", "Github": "Github"}, + ) + _args_schema.repository = AAZObjectArg( + options=["--repository"], + arg_group="Properties", + help="Repository metadata.", + ) + _args_schema.repository_info = AAZObjectArg( + options=["--repository-info"], + arg_group="Properties", + help="Information regarding the resources created in user's repository.", + nullable=True, + ) + _args_schema.version = AAZStrArg( + options=["--version"], + arg_group="Properties", + help="The version number associated with the source control", + nullable=True, + enum={"V1": "V1", "V2": "V2"}, + ) + + content_types = cls._args_schema.content_types + content_types.Element = AAZStrArg( + enum={"AnalyticRule": "AnalyticRule", "Workbook": "Workbook"}, + ) + + last_deployment_info = cls._args_schema.last_deployment_info + last_deployment_info.deployment = AAZObjectArg( + options=["deployment"], + help="Deployment information.", + nullable=True, + ) + last_deployment_info.deployment_fetch_status = AAZStrArg( + options=["deployment-fetch-status"], + help="Status while fetching the last deployment.", + nullable=True, + enum={"NotFound": "NotFound", "Success": "Success", "Unauthorized": "Unauthorized"}, + ) + last_deployment_info.message = AAZStrArg( + options=["message"], + help="Additional details about the deployment that can be shown to the user.", + nullable=True, + ) + + deployment = cls._args_schema.last_deployment_info.deployment + deployment.deployment_id = AAZStrArg( + options=["deployment-id"], + help="Deployment identifier.", + nullable=True, + ) + deployment.deployment_logs_url = AAZStrArg( + options=["deployment-logs-url"], + help="Url to access repository action logs.", + nullable=True, + ) + deployment.deployment_result = AAZStrArg( + options=["deployment-result"], + help="The outcome of the deployment.", + nullable=True, + enum={"Canceled": "Canceled", "Failed": "Failed", "Success": "Success"}, + ) + deployment.deployment_state = AAZStrArg( + options=["deployment-state"], + help="Current status of the deployment.", + nullable=True, + enum={"Canceling": "Canceling", "Completed": "Completed", "In_Progress": "In_Progress", "Queued": "Queued"}, + ) + deployment.deployment_time = AAZStrArg( + options=["deployment-time"], + help="The time when the deployment finished.", + nullable=True, + ) + + repository = cls._args_schema.repository + repository.branch = AAZStrArg( + options=["branch"], + help="Branch name of repository.", + nullable=True, + ) + repository.deployment_logs_url = AAZStrArg( + options=["deployment-logs-url"], + help="Url to access repository action logs.", + nullable=True, + ) + repository.display_url = AAZStrArg( + options=["display-url"], + help="Display url of repository.", + nullable=True, + ) + repository.path_mapping = AAZListArg( + options=["path-mapping"], + help="Dictionary of source control content type and path mapping.", + nullable=True, + ) + repository.url = AAZStrArg( + options=["url"], + help="Url of repository.", + nullable=True, + ) + + path_mapping = cls._args_schema.repository.path_mapping + path_mapping.Element = AAZObjectArg() + + _element = cls._args_schema.repository.path_mapping.Element + _element.content_type = AAZStrArg( + options=["content-type"], + help="Content type.", + nullable=True, + enum={"AnalyticRule": "AnalyticRule", "Workbook": "Workbook"}, + ) + _element.path = AAZStrArg( + options=["path"], + help="The path to the content.", + nullable=True, + ) + + repository_info = cls._args_schema.repository_info + repository_info.azure_dev_ops_resource_info = AAZObjectArg( + options=["azure-dev-ops-resource-info"], + help="Resources created in Azure DevOps for this source-control.", + nullable=True, + ) + repository_info.git_hub_resource_info = AAZObjectArg( + options=["git-hub-resource-info"], + help="Resources created in GitHub for this source-control.", + nullable=True, + ) + repository_info.webhook = AAZObjectArg( + options=["webhook"], + help="The webhook object created for the source-control.", + nullable=True, + ) + + azure_dev_ops_resource_info = cls._args_schema.repository_info.azure_dev_ops_resource_info + azure_dev_ops_resource_info.pipeline_id = AAZStrArg( + options=["pipeline-id"], + help="Id of the pipeline created for the source-control.", + nullable=True, + ) + azure_dev_ops_resource_info.service_connection_id = AAZStrArg( + options=["service-connection-id"], + help="Id of the service-connection created for the source-control.", + nullable=True, + ) + + git_hub_resource_info = cls._args_schema.repository_info.git_hub_resource_info + git_hub_resource_info.app_installation_id = AAZStrArg( + options=["app-installation-id"], + help="GitHub application installation id.", + nullable=True, + ) + + webhook = cls._args_schema.repository_info.webhook + webhook.rotate_webhook_secret = AAZBoolArg( + options=["rotate-webhook-secret"], + help="A flag to instruct the backend service to rotate webhook secret.", + nullable=True, + ) + webhook.webhook_id = AAZStrArg( + options=["webhook-id"], + help="Unique identifier for the webhook.", + nullable=True, + ) + webhook.webhook_secret_update_time = AAZStrArg( + options=["webhook-secret-update-time"], + help="Time when the webhook secret was updated.", + nullable=True, + ) + webhook.webhook_url = AAZStrArg( + options=["webhook-url"], + help="URL that gets invoked by the webhook.", + nullable=True, + ) + + # define Arg Group "SourceControl" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="SourceControl", + help="Etag of the azure resource", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.SourceControlsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.SourceControlsCreate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class SourceControlsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/sourcecontrols/{sourceControlId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sourceControlId", self.ctx.args.source_control_id, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_source_control_read(cls._schema_on_200) + + return cls._schema_on_200 + + class SourceControlsCreate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/sourcecontrols/{sourceControlId}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "sourceControlId", self.ctx.args.source_control_id, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_source_control_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("contentTypes", AAZListType, ".content_types", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("id", AAZStrType, ".id") + properties.set_prop("lastDeploymentInfo", AAZObjectType, ".last_deployment_info") + properties.set_prop("repoType", AAZStrType, ".repo_type", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("repository", AAZObjectType, ".repository", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("repositoryResourceInfo", AAZObjectType, ".repository_info") + properties.set_prop("version", AAZStrType, ".version") + + content_types = _builder.get(".properties.contentTypes") + if content_types is not None: + content_types.set_elements(AAZStrType, ".") + + last_deployment_info = _builder.get(".properties.lastDeploymentInfo") + if last_deployment_info is not None: + last_deployment_info.set_prop("deployment", AAZObjectType, ".deployment") + last_deployment_info.set_prop("deploymentFetchStatus", AAZStrType, ".deployment_fetch_status") + last_deployment_info.set_prop("message", AAZStrType, ".message") + + deployment = _builder.get(".properties.lastDeploymentInfo.deployment") + if deployment is not None: + deployment.set_prop("deploymentId", AAZStrType, ".deployment_id") + deployment.set_prop("deploymentLogsUrl", AAZStrType, ".deployment_logs_url") + deployment.set_prop("deploymentResult", AAZStrType, ".deployment_result") + deployment.set_prop("deploymentState", AAZStrType, ".deployment_state") + deployment.set_prop("deploymentTime", AAZStrType, ".deployment_time") + + repository = _builder.get(".properties.repository") + if repository is not None: + repository.set_prop("branch", AAZStrType, ".branch") + repository.set_prop("deploymentLogsUrl", AAZStrType, ".deployment_logs_url") + repository.set_prop("displayUrl", AAZStrType, ".display_url") + repository.set_prop("pathMapping", AAZListType, ".path_mapping") + repository.set_prop("url", AAZStrType, ".url") + + path_mapping = _builder.get(".properties.repository.pathMapping") + if path_mapping is not None: + path_mapping.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.repository.pathMapping[]") + if _elements is not None: + _elements.set_prop("contentType", AAZStrType, ".content_type") + _elements.set_prop("path", AAZStrType, ".path") + + repository_resource_info = _builder.get(".properties.repositoryResourceInfo") + if repository_resource_info is not None: + repository_resource_info.set_prop("azureDevOpsResourceInfo", AAZObjectType, ".azure_dev_ops_resource_info") + repository_resource_info.set_prop("gitHubResourceInfo", AAZObjectType, ".git_hub_resource_info") + repository_resource_info.set_prop("webhook", AAZObjectType, ".webhook") + + azure_dev_ops_resource_info = _builder.get(".properties.repositoryResourceInfo.azureDevOpsResourceInfo") + if azure_dev_ops_resource_info is not None: + azure_dev_ops_resource_info.set_prop("pipelineId", AAZStrType, ".pipeline_id") + azure_dev_ops_resource_info.set_prop("serviceConnectionId", AAZStrType, ".service_connection_id") + + git_hub_resource_info = _builder.get(".properties.repositoryResourceInfo.gitHubResourceInfo") + if git_hub_resource_info is not None: + git_hub_resource_info.set_prop("appInstallationId", AAZStrType, ".app_installation_id") + + webhook = _builder.get(".properties.repositoryResourceInfo.webhook") + if webhook is not None: + webhook.set_prop("rotateWebhookSecret", AAZBoolType, ".rotate_webhook_secret") + webhook.set_prop("webhookId", AAZStrType, ".webhook_id") + webhook.set_prop("webhookSecretUpdateTime", AAZStrType, ".webhook_secret_update_time") + webhook.set_prop("webhookUrl", AAZStrType, ".webhook_url") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +_schema_source_control_read = None + + +def _build_schema_source_control_read(_schema): + global _schema_source_control_read + if _schema_source_control_read is not None: + _schema.etag = _schema_source_control_read.etag + _schema.id = _schema_source_control_read.id + _schema.name = _schema_source_control_read.name + _schema.properties = _schema_source_control_read.properties + _schema.system_data = _schema_source_control_read.system_data + _schema.type = _schema_source_control_read.type + return + + _schema_source_control_read = AAZObjectType() + + source_control_read = _schema_source_control_read + source_control_read.etag = AAZStrType() + source_control_read.id = AAZStrType( + flags={"read_only": True}, + ) + source_control_read.name = AAZStrType( + flags={"read_only": True}, + ) + source_control_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + source_control_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + source_control_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_source_control_read.properties + properties.content_types = AAZListType( + serialized_name="contentTypes", + flags={"required": True}, + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.id = AAZStrType() + properties.last_deployment_info = AAZObjectType( + serialized_name="lastDeploymentInfo", + ) + properties.repo_type = AAZStrType( + serialized_name="repoType", + flags={"required": True}, + ) + properties.repository = AAZObjectType( + flags={"required": True}, + ) + properties.repository_resource_info = AAZObjectType( + serialized_name="repositoryResourceInfo", + ) + properties.version = AAZStrType() + + content_types = _schema_source_control_read.properties.content_types + content_types.Element = AAZStrType() + + last_deployment_info = _schema_source_control_read.properties.last_deployment_info + last_deployment_info.deployment = AAZObjectType() + last_deployment_info.deployment_fetch_status = AAZStrType( + serialized_name="deploymentFetchStatus", + ) + last_deployment_info.message = AAZStrType() + + deployment = _schema_source_control_read.properties.last_deployment_info.deployment + deployment.deployment_id = AAZStrType( + serialized_name="deploymentId", + ) + deployment.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + deployment.deployment_result = AAZStrType( + serialized_name="deploymentResult", + ) + deployment.deployment_state = AAZStrType( + serialized_name="deploymentState", + ) + deployment.deployment_time = AAZStrType( + serialized_name="deploymentTime", + ) + + repository = _schema_source_control_read.properties.repository + repository.branch = AAZStrType() + repository.deployment_logs_url = AAZStrType( + serialized_name="deploymentLogsUrl", + ) + repository.display_url = AAZStrType( + serialized_name="displayUrl", + ) + repository.path_mapping = AAZListType( + serialized_name="pathMapping", + ) + repository.url = AAZStrType() + + path_mapping = _schema_source_control_read.properties.repository.path_mapping + path_mapping.Element = AAZObjectType() + + _element = _schema_source_control_read.properties.repository.path_mapping.Element + _element.content_type = AAZStrType( + serialized_name="contentType", + ) + _element.path = AAZStrType() + + repository_resource_info = _schema_source_control_read.properties.repository_resource_info + repository_resource_info.azure_dev_ops_resource_info = AAZObjectType( + serialized_name="azureDevOpsResourceInfo", + ) + repository_resource_info.git_hub_resource_info = AAZObjectType( + serialized_name="gitHubResourceInfo", + ) + repository_resource_info.webhook = AAZObjectType() + + azure_dev_ops_resource_info = _schema_source_control_read.properties.repository_resource_info.azure_dev_ops_resource_info + azure_dev_ops_resource_info.pipeline_id = AAZStrType( + serialized_name="pipelineId", + ) + azure_dev_ops_resource_info.service_connection_id = AAZStrType( + serialized_name="serviceConnectionId", + ) + + git_hub_resource_info = _schema_source_control_read.properties.repository_resource_info.git_hub_resource_info + git_hub_resource_info.app_installation_id = AAZStrType( + serialized_name="appInstallationId", + ) + + webhook = _schema_source_control_read.properties.repository_resource_info.webhook + webhook.rotate_webhook_secret = AAZBoolType( + serialized_name="rotateWebhookSecret", + ) + webhook.webhook_id = AAZStrType( + serialized_name="webhookId", + ) + webhook.webhook_secret_update_time = AAZStrType( + serialized_name="webhookSecretUpdateTime", + ) + webhook.webhook_url = AAZStrType( + serialized_name="webhookUrl", + ) + + system_data = _schema_source_control_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_source_control_read.etag + _schema.id = _schema_source_control_read.id + _schema.name = _schema_source_control_read.name + _schema.properties = _schema_source_control_read.properties + _schema.system_data = _schema_source_control_read.system_data + _schema.type = _schema_source_control_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/__cmd_group.py new file mode 100644 index 00000000000..a455ac42fde --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel threat-indicator", +) +class __CMDGroup(AAZCommandGroup): + """Manage threat intelligence indicator with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/__init__.py new file mode 100644 index 00000000000..5cba78806b6 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/__init__.py @@ -0,0 +1,19 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._append_tag import * +from ._create import * +from ._delete import * +from ._list import * +from ._query import * +from ._replace_tag import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_append_tag.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_append_tag.py new file mode 100644 index 00000000000..19ba203c33c --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_append_tag.py @@ -0,0 +1,162 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator append-tag", + is_experimental=True, +) +class AppendTag(AAZCommand): + """Append tags to a threat intelligence indicator. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/indicators/{}/appendtags", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["--name"], + help="Threat intelligence indicator name field.", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + + # define Arg Group "ThreatIntelligenceAppendTags" + + _args_schema = cls._args_schema + _args_schema.intelligence_tags = AAZListArg( + options=["--intelligence-tags"], + arg_group="ThreatIntelligenceAppendTags", + help="List of tags to be appended.", + ) + + intelligence_tags = cls._args_schema.intelligence_tags + intelligence_tags.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorAppendTags(ctx=self.ctx)() + + class ThreatIntelligenceIndicatorAppendTags(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators/{name}/appendTags", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "name", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("threatIntelligenceTags", AAZListType, ".intelligence_tags") + + threat_intelligence_tags = _builder.get(".threatIntelligenceTags") + if threat_intelligence_tags is not None: + threat_intelligence_tags.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200(self, session): + pass + + +__all__ = ["AppendTag"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_create.py new file mode 100644 index 00000000000..88d9945d026 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_create.py @@ -0,0 +1,715 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator create", + is_experimental=True, +) +class Create(AAZCommand): + """Create a new threat intelligence indicator. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/createindicator", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.confidence = AAZIntArg( + options=["--confidence"], + arg_group="Properties", + help="Confidence of threat intelligence entity", + ) + _args_schema.created = AAZStrArg( + options=["--created"], + arg_group="Properties", + help="Created by", + ) + _args_schema.created_by_ref = AAZStrArg( + options=["--created-by-ref"], + arg_group="Properties", + help="Created by reference of threat intelligence entity", + ) + _args_schema.defanged = AAZBoolArg( + options=["--defanged"], + arg_group="Properties", + help="Is threat intelligence entity defanged", + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="Description of a threat intelligence entity", + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="Display name of a threat intelligence entity", + ) + _args_schema.external_id = AAZStrArg( + options=["--external-id"], + arg_group="Properties", + help="External ID of threat intelligence entity", + ) + _args_schema.external_updated_time = AAZStrArg( + options=["--external-updated-time"], + arg_group="Properties", + help="External last updated time in UTC", + ) + _args_schema.external_references = AAZListArg( + options=["--external-references"], + arg_group="Properties", + help="External References", + ) + _args_schema.granular_markings = AAZListArg( + options=["--granular-markings"], + arg_group="Properties", + help="Granular Markings", + ) + _args_schema.indicator_types = AAZListArg( + options=["--indicator-types"], + arg_group="Properties", + help="Indicator types of threat intelligence entities", + ) + _args_schema.kill_chain_phases = AAZListArg( + options=["--kill-chain-phases"], + arg_group="Properties", + help="Kill chain phases", + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="Labels of threat intelligence entity", + ) + _args_schema.language = AAZStrArg( + options=["--language"], + arg_group="Properties", + help="Language of threat intelligence entity", + ) + _args_schema.last_updated_time = AAZStrArg( + options=["--last-updated-time"], + arg_group="Properties", + help="Last updated time in UTC", + ) + _args_schema.modified = AAZStrArg( + options=["--modified"], + arg_group="Properties", + help="Modified by", + ) + _args_schema.object_marking_refs = AAZListArg( + options=["--object-marking-refs"], + arg_group="Properties", + help="Threat intelligence entity object marking references", + ) + _args_schema.parsed_pattern = AAZListArg( + options=["--parsed-pattern"], + arg_group="Properties", + help="Parsed patterns", + ) + _args_schema.pattern = AAZStrArg( + options=["--pattern"], + arg_group="Properties", + help="Pattern of a threat intelligence entity", + ) + _args_schema.pattern_type = AAZStrArg( + options=["--pattern-type"], + arg_group="Properties", + help="Pattern type of a threat intelligence entity", + ) + _args_schema.pattern_version = AAZStrArg( + options=["--pattern-version"], + arg_group="Properties", + help="Pattern version of a threat intelligence entity", + ) + _args_schema.revoked = AAZBoolArg( + options=["--revoked"], + arg_group="Properties", + help="Is threat intelligence entity revoked", + ) + _args_schema.source = AAZStrArg( + options=["--source"], + arg_group="Properties", + help="Source of a threat intelligence entity", + ) + _args_schema.threat_tags = AAZListArg( + options=["--threat-tags"], + arg_group="Properties", + help="List of tags", + ) + _args_schema.threat_types = AAZListArg( + options=["--threat-types"], + arg_group="Properties", + help="Threat types", + ) + _args_schema.valid_from = AAZStrArg( + options=["--valid-from"], + arg_group="Properties", + help="Valid from", + ) + _args_schema.valid_until = AAZStrArg( + options=["--valid-until"], + arg_group="Properties", + help="Valid until", + ) + + external_references = cls._args_schema.external_references + external_references.Element = AAZObjectArg() + + _element = cls._args_schema.external_references.Element + _element.description = AAZStrArg( + options=["description"], + help="External reference description", + ) + _element.external_id = AAZStrArg( + options=["external-id"], + help="External reference ID", + ) + _element.hashes = AAZDictArg( + options=["hashes"], + help="External reference hashes", + ) + _element.source_name = AAZStrArg( + options=["source-name"], + help="External reference source name", + ) + _element.url = AAZStrArg( + options=["url"], + help="External reference URL", + ) + + hashes = cls._args_schema.external_references.Element.hashes + hashes.Element = AAZStrArg() + + granular_markings = cls._args_schema.granular_markings + granular_markings.Element = AAZObjectArg() + + _element = cls._args_schema.granular_markings.Element + _element.language = AAZStrArg( + options=["language"], + help="Language granular marking model", + ) + _element.marking_ref = AAZIntArg( + options=["marking-ref"], + help="marking reference granular marking model", + ) + _element.selectors = AAZListArg( + options=["selectors"], + help="granular marking model selectors", + ) + + selectors = cls._args_schema.granular_markings.Element.selectors + selectors.Element = AAZStrArg() + + indicator_types = cls._args_schema.indicator_types + indicator_types.Element = AAZStrArg() + + kill_chain_phases = cls._args_schema.kill_chain_phases + kill_chain_phases.Element = AAZObjectArg() + + _element = cls._args_schema.kill_chain_phases.Element + _element.kill_chain_name = AAZStrArg( + options=["kill-chain-name"], + help="Kill chainName name", + ) + _element.phase_name = AAZStrArg( + options=["phase-name"], + help="Phase name", + ) + + labels = cls._args_schema.labels + labels.Element = AAZStrArg() + + object_marking_refs = cls._args_schema.object_marking_refs + object_marking_refs.Element = AAZStrArg() + + parsed_pattern = cls._args_schema.parsed_pattern + parsed_pattern.Element = AAZObjectArg() + + _element = cls._args_schema.parsed_pattern.Element + _element.pattern_type_key = AAZStrArg( + options=["pattern-type-key"], + help="Pattern type key", + ) + _element.pattern_type_values = AAZListArg( + options=["pattern-type-values"], + help="Pattern type keys", + ) + + pattern_type_values = cls._args_schema.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectArg() + + _element = cls._args_schema.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrArg( + options=["value"], + help="Value of parsed pattern", + ) + _element.value_type = AAZStrArg( + options=["value-type"], + help="Type of the value", + ) + + threat_tags = cls._args_schema.threat_tags + threat_tags.Element = AAZStrArg() + + threat_types = cls._args_schema.threat_types + threat_types.Element = AAZStrArg() + + # define Arg Group "ThreatIntelligenceProperties" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="ThreatIntelligenceProperties", + help="Etag of the azure resource", + ) + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorCreateIndicator(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ThreatIntelligenceIndicatorCreateIndicator(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/createIndicator", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "indicator", AAZStrType, ".", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("confidence", AAZIntType, ".confidence") + properties.set_prop("created", AAZStrType, ".created") + properties.set_prop("createdByRef", AAZStrType, ".created_by_ref") + properties.set_prop("defanged", AAZBoolType, ".defanged") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("displayName", AAZStrType, ".display_name") + properties.set_prop("externalId", AAZStrType, ".external_id") + properties.set_prop("externalLastUpdatedTimeUtc", AAZStrType, ".external_updated_time") + properties.set_prop("externalReferences", AAZListType, ".external_references") + properties.set_prop("granularMarkings", AAZListType, ".granular_markings") + properties.set_prop("indicatorTypes", AAZListType, ".indicator_types") + properties.set_prop("killChainPhases", AAZListType, ".kill_chain_phases") + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("language", AAZStrType, ".language") + properties.set_prop("lastUpdatedTimeUtc", AAZStrType, ".last_updated_time") + properties.set_prop("modified", AAZStrType, ".modified") + properties.set_prop("objectMarkingRefs", AAZListType, ".object_marking_refs") + properties.set_prop("parsedPattern", AAZListType, ".parsed_pattern") + properties.set_prop("pattern", AAZStrType, ".pattern") + properties.set_prop("patternType", AAZStrType, ".pattern_type") + properties.set_prop("patternVersion", AAZStrType, ".pattern_version") + properties.set_prop("revoked", AAZBoolType, ".revoked") + properties.set_prop("source", AAZStrType, ".source") + properties.set_prop("threatIntelligenceTags", AAZListType, ".threat_tags") + properties.set_prop("threatTypes", AAZListType, ".threat_types") + properties.set_prop("validFrom", AAZStrType, ".valid_from") + properties.set_prop("validUntil", AAZStrType, ".valid_until") + + external_references = _builder.get(".properties.externalReferences") + if external_references is not None: + external_references.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.externalReferences[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, ".description") + _elements.set_prop("externalId", AAZStrType, ".external_id") + _elements.set_prop("hashes", AAZDictType, ".hashes") + _elements.set_prop("sourceName", AAZStrType, ".source_name") + _elements.set_prop("url", AAZStrType, ".url") + + hashes = _builder.get(".properties.externalReferences[].hashes") + if hashes is not None: + hashes.set_elements(AAZStrType, ".") + + granular_markings = _builder.get(".properties.granularMarkings") + if granular_markings is not None: + granular_markings.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.granularMarkings[]") + if _elements is not None: + _elements.set_prop("language", AAZStrType, ".language") + _elements.set_prop("markingRef", AAZIntType, ".marking_ref") + _elements.set_prop("selectors", AAZListType, ".selectors") + + selectors = _builder.get(".properties.granularMarkings[].selectors") + if selectors is not None: + selectors.set_elements(AAZStrType, ".") + + indicator_types = _builder.get(".properties.indicatorTypes") + if indicator_types is not None: + indicator_types.set_elements(AAZStrType, ".") + + kill_chain_phases = _builder.get(".properties.killChainPhases") + if kill_chain_phases is not None: + kill_chain_phases.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.killChainPhases[]") + if _elements is not None: + _elements.set_prop("killChainName", AAZStrType, ".kill_chain_name") + _elements.set_prop("phaseName", AAZStrType, ".phase_name") + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + object_marking_refs = _builder.get(".properties.objectMarkingRefs") + if object_marking_refs is not None: + object_marking_refs.set_elements(AAZStrType, ".") + + parsed_pattern = _builder.get(".properties.parsedPattern") + if parsed_pattern is not None: + parsed_pattern.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.parsedPattern[]") + if _elements is not None: + _elements.set_prop("patternTypeKey", AAZStrType, ".pattern_type_key") + _elements.set_prop("patternTypeValues", AAZListType, ".pattern_type_values") + + pattern_type_values = _builder.get(".properties.parsedPattern[].patternTypeValues") + if pattern_type_values is not None: + pattern_type_values.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.parsedPattern[].patternTypeValues[]") + if _elements is not None: + _elements.set_prop("value", AAZStrType, ".value") + _elements.set_prop("valueType", AAZStrType, ".value_type") + + threat_intelligence_tags = _builder.get(".properties.threatIntelligenceTags") + if threat_intelligence_tags is not None: + threat_intelligence_tags.set_elements(AAZStrType, ".") + + threat_types = _builder.get(".properties.threatTypes") + if threat_types is not None: + threat_types.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_indicator = cls._schema_on_200_201.discriminate_by("kind", "indicator") + disc_indicator.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.confidence = AAZIntType() + properties.created = AAZStrType() + properties.created_by_ref = AAZStrType( + serialized_name="createdByRef", + ) + properties.defanged = AAZBoolType() + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.external_id = AAZStrType( + serialized_name="externalId", + ) + properties.external_last_updated_time_utc = AAZStrType( + serialized_name="externalLastUpdatedTimeUtc", + ) + properties.external_references = AAZListType( + serialized_name="externalReferences", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.granular_markings = AAZListType( + serialized_name="granularMarkings", + ) + properties.indicator_types = AAZListType( + serialized_name="indicatorTypes", + ) + properties.kill_chain_phases = AAZListType( + serialized_name="killChainPhases", + ) + properties.labels = AAZListType() + properties.language = AAZStrType() + properties.last_updated_time_utc = AAZStrType( + serialized_name="lastUpdatedTimeUtc", + ) + properties.modified = AAZStrType() + properties.object_marking_refs = AAZListType( + serialized_name="objectMarkingRefs", + ) + properties.parsed_pattern = AAZListType( + serialized_name="parsedPattern", + ) + properties.pattern = AAZStrType() + properties.pattern_type = AAZStrType( + serialized_name="patternType", + ) + properties.pattern_version = AAZStrType( + serialized_name="patternVersion", + ) + properties.revoked = AAZBoolType() + properties.source = AAZStrType() + properties.threat_intelligence_tags = AAZListType( + serialized_name="threatIntelligenceTags", + ) + properties.threat_types = AAZListType( + serialized_name="threatTypes", + ) + properties.valid_from = AAZStrType( + serialized_name="validFrom", + ) + properties.valid_until = AAZStrType( + serialized_name="validUntil", + ) + + external_references = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.external_references + external_references.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.external_references.Element + _element.description = AAZStrType() + _element.external_id = AAZStrType( + serialized_name="externalId", + ) + _element.hashes = AAZDictType() + _element.source_name = AAZStrType( + serialized_name="sourceName", + ) + _element.url = AAZStrType() + + hashes = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.external_references.Element.hashes + hashes.Element = AAZStrType() + + granular_markings = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.granular_markings + granular_markings.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.granular_markings.Element + _element.language = AAZStrType() + _element.marking_ref = AAZIntType( + serialized_name="markingRef", + ) + _element.selectors = AAZListType() + + selectors = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.granular_markings.Element.selectors + selectors.Element = AAZStrType() + + indicator_types = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.indicator_types + indicator_types.Element = AAZStrType() + + kill_chain_phases = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.kill_chain_phases + kill_chain_phases.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.kill_chain_phases.Element + _element.kill_chain_name = AAZStrType( + serialized_name="killChainName", + ) + _element.phase_name = AAZStrType( + serialized_name="phaseName", + ) + + labels = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.labels + labels.Element = AAZStrType() + + object_marking_refs = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.object_marking_refs + object_marking_refs.Element = AAZStrType() + + parsed_pattern = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern + parsed_pattern.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern.Element + _element.pattern_type_key = AAZStrType( + serialized_name="patternTypeKey", + ) + _element.pattern_type_values = AAZListType( + serialized_name="patternTypeValues", + ) + + pattern_type_values = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrType() + _element.value_type = AAZStrType( + serialized_name="valueType", + ) + + threat_intelligence_tags = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.threat_intelligence_tags + threat_intelligence_tags.Element = AAZStrType() + + threat_types = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.threat_types + threat_types.Element = AAZStrType() + + return cls._schema_on_200_201 + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_delete.py new file mode 100644 index 00000000000..b861172b100 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_delete.py @@ -0,0 +1,133 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a threat intelligence indicator. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/indicators/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Threat intelligence indicator name field.", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorDelete(ctx=self.ctx)() + + class ThreatIntelligenceIndicatorDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators/{name}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "name", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_list.py new file mode 100644 index 00000000000..4ff39a36d8a --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_list.py @@ -0,0 +1,383 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator list", + is_experimental=True, +) +class List(AAZCommand): + """Get all threat intelligence indicators. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/indicators", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.filter = AAZStrArg( + options=["--filter"], + help="Filters the results, based on a Boolean condition. Optional.", + ) + _args_schema.orderby = AAZStrArg( + options=["--orderby"], + help="Sorts the results. Optional.", + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.", + ) + _args_schema.top = AAZIntArg( + options=["--top"], + help="Returns only the first n results. Optional.", + ) + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class ThreatIntelligenceIndicatorsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$filter", self.ctx.args.filter, + ), + **self.serialize_query_param( + "$orderby", self.ctx.args.orderby, + ), + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "$top", self.ctx.args.top, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_indicator = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator") + disc_indicator.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.confidence = AAZIntType() + properties.created = AAZStrType() + properties.created_by_ref = AAZStrType( + serialized_name="createdByRef", + ) + properties.defanged = AAZBoolType() + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.external_id = AAZStrType( + serialized_name="externalId", + ) + properties.external_last_updated_time_utc = AAZStrType( + serialized_name="externalLastUpdatedTimeUtc", + ) + properties.external_references = AAZListType( + serialized_name="externalReferences", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.granular_markings = AAZListType( + serialized_name="granularMarkings", + ) + properties.indicator_types = AAZListType( + serialized_name="indicatorTypes", + ) + properties.kill_chain_phases = AAZListType( + serialized_name="killChainPhases", + ) + properties.labels = AAZListType() + properties.language = AAZStrType() + properties.last_updated_time_utc = AAZStrType( + serialized_name="lastUpdatedTimeUtc", + ) + properties.modified = AAZStrType() + properties.object_marking_refs = AAZListType( + serialized_name="objectMarkingRefs", + ) + properties.parsed_pattern = AAZListType( + serialized_name="parsedPattern", + ) + properties.pattern = AAZStrType() + properties.pattern_type = AAZStrType( + serialized_name="patternType", + ) + properties.pattern_version = AAZStrType( + serialized_name="patternVersion", + ) + properties.revoked = AAZBoolType() + properties.source = AAZStrType() + properties.threat_intelligence_tags = AAZListType( + serialized_name="threatIntelligenceTags", + ) + properties.threat_types = AAZListType( + serialized_name="threatTypes", + ) + properties.valid_from = AAZStrType( + serialized_name="validFrom", + ) + properties.valid_until = AAZStrType( + serialized_name="validUntil", + ) + + external_references = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.external_references + external_references.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.external_references.Element + _element.description = AAZStrType() + _element.external_id = AAZStrType( + serialized_name="externalId", + ) + _element.hashes = AAZDictType() + _element.source_name = AAZStrType( + serialized_name="sourceName", + ) + _element.url = AAZStrType() + + hashes = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.external_references.Element.hashes + hashes.Element = AAZStrType() + + granular_markings = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.granular_markings + granular_markings.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.granular_markings.Element + _element.language = AAZStrType() + _element.marking_ref = AAZIntType( + serialized_name="markingRef", + ) + _element.selectors = AAZListType() + + selectors = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.granular_markings.Element.selectors + selectors.Element = AAZStrType() + + indicator_types = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.indicator_types + indicator_types.Element = AAZStrType() + + kill_chain_phases = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.kill_chain_phases + kill_chain_phases.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.kill_chain_phases.Element + _element.kill_chain_name = AAZStrType( + serialized_name="killChainName", + ) + _element.phase_name = AAZStrType( + serialized_name="phaseName", + ) + + labels = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.labels + labels.Element = AAZStrType() + + object_marking_refs = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.object_marking_refs + object_marking_refs.Element = AAZStrType() + + parsed_pattern = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern + parsed_pattern.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern.Element + _element.pattern_type_key = AAZStrType( + serialized_name="patternTypeKey", + ) + _element.pattern_type_values = AAZListType( + serialized_name="patternTypeValues", + ) + + pattern_type_values = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrType() + _element.value_type = AAZStrType( + serialized_name="valueType", + ) + + threat_intelligence_tags = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.threat_intelligence_tags + threat_intelligence_tags.Element = AAZStrType() + + threat_types = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.threat_types + threat_types.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_query.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_query.py new file mode 100644 index 00000000000..9139d22662f --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_query.py @@ -0,0 +1,508 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator query", + is_experimental=True, +) +class Query(AAZCommand): + """Query threat intelligence indicators as per filtering criteria. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/queryindicators", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + + # define Arg Group "ThreatIntelligenceFilteringCriteria" + + _args_schema = cls._args_schema + _args_schema.ids = AAZListArg( + options=["--ids"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Ids of threat intelligence indicators", + ) + _args_schema.include_disabled = AAZBoolArg( + options=["--include-disabled"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Parameter to include/exclude disabled indicators.", + ) + _args_schema.keywords = AAZListArg( + options=["--keywords"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Keywords for searching threat intelligence indicators", + ) + _args_schema.max_confidence = AAZIntArg( + options=["--max-confidence"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Maximum confidence.", + ) + _args_schema.max_valid_until = AAZStrArg( + options=["--max-valid-until"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="End time for ValidUntil filter.", + ) + _args_schema.min_confidence = AAZIntArg( + options=["--min-confidence"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Minimum confidence.", + ) + _args_schema.min_valid_until = AAZStrArg( + options=["--min-valid-until"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Start time for ValidUntil filter.", + ) + _args_schema.page_size = AAZIntArg( + options=["--page-size"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Page size", + ) + _args_schema.pattern_types = AAZListArg( + options=["--pattern-types"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Pattern types", + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Skip token.", + ) + _args_schema.sort_by = AAZListArg( + options=["--sort-by"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Columns to sort by and sorting order", + ) + _args_schema.sources = AAZListArg( + options=["--sources"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Sources of threat intelligence indicators", + ) + _args_schema.threat_types = AAZListArg( + options=["--threat-types"], + arg_group="ThreatIntelligenceFilteringCriteria", + help="Threat types of threat intelligence indicators", + ) + + ids = cls._args_schema.ids + ids.Element = AAZStrArg() + + keywords = cls._args_schema.keywords + keywords.Element = AAZStrArg() + + pattern_types = cls._args_schema.pattern_types + pattern_types.Element = AAZStrArg() + + sort_by = cls._args_schema.sort_by + sort_by.Element = AAZObjectArg() + + _element = cls._args_schema.sort_by.Element + _element.item_key = AAZStrArg( + options=["item-key"], + help="Column name", + ) + _element.sort_order = AAZStrArg( + options=["sort-order"], + help="Sorting order (ascending/descending/unsorted).", + enum={"ascending": "ascending", "descending": "descending", "unsorted": "unsorted"}, + ) + + sources = cls._args_schema.sources + sources.Element = AAZStrArg() + + threat_types = cls._args_schema.threat_types + threat_types.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorQueryIndicators(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class ThreatIntelligenceIndicatorQueryIndicators(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/queryIndicators", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("ids", AAZListType, ".ids") + _builder.set_prop("includeDisabled", AAZBoolType, ".include_disabled") + _builder.set_prop("keywords", AAZListType, ".keywords") + _builder.set_prop("maxConfidence", AAZIntType, ".max_confidence") + _builder.set_prop("maxValidUntil", AAZStrType, ".max_valid_until") + _builder.set_prop("minConfidence", AAZIntType, ".min_confidence") + _builder.set_prop("minValidUntil", AAZStrType, ".min_valid_until") + _builder.set_prop("pageSize", AAZIntType, ".page_size") + _builder.set_prop("patternTypes", AAZListType, ".pattern_types") + _builder.set_prop("skipToken", AAZStrType, ".skip_token") + _builder.set_prop("sortBy", AAZListType, ".sort_by") + _builder.set_prop("sources", AAZListType, ".sources") + _builder.set_prop("threatTypes", AAZListType, ".threat_types") + + ids = _builder.get(".ids") + if ids is not None: + ids.set_elements(AAZStrType, ".") + + keywords = _builder.get(".keywords") + if keywords is not None: + keywords.set_elements(AAZStrType, ".") + + pattern_types = _builder.get(".patternTypes") + if pattern_types is not None: + pattern_types.set_elements(AAZStrType, ".") + + sort_by = _builder.get(".sortBy") + if sort_by is not None: + sort_by.set_elements(AAZObjectType) + + _elements = _builder.get(".sortBy[]") + if _elements is not None: + _elements.set_prop("itemKey", AAZStrType, ".item_key") + _elements.set_prop("sortOrder", AAZStrType, ".sort_order") + + sources = _builder.get(".sources") + if sources is not None: + sources.set_elements(AAZStrType, ".") + + threat_types = _builder.get(".threatTypes") + if threat_types is not None: + threat_types.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.kind = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_indicator = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator") + disc_indicator.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.confidence = AAZIntType() + properties.created = AAZStrType() + properties.created_by_ref = AAZStrType( + serialized_name="createdByRef", + ) + properties.defanged = AAZBoolType() + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.external_id = AAZStrType( + serialized_name="externalId", + ) + properties.external_last_updated_time_utc = AAZStrType( + serialized_name="externalLastUpdatedTimeUtc", + ) + properties.external_references = AAZListType( + serialized_name="externalReferences", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.granular_markings = AAZListType( + serialized_name="granularMarkings", + ) + properties.indicator_types = AAZListType( + serialized_name="indicatorTypes", + ) + properties.kill_chain_phases = AAZListType( + serialized_name="killChainPhases", + ) + properties.labels = AAZListType() + properties.language = AAZStrType() + properties.last_updated_time_utc = AAZStrType( + serialized_name="lastUpdatedTimeUtc", + ) + properties.modified = AAZStrType() + properties.object_marking_refs = AAZListType( + serialized_name="objectMarkingRefs", + ) + properties.parsed_pattern = AAZListType( + serialized_name="parsedPattern", + ) + properties.pattern = AAZStrType() + properties.pattern_type = AAZStrType( + serialized_name="patternType", + ) + properties.pattern_version = AAZStrType( + serialized_name="patternVersion", + ) + properties.revoked = AAZBoolType() + properties.source = AAZStrType() + properties.threat_intelligence_tags = AAZListType( + serialized_name="threatIntelligenceTags", + ) + properties.threat_types = AAZListType( + serialized_name="threatTypes", + ) + properties.valid_from = AAZStrType( + serialized_name="validFrom", + ) + properties.valid_until = AAZStrType( + serialized_name="validUntil", + ) + + external_references = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.external_references + external_references.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.external_references.Element + _element.description = AAZStrType() + _element.external_id = AAZStrType( + serialized_name="externalId", + ) + _element.hashes = AAZDictType() + _element.source_name = AAZStrType( + serialized_name="sourceName", + ) + _element.url = AAZStrType() + + hashes = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.external_references.Element.hashes + hashes.Element = AAZStrType() + + granular_markings = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.granular_markings + granular_markings.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.granular_markings.Element + _element.language = AAZStrType() + _element.marking_ref = AAZIntType( + serialized_name="markingRef", + ) + _element.selectors = AAZListType() + + selectors = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.granular_markings.Element.selectors + selectors.Element = AAZStrType() + + indicator_types = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.indicator_types + indicator_types.Element = AAZStrType() + + kill_chain_phases = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.kill_chain_phases + kill_chain_phases.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.kill_chain_phases.Element + _element.kill_chain_name = AAZStrType( + serialized_name="killChainName", + ) + _element.phase_name = AAZStrType( + serialized_name="phaseName", + ) + + labels = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.labels + labels.Element = AAZStrType() + + object_marking_refs = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.object_marking_refs + object_marking_refs.Element = AAZStrType() + + parsed_pattern = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern + parsed_pattern.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern.Element + _element.pattern_type_key = AAZStrType( + serialized_name="patternTypeKey", + ) + _element.pattern_type_values = AAZListType( + serialized_name="patternTypeValues", + ) + + pattern_type_values = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrType() + _element.value_type = AAZStrType( + serialized_name="valueType", + ) + + threat_intelligence_tags = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.threat_intelligence_tags + threat_intelligence_tags.Element = AAZStrType() + + threat_types = cls._schema_on_200.value.Element.discriminate_by("kind", "indicator").properties.threat_types + threat_types.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Query"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_replace_tag.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_replace_tag.py new file mode 100644 index 00000000000..bcdc87e2898 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_replace_tag.py @@ -0,0 +1,725 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator replace-tag", + is_experimental=True, +) +class ReplaceTag(AAZCommand): + """Replace tags added to a threat intelligence indicator. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/indicators/{}/replacetags", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["--name"], + help="Threat intelligence indicator name field.", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.confidence = AAZIntArg( + options=["--confidence"], + arg_group="Properties", + help="Confidence of threat intelligence entity", + ) + _args_schema.created = AAZStrArg( + options=["--created"], + arg_group="Properties", + help="Created by", + ) + _args_schema.created_by_ref = AAZStrArg( + options=["--created-by-ref"], + arg_group="Properties", + help="Created by reference of threat intelligence entity", + ) + _args_schema.defanged = AAZBoolArg( + options=["--defanged"], + arg_group="Properties", + help="Is threat intelligence entity defanged", + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="Description of a threat intelligence entity", + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="Display name of a threat intelligence entity", + ) + _args_schema.external_id = AAZStrArg( + options=["--external-id"], + arg_group="Properties", + help="External ID of threat intelligence entity", + ) + _args_schema.external_updated_time = AAZStrArg( + options=["--external-updated-time"], + arg_group="Properties", + help="External last updated time in UTC", + ) + _args_schema.external_references = AAZListArg( + options=["--external-references"], + arg_group="Properties", + help="External References", + ) + _args_schema.granular_markings = AAZListArg( + options=["--granular-markings"], + arg_group="Properties", + help="Granular Markings", + ) + _args_schema.indicator_types = AAZListArg( + options=["--indicator-types"], + arg_group="Properties", + help="Indicator types of threat intelligence entities", + ) + _args_schema.kill_chain_phases = AAZListArg( + options=["--kill-chain-phases"], + arg_group="Properties", + help="Kill chain phases", + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="Labels of threat intelligence entity", + ) + _args_schema.language = AAZStrArg( + options=["--language"], + arg_group="Properties", + help="Language of threat intelligence entity", + ) + _args_schema.last_updated_time = AAZStrArg( + options=["--last-updated-time"], + arg_group="Properties", + help="Last updated time in UTC", + ) + _args_schema.modified = AAZStrArg( + options=["--modified"], + arg_group="Properties", + help="Modified by", + ) + _args_schema.object_marking_refs = AAZListArg( + options=["--object-marking-refs"], + arg_group="Properties", + help="Threat intelligence entity object marking references", + ) + _args_schema.parsed_pattern = AAZListArg( + options=["--parsed-pattern"], + arg_group="Properties", + help="Parsed patterns", + ) + _args_schema.pattern = AAZStrArg( + options=["--pattern"], + arg_group="Properties", + help="Pattern of a threat intelligence entity", + ) + _args_schema.pattern_type = AAZStrArg( + options=["--pattern-type"], + arg_group="Properties", + help="Pattern type of a threat intelligence entity", + ) + _args_schema.pattern_version = AAZStrArg( + options=["--pattern-version"], + arg_group="Properties", + help="Pattern version of a threat intelligence entity", + ) + _args_schema.revoked = AAZBoolArg( + options=["--revoked"], + arg_group="Properties", + help="Is threat intelligence entity revoked", + ) + _args_schema.source = AAZStrArg( + options=["--source"], + arg_group="Properties", + help="Source of a threat intelligence entity", + ) + _args_schema.intelligence_tags = AAZListArg( + options=["--intelligence-tags"], + arg_group="Properties", + help="List of tags", + ) + _args_schema.threat_types = AAZListArg( + options=["--threat-types"], + arg_group="Properties", + help="Threat types", + ) + _args_schema.valid_from = AAZStrArg( + options=["--valid-from"], + arg_group="Properties", + help="Valid from", + ) + _args_schema.valid_until = AAZStrArg( + options=["--valid-until"], + arg_group="Properties", + help="Valid until", + ) + + external_references = cls._args_schema.external_references + external_references.Element = AAZObjectArg() + + _element = cls._args_schema.external_references.Element + _element.description = AAZStrArg( + options=["description"], + help="External reference description", + ) + _element.external_id = AAZStrArg( + options=["external-id"], + help="External reference ID", + ) + _element.hashes = AAZDictArg( + options=["hashes"], + help="External reference hashes", + ) + _element.source_name = AAZStrArg( + options=["source-name"], + help="External reference source name", + ) + _element.url = AAZStrArg( + options=["url"], + help="External reference URL", + ) + + hashes = cls._args_schema.external_references.Element.hashes + hashes.Element = AAZStrArg() + + granular_markings = cls._args_schema.granular_markings + granular_markings.Element = AAZObjectArg() + + _element = cls._args_schema.granular_markings.Element + _element.language = AAZStrArg( + options=["language"], + help="Language granular marking model", + ) + _element.marking_ref = AAZIntArg( + options=["marking-ref"], + help="marking reference granular marking model", + ) + _element.selectors = AAZListArg( + options=["selectors"], + help="granular marking model selectors", + ) + + selectors = cls._args_schema.granular_markings.Element.selectors + selectors.Element = AAZStrArg() + + indicator_types = cls._args_schema.indicator_types + indicator_types.Element = AAZStrArg() + + kill_chain_phases = cls._args_schema.kill_chain_phases + kill_chain_phases.Element = AAZObjectArg() + + _element = cls._args_schema.kill_chain_phases.Element + _element.kill_chain_name = AAZStrArg( + options=["kill-chain-name"], + help="Kill chainName name", + ) + _element.phase_name = AAZStrArg( + options=["phase-name"], + help="Phase name", + ) + + labels = cls._args_schema.labels + labels.Element = AAZStrArg() + + object_marking_refs = cls._args_schema.object_marking_refs + object_marking_refs.Element = AAZStrArg() + + parsed_pattern = cls._args_schema.parsed_pattern + parsed_pattern.Element = AAZObjectArg() + + _element = cls._args_schema.parsed_pattern.Element + _element.pattern_type_key = AAZStrArg( + options=["pattern-type-key"], + help="Pattern type key", + ) + _element.pattern_type_values = AAZListArg( + options=["pattern-type-values"], + help="Pattern type keys", + ) + + pattern_type_values = cls._args_schema.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectArg() + + _element = cls._args_schema.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrArg( + options=["value"], + help="Value of parsed pattern", + ) + _element.value_type = AAZStrArg( + options=["value-type"], + help="Type of the value", + ) + + intelligence_tags = cls._args_schema.intelligence_tags + intelligence_tags.Element = AAZStrArg() + + threat_types = cls._args_schema.threat_types + threat_types.Element = AAZStrArg() + + # define Arg Group "ThreatIntelligenceReplaceTags" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="ThreatIntelligenceReplaceTags", + help="Etag of the azure resource", + ) + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorReplaceTags(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ThreatIntelligenceIndicatorReplaceTags(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators/{name}/replaceTags", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "name", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "indicator", AAZStrType, ".", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("confidence", AAZIntType, ".confidence") + properties.set_prop("created", AAZStrType, ".created") + properties.set_prop("createdByRef", AAZStrType, ".created_by_ref") + properties.set_prop("defanged", AAZBoolType, ".defanged") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("displayName", AAZStrType, ".display_name") + properties.set_prop("externalId", AAZStrType, ".external_id") + properties.set_prop("externalLastUpdatedTimeUtc", AAZStrType, ".external_updated_time") + properties.set_prop("externalReferences", AAZListType, ".external_references") + properties.set_prop("granularMarkings", AAZListType, ".granular_markings") + properties.set_prop("indicatorTypes", AAZListType, ".indicator_types") + properties.set_prop("killChainPhases", AAZListType, ".kill_chain_phases") + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("language", AAZStrType, ".language") + properties.set_prop("lastUpdatedTimeUtc", AAZStrType, ".last_updated_time") + properties.set_prop("modified", AAZStrType, ".modified") + properties.set_prop("objectMarkingRefs", AAZListType, ".object_marking_refs") + properties.set_prop("parsedPattern", AAZListType, ".parsed_pattern") + properties.set_prop("pattern", AAZStrType, ".pattern") + properties.set_prop("patternType", AAZStrType, ".pattern_type") + properties.set_prop("patternVersion", AAZStrType, ".pattern_version") + properties.set_prop("revoked", AAZBoolType, ".revoked") + properties.set_prop("source", AAZStrType, ".source") + properties.set_prop("threatIntelligenceTags", AAZListType, ".intelligence_tags") + properties.set_prop("threatTypes", AAZListType, ".threat_types") + properties.set_prop("validFrom", AAZStrType, ".valid_from") + properties.set_prop("validUntil", AAZStrType, ".valid_until") + + external_references = _builder.get(".properties.externalReferences") + if external_references is not None: + external_references.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.externalReferences[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, ".description") + _elements.set_prop("externalId", AAZStrType, ".external_id") + _elements.set_prop("hashes", AAZDictType, ".hashes") + _elements.set_prop("sourceName", AAZStrType, ".source_name") + _elements.set_prop("url", AAZStrType, ".url") + + hashes = _builder.get(".properties.externalReferences[].hashes") + if hashes is not None: + hashes.set_elements(AAZStrType, ".") + + granular_markings = _builder.get(".properties.granularMarkings") + if granular_markings is not None: + granular_markings.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.granularMarkings[]") + if _elements is not None: + _elements.set_prop("language", AAZStrType, ".language") + _elements.set_prop("markingRef", AAZIntType, ".marking_ref") + _elements.set_prop("selectors", AAZListType, ".selectors") + + selectors = _builder.get(".properties.granularMarkings[].selectors") + if selectors is not None: + selectors.set_elements(AAZStrType, ".") + + indicator_types = _builder.get(".properties.indicatorTypes") + if indicator_types is not None: + indicator_types.set_elements(AAZStrType, ".") + + kill_chain_phases = _builder.get(".properties.killChainPhases") + if kill_chain_phases is not None: + kill_chain_phases.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.killChainPhases[]") + if _elements is not None: + _elements.set_prop("killChainName", AAZStrType, ".kill_chain_name") + _elements.set_prop("phaseName", AAZStrType, ".phase_name") + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + object_marking_refs = _builder.get(".properties.objectMarkingRefs") + if object_marking_refs is not None: + object_marking_refs.set_elements(AAZStrType, ".") + + parsed_pattern = _builder.get(".properties.parsedPattern") + if parsed_pattern is not None: + parsed_pattern.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.parsedPattern[]") + if _elements is not None: + _elements.set_prop("patternTypeKey", AAZStrType, ".pattern_type_key") + _elements.set_prop("patternTypeValues", AAZListType, ".pattern_type_values") + + pattern_type_values = _builder.get(".properties.parsedPattern[].patternTypeValues") + if pattern_type_values is not None: + pattern_type_values.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.parsedPattern[].patternTypeValues[]") + if _elements is not None: + _elements.set_prop("value", AAZStrType, ".value") + _elements.set_prop("valueType", AAZStrType, ".value_type") + + threat_intelligence_tags = _builder.get(".properties.threatIntelligenceTags") + if threat_intelligence_tags is not None: + threat_intelligence_tags.set_elements(AAZStrType, ".") + + threat_types = _builder.get(".properties.threatTypes") + if threat_types is not None: + threat_types.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_indicator = cls._schema_on_200.discriminate_by("kind", "indicator") + disc_indicator.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "indicator").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.confidence = AAZIntType() + properties.created = AAZStrType() + properties.created_by_ref = AAZStrType( + serialized_name="createdByRef", + ) + properties.defanged = AAZBoolType() + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.external_id = AAZStrType( + serialized_name="externalId", + ) + properties.external_last_updated_time_utc = AAZStrType( + serialized_name="externalLastUpdatedTimeUtc", + ) + properties.external_references = AAZListType( + serialized_name="externalReferences", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.granular_markings = AAZListType( + serialized_name="granularMarkings", + ) + properties.indicator_types = AAZListType( + serialized_name="indicatorTypes", + ) + properties.kill_chain_phases = AAZListType( + serialized_name="killChainPhases", + ) + properties.labels = AAZListType() + properties.language = AAZStrType() + properties.last_updated_time_utc = AAZStrType( + serialized_name="lastUpdatedTimeUtc", + ) + properties.modified = AAZStrType() + properties.object_marking_refs = AAZListType( + serialized_name="objectMarkingRefs", + ) + properties.parsed_pattern = AAZListType( + serialized_name="parsedPattern", + ) + properties.pattern = AAZStrType() + properties.pattern_type = AAZStrType( + serialized_name="patternType", + ) + properties.pattern_version = AAZStrType( + serialized_name="patternVersion", + ) + properties.revoked = AAZBoolType() + properties.source = AAZStrType() + properties.threat_intelligence_tags = AAZListType( + serialized_name="threatIntelligenceTags", + ) + properties.threat_types = AAZListType( + serialized_name="threatTypes", + ) + properties.valid_from = AAZStrType( + serialized_name="validFrom", + ) + properties.valid_until = AAZStrType( + serialized_name="validUntil", + ) + + external_references = cls._schema_on_200.discriminate_by("kind", "indicator").properties.external_references + external_references.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.external_references.Element + _element.description = AAZStrType() + _element.external_id = AAZStrType( + serialized_name="externalId", + ) + _element.hashes = AAZDictType() + _element.source_name = AAZStrType( + serialized_name="sourceName", + ) + _element.url = AAZStrType() + + hashes = cls._schema_on_200.discriminate_by("kind", "indicator").properties.external_references.Element.hashes + hashes.Element = AAZStrType() + + granular_markings = cls._schema_on_200.discriminate_by("kind", "indicator").properties.granular_markings + granular_markings.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.granular_markings.Element + _element.language = AAZStrType() + _element.marking_ref = AAZIntType( + serialized_name="markingRef", + ) + _element.selectors = AAZListType() + + selectors = cls._schema_on_200.discriminate_by("kind", "indicator").properties.granular_markings.Element.selectors + selectors.Element = AAZStrType() + + indicator_types = cls._schema_on_200.discriminate_by("kind", "indicator").properties.indicator_types + indicator_types.Element = AAZStrType() + + kill_chain_phases = cls._schema_on_200.discriminate_by("kind", "indicator").properties.kill_chain_phases + kill_chain_phases.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.kill_chain_phases.Element + _element.kill_chain_name = AAZStrType( + serialized_name="killChainName", + ) + _element.phase_name = AAZStrType( + serialized_name="phaseName", + ) + + labels = cls._schema_on_200.discriminate_by("kind", "indicator").properties.labels + labels.Element = AAZStrType() + + object_marking_refs = cls._schema_on_200.discriminate_by("kind", "indicator").properties.object_marking_refs + object_marking_refs.Element = AAZStrType() + + parsed_pattern = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern + parsed_pattern.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern.Element + _element.pattern_type_key = AAZStrType( + serialized_name="patternTypeKey", + ) + _element.pattern_type_values = AAZListType( + serialized_name="patternTypeValues", + ) + + pattern_type_values = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrType() + _element.value_type = AAZStrType( + serialized_name="valueType", + ) + + threat_intelligence_tags = cls._schema_on_200.discriminate_by("kind", "indicator").properties.threat_intelligence_tags + threat_intelligence_tags.Element = AAZStrType() + + threat_types = cls._schema_on_200.discriminate_by("kind", "indicator").properties.threat_types + threat_types.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["ReplaceTag"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_show.py new file mode 100644 index 00000000000..4ccf7c17c8b --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_show.py @@ -0,0 +1,353 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator show", + is_experimental=True, +) +class Show(AAZCommand): + """View a threat intelligence indicator by name. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/indicators/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Threat intelligence indicator name field.", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ThreatIntelligenceIndicatorGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators/{name}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "name", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_indicator = cls._schema_on_200.discriminate_by("kind", "indicator") + disc_indicator.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200.discriminate_by("kind", "indicator").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.confidence = AAZIntType() + properties.created = AAZStrType() + properties.created_by_ref = AAZStrType( + serialized_name="createdByRef", + ) + properties.defanged = AAZBoolType() + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.external_id = AAZStrType( + serialized_name="externalId", + ) + properties.external_last_updated_time_utc = AAZStrType( + serialized_name="externalLastUpdatedTimeUtc", + ) + properties.external_references = AAZListType( + serialized_name="externalReferences", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.granular_markings = AAZListType( + serialized_name="granularMarkings", + ) + properties.indicator_types = AAZListType( + serialized_name="indicatorTypes", + ) + properties.kill_chain_phases = AAZListType( + serialized_name="killChainPhases", + ) + properties.labels = AAZListType() + properties.language = AAZStrType() + properties.last_updated_time_utc = AAZStrType( + serialized_name="lastUpdatedTimeUtc", + ) + properties.modified = AAZStrType() + properties.object_marking_refs = AAZListType( + serialized_name="objectMarkingRefs", + ) + properties.parsed_pattern = AAZListType( + serialized_name="parsedPattern", + ) + properties.pattern = AAZStrType() + properties.pattern_type = AAZStrType( + serialized_name="patternType", + ) + properties.pattern_version = AAZStrType( + serialized_name="patternVersion", + ) + properties.revoked = AAZBoolType() + properties.source = AAZStrType() + properties.threat_intelligence_tags = AAZListType( + serialized_name="threatIntelligenceTags", + ) + properties.threat_types = AAZListType( + serialized_name="threatTypes", + ) + properties.valid_from = AAZStrType( + serialized_name="validFrom", + ) + properties.valid_until = AAZStrType( + serialized_name="validUntil", + ) + + external_references = cls._schema_on_200.discriminate_by("kind", "indicator").properties.external_references + external_references.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.external_references.Element + _element.description = AAZStrType() + _element.external_id = AAZStrType( + serialized_name="externalId", + ) + _element.hashes = AAZDictType() + _element.source_name = AAZStrType( + serialized_name="sourceName", + ) + _element.url = AAZStrType() + + hashes = cls._schema_on_200.discriminate_by("kind", "indicator").properties.external_references.Element.hashes + hashes.Element = AAZStrType() + + granular_markings = cls._schema_on_200.discriminate_by("kind", "indicator").properties.granular_markings + granular_markings.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.granular_markings.Element + _element.language = AAZStrType() + _element.marking_ref = AAZIntType( + serialized_name="markingRef", + ) + _element.selectors = AAZListType() + + selectors = cls._schema_on_200.discriminate_by("kind", "indicator").properties.granular_markings.Element.selectors + selectors.Element = AAZStrType() + + indicator_types = cls._schema_on_200.discriminate_by("kind", "indicator").properties.indicator_types + indicator_types.Element = AAZStrType() + + kill_chain_phases = cls._schema_on_200.discriminate_by("kind", "indicator").properties.kill_chain_phases + kill_chain_phases.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.kill_chain_phases.Element + _element.kill_chain_name = AAZStrType( + serialized_name="killChainName", + ) + _element.phase_name = AAZStrType( + serialized_name="phaseName", + ) + + labels = cls._schema_on_200.discriminate_by("kind", "indicator").properties.labels + labels.Element = AAZStrType() + + object_marking_refs = cls._schema_on_200.discriminate_by("kind", "indicator").properties.object_marking_refs + object_marking_refs.Element = AAZStrType() + + parsed_pattern = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern + parsed_pattern.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern.Element + _element.pattern_type_key = AAZStrType( + serialized_name="patternTypeKey", + ) + _element.pattern_type_values = AAZListType( + serialized_name="patternTypeValues", + ) + + pattern_type_values = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectType() + + _element = cls._schema_on_200.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrType() + _element.value_type = AAZStrType( + serialized_name="valueType", + ) + + threat_intelligence_tags = cls._schema_on_200.discriminate_by("kind", "indicator").properties.threat_intelligence_tags + threat_intelligence_tags.Element = AAZStrType() + + threat_types = cls._schema_on_200.discriminate_by("kind", "indicator").properties.threat_types + threat_types.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_update.py new file mode 100644 index 00000000000..cee72030410 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/_update.py @@ -0,0 +1,726 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator update", + is_experimental=True, +) +class Update(AAZCommand): + """Update a threat Intelligence indicator. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/indicators/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Threat intelligence indicator name field.", + required=True, + id_part="child_name_2", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.confidence = AAZIntArg( + options=["--confidence"], + arg_group="Properties", + help="Confidence of threat intelligence entity", + ) + _args_schema.created = AAZStrArg( + options=["--created"], + arg_group="Properties", + help="Created by", + ) + _args_schema.created_by_ref = AAZStrArg( + options=["--created-by-ref"], + arg_group="Properties", + help="Created by reference of threat intelligence entity", + ) + _args_schema.defanged = AAZBoolArg( + options=["--defanged"], + arg_group="Properties", + help="Is threat intelligence entity defanged", + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="Description of a threat intelligence entity", + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="Display name of a threat intelligence entity", + ) + _args_schema.external_id = AAZStrArg( + options=["--external-id"], + arg_group="Properties", + help="External ID of threat intelligence entity", + ) + _args_schema.external_updated_time = AAZStrArg( + options=["--external-updated-time"], + arg_group="Properties", + help="External last updated time in UTC", + ) + _args_schema.external_references = AAZListArg( + options=["--external-references"], + arg_group="Properties", + help="External References", + ) + _args_schema.granular_markings = AAZListArg( + options=["--granular-markings"], + arg_group="Properties", + help="Granular Markings", + ) + _args_schema.indicator_types = AAZListArg( + options=["--indicator-types"], + arg_group="Properties", + help="Indicator types of threat intelligence entities", + ) + _args_schema.kill_chain_phases = AAZListArg( + options=["--kill-chain-phases"], + arg_group="Properties", + help="Kill chain phases", + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="Labels of threat intelligence entity", + ) + _args_schema.language = AAZStrArg( + options=["--language"], + arg_group="Properties", + help="Language of threat intelligence entity", + ) + _args_schema.last_updated_time = AAZStrArg( + options=["--last-updated-time"], + arg_group="Properties", + help="Last updated time in UTC", + ) + _args_schema.modified = AAZStrArg( + options=["--modified"], + arg_group="Properties", + help="Modified by", + ) + _args_schema.object_marking_refs = AAZListArg( + options=["--object-marking-refs"], + arg_group="Properties", + help="Threat intelligence entity object marking references", + ) + _args_schema.parsed_pattern = AAZListArg( + options=["--parsed-pattern"], + arg_group="Properties", + help="Parsed patterns", + ) + _args_schema.pattern = AAZStrArg( + options=["--pattern"], + arg_group="Properties", + help="Pattern of a threat intelligence entity", + ) + _args_schema.pattern_type = AAZStrArg( + options=["--pattern-type"], + arg_group="Properties", + help="Pattern type of a threat intelligence entity", + ) + _args_schema.pattern_version = AAZStrArg( + options=["--pattern-version"], + arg_group="Properties", + help="Pattern version of a threat intelligence entity", + ) + _args_schema.revoked = AAZBoolArg( + options=["--revoked"], + arg_group="Properties", + help="Is threat intelligence entity revoked", + ) + _args_schema.source = AAZStrArg( + options=["--source"], + arg_group="Properties", + help="Source of a threat intelligence entity", + ) + _args_schema.threat_tags = AAZListArg( + options=["--threat-tags"], + arg_group="Properties", + help="List of tags", + ) + _args_schema.threat_types = AAZListArg( + options=["--threat-types"], + arg_group="Properties", + help="Threat types", + ) + _args_schema.valid_from = AAZStrArg( + options=["--valid-from"], + arg_group="Properties", + help="Valid from", + ) + _args_schema.valid_until = AAZStrArg( + options=["--valid-until"], + arg_group="Properties", + help="Valid until", + ) + + external_references = cls._args_schema.external_references + external_references.Element = AAZObjectArg() + + _element = cls._args_schema.external_references.Element + _element.description = AAZStrArg( + options=["description"], + help="External reference description", + ) + _element.external_id = AAZStrArg( + options=["external-id"], + help="External reference ID", + ) + _element.hashes = AAZDictArg( + options=["hashes"], + help="External reference hashes", + ) + _element.source_name = AAZStrArg( + options=["source-name"], + help="External reference source name", + ) + _element.url = AAZStrArg( + options=["url"], + help="External reference URL", + ) + + hashes = cls._args_schema.external_references.Element.hashes + hashes.Element = AAZStrArg() + + granular_markings = cls._args_schema.granular_markings + granular_markings.Element = AAZObjectArg() + + _element = cls._args_schema.granular_markings.Element + _element.language = AAZStrArg( + options=["language"], + help="Language granular marking model", + ) + _element.marking_ref = AAZIntArg( + options=["marking-ref"], + help="marking reference granular marking model", + ) + _element.selectors = AAZListArg( + options=["selectors"], + help="granular marking model selectors", + ) + + selectors = cls._args_schema.granular_markings.Element.selectors + selectors.Element = AAZStrArg() + + indicator_types = cls._args_schema.indicator_types + indicator_types.Element = AAZStrArg() + + kill_chain_phases = cls._args_schema.kill_chain_phases + kill_chain_phases.Element = AAZObjectArg() + + _element = cls._args_schema.kill_chain_phases.Element + _element.kill_chain_name = AAZStrArg( + options=["kill-chain-name"], + help="Kill chainName name", + ) + _element.phase_name = AAZStrArg( + options=["phase-name"], + help="Phase name", + ) + + labels = cls._args_schema.labels + labels.Element = AAZStrArg() + + object_marking_refs = cls._args_schema.object_marking_refs + object_marking_refs.Element = AAZStrArg() + + parsed_pattern = cls._args_schema.parsed_pattern + parsed_pattern.Element = AAZObjectArg() + + _element = cls._args_schema.parsed_pattern.Element + _element.pattern_type_key = AAZStrArg( + options=["pattern-type-key"], + help="Pattern type key", + ) + _element.pattern_type_values = AAZListArg( + options=["pattern-type-values"], + help="Pattern type keys", + ) + + pattern_type_values = cls._args_schema.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectArg() + + _element = cls._args_schema.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrArg( + options=["value"], + help="Value of parsed pattern", + ) + _element.value_type = AAZStrArg( + options=["value-type"], + help="Type of the value", + ) + + threat_tags = cls._args_schema.threat_tags + threat_tags.Element = AAZStrArg() + + threat_types = cls._args_schema.threat_types + threat_types.Element = AAZStrArg() + + # define Arg Group "ThreatIntelligenceProperties" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="ThreatIntelligenceProperties", + help="Etag of the azure resource", + ) + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorCreate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ThreatIntelligenceIndicatorCreate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators/{name}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "name", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_const("kind", "indicator", AAZStrType, ".", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("confidence", AAZIntType, ".confidence") + properties.set_prop("created", AAZStrType, ".created") + properties.set_prop("createdByRef", AAZStrType, ".created_by_ref") + properties.set_prop("defanged", AAZBoolType, ".defanged") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("displayName", AAZStrType, ".display_name") + properties.set_prop("externalId", AAZStrType, ".external_id") + properties.set_prop("externalLastUpdatedTimeUtc", AAZStrType, ".external_updated_time") + properties.set_prop("externalReferences", AAZListType, ".external_references") + properties.set_prop("granularMarkings", AAZListType, ".granular_markings") + properties.set_prop("indicatorTypes", AAZListType, ".indicator_types") + properties.set_prop("killChainPhases", AAZListType, ".kill_chain_phases") + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("language", AAZStrType, ".language") + properties.set_prop("lastUpdatedTimeUtc", AAZStrType, ".last_updated_time") + properties.set_prop("modified", AAZStrType, ".modified") + properties.set_prop("objectMarkingRefs", AAZListType, ".object_marking_refs") + properties.set_prop("parsedPattern", AAZListType, ".parsed_pattern") + properties.set_prop("pattern", AAZStrType, ".pattern") + properties.set_prop("patternType", AAZStrType, ".pattern_type") + properties.set_prop("patternVersion", AAZStrType, ".pattern_version") + properties.set_prop("revoked", AAZBoolType, ".revoked") + properties.set_prop("source", AAZStrType, ".source") + properties.set_prop("threatIntelligenceTags", AAZListType, ".threat_tags") + properties.set_prop("threatTypes", AAZListType, ".threat_types") + properties.set_prop("validFrom", AAZStrType, ".valid_from") + properties.set_prop("validUntil", AAZStrType, ".valid_until") + + external_references = _builder.get(".properties.externalReferences") + if external_references is not None: + external_references.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.externalReferences[]") + if _elements is not None: + _elements.set_prop("description", AAZStrType, ".description") + _elements.set_prop("externalId", AAZStrType, ".external_id") + _elements.set_prop("hashes", AAZDictType, ".hashes") + _elements.set_prop("sourceName", AAZStrType, ".source_name") + _elements.set_prop("url", AAZStrType, ".url") + + hashes = _builder.get(".properties.externalReferences[].hashes") + if hashes is not None: + hashes.set_elements(AAZStrType, ".") + + granular_markings = _builder.get(".properties.granularMarkings") + if granular_markings is not None: + granular_markings.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.granularMarkings[]") + if _elements is not None: + _elements.set_prop("language", AAZStrType, ".language") + _elements.set_prop("markingRef", AAZIntType, ".marking_ref") + _elements.set_prop("selectors", AAZListType, ".selectors") + + selectors = _builder.get(".properties.granularMarkings[].selectors") + if selectors is not None: + selectors.set_elements(AAZStrType, ".") + + indicator_types = _builder.get(".properties.indicatorTypes") + if indicator_types is not None: + indicator_types.set_elements(AAZStrType, ".") + + kill_chain_phases = _builder.get(".properties.killChainPhases") + if kill_chain_phases is not None: + kill_chain_phases.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.killChainPhases[]") + if _elements is not None: + _elements.set_prop("killChainName", AAZStrType, ".kill_chain_name") + _elements.set_prop("phaseName", AAZStrType, ".phase_name") + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + object_marking_refs = _builder.get(".properties.objectMarkingRefs") + if object_marking_refs is not None: + object_marking_refs.set_elements(AAZStrType, ".") + + parsed_pattern = _builder.get(".properties.parsedPattern") + if parsed_pattern is not None: + parsed_pattern.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.parsedPattern[]") + if _elements is not None: + _elements.set_prop("patternTypeKey", AAZStrType, ".pattern_type_key") + _elements.set_prop("patternTypeValues", AAZListType, ".pattern_type_values") + + pattern_type_values = _builder.get(".properties.parsedPattern[].patternTypeValues") + if pattern_type_values is not None: + pattern_type_values.set_elements(AAZObjectType) + + _elements = _builder.get(".properties.parsedPattern[].patternTypeValues[]") + if _elements is not None: + _elements.set_prop("value", AAZStrType, ".value") + _elements.set_prop("valueType", AAZStrType, ".value_type") + + threat_intelligence_tags = _builder.get(".properties.threatIntelligenceTags") + if threat_intelligence_tags is not None: + threat_intelligence_tags.set_elements(AAZStrType, ".") + + threat_types = _builder.get(".properties.threatTypes") + if threat_types is not None: + threat_types.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.kind = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + disc_indicator = cls._schema_on_200_201.discriminate_by("kind", "indicator") + disc_indicator.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + + properties = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties + properties.additional_data = AAZDictType( + serialized_name="additionalData", + flags={"read_only": True}, + ) + properties.confidence = AAZIntType() + properties.created = AAZStrType() + properties.created_by_ref = AAZStrType( + serialized_name="createdByRef", + ) + properties.defanged = AAZBoolType() + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.external_id = AAZStrType( + serialized_name="externalId", + ) + properties.external_last_updated_time_utc = AAZStrType( + serialized_name="externalLastUpdatedTimeUtc", + ) + properties.external_references = AAZListType( + serialized_name="externalReferences", + ) + properties.friendly_name = AAZStrType( + serialized_name="friendlyName", + flags={"read_only": True}, + ) + properties.granular_markings = AAZListType( + serialized_name="granularMarkings", + ) + properties.indicator_types = AAZListType( + serialized_name="indicatorTypes", + ) + properties.kill_chain_phases = AAZListType( + serialized_name="killChainPhases", + ) + properties.labels = AAZListType() + properties.language = AAZStrType() + properties.last_updated_time_utc = AAZStrType( + serialized_name="lastUpdatedTimeUtc", + ) + properties.modified = AAZStrType() + properties.object_marking_refs = AAZListType( + serialized_name="objectMarkingRefs", + ) + properties.parsed_pattern = AAZListType( + serialized_name="parsedPattern", + ) + properties.pattern = AAZStrType() + properties.pattern_type = AAZStrType( + serialized_name="patternType", + ) + properties.pattern_version = AAZStrType( + serialized_name="patternVersion", + ) + properties.revoked = AAZBoolType() + properties.source = AAZStrType() + properties.threat_intelligence_tags = AAZListType( + serialized_name="threatIntelligenceTags", + ) + properties.threat_types = AAZListType( + serialized_name="threatTypes", + ) + properties.valid_from = AAZStrType( + serialized_name="validFrom", + ) + properties.valid_until = AAZStrType( + serialized_name="validUntil", + ) + + external_references = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.external_references + external_references.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.external_references.Element + _element.description = AAZStrType() + _element.external_id = AAZStrType( + serialized_name="externalId", + ) + _element.hashes = AAZDictType() + _element.source_name = AAZStrType( + serialized_name="sourceName", + ) + _element.url = AAZStrType() + + hashes = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.external_references.Element.hashes + hashes.Element = AAZStrType() + + granular_markings = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.granular_markings + granular_markings.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.granular_markings.Element + _element.language = AAZStrType() + _element.marking_ref = AAZIntType( + serialized_name="markingRef", + ) + _element.selectors = AAZListType() + + selectors = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.granular_markings.Element.selectors + selectors.Element = AAZStrType() + + indicator_types = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.indicator_types + indicator_types.Element = AAZStrType() + + kill_chain_phases = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.kill_chain_phases + kill_chain_phases.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.kill_chain_phases.Element + _element.kill_chain_name = AAZStrType( + serialized_name="killChainName", + ) + _element.phase_name = AAZStrType( + serialized_name="phaseName", + ) + + labels = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.labels + labels.Element = AAZStrType() + + object_marking_refs = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.object_marking_refs + object_marking_refs.Element = AAZStrType() + + parsed_pattern = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern + parsed_pattern.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern.Element + _element.pattern_type_key = AAZStrType( + serialized_name="patternTypeKey", + ) + _element.pattern_type_values = AAZListType( + serialized_name="patternTypeValues", + ) + + pattern_type_values = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values + pattern_type_values.Element = AAZObjectType() + + _element = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.parsed_pattern.Element.pattern_type_values.Element + _element.value = AAZStrType() + _element.value_type = AAZStrType( + serialized_name="valueType", + ) + + threat_intelligence_tags = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.threat_intelligence_tags + threat_intelligence_tags.Element = AAZStrType() + + threat_types = cls._schema_on_200_201.discriminate_by("kind", "indicator").properties.threat_types + threat_types.Element = AAZStrType() + + return cls._schema_on_200_201 + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/__cmd_group.py new file mode 100644 index 00000000000..954ed04dde4 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel threat-indicator metric", +) +class __CMDGroup(AAZCommandGroup): + """Manage threat intelligence indicator metric with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/__init__.py new file mode 100644 index 00000000000..d63ae5a6fc9 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/__init__.py @@ -0,0 +1,12 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._list import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/_list.py new file mode 100644 index 00000000000..1ea5b331202 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/threat_indicator/metric/_list.py @@ -0,0 +1,206 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel threat-indicator metric list", +) +class List(AAZCommand): + """Get threat intelligence indicators metrics (Indicators counts by Type, Threat Type, Source). + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/threatintelligence/main/metrics", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.ThreatIntelligenceIndicatorMetricsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class ThreatIntelligenceIndicatorMetricsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/threatIntelligence/main/metrics", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.properties = AAZObjectType() + + properties = cls._schema_on_200.value.Element.properties + properties.last_updated_time_utc = AAZStrType( + serialized_name="lastUpdatedTimeUtc", + ) + properties.pattern_type_metrics = AAZListType( + serialized_name="patternTypeMetrics", + ) + properties.source_metrics = AAZListType( + serialized_name="sourceMetrics", + ) + properties.threat_type_metrics = AAZListType( + serialized_name="threatTypeMetrics", + ) + + pattern_type_metrics = cls._schema_on_200.value.Element.properties.pattern_type_metrics + pattern_type_metrics.Element = AAZObjectType() + _build_schema_threat_intelligence_metric_entity_read(pattern_type_metrics.Element) + + source_metrics = cls._schema_on_200.value.Element.properties.source_metrics + source_metrics.Element = AAZObjectType() + _build_schema_threat_intelligence_metric_entity_read(source_metrics.Element) + + threat_type_metrics = cls._schema_on_200.value.Element.properties.threat_type_metrics + threat_type_metrics.Element = AAZObjectType() + _build_schema_threat_intelligence_metric_entity_read(threat_type_metrics.Element) + + return cls._schema_on_200 + + +_schema_threat_intelligence_metric_entity_read = None + + +def _build_schema_threat_intelligence_metric_entity_read(_schema): + global _schema_threat_intelligence_metric_entity_read + if _schema_threat_intelligence_metric_entity_read is not None: + _schema.metric_name = _schema_threat_intelligence_metric_entity_read.metric_name + _schema.metric_value = _schema_threat_intelligence_metric_entity_read.metric_value + return + + _schema_threat_intelligence_metric_entity_read = AAZObjectType() + + threat_intelligence_metric_entity_read = _schema_threat_intelligence_metric_entity_read + threat_intelligence_metric_entity_read.metric_name = AAZStrType( + serialized_name="metricName", + ) + threat_intelligence_metric_entity_read.metric_value = AAZIntType( + serialized_name="metricValue", + ) + + _schema.metric_name = _schema_threat_intelligence_metric_entity_read.metric_name + _schema.metric_value = _schema_threat_intelligence_metric_entity_read.metric_value + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/__cmd_group.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/__cmd_group.py new file mode 100644 index 00000000000..293acf16c0b --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "sentinel watchlist", +) +class __CMDGroup(AAZCommandGroup): + """Manage watchlist with sentinel. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/__init__.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_create.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_create.py new file mode 100644 index 00000000000..4aba24fbf0c --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_create.py @@ -0,0 +1,481 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel watchlist create", + is_experimental=True, +) +class Create(AAZCommand): + """Create a Watchlist and its Watchlist Items (bulk creation, e.g. through text/csv content type). To create a Watchlist and its Items, we should call this endpoint with either rawContent or a valid SAR URI and contentType properties. The rawContent is mainly used for small watchlist (content size below 3.8 MB). The SAS URI enables the creation of large watchlist, where the content size can go up to 500 MB. The status of processing such large file can be polled through the URL returned in Azure-AsyncOperation header. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/watchlists/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.watchlist_alias = AAZStrArg( + options=["-n", "--name", "--watchlist-alias"], + help="Watchlist Alias", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.content_type = AAZStrArg( + options=["--content-type"], + arg_group="Properties", + help="The content type of the raw content. Example : text/csv or text/tsv ", + ) + _args_schema.created = AAZStrArg( + options=["--created"], + arg_group="Properties", + help="The time the watchlist was created", + ) + _args_schema.created_by = AAZObjectArg( + options=["--created-by"], + arg_group="Properties", + help="Describes a user that created the watchlist", + ) + cls._build_args_user_info_create(_args_schema.created_by) + _args_schema.default_duration = AAZStrArg( + options=["--default-duration"], + arg_group="Properties", + help="The default duration of a watchlist (in ISO 8601 duration format)", + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="A description of the watchlist", + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the watchlist", + ) + _args_schema.is_deleted = AAZBoolArg( + options=["--is-deleted"], + arg_group="Properties", + help="A flag that indicates if the watchlist is deleted or not", + ) + _args_schema.items_search_key = AAZStrArg( + options=["--items-search-key"], + arg_group="Properties", + help="The search key is used to optimize query performance when using watchlists for joins with other data. For example, enable a column with IP addresses to be the designated SearchKey field, then use this field as the key field when joining to other event data by IP address.", + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="List of labels relevant to this watchlist", + ) + _args_schema.skip_num = AAZIntArg( + options=["--skip-num"], + arg_group="Properties", + help="The number of lines in a csv/tsv content to skip before the header", + ) + _args_schema.provider = AAZStrArg( + options=["--provider"], + arg_group="Properties", + help="The provider of the watchlist", + ) + _args_schema.raw_content = AAZStrArg( + options=["--raw-content"], + arg_group="Properties", + help="The raw content that represents to watchlist items to create. In case of csv/tsv content type, it's the content of the file that will parsed by the endpoint", + ) + _args_schema.source = AAZStrArg( + options=["--source"], + arg_group="Properties", + help="The filename of the watchlist, called 'source'", + ) + _args_schema.source_type = AAZStrArg( + options=["--source-type"], + arg_group="Properties", + help="The sourceType of the watchlist", + enum={"Local file": "Local file", "Remote storage": "Remote storage"}, + ) + _args_schema.tenant_id = AAZStrArg( + options=["--tenant-id"], + arg_group="Properties", + help="The tenantId where the watchlist belongs to", + ) + _args_schema.updated = AAZStrArg( + options=["--updated"], + arg_group="Properties", + help="The last time the watchlist was updated", + ) + _args_schema.updated_by = AAZObjectArg( + options=["--updated-by"], + arg_group="Properties", + help="Describes a user that updated the watchlist", + ) + cls._build_args_user_info_create(_args_schema.updated_by) + _args_schema.upload_status = AAZStrArg( + options=["--upload-status"], + arg_group="Properties", + help="The status of the Watchlist upload : New, InProgress or Complete. Pls note : When a Watchlist upload status is equal to InProgress, the Watchlist cannot be deleted", + ) + _args_schema.watchlist_id = AAZStrArg( + options=["--watchlist-id"], + arg_group="Properties", + help="The id (a Guid) of the watchlist", + ) + _args_schema.watchlist_type = AAZStrArg( + options=["--watchlist-type"], + arg_group="Properties", + help="The type of the watchlist", + ) + + labels = cls._args_schema.labels + labels.Element = AAZStrArg() + + # define Arg Group "Watchlist" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Watchlist", + help="Etag of the azure resource", + ) + return cls._args_schema + + _args_user_info_create = None + + @classmethod + def _build_args_user_info_create(cls, _schema): + if cls._args_user_info_create is not None: + _schema.object_id = cls._args_user_info_create.object_id + return + + cls._args_user_info_create = AAZObjectArg() + + user_info_create = cls._args_user_info_create + user_info_create.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user.", + nullable=True, + ) + + _schema.object_id = cls._args_user_info_create.object_id + + def _execute_operations(self): + self.WatchlistsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class WatchlistsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/watchlists/{watchlistAlias}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "watchlistAlias", self.ctx.args.watchlist_alias, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("contentType", AAZStrType, ".content_type") + properties.set_prop("created", AAZStrType, ".created") + _build_schema_user_info_create(properties.set_prop("createdBy", AAZObjectType, ".created_by")) + properties.set_prop("defaultDuration", AAZStrType, ".default_duration") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("isDeleted", AAZBoolType, ".is_deleted") + properties.set_prop("itemsSearchKey", AAZStrType, ".items_search_key", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("numberOfLinesToSkip", AAZIntType, ".skip_num") + properties.set_prop("provider", AAZStrType, ".provider", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("rawContent", AAZStrType, ".raw_content") + properties.set_prop("source", AAZStrType, ".source") + properties.set_prop("sourceType", AAZStrType, ".source_type") + properties.set_prop("tenantId", AAZStrType, ".tenant_id") + properties.set_prop("updated", AAZStrType, ".updated") + _build_schema_user_info_create(properties.set_prop("updatedBy", AAZObjectType, ".updated_by")) + properties.set_prop("uploadStatus", AAZStrType, ".upload_status") + properties.set_prop("watchlistAlias", AAZStrType, ".watchlist_alias") + properties.set_prop("watchlistId", AAZStrType, ".watchlist_id") + properties.set_prop("watchlistType", AAZStrType, ".watchlist_type") + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType() + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.content_type = AAZStrType( + serialized_name="contentType", + ) + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.default_duration = AAZStrType( + serialized_name="defaultDuration", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.is_deleted = AAZBoolType( + serialized_name="isDeleted", + ) + properties.items_search_key = AAZStrType( + serialized_name="itemsSearchKey", + flags={"required": True}, + ) + properties.labels = AAZListType() + properties.number_of_lines_to_skip = AAZIntType( + serialized_name="numberOfLinesToSkip", + ) + properties.provider = AAZStrType( + flags={"required": True}, + ) + properties.raw_content = AAZStrType( + serialized_name="rawContent", + ) + properties.source = AAZStrType() + properties.source_type = AAZStrType( + serialized_name="sourceType", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + properties.upload_status = AAZStrType( + serialized_name="uploadStatus", + ) + properties.watchlist_alias = AAZStrType( + serialized_name="watchlistAlias", + ) + properties.watchlist_id = AAZStrType( + serialized_name="watchlistId", + ) + properties.watchlist_type = AAZStrType( + serialized_name="watchlistType", + ) + + labels = cls._schema_on_200_201.properties.labels + labels.Element = AAZStrType() + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200_201 + + +def _build_schema_user_info_create(_builder): + if _builder is None: + return + _builder.set_prop("objectId", AAZStrType, ".object_id", typ_kwargs={"nullable": True}) + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["Create"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_delete.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_delete.py new file mode 100644 index 00000000000..740686fa5cf --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_delete.py @@ -0,0 +1,134 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel watchlist delete", + is_experimental=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a watchlist. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/watchlists/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.watchlist_alias = AAZStrArg( + options=["-n", "--name", "--watchlist-alias"], + help="Watchlist Alias", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.WatchlistsDelete(ctx=self.ctx)() + + class WatchlistsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/watchlists/{watchlistAlias}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "watchlistAlias", self.ctx.args.watchlist_alias, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_list.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_list.py new file mode 100644 index 00000000000..2da7f24cc74 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_list.py @@ -0,0 +1,302 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel watchlist list", + is_experimental=True, +) +class List(AAZCommand): + """Get all watchlists, without watchlist items. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/watchlists", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + ) + _args_schema.skip_token = AAZStrArg( + options=["--skip-token"], + help="Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.", + ) + return cls._args_schema + + def _execute_operations(self): + self.WatchlistsList(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class WatchlistsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/watchlists", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$skipToken", self.ctx.args.skip_token, + ), + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType() + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.content_type = AAZStrType( + serialized_name="contentType", + ) + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.default_duration = AAZStrType( + serialized_name="defaultDuration", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.is_deleted = AAZBoolType( + serialized_name="isDeleted", + ) + properties.items_search_key = AAZStrType( + serialized_name="itemsSearchKey", + flags={"required": True}, + ) + properties.labels = AAZListType() + properties.number_of_lines_to_skip = AAZIntType( + serialized_name="numberOfLinesToSkip", + ) + properties.provider = AAZStrType( + flags={"required": True}, + ) + properties.raw_content = AAZStrType( + serialized_name="rawContent", + ) + properties.source = AAZStrType() + properties.source_type = AAZStrType( + serialized_name="sourceType", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + properties.upload_status = AAZStrType( + serialized_name="uploadStatus", + ) + properties.watchlist_alias = AAZStrType( + serialized_name="watchlistAlias", + ) + properties.watchlist_id = AAZStrType( + serialized_name="watchlistId", + ) + properties.watchlist_type = AAZStrType( + serialized_name="watchlistType", + ) + + labels = cls._schema_on_200.value.Element.properties.labels + labels.Element = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["List"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_show.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_show.py new file mode 100644 index 00000000000..749052446f6 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_show.py @@ -0,0 +1,294 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel watchlist show", + is_experimental=True, +) +class Show(AAZCommand): + """Get a watchlist, without its watchlist items. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/watchlists/{}", "2022-06-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.watchlist_alias = AAZStrArg( + options=["-n", "--name", "--watchlist-alias"], + help="Watchlist Alias", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + return cls._args_schema + + def _execute_operations(self): + self.WatchlistsGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class WatchlistsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/watchlists/{watchlistAlias}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "watchlistAlias", self.ctx.args.watchlist_alias, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType() + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.content_type = AAZStrType( + serialized_name="contentType", + ) + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.default_duration = AAZStrType( + serialized_name="defaultDuration", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.is_deleted = AAZBoolType( + serialized_name="isDeleted", + ) + properties.items_search_key = AAZStrType( + serialized_name="itemsSearchKey", + flags={"required": True}, + ) + properties.labels = AAZListType() + properties.number_of_lines_to_skip = AAZIntType( + serialized_name="numberOfLinesToSkip", + ) + properties.provider = AAZStrType( + flags={"required": True}, + ) + properties.raw_content = AAZStrType( + serialized_name="rawContent", + ) + properties.source = AAZStrType() + properties.source_type = AAZStrType( + serialized_name="sourceType", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + properties.upload_status = AAZStrType( + serialized_name="uploadStatus", + ) + properties.watchlist_alias = AAZStrType( + serialized_name="watchlistAlias", + ) + properties.watchlist_id = AAZStrType( + serialized_name="watchlistId", + ) + properties.watchlist_type = AAZStrType( + serialized_name="watchlistType", + ) + + labels = cls._schema_on_200.properties.labels + labels.Element = AAZStrType() + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +__all__ = ["Show"] diff --git a/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_update.py b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_update.py new file mode 100644 index 00000000000..8e8f9cf1ab4 --- /dev/null +++ b/src/securityinsight/azext_sentinel/aaz/latest/sentinel/watchlist/_update.py @@ -0,0 +1,639 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "sentinel watchlist update", + is_experimental=True, +) +class Update(AAZCommand): + """Update a Watchlist and its Watchlist Items (bulk creation, e.g. through text/csv content type). To create a Watchlist and its Items, we should call this endpoint with either rawContent or a valid SAR URI and contentType properties. The rawContent is mainly used for small watchlist (content size below 3.8 MB). The SAS URI enables the creation of large watchlist, where the content size can go up to 500 MB. The status of processing such large file can be polled through the URL returned in Azure-AsyncOperation header. + """ + + _aaz_info = { + "version": "2022-06-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.operationalinsights/workspaces/{}/providers/microsoft.securityinsights/watchlists/{}", "2022-06-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.watchlist_alias = AAZStrArg( + options=["-n", "--name", "--watchlist-alias"], + help="Watchlist Alias", + required=True, + id_part="child_name_1", + ) + _args_schema.workspace_name = AAZStrArg( + options=["-w", "--workspace-name"], + help="The name of the workspace.", + required=True, + is_experimental=True, + id_part="name", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.content_type = AAZStrArg( + options=["--content-type"], + arg_group="Properties", + help="The content type of the raw content. Example : text/csv or text/tsv ", + nullable=True, + ) + _args_schema.created = AAZStrArg( + options=["--created"], + arg_group="Properties", + help="The time the watchlist was created", + nullable=True, + ) + _args_schema.created_by = AAZObjectArg( + options=["--created-by"], + arg_group="Properties", + help="Describes a user that created the watchlist", + nullable=True, + ) + cls._build_args_user_info_update(_args_schema.created_by) + _args_schema.default_duration = AAZStrArg( + options=["--default-duration"], + arg_group="Properties", + help="The default duration of a watchlist (in ISO 8601 duration format)", + nullable=True, + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="A description of the watchlist", + nullable=True, + ) + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="The display name of the watchlist", + ) + _args_schema.is_deleted = AAZBoolArg( + options=["--is-deleted"], + arg_group="Properties", + help="A flag that indicates if the watchlist is deleted or not", + nullable=True, + ) + _args_schema.items_search_key = AAZStrArg( + options=["--items-search-key"], + arg_group="Properties", + help="The search key is used to optimize query performance when using watchlists for joins with other data. For example, enable a column with IP addresses to be the designated SearchKey field, then use this field as the key field when joining to other event data by IP address.", + ) + _args_schema.labels = AAZListArg( + options=["--labels"], + arg_group="Properties", + help="List of labels relevant to this watchlist", + nullable=True, + ) + _args_schema.skip_num = AAZIntArg( + options=["--skip-num"], + arg_group="Properties", + help="The number of lines in a csv/tsv content to skip before the header", + nullable=True, + ) + _args_schema.provider = AAZStrArg( + options=["--provider"], + arg_group="Properties", + help="The provider of the watchlist", + ) + _args_schema.raw_content = AAZStrArg( + options=["--raw-content"], + arg_group="Properties", + help="The raw content that represents to watchlist items to create. In case of csv/tsv content type, it's the content of the file that will parsed by the endpoint", + nullable=True, + ) + _args_schema.source = AAZStrArg( + options=["--source"], + arg_group="Properties", + help="The filename of the watchlist, called 'source'", + nullable=True, + ) + _args_schema.source_type = AAZStrArg( + options=["--source-type"], + arg_group="Properties", + help="The sourceType of the watchlist", + nullable=True, + enum={"Local file": "Local file", "Remote storage": "Remote storage"}, + ) + _args_schema.tenant_id = AAZStrArg( + options=["--tenant-id"], + arg_group="Properties", + help="The tenantId where the watchlist belongs to", + nullable=True, + ) + _args_schema.updated = AAZStrArg( + options=["--updated"], + arg_group="Properties", + help="The last time the watchlist was updated", + nullable=True, + ) + _args_schema.updated_by = AAZObjectArg( + options=["--updated-by"], + arg_group="Properties", + help="Describes a user that updated the watchlist", + nullable=True, + ) + cls._build_args_user_info_update(_args_schema.updated_by) + _args_schema.upload_status = AAZStrArg( + options=["--upload-status"], + arg_group="Properties", + help="The status of the Watchlist upload : New, InProgress or Complete. Pls note : When a Watchlist upload status is equal to InProgress, the Watchlist cannot be deleted", + nullable=True, + ) + _args_schema.watchlist_id = AAZStrArg( + options=["--watchlist-id"], + arg_group="Properties", + help="The id (a Guid) of the watchlist", + nullable=True, + ) + _args_schema.watchlist_type = AAZStrArg( + options=["--watchlist-type"], + arg_group="Properties", + help="The type of the watchlist", + nullable=True, + ) + + labels = cls._args_schema.labels + labels.Element = AAZStrArg() + + # define Arg Group "Watchlist" + + _args_schema = cls._args_schema + _args_schema.etag = AAZStrArg( + options=["--etag"], + arg_group="Watchlist", + help="Etag of the azure resource", + nullable=True, + ) + return cls._args_schema + + _args_user_info_update = None + + @classmethod + def _build_args_user_info_update(cls, _schema): + if cls._args_user_info_update is not None: + _schema.object_id = cls._args_user_info_update.object_id + return + + cls._args_user_info_update = AAZObjectArg( + nullable=True, + ) + + user_info_update = cls._args_user_info_update + user_info_update.object_id = AAZStrArg( + options=["object-id"], + help="The object id of the user.", + nullable=True, + ) + + _schema.object_id = cls._args_user_info_update.object_id + + def _execute_operations(self): + self.WatchlistsGet(ctx=self.ctx)() + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.WatchlistsCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class WatchlistsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/watchlists/{watchlistAlias}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "watchlistAlias", self.ctx.args.watchlist_alias, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _build_schema_watchlist_read(cls._schema_on_200) + + return cls._schema_on_200 + + class WatchlistsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/watchlists/{watchlistAlias}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "watchlistAlias", self.ctx.args.watchlist_alias, + required=True, + ), + **self.serialize_url_param( + "workspaceName", self.ctx.args.workspace_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2022-06-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _build_schema_watchlist_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("etag", AAZStrType, ".etag") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("contentType", AAZStrType, ".content_type") + properties.set_prop("created", AAZStrType, ".created") + _build_schema_user_info_update(properties.set_prop("createdBy", AAZObjectType, ".created_by")) + properties.set_prop("defaultDuration", AAZStrType, ".default_duration") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("displayName", AAZStrType, ".display_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("isDeleted", AAZBoolType, ".is_deleted") + properties.set_prop("itemsSearchKey", AAZStrType, ".items_search_key", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("labels", AAZListType, ".labels") + properties.set_prop("numberOfLinesToSkip", AAZIntType, ".skip_num") + properties.set_prop("provider", AAZStrType, ".provider", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("rawContent", AAZStrType, ".raw_content") + properties.set_prop("source", AAZStrType, ".source") + properties.set_prop("sourceType", AAZStrType, ".source_type") + properties.set_prop("tenantId", AAZStrType, ".tenant_id") + properties.set_prop("updated", AAZStrType, ".updated") + _build_schema_user_info_update(properties.set_prop("updatedBy", AAZObjectType, ".updated_by")) + properties.set_prop("uploadStatus", AAZStrType, ".upload_status") + properties.set_prop("watchlistAlias", AAZStrType, ".watchlist_alias") + properties.set_prop("watchlistId", AAZStrType, ".watchlist_id") + properties.set_prop("watchlistType", AAZStrType, ".watchlist_type") + + labels = _builder.get(".properties.labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +def _build_schema_user_info_update(_builder): + if _builder is None: + return + _builder.set_prop("objectId", AAZStrType, ".object_id", typ_kwargs={"nullable": True}) + + +_schema_user_info_read = None + + +def _build_schema_user_info_read(_schema): + global _schema_user_info_read + if _schema_user_info_read is not None: + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + return + + _schema_user_info_read = AAZObjectType() + + user_info_read = _schema_user_info_read + user_info_read.email = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_info_read.object_id = AAZStrType( + serialized_name="objectId", + nullable=True, + ) + + _schema.email = _schema_user_info_read.email + _schema.name = _schema_user_info_read.name + _schema.object_id = _schema_user_info_read.object_id + + +_schema_watchlist_read = None + + +def _build_schema_watchlist_read(_schema): + global _schema_watchlist_read + if _schema_watchlist_read is not None: + _schema.etag = _schema_watchlist_read.etag + _schema.id = _schema_watchlist_read.id + _schema.name = _schema_watchlist_read.name + _schema.properties = _schema_watchlist_read.properties + _schema.system_data = _schema_watchlist_read.system_data + _schema.type = _schema_watchlist_read.type + return + + _schema_watchlist_read = AAZObjectType() + + watchlist_read = _schema_watchlist_read + watchlist_read.etag = AAZStrType() + watchlist_read.id = AAZStrType( + flags={"read_only": True}, + ) + watchlist_read.name = AAZStrType( + flags={"read_only": True}, + ) + watchlist_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + watchlist_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + watchlist_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_watchlist_read.properties + properties.content_type = AAZStrType( + serialized_name="contentType", + ) + properties.created = AAZStrType() + properties.created_by = AAZObjectType( + serialized_name="createdBy", + ) + _build_schema_user_info_read(properties.created_by) + properties.default_duration = AAZStrType( + serialized_name="defaultDuration", + ) + properties.description = AAZStrType() + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"required": True}, + ) + properties.is_deleted = AAZBoolType( + serialized_name="isDeleted", + ) + properties.items_search_key = AAZStrType( + serialized_name="itemsSearchKey", + flags={"required": True}, + ) + properties.labels = AAZListType() + properties.number_of_lines_to_skip = AAZIntType( + serialized_name="numberOfLinesToSkip", + ) + properties.provider = AAZStrType( + flags={"required": True}, + ) + properties.raw_content = AAZStrType( + serialized_name="rawContent", + ) + properties.source = AAZStrType() + properties.source_type = AAZStrType( + serialized_name="sourceType", + ) + properties.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + properties.updated = AAZStrType() + properties.updated_by = AAZObjectType( + serialized_name="updatedBy", + ) + _build_schema_user_info_read(properties.updated_by) + properties.upload_status = AAZStrType( + serialized_name="uploadStatus", + ) + properties.watchlist_alias = AAZStrType( + serialized_name="watchlistAlias", + ) + properties.watchlist_id = AAZStrType( + serialized_name="watchlistId", + ) + properties.watchlist_type = AAZStrType( + serialized_name="watchlistType", + ) + + labels = _schema_watchlist_read.properties.labels + labels.Element = AAZStrType() + + system_data = _schema_watchlist_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + _schema.etag = _schema_watchlist_read.etag + _schema.id = _schema_watchlist_read.id + _schema.name = _schema_watchlist_read.name + _schema.properties = _schema_watchlist_read.properties + _schema.system_data = _schema_watchlist_read.system_data + _schema.type = _schema_watchlist_read.type + + +__all__ = ["Update"] diff --git a/src/securityinsight/azext_sentinel/azext_metadata.json b/src/securityinsight/azext_sentinel/azext_metadata.json index 7b33e2426b0..cce7fd18ec3 100644 --- a/src/securityinsight/azext_sentinel/azext_metadata.json +++ b/src/securityinsight/azext_sentinel/azext_metadata.json @@ -1,3 +1,4 @@ { - "azext.minCliCoreVersion": "2.11.0" + "azext.isExperimental": true, + "azext.minCliCoreVersion": "2.37.0" } \ No newline at end of file diff --git a/src/securityinsight/azext_sentinel/commands.py b/src/securityinsight/azext_sentinel/commands.py new file mode 100644 index 00000000000..b0d842e4993 --- /dev/null +++ b/src/securityinsight/azext_sentinel/commands.py @@ -0,0 +1,15 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +# from azure.cli.core.commands import CliCommandType + + +def load_command_table(self, _): # pylint: disable=unused-argument + pass diff --git a/src/securityinsight/azext_sentinel/custom.py b/src/securityinsight/azext_sentinel/custom.py index dbe9d5f9742..86df1e48ef5 100644 --- a/src/securityinsight/azext_sentinel/custom.py +++ b/src/securityinsight/azext_sentinel/custom.py @@ -1,17 +1,14 @@ -# -------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. +# Licensed under the MIT License. See License.txt in the project root for license information. # -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=wildcard-import -# pylint: disable=unused-wildcard-import +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- -from .generated.custom import * # noqa: F403 -try: - from .manual.custom import * # noqa: F403 -except ImportError: - pass +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +from knack.log import get_logger + + +logger = get_logger(__name__) diff --git a/src/securityinsight/azext_sentinel/generated/__init__.py b/src/securityinsight/azext_sentinel/generated/__init__.py deleted file mode 100644 index c9cfdc73e77..00000000000 --- a/src/securityinsight/azext_sentinel/generated/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- - -__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/src/securityinsight/azext_sentinel/generated/_client_factory.py b/src/securityinsight/azext_sentinel/generated/_client_factory.py deleted file mode 100644 index 6868ae4601c..00000000000 --- a/src/securityinsight/azext_sentinel/generated/_client_factory.py +++ /dev/null @@ -1,44 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- - - -def cf_sentinel_cl(cli_ctx, *_): - from azure.cli.core.commands.client_factory import get_mgmt_service_client - from ..vendored_sdks.securityinsight import SecurityInsights - return get_mgmt_service_client(cli_ctx, - SecurityInsights) - - -def cf_alert_rule(cli_ctx, *_): - return cf_sentinel_cl(cli_ctx).alert_rule - - -def cf_action(cli_ctx, *_): - return cf_sentinel_cl(cli_ctx).action - - -def cf_alert_rule_template(cli_ctx, *_): - return cf_sentinel_cl(cli_ctx).alert_rule_template - - -def cf_bookmark(cli_ctx, *_): - return cf_sentinel_cl(cli_ctx).bookmark - - -def cf_data_connector(cli_ctx, *_): - return cf_sentinel_cl(cli_ctx).data_connector - - -def cf_incident(cli_ctx, *_): - return cf_sentinel_cl(cli_ctx).incident - - -def cf_incident_comment(cli_ctx, *_): - return cf_sentinel_cl(cli_ctx).incident_comment diff --git a/src/securityinsight/azext_sentinel/generated/_help.py b/src/securityinsight/azext_sentinel/generated/_help.py deleted file mode 100644 index 9a401f619f3..00000000000 --- a/src/securityinsight/azext_sentinel/generated/_help.py +++ /dev/null @@ -1,637 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=too-many-lines - -from knack.help_files import helps - - -helps['sentinel alert-rule'] = """ - type: group - short-summary: sentinel alert-rule -""" - -helps['sentinel alert-rule list'] = """ - type: command - short-summary: "Gets all alert rules." - examples: - - name: Get all alert rules. - text: |- - az sentinel alert-rule list --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel alert-rule show'] = """ - type: command - short-summary: "Gets the alert rule." - examples: - - name: Get an alert rule. - text: |- - az sentinel alert-rule show --resource-group "myRg" --rule-id "myFirstFusionRule" --workspace-name \ -"myWorkspace" -""" - -helps['sentinel alert-rule create'] = """ - type: command - short-summary: "Creates or updates the action of alert rule. And Create the alert rule." - parameters: - - name: --fusion-alert-rule - short-summary: "Represents Fusion alert rule." - long-summary: | - Usage: --fusion-alert-rule alert-rule-template-name=XX enabled=XX kind=XX etag=XX - - alert-rule-template-name: The Name of the alert rule template used to create this rule. - enabled: Determines whether this alert rule is enabled or disabled. - kind: Required. The alert rule kind - etag: Etag of the azure resource - - name: --microsoft-security-incident-creation-alert-rule - short-summary: "Represents MicrosoftSecurityIncidentCreation rule." - long-summary: | - Usage: --microsoft-security-incident-creation-alert-rule display-names-filter=XX \ -display-names-exclude-filter=XX product-filter=XX severities-filter=XX alert-rule-template-name=XX description=XX \ -display-name=XX enabled=XX kind=XX etag=XX - - display-names-filter: the alerts' displayNames on which the cases will be generated - display-names-exclude-filter: the alerts' displayNames on which the cases will not be generated - product-filter: The alerts' productName on which the cases will be generated - severities-filter: the alerts' severities on which the cases will be generated - alert-rule-template-name: The Name of the alert rule template used to create this rule. - description: The description of the alert rule. - display-name: The display name for alerts created by this alert rule. - enabled: Determines whether this alert rule is enabled or disabled. - kind: Required. The alert rule kind - etag: Etag of the azure resource - - name: --scheduled-alert-rule - short-summary: "Represents scheduled alert rule." - long-summary: | - Usage: --scheduled-alert-rule query=XX query-frequency=XX query-period=XX severity=XX trigger-operator=XX \ -trigger-threshold=XX alert-rule-template-name=XX description=XX display-name=XX enabled=XX suppression-duration=XX \ -suppression-enabled=XX tactics=XX kind=XX etag=XX - - query: The query that creates alerts for this rule. - query-frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - query-period: The period (in ISO 8601 duration format) that this alert rule looks at. - severity: The severity for alerts created by this alert rule. - trigger-operator: The operation against the threshold that triggers alert rule. - trigger-threshold: The threshold triggers this alert rule. - alert-rule-template-name: The Name of the alert rule template used to create this rule. - description: The description of the alert rule. - display-name: The display name for alerts created by this alert rule. - enabled: Determines whether this alert rule is enabled or disabled. - suppression-duration: The suppression (in ISO 8601 duration format) to wait since last time this alert \ -rule been triggered. - suppression-enabled: Determines whether the suppression for this alert rule is enabled or disabled. - tactics: The tactics of the alert rule - kind: Required. The alert rule kind - etag: Etag of the azure resource - examples: - - name: Creates or updates an action of alert rule. - text: |- - az sentinel alert-rule create --etag "{etag}" \ ---logic-app-resource-id "/subscriptions/{subs}/resourceGroups/myRg/providers/Microsoft.Lo\ -gic/workflows/MyAlerts" --trigger-uri "https://xxx.northcentralus.logic.azure.com:443/workflows/xxx/triggers/\ -manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=signature" \ ---action-id "{action-id}" --resource-group "myRg" --rule-id "{rule-id}" --workspace-name "myWorkspace" - - name: Creates or updates a Fusion alert rule. - text: |- - az sentinel alert-rule create --fusion-alert-rule etag="{etag}" \ -alert-rule-template-name="{name}" enabled=true --resource-group "myRg" --rule-id \ -"myFirstFusionRule" --workspace-name "myWorkspace" - - name: Creates or updates a MicrosoftSecurityIncidentCreation rule. - text: |- - az sentinel alert-rule create --microsoft-security-incident-creation-alert-rule \ -etag="{etag}" product-filter="Microsoft Cloud App Security" display-name="testing \ -displayname" enabled=true --resource-group "myRg" --rule-id "microsoftSecurityIncidentCreationRuleExample" \ ---workspace-name "myWorkspace" - - name: Creates or updates a Scheduled alert rule. - text: |- - az sentinel alert-rule create --scheduled-alert-rule etag="{etag}" \ -query="ProtectionStatus | extend HostCustomEntity = Computer | extend IPCustomEntity = ComputerIP_Hidden" \ -query-frequency="PT1H" query-period="P2DT1H30M" severity="High" trigger-operator="GreaterThan" trigger-threshold=0 \ -description="" display-name="Rule2" enabled=true suppression-duration="PT1H" suppression-enabled=false \ -tactics="Persistence" tactics="LateralMovement" --resource-group "myRg" --rule-id "{rule-id}" \ ---workspace-name "myWorkspace" -""" - -helps['sentinel alert-rule update'] = """ - type: command - short-summary: "Update the alert rule." - parameters: - - name: --fusion-alert-rule - short-summary: "Represents Fusion alert rule." - long-summary: | - Usage: --fusion-alert-rule alert-rule-template-name=XX enabled=XX kind=XX etag=XX - - alert-rule-template-name: The Name of the alert rule template used to create this rule. - enabled: Determines whether this alert rule is enabled or disabled. - kind: Required. The alert rule kind - etag: Etag of the azure resource - - name: --microsoft-security-incident-creation-alert-rule - short-summary: "Represents MicrosoftSecurityIncidentCreation rule." - long-summary: | - Usage: --microsoft-security-incident-creation-alert-rule display-names-filter=XX \ -display-names-exclude-filter=XX product-filter=XX severities-filter=XX alert-rule-template-name=XX description=XX \ -display-name=XX enabled=XX kind=XX etag=XX - - display-names-filter: the alerts' displayNames on which the cases will be generated - display-names-exclude-filter: the alerts' displayNames on which the cases will not be generated - product-filter: The alerts' productName on which the cases will be generated - severities-filter: the alerts' severities on which the cases will be generated - alert-rule-template-name: The Name of the alert rule template used to create this rule. - description: The description of the alert rule. - display-name: The display name for alerts created by this alert rule. - enabled: Determines whether this alert rule is enabled or disabled. - kind: Required. The alert rule kind - etag: Etag of the azure resource - - name: --scheduled-alert-rule - short-summary: "Represents scheduled alert rule." - long-summary: | - Usage: --scheduled-alert-rule query=XX query-frequency=XX query-period=XX severity=XX trigger-operator=XX \ -trigger-threshold=XX alert-rule-template-name=XX description=XX display-name=XX enabled=XX suppression-duration=XX \ -suppression-enabled=XX tactics=XX kind=XX etag=XX - - query: The query that creates alerts for this rule. - query-frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - query-period: The period (in ISO 8601 duration format) that this alert rule looks at. - severity: The severity for alerts created by this alert rule. - trigger-operator: The operation against the threshold that triggers alert rule. - trigger-threshold: The threshold triggers this alert rule. - alert-rule-template-name: The Name of the alert rule template used to create this rule. - description: The description of the alert rule. - display-name: The display name for alerts created by this alert rule. - enabled: Determines whether this alert rule is enabled or disabled. - suppression-duration: The suppression (in ISO 8601 duration format) to wait since last time this alert \ -rule been triggered. - suppression-enabled: Determines whether the suppression for this alert rule is enabled or disabled. - tactics: The tactics of the alert rule - kind: Required. The alert rule kind - etag: Etag of the azure resource -""" - -helps['sentinel alert-rule delete'] = """ - type: command - short-summary: "Delete the action of alert rule. And Delete the alert rule." - examples: - - name: Delete an action of alert rule. - text: |- - az sentinel alert-rule delete --action-id "{action-id}" --resource-group \ -"myRg" --rule-id "{rule-id}" --workspace-name "myWorkspace" - - name: Delete an alert rule. - text: |- - az sentinel alert-rule delete --resource-group "myRg" --rule-id "{rule-id}" \ ---workspace-name "myWorkspace" -""" - -helps['sentinel alert-rule get-action'] = """ - type: command - short-summary: "Gets the action of alert rule." - examples: - - name: Get an action of alert rule. - text: |- - az sentinel alert-rule get-action --action-id "{action-id}" --resource-group \ -"myRg" --rule-id "{rule-id}" --workspace-name "myWorkspace" -""" - -helps['sentinel action'] = """ - type: group - short-summary: sentinel action -""" - -helps['sentinel action list'] = """ - type: command - short-summary: "Gets all actions of alert rule." - examples: - - name: Get all actions of alert rule. - text: |- - az sentinel action list --resource-group "myRg" --rule-id "{rule-id}" \ ---workspace-name "myWorkspace" -""" - -helps['sentinel alert-rule-template'] = """ - type: group - short-summary: sentinel alert-rule-template -""" - -helps['sentinel alert-rule-template list'] = """ - type: command - short-summary: "Gets all alert rule templates." - examples: - - name: Get all alert rule templates. - text: |- - az sentinel alert-rule-template list --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel alert-rule-template show'] = """ - type: command - short-summary: "Gets the alert rule template." - examples: - - name: Get alert rule template by Id. - text: |- - az sentinel alert-rule-template show --alert-rule-template-id "{id}" \ ---resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel bookmark'] = """ - type: group - short-summary: sentinel bookmark -""" - -helps['sentinel bookmark list'] = """ - type: command - short-summary: "Gets all bookmarks." - examples: - - name: Get all bookmarks. - text: |- - az sentinel bookmark list --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel bookmark show'] = """ - type: command - short-summary: "Gets a bookmark." - examples: - - name: Get a bookmark. - text: |- - az sentinel bookmark show --bookmark-id "{id}" --resource-group "myRg" \ ---workspace-name "myWorkspace" -""" - -helps['sentinel bookmark create'] = """ - type: command - short-summary: "Create the bookmark." - parameters: - - name: --incident-info - short-summary: "Describes an incident that relates to bookmark" - long-summary: | - Usage: --incident-info incident-id=XX severity=XX title=XX relation-name=XX - - incident-id: Required. Incident Id - severity: Required. The severity of the incident - title: Required. The title of the incident - relation-name: Required. Relation Name - examples: - - name: Creates or updates a bookmark. - text: |- - az sentinel bookmark create --etag "{etag}" --created \ -"2019-01-01T13:15:30Z" --display-name "My bookmark" --labels "Tag1" --labels "Tag2" --notes "Found a suspicious \ -activity" -q "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)" --query-result "Security \ -Event query result" --updated "2019-01-01T13:15:30Z" --bookmark-id "{id}" \ ---resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel bookmark update'] = """ - type: command - short-summary: "Update the bookmark." - parameters: - - name: --incident-info - short-summary: "Describes an incident that relates to bookmark" - long-summary: | - Usage: --incident-info incident-id=XX severity=XX title=XX relation-name=XX - - incident-id: Required. Incident Id - severity: Required. The severity of the incident - title: Required. The title of the incident - relation-name: Required. Relation Name -""" - -helps['sentinel bookmark delete'] = """ - type: command - short-summary: "Delete the bookmark." - examples: - - name: Delete a bookmark. - text: |- - az sentinel bookmark delete --bookmark-id "{id}" --resource-group \ -"myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel data-connector'] = """ - type: group - short-summary: sentinel data-connector -""" - -helps['sentinel data-connector list'] = """ - type: command - short-summary: "Gets all data connectors." - examples: - - name: Get all data connectors. - text: |- - az sentinel data-connector list --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel data-connector show'] = """ - type: command - short-summary: "Gets a data connector." - examples: - - name: Get a data connector. - text: |- - az sentinel data-connector show --data-connector-id "{id}" --resource-group "myRg" \ - --workspace-name "myWorkspace" -""" - -helps['sentinel data-connector create'] = """ - type: command - short-summary: "Create the data connector." - parameters: - - name: --aad-data-connector - short-summary: "Represents AAD (Azure Active Directory) data connector." - long-summary: | - Usage: --aad-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aatp-data-connector - short-summary: "Represents AATP (Azure Advanced Threat Protection) data connector." - long-summary: | - Usage: --aatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --asc-data-connector - short-summary: "Represents ASC (Azure Security Center) data connector." - long-summary: | - Usage: --asc-data-connector subscription-id=XX state=XX kind=XX etag=XX - - subscription-id: The subscription id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aws-cloud-trail-data-connector - short-summary: "Represents Amazon Web Services CloudTrail data connector." - long-summary: | - Usage: --aws-cloud-trail-data-connector aws-role-arn=XX state=XX kind=XX etag=XX - - aws-role-arn: The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access the Aws account. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mcas-data-connector - short-summary: "Represents MCAS (Microsoft Cloud App Security) data connector." - long-summary: | - Usage: --mcas-data-connector tenant-id=XX state-data-types-alerts-state=XX state-data-types-discovery-logs-\ -state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-alerts-state: Describe whether this data type connection is enabled or not. - state-data-types-discovery-logs-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mdatp-data-connector - short-summary: "Represents MDATP (Microsoft Defender Advanced Threat Protection) data connector." - long-summary: | - Usage: --mdatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --office-data-connector - short-summary: "Represents office data connector." - long-summary: | - Usage: --office-data-connector tenant-id=XX state-data-types-share-point-state=XX \ -state-data-types-exchange-state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-share-point-state: Describe whether this data type connection is enabled or not. - state-data-types-exchange-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --ti-data-connector - short-summary: "Represents threat intelligence data connector." - long-summary: | - Usage: --ti-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - examples: - - name: Creates or updates an Office365 data connector. - text: |- - az sentinel data-connector create --office-data-connector etag="{etag}" \ - tenant-id="{tenant-id}" --data-connector-id "{id}" --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel data-connector update'] = """ - type: command - short-summary: "Update the data connector." - parameters: - - name: --aad-data-connector - short-summary: "Represents AAD (Azure Active Directory) data connector." - long-summary: | - Usage: --aad-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aatp-data-connector - short-summary: "Represents AATP (Azure Advanced Threat Protection) data connector." - long-summary: | - Usage: --aatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --asc-data-connector - short-summary: "Represents ASC (Azure Security Center) data connector." - long-summary: | - Usage: --asc-data-connector subscription-id=XX state=XX kind=XX etag=XX - - subscription-id: The subscription id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aws-cloud-trail-data-connector - short-summary: "Represents Amazon Web Services CloudTrail data connector." - long-summary: | - Usage: --aws-cloud-trail-data-connector aws-role-arn=XX state=XX kind=XX etag=XX - - aws-role-arn: The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access the Aws account. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mcas-data-connector - short-summary: "Represents MCAS (Microsoft Cloud App Security) data connector." - long-summary: | - Usage: --mcas-data-connector tenant-id=XX state-data-types-alerts-state=XX state-data-types-discovery-logs-\ -state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-alerts-state: Describe whether this data type connection is enabled or not. - state-data-types-discovery-logs-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mdatp-data-connector - short-summary: "Represents MDATP (Microsoft Defender Advanced Threat Protection) data connector." - long-summary: | - Usage: --mdatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --office-data-connector - short-summary: "Represents office data connector." - long-summary: | - Usage: --office-data-connector tenant-id=XX state-data-types-share-point-state=XX \ -state-data-types-exchange-state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-share-point-state: Describe whether this data type connection is enabled or not. - state-data-types-exchange-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --ti-data-connector - short-summary: "Represents threat intelligence data connector." - long-summary: | - Usage: --ti-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource -""" - -helps['sentinel data-connector delete'] = """ - type: command - short-summary: "Delete the data connector." - examples: - - name: Delete a data connector. - text: |- - az sentinel data-connector delete --data-connector-id "{id}" --resource-group "myRg" \ - --workspace-name "myWorkspace" -""" - -helps['sentinel incident'] = """ - type: group - short-summary: sentinel incident -""" - -helps['sentinel incident list'] = """ - type: command - short-summary: "Gets all incidents." - examples: - - name: Get all incidents. - text: |- - az sentinel incident list --orderby "properties/createdTimeUtc desc" --top 1 --resource-group "myRg" \ ---workspace-name "myWorkspace" -""" - -helps['sentinel incident show'] = """ - type: command - short-summary: "Gets an incident." - examples: - - name: Get an incident. - text: |- - az sentinel incident show --incident-id "{id}" --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel incident create'] = """ - type: command - short-summary: "Create the incident." - parameters: - - name: --labels - short-summary: "List of labels relevant to this incident" - long-summary: | - Usage: --labels label-name=XX - - label-name: Required. The name of the label - - Multiple actions can be specified by using more than one --labels argument. - - name: --owner - short-summary: "Describes a user that the incident is assigned to" - long-summary: | - Usage: --owner email=XX assigned-to=XX object-id=XX user-principal-name=XX - - email: The email of the user the incident is assigned to. - assigned-to: The name of the user the incident is assigned to. - object-id: The object id of the user the incident is assigned to. - user-principal-name: The user principal name of the user the incident is assigned to. - examples: - - name: Creates or updates an incident. - text: |- - az sentinel incident create --etag "{etag}" --description "This is \ -a demo incident" --classification "FalsePositive" --classification-comment "Not a malicious activity" \ ---classification-reason "IncorrectAlertLogic" --first-activity-time-utc "2019-01-01T13:00:30Z" \ ---last-activity-time-utc "2019-01-01T13:05:30Z" --owner object-id="{oid}" --severity \ -"High" --status "Closed" --title "My incident" --incident-id "{id}" --resource-group \ -"myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel incident update'] = """ - type: command - short-summary: "Update the incident." - parameters: - - name: --labels - short-summary: "List of labels relevant to this incident" - long-summary: | - Usage: --labels label-name=XX - - label-name: Required. The name of the label - - Multiple actions can be specified by using more than one --labels argument. - - name: --owner - short-summary: "Describes a user that the incident is assigned to" - long-summary: | - Usage: --owner email=XX assigned-to=XX object-id=XX user-principal-name=XX - - email: The email of the user the incident is assigned to. - assigned-to: The name of the user the incident is assigned to. - object-id: The object id of the user the incident is assigned to. - user-principal-name: The user principal name of the user the incident is assigned to. -""" - -helps['sentinel incident delete'] = """ - type: command - short-summary: "Delete the incident." - examples: - - name: Delete an incident. - text: |- - az sentinel incident delete --incident-id "{id}" --resource-group \ -"myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel incident-comment'] = """ - type: group - short-summary: sentinel incident-comment -""" - -helps['sentinel incident-comment list'] = """ - type: command - short-summary: "Gets all incident comments." - examples: - - name: Get all incident comments. - text: |- - az sentinel incident-comment list --incident-id "{id}" --resource-group \ -"myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel incident-comment show'] = """ - type: command - short-summary: "Gets an incident comment." - examples: - - name: Get an incident comment. - text: |- - az sentinel incident-comment show --incident-comment-id "{comment-id}" \ ---incident-id "{id}" --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel incident-comment create'] = """ - type: command - short-summary: "Creates the incident comment." - examples: - - name: Creates an incident comment. - text: |- - az sentinel incident-comment create --message "Some message" --incident-comment-id \ -"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014" --incident-id "{id}" --resource-group "myRg" \ ---workspace-name "myWorkspace" -""" diff --git a/src/securityinsight/azext_sentinel/generated/_params.py b/src/securityinsight/azext_sentinel/generated/_params.py deleted file mode 100644 index 8cf66c08483..00000000000 --- a/src/securityinsight/azext_sentinel/generated/_params.py +++ /dev/null @@ -1,293 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=too-many-lines -# pylint: disable=too-many-statements - -from azure.cli.core.commands.parameters import ( - get_enum_type, - resource_group_name_type -) -from azext_sentinel.action import ( - AddFusionAlertRule, - AddMicrosoftSecurityIncidentCreationAlertRule, - AddScheduledAlertRule, - AddIncidentInfo, - AddAadDataConnector, - AddAatpDataConnector, - AddAscDataConnector, - AddAwsCloudTrailDataConnector, - AddMcasDataConnector, - AddMdatpDataConnector, - AddOfficeDataConnector, - AddTiDataConnector, - AddLabels, - AddOwner -) - - -def load_arguments(self, _): - - with self.argument_context('sentinel alert-rule list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - - with self.argument_context('sentinel alert-rule show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('rule_id', type=str, help='Alert rule ID', id_part='child_name_1') - - with self.argument_context('sentinel alert-rule create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('rule_id', type=str, help='Alert rule ID') - c.argument('action_id', type=str, help='Action ID') - c.argument('etag', type=str, help='Etag of the azure resource') - c.argument('logic_app_resource_id', type=str, help='Logic App Resource Id, /subscriptions/{my-subscription}/res' - 'ourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my-workflow-id}.') - c.argument('trigger_uri', type=str, help='Logic App Callback URL for this specific workflow.') - c.argument('fusion_alert_rule', action=AddFusionAlertRule, nargs='*', help='Represents Fusion alert rule.', - arg_group='AlertRule') - c.argument('microsoft_security_incident_creation_alert_rule', - action=AddMicrosoftSecurityIncidentCreationAlertRule, nargs='*', help='Represents ' - 'MicrosoftSecurityIncidentCreation rule.', arg_group='AlertRule') - c.argument('scheduled_alert_rule', action=AddScheduledAlertRule, nargs='*', help='Represents scheduled alert ' - 'rule.', arg_group='AlertRule') - - with self.argument_context('sentinel alert-rule update') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('rule_id', type=str, help='Alert rule ID', id_part='child_name_1') - c.argument('fusion_alert_rule', action=AddFusionAlertRule, nargs='*', help='Represents Fusion alert rule.', - arg_group='AlertRule') - c.argument('microsoft_security_incident_creation_alert_rule', - action=AddMicrosoftSecurityIncidentCreationAlertRule, nargs='*', help='Represents ' - 'MicrosoftSecurityIncidentCreation rule.', arg_group='AlertRule') - c.argument('scheduled_alert_rule', action=AddScheduledAlertRule, nargs='*', help='Represents scheduled alert ' - 'rule.', arg_group='AlertRule') - - with self.argument_context('sentinel alert-rule delete') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('rule_id', type=str, help='Alert rule ID', id_part='child_name_1') - c.argument('action_id', type=str, help='Action ID', id_part='child_name_2') - - with self.argument_context('sentinel alert-rule get-action') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('rule_id', type=str, help='Alert rule ID', id_part='child_name_1') - c.argument('action_id', type=str, help='Action ID', id_part='child_name_2') - - with self.argument_context('sentinel action list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('rule_id', type=str, help='Alert rule ID') - - with self.argument_context('sentinel alert-rule-template list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - - with self.argument_context('sentinel alert-rule-template show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('alert_rule_template_id', type=str, help='Alert rule template ID', id_part='child_name_1') - - with self.argument_context('sentinel bookmark list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - - with self.argument_context('sentinel bookmark show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('bookmark_id', type=str, help='Bookmark ID', id_part='child_name_1') - - with self.argument_context('sentinel bookmark create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('bookmark_id', type=str, help='Bookmark ID') - c.argument('etag', type=str, help='Etag of the azure resource') - c.argument('created', help='The time the bookmark was created') - c.argument('display_name', type=str, help='The display name of the bookmark') - c.argument('labels', nargs='*', help='List of labels relevant to this bookmark') - c.argument('notes', type=str, help='The notes of the bookmark') - c.argument('query_content', options_list=['-q'], type=str, help='The query of the bookmark.') - c.argument('query_result', type=str, help='The query result of the bookmark.') - c.argument('updated', help='The last time the bookmark was updated') - c.argument('incident_info', action=AddIncidentInfo, nargs='*', help='Describes an incident that relates to ' - 'bookmark') - c.argument('updated_by_object_id', help='The object id of the user.') - - with self.argument_context('sentinel bookmark update') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('bookmark_id', type=str, help='Bookmark ID', id_part='child_name_1') - c.argument('etag', type=str, help='Etag of the azure resource') - c.argument('created', help='The time the bookmark was created') - c.argument('display_name', type=str, help='The display name of the bookmark') - c.argument('labels', nargs='*', help='List of labels relevant to this bookmark') - c.argument('notes', type=str, help='The notes of the bookmark') - c.argument('query_content', options_list=['-q'], type=str, help='The query of the bookmark.') - c.argument('query_result', type=str, help='The query result of the bookmark.') - c.argument('updated', help='The last time the bookmark was updated') - c.argument('incident_info', action=AddIncidentInfo, nargs='*', help='Describes an incident that relates to ' - 'bookmark') - c.argument('updated_by_object_id', help='The object id of the user.') - - with self.argument_context('sentinel bookmark delete') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('bookmark_id', type=str, help='Bookmark ID', id_part='child_name_1') - - with self.argument_context('sentinel data-connector list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - - with self.argument_context('sentinel data-connector show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('data_connector_id', type=str, help='Connector ID', id_part='child_name_1') - - with self.argument_context('sentinel data-connector create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('data_connector_id', type=str, help='Connector ID') - c.argument('aad_data_connector', action=AddAadDataConnector, nargs='*', help='Represents AAD (Azure Active ' - 'Directory) data connector.', arg_group='DataConnector') - c.argument('aatp_data_connector', action=AddAatpDataConnector, nargs='*', help='Represents AATP (Azure ' - 'Advanced Threat Protection) data connector.', arg_group='DataConnector') - c.argument('asc_data_connector', action=AddAscDataConnector, nargs='*', help='Represents ASC (Azure Security ' - 'Center) data connector.', arg_group='DataConnector') - c.argument('aws_cloud_trail_data_connector', action=AddAwsCloudTrailDataConnector, nargs='*', help='Represents ' - 'Amazon Web Services CloudTrail data connector.', arg_group='DataConnector') - c.argument('mcas_data_connector', action=AddMcasDataConnector, nargs='*', help='Represents MCAS (Microsoft ' - 'Cloud App Security) data connector.', arg_group='DataConnector') - c.argument('mdatp_data_connector', action=AddMdatpDataConnector, nargs='*', help='Represents MDATP (Microsoft ' - 'Defender Advanced Threat Protection) data connector.', arg_group='DataConnector') - c.argument('office_data_connector', action=AddOfficeDataConnector, nargs='*', help='Represents office data ' - 'connector.', arg_group='DataConnector') - c.argument('ti_data_connector', action=AddTiDataConnector, nargs='*', help='Represents threat intelligence ' - 'data connector.', arg_group='DataConnector') - - with self.argument_context('sentinel data-connector update') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('data_connector_id', type=str, help='Connector ID', id_part='child_name_1') - c.argument('aad_data_connector', action=AddAadDataConnector, nargs='*', help='Represents AAD (Azure Active ' - 'Directory) data connector.', arg_group='DataConnector') - c.argument('aatp_data_connector', action=AddAatpDataConnector, nargs='*', help='Represents AATP (Azure ' - 'Advanced Threat Protection) data connector.', arg_group='DataConnector') - c.argument('asc_data_connector', action=AddAscDataConnector, nargs='*', help='Represents ASC (Azure Security ' - 'Center) data connector.', arg_group='DataConnector') - c.argument('aws_cloud_trail_data_connector', action=AddAwsCloudTrailDataConnector, nargs='*', help='Represents ' - 'Amazon Web Services CloudTrail data connector.', arg_group='DataConnector') - c.argument('mcas_data_connector', action=AddMcasDataConnector, nargs='*', help='Represents MCAS (Microsoft ' - 'Cloud App Security) data connector.', arg_group='DataConnector') - c.argument('mdatp_data_connector', action=AddMdatpDataConnector, nargs='*', help='Represents MDATP (Microsoft ' - 'Defender Advanced Threat Protection) data connector.', arg_group='DataConnector') - c.argument('office_data_connector', action=AddOfficeDataConnector, nargs='*', help='Represents office data ' - 'connector.', arg_group='DataConnector') - c.argument('ti_data_connector', action=AddTiDataConnector, nargs='*', help='Represents threat intelligence ' - 'data connector.', arg_group='DataConnector') - - with self.argument_context('sentinel data-connector delete') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('data_connector_id', type=str, help='Connector ID', id_part='child_name_1') - - with self.argument_context('sentinel incident list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results, based on a Boolean ' - 'condition. Optional.') - c.argument('orderby', type=str, help='Sorts the results. Optional.') - c.argument('top', type=int, help='Returns only the first n results. Optional.') - c.argument('skip_token', type=str, help='Skiptoken is only used if a previous operation returned a partial ' - 'result. If a previous response contains a nextLink element, the value of the nextLink element will ' - 'include a skiptoken parameter that specifies a starting point to use for subsequent calls. ' - 'Optional.') - - with self.argument_context('sentinel incident show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('incident_id', type=str, help='Incident ID', id_part='child_name_1') - - with self.argument_context('sentinel incident create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('incident_id', type=str, help='Incident ID') - c.argument('etag', type=str, help='Etag of the azure resource') - c.argument('classification', arg_type=get_enum_type(['Undetermined', 'TruePositive', 'BenignPositive', '' - 'FalsePositive']), help='The reason the incident was ' - 'closed') - c.argument('classification_comment', type=str, help='Describes the reason the incident was closed') - c.argument('classification_reason', arg_type=get_enum_type(['SuspiciousActivity', 'SuspiciousButExpected', '' - 'IncorrectAlertLogic', 'InaccurateData']), help='' - 'The classification reason the incident was closed with') - c.argument('description', type=str, help='The description of the incident') - c.argument('first_activity_time_utc', help='The time of the first activity in the incident') - c.argument('labels', action=AddLabels, nargs='*', help='List of labels relevant to this incident') - c.argument('last_activity_time_utc', help='The time of the last activity in the incident') - c.argument('owner', action=AddOwner, nargs='*', help='Describes a user that the incident is assigned to') - c.argument('severity', arg_type=get_enum_type(['High', 'Medium', 'Low', 'Informational']), help='The severity ' - 'of the incident') - c.argument('status', arg_type=get_enum_type(['New', 'Active', 'Closed']), help='The status of the incident') - c.argument('title', type=str, help='The title of the incident') - - with self.argument_context('sentinel incident update') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('incident_id', type=str, help='Incident ID', id_part='child_name_1') - c.argument('etag', type=str, help='Etag of the azure resource') - c.argument('classification', arg_type=get_enum_type(['Undetermined', 'TruePositive', 'BenignPositive', '' - 'FalsePositive']), help='The reason the incident was ' - 'closed') - c.argument('classification_comment', type=str, help='Describes the reason the incident was closed') - c.argument('classification_reason', arg_type=get_enum_type(['SuspiciousActivity', 'SuspiciousButExpected', '' - 'IncorrectAlertLogic', 'InaccurateData']), help='' - 'The classification reason the incident was closed with') - c.argument('description', type=str, help='The description of the incident') - c.argument('first_activity_time_utc', help='The time of the first activity in the incident') - c.argument('labels', action=AddLabels, nargs='*', help='List of labels relevant to this incident') - c.argument('last_activity_time_utc', help='The time of the last activity in the incident') - c.argument('owner', action=AddOwner, nargs='*', help='Describes a user that the incident is assigned to') - c.argument('severity', arg_type=get_enum_type(['High', 'Medium', 'Low', 'Informational']), help='The severity ' - 'of the incident') - c.argument('status', arg_type=get_enum_type(['New', 'Active', 'Closed']), help='The status of the incident') - c.argument('title', type=str, help='The title of the incident') - - with self.argument_context('sentinel incident delete') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('incident_id', type=str, help='Incident ID', id_part='child_name_1') - - with self.argument_context('sentinel incident-comment list') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('incident_id', type=str, help='Incident ID') - c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results, based on a Boolean ' - 'condition. Optional.') - c.argument('orderby', type=str, help='Sorts the results. Optional.') - c.argument('top', type=int, help='Returns only the first n results. Optional.') - c.argument('skip_token', type=str, help='Skiptoken is only used if a previous operation returned a partial ' - 'result. If a previous response contains a nextLink element, the value of the nextLink element will ' - 'include a skiptoken parameter that specifies a starting point to use for subsequent calls. ' - 'Optional.') - - with self.argument_context('sentinel incident-comment show') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('incident_id', type=str, help='Incident ID', id_part='child_name_1') - c.argument('incident_comment_id', type=str, help='Incident comment ID', id_part='child_name_2') - - with self.argument_context('sentinel incident-comment create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('incident_id', type=str, help='Incident ID') - c.argument('incident_comment_id', type=str, help='Incident comment ID') - c.argument('message', type=str, help='The comment message') diff --git a/src/securityinsight/azext_sentinel/generated/action.py b/src/securityinsight/azext_sentinel/generated/action.py deleted file mode 100644 index 6fa9f30cb9b..00000000000 --- a/src/securityinsight/azext_sentinel/generated/action.py +++ /dev/null @@ -1,433 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=protected-access - -import argparse -from collections import defaultdict -from knack.util import CLIError - - -class AddFusionAlertRule(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.fusion_alert_rule = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'alert-rule-template-name': - d['alert_rule_template_name'] = v[0] - elif kl == 'enabled': - d['enabled'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'Fusion' - return d - - -class AddMicrosoftSecurityIncidentCreationAlertRule(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.microsoft_security_incident_creation_alert_rule = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'display-names-filter': - d['display_names_filter'] = v - elif kl == 'display-names-exclude-filter': - d['display_names_exclude_filter'] = v - elif kl == 'product-filter': - d['product_filter'] = v[0] - elif kl == 'severities-filter': - d['severities_filter'] = v - elif kl == 'alert-rule-template-name': - d['alert_rule_template_name'] = v[0] - elif kl == 'description': - d['description'] = v[0] - elif kl == 'display-name': - d['display_name'] = v[0] - elif kl == 'enabled': - d['enabled'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'MicrosoftSecurityIncidentCreation' - return d - - -class AddScheduledAlertRule(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.scheduled_alert_rule = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'query': - d['query'] = v[0] - elif kl == 'query-frequency': - d['query_frequency'] = v[0] - elif kl == 'query-period': - d['query_period'] = v[0] - elif kl == 'severity': - d['severity'] = v[0] - elif kl == 'trigger-operator': - d['trigger_operator'] = v[0] - elif kl == 'trigger-threshold': - d['trigger_threshold'] = v[0] - elif kl == 'alert-rule-template-name': - d['alert_rule_template_name'] = v[0] - elif kl == 'description': - d['description'] = v[0] - elif kl == 'display-name': - d['display_name'] = v[0] - elif kl == 'enabled': - d['enabled'] = v[0] - elif kl == 'suppression-duration': - d['suppression_duration'] = v[0] - elif kl == 'suppression-enabled': - d['suppression_enabled'] = v[0] - elif kl == 'tactics': - d['tactics'] = v - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'Scheduled' - return d - - -class AddIncidentInfo(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.incident_info = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'incident-id': - d['incident_id'] = v[0] - elif kl == 'severity': - d['severity'] = v[0] - elif kl == 'title': - d['title'] = v[0] - elif kl == 'relation-name': - d['relation_name'] = v[0] - return d - - -class AddAadDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.aad_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'tenant-id': - d['tenant_id'] = v[0] - elif kl == 'state': - d['state'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'AzureActiveDirectory' - return d - - -class AddAatpDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.aatp_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'tenant-id': - d['tenant_id'] = v[0] - elif kl == 'state': - d['state'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'AzureAdvancedThreatProtection' - return d - - -class AddAscDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.asc_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'subscription-id': - d['subscription_id'] = v[0] - elif kl == 'state': - d['state'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'AzureSecurityCenter' - return d - - -class AddAwsCloudTrailDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.aws_cloud_trail_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'aws-role-arn': - d['aws_role_arn'] = v[0] - elif kl == 'state': - d['state'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'AmazonWebServicesCloudTrail' - return d - - -class AddMcasDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.mcas_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'tenant-id': - d['tenant_id'] = v[0] - elif kl == 'state-data-types-alerts-state': - d['state_data_types_alerts_state'] = v[0] - elif kl == 'state-data-types-discovery-logs-state': - d['state_data_types_discovery_logs_state'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'MicrosoftCloudAppSecurity' - return d - - -class AddMdatpDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.mdatp_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'tenant-id': - d['tenant_id'] = v[0] - elif kl == 'state': - d['state'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'MicrosoftDefenderAdvancedThreatProtection' - return d - - -class AddOfficeDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.office_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = { - 'dataTypes': { - 'sharePoint': {'state': 'Disabled'}, - 'exchange': {'state': 'Disabled'} - } - } - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'tenant-id': - d['tenantId'] = v[0] - elif kl == 'sharepoint-enabled': - d['dataTypes']['sharePoint']['state'] = 'Enabled' - elif kl == 'exchange-enabled': - d['dataTypes']['exchange']['state'] = 'Enabled' - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'Office365' - print(d) - return d - - -class AddTiDataConnector(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.ti_data_connector = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'tenant-id': - d['tenant_id'] = v[0] - elif kl == 'state': - d['state'] = v[0] - elif kl == 'etag': - d['etag'] = v[0] - d['kind'] = 'ThreatIntelligence' - return d - - -class AddLabels(argparse._AppendAction): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - super(AddLabels, self).__call__(parser, namespace, action, option_string) - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'label-name': - d['label_name'] = v[0] - return d - - -class AddOwner(argparse.Action): - def __call__(self, parser, namespace, values, option_string=None): - action = self.get_action(values, option_string) - namespace.owner = action - - def get_action(self, values, option_string): # pylint: disable=no-self-use - try: - properties = defaultdict(list) - for (k, v) in (x.split('=', 1) for x in values): - properties[k].append(v) - properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) - d = {} - for k in properties: - kl = k.lower() - v = properties[k] - if kl == 'email': - d['email'] = v[0] - elif kl == 'assigned-to': - d['assigned_to'] = v[0] - elif kl == 'object-id': - d['object_id'] = v[0] - elif kl == 'user-principal-name': - d['user_principal_name'] = v[0] - return d diff --git a/src/securityinsight/azext_sentinel/generated/commands.py b/src/securityinsight/azext_sentinel/generated/commands.py deleted file mode 100644 index f8dac3f83d6..00000000000 --- a/src/securityinsight/azext_sentinel/generated/commands.py +++ /dev/null @@ -1,100 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=too-many-statements -# pylint: disable=too-many-locals - -from azure.cli.core.commands import CliCommandType - - -def load_command_table(self, _): - - from azext_sentinel.generated._client_factory import cf_alert_rule - sentinel_alert_rule = CliCommandType( - operations_tmpl='azext_sentinel.vendored_sdks.securityinsight.operations._alert_rule_operations#AlertRuleOperat' - 'ions.{}', - client_factory=cf_alert_rule) - with self.command_group('sentinel alert-rule', sentinel_alert_rule, client_factory=cf_alert_rule, - is_experimental=True) as g: - g.custom_command('list', 'sentinel_alert_rule_list') - g.custom_show_command('show', 'sentinel_alert_rule_show') - g.custom_command('create', 'sentinel_alert_rule_create') - g.generic_update_command('update', setter_arg_name='alert_rule', - custom_func_name='sentinel_alert_rule_update') - g.custom_command('delete', 'sentinel_alert_rule_delete', confirmation=True) - g.custom_command('get-action', 'sentinel_alert_rule_get_action') - - from azext_sentinel.generated._client_factory import cf_action - sentinel_action = CliCommandType( - operations_tmpl='azext_sentinel.vendored_sdks.securityinsight.operations._action_operations#ActionOperations.{}' - '', - client_factory=cf_action) - with self.command_group('sentinel action', sentinel_action, client_factory=cf_action, is_experimental=True) as g: - g.custom_command('list', 'sentinel_action_list') - - from azext_sentinel.generated._client_factory import cf_alert_rule_template - sentinel_alert_rule_template = CliCommandType( - operations_tmpl='azext_sentinel.vendored_sdks.securityinsight.operations._alert_rule_template_operations#AlertR' - 'uleTemplateOperations.{}', - client_factory=cf_alert_rule_template) - with self.command_group('sentinel alert-rule-template', sentinel_alert_rule_template, - client_factory=cf_alert_rule_template, is_experimental=True) as g: - g.custom_command('list', 'sentinel_alert_rule_template_list') - g.custom_show_command('show', 'sentinel_alert_rule_template_show') - - from azext_sentinel.generated._client_factory import cf_bookmark - sentinel_bookmark = CliCommandType( - operations_tmpl='azext_sentinel.vendored_sdks.securityinsight.operations._bookmark_operations#BookmarkOperation' - 's.{}', - client_factory=cf_bookmark) - with self.command_group('sentinel bookmark', sentinel_bookmark, client_factory=cf_bookmark, - is_experimental=True) as g: - g.custom_command('list', 'sentinel_bookmark_list') - g.custom_show_command('show', 'sentinel_bookmark_show') - g.custom_command('create', 'sentinel_bookmark_create') - g.custom_command('update', 'sentinel_bookmark_update') - g.custom_command('delete', 'sentinel_bookmark_delete', confirmation=True) - - from azext_sentinel.generated._client_factory import cf_data_connector - sentinel_data_connector = CliCommandType( - operations_tmpl='azext_sentinel.vendored_sdks.securityinsight.operations._data_connector_operations#DataConnect' - 'orOperations.{}', - client_factory=cf_data_connector) - with self.command_group('sentinel data-connector', sentinel_data_connector, client_factory=cf_data_connector, - is_experimental=True) as g: - g.custom_command('list', 'sentinel_data_connector_list') - g.custom_show_command('show', 'sentinel_data_connector_show') - g.custom_command('create', 'sentinel_data_connector_create') - g.generic_update_command('update', setter_arg_name='data_connector', custom_func_name='' - 'sentinel_data_connector_update') - g.custom_command('delete', 'sentinel_data_connector_delete', confirmation=True) - - from azext_sentinel.generated._client_factory import cf_incident - sentinel_incident = CliCommandType( - operations_tmpl='azext_sentinel.vendored_sdks.securityinsight.operations._incident_operations#IncidentOperation' - 's.{}', - client_factory=cf_incident) - with self.command_group('sentinel incident', sentinel_incident, client_factory=cf_incident, - is_experimental=True) as g: - g.custom_command('list', 'sentinel_incident_list') - g.custom_show_command('show', 'sentinel_incident_show') - g.custom_command('create', 'sentinel_incident_create') - g.custom_command('update', 'sentinel_incident_update') - g.custom_command('delete', 'sentinel_incident_delete', confirmation=True) - - from azext_sentinel.generated._client_factory import cf_incident_comment - sentinel_incident_comment = CliCommandType( - operations_tmpl='azext_sentinel.vendored_sdks.securityinsight.operations._incident_comment_operations#IncidentC' - 'ommentOperations.{}', - client_factory=cf_incident_comment) - with self.command_group('sentinel incident-comment', sentinel_incident_comment, client_factory=cf_incident_comment, - is_experimental=True) as g: - g.custom_command('list', 'sentinel_incident_comment_list') - g.custom_show_command('show', 'sentinel_incident_comment_show') - g.custom_command('create', 'sentinel_incident_comment_create') diff --git a/src/securityinsight/azext_sentinel/generated/custom.py b/src/securityinsight/azext_sentinel/generated/custom.py deleted file mode 100644 index f0bd94de342..00000000000 --- a/src/securityinsight/azext_sentinel/generated/custom.py +++ /dev/null @@ -1,433 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=too-many-lines -# pylint: disable=unused-argument - -from knack.util import CLIError - - -def sentinel_alert_rule_list(client, - resource_group_name, - workspace_name): - return client.list(resource_group_name=resource_group_name, - workspace_name=workspace_name) - - -def sentinel_alert_rule_show(client, - resource_group_name, - workspace_name, - rule_id): - return client.get(resource_group_name=resource_group_name, - workspace_name=workspace_name, - rule_id=rule_id) - - -def sentinel_alert_rule_create(client, - resource_group_name, - workspace_name, - rule_id, - action_id=None, - etag=None, - logic_app_resource_id=None, - trigger_uri=None, - fusion_alert_rule=None, - microsoft_security_incident_creation_alert_rule=None, - scheduled_alert_rule=None): - all_alert_rule = [] - if fusion_alert_rule is not None: - all_alert_rule.append(fusion_alert_rule) - if microsoft_security_incident_creation_alert_rule is not None: - all_alert_rule.append(microsoft_security_incident_creation_alert_rule) - if scheduled_alert_rule is not None: - all_alert_rule.append(scheduled_alert_rule) - if len(all_alert_rule) > 1: - raise CLIError('at most one of fusion_alert_rule, microsoft_security_incident_creation_alert_rule, ' - 'scheduled_alert_rule is needed for alert_rule!') - alert_rule = all_alert_rule[0] if len(all_alert_rule) == 1 else None - if resource_group_name and workspace_name is not None and rule_id is not None and action_id is not None: - return client.create_or_update_action(resource_group_name=resource_group_name, - workspace_name=workspace_name, - rule_id=rule_id, - action_id=action_id, - etag=etag, - logic_app_resource_id=logic_app_resource_id, - trigger_uri=trigger_uri) - return client.create_or_update(resource_group_name=resource_group_name, - workspace_name=workspace_name, - rule_id=rule_id, - alert_rule=alert_rule) - - -def sentinel_alert_rule_update(instance, - resource_group_name, - workspace_name, - rule_id, - fusion_alert_rule=None, - microsoft_security_incident_creation_alert_rule=None, - scheduled_alert_rule=None): - return instance - - -def sentinel_alert_rule_delete(client, - resource_group_name, - workspace_name, - rule_id, - action_id=None): - if resource_group_name and workspace_name is not None and rule_id is not None and action_id is not None: - return client.delete_action(resource_group_name=resource_group_name, - workspace_name=workspace_name, - rule_id=rule_id, - action_id=action_id) - return client.delete(resource_group_name=resource_group_name, - workspace_name=workspace_name, - rule_id=rule_id) - - -def sentinel_alert_rule_get_action(client, - resource_group_name, - workspace_name, - rule_id, - action_id): - return client.get_action(resource_group_name=resource_group_name, - workspace_name=workspace_name, - rule_id=rule_id, - action_id=action_id) - - -def sentinel_action_list(client, - resource_group_name, - workspace_name, - rule_id): - return client.list_by_alert_rule(resource_group_name=resource_group_name, - workspace_name=workspace_name, - rule_id=rule_id) - - -def sentinel_alert_rule_template_list(client, - resource_group_name, - workspace_name): - return client.list(resource_group_name=resource_group_name, - workspace_name=workspace_name) - - -def sentinel_alert_rule_template_show(client, - resource_group_name, - workspace_name, - alert_rule_template_id): - return client.get(resource_group_name=resource_group_name, - workspace_name=workspace_name, - alert_rule_template_id=alert_rule_template_id) - - -def sentinel_bookmark_list(client, - resource_group_name, - workspace_name): - return client.list(resource_group_name=resource_group_name, - workspace_name=workspace_name) - - -def sentinel_bookmark_show(client, - resource_group_name, - workspace_name, - bookmark_id): - return client.get(resource_group_name=resource_group_name, - workspace_name=workspace_name, - bookmark_id=bookmark_id) - - -def sentinel_bookmark_create(client, - resource_group_name, - workspace_name, - bookmark_id, - etag=None, - created=None, - display_name=None, - labels=None, - notes=None, - query_content=None, - query_result=None, - updated=None, - incident_info=None, - updated_by_object_id=None): - return client.create_or_update(resource_group_name=resource_group_name, - workspace_name=workspace_name, - bookmark_id=bookmark_id, - etag=etag, - created=created, - display_name=display_name, - labels=labels, - notes=notes, - query=query_content, - query_result=query_result, - updated=updated, - incident_info=incident_info, - object_id=updated_by_object_id) - - -def sentinel_bookmark_update(client, - resource_group_name, - workspace_name, - bookmark_id, - etag=None, - created=None, - display_name=None, - labels=None, - notes=None, - query_content=None, - query_result=None, - updated=None, - incident_info=None, - updated_by_object_id=None): - return client.create_or_update(resource_group_name=resource_group_name, - workspace_name=workspace_name, - bookmark_id=bookmark_id, - etag=etag, - created=created, - display_name=display_name, - labels=labels, - notes=notes, - query=query_content, - query_result=query_result, - updated=updated, - incident_info=incident_info, - object_id=updated_by_object_id) - - -def sentinel_bookmark_delete(client, - resource_group_name, - workspace_name, - bookmark_id): - return client.delete(resource_group_name=resource_group_name, - workspace_name=workspace_name, - bookmark_id=bookmark_id) - - -def sentinel_data_connector_list(client, - resource_group_name, - workspace_name): - return client.list(resource_group_name=resource_group_name, - workspace_name=workspace_name) - - -def sentinel_data_connector_show(client, - resource_group_name, - workspace_name, - data_connector_id): - return client.get(resource_group_name=resource_group_name, - workspace_name=workspace_name, - data_connector_id=data_connector_id) - - -def sentinel_data_connector_create(client, - resource_group_name, - workspace_name, - data_connector_id, - aad_data_connector=None, - aatp_data_connector=None, - asc_data_connector=None, - aws_cloud_trail_data_connector=None, - mcas_data_connector=None, - mdatp_data_connector=None, - office_data_connector=None, - ti_data_connector=None): - all_data_connector = [] - if aad_data_connector is not None: - all_data_connector.append(aad_data_connector) - if aatp_data_connector is not None: - all_data_connector.append(aatp_data_connector) - if asc_data_connector is not None: - all_data_connector.append(asc_data_connector) - if aws_cloud_trail_data_connector is not None: - all_data_connector.append(aws_cloud_trail_data_connector) - if mcas_data_connector is not None: - all_data_connector.append(mcas_data_connector) - if mdatp_data_connector is not None: - all_data_connector.append(mdatp_data_connector) - if office_data_connector is not None: - all_data_connector.append(office_data_connector) - if ti_data_connector is not None: - all_data_connector.append(ti_data_connector) - if len(all_data_connector) > 1: - raise CLIError('at most one of aad_data_connector, aatp_data_connector, asc_data_connector, ' - 'aws_cloud_trail_data_connector, mcas_data_connector, mdatp_data_connector, ' - 'office_data_connector, ti_data_connector is needed for data_connector!') - if len(all_data_connector) != 1: - raise CLIError('data_connector is required. but none of aad_data_connector, aatp_data_connector, ' - 'asc_data_connector, aws_cloud_trail_data_connector, mcas_data_connector, mdatp_data_connector, ' - 'office_data_connector, ti_data_connector is provided!') - data_connector = all_data_connector[0] if len(all_data_connector) == 1 else None - return client.create_or_update(resource_group_name=resource_group_name, - workspace_name=workspace_name, - data_connector_id=data_connector_id, - data_connector=data_connector) - - -def sentinel_data_connector_update(instance, - resource_group_name, - workspace_name, - data_connector_id, - aad_data_connector=None, - aatp_data_connector=None, - asc_data_connector=None, - aws_cloud_trail_data_connector=None, - mcas_data_connector=None, - mdatp_data_connector=None, - office_data_connector=None, - ti_data_connector=None): - return instance - - -def sentinel_data_connector_delete(client, - resource_group_name, - workspace_name, - data_connector_id): - return client.delete(resource_group_name=resource_group_name, - workspace_name=workspace_name, - data_connector_id=data_connector_id) - - -def sentinel_incident_list(client, - resource_group_name, - workspace_name, - filter_=None, - orderby=None, - top=None, - skip_token=None): - return client.list(resource_group_name=resource_group_name, - workspace_name=workspace_name, - filter=filter_, - orderby=orderby, - top=top, - skip_token=skip_token) - - -def sentinel_incident_show(client, - resource_group_name, - workspace_name, - incident_id): - return client.get(resource_group_name=resource_group_name, - workspace_name=workspace_name, - incident_id=incident_id) - - -def sentinel_incident_create(client, - resource_group_name, - workspace_name, - incident_id, - etag=None, - classification=None, - classification_comment=None, - classification_reason=None, - description=None, - first_activity_time_utc=None, - labels=None, - last_activity_time_utc=None, - owner=None, - severity=None, - status=None, - title=None): - return client.create_or_update(resource_group_name=resource_group_name, - workspace_name=workspace_name, - incident_id=incident_id, - etag=etag, - classification=classification, - classification_comment=classification_comment, - classification_reason=classification_reason, - description=description, - first_activity_time_utc=first_activity_time_utc, - labels=labels, - last_activity_time_utc=last_activity_time_utc, - owner=owner, - severity=severity, - status=status, - title=title) - - -def sentinel_incident_update(client, - resource_group_name, - workspace_name, - incident_id, - etag=None, - classification=None, - classification_comment=None, - classification_reason=None, - description=None, - first_activity_time_utc=None, - labels=None, - last_activity_time_utc=None, - owner=None, - severity=None, - status=None, - title=None): - return client.create_or_update(resource_group_name=resource_group_name, - workspace_name=workspace_name, - incident_id=incident_id, - etag=etag, - classification=classification, - classification_comment=classification_comment, - classification_reason=classification_reason, - description=description, - first_activity_time_utc=first_activity_time_utc, - labels=labels, - last_activity_time_utc=last_activity_time_utc, - owner=owner, - severity=severity, - status=status, - title=title) - - -def sentinel_incident_delete(client, - resource_group_name, - workspace_name, - incident_id): - return client.delete(resource_group_name=resource_group_name, - workspace_name=workspace_name, - incident_id=incident_id) - - -def sentinel_incident_comment_list(client, - resource_group_name, - workspace_name, - incident_id, - filter_=None, - orderby=None, - top=None, - skip_token=None): - return client.list_by_incident(resource_group_name=resource_group_name, - workspace_name=workspace_name, - incident_id=incident_id, - filter=filter_, - orderby=orderby, - top=top, - skip_token=skip_token) - - -def sentinel_incident_comment_show(client, - resource_group_name, - workspace_name, - incident_id, - incident_comment_id): - return client.get(resource_group_name=resource_group_name, - workspace_name=workspace_name, - incident_id=incident_id, - incident_comment_id=incident_comment_id) - - -def sentinel_incident_comment_create(client, - resource_group_name, - workspace_name, - incident_id, - incident_comment_id, - message=None): - return client.create_comment(resource_group_name=resource_group_name, - workspace_name=workspace_name, - incident_id=incident_id, - incident_comment_id=incident_comment_id, - message=message) diff --git a/src/securityinsight/azext_sentinel/manual/__init__.py b/src/securityinsight/azext_sentinel/manual/__init__.py deleted file mode 100644 index c9cfdc73e77..00000000000 --- a/src/securityinsight/azext_sentinel/manual/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- - -__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/src/securityinsight/azext_sentinel/manual/_help.py b/src/securityinsight/azext_sentinel/manual/_help.py deleted file mode 100644 index cba8105ea2c..00000000000 --- a/src/securityinsight/azext_sentinel/manual/_help.py +++ /dev/null @@ -1,181 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- -# pylint: disable=too-many-lines - -from knack.help_files import helps - -helps['sentinel'] = """ - type: group - short-summary: Manage Security Insight -""" - -helps['sentinel data-connector create'] = """ - type: command - short-summary: "Create the data connector." - parameters: - - name: --aad-data-connector - short-summary: "Represents AAD (Azure Active Directory) data connector." - long-summary: | - Usage: --aad-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aatp-data-connector - short-summary: "Represents Microsoft Defender for Identity data connector." - long-summary: | - Usage: --aatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --asc-data-connector - short-summary: "Represents Microsoft Defender for Cloud data connector." - long-summary: | - Usage: --asc-data-connector subscription-id=XX state=XX kind=XX etag=XX - - subscription-id: The subscription id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aws-cloud-trail-data-connector - short-summary: "Represents Amazon Web Services CloudTrail data connector." - long-summary: | - Usage: --aws-cloud-trail-data-connector aws-role-arn=XX state=XX kind=XX etag=XX - - aws-role-arn: The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access the Aws account. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mcas-data-connector - short-summary: "Represents Microsoft Defender for Cloud Apps data connector." - long-summary: | - Usage: --mcas-data-connector tenant-id=XX state-data-types-alerts-state=XX state-data-types-discovery-logs-\ -state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-alerts-state: Describe whether this data type connection is enabled or not. - state-data-types-discovery-logs-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mdatp-data-connector - short-summary: "Represents Microsoft Defender for Endpoint data connector." - long-summary: | - Usage: --mdatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --office-data-connector - short-summary: "Represents office data connector." - long-summary: | - Usage: --office-data-connector tenant-id=XX state-data-types-share-point-state=XX \ -state-data-types-exchange-state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-share-point-state: Describe whether this data type connection is enabled or not. - state-data-types-exchange-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --ti-data-connector - short-summary: "Represents threat intelligence data connector." - long-summary: | - Usage: --ti-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - examples: - - name: Creates or updates an Office365 data connector. - text: |- - az sentinel data-connector create --office-data-connector etag="{etag}" \ - tenant-id="{tenant-id}" --data-connector-id "{id}" --resource-group "myRg" --workspace-name "myWorkspace" -""" - -helps['sentinel data-connector update'] = """ - type: command - short-summary: "Update the data connector." - parameters: - - name: --aad-data-connector - short-summary: "Represents AAD (Azure Active Directory) data connector." - long-summary: | - Usage: --aad-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aatp-data-connector - short-summary: "Represents Microsoft Defender for Identity data connector." - long-summary: | - Usage: --aatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --asc-data-connector - short-summary: "Represents Microsoft Defender for Cloud data connector." - long-summary: | - Usage: --asc-data-connector subscription-id=XX state=XX kind=XX etag=XX - - subscription-id: The subscription id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --aws-cloud-trail-data-connector - short-summary: "Represents Amazon Web Services CloudTrail data connector." - long-summary: | - Usage: --aws-cloud-trail-data-connector aws-role-arn=XX state=XX kind=XX etag=XX - - aws-role-arn: The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access the Aws account. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mcas-data-connector - short-summary: "Represents Microsoft Defender for Cloud Apps data connector." - long-summary: | - Usage: --mcas-data-connector tenant-id=XX state-data-types-alerts-state=XX state-data-types-discovery-logs-\ -state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-alerts-state: Describe whether this data type connection is enabled or not. - state-data-types-discovery-logs-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --mdatp-data-connector - short-summary: "Represents Microsoft Defender for Endpoint data connector." - long-summary: | - Usage: --mdatp-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --office-data-connector - short-summary: "Represents office data connector." - long-summary: | - Usage: --office-data-connector tenant-id=XX state-data-types-share-point-state=XX \ -state-data-types-exchange-state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state-data-types-share-point-state: Describe whether this data type connection is enabled or not. - state-data-types-exchange-state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource - - name: --ti-data-connector - short-summary: "Represents threat intelligence data connector." - long-summary: | - Usage: --ti-data-connector tenant-id=XX state=XX kind=XX etag=XX - - tenant-id: The tenant id to connect to, and get the data from. - state: Describe whether this data type connection is enabled or not. - kind: Required. The data connector kind - etag: Etag of the azure resource -""" diff --git a/src/securityinsight/azext_sentinel/manual/_params.py b/src/securityinsight/azext_sentinel/manual/_params.py deleted file mode 100644 index fa718718d51..00000000000 --- a/src/securityinsight/azext_sentinel/manual/_params.py +++ /dev/null @@ -1,49 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=too-many-lines -# pylint: disable=too-many-statements - -from azure.cli.core.commands.parameters import resource_group_name_type -from azext_sentinel.action import AddIncidentInfo - - -def load_arguments(self, _): - - with self.argument_context('sentinel bookmark create') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.') - c.argument('bookmark_id', type=str, help='Bookmark ID') - c.argument('etag', type=str, help='Etag of the azure resource') - c.argument('created', help='The time the bookmark was created') - c.argument('display_name', type=str, help='The display name of the bookmark') - c.argument('labels', nargs='*', help='List of labels relevant to this bookmark') - c.argument('notes', type=str, help='The notes of the bookmark') - c.argument('query_content', options_list=['-q'], type=str, help='The query of the bookmark.') - c.argument('query_result', type=str, help='The query result of the bookmark.') - c.argument('updated', help='The last time the bookmark was updated') - c.argument('incident_info', action=AddIncidentInfo, nargs='*', help='Describes an incident that relates to ' - 'bookmark') - c.argument('updated_by_object_id', help='The object id of the user.') - - with self.argument_context('sentinel bookmark update') as c: - c.argument('resource_group_name', resource_group_name_type) - c.argument('workspace_name', type=str, help='The name of the workspace.', id_part='name') - c.argument('bookmark_id', type=str, help='Bookmark ID', id_part='child_name_1') - c.argument('etag', type=str, help='Etag of the azure resource') - c.argument('created', help='The time the bookmark was created') - c.argument('display_name', type=str, help='The display name of the bookmark') - c.argument('labels', nargs='*', help='List of labels relevant to this bookmark') - c.argument('notes', type=str, help='The notes of the bookmark') - c.argument('query_content', options_list=['-q'], type=str, help='The query of the bookmark.') - c.argument('query_result', type=str, help='The query result of the bookmark.') - c.argument('updated', help='The last time the bookmark was updated') - c.argument('incident_info', action=AddIncidentInfo, nargs='*', help='Describes an incident that relates to ' - 'bookmark') - c.argument('updated_by_object_id', help='The object id of the user.') diff --git a/src/securityinsight/azext_sentinel/tests/__init__.py b/src/securityinsight/azext_sentinel/tests/__init__.py index 50e0627daff..5757aea3175 100644 --- a/src/securityinsight/azext_sentinel/tests/__init__.py +++ b/src/securityinsight/azext_sentinel/tests/__init__.py @@ -1,114 +1,6 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. +# Licensed under the MIT License. See License.txt in the project root for license information. # -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- -import inspect -import logging -import os -import sys -import traceback -import datetime as dt - -from azure.core.exceptions import AzureError -from azure.cli.testsdk.exceptions import CliTestError, CliExecutionError, JMESPathCheckAssertionError - - -logger = logging.getLogger('azure.cli.testsdk') -logger.addHandler(logging.StreamHandler()) -__path__ = __import__('pkgutil').extend_path(__path__, __name__) -exceptions = [] -test_map = dict() -SUCCESSED = "successed" -FAILED = "failed" - - -def try_manual(func): - def import_manual_function(origin_func): - from importlib import import_module - decorated_path = inspect.getfile(origin_func) - module_path = __path__[0] - if not decorated_path.startswith(module_path): - raise Exception("Decorator can only be used in submodules!") - manual_path = os.path.join( - decorated_path[module_path.rfind(os.path.sep) + 1:]) - manual_file_path, manual_file_name = os.path.split(manual_path) - module_name, _ = os.path.splitext(manual_file_name) - manual_module = "..manual." + \ - ".".join(manual_file_path.split(os.path.sep) + [module_name, ]) - return getattr(import_module(manual_module, package=__name__), origin_func.__name__) - - def get_func_to_call(): - func_to_call = func - try: - func_to_call = import_manual_function(func) - func_to_call = import_manual_function(func) - logger.info("Found manual override for %s(...)", func.__name__) - except (ImportError, AttributeError): - pass - return func_to_call - - def wrapper(*args, **kwargs): - func_to_call = get_func_to_call() - logger.info("running %s()...", func.__name__) - try: - test_map[func.__name__] = dict() - test_map[func.__name__]["result"] = SUCCESSED - test_map[func.__name__]["error_message"] = "" - test_map[func.__name__]["error_stack"] = "" - test_map[func.__name__]["error_normalized"] = "" - test_map[func.__name__]["start_dt"] = dt.datetime.utcnow() - ret = func_to_call(*args, **kwargs) - except (AssertionError, AzureError, CliTestError, CliExecutionError, SystemExit, - JMESPathCheckAssertionError) as e: - test_map[func.__name__]["end_dt"] = dt.datetime.utcnow() - test_map[func.__name__]["result"] = FAILED - test_map[func.__name__]["error_message"] = str(e).replace("\r\n", " ").replace("\n", " ")[:500] - test_map[func.__name__]["error_stack"] = traceback.format_exc().replace( - "\r\n", " ").replace("\n", " ")[:500] - logger.info("--------------------------------------") - logger.info("step exception: %s", e) - logger.error("--------------------------------------") - logger.error("step exception in %s: %s", func.__name__, e) - logger.info(traceback.format_exc()) - exceptions.append((func.__name__, sys.exc_info())) - else: - test_map[func.__name__]["end_dt"] = dt.datetime.utcnow() - return ret - - if inspect.isclass(func): - return get_func_to_call() - return wrapper - - -def calc_coverage(filename): - filename = filename.split(".")[0] - coverage_name = filename + "_coverage.md" - with open(coverage_name, "w") as f: - f.write("|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt|\n") - total = len(test_map) - covered = 0 - for k, v in test_map.items(): - if not k.startswith("step_"): - total -= 1 - continue - if v["result"] == SUCCESSED: - covered += 1 - f.write("|{step_name}|{result}|{error_message}|{error_stack}|{error_normalized}|{start_dt}|" - "{end_dt}|\n".format(step_name=k, **v)) - f.write("Coverage: {}/{}\n".format(covered, total)) - print("Create coverage\n", file=sys.stderr) - - -def raise_if(): - if exceptions: - if len(exceptions) <= 1: - raise exceptions[0][1][1] - message = "{}\nFollowed with exceptions in other steps:\n".format(str(exceptions[0][1][1])) - message += "\n".join(["{}: {}".format(h[0], h[1][1]) for h in exceptions[1:]]) - raise exceptions[0][1][0](message).with_traceback(exceptions[0][1][2]) +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/securityinsight/azext_sentinel/tests/latest/__init__.py b/src/securityinsight/azext_sentinel/tests/latest/__init__.py index c9cfdc73e77..5757aea3175 100644 --- a/src/securityinsight/azext_sentinel/tests/latest/__init__.py +++ b/src/securityinsight/azext_sentinel/tests/latest/__init__.py @@ -1,12 +1,6 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. +# Licensed under the MIT License. See License.txt in the project root for license information. # -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- - -__path__ = __import__('pkgutil').extend_path(__path__, __name__) +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel.yaml deleted file mode 100644 index 2f31b1220ac..00000000000 --- a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel.yaml +++ /dev/null @@ -1,16789 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.22.0 - method: GET - uri: https://aka.ms/azure-cli-extension-index-v1 - response: - body: - string: '' - headers: - cache-control: - - max-age=0, no-cache, no-store - connection: - - keep-alive - content-length: - - '0' - date: - - Tue, 16 Mar 2021 09:03:09 GMT - expires: - - Tue, 16 Mar 2021 09:03:09 GMT - location: - - https://azcliextensionsync.blob.core.windows.net/index1/index.json - pragma: - - no-cache - request-context: - - appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 - server: - - Kestrel - strict-transport-security: - - max-age=31536000 ; includeSubDomains - x-powered-by: - - ASP.NET - x-response-cache-status: - - 'True' - status: - code: 301 - message: Moved Permanently -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.22.0 - method: GET - uri: https://azcliextensionsync.blob.core.windows.net/index1/index.json - response: - body: - string: "{\n \"extensions\": {\n \"account\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/account-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"account-0.1.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"account\",\n \"summary\": \"Microsoft Azure Command-Line - Tools SubscriptionClient Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"badd35099d52efc5d8c337eee3ce3958005e6bfbb0c83798a74458b90ea6046b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/account-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"account-0.2.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"account\",\n \"summary\": \"Microsoft Azure Command-Line - Tools SubscriptionClient Extension\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"a5613056e59cccaf4de58d9b108b0103f1b5a698345e6261b5bf83b3ff7637cf\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/account-0.2.1-py3-none-any.whl\",\n - \ \"filename\": \"account-0.2.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/account\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"account\",\n \"summary\": \"Microsoft Azure Command-Line - Tools SubscriptionClient Extension\",\n \"version\": \"0.2.1\"\n - \ },\n \"sha256Digest\": \"aba36f7a6f109d2bd1b1624ebcfdfd07a97e9a0b05b051d0af7d2ddb4d2f3c89\"\n - \ }\n ],\n \"acrtransfer\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/acrtransfer-1.0.0-py3-none-any.whl\",\n - \ \"filename\": \"acrtransfer-1.0.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"KraterDev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/acrtransfer\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"acrtransfer\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Acrtransfer Extension\",\n \"version\": \"1.0.0\"\n - \ },\n \"sha256Digest\": \"8fadff19781b34ab246a15a5c222fd6af53ea93f7778fbf933d1ccd082f3e362\"\n - \ }\n ],\n \"ad\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/ad-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"ad-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ad\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ad\",\n \"summary\": \"Microsoft Azure Command-Line Tools - DomainServicesResourceProvider Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"61df234e10759e9916c1d447ab02b82637de10fd97c31a17252e1f5183853883\"\n - \ }\n ],\n \"aem\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/aem-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"aem-0.1.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.30\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"yugangw@microsoft.com\",\n - \ \"name\": \"Yugang Wang\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.29.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aem\",\n \"summary\": \"Manage Azure Enhanced Monitoring - Extensions for SAP\",\n \"version\": \"0.1.1\"\n },\n - \ \"sha256Digest\": \"4ac7b8a4a89eda68d9d1a07cc5edd9b1a2b88421e2aa9a9e5b86a241f127775f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aem-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"aem-0.2.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.30\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"yugangw@microsoft.com\",\n - \ \"name\": \"Yugang Wang\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aem\",\n \"summary\": \"Manage Azure Enhanced Monitoring - Extensions for SAP\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"3ae49bb9f6b07cdaae840079c95e3d30c7e8bc27ba68d542e8e122cf4c14ce00\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aem-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"aem-0.2.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.19.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"yugangw@microsoft.com\",\n \"name\": - \"Yugang Wang\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aem\",\n \"summary\": \"Manage Azure Enhanced Monitoring - Extensions for SAP\",\n \"version\": \"0.2.1\"\n },\n - \ \"sha256Digest\": \"fb11a2b2b46c5bae831216969bc333a74c7f2a1f77fb8fae7427b911d27bdd41\"\n - \ }\n ],\n \"ai-examples\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"ai_examples-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.81\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"mabooe@microsoft.com\",\n \"name\": \"Matthew - Booe\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ai-examples\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ai-examples\",\n \"summary\": \"Add AI powered examples - to help content.\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"3bf63937122345abe28f6d6ddcac8c76491ae992910a6516bcb506e099e59f8b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"ai_examples-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.2.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"mabooe@microsoft.com\",\n \"name\": \"Matthew - Booe\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ai-examples\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ai-examples\",\n \"summary\": \"Add AI powered examples - to help content.\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"1e976b938f377e35618525154b46725fa66f17883a6fb233fb2f9d427a34421b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"ai_examples-0.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.2.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"mabooe@microsoft.com\",\n \"name\": \"Matthew - Booe\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ai-examples\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ai-examples\",\n \"summary\": \"Add AI powered examples - to help content.\",\n \"version\": \"0.2.1\"\n },\n - \ \"sha256Digest\": \"f45d5a3726924c8a7ae03f2fce1ea4c0221291cf5c815dd54bbc7cd867f1edc2\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-0.2.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"ai_examples-0.2.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.2.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"mabooe@microsoft.com\",\n \"name\": \"Matthew - Booe\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ai-examples\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ai-examples\",\n \"summary\": \"Add AI powered examples - to help content.\",\n \"version\": \"0.2.2\"\n },\n - \ \"sha256Digest\": \"6f5da7c8783d6c295b0bc290284609d2e4d60618e208529ec224cde6137254e7\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-0.2.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"ai_examples-0.2.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.2.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"mabooe@microsoft.com\",\n \"name\": \"Matthew - Booe\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ai-examples\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ai-examples\",\n \"summary\": \"Add AI powered examples - to help content.\",\n \"version\": \"0.2.3\"\n },\n - \ \"sha256Digest\": \"b4e02c629f2d5613553460c0c1923d638753b355cda5cd7e6ed11b573eaf6d01\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-0.2.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"ai_examples-0.2.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.2.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"mabooe@microsoft.com\",\n \"name\": \"Matthew - Booe\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ai-examples\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ai-examples\",\n \"summary\": \"Add AI powered examples - to help content.\",\n \"version\": \"0.2.4\"\n },\n - \ \"sha256Digest\": \"acb73b45ea35b909a0e25ca8757a1434d9ba109ebb3d54698850f5258e76132c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-0.2.5-py2.py3-none-any.whl\",\n - \ \"filename\": \"ai_examples-0.2.5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.2.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"mabooe@microsoft.com\",\n \"name\": \"Matthew - Booe\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ai-examples\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ai-examples\",\n \"summary\": \"Add AI powered examples - to help content.\",\n \"version\": \"0.2.5\"\n },\n - \ \"sha256Digest\": \"badbdf5fc2e0b4a85c4124d3fc92859b582adf8f30f5727440ce81942140099a\"\n - \ }\n ],\n \"aks-preview\": [\n {\n \"downloadUrl\": - \"https://azurecliaks.blob.core.windows.net/azure-cli-extension/aks_preview-0.4.35-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.35-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.35\"\n },\n - \ \"sha256Digest\": \"1f5eac9040d0c71650e349264e2161bef7c409ed037d3aa1241ea14f438f668a\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.36-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.36-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.36\"\n },\n - \ \"sha256Digest\": \"ea288c9a118ff077caba6110c395864f5c569d87ab395f02a1b11eefd00d3db6\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.37-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.37-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.37\"\n },\n - \ \"sha256Digest\": \"80d04f0d477b987dd462e6c1fb3fdbe7441c7ea1e3c75fb8593847d43b4a1e3b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.38-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.38-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.38\"\n },\n - \ \"sha256Digest\": \"1ded28b781b6be42b7006fa1a9784d33a90cef43690034dfd22f890519737570\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.39-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.39-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.39\"\n },\n - \ \"sha256Digest\": \"0fdcf5377dcd987221405a3cce324cf823d6f22f0cedd0ea6dc7e3b357be50c4\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.40-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.40-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.40\"\n },\n - \ \"sha256Digest\": \"ea0e3e82ed682134734460b8a6489c4e586cfca97706cc2037d9ace16491c286\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.41-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.41-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.41\"\n },\n - \ \"sha256Digest\": \"f2c6b7d062f3798400b274926e70123fe02ea8bd6a94f645bbf5c1474ce42e33\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.42-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.42-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.42\"\n },\n - \ \"sha256Digest\": \"8b7b592b640b4e46410cf97600106c277506403487e083a3496c33c634e63a06\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.43-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.43-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.43\"\n },\n - \ \"sha256Digest\": \"d351dc69bac520400beffaa571dccdd1fd37534c28309fa703ae59802d25cad5\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.44-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.44-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.44\"\n },\n - \ \"sha256Digest\": \"544d8dbab694fd5a2e04a1cac310e36881682e309c5df772f037451e3d7da51c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.45-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.45-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.45\"\n },\n - \ \"sha256Digest\": \"78b8536cf5b4349d47a3d1742d36514f99780ef8eff31336d8cb5dfc2e5c6080\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.47-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.47-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.47\"\n },\n - \ \"sha256Digest\": \"042b4acfecdc98059907abce1224c0865f1a61abd566fdc00e09a61436a52e27\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.49-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.49-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.49\"\n },\n - \ \"sha256Digest\": \"ccd0ec11a5fe08427547eb65111ab5c4bab5a59d2eb8d90173d3afa242260518\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.50-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.50-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.50\"\n },\n - \ \"sha256Digest\": \"4c00426e0e993c1a1205a9e09500025cadf287b5ba9c7248027bd91922a94688\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.51-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.51-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.51\"\n },\n - \ \"sha256Digest\": \"60db16bbf0149d80545044dbcb6a353822f867876b2a2547e584432775bd2bf7\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.52-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.52-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.52\"\n },\n - \ \"sha256Digest\": \"7ca39f7f93274649857adc648ae2c7f971d846a99917e6c42b514075d19eb93f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.53-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.53-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.53\"\n },\n - \ \"sha256Digest\": \"8a71bf3f14338831750c4d086be49b09dbc65e40aedbbc9bc8c558ca8dcb1b21\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.54-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.54-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.54\"\n },\n - \ \"sha256Digest\": \"a12d1907641e8212e0fb4e5f2a6eb85154252a2cd92a1539bf7b809c3b3aa840\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.55-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.55-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.55\"\n },\n - \ \"sha256Digest\": \"d6fa0ec6dfffa82941d9b93415b317f5aee42191c3f6193fbc5842f36822cc48\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.56-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.56-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.56\"\n },\n - \ \"sha256Digest\": \"b03984389a701e3bdfd0327a5428e2b73394daadca15c072173efd367cc7350e\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.57-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.57-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.57\"\n },\n - \ \"sha256Digest\": \"2f80ce7345874f6dc791c25b59bfccdd8d1df2fc5a58eee89c12d5bee36e09f2\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.58-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.58-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.58\"\n },\n - \ \"sha256Digest\": \"6c0e9eeff259f87d5db5deab028bd0c875103d4f94af3b4f872167330de14c2d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.59-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.59-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.59\"\n },\n - \ \"sha256Digest\": \"33f4caf55366ac68d8b914bf0d06b695ea90d37ea1a26752c5c4ce7345f60b7d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.60-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.60-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.60\"\n },\n - \ \"sha256Digest\": \"5baa213387c341a054dd8bc8a610f6f4ce0507d5fb1b96b13b0025c1cffb32a3\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.61-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.61-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.61\"\n },\n - \ \"sha256Digest\": \"e40833b2de89ae4884d0d88741ed6949d6a3b8e970c946e1ff4aed1ca5215b57\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.62-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.62-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.62\"\n },\n - \ \"sha256Digest\": \"41538793759b3aae977c3c0e6263a271b20ea130467d89c0dee19877198f0703\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.63-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.63-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.63\"\n },\n - \ \"sha256Digest\": \"ad7e574b1728797189c3e7185ff56e09e835086bd8876c4ef8cbdc54ffe1bc77\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.64-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.64-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.64\"\n },\n - \ \"sha256Digest\": \"507a299bddcb9199f589be12ad0761e03c8386ed2b4ca26782199e9c1f18bf49\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.65-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.65-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.65\"\n },\n - \ \"sha256Digest\": \"3c1d2f8daedab5d6e6adea1ee1f0222be411f64b2b960ce270feb2aa5955145f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.66-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.66-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.66\"\n },\n - \ \"sha256Digest\": \"ff66452ee3ea3bd31da976107f59006a11ada4e565328fdd56c36c876680b826\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.67-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.67-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.67\"\n },\n - \ \"sha256Digest\": \"1ae0b48d36ea387f25311bbd24f3170c98ed2e3fd1d2a8d07ed32759f0d92828\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.68-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.68-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.68\"\n },\n - \ \"sha256Digest\": \"a281f668a6a9aca42b30fe81914621cce0b7ed8b5dc6c011d299f81ab7c213aa\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.69-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.69-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.69\"\n },\n - \ \"sha256Digest\": \"d670fa4333caf852f4fb298cac96617f24101af8a01af505eb6730936280598a\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.70-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.70-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.70\"\n },\n - \ \"sha256Digest\": \"ae85aefb746698433f3175f87ab8f53c866aafd5f4d68d7277336e6bedeaffd8\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.71-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.71-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.71\"\n },\n - \ \"sha256Digest\": \"a122cfbcc9eb43d3e89e4a19e7f7641e95d6c3184e486bf790b6cdd088c98c79\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.72-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.72-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.72\"\n },\n - \ \"sha256Digest\": \"5d8ec45db6137170926753fe13f7afa8bc66b7b2d8e1af420bb4615b20b471bf\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.4.73-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.4.73-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.4.73\"\n },\n - \ \"sha256Digest\": \"d5cd928c82d0f65dbdefc651b2925bfba8710d14d9ecb2aab50ce3b6b461a3c5\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.5.0\"\n },\n - \ \"sha256Digest\": \"abb67e21afe5760a77dc90832ff3790da7041e19240b5e16829b27562b538917\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.5.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.5.1\"\n },\n - \ \"sha256Digest\": \"18a96ea0a9a7402715bd8896901e9b9b1a69ae40f8791755337178fdb3d2dd8b\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.5.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.5.2\"\n },\n - \ \"sha256Digest\": \"8a0d406acb640b0f9e2a5c2aba6ec1038aa14178e28cacb07f213127da4c7d4a\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.5.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.5.3\"\n },\n - \ \"sha256Digest\": \"a5ee5bd051e5e3909dd84593ff6c5ae9aa37eb4fd68ffa23db1011894c15ba9d\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.5.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.5.4\"\n },\n - \ \"sha256Digest\": \"9d917bb16488f2e0c07b8448675105ce726e836f3070cb1669394ce174893ec4\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-0.5.5-py2.py3-none-any.whl\",\n - \ \"filename\": \"aks_preview-0.5.5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"aks-preview\",\n \"summary\": \"Provides a preview for - upcoming AKS features\",\n \"version\": \"0.5.5\"\n },\n - \ \"sha256Digest\": \"17a72fbfd8ddafbe11cedadb5f2fd9b514d700ecc3854ece5c257c5c7e443182\"\n - \ }\n ],\n \"alertsmanagement\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/alertsmanagement-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"alertsmanagement-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"fey@microsoft.com\",\n \"name\": \"Github:qwordy\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"alertsmanagement\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Alerts Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"80ab78574debff9d8a9106bac3929cb552adea1371ea24f06073669fef708fcd\"\n - \ }\n ],\n \"alias\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/alias-0.5.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"alias-0.5.2-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.50.dev0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"t-chwong@microsoft.com\",\n \"name\": - \"Ernest Wong\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.29.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"alias\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"jinja2 (~=2.10)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for command aliases\",\n \"version\": \"0.5.2\"\n - \ },\n \"sha256Digest\": \"05f82d75026e780d27bd34a1be57f4ec0f425500d8ab4ee7e92fee07b944da33\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/alias-0.5.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"alias-0.5.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.31.dev0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"t-chwong@microsoft.com\",\n \"name\": - \"Ernest Wong\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"alias\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"jinja2 (~=2.10)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for command aliases\",\n \"version\": \"0.5.1\"\n - \ },\n \"sha256Digest\": \"81b9a7f1824bffcbd6e72680891476151dde868e030cdbf1bfd9135e1a8f3447\"\n - \ }\n ],\n \"application-insights\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"aleldeib@microsoft.com\",\n \"name\": - \"Ace Eldeib\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"application-insights\",\n \"summary\": \"Support for - managing Application Insights components and querying metrics, events, and - logs from such components.\",\n \"version\": \"0.1.3\"\n - \ },\n \"sha256Digest\": \"e5b8104da5d9f241a0599adeb3b1d2f910f00991f47d4f4c4095285de3a82f00\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"aleldeib@microsoft.com\",\n \"name\": - \"Ace Eldeib\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"application-insights\",\n \"summary\": \"Support for - managing Application Insights components and querying metrics, events, and - logs from such components.\",\n \"version\": \"0.1.4\"\n - \ },\n \"sha256Digest\": \"8b4ef4870b16a15fd81af385c3dff762e7af52333e212a68b5ec5f42663a6078\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.5-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"application-insights\",\n \"summary\": \"Support for - managing Application Insights components and querying metrics, events, and - logs from such components.\",\n \"version\": \"0.1.5\"\n - \ },\n \"sha256Digest\": \"effa0a37f1e8b2506d4849a2208d69f06a6683809e5da809bea63bd0f940da2f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.6-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"application-insights\",\n \"summary\": \"Support for - managing Application Insights components and querying metrics, events, and - logs from such components.\",\n \"version\": \"0.1.6\"\n - \ },\n \"sha256Digest\": \"271db7f2036eb245d3d00d5010468330e4ed97e7ed9756598e61a1960d37ac44\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.7-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.7-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"application-insights\",\n \"summary\": \"Support for - managing Application Insights components and querying metrics, events, and - logs from such components.\",\n \"version\": \"0.1.7\"\n - \ },\n \"sha256Digest\": \"6cb8c879d0960e6f41e1273c309253d7d7ca42089694fcf5e500d0a27ae89b59\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.8-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.8-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"application-insights\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"isodate (~=0.6.0)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for managing Application Insights components and querying metrics, - events, and logs from such components.\",\n \"version\": - \"0.1.8\"\n },\n \"sha256Digest\": \"f2f041e166f0b587e7c92252ef59e3bcecb8721f15c5e96f4496871a85a81f61\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.9-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.9-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"application-insights\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"isodate (~=0.6.0)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for managing Application Insights components and querying metrics, - events, and logs from such components.\",\n \"version\": - \"0.1.9\"\n },\n \"sha256Digest\": \"4ed371e2e02a31133bec6d416dd98c0de3e1ffbf56089e034abc36609c9dfa97\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.10-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.10-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"application-insights\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"isodate (~=0.6.0)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for managing Application Insights components and querying metrics, - events, and logs from such components.\",\n \"version\": - \"0.1.10\"\n },\n \"sha256Digest\": \"4f6ef254677ae32523f44af0f6b99bbdf6e5a8d1c894c7d2d72f4c8f8f359fb0\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.11-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.11-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"application-insights\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"isodate (~=0.6.0)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for managing Application Insights components and querying metrics, - events, and logs from such components.\",\n \"version\": - \"0.1.11\"\n },\n \"sha256Digest\": \"ffb9b4daf395966226786cc55bce2beff7d9a22ccec739cb21910ff03f582e90\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.12-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.12-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"application-insights\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"isodate (~=0.6.0)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for managing Application Insights components and querying metrics, - events, and logs from such components.\",\n \"version\": - \"0.1.12\"\n },\n \"sha256Digest\": \"94ecdd71a1007df791a193e9273e902c39caa53dc965823c019d41cd679ee27c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/application_insights-0.1.13-py2.py3-none-any.whl\",\n - \ \"filename\": \"application_insights-0.1.13-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.79\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/application-insights\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"application-insights\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"isodate (~=0.6.0)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for managing Application Insights components and querying metrics, - events, and logs from such components.\",\n \"version\": - \"0.1.13\"\n },\n \"sha256Digest\": \"b1d5d31cfbd8a75595943d7248e585d63d0a1c6b43c69febbd7162239af98933\"\n - \ }\n ],\n \"arcappliance\": [\n {\n \"downloadUrl\": - \"https://arcplatformcliextprod.blob.core.windows.net/arcappliance/arcappliance-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"arcappliance-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"arcplatform-core@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://msazure.visualstudio.com/AzureArcPlatform/_git/arcappliance-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"arcappliance\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"jsonschema (==3.2.0)\",\n \"kubernetes - (==11.0.0)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Arcappliance - Extension\",\n \"version\": \"0.1.1\"\n },\n - \ \"sha256Digest\": \"1df8467bc8b14890e7ca6e26a3702d0c4a81ef2f6d1c6a7e3ba931473b86aeab\"\n - \ },\n {\n \"downloadUrl\": \"https://arcplatformcliextprod.blob.core.windows.net/arcappliance/arcappliance-0.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"arcappliance-0.1.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"appliance@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://msazure.visualstudio.com/AzureArcPlatform/_git/arcappliance-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"arcappliance\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"jsonschema (==3.2.0)\",\n \"kubernetes - (==11.0.0)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Arcappliance - Extension\",\n \"version\": \"0.1.2\"\n },\n - \ \"sha256Digest\": \"80ef17a397fdd045850cbf7823c0eb8d7354290d409a095a5f708a1f837f2b09\"\n - \ }\n ],\n \"attestation\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/attestation-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"attestation-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/attestation\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"attestation\",\n \"summary\": \"Microsoft Azure Command-Line - Tools AttestationManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"1d4e9b832a3f50b33428d565478a2e655c81d49277c07dc909f1485b62ba5372\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/attestation-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"attestation-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/attestation\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"attestation\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"pyjwt (==1.7.1)\"\n ]\n - \ }\n ],\n \"summary\": - \"Microsoft Azure Command-Line Tools AttestationManagementClient Extension\",\n - \ \"version\": \"0.2.0\"\n },\n \"sha256Digest\": - \"895328b45d8bcfe45e4937885572cd1f39d23bc49f88314713a462bf1a367cc9\"\n }\n - \ ],\n \"automation\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/automation-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"automation-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.13.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/automation\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"automation\",\n \"summary\": \"Microsoft Azure Command-Line - Tools AutomationClient Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"779f996ffab9fd76438d8938216fcbeb6f9aecad3a23bd2097731182607e4d7a\"\n - \ }\n ],\n \"azure-batch-cli-extensions\": [\n {\n - \ \"downloadUrl\": \"https://github.com/Azure/azure-batch-cli-extensions/releases/download/azure-batch-cli-extensions-2.5.3/azure_batch_cli_extensions-2.5.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_batch_cli_extensions-2.5.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.maxCliCoreVersion\": - \"2.0.58\",\n \"azext.minCliCoreVersion\": \"2.0.24\",\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-batch-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-batch-cli-extensions\",\n - \ \"run_requires\": [\n {\n \"requires\": - [\n \"azure-batch-extensions (<4.1,>=4.0.0)\",\n - \ \"pycparser (==2.18)\"\n ]\n - \ }\n ],\n \"summary\": - \"Additional commands for working with Azure Batch service\",\n \"version\": - \"2.5.3\"\n },\n \"sha256Digest\": \"cc30b985edd5de0233d4fd283cfa29390d119c223b2f819ca36e071f759d5485\"\n - \ },\n {\n \"downloadUrl\": \"https://github.com/Azure/azure-batch-cli-extensions/releases/download/azure-batch-cli-extensions-3.0.4/azure_batch_cli_extensions-3.0.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_batch_cli_extensions-3.0.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.maxCliCoreVersion\": - \"2.1.0\",\n \"azext.minCliCoreVersion\": \"2.0.59\",\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-batch-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-batch-cli-extensions\",\n - \ \"run_requires\": [\n {\n \"requires\": - [\n \"azure-batch-extensions (<5.1,>=5.0.0)\",\n - \ \"pycparser (==2.18)\"\n ]\n - \ }\n ],\n \"summary\": - \"Additional commands for working with Azure Batch service\",\n \"version\": - \"3.0.4\"\n },\n \"sha256Digest\": \"9e76b7242934ceb8ae48c65f5469312522a034f4abf66d4771fb721aee04a502\"\n - \ },\n {\n \"downloadUrl\": \"https://github.com/Azure/azure-batch-cli-extensions/releases/download/azure-batch-cli-extensions-4.0.0/azure_batch_cli_extensions-4.0.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_batch_cli_extensions-4.0.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.maxCliCoreVersion\": - \"2.1.0\",\n \"azext.minCliCoreVersion\": \"2.0.69\",\n - \ \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-batch-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-batch-cli-extensions\",\n - \ \"run_requires\": [\n {\n \"requires\": - [\n \"azure-batch-extensions (<6.1,>=6.0.0)\",\n - \ \"pycparser (==2.18)\"\n ]\n - \ }\n ],\n \"summary\": - \"Additional commands for working with Azure Batch service\",\n \"version\": - \"4.0.0\"\n },\n \"sha256Digest\": \"3045dc24858b9acfed13a517038830ddc643aef779de0d14617c49c9fd2dcbd5\"\n - \ },\n {\n \"downloadUrl\": \"https://github.com/Azure/azure-batch-cli-extensions/releases/download/azure-batch-cli-extensions-5.0.1/azure_batch_cli_extensions-5.0.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_batch_cli_extensions-5.0.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.maxCliCoreVersion\": - \"3.0.0\",\n \"azext.minCliCoreVersion\": \"2.0.73\",\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-batch-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-batch-cli-extensions\",\n - \ \"run_requires\": [\n {\n \"requires\": - [\n \"azure-batch-extensions (<7.1,>=7.0.0)\",\n - \ \"pycparser (==2.18)\"\n ]\n - \ }\n ],\n \"summary\": - \"Additional commands for working with Azure Batch service\",\n \"version\": - \"5.0.1\"\n },\n \"sha256Digest\": \"bf07b63782e0f6446302971afaf8b5ec5bb6dbc00449bf3276511993abf8cd61\"\n - \ },\n {\n \"downloadUrl\": \"https://github.com/Azure/azure-batch-cli-extensions/releases/download/azure-batch-cli-extensions-6.0.0/azure_batch_cli_extensions-6.0.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_batch_cli_extensions-6.0.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.maxCliCoreVersion\": - \"3.0.0\",\n \"azext.minCliCoreVersion\": \"2.0.74\",\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-batch-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-batch-cli-extensions\",\n - \ \"run_requires\": [\n {\n \"requires\": - [\n \"azure-batch-extensions (<8.1,>=8.0.0)\",\n - \ \"pycparser (==2.18)\"\n ]\n - \ }\n ],\n \"summary\": - \"Additional commands for working with Azure Batch service\",\n \"version\": - \"6.0.0\"\n },\n \"sha256Digest\": \"6955a0d960d9c4df6935b9058f67c8c42872c8716d8d2a4f76e9e6ce72eb66ab\"\n - \ }\n ],\n \"azure-cli-ml\": [\n {\n \"downloadUrl\": - \"https://azurecliext.blob.core.windows.net/release/azure_cli_ml-1.24.0-py3-none-any.whl\",\n - \ \"filename\": \"azure_cli_ml-1.24.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 3 - Alpha\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"Programming Language - :: Python :: 3.7\",\n \"Programming Language :: Python - :: 3.8\"\n ],\n \"description_content_type\": - \"text/x-rst\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\",\n - \ \"license\": \"LICENSE.txt\"\n },\n - \ \"project_urls\": {\n \"Home\": - \"https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"Proprietary https://aka.ms/azureml-preview-sdk-license - \",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-cli-ml\",\n \"requires_python\": \">=3.5,<4\",\n - \ \"run_requires\": [\n {\n \"requires\": - [\n \"adal (>=1.2.1)\",\n \"azureml-cli-common - (~=1.24.0)\",\n \"cryptography (<=3.3.2)\",\n - \ \"docker (>=3.7.2)\",\n \"msrest - (>=0.6.6)\",\n \"pyyaml (>=5.1.0)\",\n \"requests - (>=2.21.0)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools AzureML - Command Module\",\n \"test_requires\": [\n {\n - \ \"requires\": [\n \"azure-keyvault\",\n - \ \"mock\",\n \"nose\",\n - \ \"unittest-xml-reporting\"\n ]\n - \ }\n ],\n \"version\": - \"1.24.0\"\n },\n \"sha256Digest\": \"eae5ad381bcfd883ff2eb8232ae8cda761810393175f341188f5c1367f45517c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliext.blob.core.windows.net/release/azure_cli_ml-1.5.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_cli_ml-1.5.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.28\",\n \"classifiers\": [\n \"Development - Status :: 3 - Alpha\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"Programming Language - :: Python :: 3.7\",\n \"Programming Language :: Python - :: 3.8\"\n ],\n \"description_content_type\": - \"text/x-rst\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\",\n - \ \"license\": \"LICENSE.txt\"\n },\n - \ \"project_urls\": {\n \"Home\": - \"https://docs.microsoft.com/azure/machine-learning/service/\"\n }\n - \ }\n },\n \"extras\": - [],\n \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"Proprietary https://aka.ms/azureml-preview-sdk-license \",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-cli-ml\",\n \"requires_python\": - \">=3.5,<4\",\n \"run_requires\": [\n {\n - \ \"requires\": [\n \"adal - (>=1.2.1)\",\n \"azureml-cli-common (~=1.5.0)\",\n - \ \"docker (>=3.7.2)\",\n \"msrest - (>=0.6.6)\",\n \"pyyaml (>=5.1.0)\",\n \"requests - (>=2.21.0)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools AzureML - Command Module\",\n \"test_requires\": [\n {\n - \ \"requires\": [\n \"azure-keyvault\",\n - \ \"mock\",\n \"nose\",\n - \ \"unittest-xml-reporting\"\n ]\n - \ }\n ],\n \"version\": - \"1.5.0\"\n },\n \"sha256Digest\": \"a535f01501a06f70d26a75f5ccde2d32640d3c7efec302fc2fc454bfb867e946\"\n - \ }\n ],\n \"azure-devops\": [\n {\n \"downloadUrl\": - \"https://github.com/Azure/azure-devops-cli-extension/releases/download/20190805.1/azure_devops-0.12.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_devops-0.12.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.49\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"VSTS_Social@microsoft.com\",\n \"name\": - \"Microsoft\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Microsoft/azure-devops-cli-extension\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-devops\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"distro (==1.3.0)\",\n \"msrest - (<0.7.0,>=0.6.0)\",\n \"python-dateutil (==2.7.3)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Tools for managing Azure DevOps.\",\n \"version\": - \"0.12.0\"\n },\n \"sha256Digest\": \"2abdfd1b760e1968176cd4043e2db7edf951978c6a2182eb5e79bb0c8070af4c\"\n - \ },\n {\n \"downloadUrl\": \"https://github.com/Azure/azure-devops-cli-extension/releases/download/20200113.1/azure_devops-0.17.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_devops-0.17.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.69\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"VSTS_Social@microsoft.com\",\n \"name\": - \"Microsoft\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Microsoft/azure-devops-cli-extension\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-devops\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"distro (==1.3.0)\",\n \"msrest - (<0.7.0,>=0.6.0)\",\n \"python-dateutil (==2.7.3)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Tools for managing Azure DevOps.\",\n \"version\": - \"0.17.0\"\n },\n \"sha256Digest\": \"1e891afc8b6ee52c62c4f99802d77728ff60e89e4c08972325178cc4fdac6be9\"\n - \ },\n {\n \"downloadUrl\": \"https://github.com/Azure/azure-devops-cli-extension/releases/download/20200401.4/azure_devops-0.18.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_devops-0.18.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.2.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"VSTS_Social@microsoft.com\",\n - \ \"name\": \"Microsoft\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Microsoft/azure-devops-cli-extension\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-devops\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"distro (==1.3.0)\",\n \"msrest - (<0.7.0,>=0.6.0)\",\n \"python-dateutil (==2.7.3)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Tools for managing Azure DevOps.\",\n \"version\": - \"0.18.0\"\n },\n \"sha256Digest\": \"21fd9bf9c01a315184f11d7f709f354075118c298fd662472273cb003bfbe23e\"\n - \ }\n ],\n \"azure-firewall\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.1.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.1.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.46\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.1.3\"\n },\n - \ \"sha256Digest\": \"116c1324206e8aa0e7cffdd719a12e87b2977a061fcd9fb96ae4b6fbe223e93f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.1.9-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.1.9-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.1.9\"\n },\n - \ \"sha256Digest\": \"f20c18b5b176dd39815dee4d344368774b58bb2f4f03c28b89ee08212e45856a\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"7934510bc2ed4d83c8dbee7d2d22c3de2332b96020e2f45515035153f94a246f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.3.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.3.0\"\n },\n - \ \"sha256Digest\": \"12e5f8567ba8a74988f50ec6ed3539fad5b9e491727b0bc2c16e7acc34f49423\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.3.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.3.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.3.1\"\n },\n - \ \"sha256Digest\": \"32e10a4e96a891151959680ff3cbf3e28ea0cf38e49ac062c49c668d00e5d7d7\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.4.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.4.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.4.0\"\n },\n - \ \"sha256Digest\": \"5c79cedfc5abf134f4b47ad5d867ff5852d2ba17f710d44a2101fe0aa51b1a48\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.5.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.5.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.5.0\"\n },\n - \ \"sha256Digest\": \"ceb70fe380937e5cb42998648a3218313b1425286705743275a808bb15d70d03\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.5.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.5.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.5.1\"\n },\n - \ \"sha256Digest\": \"40581d4aaf52a8a1f8deccf3be641385348251b34ffeb4c65193111150002699\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.6.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.6.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.6.0\"\n },\n - \ \"sha256Digest\": \"b22c81a341f1742ebb2c32c45af1470b12bfe2d03907d43206cf8d0860e058f6\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.6.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.6.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.6.1\"\n },\n - \ \"sha256Digest\": \"4bf18f81d1b97d458181154f51803103745182cf68972180507aa8c291c60a94\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.6.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.6.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.6.2\"\n },\n - \ \"sha256Digest\": \"30539d78089ae73cbc012d487de7b9e9717096e2abf960ca4e7057ef77222a25\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.7.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.7.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.7.0\"\n },\n - \ \"sha256Digest\": \"b6ac17ae8f18d9c702cece94822c0d00dbc13b7ed60a7831281e2e5391cefe39\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.8.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.8.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.8.0\"\n },\n - \ \"sha256Digest\": \"897e1ff2ff69b6f2969dc97e97847a25b7a9060091024a96e0e2ca0876c0cd53\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/azure_firewall-0.9.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_firewall-0.9.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/azure-firewall\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"azure-firewall\",\n \"summary\": \"Manage Azure Firewall - resources.\",\n \"version\": \"0.9.0\"\n },\n - \ \"sha256Digest\": \"ea9f1a318e27266652bb6121d93ff5595b2ffe1227efc3ca1ab69b29349bb9d2\"\n - \ }\n ],\n \"azure-iot\": [\n {\n \"downloadUrl\": - \"https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.10.10/azure_iot-0.10.10-py3-none-any.whl\",\n - \ \"filename\": \"azure_iot-0.10.10-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"iotupx@microsoft.com\",\n \"name\": \"Microsoft\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/azure/azure-iot-cli-extension\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-iot\",\n \"requires_python\": - \">=3.6,<4\",\n \"run_requires\": [\n {\n - \ \"requires\": [\n \"jsonschema - (==3.0.2)\",\n \"paho-mqtt (==1.5.0)\",\n \"setuptools\"\n - \ ]\n }\n ],\n - \ \"summary\": \"The Azure IoT extension for Azure CLI.\",\n - \ \"version\": \"0.10.10\"\n },\n \"sha256Digest\": - \"77a82d1b60fa1664a15cef6dff7bfbdb65b0675d101a2b015aa7eb855064a520\"\n },\n - \ {\n \"downloadUrl\": \"https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.9.7/azure_iot-0.9.7-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_iot-0.9.7-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.70\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"iotupx@microsoft.com\",\n \"name\": \"Microsoft\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/azure/azure-iot-cli-extension\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-iot\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"jsonschema (==3.0.2)\",\n \"paho-mqtt - (==1.5.0)\",\n \"setuptools\"\n ]\n - \ }\n ],\n \"summary\": - \"The Azure IoT extension for Azure CLI.\",\n \"version\": - \"0.9.7\"\n },\n \"sha256Digest\": \"1b4d44540a4feb487bb88aae4bdb4231045f0b23ad84f0e8792e859302183303\"\n - \ },\n {\n \"downloadUrl\": \"https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.9.4/azure_iot-0.9.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"azure_iot-0.9.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.70\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.5\",\n \"Programming Language :: Python - :: 3.6\",\n \"Programming Language :: Python :: 3.7\",\n - \ \"Programming Language :: Python :: 3.8\",\n \"License - :: OSI Approved :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"iotupx@microsoft.com\",\n \"name\": \"Microsoft\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/azure/azure-iot-cli-extension\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"azure-iot\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"jsonschema (==3.0.2)\",\n \"paho-mqtt - (==1.5.0)\",\n \"setuptools\"\n ]\n - \ }\n ],\n \"summary\": - \"The Azure IoT extension for Azure CLI.\",\n \"version\": - \"0.9.4\"\n },\n \"sha256Digest\": \"bbf330942daac0035bd9bb9a0fdeaf297124ec8cd98e28e46adb2bf34070295b\"\n - \ }\n ],\n \"baremetal-infrastructure\": [\n {\n - \ \"downloadUrl\": \"https://github.com/Azure/azure-baremetalinfrastructure-cli-extension/releases/download/0.0.2/baremetal_infrastructure-0.0.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"baremetal_infrastructure-0.0.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.12.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-baremetalinfrastructure-cli-extension\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"baremetal-infrastructure\",\n \"summary\": \"Additional - commands for working with BareMetal instances.\",\n \"version\": - \"0.0.2\"\n },\n \"sha256Digest\": \"171799d3db711b431365366cc26f3a5b186cb94381f01c2d5f7b3f392892d591\"\n - \ }\n ],\n \"blockchain\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/blockchain-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"blockchain-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"blockchain\",\n \"summary\": \"Microsoft Azure Command-Line - Tools BlockchainManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"ba0001dffaf39d133604c4281ed9c943f178a16a91d31f5889bf1587d9871049\"\n - \ }\n ],\n \"blueprint\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/blueprint-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"blueprint-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"blueprint\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Blueprint Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"98c1874110e2c77c62cf0d180133ea0b29ed08a86189ee292b909369597e694b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/blueprint-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"blueprint-0.1.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"blueprint\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Blueprint Extension\",\n \"version\": \"0.1.1\"\n - \ },\n \"sha256Digest\": \"4508b6143f69e6ac388ad37b3e3af82f49c9b5625e12d341963cc2faf02e368f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/blueprint-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"blueprint-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"blueprint\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Blueprint Extension\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"fcbbe61db268b9b5452b0d9055c5fc8b725a63193290957c2681de5fe2e6f1ff\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/blueprint-0.2.1-py3-none-any.whl\",\n - \ \"filename\": \"blueprint-0.2.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/blueprint\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"blueprint\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Blueprint Extension\",\n \"version\": \"0.2.1\"\n - \ },\n \"sha256Digest\": \"120bd04db8b31bbc5631ce086739763cca3144c2e314b8e1347f1d633e894a09\"\n - \ }\n ],\n \"cli-translator\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"cli_translator-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.11.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cli-translator\",\n \"summary\": \"Translate ARM template - to executable Azure CLI scripts.\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"8a4d19ed89cd63e1cc461715b7b0a1a989d2b480adc1b3b4f5747eef0327b85b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"cli_translator-0.2.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.13.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cli-translator\",\n \"summary\": \"Translate ARM template - to executable Azure CLI scripts.\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"ee07cbcde217d2b1ab226ef5aeea8e44510b704fb5e3976638dcf2f978f722e4\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-0.3.0-py3-none-any.whl\",\n - \ \"filename\": \"cli_translator-0.3.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.13.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/cli-translator\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cli-translator\",\n \"summary\": \"Translate ARM template - to executable Azure CLI scripts.\",\n \"version\": \"0.3.0\"\n - \ },\n \"sha256Digest\": \"9ea6162d37fc3390be4dce64cb05c5c588070104f3e92a701ab475473565a8a9\"\n - \ }\n ],\n \"codespaces\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/codespaces-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"codespaces-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"codespaces\",\n \"summary\": \"The Azure CLI Codespaces - extension\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"d859256dac3177970bb631e149bcabd19d47fa9e972fb331662413b5cfe0ce32\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/codespaces-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"codespaces-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"codespaces\",\n \"summary\": \"The Azure CLI Codespaces - extension\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"793f4dbf828efc9474cc2d6aa314b0968c25321978b0dceaf33005f02c5f1bd7\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/codespaces-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"codespaces-0.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"codespaces\",\n \"summary\": \"The Azure CLI Codespaces - extension\",\n \"version\": \"0.2.1\"\n },\n - \ \"sha256Digest\": \"30569dd2124bec69abb6e6ae99c5a73059d767434bfe36d6f72a35b4f0e904f3\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/codespaces-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"codespaces-0.3.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"codespaces\",\n \"summary\": \"The Azure CLI Codespaces - extension\",\n \"version\": \"0.3.0\"\n },\n - \ \"sha256Digest\": \"04d6fc97d8f1d49a54121198a32508118b7102aa69fa6bd31af25103a3af5a4c\"\n - \ }\n ],\n \"communication\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/communication-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"communication-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.11.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/communication\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"communication\",\n \"summary\": \"Microsoft Azure Command-Line - Tools CommunicationServiceManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"a16e8262b53791aad9e74a4f3d4804a5bafbe415df3c7651776e98b787bf6226\"\n - \ }\n ],\n \"confluent\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/confluent-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"confluent-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.17.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/confluent\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"confluent\",\n \"summary\": \"Microsoft Azure Command-Line - Tools ConfluentManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"4a6ffd3d10898183b66b0933064bc6d9bbade0e9af32be3348412b75310e07cb\"\n - \ }\n ],\n \"connectedk8s\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.1.5-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.1.5-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes\",\n \"pycryptodome\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.1.5\"\n },\n - \ \"sha256Digest\": \"1b529c1fedb5db9dee3dc877ca036f5373d307ca8a07c278d07126531b1c55b6\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes\",\n \"pycryptodome\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"d306355d5568f9f5b201db9f5bda28fc0b142c6b70164a87bf56974239749ebd\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.1-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes\",\n \"pycryptodome\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.1\"\n },\n - \ \"sha256Digest\": \"e910b1a0abee28121d5c216821c5d88cefc87030eb3068e699135314ecb0f8c9\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.3-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.3-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes\",\n \"pycryptodome\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.3\"\n },\n - \ \"sha256Digest\": \"9660bbd577c66af1bcebeeaaec9cabb61cd27a0b58c6fe9a9a795d6a73777ee9\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.4-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.4-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes\",\n \"pycryptodome\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.4\"\n },\n - \ \"sha256Digest\": \"4de66f7e8cecdfab8c91bf4f37347770fb17e087454159d3a5c81e0205f2da2c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.5-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.5-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes\",\n \"pycryptodome\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.5\"\n },\n - \ \"sha256Digest\": \"0c23ebd04c37b26219cd224134e8af675130cc346808ae008cd5cfc4f3b1bd84\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.6-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.6-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes\",\n \"pycryptodome\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.6\"\n },\n - \ \"sha256Digest\": \"165411ce6ecdda8a4705bd9e93998b1ffdf6ddc88b01ed0ce12a3c100d1b9549\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.7-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.7-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes (==11.0.0)\",\n \"pycryptodome - (==3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.7\"\n },\n - \ \"sha256Digest\": \"115bbeb79206632301a20dc4b1d6604f5c126c82c0ba1a9a58131a66da30a7dc\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.8-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.8-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/connectedk8s\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes (==11.0.0)\",\n \"pycryptodome - (==3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.8\"\n },\n - \ \"sha256Digest\": \"a0f8d12304b097a65d2b22f4e47faa6c6899e680bab77dfb41e72d2722e7e7d6\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-0.2.9-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-0.2.9-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"k8connect@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/connectedk8s\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes (==11.0.0)\",\n \"pycryptodome - (==3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"0.2.9\"\n },\n - \ \"sha256Digest\": \"55377bea57ae6288a501ea65ff2c68b2961ac7582da9b7646960faf17583e3dd\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/connectedk8s-1.0.0-py3-none-any.whl\",\n - \ \"filename\": \"connectedk8s-1.0.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"k8connect@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/connectedk8s\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"connectedk8s\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"kubernetes (==11.0.0)\",\n \"pycryptodome - (==3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools Connectedk8s - Extension\",\n \"version\": \"1.0.0\"\n },\n - \ \"sha256Digest\": \"9eb34e10523ee5bbd9a4be03915532da7acc3be11631fb646807085c09380c59\"\n - \ }\n ],\n \"connectedmachine\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedmachine-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"connectedmachine-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"connectedmachine\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Connectedmachine Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"0f4d009da4e091aece74cd53833fe63e5af18d68fcf6308a08155ee5284f12fb\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedmachine-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"connectedmachine-0.2.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.11.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/connectedmachine\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"connectedmachine\",\n \"summary\": \"Microsoft Azure - Command-Line Tools ConnectedMachine Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"b9a2f3ea3fb7a4c981fad30ff670ff3ca1f8fbef0aede36a8e8a20050b1a245d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connectedmachine-0.3.0-py3-none-any.whl\",\n - \ \"filename\": \"connectedmachine-0.3.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.11.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/connectedmachine\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"connectedmachine\",\n \"summary\": \"Microsoft Azure - Command-Line Tools ConnectedMachine Extension\",\n \"version\": - \"0.3.0\"\n },\n \"sha256Digest\": \"591bed0d6a6251028471bac6a9ebf0f641d7765bf04b13271aae29c37491ba55\"\n - \ }\n ],\n \"connection-monitor-preview\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/connection_monitor_preview-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"connection_monitor_preview-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"2.0.82\",\n \"azext.minCliCoreVersion\": - \"2.0.80\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/connection-monitor-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"connection-monitor-preview\",\n \"summary\": \"Microsoft - Azure Command-Line Connection Monitor V2 Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"9a796d5187571990d27feb9efeedde38c194f13ea21cbf9ec06131196bfd821d\"\n - \ }\n ],\n \"cosmosdb-preview\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/cosmosdb_preview-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"cosmosdb_preview-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.17.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"kakhandr@microsoft.com\",\n \"name\": - \"Kalyan khandrika\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cosmosdb-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Cosmosdb-preview Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"83be5a723d6a0063c4cd17db52a172ef8f9453435d316ef0abbd2ca2dd8e6ca8\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/cosmosdb_preview-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"cosmosdb_preview-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.17.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"kakhandr@microsoft.com\",\n \"name\": - \"Kalyan khandrika\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cosmosdb-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Cosmosdb-preview Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"d8199ccce62c5c7f8670ddf7eb27493fa1c5079ed152607c958fc2b53201fc83\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/cosmosdb_preview-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"cosmosdb_preview-0.3.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.17.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"kakhandr@microsoft.com\",\n \"name\": - \"Kalyan khandrika\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cosmosdb-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Cosmosdb-preview Extension\",\n \"version\": - \"0.3.0\"\n },\n \"sha256Digest\": \"079af4056ab89f7e27d2a3b6b22c4147b47ce3a27f744ce8b3cde38998afa89e\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/cosmosdb_preview-0.4.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"cosmosdb_preview-0.4.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.17.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"kakhandr@microsoft.com\",\n \"name\": - \"Kalyan khandrika\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cosmosdb-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Cosmosdb-preview Extension\",\n \"version\": - \"0.4.0\"\n },\n \"sha256Digest\": \"751699f42dffaef4a365aeea0ddcc5432a3bafeb0550ee6ff628df1b0a9e02bd\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/cosmosdb_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"cosmosdb_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.17.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"kakhandr@microsoft.com\",\n \"name\": - \"Kalyan khandrika\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"cosmosdb-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Cosmosdb-preview Extension\",\n \"version\": - \"0.5.0\"\n },\n \"sha256Digest\": \"dd61fd0b1e3b67b63bf731886995743798b72f6c9b00c3c8a589b3cb1b7be3cf\"\n - \ }\n ],\n \"costmanagement\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/costmanagement-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"costmanagement-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"costmanagement\",\n \"summary\": \"Microsoft Azure Command-Line - Tools CostManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"d5c8be4d6f3e59a44da32af66f8855c24d9855c5b7bdd2f6571c8721afa20223\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/costmanagement-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"costmanagement-0.1.1-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/costmanagement\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"costmanagement\",\n \"summary\": \"Microsoft Azure Command-Line - Tools CostManagementClient Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"0a6e0ee27fd5896b45eabf0c9227e63b3c1bbc4975adf4cb566647396fa511f2\"\n - \ }\n ],\n \"csvmware\": [\n {\n \"downloadUrl\": - \"https://github.com/Azure/az-csvmware-cli/releases/download/0.3.0/csvmware-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"csvmware-0.3.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"shimitta@microsoft.com\",\n \"name\": - \"Shivam Mittal\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/az-vmware-cli\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"csvmware\",\n \"summary\": \"Manage Azure VMware Solution - by CloudSimple.\",\n \"version\": \"0.3.0\"\n },\n - \ \"sha256Digest\": \"dfb9767f05ac13c762ea9dc4327169e63a5c11879123544b200edb9a2c9a8a42\"\n - \ }\n ],\n \"custom-providers\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/custom_providers-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"custom_providers-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.4\",\n \"Programming - Language :: Python :: 3.5\",\n \"Programming Language - :: Python :: 3.6\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"custom-providers\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Custom Providers Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"7da462aaa336184b53d7b0b831c0fa77c4239dabe4e70fa4e500e250cf11a8ec\"\n - \ }\n ],\n \"databox\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/databox-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"databox-0.1.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"Programming Language :: Python :: 3.7\",\n \"Programming - Language :: Python :: 3.8\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databox\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DataBox Extension\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"93cac253cd79728eb333715ae56111ffaa287c9d650e924ea07875ab36906974\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/databox-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"databox-0.1.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.4\",\n \"Programming - Language :: Python :: 3.5\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/databox\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databox\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DataBox Extension\",\n \"version\": \"0.1.1\"\n },\n - \ \"sha256Digest\": \"210ab818a566ec69c923c1bc11f8f50295c19c30be378ab67be340a70e921aa1\"\n - \ }\n ],\n \"databricks\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExprimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"36130c36c5d4dd7a76952c3d5b443cf2a76447ccce41094e0b625b85139a366a\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExprimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"229272c5b6abcfc37abe86600db356c54ef664b6681b2f8b705aa50be472b1bc\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.3.0-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.3.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.3.0\"\n - \ },\n \"sha256Digest\": \"daf76d6aea0025d4783926d25fa813b74c1bcaa67bf8d937cc0d72529d06b9fe\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.4.0-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.4.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.4.0\"\n - \ },\n \"sha256Digest\": \"db716fa7a65bfb977ea4d6eb4c5ad56c5dfd39062f0d179c5d3aceff959c2a26\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.5.0-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.5.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.5.0\"\n - \ },\n \"sha256Digest\": \"9a7bca2c8828959ed048b883da9c2b62c1597f5c6bd475c5269c30a27282080f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.6.0-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.6.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.6.0\"\n - \ },\n \"sha256Digest\": \"46a77fcd4b31191ce2b2d58e58af982415ea91787628426bd2b3d567da273411\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.7.0-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.7.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.7.0\"\n - \ },\n \"sha256Digest\": \"236f561c6a20141ae854d1dd64a6e5a0b4636d98517e5ba245401882cc7fbd92\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/databricks-0.7.1-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.7.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/databricks\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.7.1\"\n - \ },\n \"sha256Digest\": \"f086792f8910601c68fbe303f7831f77c79486fdf8e44039b1505d2344bac197\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/databricks-0.7.2-py3-none-any.whl\",\n - \ \"filename\": \"databricks-0.7.2-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/databricks\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"databricks\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DatabricksClient Extension\",\n \"version\": \"0.7.2\"\n - \ },\n \"sha256Digest\": \"daf595a051a47dded0fbe18a289e454f221eaaae11d1aadaa3f45612aff1b05f\"\n - \ }\n ],\n \"datafactory\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/datafactory-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"datafactory-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/datafactory\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"datafactory\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DataFactoryManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"f49b145f8125cde30aedf5080af90e26277ad1527cfb13cff0d72838298241d3\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/datafactory-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"datafactory-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/datafactory\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"datafactory\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DataFactoryManagementClient Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"7cadaec354c8cbd4eae3465e385685807f619c8e7a2a093e6d4c68a9466b1e6a\"\n - \ }\n ],\n \"datashare\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/datashare-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"datashare-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"datashare\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DataShareManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"803c3637f752b0fb77eb5272a544abafe44942ff920a020ff7ea179ace329342\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/datashare-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"datashare-0.1.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"datashare\",\n \"summary\": \"Microsoft Azure Command-Line - Tools DataShareManagementClient Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"c0a2b603c0abd320bc3df0a4d6c38945fd894737804690dad98896e2446763f4\"\n - \ }\n ],\n \"db-up\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/db_up-0.1.13-py2.py3-none-any.whl\",\n - \ \"filename\": \"db_up-0.1.13-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.46\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/db-up\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"db-up\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"Cython (==0.29.6)\",\n \"mysql-connector-python - (==8.0.13)\",\n \"psycopg2-binary (==2.7.7)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Additional commands to simplify Azure Database - workflows.\",\n \"version\": \"0.1.13\"\n },\n - \ \"sha256Digest\": \"df397272396c684972d1185e16439159427795b305f67e47fc37447a0c4d1257\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/db_up-0.1.14-py2.py3-none-any.whl\",\n - \ \"filename\": \"db_up-0.1.14-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.46\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/db-up\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"db-up\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"Cython (==0.29.17)\",\n \"mysql-connector-python - (==8.0.13)\",\n \"psycopg2-binary (==2.8.5)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Additional commands to simplify Azure Database - workflows.\",\n \"version\": \"0.1.14\"\n },\n - \ \"sha256Digest\": \"2f456a810be680ccc5dd7658b955410582063d56573ff3c38386d5ba2aacf7ee\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/db_up-0.1.15-py2.py3-none-any.whl\",\n - \ \"filename\": \"db_up-0.1.15-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.46\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/db-up\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"db-up\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"Cython (==0.29.17)\",\n \"mysql-connector-python - (==8.0.13)\",\n \"psycopg2-binary (==2.8.5)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Additional commands to simplify Azure Database - workflows.\",\n \"version\": \"0.1.15\"\n },\n - \ \"sha256Digest\": \"7c8db14999b2b5a4d4b9ae870562505a120896f39c64c20501502f5fdd897911\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/db_up-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"db_up-0.2.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.46\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/db-up\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"db-up\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"Cython (==0.29.17)\",\n \"mysql-connector-python - (==8.0.13)\",\n \"psycopg2-binary (==2.8.5)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Additional commands to simplify Azure Database - workflows.\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"3e5b22cfbe3a0ec63aba3040e541d6819dbb1fbdc5b49286edfd143c79a2b8cb\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/db_up-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"db_up-0.2.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.46\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/db-up\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"db-up\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"Cython (==0.29.17)\",\n \"mysql-connector-python - (==8.0.14)\",\n \"psycopg2-binary (==2.8.5)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Additional commands to simplify Azure Database - workflows.\",\n \"version\": \"0.2.1\"\n },\n - \ \"sha256Digest\": \"384b3806d49973cc91688ced691785d83cd7c3557016edc9161c151262ae2ab5\"\n - \ }\n ],\n \"deploy-to-azure\": [\n {\n - \ \"downloadUrl\": \"https://github.com/Azure/deploy-to-azure-cli-extension/releases/download/20200318.1/deploy_to_azure-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"deploy_to_azure-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.60\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"VSTS_Social@microsoft.com\",\n - \ \"name\": \"Microsoft\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/deploy-to-azure-cli-extension\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"deploy-to-azure\",\n \"summary\": \"Deploy to Azure using - Github Actions.\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"f925080ee7abc3aef733d4c6313170bdedaa9569af1b95427383bc3c59e4ceb8\"\n - \ }\n ],\n \"desktopvirtualization\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/desktopvirtualization-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"desktopvirtualization-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/desktopvirtualization\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"desktopvirtualization\",\n \"summary\": \"Microsoft Azure - Command-Line Tools DesktopVirtualizationAPIClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"d73c88fe0df98871a221495e000c39fbb22975fdc5066668c9ea0f578ff9a1a9\"\n - \ }\n ],\n \"dev-spaces\": [\n {\n \"downloadUrl\": - \"https://azuredevspacestools.blob.core.windows.net/azdssetup/LKS/dev_spaces-1.0.5-py2.py3-none-any.whl\",\n - \ \"filename\": \"dev_spaces-1.0.5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.1.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azds-azcli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"dev-spaces\",\n \"summary\": \"Dev Spaces provides a - rapid, iterative Kubernetes development experience for teams.\",\n \"version\": - \"1.0.5\"\n },\n \"sha256Digest\": \"6d481b89be4fe8835143433bb0b7c5ba2aba230433bc9ba483c0d26c5ef682a0\"\n - \ },\n {\n \"downloadUrl\": \"https://azuredevspacestools.blob.core.windows.net/azdssetup/LKS/dev_spaces-1.0.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"dev_spaces-1.0.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.63\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azds-azcli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"dev-spaces\",\n \"summary\": \"Dev Spaces provides a - rapid, iterative Kubernetes development experience for teams.\",\n \"version\": - \"1.0.4\"\n },\n \"sha256Digest\": \"713600593e7e5c4e317e99d46110485c527740a74d90f01fa9b2ed52cdd42034\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/dev_spaces-1.0.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"dev_spaces-1.0.6-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.1.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azds-azcli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/dev-spaces\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"dev-spaces\",\n \"summary\": \"Dev Spaces provides a - rapid, iterative Kubernetes development experience for teams.\",\n \"version\": - \"1.0.6\"\n },\n \"sha256Digest\": \"71041808b27cd9d33fd905c5080c97f61291816f2dddd6dcdb2e66b9fb6ebf59\"\n - \ }\n ],\n \"dev-spaces-preview\": [\n {\n - \ \"downloadUrl\": \"https://azuredevspacestools.blob.core.windows.net/azdssetup/LKS/dev_spaces_preview-0.1.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"dev_spaces_preview-0.1.6-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"2.0.62\",\n \"azext.minCliCoreVersion\": - \"2.0.32\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azds-azcli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"dev-spaces-preview\",\n \"summary\": \"Dev Spaces provides - a rapid, iterative Kubernetes development experience for teams.\",\n \"version\": - \"0.1.6\"\n },\n \"sha256Digest\": \"16661d66a3b4a04d429d456ba8a8d0b3b6ceb7b32691ff3a1dcc4144c005c798\"\n - \ }\n ],\n \"dms-preview\": [\n {\n \"downloadUrl\": - \"https://azcliorcas.blob.core.windows.net/azclipath/dms_preview-0.11.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"dms_preview-0.11.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.43\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"arpavlic@microsoft.com\",\n - \ \"name\": \"Artyom Pavlichenko\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/dms-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"dms-preview\",\n \"summary\": \"Support for new Database - Migration Service scenarios.\",\n \"version\": \"0.11.0\"\n - \ },\n \"sha256Digest\": \"ef19e5c19976506a8f8910ec04bc785ebeffb5a4c8764047e4e4d42f812b0845\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/dms_preview-0.12.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"dms_preview-0.12.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.43\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"arpavlic@microsoft.com\",\n - \ \"name\": \"Artyom Pavlichenko\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/dms-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"dms-preview\",\n \"summary\": \"Support for new Database - Migration Service scenarios.\",\n \"version\": \"0.12.0\"\n - \ },\n \"sha256Digest\": \"5e2fd9a8e413fd13a280fbba9964658a5569af2e49e802bd12116ec01e5dd0ae\"\n - \ }\n ],\n \"eventgrid\": [\n {\n \"downloadUrl\": - \"https://eventgridcliextension.blob.core.windows.net/cli/eventgrid-0.4.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"eventgrid-0.4.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"ahamad@microsoft.com\",\n - \ \"name\": \"Ashraf Hamad.\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"eventgrid\",\n \"summary\": \"Microsoft Azure Command-Line - Tools EventGrid Command Module.\",\n \"version\": \"0.4.4\"\n - \ },\n \"sha256Digest\": \"c91ac92ab27a7127c9def51e096f749986b57acf209b357eaf1494d3dbfb33f9\"\n - \ },\n {\n \"downloadUrl\": \"https://eventgridcliextension.blob.core.windows.net/cli/eventgrid-0.4.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"eventgrid-0.4.6-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"rgrandhi@microsoft.com\",\n - \ \"name\": \"Ramesh Grandhi.\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"eventgrid\",\n \"summary\": \"Microsoft Azure Command-Line - Tools EventGrid Command Module.\",\n \"version\": \"0.4.6\"\n - \ },\n \"sha256Digest\": \"6ef9f9cf895b5dcdf9a38c2490a0c81e8254de4302dc7139fb6a4fcf2203318d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/eventgrid-0.4.7-py2.py3-none-any.whl\",\n - \ \"filename\": \"eventgrid-0.4.7-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"ahamad@microsoft.com\",\n - \ \"name\": \"Ashraf Hamad.\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"eventgrid\",\n \"summary\": \"Microsoft Azure Command-Line - Tools EventGrid Command Module.\",\n \"version\": \"0.4.7\"\n - \ },\n \"sha256Digest\": \"f1bff60574d25ccc04eb2038081771b626651d144d9ab01be2b7410e1b02f56a\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/eventgrid-0.4.8-py2.py3-none-any.whl\",\n - \ \"filename\": \"eventgrid-0.4.8-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"ahamad@microsoft.com\",\n - \ \"name\": \"Ashraf Hamad.\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"eventgrid\",\n \"summary\": \"Microsoft Azure Command-Line - Tools EventGrid Command Module.\",\n \"version\": \"0.4.8\"\n - \ },\n \"sha256Digest\": \"8f307569c920e1b75d4b6dfb47ad80c0cd49bf54a3a65139b57edff8a4776d45\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/eventgrid-0.4.9-py2.py3-none-any.whl\",\n - \ \"filename\": \"eventgrid-0.4.9-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.49\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"ahamad@microsoft.com\",\n - \ \"name\": \"Ashraf Hamad.\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"eventgrid\",\n \"summary\": \"Microsoft Azure Command-Line - Tools EventGrid Command Module.\",\n \"version\": \"0.4.9\"\n - \ },\n \"sha256Digest\": \"1682f61dbb8350611dfeb1f2486158732264eeb35e22af8d7daf39839a720839\"\n - \ }\n ],\n \"express-route-cross-connection\": [\n - \ {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/express_route_cross_connection-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"express_route_cross_connection-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.41\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/express-route-cross-connection\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"express-route-cross-connection\",\n \"summary\": \"Manage - customer ExpressRoute circuits using an ExpressRoute cross-connection.\",\n - \ \"version\": \"0.1.1\"\n },\n \"sha256Digest\": - \"b83f723baae0ea04557a87f358fa2131baf15d45cd3aba7a9ab42d14ec80df38\"\n }\n - \ ],\n \"footprint\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/footprint-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"footprint-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/footprint\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"footprint\",\n \"summary\": \"Microsoft Azure Command-Line - Tools FootprintMonitoringManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"69b0e9a19682f12c67af509071177e442349e1e2ae2f07f1e15d5a3f4136aa95\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/footprint-1.0.0-py3-none-any.whl\",\n - \ \"filename\": \"footprint-1.0.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/footprint\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"footprint\",\n \"summary\": \"Microsoft Azure Command-Line - Tools FootprintMonitoringManagementClient Extension\",\n \"version\": - \"1.0.0\"\n },\n \"sha256Digest\": \"4aa59288bf46cfd68519f1f7f63d3e33af16d80632b84c283cc7152129260b2c\"\n - \ }\n ],\n \"front-door\": [\n {\n \"downloadUrl\": - \"https://azurecliafd.blob.core.windows.net/azure-cli-extension/front_door-1.0.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.68\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.2\"\n },\n - \ \"sha256Digest\": \"a009045bab5dec0dfcd9715e2993ed0fa7a59b4bc6633d388415f482ed9cbc46\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/front_door-1.0.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.68\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.3\"\n },\n - \ \"sha256Digest\": \"e483de77921937c210e03ed32e161d0384f162c8b253bd03fe8da1927b4160d7\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/front_door-1.0.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.68\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.4\"\n },\n - \ \"sha256Digest\": \"49f509e8b56f4a1ef1870bac7273376df5e7fbfe1c25e10cf236e9448d66683c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/front_door-1.0.5-py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.5-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.68\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.5\"\n },\n - \ \"sha256Digest\": \"cd55a87740de19cbd66444bdb398fd4a64115aeff92d52d2704a19ea2f083c60\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/front_door-1.0.6-py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.6-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.68\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.6\"\n },\n - \ \"sha256Digest\": \"fbf965d7146884a87f481138dc06153dc95fd486f9dfeb40c1f11ce4667e203e\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/front_door-1.0.7-py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.7-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.68\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.7\"\n },\n - \ \"sha256Digest\": \"9a97ac67c089d1e3a753fa55fa80e44b8f8a89bcae42442c19e34b035ae96231\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/front_door-1.0.8-py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.8-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.68\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.8\"\n },\n - \ \"sha256Digest\": \"ccc7b5eba917945af589fed41dd6435eb1fe96385ae0a80c1b3bbb4db03b77a5\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/front_door-1.0.9-py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.9-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.68\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.9\"\n },\n - \ \"sha256Digest\": \"064aa0c647e0dd320fd1eba50257387fd27e125838a2cf5b58121cc1c5eefc45\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/front_door-1.0.11-py3-none-any.whl\",\n - \ \"filename\": \"front_door-1.0.11-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.68\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/front-door\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"front-door\",\n \"summary\": \"Manage networking Front - Doors.\",\n \"version\": \"1.0.11\"\n },\n - \ \"sha256Digest\": \"7f9ea186e512e6a81f3199a18cd19b5065cf9f17faedacd2936e24350ee7be14\"\n - \ }\n ],\n \"fzf\": [\n {\n \"downloadUrl\": - \"https://pahealy.blob.core.windows.net/azext-fzf/fzf-1.0.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"fzf-1.0.2-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.isPreview\": - false,\n \"azext.maxCliCoreVersion\": \"2.99.0\",\n \"azext.minCliCoreVersion\": - \"2.9.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"patrick.healy@microsoft.com\",\n - \ \"name\": \"Patrick W. Healy\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/phealy/azure-cli-fzf\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"fzf\",\n \"summary\": \"Microsoft Azure Command-Line - Tools fzf Extension\",\n \"version\": \"1.0.2\"\n },\n - \ \"sha256Digest\": \"87fc41624d52af36251c67f8f307e4e3b3789f8664e917d6d5bf4305fbb64e6d\"\n - \ }\n ],\n \"guestconfig\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/guestconfig-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"guestconfig-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/guestconfig\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"guestconfig\",\n \"summary\": \"Microsoft Azure Command-Line - Tools GuestConfigurationClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"0cf21ef88d49458157dae77e5bb25dfdfff8c12e76d15a19d468b408f4ab61c5\"\n - \ }\n ],\n \"hack\": [\n {\n \"downloadUrl\": - \"https://azhackcli.blob.core.windows.net/whl/hack-0.4.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"hack-0.4.2-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"chrhar@microsoft.com\",\n - \ \"name\": \"Christopher Harrison\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"hack\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Hack Extension\",\n \"version\": \"0.4.2\"\n },\n - \ \"sha256Digest\": \"6b91fae1e3f102bcafd342055e2c743af7231925f2a3a9878db486869f97499c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/hack-0.4.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"hack-0.4.3-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"Programming Language :: Python :: 3.7\",\n \"Programming - Language :: Python :: 3.8\",\n \"Programming Language - :: Python :: 3.9\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"chrhar@microsoft.com\",\n \"name\": \"Christopher - Harrison\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/hack\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"hack\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Hack Extension\",\n \"version\": \"0.4.3\"\n },\n - \ \"sha256Digest\": \"bd608002fbab185c137cbbe4de73f7dbc1a438236c96ea53ddc22e27aa7fa013\"\n - \ }\n ],\n \"hardware-security-modules\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/hardware_security_modules-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"hardware_security_modules-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"hardware-security-modules\",\n \"summary\": \"Microsoft - Azure Command-Line Tools AzureDedicatedHSMResourceProvider Extension\",\n - \ \"version\": \"0.1.0\"\n },\n \"sha256Digest\": - \"dafa526a4bce243940432e91f6f28d2254bdcc1a90eaa0f097493f9d79a23b36\"\n }\n - \ ],\n \"healthbot\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/healthbot-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"healthbot-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.15.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/healthbot\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"healthbot\",\n \"summary\": \"Microsoft Azure Command-Line - Tools HealthbotClient Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"9134fad2511516e714a5db346d63865af0badf0599ade3f1c15faca0055585a3\"\n - \ }\n ],\n \"healthcareapis\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/healthcareapis-0.1.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"healthcareapis-0.1.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"healthcareapis\",\n \"summary\": \"Microsoft Azure Command-Line - Tools HealthCareApis Extension\",\n \"version\": \"0.1.3\"\n - \ },\n \"sha256Digest\": \"2bc0f7c9642cb0afe682218761205d2b7ffe842a397fd679ad462506f2846ce0\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/healthcareapis-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"healthcareapis-0.2.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"healthcareapis\",\n \"summary\": \"Microsoft Azure Command-Line - Tools HealthcareApisManagementClient Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"460655a4287a7e4ecf69fac32c95628df9ce776a802f061a81f54f7d89aca0ba\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/healthcareapis-0.3.0-py3-none-any.whl\",\n - \ \"filename\": \"healthcareapis-0.3.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/healthcareapis\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"healthcareapis\",\n \"summary\": \"Microsoft Azure Command-Line - Tools HealthcareApisManagementClient Extension\",\n \"version\": - \"0.3.0\"\n },\n \"sha256Digest\": \"6dcb79765e87026db4f6e09f4a85e9d6a523fb9928a5586c3cb5e16cc1e1f3be\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/healthcareapis-0.3.1-py3-none-any.whl\",\n - \ \"filename\": \"healthcareapis-0.3.1-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/healthcareapis\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"healthcareapis\",\n \"summary\": \"Microsoft Azure Command-Line - Tools HealthcareApisManagementClient Extension\",\n \"version\": - \"0.3.1\"\n },\n \"sha256Digest\": \"c1804f41528fdfb2ccc355a3a7e28c961fb1a783c767d855b886db0483897e33\"\n - \ }\n ],\n \"hpc-cache\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/hpc_cache-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"hpc_cache-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"hpc-cache\",\n \"summary\": \"Microsoft Azure Command-Line - Tools StorageCache Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"0961683cd21f09622399f54b62389fc5d529f861c2280c4751ae977c83da9ae0\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/hpc_cache-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"hpc_cache-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"hpc-cache\",\n \"summary\": \"Microsoft Azure Command-Line - Tools StorageCache Extension\",\n \"version\": \"0.1.1\"\n - \ },\n \"sha256Digest\": \"16f3648054ccadb1d8e3110ac7febd238f1583b1c559cd19395096e9b7588be4\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/hpc_cache-0.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"hpc_cache-0.1.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/hpc-cache\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"hpc-cache\",\n \"summary\": \"Microsoft Azure Command-Line - Tools StorageCache Extension\",\n \"version\": \"0.1.2\"\n - \ },\n \"sha256Digest\": \"6ca5b80e7c705bca73ec1ecfc791d82721fa19d12e4449be4d27933901a9e471\"\n - \ }\n ],\n \"image-copy-extension\": [\n {\n - \ \"downloadUrl\": \"https://files.pythonhosted.org/packages/48/6f/7fa75dfa7c015c0b58f18473b4aa8d565be8606d9740d4442b32b17df913/image_copy_extension-0.2.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"image_copy_extension-0.2.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.24\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"tamir.kamara@microsoft.com\",\n \"name\": - \"Tamir Kamara\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"image-copy-extension\",\n \"summary\": \"Support for - copying managed vm images between regions\",\n \"version\": - \"0.2.3\"\n },\n \"sha256Digest\": \"8a88c2600f9dad5f38ca6128ab8efaa38a974fbb7fe8c875fc50b7bb7d37bd54\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/image_copy_extension-0.2.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"image_copy_extension-0.2.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.24\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"tamir.kamara@microsoft.com\",\n - \ \"name\": \"Tamir Kamara\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"image-copy-extension\",\n \"summary\": \"Support for - copying managed vm images between regions\",\n \"version\": - \"0.2.4\"\n },\n \"sha256Digest\": \"174e2437b20a979257a93017209ba1ff5d1969ea1eca7f3cbe57e8d11c75f4f4\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/image_copy_extension-0.2.5-py2.py3-none-any.whl\",\n - \ \"filename\": \"image_copy_extension-0.2.5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.24\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"tamir.kamara@microsoft.com\",\n - \ \"name\": \"Tamir Kamara\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"image-copy-extension\",\n \"summary\": \"Support for - copying managed vm images between regions\",\n \"version\": - \"0.2.5\"\n },\n \"sha256Digest\": \"14216b9664365a03ccd6d2cb469a32ab1e38f1d1e9b2735d27725cdc5300b148\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/image_copy_extension-0.2.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"image_copy_extension-0.2.6-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.24\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"tamir.kamara@microsoft.com\",\n - \ \"name\": \"Tamir Kamara\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"image-copy-extension\",\n \"summary\": \"Support for - copying managed vm images between regions\",\n \"version\": - \"0.2.6\"\n },\n \"sha256Digest\": \"69cc6fac34625677c94fb276dc97caca8769295db51dc480da4b194a0ec94720\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/image_copy_extension-0.2.7-py2.py3-none-any.whl\",\n - \ \"filename\": \"image_copy_extension-0.2.7-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.24\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"tamir.kamara@microsoft.com\",\n - \ \"name\": \"Tamir Kamara\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"image-copy-extension\",\n \"summary\": \"Support for - copying managed vm images between regions\",\n \"version\": - \"0.2.7\"\n },\n \"sha256Digest\": \"565cf4411a6b12d2940365a7d4d578422709a2c38f95a253e5f6e82ab9bd6bdd\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/image_copy_extension-0.2.8-py2.py3-none-any.whl\",\n - \ \"filename\": \"image_copy_extension-0.2.8-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.24\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"tamir.kamara@microsoft.com\",\n - \ \"name\": \"Tamir Kamara\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/image-copy\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"image-copy-extension\",\n \"summary\": \"Support for - copying managed vm images between regions\",\n \"version\": - \"0.2.8\"\n },\n \"sha256Digest\": \"b57f554b77e68d414b9f79016311a3e5c180f76206557909319edcad9ada5240\"\n - \ }\n ],\n \"import-export\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/import_export-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"import_export-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"import-export\",\n \"summary\": \"Microsoft Azure Command-Line - Tools StorageImportExport Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"6a5a1a1a23c7ff90e01b1f0a33d04874d750845e6cda56badce4ce99a518ef55\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/import_export-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"import_export-0.1.1-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"import-export\",\n \"summary\": \"Microsoft Azure Command-Line - Tools StorageImportExport Extension\",\n \"version\": \"0.1.1\"\n - \ },\n \"sha256Digest\": \"0680948362e12138c9582e68e471533482749bd660bfe3c8c2a4d856e90927b0\"\n - \ }\n ],\n \"interactive\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/interactive-0.4.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"interactive-0.4.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"2.0.61\",\n \"azext.minCliCoreVersion\": - \"2.0.50.dev0\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"interactive\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"prompt-toolkit (~=1.0.15)\"\n ]\n - \ }\n ],\n \"summary\": - \"Microsoft Azure Command-Line Interactive Shell\",\n \"version\": - \"0.4.1\"\n },\n \"sha256Digest\": \"22b940493972b77c62606b0ae3c834283209d8619bb740e69dd115530a328e3b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/interactive-0.4.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"interactive-0.4.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.62\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"interactive\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"prompt-toolkit (~=1.0.15)\"\n ]\n - \ }\n ],\n \"summary\": - \"Microsoft Azure Command-Line Interactive Shell\",\n \"version\": - \"0.4.3\"\n },\n \"sha256Digest\": \"ba78a45ec9753a42e1e805dc9cf3b309df264c6201dfd1dabcc6c00b22599fe8\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/interactive-0.4.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"interactive-0.4.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.62\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\"\n - \ ],\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"interactive\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"prompt-toolkit (~=1.0.15)\"\n ]\n - \ }\n ],\n \"summary\": - \"Microsoft Azure Command-Line Interactive Shell\",\n \"version\": - \"0.4.4\"\n },\n \"sha256Digest\": \"1e66bc1f117fac90f320c072a08f527b8570f5a6725670a1fb4d05f2c7eb7a31\"\n - \ }\n ],\n \"internet-analyzer\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/internet_analyzer-0.1.0rc5-py2.py3-none-any.whl\",\n - \ \"filename\": \"internet_analyzer-0.1.0rc5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"internet-analyzer\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Internet Analyzer Extension\",\n \"version\": - \"0.1.0rc5\"\n },\n \"sha256Digest\": \"7e5ee753abece69fb917f3a96be4a3d8117ffbbbd75d18c2e54c74c0fe2b952e\"\n - \ }\n ],\n \"ip-group\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/ip_group-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"ip_group-0.1.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ip-group\",\n \"summary\": \"Microsoft Azure Command-Line - Tools IpGroup Extension\",\n \"version\": \"0.1.1\"\n },\n - \ \"sha256Digest\": \"477d7f58fe44a4ecb0ced3497262d7ccd8bb7677d70582b6fccf645e91d25ad4\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/ip_group-0.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"ip_group-0.1.2-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"Programming Language - :: Python :: 3.7License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"ip-group\",\n \"summary\": \"Microsoft Azure Command-Line - Tools IpGroup Extension\",\n \"version\": \"0.1.2\"\n },\n - \ \"sha256Digest\": \"afba2d8a8a612863b63f504d6cff6d559610b961e4c77dc2fd49b9fe03ec67a2\"\n - \ }\n ],\n \"k8s-configuration\": [\n {\n - \ \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/k8s_configuration-1.0.0-py3-none-any.whl\",\n - \ \"filename\": \"k8s_configuration-1.0.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.15.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/k8s-configuration\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"k8s-configuration\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"pycryptodome (~=3.9.8)\"\n ]\n - \ }\n ],\n \"summary\": - \"Microsoft Azure Command-Line Tools K8s-configuration Extension\",\n \"version\": - \"1.0.0\"\n },\n \"sha256Digest\": \"80b79b09d9caa8e1813dad25703c442aec35e01d60a3ea13389ebaec3e94933c\"\n - \ }\n ],\n \"k8sconfiguration\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/k8sconfiguration-0.1.7-py2.py3-none-any.whl\",\n - \ \"filename\": \"k8sconfiguration-0.1.7-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"k8sconfiguration\",\n \"summary\": \"Microsoft Azure - Command-Line Tools K8sconfiguration Extension\",\n \"version\": - \"0.1.7\"\n },\n \"sha256Digest\": \"6440f1f1bebda0b3288ab95654a107e3f803d1ad2a23276cd5e27abe6a71dd60\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/k8sconfiguration-0.1.8-py2.py3-none-any.whl\",\n - \ \"filename\": \"k8sconfiguration-0.1.8-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"k8sconfiguration\",\n \"summary\": \"Microsoft Azure - Command-Line Tools K8sconfiguration Extension\",\n \"version\": - \"0.1.8\"\n },\n \"sha256Digest\": \"9d4b9d9dfcd8793297af670de10254804f5ce6d1bac6b0ad8e872cc5fdc5f761\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/k8sconfiguration-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"k8sconfiguration-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/k8sconfiguration\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"k8sconfiguration\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"paramiko (~=2.6.0)\",\n \"pycryptodome - (~=3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools K8sconfiguration - Extension\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"ae3ec26beb84e821a169f02479cfc337b82141738bef7a0b09422d3676add9ae\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/k8sconfiguration-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"k8sconfiguration-0.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/k8sconfiguration\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"k8sconfiguration\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"paramiko (~=2.6.0)\",\n \"pycryptodome - (~=3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools K8sconfiguration - Extension\",\n \"version\": \"0.2.1\"\n },\n - \ \"sha256Digest\": \"a9ae3e56d1289c340ebcb2790775801a9a932d6f5edba66689bada001e35f9ba\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/k8sconfiguration-0.2.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"k8sconfiguration-0.2.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/k8sconfiguration\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"k8sconfiguration\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"paramiko (~=2.6.0)\",\n \"pycryptodome - (~=3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools K8sconfiguration - Extension\",\n \"version\": \"0.2.2\"\n },\n - \ \"sha256Digest\": \"8692905679d9a800326aea7698818778b6f0ce4761232e20e8fc39c67ccb28d3\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/k8sconfiguration-0.2.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"k8sconfiguration-0.2.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/k8sconfiguration\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"k8sconfiguration\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"paramiko (~=2.6.0)\",\n \"pycryptodome - (~=3.9.8)\"\n ]\n }\n ],\n - \ \"summary\": \"Microsoft Azure Command-Line Tools K8sconfiguration - Extension\",\n \"version\": \"0.2.3\"\n },\n - \ \"sha256Digest\": \"65f87fadf798e66d87bfd3add12807140523cc324d5ca3dcf03bee2ce6e0839f\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/k8sconfiguration-0.2.4-py3-none-any.whl\",\n - \ \"filename\": \"k8sconfiguration-0.2.4-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/k8sconfiguration\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"k8sconfiguration\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"pycryptodome (~=3.9.8)\"\n ]\n - \ }\n ],\n \"summary\": - \"Microsoft Azure Command-Line Tools K8sconfiguration Extension\",\n \"version\": - \"0.2.4\"\n },\n \"sha256Digest\": \"39940729eb7820da63d543861395b11552e86673a884bd9d1603a0fbf09e30d7\"\n - \ }\n ],\n \"kusto\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/kusto-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"kusto-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"kusto\",\n \"summary\": \"Microsoft Azure Command-Line - Tools KustoManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"ffa47cb6f8f850e75412dffa6a5e52f857d5e7ca217322ce176eea81d24768e8\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/kusto-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"kusto-0.1.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/kusto\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"kusto\",\n \"summary\": \"Microsoft Azure Command-Line - Tools KustoManagementClient Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"e6febb41b7a6dc6ec752825fe2af9506ff40c227bfcea9a3af5e6ded115003d1\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/kusto-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"kusto-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/kusto\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"kusto\",\n \"summary\": \"Microsoft Azure Command-Line - Tools KustoManagementClient Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"5738e9b48c17008688080a6b3cfd37b67dfe597a538c874ec75dddcc8e18935a\"\n - \ }\n ],\n \"log-analytics\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics-0.1.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"log_analytics-0.1.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/log-analytics\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"log-analytics\",\n \"summary\": \"Support for Azure Log - Analytics query capabilities.\",\n \"version\": \"0.1.4\"\n - \ },\n \"sha256Digest\": \"6f4789fff8581a52e13bcf8f13fdc16b47662fac69e1fc3ea49280de1a8e65bc\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"log_analytics-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"aleldeib@microsoft.com\",\n \"name\": - \"Ace Eldeib\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/log-analytics\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"log-analytics\",\n \"summary\": \"Support for Azure Log - Analytics query capabilities.\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"28a24f605e80c6fc56408add14981e5b4572077f2b5f0c55208f4105624cc91b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"log_analytics-0.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/log-analytics\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"log-analytics\",\n \"summary\": \"Support for Azure Log - Analytics query capabilities.\",\n \"version\": \"0.2.1\"\n - \ },\n \"sha256Digest\": \"23751654f76334e97c3ae3b10dd4e6896785cbf5c7c9442d3f979ebd6b9c6c21\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics-0.2.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"log_analytics-0.2.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"aleldeib@microsoft.com\",\n - \ \"name\": \"Ace Eldeib\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/log-analytics\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"log-analytics\",\n \"summary\": \"Support for Azure Log - Analytics query capabilities.\",\n \"version\": \"0.2.2\"\n - \ },\n \"sha256Digest\": \"c04c42a26d50db82d14f76e209184b18d4cce17b458817ac607e3ff975641eb2\"\n - \ }\n ],\n \"log-analytics-solution\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics_solution-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"log_analytics_solution-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.4\",\n \"Programming - Language :: Python :: 3.5\",\n \"Programming Language - :: Python :: 3.6\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"log-analytics-solution\",\n \"summary\": \"Microsoft - Azure Command-Line Tools Operations Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"844bf0a063b4e244bfe14e215c82d7d70327540b7bf446b7cb1d97ebb8a98119\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics_solution-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"log_analytics_solution-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.4\",\n \"Programming - Language :: Python :: 3.5\",\n \"Programming Language - :: Python :: 3.6\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"log-analytics-solution\",\n \"summary\": \"Support for - Azure Log Analytics Solution\",\n \"version\": \"0.1.1\"\n - \ },\n \"sha256Digest\": \"0c85556a82ef5850c9f90b58380c5cde6a70a2bd2a464c0a8e429c77152a87bd\"\n - \ }\n ],\n \"logic\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/logic-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"logic-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"logic\",\n \"summary\": \"Microsoft Azure Command-Line - Tools LogicManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"b02dea64e03adb7cf17a7afafc28844949c0f3a030f4eb005059452f0ac68040\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/logic-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"logic-0.1.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/logic\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"logic\",\n \"summary\": \"Microsoft Azure Command-Line - Tools LogicManagementClient Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"906b43b34be4ed38c883a4f2031ff7b2b0547f51b16c8553f050afc2986ec939\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/logic-0.1.2-py3-none-any.whl\",\n - \ \"filename\": \"logic-0.1.2-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.15.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/logic\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"logic\",\n \"summary\": \"Microsoft Azure Command-Line - Tools LogicManagementClient Extension\",\n \"version\": - \"0.1.2\"\n },\n \"sha256Digest\": \"35127cc723edf1c6311354326ebae9aa5b0d72d11141fddf3efc8fb84eadac81\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/logic-0.1.3-py3-none-any.whl\",\n - \ \"filename\": \"logic-0.1.3-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.15.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/logic\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"logic\",\n \"summary\": \"Microsoft Azure Command-Line - Tools LogicManagementClient Extension\",\n \"version\": - \"0.1.3\"\n },\n \"sha256Digest\": \"38a1e8285fa8ad34632094b749aa1bea703440c946f01fc546306b8e934f389a\"\n - \ }\n ],\n \"maintenance\": [\n {\n \"downloadUrl\": - \"https://mrpcliextensionrelease.blob.core.windows.net/cliextension/maintenance-1.0.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"maintenance-1.0.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.0.47\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"abkmr@microsoft.com\",\n \"name\": \"Abhishek - Kumar\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"maintenance\",\n \"summary\": \"Support for Azure maintenance - management.\",\n \"version\": \"1.0.1\"\n },\n - \ \"sha256Digest\": \"3e0fb5392bd29e53e7afde543d1a0ef5d33a6032f01322fd75b7afe7016c34fc\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/maintenance-1.1.0-py3-none-any.whl\",\n - \ \"filename\": \"maintenance-1.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/maintenance\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"maintenance\",\n \"summary\": \"Microsoft Azure Command-Line - Tools MaintenanceClient Extension\",\n \"version\": \"1.1.0\"\n - \ },\n \"sha256Digest\": \"351c717a37e6fb9b29d22cdca3b0744a452a1116e83f9e57e794464311708c97\"\n - \ }\n ],\n \"managementpartner\": [\n {\n - \ \"downloadUrl\": \"https://files.pythonhosted.org/packages/28/08/0fde582cf50eaf1ef304b35674b9b22f6731d95b2e41339eba4d35583b18/managementpartner-0.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"managementpartner-0.1.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"classifiers\": [\n - \ \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"jefl@microsoft.com\",\n \"name\": - \"Jeffrey Li\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.29.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"managementpartner\",\n \"summary\": \"Support for Management - Partner preview\",\n \"version\": \"0.1.2\"\n },\n - \ \"sha256Digest\": \"f7ec0984b4d5a4c9192aa3ab6b78c867fc38cf620effef1804d89c9d1d9f204f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/managementpartner-0.1.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"managementpartner-0.1.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"jefl@microsoft.com\",\n \"name\": - \"Jeffrey Li\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"managementpartner\",\n \"summary\": \"Support for Management - Partner preview\",\n \"version\": \"0.1.3\"\n },\n - \ \"sha256Digest\": \"22ddf4b1cdc77e99262cb6089c4d96040065828a1d38a2709fdb945d3c851839\"\n - \ }\n ],\n \"mesh\": [\n {\n \"downloadUrl\": - \"https://meshcli.blob.core.windows.net/cli/mesh-0.10.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"mesh-0.10.6-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"mesh\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"sfmergeutility (==0.1.6)\"\n ]\n - \ }\n ],\n \"summary\": - \"Support for Microsoft Azure Service Fabric Mesh - Public Preview\",\n \"version\": - \"0.10.6\"\n },\n \"sha256Digest\": \"07b6356cd15294c0bc0b31cfde1cdb2b92516b00728980d7a53557bb49273842\"\n - \ }\n ],\n \"mixed-reality\": [\n {\n \"downloadUrl\": - \"https://test-files.pythonhosted.org/packages/e4/fa/14628eb512ef4f0c38e4e6c8ee2d0624e03d352ca0ec1b1167a32f9de9a3/mixed_reality-0.0.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"mixed_reality-0.0.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"classifiers\": [\n - \ \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"xiangyul@microsoft.com\",\n - \ \"name\": \"Xiangyu Luo\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"mixed-reality\",\n \"summary\": \"Mixed Reality Azure - CLI Extension.\",\n \"version\": \"0.0.1\"\n },\n - \ \"sha256Digest\": \"c5b7ef47d8db578920bcbda371a47edd19f8f681088823c2622dcb9332417587\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/mixed_reality-0.0.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"mixed_reality-0.0.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.30\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"xiangyul@microsoft.com\",\n - \ \"name\": \"Xiangyu Luo\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"mixed-reality\",\n \"summary\": \"Mixed Reality Azure - CLI Extension.\",\n \"version\": \"0.0.2\"\n },\n - \ \"sha256Digest\": \"30449391c1d1e9d67210d0ef81109a11a0f74a24a6f07644c17aed58cf056173\"\n - \ }\n ],\n \"monitor-control-service\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/monitor_control_service-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"monitor_control_service-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/monitor-control-service\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"monitor-control-service\",\n \"summary\": \"Microsoft - Azure Command-Line Tools MonitorClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"71604e21a29c5bd84916a890cdf6e09dd7a0623867871d5ac8a0f5c2bed179dd\"\n - \ }\n ],\n \"netappfiles-preview\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/netappfiles_preview-0.3.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"netappfiles_preview-0.3.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.56\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/netappfiles-preview\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"netappfiles-preview\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"msrest\"\n ]\n - \ }\n ],\n \"summary\": - \"Provides a preview for upcoming Azure NetApp Files (ANF) features.\",\n - \ \"version\": \"0.3.2\"\n },\n \"sha256Digest\": - \"d581bfefe3eb7fbceeed12c192ebdf5993fcf04ede7267d053aa416596bd0b53\"\n }\n - \ ],\n \"next\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/next-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"next-0.1.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.19.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"next\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Next Extension\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"038d673501dd3b3c04314d0f69f01cfdd52e6ca3f44820a45d20dc3dd58317dd\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/next-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"next-0.1.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.20.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"next\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Next Extension\",\n \"version\": \"0.1.1\"\n },\n - \ \"sha256Digest\": \"dee069e3a0efafbec8154fbf91ced5cee1f782599a726ac5937b9adc297d3c8a\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/next-0.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"next-0.1.2-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.20.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"next\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Next Extension\",\n \"version\": \"0.1.2\"\n },\n - \ \"sha256Digest\": \"3bd9bc4ddf96fdb0ce17da57700fd40fc2a7aca56c0277ff95376256baeab4c8\"\n - \ }\n ],\n \"notification-hub\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/notification_hub-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"notification_hub-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"notification-hub\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Notification Hub Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"6f8ae57c43f53380db7944d5244121b3b757f996f6ecca394696106fd2c1d875\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/notification_hub-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"notification_hub-0.2.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"notification-hub\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Notification Hub Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"a8d0333e6c8ecc8846dcf162f01ce3d1f7a84cc4a431ec44cb5f48bd498b6d1b\"\n - \ }\n ],\n \"offazure\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/offazure-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"offazure-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.15.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/offazure\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"offazure\",\n \"summary\": \"Microsoft Azure Command-Line - Tools AzureMigrateV2 Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"1918817070ae9e0ceef57b93366d18b6e8bf577fd632e7da999e1e2abbb53656\"\n - \ }\n ],\n \"peering\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/peering-0.1.0rc2-py2.py3-none-any.whl\",\n - \ \"filename\": \"peering-0.1.0rc2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"peering\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Peering Extension\",\n \"version\": \"0.1.0rc2\"\n - \ },\n \"sha256Digest\": \"1b73d60427e5e84971e244a5884b7f14e0e05e65792e9ecc7483695d1b596992\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/peering-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"peering-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"peering\",\n \"summary\": \"Microsoft Azure Command-Line - Tools PeeringManagementClient Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"dd301c22107f961692a4acdbb5a98d28a7e86e7fb8619f2322884a2bc5507241\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/peering-0.2.1-py3-none-any.whl\",\n - \ \"filename\": \"peering-0.2.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/peering\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"peering\",\n \"summary\": \"Microsoft Azure Command-Line - Tools PeeringManagementClient Extension\",\n \"version\": - \"0.2.1\"\n },\n \"sha256Digest\": \"b068c12b47f17304af51431a2ae975339b7d4601a180e83916efae73d7c42600\"\n - \ }\n ],\n \"portal\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/portal-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"portal-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"portal\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Portal Extension\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"89fdc138db22055fc09cf30a46050205a9e842d8fe386a3d8773ea563b074083\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/portal-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"portal-0.1.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"portal\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Portal Extension\",\n \"version\": \"0.1.1\"\n },\n - \ \"sha256Digest\": \"a3fc71fd6f0390850a60947cc1bff31d6346fc3f79e3ac8947add577c10c31a3\"\n - \ }\n ],\n \"powerbidedicated\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/powerbidedicated-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"powerbidedicated-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"3.0.0\",\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"powerbidedicated\",\n \"summary\": \"Microsoft Azure - Command-Line Tools PowerBIDedicated Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"a7373b5005814f9d6d0151622c8356b37758a7548aa2fb8cad3ddc4368c5e05f\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/powerbidedicated-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"powerbidedicated-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"3.0.0\",\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/powerbidedicated\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"powerbidedicated\",\n \"summary\": \"Microsoft Azure - Command-Line Tools PowerBIDedicated Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"127cb7b69076d07254aee3b57720409455e601ad431d3e12d713d886578ce1bf\"\n - \ }\n ],\n \"providerhub\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/providerhub-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"providerhub-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.15.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/providerhub\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"providerhub\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Providerhub Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"9385d61fe18f10c379e7a7c57a1ded34dd0f5b15bcf021777e4d51d288b703fe\"\n - \ }\n ],\n \"quantum\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"quantum-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.5.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"que-contacts@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation, Quantum - Team\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"quantum\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Quantum Extension\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"ac71362fb4834e02f26644403b4aac166def6488474e4f201ce3243b12b2424f\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/quantum-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"quantum-0.2.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.5.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"que-contacts@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation, Quantum - Team\",\n \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"quantum\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Quantum Extension\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"49f14768df82cf63f8be1a4bdc69ecd531149c7603f05d1951431c006dcc3660\"\n - \ }\n ],\n \"rdbms-connect\": [\n {\n \"downloadUrl\": - \"https://azcliprod.blob.core.windows.net/cli-extensions/rdbms_connect-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"rdbms_connect-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.19.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/rdbms-connect\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"rdbms-connect\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"mycli (==1.22.2)\",\n \"pgcli - (==3.0.0)\",\n \"setproctitle (==1.2.2)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Support for testing connection to Azure - Database for MySQL & PostgreSQL servers.\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"fd80779e01d5afa74da88dda0339b9068e5ca3390d2dea78b034002c62b713b4\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/rdbms_connect-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"rdbms_connect-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.19.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/rdbms-connect\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"rdbms-connect\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"mycli (==1.22.2)\",\n \"pgcli - (==3.0.0)\",\n \"setproctitle (==1.2.2)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Support for testing connection to Azure - Database for MySQL & PostgreSQL servers.\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"83e3110a82f414274564d97ae5ba1088557376d5cc68cc358152135c283acf15\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/rdbms_connect-0.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"rdbms_connect-0.1.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.19.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/rdbms-connect\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"rdbms-connect\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"mycli (==1.22.2)\",\n \"pgcli - (==3.0.0)\",\n \"setproctitle (==1.2.2)\"\n - \ ]\n }\n ],\n - \ \"summary\": \"Support for testing connection to Azure - Database for MySQL & PostgreSQL servers.\",\n \"version\": - \"0.1.2\"\n },\n \"sha256Digest\": \"c738cd82edc1c9ad31ba0250eab982ef344d01e50e11dfec9c5b96ccdd5d1b6b\"\n - \ }\n ],\n \"redisenterprise\": [\n {\n - \ \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/redisenterprise-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"redisenterprise-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/redisenterprise\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"redisenterprise\",\n \"summary\": \"Microsoft Azure Command-Line - Tools RedisEnterpriseManagementClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"22b1965e5a148ce4eb2d45bf48880caa21becb165810b1b93658886cd5e39515\"\n - \ }\n ],\n \"resource-graph\": [\n {\n - \ \"downloadUrl\": \"https://files.pythonhosted.org/packages/bd/c1/3df175a9a6a0c6aeae1ca1a7499955d75dd03452b5ba75f6df01a02b7c7f/resource_graph-1.0.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"resource_graph-1.0.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.45\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"ilidemi@microsoft.com\",\n \"name\": - \"Ilia Demianenko\",\n \"role\": \"author\"\n - \ },\n {\n \"email\": - \"earc@microsoft.com\",\n \"name\": \"Azure - Resource Graph\",\n \"role\": \"maintainer\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/resource-graph\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"resource-graph\",\n \"summary\": \"Support for querying - Azure resources with Resource Graph.\",\n \"version\": - \"1.0.0\"\n },\n \"sha256Digest\": \"76f10264a7c6d78664c34e73d390565ce66e639fd39ffdfad149da8fc499112d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/resource_graph-1.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"resource_graph-1.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.4\",\n \"Programming - Language :: Python :: 3.5\",\n \"Programming Language - :: Python :: 3.6\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"description_content_type\": - \"text/markdown\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"ilidemi@microsoft.com\",\n - \ \"name\": \"Ilia Demianenko\",\n \"role\": - \"author\"\n },\n {\n - \ \"email\": \"earc@microsoft.com\",\n \"name\": - \"Azure Resource Graph\",\n \"role\": \"maintainer\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/resource-graph\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"resource-graph\",\n \"summary\": \"Support for querying - Azure resources with Resource Graph.\",\n \"version\": - \"1.1.0\"\n },\n \"sha256Digest\": \"1eaef63df8a22666f88f322829f3470efb790e36d35376c1705b40fb03464549\"\n - \ }\n ],\n \"resource-mover\": [\n {\n - \ \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/resource_mover-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"resource_mover-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.15.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/resource-mover\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"resource-mover\",\n \"summary\": \"Microsoft Azure Command-Line - Tools ResourceMoverServiceAPI Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"f86ecfcde11e6016da9b107e191b1feaba6896f395d989e5962c6fe6ac34c593\"\n - \ }\n ],\n \"sap-hana\": [\n {\n \"downloadUrl\": - \"https://github.com/Azure/azure-hanaonazure-cli-extension/releases/download/0.6.4/sap_hana-0.6.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"sap_hana-0.6.4-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.0.46\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-hanaonazure-cli-extension\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"sap-hana\",\n \"summary\": \"Additional commands for - working with SAP HanaOnAzure instances.\",\n \"version\": - \"0.6.4\"\n },\n \"sha256Digest\": \"352266a3e0857574c25f0d1930bfb2c0d79329bee2400f6431a37c6162337b12\"\n - \ }\n ],\n \"scheduled-query\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/scheduled_query-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"scheduled_query-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"scheduled-query\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Scheduled_query Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"5529213e41055f70c53407498b618c7d48cea70a0ce0aca069e0dd9bb818f549\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/scheduled_query-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"scheduled_query-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"scheduled-query\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Scheduled_query Extension\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"d9cba80c47b0b8b3e3ad86a257eb53598611698efab6687a11f81c2b036b1083\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/scheduled_query-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"scheduled_query-0.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"scheduled-query\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Scheduled_query Extension\",\n \"version\": \"0.2.1\"\n - \ },\n \"sha256Digest\": \"f7a7ee6f9c11260c8cfff54f36ec68b2a3b235767ceb8ff281280523f2eda696\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/scheduled_query-0.2.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"scheduled_query-0.2.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"scheduled-query\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Scheduled_query Extension\",\n \"version\": \"0.2.2\"\n - \ },\n \"sha256Digest\": \"17f2dfaa317f735eee708b4365e107a29b3fb796f8d6a9505388ec30c73bf930\"\n - \ }\n ],\n \"sentinel\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/sentinel-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"sentinel-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/sentinel\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"sentinel\",\n \"summary\": \"Microsoft Azure Command-Line - Tools SecurityInsights Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"0c0de10af8cc7c91704dc29afa2bc178f18bf4e28612d6d0c5d7c594bd05d4c9\"\n - \ }\n ],\n \"spring-cloud\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"2.1.0\",\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"1042caa1c3b6c85c2e5360bf57de4d26f71afd80ecae6b14cf45fbfe73b5cf0e\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"2.1.0\",\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.1.1\"\n - \ },\n \"sha256Digest\": \"f42d8c99ace9b4df29eea79ac7a588b1fcaecd381b1a80c7dbdd920756f8d209\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"2.1.0\",\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"b39aa8c49b316b1870e79db0526be2db772b179f9f517f72af898d9c3cc3310d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.maxCliCoreVersion\": \"2.1.0\",\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.2.1\"\n - \ },\n \"sha256Digest\": \"dfb974346cf9f62d8f9564756d6661cd758904d1e7035ca61c7227d6b0fc6cf1\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.2.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.2.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.2.2\"\n - \ },\n \"sha256Digest\": \"ab81ea74ecb86edaa1b4e5938e1136dbf6788b237b141c5905b121646edd9f5b\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.2.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.2.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.2.3\"\n - \ },\n \"sha256Digest\": \"c4af1e193256ae2b04fc9c46a414c3203944b458b2a8959654c55450ec9ea76d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.2.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.2.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.2.4\"\n - \ },\n \"sha256Digest\": \"9e18d1d44c7f63c970bbc70d29f6c5719c4062c5defa5a63165db13d8623fc70\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.2.5-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.2.5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.2.5\"\n - \ },\n \"sha256Digest\": \"281fc1babe47793e0bcccbe004ea4771802038eead1e8c3b553461b8062be912\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.2.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.2.6-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.2.6\"\n - \ },\n \"sha256Digest\": \"f3fdb9cd98dcd887a7f84dcc5eff38c8b6384b464fa0734965df9f379acaacd8\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.3.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.3.0\"\n - \ },\n \"sha256Digest\": \"9c719fe1c6f539ba663283bd2eb8464aa9bcbf2d35617ac58408c6133f824f38\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.3.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.3.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.3.1\"\n - \ },\n \"sha256Digest\": \"a720deecb978406fb081c148078ee8831780cefefe965556852c00f8e1fc36c7\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.4.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.4.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.4.0\"\n - \ },\n \"sha256Digest\": \"c09d2a188fe5e41f7fd9835c1efd0c3065b55f2b9efde39b6f2ff399be567eec\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.5.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.5.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.5.0\"\n - \ },\n \"sha256Digest\": \"b2a36656b073f9cf588755508757fcd2cd7e0f8d573b7e43fc5fa3adb315a063\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-0.5.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-0.5.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"0.5.1\"\n - \ },\n \"sha256Digest\": \"79fd3b7b6928ea53b63a040412420398e138097e960a3afdfa76da051f140f19\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-1.0.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-1.0.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"1.0.0\"\n - \ },\n \"sha256Digest\": \"698aa10606de4ec9eec580747a2d6d38c755633261241d75618badc53fe1e0f4\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-1.0.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-1.0.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"1.0.1\"\n - \ },\n \"sha256Digest\": \"d2b766d594c89a19abba3a7b2df6224d1af15fd9202b31fe5d57b9d9970b399c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-1.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-1.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"1.1.0\"\n - \ },\n \"sha256Digest\": \"a4fa97d6241fab2a66d8dd80e0d6a68ea17d849bb7404349ad6203c71fb89ba9\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-1.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-1.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"1.1.1\"\n - \ },\n \"sha256Digest\": \"ed63f4464f80e47df33b336ede149e1bc0f3b985dd033ee3541fffbaa9ad5f59\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-1.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-1.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"1.2.0\"\n - \ },\n \"sha256Digest\": \"241c7485bfc3792efe8cd728df2ce8aa3a52eb078b7eab43a1dd2fd6322b413a\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.0.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.0.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.0.0\"\n - \ },\n \"sha256Digest\": \"c1e2931b439dea0bea043aec7817b454d510c944552a7bf084fd9916ab513142\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.0.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.0.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.0.1\"\n - \ },\n \"sha256Digest\": \"82e4d6c55a28dd7de155504e6836981a390e26562ca684bdf9240324bf428665\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.1.0\"\n - \ },\n \"sha256Digest\": \"4d6714f950fc8f3097d4ec1e1a6eb52f564f3fd543195cb3e5da2b47f187fa92\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.1.1\"\n - \ },\n \"sha256Digest\": \"a9775975158941a59479571440dcf6555c6dabfff576ed5ffaf98bd25e49fe12\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.1.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.1.2\"\n - \ },\n \"sha256Digest\": \"a07a8718562169a6ec1524e2a111ab5f926b05db91f484ae2ff2397218afe171\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.2.0\"\n - \ },\n \"sha256Digest\": \"88ba35a78eb607d24d1c6ac72aa770990e961e3db17ed70278d99a60eee8830e\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.2.1\"\n - \ },\n \"sha256Digest\": \"d12cf4e756b518d4caf799fc59e312a28fd105fe5c5ddaa62ceb22929ec2dc63\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/spring_cloud-2.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"spring_cloud-2.3.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/spring-cloud\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"spring-cloud\",\n \"summary\": \"Microsoft Azure Command-Line - Tools spring-cloud Extension\",\n \"version\": \"2.3.0\"\n - \ },\n \"sha256Digest\": \"6c776b16405b4c01bfd8af78307914eb5f050bb3793d7bf6549b2eca645d02f4\"\n - \ }\n ],\n \"ssh\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/ssh-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"ssh-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.4.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"ryrossit@microsoft.com\",\n - \ \"name\": \"Ryan Rossiter\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/ssh\"\n - \ }\n }\n },\n - \ \"extras\": [],\n \"generator\": \"bdist_wheel - (0.30.0)\",\n \"license\": \"MIT\",\n \"metadata_version\": - \"2.0\",\n \"name\": \"ssh\",\n \"run_requires\": - [\n {\n \"requires\": [\n - \ \"cryptography (==2.8.0)\",\n \"paramiko - (==2.6.0)\"\n ]\n }\n ],\n - \ \"summary\": \"SSH into VMs\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"cf39bfcf542db4a7a3acf119f4ea71f17626eaaac7fe480d058962fec3d3ff25\"\n - \ }\n ],\n \"stack-hci\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/stack_hci-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"stack_hci-0.1.0-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/stack-hci\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"stack-hci\",\n \"summary\": \"Microsoft Azure Command-Line - Tools AzureStackHCIClient Extension\",\n \"version\": \"0.1.0\"\n - \ },\n \"sha256Digest\": \"9095702d720e24173616232ffab42bdf121dd82eeda48becd52d141f73c35bb3\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/stack_hci-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"stack_hci-0.1.1-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isExperimental\": true,\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/stack-hci\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"stack-hci\",\n \"summary\": \"Microsoft Azure Command-Line - Tools AzureStackHCIClient Extension\",\n \"version\": \"0.1.1\"\n - \ },\n \"sha256Digest\": \"dc6bc793de093c9e2be98d68379f7178ee67231058ece34bbf2f8e2d9f89f2e0\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/stack_hci-0.1.2-py3-none-any.whl\",\n - \ \"filename\": \"stack_hci-0.1.2-py3-none-any.whl\",\n \"metadata\": - {\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/stack-hci\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"stack-hci\",\n \"summary\": \"Microsoft Azure Command-Line - Tools AzureStackHCIClient Extension\",\n \"version\": \"0.1.2\"\n - \ },\n \"sha256Digest\": \"c9c2359f5684f7c59600e55b2e99cdcd913f59dc2d7e5cc7d5e493b13b1248d1\"\n - \ }\n ],\n \"storage-blob-preview\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_blob_preview-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_blob_preview-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.9.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-blob-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Storage-blob-preview Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"3407bc6ea0425aab5c5a495c447b0d9ec4f4a360f08bdfd68cfd7a6504789231\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_blob_preview-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_blob_preview-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.12.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-blob-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Storage-blob-preview Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"fc96b22fd656fcba97b8ee3283a1bead65b941aae10c174f597703ad7d8a5114\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_blob_preview-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_blob_preview-0.3.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.12.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-blob-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Storage-blob-preview Extension\",\n \"version\": - \"0.3.0\"\n },\n \"sha256Digest\": \"daec951de77a200f3479c00ebf1015534891592cfd4bbf7873c5784bdd3f57a0\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_blob_preview-0.4.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_blob_preview-0.4.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.14.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-blob-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Storage-blob-preview Extension\",\n \"version\": - \"0.4.0\"\n },\n \"sha256Digest\": \"03ef575ccf01776e99f8adb1882c77ee41278ff18901556424c753279724c9a3\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/storage_blob_preview-0.4.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_blob_preview-0.4.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.16.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-blob-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Storage-blob-preview Extension\",\n \"version\": - \"0.4.1\"\n },\n \"sha256Digest\": \"4cb5caa42e4c70db8ea5b33ad663246419003af30234f93ccef9aa2252e294d3\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/storage_blob_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_blob_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.16.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-blob-preview\",\n \"summary\": \"Microsoft Azure - Command-Line Tools Storage-blob-preview Extension\",\n \"version\": - \"0.5.0\"\n },\n \"sha256Digest\": \"a3303da3925f8ad83c8eeced02f6b8897b355a3cc249424a7e70c621ee0d3642\"\n - \ }\n ],\n \"storage-preview\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.2.8-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.2.8-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.52\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.2.8\"\n - \ },\n \"sha256Digest\": \"a3d48247051e95847ded28217433c4b98fc02d6ee21eedfcb24dd43f7360569d\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.2.9-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.2.9-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.2.9\"\n - \ },\n \"sha256Digest\": \"880e01de0fab8893770497ef9410559ae223a1f09dbd6a23712226ab4e2d5ecb\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.2.10-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.2.10-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.2.10\"\n - \ },\n \"sha256Digest\": \"8c87013be456849f27ea7f76df284e998e6f3911d3de478ec19abe84bb30fbe9\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.2.11-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.2.11-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.2.11\"\n - \ },\n \"sha256Digest\": \"b00ccc8846bbb389b95064e7e9b547cbd877b0a596b8c36d86982be435695d5c\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.2.12-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.2.12-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.2.12\"\n - \ },\n \"sha256Digest\": \"5bd273bf4c1952f4576faf05ed80fd73b25f0f4d0be81fe0bbf471019705a6bb\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.3.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.6.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.3.0\"\n - \ },\n \"sha256Digest\": \"7fb50e37a0e271c118124b4488474e3c2957cffe1b319660bd3df91534911008\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.4.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.4.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.13.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.4.0\"\n - \ },\n \"sha256Digest\": \"822137d0987829d27537f36923d31d69371e756f8adc686ccdd5a2e03a40ab5f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.5.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.13.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.5.0\"\n - \ },\n \"sha256Digest\": \"7ec8887f3f83a4f67613a22f1eea7f9c5968c9b108d74c7299eacc400e40c710\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.6.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.6.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.13.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.6.0\"\n - \ },\n \"sha256Digest\": \"9431e5bba2ddd8d7850c1e3b4fc2a29dd0cc38322f1b04247bf7f7a5f3aacf4a\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.6.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.6.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.13.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.6.1\"\n - \ },\n \"sha256Digest\": \"93cf02038cb209c2baee6e2a4bf17e0c8a8f55eb2c86c7678163499f84c31a75\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.7.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storage_preview-0.7.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.13.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storage-preview\",\n \"summary\": \"Provides a preview - for upcoming storage features.\",\n \"version\": \"0.7.0\"\n - \ },\n \"sha256Digest\": \"3b2a463e7852cd1153372b3dd9522c007dee8daff53ccf26fda0c84b642e8367\"\n - \ }\n ],\n \"storagesync\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/storagesync-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"storagesync-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storagesync\",\n \"summary\": \"Microsoft Azure Command-Line - Tools MicrosoftStorageSync Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"a1d15edfcc18d9d301dea843cd7dce9845b8da6f6b1beb47a1bba35ff46eadde\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/storagesync-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"storagesync-0.1.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.3.1\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/storagesync\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"storagesync\",\n \"summary\": \"Microsoft Azure Command-Line - Tools MicrosoftStorageSync Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"06d5e71b42edf721c5624cfd286b8593c68316f2b0ea4edf60c7a74835a695e2\"\n - \ }\n ],\n \"stream-analytics\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/stream_analytics-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"stream_analytics-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"Programming Language - :: Python :: 3.7\",\n \"Programming Language :: Python - :: 3.8\",\n \"License :: OSI Approved :: MIT License\"\n - \ ],\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"stream-analytics\",\n \"summary\": \"Microsoft Azure - Command-Line Tools stream-analytics Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"e3a9048f289d1b870637e4b13c0ee1e877827834e1f71d31cb8161bacc441388\"\n - \ }\n ],\n \"subscription\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/subscription-0.1.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"subscription-0.1.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"classifiers\": [\n - \ \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"wilcob@microsoft.com\",\n - \ \"name\": \"Wilco Bauwer\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"subscription\",\n \"summary\": \"Support for subscription - management preview.\",\n \"version\": \"0.1.3\"\n },\n - \ \"sha256Digest\": \"74388eb7d4976c620bd41ef577cdb9284cd9a3e38dc4756796d091a7c8193267\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/subscription-0.1.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"subscription-0.1.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.30\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"wilcob@microsoft.com\",\n - \ \"name\": \"Wilco Bauwer\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"subscription\",\n \"summary\": \"Support for subscription - management preview.\",\n \"version\": \"0.1.4\"\n },\n - \ \"sha256Digest\": \"0f28407be656e9930d06240b95bf1ccc8ebbbc9fc961cbd9e4b0575e1867b03d\"\n - \ }\n ],\n \"support\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/support-0.1.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"support-0.1.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.81\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/azure/azure-cli-extensions/tree/master/src/support\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"support\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Support Extension\",\n \"version\": \"0.1.1\"\n },\n - \ \"sha256Digest\": \"e74e1b769155a08226d103781dbec7a20b517c37f4b75871172b2769e37676fa\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/support-1.0.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"support-1.0.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": false,\n \"azext.minCliCoreVersion\": - \"2.0.81\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/azure/azure-cli-extensions/tree/master/src/support\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"support\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Support Extension\",\n \"version\": \"1.0.0\"\n },\n - \ \"sha256Digest\": \"3646b584af5fb68e57a153991cdbf049cd6f8e471c36b28c7f3bb642ecc341d8\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/support-1.0.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"support-1.0.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": false,\n \"azext.minCliCoreVersion\": - \"2.0.81\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/azure/azure-cli-extensions/tree/master/src/support\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"support\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Support Extension\",\n \"version\": \"1.0.1\"\n },\n - \ \"sha256Digest\": \"5490c5dbe52b0457b51a327426cad741005f8afc24c13cefefb9fe8694a558f7\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/support-1.0.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"support-1.0.2-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": false,\n \"azext.minCliCoreVersion\": - \"2.0.81\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/azure/azure-cli-extensions/tree/master/src/support\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"support\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Support Extension\",\n \"version\": \"1.0.2\"\n },\n - \ \"sha256Digest\": \"815e9ed05789f4cd00eb00cbae0e6339e7519c0c6d816bf3aa302af534acef5b\"\n - \ }\n ],\n \"synapse\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/synapse-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"synapse-0.1.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"synapse\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Synapse Extension\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"bdeb2f4830fc35ff15b4ec473927619ed6a5ab46e4c797f2cb7605e59a32aa36\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/synapse-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"synapse-0.2.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"synapse\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Synapse Extension\",\n \"version\": \"0.2.0\"\n },\n - \ \"sha256Digest\": \"4731f2418d29ba818dd971acc71d695ff1641208e6441c719b38c4c21577c2e3\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/synapse-0.3.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"synapse-0.3.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.67\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"synapse\",\n \"summary\": \"Microsoft Azure Command-Line - Tools Synapse Extension\",\n \"version\": \"0.3.0\"\n },\n - \ \"sha256Digest\": \"11b7dac7ba18b63c84294e86531301d516c9ae44e9899d0344926c945b5fc9c4\"\n - \ }\n ],\n \"timeseriesinsights\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/timeseriesinsights-0.1.0-py3-none-any.whl\",\n - \ \"filename\": \"timeseriesinsights-0.1.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"Programming Language :: Python :: 3.7\",\n \"Programming - Language :: Python :: 3.8\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/src/timeseriesinsights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"timeseriesinsights\",\n \"summary\": \"Microsoft Azure - Command-Line Tools TimeSeriesInsightsClient Extension\",\n \"version\": - \"0.1.0\"\n },\n \"sha256Digest\": \"a1cd9f9177ff31010638048d3737dc39fac144d9ca107fe4eafc4339386d71cd\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/timeseriesinsights-0.1.1-py3-none-any.whl\",\n - \ \"filename\": \"timeseriesinsights-0.1.1-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"Programming Language :: Python :: 3.7\",\n \"Programming - Language :: Python :: 3.8\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/src/timeseriesinsights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"timeseriesinsights\",\n \"summary\": \"Microsoft Azure - Command-Line Tools TimeSeriesInsightsClient Extension\",\n \"version\": - \"0.1.1\"\n },\n \"sha256Digest\": \"3276b876cad87ef8b29e6af58294fc7ff20b9d2d0187ce84e2b15ba8917b00d9\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/timeseriesinsights-0.1.2-py3-none-any.whl\",\n - \ \"filename\": \"timeseriesinsights-0.1.2-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"Programming Language :: Python :: 3.7\",\n \"Programming - Language :: Python :: 3.8\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/src/timeseriesinsights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"timeseriesinsights\",\n \"summary\": \"Microsoft Azure - Command-Line Tools TimeSeriesInsightsClient Extension\",\n \"version\": - \"0.1.2\"\n },\n \"sha256Digest\": \"3caba62be85114e44cd61c8541df49c7ff67b76b8c26e53e198b00a98a907417\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/timeseriesinsights-0.1.3-py3-none-any.whl\",\n - \ \"filename\": \"timeseriesinsights-0.1.3-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.3.1\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"Programming Language :: Python :: 3.7\",\n \"Programming - Language :: Python :: 3.8\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/src/timeseriesinsights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"timeseriesinsights\",\n \"summary\": \"Microsoft Azure - Command-Line Tools TimeSeriesInsightsClient Extension\",\n \"version\": - \"0.1.3\"\n },\n \"sha256Digest\": \"84009856e1a9e6e6b178425099c2e1eaa4753ba5e375426a504f92bd4b9a21aa\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/timeseriesinsights-0.2.0-py3-none-any.whl\",\n - \ \"filename\": \"timeseriesinsights-0.2.0-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isExperimental\": - true,\n \"azext.minCliCoreVersion\": \"2.11.0\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 3\",\n - \ \"Programming Language :: Python :: 3.6\",\n \"Programming - Language :: Python :: 3.7\",\n \"Programming Language - :: Python :: 3.8\",\n \"License :: OSI Approved :: - MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"azpycli@microsoft.com\",\n \"name\": - \"Microsoft Corporation\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/timeseriesinsights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"timeseriesinsights\",\n \"summary\": \"Microsoft Azure - Command-Line Tools TimeSeriesInsightsClient Extension\",\n \"version\": - \"0.2.0\"\n },\n \"sha256Digest\": \"79f257abed8ac699a395e1c61351cd2c68f3a1844d3369aca5b346b2b1c0aa10\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/timeseriesinsights-0.2.1-py3-none-any.whl\",\n - \ \"filename\": \"timeseriesinsights-0.2.1-py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.6\",\n \"Programming Language :: Python - :: 3.7\",\n \"Programming Language :: Python :: 3.8\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/timeseriesinsights\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"timeseriesinsights\",\n \"summary\": \"Microsoft Azure - Command-Line Tools TimeSeriesInsightsClient Extension\",\n \"version\": - \"0.2.1\"\n },\n \"sha256Digest\": \"6ec3fe5ff3d92c3c2c8ba581af679567bfc430dd38fa70945b43378cf9b81ff2\"\n - \ }\n ],\n \"virtual-network-tap\": [\n {\n - \ \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_network_tap-0.1.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_network_tap-0.1.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.46\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-network-tap\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-network-tap\",\n \"summary\": \"Manage virtual - network taps (VTAP).\",\n \"version\": \"0.1.0\"\n },\n - \ \"sha256Digest\": \"7e3f634f8eb701cf6fef504159785bc90e6f5bd2482e459469dd9ab30601aa35\"\n - \ }\n ],\n \"virtual-wan\": [\n {\n \"downloadUrl\": - \"https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_wan-0.1.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_wan-0.1.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-wan\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-wan\",\n \"summary\": \"Manage virtual WAN, hubs, - VPN gateways and VPN sites.\",\n \"version\": \"0.1.2\"\n - \ },\n \"sha256Digest\": \"35d7b9f8b62167957708902b19a6c2f97ceaafa28abcba815b39a2d9040066f8\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_wan-0.1.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_wan-0.1.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-wan\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-wan\",\n \"summary\": \"Manage virtual WAN, hubs, - VPN gateways and VPN sites.\",\n \"version\": \"0.1.3\"\n - \ },\n \"sha256Digest\": \"10bc530d54677c0f24363326f28b0476a3324198417117e3effa031c20d6c2cb\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_wan-0.2.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_wan-0.2.0-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-wan\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-wan\",\n \"summary\": \"Manage virtual WAN, hubs, - VPN gateways and VPN sites.\",\n \"version\": \"0.2.0\"\n - \ },\n \"sha256Digest\": \"45b52f87cd76a269d8e6151782a437692cea3725b4f64d9d4d64cc2c4b49288f\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_wan-0.2.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_wan-0.2.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-wan\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-wan\",\n \"summary\": \"Manage virtual WAN, hubs, - VPN gateways and VPN sites.\",\n \"version\": \"0.2.1\"\n - \ },\n \"sha256Digest\": \"db108cf3fb9f3a49aea87f35d658b0bdc9c2321122b9a1ec1f58f4fecb0ebe90\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_wan-0.2.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_wan-0.2.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-wan\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-wan\",\n \"summary\": \"Manage virtual WAN, hubs, - VPN gateways and VPN sites.\",\n \"version\": \"0.2.2\"\n - \ },\n \"sha256Digest\": \"0b141457b8c3f57061f300dae18472ec9da96f4b4f9ddb9239a4a5dbda7c1ffd\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_wan-0.2.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_wan-0.2.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-wan\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-wan\",\n \"summary\": \"Manage virtual WAN, hubs, - VPN gateways and VPN sites.\",\n \"version\": \"0.2.3\"\n - \ },\n \"sha256Digest\": \"21e1333af42c80c094099212db57b5e7171afee8690f0de211fdf359e3f1da16\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/virtual_wan-0.2.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"virtual_wan-0.2.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - true,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/virtual-wan\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"virtual-wan\",\n \"summary\": \"Manage virtual WAN, hubs, - VPN gateways and VPN sites.\",\n \"version\": \"0.2.4\"\n - \ },\n \"sha256Digest\": \"236668a188121738975f85148957ce843dd43c8644f76c915dde9d2f8233c9e4\"\n - \ }\n ],\n \"vm-repair\": [\n {\n \"downloadUrl\": - \"https://azurecomputeaidrepair.blob.core.windows.net/prod/vm_repair-0.2.6-py2.py3-none-any.whl\",\n - \ \"filename\": \"vm_repair-0.2.6-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"classifiers\": [\n - \ \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"caiddev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/vm-repair\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vm-repair\",\n \"summary\": \"Auto repair commands to - fix VMs.\",\n \"version\": \"0.2.6\"\n },\n - \ \"sha256Digest\": \"3556adeb1053262aa1aa0203b53423252afbd89b3e455255c2a2964a3be9a78e\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/vm_repair-0.2.7-py2.py3-none-any.whl\",\n - \ \"filename\": \"vm_repair-0.2.7-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"classifiers\": [\n - \ \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"caiddev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/vm-repair\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vm-repair\",\n \"summary\": \"Auto repair commands to - fix VMs.\",\n \"version\": \"0.2.7\"\n },\n - \ \"sha256Digest\": \"4949871a99d5ef62ffdad72d35bfa75a483f1a714bf8d7ca84f134f86a5e9578\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/vm_repair-0.3.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"vm_repair-0.3.1-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"caiddev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/vm-repair\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vm-repair\",\n \"summary\": \"Auto repair commands to - fix VMs.\",\n \"version\": \"0.3.1\"\n },\n - \ \"sha256Digest\": \"4c893d48469b70772318c989ecac03e1ac494dc0c97652d1827a8ad55d8e8b51\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/vm_repair-0.3.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"vm_repair-0.3.2-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"caiddev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/vm-repair\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vm-repair\",\n \"summary\": \"Auto repair commands to - fix VMs.\",\n \"version\": \"0.3.2\"\n },\n - \ \"sha256Digest\": \"b7837a3129ff2614d27c2acbd254e97d83ac1540745225d2b156c897bb065125\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/vm_repair-0.3.3-py2.py3-none-any.whl\",\n - \ \"filename\": \"vm_repair-0.3.3-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"caiddev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/vm-repair\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vm-repair\",\n \"summary\": \"Auto repair commands to - fix VMs.\",\n \"version\": \"0.3.3\"\n },\n - \ \"sha256Digest\": \"04ddc34a525af5b313f9dd1b5b446e5aa2a79d242451cf09f7670147c7aadd42\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/vm_repair-0.3.4-py2.py3-none-any.whl\",\n - \ \"filename\": \"vm_repair-0.3.4-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"caiddev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/vm-repair\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vm-repair\",\n \"summary\": \"Auto repair commands to - fix VMs.\",\n \"version\": \"0.3.4\"\n },\n - \ \"sha256Digest\": \"b5964a8ed60193dc73e9109763af7cbb0162c029dbd81ed9ec5a7f20fa48ee7d\"\n - \ },\n {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/vm_repair-0.3.5-py2.py3-none-any.whl\",\n - \ \"filename\": \"vm_repair-0.3.5-py2.py3-none-any.whl\",\n - \ \"metadata\": {\n \"azext.isPreview\": - false,\n \"azext.minCliCoreVersion\": \"2.0.67\",\n \"classifiers\": - [\n \"Development Status :: 4 - Beta\",\n \"Intended - Audience :: Developers\",\n \"Intended Audience :: - System Administrators\",\n \"Programming Language :: - Python\",\n \"Programming Language :: Python :: 2\",\n - \ \"Programming Language :: Python :: 2.7\",\n \"Programming - Language :: Python :: 3\",\n \"Programming Language - :: Python :: 3.4\",\n \"Programming Language :: Python - :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n - \ \"License :: OSI Approved :: MIT License\"\n ],\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"caiddev@microsoft.com\",\n - \ \"name\": \"Microsoft Corporation\",\n - \ \"role\": \"author\"\n }\n - \ ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/vm-repair\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vm-repair\",\n \"summary\": \"Auto repair commands to - fix VMs.\",\n \"version\": \"0.3.5\"\n },\n - \ \"sha256Digest\": \"70112e8c4ce186f0c494e89680d751f8f4c6dc906c47cc44b8b5cdf0e19d2e50\"\n - \ }\n ],\n \"vmware\": [\n {\n \"downloadUrl\": - \"https://github.com/virtustream/az-vmware-cli/releases/download/0.7.2/vmware-0.7.2-py2.py3-none-any.whl\",\n - \ \"filename\": \"vmware-0.7.2-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": false,\n \"azext.minCliCoreVersion\": - \"2.0.66\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/az-vmware-cli\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vmware\",\n \"summary\": \"Azure VMware Solution commands.\",\n - \ \"version\": \"0.7.2\"\n },\n \"sha256Digest\": - \"b84b027fe8d836f8969893480cef63b05b85db1a59f6ef11063e52be530fd9ff\"\n },\n - \ {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/vmware-1.0.0-py2.py3-none-any.whl\",\n - \ \"filename\": \"vmware-1.0.0-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": false,\n \"azext.minCliCoreVersion\": - \"2.0.66\",\n \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/az-vmware-cli\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vmware\",\n \"summary\": \"Azure VMware Solution commands.\",\n - \ \"version\": \"1.0.0\"\n },\n \"sha256Digest\": - \"e1775b05e22e3afb70ad395bc3cff1cb7fdfc9a90836b61e13d4c54843577ddb\"\n },\n - \ {\n \"downloadUrl\": \"https://azcliprod.blob.core.windows.net/cli-extensions/vmware-2.0.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"vmware-2.0.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": false,\n \"azext.minCliCoreVersion\": - \"2.11.0\",\n \"description_content_type\": \"text/markdown\",\n - \ \"extensions\": {\n \"python.details\": - {\n \"contacts\": [\n {\n - \ \"email\": \"azpycli@microsoft.com\",\n - \ \"name\": \"Microsoft\",\n \"role\": - \"author\"\n }\n ],\n - \ \"document_names\": {\n \"description\": - \"DESCRIPTION.rst\"\n },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/az-vmware-cli\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"vmware\",\n \"summary\": \"Azure VMware Solution commands.\",\n - \ \"version\": \"2.0.1\"\n },\n \"sha256Digest\": - \"9201be5570c050b7f048f25b70ee0a2229bf73ad048aea036b484166631bc8e5\"\n }\n - \ ],\n \"webapp\": [\n {\n \"downloadUrl\": - \"https://github.com/Nking92/azure-cli-extensions/raw/whl-files/dist/webapp-0.2.24-py2.py3-none-any.whl\",\n - \ \"filename\": \"webapp-0.2.24-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.46\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"sisirap@microsoft.com\",\n \"name\": - \"Sisira Panchagnula\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/webapp\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"webapp\",\n \"summary\": \"Additional commands for Azure - AppService.\",\n \"version\": \"0.2.24\"\n },\n - \ \"sha256Digest\": \"797abb3d8b41547ed3c2bcc8e01e30cbb5d487262cd2f285e755419bd1c03bed\"\n - \ },\n {\n \"downloadUrl\": \"https://azurecliprod.blob.core.windows.net/cli-extensions/webapp-0.3.1-py2.py3-none-any.whl\",\n - \ \"filename\": \"webapp-0.3.1-py2.py3-none-any.whl\",\n \"metadata\": - {\n \"azext.isPreview\": true,\n \"azext.minCliCoreVersion\": - \"2.0.46\",\n \"classifiers\": [\n \"Development - Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n - \ \"Intended Audience :: System Administrators\",\n - \ \"Programming Language :: Python\",\n \"Programming - Language :: Python :: 2\",\n \"Programming Language - :: Python :: 2.7\",\n \"Programming Language :: Python - :: 3\",\n \"Programming Language :: Python :: 3.4\",\n - \ \"Programming Language :: Python :: 3.5\",\n \"Programming - Language :: Python :: 3.6\",\n \"License :: OSI Approved - :: MIT License\"\n ],\n \"extensions\": - {\n \"python.details\": {\n \"contacts\": - [\n {\n \"email\": - \"sisirap@microsoft.com\",\n \"name\": - \"Sisira Panchagnula\",\n \"role\": \"author\"\n - \ }\n ],\n \"document_names\": - {\n \"description\": \"DESCRIPTION.rst\"\n - \ },\n \"project_urls\": - {\n \"Home\": \"https://github.com/Azure/azure-cli-extensions/tree/master/src/webapp\"\n - \ }\n }\n },\n - \ \"generator\": \"bdist_wheel (0.30.0)\",\n \"license\": - \"MIT\",\n \"metadata_version\": \"2.0\",\n \"name\": - \"webapp\",\n \"summary\": \"Additional commands for Azure - AppService.\",\n \"version\": \"0.3.1\"\n },\n - \ \"sha256Digest\": \"1cd5bb1a8ad02a5f7c8c72a01692637fed434b24ea359d21caf919ed5323941a\"\n - \ }\n ]\n },\n \"formatVersion\": \"1\"\n}" - headers: - content-length: - - '818218' - content-md5: - - vpj8zM01YJHfgC/g3TZt8Q== - content-type: - - application/json - date: - - Tue, 16 Mar 2021 09:03:10 GMT - etag: - - '0x8D8E8214593E3E7' - last-modified: - - Tue, 16 Mar 2021 02:14:47 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-type: - - BlockBlob - x-ms-lease-status: - - unlocked - x-ms-version: - - '2009-09-19' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.22.0 - method: GET - uri: https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics_solution-0.1.1-py2.py3-none-any.whl - response: - body: - string: !!binary | - UEsDBBQAAAAIAGIR6lBg7Nqe1AEAAOEFAAAoAAAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1dGlv - bi9fX2luaXRfXy5webVTTW+bQBC98ytG8iEgOfyASBws0kMlnEhx7qvtMthbLbtod4hMqv73js1H - ihMTtVLmACy8efNm5rGC2y+MaAW5azqv9weCWCWw1cq74Cri975xXpJ2NoWNMXAGBfAY0L9gmXJu - oRXagCW0tkQPdEDYfn8eX6ewQ5wOdCTQ9oxpvPuJisA7R1A5D6bH8Hc+1X1Npv/SzqPKuxrka+sx - VUanynkWUHPPBJvX3NW1tGUonOTOJjAeSRi3F9JK05FWQQRn2rNecUDTjASn5wCwgqYz2tIdlDrI - Hwaz1rY8r9seFkWRMjIEKNx+MzLuBsK5gvhSUnIXRcBRYgVCaKtJiDigqdbA3QhFx+zBWWQYDPFB - v3zpOUfdudFDmeeuwcvUpe6ZEi2JSipyvhv5VHUlYaL++LNQbSCumV0oiqe8U7gGe4MGQXVjsptF - iT3l6tfvm/WMZa48uyo5mbJCy4Xjz5e2htNCknTaz7iZ4T7X8V/RNyWGPQriGWWLI03ebGNY5Fvm - yZ6DgaTfh/fGWRrthY3eM/+176WiE8wjtd6e55fOiebyOauteX1h9H6P/Sf1opFe1nPxE+9c+LVy - /Cfnj9vt5uFeFI+b+29PIi927N7PPRL9AVBLAwQUAAAACABiEepQBhVKAjUBAABKAwAALwAAAGF6 - ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vX2NsaWVudF9mYWN0b3J5LnB5tVLBTsMwDL33K6zt - sqGSD0DigHZCYuIA9yhK3S7QxJXjTitfj7uy9rIJLvjU+L28V/tlDff/WMUadtQNHJqDwMZvYR88 - U6ZatM8dsZNAycBT28KZlIExIx+xMnr3JXhMGSvoU4UMckDYP79f2gbeEOeDnARCOnM6pg/0Akwk - UBNDO3EU11OcPFX+Xycvigpr8LVtqbEuuXaQ4LPN1Paj/8a3wXo5lXBntw8FaNVMEdxXz2gUNJ7G - D4rRpSqPHUxia+eFeIAQdXkCDYqNTRQ77kyHtBNtkTNHTJUKVTZXn9lQh9PKs6q6BqOSL1qvM7af - sd0ixyg9p1uOyzi3ZcoxmGPQJG1yER9X82Mw1y6tyrPvL6XPhXrW/5ChU8nLevOqXKDJbbVdMplp - V2L4GfRvyZlZqfgGUEsDBBQAAAAIAGIR6lDp2QZ8gAIAAIUKAAAlAAAAYXpleHRfbG9nX2FuYWx5 - dGljc19zb2x1dGlvbi9faGVscC5webWVTW/bMAyG7/4VRHrodlByHQLkMKxAUaDZgGXDDuswKDLt - aJElQR9tvK3/fZSdpGmSNjGy+GTR1EvyoWhdgDC51OUohoK9yy6AnfEh+Q/G1k6WswBvxFsYS+GM - N0Ugu7PG8SCN7sN7paBx8uDQo7vHvE97b6VA7TGHqHN0EGYI45svK3MfJojrRVgEkLrxsc78QhHA - GROgMA5U60PfaVW1Mc9dOenbWkkdhpBLz6cKR8EYVnFdMzKj3+OQ7Cx5KaPLrHCmgrnmYt6fobI/ - C6nQg6wIW4Bk8QC7GlFHIsZatyzLGsfvl5XRMiQUpmRcc1UHKTx4o2KicfkDRtDr9bJQWxxC6Uy0 - mZ+RAvOxqrirh9QwetG5h2CAXniJ8LpoP0uKxyUAwiEPuJWHaEPuZNL4An8xLi54ZQnWMANgoHmF - BzeBKSAFpTJ14NQH52kzQMAFwf3LmsXy4b8PVL6shg4YnWYTnUDWIIVx/XlpuG7Wd3ebuoytBNhW - KvQp8NLDHOvRPVcRd3Y+GDf3lguE3sDHqRdO2qTkB38mcXpz9Thwm5HJ/CyTxwENzb2kKfODLe31 - yPY/WWwHlqsb7ZtxHazjkuK31ftHIv7Y69L+aPOj2w9fG2fgGnAhfaCfWaeTsNr+wqYT2t5W0b3t - KS+YLFUSvJ1+d2GZo8JjWV41vh1H6cCmEwC2qR8GuAdZF0IE4eE4PtcYKCmaQuWBT00MzQXjLQpZ - SLqYumBLWmdgloo5OzFFc3YcsVvyBE73efqhEqv9gn51Vz+h3PxrAWWyKmh5G+0juo51IIiIzqEO - z0KcQDzB6JgF/5+x00WxCWtcT56Ld8tsC/TJub1+EptT9w9QSwMEFAAAAAgAYhHqUJ77endcAwAA - 8AoAACcAAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL19wYXJhbXMucHm1Vk2P2zYQvetX - DJCDbEBS74u6gOEghYF1mmKdXIpA4FJjiV2aFMiRHffXZ0itZCdxtAu40cmcGc7nm0e/gfwXfskb - WNn25FTdEMzkHDZKOuvtjljuWusEKWsKWGoN0ciDQ4/ugFXBd++VROOxgs5U6IAahM16O4gLeEAc - D/SFQJlo0zr7L0oCZy3BzjrQvQ3r+bTvY7L7X1x5e9LK0B1UyotHjQs+YU7W5tqa+oo+qPbCnPJg - 6KcMPAnCPRrySbJzdg/iv85hIbUqpA0/7J7tKl+0wok9EjoPas/tJiBR+5JOLfYXn4yQT4VwdRfd - DVar+/XyWbYdbYvyILSqBNmzu2cJlkfrnnwrJJY8QNs5/qGqJPFWd6HdpeE8YPG945ltg9aXWnla - /JPmebBLM0hzk37OEnjha1C3i/R98G13cfba1rkwQp9ISQ9D+ALWBL6xna7gEQec9GAIN9MXI8Uv - HfzF3MeSQ/w5o/FCCdx5xqMHKRh3ntGnSB0Ysuk8SZIKd5yoqMqx8TOPepdBOb9LYipHRQ0E2Tib - UlpD+IVm6d4aRQHVV0sF6ZAHks5BcPS7sTBZqNowOGaptjKuAKdyVg5hZmONESU8ih9GNBjkzwZp - Tj+ZVT+e2I8XxrNl3d56gi6su3B4x8stO6fotOKs0L1ziNkoy+BjG2Dns4nRpSvumOBdcmtufyCX - 4MAdmAw2os1gGZZmKXku0eOqEabGreOFUKbO4NPm8lof9yyZCPseKUBj048p+nr4+/5TpzkT8ag0 - +1l6j96HfkfdsjoII7HaNmF2H5wlpi/uC+doSG2EPnJHJmP2tXRke3bL4N7WSi7b1m+43TWOod4K - EistvFc79ToYPG/kN+cMKmwdyrD5gVQXshgFs0ZVuNi6DufXPQcKYocjE123arUwZds9MuwadOkE - vj4MRmAuiCDcj+R/Btk7PtVCa3SnUZqBins6PkzF9VA31NtX4mzVSZqsozd5qYppJvtr8/BnX+Jv - v1+y1R9hx7jOHynpf6/36lNwjUhGw0gix5+QyPjoLKYfmykG4hb1XXUw3ID12wtSgjMpjc57Ej42 - SjbRbGTYo+K/K9x8fp2f+I9KoPQQ6wbO7iKbXeHsV+7jaxft1jwr1HhbnrdmwNA/3hL/K1BLAwQU - AAAACABiEepQyla8fpYCAACYCAAAKwAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vX3Zh - bGlkYXRvcnMucHm1Vc1unDAQvvMU0+wBUCkPsBKHKO1hpUQ9NLcqQo4xrBubQbZJs336jiEY6JKs - eogPaD3/88033h18+cAT7eAGu5ORzdFBwlO4k9ygxdqR3HRomJPY5nCtFAxGFoywwjyLKiffW8lF - a0UFfVsJA+4o4O5wP4lz+CFEuLgXB7IdbDqDvwR3YBAd1GhAjTakp5sec1L4D+28NqhBW2rHsT+9 - oQIRlQWpqWuq1JbPTMmqJD32hotSVhl0zFixFi0uY8inlvGnvHdSTbFubg/fjEEz6sdkutEuV9iw - lqmTkzwkvsXmepLdkbYRWrTuRkn6LgNwJXOO/gdqzdrKegnZlDXjDs1pitcIV/pkpZ8awVyOZtmg - sP2j5UZ2HnDfQBRVooahceZE+RvNk+0YX7WccE1tt0yLQZXuowjoyHqW5ZuO+8HOnx0c6oEIm3aE - PRFhKCKD3rPCAbPAZushEzgE23nmvB0qZPTV4fZUkwtlp3Pd/lywhmLJiGTl6s8S8WJjBB5dP8mS - u5c0O3MPsRuDfVfMxawVpVecewfzItbTnuffOzFuOVOH1g47Hp+7ulNHXqHlLRMfvbgAz8opjT5g - PoZJosy0ckncW1ohEP6ypwdl5tCSZcQw3VsHj6/UwjogDTRTuga/eFH1Dr4KJ4yWLfHvKIiGZs1F - YMoIVp1AvEjrbHCcG6EXhWkizdnLcrHtJXb/xPsZr+kQP8CnAt4ly3+AuOiurcCi6j17AoDzX4H1 - UAYcx0oW6M1ken2TCIY3XqvlVmTvPpHpjNYG3JZSnKXNKWlyEcHsHZA9gPHDihj31L9CPiyW50+A - iWgXsGHj76Xdij4h3jy6YLtsJEijDY8p81AlFFsav9zwGa6SK/peatMbplfRX1BLAwQUAAAACABi - EepQX83kTEEAAABMAAAAMAAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vYXpleHRfbWV0 - YWRhdGEuanNvbqvmUgACpcSq1IoSvcxi14qC1KLM3NS8ksQcJSuFkqLSVB1kFbmZec45mc75Ralh - qUXFmfl5QEVKRnrGegZKXLUAUEsDBBQAAAAIAGIR6lBl/oGg4wEAANkFAAAoAAAAYXpleHRfbG9n - X2FuYWx5dGljc19zb2x1dGlvbi9jb21tYW5kcy5webVUwW7bMAy9+ysI5JAESPwBAXIYehqwYofm - LmgS7WiTRUOkm7jD/n1SHMfdkCZAgfBiknp8j6QEz2D9QCtm8ERtH129F1iYJTw7E4mpkpSPLUUt - jkIJX7yHE4ghImN8RVum2m/OYGC00AWLEWSP8Px1N6ZLeEG8BHIUcOGEaSP9RCMQiQQqiuAHTDpP - UTNoJvqHTp742967IBuwjvUPj9sU4VqI1p5CfeU8HzU69OsM5FsAFi3YYJCbKE9Gey6qSA3oty5i - abwrDWWHmgSxDK5Jt5Buw7unIbXrWxxKSpXgSUNV2gjFfsSaSjH5Lm+Ri6KwWIEnbdWZU0nuYsHo - qxWo5aYoIJmnWumgfS/O8KV+IoLtfz0sTmXZqMXhnbCSpvXbuX7Do6jrjOUrBpsmtIrtLy6n2sSr - 69PO3iXLqQE1ZWcvY/L7hPz9Z766tPTvYrbvN7Ic5j042UPewbhqVUfq2sW8oeAkv0mq15f2YSyf - r+5uaurimt3obAWOFR7TSC6vQfvtLna4BM1Qby6kdWk6FmrG61zMTcT02lJnZ0+dR/jgBhKQuza/ - FFaB1EE7GYRuSHStPUsM3gMkLHocJAbvkxIrMBQqd/6LfKTKezpM0jnKwjXKPdVbE3jHkmny9z7P - X1BLAwQUAAAACABiEepQW4zlZVgCAAB7CwAAJgAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRp - b24vY3VzdG9tLnB53VRNb9QwEL3nV4zSQ3dFd7mvtAeEBEKicCj3yOvMpqaOxxrblFDx37GTbEpo - tGxKixA5xF/z8eY9j89g9YxfdgavyTasqmsPC7mESyWZHO193GdLLLwis4ZXWkNr5IDRIX/Bch19 - 3yuJxmEJwZTI4K8RLt99Omyv4QpxWPivHpRpbSzTZ5QemMjDnhh0ZxPP46rucsbwz1y5bbQyfgOl - cmKncRtXuPJEK02mmjhPR7Uwzcp54bFG490xqxTuuAFJoacsggmR1JXgKqQsWbZnqkF8C4xrqdVa - UpwErzSoOmrkwZU3haHiVqhonJW4B8kYMRY1GeWJC01VIYzQjVfSFY50SBwvYrAY/yKDk7+oPgWW - WFRMwRZG1DjH/ZC58I2d5XhLfOOsiIkHBKqcEyCRnTI/Cm0qc/uBzCzIVgtT2LDTyl0jP9KdqQzS - z3b2onKznfobtH0TbyUuN1nruqOygS3cDXHOD0yebyZIPU+Z40kaftqNdVhkrzCd3Y0w5ZPS5ptp - yQfX7/fR80RV/iBuEi3ujkQc05H39Ear/OPl1VuhNXLzMocXxy5qPmia/IYHM38Yu6Y2hKQyAcnz - e/BZ928HRh/Y/NzDi368gK5B1303x0YOtoyzi6k+3M7pzfHVHnMEVnAcPbLbJvmX/ZvS5f5335S5 - jk/XJCdI+FeEaytKv4NkJWr8nyT7lf0Oy2/J72g4nfxjLB+ordA/Ma9/QuoY4oiYnoOId/GU9ccn - 8FQCJnlPjdcDVfspi81Q+7iQNvGuKcYup9a2nKDmENGFnZOsbIt9mf0AUEsDBBQAAAAIAGIR6lDs - IYJ1fwAAAFkBAAAuAAAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1dGlvbi90ZXN0cy9fX2luaXRf - Xy5webWPQQ7CMAwE77xipV7gQP6AOCHRE3wAJS41CnHkuAh+j9UKflDfdj3rlTvsV5xNh6PUj/J9 - NGzjDj1HlSaDua9V9GYsJeCQM2aoQamRvigFz545UmmUMJVEChsJ/en6swMuRH9hbwOXmakqD4oG - FTEMosgL43tXz6XTz6/6+RdQSwMEFAAAAAgAYhHqUOwhgnV/AAAAWQEAADUAAABhemV4dF9sb2df - YW5hbHl0aWNzX3NvbHV0aW9uL3Rlc3RzL2xhdGVzdC9fX2luaXRfXy5webWPQQ7CMAwE77xipV7g - QP6AOCHRE3wAJS41CnHkuAh+j9UKflDfdj3rlTvsV5xNh6PUj/J9NGzjDj1HlSaDua9V9GYsJeCQ - M2aoQamRvigFz545UmmUMJVEChsJ/en6swMuRH9hbwOXmakqD4oGFTEMosgL43tXz6XTz6/6+RdQ - SwMEFAAAAAgAYhHqUILSZh52BAAAKBcAAFEAAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9u - L3Rlc3RzL2xhdGVzdC90ZXN0X2xvZ19hbmFseXRpY3Nfc29sdXRpb25fc2NlbmFyaW8ucHntV1Fv - 2zgMfs+vILIH2bjYW723AsHt0BuGAi12WPuWBYJqK44ax/JJcrssyH8fZdeO47hp2jTFcDg9JJFE - UuT3URTzDrwjjt47OJPZQol4asAJXbgUoZJaTgyuq0wqZoRMffgrSaAQ0qC45uqORz7qXoiQp5pH - kKcRV2CmHC7Pr6tlH644ryfmhwGRFjKZkrc8NKCkNDCRCpJSBvdxNi/PRPNHjbwn5hifAamrX3kq - jOHa9HoTJefAfuaK04jfGSkT7Wt0kSkhqRXR8KCDwMj7C6Zi/o3rTGIQDWU/TIRfiEezSsG5erBz - jesDQC2Zq5B/UTLP/lE8Y4ort7QxS1k483Mjkkr57OL8s1JS9Xq9689X1/Tv828wxAj8jJmpz260 - /Xaq+a0UqdPepHQiEk6pOwDi+8R10VaYMK3ha8ZLunXTxQ1/3dNeD3B86nTbwU8254YrmuL3kKgH - KRpbMXpC3AO0g+doU8wjmsiwiGdIql8PJiI+AUsLSsSUpSxZGBFqqmWSWylH82QygLb3WyvBACrD - FTB2WG1/do85of08i5jhzrLetMO6Q05r3cHm5r1UM6QKT7GBoFxhL1QcDVHF0kjOix1nLUkGEHxw - W3ZUjLpbMbRlgm2hoCWk85vKi5gbilMdKpFZ16mInPa5CaN4vzNqsw31NpKxStqBxaABvX+ra3Ls - WLldaI5IxRA1i4yTMeY+OZOpYSLlSpMndAo4rc5Ok38AcQh+bgi1OCmkXLKmvN6vrIfzyKkTGEry - wIthqeIVeCksNy3iWgJLTAj84VVqnvUIyAa6W4PUBduv7y9LzlNdFOv39TEavAw+9ZdNdlZ94haU - ytxkuaEipZYHpxP8R1J5HUedRSJC2uv1EcH5uJ3jSqYx3VN3dHI6bmbGGnVhpqWLWL64Mt+Y0Fw7 - VZF0gWngSp1unL2mh/2EucSSb98fGXt1MkKVEhVvj1BAGlQVN6dk93Hpym5J7HIj83bprbOrv9yB - 3KoPjStUx1pic61y7vRzzWJuMZHqFJqGBT5o6R1LRNSH4dBK+PxHyItL/psjHhwd8tcAe20QK/g6 - 3nmuDdzwRv+ksRzUFRmKKHdS8jro7p/LLwF1X0A7NQ2LNcz44mSI+ZnzEzLYFgunPJzp4agEw04c - UlRqfGiWGw/AirjjF6Knp/IeunHyPGsb2kcd6mmH/qbjpX6WsNTP8ptE6ClX1lL9KDzThpJRHhpr - 4evl1ReWJFwt3jde2H2tWc7QypJY3rCikwfqVi8Gv3x9ngX/E/kUlPkUvBVLTUyCGpPgAEz+T8hj - gN/d8wXrznGPVryDzu5mMOjqBoPntYNv1gK2eumg3YA/1TcH243zEV+v7r6AeOagF6vk56m36mNZ - Wz4eduGCAx4rvHoGk+ffHC8M9AtvRn8W/6uH39v3+jsZ9/f1NOFpbKbOaOyivyeHurc/a3tFEhSh - wBvHEvGEP/dp8ha7nDyCJ8EjrgQv9qUuaNWpu/7dvmIVQ65e6NujxfaNvfsdru6H/9DVLWL5BVBL - AwQUAAAACABiEepQiWp/RKQAAACSAQAANgAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24v - dmVuZG9yZWRfc2Rrcy9fX2luaXRfXy5webWPMQ7CMAxF957CUoe2A7kDYkKiE+xWlJg20MaR4yK4 - PVEruEE9+X9/23o1HHasqoYTp4+EYVRoXQd9cMKZ71p8SSxWA0cDx2mCNZRBKJO8yJuyewmOYiYP - S/QkoCNBf779bANXor/Qt0KIayYJP8gpCLPCnQWmLVPmRc3bz3J+V/IKMcyFUBHbJj0HLGC8iKPc - dMaTm6wQRjtTTtZRi2uP2FVfUEsDBBQAAAAIAGIR6lAGAuXUOgEAAO4CAABLAAAAYXpleHRfbG9n - X2FuYWx5dGljc19zb2x1dGlvbi92ZW5kb3JlZF9zZGtzL29wZXJhdGlvbnNtYW5hZ2VtZW50L19f - aW5pdF9fLnB5rZAxa8MwEIV3/4qDDEmh8dwlQwilBJoGktKlFKHIZ1tF1pnTOW3+fWW5MenQdokG - ge4+vffuJmCosL5adFLO77IJzK92otiK2hPbqhaYmRvYWMMUqJRY55ZYiyWfw9I5SFAAxoB8xCKP - fx+tQR+wgM4XyCA1wmb9fC7nsEccH/IpYH1iWqZ3NAJMJFASRyU3UJGI72ZwzSYpXoFQoccYJRod - ThcRZ7sbWHZCOwwygA8DSNynW9XaVxig0Scwukvqhph76wPW+miJQfsCPmwc74DgKOrYMmU0vZwN - UYZxtM+vu/ysZGogV4Z8aatuWDbYJu5dYNviUAgb7XWFDXpZOdvfl/hZg0ZcNSOvTPrwv2SmlHZO - KVjA6/R3bHoLf3R/5Jq+ncc7IoeLuV7ud/v19imLlt+dZDuWvwBQSwMEFAAAAAgAYhHqULp6rKyp - AwAA3goAAFEAAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL3ZlbmRvcmVkX3Nka3Mvb3Bl - cmF0aW9uc21hbmFnZW1lbnQvX2NvbmZpZ3VyYXRpb24ucHmtVktv2zgQvutXDJyDLcBm9lAsCmFd - IHAfCLZJAyftVaGlkcVWIrUk5dZd7H/fIWXZopo0RVAdDA81833zps4gU7mQ22Vri8XL6AwWv+0h - sJVq9lpsSwuzLIYrkWllVGHpXDdKcyuUZHBRVeCVDGg0qHeYM7J9LzKUBnNoZY4abIlwdXnXHzO4 - RTwK9psFIb1Oo9VnzCxopSwUShNS1WmRBsl1xxqdefdyhC1KJFeIaLMfuDhbx3DRWrVGYzvFd52i - 0s67VcnlFg3UfA8Zbz16prR21Bss+U4oDVzm8FVQeBuEShGOKLyPmYMThmA0HunZ701+oVUNtaGM - Wv691cRXU8otXDhhpWQhtm1XgajTZTvUhsRe8dOb9e3lh+soirKKGwMfGuz0zRWXfIs1SruqhPsd - os1+JIiTCOiZTCbBsavOT1C9zbWySCnjFjilseGa12jJT2hdZ1gFmUbuVYShClCsMkPgFK7h1EfA - T6cej1urxaa1aFjkDxKP6WBy4hS8MgmsTgJIpP+5d9VXzrvmiZWUrtj010fMOji7bzBES2qVJ/cX - QS0GDN4M1MY17V8DHeZ/U55ZscM0F66zlN6/uh+6bdqNybRoXAJTkSfUozRFw9OhL/C1FFlJ8yT+ - abHad8zCvy2Gre/jCVAY3JXhCVy+dkmpjSuKBVV0aC5HH9eXPl9IDbUHN9A0fzQkVTXM0Q+uG6uH - odEc78g3nUoqeQI3BxGceCwHqbpyUNJUq7OgBiP7EXpvkTrdBNYHEbzpI+gD8JH5Y+AH10MYHwF7 - COxBT0mEDTeYtrpKaOl12fy4ft/PVNfHORaQpkIKm6azrhaHx2BVzIdtMB/nfh4max6GNw8dnB+9 - WV4riTTbRzbabsNuo4l0GkngjeaCduUnXrX4RmulZ5ObfqhhOrCeQt3SwpTKrVOPwybxkGkUwzPY - RghPMgZJegZfYP8kW1CDZ7AF9r/O9szYAvsn2fybvqcDkv4UljAtrW1Mcn5eHy+GbieyTNXTU9eZ - lq6Q2S/eTnM/DjE7jkpPGJ8Az+DW0k6jjyL/AeA2MrvZ25KW3gv2B/vzxZxu/S/Y3wBuGTZKVeBX - df8hQfPI28qevCRa9gWxSXlFC53iu9MtRuF7nucpXWw6pQCknU19uIt6W9uFOsZ3Ssf5v/9NWfdJ - Mzvc1nH8c0S/2he3r/9evFV60UU1jUduDId4ORzpUG08gcvxTIbq4fgsw3EKVcPeX4az8IjqATWQ - o/8BUEsDBBQAAAAIAGIR6lBHv6w0wQMAAMgNAABgAAAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1 - dGlvbi92ZW5kb3JlZF9zZGtzL29wZXJhdGlvbnNtYW5hZ2VtZW50L19vcGVyYXRpb25zX21hbmFn - ZW1lbnRfY2xpZW50LnB5vVZRb9s2EH73rzgkD7UBWWgGDBiEZoDhAEWwZhvc9lmlqZPNVhI9knLm - Dv3vPZKyRNrRmhRp9WCY5Hfffbw78ngJXBai2Vy3ppz/NrmE+bN9RLaUu4MSm62BKZ/BneBKalka - mlc7qZgRsklhUVXgQBoUalR7LFKyfSM4NhoLaJsCFZgtwt3tu+N0Cm8R+4H514BoHGan5EfkBpSU - BkqpiKnyKELQuPZeJ5dOXoGwwQZJCjlaHwKJ09UMFq2RK9TGA197oFRW3XLLmg1qqNkBOGsdO5dK - Wddr3LK9kApYU8C9oO2tESpJPKJ0GrmlE5poFPbu0+cN/qRUsoZaU0hNaqNKQch5JbAhGTVF38Db - mz+WbiLE9ouoBKvEZ1QJ3Ni0dKOOOM25bEqxaX0Wj1Z/7dBP6DvWsA3WxO59LEN4xyF7dO9VVq2b - GIhGsYOHhdaSC/Z0w0jUY0zPIMeFmlJa6clkwium9f/EYdpHfZZNgL6Li4sBHWiDLjcOlIk9U+BD - nkEk2xY5+MSmHktQc9hhD39sUgJP+piHbEgJDOGI/QRg9rlVmNab2gTBq3uvwWT6UKoHAYNNzoLs - ZiNZH9U2yvMEpd8stAdlR+cjEh5X3WOkn3J9l/jRYh/kD3Zh1YwqDOFPkBS49nw7plgNXGFBSLpn - iG45DKBB+l+4One3p7/EjLQF3tgLl/4unHtP54s/ZMvoeGYfFt0V56SGHpwZyLVtHK8CTOp+c8aN - 2GNeCHu7S3X4/UMoW7drzZXY2Q3losioT1AnC2dDLXC/FXxLPU3802J18J6FWy3D9uP2E7Gk8G4b - z8DtjQ1KrYGUGJClZ7Mxer+6dfHCPaoDdNc/NaqqCmN0Jl0bFW6NeumetKm8YTVm8Hc3BDvs00FQ - mw4KmmwVj3JwYn/CfrTILTaDVTcEZzrCHpCfmI+Rd9JjGreD9CGyB5XSENZMY96qKrOd0UXz/erN - 8QL3dVxgCXkuGmHyfOpz0X0aqzIJyyA5jX0SByuJt5fEApNezfWfskFqJJPQU+qvC7h+7M0//QHK - ZoOkllRMx6UkTvQs7UMX7CGNlQ0Ls2HL/j7IfQemTf/3KYO9K6BPCf2hd6FfIgeF4OQgFQZrPZ3Z - 55jQoqHT3nCc7hNXerMvcTDZTuR0irQ9cNfw4peXV7/Or67mL6/mO4V7gfcvYnzev5UIPryippHM - 2YlNgaFV+N46tYsN+9ZrfZ031PMqTLs3YBTM5FR5ci7rRPFIXyUZ3+qWP0VT3DAjVWNt8MfpCp6R - 4ZF8VodfAVBLAwQUAAAACABiEepQeb37Be0AAADtAQAASgAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nf - c29sdXRpb24vdmVuZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFuYWdlbWVudC92ZXJzaW9uLnB5rZBB - bsIwEEX3OcUX2cACi+66YYFQhZAKSKHq3rEniavgicYObW5fJ1FRD4B3M3p+/9s5DFvn620fq/Vr - lmP9tJNke+4GcXUTsTQrnJwRDlzFtJeORUfHXmHXtpigAKFAcier0t13Z8gHsui9JUFsCKfjx99a - 4Ur0GOJPhPMT0wl/kYkQ5oiKJZnamUpEmm9zapZP9SyhJk+pSgoqh38Vl8UKuz5yQSHO4GEGWcZ2 - +0b7mgJueoDR/WQ3LDJGl9Tou2OB9hbfLj2vJLScPK6aOppR50LSCD3i1XM/P/t8K67HyxlbLDbq - RW0WWfYLUEsDBBQAAAAIAGIR6lAajO4KGQIAAJEKAABSAAAAYXpleHRfbG9nX2FuYWx5dGljc19z - b2x1dGlvbi92ZW5kb3JlZF9zZGtzL29wZXJhdGlvbnNtYW5hZ2VtZW50L21vZGVscy9fX2luaXRf - Xy5wea1TTW/aQBC9+1eMxAGQCJdcqko5IBpVkYKCQm5VZS3rsdnK3rFm1yn+912vgTYx+KPgA9LO - vnnzdnhvBJIipZOHwsZ3X4IR3N3sc2RLyktWyc7CRE5hpSSTodi6OufEwirSc1ikKXiQAUaD/I7R - 3PU+K4naYASFjpDB7hBWT2/H8hw2iKeD3VtQ2mNypl8oLTCRhZjYMaU1yiHcOaunBiMvL0JIUKOT - 4gZty38kTl6nsCgsvaKxNfB7DSSu1C13QidoIBMlSFF4dknM1egt7sS7IgahI/it3PO2CCk5HhV7 - jbKiU8bRMJ7Gz2+7/MBy+TUA98VMGczDzA1NTZiX96Ayt30LC87eMMtTN30tWGRokds7qj2s0BiR - 4CMz8axRedxLzKsNDyPyP+0tK6EdOkNtF8aQVKJ7ytmWNVOObBWaq5qflbF9CZakY5UUPEjyh6bh - oi+0d8t+ybGP0BPsmzLOQmU7ekNp0c15RK2Flbue0FT0Je25wibe7wy9sWGyKbUV+4P7n3yLP0zP - hG1Y0G4SsoEBGxiu/w7WVaEaHKgrwnRlkHqEqH+AusPTMzj9QjMkMB1hOWBzt8Lo0rPX1WUQhKFI - 0zCEB/jhx4zPhWU8q+8+u3o8a9ZO4bjUdOisL88asvXy71N7wqqNNKEfbNVx3TayxZ5H8GnljcLB - esf68d/8fPa2ahSdiRq1htDzBmkI8WZw1Z/BH1BLAwQUAAAACABiEepQE1cV4owKAADdPwAAUQAA - AGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdmVuZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFu - YWdlbWVudC9tb2RlbHMvX21vZGVscy5wee1bX28buRF/96cgkgc7B5/yWghNASNprznE1yA2+hIE - Br1LS6xXyy3JtU8X+D57Z/hvSS4lrWI5d0GjB1tLzgyHMz/ODMnVc1KJmreLV72++fEvR8/Jjwf7 - gLDXoltLvlhqclK9IOe8kkKJGw3tshOSai7aGTlrGmKIFJFMMXnH6hnwvuMVaxWrSd/WTBK9ZOT8 - 7aVvnpELxsKD/lUT3hqaTor/sEoTKYQmN0KCpMZSAQU8r+yoR8+NejUjC9YyUAUGul5HKp58eEHO - ei0+MKUt4U+WUEjU7vWStgumyIquSUV7I70SUuLQ12xJ77iQhLY1uecwvWtGGgFy+I3RsUJxXIEY - ycLws8Ma/+hGihVZKTCpnoFVOW34b2buhK/A+JqcgxZNQsZ+rViHJMrT/FPr7l8ds676u5Rgz6Oj - qqFKkTO5umSrrgHd31NJV0wzeWJkvpgfEfg8e/YsdBAtSIdc8P/swznRjnN2ZEjnHRKSFojn5i8R - 1lKdFzCzdHrdMUemtIx572jTQ6v5h37P2MnblvysxS1rI0GOx0sCha06V1Rrya97za5WtCOvyGfT - jJ9jHPx4Tj4f37I1/LfPp+QYBeIzCDt+OB3ozRgxg20oczzY8Wt2Q66ueMv11dWJYs3NKfnhh9t7 - KhfK2RY/qgfHnJTccEqQ6cUsyAjcAzMQzIylXxHbN1swfeKn84toWUZsLZtS+7lYco+M143oawOW - HA9Dz2ySxR8GmSDonClFF6wo+RK8zbCDXIsalqRotaSVTvFlCOZkoK2ZprxRBi+U3MB3CAOS/bfH - 1RABxTH+Tn/rJZutFis9E35VqBVtQasVa/VshUqpWa6sXTiTIWZGiyFjGyLIFAd4BIhyeVMBZK2Y - YsIrm2Ei19iHmpNxiBm8eoHZQGJa6ITJBfdcL0kIUyZKgEkKFjlOPV8zHwKB+Cx+TIKIH2hOspEx - bkEQj/jqDMEFc0fUp0ESeMG5YIcPgoVGztggd2wDP9ZmL2xfStuXR2w4zGjxwkKvxAvI9mche2U1 - iflcU8waqPYK0zhgvITM85Yw7UaJWXzTwUJ10fpTl5qpGdKV5uZUiNVO9Yx+mFC6Ns9DADtTSlTc - rMQSKjCqUg71ikGEEk1vaylD828KmLxuoCaiEvJ326xJJ7q+8aUV5mNT3cGU48KIL1ohcWkvXW5W - rMWKFBCXQY3fUUl4PSdQk4leVoy8feOQAj0GLNgbUGbobbEQOPAx48nKCcNlo0rgiuDsuSxFhuhG - VMZ4EatvihA9UGXsULsCTjRnak7eh+/G2EUfEXFtal2AF1ZrrLYocMYOQVUNzBgurF4w1h2v08Iq - Gt9KmprwitoNM8iWLVQNvLYTSNYsr83yk4zWCB94uJQ9i1dpKL620Li1uonmYXfscHq4MABPW+LG - vuVg0M7Rm+ct9B4rMU9o28I3uDLmjFoj3h3ee0TEK0qeGvF4DW7BSFUsWscdBsKlDm+vLBxGZiyE - 0MFUGVtiwwmBdDBkHlLLazoaOKzrbUvaSCssa9Nu9tYQRTlG2LAbgm1rr3CfGkVo2D4LWdudGkZg - s1Mzqz9J9LTrYDttdLiyodgKn5kkHvW+rf0ezjTStjLbMmtkveSQJoZJx0EoH2Gc9jfFj5TTxQCr - 3t4xoCDLraFkjocrDnZgZ+qiSfXOoJtNak/4vuNK5xBG/zbQjr4uw9nXpymM3M773YiVbFgKWPjb - E54jZ7RrVUne5eixgi0NKvbxUSns0/SCc/c+/2N5iKfDDFp3Km6m7+6HQV+L9oYvevm9Xvwz14uJ - l/6EFWOi3/ea8ZurGTf47yBhLZH9/1A3bjDm5soxXd0HrR2fPEA/eXE6rSQ11ah14mCZKRWpj8Jg - nlZfeTNe+VwQF8ZGznCnEcfVJJwWRY3Hc5aKR3k/2A+MI3t7GxbftaTjeBFfUCqVrhw+RcnQ4EgB - Lzj9Smkgs66I24lp9xc1ufUTVGeJtCQ9s5Cfce6Fn9WQAV1tgqrkhgIDWoVq1jViHdltEGylTExS - Jbdu2Z54HueinZQjg+xMd24af+QWabthfO4x/b42utyR9zKTDTJ8a1yMF0Gcp8OSXYe0GHovTOe2 - DB4b3Gdx3xbxWVQdPnV+nX1kmgcLrs0zYsn7m4T54DYSMTi3nI0zH5ZLAL/yU+mRi/ZM2NP3ymkC - 33e3vDH9f8X9cqLDU+2Y00GecoU8za45VF85Ki5CnRasjT6euhWLYWI3poHTPX/2xA8vP3sB8DWM - 9hChofhmRc0VrIL1nLyxXwgsOAppjoYTPH8xiwgPcmOUBRFT0RUm4cacjqp9N1dOtZjFN0VcuT6P - AGAQ9SRvaTjdM/phRhtQ6aaVg3Nfj2eHEwZ29i6dR6idR69ZlXCeHTA4ngyVHsrR0QlA/n7Jq0wr - whWB7/jqF2jNdBWLH6Rk4gM7VEWudo+awKh4805rvORvIP+c5oIj4r3urf18R6UGtm2BsZ9IzBfa - tvAFPWPGofFgx9s50qaC3899vJn2JiksghAnU6bIHgWmATApV2yMdPVcuAPN70efX//oU9OFikeF - x3ifZnprXumPwHeKzJ+S2NRQEPke/ibuGZ2OOmdYoHzB6agZZmrO83BCtSae8j6Z4l96rBvm8P0c - 9487x0X0J+Pgc0T/GRge0q0uQC7JOPgcccTQ/OIj4zE2HpFPvLBv41AYPZDvLa1TSntWDEtZurP+ - ONBxc3AE1dWylLwioVD30MAAIYVqUoF6eDqL3Pga5AHC8qTSaC9YPwJSxixTcbXLsyObgydHb8lP - zUPbI7kRt21nGL9YH4ayL7ZWEDDxNwjkH3h3GKrzrr9uuFr6a8LAxEG3peib2lQl9qjZ/rYC5Xsy - LJxP7oW8VR2t2C8w+gubZII1Lt1htMYivaIKy55Wcc3vmFVFL7k0dwN6HcSe4vAWhFYabdd42LHY - +RsBPx3YTbz3X22ZYwZb0KZhMhsIFAv2SFLkIGt8K7sS5mzMvvUanvH9T8QFugyGWpMeX2luxf2p - mc5a9KRhYHXqbiPYqtPx6XMueDxu3Vd6s59Zi0Vn/ZLWuaPteMHbI0tsd7irMs4vfrJsL/8aI+Bv - ePYOVhx5OJ2ZVf1Jf4oRXJbkqtC4/WY0snyW6gbn7hCBU8x4TdPBNllxkHmS04VgrDzZREYsJ6nI - fONEFdt2kwC01JjT2W9DrN14fxoS2r4XpluD7bd3YRqC83AIX3ipD/nCxN/W6aVdEIHqA10SdPwM - 7UUahB4XguJAukGHdJO5/5VitOc2Yva4PvR79zpopOYFSyhbDvk5Bi5nl3AAHzRRxp7r6CeB1S34 - CqEAeFbuKAkaei3wZ4oVJgknDaCRmpYH+vR3FgXVzbl+vgWW7Abc1VbjWW6Y38BA8DeDVi/zImew - NHmDGhnktmubgYSKdBa9qQ+uB/BDIryNLilSl7kTupKe6ZR2by+LIDvoxeqEveVmJVxCCAQfwmLb - kVIOdUFZwE0sK3R/CL3xNQ06IjuNHDstPZn0/bsFPiYP7n3tWXRRlnbKbnzM9WPB+qOf+oz9s+Ho - c2z50TFowTm7c+iuK82wyifdYapCBo5D5tbryv1uKv1UDns1GaQeFKeHvXz8H1BLAwQUAAAACABi - EepQ4QSnvO4KAABHQAAAVQAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdmVuZG9yZWRf - c2Rrcy9vcGVyYXRpb25zbWFuYWdlbWVudC9tb2RlbHMvX21vZGVsc19weTMucHntG11v2zjyPb+C - aB+SFK77ejDOCwTt3m4WzV6RBPdSFIEiMTY3sqgTqWS9Qe633wy/RFK0LDvJtgXah1Qi54szw5nh - UH5Ncl6wajFv5c3bfxy8Jm+f7R8Qe8/rdcMWS0mO8mNyxvKGC34jYbypeZNJxqspOSlLooAEaaig - zR0tpoD7keW0ErQgbVXQhsglJWenl3Z4Si4odS/yT0lYpWDqhv9Bc0kaziW54Q1QKjUUQMD7SnM9 - eK3EKyhZ0IqCKMDoeu2JeHR+TE5ayc+pkBrwFw3IG5Tu/TKrFlSQVbYmedYq6jlvGmR9TZfZHeMN - yaqC3DNY3jUlJQc67EbJmCM5JoBMQx376fMq/+Cm4SuyEqBSOQWtsqxkf6m1E7YC5UtyBlKUARj9 - M6c1gggL86uU9b9rqk31c9OAPg8O8jITgpw0q0u6qkuQ/VPWZCsqaXOkaB7PDgj8e/XqlZsgkpMa - seD/k/MzIg3m9ECBzmoEJBUAz9RfwrWmaktgquHkuqYGTMjGx73LyhZG1X9o9widnFbkN8lvaeUR - MjiWEgisxbnKpGzYdSvp1SqryZw8qGH8d4jMD2fk4fCWruF//T4hh0gQ34HY4eOkg1c8fAQ9kMZ4 - 1PwLekOurljF5NXVkaDlzYS8mXTLnv/OKzrxpDcDb97c3mfNQhyTtz8RHJo5MUQLRjxKmWxCkMHx - 1PFzVDpkAJgqq8yVEOGE1vhci+O8433J20I5TOwT3cx0lNYfO5pA6IwKkS1okvIlWJziBLnmBWxL - Xskmy2XoYwpgRjrYgsqMlUL5TEZu4BlCQUP/2+KO8JzFIP4v+6tt6HS1WMkptztDrLIKpFrRSk5X - KJSYxsLqzTPazRQ33230gOc2SQajHEmRGuszMZux/qKVO9fMNprwZxtxjvqRpjPsBSaFBrNDzVVK - uGdySVy0UsECtJJQymFo/ILaSAjAJ/5rEEssoxmJOGP4glju4RWREyc07kFPHCXQvFLa7GCLvp2G - eorfQLevA8trsxWGd9PwDvEVh4nN31toFX8P6fkocq+0JD6eGfJRHdRO0RoZ+rtIvQ9Ea8PFR7FD - e0Rst1yz2fw17Lv/dtqEqtCYKznCCSMJzJkn5xtnLpKdCMFzpvZjyjcwvGYMihflF4KXrS6sFMx/ - MvDM6xIKpKyBZF6Va1Lzui1tnYXJWZV6sBS/SmKLije4wZcmUQtaYXkKfhc5HLvLGsKKGYECjbdN - TsnpB+MvMKNcBmedryl4nUIdBr5GOFFtobB0bHFYnlNbLA0R+XXJc6U8D9UOeX7dQUXoUMiC/SWj - YkY+uWel7KSNCL9WhS+4DZZutNAWN8p2oVV0yBg0tFzA644VYZXl8deUxma+pHTdCqLNC2UDK/QC - gp3LCrUJG5oV6D7wctm01N+rrhIbgDE7dhPM4/YIYuQwwQDeBqLHrrWhk87Aq/cBeOsrPo4bG8Dr - TOljeqMe7hbrjYp7gU+bQNdxGxv5kpKMjXysADMi1WQV259QLp+asGuByWD3OoBuYQDSvQwH1E6h - cWhN722PidvfQ1tbUUtsbzWuDtwQTRlGWndEgrNsK/Dw6kVqOFPzptDHN4zE6vimokCQ9rO6hjO2 - kuFKh2RNfKpSujd7WtiDnRrMqlyd1bRC5ZJBuugW7QejmEO/CNgUR0JMEwu0eDvHggQts5eCNe5T - KiQWuO8W6Xxr7GYJmcOaw4GxrvyRCRm7M9q6hHG0e9q1beUaupQ53H7soZIN2wKPBLoFdGAUdC3y - htWxJ2nCGgYF+/yktPZlfCm6vRHwOc1ilP8oYk+KrKEdx7pO+vTfMXjPqxu2aJsfZeS3XEYGVvoG - C8lAvh+l5HdXSm6w31cpJgNZvudycoNSNxeU4S5/1pLyxQP1i9es4ypVVaRqg3WaGVOo2mgM6qnk - lVXjlc0Jfr2s6HT3H358DcJqklSfn9GUz+VTpz9QTtPqmzP/XibkY0nsUTWlrhy+eElR+ZEAXDD6 - lZAApk3hjxM1bi91Yu0HXh0l1BT1SEN2xbEVfhNdJjQ1CooSKwoUqAUqaF3ytae3jrCmMjJZpcw6 - cGqxOMZEWyF7Ctma9swyvubJaVgxNgepeVsjXW7Jf5HKOhp21K/Lk04cp8WUXrv06GYv1ORQJvcV - brO5HfPwtFeNSqEbQ8XE290T57HJ0+gTE+3zH0rDrJlYIebPxHAP0YbCuaeMXk6OrJtO+jYmzLs4 - Ojptjz88h2l81+PzxiLgbzxABzK81BE6ZPKSh+gBiz7tGO3KsNgxLlzB5hSOZh57NvM9RZ9UHaZ5 - f7DAj+8eLAF4dNwePYdIfo5RMAEbYD0jH/QDgX2VQb7LXIfPXuOikzu6vqM5EmMdzC3C8BzvWLue - toxoPood8rBiefb6ysPQHeuVjueTv+swjGHOPPXd0qwr9s5dTR61K5Tf6at35rntzPs4K+XoUcvB - 4ERuaX3Za6aAz98vWR5JRZgg8IwfjIHUVOY++Y5KRN6hQ31kqnhvaEElXtRnBX4TUFJMtBFhD3in - a2673l7RgWMDfmwX4uO5sQE8J6eP2A3u0f8OLGacPVCzGQs1tPOuMK45dnNYqfRRXD2GAC64zp20 - IUDnUPNOdreTLky780dj9O9vjMpsIXyu8Oqf3tRswXL5WdXJ8OdLEKfKDEh+gr+BeXq9U2MM7RR7 - 9E4Vm7EJ0LoTijWyB/xigu/b9HVr+NHl/XpdXvT+gA++e/APgPAYHoDB5YLsg+8ehu+aezeU+76x - dwcZV2SbySDS3n1lK9K310jGFeJJ1MY1N4HrxYRmg0Q3saX17NSfyXyZSlkeAah8MocAgSSTJAe2 - 2KlFbPxu8hmC8ajiaCdnHnQkz2lGO4ZS1ljv8G3W0zrYq/d9/dj8MxzBFbmh46H/Sb5jpb+FzSFQ - 4q8XyL/wRtFV6HV7XTKxtJeHDomBbEveloWqRnTjWf8qA+lbMCyej+55cyvqLKe/A/djnVycNi5N - a1pioZ5nAsudSjDJ7qgWRS5Zo24K5NqRnSB77YaaWlatsemx2PrrArscqE8/2Udd3ihmi6wsaRMx - AsGcPoLU2NHq39WuuOpv6S9H3Tt+BDoBN0OTAas1afEr6IrfT9Ry1rwlJQWtZ2ar01Ut/V50TLjP - t2hzudnOtMJis3iXFbGhNT9n7Z4mhg1uqouzi1802rt/+h7wE3biQYs9C4cr06K/6I84nMmCHOUG - h+9LPc1HKa4z7hYSuMQIVw09w69IQm/s8mDsL92M0/fOoRCi1ZPbEk5ezFH2uZfHPOl1LvMGesC4 - IA2FT/3Au/Fq1eW3Xe9SByPv93eX6iJ112lPfAaIeG7hp0V4n+dIoPgAF0Qgu0J9xwZxyMQjP6pu - kCE8ae5+2+gdvBWZHW4W7QG+cBKJWUITQldHdo0Oy+jFdeWdJELpc+39sjC/BVuhKyyoFKa3BAOt - 5PhrxxwzhqEGrhGqljn48HcaCdFVsz8+Bzf0BsxV5f1Vblhfh0Dwp4daLvXpp9M0+YASKc+t1jod - ceHJzFtVLFx3zg9Z8da7uQhNZlp2KTnDJW0/Yyad7FnvXEccMDcLYbKDAzh3m21Lfnmuu8uE3/i0 - 3PS5m/XvbtAQUXuyb7SwVWnntxMcTIqbg8cktRdcf7Iv3s45ced70aSs4CHJ8UQ7c/s9ZmLF6kdE - vdG4F9pXh+qL9ocHcuy2e1AXBUZdfIpEhvZD6uAd527Xm3Ypz3uf6ag+/wVmWvf73Vj+H1BLAwQU - AAAACABiEepQrf1ovcIBAACqAwAAVwAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdmVu - ZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFuYWdlbWVudC9tb2RlbHMvX3BhZ2VkX21vZGVscy5wea1R - y27bMBC86ysW9kFy4PBcGE0BI4eiQIIWaW9FoVDUSmYtcgVy5UQN/O9dUY3q9hwe+BjszA5n12Co - tr69Gbi5fpet4frNlojdUj8G2x4YCrOBe2sCRWpY8NBT0GzJK9h3HaSiCAEjhhPWSrh31qCPWMPg - awzAB4T7T99eYQVfEZcHPzNYn2r6QD/RMAQihoaCKHVzlVTI281ds3WyVyO06FGsSKNqvLBYPGxg - PzA9YOS58ONcSGFyd3vQvsUITo9g9JDUDYUwta7woE+WAmhfw5OV71UIHYmObZJHM8nZKDIBl/bq - bcPPmkAOXJRIWfW6lRmDdZI6wxfdYp1lmel0jPC5x3kSCS7SvtllIGu1WqVzD38EDHnWVgxPyYLl - xBScTgJpCVr+SA3skvLucZGG9/rXEFC51rGiVzQ67aWbQ8/KSSRdVAvjwyNQNQ1yMZIupWYOthoY - S6d7uIGXBE8r9/jMZWf9Md/BS37EUc4E3k3YFnIee5ywyCE/b/8SzSBz81zKJ/GSe9LdgJfE74u9 - H/k58c+zrRobKEvrLZdlEbFrtnClQxvluDo+TTdJdGkYB5Ep/s19CxNtoxaV//nZb1BLAwQUAAAA - CABiEepQEl0hbT8BAABrAwAAVgAAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdmVuZG9y - ZWRfc2Rrcy9vcGVyYXRpb25zbWFuYWdlbWVudC9vcGVyYXRpb25zL19faW5pdF9fLnB5rZCxbsJA - DIb3PIUlBkAqmbswIIaqEqgSdKuq03FxEleXc+S70PL2vSRKBKK0HfBm+/Pv356A4YxcsWxCvnhM - JrC4W0SxNdcnoaIMMDNz2JIR9pyHWJeaRQdil8LKWuggD4Ie5YhZGmc3ZNB5zKBxGQqEEmH7/DqU - U9gjjkn4CkCuY2rhDzQBhDlAzhKVbE9FIuZVvzWZdPYyhAIdRitx0eF0ZnG2m8OqCbxDH3rwqQdZ - WnfrUrsCPVT6BEY3nbphkXb1AUt9JBbQLoNPiucdECxHHco7j6aVIx9lBMf16X2fn+TCFaTKs23a - i73iGvuXe6Aqvj/Afui9jK1hrNJOF1ihC0p7z4b0LZHtSK7OwF8VDbucikb+obm+QK9Vr2fPmEQp - ba1SsIS3BGJMf7h4+tC3/rrjmrvlbSAvKu/JN1BLAwQUAAAACABiEepQwK6h29QHAAC3OwAAcQAA - AGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdmVuZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFu - YWdlbWVudC9vcGVyYXRpb25zL19tYW5hZ2VtZW50X2Fzc29jaWF0aW9uc19vcGVyYXRpb25zLnB5 - 7Rr9j9s09Pf+FVaH1Ha0uTskJAgU6TQ+hLQBOjYkdBuZm7itURoH2+mtTLe/nffsfDhp0vbYgXaQ - Stsl8fv+8ntOHpFQRDxZzTO9nH02eERm9/YDYk9EupN8tdZkHE7IMx5KocRSw3OZCkk1F4lHLuOY - GCBFJFNMblnkAe5THrJEsYhkScQk0WtGnn3/vHjskZ8ZK2/0G014YmBSKX5noSZSCE2WQgKl2EIB - BNxvLNfBIyNexMiKJQxEAUaLnSPi+GpCLjMtrpjSFvA7CygkSvdkTZMVU2RDdySkmaEeCimR9YKt - 6ZYLSWgSkRsO6i0YiQXQ4UsjY4jkuAIykpXsvfs1/oBvwMSaZBmPBkspNmSjwLzaS3nKYp6AABbg - ScxZoq/oDWiaCrDTwIJ7XgGxAXFjNRgMwpgqRZ7RhK7YBpAulRIhNwZVP6bMOlSNxQI9MPEHBH7D - 4fAYAhHlpTcwSL+KjKi1yOKIJAJdqzRNNCAyEnG0cbwDQ3JFjERTssg0CSXDdZorlCOFDACptm7I - QbgJDLIDJughqjUN1/iUKryRHMixXBI/pZJugA/S9AvaiI6RCoEFLvwjA7uC6C68SJZ8BfDmb2a1 - I2JZYlmCNRxY4jTmfzLpk0sANla0xnfWaigRO4TkruZofEshLFMebJlUIFKp0WXKyS/2mYdSG4OT - LY0z5pPhJ+cXn84uLmbnF7NUsi1nN0Ov8K61k40RMi+DBR9GbEmCgCdcB8FYsXg5zfWe5gaaOopN - a/JC9BgS+ENML7CYwMFeNFZLTACoqDSAHAYA5rKrAzoGArg27RvCWW1QNnNRaR9zpYPFLlDZQoWS - pxgG4xK3wAdzZEqLTbBmFGqdmv8gEjYlkt7Mv6WxgsvHj8scCSyPPL1yJ1wxCFu2hYJk6mRrwhlh - TOgijCuRV6lzMiEHpwhGDpFXV8Qn+YWThFALaRRBudXC8Mjzp0ltIUSMFvABQGcysQLZ7Md9wpQq - QmORrBSPMMtZZVfHtVEJ3OTQtKhPfMmW/uuyMOXezLO3oi4gNiTwVF/akuoLY0UFpq0q2VevvYqh - VcFvt+dPBktzpp6ig8A/eyUZNo6KPYaFlpmjj9S7lFXxQN7RPzPJvM1qo71Kok3J3LNJ6p0gjqO1 - JO8aW4i3v3dUMlGumHKE8k2t9l/jXvqMKQWcv5FSyG/ehMzY78sTpe4k8NVrNyXK60e2nskMAufF - 1dPyeSZjUywgf9vS1NswTSOq6fUIIEevSryU6nVgO4mAylWGsmHle1vL65FL6/to5DcLlQdUx0On - fHguRsCj4ZQcWJ0CBy1Hk5LpbZtiedX0cnGRJfzDetKqxWTQajWTL0xDHpfLkLNyF1QLqP9t5+r1 - CErqLC+po1eldJUxDEZuDqf8FjZwHpWKt4qa15tyzd53Crq3fD26DDGcjJAgdQrNownEs98ViF4i - 8mXNOUUXl9s7yIsa+MmvRUULvzezjZpZtFmONuORNZKWY+zfPPzvYjyZuOwblfYwGy9LIZTZuI40 - 6VKHGhsEMfS4GaQZ9KqmD8Nt6ag+FndW4LZ626LVo7/BsxH9jdXDQYBdnWJJtLe35PfN7FgxbdOi - GbfTfQUnDrG8ODeoIedxzmmKPmR0c2AfH7hOKGh60H/pTAVmUrAtMLn+5Pz8Vd38psiSY3VxvNf9 - TEtGDvvapjk3zj4q2nxOQKq6UA06e8zHoxP2nVGriCgGtAQ1dkXG0ZvA8cjezjR2xXKJ1+xp9uk2 - koNBA8YlZ9YO7iFYdcw24pPRmQuhzt7WN4rbM5hgtxzT86ycRr1qWKpsd9benY1uq/bTDjyBkEGe - /y2tJ2goMhmyYCVFlgYJxPmUVLtuQCva+WIsbEnM29S0dFz+4H2b2SdG6rMXRuT2nsnpPi20wv7E - Knmgdd1vWlu098lzwMcrHNhsi2qBiAHCxhUqhodglT0NPE6k1JwFQBFQXPMtc7pA7NLaGUKRaAp2 - wAM+eQGx164h+QEAmjwP0mrhXTjYh3Eg17x41KBcQbaQqQLDJ1V2mwmkXXY7vVY2VVmKBxD2aAYd - 0ZYGlXeKxGmq78hx7z1yPwTdzxDUNfZ0Tjvv58D/wFhTa2kP6Tou63VxUavZ1WVHN9UxMzX3lgcy - L03rXIvi8R1WY6ydXYxb6vawY/M0jHAPfRPELFnp9fzzc7jlSXF7MUWjgOuSuRz9dj17efPSC16O - X05effzRnoRFVTsknKt3AV+I2Ll2xCLPIctO4VeaANOywa+2doTfqfqVNFv0q6118Nu05cgh5gd2 - z+GRTqkf0VtE/bdG9BZEEELjnG1iuxX9CxKuqVRM2xdi/cD/IAb+hYh25QLeYDej7euCpii4PHZH - /PZx9L7OFtLs9LOFaU32/qThHzppeHhnC5291l3OFYrN0bQqsL7X+rhHD2/dtuO2AsbK6dw20f7W - icXZ2849+dY9zYDYY/d1hvG+ZxRfG1lOO2o4Clt8u9DxTq4/qujm3c/bR+dtjO27j9cF1sMcjk+Y - X2016afWfmrtp9Z+ar3vqbUfF7v0+QDGxbvOcHnj2b8ifp8ZKW+x7zob4XJjq/5fDT34bcIHMfEU - XwYeHXfqnxBmnf1/P+H0E07/RvFhDU2Yav3E1E9M/cTUT0wfynu+ftTq0ucBjlr9p7j461+Q3fEF - mduX/B/Gw78AUEsDBBQAAAAIAGIR6lCyPzuqlAcAALg3AABzAAAAYXpleHRfbG9nX2FuYWx5dGlj - c19zb2x1dGlvbi92ZW5kb3JlZF9zZGtzL29wZXJhdGlvbnNtYW5hZ2VtZW50L29wZXJhdGlvbnMv - X21hbmFnZW1lbnRfY29uZmlndXJhdGlvbnNfb3BlcmF0aW9ucy5wee1ae2/bNhD/35+CcAbY7mwl - KTBg0+oCQdYNBZpuyNoBQ5KptETbLGRRIyknbpF+9h0fkihZchw0HZpNBhJI4j1+9+DxzvIBCllE - k8U0k/PJ970DNHmwDwg7ZemG08VSomE4Qmc05EywuYTnPGUcS8oSD53EMdJEAnEiCF+TyAPeVzQk - iSARypKIcCSXBJ29fJM/9tDvhBQ38kYimmialLP3JJSIMybRnHGQFBsqoID7ldHaO9DwIoIWJCEA - BRTNNg7E4fkInWSSnRMhDeEvhpBxhe50iZMFEWiFNyjEmZYeMs6V6hlZ4jVlHOEkQtcUzJsRFDOQ - Q+caY6jEUQFiOCnUew/r/B5dgYslyjIa9eacrdBKgHull9KUxDQBAIbgNKYkkef4GixNGfipZ8g9 - L6dYAdxY9Hq9MMZCoDOc4AVZAdMpS+Z0kZlAil9TYq+GbKZiMPJ7CD79fv9uFsSKS6+n2f5kGRJL - lsURSpgKr5A4kRRchSKq/BxvwJlUII1qjGaZRCEnah1boyxTSIAQSxMKS0J1cqANKFFRwlLicKme - YqFuOAVxxCLxU8zxCvQomX4uW7GrbIXkgjD+nYFvAbpLr00FetdkxOYFlxFY4YElimP6gXAfnQCx - 9qMJgLNWYYnILiZ31bLRNYbUTGmwJlwApMKik5SiP8wzT6HWDkdrHGfER/2nR8ffTY6PJ0fHk5ST - NSXXfS+Pr/GTyRM0LRJGPYzIHAUBTagMgqEg8Xxs7R5bB40dw8YVvJA/WoT6KE4vMJygwVzUVgtO - ICil1IgcBUDmqqsSOg4Cuibra+CMNQqbviitj6mQwWwTiGwmQk5TlQbDgjfnB3dkQrJVsCQY6p2Y - vmYJGSOOr6c/41jA5ZMnxR4JjA67wWwQzgmkLVlDUdK1smXLaTg6eRWVi8krDbqHKIcrT0gK2Vc1 - xkf2wtmIUBNxFEHZlUxrsXuoLm3GWKy84AOBzHhiIJkKoM4LXbIQjlmyEDRSO52UvnXCGxXEdQ11 - r/rI52TuvyuKk42oNbuUziA/OOgUz0xp9Zn2owDnltXs+TuvVGhM8Ns8+pvmk5SIVypIEKOt4gxH - SAlAJYfkmWMRl5uUlFmBPuEPGSfearGSXolpVaj3zFb19gLkWM7Rp9px4m2fIyUqTAURDixf12z/ - nTpXz4gQoPsF54y/uAmJ9uGzPXG3Cnj+zt0axfWBqWs8g+R5e/6qeJ7xWBcN2MdN29VbEYkjLPHF - ACgHVwVfiuUyMF1FgPkiU9hUBfxY2d8DV9bLaODXC5YHUod9p4x4LkdAo/4Y7VgdgwbJB6NC6W2T - YbZ6ehauUgl/qq40WjHqNXpN7xkiYS8Xy7Bv+SYoF5T9t62rFwMorRNbWgdXBbrSGZrDusMpw7kP - nEeF4Y1Qbc0p1sx9K9Ct5YvBSajSSYME1Ck0kjoRD98LgF4w0nklOHlHZ/0d2MIGcfIrWdGg72ay - EhPDNrFsExoZJ0k+VL2cp/4dD0cjV32t2u5W42UppDIZVplGbeZg7YMghn43g20Gfavux9TxdKc9 - hneS8zZG27BVs7+ms5b9tdXdSaC6O0GSaOt8sff13bEg0myLet6Otw0cOcJsea5JU5qHVtNYxZDg - 1Y7zvOcGIZfpQR8mMxHoqcG0wuji6dHRVdX9usiiu+ricKsLGheKHPWVg3Oqg30ntOkUAaoqqJqc - LeXDwV4nz6ARpAICjUFFYb7n8HXgxGTrbBq6wFzhFY/q07pJZK9Xo3HF6bWdp4iqO/og8dHg0KUQ - hx+rR8XtIcyza6o26GExm3rl2FR677CtSxvclq2oGX4CxgNbAxraULCRZTwkwYKzLA0SyPUxKk/e - oNIM2eWYmcJom9a0CJ598Lmt7anGffhWg27rnpxO1NAL1acYQ3c2ststbIMPfPQGJKgrNcKZhtUQ - IU2k2lioHZ4iK72q6dWMivU3BFAOBJV0TZyeUHVszQqhXNSB7YyDj95CFjpWVkfPEtVrIK4juENy - A5Y86D6MC9YT+aOa7JKyQUyZLD4qd72eUFriZSfc0h6RpeqLCvMVjgpN0wYp45VvqboLHCRfoIPu - xqSHGpPaBqMvPw+BZkfWo5yAKt3vbmuHRVnPLyqlvbxsab1aBqz6IfRIhqtxVWteTX5RBVsV1DbF - DaW933LKakXqsL0JYpIs5HL6wxHc0iS/PR4rp0Dwkikf/HUxuby+9ILL4eXo6ttvthCumqO6C+vO - Q6B/ZxvQTaENUP+tKbSBEUBINUq+gSLYzP4jCpeYCyLN+59upn0UM+2MRZtiQd2o3SjNN+N1KGp5 - 6E6xbRPXQw3Qabb/AD2uoO/G6S82Tj++Abq1S7jP8JyfsvqQhfWtQ/sB5uvDjzsO2lt3+oZUIg83 - c3/uTP2TRrPvYLwHdf4GvuWdUjda7z9ad7PhnbOhyvd7D4IF1+Oc3fYYrkyN6UaqbqTqRqp8uZtl - 2uz5CmaZ+44XtonqXtF9TvNum8X7Nu1quXbAPN5uXL3o/Upa8fznVnv04dVfZmXVprR7q9W13t1r - mf9qa6/2YdfXd31919e3LXc/2PsfDgTdD/bUp3vDcO83DO55+ujGmH8AUEsDBBQAAAAIAGIR6lDR - SuSHRwUAAIcPAABZAAAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1dGlvbi92ZW5kb3JlZF9zZGtz - L29wZXJhdGlvbnNtYW5hZ2VtZW50L29wZXJhdGlvbnMvX29wZXJhdGlvbnMucHmtV1tv2zYUfvev - IJwHy4XMJAUGDEJTIMguKJCuRXYBhiBQaOnYZiuJGkk5cYfut+/wIomSPLcDqodEJs/1O985pM5I - JnJeba8avVl9Pzsjq2/2oLEbUR8k3+40ibIlecszKZTYaFyXtZBMc1FRcl0UxAopIkGB3ENOUfeW - Z1ApyElT5SCJ3gF5++a3dpmSXwG6H/pZE15ZmVqKD5BpIoXQZCMkWiqcFErg79J5nZ3Z8HIgW6gA - Q0FH60MQYnS3JNeNFnegtBP82QkKaaK72bFqC4qU7EAy1ljrmZDSuF7Dju25kIRVOXnimN4aSCHQ - Dt/YGDNjjis0I6FzT78t+DNeIsSaNA3PZxspSlIqhFfTmtdQ8AoDcAI3BYdK37EnzLQWiFMozT41 - Eqj9m8JzBrUBT/Wqosl/lBJRdkqUtlslplio2WyWFUwp8q4GV24VibWpzzKZEXzm83m/RUT3Smd2 - +0/RELUTTZGTSpgSY0SV5ggXybnBujggoFwR6yUm60aTTILZZz4xr5QBCjLtyuFFuCUIOaATUymm - Nct2ZpUp80NyNAc+kqRmkpXox9hMWttG3TAWCYal/KtBxDD0UF5UG75Fefu/cdkRsem0nMGBDm5x - VvBPIBNyjcIWLwdosDdQyeGUUrjr1fieIT1rnu5BKgypy+i65uQPt0ZN1BZwsmdFAwmZv7y4/G51 - ebm6uFzVEvYcnua0raPDydWdXHUEMIs5bEia8orrNI0UFJvY5x17gOIgsXgQL/LEmjCP0aSp00QP - 7mW022miQG9lJBQ4QLHQ3VAwAAjljmU/Cs5lY2KzL332BVc66mRbeUy/UVqU6Q4Yzjh19YuoICaS - PV39xAqFry9edD2ROpu+cTzot2gXyYqcFm60sD3jBVsXELTcW1axLZQGNTvNrt+/mbZayCaO1BlG - lhD/EnQRDjWW5zg3tbCufQOMra2FKExKCQroRlbKCrv2NQPfzhxMQVRbxXPTptADFdQm74THHsYQ - JSSRsEkeOwR8OXz79dYFFleiT/XKTbtEuPmGbd3j8/qR9g5dCrbFuHanAdb2I/RTBuvQ+Q309KGG - vnLkHzdYy22pae+q7ApFXfvQztR73Mjv/7faQxAC4wqwkImdlcljP7xfnZr1tJd7/RhSr3s3/MZ+ - wFpA6jkQVfCsUzxlPlpKB5w1D56CZpp3MsNd85y50SMbpMjvd7eT/UYWtr+x5Uxn0RI0y5lm9wvc - WTzMThq0pAGsnpqIYfDykPYC6OTvz1+Uul/goFj5QbF4aCPrZxG1GtF8PFTm8WTOxGSBYS6WwxSw - pjBFyaHQwfiV2QzEQlx8hw/23dpJRCYi94vrzLDHIoHQ1Hj/smQ8/6AQnzEVgsFJ28uQH/ItnVKe - T7M/4vd5VaqVU1151RXPXUW0jMxViJo/l9FyOQ5jNO++7I42NVIOoqHixG6YHrO4pAVeHRvsWLwC - 2kYwLfJV+Tn9Vat/lGpOzXPtuN+Wdsd3jzMwJIq5LCmo8snEN49f6yLzF5wt6Aj5Gk9IGU8TXY4M - mpHb+RqMHV6hfMUKVN7iR8zpsdNH9p/TapR0dzqNkjHJR145NtQCVp44sWdjTrR2KQ5d3ajUfg+4 - Cy65f3lx8TBlAzzXGEU/i6PWxvKYKO0bB7U6d56jthiuWYIumRqyJ4YxN0bFF8Sfxt3mGfkhuFhN - TmtfZ3u7uLKk77YMJnhDODZXvHgwdAZ3gvaiOTopoxEz4unNj+ZQYx2hyjj0LDTugoL5XEOXdm9w - 6pjw7MGTkMU5fn/uuUH5vPuWpMeuYuf9+b34PPsXUEsDBBQAAAAIAGIR6lDErCzc+QkAADldAABj - AAAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1dGlvbi92ZW5kb3JlZF9zZGtzL29wZXJhdGlvbnNt - YW5hZ2VtZW50L29wZXJhdGlvbnMvX3NvbHV0aW9uc19vcGVyYXRpb25zLnB57Vttb9s4Ev7uX0Gk - B9jZk5XkgAP2fHWBoLe3KNC0RdoecEhzKm3RNheyqCWppN5F9rfvDKkXUpad90vSyMBmLXE4MxwO - Oc88TV6QqYh5Oh/nejb8sfeCDO/sA8pei2wl+XyhyWC6S474VAolZhrey0xIqrlIQ3KYJMQIKSKZ - YvKMxSHMfcunLFUsJnkaM0n0gpGjN5/K1yH5yFj1oL9pwlMjk0nxC5tqIoXQZCYkaEqsFEjA89Ja - 7b0w7sWMzFnKwBUwNFk5Lg6Od8lhrsUxU9oK/mwFhUTvXi9oOmeKLOmKTGlutE+FlGh6whb0jAtJ - aBqTcw7LmzCSCNDDZ8bHKarjCtRIVpkP7zb4Pb6EEGuS5zzuzaRYkqWC8Oow4xlLeAoOWIHXCWep - PqbnsNJMQJx8aZGA8LwUfnv8/gO8YTIg78QHO+bK099yycpJIZXLqKHg8PionGbnhWE5tISoJKrX - 600TqhT5KJIct0q9z5hNFTUQE9zb3VGPwGdnZ6dFhojqa9gzcv8VOVELkScxSQXmCbiZag4xJzHH - DUtWsCtcEWM3IJNck6lkOE6L6BSTpgwEqbZ7Wohwk2VkBUZwu6nWdLrAt1Thg+SgjhWejDIq6RLs - oM5RqRunY9pDlkI+/JpDGMF1V16kMz4HefP/3K6OiFk1yyr05sAQpwn/jckROQRhEzgbYmfMmxKz - bZPc0WIaP6OQ4xmPzphU4FK1osOMk//YdyF6bQJOzmiSsxHZ+dv+wd+HBwfD/YNhJtkZZ+c7Ybmh - Nk42E8i4Sgl8GbMZiSKech1FA8WSWVCsOygCFDgLCzx/IWGMCvzgzDCyM8GC/dIYrWaCQK2lIeQY - ADHXnC/oBAjk2lbfcM6uBn0zX3rO8m3ORUJGeRbjNwwHWB1UGkotAd6lIpdTFs2lyLMopUsGESoO - TPFoNp5p8A6CmCstltGCUbhu1fidSEFA0vPxv2mi4OsPP1QnK7KeFecQPy/sNssc8uXz8dvqfS4T - E0NcVsP3EAxT+EJP+iDVP63mZFQvIntTR1TO8yVsECbD794i+yqfqKnkGTr0Ju6PmnsXgtbBjhPR - 0J0R8XgnIFtGA7CgZX838K2WUf0Zg/oOgrfJcEv4dzZsijEUQCn5FiUsnevF+B/78MjT8vEAd0rD - NqVj2f/fyfDL+Zcw+jL4snv617+seVhu8TbnvDTYWUsLu/JK7UXbdhZHKCw2CtXCf5gmrfu322vN - lToBq2G4AOUqqgdw5y82jp704XwNi/PVP628qxdsZhSJ4JzFcvedV9XCW10tDkY1Zp83Oro2fNI/ - nE5Zpo2T4HUGsMScpr1fFLi+bSI4oSGIw0+rjLVP/yeZLqhUTFscV2vjMy/JS7RR7F5U1BvI95GX - RS1OfBsu1dBOGxbThjy2IddygDgjxB8Hg91d17x/r1xiJrR3w8CftLtpOdRENEoAi+V0jpjKlHi8 - uy5dj507LOe25o6d5t8iDZuNW6Qxuj2lJiJeVQP4gBertoWp6QoOD9z7ul+Cn03aEY4oBj+K3aqE - iufmSc5ybY9w84wF6+ELPHd3HdUWQzZ1ox+Dwm6A+cLockth6bkbXuoMAUboXEUGPVskR06gnJ76 - Wy0pB/sWOYQI3I+YUrAVP0kp5E/fcHvA0mCtiAeVIce8Mx7DmjCxLvdtPCbglu9VQ9Ga9UG9na2O - oC167usszzA9j5y4r+H5gWvbVe5Fjelcpm0qe72GjKuuxibN8v7/gCRFbzH+JPPLAApgy9fGw73P - xr2qvQjr9VkB6CAksWtQpltrkSwQc8t6RuQTTMFvCNBxeilEjBDRAjpOHaJYHSEjjx0INY0knBYF - uO6MhbVFDXd/u0E4TU3HvJiOyGfYsGoZBIFBU3FjQovKel/sEp26h+caGqkY11Z0Re+PPjpx8225 - mv6wDeNyvtRh3bgtaQoHFnFDWJzjUlfTq5jDRdeoMGWldno16L9pHFsP7Z74N2KhbSJEYo6ZXaFp - dMusN67DFq0drwA11ltpW8r6IqSJSOeKx8wY9q6B6oQ1Q23TGryAvDbtYd01B8TkvnmbilI0wJyl - tRNl0110cCgMwQWcQJNqDPYYdmpeF6CRXalp/ap+F5K46vltQK1U3Z+D6drwWnRelmKviitsbE6r - YxQD69xrf7hEgvkZVYkRHuJz1etbr06um0N1p+G5fgPDDUYlXFv99X07dSKDhcwFTCNDUIy+bixq - L69obaOCV1/dC7O++G05yBMHM1ypE225r8ZtRcCvFe5dNPbLgydYXyRjp2r4JdKvIP6jL4q5aQqJ - 93a9qFTDHkyY4a0e4VmPZJ6mcMAikWuEVFW9vVtAgJ82UGBWfYfAwG7j5eDAkVsHCPhJpID1JXQF - rjRjCn2J9jOn74eyktd8ySCw/UbKOAh8+0Svlai4SWWu2lH5IoJUWgjclvriHVT+tyPWUi3cBJ5i - c123aK7o04E7t1W0eNHEYdW9PHChduCc1mBTUgYNI9aFjQwNdraGpBmR/p7Lk6i9330a5mKvPN7m - dMP4GmFysZdJccbxAO5VdHtYE7hH1XW1V559NOOwGhf9C5cUuxsqTNN5iTBvxYR5fEDjdv9A9XQx - MJbwx4a+bQN/1rFmHWvWsWYda9axZnfCmpm7+M6oM3OxP0HybP9xkmf7z4w8ux1ldg3ocj3GzJwR - QtsYsLUh8j5NVnYhiHzRJ6LyDP9lH3+34TlTZxiLETkuF4OPDR1WAsmsE5hvzvhpU0tHdXVUV0d1 - PQDV9XAEV9UpdqRWR2p1pNaNSK0nRWXBVrDbU1n3/Ztc1suOieqYqO+YieoooE3reQQU0HX5GXtj - XZmg+X4pmdswIUUduREDgtWt2IR7KmrXYzb+ZXyxv9+j1tmNtuHyD0zcOvO8eY2OkXgwRgLT/xI2 - AkW2MxE34AFQ6en9cwnGzFPhB7aB9vvlBx4vEXDbJn5brbFxvbx573rzx96bNxrJx9ibO/n/IO04 - 3D3HTEvOzlqBSjlmoUqORb1FqsMmd4ZNygJs8MQ2tOGAkqvAjmYKjBARzEZfq4Qt/hqw+OtPh9eH - 5leCTfXSltWRsEcGYEdd9159dSJYIg3nXzXWb+ASOOhW3HBNqr8NMGwp/4+x7l+BFsNz0nFiHSf2 - /XJiN/7trI5M27SeJ0imIRTqmLS2X266zLXn9LtN+N6tiI8Z3CccLp/JKvIr2ZXx/l0B/AbfiF4Z - 9mgL67hlakjeFCBXlg3EROgFmXGpTJHSKzz6lSq94DIu3ldBe0JNRIf4r4z4PxhBzZl6izl27/jf - t+esRH6/3UD7ndI1CHfUIHRAvgPyHZDvgPxTBPJ+OXx6sP6S0vbgSL8N2ruG24D9s8LwHVTuoPIj - hMre+XgaQLmDoR0M7WBoB0M7GPpwMLS1bFwHhN4IYf4JUEsDBBQAAAAIAJUR6lCQJwRdyAIAAJsH - AAA2AAAAbG9nX2FuYWx5dGljc19zb2x1dGlvbi0wLjEuMS5kaXN0LWluZm8vREVTQ1JJUFRJT04u - cnN0pVVNT9tAEL3vrxiRAy2NbbhG4oCAQiRSJNKqh1KJtT2xV6x3rf0ATJX/3vE6dpMqEBA+ROvN - zLw3z7NvR3Dy7A3C6dUUpC4irrhsnMhsZLX0TmgF508OlW1XI/a9FBZqnt3zAoGWC23AlQj723P3 - AfvkMYgYY9jnz1BpJRwlbuTAkMPYaDSCS/0IToO3CPTKpso6LiWBEepQlP4WqggMUpSU0baR6ari - Kmd3d3eM0P4F8zyHKFK8whdaDSkBfaoy6XPM4StyR/rYdncEV7qAk4HxvFdoRqUKrFC5CevWL0RO - 4FelSW2hFvr3p9K52k6SJNeZjSuRGW31wsXEP0EVeZvw9tN0v9FKtERQL0XpbNKTtp/hlh2cP/Gq - lmgnB6EB4npqiDoCf0Hm4dPVkiuojc595kAv4Ho2vyCl0TTJqVaOC4XG9mK+/ukg6zBvGdATRaSb - 9ibDqDDa1zBrblYbF+G9D+vTI9fUNIkD6BDwqM29palD2EusT21mRB1aT/7MfTo9WyZmvTBtbwAt - E2rvQeRUMlnVnA1qX9doeFuMy2kv7YBHlX726280N8u9gZPjhYV7bI4fuPQ4TA4J/6POXxM+hMJu - LX1X5p1ahunux62l/AbCZyhxF+HdfPOuyk6mWziuk7lAR6VoAqQFnmrvwpDaGjOxEHQgP8TRluQR - H2V4JayD1ovosLTctmNZOuT/UV8fXSCSPQ0INN7YgiT0EPr28PaIrUPPmvna6/uLvS5fJ9V0AY32 - UPKH9p6wHu2YnAY52XkhaG+BmKd0j0DagK5RtTZOPhRCgTvovbEQrvRp8MSTNTfMpIgGY7dJhxAz - xuIYJlnJVUHXQTFh7AY70Euirk3Djjcfxg7jo/iIfdl82AHNYG0w42GiW4uMap9S/yWa8WpAxsM/ - K/OkS2d1x2w6Wuu0nTN2cIdb4KYkvOCSZiLwbVv5C1BLAwQUAAAACACVEepQ9u2MH6QBAAA7AwAA - NAAAAGxvZ19hbmFseXRpY3Nfc29sdXRpb24tMC4xLjEuZGlzdC1pbmZvL21ldGFkYXRhLmpzb26N - ksFu2zAQRH+F4KkFKllp0h58ipIUqAAnMSrfisJgqLXMguQK5NKpYujfS0oy4EsQXwSK+2Z3OOSR - Sy28VzsFzvMl+80f4AAaOwOWWE2CgmfLJbthGbsDEvwL45UlsA00rAyNAishAbMsdXkPqXtPYFjZ - GGWVJycIJ3rtsHXCxO2WrYRtg2hHwbqnPdqPibS6vhDLby4Fv10Kfk/gSkmwfqw91xUru87hIQYQ - /x+rDZvL/E9E4V8Mxyu0KfAj78ZWeRPTVXrakmhJSBov5MjBxEJccvHW9VKrW6OkQ487yiWaNNwK - Awl4PBXYPboOY8Jqys+hHgER4izHh2SjQRnSLW+TeprbgJdOdaMq0g8/6vtf1XpTPT/lzhMfoioe - 6y9I2gY3e/2J0+w9UeeXi0WraB9ekrNF+RYcLET6ZtF3dnbwYUjNWrAwPoPU4KWJj2L7ugfQ7FOR - Xxd58Tl513N06XzVJu2YGFUjSGwP8bnNXr/mxXkSGttMWKF7UtJnHnU4ReGDMcL1CapDF0MitkPH - Rq9shS0rTzJWn8nORhX5VX7Fh/9QSwMEFAAAAAgAlRHqUEmWP5wfAAAAHQAAADQAAABsb2dfYW5h - bHl0aWNzX3NvbHV0aW9uLTAuMS4xLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0S6xKrSiJz8lPj0/M - S8ypLMlMLo4vzs8pLcnMz+MCAFBLAwQUAAAACACVEepQ9t3Svl8AAABuAAAALAAAAGxvZ19hbmFs - eXRpY3Nfc29sdXRpb24tMC4xLjEuZGlzdC1pbmZvL1dIRUVMC89ITc3RDUstKs7Mz7NSMNQz4HJP - zUstSizJL7JSSErJLC6JLwepUdAw0DM20DPQ5ArKzy/R9SzWDSgtSs3JTLJSKCkqTeUKSUy3Uiio - NNLNy89L1U3Mq4SJGCNEuABQSwMEFAAAAAgAlRHqUENT7z21AwAAXAoAAC8AAABsb2dfYW5hbHl0 - aWNzX3NvbHV0aW9uLTAuMS4xLmRpc3QtaW5mby9NRVRBREFUQaVWTW/bRhC9768YRAe3rkk6bdoD - gQBV5dQmItlGlDSHpoBX5IhcmNwl9sMOXfi/d5ZflQLLshAeBHJ3Zt6b2TezWqDlGbc8+Au1EUrG - 8HN4yi55hTGUKg+45GVjRWoCo0pnyYKNlqfh6/A1W7qq4rqJYenqWmkLa6Vh+uA0wlzlMB0CwHII - cKEqDGqeE0RhbW3iKMqFLdwqTFUVta4R979BWooAv1qUHtCwqbOF0jEsRKqVUWsLM6UJk7dhu90A - Ky7KGPhD3ZD779Vg64OzuUgpGAEvko/suuSWyFYxfLp8f3n1+ZLNSm6MWAskkDO8w1LVFUoLS8ut - MxDH8AYC+INqtmWaSKKYYQZTlwmUKXrL3p+Ktd922RiLFUyzSkhhLCWkvnG71irXvKL9HOZc5o7K - 5z2vG0paHmDq33451D58c7DHrwd7/Lbl0Z+U37paJjCta63uqGxxe3bDNmOTXmuzebJDsPBuUBBM - 2MdCGKh5eusJ0KsXqy0Qjp72PYJRficgQgzhiD9ApaSgE9rGg9GHSE0mcKHuwSpwlAN9skQay8uS - wAh1DErbviSewYrUct+mQUKtuMzYzc0NI7T/jXmWQRBIas5dveldWvREpqXzMvsTSboajV+d7OhI - WFCoHL3UY9a977CM4e9KUbWFXKt/fhi6N1OpCbcaLUIZONN1cd/LfdEiQbnkhTXRQNr8CF/Y8buv - vKpLNPFxmwBxnWmijsB3lHk8urrkEkgdmUstqDVcLZbnVGnUTTRT0nIhfQ/2xXz+6CDtML8woCcI - qG7K6RSDXCtXw6L50C+ct9+D2eAe2KYmJY6go8G90reGVIfwKjJuZVIt6jb16N+lWyVnj5HeDEzL - W0CPkRe/yChk1MccR2B4RSOmHYC8TIbSjngU6fPw7of646uRk+W5gVts3t7x0uGoHCr8pzp7rvCt - KeyvpevCHFjLVt2D3DzlFxA+wxL3Ed7PN+ui7GX6BMdNMudoKRQpoDTAV8rZVqSmxtRPtuz7OJqC - ZsT3MpzTFQN+FlGzeG5PYxlq8m+ob0oXiORAA1oaL0yhJPTW9OXmvsU2oRfNcuPz8GDPl68rVbKG - Rjko+J2/J4xDc0KTBjmN81zQ2hoxW9E9AqsG6JaXfozTHGpNgdvD/tlEHULIGAtDiNOCrki6DvKY - sQ/YgV4QdaUb9nb7Yaz7F/bT9sOOSYO1xpS3ivYjMqjdivIvUJ/0AjkZd/rhSZdOf8dsTzQ/abvJ - 2MGdPgGXUOEFL0kTLV+fyn9QSwMEFAAAAAgAlRHqUMq3pHbZBQAArg4AAC0AAABsb2dfYW5hbHl0 - aWNzX3NvbHV0aW9uLTAuMS4xLmRpc3QtaW5mby9SRUNPUkS9l8muo0gWhvct9ZvALeZhUQsmM9gY - sMEYNijMYDPPGPz0RSqzMp2qm+WbrasWEkgHiP/jxDl/BOARz0NQ1NcAVKBYhjTsg74uxiGtqz+C - IK3SIQjemgXqbwAjqT9LehvcDoHNThstbrmCZmLcOXq9TErG4zKZO6K5U1vsUo1XCCUR8r//Af+q - EBZpXA1BAsKh7pYnIXUjwHM40ah21OfGOseYuHdvNSlwpkScd1ORe+bY6X4rqRBDYK90bnHRPI2O - DKilCfBJMIDkjMgZ4DLbP25XKhjNe6i2Uh/Ni2ODiuEgjGLxV8M3oANl/yRgnDQ28reuqTf7aePR - 9GzoQOQTbIOlZ2zg9nnF32sjN2IEwhgEeSUwgSKNwJqjZ5Fh5yrlckcPk6S0trlIrkI6XnTEimvH - GltNV0UziXQ+nzwIw16KfL1ZxgNYlcBb1tfV92mXGJDnqe9lkWXAj8W8sZoXlrvTKbZkkhuEndnf - RDojTAKiqRc6YV2WoIqev2RrC0MWioSXk3q6y7wOAzYn0IA4VVo3uEGwMAuoefwcr2VFsPQrhbEf - 6vJpfJk3SZzYzGMgT0KzGxGChUU43MSE5yaR17BZSh5aBXVHC8JYnH0x/hD3Q/9ee3TzKMDibSth - wbQU3BBpjaHqApnhsFnjcmZLJ80c1Mfe6SGceNUdX2UK8OX6f1b7cvrFg0EfxhXo0vqJxFb5+USj - WeoPO4HE1FQ9HfItoCMcblVnV1SDo2LUluwtHSJZjHmBMsVVVHdxFPRR/m6eIzoPQftgetvmN8Hp - cCTmdE8WwUUWuPtmz8QktUUd17keOIhAXrnDz3J1E3fgS7xfqxRc43I1qPcYVCfv7I2EzOJJl8DF - uAXHXLb9O3s+ik4aT/U1T3xxmwykB9Hkq+b7CENYV0l6Hb/eeSLRI41DTV1/PHz/iLZTm2638p71 - 0rPh5P4+6VU6sColvq7dg9HMZ6TjRzT4Ef7m5k9kvGLMLm5dlAezy+ZSa6xG6GFKcBA+latEYLqc - X+4SErcShJO/WRfvkk1x1/+cHXnM9ZM/aZFIyUXltAqpdWq8Z5bCtc85NWj3jSp2zN3b6RDx0uo/ - gFDWUVy8W7ZYDROozPM7hxPdWuD3KqwbERNzDecnrj9fjSbB8GMf+/k6US9Xz99g+Xp9Qqlv2Lw/ - EF6w60zsQFqH/Mwy8HFLHh8T7sD6ZQJkIRX8dmQglMKJV5b42yxBs+BPPL6YcMsdaXMh7ZfOrXOa - dgT7EjRITKFZMlwowj/d7oRWhysPQX5ibpo1EP0zQxiQkf5Y0LANAk6k0gd1bvu9spldweNajRXs - Bx10QrauvhCLf0Lp/gi+VzshbyrYTd3Aw4G2KGAW3ZEzynt8rC+uSAUbR2oR0mGa03KHGPoT0vOM - 89TjoO/rMP3W+z+eeTZGirzt6o1Dw+WlsMbzFusyq+HyZJpkDgOGFPeBcs6Omk2se0SMebWa/++s - PxnmL2iD65Ac5XBqbyVhrC7VlPT+pFue6xx81MkiIRDczXksCCZftx4YRXwu7btMKe5ZSEapZJVl - +I1Ikda/smUqShM3Jgwm+uyleXAeVuWrbbKfPdl/v/eLhOXWYcl5+8YuuyUMsWVDlo6YGjJBuk59 - VlKZJPc+a0qZvm5tcYZa6d7ngpE3dD2itB/gtErqP0TpKBxU01aN/VvXD38LEv1enHyLvXdW7T/q - q3PYlZ0TJia1zGQ4BP1yPZd+d2muOoSyBP1hPV2yOZGzue8ttsmK4yaubq2iIAC5CUOgeWlFPERU - EayO5muTij0ldtt6/SsgsQ8LHSTBOIgQ9OEXXEWSdt8THvV7mDQ0zldTZQ+nBnG4FQy2XY7IRXQT - YuTv+iXfg6RbrRpFPizy7k5f0uGgN/g5zs6gG2i/rUonyDc4yLWkFJXuek79k0wZs25BDPbxXA91 - ExTxFBdvw/x9ZufolKEIfz/v4lPIo3GFMevHniZ+FEdw8RLb1k/bS1eij3Xjsq5AfwFQSwECFAMU - AAAACABiEepQYOzantQBAADhBQAAKAAAAAAAAAAAAAAApIEAAAAAYXpleHRfbG9nX2FuYWx5dGlj - c19zb2x1dGlvbi9fX2luaXRfXy5weVBLAQIUAxQAAAAIAGIR6lAGFUoCNQEAAEoDAAAvAAAAAAAA - AAAAAACkgRoCAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL19jbGllbnRfZmFjdG9yeS5w - eVBLAQIUAxQAAAAIAGIR6lDp2QZ8gAIAAIUKAAAlAAAAAAAAAAAAAACkgZwDAABhemV4dF9sb2df - YW5hbHl0aWNzX3NvbHV0aW9uL19oZWxwLnB5UEsBAhQDFAAAAAgAYhHqUJ77endcAwAA8AoAACcA - AAAAAAAAAAAAAKSBXwYAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vX3BhcmFtcy5weVBL - AQIUAxQAAAAIAGIR6lDKVrx+lgIAAJgIAAArAAAAAAAAAAAAAACkgQAKAABhemV4dF9sb2dfYW5h - bHl0aWNzX3NvbHV0aW9uL192YWxpZGF0b3JzLnB5UEsBAhQDFAAAAAgAYhHqUF/N5ExBAAAATAAA - ADAAAAAAAAAAAAAAAKSB3wwAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vYXpleHRfbWV0 - YWRhdGEuanNvblBLAQIUAxQAAAAIAGIR6lBl/oGg4wEAANkFAAAoAAAAAAAAAAAAAACkgW4NAABh - emV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL2NvbW1hbmRzLnB5UEsBAhQDFAAAAAgAYhHqUFuM - 5WVYAgAAewsAACYAAAAAAAAAAAAAAKSBlw8AAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24v - Y3VzdG9tLnB5UEsBAhQDFAAAAAgAYhHqUOwhgnV/AAAAWQEAAC4AAAAAAAAAAAAAAKSBMxIAAGF6 - ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdGVzdHMvX19pbml0X18ucHlQSwECFAMUAAAACABi - EepQ7CGCdX8AAABZAQAANQAAAAAAAAAAAAAApIH+EgAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1 - dGlvbi90ZXN0cy9sYXRlc3QvX19pbml0X18ucHlQSwECFAMUAAAACABiEepQgtJmHnYEAAAoFwAA - UQAAAAAAAAAAAAAApIHQEwAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1dGlvbi90ZXN0cy9sYXRl - c3QvdGVzdF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uX3NjZW5hcmlvLnB5UEsBAhQDFAAAAAgAYhHq - UIlqf0SkAAAAkgEAADYAAAAAAAAAAAAAAKSBtRgAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRp - b24vdmVuZG9yZWRfc2Rrcy9fX2luaXRfXy5weVBLAQIUAxQAAAAIAGIR6lAGAuXUOgEAAO4CAABL - AAAAAAAAAAAAAACkga0ZAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL3ZlbmRvcmVkX3Nk - a3Mvb3BlcmF0aW9uc21hbmFnZW1lbnQvX19pbml0X18ucHlQSwECFAMUAAAACABiEepQunqsrKkD - AADeCgAAUQAAAAAAAAAAAAAApIFQGwAAYXpleHRfbG9nX2FuYWx5dGljc19zb2x1dGlvbi92ZW5k - b3JlZF9zZGtzL29wZXJhdGlvbnNtYW5hZ2VtZW50L19jb25maWd1cmF0aW9uLnB5UEsBAhQDFAAA - AAgAYhHqUEe/rDTBAwAAyA0AAGAAAAAAAAAAAAAAAKSBaB8AAGF6ZXh0X2xvZ19hbmFseXRpY3Nf - c29sdXRpb24vdmVuZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFuYWdlbWVudC9fb3BlcmF0aW9uc19t - YW5hZ2VtZW50X2NsaWVudC5weVBLAQIUAxQAAAAIAGIR6lB5vfsF7QAAAO0BAABKAAAAAAAAAAAA - AACkgacjAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL3ZlbmRvcmVkX3Nka3Mvb3BlcmF0 - aW9uc21hbmFnZW1lbnQvdmVyc2lvbi5weVBLAQIUAxQAAAAIAGIR6lAajO4KGQIAAJEKAABSAAAA - AAAAAAAAAACkgfwkAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL3ZlbmRvcmVkX3Nka3Mv - b3BlcmF0aW9uc21hbmFnZW1lbnQvbW9kZWxzL19faW5pdF9fLnB5UEsBAhQDFAAAAAgAYhHqUBNX - FeKMCgAA3T8AAFEAAAAAAAAAAAAAAKSBhScAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24v - dmVuZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFuYWdlbWVudC9tb2RlbHMvX21vZGVscy5weVBLAQIU - AxQAAAAIAGIR6lDhBKe87goAAEdAAABVAAAAAAAAAAAAAACkgYAyAABhemV4dF9sb2dfYW5hbHl0 - aWNzX3NvbHV0aW9uL3ZlbmRvcmVkX3Nka3Mvb3BlcmF0aW9uc21hbmFnZW1lbnQvbW9kZWxzL19t - b2RlbHNfcHkzLnB5UEsBAhQDFAAAAAgAYhHqUK39aL3CAQAAqgMAAFcAAAAAAAAAAAAAAKSB4T0A - AGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdmVuZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFu - YWdlbWVudC9tb2RlbHMvX3BhZ2VkX21vZGVscy5weVBLAQIUAxQAAAAIAGIR6lASXSFtPwEAAGsD - AABWAAAAAAAAAAAAAACkgRhAAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL3ZlbmRvcmVk - X3Nka3Mvb3BlcmF0aW9uc21hbmFnZW1lbnQvb3BlcmF0aW9ucy9fX2luaXRfXy5weVBLAQIUAxQA - AAAIAGIR6lDArqHb1AcAALc7AABxAAAAAAAAAAAAAACkgctBAABhemV4dF9sb2dfYW5hbHl0aWNz - X3NvbHV0aW9uL3ZlbmRvcmVkX3Nka3Mvb3BlcmF0aW9uc21hbmFnZW1lbnQvb3BlcmF0aW9ucy9f - bWFuYWdlbWVudF9hc3NvY2lhdGlvbnNfb3BlcmF0aW9ucy5weVBLAQIUAxQAAAAIAGIR6lCyPzuq - lAcAALg3AABzAAAAAAAAAAAAAACkgS5KAABhemV4dF9sb2dfYW5hbHl0aWNzX3NvbHV0aW9uL3Zl - bmRvcmVkX3Nka3Mvb3BlcmF0aW9uc21hbmFnZW1lbnQvb3BlcmF0aW9ucy9fbWFuYWdlbWVudF9j - b25maWd1cmF0aW9uc19vcGVyYXRpb25zLnB5UEsBAhQDFAAAAAgAYhHqUNFK5IdHBQAAhw8AAFkA - AAAAAAAAAAAAAKSBU1IAAGF6ZXh0X2xvZ19hbmFseXRpY3Nfc29sdXRpb24vdmVuZG9yZWRfc2Rr - cy9vcGVyYXRpb25zbWFuYWdlbWVudC9vcGVyYXRpb25zL19vcGVyYXRpb25zLnB5UEsBAhQDFAAA - AAgAYhHqUMSsLNz5CQAAOV0AAGMAAAAAAAAAAAAAAKSBEVgAAGF6ZXh0X2xvZ19hbmFseXRpY3Nf - c29sdXRpb24vdmVuZG9yZWRfc2Rrcy9vcGVyYXRpb25zbWFuYWdlbWVudC9vcGVyYXRpb25zL19z - b2x1dGlvbnNfb3BlcmF0aW9ucy5weVBLAQIUAxQAAAAIAJUR6lCQJwRdyAIAAJsHAAA2AAAAAAAA - AAAAAACkgYtiAABsb2dfYW5hbHl0aWNzX3NvbHV0aW9uLTAuMS4xLmRpc3QtaW5mby9ERVNDUklQ - VElPTi5yc3RQSwECFAMUAAAACACVEepQ9u2MH6QBAAA7AwAANAAAAAAAAAAAAAAApIGnZQAAbG9n - X2FuYWx5dGljc19zb2x1dGlvbi0wLjEuMS5kaXN0LWluZm8vbWV0YWRhdGEuanNvblBLAQIUAxQA - AAAIAJUR6lBJlj+cHwAAAB0AAAA0AAAAAAAAAAAAAACkgZ1nAABsb2dfYW5hbHl0aWNzX3NvbHV0 - aW9uLTAuMS4xLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0UEsBAhQDFAAAAAgAlRHqUPbd0r5fAAAA - bgAAACwAAAAAAAAAAAAAAKSBDmgAAGxvZ19hbmFseXRpY3Nfc29sdXRpb24tMC4xLjEuZGlzdC1p - bmZvL1dIRUVMUEsBAhQDFAAAAAgAlRHqUENT7z21AwAAXAoAAC8AAAAAAAAAAAAAAKSBt2gAAGxv - Z19hbmFseXRpY3Nfc29sdXRpb24tMC4xLjEuZGlzdC1pbmZvL01FVEFEQVRBUEsBAhQDFAAAAAgA - lRHqUMq3pHbZBQAArg4AAC0AAAAAAAAAAAAAAKSBuWwAAGxvZ19hbmFseXRpY3Nfc29sdXRpb24t - MC4xLjEuZGlzdC1pbmZvL1JFQ09SRFBLBQYAAAAAHwAfAHkNAADdcgAAAAA= - headers: - accept-ranges: - - bytes - content-length: - - '32876' - content-md5: - - ujQT2Z9BY+0tKLbWmJhNvg== - content-type: - - application/octet-stream - date: - - Tue, 16 Mar 2021 09:03:13 GMT - etag: - - '"0x8D82476C76F2963"' - last-modified: - - Fri, 10 Jul 2020 02:13:04 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Fri, 10 Jul 2020 02:13:04 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: '{"location": "westus", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": - 30, "workspaceCapping": {}}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - monitor log-analytics workspace create - Connection: - - keep-alive - Content-Length: - - '115' - Content-Type: - - application/json - ParameterSetName: - - -g -n -l - User-Agent: - - AZURECLI/2.20.0 azsdk-python-mgmt-loganalytics/8.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002?api-version=2021-12-01-preview - response: - body: - string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": - \"d3e307fe-e47a-4372-91b9-fa12ebead80b\",\r\n \"provisioningState\": \"Creating\",\r\n - \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"maxCapacityReservationLevel\": - 3000,\r\n \"lastSkuUpdate\": \"Tue, 16 Mar 2021 09:03:27 GMT\"\r\n },\r\n - \ \"retentionInDays\": 30,\r\n \"features\": {\r\n \"legacy\": 0,\r\n - \ \"searchVersion\": 1,\r\n \"enableLogAccessUsingOnlyResourcePermissions\": - true\r\n },\r\n \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n - \ \"quotaNextResetTime\": \"Wed, 17 Mar 2021 03:00:00 GMT\",\r\n \"dataIngestionStatus\": - \"RespectQuota\"\r\n },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n - \ \"publicNetworkAccessForQuery\": \"Enabled\",\r\n \"createdDate\": - \"Tue, 16 Mar 2021 09:03:27 GMT\",\r\n \"modifiedDate\": \"Tue, 16 Mar - 2021 09:03:27 GMT\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/microsoft.operationalinsights/workspaces/clitestws-000002\",\r\n - \ \"name\": \"clitestws-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n - \ \"location\": \"westus\"\r\n}" - headers: - cache-control: - - no-cache - content-length: - - '1169' - content-type: - - application/json - date: - - Tue, 16 Mar 2021 09:03:28 GMT - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - - ASP.NET - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - monitor log-analytics workspace create - Connection: - - keep-alive - ParameterSetName: - - -g -n -l - User-Agent: - - AZURECLI/2.20.0 azsdk-python-mgmt-loganalytics/8.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002?api-version=2021-12-01-preview - response: - body: - string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": - \"d3e307fe-e47a-4372-91b9-fa12ebead80b\",\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"maxCapacityReservationLevel\": - 3000,\r\n \"lastSkuUpdate\": \"Tue, 16 Mar 2021 09:03:27 GMT\"\r\n },\r\n - \ \"retentionInDays\": 30,\r\n \"features\": {\r\n \"legacy\": 0,\r\n - \ \"searchVersion\": 1,\r\n \"enableLogAccessUsingOnlyResourcePermissions\": - true\r\n },\r\n \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n - \ \"quotaNextResetTime\": \"Wed, 17 Mar 2021 03:00:00 GMT\",\r\n \"dataIngestionStatus\": - \"RespectQuota\"\r\n },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n - \ \"publicNetworkAccessForQuery\": \"Enabled\",\r\n \"createdDate\": - \"Tue, 16 Mar 2021 09:03:27 GMT\",\r\n \"modifiedDate\": \"Tue, 16 Mar - 2021 09:03:29 GMT\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/microsoft.operationalinsights/workspaces/clitestws-000002\",\r\n - \ \"name\": \"clitestws-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n - \ \"location\": \"westus\"\r\n}" - headers: - cache-control: - - no-cache - content-length: - - '1170' - content-type: - - application/json - date: - - Tue, 16 Mar 2021 09:03:58 GMT - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - - ASP.NET - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - monitor log-analytics solution create - Connection: - - keep-alive - ParameterSetName: - - --resource-group --solution-type --workspace - User-Agent: - - AZURECLI/2.20.0 azsdk-python-mgmt-loganalytics/8.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002?api-version=2021-12-01-preview - response: - body: - string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": - \"d3e307fe-e47a-4372-91b9-fa12ebead80b\",\r\n \"provisioningState\": \"Succeeded\",\r\n - \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"maxCapacityReservationLevel\": - 3000,\r\n \"lastSkuUpdate\": \"Tue, 16 Mar 2021 09:03:27 GMT\"\r\n },\r\n - \ \"retentionInDays\": 30,\r\n \"features\": {\r\n \"legacy\": 0,\r\n - \ \"searchVersion\": 1,\r\n \"enableLogAccessUsingOnlyResourcePermissions\": - true\r\n },\r\n \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n - \ \"quotaNextResetTime\": \"Wed, 17 Mar 2021 03:00:00 GMT\",\r\n \"dataIngestionStatus\": - \"RespectQuota\"\r\n },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n - \ \"publicNetworkAccessForQuery\": \"Enabled\",\r\n \"createdDate\": - \"Tue, 16 Mar 2021 09:03:27 GMT\",\r\n \"modifiedDate\": \"Tue, 16 Mar - 2021 09:03:29 GMT\"\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/microsoft.operationalinsights/workspaces/clitestws-000002\",\r\n - \ \"name\": \"clitestws-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n - \ \"location\": \"westus\"\r\n}" - headers: - cache-control: - - no-cache - content-length: - - '1170' - content-type: - - application/json - date: - - Tue, 16 Mar 2021 09:04:01 GMT - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"location": "westus", "plan": {"name": "SecurityInsights(clitestws-000002)", - "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, - "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/microsoft.OperationalInsights/workspaces/clitestws-000002"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - monitor log-analytics solution create - Connection: - - keep-alive - Content-Length: - - '420' - Content-Type: - - application/json; charset=utf-8 - ParameterSetName: - - --resource-group --solution-type --workspace - User-Agent: - - python/3.8.0 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3 - azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.20.0 - accept-language: - - en-US - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28clitestws-000002%29?api-version=2015-11-01-preview - response: - body: - string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(clitestws-000002)\",\r\n - \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": - \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": - \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/microsoft.OperationalInsights/workspaces/clitestws-000002\",\r\n - \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, - 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n - \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n - \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(clitestws-000002)\",\r\n - \ \"name\": \"SecurityInsights(clitestws-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n - \ \"location\": \"West US\"\r\n}" - headers: - cache-control: - - no-cache - cachecontrol: - - no-cache - content-length: - - '1040' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:08 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Microsoft-IIS/10.0 - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-ams-apiversion: - - WebAPI1.0 - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - x-powered-by: - - ASP.NET - - ASP.NET - status: - code: 201 - message: Created -- request: - body: '{"etag": "3d00c3ca-0000-0100-0000-5d42d5010000", "kind": "Fusion", "properties": - {"alertRuleTemplateName": "f71aba3d-28fb-450b-b192-4e76a83015c8", "enabled": - true}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule create - Connection: - - keep-alive - Content-Length: - - '164' - Content-Type: - - application/json - ParameterSetName: - - --fusion-alert-rule --resource-group --rule-id --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/myFirstFusionRule?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/myFirstFusionRule","name":"myFirstFusionRule","etag":"\"00002c33-0000-0100-0000-6050748e0000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"Fusion","properties":{"displayName":"Advanced - Multistage Attack Detection","description":"Using Fusion technology based - on machine learning, Azure Sentinel automatically detects multistage attacks - by identifying combinations of anomalous behaviors and suspicious activities - observed at various stages of the kill chain. On the basis of these discoveries, - Azure Sentinel generates incidents that would otherwise be very difficult - to catch. By design, these incidents are low-volume, high-fidelity, and high-severity, - which is why this detection is turned ON by default.\n\nThere are a total - of 90 Fusion incident types detected by Azure Sentinel.\n\nTo detect these - multistage attacks, the following data connectors must be configured:\n- Azure - Active Directory Identity Protection.\n- Microsoft Cloud App Security.\n- - Microsoft Defender for Endpoint.\n- Azure Defender.\n- Palo Alto Networks.\n\nFor - a full list and description of each scenario that is supported for these multistage - attacks, go to https://aka.ms/SentinelFusion.","alertRuleTemplateName":"f71aba3d-28fb-450b-b192-4e76a83015c8","tactics":["Collection","CommandAndControl","DefenseEvasion","Discovery","Execution","Exfiltration","Impact","InitialAccess","LateralMovement","Persistence","PrivilegeEscalation"],"severity":"High","enabled":true,"lastModifiedUtc":"2021-03-16T09:04:14.5466874Z"}}' - headers: - cache-control: - - no-cache - content-length: - - '1774' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:14 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 201 - message: Created -- request: - body: '{"etag": "260097e0-0000-0d00-0000-5d6fa88f0000", "kind": "MicrosoftSecurityIncidentCreation", - "properties": {"productFilter": "Microsoft Cloud App Security", "displayName": - "testing displayname", "enabled": true}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule create - Connection: - - keep-alive - Content-Length: - - '213' - Content-Type: - - application/json - ParameterSetName: - - --microsoft-security-incident-creation-alert-rule --resource-group --rule-id - --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/microsoftSecurityIncidentCreationRuleExample?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/microsoftSecurityIncidentCreationRuleExample","name":"microsoftSecurityIncidentCreationRuleExample","etag":"\"00003233-0000-0100-0000-605074900000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft - Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"testing - displayname","enabled":true,"description":null,"tactics":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2021-03-16T09:04:16.3379524Z"}}' - headers: - cache-control: - - no-cache - content-length: - - '814' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:15 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule show - Connection: - - keep-alive - ParameterSetName: - - --resource-group --rule-id --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/myFirstFusionRule?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/myFirstFusionRule","name":"myFirstFusionRule","etag":"\"00002c33-0000-0100-0000-6050748e0000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"Fusion","properties":{"displayName":"Advanced - Multistage Attack Detection","description":"Using Fusion technology based - on machine learning, Azure Sentinel automatically detects multistage attacks - by identifying combinations of anomalous behaviors and suspicious activities - observed at various stages of the kill chain. On the basis of these discoveries, - Azure Sentinel generates incidents that would otherwise be very difficult - to catch. By design, these incidents are low-volume, high-fidelity, and high-severity, - which is why this detection is turned ON by default.\n\nThere are a total - of 90 Fusion incident types detected by Azure Sentinel.\n\nTo detect these - multistage attacks, the following data connectors must be configured:\n- Azure - Active Directory Identity Protection.\n- Microsoft Cloud App Security.\n- - Microsoft Defender for Endpoint.\n- Azure Defender.\n- Palo Alto Networks.\n\nFor - a full list and description of each scenario that is supported for these multistage - attacks, go to https://aka.ms/SentinelFusion.","alertRuleTemplateName":"f71aba3d-28fb-450b-b192-4e76a83015c8","tactics":["Collection","CommandAndControl","DefenseEvasion","Discovery","Execution","Exfiltration","Impact","InitialAccess","LateralMovement","Persistence","PrivilegeEscalation"],"severity":"High","enabled":true,"lastModifiedUtc":"2021-03-16T09:04:14.5466874Z"}}' - headers: - cache-control: - - no-cache - content-length: - - '1774' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:17 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule show - Connection: - - keep-alive - ParameterSetName: - - --resource-group --rule-id --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/microsoftSecurityIncidentCreationRuleExample?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/microsoftSecurityIncidentCreationRuleExample","name":"microsoftSecurityIncidentCreationRuleExample","etag":"\"00003233-0000-0100-0000-605074900000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft - Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"testing - displayname","enabled":true,"description":null,"tactics":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2021-03-16T09:04:16.3379524Z"}}' - headers: - cache-control: - - no-cache - content-length: - - '814' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:19 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule list - Connection: - - keep-alive - ParameterSetName: - - --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules?api-version=2020-01-01 - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/myFirstFusionRule","name":"myFirstFusionRule","etag":"\"00002c33-0000-0100-0000-6050748e0000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"Fusion","properties":{"displayName":"Advanced - Multistage Attack Detection","description":"Using Fusion technology based - on machine learning, Azure Sentinel automatically detects multistage attacks - by identifying combinations of anomalous behaviors and suspicious activities - observed at various stages of the kill chain. On the basis of these discoveries, - Azure Sentinel generates incidents that would otherwise be very difficult - to catch. By design, these incidents are low-volume, high-fidelity, and high-severity, - which is why this detection is turned ON by default.\n\nThere are a total - of 90 Fusion incident types detected by Azure Sentinel.\n\nTo detect these - multistage attacks, the following data connectors must be configured:\n- Azure - Active Directory Identity Protection.\n- Microsoft Cloud App Security.\n- - Microsoft Defender for Endpoint.\n- Azure Defender.\n- Palo Alto Networks.\n\nFor - a full list and description of each scenario that is supported for these multistage - attacks, go to https://aka.ms/SentinelFusion.","alertRuleTemplateName":"f71aba3d-28fb-450b-b192-4e76a83015c8","tactics":["Collection","CommandAndControl","DefenseEvasion","Discovery","Execution","Exfiltration","Impact","InitialAccess","LateralMovement","Persistence","PrivilegeEscalation"],"severity":"High","enabled":true,"lastModifiedUtc":"2021-03-16T09:04:14.5466874Z"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/microsoftSecurityIncidentCreationRuleExample","name":"microsoftSecurityIncidentCreationRuleExample","etag":"\"00003233-0000-0100-0000-605074900000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft - Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"testing - displayname","enabled":true,"description":null,"tactics":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2021-03-16T09:04:16.3379524Z"}}]}' - headers: - cache-control: - - no-cache - content-length: - - '2601' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:20 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -y --resource-group --rule-id --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRules/myFirstFusionRule?api-version=2020-01-01 - response: - body: - string: '{}' - headers: - cache-control: - - no-cache - content-length: - - '2' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:23 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule-template show - Connection: - - keep-alive - ParameterSetName: - - --alert-rule-template-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRuleTemplates/65360bb0-8986-4ade-a89d-af3cf44d28aa?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/65360bb0-8986-4ade-a89d-af3cf44d28aa","name":"65360bb0-8986-4ade-a89d-af3cf44d28aa","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet EventNameList = dynamic([\"CreateNetworkAclEntry\",\"CreateRoute\",\"CreateRouteTable\",\"CreateInternetGateway\",\"CreateNatGateway\"]);\nAWSCloudTrail\n| - where TimeGenerated > ago(timeframe)\n| where EventName in~ (EventNameList)\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by EventName, EventTypeName, UserIdentityAccountId, UserIdentityPrincipalid, - UserAgent, \nUserIdentityUserName, SessionMfaAuthenticated, SourceIpAddress, - AWSRegion, EventSource, AdditionalEventData, ResponseElements\n| extend timestamp - = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, IPCustomEntity - = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Changes - to Amazon VPC settings","description":"Amazon Virtual Private Cloud (Amazon - VPC) lets you provision a logically isolated section of the AWS Cloud where - you can launch AWS resources\nin a virtual network that you define.\nThis - identifies changes to Amazon VPC (Virtual Private Cloud) settings such as - new ACL entries,routes, routetable or Gateways.\nMore information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255 - \nand AWS VPC API Docs: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/OperationList-query-vpc.html","tactics":["PrivilegeEscalation","LateralMovement"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}}' - headers: - cache-control: - - no-cache - content-length: - - '2329' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:23 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel alert-rule-template list - Connection: - - keep-alive - ParameterSetName: - - --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/alertRuleTemplates?api-version=2020-01-01 - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/738702fd-0a66-42c7-8586-e30f0583f8fe","name":"738702fd-0a66-42c7-8586-e30f0583f8fe","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"DeviceEvents\n| - where ActionType has \"ExploitGuardNonMicrosoftSignedBlocked\"\n| where InitiatingProcessFileName - contains \"svchost.exe\" and FileName contains \"NetSetupSvc.dll\"\n| extend - timestamp = TimeGenerated, AccountCustomEntity = iff(isnotempty(InitiatingProcessAccountUpn), - InitiatingProcessAccountUpn, InitiatingProcessAccountName),\nHostCustomEntity - = DeviceName, FileHashCustomEntity = InitiatingProcessSHA1, FileHashType = - \"SHA1\"","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"FileHash","fieldMappings":[{"identifier":"Algorithm","columnName":"FileHashType"},{"identifier":"Value","columnName":"FileHashCustomEntity"}]}],"displayName":"TEARDROP - memory-only dropper","description":"Identifies SolarWinds TEARDROP memory-only - dropper IOCs in Window''s defender Exploit Guard activity\nReferences:\n- - https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- - https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f","tactics":["Execution","Persistence"],"lastUpdatedDateUTC":"2021-01-31T00:00:00Z","createdDateUTC":"2020-12-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4696e072-aca8-4a4f-bf05-89fddc5ac3c9","name":"4696e072-aca8-4a4f-bf05-89fddc5ac3c9","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - auditLookback = 1d;\nAuditLogs\n| where TimeGenerated > ago(auditLookback)\n| - where OperationName has ''StsRefreshTokenValidFrom''\n| where TargetResources[0].modifiedProperties - != ''[]''\n| where TargetResources[0].modifiedProperties !has ''DirectorySync''\n| - extend TargetResourcesModProps = TargetResources[0].modifiedProperties\n| - mv-expand TargetResourcesModProps\n| where tostring(TargetResourcesModProps.displayName) - =~ ''StsRefreshTokensValidFrom''\n| extend InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), - tostring(InitiatedBy.app.displayName))\n| where InitiatingUserOrApp !in (''Microsoft - Cloud App Security'')\n| extend targetUserOrApp = TargetResources[0].userPrincipalName\n| - extend eventName = tostring(TargetResourcesModProps.displayName)\n| extend - oldStsRefreshValidFrom = todatetime(parse_json(tostring(TargetResourcesModProps.oldValue))[0])\n| - extend newStsRefreshValidFrom = todatetime(parse_json(tostring(TargetResourcesModProps.newValue))[0])\n| - extend tokenMinutesAdded = datetime_diff(''minute'',newStsRefreshValidFrom,oldStsRefreshValidFrom)\n| - extend tokenMinutesRemaining = datetime_diff(''minute'',TimeGenerated,newStsRefreshValidFrom)\n| - project-reorder Result, AADOperationType\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), - tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\n| - extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingUserOrApp, - IPCustomEntity = InitiatingIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Interactive - STS refresh token modifications","description":"This will show Active Directory - Security Token Service (STS) refresh token modifications by Service Principals - and Applications other than DirectorySync. Refresh tokens are used to validate - identification and obtain access tokens.\nThis event is most often generated - when legitimate administrators troubleshoot frequent AAD user sign-ins but - may also be generated as a result of malicious token extensions. Confirm that - the activity is related to an administrator legitimately modifying STS refresh - tokens and check the new token validation time period for high values.\nFor - in-depth documentation of AAD Security Tokens, see https://docs.microsoft.com/azure/active-directory/develop/security-tokens.\nFor - further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-04T00:00:00Z","createdDateUTC":"2020-12-04T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/69b7723c-2889-469f-8b55-a2d355ed9c87","name":"69b7723c-2889-469f-8b55-a2d355ed9c87","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n DnsEvents | where TimeGenerated >= ago(dt_lookBack)\n | - where SubType =~ \"LookupQuery\" and isnotempty(IPAddresses)\n | extend - SingleIP = split(IPAddresses, \",\")\n | mvexpand SingleIP\n | extend - SingleIP = tostring(SingleIP)\n // renaming time column so it is clear - the log this came from\n | extend DNS_TimeGenerated = TimeGenerated\n)\non - $left.TI_ipEntity == $right.SingleIP\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, DNS_TimeGenerated,\nTI_ipEntity, - Computer, EventId, SubType, ClientIP, Name, IPAddresses, NetworkIP, NetworkDestinationIP, - NetworkSourceIP, EmailSourceIpAddress\n| extend timestamp = DNS_TimeGenerated, - IPCustomEntity = ClientIP, HostCustomEntity = Computer, URLCustomEntity = - Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to DnsEvents","description":"Identifies a match in DnsEvents - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"DNS","dataTypes":["DnsEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d25b1998-a592-4bc5-8a3a-92b39eedb1bc","name":"d25b1998-a592-4bc5-8a3a-92b39eedb1bc","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nAWSCloudTrail\n| where TimeGenerated > ago(timeframe)\n| - where EventName =~ \"ConsoleLogin\" \n| extend MFAUsed = tostring(parse_json(AdditionalEventData).MFAUsed), - LoginResult = tostring(parse_json(ResponseElements).ConsoleLogin)\n| where - MFAUsed !~ \"Yes\" and LoginResult !~ \"Failure\"\n| summarize StartTimeUtc - = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by EventName, EventTypeName, - LoginResult, MFAUsed, UserIdentityAccountId, UserIdentityPrincipalid, UserAgent, - \nUserIdentityUserName, SessionMfaAuthenticated, SourceIpAddress, AWSRegion\n| - extend timestamp = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, - IPCustomEntity = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Login - to AWS Management Console without MFA","description":"Multi-Factor Authentication - (MFA) helps you to prevent credential compromise. This alert identifies logins - to the AWS Management Console without MFA.\nYou can limit this detection to - trigger for adminsitrative accounts if you do not have MFA enabled on all - accounts.\nThis is done by looking at the eventName ConsoleLogin and if the - AdditionalEventData field indicates MFA was NOT used \nand the ResponseElements - field indicates NOT a Failure. Thereby indicating that a non-MFA login was - successful.","tactics":["DefenseEvasion","PrivilegeEscalation","Persistence","InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/884be6e7-e568-418e-9c12-89229865ffde","name":"884be6e7-e568-418e-9c12-89229865ffde","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet FailureThreshold = 15;\nlet FailedLogins = Okta_CL\n| - where TimeGenerated > timeframe\n| where eventType_s =~ \"user.session.start\" - and outcome_reason_s =~ \"VERIFICATION_ERROR\"\n| summarize count() by actor_alternateId_s, - client_ipAddress_s, bin(TimeGenerated, 5m)\n| where count_ > FailureThreshold\n| - project client_ipAddress_s, actor_alternateId_s;\nOkta_CL\n| where TimeGenerated - > timeframe\n| join kind=inner (FailedLogins) on client_ipAddress_s, actor_alternateId_s\n| - where eventType_s =~ \"user.session.start\" and outcome_reason_s =~ \"VERIFICATION_ERROR\"\n| - summarize count() by actor_alternateId_s, ClientIP = client_ipAddress_s, City - = client_geographicalContext_city_s, Country = client_geographicalContext_country_s, - published_t\n| sort by published_t desc\n| extend timestamp = published_t, - IPCustomEntity = ClientIP, AccountCustomEntity = actor_alternateId_s","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - Logins from Unknown or Invalid User","description":"This query searches for - numerous login attempts to the management console with an unknown or invalid - user name","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"OktaSSO","dataTypes":["Okta_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/884c4957-70ea-4f57-80b9-1bca3890315b","name":"884c4957-70ea-4f57-80b9-1bca3890315b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeFrame = 1d;\nlet timeBin = 10m;\nlet failedThreshold = 100;\nW3CIISLog\n| - where TimeGenerated >= ago(timeFrame)\n| where scStatus in (\"401\",\"403\")\n| - where csUserName != \"-\"\n// Handling Exchange specific items in IIS logs - to remove the unique log identifier in the URI\n| extend csUriQuery = iff(csUriQuery - startswith \"MailboxId=\", tostring(split(csUriQuery, \"&\")[0]) , csUriQuery - )\n| extend csUriQuery = iff(csUriQuery startswith \"X-ARR-CACHE-HIT=\", strcat(tostring(split(csUriQuery, - \"&\")[0]),tostring(split(csUriQuery, \"&\")[1])) , csUriQuery )\n| extend - scStatusFull = strcat(scStatus, \".\",scSubStatus) \n// Map common IIS codes\n| - extend scStatusFull_Friendly = case(\nscStatusFull == \"401.0\", \"Access - denied.\",\nscStatusFull == \"401.1\", \"Logon failed.\",\nscStatusFull == - \"401.2\", \"Logon failed due to server configuration.\",\nscStatusFull == - \"401.3\", \"Unauthorized due to ACL on resource.\",\nscStatusFull == \"401.4\", - \"Authorization failed by filter.\",\nscStatusFull == \"401.5\", \"Authorization - failed by ISAPI/CGI application.\",\nscStatusFull == \"403.0\", \"Forbidden.\",\nscStatusFull - == \"403.4\", \"SSL required.\",\n\"See - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\")\n// - Mapping to Hex so can be mapped using website in comments above\n| extend - scWin32Status_Hex = tohex(tolong(scWin32Status)) \n// Map common win32 codes\n| - extend scWin32Status_Friendly = case(\nscWin32Status_Hex =~ \"775\", \"The - referenced account is currently locked out and cannot be logged on to.\",\nscWin32Status_Hex - =~ \"52e\", \"Logon failure: Unknown user name or bad password.\",\nscWin32Status_Hex - =~ \"532\", \"Logon failure: The specified account password has expired.\",\nscWin32Status_Hex - =~ \"533\", \"Logon failure: Account currently disabled.\", \nscWin32Status_Hex - =~ \"2ee2\", \"The request has timed out.\", \nscWin32Status_Hex =~ \"0\", - \"The operation completed successfully.\", \nscWin32Status_Hex =~ \"1\", \"Incorrect - function.\", \nscWin32Status_Hex =~ \"2\", \"The system cannot find the file - specified.\", \nscWin32Status_Hex =~ \"3\", \"The system cannot find the path - specified.\", \nscWin32Status_Hex =~ \"4\", \"The system cannot open the file.\", - \nscWin32Status_Hex =~ \"5\", \"Access is denied.\", \nscWin32Status_Hex =~ - \"8009030e\", \"SEC_E_NO_CREDENTIALS\", \nscWin32Status_Hex =~ \"8009030C\", - \"SEC_E_LOGON_DENIED\", \n\"See - https://msdn.microsoft.com/library/cc231199.aspx\")\n// - decode URI when available\n| extend decodedUriQuery = url_decode(csUriQuery)\n// - Count of failed logons by a user\n| summarize makeset(decodedUriQuery), makeset(cIP), - makeset(sSiteName), makeset(sPort), makeset(csUserAgent), makeset(csMethod), - makeset(csUriQuery), makeset(scStatusFull), makeset(scStatusFull_Friendly), - makeset(scWin32Status_Hex), makeset(scWin32Status_Friendly), FailedConnectionsCount - = count() by bin(TimeGenerated, timeBin), csUserName, Computer, sIP\n| where - FailedConnectionsCount >= failedThreshold\n| project TimeGenerated, csUserName, - set_decodedUriQuery, Computer, set_sSiteName, sIP, set_cIP, set_sPort, set_csUserAgent, - set_csMethod, set_scStatusFull, set_scStatusFull_Friendly, set_scWin32Status_Hex, - set_scWin32Status_Friendly, FailedConnectionsCount\n| order by FailedConnectionsCount\n| - extend timestamp = TimeGenerated, AccountCustomEntity = csUserName, HostCustomEntity - = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"High - count of failed logons by a user","description":"Identifies when 100 or more - failed attempts by a given user in 10 minutes occur on the IIS Server.\nThis - could be indicative of attempted brute force based on known account information.\nThis - could also simply indicate a misconfigured service or device. \nReferences:\nIIS - status code mapping - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\nWin32 - Status code mapping - https://msdn.microsoft.com/library/cc231199.aspx","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-03-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/28b42356-45af-40a6-a0b4-a554cdfd5d8a","name":"28b42356-45af-40a6-a0b4-a554cdfd5d8a","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - failureCountThreshold = 5;\nlet successCountThreshold = 1;\nlet timeRange - = 1d;\nlet authenticationWindow = 20m;\nSigninLogs\n| where TimeGenerated - >= ago(timeRange)\n| extend OS = DeviceDetail.operatingSystem, Browser = DeviceDetail.browser\n| - extend StatusCode = tostring(Status.errorCode), StatusDetails = tostring(Status.additionalDetails)\n| - extend State = tostring(LocationDetails.state), City = tostring(LocationDetails.city)\n| - where AppDisplayName contains \"Azure Portal\"\n// Split out failure versus - non-failure types\n| extend FailureOrSuccess = iff(ResultType in (\"0\", \"50125\", - \"50140\", \"70043\", \"70044\"), \"Success\", \"Failure\")\n| summarize StartTimeUtc - = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), IPAddress = makeset(IPAddress), - makeset(OS), makeset(Browser), makeset(City), \nmakeset(ResultType), FailureCount - = countif(FailureOrSuccess==\"Failure\"), SuccessCount = countif(FailureOrSuccess==\"Success\") - \nby bin(TimeGenerated, authenticationWindow), UserDisplayName, UserPrincipalName, - AppDisplayName\n| where FailureCount >= failureCountThreshold and SuccessCount - >= successCountThreshold\n| mvexpand IPAddress\n| extend IPAddress = tostring(IPAddress)\n| - extend timestamp = StartTimeUtc, AccountCustomEntity = UserPrincipalName, - IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Brute - force attack against Azure Portal","description":"Identifies evidence of brute - force activity against Azure Portal by highlighting multiple authentication - failures \nand by a successful authentication within a given time window. - \n(The query does not enforce any sequence - eg requiring the successful authentication - to occur last.)\nDefault Failure count is 5, Default Success count is 1 and - default Time Window is 20 minutes.\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-04-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/62085097-d113-459f-9ea7-30216f2ee6af","name":"62085097-d113-459f-9ea7-30216f2ee6af","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - starttime = 3d;\nlet SecEvents = materialize ( SecurityEvent | where TimeGenerated - >= ago(starttime)\n| where EventID in (4722,4723) | where TargetUserName !endswith - \"$\"\n| project TimeGenerated, EventID, Activity, Computer, TargetAccount, - TargetSid, SubjectAccount, SubjectUserSid);\nlet userEnable = SecEvents\n| - extend EventID4722Time = TimeGenerated\n// 4722: User Account Enabled\n| where - EventID == 4722\n| project Time_Event4722 = TimeGenerated, TargetAccount, - TargetSid, SubjectAccount_Event4722 = SubjectAccount, SubjectUserSid_Event4722 - = SubjectUserSid, Activity_4722 = Activity, Computer_4722 = Computer;\nlet - userPwdSet = SecEvents\n// 4723: Attempt made by user to set password\n| where - EventID == 4723\n| project Time_Event4723 = TimeGenerated, TargetAccount, - TargetSid, SubjectAccount_Event4723 = SubjectAccount, SubjectUserSid_Event4723 - = SubjectUserSid, Activity_4723 = Activity, Computer_4723 = Computer;\nuserEnable - | join kind=leftouter userPwdSet on TargetAccount, TargetSid\n| extend PasswordSetAttemptDelta_Min - = datetime_diff(''minute'', Time_Event4723, Time_Event4722)\n| where PasswordSetAttemptDelta_Min - > 2880 or isempty(PasswordSetAttemptDelta_Min)\n| project-away TargetAccount1, - TargetSid1\n| extend Reason = @\"User either has not yet attempted to set - the initial password after account was enabled or it occurred after 48 hours\"\n| - order by Time_Event4722 asc \n| extend timestamp = Time_Event4722, AccountCustomEntity - = TargetAccount, HostCustomEntity = Computer_4722\n| project-reorder Time_Event4722, - Time_Event4723, PasswordSetAttemptDelta_Min, TargetAccount, TargetSid","queryFrequency":"P1D","queryPeriod":"P3D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"},{"identifier":"Sid","columnName":"TargetSid"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"AD - user enabled and password not set within 48 hours","description":"Identifies - when an account is enabled with a default password and the password is not - set by the user within 48 hours.\nEffectively, there is an event 4722 indicating - an account was enabled and within 48 hours, no event 4723 occurs which \nindicates - there was no attempt by the user to set the password. This will show any attempts - (success or fail) that occur \nafter 48 hours, which can indicate too long - of a time period in setting the password to something that only the user knows.\nIt - is recommended that this time period is adjusted per your internal company - policy.","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-02-05T00:00:00Z","createdDateUTC":"2019-01-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/11b4c19d-2a79-4da3-af38-b067e1273dee","name":"11b4c19d-2a79-4da3-af38-b067e1273dee","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\n(union isfuzzy=true\n(Event\n| where TimeGenerated >= ago(timeframe)\n| - where Source == \"Microsoft-Windows-Sysmon\"\n| where EventID in (17,18)\n| - extend EvData = parse_xml(EventData)\n| extend EventDetail = EvData.DataItem.EventData.Data\n| - extend NamedPipe = EventDetail.[5].[\"#text\"]\n| extend ProcessDetail = EventDetail.[6].[\"#text\"]\n| - where NamedPipe contains ''583da945-62af-10e8-4902-a8f205c72b2e''\n| extend - Account = UserName\n| project-away EventDetail, EvData\n),\n(\n SecurityEvent\n| - where TimeGenerated >= ago(timeframe)\n| where EventID == ''5145''\n| where - AccessList has ''%%4418'' // presence of CreatePipeInstance value \n| - where RelativeTargetName contains ''583da945-62af-10e8-4902-a8f205c72b2e''\n)\n)\n| - extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity - = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Solorigate - Named Pipe","description":"Identifies a match across various data feeds for - named pipe IOCs related to the Solorigate incident.","tactics":["LateralMovement"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-12-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9736e5f1-7b6e-4bfb-a708-e53ff1d182c3","name":"9736e5f1-7b6e-4bfb-a708-e53ff1d182c3","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet tokens = dynamic([\"416\",\"208\",\"128\",\"120\",\"96\",\"80\",\"72\",\"64\",\"48\",\"44\",\"40\",\"g5\",\"gs5\",\"g4\",\"gs4\",\"nc12\",\"nc24\",\"nv12\"]);\nlet - operationList = dynamic([\"Create or Update Virtual Machine\", \"Create Deployment\"]);\nAzureActivity\n| - where TimeGenerated >= ago(timeframe)\n| where OperationName in (operationList)\n| - where ActivityStatus == \"Accepted\" \n| where isnotempty(Properties)\n| extend - vmSize = tolower(tostring(parse_json(tostring(parse_json(tostring(parse_json(tostring(parse_json(Properties).responseBody)).properties)).hardwareProfile)).vmSize))\n| - where isnotempty(vmSize)\n| where vmSize has_any (tokens) \n| extend ComputerName - = tostring(parse_json(tostring(parse_json(tostring(parse_json(tostring(parse_json(Properties).responseBody)).properties)).osProfile)).computerName)\n| - extend clientIpAddress = tostring(parse_json(HTTPRequest).clientIpAddress)\n| - project TimeGenerated, OperationName, ActivityStatus, Caller, CallerIpAddress, - ComputerName, vmSize\n| extend timestamp = TimeGenerated, AccountCustomEntity - = Caller, IPCustomEntity = CallerIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":1,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Creation - of expensive computes in Azure","description":"Identifies the creation of - large size/expensive VMs (GPU or with large no of virtual CPUs) in Azure.\nAdversary - may create new or update existing virtual machines sizes to evade defenses - \nor use it for cryptomining purposes.\nFor Windows/Linux Vm Sizes - https://docs.microsoft.com/azure/virtual-machines/windows/sizes - \nAzure VM Naming Conventions - https://docs.microsoft.com/azure/virtual-machines/vm-naming-conventions","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f15370f4-c6fa-42c5-9be4-1d308f40284e","name":"f15370f4-c6fa-42c5-9be4-1d308f40284e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n OfficeActivity | where TimeGenerated >= ago(dt_lookBack)\n // - renaming time column so it is clear the log this came from\n | extend OfficeActivity_TimeGenerated - = TimeGenerated\n)\non $left.TI_ipEntity == $right.ClientIP\n| summarize LatestIndicatorTime - = arg_max(TimeGenerated, *) by IndicatorId\n| project LatestIndicatorTime, - Description, ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, - ConfidenceScore, OfficeActivity_TimeGenerated,\nTI_ipEntity, ClientIP, UserId, - Operation, ResultStatus, RecordType, OfficeObjectId, NetworkIP, NetworkDestinationIP, - NetworkSourceIP, EmailSourceIpAddress\n| extend timestamp = OfficeActivity_TimeGenerated, - IPCustomEntity = ClientIP, AccountCustomEntity = UserId, URLCustomEntity = - Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to OfficeActivity","description":"Identifies a match in OfficeActivity - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ffcd575b-3d54-482a-a6d8-d0de13b6ac63","name":"ffcd575b-3d54-482a-a6d8-d0de13b6ac63","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nlet emailregex = @''^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$'';\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n//Filtering the table for Email related IOCs\n| where - isnotempty(EmailRecipient)\n| join (\n CommonSecurityLog | where TimeGenerated - >= ago(dt_lookBack) and isnotempty(DestinationUserID)\n // Filtering PAN - Logs for specific event type to match relevant email entities\n | where - DeviceVendor == \"Palo Alto Networks\" and DeviceEventClassID == \"wildfire\" - and ApplicationProtocol in (\"smtp\",\"pop3\")\n | extend DestinationUserID - = tolower(DestinationUserID)\n | where DestinationUserID matches regex - emailregex\n | extend CommonSecurityLog_TimeGenerated = TimeGenerated\n)\non - $left.EmailRecipient == $right.DestinationUserID\n| summarize LatestIndicatorTime - = arg_max(TimeGenerated, *) by IndicatorId\n| project LatestIndicatorTime, - Description, ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, - ConfidenceScore, CommonSecurityLog_TimeGenerated,\nEmailSenderName, EmailSourceDomain, - EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, DestinationUserID, - DeviceEventClassID, LogSeverity, DeviceAction,\nSourceIP, SourcePort, DestinationIP, - DestinationPort, Protocol, ApplicationProtocol\n| extend timestamp = CommonSecurityLog_TimeGenerated, - AccountCustomEntity = DestinationUserID, IPCustomEntity = SourceIP, URLCustomEntity - = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Email entity to CommonSecurityLog","description":"Identifies a match - in CommonSecurityLog table from any Email IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/18e6a87e-9d06-4a4e-8b59-3469cd49552d","name":"18e6a87e-9d06-4a4e-8b59-3469cd49552d","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"(union - isfuzzy=true (SecurityEvent \n| where EventID == 4662 // You need to create - a SACL on the ADFS Policy Store DKM group for this event to be created. \n| - where ObjectServer == ''DS''\n| where OperationType == ''Object Access''\n//| - where ObjectName contains '' ago(auditLookback)\n| where OperationName =~ \"Set federation settings on - domain\"\n//| where Result =~ \"success\" // commenting out, as it may be - interesting to capture failed attempts\n| mv-expand TargetResources\n| extend - modifiedProperties = parse_json(TargetResources).modifiedProperties\n| mv-expand - modifiedProperties\n| extend targetDisplayName = tostring(parse_json(modifiedProperties).displayName)\n| - mv-expand AdditionalDetails\n),\n(\nAuditLogs\n| where TimeGenerated > ago(auditLookback)\n| - where OperationName =~ \"Set domain authentication\"\n//| where Result =~ - \"success\" // commenting out, as it may be interesting to capture failed - attempts\n| mv-expand TargetResources\n| extend modifiedProperties = parse_json(TargetResources).modifiedProperties\n| - mv-expand modifiedProperties\n| extend targetDisplayName = tostring(parse_json(modifiedProperties).displayName), - NewDomainValue=tostring(parse_json(modifiedProperties).newValue)\n| where - NewDomainValue has \"Federated\"\n)\n)\n| extend UserAgent = iff(AdditionalDetails.key - == \"User-Agent\",tostring(AdditionalDetails.value),\"\")\n| extend InitiatingUserOrApp - = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), - tostring(InitiatedBy.app.displayName))\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), - tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\n| - project-reorder TimeGenerated, OperationName, InitiatingUserOrApp, AADOperationType, - targetDisplayName, Result, InitiatingIpAddress, UserAgent, CorrelationId, - TenantId, AADTenantId\n| extend timestamp = TimeGenerated, AccountCustomEntity - = InitiatingUserOrApp, IPCustomEntity = InitiatingIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Modified - domain federation trust settings","description":"This will alert when a user - or application modifies the federation settings on the domain or Update domain - authentication from Managed to Federated.\nFor example, this alert will trigger - when a new Active Directory Federated Service (ADFS) TrustedRealm object, - such as a signing certificate, is added to the domain.\nModification to domain - federation settings should be rare. Confirm the added or modified target domain/URL - is legitimate administrator behavior.\nTo understand why an authorized user - may update settings for a federated domain in Office 365, Azure, or Intune, - see: https://docs.microsoft.com/office365/troubleshoot/active-directory/update-federated-domain-office-365.\nFor - details on security realms that accept security tokens, see the ADFS Proxy - Protocol (MS-ADFSPP) specification: https://docs.microsoft.com/openspecs/windows_protocols/ms-adfspp/e7b9ea73-1980-4318-96a6-da559486664b.\nFor - further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2021-02-09T00:00:00Z","createdDateUTC":"2020-12-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/65c78944-930b-4cae-bd79-c3664ae30ba7","name":"65c78944-930b-4cae-bd79-c3664ae30ba7","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1h;\n(union isfuzzy=true\n(AuditLogs \n| where TimeGenerated >= - ago(timeframe) \n| where OperationName =~ \"Disable Strong Authentication\"\n| - extend IPAddress = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress) - \n| extend InitiatedByUser = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)), - \n tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName), tostring(parse_json(tostring(InitiatedBy.app)).displayName))\n| - extend Targetprop = todynamic(TargetResources)\n| extend TargetUser = tostring(Targetprop[0].userPrincipalName) - \n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by User = TargetUser, InitiatedByUser , Operation = OperationName , CorrelationId, - IPAddress, Category, Source = SourceSystem , AADTenantId, Type\n),\n(AWSCloudTrail\n| - where TimeGenerated >= ago(timeframe)\n| where EventName in~ (\"DeactivateMFADevice\", - \"DeleteVirtualMFADevice\") \n| extend InstanceProfileName = tostring(parse_json(RequestParameters).InstanceProfileName)\n| - extend TargetUser = tostring(parse_json(RequestParameters).userName)\n| summarize - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by User - = TargetUser, Source = EventSource , Operation = EventName , TenantorInstance_Detail - = InstanceProfileName, IPAddress = SourceIpAddress\n)\n)\n| extend timestamp - = StartTimeUtc, AccountCustomEntity = User, IPCustomEntity = IPAddress","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"MFA - disabled for a user","description":"Multi-Factor Authentication (MFA) helps - prevent credential compromise. This alert identifies when an attempt has been - made to diable MFA for a user ","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-23T00:00:00Z","createdDateUTC":"2019-12-16T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]},{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/66276b14-32c5-4226-88e3-080dacc31ce1","name":"66276b14-32c5-4226-88e3-080dacc31ce1","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet AccountAllowList = dynamic([''SYSTEM'']);\nlet SubCategoryList - = dynamic([\"Logoff\", \"Account Lockout\", \"User Account Management\", \"Authorization - Policy Change\"]); // Add any Category in the list to be allowed or disallowed\nlet - tokens = dynamic([\"clear\", \"remove\", \"success:disable\",\"failure:disable\"]); - \n(union isfuzzy=true\n(\nSecurityEvent\n| where TimeGenerated >= ago(timeframe)\n//| - where Process =~ \"auditpol.exe\" \n| where CommandLine has_any (tokens)\n| - where AccountType !~ \"Machine\" and Account !in~ (AccountAllowList)\n| parse - CommandLine with * \"/subcategory:\" subcategorytoken\n| extend SubCategory - = tostring(split(subcategorytoken, \"\\\"\")[1]) , Toggle = tostring(split(subcategorytoken, - \"\\\"\")[2])\n| where SubCategory in~ (SubCategoryList) //use in~ for inclusion - or !in~ for exclusion\n| where Toggle !in~ (\"/failure:disable\", \" /success:enable - /failure:disable\") // use this filter if required to exclude certain toggles\n| - project TimeGenerated, Computer, Account, SubjectDomainName, SubjectUserName, - Process, ParentProcessName, CommandLine, SubCategory, Toggle\n| extend timestamp - = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity = Computer\n),\n(\nDeviceProcessEvents\n| - where TimeGenerated >= ago(timeframe)\n// | where InitiatingProcessFileName - =~ \"auditpol.exe\" \n| where InitiatingProcessCommandLine has_any (tokens)\n| - where AccountName !in~ (AccountAllowList)\n| parse InitiatingProcessCommandLine - with * \"/subcategory:\" subcategorytoken\n| extend SubCategory = tostring(split(subcategorytoken, - \"\\\"\")[1]) , Toggle = tostring(split(subcategorytoken, \"\\\"\")[2])\n| - where SubCategory in~ (SubCategoryList) //use in~ for inclusion or !in~ for - exclusion\n| where Toggle !in~ (\"/failure:disable\", \" /success:enable /failure:disable\") - // use this filter if required to exclude certain toggles\n| project TimeGenerated, - DeviceName, AccountName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, - InitiatingProcessFileName, InitiatingProcessParentFileName, InitiatingProcessCommandLine, - SubCategory, Toggle\n| extend timestamp = TimeGenerated, AccountCustomEntity - = AccountName, HostCustomEntity = DeviceName\n),\n(\nEvent\n| where TimeGenerated - > ago(timeframe)\n| where Source == \"Microsoft-Windows-Sysmon\"\n| where - EventID == 1\n| extend EventData = parse_xml(EventData).DataItem.EventData.Data\n| - mv-expand bagexpansion=array EventData\n| evaluate bag_unpack(EventData)\n| - extend Key=tostring([''@Name'']), Value=[''#text'']\n| evaluate pivot(Key, - any(Value), TimeGenerated, Source, EventLog, Computer, EventLevel, EventLevelName, - EventID, UserName, RenderedDescription, MG, ManagementGroupName, Type, _ResourceId)\n// - | where OriginalFileName =~ \"auditpol.exe\"\n| where CommandLine has_any - (tokens)\n| where User !in~ (AccountAllowList)\n| parse CommandLine with * - \"/subcategory:\" subcategorytoken\n| extend SubCategory = tostring(split(subcategorytoken, - \"\\\"\")[1]) , Toggle = tostring(split(subcategorytoken, \"\\\"\")[2])\n| - where SubCategory in~ (SubCategoryList) //use in~ for inclusion or !in~ for - exclusion\n| where Toggle !in~ (\"/failure:disable\", \" /success:enable /failure:disable\") - // use this filter if required to exclude certain toggles\n| project TimeGenerated, - Computer, User, Process, ParentImage, CommandLine, SubCategory, Toggle\n| - extend timestamp = TimeGenerated, AccountCustomEntity = User, HostCustomEntity - = Computer\n)\n)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Audit - policy manipulation using auditpol utility","description":"This detects attempt - to manipulate audit policies using auditpol command.\nThis technique was seen - in relation to Solorigate attack but the results can indicate potential malicious - activity used in different attacks.\nThe process name in each data source - is commented out as an adversary could rename it. It is advisable to keep - process name commented but \nif the results show unrelated false positives, - users may want to uncomment it.\nRefer to auditpol syntax: https://docs.microsoft.com/windows-server/administration/windows-commands/auditpol \nRefer - to our M365 blog for details on use during the Solorigate attack:\nhttps://www.microsoft.com/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop-and-raindrop/","tactics":["Execution"],"lastUpdatedDateUTC":"2021-02-02T00:00:00Z","createdDateUTC":"2021-01-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceProcessEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/80733eb7-35b2-45b6-b2b8-3c51df258206","name":"80733eb7-35b2-45b6-b2b8-3c51df258206","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet DomainList = dynamic([\"monerohash.com\", \"do-dear.com\", - \"xmrminerpro.com\", \"secumine.net\", \"xmrpool.com\", \"minexmr.org\", \"hashanywhere.com\", - \"xmrget.com\", \n\"mininglottery.eu\", \"minergate.com\", \"moriaxmr.com\", - \"multipooler.com\", \"moneropools.com\", \"xmrpool.eu\", \"coolmining.club\", - \"supportxmr.com\",\n\"minexmr.com\", \"hashvault.pro\", \"xmrpool.net\", - \"crypto-pool.fr\", \"xmr.pt\", \"miner.rocks\", \"walpool.com\", \"herominers.com\", - \"gntl.co.uk\", \"semipool.com\", \n\"coinfoundry.org\", \"cryptoknight.cc\", - \"fairhash.org\", \"baikalmine.com\", \"tubepool.xyz\", \"fairpool.xyz\", - \"asiapool.io\", \"coinpoolit.webhop.me\", \"nanopool.org\", \n\"moneropool.com\", - \"miner.center\", \"prohash.net\", \"poolto.be\", \"cryptoescrow.eu\", \"monerominers.net\", - \"cryptonotepool.org\", \"extrmepool.org\", \"webcoin.me\", \n\"kippo.eu\", - \"hashinvest.ws\", \"monero.farm\", \"supportxmr.com\", \"xmrpool.eu\", \"linux-repository-updates.com\", - \"1gh.com\", \"dwarfpool.com\", \"hash-to-coins.com\", \n\"hashvault.pro\", - \"pool-proxy.com\", \"hashfor.cash\", \"fairpool.cloud\", \"litecoinpool.org\", - \"mineshaft.ml\", \"abcxyz.stream\", \"moneropool.ru\", \"cryptonotepool.org.uk\",\n\"extremepool.org\", - \"extremehash.com\", \"hashinvest.net\", \"unipool.pro\", \"crypto-pools.org\", - \"monero.net\", \"backup-pool.com\", \"mooo.com\", \"freeyy.me\", \"cryptonight.net\",\n\"shscrypto.net\"]);\nSyslog\n| - where TimeGenerated >= ago(timeframe)\n| where ProcessName contains \"squid\"\n| - extend URL = extract(\"(([A-Z]+ [a-z]{4,5}:\\\\/\\\\/)|[A-Z]+ )([^ :]*)\",3,SyslogMessage), - \n SourceIP = extract(\"([0-9]+ )(([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.([0-9]{1,3}))\",2,SyslogMessage), - \n Status = extract(\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))\",1,SyslogMessage), - \n HTTP_Status_Code = extract(\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))/([0-9]{3})\",8,SyslogMessage),\n User - = extract(\"(CONNECT |GET )([^ ]* )([^ ]+)\",3,SyslogMessage),\n RemotePort - = extract(\"(CONNECT |GET )([^ ]*)(:)([0-9]*)\",4,SyslogMessage),\n Domain - = extract(\"(([A-Z]+ [a-z]{4,5}:\\\\/\\\\/)|[A-Z]+ )([^ :\\\\/]*)\",3,SyslogMessage),\n Bytes - = toint(extract(\"([A-Z]+\\\\/[0-9]{3} )([0-9]+)\",2,SyslogMessage)),\n contentType - = extract(\"([a-z/]+$)\",1,SyslogMessage)\n| extend TLD = extract(\"\\\\.[a-z]*$\",0,Domain)\n| - where HTTP_Status_Code == ''200''\n| where Domain contains \".\"\n| where - Domain has_any (DomainList)\n| extend timestamp = TimeGenerated, URLCustomEntity - = URL, IPCustomEntity = SourceIP, AccountCustomEntity = User","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"Squid - proxy events related to mining pools","description":"Checks for Squid proxy - events in Syslog associated with common mining pools .This query presumes - the default Squid log format is being used. \n http://www.squid-cache.org/Doc/config/access_log/","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-07-12T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bff093b2-500e-4ae5-bb49-a5b1423cbd5b","name":"bff093b2-500e-4ae5-bb49-a5b1423cbd5b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"OfficeActivity\n| - where OfficeWorkload =~ \"MicrosoftTeams\"\n| where Operation =~ \"MemberAdded\"\n| - extend UPN = tostring(parse_json(Members)[0].UPN)\n| where UPN contains (\"#EXT#\")\n| - project TimeAdded=TimeGenerated, Operation, UPN, UserWhoAdded = UserId, TeamName\n| - join (\n OfficeActivity\n| where OfficeWorkload =~ \"MicrosoftTeams\"\n| where - Operation =~ \"MemberRemoved\"\n| extend UPN = tostring(parse_json(Members)[0].UPN)\n| - where UPN contains (\"#EXT#\")\n| project TimeDeleted=TimeGenerated, Operation, - UPN, UserWhoDeleted = UserId, TeamName\n) on UPN\n| where TimeDeleted > TimeAdded\n| - project TimeAdded, TimeDeleted, UPN, UserWhoAdded, UserWhoDeleted, TeamName\n| - extend timestamp = TimeAdded, AccountCustomEntity = UPN","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"External - user added and removed in short timeframe","description":"This detection flags - the occurances of external user accounts that are added to a Team and then - removed within\none hour.This data is a part of Office 365 Connector in Azure - Sentinel.","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-01-28T00:00:00Z","createdDateUTC":"2020-09-13T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity - (Teams)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/be52662c-3b23-435a-a6fa-f39bdfc849e6","name":"be52662c-3b23-435a-a6fa-f39bdfc849e6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 10;\nQualysHostDetection_CL\n| where - TimeGenerated >= timeframe\n| mv-expand todynamic(Detections_s)\n| where Detections_s.Severity - == \"5\"\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), - count() by NetBios_s, IPAddress\n| where count_ >= threshold\n| extend timestamp - = StartTime, HostCustomEntity = NetBios_s, IPCustomEntity = IPAddress","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"High - Number of Urgent Vulnerabilities Detected","description":"This Creates an - incident when a host has a high number of Urgent, severity 5, vulnerabilities - detected.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"QualysVulnerabilityManagement","dataTypes":["QualysHostDetection_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b783df9c-4088-452e-a791-0c4fca47a109","name":"b783df9c-4088-452e-a791-0c4fca47a109","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.0.0","techniques":["T1568"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":[{"prioritize":null,"exclude":".lan, - .home","dataType":"string","name":"Top level domain","description":"Give comma - separated TLDs to exclude from source data within double quotes, example: - \".lan, .home\"","sequenceNumber":0,"rerun":"RerunAlways"}],"thresholdObservations":[{"minimum":"0.0","maximum":"1.0","value":"0.9","name":"Score","description":"Generate - an anomaly when the anomaly score is greater than or equal to the chosen value.","sequenceNumber":0,"rerun":"RerunAlways"}]},"frequency":"P1D","displayName":"(Preview) - Domain generation algorithm (DGA) on DNS domains","description":"This machine - learning model indicates potential DGA domains in the second-level-domain - (SLD) from the last day in the DNS logs.\nThe algorithm applies to the DNS - records that resolve to IPv4 and IPv6 addresses.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2021-02-05T00:00:00Z","createdDateUTC":"2021-02-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d82e1987-4356-4a7b-bc5e-064f29b143c0","name":"d82e1987-4356-4a7b-bc5e-064f29b143c0","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"SecurityEvent\n| - where EventID == 4688\n| where Process =~ ''rundll32.exe'' \n| where CommandLine - has_all (''Execute'',''RegRead'',''window.close'')\n| project TimeGenerated, - Computer, Account, Process, NewProcessName, CommandLine, ParentProcessName, - _ResourceId\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer, - AccountCustomEntity = Account","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"NOBELIUM - - suspicious rundll32.exe execution of vbscript","description":"This query - idenifies when rundll32.exe executes a specific set of inline VBScript commands\n - References: https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-03-04T00:00:00Z","createdDateUTC":"2021-03-03T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/48607a29-a26a-4abf-8078-a06dbdd174a4","name":"48607a29-a26a-4abf-8078-a06dbdd174a4","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeRange = 3d;\nlet lookBack = 7d;\nlet authenticationWindow = 20m;\nlet - authenticationThreshold = 5;\nlet isGUID = \"[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}\";\nlet - failureCodes = dynamic([50053, 50126, 50055]); // invalid password, account - is locked - too many sign ins, expired password\nlet successCodes = dynamic([0, - 50055, 50057, 50155, 50105, 50133, 50005, 50076, 50079, 50173, 50158, 50072, - 50074, 53003, 53000, 53001, 50129]);\n// Lookup up resolved identities from - last 7 days\nlet identityLookup = SigninLogs\n| where TimeGenerated >= ago(lookBack)\n| - where not(Identity matches regex isGUID)\n| where isnotempty(UserId)\n| summarize - by UserId, lu_UserDisplayName = UserDisplayName, lu_UserPrincipalName = UserPrincipalName;\n// - collect window threshold breaches\nSigninLogs\n| where TimeGenerated > ago(timeRange)\n| - where ResultType in(failureCodes)\n| summarize StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated), make_set(ClientAppUsed), count() by bin(TimeGenerated, - authenticationWindow), IPAddress, AppDisplayName, UserPrincipalName\n| summarize - FailedPrincipalCount = dcount(UserPrincipalName) by bin(TimeGenerated, authenticationWindow), - IPAddress, AppDisplayName\n| where FailedPrincipalCount >= authenticationThreshold\n| - summarize WindowThresholdBreaches = count() by IPAddress\n| join kind= inner - (\n// where we breached a threshold, join the details back on all failure - data\n SigninLogs\n| where TimeGenerated > ago(timeRange)\n| where ResultType - in(failureCodes)\n| extend FullLocation = strcat(Location,''|'', LocationDetails.state, - ''|'', LocationDetails.city)\n| summarize StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated), make_set(ClientAppUsed), make_set(FullLocation), - FailureCount = count() by IPAddress, AppDisplayName, UserPrincipalName, UserDisplayName, - Identity, UserId\n// lookup any unresolved identities\n| extend UnresolvedUserId - = iff(Identity matches regex isGUID, UserId, \"\")\n| join kind= leftouter - (\n identityLookup \n) on $left.UnresolvedUserId==$right.UserId\n| extend - UserDisplayName=iff(isempty(lu_UserDisplayName), UserDisplayName, lu_UserDisplayName)\n| - extend UserPrincipalName=iff(isempty(lu_UserPrincipalName), UserPrincipalName, - lu_UserPrincipalName)\n| summarize StartTime = min(StartTime), EndTime = max(EndTime), - make_set(UserPrincipalName), make_set(UserDisplayName), make_set(set_ClientAppUsed), - make_set(set_FullLocation), make_list(FailureCount) by IPAddress, AppDisplayName\n| - extend FailedPrincipalCount = arraylength(set_UserPrincipalName)\n) on IPAddress\n| - project IPAddress, StartTime, EndTime, TargetedApplication=AppDisplayName, - FailedPrincipalCount, UserPrincipalNames=set_UserPrincipalName, UserDisplayNames=set_UserDisplayName, - ClientAppsUsed=set_set_ClientAppUsed, Locations=set_set_FullLocation, FailureCountByPrincipal=list_FailureCount, - WindowThresholdBreaches\n| join kind= inner (\nSigninLogs // get data on success - vs. failure history for each IP\n| where TimeGenerated > ago(timeRange)\n| - where ResultType in(successCodes) or ResultType in(failureCodes) // success - or failure types\n| summarize GlobalSuccessPrincipalCount = dcountif(UserPrincipalName, - (ResultType in(successCodes))), ResultTypeSuccesses = make_set_if(ResultType, - (ResultType in(successCodes))), GlobalFailPrincipalCount = dcountif(UserPrincipalName, - (ResultType in(failureCodes))), ResultTypeFailures = make_set_if(ResultType, - (ResultType in(failureCodes))) by IPAddress\n| where GlobalFailPrincipalCount - > GlobalSuccessPrincipalCount // where the number of failed principals is - greater than success - eliminates FPs from IPs who authenticate successfully - alot and as a side effect have alot of failures\n) on IPAddress\n| project-away - IPAddress1\n| extend timestamp=StartTime, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Password - spray attack against Azure AD application","description":"Identifies evidence - of password spray activity against Azure AD applications by looking for failures - from multiple accounts from the same\nIP address within a time window. If - the number of accounts breaches the threshold just once, all failures from - the IP address within the time range\nare bought into the result. Details - on whether there were successful authentications by the IP address within - the time window are also included.\nThis can be an indicator that an attack - was successful.\nThe default failure acccount threshold is 5, Default time - window for failures is 20m and default look back window is 3 days\nNote: Due - to the number of possible accounts involved in a password spray it is not - possible to map identities to a custom entity.\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-03-26T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/83ba3057-9ea3-4759-bf6a-933f2e5bc7ee","name":"83ba3057-9ea3-4759-bf6a-933f2e5bc7ee","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - current = 1d;\nlet auditLookback = 7d;\n// Setting threshold to 3 as a default, - change as needed. \n// Any operation that has been initiated by a user or - app more than 3 times in the past 7 days will be excluded\nlet threshold = - 3;\n// Gather initial data from lookback period, excluding current, adjust - current to more than a single day if no results\nlet AuditTrail = AuditLogs - | where TimeGenerated >= ago(auditLookback) and TimeGenerated < ago(current)\n// - 2 other operations that can be part of malicious activity in this situation - are \n// \"Add OAuth2PermissionGrant\" and \"Add service principal\", extend - the filter below to capture these too\n| where OperationName has \"Consent - to application\"\n| extend InitiatedBy = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)), - \ntostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName), tostring(parse_json(tostring(InitiatedBy.app)).displayName))\n| - extend TargetResourceName = tolower(tostring(TargetResources.[0].displayName))\n| - summarize max(TimeGenerated), OperationCount = count() by OperationName, InitiatedBy, - TargetResourceName\n// only including operations by initiated by a user or - app that is above the threshold so we produce only rare and has not occurred - in last 7 days\n| where OperationCount > threshold\n;\n// Gather current period - of audit data\nlet RecentConsent = AuditLogs | where TimeGenerated >= ago(current)\n| - where OperationName has \"Consent to application\"\n| extend IpAddress = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)), - \ntostring(parse_json(tostring(InitiatedBy.user)).ipAddress), tostring(parse_json(tostring(InitiatedBy.app)).ipAddress))\n| - extend InitiatedBy = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)), - \ntostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName), tostring(parse_json(tostring(InitiatedBy.app)).displayName))\n| - extend TargetResourceName = tolower(tostring(TargetResources.[0].displayName))\n| - parse TargetResources.[0].modifiedProperties with * \"ConsentType: \" ConsentType - \"]\" *\n| project TimeGenerated, InitiatedBy, IpAddress, TargetResourceName, - Category, OperationName, ConsentType , CorrelationId, Type;\n// Exclude previously - seen audit activity for \"Consent to application\" that was seen in the lookback - period\n// First for rare InitiatedBy\nlet RareConsentBy = RecentConsent | - join kind= leftanti AuditTrail on OperationName, InitiatedBy \n| extend Reason - = \"Previously unseen user consenting\";\n// Second for rare TargetResourceName\nlet - RareConsentApp = RecentConsent | join kind= leftanti AuditTrail on OperationName, - TargetResourceName\n| extend Reason = \"Previously unseen app granted consent\";\nRareConsentBy - | union RareConsentApp\n| summarize Reason = makeset(Reason) by TimeGenerated, - InitiatedBy, IpAddress, TargetResourceName, Category, OperationName, ConsentType, - CorrelationId, Type\n| extend timestamp = TimeGenerated, AccountCustomEntity - = InitiatedBy, HostCustomEntity = TargetResourceName, IPCustomEntity = IpAddress","queryFrequency":"P1D","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":3,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Rare - application consent","description":"This will alert when the \"Consent to - application\" operation occurs by a user that has not done this operation - before or rarely does this.\nThis could indicate that permissions to access - the listed Azure App were provided to a malicious actor. \nConsent to application, - Add service principal and Add OAuth2PermissionGrant should typically be rare - events. \nThis may help detect the Oauth2 attack that can be initiated by - this publicly available tool - https://github.com/fireeye/PwnAuth\nFor further - information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["Persistence","LateralMovement","Collection"],"lastUpdatedDateUTC":"2020-12-19T00:00:00Z","createdDateUTC":"2019-07-04T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e1ce0eab-10d1-4aae-863f-9a383345ba88","name":"e1ce0eab-10d1-4aae-863f-9a383345ba88","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet threshold = 15;\nSyslog\n| where TimeGenerated >= ago(timeframe)\n| - where SyslogMessage contains \"Failed password for invalid user\"\n| where - ProcessName =~ \"sshd\" \n| parse kind=relaxed SyslogMessage with * \"invalid - user\" user \" from \" ip \" port\" port \" ssh2\"\n| project user, ip, port, - SyslogMessage, EventTime\n| summarize EventTimes = make_list(EventTime), PerHourCount - = count() by ip, bin(EventTime, 4h), user\n| where PerHourCount > threshold\n| - mvexpand EventTimes\n| extend EventTimes = tostring(EventTimes) \n| summarize - StartTimeUtc = min(EventTimes), EndTimeUtc = max(EventTimes), UserList = makeset(user), - sum(PerHourCount) by IPAddress = ip\n| extend UserList = tostring(UserList) - \n| extend timestamp = StartTimeUtc, IPCustomEntity = IPAddress, AccountCustomEntity - = UserList","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"SSH - - Potential Brute Force","description":"Identifies an IP address that had - 15 failed attempts to sign in via SSH in a 4 hour block during a 24 hour time - period.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/532c1811-79ee-4d9f-8d4d-6304c840daa1","name":"532c1811-79ee-4d9f-8d4d-6304c840daa1","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Azure - Active Directory Identity Protection","displayName":"Create incidents based - on Azure Active Directory Identity Protection alerts","description":"Create - incidents based on all alerts generated in Azure Active Directory Identity - Protection","lastUpdatedDateUTC":"2019-07-16T00:00:00Z","createdDateUTC":"2019-07-16T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectoryIdentityProtection","dataTypes":["SecurityAlert - (IPC)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/65360bb0-8986-4ade-a89d-af3cf44d28aa","name":"65360bb0-8986-4ade-a89d-af3cf44d28aa","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet EventNameList = dynamic([\"CreateNetworkAclEntry\",\"CreateRoute\",\"CreateRouteTable\",\"CreateInternetGateway\",\"CreateNatGateway\"]);\nAWSCloudTrail\n| - where TimeGenerated > ago(timeframe)\n| where EventName in~ (EventNameList)\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by EventName, EventTypeName, UserIdentityAccountId, UserIdentityPrincipalid, - UserAgent, \nUserIdentityUserName, SessionMfaAuthenticated, SourceIpAddress, - AWSRegion, EventSource, AdditionalEventData, ResponseElements\n| extend timestamp - = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, IPCustomEntity - = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Changes - to Amazon VPC settings","description":"Amazon Virtual Private Cloud (Amazon - VPC) lets you provision a logically isolated section of the AWS Cloud where - you can launch AWS resources\nin a virtual network that you define.\nThis - identifies changes to Amazon VPC (Virtual Private Cloud) settings such as - new ACL entries,routes, routetable or Gateways.\nMore information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255 - \nand AWS VPC API Docs: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/OperationList-query-vpc.html","tactics":["PrivilegeEscalation","LateralMovement"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ec21493c-2684-4acd-9bc2-696dbad72426","name":"ec21493c-2684-4acd-9bc2-696dbad72426","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\n//Create a list of TLDs in our - threat feed for later validation of extracted domains\nlet list_tlds = ThreatIntelligenceIndicator\n | - where TimeGenerated > ago(ioc_lookBack)\n | where isnotempty(DomainName)\n | - extend DomainName = tolower(DomainName)\n | extend parts = split(DomainName, - ''.'')\n | extend tld = parts[(array_length(parts)-1)]\n | summarize - count() by tostring(tld)\n | summarize make_list(tld);\n ThreatIntelligenceIndicator\n | - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n | - summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n | - where Active == true\n // Picking up only IOC''s that contain the entities - we want\n | where isnotempty(DomainName)\n | join (\n CommonSecurityLog\n | - extend IngestionTime = ingestion_time()\n | where IngestionTime > ago(dt_lookBack)\n | - where DeviceVendor =~ ''Palo Alto Networks''\n | where DeviceEventClassID - =~ ''url''\n //Uncomment the line below to only alert on allowed connections\n //| - where DeviceAction !~ \"block-url\"\n //Extract domain from RequestURL, - if not present extarct it from AdditionalExtentions\n | extend PA_Url - = columnifexists(\"RequestURL\", \"None\")\n | extend PA_Url = iif(isempty(PA_Url) - and AdditionalExtensions !startswith \"PanOS\", extract(\"([^\\\"]+)\", 1, - tolower(AdditionalExtensions)), trim(''\"'', PA_Url))\n | extend PA_Url - = iif(PA_Url !startswith \"http://\" and ApplicationProtocol !~ \"ssl\", strcat(''http://'', - PA_Url), iif(PA_Url !startswith \"https://\" and ApplicationProtocol =~ \"ssl\", - strcat(''https://'', PA_Url), PA_Url))\n | extend Domain = trim(@\"\"\"\",tostring(parse_url(PA_Url).Host))\n | - where isnotempty(Domain)\n | extend Domain = tolower(Domain)\n | - extend parts = split(Domain, ''.'')\n //Split out the TLD for the purpose - of checking if we have any TI indicators with this TLD to match on\n | - extend tld = parts[(array_length(parts)-1)]\n //Validate parsed domain - by checking TLD against TLDs from threat feed and drop domains where there - is no chance of a match\n | where tld in~ (list_tlds)\n | extend - CSL_TimeGenerated = TimeGenerated\n ) on $left.DomainName==$right.Domain\n | - project LatestIndicatorTime, Description, ActivityGroupNames, PA_Url, Domain, - IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, CSL_TimeGenerated, - DeviceAction, DestinationIP, DestinationPort, DeviceName, SourceIP, SourcePort, - ApplicationProtocol, RequestMethod\n | extend timestamp = CSL_TimeGenerated, - IPCustomEntity = SourceIP, HostCustomEntity = DeviceName, URLCustomEntity - = PA_Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Domain entity to PaloAlto","description":"Identifies a match in Palo - Alto data in CommonSecurityLog table from any Domain IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f7f4a77e-f68f-4b56-9aaf-a0c9d87d7a8e","name":"f7f4a77e-f68f-4b56-9aaf-a0c9d87d7a8e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"// - Replace these with the usename or emails of your VIP users you wish to monitor - for.\nlet vips = dynamic([''vip1@email.com'',''vip2@email.com'']);\nlet timeframe - = 1d;\nLAQueryLogs\n| where TimeGenerated > ago(timeframe)\n| where QueryText - has_any (vips)\n| project TimeGenerated, AADEmail, RequestClientApp, QueryText, - ResponseRowCount, RequestTarget\n| extend timestamp = TimeGenerated, AccountCustomEntity - = AADEmail","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"Users - searching for VIP user activity","description":"This query monitors for users - running Log Analytics queries that contain filters \nfor specific, defined - VIP user accounts. Use this detection to alert for users specifically \nsearching - for activity of sensitive users.","tactics":["Collection","Exfiltration"],"lastUpdatedDateUTC":"2021-01-21T00:00:00Z","createdDateUTC":"2020-09-16T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d0bd9611-2fc1-42cb-af4e-793b6f28ba92","name":"d0bd9611-2fc1-42cb-af4e-793b6f28ba92","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.0.1","techniques":["T1030"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":null,"thresholdObservations":[{"minimum":"0","maximum":"1","value":"0.87","name":"Score","description":"Generate - an anomaly when score is greater than the chosen value","sequenceNumber":0,"rerun":"NotRequired"}]},"frequency":"P1D","displayName":"(Preview) - Excessive upload via Palo Alto GlobalProtect","description":"This algorithm - detects unusually high volume of upload per user account via Palo Alto VPN - solution. The model is trained on the previous 14 days of the VPN logs. It - indicates anomalous high volume of upload in the last day.","tactics":["Exfiltration"],"lastUpdatedDateUTC":"2021-02-22T00:00:00Z","createdDateUTC":"2020-11-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/532f62c1-fba6-4baa-bbb6-4a32a4ef32fa","name":"532f62c1-fba6-4baa-bbb6-4a32a4ef32fa","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\n//Create a list of TLDs in our - threat feed for later validation\nlet list_tlds = ThreatIntelligenceIndicator\n| - where TimeGenerated > ago(ioc_lookBack)\n| where isnotempty(DomainName)\n| - extend parts = split(DomainName, ''.'')\n| extend tld = parts[(array_length(parts)-1)]\n| - summarize count() by tostring(tld)\n| summarize make_list(tld);\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(DomainName)\n| join (\n Syslog\n | where - TimeGenerated > ago(dt_lookBack)\n //Extract domain patterns from syslog - message\n | extend domain = extract(\"(([a-z0-9]+(-[a-z0-9]+)*\\\\.)+[a-z]{2,})\",1, - tolower(SyslogMessage))\n | where isnotempty(domain)\n | extend parts - = split(domain, ''.'')\n //Split out the TLD\n | extend tld = parts[(array_length(parts)-1)]\n //Validate - parsed domain by checking if the TLD is in the list of TLDs in our threat - feed\n | where tld in~ (list_tlds)\n | extend Syslog_TimeGenerated = - TimeGenerated\n) on $left.DomainName==$right.domain\n| summarize LatestIndicatorTime - = arg_max(TimeGenerated, *) by IndicatorId\n| project LatestIndicatorTime, - Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, - ConfidenceScore, Syslog_TimeGenerated, SyslogMessage, Computer, ProcessName, - domain, HostIP, Url\n| extend timestamp = Syslog_TimeGenerated, HostCustomEntity - = Computer, IPCustomEntity = HostIP, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Domain entity to Syslog","description":"Identifies a match in Syslog - table from any Domain IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a9956d3a-07a9-44a6-a279-081a85020cae","name":"a9956d3a-07a9-44a6-a279-081a85020cae","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 15;\nlet rejectedAccess = SymantecVIP\n| - where TimeGenerated > timeframe\n| where isnotempty(RADIUSAuth)\n| where RADIUSAuth - =~ \"Reject\"\n| summarize Total = count() by ClientIP, bin(TimeGenerated, - 15m)\n| where Total > threshold\n| project ClientIP;\nSymantecVIP\n| where - TimeGenerated > timeframe\n| where isnotempty(RADIUSAuth)\n| where RADIUSAuth - =~ \"Reject\"\n| join kind=inner rejectedAccess() on ClientIP\n| summarize - StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), count() by ClientIP, - User\n| extend timestamp = StartTime, IPCustomEntity = ClientIP, AccountCustomEntity - = User","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"ClientDeniedAccess","description":"Creates - an incident in the event a Client has an excessive amounts of denied access - requests.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SymantecVIP","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f2dd4a3a-ebac-4994-9499-1a859938c947","name":"f2dd4a3a-ebac-4994-9499-1a859938c947","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 1d;\nlet timeframe = 1h;\nlet scorethreshold - = 5;\nlet bytessentperhourthreshold = 10;\nlet PrivateIPregex = @''^127\\.|^10\\.|^172\\.1[6-9]\\.|^172\\.2[0-9]\\.|^172\\.3[0-1]\\.|^192\\.168\\.'';\nlet - TimeSeriesData = (union isfuzzy=true\n(\nVMConnection\n| where TimeGenerated - between (startofday(ago(starttime))..startofday(ago(endtime)))\n| where isnotempty(DestinationIP) - and isnotempty(SourceIP)\n| extend DestinationIpType = iff(DestinationIp matches - regex PrivateIPregex,\"private\" ,\"public\" )\n| where DestinationIpType - == \"public\" | extend DeviceVendor = \"VMConnection\"\n| project TimeGenerated, - BytesSent, DeviceVendor\n| make-series TotalBytesSent=sum(BytesSent) on TimeGenerated - from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe - by DeviceVendor\n),\n(\nCommonSecurityLog\n| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\n| - where isnotempty(DestinationIP) and isnotempty(SourceIP)\n| extend DestinationIpType - = iff(DestinationIP matches regex PrivateIPregex,\"private\" ,\"public\" )\n| - where DestinationIpType == \"public\"\n| project TimeGenerated, SentBytes, - DeviceVendor\n| make-series TotalBytesSent=sum(SentBytes) on TimeGenerated - from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe - by DeviceVendor\n)\n);\n//Filter anomolies against TimeSeriesData\nlet TimeSeriesAlerts - = materialize(TimeSeriesData\n| extend (anomalies, score, baseline) = series_decompose_anomalies(TotalBytesSent, - scorethreshold, -1, ''linefit'')\n| mv-expand TotalBytesSent to typeof(double), - TimeGenerated to typeof(datetime), anomalies to typeof(double),score to typeof(double), - baseline to typeof(long)\n| where anomalies > 0 | extend AnomalyHour = TimeGenerated\n| - extend TotalBytesSentinMBperHour = round(((TotalBytesSent / 1024)/1024),2), - baselinebytessentperHour = round(((baseline / 1024)/1024),2), score = round(score,2)\n| - project DeviceVendor, AnomalyHour, TimeGenerated, TotalBytesSentinMBperHour, - baselinebytessentperHour, anomalies, score);\nlet AnomalyHours = materialize(TimeSeriesAlerts | - where TimeGenerated > ago(2d) | project TimeGenerated);\n//Union of all BaseLogs - aggregated per hour\nlet BaseLogs = (union isfuzzy=true\n(\nCommonSecurityLog\n| - where isnotempty(DestinationIP) and isnotempty(SourceIP)\n| where TimeGenerated - > ago(2d)\n| extend DateHour = bin(TimeGenerated, 1h) // create a new column - and round to hour\n| where DateHour in ((AnomalyHours)) //filter the dataset - to only selected anomaly hours\n| extend DestinationIpType = iff(DestinationIP - matches regex PrivateIPregex,\"private\" ,\"public\" )\n| where DestinationIpType - == \"public\"\n| extend SentBytesinMB = ((SentBytes / 1024)/1024), ReceivedBytesinMB - = ((ReceivedBytes / 1024)/1024)\n| summarize HourlyCount = count(), TimeGeneratedMax=arg_max(TimeGenerated, - *), DestinationIPList=make_set(DestinationIP, 100), DestinationPortList = - make_set(DestinationPort,100), TotalSentBytesinMB = sum(SentBytesinMB), TotalReceivedBytesinMB - = sum(ReceivedBytesinMB) by SourceIP, DeviceVendor, TimeGeneratedHour=bin(TimeGenerated,1h)\n| - where TotalSentBytesinMB > bytessentperhourthreshold\n| sort by TimeGeneratedHour - asc, TotalSentBytesinMB desc\n| extend Rank=row_number(1, prev(TimeGeneratedHour) - != TimeGeneratedHour) // Ranking the dataset per Hourly Partition\n| where - Rank < 10 // Selecting Top 10 records with Highest BytesSent in each Hour\n| - project DeviceVendor, TimeGeneratedHour, TimeGeneratedMax, SourceIP, DestinationIPList, - DestinationPortList, TotalSentBytesinMB, TotalReceivedBytesinMB, Rank\n),\n(\nVMConnection\n| - where isnotempty(DestinationIp) and isnotempty(SourceIp)\n| where TimeGenerated - > ago(2d)\n| extend DateHour = bin(TimeGenerated, 1h) // create a new column - and round to hour\n| where DateHour in ((AnomalyHours)) //filter the dataset - to only selected anomaly hours\n| extend SourceIP = SourceIp, DestinationIP - = DestinationIp\n| extend DestinationIpType = iff(DestinationIp matches regex - PrivateIPregex,\"private\" ,\"public\" )\n| where DestinationIpType == \"public\" - | extend DeviceVendor = \"VMConnection\"\n| extend SentBytesinMB = ((BytesSent - / 1024)/1024), ReceivedBytesinMB = ((BytesReceived / 1024)/1024)\n| summarize - HourlyCount = count(),TimeGeneratedMax=arg_max(TimeGenerated, *), DestinationIPList=make_set(DestinationIP, - 100), DestinationPortList = make_set(DestinationPort, 100), TotalSentBytesinMB - = sum(SentBytesinMB),TotalReceivedBytesinMB = sum(ReceivedBytesinMB) by SourceIP, - DeviceVendor, TimeGeneratedHour=bin(TimeGenerated,1h)\n| where TotalSentBytesinMB - > bytessentperhourthreshold\n| sort by TimeGeneratedHour asc, TotalSentBytesinMB - desc\n| extend Rank=row_number(1, prev(TimeGeneratedHour) != TimeGeneratedHour) - // Ranking the dataset per Hourly Partition\n| where Rank < 10 // Selecting - Top 10 records with Highest BytesSent in each Hour\n| project DeviceVendor, - TimeGeneratedHour, TimeGeneratedMax, SourceIP, DestinationIPList, DestinationPortList, - TotalSentBytesinMB, TotalReceivedBytesinMB, Rank\n)\n);\n// Join against base - logs to retrive records associated with the hour of anomoly\nTimeSeriesAlerts\n| - where TimeGenerated > ago(2d)\n| join (\n BaseLogs | extend AnomalyHour - = TimeGeneratedHour\n) on DeviceVendor, AnomalyHour | sort by score desc\n| - project DeviceVendor, AnomalyHour,TimeGeneratedMax, SourceIP, DestinationIPList, - DestinationPortList, TotalSentBytesinMB, TotalReceivedBytesinMB, TotalBytesSentinMBperHour, - baselinebytessentperHour, score, anomalies\n| summarize EventCount = count(), - StartTimeUtc= min(TimeGeneratedMax), EndTimeUtc= max(TimeGeneratedMax), SourceIPMax= - arg_max(SourceIP,*), TotalBytesSentinMB = sum(TotalSentBytesinMB), TotalBytesReceivedinMB - = sum(TotalReceivedBytesinMB), SourceIPList = make_set(SourceIP, 100), DestinationIPList - = make_set(DestinationIPList, 100) by AnomalyHour,TotalBytesSentinMBperHour, - baselinebytessentperHour, score, anomalies\n| project DeviceVendor, AnomalyHour, - StartTimeUtc, EndTimeUtc, SourceIPMax, SourceIPList, DestinationIPList, DestinationPortList, - TotalBytesSentinMB, TotalBytesReceivedinMB, TotalBytesSentinMBperHour, baselinebytessentperHour, - score, anomalies, EventCount\n| extend timestamp =EndTimeUtc, IPCustomEntity - = SourceIPMax","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":1,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Time - series anomaly for data size transferred to public internet","description":"Identifies - anomalous data transfer to public networks. The query leverages built-in KQL - anomaly detection algorithms that detects large deviations from a baseline - pattern.\nA sudden increase in data transferred to unknown public networks - is an indication of data exfiltration attempts and should be investigated.\nThe - higher the score, the further it is from the baseline value.\nThe output is - aggregated to provide summary view of unique source IP to destination IP address - and port bytes sent traffic observed in the flagged anomaly hour.\nThe source - IP addresses which were sending less than bytessentperhourthreshold have been - exluded whose value can be adjusted as needed .\nYou may have to run queries - for individual source IP addresses from SourceIPlist to determine if anything - looks suspicious","tactics":["Exfiltration"],"lastUpdatedDateUTC":"2021-01-21T00:00:00Z","createdDateUTC":"2019-05-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a50766a7-0674-4ccb-8845-15dc55a80ba1","name":"a50766a7-0674-4ccb-8845-15dc55a80ba1","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n WireData | where TimeGenerated >= ago(dt_lookBack)\n | - where isnotempty(RemoteIP)\n // renaming time column so it is clear the - log this came from\n | extend WireData_TimeGenerated = TimeGenerated\n)\non - $left.TI_ipEntity == $right.RemoteIP\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, WireData_TimeGenerated,\nTI_ipEntity, - Computer, LocalIP, RemoteIP, ProcessName, ApplicationProtocol, LocalPortNumber, - NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\n| - extend timestamp = WireData_TimeGenerated, IPCustomEntity = RemoteIP, HostCustomEntity - = Computer, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to WireData","description":"Identifies a match in WireData - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"AzureMonitor(WireData)","dataTypes":["WireData"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d6491be0-ab2d-439d-95d6-ad8ea39277c5","name":"d6491be0-ab2d-439d-95d6-ad8ea39277c5","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet SensitiveOperationList = dynamic(\n[\"VaultDelete\", - \"KeyDelete\", \"SecretDelete\", \"SecretPurge\", \"KeyPurge\", \"SecretBackup\", - \"KeyBackup\"]);\nAzureDiagnostics\n| where TimeGenerated > ago(timeframe)\n| - extend ResultType = columnifexists(\"ResultType\", \"NoResultType\")\n| extend - requestUri_s = columnifexists(\"requestUri_s\", \"None\"), identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - = columnifexists(\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\", - \"None\")\n| extend id_s = columnifexists(\"id_s\", \"None\"), CallerIPAddress - = columnifexists(\"CallerIPAddress\", \"None\"), clientInfo_s = columnifexists(\"clientInfo_s\", - \"None\")\n| where ResultType !~ \"None\" and isnotempty(ResultType)\n| where - identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - !~ \"None\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\n| - where id_s !~ \"None\" and isnotempty(id_s)\n| where CallerIPAddress !~ \"None\" - and isnotempty(CallerIPAddress)\n| where clientInfo_s !~ \"None\" and isnotempty(clientInfo_s)\n| - where requestUri_s !~ \"None\" and isnotempty(requestUri_s)\n| where ResourceType - =~ \"VAULTS\" and ResultType =~ \"Success\" \n| where OperationName in~ (SensitiveOperationList) \n| - summarize EventCount=count(), StartTimeUtc=min(TimeGenerated), EndTimeUtc=max(TimeGenerated), - TimeTriggered=makelist(TimeGenerated),OperationNameList=make_set(OperationName), - RequestURLList=make_set(requestUri_s), CallerIPList = make_set(CallerIPAddress), CallerIPMax= - arg_max(CallerIPAddress,*) by ResourceType, ResultType, Resource, id_s, identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, - clientInfo_s\n| extend timestamp = StartTimeUtc, IPCustomEntity = CallerIPMax, - AccountCustomEntity = identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Sensitive - Azure Key Vault operations","description":"Identifies when sensitive Azure - Key Vault operations are used. This includes: VaultDelete, KeyDelete, SecretDelete, - SecretPurge, KeyPurge, SecretBackup, KeyBackup. \nAny Backup operations should - match with expected scheduled backup activity.","tactics":["Impact"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-07-01T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/04384937-e927-4595-8f3c-89ff58ed231f","name":"04384937-e927-4595-8f3c-89ff58ed231f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - detectionTime = 30d;\nlet IPs = dynamic ([\"199.249.230.\",\"185.220.101.\",\"23.129.64.\",\"109.70.100.\",\"185.220.102.\"]);\nOfficeActivity\n| - where TimeGenerated > ago(detectionTime)\n| where RecordType in (\"AzureActiveDirectoryAccountLogon\", - \"AzureActiveDirectoryStsLogon\") \n| where Operation != ''UserLoggedIn''\n| - extend UserAgent = iff(parse_json(ExtendedProperties)[0].Name =~ \"UserAgent\", - extractjson(\"$[0].Value\", ExtendedProperties, typeof(string)),\"\")\n| mv-expand - parse_json(ExtendedProperties)\n| where ExtendedProperties.Name =~ \"RequestType\"\n| - extend RequestType = ExtendedProperties.Value\n| where ClientIP has_any (IPs)\n| - summarize authAttempts=dcount(TimeGenerated), firstAttempt=min(TimeGenerated), - lastAttempt=max(TimeGenerated), uniqueIPs=dcount(ClientIP), uniqueAccounts=dcount(UserId), - attemptedAccounts=make_set(UserId) by UserAgent\n| where authAttempts > 2500\n| - extend timestamp = firstAttempt\n| sort by uniqueAccounts","queryFrequency":"P7D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Possible - STRONTIUM attempted credential harvesting - Sept 2020","description":"Surfaces - potential STRONTIUM group Office365 credential harvesting attempts within - OfficeActivity Logon events.\nReferences: https://www.microsoft.com/security/blog/2020/09/10/strontium-detecting-new-patters-credential-harvesting/.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-09T00:00:00Z","createdDateUTC":"2020-09-10T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/427e4c9e-8cf4-4094-a684-a2d060dbca38","name":"427e4c9e-8cf4-4094-a684-a2d060dbca38","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 50;\nSophosXGFirewall\n| where TimeGenerated - >= timeframe\n| where Log_Type =~ \"Firewall\"\n| where not(ipv4_is_match(\"10.0.0.0\",Src_IP,8) - or ipv4_is_match(\"172.16.0.0\",Src_IP,12) or ipv4_is_match(\"192.168.0.0\",Src_IP,16))\n| - summarize dcount(Dst_Port) by Src_IP, bin(TimeGenerated, 5m)\n| where dcount_Dst_Port - > threshold\n| extend timestamp = TimeGenerated, IPCustomEntity = Src_IP","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Port - Scan Detected","description":"This alert creates an incident when a source - IP addresses attempt to communicate with a large amount of distinct ports - within a short period.","tactics":["Discovery"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SophosXGFirewall","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/00cb180c-08a8-4e55-a276-63fb1442d5b5","name":"00cb180c-08a8-4e55-a276-63fb1442d5b5","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - cmdTokens0 = dynamic([''vbscript'',''jscript'']);\nlet cmdTokens1 = dynamic([''mshtml'',''RunHTMLApplication'']);\nlet - cmdTokens2 = dynamic([''Execute'',''CreateObject'',''RegRead'',''window.close'']);\nSecurityEvent\n| - where TimeGenerated >= ago(14d)\n| where EventID == 4688\n| where CommandLine - has @''\\Microsoft\\Windows\\CurrentVersion''\n| where not(CommandLine has_any - (@''\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'', @''\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce''))\n// - If you are receiving false positives, then it may help to make the query more - strict by uncommenting one or both of the lines below to refine the matches\n//| - where CommandLine has_any (cmdTokens0)\n//| where CommandLine has_all (cmdTokens1)\n| - where CommandLine has_all (cmdTokens2)\n| project TimeGenerated, Computer, - Account, Process, NewProcessName, CommandLine, ParentProcessName, _ResourceId\n| - extend timestamp = TimeGenerated, HostCustomEntity = Computer, AccountCustomEntity - = Account","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"NOBELIUM - - Script payload stored in Registry","description":"This query idenifies when - a process execution commandline indicates that a registry value is written - to allow for later execution a malicious script\n References: https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/","tactics":["Execution"],"lastUpdatedDateUTC":"2021-03-04T00:00:00Z","createdDateUTC":"2021-03-03T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3d023f64-8225-41a2-9570-2bd7c2c4535e","name":"3d023f64-8225-41a2-9570-2bd7c2c4535e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet spanoftime = 10m;\nlet threshold = 0;\nSecurityEvent - \n| where TimeGenerated > ago(2*timeframe) \n// A user account was enabled\n| - where EventID == 4722\n| where AccountType =~ \"User\"\n| project EnableTime - = TimeGenerated, EnableEventID = EventID, EnableActivity = Activity, Computer, - UserPrincipalName, \nAccountUsedToEnable = SubjectAccount, SIDofAccountUsedToEnable - = SubjectUserSid, TargetAccount = tolower(TargetAccount), TargetSid\n| join - kind= inner (\n SecurityEvent\n | where TimeGenerated > ago(timeframe) \n // - A user account was disabled \n | where EventID == 4725\n| where AccountType - == \"User\"\n| project DisableTime = TimeGenerated, DisableEventID = EventID, - DisableActivity = Activity, Computer, UserPrincipalName, \nAccountUsedToDisable - = SubjectAccount, SIDofAccountUsedToDisable = SubjectUserSid, TargetAccount - = tolower(TargetAccount), TargetSid\n) on Computer, TargetAccount\n| where - DisableTime - EnableTime < spanoftime\n| extend TimeDelta = DisableTime - - EnableTime\n| where tolong(TimeDelta) >= threshold\n| project TimeDelta, EnableTime, - EnableEventID, EnableActivity, Computer, TargetAccount, TargetSid, UserPrincipalName, - AccountUsedToEnable, SIDofAccountUsedToEnable, \nDisableTime, DisableEventID, - DisableActivity, AccountUsedToDisable, SIDofAccountUsedToDisable\n| extend - timestamp = EnableTime, AccountCustomEntity = AccountUsedToEnable, HostCustomEntity - = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"},{"identifier":"Sid","columnName":"SIDofAccountUsedToEnable"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"User - account enabled and disabled within 10 mins","description":"Identifies when - a user account is enabled and then disabled within 10 minutes. This can be - an indication of compromise and\nan adversary attempting to hide in the noise.","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-02-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/707494a5-8e44-486b-90f8-155d1797a8eb","name":"707494a5-8e44-486b-90f8-155d1797a8eb","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - auditLookbackStart = 2d;\nlet auditLookbackEnd = 1d;\nAuditLogs\n| where TimeGenerated - >= ago(auditLookbackStart)\n| where OperationName =~ \"Consent to application\" - \n| where Result =~ \"success\"\n| mv-expand target = TargetResources\n| extend - targetResourceName = tostring(target.displayName)\n| extend targetResourceID - = tostring(target.id)\n| extend targetResourceType = tostring(target.type)\n| - extend targetModifiedProp = TargetResources[0].modifiedProperties\n| extend - isAdminConsent = targetModifiedProp[0].newValue\n| extend Consent_ServicePrincipalNames - = targetModifiedProp[5].newValue\n| extend Consent_Permissions = targetModifiedProp[4].newValue\n| - extend Consent_InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), - tostring(InitiatedBy.app.displayName))\n| extend Consent_InitiatingIpAddress - = iff(isnotempty(InitiatedBy.user.ipAddress), tostring(InitiatedBy.user.ipAddress), - tostring(InitiatedBy.app.ipAddress))\n| join ( \nAuditLogs\n| where TimeGenerated >= - ago(auditLookbackEnd)\n| where OperationName =~ \"Add service principal credentials\"\n| - where Result =~ \"success\"\n| mv-expand target = TargetResources\n| extend - targetResourceName = tostring(target.displayName)\n| extend targetResourceID - = tostring(target.id)\n| extend targetModifiedProp = TargetResources[0].modifiedProperties\n| - extend Credential_KeyDescription = targetModifiedProp[0].newValue\n| extend - UpdatedProperties = targetModifiedProp[1].newValue\n| extend Credential_ServicePrincipalNames - = targetModifiedProp[2].newValue\n| extend Credential_InitiatingUserOrApp - = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), - tostring(InitiatedBy.app.displayName))\n| extend Credential_InitiatingIpAddress - = iff(isnotempty(InitiatedBy.user.ipAddress), tostring(InitiatedBy.user.ipAddress), - tostring(InitiatedBy.app.ipAddress))\n) on targetResourceName, targetResourceID\n| - extend TimeConsent = TimeGenerated, TimeCred = TimeGenerated1\n| where TimeConsent - > TimeCred \n| project TimeConsent, TimeCred, Consent_InitiatingUserOrApp, - Credential_InitiatingUserOrApp, targetResourceName, targetResourceType, isAdminConsent, - Consent_ServicePrincipalNames, Credential_ServicePrincipalNames, Consent_Permissions, - Credential_KeyDescription, Consent_InitiatingIpAddress, Credential_InitiatingIpAddress\n| - extend timestamp = TimeConsent, AccountCustomEntity = Consent_InitiatingUserOrApp, - IPCustomEntity = Consent_InitiatingIpAddress","queryFrequency":"P1D","queryPeriod":"P2D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Credential - added after admin consented to Application","description":"This query will - identify instances where Service Principal credentials were added to an application - by one user after the application was granted admin consent rights by another - user.\n If a threat actor obtains access to an account with sufficient privileges - and adds the alternate authentication material triggering this event, the - threat actor can now authenticate as the Application or Service Principal - using this credential.\n Additional information on OAuth Credential Grants - can be found in RFC 6749 Section 4.4 or https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow.\n - For further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2021-02-17T00:00:00Z","createdDateUTC":"2021-02-12T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/610d3850-c26f-4f20-8d86-f10fdf2425f5","name":"610d3850-c26f-4f20-8d86-f10fdf2425f5","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet EventNameList = dynamic([\"UpdateTrail\",\"DeleteTrail\",\"StopLogging\",\"DeleteFlowLogs\",\"DeleteEventBus\"]);\nAWSCloudTrail\n| - where TimeGenerated > ago(timeframe)\n| where EventName in~ (EventNameList)\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by EventName, EventTypeName, UserIdentityAccountId, UserIdentityPrincipalid, - UserAgent, \nUserIdentityUserName, SessionMfaAuthenticated, SourceIpAddress, - AWSRegion, EventSource\n| extend timestamp = StartTimeUtc, AccountCustomEntity - = UserIdentityUserName, IPCustomEntity = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Changes - made to AWS CloudTrail logs","description":"Attackers often try to hide their - steps by deleting or stopping the collection of logs that could show their - activity. \nThis alert identifies any manipulation of AWS CloudTrail, Cloudwatch/EventBridge - or VPC Flow logs.\nMore Information: AWS CloudTrail API: https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_Operations.html\nAWS - Cloudwatch/Eventbridge API: https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Operations.html\nAWS - DelteteFlowLogs API : https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteFlowLogs.html - ","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2cfc3c6e-f424-4b88-9cc9-c89f482d016a","name":"2cfc3c6e-f424-4b88-9cc9-c89f482d016a","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - auditLookback = 1h;\nAuditLogs\n| where TimeGenerated > ago(auditLookback)\n| - where OperationName has_any (\"Add service principal\", \"Certificates and - secrets management\") // captures \"Add service principal\", \"Add service - principal credentials\", and \"Update application - Certificates and secrets - management\" events\n| where Result =~ \"success\"\n| mv-expand target = TargetResources\n| - where tostring(InitiatedBy.user.userPrincipalName) has \"@\" or tostring(InitiatedBy.app.displayName) - has \"@\"\n| extend targetDisplayName = tostring(TargetResources[0].displayName)\n| - extend targetId = tostring(TargetResources[0].id)\n| extend targetType = tostring(TargetResources[0].type)\n| - extend keyEvents = TargetResources[0].modifiedProperties\n| mv-expand keyEvents\n| - where keyEvents.displayName =~ \"KeyDescription\"\n| extend new_value_set - = parse_json(tostring(keyEvents.newValue))\n| extend old_value_set = parse_json(tostring(keyEvents.oldValue))\n| - where old_value_set == \"[]\"\n| parse new_value_set with * \"KeyIdentifier=\" - keyIdentifier:string \",KeyType=\" keyType:string \",KeyUsage=\" keyUsage:string - \",DisplayName=\" keyDisplayName:string \"]\" *\n| where keyUsage == \"Verify\" or - keyUsage == \"\"\n| extend UserAgent = iff(AdditionalDetails[0].key == \"User-Agent\",tostring(AdditionalDetails[0].value),\"\")\n| - extend InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), - tostring(InitiatedBy.app.displayName))\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), - tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\n// - The below line is currently commented out but Azure Sentinel users can modify - this query to show only Application or only Service Principal events in their - environment\n//| where targetType =~ \"Application\" // or targetType =~ \"ServicePrincipal\"\n| - project-away new_value_set, old_value_set\n| project-reorder TimeGenerated, - OperationName, InitiatingUserOrApp, InitiatingIpAddress, UserAgent, targetDisplayName, - targetId, targetType, keyDisplayName, keyType, keyUsage, keyIdentifier, CorrelationId, - TenantId\n| extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingUserOrApp, - IPCustomEntity = InitiatingIpAddress","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"First - access credential added to Application or Service Principal where no credential - was present","description":"This will alert when an admin or app owner account - adds a new credential to an Application or Service Principal where there was - no previous verify KeyCredential associated.\nIf a threat actor obtains access - to an account with sufficient privileges and adds the alternate authentication - material triggering this event, the threat actor can now authenticate as the - Application or Service Principal using this credential.\nAdditional information - on OAuth Credential Grants can be found in RFC 6749 Section 4.4 or https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow\nFor - further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-11-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d722831e-88f5-4e25-b106-4ef6e29f8c13","name":"d722831e-88f5-4e25-b106-4ef6e29f8c13","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"// - a threshold can be enabled, see commented line below for PrevSeenCount\nlet - threshold = 2;\nlet uploadOp = ''FileUploaded'';\n// Extensions that are interesting. - Add/Remove to this list as you see fit\nlet execExt = dynamic([''exe'', ''inf'', - ''gzip'', ''cmd'', ''bat'']);\nlet starttime = 8d;\nlet endtime = 1d;\nOfficeActivity - | where TimeGenerated >= ago(endtime)\n// Limited to File Uploads due to potential - noise, comment out the Operation statement below to include any operation - type\n// Additional, but potentially noisy operation types that include Uploads - and Downloads can be included by adding the following - Operation contains - \"upload\" or Operation contains \"download\"\n| where Operation =~ uploadOp\n| - where SourceFileExtension has_any (execExt)\n| project TimeGenerated, OfficeId, - OfficeWorkload, RecordType, Operation, UserType, UserKey, UserId, ClientIP, - UserAgent, Site_Url, SourceRelativeUrl, SourceFileName\n| join kind= leftanti - (\nOfficeActivity | where TimeGenerated between (ago(starttime) .. ago(endtime))\n| - where Operation =~ uploadOp\n| where SourceFileExtension has_any (execExt)\n| - summarize SourceRelativeUrl = make_set(SourceRelativeUrl), UserId = make_set(UserId) - , PrevSeenCount = count() by SourceFileName\n// To exclude previous matches - when only above a specific count, change threshold above and uncomment the - line below\n//| where PrevSeenCount > threshold\n| mvexpand SourceRelativeUrl, - UserId\n| extend SourceRelativeUrl = tostring(SourceRelativeUrl), UserId = - tostring(UserId)\n) on SourceFileName, SourceRelativeUrl, UserId \n| extend - SiteUrlUserFolder = tolower(split(Site_Url, ''/'')[-2])\n| extend UserIdUserFolderFormat - = tolower(replace(''@|\\\\.'', ''_'',UserId))\n// identify when UserId is - not a match to the specific site url personal folder reference\n| extend UserIdDiffThanUserFolder - = iff(Site_Url has ''/personal/'' and SiteUrlUserFolder != UserIdUserFolderFormat, - true , false ) \n| summarize TimeGenerated = make_list(TimeGenerated), StartTime - = min(TimeGenerated), EndTime = max(TimeGenerated), \nUserAgents = make_list(UserAgent), - OfficeIds = make_list(OfficeId), SourceRelativeUrls = make_list(SourceRelativeUrl), - FileNames = make_list(SourceFileName)\nby OfficeWorkload, RecordType, Operation, - UserType, UserKey, UserId, ClientIP, Site_Url, SiteUrlUserFolder, UserIdUserFolderFormat, - UserIdDiffThanUserFolder\n| extend timestamp = StartTime, AccountCustomEntity - = UserId, IPCustomEntity = ClientIP, URLCustomEntity = Site_Url","queryFrequency":"P1D","queryPeriod":"P8D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"New - executable via Office FileUploaded Operation","description":"Identifies when - executable file types are uploaded to Office services such as SharePoint and - OneDrive.\nList currently includes ''exe'', ''inf'', ''gzip'', ''cmd'', ''bat'' - file extensions.\nAdditionally, identifies when a given user is uploading - these files to another users workspace.\nThis may be indication of a staging - location for malware or other malicious activity.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-22T00:00:00Z","createdDateUTC":"2020-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/dcdf9bfc-c239-4764-a9f9-3612e6dff49c","name":"dcdf9bfc-c239-4764-a9f9-3612e6dff49c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"// - Adjust this to use a longer timeframe to identify ADFS servers\nlet lookback - = 6d;\n// Adjust this to adjust the key export detection timeframe\nlet timeframe - = 1d;\n// Start be identifying ADFS servers to reduce FP chance\nlet ADFS_Servers - = (\nEvent\n| where TimeGenerated > ago(timeframe+lookback)\n| where Source - == \"Microsoft-Windows-Sysmon\"\n| extend EventData = parse_xml(EventData).DataItem.EventData.Data\n| - mv-expand bagexpansion=array EventData\n| evaluate bag_unpack(EventData)\n| - extend Key=tostring([''@Name'']), Value=[''#text'']\n| evaluate pivot(Key, - any(Value), TimeGenerated, Source, EventLog, Computer, EventLevel, EventLevelName, - EventID, UserName, RenderedDescription, MG, ManagementGroupName, Type, _ResourceId)\n| - extend process = split(Image, ''\\\\'', -1)[-1]\n| where process =~ \"Microsoft.IdentityServer.ServiceHost.exe\"\n| - summarize by Computer);\n// Look for ADFS servers where Named Pipes event - are present\nEvent\n| where TimeGenerated > ago(timeframe)\n| where Source - == \"Microsoft-Windows-Sysmon\"\n| where Computer in~ (ADFS_Servers)\n| extend - RenderedDescription = tostring(split(RenderedDescription, \":\")[0])\n| extend - EventData = parse_xml(EventData).DataItem.EventData.Data\n| mv-expand bagexpansion=array - EventData\n| evaluate bag_unpack(EventData)\n| extend Key=tostring([''@Name'']), - Value=[''#text'']\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, - EventLog, Computer, EventLevel, EventLevelName, EventID, UserName, RenderedDescription, - MG, ManagementGroupName, Type, _ResourceId)\n| extend RuleName = column_ifexists(\"RuleName\", - \"\"), TechniqueId = column_ifexists(\"TechniqueId\", \"\"), TechniqueName - = column_ifexists(\"TechniqueName\", \"\")\n| parse RuleName with * ''technique_id='' - TechniqueId '','' * ''technique_name='' TechniqueName\n| where EventID in - (17,18)\n// Look for Pipe related to querying the WID\n| where PipeName == - \"\\\\MICROSOFT##WID\\\\tsql\\\\query\"\n| extend process = split(Image, ''\\\\'', - -1)[-1]\n// Exclude expected processes\n| where process !in (\"Microsoft.IdentityServer.ServiceHost.exe\", - \"Microsoft.Identity.Health.Adfs.PshSurrogate.exe\", \"AzureADConnect.exe\", - \"Microsoft.Tri.Sensor.exe\", \"wsmprovhost.exe\",\"mmc.exe\", \"sqlservr.exe\")\n| - extend Operation = RenderedDescription\n| project-reorder TimeGenerated, EventType, - Operation, process, Image, Computer, UserName\n| extend HostCustomEntity = - Computer, AccountCustomEntity = UserName","queryFrequency":"P1D","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"ADFS - Key Export (Sysmon)","description":"This detection uses Sysmon telemetry to - detect potential ADFS certificate material export. \nIn order to use this - query you need to be collecting Sysmon EventIdD 17 and 18.\nIf you do not - have Sysmon data in your workspace this query will raise an error stating:\nFailed - to resolve scalar expression named \"[@Name]","tactics":["Collection"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-12-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/30fa312c-31eb-43d8-b0cc-bcbdfb360822","name":"30fa312c-31eb-43d8-b0cc-bcbdfb360822","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nlet emailregex = @''^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$'';\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n//Filtering the table for Email related IOCs\n| where - isnotempty(EmailRecipient)\n| join (\n SigninLogs | where TimeGenerated - >= ago(dt_lookBack) and isnotempty(UserPrincipalName)\n //Normalizing the - column to lower case for exact match with EmailRecipient column\n | extend - UserPrincipalName = tolower(UserPrincipalName)\n | where UserPrincipalName - matches regex emailregex\n | extend StatusCode = tostring(Status.errorCode), - StatusDetails = tostring(Status.additionalDetails)\n | extend Region = - tostring(LocationDetails[\"countryOrRegion\"]), State = tostring(LocationDetails[\"state\"]), - City = tostring(LocationDetails[\"city\"])\n // renaming timestamp column - so it is clear the log this came from SigninLogs table\n | extend SigninLogs_TimeGenerated - = TimeGenerated\n)\non $left.EmailRecipient == $right.UserPrincipalName\n| - summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| - project LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, - ThreatType, Url, ExpirationDateTime, ConfidenceScore, SigninLogs_TimeGenerated,\nEmailSenderName, - EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, - IPAddress, UserPrincipalName, AppDisplayName,\nStatusCode, StatusDetails, - NetworkIP, NetworkDestinationIP, NetworkSourceIP\n| extend timestamp = SigninLogs_TimeGenerated, - AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress, URLCustomEntity - = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Email entity to SigninLogs","description":"Identifies a match in SigninLogs - table from any Email IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/75bf9902-0789-47c1-a5d8-f57046aa72df","name":"75bf9902-0789-47c1-a5d8-f57046aa72df","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet procList = dynamic([\"cmd.exe\",\"ftp.exe\",\"schtasks.exe\",\"powershell.exe\",\"rundll32.exe\",\"regsvr32.exe\",\"msiexec.exe\"]);\nlet - ProcessCreationEvents=() {\nlet processEvents=SecurityEvent\n| where EventID==4688\n| - where isnotempty(CommandLine)\n| project TimeGenerated, Computer, Account - = SubjectUserName, AccountDomain = SubjectDomainName, NewProcessName,\nFileName - = Process, CommandLine, ParentProcessName;\nprocessEvents};\nProcessCreationEvents - \n| where TimeGenerated >= ago(timeframe)\n| where FileName in~ (procList)\n| - where CommandLine contains \":\\\\recycler\"\n| project StartTimeUtc = TimeGenerated, - Computer, Account, NewProcessName, FileName, CommandLine, ParentProcessName\n| - extend timestamp = StartTimeUtc, AccountCustomEntity = Account, HostCustomEntity - = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Malware - in the recycle bin","description":"Identifies malware that has been hidden - in the recycle bin.\nReferences: https://azure.microsoft.com/blog/how-azure-security-center-helps-reveal-a-cyberattack/.","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2018-09-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/23005e87-2d3a-482b-b03d-edbebd1ae151","name":"23005e87-2d3a-482b-b03d-edbebd1ae151","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - exchange_servers = (\nW3CIISLog\n| where TimeGenerated > ago(14d)\n| where - sSiteName =~ \"Exchange Back End\"\n| summarize by Computer);\nW3CIISLog\n| - where TimeGenerated > ago(1d)\n| where Computer in (exchange_servers)\n| where - csUriQuery startswith \"t=\"\n| project-reorder TimeGenerated, Computer, csUriStem, - csUriQuery, csUserName, csUserAgent, cIP\n| extend timestamp = TimeGenerated, - AccountCustomEntity = csUserName, HostCustomEntity = Computer, IPCustomEntity - = cIP","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"HAFNIUM - Suspicious Exchange Request","description":"This query looks for suspicious - request patterns to Exchange servers that fit a pattern observed by HAFNIUM - actors.\nThe same query can be run on HTTPProxy logs from on-premise hosted - Exchange servers.\nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-03-02T00:00:00Z","createdDateUTC":"2021-03-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3ff0fffb-d963-40c0-b235-3404f915add7","name":"3ff0fffb-d963-40c0-b235-3404f915add7","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 14d;\nGitHubAudit\n| where TimeGenerated > ago(timeframe)\n| where - Action == \"org.disable_two_factor_requirement\"\n| project TimeGenerated, - Action, Actor, Country, IPaddress, Repository\n| extend AccountCustomEntity - = Actor, IPCustomEntity = IPaddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"GitHub - Two Factor Auth Disable","description":"Two-factor authentication is a process - where a user is prompted during the sign-in process for an additional form - of identification, such as to enter a code on their cellphone or to provide - a fingerprint scan. Two factor authentication reduces the risk of account - takeover. Attacker will want to disable such security tools in order to go - undetected. ","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-02T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0558155e-4556-447e-9a22-828f2a7de06b","name":"0558155e-4556-447e-9a22-828f2a7de06b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nProofPointTAPMessagesDelivered_CL\n| where TimeGenerated - >= timeframe\n| mv-expand todynamic(threatsInfoMap_s)\n| mv-expand todynamic(messageParts_s)\n| - extend threatType = tostring(threatsInfoMap_s.threatType), classification - = tostring(threatsInfoMap_s.classification)\n| extend filename = tostring(messageParts_s.filename)\n| - where threatType =~ \"attachment\" and classification =~ \"malware\"\n| summarize - filenames = make_set(filename), StartTime = min(TimeGenerated), EndTime = - max(TimeGenerated), count() by TimeGenerated, Sender = sender_s, SenderIPAddress - = senderIP_s, Recipient = recipient_s, threatType, classification, Subject - = subject_s\n| extend timestamp = StartTime, AccountCustomEntity = Recipient, - IPCustomEntity = SenderIPAddress","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Malware - attachment delivered","description":"This query identifies a message containing - a malware attachment that was delivered.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ProofpointTAP","dataTypes":["ProofPointTAPMessagesDelivered_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/473d57e6-f787-435c-a16b-b38b51fa9a4b","name":"473d57e6-f787-435c-a16b-b38b51fa9a4b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - servicelist = dynamic([''Services\\\\HealthService'', ''Services\\\\Sense'', - ''Services\\\\WinDefend'', ''Services\\\\MsSecFlt'', ''Services\\\\DiagTrack'', - ''Services\\\\SgrmBroker'', ''Services\\\\SgrmAgent'', ''Services\\\\AATPSensorUpdater'' - , ''Services\\\\AATPSensor'', ''Services\\\\mpssvc'']);\nlet filename = dynamic([\"subinacl.exe\",''SetACL.exe'']);\nlet - parameters = dynamic ([''/deny=SYSTEM'', ''/deny=S-1-5-18'', ''/grant=SYSTEM=r'', - ''/grant=S-1-5-18=r'', ''n:SYSTEM;p:READ'', ''n1:SYSTEM;ta:remtrst;w:dacl'']);\nlet - FullAccess = dynamic([''A;CI;KA;;;SY'', ''A;ID;KA;;;SY'', ''A;CIID;KA;;;SY'']);\nlet - ReadAccess = dynamic([''A;CI;KR;;;SY'', ''A;ID;KR;;;SY'', ''A;CIID;KR;;;SY'']);\nlet - DenyAccess = dynamic([''D;CI;KR;;;SY'', ''D;ID;KR;;;SY'', ''D;CIID;KR;;;SY'']);\nlet - timeframe = 1d;\n(union isfuzzy=true\n(\nSecurityEvent\n| where TimeGenerated - >= ago(timeframe)\n| where EventID == 4670\n| where ObjectType == ''Key''\n| - where ObjectName has_any (servicelist)\n| parse EventData with * ''OldSd\">'' - OldSd \"<\" *\n| parse EventData with * ''NewSd\">'' NewSd \"<\" *\n| extend - Reason = case( (OldSd has '';;;SY'' and NewSd !has '';;;SY''), ''System Account - is removed'', (OldSd has_any (FullAccess) and NewSd has_any (ReadAccess)) - , ''System permission has been changed to read from full access'', (OldSd - has_any (FullAccess) and NewSd has_any (DenyAccess)), ''System account has - been given denied permission'', ''None'')\n| project TimeGenerated, Computer, - Account, ProcessName, ProcessId, ObjectName, EventData, Activity, HandleId, - SubjectLogonId, OldSd, NewSd , Reason\n),\n(\nSecurityEvent\n| where TimeGenerated - >= ago(timeframe)\n| where EventID == 4688\n| extend ProcessName = tostring(split(NewProcessName, - ''\\\\'')[-1])\n| where ProcessName in~ (filename) \n| where CommandLine has_any - (servicelist) and CommandLine has_any (parameters)\n| project TimeGenerated, - Computer, Account, AccountDomain, ProcessName, ProcessNameFullPath = NewProcessName, - EventID, Activity, CommandLine, EventSourceName, Type\n),\n(\nDeviceProcessEvents\n| - where TimeGenerated >= ago(timeframe)\n| where InitiatingProcessFileName in~ - (filename) \n| where InitiatingProcessCommandLine has_any(servicelist) and - InitiatingProcessCommandLine has_any (parameters)\n| extend Account = iff(isnotempty(InitiatingProcessAccountUpn), - InitiatingProcessAccountUpn, InitiatingProcessAccountName), Computer = DeviceName\n| - project TimeGenerated, Computer, Account, AccountDomain, ProcessName = InitiatingProcessFileName, - ProcessNameFullPath = FolderPath, Activity = ActionType, CommandLine = InitiatingProcessCommandLine, - Type, InitiatingProcessParentFileName\n)\n)\n| extend timestamp = TimeGenerated, - AccountCustomEntity = Account, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Security - Service Registry ACL Modification","description":"Identifies attempts to modify - registry ACL to evade security solutions. In the Solorigate attack, the attackers - were found modifying registry permissions so services.exe cannot access the - relevant registry keys to start the service.\n The detection leverages Security - Event as well as MDE data to identify when specific security services registry - permissions are modified. \n Only some portions of this detection are related - to Solorigate, it also includes coverage for some common tools that perform - this activity. \n Reference on guidance for enabling registry auditing:\n - - https://docs.microsoft.com/windows/security/threat-protection/auditing/advanced-security-auditing-faq\n - - https://docs.microsoft.com/windows/security/threat-protection/auditing/appendix-a-security-monitoring-recommendations-for-many-audit-events\n - - https://docs.microsoft.com/windows/security/threat-protection/auditing/audit-registry\n - - https://docs.microsoft.com/windows/security/threat-protection/auditing/event-4670\n - - For the event 4670 to be created the audit policy for the registry must have - auditing enabled for Write DAC and/or Write Owner\n - https://github.com/OTRF/Set-AuditRule - \n - https://docs.microsoft.com/dotnet/api/system.security.accesscontrol.registryrights?view=dotnet-plat-ext-5.0","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2021-01-20T00:00:00Z","createdDateUTC":"2021-01-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceProcessEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5e45930c-09b1-4430-b2d1-cc75ada0dc0f","name":"5e45930c-09b1-4430-b2d1-cc75ada0dc0f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n W3CIISLog\n | where TimeGenerated >= ago(dt_lookBack)\n | - where isnotempty(cIP)\n // renaming time column so it is clear the log - this came from\n | extend W3CIISLog_TimeGenerated = TimeGenerated\n)\non - $left.TI_ipEntity == $right.cIP\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\nW3CIISLog_TimeGenerated, - TI_ipEntity, Computer, sSiteName, cIP, sIP, sPort, csMethod, csUserName, scStatus, - scSubStatus, scWin32Status,\nNetworkIP, NetworkDestinationIP, NetworkSourceIP, - EmailSourceIpAddress\n| extend timestamp = W3CIISLog_TimeGenerated, IPCustomEntity - = cIP, HostCustomEntity = Computer, AccountCustomEntity = csUserName, URLCustomEntity - = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to W3CIISLog","description":"Identifies a match in W3CIISLog - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a7564d76-ec6b-4519-a66b-fcc80c42332b","name":"a7564d76-ec6b-4519-a66b-fcc80c42332b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1h;\nlet WellKnownLocalSID = \"S-1-5-32-5[0-9][0-9]$\";\nlet WellKnownGroupSID - = \"S-1-5-21-[0-9]*-[0-9]*-[0-9]*-5[0-9][0-9]$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1102$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1103$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-498$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1000$\";\nlet - GroupAddition = SecurityEvent \n| where TimeGenerated > ago(timeframe)\n// - 4728 - A member was added to a security-enabled global group\n// 4732 - A - member was added to a security-enabled local group\n// 4756 - A member was - added to a security-enabled universal group \n| where EventID in (\"4728\", - \"4732\", \"4756\") \n| where AccountType =~ \"User\" and MemberName == \"-\"\n// - Exclude Remote Desktop Users group: S-1-5-32-555\n| where TargetSid !in (\"S-1-5-32-555\")\n| - where TargetSid matches regex WellKnownLocalSID or TargetSid matches regex - WellKnownGroupSID\n| project GroupAddTime = TimeGenerated, GroupAddEventID - = EventID, GroupAddActivity = Activity, GroupAddComputer = Computer, GroupAddTargetAccount - = TargetAccount, \nGroupAddTargetSid = TargetSid, GroupAddSubjectAccount = - SubjectAccount, GroupAddSubjectUserSid = SubjectUserSid, GroupSid = MemberSid;\nlet - GroupCreated = SecurityEvent\n| where TimeGenerated > ago(timeframe)\n// 4727 - - A security-enabled global group was created\n// 4731 - A security-enabled - local group was created\n// 4754 - A security-enabled universal group was - created\n| where EventID in (\"4727\", \"4731\", \"4754\")\n| where AccountType - =~ \"User\"\n| project GroupCreateTime = TimeGenerated, GroupCreateEventID - = EventID, GroupCreateActivity = Activity, GroupCreateComputer = Computer, - GroupCreateTargetAccount = TargetAccount, \nGroupCreateSubjectAccount = SubjectAccount, - GroupCreateSubjectUserSid = SubjectUserSid, GroupSid = TargetSid;\nGroupCreated\n| - join (\nGroupAddition\n) on GroupSid \n| extend timestamp = GroupCreateTime, - AccountCustomEntity = GroupCreateSubjectAccount, HostCustomEntity = GroupCreateComputer","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"},{"identifier":"Sid","columnName":"GroupCreateSubjectUserSid"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Group - created then added to built in domain local or global group","description":"Identifies - when a recently created Group was added to a privileged built in domain local - group or global group such as the \nEnterprise Admins, Cert Publishers or - DnsAdmins. Be sure to verify this is an expected addition.\nReferences: For - AD SID mappings - https://docs.microsoft.com/windows/security/identity-protection/access-control/active-directory-security-groups.","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5436f471-b03d-41cb-b333-65891f887c43","name":"5436f471-b03d-41cb-b333-65891f887c43","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Informational","query":"GitHubRepo\n| - where Action == \"vulnerabilityAlert\"\n| project TimeGenerated, DismmisedAt, - Reason, vulnerableManifestFilename, Description, Link, PublishedAt, Severity, - Summary","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"GitHub - Security Vulnerability in Repository","description":"This alerts when there - is a new security vulnerability in a GitHub repository.","lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-10T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/cecdbd4c-4902-403c-8d4b-32eb1efe460b","name":"cecdbd4c-4902-403c-8d4b-32eb1efe460b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - domains = dynamic([\"incomeupdate.com\",\"zupertech.com\",\"databasegalore.com\",\"panhardware.com\",\"avsvmcloud.com\",\"digitalcollege.org\",\"freescanonline.com\",\"deftsecurity.com\",\"thedoccloud.com\",\"virtualdataserver.com\",\"lcomputers.com\",\"webcodez.com\",\"globalnetworkissues.com\",\"kubecloud.com\",\"seobundlekit.com\",\"solartrackingsystem.net\",\"virtualwebdata.com\"]);\nlet - timeframe = 6h;\n(union isfuzzy=true\n(CommonSecurityLog \n | where TimeGenerated - >= ago(timeframe) \n | parse Message with * ''('' DNSName '')'' * \n | where - DNSName in~ (domains) or DestinationHostName has_any (domains) or RequestURL - has_any(domains)\n | extend AccountCustomEntity = SourceUserID, HostCustomEntity - = DeviceName, IPCustomEntity = SourceIP\n ),\n(DnsEvents \n | where TimeGenerated - >= ago(timeframe) \n | extend DNSName = Name\n | where isnotempty(DNSName)\n | - where DNSName in~ (domains)\n | extend IPCustomEntity = ClientIP\n ),\n(VMConnection - \n | where TimeGenerated >= ago(timeframe) \n | parse RemoteDnsCanonicalNames - with * ''[\"'' DNSName ''\"]'' *\n | where isnotempty(DNSName)\n | where - DNSName in~ (domains)\n | extend IPCustomEntity = RemoteIp\n ),\n(DeviceNetworkEvents - \n | where TimeGenerated >= ago(timeframe) \n | where isnotempty(RemoteUrl) - \n | where RemoteUrl has_any (domains) \n | extend DNSName = RemoteUrl\n | - extend IPCustomEntity = RemoteIP \n | extend HostCustomEntity = DeviceName - \n ) \n )","queryFrequency":"PT6H","queryPeriod":"PT6H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"DNS","fieldMappings":[{"identifier":"DomainName","columnName":"DNSName"}]}],"displayName":"Solorigate - Network Beacon","description":"Identifies a match across various data feeds - for domains IOCs related to the Solorigate incident.\n References: https://blogs.microsoft.com/on-the-issues/2020/12/13/customers-protect-nation-state-cyberattacks/, - \n https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html?1","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-12-17T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceNetworkEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bb8a3481-dd14-4e76-8dcc-bbec8776d695","name":"bb8a3481-dd14-4e76-8dcc-bbec8776d695","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - DomainNames = dynamic([''onetechcompany.com'', ''reyweb.com'', ''srfnetwork.org'']);\nlet - IPList = dynamic([''185.225.69.69'']);\nlet IPRegex = ''[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}'';\n(union - isfuzzy=true\n(CommonSecurityLog\n| where SourceIP in (IPList) or DestinationIP - in (IPList) or DestinationHostName in~ (DomainNames) or RequestURL has_any - (DomainNames) or Message has_any (IPList)\n| parse Message with * ''('' DNSName - '')'' * \n| extend MessageIP = extract(IPRegex, 0, Message)\n| extend IPMatch - = case(SourceIP in (IPList), \"SourceIP\", DestinationIP in (IPList), \"DestinationIP\", - MessageIP in (IPList), \"Message\", RequestURL in (DomainNames), \"RequestUrl\", - \"NoMatch\") \n| extend timestamp = TimeGenerated, IPCustomEntity = case(IPMatch - == \"SourceIP\", SourceIP, IPMatch == \"DestinationIP\", DestinationIP, IPMatch - == \"Message\", MessageIP, \"NoMatch\"), AccountCustomEntity = SourceUserID\n),\n(DnsEvents\n| - where IPAddresses in (IPList) or Name in~ (DomainNames) \n| extend DestinationIPAddress - = IPAddresses, DNSName = Name, Host = Computer\n| extend timestamp = TimeGenerated, - IPCustomEntity = DestinationIPAddress, HostCustomEntity = Host\n),\n(VMConnection\n| - where SourceIp in (IPList) or DestinationIp in (IPList) or RemoteDnsCanonicalNames - has_any (DomainNames)\n| parse RemoteDnsCanonicalNames with * ''[\"'' DNSName - ''\"]'' *\n| extend IPMatch = case( SourceIp in (IPList), \"SourceIP\", DestinationIp - in (IPList), \"DestinationIP\", \"None\") \n| extend timestamp = TimeGenerated, - IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIp, IPMatch == \"DestinationIP\", - DestinationIp, \"NoMatch\"), HostCustomEntity = Computer\n),\n(OfficeActivity\n| - where ClientIP in (IPList)\n| extend timestamp = TimeGenerated, IPCustomEntity - = ClientIP, AccountCustomEntity = UserId\n),\n(DeviceNetworkEvents\n| where - RemoteUrl has_any (DomainNames) or RemoteIP in (IPList)\n| extend timestamp - = TimeGenerated, DNSName = RemoteUrl, IPCustomEntity = RemoteIP, HostCustomEntity - = DeviceName\n),\n(AzureDiagnostics\n| where ResourceType == \"AZUREFIREWALLS\"\n| - where Category == \"AzureFirewallDnsProxy\"\n| parse msg_s with \"DNS Request: - \" ClientIP \":\" ClientPort \" - \" QueryID \" \" Request_Type \" \" Request_Class - \" \" Request_Name \". \" Request_Protocol \" \" Request_Size \" \" EDNSO_DO - \" \" EDNS0_Buffersize \" \" Responce_Code \" \" Responce_Flags \" \" Responce_Size - \" \" Response_Duration\n| where Request_Name has_any (DomainNames) \n| extend - timestamp = TimeGenerated, DNSName = Request_Name, IPCustomEntity = ClientIP\n),\n(AzureDiagnostics - \n| where ResourceType == \"AZUREFIREWALLS\"\n| where Category == \"AzureFirewallApplicationRule\"\n| - parse msg_s with Protocol ''request from '' SourceHost '':'' SourcePort ''to - '' DestinationHost '':'' DestinationPort ''. Action:'' Action\n| where isnotempty(DestinationHost)\n| - where DestinationHost has_any (DomainNames) \n| extend timestamp = TimeGenerated, - DNSName = DestinationHost, IPCustomEntity = SourceHost\n)\n)","queryFrequency":"PT6H","queryPeriod":"PT6H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"DNS","fieldMappings":[{"identifier":"DomainName","columnName":"DNSName"}]}],"displayName":"NOBELIUM - - Domain and IP IOCs - March 2021","description":"Identifies a match across - various data feeds for domains and IP IOCs related to NOBELIUM.\n References: - https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2021-03-04T00:00:00Z","createdDateUTC":"2021-03-04T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceNetworkEvents"]},{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"AzureFirewall","dataTypes":["AzureDiagnostics"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2d3e33c6-d8e6-4b51-92d6-dbe8bd9efb05","name":"2d3e33c6-d8e6-4b51-92d6-dbe8bd9efb05","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.0.0","techniques":["Unknown"],"customizableObservations":{"multiSelectObservations":[{"supportedValues":["Fraction - of failed signins","Number of failed signins","Failed signins to successful - signins ratio","Number of signins with incorrect passwords","Incorrect passwords - to correct passwords ratio","Fraction of incorrect password signins","Distinct - number of app ids","Distinct number of client apps","Distinct number of ip - addresses","Distinct number of opperating systems","Distinct number of browsers","Distinct - number of cities","Distinct number of states","Distinct number of countries"],"values":["Fraction - of failed signins","Number of failed signins","Failed signins to successful - signins ratio","Number of signins with incorrect passwords","Incorrect passwords - to correct passwords ratio","Fraction of incorrect password signins","Distinct - number of app ids","Distinct number of client apps","Distinct number of ip - addresses","Distinct number of opperating systems","Distinct number of browsers","Distinct - number of cities","Distinct number of states","Distinct number of countries"],"supportedValuesKql":null,"valuesKql":null,"name":"Top - reason for high anomaly score","description":"Include only anomalies where - the top reason is one of these values.","sequenceNumber":0,"rerun":"RerunAlways"}],"singleSelectObservations":null,"prioritizeExcludeObservations":null,"thresholdObservations":[{"minimum":"0.0","maximum":"1.0","value":"0.5","name":"Score","description":"Generate - an anomaly when the anomaly score is greater than or equal to the chosen value.","sequenceNumber":0,"rerun":"RerunAlways"}]},"frequency":"P1D","displayName":"(Preview) - Anomalous Azure AD sign-in sessions","description":"The machine learning model - groups the Azure AD sign-in logs on a per-user basis.\nThe model is trained - on the previous 6 days of user sign-in behavior.\nIt indicates anomalous user - sign-in sessions in the last day.\n\nAn autoencoder model is used.\nIts aim - is to compress the user sign-in sessions into a bottleneck encoding.\nIt then - attempts to reconstruct the input sessions as best it can from the bottleneck - encoding.\nThe sessions with high reconstruction errors are assumed to be - anomalous.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-02T00:00:00Z","createdDateUTC":"2020-11-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4a3f5ed7-8da5-4ce2-af6f-c9ada45060f2","name":"4a3f5ed7-8da5-4ce2-af6f-c9ada45060f2","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nlet emailregex = @''^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$'';\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n//Filtering the table for Email related IOCs\n| where - isnotempty(EmailRecipient)\n| join (\n OfficeActivity | where TimeGenerated - >= ago(dt_lookBack) and isnotempty(UserId)\n | where UserId matches regex - emailregex\n | extend OfficeActivity_TimeGenerated = TimeGenerated\n)\non - $left.EmailRecipient == $right.UserId\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, OfficeActivity_TimeGenerated,\nEmailSenderName, - EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, - UserId, ClientIP, Operation, UserType, RecordType, OfficeWorkload, Parameters\n| - extend timestamp = OfficeActivity_TimeGenerated, AccountCustomEntity = UserId, - IPCustomEntity = ClientIP, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Email entity to OfficeActivity","description":"Identifies a match in - OfficeActivity table from any Email IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/154fde9f-ae00-4422-a8da-ef00b11da3fc","name":"154fde9f-ae00-4422-a8da-ef00b11da3fc","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - SeverityTable=datatable(Severity:string,Level:int) [\n\"low\", 1,\n\"medium\", - 2,\n\"high\", 3,\n\"critical\", 4\n];\nafad_parser\n| where MessageType == - 0\n| lookup kind=leftouter SeverityTable on Severity\n| order by Level","queryFrequency":"PT2H","queryPeriod":"PT2H","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Alsid - Indicators of Exposures","description":"Searches for triggered Indicators - of Exposures","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-05T00:00:00Z","createdDateUTC":"2020-11-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AlsidForAD","dataTypes":["AlsidForADLog_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f948a32f-226c-4116-bddd-d95e91d97eb9","name":"f948a32f-226c-4116-bddd-d95e91d97eb9","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - detectionTime = 1d;\nlet joinLookback = 14d;\nAuditLogs\n| where TimeGenerated - > ago(detectionTime)\n| where LoggedByService =~ \"Core Directory\"\n| where - Category =~ \"ApplicationManagement\"\n| where OperationName =~ \"Consent - to application\"\n| where TargetResources has \"mailboxsettings\"\n| extend - AppDisplayName = TargetResources.[0].displayName\n| extend AppClientId = tolower(TargetResources.[0].id)\n| - where AppClientId !in ((externaldata(knownAppClientId:string, knownAppDisplayName:string)[@\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.OAuth.KnownApplications.csv\"] - with (format=\"csv\")))\n| extend ConsentFull = TargetResources[0].modifiedProperties[4].newValue\n| - parse ConsentFull with * \"ConsentType: \" GrantConsentType \", Scope: \" - GrantScope1 \"]\" *\n| where ConsentFull contains \"contacts.read\" and ConsentFull - contains \"user.read\" and ConsentFull contains \"mail.read\" and ConsentFull - contains \"notes.read.all\" and ConsentFull contains \"mailboxsettings.readwrite\" - and ConsentFull contains \"Files.ReadWrite.All\"\n| where GrantConsentType - != \"AllPrincipals\" // NOTE: we are ignoring if OAuth application was granted - to all users via an admin - but admin due diligence should be audited occasionally\n| - extend GrantIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), InitiatedBy.user.ipAddress, - InitiatedBy.app.ipAddress)\n| extend GrantInitiatedBy = iff(isnotempty(InitiatedBy.user.userPrincipalName),InitiatedBy.user.userPrincipalName, - InitiatedBy.app.displayName)\n| extend GrantUserAgent = iff(AdditionalDetails[0].key - =~ \"User-Agent\", AdditionalDetails[0].value, \"\")\n| project TimeGenerated, - GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, GrantIpAddress, - GrantUserAgent, AppClientId, OperationName, ConsentFull, CorrelationId\n| - join kind = leftouter (AuditLogs\n| where TimeGenerated > ago(joinLookback)\n| - where LoggedByService =~ \"Core Directory\"\n| where Category =~ \"ApplicationManagement\"\n| - where OperationName =~ \"Add service principal\"\n| extend AppClientId = tolower(TargetResources[0].id)\n| - extend AppReplyURLs = iff(TargetResources[0].modifiedProperties[1].newValue - has \"AddressType\", TargetResources[0].modifiedProperties[1].newValue, \"\")\n| - distinct AppClientId, tostring(AppReplyURLs)\n)\non AppClientId\n| join kind - = innerunique (AuditLogs\n| where TimeGenerated > ago(joinLookback)\n| where - LoggedByService =~ \"Core Directory\"\n| where Category =~ \"ApplicationManagement\"\n| - where OperationName =~ \"Add OAuth2PermissionGrant\" or OperationName =~ \"Add - delegated permission grant\"\n| extend GrantAuthentication = tostring(TargetResources[0].displayName)\n| - extend GrantOperation = OperationName\n| project GrantAuthentication, GrantOperation, - CorrelationId\n) on CorrelationId\n| project TimeGenerated, GrantConsentType, - GrantScope1, GrantInitiatedBy, AppDisplayName, AppReplyURLs, GrantIpAddress, - GrantUserAgent, AppClientId, GrantAuthentication, OperationName, GrantOperation, - CorrelationId, ConsentFull\n| extend timestamp = TimeGenerated, AccountCustomEntity - = GrantInitiatedBy, IPCustomEntity = GrantIpAddress","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Suspicious - application consent similar to O365 Attack Toolkit","description":"This will - alert when a user consents to provide a previously-unknown Azure application - with the same OAuth permissions used by the MDSec O365 Attack Toolkit (https://github.com/mdsecactivebreach/o365-attack-toolkit).\nThe - default permissions/scope for the MDSec O365 Attack toolkit are contacts.read, - user.read, mail.read, notes.read.all, mailboxsettings.readwrite, and files.readwrite.all.\nConsent - to applications with these permissions should be rare, especially as the knownApplications - list is expanded, especially as the knownApplications list is expanded. Public - contributions to expand this filter are welcome!\nFor further information - on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["CredentialAccess","DefenseEvasion"],"lastUpdatedDateUTC":"2020-12-03T00:00:00Z","createdDateUTC":"2020-06-26T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/45b903c5-6f56-4969-af10-ae62ac709718","name":"45b903c5-6f56-4969-af10-ae62ac709718","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 1d;\nSecurityEvent\n| where TimeGenerated - >= ago(endtime) \n| where EventID == 4624 and LogonType == 10\n| summarize - StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), ConnectionCount - = count() \nby Account = tolower(Account), Computer = toupper(Computer), IpAddress, - AccountType, Activity, LogonTypeName, ProcessName\n// use left anti to exclude - anything from the previous 14 days that is not rare\n| join kind=leftanti - (\nSecurityEvent\n| where TimeGenerated between (ago(starttime) .. ago(endtime))\n| - where EventID == 4624\n| summarize by Computer = toupper(Computer), IpAddress, - Account = tolower(Account)\n) on Account, Computer\n| summarize StartTime - = min(StartTime), EndTime = max(EndTime), ConnectionCount = sum(ConnectionCount) \nby - Account, Computer, IpAddress, AccountType, Activity, LogonTypeName, ProcessName\n| - extend timestamp = StartTime, AccountCustomEntity = Account, HostCustomEntity - = Computer, IPCustomEntity = IpAddress","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Rare - RDP Connections","description":"Identifies when an RDP connection is new or - rare related to any logon type by a given account today based on comparison - with the previous 14 days.\nRDP connections are indicated by the EventID 4624 - with LogonType = 10","tactics":["LateralMovement"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-01-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/327cd4ed-ca42-454b-887c-54e1c91363c6","name":"327cd4ed-ca42-454b-887c-54e1c91363c6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft - Defender Advanced Threat Protection","displayName":"Create incidents based - on Microsoft Defender Advanced Threat Protection alerts","description":"Create - incidents based on all alerts generated in Microsoft Defender Advanced Threat - Protection","lastUpdatedDateUTC":"2019-10-24T00:00:00Z","createdDateUTC":"2019-10-24T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftDefenderAdvancedThreatProtection","dataTypes":["SecurityAlert - (MDATP)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4915c713-ab38-432e-800b-8e2d46933de6","name":"4915c713-ab38-432e-800b-8e2d46933de6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - PrivateIPregex = @''^127\\.|^10\\.|^172\\.1[6-9]\\.|^172\\.2[0-9]\\.|^172\\.3[0-1]\\.|^192\\.168\\.''; - \nlet avgthreshold = 0;\nlet probabilityLimit = 0.01;\nlet startime = 7d;\nlet - ssh_logins = Syslog\n| where TimeGenerated >= ago(startime)\n| where Facility - contains \"auth\" and ProcessName =~ \"sshd\"\n| where SyslogMessage has \"Accepted\"\n| - extend SourceIP = extract(\"(([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.(([0-9]{1,3})))\",1,SyslogMessage) - \n| where isnotempty(SourceIP)\n| extend ipType = iff(SourceIP matches regex - PrivateIPregex,\"private\" ,\"public\");\nssh_logins \n| summarize privatecount=countif(ipType==\"private\"), - publiccount=countif(ipType==\"public\") by HostName, HostIP, bin(EventTime, - 1d)\n| summarize \npublicIPLoginHistory = make_list(pack(''IPCount'', publiccount, ''logon_time'', - EventTime)),\nprivateIPLoginHistory = make_list(pack(''IPCount'', privatecount, - ''logon_time'', EventTime)) by HostName, HostIP\n| mv-apply publicIPLoginHistory - = publicIPLoginHistory on\n(\n order by todatetime(publicIPLoginHistory[''logon_time'']) - asc\n | summarize publicIPLoginCountList=make_list(toint(publicIPLoginHistory[''IPCount''])), - publicAverage=avg(toint(publicIPLoginHistory[''IPCount''])), publicStd=stdev(toint(publicIPLoginHistory[''IPCount''])), - maxPublicLoginCount=max(toint(publicIPLoginHistory[''IPCount'']))\n)\n| mv-apply - privateIPLoginHistory = privateIPLoginHistory on\n(\n order by todatetime(privateIPLoginHistory[''logon_time'']) - asc\n | summarize privateIPLoginCountList=make_list(toint(privateIPLoginHistory[''IPCount''])), - privateAverage=avg(toint(privateIPLoginHistory[''IPCount''])), privateStd=stdev(toint(privateIPLoginHistory[''IPCount'']))\n)\n// - Some logins from private IPs\n| where privateAverage > avgthreshold\n// There - is a non-zero number of logins from public IPs\n| where publicAverage > avgthreshold\n// - Approximate probability of seeing login from a public IP is < 1%\n| extend - probabilityPublic = publicAverage / (privateAverage + publicAverage)\n| where - probabilityPublic < probabilityLimit\n// Today has the highest number of logins - from public IPs that we''ve seen in the last week\n| extend publicLoginCountToday - = publicIPLoginCountList[-1]\n| where publicLoginCountToday >= maxPublicLoginCount\n| - extend HostCustomEntity = HostName\n// Optionally retrieve the original raw - data for those logins that we''ve identified as potentially suspect\n// | - join kind=rightsemi (\n// ssh_logins\n// | where ipType == \"public\"\n// ) - on HostName","queryFrequency":"P1D","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"New - internet-exposed SSH endpoints","description":"Looks for SSH endpoints with - a history of sign-ins only from private IP addresses are accessed from a public - IP address.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f041e01d-840d-43da-95c8-4188f6cef546","name":"f041e01d-840d-43da-95c8-4188f6cef546","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - LearningPeriod = 7d;\nlet RunTime = 1h;\nlet StartTime = 1h;\nlet EndRunTime - = StartTime - RunTime;\nlet EndLearningTime = StartTime + LearningPeriod;\nlet - GitHubCountryCodeLogs = (GitHubAudit\n| where Country != \"\");\n GitHubCountryCodeLogs\n| - where TimeGenerated between (ago(EndLearningTime) .. ago(StartTime))\n| summarize - makeset(Country) by Actor\n| join kind=innerunique (\n GitHubCountryCodeLogs\n | - where TimeGenerated between (ago(StartTime) .. ago(EndRunTime))\n | distinct - Country, Actor \n) on Actor \n| where set_Country !contains Country\n| extend - AccountCustomEntity = Actor , timestamp = TimeGenerated","queryFrequency":"P1D","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"GitHub - Activites from a New Country","description":"Detect activities from a location - that was not recently or was never visited by the user or by any user in your - organization.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-02T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/85aca4d1-5d15-4001-abd9-acb86ca1786a","name":"85aca4d1-5d15-4001-abd9-acb86ca1786a","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\n//Create a list of TLDs in our - threat feed for later validation\nlet list_tlds = ThreatIntelligenceIndicator\n| - where TimeGenerated > ago(ioc_lookBack)\n| where isnotempty(DomainName)\n| - extend parts = split(DomainName, ''.'')\n| extend tld = parts[(array_length(parts)-1)]\n| - summarize count() by tostring(tld)\n| summarize make_list(tld);\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(DomainName)\n| join (\n DnsEvents\n | where - TimeGenerated > ago(dt_lookBack)\n //Extract domain patterns from syslog - message\n | where isnotempty(Name)\n | extend parts = split(Name, ''.'')\n //Split - out the TLD\n | extend tld = parts[(array_length(parts)-1)]\n //Validate - parsed domain by checking if the TLD is in the list of TLDs in our threat - feed\n | where tld in~ (list_tlds)\n | extend DNS_TimeGenerated = TimeGenerated\n) - on $left.DomainName==$right.Name\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, Url, DNS_TimeGenerated, - Computer, ClientIP, Name, QueryType\n| extend timestamp = DNS_TimeGenerated, - HostCustomEntity = Computer, IPCustomEntity = ClientIP, URLCustomEntity = - Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Domain entity to DnsEvent","description":"Identifies a match in DnsEvent - table from any Domain IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b8266f81-2715-41a6-9062-42486cbc9c73","name":"b8266f81-2715-41a6-9062-42486cbc9c73","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1h;\nlet threshold = 200;\nInfobloxNIOS\n| where TimeGenerated - >= ago(timeframe)\n| where ProcessName =~ \"named\" and Log_Type =~ \"client\"\n| - where isnotempty(ResponseCode)\n| where ResponseCode =~ \"NXDOMAIN\"\n| summarize - count() by Client_IP, bin(TimeGenerated,15m)\n| where count_ > threshold\n| - join kind=inner (InfobloxNIOS\n | where TimeGenerated >= ago(timeframe)\n | - where ProcessName =~ \"named\" and Log_Type =~ \"client\"\n | where isnotempty(ResponseCode)\n | - where ResponseCode =~ \"NXDOMAIN\"\n ) on Client_IP\n| extend timestamp - = TimeGenerated, IPCustomEntity = Client_IP","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Excessive - NXDOMAIN DNS Queries","description":"This creates an incident in the event - a client generates excessive amounts of DNS queries for non-existent domains.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"InfobloxNIOS","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f0be259a-34ac-4946-aa15-ca2b115d5feb","name":"f0be259a-34ac-4946-aa15-ca2b115d5feb","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - starttime = 2d;\nlet endtime = 1d;\nlet TimeDeltaThreshold = 10;\nlet TotalEventsThreshold - = 15;\nlet PercentBeaconThreshold = 80;\nlet PrivateIPregex = @''^127\\.|^10\\.|^172\\.1[6-9]\\.|^172\\.2[0-9]\\.|^172\\.3[0-1]\\.|^192\\.168\\.'';\nCommonSecurityLog\n| - where DeviceVendor == \"Palo Alto Networks\" and Activity == \"TRAFFIC\"\n| - where TimeGenerated between (ago(starttime)..ago(endtime))\n| extend DestinationIPType - = iff(DestinationIP matches regex PrivateIPregex,\"private\" ,\"public\" )\n| - where DestinationIPType == \"public\"\n| project TimeGenerated, DeviceName, - SourceUserID, SourceIP, SourcePort, DestinationIP, DestinationPort, ReceivedBytes, - SentBytes\n| sort by SourceIP asc,TimeGenerated asc, DestinationIP asc, DestinationPort - asc\n| serialize\n| extend nextTimeGenerated = next(TimeGenerated, 1), nextSourceIP - = next(SourceIP, 1)\n| extend TimeDeltainSeconds = datetime_diff(''second'',nextTimeGenerated,TimeGenerated)\n| - where SourceIP == nextSourceIP\n//Whitelisting criteria/ threshold criteria\n| - where TimeDeltainSeconds > TimeDeltaThreshold \n| project TimeGenerated, TimeDeltainSeconds, - DeviceName, SourceUserID, SourceIP, SourcePort, DestinationIP, DestinationPort, - ReceivedBytes, SentBytes\n| summarize count(), sum(ReceivedBytes), sum(SentBytes), - make_list(TimeDeltainSeconds) \nby TimeDeltainSeconds, bin(TimeGenerated, - 1h), DeviceName, SourceUserID, SourceIP, DestinationIP, DestinationPort\n| - summarize (MostFrequentTimeDeltaCount, MostFrequentTimeDeltainSeconds) = arg_max(count_, - TimeDeltainSeconds), TotalEvents=sum(count_), TotalSentBytes = sum(sum_SentBytes), - TotalReceivedBytes = sum(sum_ReceivedBytes) \nby bin(TimeGenerated, 1h), DeviceName, - SourceUserID, SourceIP, DestinationIP, DestinationPort\n| where TotalEvents - > TotalEventsThreshold \n| extend BeaconPercent = MostFrequentTimeDeltaCount/toreal(TotalEvents) - * 100\n| where BeaconPercent > PercentBeaconThreshold\n| extend timestamp - = TimeGenerated, IPCustomEntity = DestinationIP, AccountCustomEntity = SourceUserID, - HostCustomEntity = DeviceName","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Palo - Alto - potential beaconing detected","description":"Identifies beaconing patterns - from Palo Alto Network traffic logs based on recurrent timedelta patterns. - \nThe query leverages various KQL functions to calculate time deltas and then - compares it with total events observed in a day to find percentage of beaconing. - \nThis outbound beaconing pattern to untrusted public networks should be investigated - for any malware callbacks or data exfiltration attempts.\nReference Blog:\nhttp://www.austintaylor.io/detect/beaconing/intrusion/detection/system/command/control/flare/elastic/stack/2017/06/10/detect-beaconing-with-flare-elasticsearch-and-intrusion-detection-systems/","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-05-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2d8a60aa-c15e-442e-9ce3-ee924889d2a6","name":"2d8a60aa-c15e-442e-9ce3-ee924889d2a6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"eset_CL\n| - where event_type_s == \"Threat_Event\"\n| extend HostCustomEntity = hostname_s, - AccountCustomEntity = username_s, IPCustomEntity = ipv4_s","queryFrequency":"PT5M","queryPeriod":"PT5M","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Threats - detected by Eset","description":"Escalates threats detected by Eset.","tactics":["Execution","CredentialAccess","PrivilegeEscalation"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-09T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"EsetSMC","dataTypes":["eset_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a5fe9489-cf8b-47ae-a87e-8f3a13e4203e","name":"a5fe9489-cf8b-47ae-a87e-8f3a13e4203e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - SeverityTable=datatable(Severity:string,Level:int) [\n\"low\", 1,\n\"medium\", - 2,\n\"high\", 3,\n\"critical\", 4\n];\nlet codeNameList = datatable(Codename:string)[\"C-PRIV-ACCOUNTS-SPN\", - \"C-NATIVE-ADM-GROUP-MEMBERS\", \"C-KRBTGT-PASSWORD\", \"C-PROTECTED-USERS-GROUP-UNUSED\", - \"C-ADMINCOUNT-ACCOUNT-PROPS\", \"C-ADM-ACC-USAGE\", \"C-LAPS-UNSECURE-CONFIG\", - \"C-DISABLED-ACCOUNTS-PRIV-GROUPS\"];\nafad_parser\n| where MessageType == - 0 and Codename in~ (codeNameList)\n| lookup kind=leftouter SeverityTable on - Severity\n| order by Level","queryFrequency":"PT2H","queryPeriod":"PT2H","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Alsid - privileged accounts issues","description":"Searches for triggered Indicators - of Exposures related to privileged accounts issues","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-07T00:00:00Z","createdDateUTC":"2020-11-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AlsidForAD","dataTypes":["AlsidForADLog_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/90586451-7ba8-4c1e-9904-7d1b7c3cc4d6","name":"90586451-7ba8-4c1e-9904-7d1b7c3cc4d6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Azure - Security Center","displayName":"Create incidents based on Azure Security Center - alerts","description":"Create incidents based on all alerts generated in Azure - Security Center","lastUpdatedDateUTC":"2019-07-16T00:00:00Z","createdDateUTC":"2019-07-16T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureSecurityCenter","dataTypes":["SecurityAlert - (ASC)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b31037ea-6f68-4fbd-bab2-d0d0f44c2fcf","name":"b31037ea-6f68-4fbd-bab2-d0d0f44c2fcf","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(Url)\n| join (\n Syslog\n | where TimeGenerated - >= ago(dt_lookBack)\n // Extract URL from the Syslog message but only take - messages that include URLs\n | extend Url = extract(\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\(\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)\", - 1,SyslogMessage)\n | where isnotempty(Url)\n | extend Syslog_TimeGenerated - = TimeGenerated\n) on Url\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, Syslog_TimeGenerated, - SyslogMessage, Computer, ProcessName, Url, HostIP\n| extend timestamp = Syslog_TimeGenerated, - HostCustomEntity = Computer, IPCustomEntity = HostIP, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map URL entity to Syslog data","description":"Identifies a match in Syslog - data from any URL IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/26a3b261-b997-4374-94ea-6c37f67f4f39","name":"26a3b261-b997-4374-94ea-6c37f67f4f39","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet DomainNames = dynamic([\"asyspy256.ddns.net\",\"hotkillmail9sddcc.ddns.net\",\"rosaf112.ddns.net\",\"cvdfhjh1231.myftp.biz\",\"sz2016rose.ddns.net\",\"dffwescwer4325.myftp.biz\",\"cvdfhjh1231.ddns.net\"]);\nlet - SHA1Hash = dynamic ([\"53a44c2396d15c3a03723fa5e5db54cafd527635\", \"9c5e496921e3bc882dc40694f1dcc3746a75db19\", - \"aeb573accfd95758550cf30bf04f389a92922844\", \"79ef78a797403a4ed1a616c68e07fff868a8650a\", - \"4f6f38b4cec35e895d91c052b1f5a83d665c2196\", \"1e8c2cac2e4ce7cbd33c3858eb2e24531cb8a84d\", - \"e841a63e47361a572db9a7334af459ddca11347a\", \"c28f606df28a9bc8df75a4d5e5837fc5522dd34d\", - \"2e94b305d6812a9f96e6781c888e48c7fb157b6b\", \"dd44133716b8a241957b912fa6a02efde3ce3025\", - \"8793bf166cb89eb55f0593404e4e933ab605e803\", \"a39b57032dbb2335499a51e13470a7cd5d86b138\", - \"41cc2b15c662bc001c0eb92f6cc222934f0beeea\", \"d209430d6af54792371174e70e27dd11d3def7a7\", - \"1c6452026c56efd2c94cea7e0f671eb55515edb0\", \"c6b41d3afdcdcaf9f442bbe772f5da871801fd5a\", - \"4923d460e22fbbf165bbbaba168e5a46b8157d9f\", \"f201504bd96e81d0d350c3a8332593ee1c9e09de\", - \"ddd2db1127632a2a52943a2fe516a2e7d05d70d2\"]);\nlet SHA256Hash = dynamic - ([\"9ae7c4a4e1cfe9b505c3a47e66551eb1357affee65bfefb0109d02f4e97c06dd\", \"7772d624e1aed327abcd24ce2068063da0e31bb1d5d3bf2841fc977e198c6c5b\", - \"657fc7e6447e0065d488a7db2caab13071e44741875044f9024ca843fe4e86b5\", \"2ef157a97e28574356e1d871abf75deca7d7a1ea662f38b577a06dd039dbae29\", - \"52fd7b90d7144ac448af4008be639d4d45c252e51823f4311011af3207a5fc77\", \"a370e47cb97b35f1ae6590d14ada7561d22b4a73be0cb6df7e851d85054b1ac3\", - \"5bf80b871278a29f356bd42af1e35428aead20cd90b0c7642247afcaaa95b022\", \"6f690ccfd54c2b02f0c3cb89c938162c10cbeee693286e809579c540b07ed883\", - \"3c884f776fbd16597c072afd81029e8764dd57ee79d798829ca111f5e170bd8e\", \"1922a419f57afb351b58330ed456143cc8de8b3ebcbd236d26a219b03b3464d7\", - \"fe0e4ef832b62d49b43433e10c47dc51072959af93963c790892efc20ec422f1\", \"7ce9e1c5562c8a5c93878629a47fe6071a35d604ed57a8f918f3eadf82c11a9c\", - \"178d5ee8c04401d332af331087a80fb4e5e2937edfba7266f9be34a5029b6945\", \"51f70956fa8c487784fd21ab795f6ba2199b5c2d346acdeef1de0318a4c729d9\", - \"889bca95f1a69e94aaade1e959ed0d3620531dc0fc563be9a8decf41899b4d79\", \"332ddaa00e2eb862742cb8d7e24ce52a5d38ffb22f6c8bd51162bd35e84d7ddf\", - \"44bcf82fa536318622798504e8369e9dcdb32686b95fcb44579f0b4efa79df08\", \"63552772fdd8c947712a2cff00dfe25c7a34133716784b6d486227384f8cf3ef\", - \"056744a3c371b5938d63c396fe094afce8fb153796a65afa5103e1bffd7ca070\"]);\nlet - SigNames = dynamic([\"TrojanDropper:Win32/BlackMould.A!dha\", \"Trojan:Win32/BlackMould.B!dha\", - \"Trojan:Win32/QuarkBandit.A!dha\", \"Trojan:Win32/Sidelod.A!dha\"]);\n(union - isfuzzy=true\n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe) - \n| parse Message with * ''('' DNSName '')'' * \n| where isnotempty(FileHash)\n| - where FileHash in (SHA256Hash) or DNSName in~ (DomainNames)\n| extend Account - = SourceUserID, Computer = DeviceName, IPAddress = SourceIP\n),\n(DnsEvents - \n| where TimeGenerated >= ago(timeframe) \n| extend DNSName = Name\n| where - isnotempty(DNSName)\n| where DNSName in~ (DomainNames)\n| extend IPAddress - = ClientIP\n),\n(VMConnection \n| where TimeGenerated >= ago(timeframe) \n| - parse RemoteDnsCanonicalNames with * ''[\"'' DNSName ''\"]'' *\n| where isnotempty(DNSName)\n| - where DNSName in~ (DomainNames)\n| extend IPAddress = RemoteIp\n),\n(Event\n//This - query uses sysmon data depending on table name used this may need updataing\n| - where TimeGenerated >= ago(3d)\n| where Source == \"Microsoft-Windows-Sysmon\"\n| - extend EvData = parse_xml(EventData)\n| extend EventDetail = EvData.DataItem.EventData.Data\n| - extend Hashes = EventDetail.[16].[\"#text\"]\n| parse Hashes with * ''SHA1='' - SHA1 '','' * \n| where isnotempty(Hashes)\n| where Hashes in (SHA1Hash) \n| - extend Account = UserName\n),\n(SecurityAlert\n| where TimeGenerated >= ago(timeframe)\n| - where Entities has_any (SigNames)\n| extend Computer = tostring(parse_json(Entities)[0].HostName) - \n)\n)\n| extend timestamp = TimeGenerated, AccountCustomEntity = Account, - HostCustomEntity = Computer, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - GALLIUM domains and hashes","description":"GALLIUM command and control domains - and hash values for tools and malware used by GALLIUM. \n Matches domain name - IOCs related to the GALLIUM activity group with CommonSecurityLog, DnsEvents, - VMConnection and SecurityEvents dataTypes.\n References: https://www.microsoft.com/security/blog/2019/12/12/gallium-targeting-global-telecom/ - ","tactics":["CommandAndControl","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-12-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0625fcce-6d52-491e-8c68-1d9b801d25b9","name":"0625fcce-6d52-491e-8c68-1d9b801d25b9","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"Event\n| - where EventLog =~ \"Application\"\n| where Source startswith \"MSExchange\"\n| - where EventLevelName =~ \"error\"\n| where (RenderedDescription startswith - \"Watson report\" and RenderedDescription contains \"umworkerprocess\" and - RenderedDescription contains \"TextFormattingRunProperties\") or RenderedDescription - startswith \"An unhandled exception occurred in a UM worker process\" or RenderedDescription - startswith \"The Microsoft Exchange Unified Messaging service\"\n| where RenderedDescription - !contains \"System.OutOfMemoryException\"\n| extend timestamp = TimeGenerated, - HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"HAFNIUM - Suspicious UM Service Error.","description":"This query looks for errors that - may indicate that an attacker is attempting to exploit a vulnerability in - the service. \nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-03-02T00:00:00Z","createdDateUTC":"2021-03-02T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2560515c-07d1-434e-87fb-ebe3af267760","name":"2560515c-07d1-434e-87fb-ebe3af267760","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"AuditLogs\n| - where Category =~ \"ApplicationManagement\"\n| where ActivityDisplayName has_any - (\"Add delegated permission grant\",\"Add app role assignment to service principal\")\n| - where Result =~ \"success\"\n| where tostring(InitiatedBy.user.userPrincipalName) - has \"@\" or tostring(InitiatedBy.app.displayName) has \"@\"\n| extend props - = parse_json(tostring(TargetResources[0].modifiedProperties))\n| mv-expand - props\n| extend UserAgent = tostring(AdditionalDetails[0].value)\n| extend - InitiatingUser = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\n| - extend UserIPAddress = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\n| - extend DisplayName = tostring(props.displayName)\n| extend Permissions = tostring(parse_json(tostring(props.newValue)))\n| - where Permissions has_any (\"Mail.Read\", \"Mail.ReadWrite\")\n| extend PermissionsAddedTo - = tostring(TargetResources[0].displayName)\n| extend Type = tostring(TargetResources[0].type)\n| - project-away props\n| join kind=leftouter(\n AuditLogs\n | where ActivityDisplayName - has \"Consent to application\"\n | extend AppName = tostring(TargetResources[0].displayName)\n | - extend AppId = tostring(TargetResources[0].id)\n | project AppName, AppId, - CorrelationId) on CorrelationId\n| project-reorder TimeGenerated, OperationName, - InitiatingUser, UserIPAddress, UserAgent, PermissionsAddedTo, Permissions, - AppName, AppId, CorrelationId\n| extend timestamp = TimeGenerated, AccountCustomEntity - = InitiatingUser, IPCustomEntity = UserIPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Mail.Read - Permissions Granted to Application","description":"This query look for applications - that have been granted (Delegated or App/Role) permissions to Read Mail (Permissions - field has Mail.Read) and subsequently has been consented to. This can help - identify applications that have been abused to gain access to mailboxes.","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-01-27T00:00:00Z","createdDateUTC":"2020-12-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a4025a76-6490-4e6b-bb69-d02be4b03f07","name":"a4025a76-6490-4e6b-bb69-d02be4b03f07","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n AzureNetworkAnalytics_CL\n | where TimeGenerated - >= ago(dt_lookBack)\n // renaming time column so it is clear the log this - came from\n | extend AzureNetworkAnalytics_CL_TimeGenerated = TimeGenerated\n // - NSG Flow Logs have additional information concat with Public IP, removing - onlp Public IP\n | extend PIPs = split(PublicIPs_s, ''|'', 0)\n | extend - PIP = tostring(PIPs[0])\n)\non $left.TI_ipEntity == $right.PIP\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n// Set to - alert on Allowed NSG Flows from TI Public IP IOC\n| where FlowStatus_s == - \"A\"\n| project LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, - ThreatType, Url, ExpirationDateTime, ConfidenceScore, AzureNetworkAnalytics_CL_TimeGenerated,\nTI_ipEntity, - Computer, FlowDirection_s, FlowStatus_s, FlowType_s, SrcPublicIPs_s, DestPublicIPs_s, - PublicIPs_s, L7Protocol_s, DestPort_d, NetworkIP, NetworkDestinationIP, NetworkSourceIP, - EmailSourceIpAddress\n| extend timestamp = AzureNetworkAnalytics_CL_TimeGenerated, - IPCustomEntity = TI_ipEntity, HostCustomEntity = Computer, URLCustomEntity - = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to AzureNetworkAnalytics_CL (NSG Flow Logs)","description":"Identifies - a match in AzureNetworkAnalytics_CL (NSG Flow Logs) from any IP IOC from TI - that was Allowed","tactics":["Impact"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/01f64465-b1ef-41ea-a7f5-31553a11ad43","name":"01f64465-b1ef-41ea-a7f5-31553a11ad43","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet endpointData = \n(SecurityEvent\n | where TimeGenerated - >= ago(timeframe) \n | where EventID == 4688\n | extend shortFileName = - tostring(split(NewProcessName, ''\\\\'')[-1])\n );\n// Correlate suspect - executables seen in TrendMicro rule updates with similar activity on endpoints\nCommonSecurityLog\n| - where TimeGenerated >= ago(timeframe)\n| where DeviceVendor =~ \"Trend Micro\"\n| - where Activity =~ \"Deny List updated\" \n| where RequestURL endswith \".exe\"\n| - project TimeGenerated, Activity , RequestURL , SourceIP, DestinationIP\n| - extend suspectExeName = tolower(tostring(split(RequestURL, ''/'')[-1]))\n| - join (endpointData) on $left.suspectExeName == $right.shortFileName \n| extend - timestamp = TimeGenerated, IPCustomEntity = DestinationIP, AccountCustomEntity - = TargetUserName, HostCustomEntity = Computer, URLCustomEntity = RequestURL","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"Network - endpoint to host executable correlation","description":"Correlates blocked - URLs hosting [malicious] executables with host endpoint data\nto identify - potential instances of executables of the same name having been recently run.","tactics":["Execution"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-07-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"TrendMicro","dataTypes":["CommonSecurityLog"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9fb57e58-3ed8-4b89-afcf-c8e786508b1c","name":"9fb57e58-3ed8-4b89-afcf-c8e786508b1c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - szOperationNames = dynamic([\"Create or Update Virtual Machine\", \"Create - Deployment\"]);\nlet starttime = 14d;\nlet endtime = 1d;\nlet RareCaller = - AzureActivity\n| where TimeGenerated between (ago(starttime) .. ago(endtime))\n| - where OperationName in~ (szOperationNames)\n| project ResourceGroup, Caller, - OperationName, CallerIpAddress\n| join kind=rightantisemi (\nAzureActivity\n| - where TimeGenerated > ago(endtime)\n| where OperationName in~ (szOperationNames)\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), - ActivityStatus = makeset(ActivityStatus), OperationIds = makeset(OperationId), - CallerIpAddress = makeset(CallerIpAddress) \nby ResourceId, Caller, OperationName, - Resource, ResourceGroup\n) on Caller, ResourceGroup \n| mvexpand CallerIpAddress\n| - where isnotempty(CallerIpAddress);\nlet Counts = RareCaller | summarize ActivityCountByCaller - = count() by Caller;\nRareCaller | join kind= inner (Counts) on Caller | project-away - Caller1\n| extend timestamp = StartTimeUtc, AccountCustomEntity = Caller, - IPCustomEntity = tostring(CallerIpAddress)\n| sort by ActivityCountByCaller - desc nulls last","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Suspicious - Resource deployment","description":"Identifies when a rare Resource and ResourceGroup - deployment occurs by a previously unseen Caller.","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fb9e0b51-8867-48d7-86f4-6e76f2176bf8","name":"fb9e0b51-8867-48d7-86f4-6e76f2176bf8","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - SeverityTable=datatable(Severity:string,Level:int) [\n\"low\", 1,\n\"medium\", - 2,\n\"high\", 3,\n\"critical\", 4\n];\nlet codeNameList = datatable(Codename:string)[\"C-ACCOUNTS-DANG-SID-HISTORY\", - \"C-PRE-WIN2000-ACCESS-MEMBERS\", \"C-PASSWORD-DONT-EXPIRE\", \"C-SLEEPING-ACCOUNTS\", - \"C-DANG-PRIMGROUPID\", \"C-PASSWORD-NOT-REQUIRED\", \"C-USER-PASSWORD\"];\nafad_parser\n| - where MessageType == 0 and Codename in~ (codeNameList)\n| lookup kind=leftouter - SeverityTable on Severity\n| order by Level","queryFrequency":"PT2H","queryPeriod":"PT2H","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Alsid - user accounts issues","description":"Searches for triggered Indicators of - Exposures related to user accounts issues","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-07T00:00:00Z","createdDateUTC":"2020-11-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AlsidForAD","dataTypes":["AlsidForADLog_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2f561e20-d97b-4b13-b02d-18b34af6e87c","name":"2f561e20-d97b-4b13-b02d-18b34af6e87c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet cmdList = dynamic([\"Set-CASMailbox\",\"ActiveSyncAllowedDeviceIDs\",\"add\"]);\n(union - isfuzzy=true\n(\nSecurityEvent\n| where TimeGenerated >= ago(timeframe)\n| - where CommandLine has_all (cmdList)\n| project Type, TimeGenerated, Computer, - Account, SubjectDomainName, SubjectUserName, Process, ParentProcessName, CommandLine\n| - extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity - = Computer\n),\n(\nDeviceProcessEvents\n| where TimeGenerated >= ago(timeframe)\n| - where InitiatingProcessCommandLine has_all (cmdList)\n| project Type, TimeGenerated, - DeviceName, AccountName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, - InitiatingProcessFileName, InitiatingProcessParentFileName, InitiatingProcessCommandLine\n| - extend timestamp = TimeGenerated, AccountCustomEntity = AccountName, HostCustomEntity - = DeviceName\n),\n(\nEvent\n| where TimeGenerated > ago(timeframe)\n| where - Source == \"Microsoft-Windows-Sysmon\"\n| where EventID == 1\n| extend EventData - = parse_xml(EventData).DataItem.EventData.Data\n| mv-expand bagexpansion=array - EventData\n| evaluate bag_unpack(EventData)\n| extend Key=tostring([''@Name'']), - Value=[''#text'']\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, - EventLog, Computer, EventLevel, EventLevelName, EventID, UserName, RenderedDescription, - MG, ManagementGroupName, Type, _ResourceId)\n| where TimeGenerated >= ago(timeframe)\n| - where CommandLine has_all (cmdList)\n| extend Type = strcat(Type, \": \", - Source)\n| project Type, TimeGenerated, Computer, User, Process, ParentImage, - CommandLine\n| extend timestamp = TimeGenerated, AccountCustomEntity = User, - HostCustomEntity = Computer\n)\n)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Email - access via active sync","description":"This query detects attempts to add - attacker devices as allowed IDs for active sync using the Set-CASMailbox command.\nThis - technique was seen in relation to Solorigate attack but the results can indicate - potential malicious activity used in different attacks.\n- Note that this - query can be changed to use the KQL \"has_all\" operator, which hasn''t yet - been documented officially, but will be soon.\n In short, \"has_all\" will - only match when the referenced field has all strings in the list.\n- Refer - to Set-CASMailbox syntax: https://docs.microsoft.com/powershell/module/exchange/set-casmailbox?view=exchange-ps ","tactics":["PrivilegeEscalation"],"lastUpdatedDateUTC":"2021-02-10T00:00:00Z","createdDateUTC":"2021-02-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceProcessEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/aa1eff90-29d4-49dc-a3ea-b65199f516db","name":"aa1eff90-29d4-49dc-a3ea-b65199f516db","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nSecurityEvent\n| where TimeGenerated > ago(timeframe) \n| - where EventID == 4720\n| where AccountType == \"User\"\n| project CreatedUserTime - = TimeGenerated, CreatedUserEventID = EventID, CreatedUserActivity = Activity, - Computer = toupper(Computer), \nCreatedUser = tolower(TargetAccount), CreatedUserSid - = TargetSid, AccountUsedToCreateUser = strcat(SubjectAccount), SidofAccountUsedToCreateUser - = SubjectUserSid\n| join (\nSecurityEvent \n| where TimeGenerated > ago(timeframe) - \n| where AccountType == \"User\"\n// 4732 - A member was added to a security-enabled - local group\n| where EventID == 4732\n//TargetSid is the builin Admins group: - S-1-5-32-544\n| where TargetSid == \"S-1-5-32-544\"\n| project GroupAddTime - = TimeGenerated, GroupAddEventID = EventID, GroupAddActivity = Activity, Computer - = toupper(Computer), GroupName = tolower(TargetAccount), \nGroupSid = TargetSid, - AccountThatAddedUser = SubjectAccount, SIDofAccountThatAddedUser = SubjectUserSid, - CreatedUserSid = MemberSid\n)\non CreatedUserSid\n//Create User first, then - the add to the group.\n| project Computer, CreatedUserTime, CreatedUserEventID, - CreatedUserActivity, CreatedUser, CreatedUserSid, GroupAddTime, GroupAddEventID, - \nGroupAddActivity, AccountUsedToCreateUser, GroupName, GroupSid, AccountThatAddedUser, - SIDofAccountThatAddedUser \n| extend timestamp = CreatedUserTime, AccountCustomEntity - = CreatedUser, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"},{"identifier":"Sid","columnName":"CreatedUserSid"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"New - user created and added to the built-in administrators group","description":"Identifies - when a user account was created and then added to the builtin Administrators - group in the same day.\nThis should be monitored closely and all additions - reviewed.","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-02-22T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/200f05a2-db6e-4ff7-be83-bbc30b44755f","name":"200f05a2-db6e-4ff7-be83-bbc30b44755f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.2.1","techniques":["T1001"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":null,"thresholdObservations":[{"minimum":"0","maximum":"1","value":"0.07","name":"Score","description":"Generate - an anomaly when score is greater than the chosen value","sequenceNumber":1,"rerun":"NotRequired"}]},"frequency":"P1D","displayName":"(Preview) - Suspicious volume of logins to user account","description":"This algorithm - detects an unusually high volume of successful logins per user account. The - model is trained on the previous 21 days of security event ID 4624 on an account. - It indicates anomalous high volume of successful logins in the last day","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-02-22T00:00:00Z","createdDateUTC":"2020-12-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/dd0a6029-ecef-4507-89c4-fc355ac52111","name":"dd0a6029-ecef-4507-89c4-fc355ac52111","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\n//Create a list of TLDs in our - threat feed for later validation of extracted domains\nlet list_tlds = ThreatIntelligenceIndicator\n | - where TimeGenerated > ago(ioc_lookBack)\n | where isnotempty(DomainName)\n | - extend DomainName = tolower(DomainName)\n | extend parts = split(DomainName, - ''.'')\n | extend tld = parts[(array_length(parts)-1)]\n | summarize - count() by tostring(tld)\n | summarize make_list(tld);\n ThreatIntelligenceIndicator\n | - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n | - summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n | - where Active == true\n // Picking up only IOC''s that contain the entities - we want\n | where isnotempty(DomainName)\n | join (\n CommonSecurityLog\n | - extend IngestionTime = ingestion_time()\n | where IngestionTime > ago(dt_lookBack)\n | - where DeviceEventClassID =~ ''url''\n //Uncomment the line below to - only alert on allowed connections\n //| where DeviceAction !~ \"block-url\"\n //Extract - domain from RequestURL, if not present extarct it from AdditionalExtentions\n | - extend PA_Url = columnifexists(\"RequestURL\", \"None\")\n | extend - PA_Url = iif(isempty(PA_Url) and AdditionalExtensions !startswith \"PanOS\", - extract(\"([^\\\"]+)\", 1, tolower(AdditionalExtensions)), trim(''\"'', PA_Url))\n | - extend PA_Url = iif(PA_Url !startswith \"http://\" and ApplicationProtocol - !~ \"ssl\", strcat(''http://'', PA_Url), iif(PA_Url !startswith \"https://\" - and ApplicationProtocol =~ \"ssl\", strcat(''https://'', PA_Url), PA_Url))\n | - extend Domain = trim(@\"\"\"\",tostring(parse_url(PA_Url).Host))\n | - where isnotempty(Domain)\n | extend Domain = tolower(Domain)\n | - extend parts = split(Domain, ''.'')\n //Split out the TLD for the purpose - of checking if we have any TI indicators with this TLD to match on\n | - extend tld = parts[(array_length(parts)-1)]\n //Validate parsed domain - by checking TLD against TLDs from threat feed and drop domains where there - is no chance of a match\n | where tld in~ (list_tlds)\n | extend - CSL_TimeGenerated = TimeGenerated\n ) on $left.DomainName==$right.Domain\n | - project LatestIndicatorTime, Description, ActivityGroupNames, PA_Url, Domain, - IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, CSL_TimeGenerated, - DeviceAction, DestinationIP, DestinationPort, DeviceName, SourceIP, SourcePort, - ApplicationProtocol, RequestMethod\n | extend timestamp = CSL_TimeGenerated, - IPCustomEntity = SourceIP, HostCustomEntity = DeviceName, URLCustomEntity - = PA_Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Domain entity to CommonSecurityLog","description":"Identifies a match - in CommonSecurityLog table from any Domain IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5dd76a87-9f87-4576-bab3-268b0e2b338b","name":"5dd76a87-9f87-4576-bab3-268b0e2b338b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - threshold = 5;\nlet szSharePointFileOperation = \"SharePointFileOperation\";\nlet - szOperations = dynamic([\"FileDownloaded\", \"FileUploaded\"]);\nlet starttime - = 14d;\nlet endtime = 1d;\nlet historicalActivity =\nOfficeActivity\n| where - TimeGenerated between(ago(starttime)..ago(endtime))\n| where RecordType =~ - szSharePointFileOperation\n| where Operation in~ (szOperations)\n| where isnotempty(UserAgent)\n| - summarize historicalCount = count() by UserAgent, RecordType, Operation;\nlet - recentActivity = OfficeActivity\n| where RecordType =~ szSharePointFileOperation\n| - where Operation in~ (szOperations)\n| where TimeGenerated > ago(endtime)\n| - where isnotempty(UserAgent)\n| summarize min(Start_Time), max(Start_Time), - recentCount = count() by UserAgent, RecordType, Operation;\nlet RareUserAgent - = recentActivity | join kind = leftanti (historicalActivity) on UserAgent\n| - order by recentCount desc, UserAgent\n// More than 3 downloads/uploads from - a new user agent today\n| where recentCount > threshold;\nOfficeActivity \n| - where TimeGenerated > ago(endtime) \n| where RecordType =~ szSharePointFileOperation - \n| where Operation in~ (szOperations)\n| where isnotempty(UserAgent)\n| join - kind= inner (RareUserAgent)\non UserAgent, RecordType, Operation \n| where - Start_Time between(min_Start_Time .. max_Start_Time)\n| summarize StartTimeUtc - = min(min_Start_Time), EndTimeUtc = max(max_Start_Time) by RecordType, Operation, - UserAgent, UserType, UserId, ClientIP, OfficeWorkload, Site_Url, OfficeObjectId, - UserAgentSeenCount = recentCount\n| extend timestamp = StartTimeUtc, AccountCustomEntity - = UserId, IPCustomEntity = ClientIP, URLCustomEntity = Site_Url\n| order by - UserAgentSeenCount desc, UserAgent asc, Operation asc, UserId asc","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"SharePointFileOperation - via devices with previously unseen user agents","description":"Identifies - if the number of documents uploaded or downloaded from device(s) associated\nwith - a previously unseen user agent exceeds a threshold (default is 5).","tactics":["Exfiltration"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-08-23T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/84cf1d59-f620-4fee-b569-68daf7008b7b","name":"84cf1d59-f620-4fee-b569-68daf7008b7b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 10;\nQualysHostDetection_CL\n| where - TimeGenerated >= timeframe\n| mv-expand todynamic(Detections_s)\n| extend - Status = tostring(Detections_s.Status), Vulnerability = tostring(Detections_s.Results), - Severity = tostring(Detections_s.Severity)\n| where Status =~ \"New\" and - Severity == \"5\"\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), - dcount(NetBios_s) by tostring(Detections_s.QID)\n| where dcount_NetBios_s - >= threshold\n| extend timestamp = StartTime","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"New - High Severity Vulnerability Detected Across Multiple Hosts","description":"This - creates an incident when a new high severity vulnerability is detected across - multilple hosts","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-06-20T00:00:00Z","createdDateUTC":"2020-06-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"QualysVulnerabilityManagement","dataTypes":["QualysHostDetection_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7ee72a9e-2e54-459c-bc8a-8c08a6532a63","name":"7ee72a9e-2e54-459c-bc8a-8c08a6532a63","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet IPList = dynamic([\"154.223.45.38\",\"185.141.207.140\",\"185.234.73.19\",\"216.245.210.106\",\"51.91.48.210\",\"46.255.230.229\"]);\n(union - isfuzzy=true\n(CommonSecurityLog\n| where TimeGenerated >= ago(timeframe) - \n| where isnotempty(SourceIP) or isnotempty(DestinationIP)\n| where SourceIP - in (IPList) or DestinationIP in (IPList) or Message has_any (IPList)\n| extend - IPMatch = case(SourceIP in (IPList), \"SourceIP\", DestinationIP in (IPList), - \"DestinationIP\", \"Message\") \n| summarize StartTimeUtc = min(TimeGenerated), - EndTimeUtc = max(TimeGenerated) by SourceIP, DestinationIP, DeviceProduct, - DeviceAction, Message, Protocol, SourcePort, DestinationPort, DeviceAddress, - DeviceName, IPMatch\n| extend timestamp = StartTimeUtc, IPCustomEntity = case(IPMatch - == \"SourceIP\", SourceIP, IPMatch == \"DestinationIP\", DestinationIP, \"IP - in Message Field\") \n),\n(OfficeActivity\n| where TimeGenerated >= ago(timeframe) - \n|extend SourceIPAddress = ClientIP, Account = UserId\n| where SourceIPAddress - in (IPList)\n| extend timestamp = TimeGenerated , IPCustomEntity = SourceIPAddress - , AccountCustomEntity = Account\n),\n(DnsEvents \n| where TimeGenerated >= - ago(timeframe) \n| extend DestinationIPAddress = IPAddresses, Host = Computer\n| - where DestinationIPAddress has_any (IPList) \n| extend timestamp = TimeGenerated, - IPCustomEntity = DestinationIPAddress, HostCustomEntity = Host\n),\n(VMConnection - \n| where TimeGenerated >= ago(timeframe) \n| where isnotempty(SourceIp) or - isnotempty(DestinationIp) \n| where SourceIp in (IPList) or DestinationIp - in (IPList) \n| extend IPMatch = case( SourceIp in (IPList), \"SourceIP\", - DestinationIp in (IPList), \"DestinationIP\", \"None\") \n| extend timestamp - = TimeGenerated , IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIp, - IPMatch == \"DestinationIP\", DestinationIp, \"None\"), Host = Computer\n),\n(Event\n| - where TimeGenerated >= ago(timeframe)\n| where Source == \"Microsoft-Windows-Sysmon\"\n| - where EventID == 3\n| extend EvData = parse_xml(EventData)\n| extend EventDetail - = EvData.DataItem.EventData.Data\n| extend SourceIP = EventDetail.[9].[\"#text\"], - DestinationIP = EventDetail.[14].[\"#text\"]\n| where SourceIP in (IPList) - or DestinationIP in (IPList) \n| extend IPMatch = case( SourceIP in (IPList), - \"SourceIP\", DestinationIP in (IPList), \"DestinationIP\", \"None\") \n| - extend timestamp = TimeGenerated, AccountCustomEntity = UserName, HostCustomEntity - = Computer , IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIP, IPMatch - == \"DestinationIP\", DestinationIP, \"None\")\n), \n(WireData \n| where TimeGenerated - >= ago(timeframe)\n| where isnotempty(RemoteIP)\n| where RemoteIP in (IPList)\n| - extend timestamp = TimeGenerated, IPCustomEntity = RemoteIP, HostCustomEntity - = Computer\n),\n(SigninLogs\n| where TimeGenerated >= ago(timeframe)\n| where - isnotempty(IPAddress)\n| where IPAddress in (IPList)\n| extend timestamp = - TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\n),\n(W3CIISLog - \n| where TimeGenerated >= ago(timeframe)\n| where isnotempty(cIP)\n| where - cIP in (IPList)\n| extend timestamp = TimeGenerated, IPCustomEntity = cIP, - HostCustomEntity = Computer, AccountCustomEntity = csUserName\n),\n(AzureActivity - \n| where TimeGenerated >= ago(timeframe)\n| where isnotempty(CallerIpAddress)\n| - where CallerIpAddress in (IPList)\n| extend timestamp = TimeGenerated, IPCustomEntity - = CallerIpAddress, AccountCustomEntity = Caller\n),\n(\nAWSCloudTrail\n| where - TimeGenerated >= ago(timeframe)\n| where isnotempty(SourceIpAddress)\n| where - SourceIpAddress in (IPList)\n| extend timestamp = TimeGenerated, IPCustomEntity - = SourceIpAddress, AccountCustomEntity = UserIdentityUserName\n)\n)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - IRIDIUM IP","description":"IRIDIUM command and control IP. Identifies a match - across various data feeds for IP IOCs related to the IRIDIUM activity group.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-12-16T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"AzureMonitor(WireData)","dataTypes":["WireData"]},{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]},{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]},{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/157c0cfc-d76d-463b-8755-c781608cdc1a","name":"157c0cfc-d76d-463b-8755-c781608cdc1a","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - PrivateIPregex = @''^127\\.|^10\\.|^172\\.1[6-9]\\.|^172\\.2[0-9]\\.|^172\\.3[0-1]\\.|^192\\.168\\.'';\nlet - endtime = 1d;\nCommonSecurityLog\n| where TimeGenerated >= ago(endtime) \n| - where DeviceVendor =~ \"Cisco\"\n| where DeviceAction =~ \"denied\"\n| extend - SourceIPType = iff(SourceIP matches regex PrivateIPregex,\"private\" ,\"public\" - )\n| where SourceIPType == \"public\"\n| summarize count() by SourceIP\n| - join (\n // Successful signins from IPs blocked by the firewall solution - are suspect\n // Include fully successful sign-ins, but also ones that - failed only at MFA stage\n // as that supposes the password was sucessfully - guessed.\n SigninLogs\n | where ResultType in (\"0\", \"50074\", \"50076\") - \n) on $left.SourceIP == $right.IPAddress\n| extend timestamp = TimeGenerated, - IPCustomEntity = SourceIP, AccountCustomEntity = UserPrincipalName","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Cisco - - firewall block but success logon to Azure AD","description":"Correlate IPs - blocked by a Cisco firewall appliance with successful Azure Active Directory - signins. \nBecause the IP was blocked by the firewall, that same IP logging - on successfully to AAD is potentially suspect\nand could indicate credential - compromise for the user account.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-07-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a04cf847-a832-4c60-b687-b0b6147da219","name":"a04cf847-a832-4c60-b687-b0b6147da219","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet IPList = dynamic([\"45.63.52.41\",\"140.82.17.161\",\"207.148.101.95\",\"45.32.87.51\",\"66.42.98.156\",\"45.76.144.105\",\"217.163.28.35\",\"45.32.141.174\",\"149.28.165.249\",\"209.250.225.247\",\"45.63.100.115\",\"95.179.229.230\",\"209.250.233.247\",\"45.77.121.232\",\"45.76.175.65\",\"104.238.160.237\",\"45.77.181.97\",\"95.179.192.125\",\"149.28.93.184\",\"140.82.16.81\",\"45.76.173.103\",\"45.77.255.22\",\"45.32.11.71\",\"149.28.77.26\",\"45.32.54.50\",\"104.156.233.156\",\"45.32.21.118\",\"45.63.62.109\",\"45.77.244.202\",\"149.248.11.205\",\"104.238.190.244\"]);\nlet - IOCTerms = \"\\\\?lang=[/..]*/dev/cmdb/sslvpn_websession|/dana-na/jam/[/..]*home/webserver/htdocs/dana/html5acc/guacamole[/..]*etc/passwd\\\\?\";\n(union - isfuzzy=true\n(CommonSecurityLog\n| where TimeGenerated >= ago(1d) \n| where - isnotempty(SourceIP) or isnotempty(DestinationIP)\n| where SourceIP in (IPList) - or DestinationIP in (IPList) or Message has_any (IPList)\n| extend IPMatch - = case(\nSourceIP in (IPList), \"SourceIP\", \nDestinationIP in (IPList), - \"DestinationIP\",\n\"Message\") \n| where Message matches regex IOCTerms\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by SourceIP, DestinationIP, DeviceProduct, DeviceAction, Message, Protocol, - SourcePort, DestinationPort, DeviceAddress, DeviceName, IPMatch\n| extend - timestamp = StartTimeUtc, IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIP, - IPMatch == \"DestinationIP\", DestinationIP, \"IP in Message Field\") \n),\n(OfficeActivity\n| - where TimeGenerated >= ago(1d) \n| where isnotempty(UserAgent) and ClientIP - in (IPList)\n| where UserAgent contains \"ExchangeServicesClient/0.0.0.0\"\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by SourceIP = ClientIP, Account = UserId, Type, RecordType, OfficeWorkload, - UserAgent, OfficeObjectId, IPMatch = \"ClientIP\"\n| extend timestamp = StartTimeUtc, - AccountCustomEntity = Account, IPCustomEntity = SourceIP\n)\n)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - Manganese IP and UserAgent activity","description":"Matches IP plus UserAgent - IOCs in OfficeActivity data, along with IP plus Connection string information - in the CommonSecurityLog data related to Manganese group activity.\nReferences: - \nhttps://kb.pulsesecure.net/articles/Pulse_Security_Advisories/SA44101/\nhttps://fortiguard.com/psirt/FG-IR-18-384","tactics":["InitialAccess","Collection"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-10-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/02ef8d7e-fc3a-4d86-a457-650fa571d8d2","name":"02ef8d7e-fc3a-4d86-a457-650fa571d8d2","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeFrame = 1d;\nlet logonDiff = 10m;\nSigninLogs \n| where TimeGenerated - >= ago(timeFrame) \n| where ResultType == \"0\" \n| where AppDisplayName !in - (\"Office 365 Exchange Online\", \"Skype for Business Online\")\n| project - SuccessLogonTime = TimeGenerated, UserPrincipalName, SuccessIPAddress = IPAddress, - AppDisplayName, SuccessIPBlock = strcat(split(IPAddress, \".\")[0], \".\", - split(IPAddress, \".\")[1])\n| join kind= inner (\n SigninLogs \n | - where TimeGenerated >= ago(timeFrame) \n | where ResultType !in (\"0\", - \"50140\") \n | where ResultDescription !~ \"Other\" \n | where AppDisplayName - !in (\"Office 365 Exchange Online\", \"Skype for Business Online\")\n | - project FailedLogonTime = TimeGenerated, UserPrincipalName, FailedIPAddress - = IPAddress, AppDisplayName, ResultType, ResultDescription\n) on UserPrincipalName, - AppDisplayName \n| where SuccessLogonTime < FailedLogonTime and FailedLogonTime - - SuccessLogonTime <= logonDiff and FailedIPAddress !startswith SuccessIPBlock\n| - summarize FailedLogonTime = max(FailedLogonTime), SuccessLogonTime = max(SuccessLogonTime) - by UserPrincipalName, SuccessIPAddress, AppDisplayName, FailedIPAddress, ResultType, - ResultDescription \n| extend timestamp = SuccessLogonTime, AccountCustomEntity - = UserPrincipalName, IPCustomEntity = SuccessIPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Successful - logon from IP and failure from a different IP","description":"Identifies when - a user account successfully logs onto an Azure App from one IP and within - 10 mins failed to logon to the same App via a different IP.\nThis may indicate - a malicious attempt at password guessing based on knowledge of the users account.","tactics":["CredentialAccess","InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/90d3f6ec-80fb-48e0-9937-2c70c9df9bad","name":"90d3f6ec-80fb-48e0-9937-2c70c9df9bad","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet DomainList = dynamic([\"tor2web.org\", \"tor2web.com\", - \"torlink.co\", \"onion.to\", \"onion.ink\", \"onion.cab\", \"onion.nu\", - \"onion.link\", \n\"onion.it\", \"onion.city\", \"onion.direct\", \"onion.top\", - \"onion.casa\", \"onion.plus\", \"onion.rip\", \"onion.dog\", \"tor2web.fi\", - \n\"tor2web.blutmagie.de\", \"onion.sh\", \"onion.lu\", \"onion.pet\", \"t2w.pw\", - \"tor2web.ae.org\", \"tor2web.io\", \"tor2web.xyz\", \"onion.lt\", \n\"s1.tor-gateways.de\", - \"s2.tor-gateways.de\", \"s3.tor-gateways.de\", \"s4.tor-gateways.de\", \"s5.tor-gateways.de\", - \"hiddenservice.net\"]);\nSyslog\n| where TimeGenerated >= ago(timeframe)\n| - where ProcessName contains \"squid\"\n| extend URL = extract(\"(([A-Z]+ [a-z]{4,5}:\\\\/\\\\/)|[A-Z]+ - )([^ :]*)\",3,SyslogMessage), \n SourceIP = extract(\"([0-9]+ )(([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.([0-9]{1,3}))\",2,SyslogMessage), - \n Status = extract(\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))\",1,SyslogMessage), - \n HTTP_Status_Code = extract(\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))/([0-9]{3})\",8,SyslogMessage),\n User - = extract(\"(CONNECT |GET )([^ ]* )([^ ]+)\",3,SyslogMessage),\n RemotePort - = extract(\"(CONNECT |GET )([^ ]*)(:)([0-9]*)\",4,SyslogMessage),\n Domain - = extract(\"(([A-Z]+ [a-z]{4,5}:\\\\/\\\\/)|[A-Z]+ )([^ :\\\\/]*)\",3,SyslogMessage),\n Bytes - = toint(extract(\"([A-Z]+\\\\/[0-9]{3} )([0-9]+)\",2,SyslogMessage)),\n contentType - = extract(\"([a-z/]+$)\",1,SyslogMessage)\n| extend TLD = extract(\"\\\\.[a-z]*$\",0,Domain)\n| - where HTTP_Status_Code == \"200\"\n| where Domain contains \".\"\n| where - Domain has_any (DomainList)\n| extend timestamp = TimeGenerated, URLCustomEntity - = URL, IPCustomEntity = SourceIP, AccountCustomEntity = User","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"Squid - proxy events for ToR proxies","description":"Check for Squid proxy events - associated with common ToR proxies. This query presumes the default squid - log format is being used.\nhttp://www.squid-cache.org/Doc/config/access_log/","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-07-12T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b4ceb583-4c44-4555-8ecf-39f572e827ba","name":"b4ceb583-4c44-4555-8ecf-39f572e827ba","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 1d;\nlet timeframe = 1h;\nlet scorethreshold - = 1.5;\nlet percentthreshold = 50;\n// Preparing the time series data aggregated - hourly count of MailItemsAccessd Operation in the form of multi-value array - to use with time series anomaly function.\nlet TimeSeriesData =\nOfficeActivity\n| - where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\n| - where OfficeWorkload=~ \"Exchange\" and Operation =~ \"MailItemsAccessed\" - and ResultStatus =~ \"Succeeded\"\n| project TimeGenerated, Operation, MailboxOwnerUPN\n| - make-series Total=count() on TimeGenerated from startofday(ago(starttime)) - to startofday(ago(endtime)) step timeframe;\nlet TimeSeriesAlerts = TimeSeriesData\n| - extend (anomalies, score, baseline) = series_decompose_anomalies(Total, scorethreshold, - -1, ''linefit'')\n| mv-expand Total to typeof(double), TimeGenerated to typeof(datetime), - anomalies to typeof(double), score to typeof(double), baseline to typeof(long)\n| - where anomalies > 0\n| project TimeGenerated, Total, baseline, anomalies, - score;\n// Joining the flagged outlier from the previous step with the original - dataset to present contextual information\n// during the anomalyhour to analysts - to conduct investigation or informed decisions.\nTimeSeriesAlerts | where - TimeGenerated > ago(2d)\n// Join against base logs since specified timeframe - to retrive records associated with the hour of anomoly\n| join (\n OfficeActivity\n| - where TimeGenerated > ago(2d)\n| where OfficeWorkload=~ \"Exchange\" and Operation - =~ \"MailItemsAccessed\" and ResultStatus =~ \"Succeeded\"\n) on TimeGenerated","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Exchange - workflow MailItemsAccessed operation anomaly","description":"Identifies anomalous - increases in Exchange mail items accessed operations.\nThe query leverages - KQL built-in anomaly detection algorithms to find large deviations from baseline - patterns.\nSudden increases in execution frequency of sensitive actions should - be further investigated for malicious activity.\nManually change scorethreshold - from 1.5 to 3 or higher to reduce the noise based on outliers flagged from - the query criteria.\nRead more about MailItemsAccessed- https://docs.microsoft.com/microsoft-365/compliance/advanced-audit?view=o365-worldwide#mailitemsaccessed","tactics":["Collection"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-12-10T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8c2ef238-67a0-497d-b1dd-5c8a0f533e25","name":"8c2ef238-67a0-497d-b1dd-5c8a0f533e25","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet EventNameList = dynamic([\"AuthorizeDBSecurityGroupIngress\",\"CreateDBSecurityGroup\",\"DeleteDBSecurityGroup\",\"RevokeDBSecurityGroupIngress\"]);\nAWSCloudTrail\n| - where TimeGenerated > ago(timeframe)\n| where EventName in~ (EventNameList)\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by EventName, EventTypeName, UserIdentityAccountId, UserIdentityPrincipalid, - UserAgent, UserIdentityUserName, SessionMfaAuthenticated, SourceIpAddress, - AWSRegion, EventSource, AdditionalEventData, ResponseElements\n| extend timestamp - = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, IPCustomEntity - = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Changes - to internet facing AWS RDS Database instances","description":"Amazon Relational - Database Service (RDS) is scalable relational database in the cloud. \nIf - your organization have one or more AWS RDS Databases running, monitoring changes - to especially internet facing AWS RDS (Relational Database Service) \nOnce - alerts triggered, validate if changes observed are authorized and adhere to - change control policy. \nMore information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255\nand - RDS API Reference Docs: https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_Operations.html","tactics":["Persistence"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/09551db0-e147-4a0c-9e7b-918f88847605","name":"09551db0-e147-4a0c-9e7b-918f88847605","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet tokens = dynamic([\"SSL_HandShaking\", \"ASN2_TYPE_new\", - \"sql_blob_open\", \"cmsSetLogHandlerTHR\", \"ntSystemInfo\", \"SetWebFilterString\", - \"CleanupBrokerString\", \"glInitSampler\", \"deflateSuffix\", \"ntWindowsProc\"]);\nlet - DomainNames = dynamic([''codevexillium.org'', ''angeldonationblog.com'', ''investbooking.de'', - ''krakenfolio.com'']);\nlet SHA256Hash = dynamic([''58a74dceb2022cd8a358b92acd1b48a5e01c524c3b0195d7033e4bd55eff4495'',''e0e59bfc22876c170af65dcbf19f744ae560cc43b720b23b9d248f4505c02f3e'',''3d3195697521973efe0097a320cbce0f0f98d29d50e044f4505e1fbc043e8cf9'', - ''0a2d81164d524be7022ba8fd4e1e8e01bfd65407148569d172e2171b5cd76cd4'', ''96d7a93f6691303d39a9cc270b8814151dfec5683e12094537fd580afdf2e5fe'',''dc4cf164635db06b2a0b62d313dbd186350bca6fc88438617411a68df13ec83c'', - ''46efd5179e43c9cbf07dcec22ce0d5527e2402655aee3afc016e5c260650284a'', ''95e42a94d4df1e7e472998f43b9879eb34aaa93f3705d7d3ef9e3b97349d7008'', - ''9d5320e883264a80ea214077f44b1d4b22155446ad5083f4b27d2ab5bd127ef5'', ''9fd05063ad203581a126232ac68027ca731290d17bd43b5d3311e8153c893fe3'', - ''ada7e80c9d09f3efb39b729af238fcdf375383caaf0e9e0aed303931dc73b720'', ''edb1597789c7ed784b85367a36440bf05267ac786efe5a4044ec23e490864cee'', - ''33665ce1157ddb7cd7e905e3356b39245dfba17b7a658bdbf02b6968656b9998'', ''3ab770458577eb72bd6239fe97c35e7eb8816bce5a4b47da7bd0382622854f7c'', - ''b630ad8ffa11003693ce8431d2f1c6b8b126cd32b657a4bfa9c0dbe70b007d6c'', ''53f3e55c1217dafb8801af7087e7d68b605e2b6dde6368fceea14496c8a9f3e5'', - ''99c95b5272c5b11093eed3ef2272e304b7a9311a22ff78caeb91632211fcb777'', ''f21abadef52b4dbd01ad330efb28ef50f8205f57916a26daf5de02249c0f24ef'', - ''2cbdea62e26d06080d114bbd922d6368807d7c6b950b1421d0aa030eca7e85da'', ''079659fac6bd9a1ce28384e7e3a465be4380acade3b4a4a4f0e67fd0260e9447'']);\nlet - SigNames = dynamic([\"Backdoor:Script/ComebackerCompile.A!dha\", \"Trojan:Win64/Comebacker.A!dha\", - \"Trojan:Win64/Comebacker.A.gen!dha\", \"Trojan:Win64/Comebacker.B.gen!dha\", - \"Trojan:Win32/Comebacker.C.gen!dha\", \"Trojan:Win32/Klackring.A!dha\", \"Trojan:Win32/Klackring.B!dha\"]);\n(union - isfuzzy=true\n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe) - \n| parse Message with * ''('' DNSName '')'' * \n| where isnotempty(FileHash)\n| - where FileHash in~ (SHA256Hash) or DNSName in~ (DomainNames)\n| extend Account - = SourceUserID, Computer = DeviceName, IPAddress = SourceIP\n| project Type, - TimeGenerated, Computer, Account, IPAddress, FileHash, DNSName\n),\n(DnsEvents - \n| where TimeGenerated >= ago(timeframe) \n| extend DNSName = Name\n| where - isnotempty(DNSName)\n| where DNSName in~ (DomainNames)\n| extend DataType - = \"DnsEvents\", IPAddress = ClientIP\n| project Type, TimeGenerated, Computer, - IPAddress, DNSName\n),\n(VMConnection \n| where TimeGenerated >= ago(timeframe) - \n| parse RemoteDnsCanonicalNames with * ''[\"'' DNSName ''\"]'' *\n| where - isnotempty(DNSName)\n| where DNSName in~ (DomainNames)\n| extend IPAddress - = RemoteIp\n| project Type, TimeGenerated, Computer, IPAddress, DNSName \n),\n(Event\n//This - query uses sysmon data depending on table name used this may need updataing\n| - where TimeGenerated >= ago(timeframe)\n| where Source == \"Microsoft-Windows-Sysmon\"\n| - extend EvData = parse_xml(EventData)\n| extend EventDetail = EvData.DataItem.EventData.Data\n| - extend Hashes = EventDetail.[16].[\"#text\"]\n| where isnotempty(Hashes)\n| - parse Hashes with * ''SHA256='' SHA256 '','' * \n| where SHA256 in~ (SHA256Hash) - \n| extend Type = strcat(Type, \": \", Source), Account = UserName, FileHash - = Hashes\n| project Type, TimeGenerated, Computer, Account, FileHash\n),\n(DeviceFileEvents - \n| where TimeGenerated >= ago(timeframe) \n| where SHA256 in~ (SHA256Hash)\n| - extend Account = RequestAccountName, Computer = DeviceName, IPAddress = RequestSourceIP, - CommandLine = InitiatingProcessCommandLine, FileHash = SHA256\n| project Type, - TimeGenerated, Computer, Account, IPAddress, CommandLine, FileHash\n),\n(DeviceNetworkEvents - \n| where TimeGenerated >= ago(timeframe) \n| where RemoteUrl in~ (DomainNames)\n| - extend Computer = DeviceName, IPAddress = LocalIP, Account = InitiatingProcessAccountName\n| - project Type, TimeGenerated, Computer, Account, IPAddress, RemoteUrl\n),\n(SecurityAlert\n| - where TimeGenerated >= ago(timeframe)\n| where Entities has_any (SigNames)\n| - extend Computer = tostring(parse_json(Entities)[0].HostName) \n| project Type, - TimeGenerated, Computer\n),\n(DeviceProcessEvents \n| where TimeGenerated - >= ago(timeframe) \n| where FileName =~ \"powershell.exe\" or FileName =~ - \"rundll32.exe\"\n| where (ProcessCommandLine has \"is64bitoperatingsystem\" - and ProcessCommandLine has \"Debug\\\\Browse\") or (ProcessCommandLine has_any - (tokens))\n| extend Computer = DeviceName, Account = AccountName, CommandLine - = ProcessCommandLine\n| project Type, TimeGenerated, Computer, Account, CommandLine, - FileName\n),\n(SecurityEvent\n| where TimeGenerated >= ago(timeframe) \n| - where ProcessName has_any (\"powershell.exe\", \"rundll32.exe\")\n| where - (CommandLine has \"is64bitoperatingsystem\" and CommandLine has \"Debug\\\\Browse\") - or (CommandLine has_any (tokens))\n| project Type, TimeGenerated, Computer, - Account, ProcessName, CommandLine \n)\n)\n| extend timestamp = TimeGenerated, - AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity - = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - ZINC Comebacker and Klackring malware hashes","description":"ZINC attacks - against security researcher campaign malware hashes.","tactics":["CommandAndControl","Execution"],"lastUpdatedDateUTC":"2021-02-01T00:00:00Z","createdDateUTC":"2021-01-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceProcessEvents"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceFileEvents"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceNetworkEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a7427ed7-04b4-4e3b-b323-08b981b9b4bf","name":"a7427ed7-04b4-4e3b-b323-08b981b9b4bf","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n| where isnotempty(FileHashValue)\n| join (\n SecurityEvent - | where TimeGenerated >= ago(dt_lookBack)\n | where EventID in (\"8003\",\"8002\",\"8005\")\n | - where isnotempty(FileHash)\n | extend SecurityEvent_TimeGenerated = TimeGenerated, - Event = EventID\n)\non $left.FileHashValue == $right.FileHash\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, - Url, ExpirationDateTime, ConfidenceScore,\nSecurityEvent_TimeGenerated, Process, - FileHash, Computer, Account, Event\n| extend timestamp = SecurityEvent_TimeGenerated, - AccountCustomEntity = Account, HostCustomEntity = Computer, URLCustomEntity - = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map File Hash to Security Event","description":"Identifies a match in Security - Event data from any File Hash IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e7ec9fa6-e7f7-41ed-a34b-b956837a3ee6","name":"e7ec9fa6-e7f7-41ed-a34b-b956837a3ee6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - startdate = 1d;\nlet threshold = 15;\n// Below pulls messages from syslog-authpriv - logs where there was an authentication failure with an unknown user.\n// IP - address of system attempting logon is also extracted from the SyslogMessage - field. Some of these messages\n// are aggregated.\nlet authfail = Syslog\n| - where TimeGenerated >= ago(startdate) \n| where Facility =~ \"authpriv\" // - looks at authpriv messages\n| where SyslogMessage contains \"authentication - failure\" and SyslogMessage contains \" uid=0\"\n| parse SyslogMessage with - * \"rhost=\" ExternalIP\n| project TimeGenerated, Computer, ProcessName, HostIP, - ExternalIP, ProcessID; \n// Below pulls messages from syslog-authpriv logs - that show each instance an unknown user tried to logon. \nlet userfail = Syslog - \n| where TimeGenerated >= ago(startdate)\n| where Facility =~ \"authpriv\" - \n| where SyslogMessage contains \"user unknown\"\n| project TimeGenerated, - Computer, HostIP, ProcessID;\n// Join the two log messages above\nlet userauthfail - = authfail | join (userfail) on Computer, HostIP, ProcessID\n| project TimeGenerated, - Computer, HostIP, ExternalIP, ProcessID ;\n// Extract the EventTime of the - first logon attempt\nlet firstfail = userauthfail\n| summarize arg_min(TimeGenerated, - *) by Computer, ExternalIP\n| project Computer, ExternalIP, FirstLogonAttempt - = TimeGenerated;\n// Extract the EventTime of the last logon attempt\nlet - lastfail = userauthfail\n| summarize arg_max(TimeGenerated, *) by Computer, - ExternalIP\n| project Computer, ExternalIP, LatestLogonAttempt = TimeGenerated;\n// - Join first and last logon attempt data and calculate the time between them - (AttemptPeriodLength).\nlet faildates = firstfail | join (lastfail) on Computer, - ExternalIP\n| project ExternalIP, Computer, FirstLogonAttempt, LatestLogonAttempt, - TimeBetweenLogonAttempts = LatestLogonAttempt - FirstLogonAttempt;\n// Count - the number of failed logon attempts by External IP and internal machine\nlet - totalfails = userauthfail\n| summarize StartTimeUtc = min(TimeGenerated), - EndTimeUtc = max(TimeGenerated), TotalLogonAttempts = count() by ExternalIP, - Computer, HostIP\n| project StartTimeUtc, EndTimeUtc, ExternalIP, Computer, - HostIP, TotalLogonAttempts;\n// Combine total attempts with timing data from - above\nlet finalfails = totalfails | join (faildates) on Computer, ExternalIP\n| - project StartTimeUtc, EndTimeUtc, SourceAddress = ExternalIP, DestinationHost - = Computer, DestinationIP = HostIP, TotalLogonAttempts, FirstLogonAttempt, - LatestLogonAttempt, TimeBetweenLogonAttempts\n| order by DestinationHost asc - nulls last;\nfinalfails \n| where TotalLogonAttempts >= threshold\n| extend - timestamp = StartTimeUtc, HostCustomEntity = DestinationHost, IPCustomEntity - = DestinationIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - logon attempts in authpriv","description":"Identifies failed logon attempts - from unknown users in Syslog authpriv logs. The unknown user means the account - that tried to log in \nisn''t provisioned on the machine. A few hits could - indicate someone attempting to access a machine they aren''t authorized to - access. \nIf there are many of hits, especially from outside your network, - it could indicate a brute force attack. \nDefault threshold for logon attempts - is 15.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a22740ec-fc1e-4c91-8de6-c29c6450ad00","name":"a22740ec-fc1e-4c91-8de6-c29c6450ad00","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"SigninLogs\n| - where ResultType == 500121\n| where Status has \"MFA Denied; user declined - the authentication\"\n| extend AccountCustomEntity = AlternateSignInName\n| - extend IPCustomEntity = IPAddress\n| extend URLCustomEntity = ClientAppUsed","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"Explicit - MFA Deny","description":"User explicitly denies MFA push, indicating that - login was not expected and the account''s password may be compromised.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-10-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/68271db2-cbe9-4009-b1d3-bb3b5fe5713c","name":"68271db2-cbe9-4009-b1d3-bb3b5fe5713c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - detectionTime = 30d;\nlet User_Agents = dynamic ([\"Mozilla/5.0 (Windows NT - 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70\", \n\"Mozilla/5.0 - (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) - Version/12.0.1 Safari/605.1.15\", \n\"Mozilla/5.0 (Windows NT 10.0; Win64; - x64; rv:63.0) Gecko/20100101 Firefox/63.0\", \n\"Mozilla/5.0 (Windows NT 10.0; - Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36\", - \n\"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like - Gecko) Chrome/70.0.3538.110 Safari/537.36\"]);\nOfficeActivity\n| where TimeGenerated - > ago(detectionTime)\n| where RecordType in (\"AzureActiveDirectoryAccountLogon\", - \"AzureActiveDirectoryStsLogon\") \n| where Operation != ''UserLoggedIn''\n| - extend UserAgent = iff(parse_json(ExtendedProperties)[0].Name =~ \"UserAgent\", - extractjson(\"$[0].Value\", ExtendedProperties, typeof(string)),\"\")\n| mv-expand - parse_json(ExtendedProperties)\n| where ExtendedProperties.Name =~ \"RequestType\"\n| - extend RequestType = todynamic(ExtendedProperties).Value\n| where UserAgent - =~ \"ms-office\" or UserAgent has_any (User_Agents)\n| summarize authAttempts=dcount(TimeGenerated), - firstAttempt=min(TimeGenerated), lastAttempt=max(TimeGenerated), uniqueIPs=dcount(ClientIP), - uniqueAccounts=dcount(UserId), attemptedAccounts=make_set(UserId) by UserAgent\n| - where authAttempts > 500\n| extend timestamp = firstAttempt\n| sort by uniqueAccounts","queryFrequency":"P7D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Possible - STRONTIUM attempted credential harvesting - Oct 2020","description":"Surfaces - potential STRONTIUM group Office365 credential harvesting attempts within - OfficeActivity Logon events.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-09T00:00:00Z","createdDateUTC":"2020-09-10T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fc1b7e7a-bc24-42c3-ad67-5c76c8fcb2d6","name":"fc1b7e7a-bc24-42c3-ad67-5c76c8fcb2d6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.0.0","techniques":["T1001"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":[{"prioritize":null,"exclude":".txt,.jpg,.mp4","dataType":"string","name":"File - extension","description":"Give comma separated file extension to exclude from - source data within double quotes, example: \".txt,.jpg,.mp4\"","sequenceNumber":2,"rerun":"RerunAlways"}],"thresholdObservations":[{"minimum":"5","maximum":"100","value":"10","name":"Minimum - number of downgrades","description":"Generate an anomaly when number of downgrade - label is greater than the chosen value","sequenceNumber":1,"rerun":"RerunAlways"}]},"frequency":"P1D","displayName":"(Preview) - Unusual mass downgrade AIP label","description":"This algorithm detects unusual - high volume of downgrade label activity in Azure Information Protection (AIP) - logs.\nIt considers \"AIP\" workload records for a given number of days and - determines the sequence of activity performed on documents along with the - label applied to classify unusual volume of downgrade activity.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-18T00:00:00Z","createdDateUTC":"2020-11-18T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureInformationProtection","dataTypes":["InformationProtectionLogs_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8ee967a2-a645-4832-85f4-72b635bcb3a6","name":"8ee967a2-a645-4832-85f4-72b635bcb3a6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\n//Adjust this threshold to fit the environment\nlet signin_threshold - = 5;\n//Make a list of all IPs with failed signins to AAD above our threshold\nlet - suspicious_signins =\nSigninLogs\n| where TimeGenerated >= ago(timeframe)\n| - where ResultType !in (\"0\", \"50125\", \"50140\")\n| where IPAddress != \"127.0.0.1\"\n| - summarize count() by IPAddress\n| where count_ > signin_threshold\n| summarize - make_list(IPAddress);\n//See if any of these IPs have sucessfully logged into - *nix hosts\nlet linux_logons =\nSyslog\n| where TimeGenerated >= ago(timeframe)\n| - where Facility contains \"auth\" and ProcessName != \"sudo\"\n| where SyslogMessage - has \"Accepted\"\n| extend SourceIP = extract(\"(([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.(([0-9]{1,3})))\",1,SyslogMessage)\n| - where SourceIP in (suspicious_signins)\n| extend Reason = \"Multiple failed - AAD logins from IP address\"\n| project TimeGenerated, Computer, HostIP, IpAddress - = SourceIP, SyslogMessage, Facility, ProcessName, Reason;\n//See if any of - these IPs have sucessfully logged into Windows hosts\nlet win_logons =\nSecurityEvent\n| - where TimeGenerated >= ago(timeframe)\n| where EventID == 4624\n| where LogonType - in (10, 7, 3)\n| where IpAddress != \"-\"\n| where IpAddress in (suspicious_signins)\n| - extend Reason = \"Multiple failed AAD logins from IP address\"\n| project - TimeGenerated, Account, AccountType, Computer, Activity, EventID, LogonProcessName, - IpAddress, LogonTypeName, TargetUserSid, Reason;\nunion isfuzzy=true linux_logons,win_logons\n| - extend timestamp = TimeGenerated, AccountCustomEntity = Account, IPCustomEntity - = IpAddress, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - AzureAD logons but success logon to host","description":"Identifies a list - of IP addresses with a minimum number (default of 5) of failed logon attempts - to Azure Active Directory.\nUses that list to identify any successful remote - logons to hosts from these IPs within the same timeframe.","tactics":["InitialAccess","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/543c9254-eb6f-4fdd-858d-783e0e3d5cb9","name":"543c9254-eb6f-4fdd-858d-783e0e3d5cb9","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.0.0","techniques":["T1001"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":[{"prioritize":null,"exclude":".msg,.jpg,.txt","dataType":"string","name":"File - extension","description":"Give comma separated file extension to exclude from - source data, for example: .txt,.jpg,.mp4","sequenceNumber":2,"rerun":"RerunAlways"}],"thresholdObservations":[{"minimum":"0","maximum":"1","value":"0.9","name":"Score","description":"Generate - an anomaly when the error percentile is greater than chosen value","sequenceNumber":1,"rerun":"NotRequired"}]},"frequency":"P1D","displayName":"(Preview) - Suspicious number of protected documents accessed","description":"This algorithm - is to detect high volume of access to protected documents in Azure Information - Protection (AIP) logs. \nIt considers AIP workload records for a given number - of days and determines whether the user performed unusual access to protected - documents in a day given his/her historical behavior.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-02-24T00:00:00Z","createdDateUTC":"2021-02-03T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureInformationProtection","dataTypes":["InformationProtectionLogs_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4a3073ac-7383-48a9-90a8-eb6716183a54","name":"4a3073ac-7383-48a9-90a8-eb6716183a54","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - excludeProcs = dynamic([@\"\\SolarWinds\\Orion\\APM\\APMServiceControl.exe\", - @\"\\SolarWinds\\Orion\\ExportToPDFCmd.Exe\", @\"\\SolarWinds.Credentials\\SolarWinds.Credentials.Orion.WebApi.exe\", - @\"\\SolarWinds\\Orion\\Topology\\SolarWinds.Orion.Topology.Calculator.exe\", - @\"\\SolarWinds\\Orion\\Database-Maint.exe\", @\"\\SolarWinds.Orion.ApiPoller.Service\\SolarWinds.Orion.ApiPoller.Service.exe\", - @\"\\Windows\\SysWOW64\\WerFault.exe\"]);\nDeviceProcessEvents\n| where InitiatingProcessFileName - =~ \"solarwinds.businesslayerhost.exe\"\n| where not(FolderPath has_any (excludeProcs))\n| - extend\n timestamp = TimeGenerated,\n AccountCustomEntity = iff(isnotempty(InitiatingProcessAccountUpn), - InitiatingProcessAccountUpn, InitiatingProcessAccountName),\n HostCustomEntity - = DeviceName,\n FileHashCustomEntity = MD5","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"FileHash","fieldMappings":[{"identifier":"Algorithm","columnName":"MD5"},{"identifier":"Value","columnName":"FileHashCustomEntity"}]}],"displayName":"SUNBURST - suspicious SolarWinds child processes","description":"Identifies suspicious - child processes of SolarWinds.Orion.Core.BusinessLayer.dll that may be evidence - of the SUNBURST backdoor\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- - https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f","tactics":["Execution","Persistence"],"lastUpdatedDateUTC":"2021-01-31T00:00:00Z","createdDateUTC":"2020-12-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceProcessEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6c360107-f3ee-4b91-9f43-f4cfd90441cf","name":"6c360107-f3ee-4b91-9f43-f4cfd90441cf","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nSecurityEvent\n| where TimeGenerated >= ago(timeframe) \n| - where EventID == 4738\n// 2089 value indicates the Don''t Expire Password - value has been set\n| where UserAccountControl has \"%%2089\" \n| extend Value_2089 - = iff(UserAccountControl has \"%%2089\",\"''Don''t Expire Password'' - Enabled\", - \"Not Changed\")\n// 2050 indicates that the Password Not Required value is - NOT set, this often shows up at the same time as a 2089 and is the recommended - value. This value may not be in the event. \n| extend Value_2050 = iff(UserAccountControl - has \"%%2050\",\"''Password Not Required'' - Disabled\", \"Not Changed\")\n// - If value %%2082 is present in the 4738 event, this indicates the account has - been configured to logon WITHOUT a password. Generally you should only see - this value when an account is created and only in Event 4720: Account Creation - Event. \n| extend Value_2082 = iff(UserAccountControl has \"%%2082\",\"''Password - Not Required'' - Enabled\", \"Not Changed\")\n| project StartTime = TimeGenerated, - EventID, Activity, Computer, TargetAccount, TargetSid, AccountType, UserAccountControl, - Value_2089, Value_2050, Value_2082, SubjectAccount\n| extend timestamp = StartTime, - AccountCustomEntity = TargetAccount, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"},{"identifier":"Sid","columnName":"TargetSid"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"AD - account with Don''t Expire Password","description":"Identifies whenever a - user account has the setting \"Password Never Expires\" in the user account - properties selected.\nThis is indicated in Security event 4738 in the EventData - item labeled UserAccountControl with an included value of %%2089.\n%%2089 - resolves to \"Don''t Expire Password - Enabled\".","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-01-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2ca4e7fc-c61a-49e5-9736-5da8035c47e0","name":"2ca4e7fc-c61a-49e5-9736-5da8035c47e0","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 8;\nCarbonBlackNotifications_CL\n| where - TimeGenerated > timeframe\n| where threatHunterInfo_score_d >= threshold\n| - extend eventTime = datetime(1970-01-01) + tolong(threatHunterInfo_time_d/1000) - * 1sec\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), - count() by eventTime, Threat_Name = threatHunterInfo_reportName_s, Device_Name - = deviceInfo_deviceName_s, Internal_IP = deviceInfo_internalIpAddress_s, - External_IP = deviceInfo_externalIpAddress_s, Threat_Score = threatHunterInfo_score_d\n| - project-away count_\n| extend timestamp = StartTime, HostCustomEntity = Device_Name, - IPCustomEntity = Internal_IP","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Critical - Threat Detected","description":"This creates an incident in the event a critical - threat was identified on a Carbon Black managed endpoint.","tactics":["LateralMovement"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"VMwareCarbonBlack","dataTypes":["CarbonBlackNotifications_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4acd3a04-2fad-4efc-8a4b-51476594cec4","name":"4acd3a04-2fad-4efc-8a4b-51476594cec4","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - triThreshold = 500;\nlet startTime = 6h;\nlet dgaLengthThreshold = 8;\n// - fetch the alexa top 1M domains\nlet top1M = (externaldata (Position:int, - Domain:string) [@\"http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip\"] with - (format=\"csv\", zipPattern=\"*.csv\"));\n// extract tri grams that are above - our threshold - i.e. are common\nlet triBaseline = top1M\n| extend Domain - = tolower(extract(\"([^.]*).{0,7}$\", 1, Domain))\n| extend AllTriGrams = - array_concat(extract_all(\"(...)\", Domain), extract_all(\"(...)\", substring(Domain, - 1)), extract_all(\"(...)\", substring(Domain, 2)))\n| mvexpand Trigram=AllTriGrams\n| - summarize triCount=count() by tostring(Trigram)\n| sort by triCount desc\n| - where triCount > triThreshold\n| distinct Trigram;\n// collect domain information - from common security log, filter and extract the DGA candidate and its trigrams\nlet - allDataSummarized = CommonSecurityLog\n| where TimeGenerated > ago(startTime)\n| - where isnotempty(DestinationHostName)\n| extend Name = tolower(DestinationHostName)\n| - distinct Name\n| where Name has \".\"\n| where Name !endswith \".home\" and - Name !endswith \".lan\"\n// extract DGA candidate\n| extend DGADomain = extract(\"([^.]*).{0,7}$\", - 1, Name)\n| where strlen(DGADomain) > dgaLengthThreshold\n// throw out domains - with number in them\n| where DGADomain matches regex \"^[A-Za-z]{0,}$\"\n// - extract the tri grams from summarized data\n| extend AllTriGrams = array_concat(extract_all(\"(...)\", - DGADomain), extract_all(\"(...)\", substring(DGADomain, 1)), extract_all(\"(...)\", - substring(DGADomain, 2)));\n// throw out domains that have repeating tri''s - and/or >=3 repeating letters\nlet nonRepeatingTris = allDataSummarized\n| - join kind=leftanti\n(\n allDataSummarized\n | mvexpand AllTriGrams\n | - summarize count() by tostring(AllTriGrams), DGADomain\n | where count_ - > 1\n | distinct DGADomain\n)\non DGADomain;\n// find domains that do not - have a common tri in the baseline\nlet dataWithRareTris = nonRepeatingTris\n| - join kind=leftanti\n(\n nonRepeatingTris\n | mvexpand AllTriGrams\n | - extend Trigram = tostring(AllTriGrams)\n | distinct Trigram, DGADomain\n | - join kind=inner\n (\n triBaseline\n )\n on Trigram\n | - distinct DGADomain\n)\non DGADomain;\ndataWithRareTris\n// join DGAs back - on connection data\n| join kind=inner\n(\n CommonSecurityLog\n | where - TimeGenerated > ago(startTime)\n | where isnotempty(DestinationHostName)\n | - extend DestinationHostName = tolower(DestinationHostName)\n | project-rename - Name=DestinationHostName, DataSource=DeviceVendor\n | summarize StartTime=min(TimeGenerated), - EndTime=max(TimeGenerated) by Name, SourceIP, DestinationIP, DataSource\n)\non - Name\n| project StartTime, EndTime, Name, DGADomain, SourceIP, DestinationIP, - DataSource\n| extend timestamp=StartTime, IPCustomEntity=SourceIP","queryFrequency":"PT6H","queryPeriod":"PT6H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"DNS","fieldMappings":[{"identifier":"DomainName","columnName":"Name"}]}],"displayName":"Possible - contact with a domain generated by a DGA","description":"Identifies contacts - with domains names in CommonSecurityLog that might have been generated by - a Domain Generation Algorithm (DGA). DGAs can be used\nby malware to generate - rendezvous points that are difficult to predict in advance. This detection - uses the Alexa Top 1 million domain names to build a model\nof what normal - domains look like. It uses this to identify domains that may have been randomly - generated by an algorithm.\nThe triThreshold is set to 500 - increase this - to report on domains that are less likely to have been randomly generated, - decrease it for more likely.\nThe start time and end time look back over 6 - hours of data and the dgaLengthThreshold is set to 8 - meaning domains whose - length is 8 or more are reported.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2020-03-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Zscaler","dataTypes":["CommonSecurityLog"]},{"connectorId":"Barracuda","dataTypes":["CommonSecurityLog"]},{"connectorId":"CEF","dataTypes":["CommonSecurityLog"]},{"connectorId":"CheckPoint","dataTypes":["CommonSecurityLog"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"F5","dataTypes":["CommonSecurityLog"]},{"connectorId":"Fortinet","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/78422ef2-62bf-48ca-9bab-72c69818a425","name":"78422ef2-62bf-48ca-9bab-72c69818a425","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - endtime = 1d;\nlet starttime = 8d;\nlet threshold = 2.0;\nSecurityEvent\n| - where TimeGenerated >= ago(endtime) \n| where EventID == 4624 and LogonType - == 10\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), - ComputerCountToday = dcount(Computer), ComputerSet = makeset(Computer), ProcessSet - = makeset(ProcessName) \nby Account, IpAddress, AccountType, Activity, LogonTypeName\n| - join kind=inner (\nSecurityEvent\n| where TimeGenerated >= ago(starttime) - and TimeGenerated < ago(endtime) \n| where EventID == 4624 and LogonType == - 10\n| summarize ComputerCountPrev7Days = dcount(Computer) by Account, IpAddress\n) - on Account, IpAddress\n| extend Ratio = ComputerCountToday/(ComputerCountPrev7Days*1.0)\n// - Where the ratio of today to previous 7 days is more than double.\n| where - Ratio > threshold\n| project StartTimeUtc, EndTimeUtc, Account, IpAddress, - ComputerSet, ComputerCountToday, ComputerCountPrev7Days, Ratio, AccountType, - Activity, LogonTypeName, ProcessSet\n| extend timestamp = StartTimeUtc, AccountCustomEntity - = Account, IPCustomEntity = IpAddress","queryFrequency":"P1D","queryPeriod":"P8D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Multiple - RDP connections from Single System","description":"Identifies when an RDP - connection is made to multiple systems and above the normal for the previous - 7 days. \nConnections from the same system with the same account within the - same day.\nRDP connections are indicated by the EventID 4624 with LogonType - = 10","tactics":["LateralMovement"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-10-21T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a2e36ce0-da4d-4b6e-88c6-4e40161c5bfc","name":"a2e36ce0-da4d-4b6e-88c6-4e40161c5bfc","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nlet emailregex = @''^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$'';\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n//Filtering the table for Email related IOCs\n| where - isnotempty(EmailRecipient)\n| join (\n SecurityAlert | where TimeGenerated - >= ago(dt_lookBack)\n // Converting Entities into dynamic data type and - use mv-expand to unpack the array\n | extend EntitiesDynamicArray = parse_json(Entities) - | mv-expand EntitiesDynamicArray\n // Parsing relevant entity column to - filter type account and creating new column by combining account and UPNSuffix\n | - extend Entitytype = tostring(parse_json(EntitiesDynamicArray).Type), EntityName - = tostring(parse_json(EntitiesDynamicArray).Name),\n EntityUPNSuffix = - tostring(parse_json(EntitiesDynamicArray).UPNSuffix)\n | where Entitytype - =~ \"account\"\n | extend EntityEmail = tolower(strcat(EntityName, \"@\", - EntityUPNSuffix))\n | where EntityEmail matches regex emailregex\n | - extend SecurityAlert_TimeGenerated = TimeGenerated\n)\non $left.EmailRecipient - == $right.EntityEmail\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, SecurityAlert_TimeGenerated,\nEmailSenderName, - EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, - EntityEmail, AlertName, AlertType,\nAlertSeverity, Entities, ProviderName, - VendorName\n| extend timestamp = SecurityAlert_TimeGenerated, AccountCustomEntity - = EntityEmail, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Email entity to SecurityAlert","description":"Identifies a match in - SecurityAlert table from any Email IOC from TI which will extend coverage - to datatypes such as MCAS, StorageThreatProtection and many others","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureSecurityCenter","dataTypes":["SecurityAlert"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5d33fc63-b83b-4913-b95e-94d13f0d379f","name":"5d33fc63-b83b-4913-b95e-94d13f0d379f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nlet fileHashIndicators = ThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n| where isnotempty(FileHashValue);\n// Handle matches - against both lower case and uppercase versions of the hash:\n( fileHashIndicators - | extend FileHashValue = tolower(FileHashValue)\n |union (fileHashIndicators - | extend FileHashValue = toupper(FileHashValue)))\n| join (\n CommonSecurityLog - | where TimeGenerated >= ago(dt_lookBack)\n | where isnotempty(FileHash)\n | - extend CommonSecurityLog_TimeGenerated = TimeGenerated\n)\non $left.FileHashValue - == $right.FileHash\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\nCommonSecurityLog_TimeGenerated, - SourceIP, SourcePort, DestinationIP, DestinationPort, SourceUserID, SourceUserName, - DeviceName, DeviceAction,\nRequestURL, DestinationUserName, DestinationUserID, - ApplicationProtocol, Activity\n| extend timestamp = CommonSecurityLog_TimeGenerated, - IPCustomEntity = SourceIP, HostCustomEntity = DeviceName, AccountCustomEntity - = SourceUserName, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map File Hash to CommonSecurityLog Event","description":"Identifies a match - in CommonSecurityLog Event data from any FileHash IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/00282588-11e7-436d-90e8-011256c3c691","name":"00282588-11e7-436d-90e8-011256c3c691","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = ago(1h);\nlet threshold = 100;\nTrendMicro_XDR_CL \n| where - TimeGenerated >= timeframe\n| where modelSeverity_s == ''medium'' or modelSeverity_s == - ''low''\n| extend AccountCustomEntity = impactScope_account_s, HostCustomEntity - = impactScope_hostname_s, IPCustomEntity = impactScope_host_s","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Create - Incident for XDR Alerts (Medium & Low)","description":"This Query creates - an incident based on Trend Micro XDR Workbench Alerts and maps the impacted - entities for Azure Sentinel usage. (Medium & Low Serverity Alerts)","lastUpdatedDateUTC":"2020-12-10T00:00:00Z","createdDateUTC":"2020-12-10T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"TrendMicroXDR","dataTypes":["TrendMicro_XDR_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/46ac55ae-47b8-414a-8f94-89ccd1962178","name":"46ac55ae-47b8-414a-8f94-89ccd1962178","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - mode = ''Blocked''; \nlet successCode = dynamic([''200'', ''101'',''204'', - ''400'',''504'',''304'',''401'',''500'']);\nlet minTime = ago(1d);\nlet maxSessionWindow - = 1h;\nlet sessionBin = maxSessionWindow/2.0;\nAzureDiagnostics\n| where TimeGenerated - > minTime\n| where Category == ''ApplicationGatewayFirewallLog''\n| where - action_s == mode\n| sort by hostname_s asc, clientIp_s asc, TimeGenerated - asc\n| extend SessionStarted = row_window_session(TimeGenerated, maxSessionWindow, - 10m, ((clientIp_s != prev(clientIp_s)) or (hostname_s != prev(hostname_s))))\n| - summarize minTime = min(TimeGenerated), maxTime = max(TimeGenerated), SessionBlockedCount=count() by - hostname_s, clientIp_s, SessionStarted\n| extend duration = maxTime - minTime\n| - extend TimeKey = bin(SessionStarted, sessionBin)\n| join kind = inner(\nAzureDiagnostics\n| - where TimeGenerated > minTime\n| where Category == ''ApplicationGatewayAccessLog''\n| - where httpStatus_d in (successCode) or isempty(httpStatus_d)\n| extend TimeKey - = range(bin(TimeGenerated-maxSessionWindow, sessionBin), bin(TimeGenerated, - sessionBin), sessionBin)\n| mv-expand TimeKey to typeof(datetime)\n) on $left.hostname_s - == $right.host_s, $left.clientIp_s == $right.clientIP_s, TimeKey\n| where - (TimeGenerated - SessionStarted) between (0m .. duration)\n| extend originalRequestUriWithArgs_s - = column_ifexists(\"originalRequestUriWithArgs_s\", \"\")\n| extend serverStatus_s - = column_ifexists(\"serverStatus_s\", \"\")\n| extend timestamp = SessionStarted, - IPCustomEntity = clientIP_s\n| summarize SuccessfulAccessLogCount = count(), - UserAgents = make_set(userAgent_s), RequestURIs = make_set(requestUri_s) , - OriginalRequestURIs = make_set(originalRequestUriWithArgs_s), \nSuccessCodes - = make_set(httpStatus_d), SuccessCodes_BackendServer = make_set(serverStatus_s) - by timestamp, hostname_s, IPCustomEntity, SessionBlockedCount\n| extend BlockvsSuccessRatio - = SessionBlockedCount/SuccessfulAccessLogCount\n| sort by BlockvsSuccessRatio - desc, timestamp asc\n| where SessionBlockedCount > SuccessfulAccessLogCount","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"A - potentially malicious web request was executed against a web server","description":"Detects - unobstructed Web Application Firewall (WAF) activity in sessions where the - WAF blocked incoming requests by computing the \nratio between blocked requests - and unobstructed WAF requests in these sessions (BlockvsSuccessRatio metric). - A high ratio value for \na given client IP and hostname calls for further - investigation of the WAF data in that session, due to the significantly high - number \nof blocked requests and a few unobstructed logs which may be malicious - but have passed undetected through the WAF. The successCode \nvariable defines - what the detection thinks is a successful status code, and should be altered - to fit the environment.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-01-20T00:00:00Z","createdDateUTC":"2020-11-16T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"WAF","dataTypes":["AzureDiagnostics"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4d500e6d-c984-43a3-9f39-7edec8dcc04d","name":"4d500e6d-c984-43a3-9f39-7edec8dcc04d","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeRange = 1d;\nlet scriptExtensions = dynamic([\".php\", \".aspx\", \".asp\", - \".cfml\"]);\n//The number of URI''s seen to be suspicious, higher = less - likely to be suspicious\nlet uriThreshold = 1;\nCommonSecurityLog\n| where - TimeGenerated >= ago(timeRange)\n// Only look at connections that were allowed - through the web proxy\n| where DeviceVendor =~ \"Zscaler\" and DeviceAction - =~ \"Allowed\"\n// Only look where some data was exchanged.\n| where SentBytes - > 0 and ReceivedBytes > 0\n// Extract the Domain\n| extend Domain = iff(countof(DestinationHostName,''.'') - >= 2, strcat(split(DestinationHostName,''.'')[-2], ''.'',split(DestinationHostName,''.'')[-1]), - DestinationHostName)\n| extend GetData=iff(RequestURL == \"?\", 1, 0)\n| summarize - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), makelist(RequestURL), - makelist(DestinationIP), makelist(SourceIP), numOfConnections = count(), make_set(RequestMethod), - max(GetData), max(RequestContext) by Domain\n// Determine the number of URIs - that have been visited for the domain\n| extend destinationURI = arraylength(list_RequestURL)\n| - where destinationURI <= uriThreshold\n| where tostring(list_RequestURL) has_any(scriptExtensions)\n//Remove - matches with referer\n| where max_RequestContext == \"\"\n//Keep requests - where data was trasferred either in a GET with parameters or a POST\n| where - set_RequestMethod in~ (\"POST\") or max_GetData == 1\n//Defeat email click - tracking, may increase FN''s while decreasing FP''s\n| where list_RequestURL - !has \"click\" and set_RequestMethod !has \"GET\"\n| mvexpand list_RequestURL, - list_DestinationIP\n| extend RequestURL = tostring(list_RequestURL), DestinationIP - = tostring(list_DestinationIP), ClientIP = tostring(list_SourceIP)\n//Extend - custom entitites for incidents\n| extend timestamp = StartTimeUtc, IPCustomEntity - = DestinationIP\n| project-away list_RequestURL, list_DestinationIP, list_SourceIP, - destinationURI, Domain, StartTimeUtc, EndTimeUtc, max_GetData, max_RequestContext","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Request - for single resource on domain","description":"This will look for connections - to a domain where only a single file is requested, this is unusual as most - modern web applications require additional recources. This type of activity - is often assocaited with malware beaconing or tracking URL''s delivered in - emails. Developed for Zscaler but applicable to any outbound web logging.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-03-17T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Zscaler","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/155f40c6-610d-497d-85fc-3cf06ec13256","name":"155f40c6-610d-497d-85fc-3cf06ec13256","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet DomainNames = dynamic([\"yahoo-verification.org\",\"support-servics.com\",\"verification-live.com\",\"com-mailbox.com\",\"com-myaccuants.com\",\"notification-accountservice.com\",\n\"accounts-web-mail.com\",\"customer-certificate.com\",\"session-users-activities.com\",\"user-profile-credentials.com\",\"verify-linke.com\",\"support-servics.net\",\"verify-linkedin.net\", - \n\"yahoo-verification.net\",\"yahoo-verify.net\",\"outlook-verify.net\",\"com-users.net\",\"verifiy-account.net\",\"te1egram.net\",\"account-verifiy.net\",\"myaccount-services.net\",\n\"com-identifier-servicelog.name\",\"microsoft-update.bid\",\"outlook-livecom.bid\",\"update-microsoft.bid\",\"documentsfilesharing.cloud\",\"com-microsoftonline.club\",\n\"confirm-session-identifier.info\",\"session-management.info\",\"confirmation-service.info\",\"document-share.info\",\"broadcast-news.info\",\"customize-identity.info\",\"webemail.info\",\n\"com-identifier-servicelog.info\",\"documentsharing.info\",\"notification-accountservice.info\",\"identifier-activities.info\",\"documentofficupdate.info\",\"recoveryusercustomer.info\",\n\"serverbroadcast.info\",\"account-profile-users.info\",\"account-service-management.info\",\"accounts-manager.info\",\"activity-confirmation-service.info\",\"com-accountidentifier.info\",\n\"com-privacy-help.info\",\"com-sessionidentifier.info\",\"com-useraccount.info\",\"confirmation-users-service.info\",\"confirm-identity.info\",\"confirm-session-identification.info\",\n\"continue-session-identifier.info\",\"customer-recovery.info\",\"customers-activities.info\",\"elitemaildelivery.info\",\"email-delivery.info\",\"identify-user-session.info\",\n\"message-serviceprovider.info\",\"notificationapp.info\",\"notification-manager.info\",\"recognized-activity.info\",\"recover-customers-service.info\",\"recovery-session-change.info\",\n\"service-recovery-session.info\",\"service-session-continue.info\",\"session-mail-customers.info\",\"session-managment.info\",\"session-verify-user.info\",\"shop-sellwear.info\",\n\"supportmailservice.info\",\"terms-service-notification.info\",\"user-activity-issues.info\",\"useridentity-confirm.info\",\"users-issue-services.info\",\"verify-user-session.info\",\n\"login-gov.info\",\"notification-signal-agnecy.info\",\"notifications-center.info\",\"identifier-services-sessions.info\",\"customers-manager.info\",\"session-manager.info\",\n\"customer-managers.info\",\"confirmation-recovery-options.info\",\"service-session-confirm.info\",\"session-recovery-options.info\",\"services-session-confirmation.info\",\n\"notification-managers.info\",\"activities-services-notification.info\",\"activities-recovery-options.info\",\"activity-session-recovery.info\",\"customers-services.info\",\n\"sessions-notification.info\",\"download-teamspeak.info\",\"services-issue-notification.info\",\"microsoft-upgrade.mobi\",\"broadcastnews.pro\",\"mobile-messengerplus.network\"]);\nlet - IPList = dynamic([\"51.91.200.147\"]);\nlet IPRegex = ''[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}'';\n(union - isfuzzy=true\n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe)\n| - parse Message with * ''('' DNSName '')'' * \n| extend MessageIP = extract(IPRegex, - 0, Message)\n| extend RequestURLIP = extract(IPRegex, 0, Message)\n| where - (isnotempty(SourceIP) and SourceIP in (IPList)) or (isnotempty(DestinationIP) - and DestinationIP in (IPList)) \nor (isnotempty(DNSName) and DNSName in~ (DomainNames)) - or (isnotempty(DestinationHostName) and DestinationHostName in~ (DomainNames)) - or (isnotempty(RequestURL) and (RequestURL has_any (DomainNames) or RequestURLIP - in (IPList))) \nor (isnotempty(Message) and MessageIP in (IPList))\n| extend - IPMatch = case(SourceIP in (IPList), \"SourceIP\", DestinationIP in (IPList), - \"DestinationIP\", MessageIP in (IPList), \"Message\", RequestURLIP in (IPList), - \"RequestUrl\", \"NoMatch\") \n| extend timestamp = TimeGenerated , IPCustomEntity - = case(IPMatch == \"SourceIP\", SourceIP, IPMatch == \"DestinationIP\", DestinationIP,IPMatch - == \"Message\", MessageIP,\nIPMatch == \"RequestUrl\", RequestURLIP,\"NoMatch\"), - Account = SourceUserID, Host = DeviceName\n),\n(DnsEvents \n| where TimeGenerated - >= ago(timeframe) \n| extend DestinationIPAddress = IPAddresses, DNSName = - Name, Host = Computer\n| where DestinationIPAddress in (IPList) or DNSName - in~ (DomainNames) \n| extend timestamp = TimeGenerated, IPCustomEntity = DestinationIPAddress, - HostCustomEntity = Host),\n(VMConnection \n| where TimeGenerated >= ago(timeframe) - \n| parse RemoteDnsCanonicalNames with * ''[\"'' DNSName ''\"]'' *\n| where - isnotempty(SourceIP) or isnotempty(DestinationIP) or isnotempty(DNSName)\n| - where SourceIP in (IPList) or DestinationIP in (IPList) or DNSName in~ (DomainNames)\n| - extend IPMatch = case( SourceIP in (IPList), \"SourceIP\", DestinationIP in - (IPList), \"DestinationIP\", \"None\") \n| extend timestamp = TimeGenerated - , IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIP, IPMatch == \"DestinationIP\", - DestinationIP, \"None\"), Host = Computer),\n(OfficeActivity\n| where TimeGenerated - >= ago(timeframe)\n| extend SourceIPAddress = ClientIP, Account = UserId\n| - where SourceIPAddress in (IPList)\n| extend timestamp = TimeGenerated , IPCustomEntity - = SourceIPAddress , AccountCustomEntity = Account )\n)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - Phosphorus group domains/IP","description":"Matches domain name IOCs related - to Phosphorus group activity with CommonSecurityLog, DnsEvents, OfficeActivity - and VMConnection dataTypes.\nReferences: https://blogs.microsoft.com/on-the-issues/2019/03/27/new-steps-to-protect-customers-from-hacking/.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2020-10-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8675dd7a-795e-4d56-a79c-fc848c5ee61c","name":"8675dd7a-795e-4d56-a79c-fc848c5ee61c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nProofPointTAPClicksPermitted_CL\n| where TimeGenerated - >= timeframe\n| where classification_s =~ \"malware\"\n| summarize StartTime - = min(TimeGenerated), EndTime = max(TimeGenerated), count() by TimeGenerated, - Sender = sender_s, SenderIPAddress = senderIP_s, Recipient = recipient_s, - TimeClicked = clickTime_t, URLClicked = url_s\n| extend timestamp = StartTime, - AccountCustomEntity = Recipient, IPCustomEntity = SenderIPAddress, URLCustomEntity - = URLClicked","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"Malware - Link Clicked","description":"This query identifies a user clicking on an email - link whose threat category is classified as a malware","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ProofpointTAP","dataTypes":["ProofPointTAPClicksPermitted_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fbfbf530-506b-49a4-81ad-4030885a195c","name":"fbfbf530-506b-49a4-81ad-4030885a195c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - alertTimeWindow = 1h;\nlet logTimeWindow = 7d;\n// Define script extensions - that suit your web application environment - a sample are provided below\nlet - scriptExtensions = dynamic([\".php\", \".jsp\", \".js\", \".aspx\", \".asmx\", - \".asax\", \".cfm\", \".shtml\"]); \nlet alertData = materialize(SecurityAlert - \n| where TimeGenerated > ago(alertTimeWindow) \n| where ProviderName == \"MDATP\" - \n// Parse and expand the alert JSON \n| extend alertData = parse_json(Entities) - \n| mvexpand alertData);\nlet fileData = alertData\n// Extract web script - files from MDATP alerts - our malicious web scripts - candidate webshells\n| - where alertData.Type =~ \"file\" \n| where alertData.Name has_any(scriptExtensions) - \n| extend FileName = tostring(alertData.Name), Directory = tostring(alertData.Directory);\nlet - hostData = alertData\n// Extract server details from alerts and map to alert - id\n| where alertData.Type =~ \"host\"\n| project HostName = tostring(alertData.HostName), - DnsDomain = tostring(alertData.DnsDomain), SystemAlertId\n| distinct HostName, - DnsDomain, SystemAlertId;\n// Join the files on their impacted servers\nlet - webshellData = fileData\n| join kind=inner (hostData) on SystemAlertId \n| - project TimeGenerated, FileName, Directory, HostName, DnsDomain;\nwebshellData\n| - join ( \n// Find requests that were made to this file on the impacted server - in the W3CIISLog table \nW3CIISLog \n| where TimeGenerated > ago(logTimeWindow) - \n// Restrict to accesses to script extensions \n| where csUriStem has_any(scriptExtensions)\n| - extend splitUriStem = split(csUriStem, \"/\") \n| extend FileName = splitUriStem[-1], - HostName = sComputerName\n// Summarize potential attacker activity\n| summarize - count(), StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), RequestUserAgents=make_set(csUserAgent), - ReqestMethods=make_set(csMethod), RequestStatusCodes=make_set(scStatus), RequestCookies=make_set(csCookie), - RequestReferers=make_set(csReferer), RequestQueryStrings=make_set(csUriQuery) - by AttackerIP=cIP, SiteName=sSiteName, ShellLocation=csUriStem, tostring(FileName), - HostName \n) on FileName, HostName\n| project StartTime, EndTime, AttackerIP, - RequestUserAgents, HostName, SiteName, ShellLocation, ReqestMethods, RequestStatusCodes, - RequestCookies, RequestReferers, RequestQueryStrings, RequestCount = count_\n// - Expose the attacker ip address as a custom entity\n| extend timestamp=StartTime, - IPCustomEntity = AttackerIP, HostCustomEntity = HostName","queryFrequency":"PT1H","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Malicious - web application requests linked with Microsoft Defender for Endpoint (formerly - Microsoft Defender ATP) alerts","description":"Takes Microsoft Defender for - Endpoint (formerly Microsoft Defender ATP) alerts where web scripts are present - in the evidence and correlates with requests made to those scripts\nin the - WCSIISLog to surface new alerts for potentially malicious web request activity.\nThe - lookback for alerts is set to 1h and the lookback for W3CIISLogs is set to - 7d. A sample set of popular web script extensions\nhas been provided in scriptExtensions - that should be tailored to your environment.","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-01-19T00:00:00Z","createdDateUTC":"2020-05-21T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftDefenderAdvancedThreatProtection","dataTypes":["SecurityAlert"]},{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/03e04c97-8cae-48b3-9d2f-4ab262e4ffff","name":"03e04c97-8cae-48b3-9d2f-4ab262e4ffff","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - scriptExtensions = dynamic([\".php\", \".jsp\", \".js\", \".aspx\", \".asmx\", - \".asax\", \".cfm\", \".shtml\"]);\nhttp_proxy_oab_CL\n| where Message contains - \"Download failed and temporary file\"\n| extend File = extract(\"([^\\\\\\\\]*)(\\\\\\\\[^'']*)\",2,Message)\n| - extend Extension = strcat(\".\",split(file, \".\")[-1])\n| extend InteractiveFile - = iif(ext in (scriptExtensions), \"Yes\", \"No\")\n// Uncomment the following - line to alert only on interactive file download type\n//| where InteractiveFile - =~ \"Yes\"\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer\n","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"HAFNIUM - Suspicious File Downloads.","description":"This query looks for messages related - to file downloads of suspicious file types. This query uses the Exchange HttpProxy - AOBGeneratorLog, you will need to onboard this log as a custom log under the - table http_proxy_oab_CL before using this query. \nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-03-02T00:00:00Z","createdDateUTC":"2021-03-02T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/194dd92e-d6e7-4249-85a5-273350a7f5ce","name":"194dd92e-d6e7-4249-85a5-273350a7f5ce","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nOfficeActivity\n| where TimeGenerated >= ago(timeframe)\n| - where UserType in~ (\"Admin\",\"DcAdmin\") \n// Only admin or global-admin - can disable audit logging\n| where Operation =~ \"Set-AdminAuditLogConfig\" - \n| extend AdminAuditLogEnabledValue = tostring(parse_json(tostring(parse_json(tostring(array_slice(parse_json(Parameters),3,3)))[0])).Value)\n| - where AdminAuditLogEnabledValue =~ \"False\" \n| summarize StartTimeUtc = - min(TimeGenerated), EndTimeUtc = max(TimeGenerated), OperationCount = count() - by Operation, UserType, UserId, ClientIP, ResultStatus, Parameters, AdminAuditLogEnabledValue\n| - extend timestamp = StartTimeUtc, AccountCustomEntity = UserId, IPCustomEntity - = ClientIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Exchange - AuditLog disabled","description":"Identifies when the exchange audit logging - has been disabled which may be an adversary attempt\nto evade detection or - avoid other defenses.","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-04-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7efc75ce-e2a4-400f-a8b1-283d3b0f2c60","name":"7efc75ce-e2a4-400f-a8b1-283d3b0f2c60","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet WellKnownLocalSID = \"S-1-5-32-5[0-9][0-9]$\";\nlet WellKnownGroupSID - = \"S-1-5-21-[0-9]*-[0-9]*-[0-9]*-5[0-9][0-9]$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1102$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1103$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-498$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1000$\";\nlet - AC_Add = \nSecurityEvent\n| where TimeGenerated >= ago(timeframe)\n// Event - ID related to member addition.\n| where EventID in (4728, 4732,4756) \n| where - TargetSid matches regex WellKnownLocalSID or TargetSid matches regex WellKnownGroupSID \n| - parse EventData with * ''\"MemberName\">'' AccountAdded \",OU\" * \n| where - isnotempty(AccountAdded)\n| extend GroupAddedTo = TargetUserName, AddingAccount - = Account \n| extend AccountAdded_GroupAddedTo_AddingAccount = strcat(AccountAdded, - \"||\", GroupAddedTo, \"||\", AddingAccount )\n| project AccountAdded_GroupAddedTo_AddingAccount, - AccountAddedTime = TimeGenerated;\nlet AC_Remove = \nSecurityEvent\n| where - TimeGenerated >= ago(timeframe)\n// Event IDs related to member removal.\n| - where EventID in (4729,4733,4757)\n| where TargetSid matches regex WellKnownLocalSID - or TargetSid matches regex WellKnownGroupSID \n| parse EventData with * ''\"MemberName\">'' - AccountRemoved \",OU\" * \n| where isnotempty(AccountRemoved)\n| extend GroupRemovedFrom - = TargetUserName, RemovingAccount = Account\n| extend AccountRemoved_GroupRemovedFrom_RemovingAccount - = strcat(AccountRemoved, \"||\", GroupRemovedFrom, \"||\", RemovingAccount)\n| - project AccountRemoved_GroupRemovedFrom_RemovingAccount, AccountRemovedTime - = TimeGenerated, Computer, RemovedAccountId = tolower(AccountRemoved), \nRemovedByUser - = SubjectUserName, RemovedByUserLogonId = SubjectLogonId, GroupRemovedFrom - = TargetUserName, TargetDomainName; \nAC_Add \n| join kind= inner AC_Remove - on $left.AccountAdded_GroupAddedTo_AddingAccount == $right.AccountRemoved_GroupRemovedFrom_RemovingAccount - \n| extend DurationinSecondAfter_Removed = datetime_diff (''second'', AccountRemovedTime, - AccountAddedTime)\n| where DurationinSecondAfter_Removed > 0\n| project-away - AccountRemoved_GroupRemovedFrom_RemovingAccount\n| extend timestamp = AccountAddedTime, - AccountCustomEntity = RemovedAccountId, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Account - added and removed from privileged groups","description":"Identifies accounts - that are added to privileged group and then quickly removed, which could be - a sign of compromise.'' ","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-04-03T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/472b7cf4-bf1a-4061-b9ab-9fe4894e3c17","name":"472b7cf4-bf1a-4061-b9ab-9fe4894e3c17","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - SeverityTable=datatable(Severity:string,Level:int) [\n\"low\", 1,\n\"medium\", - 2,\n\"high\", 3,\n\"critical\", 4\n];\nlet codeNameList = datatable(Codename:string)[\"C-CLEARTEXT-PASSWORD\", - \"C-PASSWORD-DONT-EXPIRE\", \"C-USER-REVER-PWDS\", \"C-PASSWORD-POLICY\", - \"C-USER-PASSWORD\", \"C-KRBTGT-PASSWORD\", \"C-AAD-SSO-PASSWORD\", \"C-REVER-PWD-GPO\"];\nafad_parser\n| - where MessageType == 0 and Codename in~ (codeNameList)\n| lookup kind=leftouter - SeverityTable on Severity\n| order by Level","queryFrequency":"PT2H","queryPeriod":"PT2H","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Alsid - Password issues","description":"Searches for triggered Indicators of Exposures - related to password issues","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-07T00:00:00Z","createdDateUTC":"2020-11-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AlsidForAD","dataTypes":["AlsidForADLog_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/95a15f39-d9cc-4667-8cdd-58f3113691c9","name":"95a15f39-d9cc-4667-8cdd-58f3113691c9","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - lookback = 14d;\nlet timeframe = 1d;\nSecurityEvent\n| where TimeGenerated - > ago(lookback) and TimeGenerated < ago(timeframe)\n| where EventID == 4688\n| - where ParentProcessName has_any (\"umworkerprocess.exe\", \"UMService.exe\")\n| - join kind=rightanti (\nSecurityEvent\n| where TimeGenerated > ago(timeframe)\n| - where ParentProcessName has_any (\"umworkerprocess.exe\", \"UMService.exe\")\n| - where EventID == 4688) on NewProcessName\n| extend timestamp = TimeGenerated, - AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity - = IpAddress","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"HAFNIUM - New UM Service Child Process","description":"This query looks for new processes - being spawned by the Exchange UM service where that process has not previously - been observed before. \nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-03-02T00:00:00Z","createdDateUTC":"2021-03-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7cb8f77d-c52f-4e46-b82f-3cf2e106224a","name":"7cb8f77d-c52f-4e46-b82f-3cf2e106224a","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - lookBack_long = 14d;\nlet lookBack_med = 7d;\nlet lookBack = 1d;\nSigninLogs\n| - where TimeGenerated >= startofday(ago(lookBack_long))\n| extend locationString - = strcat(tostring(LocationDetails[\"countryOrRegion\"]), \"/\", tostring(LocationDetails[\"state\"]), - \"/\", tostring(LocationDetails[\"city\"]), \";\") \n| project TimeGenerated, - AppDisplayName , UserPrincipalName, locationString \n// Create time series - \n| make-series dLocationCount = dcount(locationString) on TimeGenerated in - range(startofday(ago(lookBack_long)),now(), 1d) \nby UserPrincipalName, AppDisplayName - \n// Compute best fit line for each entry \n| extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dLocationCount) - \n// Chart the 3 most interesting lines \n// A 0-value slope corresponds - to an account being completely stable over time for a given Azure Active Directory - application\n| where Slope > 0.3\n| top 50 by Slope desc\n| join kind = leftsemi - (\nSigninLogs\n| where TimeGenerated >= startofday(ago(lookBack_med))\n| extend - locationString = strcat(tostring(LocationDetails[\"countryOrRegion\"]), \"/\", - tostring(LocationDetails[\"state\"]), \"/\", tostring(LocationDetails[\"city\"]), - \";\") \n| project TimeGenerated, AppDisplayName , UserPrincipalName, locationString - \n| make-series dLocationCount = dcount(locationString) on TimeGenerated in - range(startofday(ago(lookBack_med)) ,now(), 1d) \nby UserPrincipalName, AppDisplayName - \n| extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dLocationCount) - \n| top 50 by Slope desc\n| where Slope > 0.3\n) on UserPrincipalName, AppDisplayName\n| - join kind = leftsemi (\nSigninLogs\n| where TimeGenerated >= startofday(ago(lookBack))\n| - extend locationString = strcat(tostring(LocationDetails[\"countryOrRegion\"]), - \"/\", tostring(LocationDetails[\"state\"]), \"/\", tostring(LocationDetails[\"city\"]), - \";\") \n| project TimeGenerated, AppDisplayName , UserPrincipalName, locationString - \n| make-series dLocationCount = dcount(locationString) on TimeGenerated in - range(startofday(ago(lookBack)) ,now(), 1d) \nby UserPrincipalName, AppDisplayName - \n| extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dLocationCount) - \n| top 50 by Slope desc\n// Higher threshold requirement on last day anomaly\n| - where Slope > 5\n) on UserPrincipalName, AppDisplayName\n| extend timestamp - = TimeGenerated, AccountCustomEntity = UserPrincipalName","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"Anomalous - sign-in location by user account and authenticating application","description":"This - query over Azure Active Directory sign-in considers all user sign-ins for - each Azure Active \nDirectory application and picks out the most anomalous - change in location profile for a user within an \nindividual application. - An alert is generated for recent sign-ins that have location counts that are - anomalous\nover last day but also over the last 7-day and 14-day periods.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/79f29feb-6a9d-4cdf-baaa-2daf480a5da1","name":"79f29feb-6a9d-4cdf-baaa-2daf480a5da1","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1h;\nlet last1h = CommonSecurityLog \n| where TimeGenerated >= - ago(timeframe)\n| where isempty(CommunicationDirection) \n| where DeviceEventClassID - == \"733100\"\n| extend SourceOfDropRateCount = tostring(split(tostring(split(Message, - \"]\")[0]),\"[ \")[1])\n| extend splitMessage = split(Message, \".\")\n| extend - DropRate = tostring(split(tostring(splitMessage[0]),\"] \")[1])\n| extend - CurrentBurstRate = split(tostring(split(tostring(splitMessage[1]),\" \")[0]),\"is - \")\n| extend CurrentBurstRatePerSec = toint(split(tostring(CurrentBurstRate[1]),\" - \")[0])\n| extend MaxConfiguredBurstRate = toint(CurrentBurstRate[2])\n| extend - CurrentAvgRate = split(tostring(split(tostring(splitMessage[1]),\" \")[1]),\"is - \")\n| extend CurrentAvgRatePerSec = toint(split(tostring(CurrentAvgRate[1]),\" - \")[0])\n| extend MaxConfiguredAvgRate = toint(CurrentAvgRate[2])\n| extend - CumulativeTotal = toint(split(tostring(split(tostring(splitMessage[1]),\" \")[2]),\"is - \")[1])\n| summarize last1hCumTotal = sum(CumulativeTotal), last1hAvgRatePerSec - = avg(CurrentAvgRatePerSec), last1hAvgBurstRatePerSec = avg(CurrentBurstRatePerSec) - by DeviceName, DeviceEventClassID, SourceIP, SourceOfDropRateCount, DropRate;\nlet - prev6h = CommonSecurityLog \n| where TimeGenerated between (ago(6h) .. ago(1h))\n| - where isempty(CommunicationDirection) \n| where DeviceEventClassID == \"733100\"\n| - extend SourceOfDropRateCount = tostring(split(tostring(split(Message, \"]\")[0]),\"[ - \")[1])\n| extend splitMessage = split(Message, \".\")\n| extend DropRate - = tostring(split(tostring(splitMessage[0]),\"] \")[1])\n| extend CurrentBurstRate - = split(tostring(split(tostring(splitMessage[1]),\" \")[0]),\"is \")\n| extend - prevCurrentBurstRatePerSec = toint(split(tostring(CurrentBurstRate[1]),\" - \")[0])\n| extend prevMaxConfiguredBurstRate = toint(CurrentBurstRate[2])\n| - extend CurrentAvgRate = split(tostring(split(tostring(splitMessage[1]),\" \")[1]),\"is - \")\n| extend prevCurrentAvgRatePerSec = toint(split(tostring(CurrentAvgRate[1]),\" - \")[0])\n| extend prevMaxConfiguredAvgRate = toint(CurrentAvgRate[2])\n| extend - prevCumulativeTotal = toint(split(tostring(split(tostring(splitMessage[1]),\" \")[2]),\"is - \")[1])\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), - prev6hCumTotal = sum(prevCumulativeTotal), prev6hAvgRatePerSec = avg(prevCurrentAvgRatePerSec), - prev6hAvgBurstRatePerSec = avg(prevCurrentBurstRatePerSec) \nby DeviceName, - DeviceEventClassID, SourceIP, SourceOfDropRateCount, DropRate;\nlast1h | join - (\n prev6h \n) on DeviceName, DeviceEventClassID, SourceIP, SourceOfDropRateCount, - DropRate\n| project StartTimeUtc, EndTimeUtc, DeviceName, DeviceEventClassID, - SourceIP, SourceOfDropRateCount, DropRate, last1hCumTotal, prev6hCumTotal, - prev6hAvgCumTotal = prev6hCumTotal/6, last1hAvgRatePerSec, prev6hAvgRatePerSec, - last1hAvgBurstRatePerSec, prev6hAvgBurstRatePerSec\n// Select only events - that indicate a doubling of the expected rate in the last hour over the previous - 6 hours\n| where last1hCumTotal > 2*prev6hAvgCumTotal or last1hAvgRatePerSec - > 2*prev6hAvgRatePerSec or last1hAvgBurstRatePerSec > 2*prev6hAvgBurstRatePerSec\n| - extend timestamp = StartTimeUtc, IPCustomEntity = SourceIP, HostCustomEntity - = DeviceName","queryFrequency":"PT1H","queryPeriod":"PT6H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Cisco - ASA - average attack detection rate increase","description":"This will help - you determine if Cisco ASA devices are under heavier attack than normal over - the last hour versus the previous 6 hours based on DeviceEventClassID 733100\nReferences: - https://www.cisco.com/c/en/us/td/docs/security/asa/syslog/b_syslog/syslogs9.html\nDetails - on how to further troubleshoot/investigate: https://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/113685-asa-threat-detection.html","tactics":["Discovery","Impact"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7b907bf7-77d4-41d0-a208-5643ff75bf9a","name":"7b907bf7-77d4-41d0-a208-5643ff75bf9a","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet Keywords = dynamic([\"helpdesk\", \" alert\", \" suspicious\", - \"fake\", \"malicious\", \"phishing\", \"spam\", \"do not click\", \"do not - open\", \"hijacked\", \"Fatal\"]);\nOfficeActivity\n| where TimeGenerated - >= ago(timeframe)\n| where Operation =~ \"New-InboxRule\"\n| where Parameters - has \"Deleted Items\" or Parameters has \"Junk Email\" \n| extend Events=todynamic(Parameters)\n| - parse Events with * \"SubjectContainsWords\" SubjectContainsWords ''}''*\n| - parse Events with * \"BodyContainsWords\" BodyContainsWords ''}''*\n| parse - Events with * \"SubjectOrBodyContainsWords\" SubjectOrBodyContainsWords ''}''*\n| - where SubjectContainsWords has_any (Keywords)\n or BodyContainsWords has_any - (Keywords)\n or SubjectOrBodyContainsWords has_any (Keywords)\n| extend ClientIPAddress - = case( ClientIP has \".\", tostring(split(ClientIP,\":\")[0]), ClientIP has - \"[\", tostring(trim_start(@''[[]'',tostring(split(ClientIP,\"]\")[0]))), - ClientIP )\n| extend Keyword = iff(isnotempty(SubjectContainsWords), SubjectContainsWords, - (iff(isnotempty(BodyContainsWords),BodyContainsWords,SubjectOrBodyContainsWords - )))\n| extend RuleDetail = case(OfficeObjectId contains ''/'' , tostring(split(OfficeObjectId, - ''/'')[-1]) , tostring(split(OfficeObjectId, ''\\\\'')[-1]))\n| summarize - count(), StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by Operation, UserId, ClientIPAddress, ResultStatus, Keyword, OriginatingServer, - OfficeObjectId, RuleDetail\n| extend timestamp = StartTimeUtc, IPCustomEntity - = ClientIPAddress, AccountCustomEntity = UserId , HostCustomEntity = OriginatingServer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Malicious - Inbox Rule","description":"Often times after the initial compromise the attackers - create inbox rules to delete emails that contain certain keywords. \n This - is done so as to limit ability to warn compromised users that they''ve been - compromised. Below is a sample query that tries to detect this.\nReference: - https://www.reddit.com/r/sysadmin/comments/7kyp0a/recent_phishing_attempts_my_experience_and_what/","tactics":["Persistence","DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-03-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6d7214d9-4a28-44df-aafb-0910b9e6ae3e","name":"6d7214d9-4a28-44df-aafb-0910b9e6ae3e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"AzureActivity\n| - extend message = tostring(parse_json(Properties).message)\n| extend AppId - = tostring(parse_json(Claims).appid)\n| where AppId contains \"c44b4083-3bb0-49c1-b47d-974e53cbdf3c\"\n| - where OperationName =~ \"Microsoft.Portal/consoles/write\"\n| extend timestamp - = TimeGenerated, AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"New - CloudShell User","description":"Identifies when a user creates an Azure CloudShell - for the first time.\nMonitor this activity to ensure only expected user are - using CloudShell","tactics":["Execution"],"lastUpdatedDateUTC":"2020-12-19T00:00:00Z","createdDateUTC":"2020-12-17T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/cf3ede88-a429-493b-9108-3e46d3c741f7","name":"cf3ede88-a429-493b-9108-3e46d3c741f7","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeRange = 6h;\nlet authenticationWindow = 1h;\nlet authenticationThreshold - = 5;\nSecurityEvent\n| where TimeGenerated > ago(timeRange)\n| where EventID - == 4624 or EventID == 4625\n| where IpAddress != \"-\" and isnotempty(Account)\n| - extend Outcome = iff(EventID == 4624, \"Success\", \"Failure\")\n// bin outcomes - into 5 minute windows to reduce the volume of data\n| summarize OutcomeCount=count() - by Account, IpAddress, Computer, Outcome, bin(TimeGenerated, 5m)\n| project - TimeGenerated, Account, IpAddress, Computer, Outcome, OutcomeCount\n// sort - ready for sessionizing - by account and time of the authentication outcome\n| - sort by Account asc, TimeGenerated asc\n| serialize \n// sessionize into failure - groupings until either the account changes or there is a success\n| extend - SessionStartedUtc = row_window_session(TimeGenerated, timeRange, authenticationWindow, - Account != prev(Account) or prev(Outcome) == \"Success\")\n// count the failures - in each session\n| summarize FailureCountBeforeSuccess=sumif(OutcomeCount, - Outcome == \"Failure\"), StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), - makelist(Outcome), makeset(Computer), makeset(IpAddress) by SessionStartedUtc, - Account\n// the session must not start with a success, and must end with one\n| - where array_index_of(list_Outcome, \"Success\") != 0\n| where array_index_of(list_Outcome, - \"Success\") == array_length(list_Outcome) - 1\n| project-away SessionStartedUtc, - list_Outcome \n// where the number of failures before the success is above - the threshold \n| where FailureCountBeforeSuccess >= authenticationThreshold\n// - expand out ip and computer for customer entity assignment\n| mvexpand set_IpAddress, - set_Computer\n| extend IpAddress = tostring(set_IpAddress), Computer = tostring(set_Computer)\n| - extend timestamp=StartTime, AccountCustomEntity=Account, HostCustomEntity=Computer, - IPCustomEntity=IpAddress","queryFrequency":"PT6H","queryPeriod":"PT6H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"SecurityEvent - - Multiple authentication failures followed by a success","description":"Identifies - accounts who have failed to logon to the domain multiple times in a row, followed - by a successful authentication\nwithin a short time frame. Multiple failed - attempts followed by a success can be an indication of a brute force attempt - or\npossible mis-configuration of a service account within an environment.\nThe - lookback is set to 6h and the authentication window and threshold are set - to 1h and 5, meaning we need to see a minimum\nof 5 failures followed by a - success for an account within 1 hour to surface an alert.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-04-03T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7a58b253-0ef2-4248-b4e5-c350f15a8346","name":"7a58b253-0ef2-4248-b4e5-c350f15a8346","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = ago(1h);\nlet threshold = 100;\nSymantecProxySG \n| where TimeGenerated - >= timeframe\n| where sc_filter_result =~ \"DENIED\"\n| summarize StartTime - = min(TimeGenerated), EndTime = max(TimeGenerated), count() by c_ip, cs_host\n| - where count_ > threshold\n| extend timestamp = StartTime, HostCustomEntity - = cs_host, IPCustomEntity = c_ip","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Excessive - Denied Proxy Traffic","description":"This alert creates an incident when a - client generates an excessive amounts of denied proxy traffic.","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SymantecProxySG","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/75ea5c39-93e5-489b-b1e1-68fa6c9d2d04","name":"75ea5c39-93e5-489b-b1e1-68fa6c9d2d04","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet threshold = 3;\nSigninLogs\n| where TimeGenerated >= - ago(timeframe)\n| where ResultType == \"50057\"\n| where ResultDescription - =~ \"User account is disabled. The account has been disabled by an administrator.\"\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), - count(), applicationCount = dcount(AppDisplayName), \napplicationSet = makeset(AppDisplayName) - by UserPrincipalName, IPAddress\n| where applicationCount >= threshold\n| - extend timestamp = StartTimeUtc, AccountCustomEntity = UserPrincipalName, - IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Attempts - to sign in to disabled accounts","description":"Identifies failed attempts - to sign in to disabled accounts across multiple Azure Applications.\nDefault - threshold for Azure Applications attempted to sign in to is 3.\nReferences: - https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\n50057 - - User account is disabled. The account has been disabled by an administrator.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/32555639-b639-4c2b-afda-c0ae0abefa55","name":"32555639-b639-4c2b-afda-c0ae0abefa55","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nAWSCloudTrail\n| where TimeGenerated > ago(timeframe)\n| - where EventName =~ \"GetCallerIdentity\" and UserIdentityType =~ \"AssumedRole\" - \n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) - by SourceIpAddress, EventName, EventTypeName, UserIdentityType, UserIdentityAccountId, - UserIdentityPrincipalid, \nUserAgent, UserIdentityUserName, SessionMfaAuthenticated,AWSRegion, - EventSource, AdditionalEventData, ResponseElements\n| extend timestamp = StartTimeUtc, - AccountCustomEntity = UserIdentityUserName, IPCustomEntity = SourceIpAddress\n| - sort by EndTimeUtc desc nulls last","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Monitor - AWS Credential abuse or hijacking","description":"Looking for GetCallerIdentity - Events where the UserID Type is AssumedRole \nAn attacker who has assumed - the role of a legitimate account can call the GetCallerIdentity function to - determine what account they are using.\nA legitimate user using legitimate - credentials would not need to call GetCallerIdentity since they should already - know what account they are using.\nMore Information: https://duo.com/decipher/trailblazer-hunts-compromised-credentials-in-aws\nAWS - STS GetCallerIdentity API: https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html - ","tactics":["Discovery"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/910124df-913c-47e3-a7cd-29e1643fa55e","name":"910124df-913c-47e3-a7cd-29e1643fa55e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"//Adjust - this threshold to fit environment\nlet signin_threshold = 5; \n//Make a list - of IPs with failed AWS console logins\nlet aws_fails = AWSCloudTrail\n| where - TimeGenerated >= ago(1d)\n| where EventName == \"ConsoleLogin\"\n| extend - LoginResult = tostring(parse_json(ResponseElements).ConsoleLogin) \n| where - LoginResult != \"Success\"\n| where SourceIpAddress != \"127.0.0.1\"\n| summarize - count() by SourceIpAddress\n| where count_ > signin_threshold\n| summarize - make_list(SourceIpAddress);\n//See if any of those IPs have sucessfully logged - into Azure AD.\nSigninLogs\n| where TimeGenerated >= ago(1d)\n| where ResultType - !in (\"0\", \"50125\", \"50140\")\n| where IPAddress in (aws_fails) \n| extend - Reason = \"Multiple failed AWS Console logins from IP address\"\n| extend - timestamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity - = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - AWS Console logons but success logon to AzureAD","description":"Identifies - a list of IP addresses with a minimum numbe(default of 5) of failed logon - attempts to AWS Console.\nUses that list to identify any successful Azure - Active Directory logons from these IPs within the same timeframe.","tactics":["InitialAccess","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fb0f4a93-d8ad-4b54-9931-85bdb7550f90","name":"fb0f4a93-d8ad-4b54-9931-85bdb7550f90","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nSymantecProxySG\n| where TimeGenerated >= timeframe\n| - mv-expand cs_categories\n| where cs_categories has_any (\"Suspicious\",\"phishing\", - \"hacking\")\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), - count() by sc_filter_result, cs_userdn, c_ip, cs_host, Computer, tostring(cs_categories)\n| - extend timestamp = StartTime, AccountCustomEntity = cs_userdn, IPCustomEntity - = c_ip, HostCustomEntity = Computer","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"User - Accessed Suspicious URL Categories","description":"Creates an incident in - the event the requested URL accessed by the user has been identified as Suspicious, - Phishing, or Hacking.","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SymantecProxySG","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bfb1c90f-8006-4325-98be-c7fffbc254d6","name":"bfb1c90f-8006-4325-98be-c7fffbc254d6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeRange = 1d;\nlet s_threshold = 30;\nlet l_threshold = 3;\nSigninLogs\n| - where TimeGenerated >= ago(timeRange)\n| where OperationName =~ \"Sign-in - activity\"\n// Error codes that we want to look at as they are related to - the use of incorrect password.\n| where ResultType in (\"50126\", \"50053\" - , \"50055\", \"50056\")\n| extend OS = DeviceDetail.operatingSystem, Browser - = DeviceDetail.browser \n| extend LocationString= strcat(tostring(LocationDetails[\"countryOrRegion\"]), - \"/\", tostring(LocationDetails[\"state\"]), \"/\", tostring(LocationDetails[\"city\"]))\n| - summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated),LocationCount=dcount(LocationString), - Location = make_set(LocationString), \nIPAddress = make_set(IPAddress), IPAddressCount - = dcount(IPAddress), AppDisplayName = make_set(AppDisplayName), ResultDescription - = make_set(ResultDescription), \nBrowser = make_set(Browser), OS = make_set(OS), - SigninCount = count() by UserPrincipalName \n// - Setting a generic threshold - Can be different for different environment\n| - where SigninCount > s_threshold and LocationCount >= l_threshold\n| extend - tostring(Location), tostring(IPAddress), tostring(AppDisplayName), tostring(ResultDescription), - tostring(Browser), tostring(OS)\n| distinct *\n| extend timestamp = StartTime, - AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Distributed - Password cracking attempts in AzureAD","description":"Identifies distributed - password cracking attempts from the Azure Active Directory SigninLogs.\nThe - query looks for unusually high number of failed password attempts coming from - multiple locations for a user account.\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\n50053 Account - is locked because the user tried to sign in too many times with an incorrect - user ID or password.\n50055 Invalid password, entered expired password.\n50056 Invalid - or null password - Password does not exist in store for this user.\n50126 Invalid - username or password, or invalid on-premises username or password.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ef88eb96-861c-43a0-ab16-f3835a97c928","name":"ef88eb96-861c-43a0-ab16-f3835a97c928","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet regexEmpire = @\"SetDelay|GetDelay|Set-LostLimit|Get-LostLimit|Set-Killdate|Get-Killdate|Set-WorkingHours|Get-WorkingHours|Get-Sysinfo|Add-Servers|Invoke-ShellCommand|Start-AgentJob|Update-Profile|Get-FilePart|Encrypt-Bytes|Decrypt-Bytes|Encode-Packet|Decode-Packet|Send-Message|Process-Packet|Process-Tasking|Get-Task|Start-Negotiate|Invoke-DllInjection|Invoke-ReflectivePEInjection|Invoke-Shellcode|Invoke-ShellcodeMSIL|Get-ChromeDump|Get-ClipboardContents|Get-IndexedItem|Get-Keystrokes|Invoke-Inveigh|Invoke-NetRipper|local:Invoke-PatchDll|Invoke-NinjaCopy|Get-Win32Types|Get-Win32Constants|Get-Win32Functions|Sub-SignedIntAsUnsigned|Add-SignedIntAsUnsigned|Compare-Val1GreaterThanVal2AsUInt|Convert-UIntToInt|Test-MemoryRangeValid|Write-BytesToMemory|Get-DelegateType|Get-ProcAddress|Enable-SeDebugPrivilege|Invoke-CreateRemoteThread|Get-ImageNtHeaders|Get-PEBasicInfo|Get-PEDetailedInfo|Import-DllInRemoteProcess|Get-RemoteProcAddress|Copy-Sections|Update-MemoryAddresses|Import-DllImports|Get-VirtualProtectValue|Update-MemoryProtectionFlags|Update-ExeFunctions|Copy-ArrayOfMemAddresses|Get-MemoryProcAddress|Invoke-MemoryLoadLibrary|Invoke-MemoryFreeLibrary|Out-Minidump|Get-VaultCredential|Invoke-DCSync|Translate-Name|Get-NetDomain|Get-NetForest|Get-NetForestDomain|Get-DomainSearcher|Get-NetComputer|Get-NetGroupMember|Get-NetUser|Invoke-Mimikatz|Invoke-PowerDump|Invoke-TokenManipulation|Exploit-JMXConsole|Exploit-JBoss|Invoke-Thunderstruck|Invoke-VoiceTroll|Set-WallPaper|Invoke-PsExec|Invoke-SSHCommand|Invoke-PSInject|Invoke-RunAs|Invoke-SendMail|Invoke-Rule|Get-OSVersion|Select-EmailItem|View-Email|Get-OutlookFolder|Get-EmailItems|Invoke-MailSearch|Get-SubFolders|Get-GlobalAddressList|Invoke-SearchGAL|Get-SMTPAddress|Disable-SecuritySettings|Reset-SecuritySettings|Get-OutlookInstance|New-HoneyHash|Set-MacAttribute|Invoke-PatchDll|Get-SecurityPackages|Install-SSP|Invoke-BackdoorLNK|New-ElevatedPersistenceOption|New-UserPersistenceOption|Add-Persistence|Invoke-CallbackIEX|Add-PSFirewallRules|Invoke-EventLoop|Invoke-PortBind|Invoke-DNSLoop|Invoke-PacketKnock|Invoke-CallbackLoop|Invoke-BypassUAC|Get-DecryptedCpassword|Get-GPPInnerFields|Invoke-WScriptBypassUAC|Get-ModifiableFile|Get-ServiceUnquoted|Get-ServiceFilePermission|Get-ServicePermission|Invoke-ServiceUserAdd|Invoke-ServiceCMD|Write-UserAddServiceBinary|Write-CMDServiceBinary|Write-ServiceEXE|Write-ServiceEXECMD|Restore-ServiceEXE|Invoke-ServiceStart|Invoke-ServiceStop|Invoke-ServiceEnable|Invoke-ServiceDisable|Get-ServiceDetail|Find-DLLHijack|Find-PathHijack|Write-HijackDll|Get-RegAlwaysInstallElevated|Get-RegAutoLogon|Get-VulnAutoRun|Get-VulnSchTask|Get-UnattendedInstallFile|Get-Webconfig|Get-ApplicationHost|Write-UserAddMSI|Invoke-AllChecks|Invoke-ThreadedFunction|Test-Login|Get-UserAgent|Test-Password|Get-ComputerDetails|Find-4648Logons|Find-4624Logons|Find-AppLockerLogs|Find-PSScriptsInPSAppLog|Find-RDPClientConnections|Get-SystemDNSServer|Invoke-Paranoia|Invoke-WinEnum{|Get-SPN|Invoke-ARPScan|Invoke-Portscan|Invoke-ReverseDNSLookup|Invoke-SMBScanner|New-InMemoryModule|Add-Win32Type|Export-PowerViewCSV|Get-MacAttribute|Copy-ClonedFile|Get-IPAddress|Convert-NameToSid|Convert-SidToName|Convert-NT4toCanonical|Get-Proxy|Get-PathAcl|Get-NameField|Convert-LDAPProperty|Get-NetDomainController|Add-NetUser|Add-NetGroupUser|Get-UserProperty|Find-UserField|Get-UserEvent|Get-ObjectAcl|Add-ObjectAcl|Invoke-ACLScanner|Get-GUIDMap|Get-ADObject|Set-ADObject|Get-ComputerProperty|Find-ComputerField|Get-NetOU|Get-NetSite|Get-NetSubnet|Get-DomainSID|Get-NetGroup|Get-NetFileServer|SplitPath|Get-DFSshare|Get-DFSshareV1|Get-DFSshareV2|Get-GptTmpl|Get-GroupsXML|Get-NetGPO|Get-NetGPOGroup|Find-GPOLocation|Find-GPOComputerAdmin|Get-DomainPolicy|Get-NetLocalGroup|Get-NetShare|Get-NetLoggedon|Get-NetSession|Get-NetRDPSession|Invoke-CheckLocalAdminAccess|Get-LastLoggedOn|Get-NetProcess|Find-InterestingFile|Invoke-CheckWrite|Invoke-UserHunter|Invoke-StealthUserHunter|Invoke-ProcessHunter|Invoke-EventHunter|Invoke-ShareFinder|Invoke-FileFinder|Find-LocalAdminAccess|Get-ExploitableSystem|Invoke-EnumerateLocalAdmin|Get-NetDomainTrust|Get-NetForestTrust|Find-ForeignUser|Find-ForeignGroup|Invoke-MapDomainTrust|Get-Hex|Create-RemoteThread|Get-FoxDump|Decrypt-CipherText|Get-Screenshot|Start-HTTP-Server|Local:Invoke-CreateRemoteThread|Local:Get-Win32Functions|Local:Inject-NetRipper|GetCommandLine|ElevatePrivs|Get-RegKeyClass|Get-BootKey|Get-HBootKey|Get-UserName|Get-UserHashes|DecryptHashes|DecryptSingleHash|Get-UserKeys|DumpHashes|Enable-SeAssignPrimaryTokenPrivilege|Enable-Privilege|Set-DesktopACLs|Set-DesktopACLToAllowEveryone|Get-PrimaryToken|Get-ThreadToken|Get-TokenInformation|Get-UniqueTokens|Find-GPOLocation|Find-GPOComputerAdmin|Get-DomainPolicy|Get-NetLocalGroup|Get-NetShare|Get-NetLoggedon|Get-NetSession|Get-NetRDPSession|Invoke-CheckLocalAdminAccess|Get-LastLoggedOn|Get-NetProcess|Find-InterestingFile|Invoke-CheckWrite|Invoke-UserHunter|Invoke-StealthUserHunter|Invoke-ProcessHunter|Invoke-EventHunter|Invoke-ShareFinder|Invoke-FileFinder|Find-LocalAdminAccess|Get-ExploitableSystem|Invoke-EnumerateLocalAdmin|Get-NetDomainTrust|Get-NetForestTrust|Find-ForeignUser|Find-ForeignGroup|Invoke-MapDomainTrust|Get-Hex|Create-RemoteThread|Get-FoxDump|Decrypt-CipherText|Get-Screenshot|Start-HTTP-Server|Local:Invoke-CreateRemoteThread|Local:Get-Win32Functions|Local:Inject-NetRipper|GetCommandLine|ElevatePrivs|Get-RegKeyClass|Get-BootKey|Get-HBootKey|Get-UserName|Get-UserHashes|DecryptHashes|DecryptSingleHash|Get-UserKeys|DumpHashes|Enable-SeAssignPrimaryTokenPrivilege|Enable-Privilege|Set-DesktopACLs|Set-DesktopACLToAllowEveryone|Get-PrimaryToken|Get-ThreadToken|Get-TokenInformation|Get-UniqueTokens|Invoke-ImpersonateUser|Create-ProcessWithToken|Free-AllTokens|Enum-AllTokens|Invoke-RevertToSelf|Set-Speaker(\\$Volume){\\$wshShell|Local:Get-RandomString|Local:Invoke-PsExecCmd|Get-GPPPassword|Local:Inject-BypassStuff|Local:Invoke-CopyFile\\(\\$sSource,|ind-Fruit|New-IPv4Range|New-IPv4RangeFromCIDR|Parse-Hosts|Parse-ILHosts|Exclude-Hosts|Get-TopPort|Parse-Ports|Parse-IpPorts|Remove-Ports|Write-PortscanOut|Convert-SwitchtoBool|Get-ForeignUser|Get-ForeignGroup\";\nlet - ProcessCreationEvents=() {\nlet processEvents=SecurityEvent\n| where EventID==4688\n| - where isnotempty(CommandLine)\n| project TimeGenerated, Computer, Account - = SubjectUserName, AccountDomain = SubjectDomainName, FileName = Process, - CommandLine, ParentProcessName;\nprocessEvents};\nlet decodedPS = ProcessCreationEvents\n| - where TimeGenerated >= ago(timeframe) \n| where CommandLine contains \" -encodedCommand\"\n| - parse kind=regex flags=i CommandLine with * \"-EncodedCommand \" encodedCommand\n| - project StartTimeUtc = TimeGenerated, encodedCommand = tostring(split(encodedCommand, - '' '')[0]), CommandLine\n// Note: currently the base64_decodestring function - is limited to supporting UTF8\n| extend decodedCommand = translate(''\\0'','''', - base64_decodestring(substring(encodedCommand, 0, strlen(encodedCommand) - (strlen(encodedCommand) - %8)))), encodedCommand, CommandLine , strlen(encodedCommand);\n(decodedPS\n| - union \n(ProcessCreationEvents\n| where TimeGenerated >= ago(timeframe)\n| - where FileName in~ (\"powershell.exe\",\"powershell_ise.exe\")\n| where CommandLine - !contains \"-encodedcommand\")\n| extend StartTimeUtc = TimeGenerated\n)\n| - where CommandLine matches regex regexEmpire\n| extend timestamp = StartTimeUtc, - AccountCustomEntity = Account, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Powershell - Empire cmdlets seen in command line","description":"Identifies instances of - PowerShell Empire cmdlets in powershell process command line data.","tactics":["Execution","Persistence"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-01-25T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a0907abe-6925-4d90-af2b-c7e89dc201a6","name":"a0907abe-6925-4d90-af2b-c7e89dc201a6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 10d;\nlet endtime = 1d;\nlet threshold = 100;\nlet nxDomainDnsEvents - = DnsEvents \n| where ResultCode == 3 \n| where QueryType in (\"A\", \"AAAA\")\n| - where ipv4_is_match(\"127.0.0.1\", ClientIP) == False\n| where Name !contains - \"/\"\n| where Name contains \".\";\nnxDomainDnsEvents\n| where TimeGenerated - > ago(endtime)\n| extend sld = tostring(split(Name, \".\")[-2])\n| summarize - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), dcount(sld) - by ClientIP\n| where dcount_sld > threshold\n// Filter out previously seen - IPs\n| join kind=leftanti (nxDomainDnsEvents\n | where TimeGenerated between(ago(starttime)..ago(endtime))\n | - extend sld = tostring(split(Name, \".\")[-2])\n | summarize dcount(sld) - by ClientIP\n | where dcount_sld > threshold ) on ClientIP\n// Pull out - sample NXDomain responses for those remaining potentially infected IPs\n| - join kind = inner (nxDomainDnsEvents | summarize by Name, ClientIP) on ClientIP\n| - summarize StartTimeUtc = min(StartTimeUtc), EndTimeUtc = max(EndTimeUtc), - sampleNXDomainList=make_list(Name, 100) by ClientIP, dcount_sld\n| extend - timestamp = StartTimeUtc, IPCustomEntity = ClientIP","queryFrequency":"P1D","queryPeriod":"P10D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Potential - DGA detected","description":"Identifies clients with a high NXDomain count - which could be indicative of a DGA (cycling through possible C2 domains\nwhere - most C2s are not live). Alert is generated when a new IP address is seen (based - on not being seen associated with \nNXDomain records in prior 10-day baseline - period).","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5efb0cfd-063d-417a-803b-562eae5b0301","name":"5efb0cfd-063d-417a-803b-562eae5b0301","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 6h;\n// Ignore Build/Releases with less/equal - this number\nlet ServiceConnectionThreshold = 3;\n// New Connections need - to exhibit execution of more \"new\" connections than this number.\nlet NewConnectionThreshold - = 1;\n// List of Builds/Releases to ignore in your space\nlet BypassDefIds - = datatable(DefId:string, Type:string, ProjectName:string)\n[\n//\"103\", - \"Release\", \"ProjectA\",\n//\"42\", \"Release\", \"ProjectB\",\n//\"122\", - \"Build\", \"ProjectB\"\n];\nlet HistoricDefs = AzureDevOpsAuditing\n| where - TimeGenerated between (ago(starttime) .. ago(endtime))\n| where OperationName - == \"Library.ServiceConnectionExecuted\" \n| extend DefId = tostring(Data.DefinitionId), - Type = tostring(Data.PlanType), ConnectionId = tostring(Data.ConnectionId)\n| - summarize HistoricCount = dcount(tostring(ConnectionId)), ConnectionNames - = make_set(tostring(Data.ConnectionName)) \n by DefId = tostring(DefId), - Type = tostring(Type), ProjectId, ProjectName, ActorUPN;\nAzureDevOpsAuditing\n| - where TimeGenerated >= ago(endtime)\n| where OperationName == \"Library.ServiceConnectionExecuted\" - \n| extend DefId = tostring(Data.DefinitionId), Type = tostring(Data.PlanType), - ConnectionId = tostring(Data.ConnectionId)\n| parse ScopeDisplayName with - OrganizationName '' (Organization)''\n| summarize CurrentCount = dcount(tostring(ConnectionId)), - ConnectionNames = make_set(tostring(Data.ConnectionName)), StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated) \n by OrganizationName, DefId = tostring(DefId), - Type = tostring(Type), ProjectId, ProjectName, ActorUPN\n| where CurrentCount - > ServiceConnectionThreshold\n| join (HistoricDefs) on ProjectId, DefId, Type, - ActorUPN\n| join kind=anti BypassDefIds on $left.DefId==$right.DefId and $left.Type - == $right.Type and $left.ProjectName == $right.ProjectName\n| extend link - = iff(\nType == \"Build\", strcat(''https://dev.azure.com/'', OrganizationName, - ''/'', ProjectName, ''/_build?definitionId='', DefId),\nstrcat(''https://dev.azure.com/'', - OrganizationName, ''/'', ProjectName, ''/_release?_a=releases&view=mine&definitionId='', - DefId))\n| where CurrentCount >= HistoricCount + NewConnectionThreshold\n| - project StartTime, OrganizationName, ProjectName, DefId, link, RecentDistinctServiceConnections - = CurrentCount, HistoricDistinctServiceConnections = HistoricCount, \n RecentConnections - = ConnectionNames, HistoricConnections = ConnectionNames1, ActorUPN\n| extend - timestamp = StartTime, AccountCustomEntity = ActorUPN","queryFrequency":"PT6H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"Azure - DevOps Service Conection Addition/Abuse - Historic Allowlist","description":"This - detection builds a allowlist of historic service connection use by Builds - and Releases and compares to recent history, flagging growth of service connection - use in non manually allowlisted, non historically allowlisted Build/Release - runs.\nThis is to determine if someone is hijacking a build/release and adding - many service connections in order to abuse or dump credentials from service - connections.","tactics":["Persistence","Impact"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-05T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2b701288-b428-4fb8-805e-e4372c574786","name":"2b701288-b428-4fb8-805e-e4372c574786","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"//The - bigger the window the better the data sample size, as we use IP prevalence, - more sample data is better.\nlet timeRange = 30d;\n//The minimum number of - countries that the account has been accessed from [default: 2]\nlet minimumCountries - = 2;\n//The delta (%) between the largest in-use IP and the smallest [default: - 90]\nlet deltaThreshold = 95;\n//The maximum (%) threshold that the country - appears in login data [default: 10]\nlet countryPrevalenceThreshold = 10;\n//The - time to project forward after the last login activity [default: 60min]\nlet - projectedEndTime = 60min; \n//Get Teams successful signins globally\nlet signinData - =\n SigninLogs\n | where TimeGenerated >= ago(timeRange)\n | where AppDisplayName - has \"Teams\"\n | where ConditionalAccessStatus =~ \"success\"\n | extend - country = tostring(LocationDetails[''countryOrRegion''])\n | where isnotempty(country) - and isnotempty(IPAddress);\n// Collect successful signins to teams\nlet loginEvents - = \n signinData\n | summarize count(), country=any(country), make_list(TimeGenerated) - by IPAddress, UserPrincipalName;\n//Calcualte delta between logins\nlet loginDelta - =\n loginEvents\n | summarize max(count_), min(count_) by UserPrincipalName\n | - extend delta = toreal(max_count_ - min_count_) / max_count_ * 100\n | where - delta >= deltaThreshold;\n//Count number of countries used to sign in\nlet - countryCount =\n loginEvents\n | summarize Countries = dcount(country) by - UserPrincipalName;\n//Join delta and sign in counts to successful logins\nloginDelta\n| - join kind=rightouter (\n loginEvents\n) on UserPrincipalName\n| join kind=rightouter - (\n countryCount\n) on UserPrincipalName\n//Check where the record meets - the minimum required countries\n| where Countries >= minimumCountries\n| join - kind=leftouter (\n signinData\n | summarize count() by country\n | - join (\n //Now get the total number of logins from any country and - join it to the previous count in a single table\n signinData\n | - summarize count() by country\n | summarize sum(count_), make_list(country)\n | - mv-expand list_country\n | extend country = tostring(list_country)\n ) - on country\n | summarize by country, count_, sum_count_\n //Now - calculate each countries prevalence within login events\n | extend prevalence - = toreal(count_) / toreal(sum_count_) * 100\n | project-away sum_count_\n | - order by prevalence\n) on country\n//The % that suspicious country is prevalent - in data, this can be configured, less than 10% is uncommon\n| where prevalence - < countryPrevalenceThreshold\n| where min_count_ == count_\n//Login start - and end times from the JSON object, this is the activity window the suspicious - IP was active within\n| extend EventTimes = list_TimeGenerated\n| extend SuspiciousIP - = IPAddress\n| project UserPrincipalName, SuspiciousIP, UserIPDelta = delta, - SuspiciousLoginCountry = country, SuspiciousCountryPrevalence = prevalence, - EventTimes\n//Teams join to collect operations the user account has performed - within the given time range\n| join kind=inner( \n OfficeActivity \n | where - TimeGenerated >= ago(timeRange)\n | where Operation in~ (\"TeamsAdminAction\", - \"MemberAdded\", \"MemberRemoved\", \"MemberRoleChanged\", \"AppInstalled\", - \"BotAddedToTeam\")\n | project Operation, UserId=tolower(UserId), OperationTime=TimeGenerated\n) - on $left.UserPrincipalName == $right.UserId\n| mv-expand StartTime = EventTimes\n| - extend StartTime = make_datetime(StartTime)\n//The end time is projected 60 - minutes forward, in case actions took place within the last hour of the final - login for the suspicious IP\n| extend ProjectedEndTime = make_datetime(StartTime - + projectedEndTime)\n//Limit to operations carried out by the user account - in the timeframe the IP was active\n| where OperationTime between (StartTime - .. ProjectedEndTime)\n| project UserPrincipalName, SuspiciousIP, StartTime, - ProjectedEndTime, OperationTime, Operation, SuspiciousLoginCountry, SuspiciousCountryPrevalence\n//Filter - on suspicious actions\n| extend activitySummary = pack(tostring(StartTime), - pack(\"Operation\",tostring(Operation), \"OperationTime\", OperationTime))\n| - summarize make_bag(activitySummary) by UserPrincipalName, SuspiciousIP, SuspiciousLoginCountry, - SuspiciousCountryPrevalence\n| extend IPCustomEntity = SuspiciousIP, AccountCustomEntity - = UserPrincipalName","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Anomalous - login followed by Teams action","description":"Detects anomalous IP address - usage by user accounts and then checks to see if a suspicious Teams action - is performed.\nQuery calculates IP usage Delta for each user account and selects - accounts where a delta >= 90% is observed between the most and least used - IP.\nTo further reduce results the query performs a prevalence check on the - lowest used IP''s country, only keeping IP''s where the country is unusual - for the tenant (dynamic ranges)\nFinally the user accounts activity within - Teams logs is checked for suspicious commands (modifying user privileges or - admin actions) during the period the suspicious IP was active.","tactics":["InitialAccess","Persistence"],"lastUpdatedDateUTC":"2020-12-21T00:00:00Z","createdDateUTC":"2020-06-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c775a46b-21b1-46d7-afa6-37e3e577a27b","name":"c775a46b-21b1-46d7-afa6-37e3e577a27b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 15;\nSymantecVIP\n| where TimeGenerated - > timeframe\n| where isnotempty(RADIUSAuth)\n| where RADIUSAuth =~ \"Reject\"\n| - summarize Total = count() by bin(TimeGenerated, 15m), User, ClientIP\n| where - Total > threshold\n| extend timestamp = TimeGenerated, IPCustomEntity = ClientIP, - AccountCustomEntity = User","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Excessive - Failed Authentication from Invalid Inputs","description":"Creates an incident - in the event that a user generates an excessive amount of failed authentications - due to invalid inputs, indications of a potential brute force.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SymantecVIP","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8a602940-4153-4045-a741-3bf15591ae29","name":"8a602940-4153-4045-a741-3bf15591ae29","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.2.1","techniques":["T1001"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":null,"thresholdObservations":[{"minimum":"0","maximum":"1","value":"0.4","name":"Score","description":"Generate - an anomaly when score is greater than the chosen value","sequenceNumber":1,"rerun":"NotRequired"}]},"frequency":"P1D","displayName":"(Preview) - Attempted computer bruteforce","description":"This algorithm detects an unusually - high volume of failed login attempts to each computer. The model is trained - on the previous 21 days of security event ID 4625 on a computer. It indicates - anomalous high volume of failed login attempts in the last day.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-02-22T00:00:00Z","createdDateUTC":"2020-12-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/106813db-679e-4382-a51b-1bfc463befc3","name":"106813db-679e-4382-a51b-1bfc463befc3","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(Url)\n| join (\n CommonSecurityLog\n | extend - IngestionTime = ingestion_time()\n | where IngestionTime > ago(dt_lookBack)\n // - Select on Palo Alto logs\n | where DeviceVendor =~ \"Palo Alto Networks\"\n | - where DeviceEventClassID =~ ''url''\n //Uncomment the line below to only - alert on allowed connections\n //| where DeviceAction !~ \"block-url\"\n //Select - logs where URL data is populated\n | extend PA_Url = columnifexists(\"RequestURL\", - \"None\")\n | extend PA_Url = iif(isempty(PA_Url), extract(\"([^\\\"]+)\", - 1, tolower(AdditionalExtensions)), trim(''\"'', PA_Url))\n | extend PA_Url - = iif(PA_Url !startswith \"http://\" and ApplicationProtocol !~ \"ssl\", strcat(''http://'', - PA_Url), iif(PA_Url !startswith \"https://\" and ApplicationProtocol =~ \"ssl\", - strcat(''https://'', PA_Url), PA_Url))\n | where isnotempty(PA_Url)\n | - extend CSL_TimeGenerated = TimeGenerated\n) on $left.Url == $right.PA_Url\n| - project LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, - ThreatType, ExpirationDateTime, ConfidenceScore, DeviceAction, SourceIP, CSL_TimeGenerated, - PA_Url, DeviceName\n| extend timestamp = CSL_TimeGenerated, IPCustomEntity - = SourceIP, HostCustomEntity = DeviceName, URLCustomEntity = PA_Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map URL entity to PaloAlto data","description":"Identifies a match in PaloAlto - data from any URL IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/97ad74c4-fdd9-4a3f-b6bf-5e28f4f71e06","name":"97ad74c4-fdd9-4a3f-b6bf-5e28f4f71e06","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - LearningPeriod = 7d; \nlet BinTime = 1h; \nlet RunTime = 1h; \nlet StartTime - = 1h; \nlet NumberOfStds = 3; \nlet MinThreshold = 10.0; \nlet EndRunTime - = StartTime - RunTime; \nlet EndLearningTime = StartTime + LearningPeriod; - \nlet GitHubFailedSSOLogins = (SigninLogs \n| where AppDisplayName == \"GitHub.com\" - \n| where ResultType != 0); \nGitHubFailedSSOLogins \n| where TimeGenerated - between (ago(EndLearningTime) .. ago(StartTime)) \n| summarize FailedLoginsCountInBinTime - = count() by UserPrincipalName, bin(TimeGenerated, BinTime) \n| summarize - AvgOfFailedLoginsInLearning = avg(FailedLoginsCountInBinTime), StdOfFailedLoginsInLearning - = stdev(FailedLoginsCountInBinTime) by UserPrincipalName\n| extend LearningThreshold - = max_of(AvgOfFailedLoginsInLearning + StdOfFailedLoginsInLearning * NumberOfStds, - MinThreshold) \n| join kind=innerunique ( \n GitHubFailedSSOLogins \n | - where TimeGenerated between (ago(StartTime) .. ago(EndRunTime)) \n | summarize - FailedLoginsCountInRunTime = count() by User = Identity, UserPrincipalName, - bin(TimeGenerated, BinTime)\n) on UserPrincipalName \n| where FailedLoginsCountInRunTime - > LearningThreshold\n| extend AccountCustomEntity = UserPrincipalName , timestamp - = TimeGenerated","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"Brute - Force Attack against GitHub Account","description":"Attackers who are trying - to guess your users'' passwords or use brute-force methods to get in. If your - organization is using SSO with Azure Active Directory, authentication logs - to GitHub.com will be generated. Using the following query can help you identify - a sudden increase in failed logon attempt of users.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2021-01-20T00:00:00Z","createdDateUTC":"2020-06-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f71aba3d-28fb-450b-b192-4e76a83015c8","name":"f71aba3d-28fb-450b-b192-4e76a83015c8","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Fusion","properties":{"severity":"High","displayName":"Advanced - Multistage Attack Detection","description":"Using Fusion technology based - on machine learning, Azure Sentinel automatically detects multistage attacks - by identifying combinations of anomalous behaviors and suspicious activities - observed at various stages of the kill chain. On the basis of these discoveries, - Azure Sentinel generates incidents that would otherwise be very difficult - to catch. By design, these incidents are low-volume, high-fidelity, and high-severity, - which is why this detection is turned ON by default.\n\nThere are a total - of 90 Fusion incident types detected by Azure Sentinel.\n\nTo detect these - multistage attacks, the following data connectors must be configured:\n- Azure - Active Directory Identity Protection.\n- Microsoft Cloud App Security.\n- - Microsoft Defender for Endpoint.\n- Azure Defender.\n- Palo Alto Networks.\n\nFor - a full list and description of each scenario that is supported for these multistage - attacks, go to https://aka.ms/SentinelFusion.","tactics":["Collection","CommandAndControl","DefenseEvasion","Discovery","Execution","Exfiltration","Impact","InitialAccess","LateralMovement","Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2021-02-09T00:00:00Z","createdDateUTC":"2019-07-25T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/643c2025-9604-47c5-833f-7b4b9378a1f5","name":"643c2025-9604-47c5-833f-7b4b9378a1f5","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"//Adjust - this threshold to fit your environment\nlet signin_threshold = 5; \n//Make - a list of IPs with AAD signin failures above our threshold\nlet Suspicious_signins - = \nSigninLogs\n| where TimeGenerated >= ago(1d)\n| where ResultType !in (\"0\", - \"50125\", \"50140\")\n| where IPAddress != \"127.0.0.1\"\n| summarize count() - by IPAddress\n| where count_ > signin_threshold\n| summarize make_list(IPAddress);\n//See - if any of those IPs have sucessfully logged into the AWS console\nAWSCloudTrail\n| - where TimeGenerated > ago(1d)\n| where EventName =~ \"ConsoleLogin\"\n| extend - LoginResult = tostring(parse_json(ResponseElements).ConsoleLogin) \n| where - LoginResult =~ \"Success\"\n| where SourceIpAddress in (Suspicious_signins)\n| - extend Reason = \"Multiple failed AAD logins from IP address\"\n| extend MFAUsed - = tostring(parse_json(AdditionalEventData).MFAUsed)\n| extend User = iif(isempty(UserIdentityUserName), - UserIdentityType, UserIdentityUserName) \n| summarize StartTimeUtc = min(TimeGenerated), - EndTimeUtc = max(TimeGenerated) by Reason, LoginResult, EventTypeName, UserIdentityType, - User, AWSRegion, SourceIpAddress, UserAgent, MFAUsed\n| extend timestamp = - StartTimeUtc, AccountCustomEntity = User, IPCustomEntity = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - AzureAD logons but success logon to AWS Console","description":"Identifies - a list of IP addresses with a minimum number(defualt of 5) of failed logon - attempts to Azure Active Directory.\nUses that list to identify any successful - AWS Console logons from these IPs within the same timeframe.","tactics":["InitialAccess","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2fc5d810-c9cc-491a-b564-841427ae0e50","name":"2fc5d810-c9cc-491a-b564-841427ae0e50","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nlet emailregex = @''^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$'';\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n//Filtering the table for Email related IOCs\n| where - isnotempty(EmailRecipient)\n| join (\n SecurityEvent | where TimeGenerated - >= ago(dt_lookBack) and isnotempty(TargetUserName)\n //Normalizing the - column to lower case for exact match with EmailRecipient column\n | extend - TargetUserName = tolower(TargetUserName)\n // renaming timestamp column - so it is clear the log this came from SecurityEvent table\n | extend SecurityEvent_TimeGenerated - = TimeGenerated\n)\non $left.EmailRecipient == $right.TargetUserName\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, - Url, ExpirationDateTime, ConfidenceScore, SecurityEvent_TimeGenerated,\nEmailSenderName, - EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, - Computer, EventID, TargetUserName, Activity, IpAddress, AccountType,\nLogonTypeName, - LogonProcessName, Status, SubStatus\n| extend timestamp = SecurityEvent_TimeGenerated, - AccountCustomEntity = TargetUserName, IPCustomEntity = IpAddress, HostCustomEntity - = Computer, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Email entity to SecurityEvent","description":"Identifies a match in - SecurityEvent table from any Email IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fa118b98-de46-4e94-87f9-8e6d5060b60b","name":"fa118b98-de46-4e94-87f9-8e6d5060b60b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MLBehaviorAnalytics","properties":{"severity":"Medium","displayName":"(Preview) - Anomalous SSH Login Detection","description":"This detection uses machine - learning (ML) to identify anomalous Secure Shell (SSH) login activity, based - on syslog data. Scenarios include:\n\n*\tUnusual IP - This IP address has - not or has rarely been seen in last 30 days.\n*\tUnusual Geo - The IP address, - city, country and ASN have not (or rarely) been seen in last 30 days.\n*\tNew - user - A new user logs in from an IP address and geo location, both or either - of which are not expected to be seen in the last 30 days.\n\nAllow 7 days - after this alert is enabled for Azure Sentinel to build a profile of normal - activity for your environment.\n\nThis detection requires a specific configuration - of the data source. [Learn more](https://docs.microsoft.com/en-us/azure/sentinel/connect-syslog#configure-the-syslog-connector-for-anomalous-ssh-login-detection)","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-07-16T00:00:00Z","createdDateUTC":"2019-08-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/40ba9493-4183-4eee-974f-87fe39c8f267","name":"40ba9493-4183-4eee-974f-87fe39c8f267","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Azure - Advanced Threat Protection","displayName":"Create incidents based on Azure - Advanced Threat Protection alerts","description":"Create incidents based on - all alerts generated in Azure Advanced Threat Protection","lastUpdatedDateUTC":"2019-07-16T00:00:00Z","createdDateUTC":"2019-07-16T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureAdvancedThreatProtection","dataTypes":["SecurityAlert - (AATP)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ffe3625d-a933-4f63-b192-7e6ebf3be5fb","name":"ffe3625d-a933-4f63-b192-7e6ebf3be5fb","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.2.1","techniques":["T1001"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":null,"thresholdObservations":[{"minimum":"0","maximum":"1","value":"0.1","name":"Score","description":"Generate - an anomaly when score is greater than the chosen value","sequenceNumber":1,"rerun":"NotRequired"}]},"frequency":"P1D","displayName":"(Preview) - Attempted user account bruteforce","description":"This algorithm detects an - unusually high volume of failed login attempts per user account. The model - is trained on the previous 21 days of security event ID 4625 on an account. - It indicates anomalous high volume of failed login attempts in the last day.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-02-22T00:00:00Z","createdDateUTC":"2020-12-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d3980830-dd9d-40a5-911f-76b44dfdce16","name":"d3980830-dd9d-40a5-911f-76b44dfdce16","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - RunTime = 1h;\nSigninLogs\n| where TimeGenerated > ago(RunTime)\n| where AppDisplayName - == \"GitHub.com\"\n| where ResultType == 0\n| summarize CountOfLocations = - dcount(Location), Locations = make_set(Location), BurstStartTime = min(TimeGenerated), - BurstEndTime = max(TimeGenerated) by UserPrincipalName\n| where CountOfLocations - > 1\n| extend timestamp = BurstStartTime, AccountCustomEntity = UserPrincipalName","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"GitHub - Signin Burst from Multiple Locations","description":"This alerts when there - Signin burst from multiple locations in GitHub (AAD SSO).","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a3c144f9-8051-47d4-ac29-ffb0c312c910","name":"a3c144f9-8051-47d4-ac29-ffb0c312c910","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - SunburstMD5=dynamic([\"b91ce2fa41029f6955bff20079468448\",\"02af7cec58b9a5da1c542b5a32151ba1\",\"2c4a910a1299cdae2a4e55988a2f102e\",\"846e27a652a5e1bfbd0ddd38a16dc865\",\"4f2eb62fa529c0283b28d05ddd311fae\"]);\nlet - SupernovaMD5=\"56ceb6d0011d87b6e4d7023d7ef85676\";\nDeviceFileEvents\n| where - MD5 in(SunburstMD5) or MD5 in(SupernovaMD5)\n| extend\n timestamp = TimeGenerated,\n AccountCustomEntity - = iff(isnotempty(InitiatingProcessAccountUpn), InitiatingProcessAccountUpn, - InitiatingProcessAccountName),\n HostCustomEntity = DeviceName,\n FileHashCustomEntity - = MD5","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"FileHash","fieldMappings":[{"identifier":"Algorithm","columnName":"MD5"},{"identifier":"Value","columnName":"FileHashCustomEntity"}]}],"displayName":"SUNBURST - and SUPERNOVA backdoor hashes","description":"Identifies SolarWinds SUNBURST - and SUPERNOVA backdoor file hash IOCs in DeviceFileEvents\nReferences:\n- - https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- - https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f","tactics":["Execution","Persistence"],"lastUpdatedDateUTC":"2021-01-31T00:00:00Z","createdDateUTC":"2020-12-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceFileEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ba144bf8-75b8-406f-9420-ed74397f9479","name":"ba144bf8-75b8-406f-9420-ed74397f9479","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\n//Set a threshold of failed AAD signins from an IP address - within 1 day above which we want to deem those logins suspicious.\nlet signin_threshold - = 5; \n//Make a list of IPs with AAD signin failures above our threshold.\nlet - suspicious_signins = \n SigninLogs\n | where TimeGenerated >= ago(timeframe)\n //Looking - for logon failure results\n | where ResultType !in (\"0\", \"50125\", \"50140\")\n //Exclude - localhost addresses to reduce the chance of FPs\n | where IPAddress != - \"127.0.0.1\"\n | summarize count() by IPAddress\n | where count_ > signin_threshold\n | - summarize make_list(IPAddress);\n//See if any of those IPs have sucessfully - logged into PA VPNs during the same timeperiod\nCommonSecurityLog\n | where - TimeGenerated > ago(timeframe)\n //Select only PA VPN sucessful logons\n | - where DeviceVendor == \"Palo Alto Networks\" and DeviceEventClassID == \"globalprotect\"\n | - where Message has \"GlobalProtect gateway user authentication succeeded\"\n //Parse - out the logon source IP from the Message field to match on\n | extend SourceIP - = extract(\"Login from: ([^,]+)\", 1, Message) \n | where SourceIP in (suspicious_signins)\n | - extend Reason = \"Multiple failed AAD logins from SourceIP\"\n //Parse - out other useful information from Message field\n | extend User = extract(\"User - name: ([^,]+)\", 1, Message) \n | extend ClientOS = extract(\"Client OS - version: ([^,\\\"]+)\", 1, Message)\n | extend Location = extract(\"Source - region: ([^,]{2})\",1, Message)\n | project TimeGenerated, Reason, SourceIP, - User, ClientOS, Location, Message, DeviceName, ReceiptTime, DeviceVendor, - DeviceEventClassID, Computer, FileName\n | extend AccountCustomEntity = - User, IPCustomEntity = SourceIP, timestamp = TimeGenerated, HostCustomEntity - = DeviceName","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"IP - with multiple failed Azure AD logins successfully logs in to Palo Alto VPN","description":"This - query creates a list of IP addresses with a number failed login attempts to - AAD \nabove a set threshold. It then looks for any successful Palo Alto VPN - logins from any\nof these IPs within the same timeframe.","tactics":["InitialAccess","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-09-04T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9f86885f-f31f-4e66-a39d-352771ee789e","name":"9f86885f-f31f-4e66-a39d-352771ee789e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nCarbonBlackEvents_CL\n| where TimeGenerated > timeframe\n| - extend eventTime = datetime(1970-01-01) + tolong(eventTime_d/1000) * 1sec\n| - where targetApp_effectiveReputation_s =~ \"KNOWN_MALWARE\"\n| summarize StartTime - = min(TimeGenerated), EndTime = max(TimeGenerated), count() by eventTime, - deviceDetails_deviceName_s, deviceDetails_deviceIpAddress_s, processDetails_fullUserName_s, - processDetails_targetName_s\n| extend timestamp = StartTime, AccountCustomEntity - = processDetails_fullUserName_s, HostCustomEntity = deviceDetails_deviceName_s, - IPCustomEntity = deviceDetails_deviceIpAddress_s","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - Malware Detected","description":"This creates an incident when a known Malware - is detected on a endpoint managed by a Carbon Black.","tactics":["Execution"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"VMwareCarbonBlack","dataTypes":["CarbonBlackEvents_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9c712bb2-08dc-44d3-b66b-af154dfc1c4f","name":"9c712bb2-08dc-44d3-b66b-af154dfc1c4f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.2.1","techniques":["T1001"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":null,"thresholdObservations":[{"minimum":"0","maximum":"1","value":"0.07","name":"Score","description":"Generate - an anomaly when score is greater than the chosen value","sequenceNumber":1,"rerun":"NotRequired"}]},"frequency":"P1D","displayName":"(Preview) - Suspicious volume of logins to computer","description":"This algorithm detects - an unusually high volume of successful logins per computer. The model is trained - on the previous 21 days of security event ID 4624 on a computer. It indicates - anomalous high volume of successful logins in the last day","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-02-22T00:00:00Z","createdDateUTC":"2020-11-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/957cb240-f45d-4491-9ba5-93430a3c08be","name":"957cb240-f45d-4491-9ba5-93430a3c08be","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nOfficeActivity\n| where TimeGenerated >= ago(timeframe)\n| - where Operation in~ ( \"Add-MailboxPermission\", \"Add-MailboxFolderPermission\", - \"Set-Mailbox\", \"New-ManagementRoleAssignment\")\nand not(UserId has_any - (''NT AUTHORITY\\\\SYSTEM (Microsoft.Exchange.ServiceHost)'',''devilfish-applicationaccount'') - and Operation in~ ( \"Add-MailboxPermission\", \"Set-Mailbox\"))\n| extend - timestamp = TimeGenerated, AccountCustomEntity = UserId, IPCustomEntity = - ClientIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Rare - and potentially high-risk Office operations","description":"Identifies Office - operations that are typically rare and can provide capabilities useful to - attackers.","tactics":["Persistence","Collection"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-13T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/44a555d8-ecee-4a25-95ce-055879b4b14b","name":"44a555d8-ecee-4a25-95ce-055879b4b14b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeFrame = 1d;\nlet timeBin = 10m;\nlet portThreshold = 30;\nW3CIISLog\n| - where TimeGenerated >= ago(timeFrame)\n| extend scStatusFull = strcat(scStatus, - \".\",scSubStatus) \n// Map common IIS codes\n| extend scStatusFull_Friendly - = case(\nscStatusFull == \"401.0\", \"Access denied.\",\nscStatusFull == \"401.1\", - \"Logon failed.\",\nscStatusFull == \"401.2\", \"Logon failed due to server - configuration.\",\nscStatusFull == \"401.3\", \"Unauthorized due to ACL on - resource.\",\nscStatusFull == \"401.4\", \"Authorization failed by filter.\",\nscStatusFull - == \"401.5\", \"Authorization failed by ISAPI/CGI application.\",\nscStatusFull - == \"403.0\", \"Forbidden.\",\nscStatusFull == \"403.4\", \"SSL required.\",\n\"See - - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\")\n// - Mapping to Hex so can be mapped using website in comments above\n| extend - scWin32Status_Hex = tohex(tolong(scWin32Status)) \n// Map common win32 codes\n| - extend scWin32Status_Friendly = case(\nscWin32Status_Hex =~ \"775\", \"The - referenced account is currently locked out and cannot be logged on to.\",\nscWin32Status_Hex - =~ \"52e\", \"Logon failure: Unknown user name or bad password.\",\nscWin32Status_Hex - =~ \"532\", \"Logon failure: The specified account password has expired.\",\nscWin32Status_Hex - =~ \"533\", \"Logon failure: Account currently disabled.\", \nscWin32Status_Hex - =~ \"2ee2\", \"The request has timed out.\", \nscWin32Status_Hex =~ \"0\", - \"The operation completed successfully.\", \nscWin32Status_Hex =~ \"1\", \"Incorrect - function.\", \nscWin32Status_Hex =~ \"2\", \"The system cannot find the file - specified.\", \nscWin32Status_Hex =~ \"3\", \"The system cannot find the path - specified.\", \nscWin32Status_Hex =~ \"4\", \"The system cannot open the file.\", - \nscWin32Status_Hex =~ \"5\", \"Access is denied.\", \nscWin32Status_Hex =~ - \"8009030e\", \"SEC_E_NO_CREDENTIALS\", \nscWin32Status_Hex =~ \"8009030C\", - \"SEC_E_LOGON_DENIED\", \n\"See - https://msdn.microsoft.com/library/cc231199.aspx\")\n// - decode URI when available\n| extend decodedUriQuery = url_decode(csUriQuery)\n// - Count of attempts by client IP on many ports\n| summarize makeset(sPort), - makeset(decodedUriQuery), makeset(csUserName), makeset(sSiteName), makeset(sPort), - makeset(csUserAgent), makeset(csMethod), makeset(csUriQuery), makeset(scStatusFull), - makeset(scStatusFull_Friendly), makeset(scWin32Status_Hex), makeset(scWin32Status_Friendly), - ConnectionsCount = count() by bin(TimeGenerated, timeBin), cIP, Computer, - sIP\n| extend portCount = arraylength(set_sPort)\n| where portCount >= portThreshold\n| - project TimeGenerated, cIP, set_sPort, set_csUserName, set_decodedUriQuery, - Computer, set_sSiteName, sIP, set_csUserAgent, set_csMethod, set_scStatusFull, - set_scStatusFull_Friendly, set_scWin32Status_Hex, set_scWin32Status_Friendly, - ConnectionsCount, portCount\n| order by portCount\n| extend timestamp = TimeGenerated, - IPCustomEntity = cIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"High - count of connections by client IP on many ports","description":"Identifies - when 30 or more ports are used for a given client IP in 10 minutes occurring - on the IIS server.\nThis could be indicative of attempted port scanning or - exploit attempt at internet facing web applications. \nThis could also simply - indicate a misconfigured service or device.\nReferences:\nIIS status code - mapping - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\nWin32 - Status code mapping - https://msdn.microsoft.com/library/cc231199.aspx","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-03-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fbd72eb8-087e-466b-bd54-1ca6ea08c6d3","name":"fbd72eb8-087e-466b-bd54-1ca6ea08c6d3","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet opList = OfficeActivity \n| where TimeGenerated >= ago(timeframe) - \n| summarize by Operation\n//| where Operation startswith \"Remove-\" or - Operation startswith \"Disable-\"\n| where Operation has_any (\"Remove\", - \"Disable\")\n| where Operation contains \"AntiPhish\" or Operation contains - \"SafeAttachment\" or Operation contains \"SafeLinks\" or Operation contains - \"Dlp\" or Operation contains \"Audit\"\n| summarize make_set(Operation);\nOfficeActivity\n| - where TimeGenerated >= ago(timeframe)\n// Only admin or global-admin can disable/remove - policy\n| where RecordType =~ \"ExchangeAdmin\"\n| where UserType in~ (\"Admin\",\"DcAdmin\")\n// - Pass in interesting Operation list\n| where Operation in~ (opList)\n| extend - ClientIPOnly = case( \nClientIP has \".\", tostring(split(ClientIP,\":\")[0]), - \nClientIP has \"[\", tostring(trim_start(@''[[]'',tostring(split(ClientIP,\"]\")[0]))),\nClientIP\n) \n| - extend Port = case(\nClientIP has \".\", (split(ClientIP,\":\")[1]),\nClientIP - has \"[\", tostring(split(ClientIP,\"]:\")[1]),\nClientIP\n)\n| summarize - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), OperationCount - = count() by Operation, UserType, UserId, ClientIP = ClientIPOnly, Port, ResultStatus, - Parameters\n| extend timestamp = StartTimeUtc, AccountCustomEntity = UserId, - IPCustomEntity = ClientIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Office - policy tampering","description":"Identifies if any tampering is done to either - auditlog, ATP Safelink, SafeAttachment, AntiPhish or Dlp policy. \nAn adversary - may use this technique to evade detection or avoid other policy based defenses.\nReferences: - https://docs.microsoft.com/powershell/module/exchange/advanced-threat-protection/remove-antiphishrule?view=exchange-ps.","tactics":["Persistence","DefenseEvasion"],"lastUpdatedDateUTC":"2020-12-19T00:00:00Z","createdDateUTC":"2019-04-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c7bfadd4-34a6-4fa5-82f8-3691a32261e8","name":"c7bfadd4-34a6-4fa5-82f8-3691a32261e8","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet EventNameList = dynamic([\"ApplySecurityGroupsToLoadBalancer\", - \"SetSecurityGroups\"]);\nAWSCloudTrail\n| where TimeGenerated >= ago(timeframe)\n| - where EventName in~ (EventNameList)\n| extend User = iif(isnotempty(UserIdentityUserName), - UserIdentityUserName, SessionIssuerUserName)\n| summarize EventCount=count(), - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) \nby EventSource, - EventName, UserIdentityType, User, SourceIpAddress, UserAgent, SessionMfaAuthenticated, - AWSRegion,\nAdditionalEventData, UserIdentityAccountId, UserIdentityPrincipalid, - ResponseElements\n| extend timestamp = StartTimeUtc, AccountCustomEntity = - User , IPCustomEntity = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Changes - to AWS Elastic Load Balancer security groups","description":"Elastic Load - Balancer distributes incoming traffic across multiple instances in multiple - availability Zones. This increases the fault tolerance of your applications. - \n Unwanted changes to Elastic Load Balancer specific security groups could - open your environment to attack and hence needs monitoring.\n More information: - https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255 - \n and https://aws.amazon.com/elasticloadbalancing/.","tactics":["Persistence"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/70b12a3b-4896-42cb-910c-5ffaf8d7987d","name":"70b12a3b-4896-42cb-910c-5ffaf8d7987d","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet DomainNames = dynamic([\"seoulhobi.biz\", \"reader.cash\", - \"pieceview.club\", \"app-wallet.com\", \"bigwnet.com\", \"bitwoll.com\", - \"cexrout.com\", \"change-pw.com\", \"checkprofie.com\", \"cloudwebappservice.com\", - \"ctquast.com\", \"dataviewering.com\", \"day-post.com\", \"dialy-post.com\", - \"documentviewingcom.com\", \"dovvn-mail.com\", \"down-error.com\", \"drivecheckingcom.com\", - \"drog-service.com\", \"encodingmail.com\", \"filinvestment.com\", \"foldershareing.com\", - \"golangapis.com\", \"hotrnall.com\", \"lh-logins.com\", \"login-use.com\", - \"mail-down.com\", \"matmiho.com\", \"mihomat.com\", \"natwpersonal-online.com\", - \"nidlogin.com\", \"nid-login.com\", \"nidlogon.com\", \"pw-change.com\", - \"rnaii.com\", \"rnailm.com\", \"sec-live.com\", \"secrityprocessing.com\", - \"securitedmode.com\", \"securytingmail.com\", \"set-login.com\", \"usrchecking.com\", - \"com-serviceround.info\", \"mai1.info\", \"reviewer.mobi\", \"files-download.net\", - \"fixcool.net\", \"hanrnaii.net\", \"office356-us.org\", \"smtper.org\"]);\n(union - isfuzzy=true\n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe) - \n| parse Message with * ''('' DNSName '')'' * \n| where isnotempty(FileHash)\n| - where DNSName in~ (DomainNames)\n| extend Account = SourceUserID, Computer - = DeviceName, IPAddress = SourceIP\n),\n(DnsEvents \n| where TimeGenerated - >= ago(timeframe) \n| extend DNSName = Name\n| where isnotempty(DNSName)\n| - where DNSName in~ (DomainNames)\n| extend IPAddress = ClientIP\n),\n(VMConnection - \n| where TimeGenerated >= ago(timeframe) \n| parse RemoteDnsCanonicalNames - with * ''[\"'' DNSName ''\"]'' *\n| where isnotempty(DNSName)\n| where DNSName in~ - (DomainNames)\n| extend IPAddress = RemoteIp\n)\n)\n| extend timestamp = TimeGenerated, - AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity - = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"THALLIUM - domains included in DCU takedown","description":"THALLIUM spearphishing and - command and control domains included in December 2019 DCU/MSTIC takedown. - \n Matches domain name IOCs related to the THALLIUM activity group with CommonSecurityLog, - DnsEvents, VMConnection and SecurityEvents dataTypes.\n References: https://blogs.microsoft.com/on-the-issues/2019/12/30/microsoft-court-action-against-nation-state-cybercrime/ - ","tactics":["CommandAndControl","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-01-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2acc91c3-17c2-4388-938e-4eac2d5894e8","name":"2acc91c3-17c2-4388-938e-4eac2d5894e8","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nW3CIISLog\n| where TimeGenerated >= ago(timeframe)\n| where - csMethod == ''GET''\n| where isnotempty(csUriStem) and isnotempty(csUriQuery)\n| - where csUriStem contains \"logoimagehandler.ashx\"\n| where csUriQuery contains - \"codes\" and csUriQuery contains \"clazz\" and csUriQuery contains \"method\" - and csUriQuery contains \"args\"\n| extend timestamp = TimeGenerated, IPCustomEntity - = cIP, HostCustomEntity = Computer, AccountCustomEntity = csUserName","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"SUPERNOVA - webshell","description":"Identifies SUPERNOVA webshell based on W3CIISLog - data.\n References:\n - https://unit42.paloaltonetworks.com/solarstorm-supernova/","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2021-01-07T00:00:00Z","createdDateUTC":"2021-01-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d6190dde-8fd2-456a-ac5b-0a32400b0464","name":"d6190dde-8fd2-456a-ac5b-0a32400b0464","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet ProcessCreationEvents=() {\nlet processEvents=SecurityEvent\n| - where EventID==4688\n| where isnotempty(CommandLine)\n| project TimeGenerated, - Computer, Account = SubjectUserName, AccountDomain = SubjectDomainName, FileName - = Process, CommandLine, ParentProcessName;\nprocessEvents;\n};\nProcessCreationEvents - \n| where TimeGenerated > ago(timeframe) \n| where CommandLine contains \".decode(''base64'')\"\n or - CommandLine contains \"base64 --decode\"\n or CommandLine contains - \".decode64(\" \n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc - = max(TimeGenerated), CountToday = count() by Computer, Account, AccountDomain, - FileName, CommandLine, ParentProcessName \n| extend timestamp = StartTimeUtc, - AccountCustomEntity = Account, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Process - executed from binary hidden in Base64 encoded file","description":"Encoding - malicious software is a technique used to obfuscate files from detection. - \nThe first CommandLine component is looking for Python decoding base64. \nThe - second CommandLine component is looking for Bash/sh command line base64 decoding.\nThe - third one is looking for Ruby decoding base64.","tactics":["Execution","DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-01-24T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/712fab52-2a7d-401e-a08c-ff939cc7c25e","name":"712fab52-2a7d-401e-a08c-ff939cc7c25e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(Url)\n| join (\n AuditLogs\n | where TimeGenerated - >= ago(dt_lookBack)\n // Extract the URL that is contained within the JSON - data\n | extend Url = extract(\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\(\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+);\", - 1,tostring(TargetResources))\n | where isnotempty(Url)\n | extend userPrincipalName - = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\n | - extend TargetResourceDisplayName = tostring(TargetResources[0].displayName)\n | - extend Audit_TimeGenerated = TimeGenerated\n) on Url\n| summarize LatestIndicatorTime - = arg_max(TimeGenerated, *) by IndicatorId\n| project LatestIndicatorTime, - Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, - ConfidenceScore,\nAudit_TimeGenerated, OperationName, Identity, userPrincipalName, - TargetResourceDisplayName, Url\n| extend timestamp = Audit_TimeGenerated, - AccountCustomEntity = userPrincipalName, HostCustomEntity = TargetResourceDisplayName, - URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map URL entity to AuditLogs","description":"Identifies a match in AuditLogs - from any URL IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/23de46ea-c425-4a77-b456-511ae4855d69","name":"23de46ea-c425-4a77-b456-511ae4855d69","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - starttime = 14d;\nlet endtime = 1d;\n// The number of operations below which - an IP address is considered an unusual source of role assignment operations\nlet - alertOperationThreshold = 5;\nlet SensitiveOperationList = dynamic(\n[\"List - keys\", \"List Storage Account Keys\", \"Register Subscription\", \"Create - or Update Snapshot\", \"Create or Update Network Security Group\"]);\nlet - SensitiveActivity = AzureActivity\n| where OperationName in~ (SensitiveOperationList)\n| - where ActivityStatus =~ \"Succeeded\";\nSensitiveActivity\n| where TimeGenerated - between (ago(starttime) .. ago(endtime))\n| summarize count() by CallerIpAddress, - Caller\n| where count_ >= alertOperationThreshold\n| join kind = rightanti - ( \nSensitiveActivity\n| where TimeGenerated >= ago(endtime)\n| summarize - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), ActivityTimeStamp - = makelist(TimeGenerated), ActivityStatus = makelist(ActivityStatus), \nOperationIds - = makelist(OperationId), CorrelationIds = makelist(CorrelationId), Resources - = makelist(Resource), ResourceGroups = makelist(ResourceGroup), ResourceIds - = makelist(ResourceId), ActivityCountByCallerIPAddress = count() \nby CallerIpAddress, - Caller, OperationName\n) on CallerIpAddress, Caller\n| extend timestamp = - StartTimeUtc, AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Rare - subscription-level operations in Azure","description":"This query looks for - a few sensitive subscription-level events based on Azure Activity Logs. \n - For example this monitors for the operation name ''Create or Update Snapshot'' - which is used for creating backups but could be misused by attackers \n to - dump hashes or extract sensitive information from the disk.","tactics":["CredentialAccess","Persistence"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-24T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4b93c5af-d20b-4236-b696-a28b8c51407f","name":"4b93c5af-d20b-4236-b696-a28b8c51407f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet spanoftime = 10m;\nlet threshold = 0;\nSecurityEvent - \n| where TimeGenerated > ago(2*timeframe) \n// A user account was created\n| - where EventID == 4720\n| where AccountType =~ \"User\"\n| project creationTime - = TimeGenerated, CreateEventID = EventID, CreateActivity = Activity, Computer, - TargetUserName, UserPrincipalName, \nAccountUsedToCreate = SubjectAccount, - SIDofAccountUsedToCreate = SubjectUserSid, TargetAccount = tolower(TargetAccount), - TargetSid\n| join kind= inner (\n SecurityEvent\n | where TimeGenerated - > ago(timeframe) \n // A user account was deleted \n | where EventID == - 4726\n| where AccountType == \"User\"\n| project deletionTime = TimeGenerated, - DeleteEventID = EventID, DeleteActivity = Activity, Computer, TargetUserName, - UserPrincipalName, \nAccountUsedToDelete = SubjectAccount, SIDofAccountUsedToDelete - = SubjectUserSid, TargetAccount = tolower(TargetAccount), TargetSid\n) on - Computer, TargetAccount\n| where deletionTime - creationTime < spanoftime\n| - extend TimeDelta = deletionTime - creationTime\n| where tolong(TimeDelta) - >= threshold\n| project TimeDelta, creationTime, CreateEventID, CreateActivity, - Computer, TargetAccount, TargetSid, UserPrincipalName, AccountUsedToCreate, - SIDofAccountUsedToCreate,\ndeletionTime, DeleteEventID, DeleteActivity, AccountUsedToDelete, - SIDofAccountUsedToDelete\n| extend timestamp = creationTime, AccountCustomEntity - = AccountUsedToCreate, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"},{"identifier":"Sid","columnName":"SIDofAccountUsedToCreate"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"User - account created and deleted within 10 mins","description":"Identifies when - a user account is created and then deleted within 10 minutes. This can be - an indication of compromise and\nan adversary attempting to hide in the noise.","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-02-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f8dad4e9-3f19-4d70-ab7f-8f19ccd43a3e","name":"f8dad4e9-3f19-4d70-ab7f-8f19ccd43a3e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 1;\nAzureDiagnostics\n | where TimeGenerated - >= timeframe\n | where OperationName in (\"AzureFirewallApplicationRuleLog\",\"AzureFirewallNetworkRuleLog\")\n | - extend msg_s_replaced0 = replace(@\"\\s\\s\",@\" \",msg_s)\n | extend msg_s_replaced1 - = replace(@\"\\.\\s\",@\" \",msg_s_replaced0)\n | extend msg_a = split(msg_s_replaced1,\" - \")\n | extend srcAddr_a = split(msg_a[3],\":\") , destAddr_a = split(msg_a[5],\":\")\n | - extend protocol = tostring(msg_a[0]), srcIp = tostring(srcAddr_a[0]), srcPort - = tostring(srcAddr_a[1]), destIp = tostring(destAddr_a[0]), destPort = tostring(destAddr_a[1]), - action = tostring(msg_a[7])\n | where action == \"Deny\"\n | extend - url = iff(destIp matches regex \"\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+\",\"\",destIp)\n | - summarize StartTime = min(TimeGenerated), count() by srcIp, destIp, url, action, - protocol\n | where count_ >= [\"threshold\"]\n | extend timestamp = - StartTime, URLCustomEntity = url, IPCustomEntity = srcIp","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":1,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"Several - deny actions registered","description":"Identifies attack pattern when attacker - tries to move, or scan, from resource to resource on the network and creates - an incident when a source has more than 1 registered deny action in Azure - Firewall.","tactics":["Discovery","LateralMovement","CommandAndControl"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-10-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureFirewall","dataTypes":["AzureDiagnostics"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/57e56fc9-417a-4f41-a579-5475aea7b8ce","name":"57e56fc9-417a-4f41-a579-5475aea7b8ce","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1h;\nlet threshold = 1000;\nInfobloxNIOS\n| where TimeGenerated - >= ago(timeframe)\n| where ProcessName =~ \"dhcpd\" and Log_Type =~ \"DHCPREQUEST\"\n| - summarize count() by ServerIP, bin(TimeGenerated,5m)\n| where count_ > threshold\n| - join kind=inner (InfobloxNIOS\n | where ProcessName =~ \"dhcpd\" and Log_Type - =~ \"DHCPREQUEST\"\n | where TimeGenerated >= ago(timeframe)\n ) on - ServerIP\n| extend timestamp = TimeGenerated, IPCustomEntity = ServerIP","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Potential - DHCP Starvation Attack","description":"This creates an incident in the event - that an excessive amount of DHCPREQUEST have been recieved by a DHCP Server - and could potentially be an indication of a DHCP Starvation Attack.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"InfobloxNIOS","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0dd422ee-e6af-4204-b219-f59ac172e4c6","name":"0dd422ee-e6af-4204-b219-f59ac172e4c6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"ThreatIntelligence","properties":{"severity":"Medium","displayName":"(Preview) - Microsoft Threat Intelligence Analytics","description":"This rule generates - an alert when a Microsoft Threat Intelligence Indicator gets matched with - your event logs. The alerts are very high fidelity and are turned ON by default. - \n\nNote : It is advised to turn off any custom alert rules which match the - threat intelligence indicators with the same event logs matched by this analytics - to prevent duplicate alerts.","tactics":["Persistence","LateralMovement"],"lastUpdatedDateUTC":"2020-09-15T00:00:00Z","createdDateUTC":"2020-06-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"CEF","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e27dd7e5-4367-4c40-a2b7-fcd7e7a8a508","name":"e27dd7e5-4367-4c40-a2b7-fcd7e7a8a508","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet FailureThreshold = 15;\nlet FailedEvents = Okta_CL\n| - where TimeGenerated > timeframe\n| where eventType_s =~ \"user.session.start\"and - outcome_reason_s in (\"VERIFICATION_ERROR\",\"INVALID_CREDENTIALS\")\n| summarize - dcount(actor_alternateId_s) by client_ipAddress_s, bin(TimeGenerated, 5m)\n| - where dcount_actor_alternateId_s > FailureThreshold\n| project client_ipAddress_s, - TimeGenerated;\nOkta_CL\n| where TimeGenerated > timeframe\n| where eventType_s - =~ \"user.session.start\"and outcome_reason_s in (\"VERIFICATION_ERROR\",\"INVALID_CREDENTIALS\")\n| - summarize Users = make_set(actor_alternateId_s) by client_ipAddress_s, City - = client_geographicalContext_city_s, Country = client_geographicalContext_country_s, - bin(TimeGenerated, 5m)\n| join kind=inner (FailedEvents) on client_ipAddress_s, - TimeGenerated\n| sort by TimeGenerated desc\n| extend timestamp = TimeGenerated, - IPCustomEntity = client_ipAddress_s","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Potential - Password Spray Attack","description":"This query searches for failed attempts - to log into the Okta console from more than 15 various users within a 5 minute - timeframe from the same source. This is a potential indication of a password - spray attack","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"OktaSSO","dataTypes":["Okta_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7d6d8a8e-b08a-4082-8dbb-d7fd2cbbc35e","name":"7d6d8a8e-b08a-4082-8dbb-d7fd2cbbc35e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - scriptExtensions = dynamic([\".php\", \".jsp\", \".js\", \".aspx\", \".asmx\", - \".asax\", \".cfm\", \".shtml\"]);\nunion isfuzzy=true\n(SecurityEvent\n| - where EventID == 4663\n| where Process has_any (\"umworkerprocess.exe\", \"UMService.exe\")\n| - where ObjectName has_any (scriptExtensions)\n| where AccessMask in (''0x2'',''0x100'', - ''0x10'', ''0x4'')),\n(DeviceFileEvents\n| where ActionType =~ \"FileCreated\"\n| - where InitiatingProcessFileName has_any (\"umworkerprocess.exe\", \"UMService.exe\")\n| - where FileName has_any(scriptExtensions))\n| extend timestamp = TimeGenerated, - AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity - = IpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"InitiatingProcessAccountUpn"}]},{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"DeviceName"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"HAFNIUM - UM Service writing suspicious file.","description":"This query looks for the - Exchange server UM process writing suspicious files that may be indicative - of webshells.\nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-03-02T00:00:00Z","createdDateUTC":"2021-03-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceFileEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1572e66b-20a7-4012-9ec4-77ec4b101bc8","name":"1572e66b-20a7-4012-9ec4-77ec4b101bc8","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 1d;\nlet endtime = 1h;\nlet prev23hThreshold = 4;\nlet prev1hThreshold - = 15;\nlet Kerbevent =\nSecurityEvent\n| where TimeGenerated >= ago(starttime)\n| - where EventID == 4769\n| parse EventData with * ''TicketEncryptionType\">'' - TicketEncryptionType \"<\" *\n| where TicketEncryptionType == ''0x17''\n| - parse EventData with * ''TicketOptions\">'' TicketOptions \"<\" *\n| where - TicketOptions == ''0x40810000''\n| parse EventData with * ''Status\">'' Status - \"<\" *\n| where Status == ''0x0''\n| parse EventData with * ''ServiceName\">'' - ServiceName \"<\" *\n| where ServiceName !contains \"$\" and ServiceName !contains - \"krbtgt\" \n| parse EventData with * ''TargetUserName\">'' TargetUserName - \"<\" *\n| where TargetUserName !contains \"$@\" and TargetUserName !contains - ServiceName\n| parse EventData with * ''IpAddress\">::ffff:'' ClientIPAddress - \"<\" *;\nlet Kerbevent23h = Kerbevent\n| where TimeGenerated >= ago(starttime) - and TimeGenerated < ago(endtime)\n| summarize ServiceNameCountPrev23h = dcount(ServiceName), - ServiceNameSet23h = makeset(ServiceName) \nby Computer, TargetUserName,TargetDomainName, - ClientIPAddress, TicketOptions, TicketEncryptionType, Status\n| where ServiceNameCountPrev23h - < prev23hThreshold;\nlet Kerbevent1h = \nKerbevent\n| where TimeGenerated - >= ago(endtime)\n| summarize min(TimeGenerated), max(TimeGenerated), ServiceNameCountPrev1h - = dcount(ServiceName), ServiceNameSet1h = makeset(ServiceName) \nby Computer, - TargetUserName,TargetDomainName, ClientIPAddress, TicketOptions, TicketEncryptionType, - Status;\nKerbevent1h \n| join kind=leftanti\n(\nKerbevent23h\n) on TargetUserName, - TargetDomainName\n// Threshold value set above is based on testing, this value - may need to be changed for your environment.\n| where ServiceNameCountPrev1h - > prev1hThreshold\n| project StartTimeUtc = min_TimeGenerated, EndTimeUtc - = max_TimeGenerated, TargetUserName, Computer, ClientIPAddress, TicketOptions, - \nTicketEncryptionType, Status, ServiceNameCountPrev1h, ServiceNameSet1h, - TargetDomainName\n| extend timestamp = StartTimeUtc, AccountCustomEntity = - strcat(TargetDomainName,\"\\\\\", TargetUserName), HostCustomEntity = Computer, - IPCustomEntity = ClientIPAddress","queryFrequency":"PT1H","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Potential - Kerberoasting","description":"A service principal name (SPN) is used to uniquely - identify a service instance in a Windows environment. \nEach SPN is usually - associated with a service account. Organizations may have used service accounts - with weak passwords in their environment. \nAn attacker can try requesting - Kerberos ticket-granting service (TGS) service tickets for any SPN from a - domain controller (DC) which contains \na hash of the Service account. This - can then be used for offline cracking. This hunting query looks for accounts - that are generating excessive \nrequests to different resources within the - last hour compared with the previous 24 hours. Normal users would not make - an unusually large number \nof request within a small time window. This is - based on 4769 events which can be very noisy so environment based tweaking - might be needed.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-22T00:00:00Z","createdDateUTC":"2019-04-01T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0914adab-90b5-47a3-a79f-7cdcac843aa7","name":"0914adab-90b5-47a3-a79f-7cdcac843aa7","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - starttime = 14d;\nlet timeframe = 1d;\nlet scorethreshold = 3;\nlet baselinethreshold - = 5;\nlet OperationList = dynamic(\n[\"SecretGet\", \"KeyGet\", \"VaultGet\"]);\nlet - TimeSeriesData = AzureDiagnostics\n| where TimeGenerated between (startofday(ago(starttime))..startofday(now()))\n| - extend ResultType = columnifexists(\"ResultType\", \"None\"), CallerIPAddress - = columnifexists(\"CallerIPAddress\", \"None\")\n| where ResultType !~ \"None\" - and isnotempty(ResultType)\n| where CallerIPAddress !~ \"None\" and isnotempty(CallerIPAddress)\n| - where ResourceType =~ \"VAULTS\" and ResultType =~ \"Success\"\n| where OperationName - in (OperationList)\n| project TimeGenerated, OperationName, Resource, CallerIPAddress\n| - make-series HourlyCount=count() on TimeGenerated from startofday(ago(starttime)) - to startofday(now()) step timeframe by Resource;\n//Filter anomolies against - TimeSeriesData\nlet TimeSeriesAlerts = TimeSeriesData\n| extend (anomalies, - score, baseline) = series_decompose_anomalies(HourlyCount, scorethreshold, - -1, ''linefit'')\n| mv-expand HourlyCount to typeof(double), TimeGenerated - to typeof(datetime), anomalies to typeof(double),score to typeof(double), - baseline to typeof(long)\n| where anomalies > 0 | extend AnomalyHour = TimeGenerated\n| - where baseline > baselinethreshold // Filtering low count events per baselinethreshold\n| - project Resource, AnomalyHour, TimeGenerated, HourlyCount, baseline, anomalies, - score;\nlet AnomalyHours = TimeSeriesAlerts | where TimeGenerated > ago(2d) - | project TimeGenerated;\n// Filter the alerts since specified timeframe\nTimeSeriesAlerts\n| - where TimeGenerated > ago(2d)\n// Join against base logs since specified timeframe - to retrive records associated with the hour of anomoly\n| join (\nAzureDiagnostics\n| - where TimeGenerated > ago(timeframe)\n| extend DateHour = bin(TimeGenerated, - 1h) // create a new column and round to hour\n| where DateHour in ((AnomalyHours)) - //filter the dataset to only selected anomaly hours\n| extend ResultType = - columnifexists(\"ResultType\", \"NoResultType\")\n| extend requestUri_s = - columnifexists(\"requestUri_s\", \"None\"), identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - = columnifexists(\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\", - \"None\")\n| extend id_s = columnifexists(\"id_s\", \"None\"), CallerIPAddress - = columnifexists(\"CallerIPAddress\", \"None\"), clientInfo_s = columnifexists(\"clientInfo_s\", - \"None\")\n| where ResultType !~ \"None\" and isnotempty(ResultType)\n| where - identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - !~ \"None\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\n| - where id_s !~ \"None\" and isnotempty(id_s)\n| where CallerIPAddress !~ \"None\" - and isnotempty(CallerIPAddress)\n| where clientInfo_s !~ \"None\" and isnotempty(clientInfo_s)\n| - where requestUri_s !~ \"None\" and isnotempty(requestUri_s)\n| where ResourceType - =~ \"VAULTS\" and ResultType =~ \"Success\"\n| where OperationName in (OperationList)\n| - summarize PerOperationCount=count(), LatestAnomalyTime = arg_max(TimeGenerated,*) - by bin(TimeGenerated,1h), Resource, OperationName, id_s, CallerIPAddress, - identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, - requestUri_s, clientInfo_s\n) on Resource, TimeGenerated\n| summarize EventCount=count(), - OperationNameList = make_set(OperationName), RequestURLList = make_set(requestUri_s, - 100), AccountList = make_set(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, - 100), AccountMax = arg_max(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g,*) - by Resource, id_s, clientInfo_s, LatestAnomalyTime\n| extend timestamp = LatestAnomalyTime, - IPCustomEntity = CallerIPAddress, AccountCustomEntity = AccountMax","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Azure - Key Vault access TimeSeries anomaly","description":"Indentifies a sudden increase - in count of Azure Key Vault secret or vault access operations by CallerIPAddress. - The query leverages a built-in KQL anomaly detection algorithm\nto find large - deviations from baseline Azure Key Vault access patterns. Any sudden increase - in the count of Azure Key Vault accesses can be an\nindication of adversary - dumping credentials via automated methods. If you are seeing any noise, try - filtering known source(IP/Account) and user-agent combinations.\nTimeSeries - Reference Blog: https://techcommunity.microsoft.com/t5/azure-sentinel/looking-for-unknown-anomalies-what-is-normal-time-series/ba-p/555052","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-07-01T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/500415fb-bba7-4227-a08a-9857fb61b6a7","name":"500415fb-bba7-4227-a08a-9857fb61b6a7","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nOfficeActivity\n| where TimeGenerated >= ago(timeframe)\n| - where OfficeWorkload == \"Exchange\"\n| where Operation in~ (\"New-TransportRule\", - \"Set-TransportRule\")\n| extend p = parse_json(Parameters)\n| extend RuleName - = case(\n Operation =~ \"Set-TransportRule\", tostring(OfficeObjectId),\n Operation - =~ \"New-TransportRule\", tostring(p[1].Value),\n \"Unknown\"\n ) \n| mvexpand - p\n| where (p.Name =~ \"BlindCopyTo\" or p.Name =~ \"RedirectMessageTo\") - and isnotempty(p.Value)\n| extend RedirectTo = p.Value\n| extend ClientIPOnly - = case( \n ClientIP has \".\" and ClientIP has \":\", tostring(split(ClientIP,\":\")[0]), - \n ClientIP has \".\" and ClientIP has \"-\", tostring(split(ClientIP,\"-\")[0]), - \n ClientIP has \"[\", tostring(trim_start(@''[[]'',tostring(split(ClientIP,\"]\")[0]))),\n ClientIP\n ) \n| - extend Port = case(\n ClientIP has \".\" and ClientIP has \":\", (split(ClientIP,\":\")[1]),\n ClientIP - has \".\" and ClientIP has \"-\", (split(ClientIP,\"-\")[1]),\n ClientIP - has \"[\" and ClientIP has \":\", tostring(split(ClientIP,\"]:\")[1]),\n ClientIP - has \"[\" and ClientIP has \"-\", tostring(split(ClientIP,\"]-\")[1]),\n ClientIP\n )\n| - extend ClientIP = ClientIPOnly\n| project TimeGenerated, RedirectTo, ClientIP, - Port, UserId, Operation, RuleName\n| extend timestamp = TimeGenerated, AccountCustomEntity - = UserId, IPCustomEntity = ClientIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Mail - redirect via ExO transport rule","description":"Identifies when Exchange Online - transport rule configured to forward emails.\nThis could be an adversary mailbox - configured to collect mail from multiple user accounts.","tactics":["Collection","Exfiltration"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-05-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f845881e-2500-44dc-8ed7-b372af3e1e25","name":"f845881e-2500-44dc-8ed7-b372af3e1e25","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeFrame = 1d;\nlet short_uaLength = 5;\nlet long_uaLength = 1000;\nlet c_threshold - = 100;\nW3CIISLog \n| where TimeGenerated >= ago(timeFrame)\n// Exclude local - IPs as these create noise\n| where cIP !startswith \"192.168.\" and cIP != - \"::1\"\n| where isnotempty(csUserAgent) and csUserAgent !in~ (\"-\", \"MSRPC\") - and (string_size(csUserAgent) <= short_uaLength or string_size(csUserAgent) - >= long_uaLength)\n| extend csUserAgent_size = string_size(csUserAgent)\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), - ConnectionCount = count() by Computer, sSiteName, sPort, csUserAgent, csUserAgent_size, - csUserName , csMethod, csUriStem, sIP, cIP, scStatus, scSubStatus, scWin32Status\n| - where ConnectionCount < c_threshold\n| extend timestamp = StartTimeUtc, AccountCustomEntity - = csUserName, HostCustomEntity = Computer, IPCustomEntity = cIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Anomalous - User Agent connection attempt","description":"Identifies connection attempts - (success or fail) from clients with very short or very long User Agent strings - and with less than 100 connection attempts.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/cca3b4d9-ac39-4109-8b93-65bb284003e6","name":"cca3b4d9-ac39-4109-8b93-65bb284003e6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nlet emailregex = @''^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$'';\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n//Filtering the table for Email related IOCs\n| where - isnotempty(EmailRecipient)\n| join (\n AzureActivity | where TimeGenerated - >= ago(dt_lookBack) and isnotempty(Caller)\n | extend Caller = tolower(Caller)\n | - where Caller matches regex emailregex\n | extend AzureActivity_TimeGenerated - = TimeGenerated\n)\non $left.EmailRecipient == $right.Caller\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, - ExpirationDateTime, ConfidenceScore, Url, AzureActivity_TimeGenerated,\nEmailSenderName, - EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, - Caller, Level, CallerIpAddress, Category, OperationName,\nOperationNameValue, - ActivityStatus, ResourceGroup, SubscriptionId\n| extend timestamp = AzureActivity_TimeGenerated, - AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress, URLCustomEntity - = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Email entity to AzureActivity","description":"Identifies a match in - AzureActivity table from any Email IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4d94d4a9-dc96-410a-8dea-4d4d4584188b","name":"4d94d4a9-dc96-410a-8dea-4d4d4584188b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1h;\nlet OperationList = dynamic([\"Add member to role\",\"Add - member to role in PIM requested (permanent)\"]);\nlet PrivilegedGroups = dynamic([\"UserAccountAdmins\",\"PrivilegedRoleAdmins\",\"TenantAdmins\"]);\nAuditLogs\n| - where TimeGenerated >= ago(timeframe)\n| where LoggedByService =~ \"Core Directory\"\n| - where Category =~ \"RoleManagement\"\n| where OperationName in~ (OperationList)\n| - mv-expand TargetResources\n| extend modifiedProperties = parse_json(TargetResources).modifiedProperties\n| - mv-expand modifiedProperties\n| extend DisplayName = tostring(parse_json(modifiedProperties).displayName), - GroupName = trim(@''\"'',tostring(parse_json(modifiedProperties).newValue))\n| - extend AppId = tostring(parse_json(parse_json(InitiatedBy).app).appId), InitiatedByDisplayName - = tostring(parse_json(parse_json(InitiatedBy).app).displayName), ServicePrincipalId - = tostring(parse_json(parse_json(InitiatedBy).app).servicePrincipalId), ServicePrincipalName - = tostring(parse_json(parse_json(InitiatedBy).app).servicePrincipalName)\n| - where DisplayName =~ \"Role.WellKnownObjectName\"\n| where GroupName in~ (PrivilegedGroups)\n// - If you want to still alert for operations from PIM, remove below filtering - for MS-PIM.\n| where InitiatedByDisplayName != \"MS-PIM\"\n| project TimeGenerated, - AADOperationType, Category, OperationName, AADTenantId, AppId, InitiatedByDisplayName, - ServicePrincipalId, ServicePrincipalName, DisplayName, GroupName\n| extend - timestamp = TimeGenerated, AccountCustomEntity = ServicePrincipalName","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"User - added to Azure Active Directory Privileged Groups","description":"This will - alert when a user is added to any of the Privileged Groups.\nFor further information - on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\nFor - Administrator role permissions in Azure Active Directory please see https://docs.microsoft.com/azure/active-directory/users-groups-roles/directory-assign-admin-roles","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/500c103a-0319-4d56-8e99-3cec8d860757","name":"500c103a-0319-4d56-8e99-3cec8d860757","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - lookBack = 1d;\nSigninLogs \n| where TimeGenerated >= ago(lookBack)\n| where - ResultType == \"50057\" \n| where ResultDescription == \"User account is disabled. - The account has been disabled by an administrator.\" \n| summarize StartTimeUtc - = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), disabledAccountLoginAttempts - = count(), \ndisabledAccountsTargeted = dcount(UserPrincipalName), applicationsTargeted - = dcount(AppDisplayName), disabledAccountSet = makeset(UserPrincipalName), - \napplicationSet = makeset(AppDisplayName) by IPAddress\n| order by disabledAccountLoginAttempts - desc\n| join kind= leftouter (\n // Consider these IPs suspicious - and - alert any related successful sign-ins\n SigninLogs\n | where TimeGenerated - >= ago(lookBack)\n | where ResultType == 0\n | summarize successfulAccountSigninCount - = dcount(UserPrincipalName), successfulAccountSigninSet = makeset(UserPrincipalName, - 15) by IPAddress\n // Assume IPs associated with sign-ins from 100+ distinct - user accounts are safe\n | where successfulAccountSigninCount < 100\n) - on IPAddress \n// IPs from which attempts to authenticate as disabled user - accounts originated, and had a non-zero success rate for some other account\n| - where successfulAccountSigninCount != 0\n| project StartTimeUtc, EndTimeUtc, - IPAddress, disabledAccountLoginAttempts, disabledAccountsTargeted, disabledAccountSet, - applicationSet, \nsuccessfulAccountSigninCount, successfulAccountSigninSet\n| - order by disabledAccountLoginAttempts\n| extend timestamp = StartTimeUtc, - IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Sign-ins - from IPs that attempt sign-ins to disabled accounts","description":"Identifies - IPs with failed attempts to sign in to one or more disabled accounts signed - in successfully to another account.\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\n50057 - - User account is disabled. The account has been disabled by an administrator.","tactics":["InitialAccess","Persistence"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/34663177-8abf-4db1-b0a4-5683ab273f44","name":"34663177-8abf-4db1-b0a4-5683ab273f44","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = ago(1h);\nlet threshold = 20;\nPulseConnectSecure\n| where TimeGenerated - >= timeframe\n| where Messages contains \"Login failed\"\n| summarize StartTime - = min(TimeGenerated), EndTime = max(TimeGenerated), count() by User, Source_IP\n| - where count_ > threshold\n| extend timestamp = StartTime, AccountCustomEntity - = User, IPCustomEntity = Source_IP","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"PulseConnectSecure - - Potential Brute Force Attempts","description":"This query identifies evidence - of potential brute force attack by looking at multiple failed attempts to - log into the VPN server","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PulseConnectSecure","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/15ae38a2-2e29-48f7-883f-863fb25a5a06","name":"15ae38a2-2e29-48f7-883f-863fb25a5a06","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 8d;\nlet endtime = 1d;\nlet threshold = 10;\nDnsEvents \n| where - TimeGenerated > ago(endtime)\n| where Name contains \"in-addr.arpa\" \n| summarize - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), dcount(Name) - by ClientIP\n| where dcount_Name > threshold\n| project StartTimeUtc, EndTimeUtc, - ClientIP , dcount_Name \n| join kind=leftanti (DnsEvents \n | where TimeGenerated - between(ago(starttime)..ago(endtime))\n | where Name contains \"in-addr.arpa\" - \n | summarize dcount(Name) by ClientIP, bin(TimeGenerated, 1d)\n | - where dcount_Name > threshold\n | project ClientIP , dcount_Name \n) on - ClientIP\n| extend timestamp = StartTimeUtc, IPCustomEntity = ClientIP","queryFrequency":"P1D","queryPeriod":"P8D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Rare - client observed with high reverse DNS lookup count","description":"Identifies - clients with a high reverse DNS counts which could be carrying out reconnaissance - or discovery activity.\nAlert is generated if the IP performing such reverse - DNS lookups was not seen doing so in the preceding 7-day period.","tactics":["Discovery"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/24f8c234-d1ff-40ec-8b73-96b17a3a9c1c","name":"24f8c234-d1ff-40ec-8b73-96b17a3a9c1c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe =1d;\nlet EventCountThreshold = 25;\nlet OperationList = dynamic(\n[\"SecretGet\", - \"KeyGet\", \"VaultGet\"]);\nAzureDiagnostics\n| where TimeGenerated > ago(timeframe)\n| - extend ResultType = columnifexists(\"ResultType\", \"None\"), identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - = columnifexists(\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\", - \"None\")\n| where ResultType !~ \"None\" and isnotempty(ResultType)\n| where - identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - !~ \"None\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\n| - where ResourceType =~ \"VAULTS\" and ResultType =~ \"Success\"\n| where OperationName - in (OperationList) \n| summarize count() by identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, - OperationName\n| where count_ > EventCountThreshold \n| join (\nAzureDiagnostics\n| - where TimeGenerated > ago(timeframe)\n| extend ResultType = columnifexists(\"ResultType\", - \"NoResultType\")\n| extend requestUri_s = columnifexists(\"requestUri_s\", - \"None\"), identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - = columnifexists(\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\", - \"None\")\n| extend id_s = columnifexists(\"id_s\", \"None\"), CallerIPAddress - = columnifexists(\"CallerIPAddress\", \"None\"), clientInfo_s = columnifexists(\"clientInfo_s\", - \"None\")\n| where ResultType !~ \"None\" and isnotempty(ResultType)\n| where - identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - !~ \"None\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\n| - where id_s !~ \"None\" and isnotempty(id_s)\n| where CallerIPAddress !~ \"None\" - and isnotempty(CallerIPAddress)\n| where clientInfo_s !~ \"None\" and isnotempty(clientInfo_s)\n| - where requestUri_s !~ \"None\" and isnotempty(requestUri_s)\n| where OperationName - in~ (OperationList) \n) on identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g - \n| summarize EventCount=sum(count_), StartTimeUtc=min(TimeGenerated), EndTimeUtc=max(TimeGenerated), - TimeTriggered=makelist(TimeGenerated),OperationNameList=make_set(OperationName), - RequestURLList=make_set(requestUri_s), CallerIPList = make_set(CallerIPAddress), CallerIPMax= - arg_max(CallerIPAddress,*) by ResourceType, ResultType, Resource, id_s, identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, - clientInfo_s\n| extend timestamp = EndTimeUtc, IPCustomEntity = CallerIPMax, - AccountCustomEntity = identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Mass - secret retrieval from Azure Key Vault","description":"Identifies mass secret - retrieval from Azure Key Vault observed by a single user. \nMass secret retrival - crossing a certain threshold is an indication of credential dump operations - or mis-configured applications. \nYou can tweak the EventCountThreshold based - on average count seen in your environment \nand also filter any known sources - (IP/Account) and useragent combinations based on historical analysis to further - reduce noise","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2019-07-01T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/39198934-62a0-4781-8416-a81265c03fd6","name":"39198934-62a0-4781-8416-a81265c03fd6","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - detectionTime = 1d;\nlet joinLookback = 14d;\nAuditLogs\n| where TimeGenerated - > ago(detectionTime)\n| where LoggedByService =~ \"Core Directory\"\n| where - Category =~ \"ApplicationManagement\"\n| where OperationName =~ \"Consent - to application\"\n| where TargetResources has \"offline\"\n| extend AppDisplayName - = TargetResources.[0].displayName\n| extend AppClientId = tolower(TargetResources.[0].id)\n| - where AppClientId !in ((externaldata(knownAppClientId:string, knownAppDisplayName:string)[@\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.OAuth.KnownApplications.csv\"] - with (format=\"csv\")))\n| extend ConsentFull = TargetResources[0].modifiedProperties[4].newValue\n| - parse ConsentFull with * \"ConsentType: \" GrantConsentType \", Scope: \" - GrantScope1 \"]\" *\n| where ConsentFull contains \"user.read\" and ConsentFull - contains \"offline_access\" and ConsentFull contains \"mail.readwrite\" and - ConsentFull contains \"mail.send\" and ConsentFull contains \"files.read.all\"\n| - where GrantConsentType != \"AllPrincipals\" // NOTE: we are ignoring if OAuth - application was granted to all users via an admin - but admin due diligence - should be audited occasionally\n| extend GrantIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), - InitiatedBy.user.ipAddress, InitiatedBy.app.ipAddress)\n| extend GrantInitiatedBy - = iff(isnotempty(InitiatedBy.user.userPrincipalName),InitiatedBy.user.userPrincipalName, - InitiatedBy.app.displayName)\n| extend GrantUserAgent = iff(AdditionalDetails[0].key - =~ \"User-Agent\", AdditionalDetails[0].value, \"\")\n| project TimeGenerated, - GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, GrantIpAddress, - GrantUserAgent, AppClientId, OperationName, ConsentFull, CorrelationId\n| - join kind = leftouter (AuditLogs\n| where TimeGenerated > ago(joinLookback)\n| - where LoggedByService =~ \"Core Directory\"\n| where Category =~ \"ApplicationManagement\"\n| - where OperationName =~ \"Add service principal\"\n| extend AppClientId = tolower(TargetResources[0].id)\n| - extend AppReplyURLs = iff(TargetResources[0].modifiedProperties[1].newValue - has \"AddressType\", TargetResources[0].modifiedProperties[1].newValue, \"\")\n| - distinct AppClientId, tostring(AppReplyURLs)\n)\non AppClientId\n| join kind - = innerunique (AuditLogs\n| where TimeGenerated > ago(joinLookback)\n| where - LoggedByService =~ \"Core Directory\"\n| where Category =~ \"ApplicationManagement\"\n| - where OperationName =~ \"Add OAuth2PermissionGrant\" or OperationName =~ \"Add - delegated permission grant\"\n| extend GrantAuthentication = tostring(TargetResources[0].displayName)\n| - extend GrantOperation = OperationName\n| project GrantAuthentication, GrantOperation, - CorrelationId\n) on CorrelationId\n| project TimeGenerated, GrantConsentType, - GrantScope1, GrantInitiatedBy, AppDisplayName, AppReplyURLs, GrantIpAddress, - GrantUserAgent, AppClientId, GrantAuthentication, OperationName, GrantOperation, - CorrelationId, ConsentFull\n| extend timestamp = TimeGenerated, AccountCustomEntity - = GrantInitiatedBy, IPCustomEntity = GrantIpAddress","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Suspicious - application consent similar to PwnAuth","description":"This will alert when - a user consents to provide a previously-unknown Azure application with the - same OAuth permissions used by the FireEye PwnAuth toolkit (https://github.com/fireeye/PwnAuth).\nThe - default permissions/scope for the PwnAuth toolkit are user.read, offline_access, - mail.readwrite, mail.send, and files.read.all.\nConsent to applications with - these permissions should be rare, especially as the knownApplications list - is expanded. Public contributions to expand this filter are welcome!\nFor - further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["CredentialAccess","DefenseEvasion"],"lastUpdatedDateUTC":"2020-12-03T00:00:00Z","createdDateUTC":"2020-06-26T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a3df4a32-4805-4c6d-8699-f3c888af2f67","name":"a3df4a32-4805-4c6d-8699-f3c888af2f67","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - TimeFrame = ago(1d);\nlet Alert1 = \nSecurityAlert\n| where TimeGenerated - > TimeFrame\n| where AlertName == \"Unfamiliar sign-in properties\"\n| extend - UserPrincipalName = tostring(parse_json(ExtendedProperties).[\"User Account\"])\n| - extend Alert1Time = TimeGenerated\n| extend Alert1 = AlertName\n| extend Alert1Severity - = AlertSeverity\n;\nlet Alert2 = \nSecurityAlert\n| where TimeGenerated > - TimeFrame\n| where AlertName == \"Atypical travel\"\n| extend UserPrincipalName - = tostring(parse_json(ExtendedProperties).[\"User Account\"])\n| extend Alert2Time - = TimeGenerated\n| extend Alert2 = AlertName\n| extend Alert2Severity = AlertSeverity\n| - extend CurrentLocation = strcat(tostring(parse_json(tostring(parse_json(Entities)[1].Location)).CountryCode), - \"|\", tostring(parse_json(tostring(parse_json(Entities)[1].Location)).State), - \"|\", tostring(parse_json(tostring(parse_json(Entities)[1].Location)).City))\n| - extend PreviousLocation = strcat(tostring(parse_json(tostring(parse_json(Entities)[2].Location)).CountryCode), - \"|\", tostring(parse_json(tostring(parse_json(Entities)[2].Location)).State), - \"|\", tostring(parse_json(tostring(parse_json(Entities)[2].Location)).City))\n| - extend CurrentIPAddress = tostring(parse_json(Entities)[1].Address)\n| extend - PreviousIPAddress = tostring(parse_json(Entities)[2].Address)\n;\nAlert1\n| - join kind=inner Alert2 on UserPrincipalName\n| where abs(datetime_diff(''minute'', - Alert1Time, Alert2Time)) <=10\n| extend TimeDelta = Alert1Time - Alert2Time\n| - project UserPrincipalName, Alert1, Alert1Time, Alert1Severity, Alert2, Alert2Time, - Alert2Severity, TimeDelta, CurrentLocation, PreviousLocation, CurrentIPAddress, - PreviousIPAddress\n| extend AccountCustomEntity = UserPrincipalName\n| extend - IPCustomEntity = CurrentIPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Correlate - Unfamiliar sign-in properties and atypical travel alerts","description":"When - a user has both an Unfamiliar sign-in properties alert and an Atypical travel - alert within 20 minutes, the alert should be handled with a higher severity","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-09-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectoryIdentityProtection","dataTypes":["SecurityAlert - (IPC)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3174a9ec-d0ad-4152-8307-94ed04fa450a","name":"3174a9ec-d0ad-4152-8307-94ed04fa450a","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet SHA256Hash = \"1174fd03271f80f5e2a6435c72bdd0272a6e3a37049f6190abf125b216a83471\" - ;\n(union isfuzzy=true\n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe) - \n| parse Message with * ''('' DNSName '')'' * \n| where isnotempty(FileHash)\n| - where FileHash in (SHA256Hash) \n| extend Account = SourceUserID, Computer - = DeviceName, IPAddress = SourceIP\n),\n(Event\n//This query uses sysmon data - depending on table name used this may need updataing\n| where TimeGenerated - >= ago(3d)\n| where Source == \"Microsoft-Windows-Sysmon\"\n| extend EvData - = parse_xml(EventData)\n| extend EventDetail = EvData.DataItem.EventData.Data\n| - extend Hashes = EventDetail.[16].[\"#text\"]\n| parse Hashes with * ''SHA256='' - SHA265 '','' * \n| where isnotempty(Hashes)\n| where Hashes in (SHA256Hash) - \n| extend Account = UserName\n)\n)\n| extend timestamp = TimeGenerated, AccountCustomEntity - = Account, HostCustomEntity = Computer, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - ZINC related maldoc hash","description":"Document hash used by ZINC in highly - targeted spear phishing campaign.","tactics":["CommandAndControl","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-10-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3533f74c-9207-4047-96e2-0eb9383be587","name":"3533f74c-9207-4047-96e2-0eb9383be587","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - detectionTime = 1d;\nlet joinLookback = 14d;\nAuditLogs\n| where TimeGenerated - > ago(detectionTime)\n| where LoggedByService =~ \"Core Directory\"\n| where - Category =~ \"ApplicationManagement\"\n| where OperationName =~ \"Consent - to application\"\n| where TargetResources has \"offline\"\n| extend AppDisplayName - = TargetResources.[0].displayName\n| extend AppClientId = tolower(TargetResources.[0].id)\n| - where AppClientId !in ((externaldata(knownAppClientId:string, knownAppDisplayName:string)[@\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.OAuth.KnownApplications.csv\"] - with (format=\"csv\")))\n| extend ConsentFull = TargetResources[0].modifiedProperties[4].newValue\n| - parse ConsentFull with * \"ConsentType: \" GrantConsentType \", Scope: \" - GrantScope1 \"]\" *\n| where ConsentFull contains \"offline_access\" and ConsentFull - contains \"Files.Read\" or ConsentFull contains \"Mail.Read\" or ConsentFull - contains \"Notes.Read\" or ConsentFull contains \"ChannelMessage.Read\" or - ConsentFull contains \"Chat.Read\" or ConsentFull contains \"TeamsActivity.Read\" - or ConsentFull contains \"Group.Read\" or ConsentFull contains \"EWS.AccessAsUser.All\" - or ConsentFull contains \"EAS.AccessAsUser.All\"\n| where GrantConsentType - != \"AllPrincipals\" // NOTE: we are ignoring if OAuth application was granted - to all users via an admin - but admin due diligence should be audited occasionally\n| - extend GrantIpAddress = tostring(iff(isnotempty(InitiatedBy.user.ipAddress), - InitiatedBy.user.ipAddress, InitiatedBy.app.ipAddress))\n| extend GrantInitiatedBy - = tostring(iff(isnotempty(InitiatedBy.user.userPrincipalName),InitiatedBy.user.userPrincipalName, - InitiatedBy.app.displayName))\n| extend GrantUserAgent = tostring(iff(AdditionalDetails[0].key - =~ \"User-Agent\", AdditionalDetails[0].value, \"\"))\n| project TimeGenerated, - GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, GrantIpAddress, - GrantUserAgent, AppClientId, OperationName, ConsentFull, CorrelationId\n| - join kind = leftouter (AuditLogs\n| where TimeGenerated > ago(joinLookback)\n| - where LoggedByService =~ \"Core Directory\"\n| where Category =~ \"ApplicationManagement\"\n| - where OperationName =~ \"Add service principal\"\n| extend AppClientId = tolower(TargetResources[0].id)\n| - extend AppReplyURLs = iff(TargetResources[0].modifiedProperties[1].newValue - has \"AddressType\", TargetResources[0].modifiedProperties[1].newValue, \"\")\n| - distinct AppClientId, tostring(AppReplyURLs)\n)\non AppClientId\n| join kind - = innerunique (AuditLogs\n| where TimeGenerated > ago(joinLookback)\n| where - LoggedByService =~ \"Core Directory\"\n| where Category =~ \"ApplicationManagement\"\n| - where OperationName =~ \"Add OAuth2PermissionGrant\" or OperationName =~ \"Add - delegated permission grant\"\n| extend GrantAuthentication = tostring(TargetResources[0].displayName)\n| - extend GrantOperation = OperationName\n| project GrantAuthentication, GrantOperation, - CorrelationId\n) on CorrelationId\n| project TimeGenerated, GrantConsentType, - GrantScope1, GrantInitiatedBy, AppDisplayName, AppReplyURLs, GrantIpAddress, - GrantUserAgent, AppClientId, GrantAuthentication, OperationName, GrantOperation, - CorrelationId, ConsentFull\n| extend timestamp = TimeGenerated, AccountCustomEntity - = GrantInitiatedBy, IPCustomEntity = GrantIpAddress","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Suspicious - application consent for offline access","description":"This will alert when - a user consents to provide a previously-unknown Azure application with offline - access via OAuth.\nOffline access will provide the Azure App with access to - the listed resources without requiring two-factor authentication.\nConsent - to applications with offline access and read capabilities should be rare, - especially as the knownApplications list is expanded. Public contributions - to expand this filter are welcome!\nFor further information on AuditLogs please - see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-09T00:00:00Z","createdDateUTC":"2020-06-26T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c87fb346-ea3a-4c64-ba92-3dd383e0f0b5","name":"c87fb346-ea3a-4c64-ba92-3dd383e0f0b5","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet DomainNames = \"miniodaum.ml\";\nlet SHA256Hash = dynamic - ([\"53f5773bbfbfbee660989d135c042c9f6f69024b9a4b65bdc0dfd44771762257\", \"0897c80df8b80b4c49bf1ccf876f5f782849608b830c3b5cb3ad212dc3e19eff\"]);\n(union - isfuzzy=true\n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe) - \n| parse Message with * ''('' DNSName '')'' * \n| where isnotempty(FileHash)\n| - where FileHash in (SHA256Hash) or DNSName =~ DomainNames\n| extend Account - = SourceUserID, Computer = DeviceName, IPAddress = SourceIP\n),\n(DnsEvents - \n| where TimeGenerated >= ago(timeframe) \n| extend DNSName = Name\n| where - isnotempty(DNSName)\n| where DNSName =~ DomainNames\n| extend IPAddress = - ClientIP\n),\n(VMConnection \n| where TimeGenerated >= ago(timeframe) \n| - parse RemoteDnsCanonicalNames with * ''[\"'' DNSName ''\"]'' *\n| where isnotempty(DNSName)\n| - where DNSName =~ DomainNames\n| extend IPAddress = RemoteIp\n)\n)\n| extend - timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity - = Computer, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - CERIUM domains and hashes","description":"CERIUM malicious webserver and hash - values for maldocs and malware. \n Matches domain name IOCs related to the - CERIUM activity group with CommonSecurityLog, DnsEvents, and VMConnection - dataTypes.","tactics":["CommandAndControl","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-10-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f30a47c1-65fb-42b1-a7f4-00941c12550b","name":"f30a47c1-65fb-42b1-a7f4-00941c12550b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(Url)\n| join (\n SecurityAlert\n | where TimeGenerated - >= ago(dt_lookBack)\n // Extract URL from JSON data\n | extend Url = extract(\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\(\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)\", - 1,Entities)\n // We only want alerts that actually contain URL data\n | - where isnotempty(Url)\n // Extract hostname from JSON data for entity mapping\n | - extend Compromised_Host = tostring(parse_json(ExtendedProperties).[\"Compromised - Host\"])\n | extend Alert_TimeGenerated = TimeGenerated\n) on Url\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, - ConfidenceScore, Alert_TimeGenerated,\nAlertName, AlertSeverity, Description, - Url, Compromised_Host\n| extend timestamp = Alert_TimeGenerated, HostCustomEntity - = Compromised_Host, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map URL entity to SecurityAlert data","description":"Identifies a match - in SecurityAlert data from any URL IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftCloudAppSecurity","dataTypes":["SecurityAlert"]},{"connectorId":"AzureSecurityCenter","dataTypes":["SecurityAlert"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/06107abb-1b68-4fdc-841b-8a1ff9301467","name":"06107abb-1b68-4fdc-841b-8a1ff9301467","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Anomaly","properties":{"severity":"Informational","anomalyDefinitionVersion":"1.0.1","techniques":["T1030"],"customizableObservations":{"multiSelectObservations":null,"singleSelectObservations":null,"prioritizeExcludeObservations":null,"thresholdObservations":[{"minimum":"0","maximum":"1","value":"0.87","name":"Score","description":"Generate - an anomaly when score is greater than the chosen value","sequenceNumber":0,"rerun":"NotRequired"}]},"frequency":"P1D","displayName":"(Preview) - Excessive Downloads via Palo Alto GlobalProtect","description":"This algorithm - detects unusually high volume of download per user account via Palo Alto VPN - solution. The model is trained on the previous 14 days of the VPN logs. It - indicates anomalous high volume of downloads in the last day.","tactics":["Exfiltration"],"lastUpdatedDateUTC":"2021-02-22T00:00:00Z","createdDateUTC":"2020-11-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/87890d78-3e05-43ec-9ab9-ba32f4e01250","name":"87890d78-3e05-43ec-9ab9-ba32f4e01250","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\n//Create a list of TLDs in our - threat feed for later validation\nlet list_tlds = ThreatIntelligenceIndicator\n| - where TimeGenerated > ago(ioc_lookBack)\n| where isnotempty(DomainName)\n| - extend parts = split(DomainName, ''.'')\n| extend tld = parts[(array_length(parts)-1)]\n| - summarize count() by tostring(tld)\n| summarize make_list(tld);\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(DomainName)\n| join (\n SecurityAlert\n | - where TimeGenerated > ago(dt_lookBack)\n //Extract domain patterns from - message\n | extend domain = extract(\"(([a-z0-9]+(-[a-z0-9]+)*\\\\.)+[a-z]{2,})\", - 1, tolower(Entities))\n | where isnotempty(domain)\n | extend parts - = split(domain, ''.'')\n //Split out the TLD\n | extend tld = parts[(array_length(parts)-1)]\n //Validate - parsed domain by checking if the TLD is in the list of TLDs in our threat - feed\n | where tld in~ (list_tlds)\n // Converting Entities into dynamic - data type and use mv-expand to unpack the array\n | extend EntitiesDynamicArray - = parse_json(Entities) | mv-expand EntitiesDynamicArray\n // Parsing relevant - entity column extract hostname and IP address\n | extend EntityType = tostring(parse_json(EntitiesDynamicArray).Type), - EntityAddress = tostring(EntitiesDynamicArray.Address), EntityHostName = tostring(EntitiesDynamicArray.HostName)\n | - extend HostName = iif(EntityType == ''host'', EntityHostName, '''')\n | - extend IP_addr = iif(EntityType == ''ip'', EntityAddress, '''')\n | extend - Alert_TimeGenerated = TimeGenerated\n | extend Alert_Description = Description\n) - on $left.DomainName==$right.domain\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, - *) by IndicatorId\n| project LatestIndicatorTime, Description, ActivityGroupNames, - IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, Alert_TimeGenerated, - AlertName, Alert_Description, ProviderName, AlertSeverity, ConfidenceLevel, - HostName, IP_addr, Url\n| extend timestamp = Alert_TimeGenerated, HostCustomEntity - = HostName, IPCustomEntity = IP_addr, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map Domain entity to SecurityAlert","description":"Identifies a match in - SecurityAlert table from any Domain IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"MicrosoftCloudAppSecurity","dataTypes":["SecurityAlert"]},{"connectorId":"AzureSecurityCenter","dataTypes":["SecurityAlert"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5b72f527-e3f6-4a00-9908-8e4fee14da9f","name":"5b72f527-e3f6-4a00-9908-8e4fee14da9f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1h;\nCommonSecurityLog \n| where TimeGenerated > ago(timeframe) - \n| where isnotempty(DestinationPort) and DeviceAction !in (\"reset-both\", - \"deny\") \n// filter out common usage ports. Add ports that are legitimate - for your environment\n| where DestinationPort !in (\"443\", \"53\", \"389\", - \"80\", \"0\", \"880\", \"8888\", \"8080\")\n| where ApplicationProtocol == - \"incomplete\" \n// filter out IANA ephemeral or negotiated ports as per https://en.wikipedia.org/wiki/Ephemeral_port\n| - where DestinationPort !between (toint(49512) .. toint(65535)) \n| where Computer - != \"\" \n| where DestinationIP !startswith \"10.\"\n// Filter out any graceful - reset reasons of AGED OUT which occurs when a TCP session closes with a FIN - due to aging out. \n| where AdditionalExtensions !has \"reason=aged-out\" - \n// Filter out any TCP FIN which occurs when a TCP FIN is used to gracefully - close half or both sides of a connection.\n| where AdditionalExtensions !has - \"reason=tcp-fin\" \n// Uncomment one of the following where clauses to trigger - on specific TCP reset reasons\n// See Palo Alto article for details - https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClUvCAK\n// - TCP RST-server - Occurs when the server sends a TCP reset to the client\n// - | where AdditionalExtensions has \"reason=tcp-rst-from-server\" \n// TCP - RST-client - Occurs when the client sends a TCP reset to the server\n// | - where AdditionalExtensions has \"reason=tcp-rst-from-client\" \n| extend - reason = tostring(split(AdditionalExtensions, \";\")[3])\n| summarize StartTimeUtc - = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), count() by DeviceName, - SourceUserID, SourceIP, ApplicationProtocol, reason, DestinationPort, Protocol, - DeviceVendor, DeviceProduct, DeviceAction, DestinationIP\n| where count_ >= - 10\n| summarize StartTimeUtc = min(StartTimeUtc), EndTimeUtc = max(EndTimeUtc), - makeset(DestinationIP), totalcount = sum(count_) by DeviceName, SourceUserID, - SourceIP, ApplicationProtocol, reason, DestinationPort, Protocol, DeviceVendor, - DeviceProduct, DeviceAction\n| extend timestamp = StartTimeUtc, IPCustomEntity - = SourceIP, AccountCustomEntity = SourceUserID, HostCustomEntity = DeviceName","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Palo - Alto - possible internal to external port scanning","description":"Identifies - a list of internal Source IPs (10.x.x.x Hosts) that have triggered 10 or more - non-graceful tcp server resets from one or more Destination IPs which \nresults - in an \"ApplicationProtocol = incomplete\" designation. The server resets - coupled with an \"Incomplete\" ApplicationProtocol designation can be an indication - \nof internal to external port scanning or probing attack. \nReferences: https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClUvCAK - and\nhttps://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClTaCAK","tactics":["Discovery"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/69a45b05-71f5-45ca-8944-2e038747fb39","name":"69a45b05-71f5-45ca-8944-2e038747fb39","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - endtime = 1d;\nlet starttime = 8d;\n// The threshold below excludes matching - on RDP connection computer counts of 5 or more by a given account and IP in - a given day. Change the threshold as needed.\nlet threshold = 5;\nSecurityEvent\n| - where TimeGenerated >= ago(endtime) \n| where EventID == 4624 and LogonType - == 10\n// Labeling the first RDP connection time, computer and ip\n| extend - FirstHop = TimeGenerated, FirstComputer = toupper(Computer), FirstIPAddress - = IpAddress, Account = tolower(Account) \n| join kind=inner (\nSecurityEvent\n| - where TimeGenerated >= ago(endtime) \n| where EventID == 4624 and LogonType - == 10\n// Labeling the second RDP connection time, computer and ip\n| extend - SecondHop = TimeGenerated, SecondComputer = toupper(Computer), SecondIPAddress - = IpAddress, Account = tolower(Account)\n) on Account\n// Make sure that the - first connection is after the second connection --> SecondHop > FirstHop\n// - Then identify only RDP to another computer from within the first RDP connection - by only choosing matches where the Computer names do not match --> FirstComputer - != SecondComputer\n// Then make sure the IPAddresses do not match by excluding - connections from the same computers with first hop RDP connections to multiple - computers --> FirstIPAddress != SecondIPAddress\n| where FirstComputer != - SecondComputer and FirstIPAddress != SecondIPAddress and SecondHop > FirstHop\n// - where the second hop occurs within 30 minutes of the first hop\n| where SecondHop - <= FirstHop+30m\n| distinct Account, FirstHop, FirstComputer, FirstIPAddress, - SecondHop, SecondComputer, SecondIPAddress, AccountType, Activity, LogonTypeName, - ProcessName\n// use left anti to exclude anything from the previous 7 days - where the Account and IP has connected 5 or more computers.\n| join kind=leftanti - (\nSecurityEvent\n| where TimeGenerated >= ago(starttime) and TimeGenerated - < ago(endtime) \n| where EventID == 4624 and LogonType == 10\n| summarize - makeset(Computer), ComputerCount = dcount(Computer) by bin(TimeGenerated, - 1d), Account = tolower(Account), IpAddress\n// Connection count to computer - by same account and IP to exclude counts of 5 or more on a given day\n| where - ComputerCount >= threshold\n| mvexpand set_Computer\n| extend Computer = toupper(set_Computer)\n) - on Account, $left.SecondComputer == $right.Computer, $left.SecondIPAddress - == $right.IpAddress\n| summarize FirstHopFirstSeen = min(FirstHop), FirstHopLastSeen - = max(FirstHop) by Account, FirstComputer, FirstIPAddress, SecondHop, SecondComputer, - \nSecondIPAddress, AccountType, Activity, LogonTypeName, ProcessName\n| extend - timestamp = FirstHopFirstSeen, AccountCustomEntity = Account, HostCustomEntity - = FirstComputer, IPCustomEntity = FirstIPAddress","queryFrequency":"P1D","queryPeriod":"P8D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"RDP - Nesting","description":"Identifies when an RDP connection is made to a first - system and then an RDP connection is made from the first system \nto another - system with the same account within the 60 minutes. Additionally, if historically - daily \nRDP connections are indicated by the logged EventID 4624 with LogonType - = 10","tactics":["LateralMovement"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-10-21T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/84ad2f8a-b64c-49bc-b669-bdb4fd3071e9","name":"84ad2f8a-b64c-49bc-b669-bdb4fd3071e9","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"eset_CL\n| - where event_type_s == ''FilteredWebsites_Event''\n| extend AccountCustomEntity - = username_s, URLCustomEntity = object_uri_s, HostCustomEntity = hostname_s, - IPCustomEntity = ipv4_s","queryFrequency":"PT5M","queryPeriod":"PT5M","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"Web - sites blocked by Eset","description":"Create alert on web sites blocked by - Eset.","tactics":["Exfiltration","CommandAndControl","InitialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-09T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"EsetSMC","dataTypes":["eset_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/223db5c1-1bf8-47d8-8806-bed401b356a4","name":"223db5c1-1bf8-47d8-8806-bed401b356a4","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeRange = 1d;\nlet lookBack = 7d;\nlet threshold_Failed = 5;\nlet threshold_FailedwithSingleIP - = 20;\nlet threshold_IPAddressCount = 2;\nlet isGUID = \"[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}\";\nlet - azPortalSignins = materialize(SigninLogs\n| where TimeGenerated >= ago(lookBack)\n// - Azure Portal only\n| where AppDisplayName =~ \"Azure Portal\")\n;\nlet successPortalSignins - = azPortalSignins\n| where TimeGenerated >= ago(timeRange)\n// Azure Portal - only and exclude non-failure Result Types\n| where ResultType in (\"0\", \"50125\", - \"50140\")\n// Tagging identities not resolved to friendly names\n//| extend - Unresolved = iff(Identity matches regex isGUID, true, false)\n| distinct TimeGenerated, - UserPrincipalName, Id, ResultType\n;\nlet failPortalSignins = azPortalSignins\n| - where TimeGenerated >= ago(timeRange)\n// Azure Portal only and exclude non-failure - Result Types\n| where ResultType !in (\"0\", \"50125\", \"50140\")\n// Tagging - identities not resolved to friendly names\n| extend Unresolved = iff(Identity - matches regex isGUID, true, false)\n;\n// Verify there is no success for the - same connection attempt after the fail\nlet failnoSuccess = failPortalSignins - | join kind= leftouter (\n successPortalSignins \n) on UserPrincipalName, - Id\n| where TimeGenerated > TimeGenerated1\n| project-away TimeGenerated1, - UserPrincipalName1, Id1, ResultType1\n;\n// Lookup up resolved identities - from last 7 days\nlet identityLookup = azPortalSignins\n| where TimeGenerated - >= ago(lookBack)\n| where not(Identity matches regex isGUID)\n| summarize - by UserId, lu_UserDisplayName = UserDisplayName, lu_UserPrincipalName = UserPrincipalName;\n// - Join resolved names to unresolved list from portal signins\nlet unresolvedNames - = failnoSuccess | where Unresolved == true | join kind= inner (\n identityLookup - \n) on UserId\n| extend UserDisplayName = lu_UserDisplayName, UserPrincipalName - = lu_UserPrincipalName\n| project-away lu_UserDisplayName, lu_UserPrincipalName;\n// - Join Signins that had resolved names with list of unresolved that now have - a resolved name\nlet u_azPortalSignins = failnoSuccess | where Unresolved - == false | union unresolvedNames;\nu_azPortalSignins\n| extend Status = strcat(ResultType, - \": \", ResultDescription), OS = tostring(DeviceDetail.operatingSystem), Browser - = tostring(DeviceDetail.browser)\n| extend FullLocation = strcat(Location,''|'', - LocationDetails.state, ''|'', LocationDetails.city)\n| summarize TimeGenerated - = makelist(TimeGenerated), Status = makelist(Status), IPAddresses = makelist(IPAddress), - IPAddressCount = dcount(IPAddress), FailedLogonCount = count()\nby UserPrincipalName, - UserId, UserDisplayName, AppDisplayName, Browser, OS, FullLocation\n| mvexpand - TimeGenerated, IPAddresses, Status\n| extend TimeGenerated = todatetime(tostring(TimeGenerated)), - IPAddress = tostring(IPAddresses), Status = tostring(Status)\n| project-away - IPAddresses\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) - by UserPrincipalName, UserId, UserDisplayName, Status, FailedLogonCount, IPAddress, - IPAddressCount, AppDisplayName, Browser, OS, FullLocation\n| where (IPAddressCount - >= threshold_IPAddressCount and FailedLogonCount >= threshold_Failed) or FailedLogonCount - >= threshold_FailedwithSingleIP\n| extend timestamp = StartTime, AccountCustomEntity - = UserPrincipalName, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - login attempts to Azure Portal","description":"Identifies failed login attempts - in the Azure Active Directory SigninLogs to the Azure Portal. Many failed - logon \nattempts or some failed logon attempts from multiple IPs could indicate - a potential brute force attack. \nThe following are excluded due to success - and non-failure results:\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\n0 - - successful logon\n50125 - Sign-in was interrupted due to a password reset - or password registration entry.\n50140 - This error occurred due to ''Keep - me signed in'' interrupt when the user was signing-in.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1ce5e766-26ab-4616-b7c8-3b33ae321e80","name":"1ce5e766-26ab-4616-b7c8-3b33ae321e80","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\n//Adjust this threshold to fit environment\nlet signin_threshold - = 5; \n//Make a list of IPs with failed Windows host logins above threshold\nlet - win_fails = \nSecurityEvent\n| where TimeGenerated >= ago(timeframe)\n| where - EventID == 4625\n| where LogonType in (10, 7, 3)\n| where IpAddress != \"-\"\n| - summarize count() by IpAddress\n| where count_ > signin_threshold\n| summarize - make_list(IpAddress);\n//Make a list of IPs with failed *nix host logins above - threshold\nlet nix_fails = \nSyslog\n| where TimeGenerated > ago(timeframe)\n| - where Facility contains ''auth'' and ProcessName != ''sudo''\n| extend SourceIP - = extract(\"(([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.([0-9]{1,3})\\\\.(([0-9]{1,3})))\",1,SyslogMessage)\n| - where SourceIP != \"\" and SourceIP != \"127.0.0.1\"\n| summarize count() - by SourceIP\n| where count_ > signin_threshold\n| summarize make_list(SourceIP);\n//See - if any of the IPs with failed host logins hve had a sucessful Azure AD login\nSigninLogs\n| - where TimeGenerated > ago(timeframe)\n| where ResultType !in (\"0\", \"50125\", - \"50140\")\n| where IPAddress in (win_fails) or IPAddress in (nix_fails)\n| - extend Reason= \"Multiple failed host logins from IP address with successful - Azure AD login\"\n| extend timstamp = TimeGenerated, AccountCustomEntity = - UserPrincipalName, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - host logons but success logon to AzureAD","description":"Identifies a list - of IP addresses with a minimum number(default of 5) of failed logon attempts - to remote hosts.\nUses that list to identify any successful logons to Azure - Active Directory from these IPs within the same timeframe.","tactics":["InitialAccess","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"Syslog","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d564ff12-8f53-41b8-8649-44f76b37b99f","name":"d564ff12-8f53-41b8-8649-44f76b37b99f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 14d;\n// How many greater than Service Connections you want to - view per build/release\nlet ServiceConnectionThreshold = 4;\nlet BypassDefIds - = datatable(DefId:string, Type:string, ProjectName:string)\n[\n//\"103\", - \"Release\", \"ProjectA\",\n//\"42\", \"Release\", \"ProjectB\",\n//\"122\", - \"Build\", \"ProjectB\"\n];\nAzureDevOpsAuditing\n| where TimeGenerated >= - ago(timeframe)\n| where OperationName == \"Library.ServiceConnectionExecuted\" - \n| extend DefId = tostring(Data.DefinitionId), Type = tostring(Data.PlanType), - ConnectionId = tostring(Data.ConnectionId)\n| parse ScopeDisplayName with - OrganizationName '' (Organization)''\n| summarize CurrentCount = dcount(tostring(ConnectionId)), - ConnectionNames = make_set(tostring(Data.ConnectionName)), StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated) \n by OrganizationName, tostring(DefId), tostring(Type), - ProjectId, ProjectName\n| where CurrentCount > ServiceConnectionThreshold\n| - join kind=anti BypassDefIds on $left.DefId==$right.DefId and $left.Type == - $right.Type and $left.ProjectName == $right.ProjectName\n| extend link = iif(\n Type - == \"Build\", strcat(''https://dev.azure.com/'', OrganizationName, ''/'', - ProjectName, ''/_build?definitionId='', DefId),\n strcat(''https://dev.azure.com/'', - OrganizationName, ''/'', ProjectName, ''/_release?_a=releases&view=mine&definitionId='', - DefId))\n| extend timestamp = StartTime","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Azure - DevOps Service Conection Abuse","description":"Flags builds/releases that - use a large number of service connections if they aren''t manually allowlisted.\nThis - is to determine if someone is hijacking a build/release and adding many service - connections in order to abuse \nor dump credentials from service connections.","tactics":["Persistence","Impact"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-05T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f110287e-1358-490d-8147-ed804b328514","name":"f110287e-1358-490d-8147-ed804b328514","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n AWSCloudTrail | where TimeGenerated >= ago(dt_lookBack)\n // - renaming time column so it is clear the log this came from\n | extend AWSCloudTrail_TimeGenerated - = TimeGenerated\n)\non $left.TI_ipEntity == $right.SourceIpAddress\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, - Url, ExpirationDateTime, ConfidenceScore, AWSCloudTrail_TimeGenerated,\nTI_ipEntity, - EventName, EventTypeName, UserIdentityAccountId, UserIdentityPrincipalid, - UserIdentityUserName, SourceIpAddress,\nNetworkIP, NetworkDestinationIP, NetworkSourceIP, - EmailSourceIpAddress\n| extend timestamp = AWSCloudTrail_TimeGenerated, IPCustomEntity - = SourceIpAddress, AccountCustomEntity = UserIdentityUserName, URLCustomEntity - = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to AWSCloudTrail","description":"Identifies a match in AWSCloudTrail - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2954d424-f786-4677-9ffc-c24c44c6e7d5","name":"2954d424-f786-4677-9ffc-c24c44c6e7d5","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = ago(3h);\nlet threshold = 2;\nOkta_CL\n| where published_t >= - timeframe\n| where eventType_s =~ \"user.session.start\"\n| where outcome_result_s - =~ \"SUCCESS\"\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), - NumOfCountries = dcount(client_geographicalContext_country_s) by actor_alternateId_s\n| - where NumOfCountries >= threshold\n| extend timestamp = StartTime, AccountCustomEntity - = actor_alternateId_s","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"User - Login from Different Countries within 3 hours","description":"This query searches - for successful user logins to the Okta Console from different countries within - 3 hours","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"OktaSSO","dataTypes":["Okta_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f2eb15bd-8a88-4b24-9281-e133edfba315","name":"f2eb15bd-8a88-4b24-9281-e133edfba315","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n SigninLogs | where TimeGenerated >= ago(dt_lookBack)\n | - extend StatusCode = tostring(Status.errorCode), StatusDetails = tostring(Status.additionalDetails)\n | - extend Region = tostring(LocationDetails[\"countryOrRegion\"]), State = tostring(LocationDetails[\"state\"]), - City = tostring(LocationDetails[\"city\"])\n // renaming time column so - it is clear the log this came from\n | extend SigninLogs_TimeGenerated - = TimeGenerated\n)\non $left.TI_ipEntity == $right.IPAddress\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, - Url, ExpirationDateTime, ConfidenceScore, SigninLogs_TimeGenerated,\nTI_ipEntity, - IPAddress, UserPrincipalName, AppDisplayName, StatusCode, StatusDetails, NetworkIP, - NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\n| extend timestamp - = SigninLogs_TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity - = IPAddress, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to SigninLogs","description":"Identifies a match in SigninLogs - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/074ce265-f684-41cd-af07-613c5f3e6d0d","name":"074ce265-f684-41cd-af07-613c5f3e6d0d","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet DomainNames = dynamic([\"irf.services\",\"microsoft-onthehub.com\",\"msofficelab.com\",\"com-mailbox.com\",\"my-sharefile.com\",\"my-sharepoints.com\",\n\"accounts-web-mail.com\",\"customer-certificate.com\",\"session-users-activities.com\",\"user-profile-credentials.com\",\"verify-linke.com\",\"support-servics.net\",\n\"onedrive-sharedfile.com\",\"onedrv-live.com\",\"transparencyinternational-my-sharepoint.com\",\"transparencyinternational-my-sharepoints.com\",\"soros-my-sharepoint.com\"]);\n(union - isfuzzy=true\n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe) - \n| parse Message with * ''('' DNSName '')'' * \n| extend Account = SourceUserID, - Host = DeviceName, IPAddress = SourceIP),\n(DnsEvents \n| where TimeGenerated - >= ago(timeframe) \n| extend IPAddress = ClientIP, DNSName = Name, Host = - Computer),\n(VMConnection \n| where TimeGenerated >= ago(timeframe) \n| parse - RemoteDnsCanonicalNames with * ''[\"'' DNSName ''\"]'' *\n| extend IPAddress - = RemoteIp, Host = Computer)\n)\n| where isnotempty(DNSName)\n| where DNSName in~ - (DomainNames)\n| extend timestamp = TimeGenerated, IPCustomEntity = IPAddress, - AccountCustomEntity = Account, HostCustomEntity = Host","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - STRONTIUM group domains - July 2019","description":"Matches domain name IOCs - related to Strontium group activity published July 2019 with CommonSecurityLog, - DnsEvents and VMConnection dataTypes.\nReferences: https://blogs.microsoft.com/on-the-issues/2019/07/17/new-cyberthreats-require-new-ways-to-protect-democracy/.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-07-25T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b3cfc7c0-092c-481c-a55b-34a3979758cb","name":"b3cfc7c0-092c-481c-a55b-34a3979758cb","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft - Cloud App Security","displayName":"Create incidents based on Microsoft Cloud - App Security alerts","description":"Create incidents based on all alerts generated - in Microsoft Cloud App Security","lastUpdatedDateUTC":"2019-07-16T00:00:00Z","createdDateUTC":"2019-07-16T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftCloudAppSecurity","dataTypes":["SecurityAlert - (MCAS)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/173f8699-6af5-484a-8b06-8c47ba89b380","name":"173f8699-6af5-484a-8b06-8c47ba89b380","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"// - Adjust this value to change how many Teams should be deleted before including\nlet - max_delete_count = 3;\n// Adjust this value to change the timewindow the query - runs over\n OfficeActivity\n| where OfficeWorkload =~ \"MicrosoftTeams\" - \n| where Operation =~ \"TeamDeleted\"\n| summarize StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated), DeletedTeams = make_set(TeamName) by UserId\n| - where array_length(DeletedTeams) > max_delete_count\n| extend timestamp = - StartTime, AccountCustomEntity = UserId","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]}],"displayName":"Multiple - Teams deleted by a single user","description":"This detection flags the occurrences - of deleting multiple teams within an hour.\nThis data is a part of Office - 365 Connector in Azure Sentinel.","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-09-13T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity - (Teams)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a35f2c18-1b97-458f-ad26-e033af18eb99","name":"a35f2c18-1b97-458f-ad26-e033af18eb99","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\n// For AD SID mappings - https://docs.microsoft.com/windows/security/identity-protection/access-control/active-directory-security-groups\nlet - WellKnownLocalSID = \"S-1-5-32-5[0-9][0-9]$\";\nlet WellKnownGroupSID = \"S-1-5-21-[0-9]*-[0-9]*-[0-9]*-5[0-9][0-9]$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1102$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1103$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-498$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1000$\";\nSecurityEvent - \n| where TimeGenerated > ago(timeframe)\n// When MemberName contains ''-'' - this indicates addition of a group to a group\n| where AccountType == \"User\" - and MemberName != \"-\"\n// 4728 - A member was added to a security-enabled - global group\n// 4732 - A member was added to a security-enabled local group\n// - 4756 - A member was added to a security-enabled universal group\n| where EventID - in (4728, 4732, 4756) \n| where TargetSid matches regex WellKnownLocalSID - or TargetSid matches regex WellKnownGroupSID\n// Exclude Remote Desktop Users - group: S-1-5-32-555\n| where TargetSid !in (\"S-1-5-32-555\")\n| extend SimpleMemberName - = tostring(split(tostring(split(MemberName, \",\")[0]),\"CN=\")[1])\n| project - StartTimeUtc = TimeGenerated, EventID, Activity, Computer, SimpleMemberName, - MemberName, MemberSid, TargetUserName, TargetDomainName, TargetSid, UserPrincipalName, - SubjectUserName, SubjectUserSid\n| extend timestamp = StartTimeUtc, AccountCustomEntity - = SimpleMemberName, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"User - account added to built in domain local or global group","description":"Identifies - when a user account has been added to a privileged built in domain local group - or global group \nsuch as the Enterprise Admins, Cert Publishers or DnsAdmins. - Be sure to verify this is an expected addition.","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4f19d4e3-ec5f-4abc-9e61-819eb131758c","name":"4f19d4e3-ec5f-4abc-9e61-819eb131758c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet EventNameList = dynamic([ \"AuthorizeSecurityGroupEgress\", - \"AuthorizeSecurityGroupIngress\", \"RevokeSecurityGroupEgress\", \"RevokeSecurityGroupIngress\"]);\nAWSCloudTrail\n| - where TimeGenerated >= ago(timeframe)\n| where EventName in~ (EventNameList)\n| - extend User = iif(isnotempty(UserIdentityUserName), UserIdentityUserName, - SessionIssuerUserName)\n| summarize EventCount=count(), StartTimeUtc = min(TimeGenerated), - EndTimeUtc = max(TimeGenerated) \nby EventSource, EventName, UserIdentityType, - User, SourceIpAddress, UserAgent, SessionMfaAuthenticated, AWSRegion, \nAdditionalEventData, - UserIdentityAccountId, UserIdentityPrincipalid, ResponseElements\n| extend - timestamp = StartTimeUtc, AccountCustomEntity = User , IPCustomEntity = SourceIpAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Changes - to AWS Security Group ingress and egress settings","description":"A Security - Group acts as a virtual firewall of an instance to control inbound and outbound - traffic. \n Hence, ingress and egress settings changes to AWS Security Group - should be monitored as these can expose the enviornment to new attack vectors.\nMore - information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255.","tactics":["Persistence"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/737a2ce1-70a3-4968-9e90-3e6aca836abf","name":"737a2ce1-70a3-4968-9e90-3e6aca836abf","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MLBehaviorAnalytics","properties":{"severity":"Medium","displayName":"(Preview) - Anomalous RDP Login Detections","description":"This detection uses machine - learning (ML) to identify anomalous Remote Desktop Protocol (RDP) login activity, - based on Windows Security Event data. Scenarios include:\n\n*\tUnusual IP - - This IP address has not or has rarely been seen in last 30 days.\n*\tUnusual - Geo - The IP address, city, country and ASN have not (or rarely) been seen - in last 30 days.\n*\tNew user - A new user logs in from an IP address and - geo location, both or either of which are not expected to be seen in the last - 30 days.\n\nAllow 7 days after this alert is enabled for Azure Sentinel to - build a profile of normal activity for your environment.\t\n\nThis detection - requires a specific configuration of the data source. [Learn more](https://docs.microsoft.com/en-us/azure/sentinel/connect-windows-security-events)","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2020-07-16T00:00:00Z","createdDateUTC":"2020-04-02T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9713e3c0-1410-468d-b79e-383448434b2d","name":"9713e3c0-1410-468d-b79e-383448434b2d","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n VMConnection\n | where TimeGenerated >= ago(dt_lookBack)\n // - renaming time column so it is clear the log this came from\n | extend VMConnection_TimeGenerated - = TimeGenerated\n)\non $left.TI_ipEntity == $right.RemoteIp\n| summarize LatestIndicatorTime - = arg_max(TimeGenerated, *) by IndicatorId\n| project LatestIndicatorTime, - Description, ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, - ConfidenceScore, VMConnection_TimeGenerated,\nTI_ipEntity, Computer, Direction, - ProcessName, SourceIp, DestinationIp, RemoteIp, Protocol, DestinationPort, - NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\n| - extend timestamp = VMConnection_TimeGenerated, IPCustomEntity = RemoteIp, - HostCustomEntity = Computer, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to VMConnection","description":"Identifies a match in VMConnection - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/19e01883-15d8-4eb6-a7a5-3276cd668388","name":"19e01883-15d8-4eb6-a7a5-3276cd668388","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeFrame = 1d;\nlet timeBin = 1m;\nlet failedThreshold = 20;\nW3CIISLog\n| - where TimeGenerated >= ago(timeFrame)\n| where scStatus in (\"401\",\"403\")\n| - where csUserName != \"-\"\n| extend scStatusFull = strcat(scStatus, \".\",scSubStatus) - \n// Map common IIS codes\n| extend scStatusFull_Friendly = case(\nscStatusFull - == \"401.0\", \"Access denied.\",\nscStatusFull == \"401.1\", \"Logon failed.\",\nscStatusFull - == \"401.2\", \"Logon failed due to server configuration.\",\nscStatusFull - == \"401.3\", \"Unauthorized due to ACL on resource.\",\nscStatusFull == \"401.4\", - \"Authorization failed by filter.\",\nscStatusFull == \"401.5\", \"Authorization - failed by ISAPI/CGI application.\",\nscStatusFull == \"403.0\", \"Forbidden.\",\nscStatusFull - == \"403.4\", \"SSL required.\",\n\"See - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\")\n// - Mapping to Hex so can be mapped using website in comments above\n| extend - scWin32Status_Hex = tohex(tolong(scWin32Status)) \n// Map common win32 codes\n| - extend scWin32Status_Friendly = case(\nscWin32Status_Hex =~ \"775\", \"The - referenced account is currently locked out and cannot be logged on to.\",\nscWin32Status_Hex - =~ \"52e\", \"Logon failure: Unknown user name or bad password.\",\nscWin32Status_Hex - =~ \"532\", \"Logon failure: The specified account password has expired.\",\nscWin32Status_Hex - =~ \"533\", \"Logon failure: Account currently disabled.\", \nscWin32Status_Hex - =~ \"2ee2\", \"The request has timed out.\", \nscWin32Status_Hex =~ \"0\", - \"The operation completed successfully.\", \nscWin32Status_Hex =~ \"1\", \"Incorrect - function.\", \nscWin32Status_Hex =~ \"2\", \"The system cannot find the file - specified.\", \nscWin32Status_Hex =~ \"3\", \"The system cannot find the path - specified.\", \nscWin32Status_Hex =~ \"4\", \"The system cannot open the file.\", - \nscWin32Status_Hex =~ \"5\", \"Access is denied.\", \nscWin32Status_Hex =~ - \"8009030e\", \"SEC_E_NO_CREDENTIALS\", \nscWin32Status_Hex =~ \"8009030C\", - \"SEC_E_LOGON_DENIED\", \n\"See - https://msdn.microsoft.com/library/cc231199.aspx\")\n// - decode URI when available\n| extend decodedUriQuery = url_decode(csUriQuery)\n// - Count of failed attempts from same client IP\n| summarize makeset(decodedUriQuery), - makeset(csUserName), makeset(sSiteName), makeset(sPort), makeset(csUserAgent), - makeset(csMethod), makeset(csUriQuery), makeset(scStatusFull), makeset(scStatusFull_Friendly), - makeset(scWin32Status_Hex), makeset(scWin32Status_Friendly), FailedConnectionsCount - = count() by bin(TimeGenerated, timeBin), cIP, Computer, sIP\n| where FailedConnectionsCount - >= failedThreshold\n| project TimeGenerated, cIP, set_csUserName, set_decodedUriQuery, - Computer, set_sSiteName, sIP, set_sPort, set_csUserAgent, set_csMethod, set_scStatusFull, - set_scStatusFull_Friendly, set_scWin32Status_Hex, set_scWin32Status_Friendly, - FailedConnectionsCount\n| order by FailedConnectionsCount\n| extend timestamp - = TimeGenerated, HostCustomEntity = Computer, IPCustomEntity = cIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"High - count of failed attempts from same client IP","description":"Identifies when - 20 or more failed attempts from a given client IP in 1 minute occur on the - IIS server.\nThis could be indicative of an attempted brute force. This could - also simply indicate a misconfigured service or device.\nRecommendations: - Validate that these are expected connections from the given Client IP. If - the client IP is not recognized, \npotentially block these connections at - the edge device.\nIf these are expected connections, verify the credentials - are properly configured on the system, service, application or device \nthat - is associated with the client IP.\nReferences:\nIIS status code mapping: https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\nWin32 - Status code mapping: https://msdn.microsoft.com/library/cc231199.aspx","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-03-19T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e70fa6e0-796a-4e85-9420-98b17b0bb749","name":"e70fa6e0-796a-4e85-9420-98b17b0bb749","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"DeviceInfo\n| - extend DeviceName = tolower(DeviceName)\n| join (SecurityAlert\n| where ProviderName - =~ \"MDATP\"\n| extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\n| - where ThreatName has \"Solorigate\"\n| extend HostCustomEntity = tolower(CompromisedEntity)\n) - on $left.DeviceName == $right.HostCustomEntity\n| project TimeGenerated, DisplayName, - ThreatName, CompromisedEntity, PublicIP, MachineGroup, AlertSeverity, Description, - LoggedOnUsers, DeviceId, TenantId\n| extend timestamp = TimeGenerated, IPCustomEntity - = PublicIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Solorigate - Defender Detections","description":"Surfaces any Defender Alert for Solorigate - Events. In Azure Sentinel the SecurityAlerts table includes only the Device - Name of the affected device, this query joins the DeviceInfo table to clearly - connect other information such as \n Device group, ip, logged on users etc. - This way, the Sentinel user can have all the pertinent device info in one - view for all the the Solarigate Defender alerts.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-12-17T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftDefenderAdvancedThreatProtection","dataTypes":["SecurityAlert - (MDATP)"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceInfo"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7249500f-3038-4b83-8549-9cd8dfa2d498","name":"7249500f-3038-4b83-8549-9cd8dfa2d498","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d;\nlet DomainNames = dynamic([\"de-ma.online\", \"g20saudi.000webhostapp.com\", - \"ksat20.000webhostapp.com\"]);\nlet EmailAddresses = dynamic([\"munichconference1962@gmail.com\",\"munichconference@outlook.de\", - \"munichconference@outlook.com\", \"t20saudiarabia@gmail.com\", \"t20saudiarabia@hotmail.com\", - \"t20saudiarabia@outlook.sa\"]);\n(union isfuzzy=true\n(CommonSecurityLog - \n| where TimeGenerated >= ago(timeframe)\n| parse Message with * ''('' DNSName - '')'' * \n| extend MessageIP = extract(IPRegex, 0, Message)\n| extend RequestURLIP - = extract(IPRegex, 0, Message)\n| where (isnotempty(DNSName) and DNSName has_any - (DomainNames)) \n or (isnotempty(DestinationHostName) and DestinationHostName - has_any (DomainNames)) \n or (isnotempty(RequestURL) and (RequestURL has_any - (DomainNames)))\n| extend timestamp = TimeGenerated , AccountCustomEntity - = SourceUserID, HostCustomEntity = DeviceName\n),\n(DnsEvents \n| where TimeGenerated - >= ago(timeframe) \n| extend DestinationIPAddress = IPAddresses, DNSName = - Name, Host = Computer\n| where DNSName has_any (DomainNames) \n| extend timestamp - = TimeGenerated, IPCustomEntity = DestinationIPAddress, HostCustomEntity = - Host),\n(VMConnection \n| where TimeGenerated >= ago(timeframe) \n| parse - RemoteDnsCanonicalNames with * ''[\"'' DNSName ''\"]'' *\n| where isnotempty(DNSName)\n| - where DNSName has_any (DomainNames)\n| extend timestamp = TimeGenerated , - HostCustomEntity = Computer),\n(SecurityAlert\n| where TimeGenerated >= ago(timeframe) - \n| where ProviderName =~ ''OATP''\n| extend UPN = case(isnotempty(parse_json(Entities)[0].Upn), - parse_json(Entities)[0].Upn, \n isnotempty(parse_json(Entities)[1].Upn), - parse_json(Entities)[1].Upn,\n isnotempty(parse_json(Entities)[2].Upn), - parse_json(Entities)[2].Upn,\n isnotempty(parse_json(Entities)[3].Upn), - parse_json(Entities)[3].Upn,\n isnotempty(parse_json(Entities)[4].Upn), - parse_json(Entities)[4].Upn,\n isnotempty(parse_json(Entities)[5].Upn), - parse_json(Entities)[5].Upn,\n isnotempty(parse_json(Entities)[6].Upn), - parse_json(Entities)[6].Upn,\n isnotempty(parse_json(Entities)[7].Upn), - parse_json(Entities)[7].Upn,\n isnotempty(parse_json(Entities)[8].Upn), - parse_json(Entities)[8].Upn,\n parse_json(Entities)[9].Upn)\n| - where Entities has_any (EmailAddresses)\n| extend timestamp = TimeGenerated, - AccountCustomEntity = tostring(UPN)),\n(AzureDiagnostics\n| where TimeGenerated - >= ago(timeframe) \n| where ResourceType =~ \"AZUREFIREWALLS\"\n| where msg_s - has_any (DomainNames)\n| extend timestamp = TimeGenerated))","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - PHOSPHORUS group domains/IP - October 2020","description":"Matches IOCs related - to PHOSPHORUS group activity published October 2020 with CommonSecurityLog, - DnsEvents, OfficeActivity and VMConnection dataTypes.\nReferences: ","tactics":["CommandAndControl","InitialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2020-10-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog - (Cisco)"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog - (PaloAlto)"]},{"connectorId":"Zscaler","dataTypes":["CommonSecurityLog (Zscaler)"]},{"connectorId":"Fortinet","dataTypes":["CommonSecurityLog - (Fortinet)"]},{"connectorId":"OfficeATP","dataTypes":["SecurityAlert (OATP)"]},{"connectorId":"AzureFirewall","dataTypes":["AzureDiagnostics - (Azure Firewall)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4d8de9e6-263e-4845-8618-cd23a4f58b70","name":"4d8de9e6-263e-4845-8618-cd23a4f58b70","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 3h;\n// Add full UPN (user@domain.com) to - Authorized Bypassers to ignore policy bypasses by certain authorized users\nlet - AuthorizedBypassers = dynamic([''foo@baz.com'', ''test@foo.com'']);\nlet historicBypassers - = AzureDevOpsAuditing\n| where TimeGenerated between (ago(starttime) .. ago(endtime))\n| - where OperationName == ''Git.RefUpdatePoliciesBypassed''\n| distinct ActorUPN;\nAzureDevOpsAuditing\n| - where TimeGenerated >= ago(endtime)\n| where OperationName == ''Git.RefUpdatePoliciesBypassed''\n| - where ActorUPN !in (historicBypassers) and ActorUPN !in (AuthorizedBypassers)\n| - parse ScopeDisplayName with OrganizationName ''(Organization)''\n| project - TimeGenerated, ActorUPN, IpAddress, UserAgent, OrganizationName, ProjectName, - RepoName = Data.RepoName, AlertDetails = Details, Branch = Data.Name, \n BypassReason - = Data.BypassReason, PRLink = strcat(''https://dev.azure.com/'', OrganizationName, - ''/'', ProjectName, ''/_git/'', Data.RepoName, ''/pullrequest/'', Data.PullRequestId)\n| - extend timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity - = IpAddress","queryFrequency":"PT3H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Azure - DevOps Pull Request Policy Bypassing - Historic Allowlist","description":"This - detection builds a Allowlist of historic PR policy bypasses and compares to - recent history, flagging a non manually allowlisted, non historic pull request - bypass.","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-05T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ee1d718b-9ed9-4a71-90cd-a483a4f008df","name":"ee1d718b-9ed9-4a71-90cd-a483a4f008df","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Office - 365 Advanced Threat Protection","displayName":"Create incidents based on Office - 365 Advanced Threat Protection alerts","description":"Create incidents based - on all alerts generated in Office 365 Advanced Threat Protection","lastUpdatedDateUTC":"2020-09-01T00:00:00Z","createdDateUTC":"2020-04-20T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"OfficeATP","dataTypes":["SecurityAlert - (OATP)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a2e0eb51-1f11-461a-999b-cd0ebe5c7a72","name":"a2e0eb51-1f11-461a-999b-cd0ebe5c7a72","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Azure - Security Center for IoT","displayName":"Create incidents based on Azure Security - Center for IoT alerts","description":"Create incidents based on all alerts - generated in Azure Security Center for IoT","lastUpdatedDateUTC":"2019-12-24T00:00:00Z","createdDateUTC":"2019-12-24T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"IoT","dataTypes":["SecurityAlert - (ASC for IoT)"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ac891683-53c3-4f86-86b4-c361708e2b2b","name":"ac891683-53c3-4f86-86b4-c361708e2b2b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 3d;\n// Allowlisted UPNs should likely stay empty\nlet AllowlistedUpns - = datatable(UPN:string)[''foo@bar.com'', ''test@foo.com''];\n// Operation - Name parts that will alert\nlet HasAnyBlocklist = datatable(OperationNamePart:string)[''Security.'',''Project.'',''AuditLog.'',''Extension.''];\n// - Distinct Operation Names that will flag\nlet HasExactBlocklist = datatable(OperationName:string)[''Group.UpdateGroupMembership.Add'',''Library.ServiceConnectionExecuted'',''Pipelines.PipelineModified'',\n''Release.ReleasePipelineModified'', - ''Git.RefUpdatePoliciesBypassed''];\nAzureDevOpsAuditing\n| where TimeGenerated - >= ago(timeframe)\n| where AuthenticationMechanism startswith \"PAT\" and - (OperationName has_any (HasAnyBlocklist) or OperationName in (HasExactBlocklist))\n and - ActorUPN !in (AllowlistedUpns)\n| project TimeGenerated, AuthenticationMechanism, - ProjectName, ActorUPN, ActorDisplayName, IpAddress, UserAgent, OperationName, - Details, Data\n| extend timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, - IPCustomEntity = IpAddress","queryFrequency":"PT1H","queryPeriod":"PT3H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Azure - DevOps Personal Access Token (PAT) misuse","description":"This Alert detects - whenever a PAT is used in ways that PATs are not normally used. May require - Allowlisting and baselining.\nReference - https://docs.microsoft.com/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page\nUse - this query for baselining:\nAzureDevOpsAuditing\n| distinct OperationName","tactics":["Execution","Impact"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-05T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0b9ae89d-8cad-461c-808f-0494f70ad5c4","name":"0b9ae89d-8cad-461c-808f-0494f70ad5c4","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nlet PerUserThreshold = 5;\nlet TotalThreshold = 100;\nlet - action = dynamic([\"change\", \"changed\", \"reset\"]);\nlet pWord = dynamic([\"password\", - \"credentials\"]);\nlet PasswordResetMultiDataSource =\n(union isfuzzy=true\n(//Password - reset events\n//4723: An attempt was made to change an account''s password\n//4724: - An attempt was made to reset an accounts password\nSecurityEvent\n| where - TimeGenerated >= ago(timeframe)\n| where EventID in (\"4723\",\"4724\")\n| - project TimeGenerated, Computer, AccountType, Account, Type),\n(//Azure Active - Directory Password reset events\nAuditLogs\n| where TimeGenerated >= ago(timeframe)\n| - where OperationName has_any (pWord) and OperationName has_any (action)\n| - extend AccountType = tostring(TargetResources[0].type), Account = tostring(TargetResources[0].userPrincipalName), - \nTargetResourceName = tolower(tostring(TargetResources[0].displayName))\n| - project TimeGenerated, AccountType, Account, Computer = TargetResourceName, - Type),\n(//OfficeActive ActiveDirectory Password reset events\nOfficeActivity\n| - where TimeGenerated >= ago(timeframe)\n| where OfficeWorkload == \"AzureActiveDirectory\" - \n| where (ExtendedProperties has_any (pWord) or ModifiedProperties has_any - (pWord)) and (ExtendedProperties has_any (action) or ModifiedProperties has_any - (action))\n| extend AccountType = UserType, Account = OfficeObjectId \n| project - TimeGenerated, AccountType, Account, Type, Computer = \"\"),\n(// Unix syslog - password reset events\nSyslog\n| where TimeGenerated >= ago(timeframe)\n| - where Facility in (\"auth\",\"authpriv\")\n| where SyslogMessage has_any (pWord) - and SyslogMessage has_any (action)\n| extend AccountType = iif(SyslogMessage - contains \"root\", \"Root\", \"Non-Root\")\n| parse SyslogMessage with * \"password - changed for\" Account\n| project TimeGenerated, AccountType, Account, Computer - = HostName, Type),\n(SigninLogs\n| where TimeGenerated >= ago(timeframe)\n| - where OperationName =~ \"Sign-in activity\" and ResultType has_any (\"50125\", - \"50133\")\n| project TimeGenerated, AccountType = AppDisplayName, Computer - = IPAddress, Account = UserPrincipalName, Type\n)\n);\nlet pwrmd = PasswordResetMultiDataSource\n| - project TimeGenerated, Computer, AccountType, Account, Type;\n(union isfuzzy=true \n(pwrmd\n| - summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), - Computer = makeset(Computer), AccountType = makeset(AccountType), Total=count() - by Account, Type\n| where Total > PerUserThreshold\n| extend ResetPivot = - \"PerUserReset\"), \n(pwrmd\n| summarize StartTimeUtc = min(TimeGenerated), - EndTimeUtc = max(TimeGenerated), Computer = makeset(Computer), Account = tostring(makeset(Account)), - AccountType = makeset(AccountType), Total=count() by Type\n| where Total > - TotalThreshold\n| extend ResetPivot = \"TotalUserReset\")\n)\n| extend timestamp - = StartTimeUtc, AccountCustomEntity = Account, HostCustomEntity = tostring(Computer)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Multiple - Password Reset by user","description":"This query will determine multiple - password resets by user across multiple data sources. \nAccount manipulation - including password reset may aid adversaries in maintaining access to credentials - \nand certain permission levels within an environment.","tactics":["InitialAccess","CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-09-03T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"Syslog","dataTypes":["Syslog"]},{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6ee72a9e-2e54-459c-bc9a-9c09a6502a63","name":"6ee72a9e-2e54-459c-bc9a-9c09a6502a63","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d; \nlet IPList = dynamic([\"216.24.185.74\", \"107.175.189.159\", - \"192.210.132.102\", \"67.230.163.214\", \n \"199.19.110.240\", \"107.148.130.176\", - \"154.212.129.218\", \"172.86.75.54\", \"45.61.136.199\", \n \"149.28.150.195\", - \"108.61.214.194\", \"144.202.98.198\", \"149.28.84.98\", \"103.99.209.78\", - \n \"45.61.136.2\", \"176.122.162.149\", \"192.3.80.245\", \"149.28.23.32\", - \"107.182.18.149\", \"107.174.45.134\", \n \"149.248.18.104\", \"65.49.192.74\", - \"156.255.2.154\", \"45.76.6.149\", \"8.9.11.130\", \"140.238.27.255\", \n \"107.182.24.70\", - \"176.122.188.254\", \"192.161.161.108\", \"64.64.234.24\", \"104.224.185.36\", - \n \"104.233.224.227\", \"104.36.69.105\", \"119.28.139.120\", \"161.117.39.130\", - \"66.42.100.42\", \"45.76.31.159\", \n \"149.248.8.134\", \"216.24.182.48\", - \"66.42.103.222\", \"218.89.236.11\", \"180.150.227.249\", \"47.75.80.23\",\n \"124.156.164.19\", - \"149.248.62.83\", \"150.109.76.174\", \"222.209.187.207\", \"218.38.191.38\", - \n \"119.28.226.59\", \"66.42.98.220\", \"74.82.201.8\", \"173.242.122.198\", - \"45.32.130.72\", \"89.35.178.10\", \n \"89.43.60.113\"]); \n(union isfuzzy=true - \n(CommonSecurityLog \n| where TimeGenerated >= ago(timeframe) \n| where - isnotempty(SourceIP) or isnotempty(DestinationIP) \n| where SourceIP in (IPList) - or DestinationIP in (IPList) or Message has_any (IPList) \n| extend IPMatch - = case(SourceIP in (IPList), \"SourceIP\", DestinationIP in (IPList), \"DestinationIP\", - \"Message\") \n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc - = max(TimeGenerated) by SourceIP, DestinationIP, DeviceProduct, DeviceAction, - Message, Protocol, SourcePort, DestinationPort, DeviceAddress, DeviceName, - IPMatch \n| extend timestamp = StartTimeUtc, IPCustomEntity = case(IPMatch - == \"SourceIP\", SourceIP, IPMatch == \"DestinationIP\", DestinationIP, \"IP - in Message Field\") \n), \n(OfficeActivity \n| where TimeGenerated >= ago(timeframe) \n|extend - SourceIPAddress = ClientIP, Account = UserId \n| where SourceIPAddress in - (IPList) \n| extend timestamp = TimeGenerated , IPCustomEntity = SourceIPAddress - , AccountCustomEntity = Account \n), \n(DnsEvents \n| where TimeGenerated - >= ago(timeframe) \n| extend DestinationIPAddress = IPAddresses, Host = - Computer \n| where DestinationIPAddress has_any (IPList) \n| extend timestamp - = TimeGenerated, IPCustomEntity = DestinationIPAddress, HostCustomEntity = - Host \n), \n(VMConnection \n| where TimeGenerated >= ago(timeframe) \n| - where isnotempty(SourceIp) or isnotempty(DestinationIp) \n| where SourceIp - in (IPList) or DestinationIp in (IPList) \n| extend IPMatch = case( SourceIp - in (IPList), \"SourceIP\", DestinationIp in (IPList), \"DestinationIP\", \"None\") \n| - extend timestamp = TimeGenerated , IPCustomEntity = case(IPMatch == \"SourceIP\", - SourceIp, IPMatch == \"DestinationIP\", DestinationIp, \"None\"), Host = Computer - \n), \n(Event \n| where TimeGenerated >= ago(timeframe) \n| where Source == - \"Microsoft-Windows-Sysmon\" \n| where EventID == 3 \n| extend EvData = parse_xml(EventData) - \n| extend EventDetail = EvData.DataItem.EventData.Data \n| extend SourceIP - = EventDetail.[9].[\"#text\"], DestinationIP = EventDetail.[14].[\"#text\"] - \n| where SourceIP in (IPList) or DestinationIP in (IPList) \n| extend IPMatch - = case( SourceIP in (IPList), \"SourceIP\", DestinationIP in (IPList), \"DestinationIP\", - \"None\") \n| extend timestamp = TimeGenerated, AccountCustomEntity = UserName, - HostCustomEntity = Computer , IPCustomEntity = case(IPMatch == \"SourceIP\", - SourceIP, IPMatch == \"DestinationIP\", DestinationIP, \"None\") \n), \n(WireData \n| - where TimeGenerated >= ago(timeframe) \n| where isnotempty(RemoteIP) \n| where - RemoteIP in (IPList) \n| extend timestamp = TimeGenerated, IPCustomEntity - = RemoteIP, HostCustomEntity = Computer \n), \n(SigninLogs \n| where TimeGenerated - >= ago(timeframe) \n| where isnotempty(IPAddress) \n| where IPAddress in (IPList) - \n| extend timestamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, - IPCustomEntity = IPAddress \n), \n(W3CIISLog \n| where TimeGenerated >= ago(timeframe) - \n| where isnotempty(cIP) \n| where cIP in (IPList) \n| extend timestamp = - TimeGenerated, IPCustomEntity = cIP, HostCustomEntity = Computer, AccountCustomEntity - = csUserName \n), \n(AzureActivity \n| where TimeGenerated >= ago(timeframe) - \n| where isnotempty(CallerIpAddress) \n| where CallerIpAddress in (IPList) - \n| extend timestamp = TimeGenerated, IPCustomEntity = CallerIpAddress, AccountCustomEntity - = Caller \n), \n( \nAWSCloudTrail \n| where TimeGenerated >= ago(timeframe) - \n| where isnotempty(SourceIpAddress) \n| where SourceIpAddress in (IPList) - \n| extend timestamp = TimeGenerated, IPCustomEntity = SourceIpAddress, AccountCustomEntity - = UserIdentityUserName \n), \n( \nDeviceNetworkEvents \n| where TimeGenerated - >= ago(timeframe) \n| where isnotempty(RemoteIP) \n| where RemoteIP in (IPList) \n| - extend timestamp = TimeGenerated, IPCustomEntity = RemoteIP, HostCustomEntity - = DeviceName \n) \n)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - Barium IP","description":"Identifies a match across various data feeds for - IP IOCs related to the Barium activity group. \n References: https://www.justice.gov/opa/pr/seven-international-cyber-defendants-including-apt41-actors-charged-connection-computer'' - ","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-12-22T00:00:00Z","createdDateUTC":"2020-11-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]},{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"AzureMonitor(WireData)","dataTypes":["WireData"]},{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]},{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]},{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceNetworkEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a83ef0f4-dace-4767-bce3-ebd32599d2a0","name":"a83ef0f4-dace-4767-bce3-ebd32599d2a0","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nDnsEvents\n| where TimeGenerated > ago(timeframe)\n| where - Name contains \".\"\n| where Name has_any (\"tor2web.org\", \"tor2web.com\", - \"torlink.co\", \"onion.to\", \"onion.ink\", \"onion.cab\", \"onion.nu\", - \"onion.link\", \n\"onion.it\", \"onion.city\", \"onion.direct\", \"onion.top\", - \"onion.casa\", \"onion.plus\", \"onion.rip\", \"onion.dog\", \"tor2web.fi\", - \n\"tor2web.blutmagie.de\", \"onion.sh\", \"onion.lu\", \"onion.pet\", \"t2w.pw\", - \"tor2web.ae.org\", \"tor2web.io\", \"tor2web.xyz\", \"onion.lt\", \n\"s1.tor-gateways.de\", - \"s2.tor-gateways.de\", \"s3.tor-gateways.de\", \"s4.tor-gateways.de\", \"s5.tor-gateways.de\", - \"hiddenservice.net\")\n| extend timestamp = TimeGenerated, IPCustomEntity - = ClientIP, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"DNS - events related to ToR proxies","description":"Identifies IP addresses performing - DNS lookups associated with common ToR proxies.","tactics":["Exfiltration"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3255ec41-6bd6-4f35-84b1-c032b18bbfcb","name":"3255ec41-6bd6-4f35-84b1-c032b18bbfcb","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - starttime = 1d;\nlet TimeDeltaThresholdInSeconds = 60; // we ignore beacons - diffs that fall below this threshold \nlet TotalBeaconsThreshold = 4; // minimum - number of beacons required in a session to surface a row\nlet JitterTolerance - = 0.2; // tolerance to jitter, e.g. - 0.2 = 20% jitter is tolerated either - side of the periodicity\nlet PrivateIPregex = @\"^127\\.|^10\\.|^172\\.1[6-9]\\.|^172\\.2[0-9]\\.|^172\\.3[0-1]\\.|^192\\.168\\.\"; - // exclude destinations that fall into this category\nCommonSecurityLog\n| - where DeviceVendor == \"Fortinet\"\n| where TimeGenerated > ago(starttime)\n// - eliminate bad data\n| where isnotempty(SourceIP) and isnotempty(DestinationIP) - and SourceIP != \"0.0.0.0\"\n// filter out deny, close, rst and SNMP to reduce - data volume\n| where DeviceAction !in (\"close\", \"client-rst\", \"server-rst\", - \"deny\") and DestinationPort != 161\n// map input fields\n| project TimeGenerated - , SourceIP, DestinationIP, DestinationPort, ReceivedBytes, SentBytes, DeviceAction - \n// where destination IPs are public\n| extend DestinationIPType = iff(DestinationIP - matches regex PrivateIPregex,\"private\" ,\"public\" )\n| where DestinationIPType - == \"public\"\n// sort into source->destination ''sessions''\n| sort by SourceIP - asc, DestinationIP asc, DestinationPort asc, TimeGenerated asc\n| serialize\n// - time diff the contact times between source and destination to get a list of - deltas\n| extend nextTimeGenerated = next(TimeGenerated, 1), nextSourceIP - = next(SourceIP, 1), nextDestIP = next(DestinationIP, 1), nextDestPort = next(DestinationPort, - 1)\n| extend TimeDeltainSeconds = datetime_diff(\"second\",nextTimeGenerated,TimeGenerated)\n| - where SourceIP == nextSourceIP and DestinationIP == nextDestIP and DestinationPort - == nextDestPort\n// remove small time deltas below the set threshold\n| where - TimeDeltainSeconds > TimeDeltaThresholdInSeconds\n| project TimeGenerated, - TimeDeltainSeconds, SourceIP, DestinationIP, DestinationPort, ReceivedBytes, - SentBytes, DeviceAction \n// summarize the deltas by source->destination\n| - summarize count(), StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), - sum(ReceivedBytes), sum(SentBytes), makelist(TimeDeltainSeconds), makeset(DeviceAction) - by SourceIP, DestinationIP, DestinationPort\n// get some statistical properties - of the delta distribution and smooth any outliers (e.g. laptop shut overnight, - working hours)\n| extend series_stats(list_TimeDeltainSeconds), outliers=series_outliers(list_TimeDeltainSeconds)\n// - expand the deltas and the outliers\n| mvexpand list_TimeDeltainSeconds to - typeof(double), outliers to typeof(double)\n// replace outliers with the average - of the distribution\n| extend list_TimeDeltainSeconds_normalized=iff(outliers - > 1.5 or outliers < -1.5, series_stats_list_TimeDeltainSeconds_avg , list_TimeDeltainSeconds)\n// - summarize with the smoothed distribution\n| summarize BeaconCount=count(), - makelist(list_TimeDeltainSeconds), list_TimeDeltainSeconds_normalized=makelist(list_TimeDeltainSeconds_normalized), - makeset(set_DeviceAction) by StartTime, EndTime, SourceIP, DestinationIP, - DestinationPort, sum_ReceivedBytes, sum_SentBytes\n// get stats on the smoothed - distribution\n| extend series_stats(list_TimeDeltainSeconds_normalized)\n// - match jitter tolerance on smoothed distrib\n| extend MaxJitter = (series_stats_list_TimeDeltainSeconds_normalized_avg*JitterTolerance)\n| - where series_stats_list_TimeDeltainSeconds_normalized_stdev < MaxJitter\n// - where the minimum beacon threshold is satisfied and there was some data transfer\n| - where BeaconCount > TotalBeaconsThreshold and (sum_SentBytes > 0 or sum_ReceivedBytes - > 0)\n// final projection\n| project StartTime, EndTime, SourceIP, DestinationIP, - DestinationPort, BeaconCount, TimeDeltasInSeconds=list_list_TimeDeltainSeconds, - Periodicity=series_stats_list_TimeDeltainSeconds_normalized_avg, ReceivedBytes=sum_ReceivedBytes, - SentBytes=sum_SentBytes, Actions=set_set_DeviceAction\n// where periodicity - is order of magnitude larger than time delta threshold (eliminates FPs whose - periodicity is close to the values we ignored)\n| where Periodicity >= (10*TimeDeltaThresholdInSeconds)\n| - extend timestamp = StartTime, IPCustomEntity = DestinationIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Fortinet - - Beacon pattern detected","description":"Identifies patterns in the time - deltas of contacts between internal and external IPs in Fortinet network data - that are consistent with beaconing.\n Accounts for randomness (jitter) and - seasonality such as working hours that may have been introduced into the beacon - pattern.\n The lookback is set to 1d, the minimum granularity in time deltas - is set to 60 seconds and the minimum number of beacons required to emit a\n - detection is set to 4.\n Increase the lookback period to capture beacons with - larger periodicities.\n The jitter tolerance is set to 0.2 - This means we - account for an overall 20% deviation from the infered beacon periodicity. - Seasonality is dealt with\n automatically using series_outliers.\n Note: In - large environments it may be necessary to reduce the lookback period to get - fast query times.","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-03-31T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Fortinet","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/826bb2f8-7894-4785-9a6b-a8a855d8366f","name":"826bb2f8-7894-4785-9a6b-a8a855d8366f","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - EventNameList = dynamic([\"AttachUserPolicy\",\"AttachRolePolicy\",\"AttachGroupPolicy\"]);\nlet - createPolicy = \"CreatePolicy\";\nlet timeframe = 1d;\nlet lookback = 14d;\n// - Creating Master table with all the events to use with materialize for better - performance\nlet EventInfo = AWSCloudTrail\n| where TimeGenerated >= ago(lookback)\n| - where EventName in (EventNameList) or EventName == createPolicy;\n//Checking - for Policy creation event with Full Admin Privileges since lookback period.\nlet - FullAdminPolicyEvents = materialize( EventInfo\n| where TimeGenerated >= - ago(lookback)\n| where EventName == createPolicy\n| extend PolicyName = tostring(parse_json(RequestParameters).policyName)\n| - extend Statement = parse_json(tostring((parse_json(RequestParameters).policyDocument))).Statement\n| - mvexpand Statement\n| extend Action = parse_json(Statement).Action , Effect - = tostring(parse_json(Statement).Effect), Resource = tostring(parse_json(Statement).Resource)\n| - mvexpand Action\n| extend Action = tostring(Action)\n| where Effect =~ \"Allow\" - and Action == \"*\" and Resource == \"*\"\n| distinct TimeGenerated, EventName, - PolicyName, SourceIpAddress, UserIdentityArn, UserIdentityUserName\n| extend - UserIdentityUserName = iff(isnotempty(UserIdentityUserName), UserIdentityUserName, - tostring(split(UserIdentityArn,''/'')[-1]))\n| project-rename StartTime = - TimeGenerated );\nlet PolicyAttach = materialize( EventInfo\n| where TimeGenerated - >= ago(timeframe)\n| where EventName in (EventNameList)\n| extend PolicyName - = tostring(split(tostring(parse_json(RequestParameters).policyArn),\"/\")[1])\n| - summarize AttachEventCount=count(), StartTime = min(TimeGenerated), EndTime - = max(TimeGenerated) by EventSource, EventName, UserIdentityType , UserIdentityArn, - SourceIpAddress, UserIdentityUserName = iff(isnotempty(UserIdentityUserName), UserIdentityUserName, - tostring(split(UserIdentityArn,''/'')[-1])), PolicyName\n| extend AttachEvent - = pack(\"StartTime\", StartTime, \"EndTime\", EndTime, \"EventName\", EventName, - \"UserIdentityType\", UserIdentityType, \"UserIdentityArn\", UserIdentityArn, - \"SourceIpAddress\", SourceIpAddress, \"UserIdentityUserName\", UserIdentityUserName)\n| - project EventSource, PolicyName, AttachEvent, AttachEventCount\n);\n// Joining - the list of PolicyNames and checking if it has been attached to any Roles/Users/Groups.\n// - These Roles/Users/Groups will be Privileged and can be used by adversaries - as pivot point for privilege escalation via multiple ways.\nFullAdminPolicyEvents\n| - join kind=leftouter\n(\n PolicyAttach\n)\non PolicyName\n| project-away - PolicyName1\n| extend timestamp = StartTime, IPCustomEntity = SourceIpAddress, - AccountCustomEntity = UserIdentityUserName","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Full - Admin policy created and then attached to Roles, Users or Groups","description":"Identity - and Access Management (IAM) securely manages access to AWS services and resources. - \nIdentifies when a policy is created with Full Administrators Access (Allow-Action:*,Resource:*). - \nThis policy can be attached to role,user or group and may be used by an - adversary to escalate a normal user privileges to an adminsitrative level.\nAWS - IAM Policy Grammar: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html\nand - AWS IAM API at https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html","tactics":["PrivilegeEscalation"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-04-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/79566f41-df67-4e10-a703-c38a6213afd8","name":"79566f41-df67-4e10-a703-c38a6213afd8","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - auditLookback = 1h;\nAuditLogs\n| where TimeGenerated > ago(auditLookback)\n| - where OperationName has_any (\"Add service principal\", \"Certificates and - secrets management\") // captures \"Add service principal\", \"Add service - principal credentials\", and \"Update application - Certificates and secrets - management\" events\n| where Result =~ \"success\"\n| mv-expand target = TargetResources\n| - where tostring(InitiatedBy.user.userPrincipalName) has \"@\" or tostring(InitiatedBy.app.displayName) - has \"@\"\n| extend targetDisplayName = tostring(TargetResources[0].displayName)\n| - extend targetId = tostring(TargetResources[0].id)\n| extend targetType = tostring(TargetResources[0].type)\n| - extend keyEvents = TargetResources[0].modifiedProperties\n| mv-expand keyEvents\n| - where keyEvents.displayName =~ \"KeyDescription\"\n| extend new_value_set - = parse_json(tostring(keyEvents.newValue))\n| extend old_value_set = parse_json(tostring(keyEvents.oldValue))\n| - where old_value_set != \"[]\"\n| extend diff = set_difference(new_value_set, - old_value_set)\n| where isnotempty(diff)\n| parse diff with * \"KeyIdentifier=\" - keyIdentifier:string \",KeyType=\" keyType:string \",KeyUsage=\" keyUsage:string - \",DisplayName=\" keyDisplayName:string \"]\" *\n| where keyUsage == \"Verify\" or - keyUsage == \"\"\n| extend UserAgent = iff(AdditionalDetails[0].key == \"User-Agent\",tostring(AdditionalDetails[0].value),\"\")\n| - extend InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), - tostring(InitiatedBy.app.displayName))\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), - tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\n// - The below line is currently commented out but Azure Sentinel users can modify - this query to show only Application or only Service Principal events in their - environment\n//| where targetType =~ \"Application\" // or targetType =~ \"ServicePrincipal\"\n| - project-away diff, new_value_set, old_value_set\n| project-reorder TimeGenerated, - OperationName, InitiatingUserOrApp, InitiatingIpAddress, UserAgent, targetDisplayName, - targetId, targetType, keyDisplayName, keyType, keyUsage, keyIdentifier, CorrelationId, - TenantId\n| extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingUserOrApp, - IPCustomEntity = InitiatingIpAddress","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"New - access credential added to Application or Service Principal","description":"This - will alert when an admin or app owner account adds a new credential to an - Application or Service Principal where a verify KeyCredential was already - present for the app.\nIf a threat actor obtains access to an account with - sufficient privileges and adds the alternate authentication material triggering - this event, the threat actor can now authenticate as the Application or Service - Principal using this credential.\nAdditional information on OAuth Credential - Grants can be found in RFC 6749 Section 4.4 or https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow\nFor - further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2021-01-31T00:00:00Z","createdDateUTC":"2020-11-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["AuditLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3d645a88-2724-41a7-adea-db74c439cf79","name":"3d645a88-2724-41a7-adea-db74c439cf79","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 5000;\nSophosXGFirewall\n| where TimeGenerated - >= timeframe\n| where Log_Type =~ \"Firewall\" and Status =~ \"Deny\"\n| summarize - count() by Src_IP, bin(TimeGenerated,5m)\n| where count_ > threshold\n| extend - timestamp = TimeGenerated, IPCustomEntity = Src_IP","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Excessive - Amount of Denied Connections from a Single Source","description":"This creates - an incident in the event that a single source IP address generates a excessive - amount of denied connections.","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-07-08T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SophosXGFirewall","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a357535e-f722-4afe-b375-cff362b2b376","name":"a357535e-f722-4afe-b375-cff362b2b376","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - endtime = 1d;\n(union isfuzzy=true\n(OfficeActivity | where TimeGenerated - >= ago(endtime) | where UserAgent != \"\"),\n(OfficeActivity\n| where TimeGenerated - >= ago(endtime)\n| where RecordType in (\"AzureActiveDirectory\", \"AzureActiveDirectoryStsLogon\")\n| - extend OperationName = Operation\n| parse ExtendedProperties with * ''User-Agent\\\\\":\\\\\"'' - UserAgent2 ''\\\\'' *\n| parse ExtendedProperties with * ''UserAgent\", \"Value\": - \"'' UserAgent1 ''\"'' *\n| where isnotempty(UserAgent1) or isnotempty(UserAgent2)\n| - extend UserAgent = iff( RecordType == ''AzureActiveDirectoryStsLogon'', UserAgent1, - UserAgent2)\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) - by UserAgent, SourceIP = ClientIP, Account = UserId, Type, RecordType, Operation\n),\n(AzureDiagnostics\n| - where TimeGenerated >= ago(endtime)\n| where ResourceType =~ \"APPLICATIONGATEWAYS\" - \n| where OperationName =~ \"ApplicationGatewayAccess\" \n| extend ClientIP - = columnifexists(\"clientIP_s\", \"None\"), UserAgent = columnifexists(\"userAgent_s\", - \"None\")\n| where UserAgent != ''-''\n| summarize StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated) by UserAgent, SourceIP = ClientIP, requestUri_s, - httpMethod_s, host_s, requestQuery_s, Type\n),\n(\nW3CIISLog\n| where TimeGenerated - >= ago(endtime)\n| where isnotempty(csUserAgent)\n| summarize StartTime = - min(TimeGenerated), EndTime = max(TimeGenerated) by UserAgent = csUserAgent, - SourceIP = cIP, Account = csUserName, Type, sSiteName, csMethod, csUriStem\n),\n(\nAWSCloudTrail\n| - where TimeGenerated >= ago(endtime)\n| where isnotempty(UserAgent)\n| summarize - StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by UserAgent, - SourceIP = SourceIpAddress, Account = UserIdentityUserName, Type, EventSource, - EventName\n),\n(SigninLogs\n| where TimeGenerated >= ago(endtime)\n| where - isnotempty(UserAgent)\n| summarize StartTime = min(TimeGenerated), EndTime - = max(TimeGenerated) by UserAgent, SourceIP = IPAddress, Account = UserPrincipalName, - Type, OperationName, tostring(LocationDetails), tostring(DeviceDetail), AppDisplayName, - ClientAppUsed\n),\n(AADNonInteractiveUserSignInLogs \n| where TimeGenerated - >= ago(endtime)\n| where isnotempty(UserAgent)\n| summarize StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated) by UserAgent, SourceIP = IPAddress, Account = - UserPrincipalName, Type, OperationName, tostring(LocationDetails), tostring(DeviceDetail), - AppDisplayName, ClientAppUsed\n)\n)\n// Likely artefact of hardcoding\n| where - UserAgent startswith \"User\" or UserAgent startswith ''\\\"''\n// Incorrect - casing\nor (UserAgent startswith \"Mozilla\" and not(UserAgent containscs - \"Mozilla\"))\n// Incorrect casing\nor UserAgent containscs \"(Compatible;\"\n// - Missing MSIE version\nor UserAgent matches regex @\"MSIE\\s?;\"\n// Incorrect - spacing around MSIE version\nor UserAgent matches regex @\"MSIE(?:\\d|.{1,5}?\\d\\s;)\"\n| - extend timestamp = StartTime, IPCustomEntity = SourceIP, AccountCustomEntity - = Account","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Malformed - user agent","description":"Malware authors will sometimes hardcode user agent - string values when writing the network communication component of their malware.\nMalformed - user agents can be an indication of such malware.","tactics":["InitialAccess","CommandAndControl","Execution"],"lastUpdatedDateUTC":"2021-02-10T00:00:00Z","createdDateUTC":"2019-01-25T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"WAF","dataTypes":["AzureDiagnostics"]},{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]},{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]},{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/89e6adbd-612c-4fbe-bc3d-32f81baf3b6c","name":"89e6adbd-612c-4fbe-bc3d-32f81baf3b6c","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 4h;\n// Change to true to monitor for Project Administrator adds - to *any* project\nlet MonitorAllProjects = false;\n// If MonitorAllProjects - is false, trigger only on Project Administrator add for the following projects\nlet - ProjectsToMonitor = dynamic(['''','''']);\nAzureDevOpsAuditing\n| - where TimeGenerated >= ago(timeframe)\n| where Area == \"Group\" and OperationName - == \"Group.UpdateGroupMembership.Add\"\n| where Details has ''Administrators''\n| - where Details has \"was added as a member of group\" and (Details endswith - ''\\\\Project Administrators'' or Details endswith ''\\\\Project Collection - Administrators'')\n| parse Details with AddedIdentity '' was added as a member - of group ['' EntityName '']\\\\'' GroupName\n| extend Level = iif(GroupName - == ''Project Collection Administrators'', ''Organization'', ''Project''), - AddedIdentityId = Data.MemberId\n| extend Severity = iif(Level == ''Organization'', - ''High'', ''Medium''), AlertDetails = strcat(''At '', TimeGenerated, '' UTC - '', ActorUPN, ''/'', ActorDisplayName, '' added '', AddedIdentity, '' to the - '', EntityName, '' '', Level)\n| where MonitorAllProjects == true or EntityName - in (ProjectsToMonitor) or Level == ''Organization''\n| project TimeGenerated, - Severity, Adder = ActorUPN, AddedIdentity, AddedIdentityId, AlertDetails, - Level, EntityName, GroupName, ActorAuthType = AuthenticationMechanism, \n ActorIpAddress - = IpAddress, ActorUserAgent = UserAgent, RawDetails = Details\n| extend timestamp - = TimeGenerated, AccountCustomEntity = Adder, IPCustomEntity = ActorIpAddress","queryFrequency":"PT4H","queryPeriod":"PT4H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Azure - DevOps Administrator Group Monitoring","description":"This detection monitors - for additions to project or project collection administration groups in an - Azure DevOps Organization.","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-06-05T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/795edf2d-cf3e-45b5-8452-fe6c9e6a582e","name":"795edf2d-cf3e-45b5-8452-fe6c9e6a582e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1h;\nCommonSecurityLog \n| where TimeGenerated >= ago(timeframe)\n| - where isempty(CommunicationDirection) \n| where DeviceEventClassID in (\"733101\",\"733102\",\"733103\",\"733104\",\"733105\")\n| - extend timestamp = TimeGenerated, IPCustomEntity = SourceIP, HostCustomEntity - = DeviceName","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Cisco - ASA - threat detection message fired","description":"Identifies when the Cisco - ASA Threat Detection engine fired an alert based on malicious activity occurring - on the network inicated by DeviceEventClassID 733101-733105\nResources: https://www.cisco.com/c/en/us/td/docs/security/asa/syslog/b_syslog/syslogs9.html\nDetails - on how to further troubleshoot/investigate: https://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/113685-asa-threat-detection.html","tactics":["Discovery","Impact"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-28T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2441bce9-02e4-407b-8cc7-7d597f38b8b0","name":"2441bce9-02e4-407b-8cc7-7d597f38b8b0","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) - or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// As - there is potentially more than 1 indicator type for matching IP, taking NetworkIP - first, then others if that is empty.\n// Taking the first non-empty value - based on potential IOC match availability\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), - NetworkIP, NetworkDestinationIP)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity - = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, - TI_ipEntity)\n| join (\n AzureActivity | where TimeGenerated >= ago(dt_lookBack)\n // - renaming time column so it is clear the log this came from\n | extend AzureActivity_TimeGenerated - = TimeGenerated\n)\non $left.TI_ipEntity == $right.CallerIpAddress\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, - Url, ExpirationDateTime, ConfidenceScore, AzureActivity_TimeGenerated,\nTI_ipEntity, - CallerIpAddress, Caller, OperationName, ActivityStatus, Category, ResourceId, - NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\n| - extend timestamp = AzureActivity_TimeGenerated, IPCustomEntity = CallerIpAddress, - AccountCustomEntity = Caller, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map IP entity to AzureActivity","description":"Identifies a match in AzureActivity - from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4b11568b-3f5f-4ba1-80c8-7f1dc8390eb7","name":"4b11568b-3f5f-4ba1-80c8-7f1dc8390eb7","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - threshold = 50;\nlet szSharePointFileOperation = \"SharePointFileOperation\";\nlet - szOperations = dynamic([\"FileDownloaded\", \"FileUploaded\"]);\nlet starttime - = 14d;\nlet endtime = 1d;\nlet historicalActivity =\nOfficeActivity\n| where - TimeGenerated between(ago(starttime)..ago(endtime))\n| where RecordType =~ - szSharePointFileOperation\n| where Operation in~ (szOperations)\n| summarize - historicalCount = count() by ClientIP, RecordType, Operation;\nlet recentActivity - = OfficeActivity\n| where TimeGenerated > ago(endtime)\n| where RecordType - =~ szSharePointFileOperation\n| where Operation in~ (szOperations)\n| summarize - min(Start_Time), max(Start_Time), recentCount = count() by ClientIP, RecordType, - Operation;\nlet RareIP = recentActivity | join kind= leftanti ( historicalActivity - ) on ClientIP, RecordType, Operation\n// More than 50 downloads/uploads from - a new IP\n| where recentCount > threshold;\nOfficeActivity \n| where TimeGenerated - >= ago(endtime) \n| where RecordType =~ szSharePointFileOperation\n| where - Operation in~ (szOperations)\n| join kind= inner (RareIP) on ClientIP, RecordType, - Operation\n| where Start_Time between(min_Start_Time .. max_Start_Time)\n| - summarize StartTimeUtc = min(min_Start_Time), EndTimeUtc = max(max_Start_Time) - by RecordType, Operation, UserType, UserId, ClientIP, OfficeWorkload, Site_Url, - OfficeObjectId, UserAgent, IPSeenCount = recentCount\n| extend timestamp = - StartTimeUtc, AccountCustomEntity = UserId, IPCustomEntity = ClientIP, URLCustomEntity - = Site_Url\n| order by IPSeenCount desc, ClientIP asc, Operation asc, UserId - asc","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"SharePointFileOperation - via previously unseen IPs","description":"Identifies when the volume of documents - uploaded to or downloaded from Sharepoint by new IP addresses\nexceeds a threshold - (default is 50).","tactics":["Exfiltration"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-08-23T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0febd8cc-1b8d-45ed-87b3-e1e8a57d14cd","name":"0febd8cc-1b8d-45ed-87b3-e1e8a57d14cd","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = ago(1h);\nlet threshold = 100;\nTrendMicro_XDR_CL \n| where - TimeGenerated >= timeframe\n| where modelSeverity_s == ''high'' or modelSeverity_s == - ''critical''\n| extend AccountCustomEntity = impactScope_account_s, HostCustomEntity - = impactScope_hostname_s, IPCustomEntity = impactScope_host_s","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Create - Incident for XDR Alerts (Critical & High)","description":"This Query creates - an incident based on Trend Micro XDR Workbench Alerts and maps the impacted - entities for Azure Sentinel usage. (Critical & High Serverity Alerts)","lastUpdatedDateUTC":"2020-12-10T00:00:00Z","createdDateUTC":"2020-12-10T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"TrendMicroXDR","dataTypes":["TrendMicro_XDR_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/50574fac-f8d1-4395-81c7-78a463ff0c52","name":"50574fac-f8d1-4395-81c7-78a463ff0c52","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - auditLookback = 1h;\nSigninLogs\n| where TimeGenerated > ago(auditLookback)\n| - where AppId =~ \"1b730954-1685-4b74-9bfd-dac224a7b894\" // AppDisplayName - IS Azure Active Directory PowerShell\n| where TokenIssuerType =~ \"AzureAD\"\n| - where ResourceIdentity !in (\"00000002-0000-0000-c000-000000000000\", \"00000003-0000-0000-c000-000000000000\") - // ResourceDisplayName IS NOT Windows Azure Active Directory OR Microsoft - Graph\n| where Status.errorCode == 0 // Success\n| project-reorder IPAddress, - UserAgent, ResourceDisplayName, UserDisplayName, UserId, UserPrincipalName\n| - order by TimeGenerated desc\n// New entity mapping\n| extend timestamp = TimeGenerated, - AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Azure - Active Directory PowerShell accessing non-AAD resources","description":"This - will alert when a user or application signs in using Azure Active Directory - PowerShell to access non-Active Directory resources, such as the Azure Key - Vault, which may be undesired or unauthorized behavior.\nFor capabilities - and expected behavior of the Azure Active Directory PowerShell module, see: - https://docs.microsoft.com/powershell/module/azuread/?view=azureadps-2.0.\nFor - further information on Azure Active Directory Signin activity reports, see: - https://docs.microsoft.com/azure/active-directory/reports-monitoring/concept-sign-ins.","tactics":["InitialAccess"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-12-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0d76e9cf-788d-4a69-ac7d-f234826b5bed","name":"0d76e9cf-788d-4a69-ac7d-f234826b5bed","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 1d;\nDnsEvents\n| where TimeGenerated > ago(timeframe)\n| where - Name contains \".\"\n| where Name has_any (\"monerohash.com\", \"do-dear.com\", - \"xmrminerpro.com\", \"secumine.net\", \"xmrpool.com\", \"minexmr.org\", \"hashanywhere.com\", - \n\"xmrget.com\", \"mininglottery.eu\", \"minergate.com\", \"moriaxmr.com\", - \"multipooler.com\", \"moneropools.com\", \"xmrpool.eu\", \"coolmining.club\", - \n\"supportxmr.com\", \"minexmr.com\", \"hashvault.pro\", \"xmrpool.net\", - \"crypto-pool.fr\", \"xmr.pt\", \"miner.rocks\", \"walpool.com\", \"herominers.com\", - \n\"gntl.co.uk\", \"semipool.com\", \"coinfoundry.org\", \"cryptoknight.cc\", - \"fairhash.org\", \"baikalmine.com\", \"tubepool.xyz\", \"fairpool.xyz\", - \"asiapool.io\", \n\"coinpoolit.webhop.me\", \"nanopool.org\", \"moneropool.com\", - \"miner.center\", \"prohash.net\", \"poolto.be\", \"cryptoescrow.eu\", \"monerominers.net\", - \"cryptonotepool.org\", \n\"extrmepool.org\", \"webcoin.me\", \"kippo.eu\", - \"hashinvest.ws\", \"monero.farm\", \"supportxmr.com\", \"xmrpool.eu\", \"linux-repository-updates.com\", - \"1gh.com\", \n\"dwarfpool.com\", \"hash-to-coins.com\", \"hashvault.pro\", - \"pool-proxy.com\", \"hashfor.cash\", \"fairpool.cloud\", \"litecoinpool.org\", - \"mineshaft.ml\", \"abcxyz.stream\", \n\"moneropool.ru\", \"cryptonotepool.org.uk\", - \"extremepool.org\", \"extremehash.com\", \"hashinvest.net\", \"unipool.pro\", - \"crypto-pools.org\", \"monero.net\", \n\"backup-pool.com\", \"mooo.com\", - \"freeyy.me\", \"cryptonight.net\", \"shscrypto.net\")\n| extend timestamp - = TimeGenerated, IPCustomEntity = ClientIP, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"DNS - events related to mining pools","description":"Identifies IP addresses that - may be performing DNS lookups associated with common currency mining pools.","tactics":["Execution","Impact"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9649e203-3cb7-47ff-89a9-42f2a5eefe31","name":"9649e203-3cb7-47ff-89a9-42f2a5eefe31","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - SeverityTable=datatable(Severity:string,Level:int) [\n\"low\", 1,\n\"medium\", - 2,\n\"high\", 3,\n\"critical\", 4\n];\nlet codeNameList = datatable(Codename:string)[\"C-PRIV-ACCOUNTS-SPN\", - \"C-SDPROP-CONSISTENCY\", \"C-DANG-PRIMGROUPID\", \"C-GPO-HARDENING\", \"C-DC-ACCESS-CONSISTENCY\", - \"C-DANGEROUS-TRUST-RELATIONSHIP\", \"C-UNCONST-DELEG\", \"C-ABNORMAL-ENTRIES-IN-SCHEMA\"];\nafad_parser\n| - where MessageType == 0 and Codename in~ (codeNameList)\n| lookup kind=leftouter - SeverityTable on Severity\n| order by Level","queryFrequency":"PT2H","queryPeriod":"PT2H","triggerOperator":"GreaterThan","triggerThreshold":0,"displayName":"Alsid - Active Directory attacks pathways","description":"Searches for triggered Indicators - of Exposures related to Active Directory attacks pathways","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-12-07T00:00:00Z","createdDateUTC":"2020-11-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AlsidForAD","dataTypes":["AlsidForADLog_CL"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3af9285d-bb98-4a35-ad29-5ea39ba0c628","name":"3af9285d-bb98-4a35-ad29-5ea39ba0c628","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeRange = ago(1d);\nlet threshold = 1;\nSigninLogs\n| where TimeGenerated - >= timeRange\n| where ConditionalAccessStatus == 1 or ConditionalAccessStatus - =~ \"failure\"\n| extend OS = DeviceDetail.operatingSystem, Browser = DeviceDetail.browser - \n| extend StatusCode = tostring(Status.errorCode), StatusDetails = tostring(Status.additionalDetails)\n| - extend ConditionalAccessPol0Name = tostring(ConditionalAccessPolicies[0].displayName)\n| - extend ConditionalAccessPol1Name = tostring(ConditionalAccessPolicies[1].displayName)\n| - extend ConditionalAccessPol2Name = tostring(ConditionalAccessPolicies[2].displayName)\n| - extend Status = strcat(StatusCode, \": \", ResultDescription) \n| summarize - StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), Status - = makelist(Status), StatusDetails = makelist(StatusDetails), IPAddresses = - makelist(IPAddress), IPAddressCount = dcount(IPAddress) , CorrelationIds = - makelist(CorrelationId) by UserPrincipalName, AppDisplayName, tostring(Browser), - tostring(OS), Location, ConditionalAccessPol0Name, ConditionalAccessPol1Name, - ConditionalAccessPol2Name\n| where IPAddressCount > threshold and StatusDetails - !has \"MFA successfully completed\"\n| mvexpand IPAddresses, Status, StatusDetails, - CorrelationIds\n| extend Status = strcat(Status, \" \", StatusDetails)\n| - summarize IPAddresses = makeset(IPAddresses), Status = makeset(Status), CorrelationIds - = makeset(CorrelationIds) by StartTimeUtc, EndTimeUtc, UserPrincipalName, - AppDisplayName, tostring(Browser), tostring(OS), Location, ConditionalAccessPol0Name, - ConditionalAccessPol1Name, ConditionalAccessPol2Name, IPAddressCount\n| extend - timestamp = StartTimeUtc, AccountCustomEntity = UserPrincipalName, IPCustomEntity - = tostring(IPAddresses)","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Attempt - to bypass conditional access rule in Azure AD","description":"Identifies an - attempt to Bypass conditional access rule(s) in Azure Active Directory.\nThe - ConditionalAccessStatus column value details if there was an attempt to bypass - Conditional Access\nor if the Conditional access rule was not satisfied (ConditionalAccessStatus - == 1).\nReferences: \nhttps://docs.microsoft.com/azure/active-directory/conditional-access/overview\nhttps://docs.microsoft.com/azure/active-directory/reports-monitoring/concept-sign-ins\nhttps://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\nConditionalAccessStatus - == 0 // Success\nConditionalAccessStatus == 1 // Failure\nConditionalAccessStatus - == 2 // Not Applied\nConditionalAccessStatus == 3 // unknown","tactics":["InitialAccess","Persistence"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActiveDirectory","dataTypes":["SigninLogs"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/70b12a3b-4899-42cb-910c-5ffaf9d7997d","name":"70b12a3b-4899-42cb-910c-5ffaf9d7997d","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"High","query":"let - timeframe = 1d; \nlet DomainNames = dynamic([\"0.ns1.dns-info.gq\", \"1.ns1.dns-info.gq\", - \"10.ns1.dns-info.gq\", \"102.ns1.dns-info.gq\", \n \"104.ns1.dns-info.gq\", - \"11.ns1.dns-info.gq\", \"110.ns1.dns-info.gq\", \"115.ns1.dns-info.gq\", - \"116.ns1.dns-info.gq\", \n \"117.ns1.dns-info.gq\", \"118.ns1.dns-info.gq\", - \"12.ns1.dns-info.gq\", \"120.ns1.dns-info.gq\", \"122.ns1.dns-info.gq\", - \n \"123.ns1.dns-info.gq\", \"128.ns1.dns-info.gq\", \"13.ns1.dns-info.gq\", - \"134.ns1.dns-info.gq\", \"135.ns1.dns-info.gq\", \n \"138.ns1.dns-info.gq\", - \"14.ns1.dns-info.gq\", \"144.ns1.dns-info.gq\", \"15.ns1.dns-info.gq\", \"153.ns1.dns-info.gq\", - \n \"157.ns1.dns-info.gq\", \"16.ns1.dns-info.gq\", \"17.ns1.dns-info.gq\", - \"18.ns1.dns-info.gq\", \"19.ns1.dns-info.gq\", \n \"1a9604fa.ns1.feedsdns.com\", - \"1c7606b6.ns1.steamappstore.com\", \"2.ns1.dns-info.gq\", \"20.ns1.dns-info.gq\", - \n \"201.ns1.dns-info.gq\", \"202.ns1.dns-info.gq\", \"204.ns1.dns-info.gq\", - \"207.ns1.dns-info.gq\", \"21.ns1.dns-info.gq\", \n \"210.ns1.dns-info.gq\", - \"211.ns1.dns-info.gq\", \"216.ns1.dns-info.gq\", \"22.ns1.dns-info.gq\", - \"220.ns1.dns-info.gq\", \n \"223.ns1.dns-info.gq\", \"23.ns1.dns-info.gq\", - \"24.ns1.dns-info.gq\", \"25.ns1.dns-info.gq\", \"26.ns1.dns-info.gq\", \n \"27.ns1.dns-info.gq\", - \"28.ns1.dns-info.gq\", \"29.ns1.dns-info.gq\", \"3.ns1.dns-info.gq\", \"30.ns1.dns-info.gq\", - \n \"31.ns1.dns-info.gq\", \"32.ns1.dns-info.gq\", \"33.ns1.dns-info.gq\", - \"34.ns1.dns-info.gq\", \"35.ns1.dns-info.gq\", \n \"36.ns1.dns-info.gq\", - \"37.ns1.dns-info.gq\", \"39.ns1.dns-info.gq\", \"3d6fe4b2.ns1.steamappstore.com\", - \n \"4.ns1.dns-info.gq\", \"40.ns1.dns-info.gq\", \"42.ns1.dns-info.gq\", - \"43.ns1.dns-info.gq\", \"44.ns1.dns-info.gq\", \n \"45.ns1.dns-info.gq\", - \"46.ns1.dns-info.gq\", \"48.ns1.dns-info.gq\", \"5.ns1.dns-info.gq\", \"50.ns1.dns-info.gq\", - \n \"50417.service.gstatic.dnset.com\", \"51.ns1.dns-info.gq\", \"52.ns1.dns-info.gq\", - \"53.ns1.dns-info.gq\",\n \"54.ns1.dns-info.gq\", \"55.ns1.dns-info.gq\", - \"56.ns1.dns-info.gq\", \"57.ns1.dns-info.gq\", \"58.ns1.dns-info.gq\", \n \"6.ns1.dns-info.gq\", - \"60.ns1.dns-info.gq\", \"62.ns1.dns-info.gq\", \"63.ns1.dns-info.gq\", \"64.ns1.dns-info.gq\", - \n \"65.ns1.dns-info.gq\", \"67.ns1.dns-info.gq\", \"7.ns1.dns-info.gq\", - \"70.ns1.dns-info.gq\", \"71.ns1.dns-info.gq\",\n \"73.ns1.dns-info.gq\", - \"77.ns1.dns-info.gq\", \"77075.service.gstatic.dnset.com\", \"7c1947fa.ns1.steamappstore.com\",\n \"8.ns1.dns-info.gq\", - \"81.ns1.dns-info.gq\", \"86.ns1.dns-info.gq\", \"87.ns1.dns-info.gq\", \"9.ns1.dns-info.gq\", - \n \"94343.service.gstatic.dnset.com\", \"9939.service.gstatic.dnset.com\", - \"aa.ns.mircosoftdoc.com\", \n \"aaa.feeds.api.ns1.feedsdns.com\", \"aaa.googlepublic.feeds.ns1.dns-info.gq\", - \n \"aaa.resolution.174547._get.cache.up.sourcedns.tk\", \"acc.microsoftonetravel.com\", - \n \"accounts.longmusic.com\", \"admin.dnstemplog.com\", \"agent.updatenai.com\", - \n \"alibaba.zzux.com\", \"api.feedsdns.com\", \"app.portomnail.com\", \"asia.updatenai.com\", - \n \"battllestategames.com\", \"bguha.serveuser.com\", \"binann-ce.com\", - \"bing.dsmtp.com\", \n \"blog.cdsend.xyz\", \"brives.minivineyapp.com\", - \"bsbana.dynamic-dns.net\", \n \"californiaforce.000webhostapp.com\", \"californiafroce.000webhostapp.com\", - \n \"cdn.freetcp.com\", \"cdsend.xyz\", \"cipla.zzux.com\", \"cloudfeeddns.com\", - \"comcleanner.info\",\n \"cs.microsoftsonline.net\", \"dns-info.gq\", \"dns05.cf\", - \"dns22.ml\", \"dns224.com\", \n \"dnsdist.org\", \"dnstemplog.com\", \"doc.mircosoftdoc.com\", - \"dropdns.com\", \n \"eshop.cdn.freetcp.com\", \"exchange.dumb1.com\", \"exchange.misecure.com\", - \"exchange.mrbasic.com\",\n \"facebookdocs.com\", \"facebookint.com\", \"facebookvi.com\", - \"feed.ns1.dns-info.gq\", \"feedsdns.com\", \n \"firejun.freeddns.com\", - \"ftp.dns-info.dyndns.pro\", \"goallbandungtravel.com\", \"goodhk.azurewebsites.net\", - \n \"googlepublic.feed.ns1.dns-info.gq\", \"gp.spotifylite.cloud\", \"gskytop.com\", - \"gstatic.dnset.com\", \n \"gxxservice.com\", \"helpdesk.cdn.freetcp.com\", - \"id.serveuser.com\", \"infestexe.com\", \"item.itemdb.com\",\n \"m.mircosoftdoc.com\", - \"mail.transferdkim.xyz\", \"mcafee.updatenai.com\", \"mecgjm.mircosoftdoc.com\",\n \"microdocs.ga\", - \"microsock.website\", \"microsocks.net\", \"microsoft.sendsmtp.com\", \n \"microsoftbook.dns05.com\", - \"microsoftcontactcenter.com\", \"microsoftdocs.dns05.com\", \"microsoftdocs.ml\", - \n \"microsoftonetravel.com\", \"microsoftonlines.net\", \"microsoftprod.com\", - \"microsofts.dns1.us\", \"microsoftsonline.net\",\n \"minivineyapp.com\", - \"mircosoftdoc.com\", \"mircosoftdocs.com\", \"mlcrosoft.ninth.biz\", \"mlcrosoft.site\", - \n \"mm.portomnail.com\", \"msdnupdate.com\", \"msecdn.cloud\", \"mtnl1.dynamic-dns.net\", - \"ns.gstatic.dnset.com\", \n \"ns.microsoftprod.com\", \"ns.steamappstore.com\", - \"ns1.cdn.freetcp.com\", \"ns1.comcleanner.info\", \"ns1.dns-info.gq\", \n \"ns1.dns05.cf\", - \"ns1.dnstemplog.com\", \"ns1.dropdns.com\", \"ns1.microsoftonetravel.com\", - \n \"ns1.microsoftonlines.net\", \"ns1.microsoftprod.com\", \"ns1.microsoftsonline.net\", - \"ns1.mlcrosoft.site\", \n \"ns1.teams.wikaba.com\", \"ns1.windowsdefende.com\", - \"ns2.comcleanner.info\", \"ns2.dnstemplog.com\", \n \"ns2.microsoftonetravel.com\", - \"ns2.microsoftprod.com\", \"ns2.microsoftsonline.net\", \"ns2.mlcrosoft.site\", - \n \"ns2.windowsdefende.com\", \"ns3.microsoftprod.com\", \"ns3.mlcrosoft.site\", - \"nutrition.mrbasic.com\", \n \"nutrition.youdontcare.com\", \"online.mlcrosoft.site\", - \"online.msdnupdate.com\", \"outlookservce.site\", \n \"owa.jetos.com\", - \"owa.otzo.com\", \"pornotime.co\", \"portomnail.com\", \n \"post.1a0.066e063ac.7c1947fa.ns1.steamappstore.com\", - \"pricingdmdk.com\", \"prod.microsoftprod.com\", \n \"product.microsoftprod.com\", - \"ptcl.yourtrap.com\", \"query.api.sourcedns.tk\", \"rb.itemdb.com\", \"redditcdn.com\", - \n \"rss.otzo.com\", \"secure.msdnupdate.com\", \"service.dns22.ml\", \"service.gstatic.dnset.com\", - \"service04.dns04.com\", \n \"settings.teams.wikaba.com\", \"sip.outlookservce.site\", - \"sixindent.epizy.com\", \"soft.msdnupdate.com\", \"sourcedns.ml\", \n \"sourcedns.tk\", - \"sport.msdnupdate.com\", \"spotifylite.cloud\", \"static.misecure.com\", - \"steamappstore.com\", \n \"store.otzo.com\", \"survey.outlookservce.site\", - \"team.itemdb.com\", \"temp221.com\", \"test.microsoftprod.com\", \n \"thisisaaa.000webhostapp.com\", - \"token.dns04.com\", \"token.dns05.com\", \"transferdkim.xyz\", \n \"travelsanignacio.com\", - \"update08.com\", \"updated08.com\", \"updatenai.com\", \"wantforspeed.com\",\n \"web.mircosoftdoc.com\", - \"webmail.pornotime.co\", \"webwhois.team.itemdb.com\", \"windowsdefende.com\", - \"wnswindows.com\",\n \"ashcrack.freetcp.com\", \"battllestategames.com\", - \"binannce.com\", \"cdsend.xyz\", \"comcleanner.info\", \"microsock.website\", - \n \"microsocks.net\", \"microsoftsonline.net\", \"mlcrosoft.site\", \"notify.serveuser.com\", - \"ns1.microsoftprod.com\", \n \"ns2.microsoftprod.com\", \"pricingdmdk.com\", - \"steamappstore.com\", \"update08.com\", \"wnswindows.com\", \n \"youtube.dns05.com\", - \"z1.zalofilescdn.com\", \"z2.zalofilescdn.com\", \"zalofilescdn.com\"]); - \n(union isfuzzy=true \n (CommonSecurityLog \n | where TimeGenerated >= ago(timeframe) \n - | parse Message with * ''('' DNSName '')'' * \n | where DNSName in~ (DomainNames) - \n | extend Account = SourceUserID, Computer = DeviceName, IPAddress = DestinationIP - \n ), \n (DnsEvents \n | where TimeGenerated >= ago(timeframe) \n | extend - DNSName = Name \n | where isnotempty(DNSName) \n | where DNSName in~ (DomainNames) - \n | extend IPAddress = ClientIP \n ), \n (VMConnection \n | where TimeGenerated - >= ago(timeframe) \n | parse RemoteDnsCanonicalNames with * ''[\"'' DNSName - ''\"]'' * \n | where isnotempty(DNSName) \n | where DNSName in~ (DomainNames) - \n | extend IPAddress = RemoteIp \n ), \n ( \n DeviceNetworkEvents \n | where - isnotempty(RemoteUrl) \n | where RemoteUrl in~ (DomainNames) \n | extend - IPAddress = RemoteIP \n | extend Computer = DeviceName \n ) \n ) \n | extend - timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity - = Computer, IPCustomEntity = IPAddress","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Known - Barium domains","description":"Identifies a match across various data feeds - for domains IOCs related to the Barium activity group.\n References: https://www.justice.gov/opa/pr/seven-international-cyber-defendants-including-apt41-actors-charged-connection-computer","tactics":["CommandAndControl"],"lastUpdatedDateUTC":"2020-12-22T00:00:00Z","createdDateUTC":"2020-11-11T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"DNS","dataTypes":["DnsEvents"]},{"connectorId":"AzureMonitor(VMInsights)","dataTypes":["VMConnection"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]},{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceNetworkEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2c55fe7a-b06f-4029-a5b9-c54a2320d7b8","name":"2c55fe7a-b06f-4029-a5b9-c54a2320d7b8","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 1d;\nlet timeframe = 1h;\nlet TotalEventsThreshold - = 5;\nlet ExeList = dynamic([\"powershell.exe\",\"cmd.exe\",\"wmic.exe\",\"psexec.exe\",\"cacls.exe\",\"rundll.exe\"]);\nlet - TimeSeriesData =\nSecurityEvent\n| where EventID == 4688 | extend Process - = tolower(Process)\n| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\n| - where Process in (ExeList)\n| project TimeGenerated, Computer, AccountType, - Account, Process\n| make-series Total=count() on TimeGenerated from ago(starttime) - to ago(endtime) step timeframe by Process;\nlet TimeSeriesAlerts = materialize(TimeSeriesData\n| - extend (anomalies, score, baseline) = series_decompose_anomalies(Total, 1.5, - -1, ''linefit'')\n| mv-expand Total to typeof(double), TimeGenerated to typeof(datetime), - anomalies to typeof(double), score to typeof(double), baseline to typeof(long)\n| - where anomalies > 0\n| project Process, TimeGenerated, Total, baseline, anomalies, - score\n| where Total > TotalEventsThreshold);\nlet AnomalyHours = materialize(TimeSeriesAlerts | - where TimeGenerated > ago(2d) | project TimeGenerated);\nTimeSeriesAlerts\n| - where TimeGenerated > ago(2d)\n| join (\nSecurityEvent\n| where TimeGenerated - between (startofday(ago(starttime))..startofday(ago(endtime)))\n| extend DateHour - = bin(TimeGenerated, 1h) // create a new column and round to hour\n| where - DateHour in ((AnomalyHours)) //filter the dataset to only selected anomaly - hours\n| where EventID == 4688 | extend Process = tolower(Process)\n| summarize - CommandlineCount = count() by bin(TimeGenerated, 1h), Process, CommandLine, - Computer, Account\n) on Process, TimeGenerated\n| project AnomalyHour = TimeGenerated, - Computer, Account, Process, CommandLine, CommandlineCount, Total, baseline, - anomalies, score\n| extend timestamp = AnomalyHour, AccountCustomEntity = - Account, HostCustomEntity = Computer","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Process - execution frequency anomaly","description":"Identifies anomalous spike in - frequency of executions of sensitive processes which are often leveraged as - attack vectors.\nThe query leverages KQL built-in anomaly detection algorithms - to find large deviations from baseline patterns.\nSudden increases in execution - frequency of sensitive processes should be further investigated for malicious - activity.\nTune the values from 1.5 to 3 in series_decompose_anomalies for - further outliers or based on custom threshold values for score.","tactics":["Execution"],"lastUpdatedDateUTC":"2021-01-21T00:00:00Z","createdDateUTC":"2019-05-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ce1e7025-866c-41f3-9b08-ec170e05e73e","name":"ce1e7025-866c-41f3-9b08-ec170e05e73e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - SunburstURL=dynamic([\"panhardware.com\",\"databasegalore.com\",\"avsvmcloud.com\",\"freescanonline.com\",\"thedoccloud.com\",\"deftsecurity.com\"]);\nDeviceNetworkEvents\n| - where ActionType == \"ConnectionSuccess\"\n| where RemoteUrl in(SunburstURL)\n| - extend\n timestamp = TimeGenerated,\n AccountCustomEntity = iff(isnotempty(InitiatingProcessAccountUpn), - InitiatingProcessAccountUpn, InitiatingProcessAccountName),\n HostCustomEntity - = DeviceName,\n FileHashCustomEntity = InitiatingProcessMD5,\n URLCustomEntity - = RemoteUrl,\n IPCustomEntity = RemoteIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]},{"entityType":"FileHash","fieldMappings":[{"identifier":"Algorithm","columnName":"MD5"},{"identifier":"Value","columnName":"FileHashCustomEntity"}]}],"displayName":"SUNBURST - network beacons","description":"Identifies SolarWinds SUNBURST domain beacon - IOCs in DeviceNetworkEvents\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- - https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f","tactics":["Execution","Persistence"],"lastUpdatedDateUTC":"2021-01-31T00:00:00Z","createdDateUTC":"2020-12-15T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"MicrosoftThreatProtection","dataTypes":["DeviceNetworkEvents"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/06a9b845-6a95-4432-a78b-83919b28c375","name":"06a9b845-6a95-4432-a78b-83919b28c375","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 1d;\nlet timeframe = 1h;\nlet scorethreshold - = 5;\nlet percentotalthreshold = 50;\nlet TimeSeriesData = CommonSecurityLog\n| - where isnotempty(DestinationIP) and isnotempty(SourceIP)\n| where TimeGenerated - between (startofday(ago(starttime))..startofday(ago(endtime)))\n| project - TimeGenerated,SourceIP, DestinationIP, DeviceVendor\n| make-series Total=count() - on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) - step timeframe by DeviceVendor;\n// Filtering specific records associated - with spikes as outliers\nlet TimeSeriesAlerts=materialize(TimeSeriesData\n| - extend (anomalies, score, baseline) = series_decompose_anomalies(Total, scorethreshold, - -1, ''linefit'')\n| mv-expand Total to typeof(double), TimeGenerated to typeof(datetime), - anomalies to typeof(double),score to typeof(double), baseline to typeof(long)\n| - where anomalies > 0 | extend score = round(score,2), AnomalyHour = TimeGenerated\n| - project DeviceVendor,AnomalyHour, TimeGenerated, Total, baseline, anomalies, - score);\nlet AnomalyHours = materialize(TimeSeriesAlerts | where TimeGenerated - > ago(2d) | project TimeGenerated);\n// Join anomalies with Base Data to popalate - associated records for investigation - Results sorted by score in descending - order\nTimeSeriesAlerts\n| where TimeGenerated > ago(2d)\n| join (\n CommonSecurityLog\n| - where isnotempty(DestinationIP) and isnotempty(SourceIP)\n| where TimeGenerated - > ago(2d)\n| extend DateHour = bin(TimeGenerated, 1h) // create a new column - and round to hour\n| where DateHour in ((AnomalyHours)) //filter the dataset - to only selected anomaly hours\n| summarize HourlyCount = count(), TimeGeneratedMax - = arg_max(TimeGenerated, *), DestinationIPlist = make_set(DestinationIP, 100), - DestinationPortlist = make_set(DestinationPort, 100) by DeviceVendor, SourceIP, - TimeGeneratedHour= bin(TimeGenerated, 1h)\n| extend AnomalyHour = TimeGeneratedHour\n) - on AnomalyHour, DeviceVendor\n| extend PercentTotal = round((HourlyCount / - Total) * 100, 3)\n| where PercentTotal > percentotalthreshold\n| project DeviceVendor - , AnomalyHour, TimeGeneratedMax, SourceIP, DestinationIPlist, DestinationPortlist, - HourlyCount, PercentTotal, Total, baseline, score, anomalies\n| summarize - HourlyCount=sum(HourlyCount), StartTimeUtc=min(TimeGeneratedMax), EndTimeUtc=max(TimeGeneratedMax), - SourceIPlist = make_set(SourceIP, 100), SourceIPMax= arg_max(SourceIP, *), - DestinationIPlist = make_set(DestinationIPlist, 100), DestinationPortlist - = make_set(DestinationPortlist, 100) by DeviceVendor , AnomalyHour, Total, - baseline, score, anomalies\n| project DeviceVendor , AnomalyHour, EndTimeUtc, - SourceIPMax ,SourceIPlist, DestinationIPlist, DestinationPortlist, HourlyCount, - Total, baseline, score, anomalies\n| extend timestamp= EndTimeUtc , IPCustomEntity - = SourceIPMax","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":3,"entityMappings":[{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Time - series anomaly detection for total volume of traffic","description":"Identifies - anamalous spikes in network traffic logs as compared to baseline or normal - historical patterns.\nThe query leverages a KQL built-in anomaly detection - algorithm to find large deviations from baseline patterns.\nSudden increases - in network traffic volume may be an indication of data exfiltration attempts - and should be investigated.\nThe higher the score, the further it is from - the baseline value.\nThe output is aggregated to provide summary view of unique - source IP to destination IP address and port traffic observed in the flagged - anomaly hour.\nThe source IP addresses which were sending less than percentotalthreshold - of the total traffic have been exluded whose value can be adjusted as needed - .\nYou may have to run queries for individual source IP addresses from SourceIPlist - to determine if anything looks suspicious","tactics":["Exfiltration"],"lastUpdatedDateUTC":"2021-01-21T00:00:00Z","createdDateUTC":"2019-05-07T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Barracuda","dataTypes":["CommonSecurityLog"]},{"connectorId":"CEF","dataTypes":["CommonSecurityLog"]},{"connectorId":"CheckPoint","dataTypes":["CommonSecurityLog"]},{"connectorId":"CiscoASA","dataTypes":["CommonSecurityLog"]},{"connectorId":"F5","dataTypes":["CommonSecurityLog"]},{"connectorId":"Fortinet","dataTypes":["CommonSecurityLog"]},{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/871ba14c-88ef-48aa-ad38-810f26760ca3","name":"871ba14c-88ef-48aa-ad38-810f26760ca3","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 7d;\nOfficeActivity\n| where TimeGenerated >= ago(timeframe)\n| - where Operation =~ \"Set-Mailbox\"\n| where Parameters has \"ForwardingSmtpAddress\"\n| - extend parsed = parse_json(Parameters)\n| mv-expand parsed\n| where parsed.Name - == \"ForwardingSmtpAddress\"\n| extend parameterName = tostring(parsed.Name), - fwdingDestination = tostring(parsed.Value)\n| where isnotempty(fwdingDestination)\n| - extend ClientIPOnly = case( \nClientIP has \".\" and ClientIP has '':'', tostring(split(ClientIP,\":\")[0]), - \nClientIP has \".\" and ClientIP has ''-'', tostring(split(ClientIP,\"-\")[0]), - \nClientIP has '']-'', tostring(trim_start(@''[[]'',tostring(split(ClientIP,\"]\")[0]))),\nClientIP - has '']:'', tostring(trim_start(@''[[]'',tostring(split(ClientIP,\"]\")[0]))),\nisempty(ClientIP) - and ClientIP_ has \".\" and ClientIP_ has '':'', tostring(split(ClientIP_,\":\")[0]), - \nisempty(ClientIP) and ClientIP_ has \".\" and ClientIP_ has ''-'', tostring(split(ClientIP_,\"-\")[0]), - \nisempty(ClientIP) and ClientIP_ has '']-'', tostring(trim_start(@''[[]'',tostring(split(ClientIP_,\"]\")[0]))),\nisempty(ClientIP) - and ClientIP_ has '']:'', tostring(trim_start(@''[[]'',tostring(split(ClientIP_,\"]\")[0]))),\nisnotempty(ClientIP), - ClientIP,\nisnotempty(ClientIP_), ClientIP_,\n\"IP Not Available\"\n) \n| - extend Port = case(\nClientIP has \".\" and ClientIP has '':'', tostring(split(ClientIP,\":\")[1]), - \nClientIP has \".\" and ClientIP has ''-'', tostring(split(ClientIP,\"-\")[1]), - \nClientIP has '']-'', tostring(split(ClientIP,\"]-\")[1]), \nClientIP has - '']:'', tostring(split(ClientIP,\"]:\")[1]), \nisempty(ClientIP) and ClientIP_ - has \".\" and ClientIP_ has '':'', tostring(split(ClientIP_,\":\")[1]), \nisempty(ClientIP) - and ClientIP_ has \".\" and ClientIP_ has ''-'', tostring(split(ClientIP_,\"-\")[1]), - \nisempty(ClientIP) and ClientIP_ has '']-'', tostring(split(ClientIP_,\"]-\")[1]),\nisempty(ClientIP) - and ClientIP_ has '']:'', tostring(split(ClientIP_,\"]:\")[1]),\nisnotempty(ClientIP), - ClientIP,\nisnotempty(ClientIP_), ClientIP_,\n\"IP Not Available\"\n)\n| extend - UserId = iff(isempty(UserId), UserId_, UserId)\n| summarize StartTimeUtc = - min(TimeGenerated), EndTimeUtc = max(TimeGenerated), DistinctUserCount = dcount(UserId), - UserId = make_set(UserId), \nPorts = make_set(Port), EventCount = count() - by fwdingDestination, ClientIP = ClientIPOnly \n| where DistinctUserCount - > 1\n| mv-expand UserId\n| extend UserId = tostring(UserId), Ports = tostring(Ports)\n| - distinct StartTimeUtc, EndTimeUtc, UserId, DistinctUserCount, ClientIP, Ports, - fwdingDestination, EventCount\n| extend timestamp = StartTimeUtc, AccountCustomEntity - = UserId, IPCustomEntity = ClientIP","queryFrequency":"P1D","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Multiple - users email forwarded to same destination","description":"Identifies when - multiple (more than one) users mailboxes are configured to forward to the - same destination. \nThis could be an attacker-controlled destination mailbox - configured to collect mail from multiple compromised user accounts.","tactics":["Collection","Exfiltration"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-08-23T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/36a9c9e5-3dc1-4ed9-afaa-1d13617bfc2b","name":"36a9c9e5-3dc1-4ed9-afaa-1d13617bfc2b","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet ioc_lookBack = 14d;\nThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\n| - where Active == true\n// Picking up only IOC''s that contain the entities - we want\n| where isnotempty(Url)\n| join (\n OfficeActivity\n | where TimeGenerated - >= ago(dt_lookBack)\n //Extract the Url from a number of potential fields\n | - extend Url = iif(OfficeWorkload == \"AzureActiveDirectory\",extract(\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\(\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+);\", - 1,ModifiedProperties),tostring(parse_json(ModifiedProperties)[12].NewValue))\n | - where isnotempty(Url)\n // Ensure we get a clean URL\n | extend Url = tostring(split(Url, - '';'')[0])\n | extend Office_TimeGenerated = TimeGenerated\n // Project - a single user identity that we can use for entity mapping\n | extend User - = iif(isnotempty(UserId), UserId, iif(isnotempty(Actor), tostring(parse_json(Actor)[0].ID), - tostring(parse_json(Parameters)[0].Vlaue))) \n) on Url\n| summarize LatestIndicatorTime - = arg_max(TimeGenerated, *) by IndicatorId\n| project LatestIndicatorTime, - Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, - ConfidenceScore, Operation, \nUserType, OfficeWorkload, Parameters, Office_TimeGenerated, - Url, User\n| extend timestamp = Office_TimeGenerated, AccountCustomEntity - = User, URLCustomEntity = Url","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"URL","fieldMappings":[{"identifier":"Url","columnName":"URLCustomEntity"}]}],"displayName":"(Preview) - TI map URL entity to OfficeActivity data","description":"Identifies a match - in OfficeActivity data from any URL IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/80da0a8f-cfe1-4cd0-a895-8bc1771a720e","name":"80da0a8f-cfe1-4cd0-a895-8bc1771a720e","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nSecurityEvent\n| where TimeGenerated >= ago(timeframe)\n| - where EventID == 1102 and EventSourceName == \"Microsoft-Windows-Eventlog\" - \n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), - EventCount = count() by Computer, Account, EventID, Activity\n| extend timestamp - = StartTimeUtc, AccountCustomEntity = Account, HostCustomEntity = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Security - Event log cleared","description":"Checks for event id 1102 which indicates - the security event log was cleared. \nIt uses Event Source Name \"Microsoft-Windows-Eventlog\" - to avoid generating false positives from other sources, like AD FS servers - for instance.","tactics":["DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-22T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1fa1528e-f746-4794-8a41-14827f4cb798","name":"1fa1528e-f746-4794-8a41-14827f4cb798","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = ago(1h);\nlet threshold = 100;\nPulseConnectSecure\n| where TimeGenerated - >= timeframe\n| where Messages startswith \"Login failed\"\n| summarize dcount(User) - by Computer, bin(TimeGenerated, 15m)\n| where dcount_User > threshold\n| extend - timestamp = TimeGenerated, HostCustomEntity = Computer","queryFrequency":"PT1H","queryPeriod":"PT1H","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"PulseConnectSecure - - Large Number of Distinct Failed User Logins","description":"This query identifies - evidence of failed login attempts from a large number of distinct users on - a Pulse Connect Secure VPN server","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2020-06-06T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PulseConnectSecure","dataTypes":["Syslog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0777f138-e5d8-4eab-bec1-e11ddfbc2be2","name":"0777f138-e5d8-4eab-bec1-e11ddfbc2be2","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - timeframe = 10m;\nlet threshold = 20;\nSecurityEvent \n| where TimeGenerated - >= ago(timeframe)\n| where EventID == 4625\n| where AccountType =~ \"User\"\n| - where SubStatus !=''0xc0000064'' and Account !in (''\\\\'', ''-\\\\-'')\n// - SubStatus ''0xc0000064'' signifies ''Account name does not exist''\n| extend - ResourceId = column_ifexists(\"_ResourceId\", _ResourceId), SourceComputerId - = column_ifexists(\"SourceComputerId\", SourceComputerId)\n| extend Reason - = case(\nSubStatus =~ ''0xC000005E'', ''There are currently no logon servers - available to service the logon request.'',\nSubStatus =~ ''0xC0000064'', ''User - logon with misspelled or bad user account'',\nSubStatus =~ ''0xC000006A'', - ''User logon with misspelled or bad password'', \nSubStatus =~ ''0xC000006D'', - ''Bad user name or password'',\nSubStatus =~ ''0xC000006E'', ''Unknown user - name or bad password'',\nSubStatus =~ ''0xC000006F'', ''User logon outside - authorized hours'',\nSubStatus =~ ''0xC0000070'', ''User logon from unauthorized - workstation'',\nSubStatus =~ ''0xC0000071'', ''User logon with expired password'',\nSubStatus - =~ ''0xC0000072'', ''User logon to account disabled by administrator'',\nSubStatus - =~ ''0xC00000DC'', ''Indicates the Sam Server was in the wrong state to perform - the desired operation'', \nSubStatus =~ ''0xC0000133'', ''Clocks between DC - and other computer too far out of sync'',\nSubStatus =~ ''0xC000015B'', ''The - user has not been granted the requested logon type (aka logon right) at this - machine'',\nSubStatus =~ ''0xC000018C'', ''The logon request failed because - the trust relationship between the primary domain and the trusted domain failed'',\nSubStatus - =~ ''0xC0000192'', ''An attempt was made to logon, but the Netlogon service - was not started'',\nSubStatus =~ ''0xC0000193'', ''User logon with expired - account'',\nSubStatus =~ ''0xC0000224'', ''User is required to change password - at next logon'',\nSubStatus =~ ''0xC0000225'', ''Evidently a bug in Windows - and not a risk'',\nSubStatus =~ ''0xC0000234'', ''User logon with account - locked'',\nSubStatus =~ ''0xC00002EE'', ''Failure Reason: An Error occurred - during Logon'',\nSubStatus =~ ''0xC0000413'', ''Logon Failure: The machine - you are logging onto is protected by an authentication firewall. The specified - account is not allowed to authenticate to the machine'',\nstrcat(''Unknown - reason substatus: '', SubStatus))\n| summarize StartTime = min(TimeGenerated), - EndTime = max(TimeGenerated), FailedLogonCount = count() by EventID, \nActivity, - Computer, Account, TargetAccount, TargetUserName, TargetDomainName, \nLogonType, - LogonTypeName, LogonProcessName, Status, SubStatus, Reason, ResourceId, SourceComputerId, - WorkstationName, IpAddress\n| where FailedLogonCount >= threshold\n| extend - timestamp = StartTime, AccountCustomEntity = Account, HostCustomEntity = Computer, - IPCustomEntity = IpAddress","queryFrequency":"PT10M","queryPeriod":"PT10M","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Failed - logon attempts by valid accounts within 10 mins","description":"Identifies - when failed logon attempts are 20 or higher during a 10 minute period (2 failed - logons per minute minimum) from valid account.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b2c15736-b9eb-4dae-8b02-3016b6a45a32","name":"b2c15736-b9eb-4dae-8b02-3016b6a45a32","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - starttime = 14d;\nlet endtime = 1d;\n// The number of operations below which - an IP address is considered an unusual source of role assignment operations\nlet - alertOperationThreshold = 5;\nlet createRoleAssignmentActivity = AzureActivity\n| - where OperationName == \"Create role assignment\";\ncreateRoleAssignmentActivity - \n| where TimeGenerated between (ago(starttime) .. ago(endtime))\n| summarize - count() by CallerIpAddress, Caller\n| where count_ >= alertOperationThreshold\n| - join kind = rightanti ( \ncreateRoleAssignmentActivity\n| where TimeGenerated - > ago(endtime)\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc - = max(TimeGenerated), ActivityTimeStamp = makelist(TimeGenerated), ActivityStatus - = makelist(ActivityStatus), \nOperationIds = makelist(OperationId), CorrelationId - = makelist(CorrelationId), ActivityCountByCallerIPAddress = count() \nby - ResourceId, CallerIpAddress, Caller, OperationName, Resource, ResourceGroup\n) - on CallerIpAddress, Caller\n| extend timestamp = StartTimeUtc, AccountCustomEntity - = Caller, IPCustomEntity = CallerIpAddress","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Suspicious - granting of permissions to an account","description":"Identifies IPs from - which users grant access to other users on azure resources and alerts when - a previously unseen source IP address is used.","tactics":["Persistence","PrivilegeEscalation"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2790795b-7dba-483e-853f-44aa0bc9c985","name":"2790795b-7dba-483e-853f-44aa0bc9c985","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - incidentTime = ago(1d);\nCommonSecurityLog\n| where TimeGenerated > incidentTime\n| - where DeviceProduct =~ \"Wazuh\"\n| where Activity has \"Web server 400 error - code.\"\n| where Message has \"403\"\n| extend HostName=substring(split(DeviceCustomString1,\")\")[0],1)\n| - summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), NumberOfErrors - = dcount(SourceIP) by HostName, SourceIP\n| where NumberOfErrors > 400\n| - sort by NumberOfErrors desc\n| extend timestamp = StartTime, HostCustomEntity - = HostName, IPCustomEntity = SourceIP","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Wazuh - - Large Number of Web errors from an IP","description":"Identifies instances - where Wazuh logged over 400 ''403'' Web Errors from one IP Address. To onboard - Wazuh data into Sentinel please view: https://github.com/wazuh/wazuh-documentation/blob/master/source/azure/monitoring%20activity.rst","tactics":["Persistence"],"lastUpdatedDateUTC":"2021-01-16T00:00:00Z","createdDateUTC":"2020-04-21T00:00:00Z","status":"Available","alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ca67c83e-7fff-4127-a3e3-1af66d6d4cad","name":"ca67c83e-7fff-4127-a3e3-1af66d6d4cad","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - timeframe = 1d;\nlet ProcessCreationEvents=() {\nlet processEvents=SecurityEvent\n| - where EventID==4688\n| where isnotempty(CommandLine)\n| summarize StartTimeUtc - = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), count() by Computer, - Account = SubjectUserName, AccountDomain = SubjectDomainName,\nFileName = - Process, CommandLine, ParentProcessName;\nprocessEvents};\nProcessCreationEvents\n| - where CommandLine contains \"TVqQAAMAAAAEAAA\"\n| where StartTimeUtc >= ago(timeframe)\n| - extend timestamp = StartTimeUtc, AccountCustomEntity = Account, HostCustomEntity - = Computer","queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Base64 - encoded Windows process command-lines","description":"Identifies instances - of a base64 encoded PE file header seen in the process command line parameter.","tactics":["Execution","DefenseEvasion"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2018-09-14T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b725d62c-eb77-42ff-96f6-bdc6745fc6e0","name":"b725d62c-eb77-42ff-96f6-bdc6745fc6e0","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - starttime = 14d;\nlet endtime = 1d;\nlet UserAgentAll =\n(union isfuzzy=true\n(OfficeActivity\n| - where TimeGenerated >= ago(starttime)\n| where isnotempty(UserAgent)\n| summarize - StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by UserAgent, - SourceIP = ClientIP, Account = UserId, Type, RecordType, Operation\n),\n(\nW3CIISLog\n| - where TimeGenerated >= ago(starttime)\n| where isnotempty(csUserAgent)\n| - summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by - UserAgent = csUserAgent, SourceIP = cIP, Account = csUserName, Type, sSiteName, - csMethod, csUriStem\n),\n(\nAWSCloudTrail\n| where TimeGenerated >= ago(starttime)\n| - where isnotempty(UserAgent)\n| summarize StartTime = min(TimeGenerated), EndTime - = max(TimeGenerated) by UserAgent, SourceIP = SourceIpAddress, Account = UserIdentityUserName, - Type, EventSource, EventName\n))\n// remove wordSize blocks of non-numeric - hex characters prior to word extraction\n| extend UserAgentNoHexAlphas = replace(\"([A-Fa-f]{4,})\", - \"x\", UserAgent)\n// once blocks of hex chars are removed, extract wordSize - blocks of a-z\n| extend Tokens = extract_all(\"([A-Za-z]{4,})\", UserAgentNoHexAlphas)\n// - concatenate extracted words to create a summarized user agent for baseline - and comparison\n| extend NormalizedUserAgent = strcat_array(Tokens, \"|\")\n| - project-away UserAgentNoHexAlphas, Tokens;\nUserAgentAll\n| where StartTime - >= ago(endtime)\n| summarize StartTime = min(StartTime), EndTime = max(EndTime), - count() by UserAgent, NormalizedUserAgent, SourceIP, Account, Type, RecordType, - Operation, EventSource, EventName, sSiteName, csMethod, csUriStem\n| join - kind=leftanti\n(\nUserAgentAll\n| where StartTime < ago(endtime)\n| summarize - by NormalizedUserAgent, SourceIP, Account, Type, RecordType, Operation, EventSource, - EventName, sSiteName, csMethod, csUriStem\n)\non NormalizedUserAgent\n| extend - timestamp = StartTime, IPCustomEntity = SourceIP, AccountCustomEntity = Account","queryFrequency":"P1D","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"New - UserAgent observed in last 24 hours","description":"Identifies new UserAgents - observed in the last 24 hours versus the previous 14 days. This detection\nextracts - words from user agents to build the baseline and determine rareity rather - than perform a\ndirect comparison. This avoids FPs caused by version numbers - and other high entropy user agent components.\nThese new UserAgents could - be benign. However, in normally stable environments,\nthese new UserAgents - could provide a starting point for investigating malicious activity.\nNote: - W3CIISLog can be noisy depending on the environment, however OfficeActivity - and AWSCloudTrail are\nusually stable with low numbers of detections.","tactics":["InitialAccess","CommandAndControl","Execution"],"lastUpdatedDateUTC":"2020-12-11T00:00:00Z","createdDateUTC":"2019-04-01T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]},{"connectorId":"Office365","dataTypes":["OfficeActivity"]},{"connectorId":"AzureMonitor(IIS)","dataTypes":["W3CIISLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/361dd1e3-1c11-491e-82a3-bb2e44ac36ba","name":"361dd1e3-1c11-491e-82a3-bb2e44ac36ba","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - szOperationNames = dynamic([\"Create or Update Virtual Machine\", \"Create - Deployment\"]);\nlet starttime = 7d;\nlet endtime = 1d;\nAzureActivity\n| - where TimeGenerated between (startofday(ago(starttime)) .. startofday(ago(endtime)))\n| - where OperationName in~ (szOperationNames)\n| summarize StartTimeUtc = min(TimeGenerated), - EndTimeUtc = max(TimeGenerated), ActivityTimeStamp = makelist(TimeGenerated), - ActivityStatus = makelist(ActivityStatus), \nOperationIds = makelist(OperationId), - CallerIpAddress = makelist(CallerIpAddress), CorrelationId = makelist(CorrelationId) - \nby ResourceId, Caller, OperationName, Resource, ResourceGroup\n| mvexpand - CallerIpAddress\n| where isnotempty(CallerIpAddress)\n| make-series dResourceCount=dcount(ResourceId) default=0 - on StartTimeUtc in range(startofday(ago(7d)), now(), 1d) \nby Caller, tostring(ActivityTimeStamp), - tostring(ActivityStatus), tostring(OperationIds), tostring(CallerIpAddress), - tostring(CorrelationId), ResourceId, OperationName, Resource, ResourceGroup\n| - extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dResourceCount)\n| - where Slope > 0.2\n| join kind=leftsemi (\n// Last day''s activity is anomalous\nAzureActivity\n| - where TimeGenerated >= startofday(ago(endtime))\n| where OperationName in~ - (szOperationNames)\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc - = max(TimeGenerated), ActivityTimeStamp = makelist(TimeGenerated), ActivityStatus - = makelist(ActivityStatus), \nOperationIds = makelist(OperationId), CallerIpAddress - = makelist(CallerIpAddress), CorrelationId = makelist(CorrelationId) \nby - ResourceId, Caller, OperationName, Resource, ResourceGroup\n| mvexpand CallerIpAddress\n| - where isnotempty(CallerIpAddress)\n| make-series dResourceCount=dcount(ResourceId) default=0 - on StartTimeUtc in range(startofday(ago(1d)), now(), 1d) \nby Caller, tostring(ActivityTimeStamp), - tostring(ActivityStatus), tostring(OperationIds), tostring(CallerIpAddress), - tostring(CorrelationId), ResourceId, OperationName, Resource, ResourceGroup\n| - extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dResourceCount)\n| - where Slope > 0.2 \n) on Caller, CallerIpAddress \n| mvexpand todynamic(ActivityTimeStamp), - todynamic(ActivityStatus), todynamic(OperationIds), todynamic(CorrelationId)\n| - extend timestamp = ActivityTimeStamp, AccountCustomEntity = Caller, IPCustomEntity - = CallerIpAddress","queryFrequency":"P1D","queryPeriod":"P7D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Suspicious - number of resource creation or deployment activities","description":"Indicates - when an anomalous number of VM creations or deployment activities occur in - Azure via the AzureActivity log.\nThe anomaly detection identifies activities - that have occurred both since the start of the day 1 day ago and the start - of the day 7 days ago.\nThe start of the day is considered 12am UTC time.","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-05T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AzureActivity","dataTypes":["AzureActivity"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2be4ef67-a93f-4d8a-981a-88158cb73abd","name":"2be4ef67-a93f-4d8a-981a-88158cb73abd","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"let - dt_lookBack = 1h;\nlet covidIndicators = (externaldata(TimeGenerated:datetime, - FileHashValue:string, FileHashType: string, TlpLevel: string, Product: string, - ThreatType: string, Description: string )\n[@\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.Covid19.Indicators.csv\"] - with (format=\"csv\"));\nlet fileHashIndicators = covidIndicators\n| where - isnotempty(FileHashValue);\n// Handle matches against both lower case and - uppercase versions of the hash:\n( fileHashIndicators | extend FileHashValue - = tolower(FileHashValue)\n | union (fileHashIndicators | extend FileHashValue - = toupper(FileHashValue)))\n| join (\n CommonSecurityLog | where TimeGenerated - >= ago(dt_lookBack) \n | where isnotempty(FileHash)\n | extend CommonSecurityLog_TimeGenerated - = TimeGenerated\n)\non $left.FileHashValue == $right.FileHash\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by FileHashValue\n| project - LatestIndicatorTime, FileHashValue, FileHashType, Description, ThreatType, \nCommonSecurityLog_TimeGenerated, - SourceIP, SourcePort, DestinationIP, DestinationPort, SourceUserID, SourceUserName, - DeviceName, DeviceAction, \nRequestURL, DestinationUserName, DestinationUserID, - ApplicationProtocol, Activity\n| extend timestamp = CommonSecurityLog_TimeGenerated, - IPCustomEntity = SourceIP, HostCustomEntity = DeviceName, AccountCustomEntity - = SourceUserName","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"Microsoft - COVID-19 file hash indicator matches","description":"Identifies a match in - CommonSecurityLog Event data from any FileHash published in the Microsoft - COVID-19 Threat Intel Feed - as described at https://www.microsoft.com/security/blog/2020/05/14/open-sourcing-covid-threat-intelligence/","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-30T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"PaloAltoNetworks","dataTypes":["CommonSecurityLog"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2391ce61-8c8d-41ac-9723-d945b2e90720","name":"2391ce61-8c8d-41ac-9723-d945b2e90720","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Low","query":"let - starttime = 8d;\nlet endtime = 1d;\nlet threshold = 0.333;\nlet countlimit - = 50;\nSecurityEvent\n| where TimeGenerated >= ago(endtime)\n| where EventID - == 4625 and AccountType =~ \"User\"\n| where IpAddress !in (\"127.0.0.1\", - \"::1\")\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), - CountToday = count() by EventID, Account, LogonTypeName, SubStatus, AccountType, - Computer, WorkstationName, IpAddress\n| join kind=leftouter (\n SecurityEvent - \n | where TimeGenerated between (ago(starttime) .. ago(endtime))\n | - where EventID == 4625 and AccountType =~ \"User\"\n | where IpAddress !in - (\"127.0.0.1\", \"::1\")\n | summarize CountPrev7day = count() by EventID, - Account, LogonTypeName, SubStatus, AccountType, Computer, WorkstationName, - IpAddress\n) on EventID, Account, LogonTypeName, SubStatus, AccountType, Computer, - WorkstationName, IpAddress\n| where CountToday >= coalesce(CountPrev7day,0)*threshold - and CountToday >= countlimit\n//SubStatus Codes are detailed here - https://docs.microsoft.com/windows/security/threat-protection/auditing/event-4625\n| - extend Reason = case(\nSubStatus =~ ''0xC000005E'', ''There are currently - no logon servers available to service the logon request.'',\nSubStatus =~ - ''0xC0000064'', ''User logon with misspelled or bad user account'',\nSubStatus - =~ ''0xC000006A'', ''User logon with misspelled or bad password'', \nSubStatus - =~ ''0xC000006D'', ''Bad user name or password'',\nSubStatus =~ ''0xC000006E'', - ''Unknown user name or bad password'',\nSubStatus =~ ''0xC000006F'', ''User - logon outside authorized hours'',\nSubStatus =~ ''0xC0000070'', ''User logon - from unauthorized workstation'',\nSubStatus =~ ''0xC0000071'', ''User logon - with expired password'',\nSubStatus =~ ''0xC0000072'', ''User logon to account - disabled by administrator'',\nSubStatus =~ ''0xC00000DC'', ''Indicates the - Sam Server was in the wrong state to perform the desired operation'', \nSubStatus - =~ ''0xC0000133'', ''Clocks between DC and other computer too far out of sync'',\nSubStatus - =~ ''0xC000015B'', ''The user has not been granted the requested logon type - (aka logon right) at this machine'',\nSubStatus =~ ''0xC000018C'', ''The logon - request failed because the trust relationship between the primary domain and - the trusted domain failed'',\nSubStatus =~ ''0xC0000192'', ''An attempt was - made to logon, but the Netlogon service was not started'',\nSubStatus =~ ''0xC0000193'', - ''User logon with expired account'',\nSubStatus =~ ''0xC0000224'', ''User - is required to change password at next logon'',\nSubStatus =~ ''0xC0000225'', - ''Evidently a bug in Windows and not a risk'',\nSubStatus =~ ''0xC0000234'', - ''User logon with account locked'',\nSubStatus =~ ''0xC00002EE'', ''Failure - Reason: An Error occurred during Logon'',\nSubStatus =~ ''0xC0000413'', ''Logon - Failure: The machine you are logging onto is protected by an authentication - firewall. The specified account is not allowed to authenticate to the machine'',\nstrcat(''Unknown - reason substatus: '', SubStatus))\n| extend WorkstationName = iff(WorkstationName - == \"-\" or isempty(WorkstationName), Computer , WorkstationName) \n| project - StartTime, EndTime, EventID, Account, LogonTypeName, SubStatus, Reason, AccountType, - Computer, WorkstationName, IpAddress, CountToday, CountPrev7day, Avg7Day = - round(CountPrev7day*1.00/7,2)\n| summarize StartTime = min(StartTime), EndTime - = max(EndTime), Computer = make_set(Computer,128), IpAddressList = make_set(IpAddress,128), - sum(CountToday), sum(CountPrev7day), avg(Avg7Day) \nby EventID, Account, LogonTypeName, - SubStatus, Reason, AccountType, WorkstationName\n| order by sum_CountToday - desc nulls last \n| extend timestamp = StartTime, AccountCustomEntity = Account, - HostCustomEntity = WorkstationName","queryFrequency":"P1D","queryPeriod":"P8D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"Host","fieldMappings":[{"identifier":"FullName","columnName":"HostCustomEntity"}]}],"displayName":"Excessive - Windows logon failures","description":"User has over 50 Windows logon failures - today and at least 33% of the count of logon failures over the previous 7 - days.","tactics":["CredentialAccess"],"lastUpdatedDateUTC":"2020-11-19T00:00:00Z","createdDateUTC":"2019-02-22T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"SecurityEvents","dataTypes":["SecurityEvent"]}],"alertRulesCreatedByTemplateCount":0}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/aac495a9-feb1-446d-b08e-a1164a539452","name":"aac495a9-feb1-446d-b08e-a1164a539452","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"severity":"Medium","query":"ThreatIntelligenceIndicator\n| - where TimeGenerated >= ago(24h)\n| where Action == true\n// Picking up only - IOC''s that contain the entities we want\n| where isnotempty(NetworkIP) or - isnotempty(EmailSourceIpAddress) or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\n// - Taking the first non-empty value based on potential IOC match availability\n| - extend TI_ipEntity = iff(isnotempty(NetworkIP), NetworkIP, NetworkDestinationIP)\n| - extend TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(NetworkSourceIP), - NetworkSourceIP, TI_ipEntity)\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) - and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, TI_ipEntity)\n| - join (\n GitHubAudit\n | where TimeGenerated >= ago(24h)\n | extend GitHubAudit_TimeGenerated - = TimeGenerated\n)\non $left.TI_ipEntity == $right.IPaddress\n| summarize - LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\n| project - LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, - Url, ExpirationDateTime, ConfidenceScore, GitHubAudit_TimeGenerated, TI_ipEntity, - IPaddress, Actor, Action, Country, OperationType, NetworkIP, NetworkDestinationIP, - NetworkSourceIP, EmailSourceIpAddress\n| extend timestamp = GitHubAudit_TimeGenerated, - IPCustomEntity = IPaddress, AccountCustomEntity = Actor","queryFrequency":"PT1H","queryPeriod":"P14D","triggerOperator":"GreaterThan","triggerThreshold":0,"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"displayName":"TI - map IP entity to GitHub_CL","description":"Identifies a match in GitHub_CL - table from any IP IOC from TI","tactics":["Impact"],"lastUpdatedDateUTC":"2020-11-17T00:00:00Z","createdDateUTC":"2019-08-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"ThreatIntelligence","dataTypes":["ThreatIntelligenceIndicator"]},{"connectorId":"ThreatIntelligenceTaxii","dataTypes":["ThreatIntelligenceIndicator"]}],"alertRulesCreatedByTemplateCount":0}}]}' - headers: - cache-control: - - no-cache - content-length: - - '693305' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:27 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"etag": "\"0300bf09-0000-0000-0000-5c37296e0000\"", "properties": {"created": - "2019-01-01T13:15:30.000Z", "displayName": "My bookmark", "labels": ["Tag2"], - "notes": "Found a suspicious activity", "query": "SecurityEvent | where TimeGenerated - > ago(1d) and TimeGenerated < ago(2d)", "queryResult": "Security Event query - result", "updated": "2019-01-01T13:15:30.000Z"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel bookmark create - Connection: - - keep-alive - Content-Length: - - '368' - Content-Type: - - application/json - ParameterSetName: - - --etag --created --display-name --labels --labels --notes -q --query-result - --updated --bookmark-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"0500531e-0000-0100-0000-6050749d0000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My - bookmark","created":"2021-03-16T09:04:29.7955741+00:00","updated":"2021-03-16T09:04:29+00:00","createdBy":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu"},"updatedBy":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu"},"eventTime":"2021-03-16T09:04:29.7955741+00:00","notes":"Found a suspicious - activity","labels":["Tag2"],"query":"SecurityEvent | where TimeGenerated > - ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null}}}' - headers: - cache-control: - - no-cache - content-length: - - '1124' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:30 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel bookmark show - Connection: - - keep-alive - ParameterSetName: - - --bookmark-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"0500531e-0000-0100-0000-6050749d0000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My - bookmark","created":"2021-03-16T09:04:29.7955741+00:00","updated":"2021-03-16T09:04:29.7955741+00:00","createdBy":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu"},"updatedBy":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu"},"eventTime":"2021-03-16T09:04:29.7955741+00:00","notes":"Found a suspicious - activity","labels":["Tag2"],"query":"SecurityEvent | where TimeGenerated > - ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null}}}' - headers: - cache-control: - - no-cache - content-length: - - '1132' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:31 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel bookmark list - Connection: - - keep-alive - ParameterSetName: - - --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/bookmarks?api-version=2020-01-01 - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"0500531e-0000-0100-0000-6050749d0000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My - bookmark","created":"2021-03-16T09:04:29.7955741+00:00","updated":"2021-03-16T09:04:29.7955741+00:00","createdBy":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu"},"updatedBy":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu"},"eventTime":"2021-03-16T09:04:29.7955741+00:00","notes":"Found a suspicious - activity","labels":["Tag2"],"query":"SecurityEvent | where TimeGenerated > - ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null}}}]}' - headers: - cache-control: - - no-cache - content-length: - - '1144' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:32 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel bookmark delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -y --bookmark-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2020-01-01 - response: - body: - string: '{}' - headers: - cache-control: - - no-cache - content-length: - - '2' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:34 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - status: - code: 200 - message: OK -- request: - body: '{"etag": "\"0300bf09-0000-0000-0000-5c37296e0000\"", "properties": {"classification": - "FalsePositive", "classificationComment": "Not a malicious activity", "classificationReason": - "IncorrectAlertLogic", "description": "This is a demo incident", "firstActivityTimeUtc": - "2019-01-01T13:00:30.000Z", "lastActivityTimeUtc": "2019-01-01T13:05:30.000Z", - "owner": {"objectId": "2046feea-040d-4a46-9e2b-91c2941bfa70"}, "severity": "High", - "status": "Closed", "title": "title"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel incident create - Connection: - - keep-alive - Content-Length: - - '469' - Content-Type: - - application/json - ParameterSetName: - - --etag --description --classification --classification-comment --classification-reason - --first-activity-time-utc --last-activity-time-utc --owner --severity --status - --title --incident-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"01000d0a-0000-0100-0000-605074a30000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"title","description":"This - is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not - a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2021-03-16T09:04:35.9200598Z","createdTimeUtc":"2021-03-16T09:04:35.9200598Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5"}}' - headers: - cache-control: - - no-cache - content-length: - - '1541' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:35 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel incident show - Connection: - - keep-alive - ParameterSetName: - - --incident-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"01000d0a-0000-0100-0000-605074a30000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"title","description":"This - is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not - a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2021-03-16T09:04:35.9200598Z","createdTimeUtc":"2021-03-16T09:04:35.9200598Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5"}}' - headers: - cache-control: - - no-cache - content-length: - - '1541' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:36 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: '{"properties": {"message": "Some message"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel incident-comment create - Connection: - - keep-alive - Content-Length: - - '43' - Content-Type: - - application/json - ParameterSetName: - - --message --incident-comment-id --incident-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some - message","createdTimeUtc":"2021-03-16T09:04:38.0892344Z","author":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu","userPrincipalName":"yungez@microsoft.com"}}}' - headers: - cache-control: - - no-cache - content-length: - - '696' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:37 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel incident-comment list - Connection: - - keep-alive - ParameterSetName: - - --incident-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments?api-version=2020-01-01 - response: - body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some - message","createdTimeUtc":"2021-03-16T09:04:38.0892344Z","author":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu","userPrincipalName":"yungez@microsoft.com"}}}]}' - headers: - cache-control: - - no-cache - content-length: - - '708' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:39 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel incident-comment show - Connection: - - keep-alive - ParameterSetName: - - --incident-comment-id --incident-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014?api-version=2020-01-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some - message","createdTimeUtc":"2021-03-16T09:04:38.0892344Z","author":{"objectId":"ade81686-dde7-4bb0-9062-8f5250ff95eb","email":"yungez@microsoft.com","name":"Catherine - Zhu","userPrincipalName":"yungez@microsoft.com"}}}' - headers: - cache-control: - - no-cache - content-length: - - '696' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:40 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - sentinel incident delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -y --incident-id --resource-group --workspace-name - User-Agent: - - AZURECLI/2.20.0 azsdk-python-securityinsights/unknown Python/3.8.0 (Windows-10-10.0.19041-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.OperationalInsights/workspaces/clitestws-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2020-01-01 - response: - body: - string: '{}' - headers: - cache-control: - - no-cache - content-length: - - '2' - content-type: - - application/json; charset=utf-8 - date: - - Tue, 16 Mar 2021 09:04:41 GMT - expires: - - '-1' - pragma: - - no-cache - server: - - Kestrel - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - status: - code: 200 - message: OK -version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_alert_rule_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_alert_rule_crud.yaml new file mode 100644 index 00000000000..1ecf5cec462 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_alert_rule_crud.yaml @@ -0,0 +1,12036 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-24T07:43:39Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:43:43 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"9b8321af-5bfa-4eec-b577-4b78a68487e2\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 07:43:51 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 19:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 07:43:51 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 07:43:51 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 07:43:52 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"9b8321af-5bfa-4eec-b577-4b78a68487e2\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 07:43:51 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 19:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 07:43:51 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 07:43:53 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 07:44:22 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"9b8321af-5bfa-4eec-b577-4b78a68487e2\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 07:43:51 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 19:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 07:43:51 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 07:43:53 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 07:44:23 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:32 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"kind": "MicrosoftSecurityIncidentCreation", "properties": {"displayName": + "testing", "enabled": true, "productFilter": "Microsoft Cloud App Security"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule create + Connection: + - keep-alive + Content-Length: + - '153' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --ms-security-incident + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","name":"alert-rule-000003","etag":"\"13002956-0000-0100-0000-62b56b640000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft + Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"testing","enabled":true,"description":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2022-06-24T07:44:36.8128078Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '682' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","name":"alert-rule-000003","etag":"\"13002956-0000-0100-0000-62b56b640000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft + Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"testing","enabled":true,"description":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2022-06-24T07:44:36.8128078Z"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '694' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:38 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule update + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --ms-security-incident + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","name":"alert-rule-000003","etag":"\"13002956-0000-0100-0000-62b56b640000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft + Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"testing","enabled":true,"description":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2022-06-24T07:44:36.8128078Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '682' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:40 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"etag": "\"13002956-0000-0100-0000-62b56b640000\"", "kind": "MicrosoftSecurityIncidentCreation", + "properties": {"displayName": "tested", "enabled": true, "productFilter": "Microsoft + Cloud App Security"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule update + Connection: + - keep-alive + Content-Length: + - '204' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --ms-security-incident + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","name":"alert-rule-000003","etag":"\"13004056-0000-0100-0000-62b56b680000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft + Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"tested","enabled":true,"description":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2022-06-24T07:44:40.7138615Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '681' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:40 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","name":"alert-rule-000003","etag":"\"13004056-0000-0100-0000-62b56b680000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft + Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"tested","enabled":true,"description":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2022-06-24T07:44:40.7138615Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '681' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:41 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n --workspace-name -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:41 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule template list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRuleTemplates?api-version=2022-06-01-preview + response: + body: + string: "{\"value\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f71aba3d-28fb-450b-b192-4e76a83015c8\",\"name\":\"f71aba3d-28fb-450b-b192-4e76a83015c8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Fusion\",\"properties\":{\"severity\":\"High\",\"sourceSettings\":[{\"sourceName\":\"Anomalies\",\"sourceSubTypes\":null},{\"sourceName\":\"Alert + providers\",\"sourceSubTypes\":[{\"sourceSubTypeDisplayName\":\"Azure Active + Directory Identity Protection\",\"sourceSubTypeName\":\"Azure Active Directory + Identity Protection\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Microsoft + 365 Defender\",\"sourceSubTypeName\":\"Microsoft 365 Defender\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Microsoft + Cloud App Security\",\"sourceSubTypeName\":\"Microsoft Cloud App Security\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Microsoft + Defender for Cloud\",\"sourceSubTypeName\":\"Azure Defender\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Microsoft + Defender for Endpoint\",\"sourceSubTypeName\":\"Microsoft Defender for Endpoint\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Microsoft + Defender for Identity\",\"sourceSubTypeName\":\"Microsoft Defender for Identity\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Microsoft + Defender for IoT\",\"sourceSubTypeName\":\"Azure Defender for IoT\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Microsoft + Defender for Office 365\",\"sourceSubTypeName\":\"Microsoft Defender for Office + 365\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Azure + Sentinel scheduled analytics rules\",\"sourceSubTypeName\":\"Azure Sentinel + scheduled analytics rules\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}},{\"sourceSubTypeDisplayName\":\"Azure + Sentinel NRT analytic rules\",\"sourceSubTypeName\":\"Azure Sentinel NRT analytic + rules\",\"severityFilter\":{\"isSupported\":true,\"severityFilters\":[\"Informational\",\"Low\",\"Medium\",\"High\"]}}]}],\"tactics\":[\"Collection\",\"CommandAndControl\",\"CredentialAccess\",\"DefenseEvasion\",\"Discovery\",\"Execution\",\"Exfiltration\",\"Impact\",\"InitialAccess\",\"LateralMovement\",\"Persistence\",\"PrivilegeEscalation\"],\"displayName\":\"Advanced + Multistage Attack Detection\",\"description\":\"Microsoft Sentinel uses Fusion, + a correlation engine based on scalable machine learning algorithms, to automatically + detect multistage attacks by identifying combinations of anomalous behaviors + and suspicious activities that are observed at various stages of the kill + chain. On the basis of these discoveries, Azure Sentinel generates incidents + that would otherwise be very difficult to catch. By design, these incidents + are low-volume, high-fidelity, and high-severity, which is why this detection + is turned ON by default.\\n\\nSince Fusion correlates multiple signals from + various products to detect advanced multistage attacks, successful Fusion + detections are presented as Fusion incidents on the Microsoft Sentinel Incidents + page. This rule covers the following detections:\\n- Fusion for emerging threats\\n- + Fusion for ransomware\\n- Scenario-based Fusion detections (122 scenarios)\\n\\nTo + enable these detections, we recommend you configure the following data connectors + for best results:\\n- Out-of-the-box anomaly detections\\n- Azure Active Directory + Identity Protection\\n- Azure Defender\\n- Azure Defender for IoT\\n- Microsoft + 365 Defender\\n- Microsoft Cloud App Security \\n- Microsoft Defender for + Endpoint\\n- Microsoft Defender for Identity\\n- Microsoft Defender for Office + 365\\n- Scheduled analytics rules, both built-in and those created by your + security analysts. Analytics rules must contain kill-chain (tactics) and entity + mapping information in order to be used by Fusion.\\n\\nFor the full description + of each detection that is supported by Fusion, go to https://aka.ms/SentinelFusion.\",\"lastUpdatedDateUTC\":\"2021-06-09T00:00:00Z\",\"createdDateUTC\":\"2019-07-25T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/57c7e832-64eb-411f-8928-4133f01f4a25\",\"name\":\"57c7e832-64eb-411f-8928-4133f01f4a25\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n| extend + TI_ipEntity = iff(isnotempty(NetworkIP), NetworkIP, NetworkDestinationIP)\\n| + extend TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(NetworkSourceIP), + NetworkSourceIP, TI_ipEntity)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, TI_ipEntity)\\n// + using innerunique to keep perf fast and result set low, we only need one match + to indicate potential malicious activity that needs to be investigated\\n| + join kind=innerunique (\\n AzureDiagnostics\\n | where ResourceType + =~ \\\"VAULTS\\\"\\n | where TimeGenerated >= ago(dt_lookBack)\\n | + extend KeyVaultEvents_TimeGenerated = TimeGenerated, ClientIP = CallerIPAddress\\n)\\non + $left.TI_ipEntity == $right.ClientIP\\n| where KeyVaultEvents_TimeGenerated + < ExpirationDateTime\\n| summarize KeyVaultEvents_TimeGenerated = arg_max(KeyVaultEvents_TimeGenerated, + *) by IndicatorId, ClientIP\\n| project KeyVaultEvents_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, + ClientIP, ResourceId, SubscriptionId, OperationName, ResultType, CorrelationId, + id_s, clientInfo_s, httpStatusCode_d, identity_claim_appid_g, identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\\n| + extend timestamp = KeyVaultEvents_TimeGenerated\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ClientIP\"}]},{\"entityType\":\"AzureResource\",\"fieldMappings\":[{\"identifier\":\"ResourceId\",\"columnName\":\"ResourceId\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to Azure Key Vault logs\",\"description\":\"Identifies a match + in Azure Key Vault logsfrom any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2022-06-09T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureKeyVault\",\"dataTypes\":[\"KeyVaultData\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f948a32f-226c-4116-bddd-d95e91d97eb9\",\"name\":\"f948a32f-226c-4116-bddd-d95e91d97eb9\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + detectionTime = 1d;\\nlet joinLookback = 14d;\\nAuditLogs\\n| where TimeGenerated + > ago(detectionTime)\\n| where LoggedByService =~ \\\"Core Directory\\\"\\n| + where Category =~ \\\"ApplicationManagement\\\"\\n| where OperationName =~ + \\\"Consent to application\\\"\\n| where TargetResources has \\\"mailboxsettings\\\"\\n| + extend AppDisplayName = TargetResources.[0].displayName\\n| extend AppClientId + = tolower(TargetResources.[0].id)\\n| where AppClientId !in ((externaldata(knownAppClientId:string, + knownAppDisplayName:string)[@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.OAuth.KnownApplications.csv\\\"] + with (format=\\\"csv\\\")))\\n| extend ConsentFull = TargetResources[0].modifiedProperties[4].newValue\\n| + parse ConsentFull with * \\\"ConsentType: \\\" GrantConsentType \\\", Scope: + \\\" GrantScope1 \\\"]\\\" *\\n| where ConsentFull contains \\\"contacts.read\\\" + and ConsentFull contains \\\"user.read\\\" and ConsentFull contains \\\"mail.read\\\" + and ConsentFull contains \\\"notes.read.all\\\" and ConsentFull contains \\\"mailboxsettings.readwrite\\\" + and ConsentFull contains \\\"Files.ReadWrite.All\\\"\\n| where GrantConsentType + != \\\"AllPrincipals\\\" // NOTE: we are ignoring if OAuth application was + granted to all users via an admin - but admin due diligence should be audited + occasionally\\n| extend GrantIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\\n| + extend GrantInitiatedBy = iff(isnotempty(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.user.userPrincipalName), tostring(InitiatedBy.app.displayName))\\n| + extend GrantUserAgent = iff(AdditionalDetails[0].key =~ \\\"User-Agent\\\", + tostring(AdditionalDetails[0].value), \\\"\\\")\\n| project TimeGenerated, + GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, GrantIpAddress, + GrantUserAgent, AppClientId, OperationName, ConsentFull, CorrelationId\\n| + join kind = leftouter (AuditLogs\\n| where TimeGenerated > ago(joinLookback)\\n| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where OperationName =~ \\\"Add service principal\\\"\\n| extend AppClientId + = tolower(TargetResources[0].id)\\n| extend AppReplyURLs = iff(TargetResources[0].modifiedProperties[1].newValue + has \\\"AddressType\\\", TargetResources[0].modifiedProperties[1].newValue, + \\\"\\\")\\n| distinct AppClientId, tostring(AppReplyURLs)\\n)\\non AppClientId\\n| + join kind = innerunique (AuditLogs\\n| where TimeGenerated > ago(joinLookback)\\n| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where OperationName =~ \\\"Add OAuth2PermissionGrant\\\" or OperationName + =~ \\\"Add delegated permission grant\\\"\\n| extend GrantAuthentication = + tostring(TargetResources[0].displayName)\\n| extend GrantOperation = OperationName\\n| + project GrantAuthentication, GrantOperation, CorrelationId\\n) on CorrelationId\\n| + project TimeGenerated, GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, + AppReplyURLs, GrantIpAddress, GrantUserAgent, AppClientId, GrantAuthentication, + OperationName, GrantOperation, CorrelationId, ConsentFull\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = GrantInitiatedBy, IPCustomEntity = + GrantIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\",\"DefenseEvasion\"],\"techniques\":[\"T1528\",\"T1550\"],\"displayName\":\"Suspicious + application consent similar to O365 Attack Toolkit\",\"description\":\"This + will alert when a user consents to provide a previously-unknown Azure application + with the same OAuth permissions used by the MDSec O365 Attack Toolkit (https://github.com/mdsecactivebreach/o365-attack-toolkit).\\nThe + default permissions/scope for the MDSec O365 Attack toolkit are contacts.read, + user.read, mail.read, notes.read.all, mailboxsettings.readwrite, and files.readwrite.all.\\nConsent + to applications with these permissions should be rare, especially as the knownApplications + list is expanded, especially as the knownApplications list is expanded. Public + contributions to expand this filter are welcome!\\nFor further information + on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8d19b599-3c58-41ea-8db1-7ed22f80561e\",\"name\":\"8d19b599-3c58-41ea-8db1-7ed22f80561e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.1\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Powershell obfuscation detection by user account\",\"description\":\"This + algorithm detects potential powershell obfuscation on windows security events + by user account within the last day. The model is based on assumption that + number of alphanumeric characters and powershell command line length should + follow linear regression relationship. Any powershell command lines deviate + far from the linear trend will be labeld as anomalies.\",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2022-02-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a3c144f9-8051-47d4-ac29-ffb0c312c910\",\"name\":\"a3c144f9-8051-47d4-ac29-ffb0c312c910\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + SunburstMD5=dynamic([\\\"b91ce2fa41029f6955bff20079468448\\\",\\\"02af7cec58b9a5da1c542b5a32151ba1\\\",\\\"2c4a910a1299cdae2a4e55988a2f102e\\\",\\\"846e27a652a5e1bfbd0ddd38a16dc865\\\",\\\"4f2eb62fa529c0283b28d05ddd311fae\\\"]);\\nlet + SupernovaMD5=\\\"56ceb6d0011d87b6e4d7023d7ef85676\\\";\\nDeviceFileEvents\\n| + where MD5 in(SunburstMD5) or MD5 in(SupernovaMD5)\\n| extend\\n timestamp + = TimeGenerated,\\n AccountCustomEntity = iff(isnotempty(InitiatingProcessAccountUpn), + InitiatingProcessAccountUpn, InitiatingProcessAccountName),\\n HostCustomEntity + = DeviceName,\\n AlgorithmCustomEntity = \\\"MD5\\\",\\n FileHashCustomEntity + = MD5\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"Execution\",\"Persistence\",\"InitialAccess\"],\"techniques\":[\"T1195\"],\"displayName\":\"SUNBURST + and SUPERNOVA backdoor hashes\",\"description\":\"Identifies SolarWinds SUNBURST + and SUPERNOVA backdoor file hash IOCs in DeviceFileEvents\\nReferences:\\n- + https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\\n- + https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f\",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2020-12-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceFileEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/87210ca1-49a4-4a7d-bb4a-4988752f978c\",\"name\":\"87210ca1-49a4-4a7d-bb4a-4988752f978c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Get details of current Azure Ranges (note this URL updates regularly so will + need to be manually updated over time)\\n// You may find the name of the new + JSON here: https://www.microsoft.com/download/details.aspx?id=56519\\n// On + the downloads page, click the 'details' button, and then replace just the + filename in the URL below\\nlet azure_ranges = externaldata(changeNumber: + string, cloud: string, values: dynamic)\\n[\\\"https://download.microsoft.com/download/7/1/D/71D86715-5596-4529-9B13-DA13A5DE5B63/ServiceTags_Public_20220321.json\\\"]\\nwith(format='multijson')\\n| + mv-expand values\\n| mv-expand values.properties.addressPrefixes\\n| mv-expand + values_properties_addressPrefixes\\n| summarize by tostring(values_properties_addressPrefixes);\\nSigninLogs\\n// + Limiting to Azure Portal really reduces false positives and helps focus on + potential admin activity\\n| where AppDisplayName =~ \\\"Azure Portal\\\"\\n// + Only get logons where the IP address is in an Azure range\\n| evaluate ipv4_lookup(azure_ranges, + IPAddress, values_properties_addressPrefixes)\\n// Limit to where the user + is external to the tenant\\n| where HomeTenantId != ResourceTenantId\\n// + Further limit it to just access to the current tenant (you can drop this if + you wanted to look elsewhere as well but it helps reduce FPs)\\n| where ResourceTenantId + == AADTenantId\\n| summarize FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated), + make_set(ResourceDisplayName) by UserPrincipalName, IPAddress, UserAgent, + Location, HomeTenantId, ResourceTenantId\\n| extend AccountCustomEntity = + UserPrincipalName, IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1199\"],\"displayName\":\"Azure + Portal Signin from another Azure Tenant\",\"description\":\"This query looks + for sign in attempts to the Azure Portal where the user who is signing in + from another Azure tenant,\\n and the IP address the login attempt is from + is an Azure IP. A threat actor who compromises an Azure tenant may look\\n + to pivot to other tenants leveraging cross-tenant delegated access in this + manner.\",\"lastUpdatedDateUTC\":\"2022-03-30T00:00:00Z\",\"createdDateUTC\":\"2021-10-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/29a29e5d-354e-4f5e-8321-8b39d25047bf\",\"name\":\"29a29e5d-354e-4f5e-8321-8b39d25047bf\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + files1 = dynamic([\\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\lsa.exe\\\", \\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\pa.exe\\\", + \\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\pc.exe\\\", \\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\Rar.exe\\\"]);\\nlet + files2 = dynamic([\\\"svchost.exe\\\",\\\"wdmsvc.exe\\\"]);\\nlet FileHash1 + = dynamic([\\\"43109fbe8b752f7a9076eaafa417d9ae5c6e827cd5374b866672263fdebd5ec3\\\", + \\\"ab50d8d707b97712178a92bbac74ccc2a5699eb41c17aa77f713ff3e568dcedb\\\", + \\\"010e32be0f86545e116a8bc3381a8428933eb8789f32c261c81fd5e7857d4a77\\\", + \ \\\"56cd102b9fc7f3523dad01d632525ff673259dbc9a091be0feff333c931574f7\\\"]);\\nlet + FileHash2 = dynamic([\\\"2a1044e9e6e87a032f80c6d9ea6ae61bbbb053c0a21b186ecb3b812b49eb03b7\\\", + \\\"9ab7e99ed84f94a7b6409b87e56dc6e1143b05034a5e4455e8c555dbbcd0d2dd\\\", + \\\"18a072ccfab239e140d8f682e2874e8ff19d94311fc8bb9564043d3e0deda54b\\\"]);\\nimFileEvent\\n| + where ((FilePath has_any (files1)) and (ActingProcessSHA256 has_any (FileHash1))) + or ((FilePath has_any (files2)) and (ActingProcessSHA256 has_any (FileHash2)))\\n// + Increase risk score if recent alerts for the host\\n| join kind=leftouter + (SecurityAlert\\n| where ProviderName =~ \\\"MDATP\\\"\\n| extend ThreatName + = tostring(parse_json(ExtendedProperties).ThreatName)\\n| mv-expand todynamic(Entities)\\n| + extend DvcId = tostring(parse_json(Entities).MdatpDeviceId)\\n| where isnotempty(DvcId)\\n// + Higher risk score are for Defender alerts related to threat actor\\n| extend + AlertRiskScore = iif(ThreatName has_any (\\\"Backdoor:MSIL/ShellClient.A\\\", + \\\"Backdoor:MSIL/ShellClient.A!dll\\\", \\\"Trojan:MSIL/Mimikatz.BA!MTB\\\"), + 1.0, 0.5)\\n| project DvcId, AlertRiskScore) on DvcId\\n| extend AlertRiskScore + = iif(isempty(AlertRiskScore), 0.0, AlertRiskScore)\\n| extend timestamp = + TimeGenerated, HostCustomEntity = Dvc, AccountCustomEntity = ActorUsername\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"File\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"FileName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"CredentialAccess\",\"Execution\"],\"techniques\":[\"T1569\"],\"displayName\":\"Dev-0228 + File Path Hashes November 2021 (ASIM Version)\",\"description\":\"This hunting + query looks for file paths/hashes related to observed activity by Dev-0228. + The actor is known to use custom version of popular tool like PsExec, Procdump + etc. to carry its activity.\\n The risk score associated with each result + is based on a number of factors, hosts with higher risk events should be investigated + first.\\n This query uses the Microsoft Sentinel Information Model - https://docs.microsoft.com/azure/sentinel/normalization\",\"lastUpdatedDateUTC\":\"2022-03-02T00:00:00Z\",\"createdDateUTC\":\"2021-11-18T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0dd2a343-4bf9-4c93-a547-adf3658ddaec\",\"name\":\"0dd2a343-4bf9-4c93-a547-adf3658ddaec\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + known_processes = (\\n imProcess\\n // Change these values if adjusting + Query Frequency or Query Period\\n | where TimeGenerated between(ago(14d)..ago(1d))\\n + \ | where Process has_any (\\\"Policies\\\\\\\\{6AC1786C-016F-11D2-945F-00C04fB984F9}\\\", + \\\"Policies\\\\\\\\{31B2F340-016D-11D2-945F-00C04FB984F9}\\\")\\n | summarize + by Process);\\n imProcess\\n // Change these values if adjusting Query Frequency + or Query Period\\n | where TimeGenerated > ago(1d)\\n | where Process has_any + (\\\"Policies\\\\\\\\{6AC1786C-016F-11D2-945F-00C04fB984F9}\\\", \\\"Policies\\\\\\\\{31B2F340-016D-11D2-945F-00C04FB984F9}\\\")\\n + \ | where Process !in (known_processes)\\n | summarize FirstSeen=min(TimeGenerated), + LastSeen=max(TimeGenerated) by Process, CommandLine, DvcHostname\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"DvcHostname\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\",\"LateralMovement\"],\"techniques\":[\"T1072\",\"T1570\"],\"displayName\":\"New + EXE deployed via Default Domain or Default Domain Controller Policies (ASIM + Version)\",\"description\":\"This detection highlights executables deployed + to hosts via either the Default Domain or Default Domain Controller Policies. + These policies apply to all hosts or Domain Controllers and best practice + is that these policies should not be used for deployment of files.\\n A threat + actor may use these policies to deploy files or scripts to all hosts in a + domain.\\n This query uses the ASIM parsers and will need them deployed before + usage - https://docs.microsoft.com/azure/sentinel/normalization\",\"lastUpdatedDateUTC\":\"2022-03-02T00:00:00Z\",\"createdDateUTC\":\"2022-02-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/871ba14c-88ef-48aa-ad38-810f26760ca3\",\"name\":\"871ba14c-88ef-48aa-ad38-810f26760ca3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"OfficeActivity\\n| + where Operation =~ \\\"Set-Mailbox\\\"\\n| where Parameters has \\\"ForwardingSmtpAddress\\\"\\n| + extend parsed = parse_json(Parameters)\\n| mv-expand parsed\\n| where parsed.Name + == \\\"ForwardingSmtpAddress\\\"\\n| extend parameterName = tostring(parsed.Name), + fwdingDestination = tostring(parsed.Value)\\n| where isnotempty(fwdingDestination)\\n| + extend ClientIPOnly = case( \\nClientIP has \\\".\\\" and ClientIP has ':', + tostring(split(ClientIP,\\\":\\\")[0]), \\nClientIP has \\\".\\\" and ClientIP + has '-', tostring(split(ClientIP,\\\"-\\\")[0]), \\nClientIP has ']-', tostring(trim_start(@'[[]',tostring(split(ClientIP,\\\"]\\\")[0]))),\\nClientIP + has ']:', tostring(trim_start(@'[[]',tostring(split(ClientIP,\\\"]\\\")[0]))),\\nisempty(ClientIP) + and ClientIP_ has \\\".\\\" and ClientIP_ has ':', tostring(split(ClientIP_,\\\":\\\")[0]), + \\nisempty(ClientIP) and ClientIP_ has \\\".\\\" and ClientIP_ has '-', tostring(split(ClientIP_,\\\"-\\\")[0]), + \\nisempty(ClientIP) and ClientIP_ has ']-', tostring(trim_start(@'[[]',tostring(split(ClientIP_,\\\"]\\\")[0]))),\\nisempty(ClientIP) + and ClientIP_ has ']:', tostring(trim_start(@'[[]',tostring(split(ClientIP_,\\\"]\\\")[0]))),\\nisnotempty(ClientIP), + ClientIP,\\nisnotempty(ClientIP_), ClientIP_,\\n\\\"IP Not Available\\\"\\n) + \ \\n| extend Port = case(\\nClientIP has \\\".\\\" and ClientIP has ':', + tostring(split(ClientIP,\\\":\\\")[1]), \\nClientIP has \\\".\\\" and ClientIP + has '-', tostring(split(ClientIP,\\\"-\\\")[1]), \\nClientIP has ']-', tostring(split(ClientIP,\\\"]-\\\")[1]), + \\nClientIP has ']:', tostring(split(ClientIP,\\\"]:\\\")[1]), \\nisempty(ClientIP) + and ClientIP_ has \\\".\\\" and ClientIP_ has ':', tostring(split(ClientIP_,\\\":\\\")[1]), + \\nisempty(ClientIP) and ClientIP_ has \\\".\\\" and ClientIP_ has '-', tostring(split(ClientIP_,\\\"-\\\")[1]), + \\nisempty(ClientIP) and ClientIP_ has ']-', tostring(split(ClientIP_,\\\"]-\\\")[1]),\\nisempty(ClientIP) + and ClientIP_ has ']:', tostring(split(ClientIP_,\\\"]:\\\")[1]),\\nisnotempty(ClientIP), + ClientIP,\\nisnotempty(ClientIP_), ClientIP_,\\n\\\"IP Not Available\\\"\\n)\\n| + extend UserId = iff(isempty(UserId), UserId_, UserId)\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), DistinctUserCount = + dcount(UserId), UserId = make_set(UserId), \\nPorts = make_set(Port), EventCount + = count() by fwdingDestination, ClientIP = ClientIPOnly \\n| where DistinctUserCount + > 1\\n| mv-expand UserId\\n| extend UserId = tostring(UserId), Ports = tostring(Ports)\\n| + distinct StartTimeUtc, EndTimeUtc, UserId, DistinctUserCount, ClientIP, Ports, + fwdingDestination, EventCount\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = UserId, IPCustomEntity = ClientIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Collection\",\"Exfiltration\"],\"techniques\":[\"T1114\",\"T1020\"],\"displayName\":\"Multiple + users email forwarded to same destination\",\"description\":\"Identifies when + multiple (more than one) users mailboxes are configured to forward to the + same destination. \\nThis could be an attacker-controlled destination mailbox + configured to collect mail from multiple compromised user accounts.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-08-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a6c435a2-b1a0-466d-b730-9f8af69262e8\",\"name\":\"a6c435a2-b1a0-466d-b730-9f8af69262e8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT20M\",\"queryPeriod\":\"PT20M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + failureCountThreshold = 10;\\nlet successCountThreshold = 1;\\n// let authenticationWindow + = 20m; // Implicit in the analytic rule query period \\nimAuthentication\\n| + summarize \\n StartTime = min(TimeGenerated), \\n EndTime = max(TimeGenerated), + \\n IpAddresses = make_set (SrcDvcIpAddr, 100),\\n ReportedBy = + make_set (strcat (EventVendor, \\\"/\\\", EventProduct), 100),\\n FailureCount + = countif(EventResult=='Failure'),\\n SuccessCount = countif(EventResult=='Success')\\n + \ by \\n TargetUserId, TargetUsername, TargetUserType \\n| where FailureCount + >= failureCountThreshold and SuccessCount >= successCountThreshold\\n| extend\\n + \ IpAddresses = strcat_array(IpAddresses, \\\", \\\"), \\n ReportedBy + = strcat_array(ReportedBy, \\\", \\\")\",\"customDetails\":{\"IpAddresses\":\"IpAddresses\",\"ReportedBy\":\"ReportedBy\"},\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"TargetUsername\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Brute + force attack against user credentials (Uses Authentication Normalization)\",\"description\":\"Identifies + evidence of brute force activity against a user based on multiple authentication + failures \\nand at least one successful authentication within a given time + window. Note that the query does not enforce any sequence,\\nand does not + require the successful authentication to occur last.\\nThe default failure + threshold is 10, success threshold is 1, and the default time window is 20 + minutes.\\nTo use this analytics rule, make sure you have deployed the [ASIM + normalization parsers](https://aka.ms/ASimAuthentication)\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2021-06-14T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bb8a3481-dd14-4e76-8dcc-bbec8776d695\",\"name\":\"bb8a3481-dd14-4e76-8dcc-bbec8776d695\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + DomainNames = dynamic(['onetechcompany.com', 'reyweb.com', 'srfnetwork.org', + 'sense4baby.fr', 'nikeoutletinc.org', 'megatoolkit.com']);\\nlet IPList = + dynamic(['185.225.69.69']);\\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\n(union + isfuzzy=true\\n(CommonSecurityLog\\n| where SourceIP in (IPList) or DestinationIP + in (IPList) or DestinationHostName in~ (DomainNames) or RequestURL has_any + (DomainNames) or Message has_any (IPList)\\n| parse Message with * '(' DNSName + ')' * \\n| extend MessageIP = extract(IPRegex, 0, Message)\\n| extend IPMatch + = case(SourceIP in (IPList), \\\"SourceIP\\\", DestinationIP in (IPList), + \\\"DestinationIP\\\", MessageIP in (IPList), \\\"Message\\\", RequestURL + in (DomainNames), \\\"RequestUrl\\\", \\\"NoMatch\\\") \\n| extend timestamp + = TimeGenerated, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIP, + IPMatch == \\\"DestinationIP\\\", DestinationIP, IPMatch == \\\"Message\\\", + MessageIP, \\\"NoMatch\\\"), AccountCustomEntity = SourceUserID\\n),\\n(_Im_Dns + (domain_has_any=DomainNames)\\n| extend DestinationIPAddress = DnsResponseName, + DNSName = DnsQuery, Host = Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity + = DestinationIPAddress, HostCustomEntity = Host\\n),\\n(_Im_Dns (response_has_any_prefix=IPList)\\n| + extend DestinationIPAddress = DnsResponseName, DNSName = DnsQuery, Host = + Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity = DestinationIPAddress, + HostCustomEntity = Host\\n),\\n(_Im_WebSession(url_has_any=DomainNames)\\n| + extend DestinationIPAddress = DstIpAddr, DNSName = tostring(parse_url(Url)[\\\"Host\\\"]), + Host = Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity = DestinationIPAddress, + HostCustomEntity = Host\\n),\\n(VMConnection\\n| where SourceIp in (IPList) + or DestinationIp in (IPList) or RemoteDnsCanonicalNames has_any (DomainNames)\\n| + parse RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' *\\n| extend + IPMatch = case( SourceIp in (IPList), \\\"SourceIP\\\", DestinationIp in (IPList), + \\\"DestinationIP\\\", \\\"None\\\") \\n| extend timestamp = TimeGenerated, + IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIp, IPMatch == \\\"DestinationIP\\\", + DestinationIp, \\\"NoMatch\\\"), HostCustomEntity = Computer\\n),\\n(OfficeActivity\\n| + where ClientIP in (IPList)\\n| extend timestamp = TimeGenerated, IPCustomEntity + = ClientIP, AccountCustomEntity = UserId\\n),\\n(DeviceNetworkEvents\\n| where + RemoteUrl has_any (DomainNames) or RemoteIP in (IPList)\\n| extend timestamp + = TimeGenerated, DNSName = RemoteUrl, IPCustomEntity = RemoteIP, HostCustomEntity + = DeviceName\\n),\\n(AzureDiagnostics \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| + where Category == \\\"AzureFirewallApplicationRule\\\"\\n| parse msg_s with + Protocol 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' + DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (DomainNames) \\n| extend timestamp = TimeGenerated, + DNSName = DestinationHost, IPCustomEntity = SourceHost\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"DNS\",\"fieldMappings\":[{\"identifier\":\"DomainName\",\"columnName\":\"DNSName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1102\"],\"displayName\":\"NOBELIUM + - Domain and IP IOCs - March 2021\",\"description\":\"Identifies a match across + various data feeds for domains and IP IOCs related to NOBELIUM.\\n References: + https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2021-03-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f7f4a77e-f68f-4b56-9aaf-a0c9d87d7a8e\",\"name\":\"f7f4a77e-f68f-4b56-9aaf-a0c9d87d7a8e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"// + Replace these with the username or emails of your VIP users you wish to monitor + for.\\nlet vips = dynamic(['vip1@email.com','vip2@email.com']);\\n// Add users + who are allowed to conduct these searches - this could be specific SOC team + members\\nlet allowed_users = dynamic([]);\\nLAQueryLogs\\n| where QueryText + has_any (vips) or QueryText has_any ('_GetWatchlist(\\\"VIPUsers\\\")', \\\"_GetWatchlist('VIPUsers')\\\")\\n| + where AADEmail !in (allowed_users)\\n| project TimeGenerated, AADEmail, RequestClientApp, + QueryText, ResponseRowCount, RequestTarget\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = AADEmail\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"AzureResource\",\"fieldMappings\":[{\"identifier\":\"ResourceId\",\"columnName\":\"RequestTarget\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Collection\",\"Exfiltration\"],\"techniques\":[\"T1530\",\"T1213\",\"T1020\"],\"displayName\":\"Users + searching for VIP user activity\",\"description\":\"This query monitors for + users running Log Analytics queries that contain filters\\nfor specific, defined + VIP user accounts or the VIPUser watchlist template.\\nUse this detection + to alert for users specifically searching for activity of sensitive users.\",\"lastUpdatedDateUTC\":\"2021-11-11T00:00:00Z\",\"createdDateUTC\":\"2020-09-16T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/62085097-d113-459f-9ea7-30216f2ee6af\",\"name\":\"62085097-d113-459f-9ea7-30216f2ee6af\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P3D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + starttime = 3d;\\nlet SecEvents = materialize ( SecurityEvent | where TimeGenerated + >= ago(starttime)\\n| where EventID in (4722,4723) | where TargetUserName + !endswith \\\"$\\\"\\n| project TimeGenerated, EventID, Activity, Computer, + TargetAccount, TargetSid, SubjectAccount, SubjectUserSid);\\nlet userEnable + = SecEvents\\n| extend EventID4722Time = TimeGenerated\\n// 4722: User Account + Enabled\\n| where EventID == 4722\\n| project Time_Event4722 = TimeGenerated, + TargetAccount, TargetSid, SubjectAccount_Event4722 = SubjectAccount, SubjectUserSid_Event4722 + = SubjectUserSid, Activity_4722 = Activity, Computer_4722 = Computer;\\nlet + userPwdSet = SecEvents\\n// 4723: Attempt made by user to set password\\n| + where EventID == 4723\\n| project Time_Event4723 = TimeGenerated, TargetAccount, + TargetSid, SubjectAccount_Event4723 = SubjectAccount, SubjectUserSid_Event4723 + = SubjectUserSid, Activity_4723 = Activity, Computer_4723 = Computer;\\nuserEnable + | join kind=leftouter userPwdSet on TargetAccount, TargetSid\\n| extend PasswordSetAttemptDelta_Min + = datetime_diff('minute', Time_Event4723, Time_Event4722)\\n| where PasswordSetAttemptDelta_Min + > 2880 or isempty(PasswordSetAttemptDelta_Min)\\n| project-away TargetAccount1, + TargetSid1\\n| extend Reason = @\\\"User either has not yet attempted to set + the initial password after account was enabled or it occurred after 48 hours\\\"\\n| + order by Time_Event4722 asc \\n| extend timestamp = Time_Event4722, AccountCustomEntity + = TargetAccount, HostCustomEntity = Computer_4722\\n| project-reorder Time_Event4722, + Time_Event4723, PasswordSetAttemptDelta_Min, TargetAccount, TargetSid\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"},{\"identifier\":\"Sid\",\"columnName\":\"TargetSid\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"AD + user enabled and password not set within 48 hours\",\"description\":\"Identifies + when an account is enabled with a default password and the password is not + set by the user within 48 hours.\\nEffectively, there is an event 4722 indicating + an account was enabled and within 48 hours, no event 4723 occurs which \\nindicates + there was no attempt by the user to set the password. This will show any attempts + (success or fail) that occur \\nafter 48 hours, which can indicate too long + of a time period in setting the password to something that only the user knows.\\nIt + is recommended that this time period is adjusted per your internal company + policy.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-01-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f9949656-473f-4503-bf43-a9d9890f7d08\",\"name\":\"f9949656-473f-4503-bf43-a9d9890f7d08\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n//Exclude local addresses, using the + ipv4_is_private operator\\n| where ipv4_is_private(TI_ipEntity) == false and + \ TI_ipEntity !startswith \\\"fe80\\\" and TI_ipEntity !startswith \\\"::\\\" + and TI_ipEntity !startswith \\\"127.\\\"\\n// using innerunique to keep perf + fast and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n AppServiceHTTPLogs + | where TimeGenerated >= ago(dt_lookBack)\\n | where isnotempty(CIp)\\n | + extend WebApp = split(_ResourceId, '/')[8]\\n // renaming time column so + it is clear the log this came from\\n | extend AppService_TimeGenerated = + TimeGenerated\\n)\\non $left.TI_ipEntity == $right.CIp\\n| where AppService_TimeGenerated + < ExpirationDateTime\\n| summarize AppService_TimeGenerated = arg_max(AppService_TimeGenerated, + *) by IndicatorId, CIp\\n| project AppService_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, + TI_ipEntity, CsUsername, \\nWebApp = split(_ResourceId, '/')[8], CIp, CsHost, + NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress, _ResourceId\\n| + extend timestamp = AppService_TimeGenerated, AccountCustomEntity = CsUsername, + IPCustomEntity = CIp, URLCustomEntity = Url, HostCustomEntity = CsHost\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]},{\"entityType\":\"AzureResource\",\"fieldMappings\":[{\"identifier\":\"ResourceId\",\"columnName\":\"_ResourceId\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.3\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to AppServiceHTTPLogs\",\"description\":\"Identifies a match + in AppServiceHTTPLogs from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2022-04-26T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f8b3c49c-4087-499b-920f-0dcfaff0cbca\",\"name\":\"f8b3c49c-4087-499b-920f-0dcfaff0cbca\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"imProcessCreate\\n + \ | where CommandLine contains \\\"TVqQAAMAAAAEAAA\\\"\\n | where isnotempty(Process)\\n + \ | summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + count() by Dvc, ActorUsername, Process, CommandLine, ActingProcessName, EventVendor, + EventProduct\\n | extend timestamp = StartTimeUtc, AccountCustomEntity = + ActorUsername, HostCustomEntity = Dvc\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Execution\",\"DefenseEvasion\"],\"techniques\":[\"T1059\",\"T1027\",\"T1140\"],\"displayName\":\"Base64 + encoded Windows process command-lines (Normalized Process Events)\",\"description\":\"Identifies + instances of a base64 encoded PE file header seen in the process command line + parameter.\\nTo use this analytics rule, make sure you have deployed the [ASIM + normalization parsers](https://aka.ms/ASimProcessEvent)\",\"lastUpdatedDateUTC\":\"2022-02-14T00:00:00Z\",\"createdDateUTC\":\"2018-09-13T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c3e5dbaa-a540-408c-8b36-68bdfb3df088\",\"name\":\"c3e5dbaa-a540-408c-8b36-68bdfb3df088\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n + | where EventID==4688\\n | where isnotempty(CommandLine)\\n | where CommandLine + contains \\\"TVqQAAMAAAAEAAA\\\"\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Account\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Execution\",\"DefenseEvasion\"],\"techniques\":[\"T1059\",\"T1027\",\"T1140\"],\"displayName\":\"NRT + Base64 encoded Windows process command-lines\",\"description\":\"Identifies + instances of a base64 encoded PE file header seen in the process command line + parameter.\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2022-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8a602940-4153-4045-a741-3bf15591ae29\",\"name\":\"8a602940-4153-4045-a741-3bf15591ae29\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.2.8\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.4\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"(Preview) + Attempted computer bruteforce\",\"description\":\"This algorithm detects an + unusually high volume of failed login attempts to each computer. The model + is trained on the previous 21 days of security event ID 4625 on a computer. + It indicates anomalous high volume of failed login attempts in the last day.\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2020-12-08T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/79566f41-df67-4e10-a703-c38a6213afd8\",\"name\":\"79566f41-df67-4e10-a703-c38a6213afd8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"AuditLogs\\n| + where OperationName has_any (\\\"Add service principal\\\", \\\"Certificates + and secrets management\\\") // captures \\\"Add service principal\\\", \\\"Add + service principal credentials\\\", and \\\"Update application - Certificates + and secrets management\\\" events\\n| where Result =~ \\\"success\\\"\\n| + mv-expand target = TargetResources\\n| where tostring(InitiatedBy.user.userPrincipalName) + has \\\"@\\\" or tostring(InitiatedBy.app.displayName) has \\\"@\\\"\\n| extend + targetDisplayName = tostring(TargetResources[0].displayName)\\n| extend targetId + = tostring(TargetResources[0].id)\\n| extend targetType = tostring(TargetResources[0].type)\\n| + extend keyEvents = TargetResources[0].modifiedProperties\\n| mv-expand keyEvents\\n| + where keyEvents.displayName =~ \\\"KeyDescription\\\"\\n| extend new_value_set + = parse_json(tostring(keyEvents.newValue))\\n| extend old_value_set = parse_json(tostring(keyEvents.oldValue))\\n| + where old_value_set != \\\"[]\\\"\\n| extend diff = set_difference(new_value_set, + old_value_set)\\n| where isnotempty(diff)\\n| parse diff with * \\\"KeyIdentifier=\\\" + keyIdentifier:string \\\",KeyType=\\\" keyType:string \\\",KeyUsage=\\\" keyUsage:string + \\\",DisplayName=\\\" keyDisplayName:string \\\"]\\\" *\\n| where keyUsage + == \\\"Verify\\\" or keyUsage == \\\"\\\"\\n| extend UserAgent = iff(AdditionalDetails[0].key + == \\\"User-Agent\\\",tostring(AdditionalDetails[0].value),\\\"\\\")\\n| extend + InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.app.displayName))\\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\\n// + The below line is currently commented out but Microsoft Sentinel users can + modify this query to show only Application or only Service Principal events + in their environment\\n//| where targetType =~ \\\"Application\\\" // or targetType + =~ \\\"ServicePrincipal\\\"\\n| project-away diff, new_value_set, old_value_set\\n| + project-reorder TimeGenerated, OperationName, InitiatingUserOrApp, InitiatingIpAddress, + UserAgent, targetDisplayName, targetId, targetType, keyDisplayName, keyType, + keyUsage, keyIdentifier, CorrelationId, TenantId\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = InitiatingUserOrApp, IPCustomEntity = InitiatingIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1550\"],\"displayName\":\"New + access credential added to Application or Service Principal\",\"description\":\"This + will alert when an admin or app owner account adds a new credential to an + Application or Service Principal where a verify KeyCredential was already + present for the app.\\nIf a threat actor obtains access to an account with + sufficient privileges and adds the alternate authentication material triggering + this event, the threat actor can now authenticate as the Application or Service + Principal using this credential.\\nAdditional information on OAuth Credential + Grants can be found in RFC 6749 Section 4.4 or https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow\\nFor + further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2020-11-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/66276b14-32c5-4226-88e3-080dacc31ce1\",\"name\":\"66276b14-32c5-4226-88e3-080dacc31ce1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 1d;\\nlet AccountAllowList = dynamic(['SYSTEM']);\\nlet SubCategoryList + = dynamic([\\\"Logoff\\\", \\\"Account Lockout\\\", \\\"User Account Management\\\", + \\\"Authorization Policy Change\\\"]); // Add any Category in the list to + be allowed or disallowed\\nlet tokens = dynamic([\\\"clear\\\", \\\"remove\\\", + \\\"success:disable\\\",\\\"failure:disable\\\"]); \\n(union isfuzzy=true\\n(\\nSecurityEvent\\n| + where TimeGenerated >= ago(timeframe)\\n//| where Process =~ \\\"auditpol.exe\\\" + \\n| where CommandLine has_any (tokens)\\n| where AccountType !~ \\\"Machine\\\" + and Account !in~ (AccountAllowList)\\n| parse CommandLine with * \\\"/subcategory:\\\" + subcategorytoken\\n| extend SubCategory = tostring(split(subcategorytoken, + \\\"\\\\\\\"\\\")[1]) , Toggle = tostring(split(subcategorytoken, \\\"\\\\\\\"\\\")[2])\\n| + where SubCategory in~ (SubCategoryList) //use in~ for inclusion or !in~ for + exclusion\\n| where Toggle !in~ (\\\"/failure:disable\\\", \\\" /success:enable + /failure:disable\\\") // use this filter if required to exclude certain toggles\\n| + project TimeGenerated, Computer, Account, SubjectDomainName, SubjectUserName, + Process, ParentProcessName, CommandLine, SubCategory, Toggle\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity = Computer\\n),\\n(\\nDeviceProcessEvents\\n| + where TimeGenerated >= ago(timeframe)\\n// | where InitiatingProcessFileName + =~ \\\"auditpol.exe\\\" \\n| where InitiatingProcessCommandLine has_any (tokens)\\n| + where AccountName !in~ (AccountAllowList)\\n| parse InitiatingProcessCommandLine + with * \\\"/subcategory:\\\" subcategorytoken\\n| extend SubCategory = tostring(split(subcategorytoken, + \\\"\\\\\\\"\\\")[1]) , Toggle = tostring(split(subcategorytoken, \\\"\\\\\\\"\\\")[2])\\n| + where SubCategory in~ (SubCategoryList) //use in~ for inclusion or !in~ for + exclusion\\n| where Toggle !in~ (\\\"/failure:disable\\\", \\\" /success:enable + /failure:disable\\\") // use this filter if required to exclude certain toggles\\n| + project TimeGenerated, DeviceName, AccountName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessFileName, InitiatingProcessParentFileName, + \ InitiatingProcessCommandLine, SubCategory, Toggle\\n| extend timestamp = + TimeGenerated, AccountCustomEntity = AccountName, HostCustomEntity = DeviceName\\n),\\n(\\nEvent\\n| + where TimeGenerated > ago(timeframe)\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 1\\n| extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key=tostring(['@Name']), Value=['#text']\\n| evaluate pivot(Key, any(Value), + TimeGenerated, Source, EventLog, Computer, EventLevel, EventLevelName, EventID, + UserName, RenderedDescription, MG, ManagementGroupName, Type, _ResourceId)\\n// + | where OriginalFileName =~ \\\"auditpol.exe\\\"\\n| where CommandLine has_any + (tokens)\\n| where User !in~ (AccountAllowList)\\n| parse CommandLine with + * \\\"/subcategory:\\\" subcategorytoken\\n| extend SubCategory = tostring(split(subcategorytoken, + \\\"\\\\\\\"\\\")[1]) , Toggle = tostring(split(subcategorytoken, \\\"\\\\\\\"\\\")[2])\\n| + where SubCategory in~ (SubCategoryList) //use in~ for inclusion or !in~ for + exclusion\\n| where Toggle !in~ (\\\"/failure:disable\\\", \\\" /success:enable + /failure:disable\\\") // use this filter if required to exclude certain toggles\\n| + project TimeGenerated, Computer, User, Process, ParentImage, CommandLine, + SubCategory, Toggle\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = User, HostCustomEntity = Computer\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1204\"],\"displayName\":\"Audit + policy manipulation using auditpol utility\",\"description\":\"This detects + attempt to manipulate audit policies using auditpol command.\\nThis technique + was seen in relation to Solorigate attack but the results can indicate potential + \ malicious activity used in different attacks.\\nThe process name in each + data source is commented out as an adversary could rename it. It is advisable + to keep process name commented but \\nif the results show unrelated false + positives, users may want to uncomment it.\\nRefer to auditpol syntax: https://docs.microsoft.com/windows-server/administration/windows-commands/auditpol + \ \\nRefer to our M365 blog for details on use during the Solorigate attack:\\nhttps://www.microsoft.com/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop-and-raindrop/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/18e6a87e-9d06-4a4e-8b59-3469cd49552d\",\"name\":\"18e6a87e-9d06-4a4e-8b59-3469cd49552d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"(union + isfuzzy=true \\n(SecurityEvent \\n| where EventID == 4662 // You need to create + a SACL on the ADFS Policy Store DKM group for this event to be created. \\n| + where ObjectServer == 'DS'\\n| where OperationType == 'Object Access'\\n//| + where ObjectName contains '= ago(endtime)\\n| where EventID + == 4625 and AccountType =~ \\\"User\\\"\\n| where IpAddress !in (\\\"127.0.0.1\\\", + \\\"::1\\\")\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), + CountToday = count() by EventID, Account, LogonTypeName, SubStatus, AccountType, + Computer, WorkstationName, IpAddress, Process\\n| join kind=leftouter (\\n + \ SecurityEvent \\n | where TimeGenerated between (ago(starttime) .. + ago(endtime))\\n | where EventID == 4625 and AccountType =~ \\\"User\\\"\\n + \ | where IpAddress !in (\\\"127.0.0.1\\\", \\\"::1\\\")\\n | summarize + CountPrev7day = count() by EventID, Account, LogonTypeName, SubStatus, AccountType, + Computer, WorkstationName, IpAddress\\n) on EventID, Account, LogonTypeName, + SubStatus, AccountType, Computer, WorkstationName, IpAddress\\n| where CountToday + >= coalesce(CountPrev7day,0)*threshold and CountToday >= countlimit\\n//SubStatus + Codes are detailed here - https://docs.microsoft.com/windows/security/threat-protection/auditing/event-4625\\n| + extend Reason = case(\\nSubStatus =~ '0xC000005E', 'There are currently no + logon servers available to service the logon request.',\\nSubStatus =~ '0xC0000064', + 'User logon with misspelled or bad user account',\\nSubStatus =~ '0xC000006A', + 'User logon with misspelled or bad password', \\nSubStatus =~ '0xC000006D', + 'Bad user name or password',\\nSubStatus =~ '0xC000006E', 'Unknown user name + or bad password',\\nSubStatus =~ '0xC000006F', 'User logon outside authorized + hours',\\nSubStatus =~ '0xC0000070', 'User logon from unauthorized workstation',\\nSubStatus + =~ '0xC0000071', 'User logon with expired password',\\nSubStatus =~ '0xC0000072', + 'User logon to account disabled by administrator',\\nSubStatus =~ '0xC00000DC', + 'Indicates the Sam Server was in the wrong state to perform the desired operation', + \ \\nSubStatus =~ '0xC0000133', 'Clocks between DC and other computer too + far out of sync',\\nSubStatus =~ '0xC000015B', 'The user has not been granted + the requested logon type (aka logon right) at this machine',\\nSubStatus =~ + '0xC000018C', 'The logon request failed because the trust relationship between + the primary domain and the trusted domain failed',\\nSubStatus =~ '0xC0000192', + 'An attempt was made to logon, but the Netlogon service was not started',\\nSubStatus + =~ '0xC0000193', 'User logon with expired account',\\nSubStatus =~ '0xC0000224', + 'User is required to change password at next logon',\\nSubStatus =~ '0xC0000225', + 'Evidently a bug in Windows and not a risk',\\nSubStatus =~ '0xC0000234', + 'User logon with account locked',\\nSubStatus =~ '0xC00002EE', 'Failure Reason: + An Error occurred during Logon',\\nSubStatus =~ '0xC0000413', 'Logon Failure: + The machine you are logging onto is protected by an authentication firewall. + The specified account is not allowed to authenticate to the machine',\\nstrcat('Unknown + reason substatus: ', SubStatus))\\n| extend WorkstationName = iff(WorkstationName + == \\\"-\\\" or isempty(WorkstationName), Computer , WorkstationName) \\n| + project StartTime, EndTime, EventID, Account, LogonTypeName, SubStatus, Reason, + AccountType, Computer, WorkstationName, IpAddress, CountToday, CountPrev7day, + Avg7Day = round(CountPrev7day*1.00/7,2), Process\\n| summarize StartTime = + min(StartTime), EndTime = max(EndTime), Computer = make_set(Computer,128), + IpAddressList = make_set(IpAddress,128), sum(CountToday), sum(CountPrev7day), + avg(Avg7Day) \\nby EventID, Account, LogonTypeName, SubStatus, Reason, AccountType, + WorkstationName, Process\\n| order by sum_CountToday desc nulls last \\n| + extend timestamp = StartTime, AccountCustomEntity = Account, HostCustomEntity + = WorkstationName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"Process\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"2.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Excessive + Windows logon failures\",\"description\":\"User has over 50 Windows logon + failures today and at least 33% of the count of logon failures over the previous + 7 days.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/56f3f35c-3aca-4437-a1fb-b7a84dc4af00\",\"name\":\"56f3f35c-3aca-4437-a1fb-b7a84dc4af00\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n + \ | where EventID == 4657\\n | parse ObjectName with \\\"\\\\\\\\REGISTRY\\\\\\\\\\\" + KeyPrefix \\\"\\\\\\\\\\\" RegistryKey\\n | project-reorder RegistryKey\\n + \ | where RegistryKey has \\\"Software\\\\\\\\Classes\\\\\\\\ms-settings\\\\\\\\shell\\\\\\\\open\\\\\\\\command\\\"\\n + \ | extend TimeKey = bin(TimeGenerated, 1h)\\n | join (\\n SecurityEvent\\n + \ | where EventID == 4688\\n | where Process =~ \\\"fodhelper.exe\\\"\\n + \ | where ParentProcessName endswith \\\"cmd.exe\\\" or ParentProcessName + endswith \\\"powershell.exe\\\" or ParentProcessName endswith \\\"powershell_ise.exe\\\"\\n + \ | extend TimeKey = bin(TimeGenerated, 1h)) on TimeKey, Computer\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Account\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1548\"],\"displayName\":\"Potential + Fodhelper UAC Bypass\",\"description\":\"This detection looks for the steps + required to conduct a UAC bypass using Fodhelper.exe. By default this detection + looks for the setting of the required registry keys and the invoking of the + process within 1 hour - this can be tweaked as required.\",\"lastUpdatedDateUTC\":\"2022-02-25T00:00:00Z\",\"createdDateUTC\":\"2022-02-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4b93c5af-d20b-4236-b696-a28b8c51407f\",\"name\":\"4b93c5af-d20b-4236-b696-a28b8c51407f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1DT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 1d;\\nlet spanoftime = 10m;\\nlet threshold = 0;\\n (union isfuzzy=true\\n + (SecurityEvent\\n| where TimeGenerated > ago(timeframe+spanoftime)\\n// A + user account was created\\n| where EventID == 4720\\n| where AccountType =~ + \\\"User\\\"\\n| project creationTime = TimeGenerated, CreateEventID = EventID, + CreateActivity = Activity, Computer, TargetUserName, UserPrincipalName, \\nAccountUsedToCreate + = SubjectAccount, SIDofAccountUsedToCreate = SubjectUserSid, TargetAccount + = tolower(TargetAccount), TargetSid\\n),\\n(\\nWindowsEvent\\n| where TimeGenerated + > ago(timeframe+spanoftime)\\n// A user account was created\\n| where EventID + == 4720\\n| extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| + extend AccountType=case(EventData.SubjectUserName endswith \\\"$\\\" or SubjectUserSid + in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", + isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| where AccountType =~ + \\\"User\\\"\\n| extend SubjectAccount = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| extend TargetSid = tostring(EventData.TargetSid)\\n| + extend UserPrincipalName = tostring(EventData.UserPrincipalName)\\n| extend + Activity = \\\"4720 - A user account was created.\\\"\\n| extend TargetUserName + = tostring(EventData.TargetUserName) \\n| project creationTime = TimeGenerated, + CreateEventID = EventID, CreateActivity = Activity, Computer, TargetUserName, + UserPrincipalName, \\nAccountUsedToCreate = SubjectAccount, SIDofAccountUsedToCreate + = SubjectUserSid, TargetAccount = tolower(TargetAccount), TargetSid \\n))\\n| + join kind= inner (\\n (union isfuzzy=true\\n (SecurityEvent\\n | where + TimeGenerated > ago(timeframe)\\n // A user account was deleted\\n | where + EventID == 4726\\n| where AccountType == \\\"User\\\"\\n| project deletionTime + = TimeGenerated, DeleteEventID = EventID, DeleteActivity = Activity, Computer, + TargetUserName, UserPrincipalName, \\nAccountUsedToDelete = SubjectAccount, + SIDofAccountUsedToDelete = SubjectUserSid, TargetAccount = tolower(TargetAccount), + TargetSid\\n),\\n(WindowsEvent\\n| where TimeGenerated > ago(timeframe)\\n + \ // A user account was deleted\\n| where EventID == 4726\\n| extend SubjectUserSid + = tostring(EventData.SubjectUserSid)\\n| extend SubjectAccount = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend AccountType=case(SubjectAccount + endswith \\\"$\\\" or SubjectUserSid in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", + \\\"S-1-5-20\\\"), \\\"Machine\\\", isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| + where AccountType == \\\"User\\\"\\n| extend TargetSid = tostring(EventData.TargetSid)\\n| + extend UserPrincipalName = tostring(EventData.UserPrincipalName)\\n| extend + Activity = \\\"4726 - A user account was deleted.\\\"\\n| extend TargetUserName + = tostring(EventData.TargetUserName) \\n| extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| project deletionTime = TimeGenerated, DeleteEventID + = EventID, DeleteActivity = Activity, Computer, TargetUserName, UserPrincipalName, + AccountUsedToDelete = SubjectAccount, SIDofAccountUsedToDelete = SubjectUserSid, + TargetAccount = tolower(TargetAccount), TargetSid))\\n) on Computer, TargetAccount\\n| + where deletionTime - creationTime < spanoftime\\n| extend TimeDelta = deletionTime + - creationTime\\n| where tolong(TimeDelta) >= threshold\\n| project TimeDelta, + creationTime, CreateEventID, CreateActivity, Computer, TargetAccount, TargetSid, + UserPrincipalName, AccountUsedToCreate, SIDofAccountUsedToCreate,\\ndeletionTime, + DeleteEventID, DeleteActivity, AccountUsedToDelete, SIDofAccountUsedToDelete\\n| + extend timestamp = creationTime, AccountCustomEntity = AccountUsedToCreate, + HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"},{\"identifier\":\"Sid\",\"columnName\":\"SIDofAccountUsedToCreate\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"User + account created and deleted within 10 mins\",\"description\":\"Identifies + when a user account is created and then deleted within 10 minutes. This can + be an indication of compromise and\\nan adversary attempting to hide in the + noise.\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1399664f-9434-497c-9cde-42e4d74ae20e\",\"name\":\"1399664f-9434-497c-9cde-42e4d74ae20e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityAlert + \\n| where AlertName == \\\"Impossible travel activity\\\"\\n| extend Extprop + = parsejson(Entities)\\n| mv-expand Extprop\\n| extend Extprop = parsejson(Extprop)\\n| + extend CmdLine = iff(Extprop['Type']==\\\"process\\\", Extprop['CommandLine'], + '')\\n| extend File = iff(Extprop['Type']==\\\"file\\\", Extprop['Name'], + '')\\n| extend Account = Extprop['Name']\\n| extend Domain = Extprop['UPNSuffix']\\n| + extend Account = iif(isnotempty(Domain) and Extprop['Type']==\\\"account\\\", + tolower(strcat(Account, \\\"@\\\", Domain)), iif(Extprop['Type']==\\\"account\\\", + tolower(Account), \\\"\\\"))\\n| extend IpAddress = iff(Extprop[\\\"Type\\\"] + == \\\"ip\\\",Extprop['Address'], '')\\n| extend Process = iff(isnotempty(CmdLine), + CmdLine, File)\\n| project TimeGenerated,Account,IpAddress,CompromisedEntity,Description,ProviderName,ResourceId\\n| + join kind=inner\\n(\\nOfficeActivity\\n| where Operation =~ \\\"Add-MailboxPermission\\\"\\n| + extend value = tostring(parse_json(Parameters)[3].Value)\\n| where value contains + \\\"FullAccess\\\"\\n| where ResultStatus == \\\"True\\\"\\n| project Parameters,TimeGenerated,value,RecordType,Operation,OrganizationId,UserType,UserKey,OfficeWorkload,ResultStatus,OfficeObjectId,UserId,ClientIP,ExternalAccess,OriginatingServer,OrganizationName,TenantId,ElevationTime,SourceSystem,OfficeId,OfficeTenantId,Type,SourceRecordId\\n) + on $left.Account == $right.UserId\\n| join kind=inner\\n(\\nAuditLogs\\n| + where ActivityDisplayName =~ \\\"Add eligible member to role in PIM requested + (timebound)\\\"\\n| where AADOperationType =~ \\\"CreateRequestEligibleRole\\\"\\n| + where TargetResources has_any (\\\"-PRIV\\\", \\\"Administrator\\\", \\\"Security\\\")\\n| + extend BuiltinRole = tostring(parse_json(TargetResources[0].displayName))\\n| + extend CustomGroup = tostring(parse_json(TargetResources[3].displayName))\\n| + extend TargetAccount = tostring(parse_json(TargetResources[2].displayName))\\n| + extend Initiatedby = Identity\\n| project TimeGenerated, ActivityDisplayName, + AADOperationType, Initiatedby, TargetAccount, BuiltinRole, CustomGroup, LoggedByService, + Result, ResourceId, Id\\n| sort by TimeGenerated desc\\n) on $left.UserId + == $right.Initiatedby\\n| project AADOperationType, ActivityDisplayName,AccountCustomEntity=Initiatedby, + Id,ResourceId,IPCustomEntity=IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"PrivilegeEscalation\"],\"techniques\":[\"T1078\",\"T1548\"],\"displayName\":\"Detecting + Impossible travel with mailbox permission tampering & Privilege Escalation + attempt\",\"description\":\"This hunting query will alert on any Impossible + travel activity in correlation with mailbox permission tampering followed + by account being added to a PIM managed privileged group.\\nEnsure this impossible + travel incident with increase of privileges is legitimate in your environment.\",\"lastUpdatedDateUTC\":\"2022-02-09T00:00:00Z\",\"createdDateUTC\":\"2022-02-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureSecurityCenter\",\"dataTypes\":[\"SecurityAlert + (ASC)\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4f19d4e3-ec5f-4abc-9e61-819eb131758c\",\"name\":\"4f19d4e3-ec5f-4abc-9e61-819eb131758c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + EventNameList = dynamic([ \\\"AuthorizeSecurityGroupEgress\\\", \\\"AuthorizeSecurityGroupIngress\\\", + \\\"RevokeSecurityGroupEgress\\\", \\\"RevokeSecurityGroupIngress\\\"]);\\nAWSCloudTrail\\n| + where EventName in~ (EventNameList)\\n| extend User = iif(isnotempty(UserIdentityUserName), + UserIdentityUserName, SessionIssuerUserName)\\n| summarize EventCount=count(), + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) \\nby EventSource, + EventName, UserIdentityType, User, SourceIpAddress, UserAgent, SessionMfaAuthenticated, + AWSRegion, \\nAdditionalEventData, UserIdentityAccountId, UserIdentityPrincipalid, + ResponseElements\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = User , IPCustomEntity = SourceIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Changes + to AWS Security Group ingress and egress settings\",\"description\":\"A Security + Group acts as a virtual firewall of an instance to control inbound and outbound + traffic. \\n Hence, ingress and egress settings changes to AWS Security Group + should be monitored as these can expose the enviornment to new attack vectors.\\nMore + information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0914adab-90b5-47a3-a79f-7cdcac843aa7\",\"name\":\"0914adab-90b5-47a3-a79f-7cdcac843aa7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + starttime = 14d;\\nlet timeframe = 1d;\\nlet scorethreshold = 3;\\nlet baselinethreshold + = 5;\\n// To avoid any False Positives, filtering using AppId is recommended. + For example the AppId 509e4652-da8d-478d-a730-e9d4a1996ca4 has been added + in the query as it corresponds \\n// to Azure Resource Graph performing VaultGet + operations for indexing and syncing all tracked resources across Azure.\\nlet + Allowedappid = dynamic([\\\"509e4652-da8d-478d-a730-e9d4a1996ca4\\\"]);\\nlet + OperationList = dynamic(\\n[\\\"SecretGet\\\", \\\"KeyGet\\\", \\\"VaultGet\\\"]);\\nlet + TimeSeriesData = AzureDiagnostics\\n| where TimeGenerated between (startofday(ago(starttime))..startofday(now()))\\n| + where not((identity_claim_appid_g in (Allowedappid)) and OperationName == + 'VaultGet')\\n| extend ResultType = columnifexists(\\\"ResultType\\\", \\\"None\\\"), + CallerIPAddress = columnifexists(\\\"CallerIPAddress\\\", \\\"None\\\")\\n| + where ResultType !~ \\\"None\\\" and isnotempty(ResultType)\\n| where CallerIPAddress + !~ \\\"None\\\" and isnotempty(CallerIPAddress)\\n| where ResourceType =~ + \\\"VAULTS\\\" and ResultType =~ \\\"Success\\\"\\n| where OperationName in + (OperationList)\\n| project TimeGenerated, OperationName, Resource, CallerIPAddress\\n| + make-series HourlyCount=count() on TimeGenerated from startofday(ago(starttime)) + to startofday(now()) step timeframe by Resource;\\n//Filter anomolies against + TimeSeriesData\\nlet TimeSeriesAlerts = TimeSeriesData\\n| extend (anomalies, + score, baseline) = series_decompose_anomalies(HourlyCount, scorethreshold, + -1, 'linefit')\\n| mv-expand HourlyCount to typeof(double), TimeGenerated + to typeof(datetime), anomalies to typeof(double),score to typeof(double), + baseline to typeof(long)\\n| where anomalies > 0 | extend AnomalyHour = TimeGenerated\\n| + where baseline > baselinethreshold // Filtering low count events per baselinethreshold\\n| + project Resource, AnomalyHour, TimeGenerated, HourlyCount, baseline, anomalies, + score;\\nlet AnomalyHours = TimeSeriesAlerts | where TimeGenerated > ago(2d) + | project TimeGenerated;\\n// Filter the alerts since specified timeframe\\nTimeSeriesAlerts\\n| + where TimeGenerated > ago(2d)\\n// Join against base logs since specified + timeframe to retrive records associated with the hour of anomoly\\n| join + (\\nAzureDiagnostics\\n| where TimeGenerated > ago(timeframe)\\n| where not((identity_claim_appid_g + in (Allowedappid)) and OperationName == 'VaultGet')\\n| extend DateHour = + bin(TimeGenerated, 1h) // create a new column and round to hour\\n| where + DateHour in ((AnomalyHours)) //filter the dataset to only selected anomaly + hours\\n| extend ResultType = columnifexists(\\\"ResultType\\\", \\\"NoResultType\\\")\\n| + extend requestUri_s = columnifexists(\\\"requestUri_s\\\", \\\"None\\\"), + identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + = columnifexists(\\\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\\\", + \\\"None\\\")\\n| extend id_s = columnifexists(\\\"id_s\\\", \\\"None\\\"), + CallerIPAddress = columnifexists(\\\"CallerIPAddress\\\", \\\"None\\\"), clientInfo_s + = columnifexists(\\\"clientInfo_s\\\", \\\"None\\\")\\n| where ResultType + !~ \\\"None\\\" and isnotempty(ResultType)\\n| where identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + !~ \\\"None\\\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\\n| + where id_s !~ \\\"None\\\" and isnotempty(id_s)\\n| where CallerIPAddress + !~ \\\"None\\\" and isnotempty(CallerIPAddress)\\n| where clientInfo_s !~ + \\\"None\\\" and isnotempty(clientInfo_s)\\n| where requestUri_s !~ \\\"None\\\" + and isnotempty(requestUri_s)\\n| where ResourceType =~ \\\"VAULTS\\\" and + ResultType =~ \\\"Success\\\"\\n| where OperationName in (OperationList)\\n| + summarize PerOperationCount=count(), LatestAnomalyTime = arg_max(TimeGenerated,*) + by bin(TimeGenerated,1h), Resource, OperationName, id_s, CallerIPAddress, + identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, + requestUri_s, clientInfo_s\\n) on Resource, TimeGenerated\\n| summarize EventCount=count(), + OperationNameList = make_set(OperationName), RequestURLList = make_set(requestUri_s, + 100), AccountList = make_set(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, + 100), AccountMax = arg_max(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g,*) + by Resource, id_s, clientInfo_s, LatestAnomalyTime\\n| extend timestamp = + LatestAnomalyTime, IPCustomEntity = CallerIPAddress, AccountCustomEntity = + AccountMax\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1003\"],\"displayName\":\"Azure + Key Vault access TimeSeries anomaly\",\"description\":\"Indentifies a sudden + increase in count of Azure Key Vault secret or vault access operations by + CallerIPAddress. The query leverages a built-in KQL anomaly detection algorithm\\nto + find large deviations from baseline Azure Key Vault access patterns. Any sudden + increase in the count of Azure Key Vault accesses can be an\\nindication of + adversary dumping credentials via automated methods. If you are seeing any + noise, try filtering known source(IP/Account) and user-agent combinations.\\nTimeSeries + Reference Blog: https://techcommunity.microsoft.com/t5/azure-sentinel/looking-for-unknown-anomalies-what-is-normal-time-series/ba-p/555052\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2019-07-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureKeyVault\",\"dataTypes\":[\"KeyVaultData\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6a2e2ff4-5568-475e-bef2-b95f12b9367b\",\"name\":\"6a2e2ff4-5568-475e-bef2-b95f12b9367b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + FailureThreshold = 15;\\nimAuthentication\\n| where EventType== 'Logon' and + \ EventResult== 'Failure'\\n// reason: creds \\n| where EventResultDetails + in ('No such user or password', 'Incorrect password')\\n| summarize UserCount=dcount(TargetUserId), + Vendors=make_set(EventVendor), Products=make_set(EventVendor)\\n , Users + = make_set(TargetUserId,100) \\n by SrcDvcIpAddr, SrcGeoCountry, bin(TimeGenerated, + 5m)\\n| where UserCount > FailureThreshold\\n| extend timestamp = TimeGenerated, + IPCustomEntity = SrcDvcIpAddr\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Potential + Password Spray Attack (Uses Authentication Normalization)\",\"description\":\"This + query searches for failed attempts to log in from more than 15 various users + within a 5 minute timeframe from the same source. This is a potential indication + of a password spray attack\\n To use this analytics rule, make sure you have + deployed the [ASIM normalization parsers](https://aka.ms/ASimAuthentication)\",\"lastUpdatedDateUTC\":\"2022-02-14T00:00:00Z\",\"createdDateUTC\":\"2021-06-14T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a5b3429d-f1da-42b9-883c-327ecb7b91ff\",\"name\":\"a5b3429d-f1da-42b9-883c-327ecb7b91ff\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityAlert + \\n| where AlertName == \\\"Sign-in from an infected device\\\"\\n| extend + Extprop = parsejson(Entities)\\n| mv-expand Extprop\\n| extend Extprop = parsejson(Extprop)\\n| + extend CmdLine = iff(Extprop['Type']==\\\"process\\\", Extprop['CommandLine'], + '')\\n| extend File = iff(Extprop['Type']==\\\"file\\\", Extprop['Name'], + '')\\n| extend Account = Extprop['Name']\\n| extend Domain = Extprop['UPNSuffix']\\n| + extend Account = iif(isnotempty(Domain) and Extprop['Type']==\\\"account\\\", + tolower(strcat(Account, \\\"@\\\", Domain)), iif(Extprop['Type']==\\\"account\\\", + tolower(Account), \\\"\\\"))\\n| extend IpAddress = iff(Extprop[\\\"Type\\\"] + == \\\"ip\\\",Extprop['Address'], '')\\n| extend Process = iff(isnotempty(CmdLine), + CmdLine, File)\\n| summarize count() by AlertName, AlertSeverity, CompromisedEntity, + Account, IpAddress\\n| join kind=inner \\n(\\nAzureActivity\\n| where OperationNameValue + hassuffix (\\\"/workspaces/computes/delete\\\")\\n| where ActivityStatusValue + =~ \\\"Succeeded\\\"\\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc + = max(TimeGenerated), ActivityTimeStamp = makelist(TimeGenerated), ActivityStatusValue + = makelist(ActivityStatusValue), OperationIds = makelist(OperationId), CorrelationIds + = makelist(CorrelationId), Resources = makelist(Resource), ResourceGroups + = makelist(ResourceGroup), ResourceIds = makelist(ResourceId), ActivityCountByCallerIPAddress + = count() \\nby CallerIpAddress, Caller, OperationNameValue\\n) on $left. + IpAddress == $right. CallerIpAddress\\n| extend timestamp = StartTimeUtc, + AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"Impact\"],\"techniques\":[\"T1078\",\"T1489\"],\"displayName\":\"Workspace + deletion attempt from an infected device\",\"description\":\"This hunting + query will alert on any sign-ins from devices infected with malware in correlation + with potential workspace deletion activity. \\nAttackers may attempt to delete + \ workspaces containing compute instances after successful compromise to + cause service unavailability to regular business operation.\",\"lastUpdatedDateUTC\":\"2022-04-11T00:00:00Z\",\"createdDateUTC\":\"2022-04-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectoryIdentityProtection\",\"dataTypes\":[\"SecurityAlert + (IPC)\"]},{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8e267e91-6bda-4b3c-bf68-9f5cbdd103a3\",\"name\":\"8e267e91-6bda-4b3c-bf68-9f5cbdd103a3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"ZoomLogs + \\n| where Event =~ \\\"account.settings_updated\\\" \\n| extend EnforceLogin + = columnifexists(\\\"payload_object_settings_schedule_meeting_enfore_login_b\\\", + \\\"\\\") \\n| extend EnforceLoginDomain = columnifexists(\\\"payload_object_settings_schedule_meeting_enfore_login_b\\\", + \\\"\\\") \\n| extend GuestAlerts = columnifexists(\\\"payload_object_settings_in_meeting_alert_guest_join_b\\\", + \\\"\\\") \\n| where EnforceLogin == 'false' or EnforceLoginDomain == 'false' + or GuestAlerts == 'false' \\n| extend SettingChanged = case(EnforceLogin == + 'false' and EnforceLoginDomain == 'false' and GuestAlerts == 'false', \\\"All + settings changed\\\", \\n EnforceLogin == 'false' + and EnforceLoginDomain == 'false', \\\"Enforced Logons and Restricted Domains + Changed\\\", \\n EnforceLoginDomain == 'false' + and GuestAlerts == 'false', \\\"Enforced Domains Changed\\\", \\n EnforceLoginDomain + == 'false', \\\"Enfored Domains Changed\\\", \\n GuestAlerts + == 'false', \\\"Guest Join Alerts Changed\\\", \\n EnforceLogin + == 'false', \\\"Enforced Logins Changed\\\", \\n \\\"No + Changes\\\")\\n| extend timestamp = TimeGenerated, AccountCustomEntity = User\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\",\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"External + User Access Enabled\",\"description\":\"This alerts when the account setting + is changed to allow either external domain access or anonymous access to meetings.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-04-24T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2bb167bf-3951-435b-a932-8b03bfde0a2b\",\"name\":\"2bb167bf-3951-435b-a932-8b03bfde0a2b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.5\",\"customizableObservations\":{\"multiSelectObservations\":[{\"supportedValues\":[\"accept\",\"allow\",\"start\"],\"values\":[\"accept\",\"allow\",\"start\"],\"supportedValuesKql\":null,\"valuesKql\":null,\"name\":\"Device + action\",\"description\":\"Include only these specific device actions\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":\"53,67,80,8080,123,137,138,443,445,3389\",\"dataType\":\"string\",\"name\":\"Exclude + ports\",\"description\":\"Provide a comma separated list to exclude specific + ports from source data. This should be within double quotes, example: \\\"53, + 67, 80, 8080, 123, 137, 138, 443, 445, 3389\\\"\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"1\",\"maximum\":\"60000000\",\"value\":\"600\",\"name\":\"Destination + IP count\",\"description\":\"The minimum distinct destination IP count per + hour required for inclusion. Default is 600. This is an OR condition with + destination port count.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"},{\"minimum\":\"1\",\"maximum\":\"60000000\",\"value\":\"600\",\"name\":\"Destination + port count\",\"description\":\"The minimum distinct destination port count + per hour required for inclusion. Default is 600. This is an OR condition with + destination IP count.\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"},{\"minimum\":\"0.00\",\"maximum\":\"1.00\",\"value\":\"1.00\",\"name\":\"IP + ratio\",\"description\":\"The distinct source IP (always 1) to distinct destination + IP count with a default minimum ratio of 1.00 or lower (converted to Base + 10 to the -4 power of original value). This is an OR condition with port ratio.\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"},{\"minimum\":\"0.00\",\"maximum\":\"1.00\",\"value\":\"1.00\",\"name\":\"Port + ratio\",\"description\":\"The distinct source port to distinct destination + port count with a default minimum ratio of 1.00 or lower (converted to Base + 10 to the -4 power of original value). This is an OR condition with IP Ratio.\",\"sequenceNumber\":3,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1046\"],\"displayName\":\"(Preview) + Anomalous scanning activity\",\"description\":\"The Scanning Activity anomaly + is looking to determine if there is potential port scanning anomaly in an + environment coming from a single source IP to one or more destination IPs. + \ \\nThe algorithm takes into account whether the IP is public, meaning external, + or private, meaning internal, and the event is marked accordingly. Only private + to public or public \\nto private is considered at this time. Scanning activity + can indicate an attacker attempting to determine available services in an + environment that can be potentially \\nexploited and used for ingress or lateral + movement.\\nA high number of source ports and high number of destination ports + from a single source IP to either a single or multiple destination IP or IPs + can be interesting and indicate \\nanomalous scanning. Additionally, if there + is a high ratio of destination IPs to the single source IP this can indicate + anomalous scanning.\\nConfiguration details -\\nJob run default is daily, + with hourly bins\\nThe algorithm uses the following defaults to limit the + results based on hourly bins, each is configurable\\n-> Included device actions + - accept, allow, start\\n-> Excluded ports - 53, 67, 80, 8080, 123, 137, 138, + 443, 445, 3389\\n-> Distinct destination port count >= 600\\n-> Distinct source + port count >= 600\\n-> Distinct source port count divided by distinct destination + port, ratio converted to percent >= 99.99\\n-> Source IP (always 1) divided + by destination IP, ratio converted to percent >= 99.99\",\"lastUpdatedDateUTC\":\"2022-05-13T00:00:00Z\",\"createdDateUTC\":\"2021-04-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog + (Zscaler)\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog + (CheckPoint)\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog + (Fortinet)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/56b0a0cd-894e-4b38-a0a1-c41d9f96649a\",\"name\":\"56b0a0cd-894e-4b38-a0a1-c41d9f96649a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + lbtime = 1h;\\nlet tls_ciphers = dynamic(['RC4-SHA', 'DES-CBC3-SHA']);\\nProofpointPOD\\n| + where EventType == 'message'\\n| where TlsCipher in (tls_ciphers)\\n| extend + IpCustomEntity = SrcIpAddr\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"displayName\":\"ProofpointPOD + - Weak ciphers\",\"description\":\"Detects when weak TLS ciphers are used.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/87890d78-3e05-43ec-9ab9-ba32f4e01250\",\"name\":\"87890d78-3e05-43ec-9ab9-ba32f4e01250\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\n//Create a list of TLDs in our + threat feed for later validation\\nlet list_tlds = ThreatIntelligenceIndicator\\n| + where TimeGenerated > ago(ioc_lookBack)\\n| where isnotempty(DomainName)\\n| + extend parts = split(DomainName, '.')\\n| extend tld = parts[(array_length(parts)-1)]\\n| + summarize count() by tostring(tld)\\n| summarize make_list(tld);\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(DomainName)\\n// using innerunique to keep perf + fast and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n SecurityAlert\\n + \ | where TimeGenerated > ago(dt_lookBack)\\n | extend MSTI = case(AlertName + has \\\"TI map\\\" and VendorName == \\\"Microsoft\\\" and ProductName == + 'Azure Sentinel', true, false)\\n | where MSTI == false\\n //Extract + domain patterns from message\\n | extend domain = todynamic(dynamic_to_json(extract_all(@\\\"(((xn--)?[a-z0-9\\\\-]+\\\\.)+([a-z]+|(xn--[a-z0-9]+)))\\\", + dynamic([1]), tolower(Entities))))\\n | mv-expand domain\\n | extend + domain = tostring(domain[0])\\n | extend parts = split(domain, '.')\\n + \ //Split out the TLD\\n | extend tld = parts[(array_length(parts)-1)]\\n + \ //Validate parsed domain by checking if the TLD is in the list of TLDs + in our threat feed\\n | where tld in~ (list_tlds)\\n // Converting Entities + into dynamic data type and use mv-expand to unpack the array\\n | extend + EntitiesDynamicArray = parse_json(Entities)\\n | mv-apply EntitiesDynamicArray + on\\n (summarize\\n HostName = take_anyif(tostring(EntitiesDynamicArray.HostName), + EntitiesDynamicArray.Type == \\\"host\\\"),\\n IP_addr = take_anyif(tostring(EntitiesDynamicArray.Address), + EntitiesDynamicArray.Type == \\\"ip\\\")\\n )\\n | extend Alert_TimeGenerated + = TimeGenerated\\n | extend Alert_Description = Description\\n) on $left.DomainName==$right.domain\\n| + where Alert_TimeGenerated < ExpirationDateTime\\n| summarize Alert_TimeGenerated + = arg_max(Alert_TimeGenerated, *) by IndicatorId, AlertName\\n| project Alert_TimeGenerated, + Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, + ConfidenceScore, DomainName, AlertName, Alert_Description, ProviderName, AlertSeverity, + ConfidenceLevel, HostName, IP_addr, Url, Entities\\n| extend timestamp = Alert_TimeGenerated, + HostCustomEntity = HostName, IPCustomEntity = IP_addr, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.3\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Domain entity to SecurityAlert\",\"description\":\"Identifies a match + in SecurityAlert table from any Domain IOC from TI\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2019-08-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"MicrosoftCloudAppSecurity\",\"dataTypes\":[\"SecurityAlert\"]},{\"connectorId\":\"AzureSecurityCenter\",\"dataTypes\":[\"SecurityAlert\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/88f453ff-7b9e-45bb-8c12-4058ca5e44ee\",\"name\":\"88f453ff-7b9e-45bb-8c12-4058ca5e44ee\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"AzureActivity\\n| + where CategoryValue == 'Administrative'\\n| where ResourceProviderValue =~ + 'Microsoft.ADHybridHealthService'\\n| where _ResourceId contains 'AdFederationService'\\n| + where OperationNameValue =~ 'Microsoft.ADHybridHealthService/services/servicemembers/action'\\n| + extend claimsJson = parse_json(Claims)\\n| extend AppId = tostring(claimsJson.appid)\\n| + extend AccountName = tostring(claimsJson.name)\\n| project-away claimsJson\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = Caller, IPCustomEntity + = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"Azure + Active Directory Hybrid Health AD FS New Server\",\"description\":\"This detection + uses AzureActivity logs (Administrative category) to identify the creation + or update of a server instance in an Azure AD Hybrid health AD FS service.\\nA + threat actor can create a new AD Health ADFS service and create a fake server + instance to spoof AD FS signing logs. There is no need to compromise an on-prem + AD FS server.\\nThis can be done programmatically via HTTP requests to Azure. + More information in this blog: https://o365blog.com/post/hybridhealthagent/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-08-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e1ce0eab-10d1-4aae-863f-9a383345ba88\",\"name\":\"e1ce0eab-10d1-4aae-863f-9a383345ba88\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + threshold = 15;\\nSyslog\\n| where SyslogMessage contains \\\"Failed password + for invalid user\\\"\\n| where ProcessName =~ \\\"sshd\\\" \\n| parse kind=relaxed + SyslogMessage with * \\\"invalid user\\\" user \\\" from \\\" ip \\\" port\\\" + port \\\" ssh2\\\"\\n| project user, ip, port, SyslogMessage, EventTime\\n| + summarize EventTimes = make_list(EventTime), PerHourCount = count() by ip, + bin(EventTime, 4h), user\\n| where PerHourCount > threshold\\n| mvexpand EventTimes\\n| + extend EventTimes = tostring(EventTimes) \\n| summarize StartTimeUtc = min(EventTimes), + EndTimeUtc = max(EventTimes), UserList = makeset(user), sum(PerHourCount) + by IPAddress = ip\\n| extend UserList = tostring(UserList) \\n| extend timestamp + = StartTimeUtc, IPCustomEntity = IPAddress, AccountCustomEntity = UserList\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"SSH + - Potential Brute Force\",\"description\":\"Identifies an IP address that + had 15 failed attempts to sign in via SSH in a 4 hour block during a 24 hour + time period.\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2019-02-20T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a7b9df32-1367-402d-b385-882daf6e3020\",\"name\":\"a7b9df32-1367-402d-b385-882daf6e3020\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"Event\\n| + where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID==10\\n| + parse EventData with * 'TargetImage\\\">' TargetImage \\\"<\\\" * 'GrantedAccess\\\">' + GrantedAccess \\\"<\\\" * 'CallTrace\\\">' CallTrace \\\"<\\\" * \\n| where + GrantedAccess == \\\"0x1FFFFF\\\" and TargetImage == \\\"C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\lsass.exe\\\" + and CallTrace has_any (\\\"dbghelp.dll\\\",\\\"dbgcore.dll\\\")\\n| parse + EventData with * 'SourceProcessGUID\\\">' SourceProcessGUID \\\"<\\\" * 'SourceImage\\\">' + SourceImage \\\"<\\\" *\\n| summarize StartTime = min(TimeGenerated), EndTime + = max(TimeGenerated) by EventID, Computer, SourceProcessGUID, SourceImage, + GrantedAccess, TargetImage, CallTrace\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"SourceImage\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1003\"],\"displayName\":\"Dumping + LSASS Process Into a File\",\"description\":\"Adversaries may attempt to access + credential material stored in the process memory of the Local Security Authority + Subsystem Service (LSASS). \\nAfter a user logs on, the system generates and + stores a variety of credential materials in LSASS process memory. \\nThese + credential materials can be harvested by an administrative user or SYSTEM + and used to conduct Lateral Movement using Use Alternate Authentication Material. + \\nAs well as in-memory techniques, the LSASS process memory can be dumped + from the target host and analyzed on a local system.\\nRef: https://attack.mitre.org/techniques/T1003/001/\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2022-03-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/94749332-1ad9-49dd-a5ab-5ff2170788fc\",\"name\":\"94749332-1ad9-49dd-a5ab-5ff2170788fc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/SOURGUM.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet domains = (iocs | + where Type =~ \\\"domainname\\\"| project IoC);\\nlet sha256Hashes = (iocs + | where Type =~ \\\"sha256\\\" | project IoC);\\nlet file_path1 = (iocs | + where Type =~ \\\"filepath1\\\" | project IoC);\\nlet file_path2 = (iocs | + where Type =~ \\\"filepath2\\\" | project IoC);\\nlet file_path3 = (iocs | + where Type =~ \\\"filepath3\\\" | project IoC);\\nlet reg_key = (iocs | where + Type =~ \\\"regkey\\\" | project IoC);\\n(union isfuzzy=true\\n(CommonSecurityLog\\n| + where DestinationHostName has_any (domains) or RequestURL has_any (domains) + or Message has_any (domains)\\n| parse Message with * '(' DNSName ')' *\\n| + project TimeGenerated, Message, SourceUserID, RequestURL, DestinationHostName, + Type, SourceIP, DestinationIP, DNSName\\n| extend Alert = 'SOURGUM IOC detected'\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = SourceUserID, UrlCustomEntity + = RequestURL , IPCustomEntity = DestinationIP, DNSCustomEntity = DNSName\\n),\\n(DnsEvents\\n| + where Name in~ (domains)\\n| project TimeGenerated, Computer, IPAddresses, + Name, ClientIP, Type\\n| extend DNSName = Name, Host = Computer , Alert = + 'SOURGUM IOC detected'\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Host, DNSCustomEntity = DNSName, IPCustomEntity = IPAddresses\\n),\\n(VMConnection\\n| + where RemoteDnsCanonicalNames has_any (domains)\\n| parse RemoteDnsCanonicalNames + with * '[\\\"' DNSName '\\\"]' *\\n| project TimeGenerated, Computer, Direction, + RemoteDnsCanonicalNames, ProcessName, SourceIp, DestinationIp, DestinationPort, + DNSName,BytesSent, BytesReceived, RemoteCountry, Type\\n| extend timestamp + = TimeGenerated, IPCustomEntity = DestinationIp, HostCustomEntity = Computer, + ProcessCustomEntity = ProcessName, DNSCustomEntity = DNSName, Alert = 'SOURGUM + IOC detected'\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 3\\n| extend EvData = parse_xml(EventData)\\n| extend EventDetail + = EvData.DataItem.EventData.Data\\n| extend SourceIP = tostring(EventDetail.[9].[\\\"#text\\\"]), + DestinationIP = tostring(EventDetail.[14].[\\\"#text\\\"]), Image = EventDetail.[4].[\\\"#text\\\"]\\n| + where Image has_any (file_path1) or Image has_any (file_path3)\\n| project + TimeGenerated, SourceIP, DestinationIP, Image, UserName, Computer, EventDetail, + Type\\n| extend timestamp = TimeGenerated, AccountCustomEntity = UserName, + ProcessCustomEntity = tostring(split(Image, '\\\\\\\\', -1)[-1]), HostCustomEntity + = Computer , IPCustomEntity = DestinationIP, Alert = 'SOURGUM IOC detected'\\n), + \ \\n(DeviceNetworkEvents\\n| where (RemoteUrl has_any (domains)) or (InitiatingProcessSHA256 + in (sha256Hashes) and InitiatingProcessFolderPath has_any (file_path1)) or + InitiatingProcessFolderPath has_any (file_path3)\\n| project TimeGenerated, + ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, RemoteIP, RemoteUrl, + LocalIP, Type\\n| extend timestamp = TimeGenerated, IPCustomEntity = RemoteIP, + HostCustomEntity = DeviceName, Alert = 'SOURGUM IOC detected', UrlCustomEntity + =RemoteUrl\\n),\\n(AzureDiagnostics\\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| + where Category == \\\"AzureFirewallDnsProxy\\\"\\n| project TimeGenerated,Resource, + msg_s, Type\\n| parse msg_s with \\\"DNS Request: \\\" ClientIP \\\":\\\" + ClientPort \\\" - \\\" QueryID \\\" \\\" Request_Type \\\" \\\" Request_Class + \\\" \\\" Request_Name \\\". \\\" Request_Protocol \\\" \\\" Request_Size + \\\" \\\" EDNSO_DO \\\" \\\" EDNS0_Buffersize \\\" \\\" Responce_Code \\\" + \\\" Responce_Flags \\\" \\\" Responce_Size \\\" \\\" Response_Duration\\n| + where Request_Name has_any (domains)\\n| extend timestamp = TimeGenerated, + DNSName = Request_Name, IPCustomEntity = ClientIP, Alert = 'SOURGUM IOC detected'\\n),\\n(AzureDiagnostics\\n| + where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + project TimeGenerated,Resource, msg_s\\n| parse msg_s with Protocol 'request + from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort + '. Action:' Action\\n| where DestinationHost has_any (domains) \\n| extend + timestamp = TimeGenerated, DNSName = DestinationHost, IPCustomEntity = SourceHost, + Alert = 'SOURGUM IOC detected'\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 1\\n| extend EvData = parse_xml(EventData)\\n| extend EventDetail + = EvData.DataItem.EventData.Data\\n| parse EventDetail with * 'SHA256=' SHA256 + '\\\",' *\\n| extend Image = EventDetail.[4].[\\\"#text\\\"], CommandLine + = EventDetail.[10].[\\\"#text\\\"]\\n| where (SHA256 has_any (sha256Hashes) + and Image has_any (file_path1)) or (Image has_any (file_path3)) or ( CommandLine + has_any (file_path3)) or ( CommandLine has_any (file_path1)) or ( CommandLine + has 'reg add' and CommandLine has_any (reg_key) and CommandLine has_any (file_path2)) + \\n| project TimeGenerated, EventDetail, UserName, Computer, Type, Source, + SHA256, CommandLine, Image\\n| extend Type = strcat(Type, \\\": \\\", Source), + Alert = 'SOURGUM IOC detected'\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = UserName, ProcessCustomEntity = tostring(split(Image, + '\\\\\\\\', -1)[-1]), AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = SHA256\\n),\\n(DeviceRegistryEvents\\n| where RegistryKey has_any (reg_key) + and RegistryValueData has_any (file_path2)\\n| project TimeGenerated, ActionType, + DeviceId, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessSHA256, + Type \\n| extend timestamp = TimeGenerated, HostCustomEntity = DeviceName + , AccountCustomEntity = InitiatingProcessAccountName, ProcessCustomEntity + = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = InitiatingProcessSHA256, Alert = 'SOURGUM IOC detected'\\n),\\n(DeviceProcessEvents\\n| + where ( InitiatingProcessCommandLine has_any (file_path1)) or ( InitiatingProcessCommandLine + has_any (file_path3)) or ( InitiatingProcessCommandLine has 'reg add' and + InitiatingProcessCommandLine has_any (reg_key) and InitiatingProcessCommandLine + has_any (file_path2)) or (InitiatingProcessFolderPath has_any (file_path1)) + or (InitiatingProcessFolderPath has_any (file_path3)) or (FolderPath has_any + (file_path1)) or (FolderPath has_any (file_path3))\\n| project TimeGenerated, + ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessSHA256, + FolderPath, Type\\n| extend timestamp = TimeGenerated, HostCustomEntity = + DeviceName , AccountCustomEntity = InitiatingProcessAccountName, ProcessCustomEntity + = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = InitiatingProcessSHA256, Alert = 'SOURGUM IOC detected'\\n),\\n(DeviceFileEvents\\n| + where (InitiatingProcessSHA256 has_any (sha256Hashes) and InitiatingProcessFolderPath + has_any (file_path1)) or (InitiatingProcessFolderPath has_any (file_path3)) + or (FolderPath has_any (file_path1)) or (FolderPath has_any (file_path3)) + or ( InitiatingProcessCommandLine has_any (file_path1)) or ( InitiatingProcessCommandLine + has_any (file_path3))\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, + InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessCommandLine, + InitiatingProcessFolderPath, InitiatingProcessId, InitiatingProcessParentFileName, + InitiatingProcessFileName, RequestAccountName, RequestSourceIP, InitiatingProcessSHA256, + FolderPath, Type\\n| extend timestamp = TimeGenerated, HostCustomEntity = + DeviceName , AccountCustomEntity = RequestAccountName, ProcessCustomEntity + = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = InitiatingProcessSHA256, Alert = 'SOURGUM IOC detected'\\n),\\n(DeviceEvents\\n| + where ( InitiatingProcessCommandLine has_any (file_path1)) or ( InitiatingProcessCommandLine + has_any (file_path3)) or ( InitiatingProcessCommandLine has 'reg add' and + InitiatingProcessCommandLine has_any (reg_key) and InitiatingProcessCommandLine + has_any (file_path2)) or (InitiatingProcessFolderPath has_any (file_path1)) + or (InitiatingProcessFolderPath has_any (file_path3)) or (FolderPath has_any + (file_path1)) or (FolderPath has_any (file_path3))\\n| project TimeGenerated, + ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessSHA256, + FolderPath, Type\\n| extend CommandLine = InitiatingProcessCommandLine, Alert + = 'SOURGUM IOC detected'\\n| extend timestamp = TimeGenerated, HostCustomEntity + = DeviceName , AccountCustomEntity = InitiatingProcessAccountName, ProcessCustomEntity + = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = InitiatingProcessSHA256\\n),\\n( SecurityEvent\\n| where EventID == 4688\\n| + where ( CommandLine has_any (file_path1)) or ( CommandLine has_any (file_path3)) + or ( CommandLine has 'reg add' and CommandLine has_any (reg_key) and CommandLine + has_any (file_path2)) or (NewProcessName has_any (file_path1)) or (NewProcessName + has_any (file_path3)) or (ParentProcessName has_any (file_path1)) or (ParentProcessName + has_any (file_path3))\\n| project TimeGenerated, Computer, NewProcessName, + ParentProcessName, Account, NewProcessId, Type\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer , AccountCustomEntity = Account, ProcessCustomEntity + = NewProcessName, Alert = 'SOURGUM IOC detected'\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1546\"],\"displayName\":\"SOURGUM + Actor IOC - July 2021\",\"description\":\"Identifies a match across IOC's + related to an actor tracked by Microsoft as SOURGUM\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-07-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\",\"DeviceRegistryEvents\",\"DeviceFileEvents\",\"DeviceEvents\",\"DeviceProcessEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"WindowsFirewall\",\"dataTypes\":[\"WindowsFirewall\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/95407904-0131-4918-bc49-ebf282ce149a\",\"name\":\"95407904-0131-4918-bc49-ebf282ce149a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + IPList = dynamic([\\\"135.125.147.170:80\\\",\\\"185.244.129.79:63047\\\",\\\"185.244.129.79:80\\\",\\\"45.80.149.108:63047\\\",\\\"45.80.149.108:80\\\",\\\"45.80.149.57:63047\\\",\\\"45.80.149.68:63047\\\",\\\"45.80.149.71:80\\\",\\\"185.244.129.109\\\",\\\"172.96.188.51\\\",\\\"51.83.246.73\\\"]); + \\n(union isfuzzy=true \\n(CommonSecurityLog \\n| where isnotempty(SourceIP) + or isnotempty(DestinationIP) \\n| where SourceIP in (IPList) or DestinationIP + in (IPList) or Message has_any (IPList) \\n| extend IPMatch = case(SourceIP + in (IPList), \\\"SourceIP\\\", DestinationIP in (IPList), \\\"DestinationIP\\\", + \\\"Message\\\") \\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc + = max(TimeGenerated) by SourceIP, DestinationIP, DeviceProduct, DeviceAction, + Message, Protocol, SourcePort, DestinationPort, DeviceAddress, DeviceName, + IPMatch \\n| extend timestamp = StartTimeUtc, IPCustomEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, + \\\"IP in Message Field\\\") \\n), \\n(OfficeActivity \\n|extend SourceIPAddress + = ClientIP, Account = UserId \\n| where SourceIPAddress in (IPList) \\n| + extend timestamp = TimeGenerated , IPCustomEntity = SourceIPAddress , AccountCustomEntity + = Account \\n),\\n(_Im_Dns (response_has_any_prefix=IPList)\\n| extend DestinationIPAddress + = ResponseName, Host = SrcIpAddr \\n| extend timestamp = TimeGenerated, IPCustomEntity + = DestinationIPAddress, HostCustomEntity = Host \\n), \\n(_Im_NetworkSession + (srcipaddr_has_any_prefix=IPList)\\n | extend timestamp = TimeGenerated, IPCustomEntity + = SrcIpAddr, HostCustomEntity = Hostname, AccountCustomEntity=User\\n), \\n(_Im_NetworkSession + (dstipaddr_has_any_prefix=IPList)\\n| extend timestamp = TimeGenerated, IPCustomEntity + = DstIpAddr, HostCustomEntity = Hostname , AccountCustomEntity = User\\n), + \\n(WireData \\n| where isnotempty(RemoteIP) \\n| where RemoteIP in (IPList) + \\n| extend timestamp = TimeGenerated, IPCustomEntity = RemoteIP, HostCustomEntity + = Computer \\n), \\n(SigninLogs \\n| where isnotempty(IPAddress) \\n| where + IPAddress in (IPList) \\n| extend timestamp = TimeGenerated, AccountCustomEntity + = UserPrincipalName, IPCustomEntity = IPAddress \\n),\\n(AADNonInteractiveUserSignInLogs + \\n| where isnotempty(IPAddress) \\n| where IPAddress in (IPList) \\n| extend + timestamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity + = IPAddress \\n), \\n(W3CIISLog \\n| where isnotempty(cIP) \\n| where cIP + in (IPList) \\n| extend timestamp = TimeGenerated, IPCustomEntity = cIP, HostCustomEntity + = Computer, AccountCustomEntity = csUserName \\n), \\n(AzureActivity \\n| + where isnotempty(CallerIpAddress) \\n| where CallerIpAddress in (IPList) \\n| + extend timestamp = TimeGenerated, IPCustomEntity = CallerIpAddress, AccountCustomEntity + = Caller \\n), \\n( \\nAWSCloudTrail \\n| where isnotempty(SourceIpAddress) + \\n| where SourceIpAddress in (IPList) \\n| extend timestamp = TimeGenerated, + IPCustomEntity = SourceIpAddress, AccountCustomEntity = UserIdentityUserName + \\n), \\n( \\nDeviceNetworkEvents \\n| where isnotempty(RemoteIP) \\n| where + RemoteIP in (IPList) \\n| extend timestamp = TimeGenerated, IPCustomEntity + = RemoteIP, HostCustomEntity = DeviceName \\n),\\n(\\nAzureDiagnostics\\n| + where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (IPList) \\n| extend DestinationIP = DestinationHost + \\n| extend IPCustomEntity = SourceHost\\n),\\n(\\nAzureDiagnostics\\n| where + ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallNetworkRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (IPList) \\n| extend DestinationIP = DestinationHost + \\n| extend IPCustomEntity = SourceHost\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Known + POLONIUM IP\",\"description\":\"Identifies a match across various data feeds + for IP IOCs related to the POLONIUM activity group. \\n References: BLOGURL' + \",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2020-11-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"AzureMonitor(WireData)\",\"dataTypes\":[\"WireData\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]},{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4915c713-ab38-432e-800b-8e2d46933de6\",\"name\":\"4915c713-ab38-432e-800b-8e2d46933de6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + avgthreshold = 0;\\nlet probabilityLimit = 0.01;\\nlet ssh_logins = Syslog\\n| + where Facility contains \\\"auth\\\" and ProcessName =~ \\\"sshd\\\"\\n| where + SyslogMessage has \\\"Accepted\\\"\\n| extend SourceIP = extract(\\\"(([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.(([0-9]{1,3})))\\\",1,SyslogMessage) + \\n| where isnotempty(SourceIP)\\n| extend result = ipv4_is_private(SourceIP);\\nssh_logins + \\n| summarize privatecount=countif(result== true), publiccount=countif(result==false) + by HostName, HostIP, bin(EventTime, 1d)\\n| summarize \\npublicIPLoginHistory + \ = make_list(pack('IPCount', publiccount, 'logon_time', EventTime)),\\nprivateIPLoginHistory + = make_list(pack('IPCount', privatecount, 'logon_time', EventTime)) by HostName, + HostIP\\n| mv-apply publicIPLoginHistory = publicIPLoginHistory on\\n(\\n + \ order by todatetime(publicIPLoginHistory['logon_time']) asc\\n | summarize + publicIPLoginCountList=make_list(toint(publicIPLoginHistory['IPCount'])), + publicAverage=avg(toint(publicIPLoginHistory['IPCount'])), publicStd=stdev(toint(publicIPLoginHistory['IPCount'])), + maxPublicLoginCount=max(toint(publicIPLoginHistory['IPCount']))\\n)\\n| mv-apply + privateIPLoginHistory = privateIPLoginHistory on\\n(\\n order by todatetime(privateIPLoginHistory['logon_time']) + asc\\n | summarize privateIPLoginCountList=make_list(toint(privateIPLoginHistory['IPCount'])), + privateAverage=avg(toint(privateIPLoginHistory['IPCount'])), privateStd=stdev(toint(privateIPLoginHistory['IPCount']))\\n)\\n// + Some logins from private IPs\\n| where privateAverage > avgthreshold\\n// + There is a non-zero number of logins from public IPs\\n| where publicAverage + > avgthreshold\\n// Approximate probability of seeing login from a public + IP is < 1%\\n| extend probabilityPublic = publicAverage / (privateAverage + + publicAverage)\\n| where probabilityPublic < probabilityLimit\\n// Today + has the highest number of logins from public IPs that we've seen in the last + week\\n| extend publicLoginCountToday = publicIPLoginCountList[-1]\\n| where + publicLoginCountToday >= maxPublicLoginCount\\n| extend HostCustomEntity = + HostName\\n// Optionally retrieve the original raw data for those logins that + we've identified as potentially suspect\\n// | join kind=rightsemi (\\n// + \ ssh_logins\\n// | where result == false\\n// ) on HostName\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"New + internet-exposed SSH endpoints\",\"description\":\"Looks for SSH endpoints + that rarely are accessed from a public IP address, in comparison with their + history of sign-ins from private IP addresses.\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ed43bdb7-eaab-4ea4-be52-6951fcfa7e3b\",\"name\":\"ed43bdb7-eaab-4ea4-be52-6951fcfa7e3b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\nlet timeframe = 1h;\\nlet TotalEventsThreshold + = 25; \\nlet TimeSeriesData = \\nAzureActivity \\n| where TimeGenerated between + (startofday(ago(starttime))..startofday(ago(endtime)))\\n| where OperationNameValue + endswith \\\"delete\\\" \\n| project TimeGenerated, Caller \\n| make-series + Total = count() on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) + step timeframe by Caller; \\nlet TimeSeriesAlerts = materialize(TimeSeriesData + \\n| extend (anomalies, score, baseline) = series_decompose_anomalies(Total, + 3, -1, 'linefit') \\n| mv-expand Total to typeof(double), TimeGenerated to + typeof(datetime), anomalies to typeof(double), score to typeof(double), baseline + to typeof(long) \\n| where anomalies > 0 \\n| project Caller, TimeGenerated, + Total, baseline, anomalies, score \\n| where Total > TotalEventsThreshold + and baseline > 0 ); \\nTimeSeriesAlerts \\n| where TimeGenerated > (ago(endtime)) + \\n| project TimeGenerated, Caller \\n| join (AzureActivity \\n| where TimeGenerated + > (ago(endtime)) \\n| where OperationNameValue endswith \\\"delete\\\" \\n| + summarize count(), make_set(OperationNameValue), make_set(Resource) by bin(TimeGenerated, + 1h), Caller) on TimeGenerated, Caller \\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Caller\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1485\"],\"displayName\":\"Mass + Cloud resource deletions Time Series Anomaly\",\"description\":\"This query + generates baseline pattern of cloud resource deletions by an user and generated + anomaly \\nwhen any unusual spike is detected.\\nThese anomalies from unusual + or privileged users could be an indication of cloud infrastructure \\ntake-down + by an adversary \",\"lastUpdatedDateUTC\":\"2022-03-24T00:00:00Z\",\"createdDateUTC\":\"2022-03-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fb7ca1c9-e14c-40a3-856e-28f3c14ea1ba\",\"name\":\"fb7ca1c9-e14c-40a3-856e-28f3c14ea1ba\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + account_threshold = 5;\\nAADNonInteractiveUserSignInLogs\\n//| where ResultType + == \\\"81016\\\"\\n| where ResultType startswith \\\"81\\\"\\n| summarize + DistinctAccounts = dcount(UserPrincipalName), DistinctAddresses = make_set(IPAddress) + by ResultType\\n| where DistinctAccounts > account_threshold\\n| mv-expand + IPAddress = DistinctAddresses\\n| extend IPAddress = tostring(IPAddress)\\n| + join kind=leftouter (union isfuzzy=true SigninLogs, AADNonInteractiveUserSignInLogs) + on IPAddress\\n| summarize\\n StartTime = min(TimeGenerated),\\n EndTime + = max(TimeGenerated),\\n UserPrincipalName = make_set(UserPrincipalName),\\n + \ UserAgent = make_set(UserAgent),\\n ResultDescription = take_any(ResultDescription),\\n + \ ResultSignature = take_any(ResultSignature)\\n by IPAddress, Type, + ResultType\\n| project Type, StartTime, EndTime, IPAddress, ResultType, ResultDescription, + ResultSignature, UserPrincipalName, UserAgent = iff(array_length(UserAgent) + == 1, UserAgent[0], UserAgent)\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Password + spray attack against Azure AD Seamless SSO\",\"description\":\"This query + detects when there is a spike in Azure AD Seamless SSO errors. They may not + be caused by a Password Spray attack, but the cause of the errors might need + to be investigated.\\nAzure AD only logs the requests that matched existing + accounts, thus there might have been unlogged requests for non-existing accounts.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2022-03-10T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/825991eb-ea39-4590-9de2-ee97ef42eb93\",\"name\":\"825991eb-ea39-4590-9de2-ee97ef42eb93\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ActiniumIOC.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet domains = (iocs | + where Type =~ \\\"domainname\\\"| project IoC);\\nlet sha256Hashes = (iocs + | where Type =~ \\\"sha256\\\" | project IoC);\\n(union isfuzzy=true\\n(DeviceProcessEvents\\n| + where InitiatingProcessSHA256 in (sha256Hashes) or SHA256 in (sha256Hashes) + or (ProcessCommandLine has ('schtasks.exe /CREATE /sc minute /mo 12 /tn') + \ and ProcessCommandLine has ('/tr \\\"wscript.exe') and ProcessCommandLine + has ('\\\"%PUBLIC%\\\\\\\\Pictures\\\\\\\\') and ProcessCommandLine has ('//e:VBScript + //b\\\" /F')) or (ProcessCommandLine has ('wscript.exe C:\\\\\\\\Users\\\\\\\\') + and ProcessCommandLine has ('.wav') and ProcessCommandLine has ('//e:VBScript + //b') \\nor (ProcessCommandLine has_all (\\\"schtasks.exe\\\", \\\"create\\\", + \\\"wscript\\\", \\\"e:vbscript\\\", \\\".wav\\\")))\\n| project TimeGenerated, + ActionType, DeviceId, DeviceName, ProcessCommandLine, InitiatingProcessAccountName, + InitiatingProcessCommandLine, FolderPath, InitiatingProcessFolderPath, ProcessId, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + \ InitiatingProcessSHA256, Type, AccountName, SHA256, FileName\\n| extend + Account = AccountName, Computer = DeviceName, FileHash = case(InitiatingProcessSHA256 + in (sha256Hashes), \\\"InitiatingProcessSHA256\\\", SHA256 in (sha256Hashes), + \\\"SHA256\\\", \\\"No Match\\\")\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = Account, ProcessCustomEntity = FileName, + FileHashCustomEntity = case(FileHash == \\\"InitiatingProcessSHA256\\\", InitiatingProcessSHA256, + FileHash == \\\"SHA256\\\", SHA256, \\\"No Match\\\")\\n),\\n( SecurityEvent\\n| + where EventID == 4688\\n| where (CommandLine has ('schtasks.exe /CREATE /sc + minute /mo 12 /tn') and CommandLine has ('/tr \\\"wscript.exe') and CommandLine + has ('\\\"%PUBLIC%\\\\\\\\Pictures\\\\\\\\') and CommandLine has ('//e:VBScript + //b\\\" /F')) or (CommandLine has ('wscript.exe C:\\\\\\\\Users\\\\\\\\') + and CommandLine has ('.wav') and CommandLine has ('//e:VBScript //b'))\\n| + project TimeGenerated, Computer, NewProcessName, ParentProcessName, Account, + NewProcessId, Type, EventID\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = Account, ProcessCustomEntity = NewProcessName\\n),\\n( + CommonSecurityLog\\n| where FileHash in (sha256Hashes)\\n| project TimeGenerated, + Message, SourceUserID, FileHash, Type\\n| extend timestamp = TimeGenerated, + FileHashCustomEntity = 'SHA256', Account = SourceUserID\\n),\\n( imFileEvent\\n| + where Hash in~ (sha256Hashes) or (ActingProcessCommandLine has ('schtasks.exe + /CREATE /sc minute /mo 12 /tn') and ActingProcessCommandLine has ('/tr \\\"wscript.exe') + and ActingProcessCommandLine has ('\\\"%PUBLIC%\\\\\\\\Pictures\\\\\\\\') + and ActingProcessCommandLine has ('//e:VBScript //b\\\" /F')) or (ActingProcessCommandLine + \ has ('wscript.exe C:\\\\\\\\Users\\\\\\\\') and ActingProcessCommandLine + \ has ('.wav') and ActingProcessCommandLine has ('//e:VBScript //b') \\n + or (ActingProcessCommandLine has_all (\\\"schtasks.exe\\\", \\\"create\\\", + \\\"wscript\\\", \\\"e:vbscript\\\", \\\".wav\\\")))\\n| extend Account = + ActorUsername, Computer = DvcHostname, IPAddress = SrcIpAddr, CommandLine + = ActingProcessCommandLine, FileHash = Hash\\n| project Type, TimeGenerated, + Computer, Account, IPAddress, CommandLine, FileHash\\n| extend timestamp = + TimeGenerated, AccountCustomEntity = Account, HostCustomEntity = Computer\\n),\\n(Event\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 1\\n| + extend EvData = parse_xml(EventData)\\n| extend EventDetail = EvData.DataItem.EventData.Data\\n| + extend Image = EventDetail.[4].[\\\"#text\\\"], CommandLine = EventDetail.[10].[\\\"#text\\\"], + Hashes = tostring(EventDetail.[17].[\\\"#text\\\"])\\n| extend Hashes = extract_all(@\\\"(?P\\\\w+)=(?P[a-zA-Z0-9]+)\\\", + dynamic([\\\"key\\\",\\\"value\\\"]), Hashes)\\n| extend Hashes = column_ifexists(\\\"Hashes\\\", + \\\"\\\"), CommandLine = column_ifexists(\\\"CommandLine\\\", \\\"\\\")\\n| + where (Hashes has_any (sha256Hashes) ) or (CommandLine has ('schtasks.exe + /CREATE /sc minute /mo 12 /tn') and CommandLine has ('/tr \\\"wscript.exe') + and CommandLine has ('\\\"%PUBLIC%\\\\\\\\Pictures\\\\\\\\') and CommandLine + has ('//e:VBScript //b\\\" /F')) or (CommandLine has ('wscript.exe C:\\\\\\\\Users\\\\\\\\') + and CommandLine has ('.wav') and CommandLine has ('//e:VBScript //b') or + (CommandLine has_all (\\\"schtasks.exe\\\", \\\"create\\\", \\\"wscript\\\", + \\\"e:vbscript\\\", \\\".wav\\\")))\\n| project TimeGenerated, EventDetail, + UserName, Computer, Type, Source, Hashes, CommandLine, Image\\n| extend Type + = strcat(Type, \\\": \\\", Source)\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = UserName, ProcessCustomEntity = tostring(split(Image, + '\\\\\\\\', -1)[-1]), FileHashCustomEntity = Hashes\\n),\\n(DnsEvents\\n| + where Name in~ (domains) \\n| project TimeGenerated, Computer, IPAddresses, + Name, ClientIP, Type\\n| extend DestinationIPAddress = IPAddresses, DNSName + = Name, Computer \\n| extend timestamp = TimeGenerated, IPCustomEntity = DestinationIPAddress\\n),\\n(VMConnection\\n| + where RemoteDnsCanonicalNames has_any (domains)\\n| parse RemoteDnsCanonicalNames + with * '[\\\"' DNSName '\\\"]' *\\n| project TimeGenerated, Computer, Direction, + ProcessName, SourceIp, DestinationIp, DestinationPort, RemoteDnsQuestions, + DNSName,BytesSent, BytesReceived, RemoteCountry, Type\\n| extend timestamp + = TimeGenerated, IPCustomEntity = DestinationIp, File = ProcessName\\n),\\n(AzureDiagnostics + \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + project TimeGenerated,Resource, msg_s, Type\\n| parse msg_s with Protocol + 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort + '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| where DestinationHost + has_any (domains) \\n| extend timestamp = TimeGenerated, DNSName = DestinationHost, + IPCustomEntity = SourceHost\\n),\\n(DeviceNetworkEvents \\n| where isnotempty(RemoteUrl) + \\n| where RemoteUrl in~ (domains) \\n| project Type, TimeGenerated, DeviceName, + RemoteIP, RemoteUrl, InitiatingProcessAccountName\\n| extend timestamp = TimeGenerated, + HostCustomEntity = DeviceName , AccountCustomEntity = InitiatingProcessAccountName, + DNSName = RemoteUrl, IPCustomEntity = RemoteIP\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"FileHashType\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1137\"],\"displayName\":\"ACTINIUM + Actor IOCs - Feb 2022\",\"description\":\"Identifies a match across various + data feeds for domains, hashes and commands related to an actor tracked by + Microsoft as Actinium.\",\"lastUpdatedDateUTC\":\"2022-03-09T00:00:00Z\",\"createdDateUTC\":\"2022-02-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\",\"DeviceProcessEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f209187f-1d17-4431-94af-c141bf5f23db\",\"name\":\"f209187f-1d17-4431-94af-c141bf5f23db\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.9\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1136\"],\"displayName\":\"(Preview) + UEBA Anomalous Account Creation\",\"description\":\"Adversaries may create + an account to maintain access to victim systems. With a sufficient level of + access,\\ncreating such accounts may be used to establish secondary credentialed + access\\nthat do not require persistent remote access tools to be deployed + on the system.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2021-07-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/65360bb0-8986-4ade-a89d-af3cf44d28aa\",\"name\":\"65360bb0-8986-4ade-a89d-af3cf44d28aa\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + EventNameList = dynamic([\\\"CreateNetworkAclEntry\\\",\\\"CreateRoute\\\",\\\"CreateRouteTable\\\",\\\"CreateInternetGateway\\\",\\\"CreateNatGateway\\\"]);\\nAWSCloudTrail\\n| + where EventName in~ (EventNameList)\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by EventName, EventTypeName, UserIdentityAccountId, + UserIdentityPrincipalid, UserAgent, \\nUserIdentityUserName, SessionMfaAuthenticated, + SourceIpAddress, AWSRegion, EventSource, AdditionalEventData, ResponseElements\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, + IPCustomEntity = SourceIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"PrivilegeEscalation\",\"LateralMovement\"],\"techniques\":[\"T1078\"],\"displayName\":\"Changes + to Amazon VPC settings\",\"description\":\"Amazon Virtual Private Cloud (Amazon + VPC) lets you provision a logically isolated section of the AWS Cloud where + you can launch AWS resources\\nin a virtual network that you define.\\nThis + identifies changes to Amazon VPC (Virtual Private Cloud) settings such as + new ACL entries,routes, routetable or Gateways.\\nMore information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255 + \\nand AWS VPC API Docs: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/OperationList-query-vpc.html\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f2eb15bd-8a88-4b24-9281-e133edfba315\",\"name\":\"f2eb15bd-8a88-4b24-9281-e133edfba315\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet aadFunc = (tableName:string){\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n table(tableName) + | where TimeGenerated >= ago(dt_lookBack)\\n | extend Status = todynamic(Status), + LocationDetails = todynamic(LocationDetails)\\n | extend StatusCode = tostring(Status.errorCode), + StatusDetails = tostring(Status.additionalDetails), StatusReason = tostring(Status.failureReason)\\n + \ | extend State = tostring(LocationDetails.state), City = tostring(LocationDetails.city), + Region = tostring(LocationDetails.countryOrRegion)\\n // renaming time + column so it is clear the log this came from\\n | extend SigninLogs_TimeGenerated + = TimeGenerated, Type = Type\\n)\\non $left.TI_ipEntity == $right.IPAddress\\n| + where SigninLogs_TimeGenerated < ExpirationDateTime\\n| summarize SigninLogs_TimeGenerated + = arg_max(SigninLogs_TimeGenerated, *) by IndicatorId, IPAddress\\n| project + SigninLogs_TimeGenerated, Description, ActivityGroupNames, IndicatorId, ThreatType, + Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, IPAddress, UserPrincipalName, + AppDisplayName, StatusCode, StatusDetails, StatusReason, NetworkIP, NetworkDestinationIP, + NetworkSourceIP, EmailSourceIpAddress, Type\\n| extend timestamp = SigninLogs_TimeGenerated, + AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress, URLCustomEntity + = Url\\n};\\nlet aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt + = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion isfuzzy=true aadSignin, + aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.2\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to SigninLogs\",\"description\":\"Identifies a match in SigninLogs + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6e715730-82c0-496c-983b-7a20c4590bd9\",\"name\":\"6e715730-82c0-496c-983b-7a20c4590bd9\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + accountLookback = 3d;\\nlet requestLookback = 3d;\\nlet extraction_regex = + @\\\"(?:\\\\?|&)[a-zA-Z0-9\\\\%]*=([a-zA-Z0-9\\\\/\\\\+\\\\=]*)\\\";\\n// + Collect account names and base64 encode them\\nDeviceEvents\\n| where TimeGenerated + > ago(accountLookback)\\n| summarize make_set(DeviceId), make_set(DeviceName) + by InitiatingProcessAccountName\\n| where isnotempty(InitiatingProcessAccountName)\\n| + extend base64_user = base64_encode_tostring(InitiatingProcessAccountName)\\n| + join (\\n // Collect requests and extract base64 parameters\\n CommonSecurityLog\\n + \ | where TimeGenerated > ago(requestLookback)\\n | where isnotempty(RequestURL)\\n + \ // Summarize early on the RequestURL\\n | summarize FirstRequest=min(TimeGenerated), + LastRequest=max(TimeGenerated), NumberOfRequests=count() by RequestURL\\n + \ | extend base64_candidate = extract_all(extraction_regex, RequestURL)\\n + \ | mv-expand base64_candidate to typeof(string)\\n) on $left.base64_user + == $right.base64_candidate\\n| project FirstRequest, LastRequest, NumberOfRequests, + RequestURL, DeviceIds=set_DeviceId, DeviceNames=set_DeviceName, UserName=InitiatingProcessAccountName\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"DeviceNames\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"RequestURL\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"UserName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\",\"CommandAndControl\"],\"techniques\":[\"T1041\",\"T1071\"],\"displayName\":\"Windows + host username encoded in base64 web request\",\"description\":\"This detection + will identify network requests in HTTP proxy data that contains Base64 encoded + usernames from machines in the DeviceEvents table.\\nThis technique was seen + usee by POLONIUM in their RunningRAT tool.\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2022-05-31T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d7309cb9-b16b-4c7a-9e4b-3e9009bd373d\",\"name\":\"d7309cb9-b16b-4c7a-9e4b-3e9009bd373d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.7\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"(Preview) + Anomalous Azure operations\",\"description\":\"This detection algorithm generates + anomaly of a caller who performed sequence of an operation(s) which is uncommon + in their workspace.\\nWe collect and featurize last 21 days of operation happened + in the workspace grouped by the caller as a training data for ML algorithm.\\nThe + trained model is used to score the operation performed by the caller on the + test date and we tag those caller as anomaly whose error score is greater + than given thershold.\\nFrom Security perspective, this anomaly will capture + the caller along with operation performed on the test date which are not common + in their workspace.\",\"lastUpdatedDateUTC\":\"2021-11-22T00:00:00Z\",\"createdDateUTC\":\"2021-11-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e4779bdc-397a-4b71-be28-59e6a1e1d16b\",\"name\":\"e4779bdc-397a-4b71-be28-59e6a1e1d16b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"ZoomLogs\\n| + where Event =~ \\\"account.settings_updated\\\"\\n| extend NewE2ESetting = + columnifexists(\\\"payload_object_settings_in_meeting_e2e_encryption_b\\\", + \\\"\\\")\\n| extend OldE2ESetting = columnifexists(\\\"payload_old_object_settings_in_meeting_e2e_encryption_b\\\", + \\\"\\\")\\n| where OldE2ESetting =~ 'false' and NewE2ESetting =~ 'true'\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = User\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\",\"Discovery\"],\"techniques\":[\"T1040\"],\"displayName\":\"Zoom + E2E Encryption Disabled\",\"description\":\"This alerts when end to end encryption + is disabled for Zoom meetings.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-04-24T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/194dd92e-d6e7-4249-85a5-273350a7f5ce\",\"name\":\"194dd92e-d6e7-4249-85a5-273350a7f5ce\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"OfficeActivity\\n| + where UserType in~ (\\\"Admin\\\",\\\"DcAdmin\\\") \\n// Only admin or global-admin + can disable audit logging\\n| where Operation =~ \\\"Set-AdminAuditLogConfig\\\" + \\n| extend AdminAuditLogEnabledValue = tostring(parse_json(tostring(parse_json(tostring(array_slice(parse_json(Parameters),3,3)))[0])).Value)\\n| + where AdminAuditLogEnabledValue =~ \\\"False\\\" \\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), OperationCount = count() + by Operation, UserType, UserId, ClientIP, ResultStatus, Parameters, AdminAuditLogEnabledValue\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = UserId, IPCustomEntity + = ClientIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1562\"],\"displayName\":\"Exchange + AuditLog disabled\",\"description\":\"Identifies when the exchange audit logging + has been disabled which may be an adversary attempt\\nto evade detection or + avoid other defenses.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-04-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/218f60de-c269-457a-b882-9966632b9dc6\",\"name\":\"218f60de-c269-457a-b882-9966632b9dc6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where Category =~ \\\"RoleManagement\\\"\\n| where ActivityDisplayName has_any + (\\\"Add eligible member to role\\\", \\\"Add member to role\\\")\\n| mv-expand + TargetResources\\n| mv-expand TargetResources.modifiedProperties\\n| extend + displayName_ = tostring(TargetResources_modifiedProperties.displayName)\\n| + where displayName_ =~ \\\"Role.DisplayName\\\"\\n| extend RoleName = tostring(parse_json(tostring(TargetResources_modifiedProperties.newValue)))\\n| + where RoleName contains \\\"Admin\\\"\\n| extend Target = tostring(TargetResources.userPrincipalName)\\n| + summarize dcount(Target) by bin(TimeGenerated, 1h)\\n| where dcount_Target + > 9\\n| join kind=rightsemi (AuditLogs\\n| where Category =~ \\\"RoleManagement\\\"\\n| + where ActivityDisplayName has_any (\\\"Add eligible member to role\\\", \\\"Add + member to role\\\")\\n| mv-expand TargetResources\\n| mv-expand TargetResources.modifiedProperties\\n| + extend displayName_ = tostring(TargetResources_modifiedProperties.displayName)\\n| + where displayName_ =~ \\\"Role.DisplayName\\\"\\n| extend RoleName = tostring(parse_json(tostring(TargetResources_modifiedProperties.newValue)))\\n| + where RoleName contains \\\"Admin\\\"\\n| extend Target = tostring(TargetResources.userPrincipalName)\\n| + extend TimeWindow = bin(TimeGenerated, 1h)) on $left.TimeGenerated == $right.TimeWindow\\n| + extend AccountCustomEntity = Target\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1078\"],\"displayName\":\"Bulk + Changes to Privileged Account Permissions\",\"description\":\"Identifies when + changes to multiple users permissions are changed at once. Investigate immediately + if not a planned change. This setting could enable an attacker access to Azure + subscriptions in your environment.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-identity-management\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d4f9d54b-6dec-4655-8631-0fa8d4954fea\",\"name\":\"d4f9d54b-6dec-4655-8631-0fa8d4954fea\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.1.7\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.99\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\"],\"displayName\":\"(Preview) + Domain Reputation Palo Alto anomaly\",\"description\":\"This anomaly evaluates + the reputation for all domains seen specifically for Palo Alto firewall (PAN-OS + product).\\nA high anomaly score indicates a low reputation, suggesting that + the domain has been observed to host malicious content or is likely to do + so.\",\"lastUpdatedDateUTC\":\"2022-05-11T00:00:00Z\",\"createdDateUTC\":\"2021-07-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6e575295-a7e6-464c-8192-3e1d8fd6a990\",\"name\":\"6e575295-a7e6-464c-8192-3e1d8fd6a990\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + IPList = externaldata(IPAddress:string)[@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Log4j_IOC_List.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\n//Network + logs\\nlet CSlogSourceIP = CommonSecurityLog | summarize by IPAddress = SourceIP, + Type;\\nlet CSlogDestIP = CommonSecurityLog | summarize by IPAddress = DestinationIP, + Type;\\nlet CSlogMsgIP = CommonSecurityLog | extend MessageIP = extract(IPRegex, + 0, Message) | summarize by IPAddress = MessageIP, Type;\\nlet DnsIP = DnsEvents + | summarize by IPAddress = IPAddresses, Type;\\n// If you have enabled the + imDNS and/or imNetworkSession normalization in your workspace, you can uncomment + one or both below. Reference - https://docs.microsoft.com/azure/sentinel/normalization\\n//let + imDnsIP = imDns (response_has_any_prefix=IPList) | summarize by IPAddress + = ResponseName, Type;\\n//let imNetSessIP = imNetworkSession (dstipaddr_has_any_prefix=IPList) + | summarize by IPAddress = DstIpAddr, Type;\\n//Cloud service logs\\nlet officeIP + = OfficeActivity | summarize by IPAddress = ClientIP, Type;\\nlet signinIP + = SigninLogs | summarize by IPAddress, Type;\\nlet nonintSigninIP = AADNonInteractiveUserSignInLogs + | summarize by IPAddress, Type;\\nlet azureActIP = AzureActivity | summarize + by IPAddress = CallerIpAddress, Type;\\nlet awsCtIP = AWSCloudTrail | summarize + by IPAddress = SourceIpAddress, Type;\\n//Device logs\\nlet vmConnSourceIP + = VMConnection | summarize by IPAddress = SourceIp, Type;\\nlet vmConnDestIP + = VMConnection | summarize by IPAddress = DestinationIp, Type;\\nlet iisLogIP + = W3CIISLog | summarize by IPAddress = cIP, Type;\\nlet devNetIP = DeviceNetworkEvents + | summarize by IPAddress = RemoteIP, Type;\\n//need to parse to get IP\\nlet + azureDiagIP = AzureDiagnostics | where ResourceType == \\\"AZUREFIREWALLS\\\" + | where Category in (\\\"AzureFirewallApplicationRule\\\", \\\"AzureFirewallNetworkRule\\\") + \\n| where msg_s has_any (IPList) | parse msg_s with Protocol 'request from + ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort '. Action:' + Action | summarize by IPAddress = DestinationHost, Type;\\nlet sysEvtIP = + Event | where Source == \\\"Microsoft-Windows-Sysmon\\\" | where EventID == + 3 | where EventData has_any (IPList) | extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| extend SourceIP = + tostring(EventDetail.[9].[\\\"#text\\\"]), DestinationIP = tostring(EventDetail.[14].[\\\"#text\\\"])\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) | extend IPAddress + = iff(SourceIP in (IPList), SourceIP, DestinationIP) | summarize by IPAddress, + Type;\\n// If you have enabled the imDNS and/or imNetworkSession normalization + in your workdspace, you can uncomment below and include. Reference - https://docs.microsoft.com/azure/sentinel/normalization\\n//let + ipsort = union isfuzzy=true CSlogDestIP, CSlogMsgIP, CSlogSourceIP, DnsIP, + officeIP, signinIP, nonintSigninIP, azureActIP, awsCtIP, vmConnDestIP, vmConnSourceIP, + azureDiagIP, sysEvtIP, imDnsIP, imNetSessIP\\n// If you uncomment above, then + comment out the line below\\nlet ipsort = union isfuzzy=true CSlogDestIP, + CSlogMsgIP, CSlogSourceIP, DnsIP, officeIP, signinIP, nonintSigninIP, azureActIP, + awsCtIP, vmConnDestIP, vmConnSourceIP, azureDiagIP, sysEvtIP\\n| summarize + by IPAddress\\n| where isnotempty(IPAddress) | where not(ipv4_is_private(IPAddress)) + and IPAddress !in ('0.0.0.0','127.0.0.1');\\nlet ipMatch = ipsort | where + IPAddress in (IPList);\\n(union isfuzzy=true\\n(CommonSecurityLog\\n| where + SourceIP in (ipMatch) or DestinationIP in (ipMatch) or Message has_any (ipMatch)\\n| + project TimeGenerated, SourceIP, DestinationIP, Message, SourceUserID, RequestURL, + Type\\n| extend MessageIP = extract(IPRegex, 0, Message)\\n| extend IPMatch + = case(SourceIP in (ipMatch), \\\"SourceIP\\\", DestinationIP in (ipMatch), + \\\"DestinationIP\\\", MessageIP in (ipMatch), \\\"Message\\\", \\\"No Match\\\")\\n| + extend timestamp = TimeGenerated, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", + SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, IPMatch == \\\"Message\\\", + MessageIP, \\\"No Match\\\")\\n),\\n(OfficeActivity\\n| where ClientIP in + (ipMatch)\\n| project TimeGenerated, UserAgent, Operation, RecordType, UserId, + ClientIP, Type\\n| extend SourceIPAddress = ClientIP, Account = UserId\\n| + extend timestamp = TimeGenerated , IPCustomEntity = SourceIPAddress , AccountCustomEntity + = Account\\n),\\n(DnsEvents\\n| where IPAddresses has_any (ipMatch)\\n| project + TimeGenerated, Computer, IPAddresses, Name, ClientIP, Type\\n| extend DestinationIPAddress + = IPAddresses, Host = Computer\\n| extend timestamp = TimeGenerated, IPCustomEntity + = DestinationIPAddress, HostCustomEntity = Host\\n),\\n(VMConnection\\n| where + SourceIp in (ipMatch) or DestinationIp in (ipMatch)\\n| project TimeGenerated, + Computer, SourceIp, DestinationIp, Type\\n| extend IPMatch = case( SourceIp + in (ipMatch), \\\"SourceIP\\\", DestinationIp in (ipMatch), \\\"DestinationIP\\\", + \\\"None\\\")\\n| extend timestamp = TimeGenerated , IPCustomEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIp, IPMatch == \\\"DestinationIP\\\", DestinationIp, + \\\"None\\\"), Host = Computer\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 3\\n| where EventData has_any (ipMatch)\\n| project TimeGenerated, + EventData, UserName, Computer, Type\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| extend SourceIP = + tostring(EventDetail.[9].[\\\"#text\\\"]), DestinationIP = tostring(EventDetail.[14].[\\\"#text\\\"])\\n| + where SourceIP in (ipMatch) or DestinationIP in (ipMatch)\\n| extend IPMatch + = case( SourceIP in (ipMatch), \\\"SourceIP\\\", DestinationIP in (ipMatch), + \\\"DestinationIP\\\", \\\"None\\\")\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = UserName, HostCustomEntity = Computer , IPCustomEntity + = case(IPMatch == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", + DestinationIP, \\\"None\\\")\\n),\\n(SigninLogs\\n| where IPAddress in (ipMatch)\\n| + project TimeGenerated, UserPrincipalName, IPAddress, Type\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity = + IPAddress\\n),\\n(AADNonInteractiveUserSignInLogs\\n| where IPAddress in (ipMatch)\\n| + project TimeGenerated, UserPrincipalName, IPAddress, Type\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity = + IPAddress\\n),\\n(W3CIISLog\\n| where cIP in (ipMatch)\\n| project TimeGenerated, + Computer, cIP, csUserName, Type\\n| extend timestamp = TimeGenerated, IPCustomEntity + = cIP, HostCustomEntity = Computer, AccountCustomEntity = csUserName\\n),\\n(AzureActivity\\n| + where CallerIpAddress in (ipMatch)\\n| project TimeGenerated, CallerIpAddress, + Caller, Type\\n| extend timestamp = TimeGenerated, IPCustomEntity = CallerIpAddress, + AccountCustomEntity = Caller\\n),\\n(\\nAWSCloudTrail\\n| where SourceIpAddress + in (ipMatch)\\n| project TimeGenerated, SourceIpAddress, UserIdentityUserName, + Type\\n| extend timestamp = TimeGenerated, IPCustomEntity = SourceIpAddress, + AccountCustomEntity = UserIdentityUserName\\n), \\n( \\nDeviceNetworkEvents\\n| + where RemoteIP in (ipMatch)\\n| where ActionType == \\\"InboundConnectionAccepted\\\"\\n| + project TimeGenerated, RemoteIP, DeviceName, Type\\n| extend timestamp = TimeGenerated, + IPCustomEntity = RemoteIP, HostCustomEntity = DeviceName\\n),\\n(\\nAzureDiagnostics\\n| + where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category in (\\\"AzureFirewallApplicationRule\\\", + \\\"AzureFirewallNetworkRule\\\")\\n| where msg_s has_any (ipMatch)\\n| project + TimeGenerated, msg_s, Type\\n| parse msg_s with Protocol 'request from ' SourceIP + ':' SourcePort 'to ' DestinationIP ':' DestinationPort '. Action:' Action\\n| + where DestinationIP has_any (ipMatch)\\n| extend timestamp = TimeGenerated, + IPCustomEntity = DestinationIP\\n)\\n// If you have enabled the imDNS and/or + imNetworkSession normalization in your workdspace, you can uncomment below + and include. Reference - https://docs.microsoft.com/azure/sentinel/normalization\\n//,\\n//(imDns + (response_has_any_prefix=IPList)\\n//| project TimeGenerated, ResponseName, + SrcIpAddr, Type\\n//| extend DestinationIPAddress = ResponseName, Host = + SrcIpAddr\\n//| extend timestamp = TimeGenerated, IPCustomEntity = DestinationIPAddress, + HostCustomEntity = Host\\n//),\\n//(imNetworkSession (dstipaddr_has_any_prefix=IPList)\\n//| + project TimeGenerated, DstIpAddr, SrcIpAddr, Type\\n//| extend timestamp = + TimeGenerated, IPCustomEntity = DstIpAddr, HostCustomEntity = SrcIpAddr\\n//)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"2.0.1\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Log4j + vulnerability exploit aka Log4Shell IP IOC\",\"description\":\"Identifies + a match across various data feeds for IP IOCs related to the Log4j vulnerability + exploit aka Log4Shell described in CVE-2021-44228. \\n References: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2021-44228' + \",\"lastUpdatedDateUTC\":\"2022-03-18T00:00:00Z\",\"createdDateUTC\":\"2019-12-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"AzureMonitor(WireData)\",\"dataTypes\":[\"WireData\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]},{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bda5a2bd-979b-4828-a91f-27c2a5048f7f\",\"name\":\"bda5a2bd-979b-4828-a91f-27c2a5048f7f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT30M\",\"queryPeriod\":\"PT30M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 30m;\\nlet msgthreshold = 3;\\nProofpointPOD\\n| where TimeGenerated + > ago(lbtime)\\n| where EventType == 'message'\\n| where NetworkDirection + == 'outbound'\\n| extend attachedMimeType = todynamic(MsgParts)[0]['detectedMime']\\n| + where attachedMimeType == 'application/zip'\\n| summarize count() by SrcUserUpn, + DstUserUpn\\n| where count_ > msgthreshold\\n| extend AccountCustomEntity + = SrcUserUpn\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\"],\"displayName\":\"ProofpointPOD + - Multiple archived attachments to the same recipient\",\"description\":\"Detects + when multiple emails where sent to the same recipient with large archived + attachments.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/39198934-62a0-4781-8416-a81265c03fd6\",\"name\":\"39198934-62a0-4781-8416-a81265c03fd6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + detectionTime = 1d;\\nlet joinLookback = 14d;\\nAuditLogs\\n| where TimeGenerated + > ago(detectionTime)\\n| where LoggedByService =~ \\\"Core Directory\\\"\\n| + where Category =~ \\\"ApplicationManagement\\\"\\n| where OperationName =~ + \\\"Consent to application\\\"\\n| where TargetResources has \\\"offline\\\"\\n| + extend AppDisplayName = TargetResources.[0].displayName\\n| extend AppClientId + = tolower(TargetResources.[0].id)\\n| where AppClientId !in ((externaldata(knownAppClientId:string, + knownAppDisplayName:string)[@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.OAuth.KnownApplications.csv\\\"] + with (format=\\\"csv\\\")))\\n| extend ConsentFull = TargetResources[0].modifiedProperties[4].newValue\\n| + parse ConsentFull with * \\\"ConsentType: \\\" GrantConsentType \\\", Scope: + \\\" GrantScope1 \\\"]\\\" *\\n| where ConsentFull contains \\\"user.read\\\" + and ConsentFull contains \\\"offline_access\\\" and ConsentFull contains \\\"mail.readwrite\\\" + and ConsentFull contains \\\"mail.send\\\" and ConsentFull contains \\\"files.read.all\\\"\\n| + where GrantConsentType != \\\"AllPrincipals\\\" // NOTE: we are ignoring if + OAuth application was granted to all users via an admin - but admin due diligence + should be audited occasionally\\n| extend GrantIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\\n| + extend GrantInitiatedBy = iff(isnotempty(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.user.userPrincipalName), tostring(InitiatedBy.app.displayName))\\n| + extend GrantUserAgent = iff(AdditionalDetails[0].key =~ \\\"User-Agent\\\", + AdditionalDetails[0].value, \\\"\\\")\\n| project TimeGenerated, GrantConsentType, + GrantScope1, GrantInitiatedBy, AppDisplayName, GrantIpAddress, GrantUserAgent, + AppClientId, OperationName, ConsentFull, CorrelationId\\n| join kind = leftouter + (AuditLogs\\n| where TimeGenerated > ago(joinLookback)\\n| where LoggedByService + =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where OperationName =~ \\\"Add service principal\\\"\\n| extend AppClientId + = tolower(TargetResources[0].id)\\n| extend AppReplyURLs = iff(TargetResources[0].modifiedProperties[1].newValue + has \\\"AddressType\\\", TargetResources[0].modifiedProperties[1].newValue, + \\\"\\\")\\n| distinct AppClientId, tostring(AppReplyURLs)\\n)\\non AppClientId\\n| + join kind = innerunique (AuditLogs\\n| where TimeGenerated > ago(joinLookback)\\n| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where OperationName =~ \\\"Add OAuth2PermissionGrant\\\" or OperationName + =~ \\\"Add delegated permission grant\\\"\\n| extend GrantAuthentication = + tostring(TargetResources[0].displayName)\\n| extend GrantOperation = OperationName\\n| + project GrantAuthentication, GrantOperation, CorrelationId\\n) on CorrelationId\\n| + project TimeGenerated, GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, + AppReplyURLs, GrantIpAddress, GrantUserAgent, AppClientId, GrantAuthentication, + OperationName, GrantOperation, CorrelationId, ConsentFull\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = GrantInitiatedBy, IPCustomEntity = + GrantIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\",\"DefenseEvasion\"],\"techniques\":[\"T1528\",\"T1550\"],\"displayName\":\"Suspicious + application consent similar to PwnAuth\",\"description\":\"This will alert + when a user consents to provide a previously-unknown Azure application with + the same OAuth permissions used by the FireEye PwnAuth toolkit (https://github.com/fireeye/PwnAuth).\\nThe + default permissions/scope for the PwnAuth toolkit are user.read, offline_access, + mail.readwrite, mail.send, and files.read.all.\\nConsent to applications with + these permissions should be rare, especially as the knownApplications list + is expanded. Public contributions to expand this filter are welcome!\\nFor + further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fbd72eb8-087e-466b-bd54-1ca6ea08c6d3\",\"name\":\"fbd72eb8-087e-466b-bd54-1ca6ea08c6d3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + opList = OfficeActivity \\n| summarize by Operation\\n//| where Operation + startswith \\\"Remove-\\\" or Operation startswith \\\"Disable-\\\"\\n| where + Operation has_any (\\\"Remove\\\", \\\"Disable\\\")\\n| where Operation contains + \\\"AntiPhish\\\" or Operation contains \\\"SafeAttachment\\\" or Operation + contains \\\"SafeLinks\\\" or Operation contains \\\"Dlp\\\" or Operation + contains \\\"Audit\\\"\\n| summarize make_set(Operation);\\nOfficeActivity\\n// + Only admin or global-admin can disable/remove policy\\n| where RecordType + =~ \\\"ExchangeAdmin\\\"\\n| where UserType in~ (\\\"Admin\\\",\\\"DcAdmin\\\")\\n// + Pass in interesting Operation list\\n| where Operation in~ (opList)\\n| extend + ClientIPOnly = case( \\nClientIP has \\\".\\\", tostring(split(ClientIP,\\\":\\\")[0]), + \\nClientIP has \\\"[\\\", tostring(trim_start(@'[[]',tostring(split(ClientIP,\\\"]\\\")[0]))),\\nClientIP\\n) + \ \\n| extend Port = case(\\nClientIP has \\\".\\\", (split(ClientIP,\\\":\\\")[1]),\\nClientIP + has \\\"[\\\", tostring(split(ClientIP,\\\"]:\\\")[1]),\\nClientIP\\n)\\n| + summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + OperationCount = count() by Operation, UserType, UserId, ClientIP = ClientIPOnly, + Port, ResultStatus, Parameters\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = UserId, IPCustomEntity = ClientIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\",\"DefenseEvasion\"],\"techniques\":[\"T1098\",\"T1562\"],\"displayName\":\"Office + policy tampering\",\"description\":\"Identifies if any tampering is done to + either auditlog, ATP Safelink, SafeAttachment, AntiPhish or Dlp policy. \\nAn + adversary may use this technique to evade detection or avoid other policy + based defenses.\\nReferences: https://docs.microsoft.com/powershell/module/exchange/advanced-threat-protection/remove-antiphishrule?view=exchange-ps.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-04-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/06a9b845-6a95-4432-a78b-83919b28c375\",\"name\":\"06a9b845-6a95-4432-a78b-83919b28c375\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":3,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\nlet timeframe = 1h;\\nlet scorethreshold + = 5;\\nlet percentotalthreshold = 50;\\nlet TimeSeriesData = CommonSecurityLog\\n| + where isnotempty(DestinationIP) and isnotempty(SourceIP)\\n| where TimeGenerated + between (startofday(ago(starttime))..startofday(ago(endtime)))\\n| project + TimeGenerated,SourceIP, DestinationIP, DeviceVendor\\n| make-series Total=count() + on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) + step timeframe by DeviceVendor;\\n// Filtering specific records associated + with spikes as outliers\\nlet TimeSeriesAlerts=materialize(TimeSeriesData\\n| + extend (anomalies, score, baseline) = series_decompose_anomalies(Total, scorethreshold, + -1, 'linefit')\\n| mv-expand Total to typeof(double), TimeGenerated to typeof(datetime), + anomalies to typeof(double),score to typeof(double), baseline to typeof(long)\\n| + where anomalies > 0 | extend score = round(score,2), AnomalyHour = TimeGenerated\\n| + project DeviceVendor,AnomalyHour, TimeGenerated, Total, baseline, anomalies, + score);\\nlet AnomalyHours = materialize(TimeSeriesAlerts | where TimeGenerated + > ago(2d) | project TimeGenerated);\\n// Join anomalies with Base Data to + popalate associated records for investigation - Results sorted by score in + descending order\\nTimeSeriesAlerts\\n| where TimeGenerated > ago(2d)\\n| + join (\\n CommonSecurityLog\\n| where isnotempty(DestinationIP) and isnotempty(SourceIP)\\n| + where TimeGenerated > ago(2d)\\n| extend DateHour = bin(TimeGenerated, 1h) + // create a new column and round to hour\\n| where DateHour in ((AnomalyHours)) + //filter the dataset to only selected anomaly hours\\n| summarize HourlyCount + = count(), TimeGeneratedMax = arg_max(TimeGenerated, *), DestinationIPlist + = make_set(DestinationIP, 100), DestinationPortlist = make_set(DestinationPort, + 100) by DeviceVendor, SourceIP, TimeGeneratedHour= bin(TimeGenerated, 1h)\\n| + extend AnomalyHour = TimeGeneratedHour\\n) on AnomalyHour, DeviceVendor\\n| + extend PercentTotal = round((HourlyCount / Total) * 100, 3)\\n| where PercentTotal + > percentotalthreshold\\n| project DeviceVendor , AnomalyHour, TimeGeneratedMax, + SourceIP, DestinationIPlist, DestinationPortlist, HourlyCount, PercentTotal, + Total, baseline, score, anomalies\\n| summarize HourlyCount=sum(HourlyCount), + StartTimeUtc=min(TimeGeneratedMax), EndTimeUtc=max(TimeGeneratedMax), SourceIPlist + = make_set(SourceIP, 100), SourceIPMax= arg_max(SourceIP, *), DestinationIPlist + = make_set(DestinationIPlist, 100), DestinationPortlist = make_set(DestinationPortlist, + 100) by DeviceVendor , AnomalyHour, Total, baseline, score, anomalies\\n| + project DeviceVendor , AnomalyHour, EndTimeUtc, SourceIPMax ,SourceIPlist, + DestinationIPlist, DestinationPortlist, HourlyCount, Total, baseline, score, + anomalies\\n| extend timestamp= EndTimeUtc , IPCustomEntity = SourceIPMax\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1030\"],\"displayName\":\"Time + series anomaly detection for total volume of traffic\",\"description\":\"Identifies + anamalous spikes in network traffic logs as compared to baseline or normal + historical patterns.\\nThe query leverages a KQL built-in anomaly detection + algorithm to find large deviations from baseline patterns.\\nSudden increases + in network traffic volume may be an indication of data exfiltration attempts + and should be investigated.\\nThe higher the score, the further it is from + the baseline value.\\nThe output is aggregated to provide summary view of + unique source IP to destination IP address and port traffic observed in the + flagged anomaly hour.\\nThe source IP addresses which were sending less than + percentotalthreshold of the total traffic have been exluded whose value can + be adjusted as needed .\\nYou may have to run queries for individual source + IP addresses from SourceIPlist to determine if anything looks suspicious\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2019-05-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Barracuda\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f110287e-1358-490d-8147-ed804b328514\",\"name\":\"f110287e-1358-490d-8147-ed804b328514\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n AWSCloudTrail + | where TimeGenerated >= ago(dt_lookBack)\\n // renaming time column so + it is clear the log this came from\\n | extend AWSCloudTrail_TimeGenerated + = TimeGenerated\\n)\\non $left.TI_ipEntity == $right.SourceIpAddress\\n| where + AWSCloudTrail_TimeGenerated < ExpirationDateTime\\n| summarize AWSCloudTrail_TimeGenerated + = arg_max(AWSCloudTrail_TimeGenerated, *) by IndicatorId, SourceIpAddress\\n| + project AWSCloudTrail_TimeGenerated, Description, ActivityGroupNames, IndicatorId, + ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, EventName, + EventTypeName, UserIdentityAccountId, UserIdentityPrincipalid, UserIdentityUserName, + SourceIpAddress,\\nNetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| + extend timestamp = AWSCloudTrail_TimeGenerated, IPCustomEntity = SourceIpAddress, + AccountCustomEntity = UserIdentityUserName, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to AWSCloudTrail\",\"description\":\"Identifies a match in AWSCloudTrail + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1d10c95d-ef32-41cd-aca0-c6a7f4523494\",\"name\":\"1d10c95d-ef32-41cd-aca0-c6a7f4523494\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":\"\",\"exclude\":\"spotfire,vc_redist\",\"dataType\":\"string\",\"name\":\"IgnorePrefixList\",\"description\":\"Ignore + provided prefixes of Process Name\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.1\",\"name\":\"RarenessThreshold\",\"description\":\"Set + the rareness threshold for the anomalies generated. All rarity score values + lower than the threshold are flagged as anomalies.\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Rare privileged process calls on a daily basis\",\"description\":\"This anomaly + algorithm identifies rare privileged processes that use either Full or Elevated + security tokens created by an user account. The rarity score is the normalized + probability of a user executing a process based on the number of users executing + that particular process divided by the total number of users in the workspace + within the last 21 days. The threshold value for the rarity score scales according + to the minimum number of users executing the process to ensure the value of + the threshold remains meaningful regardless of sample size. Users accounts + that execute processes rarely executed within a workspace with elevated privileges + may be the victim of a privilege escalation attack.\",\"lastUpdatedDateUTC\":\"2022-03-21T00:00:00Z\",\"createdDateUTC\":\"2022-03-21T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7249500f-3038-4b83-8549-9cd8dfa2d498\",\"name\":\"7249500f-3038-4b83-8549-9cd8dfa2d498\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = dynamic([\\\"de-ma.online\\\", \\\"g20saudi.000webhostapp.com\\\", + \\\"ksat20.000webhostapp.com\\\"]);\\nlet EmailAddresses = dynamic([\\\"munichconference1962@gmail.com\\\",\\\"munichconference@outlook.de\\\", + \\\"munichconference@outlook.com\\\", \\\"t20saudiarabia@gmail.com\\\", \\\"t20saudiarabia@hotmail.com\\\", + \\\"t20saudiarabia@outlook.sa\\\"]);\\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\n(union + isfuzzy=true\\n(CommonSecurityLog \\n| parse Message with * '(' DNSName ')' + * \\n| extend MessageIP = extract(IPRegex, 0, Message)\\n| extend RequestURLIP + = extract(IPRegex, 0, Message)\\n| where (isnotempty(DNSName) and DNSName + has_any (DomainNames)) \\n or (isnotempty(DestinationHostName) and DestinationHostName + has_any (DomainNames)) \\n or (isnotempty(RequestURL) and (RequestURL has_any + (DomainNames)))\\n| extend timestamp = TimeGenerated , AccountCustomEntity + = SourceUserID, HostCustomEntity = DeviceName\\n),\\n(DnsEvents \\n| extend + DestinationIPAddress = IPAddresses, DNSName = Name, Host = Computer\\n| where + DNSName has_any (DomainNames) \\n| extend timestamp = TimeGenerated, IPCustomEntity + = DestinationIPAddress, HostCustomEntity = Host),\\n(VMConnection \\n| parse + RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' *\\n| where isnotempty(DNSName)\\n| + where DNSName has_any (DomainNames)\\n| extend timestamp = TimeGenerated , + HostCustomEntity = Computer),\\n(SecurityAlert\\n| where ProviderName =~ 'OATP'\\n| + extend UPN = case(isnotempty(parse_json(Entities)[0].Upn), parse_json(Entities)[0].Upn, + \\n isnotempty(parse_json(Entities)[1].Upn), parse_json(Entities)[1].Upn,\\n + \ isnotempty(parse_json(Entities)[2].Upn), parse_json(Entities)[2].Upn,\\n + \ isnotempty(parse_json(Entities)[3].Upn), parse_json(Entities)[3].Upn,\\n + \ isnotempty(parse_json(Entities)[4].Upn), parse_json(Entities)[4].Upn,\\n + \ isnotempty(parse_json(Entities)[5].Upn), parse_json(Entities)[5].Upn,\\n + \ isnotempty(parse_json(Entities)[6].Upn), parse_json(Entities)[6].Upn,\\n + \ isnotempty(parse_json(Entities)[7].Upn), parse_json(Entities)[7].Upn,\\n + \ isnotempty(parse_json(Entities)[8].Upn), parse_json(Entities)[8].Upn,\\n + \ parse_json(Entities)[9].Upn)\\n| where Entities has_any + (EmailAddresses)\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = tostring(UPN)),\\n(AzureDiagnostics\\n| where ResourceType =~ \\\"AZUREFIREWALLS\\\"\\n| + where msg_s has_any (DomainNames)\\n| extend timestamp = TimeGenerated))\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\",\"InitialAccess\"],\"techniques\":[\"T1071\",\"T1566\"],\"displayName\":\"Known + PHOSPHORUS group domains/IP - October 2020\",\"description\":\"Matches IOCs + related to PHOSPHORUS group activity published October 2020 with CommonSecurityLog, + DnsEvents, OfficeActivity and VMConnection dataTypes.\\nReferences: \",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-10-20T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog + (Cisco)\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog + (Zscaler)\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog + (Fortinet)\"]},{\"connectorId\":\"OfficeATP\",\"dataTypes\":[\"SecurityAlert + (OATP)\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics + (Azure Firewall)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5ef06767-b37c-4818-b035-47de950d0046\",\"name\":\"5ef06767-b37c-4818-b035-47de950d0046\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + How far back to look for events from\\nlet timeframe = 1d;\\n// How close + together build events and file modifications should occur to alert (make this + smaller to reduce FPs)\\nlet time_window = 5m;\\n// Edit this to include build + processes used\\nlet build_processes = dynamic([\\\"MSBuild.exe\\\", \\\"dotnet.exe\\\", + \\\"VBCSCompiler.exe\\\"]);\\n// Include any processes that you want to allow + to edit files during/around the build process\\nlet allow_list = dynamic([\\\"\\\"]);\\n(union + isfuzzy=true\\n(SecurityEvent\\n| where TimeGenerated > ago(timeframe)\\n// + Look for build process starts\\n| where EventID == 4688\\n| where Process + has_any (build_processes)\\n| summarize by BuildParentProcess=ParentProcessName, + BuildProcess=Process, BuildAccount = Account, Computer, BuildCommand=CommandLine, + timekey= bin(TimeGenerated, time_window), BuildProcessTime=TimeGenerated\\n| + join kind=inner(\\nSecurityEvent\\n| where TimeGenerated > ago(timeframe)\\n// + Look for file modifications to code file\\n| where EventID == 4663\\n| where + Process !in (allow_list)\\n// Look for code files, edit this to include file + extensions used in build.\\n| where ObjectName endswith \\\".cs\\\" or ObjectName + endswith \\\".cpp\\\"\\n// 0x6 and 0x4 for file append, 0x100 for file replacements\\n| + where AccessMask == \\\"0x6\\\" or AccessMask == \\\"0x4\\\" or AccessMask + == \\\"0X100\\\"\\n| summarize by FileEditParentProcess=ParentProcessName, + FileEditAccount = Account, Computer, FileEdited=ObjectName, FileEditProcess=ProcessName, + timekey= bin(TimeGenerated, time_window), FileEditTime=TimeGenerated)\\n// + join where build processes and file modifications seen at same time on same + host\\non timekey, Computer\\n// Limit to only where the file edit happens + after the build process starts\\n| where BuildProcessTime <= FileEditTime\\n| + summarize make_set(FileEdited), make_set(FileEditProcess), make_set(FileEditAccount) + by timekey, Computer, BuildParentProcess, BuildProcess\\n| extend HostCustomEntity=Computer, + timestamp=timekey\\n),\\n(WindowsEvent\\n| where TimeGenerated > ago(timeframe)\\n// + Look for build process starts\\n| where EventID == 4688 and EventData has_any + (build_processes)\\n| extend NewProcessName = tostring(EventData.NewProcessName)\\n| + extend Process=tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n| where Process + has_any (build_processes)\\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend CommandLine = tostring(EventData.CommandLine) + \\n| summarize by BuildParentProcess=ParentProcessName, BuildProcess=Process, + BuildAccount = Account, Computer, BuildCommand=CommandLine, timekey= bin(TimeGenerated, + time_window), BuildProcessTime=TimeGenerated\\n| join kind=inner(\\nWindowsEvent\\n| + where TimeGenerated > ago(timeframe)\\n// Look for file modifications to code + file\\n| where EventID == 4663 and EventData has_any (\\\"0x6\\\", \\\"0x4\\\", + \\\"0X100\\\") and EventData has_any (\\\".cs\\\", \\\".cpp\\\")\\n| extend + NewProcessName = tostring(EventData.NewProcessName)\\n| extend Process=tostring(split(NewProcessName, + '\\\\\\\\')[-1])\\n| where Process !in (allow_list)\\n// Look for code files, + edit this to include file extensions used in build.\\n| extend ObjectName + = tostring(EventData.ObjectName)\\n| where ObjectName endswith \\\".cs\\\" + or ObjectName endswith \\\".cpp\\\"\\n// 0x6 and 0x4 for file append, 0x100 + for file replacements\\n| extend AccessMask = tostring(EventData.AccessMask) + \ \\n| where AccessMask == \\\"0x6\\\" or AccessMask == \\\"0x4\\\" or AccessMask + == \\\"0X100\\\"\\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend ProcessName = tostring(EventData.ProcessName)\\n| + summarize by FileEditParentProcess=ParentProcessName, FileEditAccount = Account, + Computer, FileEdited=ObjectName, FileEditProcess=ProcessName, timekey= bin(TimeGenerated, + time_window), FileEditTime=TimeGenerated)\\n// join where build processes + and file modifications seen at same time on same host\\non timekey, Computer\\n// + Limit to only where the file edit happens after the build process starts\\n| + where BuildProcessTime <= FileEditTime\\n| summarize make_set(FileEdited), + make_set(FileEditProcess), make_set(FileEditAccount) by timekey, Computer, + BuildParentProcess, BuildProcess\\n| extend HostCustomEntity=Computer, timestamp=timekey\\n))\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1554\"],\"displayName\":\"Potential + Build Process Compromise\",\"description\":\"The query looks for source code + files being modified immediately after a build process is started. The purpose + of this is to look for malicious code injection during the build process.\\nMore + details: https://techcommunity.microsoft.com/t5/azure-sentinel/monitoring-the-software-supply-chain-with-azure-sentinel/ba-p/2176463\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a83ef0f4-dace-4767-bce3-ebd32599d2a0\",\"name\":\"a83ef0f4-dace-4767-bce3-ebd32599d2a0\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"DnsEvents\\n| + where Name contains \\\".\\\"\\n| where Name has_any (\\\"tor2web.org\\\", + \\\"tor2web.com\\\", \\\"torlink.co\\\", \\\"onion.to\\\", \\\"onion.ink\\\", + \\\"onion.cab\\\", \\\"onion.nu\\\", \\\"onion.link\\\", \\n\\\"onion.it\\\", + \\\"onion.city\\\", \\\"onion.direct\\\", \\\"onion.top\\\", \\\"onion.casa\\\", + \\\"onion.plus\\\", \\\"onion.rip\\\", \\\"onion.dog\\\", \\\"tor2web.fi\\\", + \\n\\\"tor2web.blutmagie.de\\\", \\\"onion.sh\\\", \\\"onion.lu\\\", \\\"onion.pet\\\", + \\\"t2w.pw\\\", \\\"tor2web.ae.org\\\", \\\"tor2web.io\\\", \\\"tor2web.xyz\\\", + \\\"onion.lt\\\", \\n\\\"s1.tor-gateways.de\\\", \\\"s2.tor-gateways.de\\\", + \\\"s3.tor-gateways.de\\\", \\\"s4.tor-gateways.de\\\", \\\"s5.tor-gateways.de\\\", + \\\"hiddenservice.net\\\")\\n| extend timestamp = TimeGenerated, IPCustomEntity + = ClientIP, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1048\"],\"displayName\":\"DNS + events related to ToR proxies\",\"description\":\"Identifies IP addresses + performing DNS lookups associated with common ToR proxies.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/42436753-9944-4d70-801c-daaa4d19ddd2\",\"name\":\"42436753-9944-4d70-801c-daaa4d19ddd2\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT15M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"eventGroupingSettings\":{\"aggregationKind\":\"AlertPerResult\"},\"severity\":\"Medium\",\"query\":\"let + threatCategory=\\\"Powershell\\\";\\nlet knownUserAgentsIndicators = materialize(externaldata(UserAgent:string, + Category:string)\\n [ @\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/UnusualUserAgents.csv\\\"]\\n + \ with(format=\\\"csv\\\", ignoreFirstRecord=True));\\nlet knownUserAgents=toscalar(knownUserAgentsIndicators + | where Category==threatCategory | where isnotempty(UserAgent) | summarize + make_list(UserAgent));\\nlet customUserAgents=toscalar(_GetWatchlist(\\\"UnusualUserAgents\\\") + | where SearchKey==threatCategory | extend UserAgent=column_ifexists(\\\"UserAgent\\\",\\\"\\\") + | where isnotempty(UserAgent) | summarize make_list(UserAgent));\\nlet fullUAList + = array_concat(knownUserAgents,customUserAgents);\\n_Im_WebSession(httpuseragent_has_any=fullUAList)\\n| + project SrcIpAddr, Url, TimeGenerated,HttpUserAgent, SrcUsername\",\"customDetails\":{\"UserAgent\":\"HttpUserAgent\"},\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"Url\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"SrcUsername\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Host + {{SrcIpAddr}} is potentially running PowerShell\",\"alertDescriptionFormat\":\"The + host at address {{SrcIpAddr}} sent an HTTP request to the URL {{Url}} with + the HTTP user agent header {{HttpUserAgent}}. This user agent is known to + be used by PoerShell and indicates suspicious activity on the host.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\",\"DefenseEvasion\"],\"displayName\":\"A + host is potentially running PowerShell to send HTTP(S) requests (ASIM Web + Session schema)\",\"description\":\"This rule identifies a web request with + a user agent header known to belong PowerShell.
You can add custom Powershell + indicating User-Agent headers using a watchlist, for more information refer + to the [UnusualUserAgents Watchlist](https://aka.ms/ASimUnusualUserAgentsWatchlist).

\\n + This analytic rule uses [ASIM](https://aka.ms/AboutASIM) and supports any + built-in or custom source that supports the ASIM WebSession schema (ASIM WebSession + Schema)\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2021-12-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/56fe0db0-6779-46fa-b3c5-006082a53064\",\"name\":\"56fe0db0-6779-46fa-b3c5-006082a53064\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"let + tokens = dynamic([\\\"416\\\",\\\"208\\\",\\\"128\\\",\\\"120\\\",\\\"96\\\",\\\"80\\\",\\\"72\\\",\\\"64\\\",\\\"48\\\",\\\"44\\\",\\\"40\\\",\\\"g5\\\",\\\"gs5\\\",\\\"g4\\\",\\\"gs4\\\",\\\"nc12\\\",\\\"nc24\\\",\\\"nv12\\\"]);\\nlet + operationList = dynamic([\\\"microsoft.compute/virtualmachines/write\\\", + \\\"microsoft.resources/deployments/write\\\"]);\\nAzureActivity\\n| where + tolower(OperationNameValue) in (operationList)\\n| where ActivityStatusValue + == \\\"Accepted\\\" \\n| where isnotempty(Properties)\\n| extend vmSize = + tolower(tostring(parse_json(tostring(parse_json(tostring(parse_json(tostring(parse_json(Properties).responseBody)).properties)).hardwareProfile)).vmSize))\\n| + where isnotempty(vmSize)\\n| where vmSize has_any (tokens) \\n| extend ComputerName + = tostring(parse_json(tostring(parse_json(tostring(parse_json(tostring(parse_json(Properties).responseBody)).properties)).osProfile)).computerName)\\n| + extend clientIpAddress = tostring(parse_json(HTTPRequest).clientIpAddress)\\n| + project TimeGenerated, OperationNameValue, ActivityStatusValue, Caller, CallerIpAddress, + ComputerName, vmSize\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = Caller, IPCustomEntity = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"NRT + Creation of expensive computes in Azure\",\"description\":\"Identifies the + creation of large size/expensive VMs (GPU or with large no of virtual CPUs) + in Azure.\\nAdversary may create new or update existing virtual machines sizes + to evade defenses \\nor use it for cryptomining purposes.\\nFor Windows/Linux + Vm Sizes - https://docs.microsoft.com/azure/virtual-machines/windows/sizes + \\nAzure VM Naming Conventions - https://docs.microsoft.com/azure/virtual-machines/vm-naming-conventions\",\"lastUpdatedDateUTC\":\"2022-03-31T00:00:00Z\",\"createdDateUTC\":\"2020-08-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5d33fc63-b83b-4913-b95e-94d13f0d379f\",\"name\":\"5d33fc63-b83b-4913-b95e-94d13f0d379f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet fileHashIndicators = ThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n| where isnotempty(FileHashValue);\\n// Handle matches + against both lower case and uppercase versions of the hash:\\n(fileHashIndicators + | extend FileHashValue = tolower(FileHashValue)\\n| union (fileHashIndicators + | extend FileHashValue = toupper(FileHashValue)))\\n// using innerunique to + keep perf fast and result set low, we only need one match to indicate potential + malicious activity that needs to be investigated\\n| join kind=innerunique + (\\n CommonSecurityLog | where TimeGenerated >= ago(dt_lookBack)\\n | where + isnotempty(FileHash)\\n | extend CommonSecurityLog_TimeGenerated = TimeGenerated\\n + \ )\\non $left.FileHashValue == $right.FileHash\\n| where CommonSecurityLog_TimeGenerated + < ExpirationDateTime\\n| summarize CommonSecurityLog_TimeGenerated = arg_max(CommonSecurityLog_TimeGenerated, + *) by IndicatorId, FileHashValue\\n| project CommonSecurityLog_TimeGenerated, + Description, ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, + ConfidenceScore,\\nSourceIP, SourcePort, DestinationIP, DestinationPort, SourceUserID, + SourceUserName, DeviceName, DeviceAction,\\nRequestURL, DestinationUserName, + DestinationUserID, ApplicationProtocol, Activity\\n| extend timestamp = CommonSecurityLog_TimeGenerated, + IPCustomEntity = SourceIP, HostCustomEntity = DeviceName, AccountCustomEntity + = SourceUserName, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map File Hash to CommonSecurityLog Event\",\"description\":\"Identifies a + match in CommonSecurityLog Event data from any FileHash IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1f3b4dfd-21ff-4ed3-8e27-afc219e05c50\",\"name\":\"1f3b4dfd-21ff-4ed3-8e27-afc219e05c50\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"AuditLogs\\n| + where LoggedByService =~ \\\"PIM\\\"\\n| where Category =~ \\\"RoleManagement\\\"\\n| + where ActivityDisplayName has \\\"Disable PIM Alert\\\"\\n| extend IpAddress + = case(\\n isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)) + and tostring(parse_json(tostring(InitiatedBy.user)).ipAddress) != 'null', + tostring(parse_json(tostring(InitiatedBy.user)).ipAddress), \\n isnotempty(tostring(parse_json(tostring(InitiatedBy.app)).ipAddress)) + and tostring(parse_json(tostring(InitiatedBy.app)).ipAddress) != 'null', tostring(parse_json(tostring(InitiatedBy.app)).ipAddress),\\n + \ 'Not Available')\\n| extend InitiatedBy = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)), + \\n tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName), tostring(parse_json(tostring(InitiatedBy.app)).displayName)), + UserRoles = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\\n| + project InitiatedBy, ActivityDateTime, ActivityDisplayName, IpAddress, AADOperationType, + AADTenantId, ResourceId, CorrelationId, Identity\\n| extend timestamp = ActivityDateTime, + IPCustomEntity = IpAddress, AccountCustomEntity = tolower(InitiatedBy), ResourceCustomEntity + = ResourceId\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"AzureResource\",\"fieldMappings\":[{\"identifier\":\"ResourceId\",\"columnName\":\"ResourceCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"Detect + PIM Alert Disabling activity\",\"description\":\"Privileged Identity Management + (PIM) generates alerts when there is suspicious or unsafe activity in Azure + Active Directory (Azure AD) organization. \\nThis query will help detect attackers + attempts to disable in product PIM alerts which are associated with Azure + MFA requirements and could indicate activation of privileged access\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-09-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d99cf5c3-d660-436c-895b-8a8f8448da23\",\"name\":\"d99cf5c3-d660-436c-895b-8a8f8448da23\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SigninLogs\\n| + where ResultType == 500121\\n| extend additionalDetails_ = tostring(Status.additionalDetails)\\n| + where additionalDetails_ =~ \\\"MFA denied; user declined the authentication\\\"\\n| + extend AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"},{\"identifier\":\"AadUserId\",\"columnName\":\"UserId\"},{\"identifier\":\"AadTenantId\",\"columnName\":\"AADTenantId\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"MFA + Rejected by User\",\"description\":\"Identifies accurances where a user has + rejected an MFA prompt. This could be an indicator that a threat actor has + compromised the username and password of this user account and is using it + to try and log into the account.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-user-accounts#monitoring-for-failed-unusual-sign-ins\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c097bfdb-8b4b-4a98-b74d-1871ffd50a03\",\"name\":\"c097bfdb-8b4b-4a98-b74d-1871ffd50a03\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.6\",\"customizableObservations\":{\"multiSelectObservations\":[{\"supportedValues\":[\"2-Interactive\",\"3-Network\",\"4-Batch\",\"5-Service\",\"7-Unlock\",\"8-NetworkCleartext\",\"9-NewCredentials\",\"10-RemoteInteractive\",\"11-CachedInteractive\"],\"values\":[\"2-Interactive\",\"3-Network\",\"4-Batch\",\"5-Service\",\"7-Unlock\",\"8-NetworkCleartext\",\"9-NewCredentials\",\"10-RemoteInteractive\",\"11-CachedInteractive\"],\"supportedValuesKql\":null,\"valuesKql\":null,\"name\":\"Logon + Types\",\"description\":\"Include only selected logon types in anomaly results.\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.03\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"(Preview) + Attempted user account bruteforce per logon type\",\"description\":\"This + algorithm detects an unusually high volume of failed login attempts per user + account per logon type. The model is trained on the previous 21 days of security + event ID 4625 on an account and a logon type. It indicates anomalous high + volume of failed login attempts with certain logon type in the last day.\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2021-04-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d0aa8969-1bbe-4da3-9e76-09e5f67c9d85\",\"name\":\"d0aa8969-1bbe-4da3-9e76-09e5f67c9d85\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n| extend + TI_ipEntity = iff(isnotempty(NetworkIP), NetworkIP, NetworkDestinationIP)\\n| + extend TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(NetworkSourceIP), + NetworkSourceIP, TI_ipEntity)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, TI_ipEntity)\\n// + using innerunique to keep perf fast and result set low, we only need one match + to indicate potential malicious activity that needs to be investigated\\n| + join kind=innerunique (\\n AzureDiagnostics\\n | where TimeGenerated + >= ago(dt_lookBack)\\n | where ResourceProvider == 'MICROSOFT.SQL'\\n + \ | where Category == 'SQLSecurityAuditEvents'\\n | extend SQLSecurityAuditEvents_TimeGenerated + = TimeGenerated\\n // projecting fields with column if exists as this + is in AzureDiag and if the event is not in the table, then queries will fail + due to event specific schemas\\n | extend ClientIP = column_ifexists(\\\"client_ip_s\\\", + \\\"Not Available\\\"), Action = column_ifexists(\\\"action_name_s\\\", \\\"Not + Available\\\"), \\n Application = column_ifexists(\\\"application_name_s\\\", + \\\"Not Available\\\"), HostName = column_ifexists(\\\"host_name_s\\\", \\\"Not + Available\\\")\\n)\\non $left.TI_ipEntity == $right.ClientIP\\n| where SQLSecurityAuditEvents_TimeGenerated + < ExpirationDateTime\\n| summarize SQLSecurityAuditEvents_TimeGenerated = + arg_max(SQLSecurityAuditEvents_TimeGenerated, *) by IndicatorId, ClientIP\\n| + project SQLSecurityAuditEvents_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, + ResourceId, ClientIP, Action, Application, HostName, NetworkIP, NetworkDestinationIP, + NetworkSourceIP, EmailSourceIpAddress\\n| extend timestamp = SQLSecurityAuditEvents_TimeGenerated\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ClientIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to Azure SQL Security Audit Events\",\"description\":\"Identifies + a match in SQLSecurityAuditEvents from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2022-06-09T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4a3f5ed7-8da5-4ce2-af6f-c9ada45060f2\",\"name\":\"4a3f5ed7-8da5-4ce2-af6f-c9ada45060f2\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet emailregex = @'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$';\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n//Filtering the table for Email related IOCs\\n| where + isnotempty(EmailSenderAddress)\\n// using innerunique to keep perf fast and + result set low, we only need one match to indicate potential malicious activity + that needs to be investigated\\n| join kind=innerunique (\\n OfficeActivity + | where TimeGenerated >= ago(dt_lookBack) and isnotempty(UserId)\\n | where + UserId matches regex emailregex\\n | extend OfficeActivity_TimeGenerated + = TimeGenerated\\n)\\non $left.EmailSenderAddress == $right.UserId\\n| where + OfficeActivity_TimeGenerated < ExpirationDateTime\\n| summarize OfficeActivity_TimeGenerated + = arg_max(OfficeActivity_TimeGenerated, *) by IndicatorId, UserId\\n| project + OfficeActivity_TimeGenerated, Description, ActivityGroupNames, IndicatorId, + ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nEmailSenderName, EmailRecipient, + EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, + UserId, ClientIP, Operation, UserType, RecordType, OfficeWorkload, Parameters\\n| + extend timestamp = OfficeActivity_TimeGenerated, AccountCustomEntity = UserId, + IPCustomEntity = ClientIP, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Email entity to OfficeActivity\",\"description\":\"Identifies a match + in OfficeActivity table from any Email IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/44a555d8-ecee-4a25-95ce-055879b4b14b\",\"name\":\"44a555d8-ecee-4a25-95ce-055879b4b14b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeBin = 10m;\\nlet portThreshold = 30;\\nW3CIISLog\\n| extend scStatusFull + = strcat(scStatus, \\\".\\\",scSubStatus) \\n// Map common IIS codes\\n| extend + scStatusFull_Friendly = case(\\nscStatusFull == \\\"401.0\\\", \\\"Access + denied.\\\",\\nscStatusFull == \\\"401.1\\\", \\\"Logon failed.\\\",\\nscStatusFull + == \\\"401.2\\\", \\\"Logon failed due to server configuration.\\\",\\nscStatusFull + == \\\"401.3\\\", \\\"Unauthorized due to ACL on resource.\\\",\\nscStatusFull + == \\\"401.4\\\", \\\"Authorization failed by filter.\\\",\\nscStatusFull + == \\\"401.5\\\", \\\"Authorization failed by ISAPI/CGI application.\\\",\\nscStatusFull + == \\\"403.0\\\", \\\"Forbidden.\\\",\\nscStatusFull == \\\"403.4\\\", \\\"SSL + required.\\\",\\n\\\"See - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\\\")\\n// + Mapping to Hex so can be mapped using website in comments above\\n| extend + scWin32Status_Hex = tohex(tolong(scWin32Status)) \\n// Map common win32 codes\\n| + extend scWin32Status_Friendly = case(\\nscWin32Status_Hex =~ \\\"775\\\", + \\\"The referenced account is currently locked out and cannot be logged on + to.\\\",\\nscWin32Status_Hex =~ \\\"52e\\\", \\\"Logon failure: Unknown user + name or bad password.\\\",\\nscWin32Status_Hex =~ \\\"532\\\", \\\"Logon failure: + The specified account password has expired.\\\",\\nscWin32Status_Hex =~ \\\"533\\\", + \\\"Logon failure: Account currently disabled.\\\", \\nscWin32Status_Hex =~ + \\\"2ee2\\\", \\\"The request has timed out.\\\", \\nscWin32Status_Hex =~ + \\\"0\\\", \\\"The operation completed successfully.\\\", \\nscWin32Status_Hex + =~ \\\"1\\\", \\\"Incorrect function.\\\", \\nscWin32Status_Hex =~ \\\"2\\\", + \\\"The system cannot find the file specified.\\\", \\nscWin32Status_Hex =~ + \\\"3\\\", \\\"The system cannot find the path specified.\\\", \\nscWin32Status_Hex + =~ \\\"4\\\", \\\"The system cannot open the file.\\\", \\nscWin32Status_Hex + =~ \\\"5\\\", \\\"Access is denied.\\\", \\nscWin32Status_Hex =~ \\\"8009030e\\\", + \\\"SEC_E_NO_CREDENTIALS\\\", \\nscWin32Status_Hex =~ \\\"8009030C\\\", \\\"SEC_E_LOGON_DENIED\\\", + \\n\\\"See - https://msdn.microsoft.com/library/cc231199.aspx\\\")\\n// decode + URI when available\\n| extend decodedUriQuery = url_decode(csUriQuery)\\n// + Count of attempts by client IP on many ports\\n| summarize makeset(sPort), + makeset(decodedUriQuery), makeset(csUserName), makeset(sSiteName), makeset(sPort), + makeset(csUserAgent), makeset(csMethod), makeset(csUriQuery), makeset(scStatusFull), + makeset(scStatusFull_Friendly), makeset(scWin32Status_Hex), makeset(scWin32Status_Friendly), + ConnectionsCount = count() by bin(TimeGenerated, timeBin), cIP, Computer, + sIP\\n| extend portCount = arraylength(set_sPort)\\n| where portCount >= portThreshold\\n| + project TimeGenerated, cIP, set_sPort, set_csUserName, set_decodedUriQuery, + Computer, set_sSiteName, sIP, set_csUserAgent, set_csMethod, set_scStatusFull, + set_scStatusFull_Friendly, set_scWin32Status_Hex, set_scWin32Status_Friendly, + ConnectionsCount, portCount\\n| order by portCount\\n| extend timestamp = + TimeGenerated, IPCustomEntity = cIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"High + count of connections by client IP on many ports\",\"description\":\"Identifies + when 30 or more ports are used for a given client IP in 10 minutes occurring + on the IIS server.\\nThis could be indicative of attempted port scanning or + exploit attempt at internet facing web applications. \\nThis could also simply + indicate a misconfigured service or device.\\nReferences:\\nIIS status code + mapping - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\\nWin32 + Status code mapping - https://msdn.microsoft.com/library/cc231199.aspx\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-03-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/edc946ae-cba8-419f-8e90-309966895956\",\"name\":\"edc946ae-cba8-419f-8e90-309966895956\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.3\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":[{\"supportedValues\":[\"Include + regularly repeating anomalies for URI stems\",\"Exclude regularly repeating + anomalies for URI stems\"],\"supportedValuesKql\":null,\"value\":\"Exclude + regularly repeating anomalies for URI stems\",\"name\":\"Handle regularly + repeating anomalies for URI stems\",\"description\":\"Choose to exclude URI + stems that have been regularly occuring in the Anomalies table in Log Analytics.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"prioritizeExcludeObservations\":[{\"prioritize\":\".asp, + .aspx, .armx, .asax, .ashz, .asmx, .axd, .cshtml, .php, .phps, .php3, .php4, + .php5, .php7, .jsp, .jspx, .cfm, .cfml, .phtml\",\"exclude\":null,\"dataType\":\"string\",\"name\":\"Prioritize + script suffixes of the URI stems\",\"description\":\"Give comma separated + script suffixes of the URI stems that should be included in the prioritize + field.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"},{\"prioritize\":null,\"exclude\":\"\",\"dataType\":\"string\",\"name\":\"Exclude + noisy URI stems\",\"description\":\"Give comma separated URI stems that are + frequently observing noisy sessions, and should be excluded from the Anomalies + table in Log Analytics.\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.2\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\",\"Persistence\"],\"techniques\":[\"T1190\",\"T1505\"],\"displayName\":\"(Preview) + Anomalous web request activity\",\"description\":\"This algorithm groups the + W3CIIS logs into per site name and per URI stem hourly sessions.\\nThe machine + learning model identifies the sessions with anomalous requests that triggered + response code 5xx in the last day.\\n5xx codes are an indication that some + application instability or error condition has been triggered by the request.\\nThey + can be an indication that an attacker is probing the URI stem for vulnerabilities + and configuration issues, performing some exploitation activity such as SQL + injection, or leveraging an unpatched vulnerability.\\n\\nThe algorithm uses + 6 days of data for training.\\nIt identifies unusual high volume of web requests + that generated respond code 5xx in the last day.\",\"lastUpdatedDateUTC\":\"2022-05-11T00:00:00Z\",\"createdDateUTC\":\"2021-04-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2de8abd6-a613-450e-95ed-08e503369fb3\",\"name\":\"2de8abd6-a613-450e-95ed-08e503369fb3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AzureDiagnostics\\n| + where details_data_s has \\\"jndi:\\\"\\n| parse details_data_s with * '${' + MaliciousCommand '}' *\\n| extend EncodeCmd = iff(MaliciousCommand has 'Base64/', + split(split(MaliciousCommand, \\\"Base64/\\\",1)[0], \\\"}\\\", 0)[0], \\\"\\\")\\n| + extend EncodeCmd1 = iff(MaliciousCommand has 'base64/', split(split(MaliciousCommand, + \\\"base64/\\\",1)[0], \\\"}\\\", 0)[0], \\\"\\\")\\n| extend CmdLine = iff( + isnotempty(EncodeCmd), EncodeCmd, EncodeCmd1)\\n| extend DecodedCmdLine = + base64_decode_tostring(tostring(CmdLine))\\n| extend DecodedCmdLine = iff( + isnotempty(DecodedCmdLine), DecodedCmdLine, \\\"Unable to decode\\\")\\n| + project TimeGenerated, Target=hostname_s, MaliciousHost = clientIp_s, MaliciousCommand, + details_data_s, DecodedCmdLine, Message, ruleSetType_s, OperationName, SubscriptionId, + details_message_s, details_file_s \\n| extend IPCustomEntity = MaliciousHost, + timestamp = TimeGenerated\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"Azure + WAF matching for Log4j vuln(CVE-2021-44228)\",\"description\":\"This query + will alert on a positive pattern match by Azure WAF for CVE-2021-44228 log4j + vulnerability exploitation attempt. If possible, it then decodes the malicious + command for further analysis.\\n Refrence: https://www.microsoft.com/security/blog/2021/12/11/guidance-for-preventing-detecting-and-hunting-for-cve-2021-44228-log4j-2-exploitation/\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-12-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"WAF\",\"dataTypes\":[\"AzureDiagnostics\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/972c89fa-c969-4d12-932f-04d55d145299\",\"name\":\"972c89fa-c969-4d12-932f-04d55d145299\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"( + union isfuzzy=true\\n(SecurityEvent\\n| where EventID==4688\\n| where isnotempty(CommandLine)\\n| + extend FileName = Process, ProcessCommandLine = CommandLine\\n| where (FileName + in~('control.exe','rundll32.exe') and ProcessCommandLine has '.cpl:')\\n or + ProcessCommandLine matches regex @'\\\\\\\".[a-zA-Z]{2,4}:\\\\.\\\\.\\\\/\\\\.\\\\.'\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity + = Computer\\n),\\n(DeviceProcessEvents\\n| where (FileName in~('control.exe','rundll32.exe') + and ProcessCommandLine has '.cpl:')\\nor ProcessCommandLine matches regex + @'\\\\\\\".[a-zA-Z]{2,4}:\\\\.\\\\.\\\\/\\\\.\\\\.'\\n| extend timestamp = + TimeGenerated, AccountCustomEntity = InitiatingProcessAccountUpn, HostCustomEntity + = DeviceName\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 1 \\n| extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, EventLog, + Computer, EventLevel, EventLevelName, UserName, RenderedDescription, MG, ManagementGroupName, + Type, _ResourceId)\\n| extend Image = column_ifexists(\\\"Image\\\", \\\"\\\"), + ProcessCommandLine = column_ifexists(\\\"CommandLine\\\", \\\"\\\")\\n| extend + FileName = split(Image, '\\\\\\\\', -1)[-1]\\n| where (FileName in~('control.exe','rundll32.exe') + and ProcessCommandLine has '.cpl:')\\n or ProcessCommandLine matches regex + @'\\\\\\\".[a-zA-Z]{2,4}:\\\\.\\\\.\\\\/\\\\.\\\\.'\\n| extend timestamp = + TimeGenerated, AccountCustomEntity = UserName, HostCustomEntity = Computer\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1203\"],\"displayName\":\"MSHTML + vulnerability CVE-2021-40444 attack\",\"description\":\"This query detects + attacks that exploit the CVE-2021-40444 MSHTML vulnerability using specially + crafted Microsoft Office documents. \\n The detection searches for relevant + files used in the attack along with regex matches in commnadline to look for + pattern similar to : \\\".cpl:../../msword.inf\\\"\\n Refrence: https://www.microsoft.com/security/blog/2021/09/15/analyzing-attacks-that-exploit-the-mshtml-cve-2021-40444-vulnerability/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-09-17T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4ca74dc0-8352-4ac5-893c-73571cc78331\",\"name\":\"4ca74dc0-8352-4ac5-893c-73571cc78331\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + keywords = dynamic([\\\"secret\\\", \\\"secrets\\\", \\\"password\\\", \\\"PAT\\\", + \\\"passwd\\\", \\\"pswd\\\", \\\"pwd\\\", \\\"cred\\\", \\\"creds\\\", \\\"credentials\\\", + \\\"credential\\\", \\\"key\\\"]);\\nAzureDevOpsAuditing\\n| where OperationName + =~ \\\"Library.VariableGroupModified\\\"\\n| extend Type = tostring(Data.Type)\\n| + extend VariableGroupId = tostring(Data.VariableGroupId)\\n| extend VariableGroupName + = tostring(Data.VariableGroupName)\\n| mv-expand Data.Variables\\n| where + VariableGroupName has_any (keywords) or Data_Variables has_any (keywords)\\n| + where Type != \\\"AzureKeyVault\\\"\\n| where Data_Variables !has \\\"IsSecret\\\"\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity + = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1552\"],\"displayName\":\"Azure + DevOps Variable Secret Not Secured\",\"description\":\"Credentials used in + the build process may be stored as Azure DevOps variables. To secure these + variables they should be stored in KeyVault or marked as Secrets. \\nThis + detection looks for new variables added with names that suggest they are credentials + but where they are not set as Secrets or stored in KeyVault.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/15049017-527f-4d3b-b011-b0e99e68ef45\",\"name\":\"15049017-527f-4d3b-b011-b0e99e68ef45\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + procList = externaldata(Process:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Microsoft_Lolbas_Execution_Binaries.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nSecurityEvent\\n| where + EventID == 4688 and Process has_any (procList) and not (NewProcessName has + (\\\"C:\\\\\\\\Windows\\\\\\\\\\\"))\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by EventID, Computer, SubjectUserName, NewProcessName, + Process, CommandLine\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"SubjectUserName\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLine\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1059\"],\"displayName\":\"Windows + Binaries Executed from Non-Default Directory\",\"description\":\"The query + detects Windows binaries, that can be executed from a non-default directory + (e.g. C:\\\\Windows\\\\, C:\\\\Windows\\\\System32 etc.). \\nRef: https://lolbas-project.github.io/\",\"lastUpdatedDateUTC\":\"2022-02-15T00:00:00Z\",\"createdDateUTC\":\"2022-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/25bf2f45-1cf0-47d2-b394-a7b331d707b3\",\"name\":\"25bf2f45-1cf0-47d2-b394-a7b331d707b3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"2.1.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":[{\"supportedValues\":[\"Yes\",\"No\"],\"supportedValuesKql\":null,\"value\":\"Yes\",\"name\":\"Use + region adjacency\",\"description\":\"Suppress anomalies originated from two + adjacent regions.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"},{\"supportedValues\":[\"Yes\",\"No\"],\"supportedValuesKql\":null,\"value\":\"No\",\"name\":\"Check + for matching device\",\"description\":\"Suppress anomalies which are originated + from the same device.\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"prioritizeExcludeObservations\":null,\"thresholdObservations\":null,\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1133\",\"T1078\"],\"displayName\":\"(Preview) + Suspicious geography change in Palo Alto GlobalProtect account logins\",\"description\":\"When + a Palo Alto GlobalProtect account logs in from a geographically new region + that is not the same as the last region the day before, an anomaly will be + generated.\",\"lastUpdatedDateUTC\":\"2022-03-08T00:00:00Z\",\"createdDateUTC\":\"2021-04-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2f4165a6-c4fb-4e94-861e-37f1b4d6c0e6\",\"name\":\"2f4165a6-c4fb-4e94-861e-37f1b4d6c0e6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Adjust this to use a longer timeframe to identify ADFS servers\\n//let lookback + = 0d;\\n// Adjust this to adjust detection timeframe\\n//let timeframe = 1d;\\n// + SamAccountName of AD FS Service Account. Filter on the use of a specific AD + FS user account\\n//let adfsuser = 'adfsadmin';\\n// Identify ADFS Servers\\nlet + ADFS_Servers = (\\n SecurityEvent\\n //| where TimeGenerated > ago(timeframe+lookback)\\n + \ | where EventSourceName == 'AD FS Auditing'\\n | distinct Computer\\n);\\nSecurityEvent\\n + \ //| where TimeGenerated > ago(timeframe)\\n | where Computer in~ (ADFS_Servers)\\n + \ // A token of type 'http://schemas.microsoft.com/ws/2006/05/servicemodel/tokens/SecureConversation'\\n + \ // for relying party '-' was successfully authenticated.\\n | where + EventID == 412\\n | extend EventData = parse_xml(EventData).EventData.Data\\n + \ | extend InstanceId = tostring(EventData[0])\\n| join kind=inner\\n(\\n + \ SecurityEvent\\n //| where TimeGenerated > ago(timeframe)\\n | where + Computer in~ (ADFS_Servers)\\n // Events to identify caller identity from + event 412\\n | where EventID == 501\\n | extend EventData = parse_xml(EventData).EventData.Data\\n + \ | where tostring(EventData[1]) contains 'identity/claims/name'\\n | + extend InstanceId = tostring(EventData[0])\\n | extend ClaimsName = tostring(EventData[2])\\n + \ // Filter on the use of a specific AD FS user account\\n //| where + ClaimsName contains adfsuser\\n)\\non $left.InstanceId == $right.InstanceId\\n| + join kind=inner\\n(\\n SecurityEvent\\n | where EventID == 5156\\n | + where Computer in~ (ADFS_Servers)\\n | extend EventData = parse_xml(EventData).EventData.Data\\n + \ | mv-expand bagexpansion=array EventData\\n | evaluate bag_unpack(EventData)\\n + \ | extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n | evaluate pivot(Key, any(Value), TimeGenerated, Computer, + EventID)\\n | extend DestPort = column_ifexists(\\\"DestPort\\\", \\\"\\\"),\\n + \ Direction = column_ifexists(\\\"Direction\\\", \\\"\\\"),\\n Application + = column_ifexists(\\\"Application\\\", \\\"\\\"),\\n DestAddress + = column_ifexists(\\\"DestAddress\\\", \\\"\\\"),\\n SourceAddress + = column_ifexists(\\\"SourceAddress\\\", \\\"\\\"),\\n SourcePort + = column_ifexists(\\\"SourcePort\\\", \\\"\\\")\\n // Look for inbound + connections from endpoints on port 80\\n | where DestPort == 80 and Direction + == '%%14592' and Application == 'System'\\n | where DestAddress !in ('::1','0:0:0:0:0:0:0:1') + \\n)\\non $left.Computer == $right.Computer\\n| project TimeGenerated, Computer, + ClaimsName, SourceAddress, SourcePort\\n| extend HostCustomEntity = Computer, + AccountCustomEntity = ClaimsName, IPCustomEntity = SourceAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1005\"],\"displayName\":\"AD + FS Remote Auth Sync Connection\",\"description\":\"This detection uses Security + events from the \\\"AD FS Auditing\\\" provider to detect suspicious authentication + events on an AD FS server. The results then get\\ncorrelated with events from + the Windows Filtering Platform (WFP) to detect suspicious incoming network + traffic on port 80 on the AD FS server.\\nThis could be a sign of a threat + actor trying to use replication services on the AD FS server to get its configuration + settings and extract\\nsensitive information such as AD FS certificates.\\nIn + order to use this query you need to enable AD FS auditing on the AD FS Server.\\nReference: + https://twitter.com/OTR_Community/status/1387038995016732672\\n\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-04-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d992b87b-eb49-4a9d-aa96-baacf9d26247\",\"name\":\"d992b87b-eb49-4a9d-aa96-baacf9d26247\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + IPList = dynamic([\\\"185.63.90.137\\\"]); \\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\nlet + sha256Hashes = \\ndynamic([\\\"53854c6d163bfd0c56d8b297ac43bd25c21f696de6063031241e792ee65df441\\\",\\n\\\"c297e545b8f150cc5ff56dbb68dc74fe30a421d9d40f38f4a53083192697c44c\\\",\\n\\\"17921368901f23e0cad0d2fe4ce5694aebaf4727699ed0358117500701914d1b\\\",\\n\\\"198a2d42df010d838b4207f478d885ef36e3db13b1744d673e221b828c28bf77\\\",\\n\\\"71d7b48c2fdc7b57b104a7858a35165bbed21d2fa7e34828d6c1d50b2b33a1d0\\\",\\n\\\"601227d52c6e367e11b80240183d07d38bc11a88e844e8401fce17eb25e92ba8\\\",\\n\\\"63ff04bed4fdb120a9cb9b1ea7fd88e83f12fb01ab6a057088f8016e663b48d4\\\",\\n\\\"a3037c3389b811bc1404f719af5c8b9034c5e24710cf3a0b457d28bf1b922cf7\\\",\\n\\\"e19b8be1b21c066d60725e550f8455f824065abbf1b43f7b2fe4fb338b241ffc\\\",\\n\\\"a3037c3389b811bc1404f719af5c8b9034c5e24710cf3a0b457d28bf1b922cf7\\\"\\n]);\\n(union + isfuzzy=true\\n(CommonSecurityLog\\n| where SourceIP in (IPList) or DestinationIP + in (IPList) or Message has_any (IPList) \\n| project TimeGenerated, SourceIP, + DestinationIP, Message, SourceUserID, RequestURL\\n| extend MessageIP = extract(IPRegex, + 0, Message)\\n| extend IPMatch = case(SourceIP in (IPList), \\\"SourceIP\\\", + DestinationIP in (IPList), \\\"DestinationIP\\\", MessageIP in (IPList), \\\"Message\\\", + MessageIP in (IPList), \\\"Message\\\", \\\"NoMatch\\\")\\n| extend timestamp + = TimeGenerated, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIP, + IPMatch == \\\"DestinationIP\\\", DestinationIP, IPMatch == \\\"Message\\\", + MessageIP, \\\"NoMatch\\\"), AccountCustomEntity = SourceUserID\\n),\\n(DeviceNetworkEvents\\n| + where RemoteIP in (IPList) or InitiatingProcessSHA256 in (sha256Hashes) \\n| + project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + RemoteIP, RemoteUrl, RemotePort, LocalIP\\n| extend timestamp = TimeGenerated, + DNSName = RemoteUrl, IPCustomEntity = RemoteIP, HostCustomEntity = DeviceName\\n),\\n(WindowsFirewall\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) \\n| project TimeGenerated, + Computer, CommunicationDirection, SourceIP, DestinationIP, SourcePort, DestinationPort\\n| + extend IPMatch = case( SourceIP in (IPList), \\\"SourceIP\\\", DestinationIP + in (IPList), \\\"DestinationIP\\\", \\\"None\\\")\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer , IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", + SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, \\\"None\\\")\\n),\\n(AzureDiagnostics + \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + project TimeGenerated,Resource, msg_s\\n| parse msg_s with Protocol 'request + from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort + '. Action:' Action\\n| where isnotempty(DestinationHost) \\n| where SourceHost + in (IPList) or DestinationHost in (IPList)\\n| extend timestamp = TimeGenerated, + DNSName = DestinationHost, IPCustomEntity = SourceHost\\n),\\n(DeviceFileEvents\\n| + project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + RequestAccountName, RequestSourceIP, InitiatingProcessSHA256\\n| extend Account + = RequestAccountName, Computer = DeviceName, IPAddress = RequestSourceIP, + CommandLine = InitiatingProcessCommandLine, FileHash = InitiatingProcessSHA256\\n| + extend timestamp = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity + = Account, ProcessCustomEntity = InitiatingProcessFileName, AlgorithmCustomEntity + = \\\"SHA256\\\", FileHashCustomEntity = FileHash\\n| where FileHash in (sha256Hashes)\\n),\\n(CommonSecurityLog\\n| + where FileHash in (sha256Hashes)\\n| project TimeGenerated, Message, SourceUserID, + FileHash\\n| extend timestamp = TimeGenerated, AlgorithmCustomEntity = \\\"SHA256\\\", + FileHashCustomEntity = FileHash\\n),\\n(DeviceEvents\\n| where InitiatingProcessSHA256 + in~ (sha256Hashes)\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, + InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessCommandLine, + InitiatingProcessFolderPath, InitiatingProcessId, InitiatingProcessParentFileName, + InitiatingProcessFileName, InitiatingProcessSHA256\\n| extend Account = InitiatingProcessAccountName, + Computer = DeviceName, CommandLine = InitiatingProcessCommandLine, FileHash + = InitiatingProcessSHA256, Image = InitiatingProcessFolderPath\\n| extend + timestamp = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity + = Account, ProcessCustomEntity = InitiatingProcessFileName, AlgorithmCustomEntity + = \\\"SHA256\\\", FileHashCustomEntity = FileHash\\n),\\n(SecurityEvent\\n| + where EventID == '4688'\\n| where CommandLine has_any (IPList) \\n| project + TimeGenerated, Computer, NewProcessName, ParentProcessName, Account, NewProcessId\\n| + extend timestamp = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity + = Account, ProcessCustomEntity = NewProcessName\\n),\\n(WindowsEvent\\n| where + EventID == '4688' and has_any_ipv4(EventData, toscalar(IPList)) \\n| extend + NewProcessName = tostring(EventData.NewProcessName)\\n| where NewProcessName + \ in (IPList) \\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| + extend Account = strcat(EventData.SubjectDomainName,\\\"\\\\\\\\\\\", EventData.SubjectUserName)\\n| + extend NewProcessId = tostring(EventData.NewProcessId)\\n| project TimeGenerated, + Computer, NewProcessName, ParentProcessName, Account, NewProcessId\\n| extend + timestamp = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity + = Account, ProcessCustomEntity = NewProcessName\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"Alert + for IOCs related to Windows/ELF malware - IP, Hash IOCs - September 2021\",\"description\":\"Identifies + a match across various data feeds for IP,hashes and IOCs related to Windows/ELF + malware published by Black Lotus Labs\\nReference: \\nhttps://blog.lumen.com/no-longer-just-theory-black-lotus-labs-uncovers-linux-executables-deployed-as-stealth-windows-loaders\\nhttps://github.com/ManuelBerrueta/YARA-rules/blob/master/BlackLotusLabs-WSLMalware/BLL_SneakyWSL.yar\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-09-20T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\",\"DeviceFileEvents\",\"DeviceEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"WindowsFirewall\",\"dataTypes\":[\"WindowsFirewall\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ce1e7025-866c-41f3-9b08-ec170e05e73e\",\"name\":\"ce1e7025-866c-41f3-9b08-ec170e05e73e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + SunburstURL=dynamic([\\\"panhardware.com\\\",\\\"databasegalore.com\\\",\\\"avsvmcloud.com\\\",\\\"freescanonline.com\\\",\\\"thedoccloud.com\\\",\\\"deftsecurity.com\\\"]);\\nDeviceNetworkEvents\\n| + where ActionType == \\\"ConnectionSuccess\\\"\\n| where RemoteUrl in(SunburstURL)\\n| + extend\\n timestamp = TimeGenerated,\\n AccountCustomEntity = iff(isnotempty(InitiatingProcessAccountUpn), + InitiatingProcessAccountUpn, InitiatingProcessAccountName),\\n HostCustomEntity + = DeviceName,\\n FileHashCustomEntity = InitiatingProcessMD5, \\n HashAlgorithm + = 'MD5',\\n URLCustomEntity = RemoteUrl,\\n IPCustomEntity = RemoteIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"HashAlgorithm\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\",\"Persistence\",\"InitialAccess\"],\"techniques\":[\"T1195\"],\"displayName\":\"SUNBURST + network beacons\",\"description\":\"Identifies SolarWinds SUNBURST domain + beacon IOCs in DeviceNetworkEvents\\nReferences:\\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\\n- + https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f\",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2020-12-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/baedfdf4-7cc8-45a1-81a9-065821628b83\",\"name\":\"baedfdf4-7cc8-45a1-81a9-065821628b83\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + runningRAT_parameters = dynamic(['/ui/chk', 'mactok=', 'UsRnMe=', 'IlocalP=', + 'kMnD=']);\\nCommonSecurityLog\\n| where RequestMethod == \\\"GET\\\"\\n| + project TimeGenerated, DeviceVendor, DeviceProduct, DeviceAction, DestinationDnsDomain, + DestinationIP, RequestURL, SourceIP, SourceHostName, RequestClientApplication\\n| + where RequestURL has_any (runningRAT_parameters)\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceIP\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"DestinationIP\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"SourceHostName\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"RequestURL\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\",\"CommandAndControl\"],\"techniques\":[\"T1041\",\"T1071\"],\"displayName\":\"RunningRAT + request parameters\",\"description\":\"This detection will alert when RunningRAT + URI parameters or paths are detect in an HTTP request. Id the device blocked + this communication\\npresence of this alert means the RunningRAT implant is + likely still executing on the source host.\",\"lastUpdatedDateUTC\":\"2022-06-02T00:00:00Z\",\"createdDateUTC\":\"2022-05-31T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4d8de9e6-263e-4845-8618-cd23a4f58b70\",\"name\":\"4d8de9e6-263e-4845-8618-cd23a4f58b70\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT3H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 3h;\\n// Add full UPN (user@domain.com) to + Authorized Bypassers to ignore policy bypasses by certain authorized users\\nlet + AuthorizedBypassers = dynamic(['foo@baz.com', 'test@foo.com']);\\nlet historicBypassers + = AzureDevOpsAuditing\\n| where TimeGenerated between (ago(starttime) .. ago(endtime))\\n| + where OperationName == 'Git.RefUpdatePoliciesBypassed'\\n| distinct ActorUPN;\\nAzureDevOpsAuditing\\n| + where TimeGenerated >= ago(endtime)\\n| where OperationName == 'Git.RefUpdatePoliciesBypassed'\\n| + where ActorUPN !in (historicBypassers) and ActorUPN !in (AuthorizedBypassers)\\n| + parse ScopeDisplayName with OrganizationName '(Organization)'\\n| project + TimeGenerated, ActorUPN, IpAddress, UserAgent, OrganizationName, ProjectName, + RepoName = Data.RepoName, AlertDetails = Details, Branch = Data.Name, \\n + \ BypassReason = Data.BypassReason, PRLink = strcat('https://dev.azure.com/', + OrganizationName, '/', ProjectName, '/_git/', Data.RepoName, '/pullrequest/', + Data.PullRequestId)\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = ActorUPN, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Azure + DevOps Pull Request Policy Bypassing - Historic allow list\",\"description\":\"This + detection builds an allow list of historic PR policy bypasses and compares + to recent history, flagging pull request bypasses that are not manually in + the allow list and not historically included in the allow list.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2020-06-04T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/75bf9902-0789-47c1-a5d8-f57046aa72df\",\"name\":\"75bf9902-0789-47c1-a5d8-f57046aa72df\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + procList = externaldata(Process:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Microsoft_Lolbas_Execution_Binaries.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet ProcessCreationEvents=() + {\\nlet processEvents=(union isfuzzy=true\\n(SecurityEvent\\n| where EventID==4688\\n| + where isnotempty(CommandLine)\\n| project TimeGenerated, Computer, Account + = SubjectUserName, AccountDomain = SubjectDomainName, NewProcessName,\\nFileName + = Process, CommandLine, ParentProcessName\\n),\\n(WindowsEvent\\n| where + EventID==4688 and EventData has_any (procList) and EventData has \\\":\\\\\\\\recycler\\\"\\n| + extend CommandLine = tostring(EventData.CommandLine)\\n| where isnotempty(CommandLine)\\n| + extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| extend SubjectDomainName + = tostring(EventData.SubjectDomainName) \\n| extend NewProcessName = tostring(EventData.NewProcessName) + \ \\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| + extend Process=tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n| project + TimeGenerated, Computer, Account = SubjectUserName, AccountDomain = SubjectDomainName, + NewProcessName,\\nFileName = Process, CommandLine, ParentProcessName\\n));\\nprocessEvents};\\nProcessCreationEvents + \\n| where FileName in~ (procList)\\n| where CommandLine contains \\\":\\\\\\\\recycler\\\"\\n| + project StartTimeUtc = TimeGenerated, Computer, Account, NewProcessName, FileName, + CommandLine, ParentProcessName\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = Account, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"DefenseEvasion\"],\"displayName\":\"Malware + in the recycle bin\",\"description\":\"The query detects Windows binaries, + that can be used for executing malware, that have been hidden in the recycle + bin. \\n The list of these binaries are sourced from https://lolbas-project.github.io/\\n + References: https://azure.microsoft.com/blog/how-azure-security-center-helps-reveal-a-cyberattack/.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2018-09-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e2399891-383c-4caf-ae67-68a008b9f89e\",\"name\":\"e2399891-383c-4caf-ae67-68a008b9f89e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + HAS_ANY_MAX = 10000;\\nlet dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet + IP_TI=ThreatIntelligenceIndicator\\n| where TimeGenerated >= ago(ioc_lookBack) + and ExpirationDateTime > now()\\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, + *) by IndicatorId\\n| where Active == true\\n// As there is potentially more + than 1 indicator type for matching IP, taking NetworkIP first, then others + if that is empty.\\n// Taking the first non-empty value based on potential + IOC match availability\\n| extend TI_ipEntity = coalesce(NetworkIP, NetworkDestinationIP, + NetworkSourceIP,EmailSourceIpAddress,\\\"NO_IP\\\")\\n// Picking up only IOC's + that contain the entities we want\\n| where TI_ipEntity != \\\"NO_IP\\\";\\nlet + IP_TI_list=toscalar(IP_TI | summarize NIoCs=dcount(TI_ipEntity), IoCs=make_set( + TI_ipEntity)\\n | project IoCs=iff(NIoCs > HAS_ANY_MAX, dynamic([]), IoCs));\\nIP_TI\\n + \ // using innerunique to keep perf fast and result set low, we only need + one match to indicate potential malicious activity that needs to be investigated\\n + \ | join kind=innerunique \\n (\\n union \\n (\\n _Im_NetworkSession + (starttime=ago(dt_lookBack), dstipaddr_has_any_prefix=IP_TI_list)\\n | + where isnotempty(SrcIpAddr)\\n // renaming time column so it is clear + the log this came from\\n | extend imNWS_TimeGenerated = TimeGenerated, + IoCIP=DstIpAddr, IoCIPDirection='Destination'\\n ),\\n (\\n + \ _Im_NetworkSession (starttime=ago(dt_lookBack), srcipaddr_has_any_prefix=IP_TI_list)\\n + \ | where isnotempty(DstIpAddr)\\n // renaming time column + so it is clear the log this came from\\n | extend imNWS_TimeGenerated + = TimeGenerated, IoCIP=SrcIpAddr, IoCIPDirection='Source'\\n )\\n)on + $left.TI_ipEntity == $right.IoCIP\\n| where imNWS_TimeGenerated < ExpirationDateTime\\n| + summarize imNWS_TimeGenerated = arg_max(imNWS_TimeGenerated , *) by IndicatorId, + IoCIP, IoCIPDirection\\n| project imNWS_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, + Dvc, SrcIpAddr, DstIpAddr, IoCIPDirection, IoCIP\",\"customDetails\":{\"EventTime\":\"imNWS_TimeGenerated\",\"IoCDescription\":\"Description\",\"ActivityGroupNames\":\"ActivityGroupNames\",\"IndicatorId\":\"IndicatorId\",\"ThreatType\":\"ThreatType\",\"IoCExpirationTime\":\"ExpirationDateTime\",\"IoCConfidenceScore\":\"ConfidenceScore\",\"IoCIPDirection\":\"IoCIPDirection\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IoCIP\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"A + network session {{IoCIPDirection}} address {{IoCIP}} matched an IoC.\",\"alertDescriptionFormat\":\"The + {{IoCIPDirection}} address {{IoCIP}} of a network session matched a known + indicator of compromise of {{ThreatType}}. Consult the threat intelligence + blead for more information on the indicator.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Impact\"],\"displayName\":\"(Preview) + TI map IP entity to Network Session Events (ASIM Network Session schema)\",\"description\":\"This + rule identifies a match Network Sessions for which the source of destination + IP address is a known IoC.

\\nThis analytic rule uses [ASIM](https://aka.ms/AboutASIM) + and supports any built-in or custom source that supports the ASIM NetworkSession + schema\",\"lastUpdatedDateUTC\":\"2022-04-27T00:00:00Z\",\"createdDateUTC\":\"2022-03-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8c2ef238-67a0-497d-b1dd-5c8a0f533e25\",\"name\":\"8c2ef238-67a0-497d-b1dd-5c8a0f533e25\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + EventNameList = dynamic([\\\"AuthorizeDBSecurityGroupIngress\\\",\\\"CreateDBSecurityGroup\\\",\\\"DeleteDBSecurityGroup\\\",\\\"RevokeDBSecurityGroupIngress\\\"]);\\nAWSCloudTrail\\n| + where EventName in~ (EventNameList)\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by EventName, EventTypeName, UserIdentityAccountId, + UserIdentityPrincipalid, UserAgent, UserIdentityUserName, SessionMfaAuthenticated, + SourceIpAddress, AWSRegion, EventSource, AdditionalEventData, ResponseElements\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, + IPCustomEntity = SourceIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Changes + to internet facing AWS RDS Database instances\",\"description\":\"Amazon Relational + Database Service (RDS) is scalable relational database in the cloud. \\nIf + your organization have one or more AWS RDS Databases running, monitoring changes + to especially internet facing AWS RDS (Relational Database Service) \\nOnce + alerts triggered, validate if changes observed are authorized and adhere to + change control policy. \\nMore information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255\\nand + RDS API Reference Docs: https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_Operations.html\",\"lastUpdatedDateUTC\":\"2021-11-28T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6ee72a9e-2e54-459c-bc9a-9c09a6502a63\",\"name\":\"6ee72a9e-2e54-459c-bc9a-9c09a6502a63\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + IPList = dynamic([\\\"216.24.185.74\\\", \\\"107.175.189.159\\\", \\\"192.210.132.102\\\", + \\\"67.230.163.214\\\", \\n \\\"199.19.110.240\\\", \\\"107.148.130.176\\\", + \\\"154.212.129.218\\\", \\\"172.86.75.54\\\", \\\"45.61.136.199\\\", \\n + \ \\\"149.28.150.195\\\", \\\"108.61.214.194\\\", \\\"144.202.98.198\\\", + \\\"149.28.84.98\\\", \\\"103.99.209.78\\\", \\n \\\"45.61.136.2\\\", \\\"176.122.162.149\\\", + \\\"192.3.80.245\\\", \\\"149.28.23.32\\\", \\\"107.182.18.149\\\", \\\"107.174.45.134\\\", + \\n \\\"149.248.18.104\\\", \\\"65.49.192.74\\\", \\\"156.255.2.154\\\", + \\\"45.76.6.149\\\", \\\"8.9.11.130\\\", \\\"140.238.27.255\\\", \\n \\\"107.182.24.70\\\", + \\\"176.122.188.254\\\", \\\"192.161.161.108\\\", \\\"64.64.234.24\\\", \\\"104.224.185.36\\\", + \\n \\\"104.233.224.227\\\", \\\"104.36.69.105\\\", \\\"119.28.139.120\\\", + \\\"161.117.39.130\\\", \\\"66.42.100.42\\\", \\\"45.76.31.159\\\", \\n \\\"149.248.8.134\\\", + \\\"216.24.182.48\\\", \\\"66.42.103.222\\\", \\\"218.89.236.11\\\", \\\"180.150.227.249\\\", + \\\"47.75.80.23\\\",\\n \\\"124.156.164.19\\\", \\\"149.248.62.83\\\", \\\"150.109.76.174\\\", + \\\"222.209.187.207\\\", \\\"218.38.191.38\\\", \\n \\\"119.28.226.59\\\", + \\\"66.42.98.220\\\", \\\"74.82.201.8\\\", \\\"173.242.122.198\\\", \\\"45.32.130.72\\\", + \\\"89.35.178.10\\\", \\n \\\"89.43.60.113\\\"]); \\n(union isfuzzy=true + \\n(CommonSecurityLog \\n| where isnotempty(SourceIP) or isnotempty(DestinationIP) + \\n| where SourceIP in (IPList) or DestinationIP in (IPList) or Message has_any + (IPList) \\n| extend IPMatch = case(SourceIP in (IPList), \\\"SourceIP\\\", + DestinationIP in (IPList), \\\"DestinationIP\\\", \\\"Message\\\") \\n| summarize + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by SourceIP, + DestinationIP, DeviceProduct, DeviceAction, Message, Protocol, SourcePort, + DestinationPort, DeviceAddress, DeviceName, IPMatch \\n| extend timestamp + = StartTimeUtc, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIP, + IPMatch == \\\"DestinationIP\\\", DestinationIP, \\\"IP in Message Field\\\") + \ \\n), \\n(OfficeActivity \\n|extend SourceIPAddress = ClientIP, Account + = UserId \\n| where SourceIPAddress in (IPList) \\n| extend timestamp = TimeGenerated + , IPCustomEntity = SourceIPAddress , AccountCustomEntity = Account \\n),\\n(_Im_Dns + (response_has_any_prefix=IPList)\\n| extend DestinationIPAddress = ResponseName, + \ Host = SrcIpAddr \\n| extend timestamp = TimeGenerated, IPCustomEntity = + DestinationIPAddress, HostCustomEntity = Host \\n), \\n(_Im_NetworkSession + (srcipaddr_has_any_prefix=IPList)\\n | extend timestamp = TimeGenerated, IPCustomEntity + = SrcIpAddr, HostCustomEntity = Hostname, AccountCustomEntity=User\\n), \\n(_Im_NetworkSession + (dstipaddr_has_any_prefix=IPList)\\n| extend timestamp = TimeGenerated, IPCustomEntity + = DstIpAddr, HostCustomEntity = Hostname , AccountCustomEntity = User\\n), + \\n(WireData \\n| where isnotempty(RemoteIP) \\n| where RemoteIP in (IPList) + \\n| extend timestamp = TimeGenerated, IPCustomEntity = RemoteIP, HostCustomEntity + = Computer \\n), \\n(SigninLogs \\n| where isnotempty(IPAddress) \\n| where + IPAddress in (IPList) \\n| extend timestamp = TimeGenerated, AccountCustomEntity + = UserPrincipalName, IPCustomEntity = IPAddress \\n),\\n(AADNonInteractiveUserSignInLogs + \\n| where isnotempty(IPAddress) \\n| where IPAddress in (IPList) \\n| extend + timestamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity + = IPAddress \\n), \\n(W3CIISLog \\n| where isnotempty(cIP) \\n| where cIP + in (IPList) \\n| extend timestamp = TimeGenerated, IPCustomEntity = cIP, HostCustomEntity + = Computer, AccountCustomEntity = csUserName \\n), \\n(AzureActivity \\n| + where isnotempty(CallerIpAddress) \\n| where CallerIpAddress in (IPList) \\n| + extend timestamp = TimeGenerated, IPCustomEntity = CallerIpAddress, AccountCustomEntity + = Caller \\n), \\n( \\nAWSCloudTrail \\n| where isnotempty(SourceIpAddress) + \\n| where SourceIpAddress in (IPList) \\n| extend timestamp = TimeGenerated, + IPCustomEntity = SourceIpAddress, AccountCustomEntity = UserIdentityUserName + \\n), \\n( \\nDeviceNetworkEvents \\n| where isnotempty(RemoteIP) \\n| where + RemoteIP in (IPList) \\n| extend timestamp = TimeGenerated, IPCustomEntity + = RemoteIP, HostCustomEntity = DeviceName \\n),\\n(\\nAzureDiagnostics\\n| + where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (IPList) \\n| extend DestinationIP = DestinationHost + \\n| extend IPCustomEntity = SourceHost\\n),\\n(\\nAzureDiagnostics\\n| where + ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallNetworkRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (IPList) \\n| extend DestinationIP = DestinationHost + \\n| extend IPCustomEntity = SourceHost\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Known + Barium IP\",\"description\":\"Identifies a match across various data feeds + for IP IOCs related to the Barium activity group. \\n References: https://www.justice.gov/opa/pr/seven-international-cyber-defendants-including-apt41-actors-charged-connection-computer' + \",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2020-11-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"AzureMonitor(WireData)\",\"dataTypes\":[\"WireData\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]},{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/595a10c9-91be-4abb-bbc7-ae9c57848bef\",\"name\":\"595a10c9-91be-4abb-bbc7-ae9c57848bef\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ChiaCryptoIOC.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet process = (iocs | + where Type =~ \\\"process\\\" | project IoC);\\nlet sha256Hashes = (iocs | + where Type =~ \\\"sha256\\\" | project IoC);\\nlet IPList = (iocs | where + Type =~ \\\"ip\\\"| project IoC);\\nlet domains = (iocs | where Type =~ \\\"domainname\\\"| + project IoC);\\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\n//This + query uses sysmon data, sections that have - | where Source == \\\"Microsoft-Windows-Sysmon\\\" + - may need to be updated with latest\\n(union isfuzzy=true\\n(CommonSecurityLog\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) or DestinationHostName + has_any (domains) or RequestURL has_any (domains) or Message has_any (IPList)\\n| + parse Message with * '(' DNSName ')' * \\n| project TimeGenerated, SourceIP, + DestinationIP, Message, SourceUserID, RequestURL, DNSName, Type\\n| extend + MessageIP = extract(IPRegex, 0, Message), RequestIP = extract(IPRegex, 0, + RequestURL)\\n| extend IPMatch = case(SourceIP in (IPList), \\\"SourceIP\\\", + DestinationIP in (IPList), \\\"DestinationIP\\\", MessageIP in (IPList), \\\"Message\\\", + RequestURL has_any (domains), \\\"RequestUrl\\\", \\\"NoMatch\\\"), AlertDetail + = 'Chia crypto IOC detected'\\n| extend timestamp = TimeGenerated, IPEntity + = case(IPMatch == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", + DestinationIP, IPMatch == \\\"Message\\\", MessageIP, \\\"NoMatch\\\"), Account + = SourceUserID\\n),\\n(DnsEvents\\n| where IPAddresses in (IPList) or Name + in~ (domains) \\n| project TimeGenerated, Computer, IPAddresses, Name, ClientIP, + Type\\n| extend DestinationIPAddress = IPAddresses, DNSName = Name, Computer + , AlertDetail = 'Chia crypto IOC detected'\\n| extend timestamp = TimeGenerated, + IPEntity = DestinationIPAddress\\n),\\n(VMConnection\\n| where SourceIp in + (IPList) or DestinationIp in (IPList) or RemoteDnsCanonicalNames has_any (domains)\\n| + parse RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' *\\n| project + TimeGenerated, Computer, Direction, ProcessName, SourceIp, DestinationIp, + DestinationPort, RemoteDnsQuestions, DNSName,BytesSent, BytesReceived, RemoteCountry, + Type\\n| extend IPMatch = case( SourceIp in (IPList), \\\"SourceIP\\\", DestinationIp + in (IPList), \\\"DestinationIP\\\", \\\"None\\\") , AlertDetail = 'Chia crypto + IOC detected'\\n| extend timestamp = TimeGenerated, IPEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIp, IPMatch == \\\"DestinationIP\\\", DestinationIp, + \\\"NoMatch\\\"), File = ProcessName\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 3\\n| extend EvData = parse_xml(EventData)\\n| extend EventDetail + = EvData.DataItem.EventData.Data\\n| extend SourceIP = tostring(EventDetail.[9].[\\\"#text\\\"]), + DestinationIP = tostring(EventDetail.[14].[\\\"#text\\\"]), Image = tostring(EventDetail.[4].[\\\"#text\\\"])\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) or Image has_any (process)\\n| + project TimeGenerated, SourceIP, DestinationIP, Image, Account = UserName, + Computer, Type\\n| extend IPMatch = case( SourceIP in (IPList), \\\"SourceIP\\\", + DestinationIP in (IPList), \\\"DestinationIP\\\", \\\"None\\\") , AlertDetail + = 'Chia crypto IOC detected'\\n| extend timestamp = TimeGenerated, File = + tostring(split(Image, '\\\\\\\\', -1)[-1]), IPEntity = case(IPMatch == \\\"SourceIP\\\", + SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, \\\"None\\\")\\n| + extend FilePath = replace_string(Image, File, '')\\n), \\n(OfficeActivity\\n| + where ClientIP in (IPList) \\n| project TimeGenerated, UserAgent, Operation, + RecordType, UserId, ClientIP, AlertDetail = 'Chia crypto IOC detected', Type\\n| + extend timestamp = TimeGenerated, IPEntity = ClientIP, Account = UserId\\n),\\n(DeviceNetworkEvents\\n| + where RemoteUrl has_any (domains) or RemoteIP in (IPList) or InitiatingProcessSHA256 + in (sha256Hashes) or InitiatingProcessFileName has_any (process)\\n| project + TimeGenerated, ActionType, DeviceId, Computer = DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + RemoteIP, RemoteUrl, RemotePort, LocalIP, Type\\n| extend timestamp = TimeGenerated, + IPEntity = RemoteIP, AlertDetail = 'Chia crypto IOC detected'\\n),\\n(WindowsFirewall\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) \\n| project TimeGenerated, + Computer, CommunicationDirection, SourceIP, DestinationIP, SourcePort, DestinationPort, + Type\\n| extend IPMatch = case( SourceIP in (IPList), \\\"SourceIP\\\", DestinationIP + in (IPList), \\\"DestinationIP\\\", \\\"None\\\"), AlertDetail = 'Chia crypto + IOC detected'\\n| extend timestamp = TimeGenerated, Computer, IPEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, + \\\"None\\\")\\n),\\n(AzureDiagnostics\\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| + where Category == \\\"AzureFirewallDnsProxy\\\"\\n| project TimeGenerated,Resource, + msg_s, Type\\n| parse msg_s with \\\"DNS Request: \\\" ClientIP \\\":\\\" + ClientPort \\\" - \\\" QueryID \\\" \\\" Request_Type \\\" \\\" Request_Class + \\\" \\\" Request_Name \\\". \\\" Request_Protocol \\\" \\\" Request_Size + \\\" \\\" EDNSO_DO \\\" \\\" EDNS0_Buffersize \\\" \\\" Responce_Code \\\" + \\\" Responce_Flags \\\" \\\" Responce_Size \\\" \\\" Response_Duration\\n| + where Request_Name has_any (domains) or ClientIP in (IPList)\\n| extend timestamp + = TimeGenerated, DNSName = Request_Name, IPEntity = ClientIP, AlertDetail + = 'Chia crypto IOC detected'\\n),\\n(AzureDiagnostics \\n| where ResourceType + == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + project TimeGenerated,Resource, msg_s, Type\\n| parse msg_s with Protocol + 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort + '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| where DestinationHost + has_any (domains) \\n| extend timestamp = TimeGenerated, DNSName = DestinationHost, + IPEntity = SourceHost, AlertDetail = 'Chia crypto IOC detected'\\n),\\n(Event\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| where EventDetail + has_any (sha256Hashes) \\n| parse EventDetail with * 'SHA256=' SHA256 '\\\",' + *\\n| project TimeGenerated, EventDetail, UserName, Computer, Type, Source, + SHA256\\n| extend Type = strcat(Type, \\\": \\\", Source), Account = UserName, + FileHash = SHA256, Image = tostring(EventDetail.[4].[\\\"#text\\\"]), AlertDetail + = 'Chia crypto IOC detected'\\n| extend timestamp = TimeGenerated, Computer, + Account, File = tostring(split(Image, '\\\\\\\\', -1)[-1]), FileHashAlgo = + 'SHA256'\\n| extend FilePath = replace_string(Image, File, '')\\n),\\n(DeviceFileEvents\\n| + where InitiatingProcessFolderPath has_any (process)\\n| project TimeGenerated, + ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, RequestAccountName, + RequestSourceIP, InitiatingProcessSHA256, Type\\n| extend Account = RequestAccountName, + Computer = DeviceName, IPAddress = RequestSourceIP, CommandLine = InitiatingProcessCommandLine, + FileHash = InitiatingProcessSHA256, AlertDetail = 'Chia crypto IOC detected'\\n| + extend timestamp = TimeGenerated, Computer, Account, File = InitiatingProcessFileName, + FileHashAlgo = 'SHA256'\\n| extend FilePath = replace_string(InitiatingProcessFolderPath, + File, '')\\n),\\n(CommonSecurityLog\\n| where FileHash in (sha256Hashes)\\n| + project TimeGenerated, Message, SourceUserID, FileHash, Type\\n| extend timestamp + = TimeGenerated, AlertDetail = 'Chia crypto IOC detected', FileHashAlgo = + 'SHA256', Account = SourceUserID\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 1\\n| extend EvData = parse_xml(EventData)\\n| extend EventDetail + = EvData.DataItem.EventData.Data\\n| project TimeGenerated, EventDetail, UserName, + Computer, Type\\n| extend Image = tostring(EventDetail.[4].[\\\"#text\\\"]), + CommandLine = tostring(EventDetail.[10].[\\\"#text\\\"]), Account = UserName, + FileHash = tostring(EventDetail.[17].[\\\"#text\\\"]), AlertDetail = 'Chia + crypto IOC detected'\\n| where Image has_any (process)\\n| extend timestamp + = TimeGenerated, Computer, Account, File = tostring(split(Image, '\\\\\\\\', + -1)[-1]), FileHashAlgo = 'SHA256'\\n| extend FilePath= replace_string(Image, + File, '')\\n),\\n(DeviceEvents\\n| where InitiatingProcessFileName has_any + (process) or InitiatingProcessSHA256 in~ (sha256Hashes)\\n| project TimeGenerated, + ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessSHA256, + Type\\n| extend Account = InitiatingProcessAccountName, Computer = DeviceName, + CommandLine = InitiatingProcessCommandLine, FileHash = InitiatingProcessSHA256, + Image = InitiatingProcessFolderPath, AlertDetail = 'Chia crypto IOC detected'\\n| + extend timestamp = TimeGenerated, Computer, Account, File = InitiatingProcessFileName, + FileHashAlgo = 'SHA256'\\n| extend FilePath = replace_string(InitiatingProcessFolderPath, + File, '')\\n),\\n(SecurityEvent\\n| where EventID == '4688'\\n| where NewProcessName + \ has_any (process)\\n| project TimeGenerated, Computer, NewProcessName, ParentProcessName, + Account, NewProcessId, Type\\n| extend timestamp = TimeGenerated, Computer, + Account, File = tostring(split(NewProcessName, '\\\\\\\\', -1)[-1]), AlertDetail + = 'Chia crypto IOC detected'\\n| extend FilePath = replace_string(NewProcessName, + File, '')\\n)\\n)\\n| extend AccountCustomEntity = Account, HostCustomEntity + = Computer, IPCustomEntity = IPEntity, FileCustomEntity = File, FilePathCustomEntity + = FilePath, FileHashCustomEntity = FileHash\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"File\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"FileCustomEntity\"},{\"identifier\":\"Directory\",\"columnName\":\"FilePathCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"FileHashAlgo\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"Chia_Crypto_Mining + - Domain, Process, Hash and IP IOCs - June 2021\",\"description\":\"Identifies + a match across various data feeds for domains, process, hashes and IP IOC + related to Chia cryptocurrency farming/plotting activity.\",\"lastUpdatedDateUTC\":\"2021-12-08T00:00:00Z\",\"createdDateUTC\":\"2021-06-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\",\"DeviceFileEvents\",\"DeviceEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"WindowsFirewall\",\"dataTypes\":[\"WindowsFirewall\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/dd0a6029-ecef-4507-89c4-fc355ac52111\",\"name\":\"dd0a6029-ecef-4507-89c4-fc355ac52111\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\n//Create a list of TLDs in our + threat feed for later validation of extracted domains\\nlet list_tlds = ThreatIntelligenceIndicator\\n| + where TimeGenerated > ago(ioc_lookBack)\\n| where isnotempty(DomainName)\\n| + extend DomainName = tolower(DomainName)\\n| extend parts = split(DomainName, + '.')\\n| extend tld = parts[(array_length(parts)-1)]\\n| summarize count() + by tostring(tld)\\n| summarize make_list(tld);\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(DomainName)\\n// using innerunique to keep perf + fast and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n CommonSecurityLog\\n + \ | extend IngestionTime = ingestion_time()\\n | where IngestionTime > + ago(dt_lookBack)\\n | where DeviceEventClassID =~ 'url'\\n //Uncomment + the line below to only alert on allowed connections\\n //| where DeviceAction + !~ \\\"block-url\\\"\\n //Extract domain from RequestURL, if not present + extarct it from AdditionalExtentions\\n | extend PA_Url = columnifexists(\\\"RequestURL\\\", + \\\"None\\\")\\n | extend PA_Url = iif(isempty(PA_Url) and AdditionalExtensions + !startswith \\\"PanOS\\\", extract(\\\"([^\\\\\\\"]+)\\\", 1, tolower(AdditionalExtensions)), + trim('\\\"', PA_Url))\\n | extend PA_Url = iif(PA_Url !startswith \\\"http://\\\" + and ApplicationProtocol !~ \\\"ssl\\\", strcat('http://', PA_Url), iif(PA_Url + !startswith \\\"https://\\\" and ApplicationProtocol =~ \\\"ssl\\\", strcat('https://', + PA_Url), PA_Url))\\n | extend Domain = trim(@\\\"\\\"\\\"\\\",tostring(parse_url(PA_Url).Host))\\n + \ | where isnotempty(Domain)\\n | extend Domain = tolower(Domain)\\n | + extend parts = split(Domain, '.')\\n //Split out the TLD for the purpose + of checking if we have any TI indicators with this TLD to match on\\n | + extend tld = parts[(array_length(parts)-1)]\\n //Validate parsed domain + by checking TLD against TLDs from threat feed and drop domains where there + is no chance of a match\\n | where tld in~ (list_tlds)\\n | extend CommonSecurityLog_TimeGenerated + = TimeGenerated\\n ) on $left.DomainName==$right.Domain\\n| where CommonSecurityLog_TimeGenerated + < ExpirationDateTime\\n| summarize CommonSecurityLog_TimeGenerated = arg_max(CommonSecurityLog_TimeGenerated, + *) by IndicatorId, FileHashValue\\n| project CommonSecurityLog_TimeGenerated, + Description, ActivityGroupNames, PA_Url, Domain, IndicatorId, ThreatType, + ExpirationDateTime, ConfidenceScore, DeviceAction, DestinationIP, DestinationPort, + DeviceName, SourceIP, SourcePort, ApplicationProtocol, RequestMethod\\n| extend + timestamp = CommonSecurityLog_TimeGenerated, IPCustomEntity = SourceIP, HostCustomEntity + = DeviceName, URLCustomEntity = PA_Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.0\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Domain entity to CommonSecurityLog\",\"description\":\"Identifies a match + in CommonSecurityLog table from any Domain IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6c360107-f3ee-4b91-9f43-f4cfd90441cf\",\"name\":\"6c360107-f3ee-4b91-9f43-f4cfd90441cf\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"union + isfuzzy=true \\n(\\n SecurityEvent\\n | where EventID == 4738\\n // 2089 value + indicates the Don't Expire Password value has been set\\n | where UserAccountControl + has \\\"%%2089\\\" \\n | extend Value_2089 = iff(UserAccountControl has \\\"%%2089\\\",\\\"'Don't + Expire Password' - Enabled\\\", \\\"Not Changed\\\")\\n // 2050 indicates + that the Password Not Required value is NOT set, this often shows up at the + same time as a 2089 and is the recommended value. This value may not be in + the event. \\n | extend Value_2050 = iff(UserAccountControl has \\\"%%2050\\\",\\\"'Password + Not Required' - Disabled\\\", \\\"Not Changed\\\")\\n // If value %%2082 is + present in the 4738 event, this indicates the account has been configured + to logon WITHOUT a password. Generally you should only see this value when + an account is created and only in Event 4720: Account Creation Event. \\n + | extend Value_2082 = iff(UserAccountControl has \\\"%%2082\\\",\\\"'Password + Not Required' - Enabled\\\", \\\"Not Changed\\\")\\n | project StartTime = + TimeGenerated, EventID, Activity, Computer, TargetAccount, TargetSid, AccountType, + UserAccountControl, Value_2089, Value_2050, Value_2082, SubjectAccount\\n + | extend timestamp = StartTime, AccountCustomEntity = TargetAccount, HostCustomEntity + = Computer\\n ),\\n (\\n WindowsEvent\\n | where EventID == 4738 and EventData + has '2089'\\n // 2089 value indicates the Don't Expire Password value has + been set\\n | extend UserAccountControl = tostring(EventData.UserAccountControl)\\n + | where UserAccountControl has \\\"%%2089\\\" \\n | extend Value_2089 = iff(UserAccountControl + has \\\"%%2089\\\",\\\"'Don't Expire Password' - Enabled\\\", \\\"Not Changed\\\")\\n + // 2050 indicates that the Password Not Required value is NOT set, this often + shows up at the same time as a 2089 and is the recommended value. This value + may not be in the event. \\n | extend Value_2050 = iff(UserAccountControl + has \\\"%%2050\\\",\\\"'Password Not Required' - Disabled\\\", \\\"Not Changed\\\")\\n + // If value %%2082 is present in the 4738 event, this indicates the account + has been configured to logon WITHOUT a password. Generally you should only + see this value when an account is created and only in Event 4720: Account + Creation Event. \\n | extend Value_2082 = iff(UserAccountControl has \\\"%%2082\\\",\\\"'Password + Not Required' - Enabled\\\", \\\"Not Changed\\\")\\n | extend Activity=\\\"4738 + - A user account was changed.\\\"\\n | extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n | extend TargetSid = tostring(EventData.TargetSid)\\n + | extend SubjectAccount = strcat(EventData.SubjectDomainName,\\\"\\\\\\\\\\\", + EventData.SubjectUserName)\\n | extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n + | extend AccountType=case(SubjectAccount endswith \\\"$\\\" or SubjectUserSid + in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", + isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n | project StartTime = + TimeGenerated, EventID, Activity, Computer, TargetAccount, TargetSid, AccountType, + UserAccountControl, Value_2089, Value_2050, Value_2082, SubjectAccount\\n + | extend timestamp = StartTime, AccountCustomEntity = TargetAccount, HostCustomEntity + = Computer\\n )\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"},{\"identifier\":\"Sid\",\"columnName\":\"TargetSid\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"AD + account with Don't Expire Password\",\"description\":\"Identifies whenever + a user account has the setting \\\"Password Never Expires\\\" in the user + account properties selected.\\nThis is indicated in Security event 4738 in + the EventData item labeled UserAccountControl with an included value of %%2089.\\n%%2089 + resolves to \\\"Don't Expire Password - Enabled\\\".\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-01-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4e8238bd-ff4f-4126-a9f6-09b3b6801b3d\",\"name\":\"4e8238bd-ff4f-4126-a9f6-09b3b6801b3d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AzureDevOpsAuditing\\n| + where OperationName =~ \\\"AuditLog.StreamDisabledByUser\\\"\\n| extend StreamType + = tostring(Data.ConsumerType)\\n| project-reorder TimeGenerated, Details, + ActorUPN, IpAddress, UserAgent, StreamType\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = ActorUPN, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1562\"],\"displayName\":\"Azure + DevOps Audit Stream Disabled\",\"description\":\"Azure DevOps allow for audit + logs to be streamed to external storage solutions such as SIEM solutions. + An attacker looking to hide malicious Azure DevOps activity from defenders + may look to disable data streams \\nbefore conducting activity and then re-enabling + the stream after (so as not to raise data threshold-based alarms). Looking + for disabled audit streams can identify this activity, and due to the nature + of the action \\nits unlikely to have a high false positive rate.\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e2559891-383c-4caf-ae67-55a008b9f89e\",\"name\":\"e2559891-383c-4caf-ae67-55a008b9f89e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + HAS_ANY_MAX = 10000;\\nlet dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet + IP_TI=ThreatIntelligenceIndicator\\n| where TimeGenerated >= ago(ioc_lookBack) + and ExpirationDateTime > now()\\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, + *) by IndicatorId\\n| where Active == true\\n// As there is potentially more + than 1 indicator type for matching IP, taking NetworkIP first, then others + if that is empty.\\n// Taking the first non-empty value based on potential + IOC match availability\\n| extend TI_ipEntity = coalesce(NetworkIP, NetworkDestinationIP, + NetworkSourceIP,EmailSourceIpAddress,\\\"NO_IP\\\")\\n// Picking up only IOC's + that contain the entities we want\\n| where TI_ipEntity != \\\"NO_IP\\\";\\nlet + IP_TI_list=toscalar(IP_TI | summarize NIoCs= dcount(TI_ipEntity), IoCs=make_set(TI_ipEntity) + \\n | project IoCs=iff(NIoCs > HAS_ANY_MAX, dynamic([]), IoCs ) );\\nIP_TI\\n// + using innerunique to keep perf fast and result set low, we only need one match + to indicate potential malicious activity that needs to be investigated\\n| + join kind=innerunique (\\n _Im_WebSession (starttime=ago(dt_lookBack), + srcipaddr_has_any_prefix=IP_TI_list)\\n | where isnotempty(SrcIpAddr)\\n + \ // renaming time column so it is clear the log this came from\\n | + extend imNWS_TimeGenerated = TimeGenerated\\n)\\non $left.TI_ipEntity == $right.SrcIpAddr\\n| + where imNWS_TimeGenerated < ExpirationDateTime\\n| summarize imNWS_TimeGenerated + = arg_max(imNWS_TimeGenerated , *) by IndicatorId, DstIpAddr\\n| project imNWS_TimeGenerated, + Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, + ConfidenceScore,\\nTI_ipEntity, Dvc, SrcIpAddr, DstIpAddr\",\"customDetails\":{\"EventTime\":\"imNWS_TimeGenerated\",\"IoCDescription\":\"Description\",\"ActivityGroupNames\":\"ActivityGroupNames\",\"IndicatorId\":\"IndicatorId\",\"ThreatType\":\"ThreatType\",\"IoCExpirationTime\":\"ExpirationDateTime\",\"IoCConfidenceScore\":\"ConfidenceScore\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"DstIpAddr\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"The + IP {{SrcIpAddr}} of a web request to hostname {{domain}} matched an IoC\",\"alertDescriptionFormat\":\"The + source address {{SrcIpAddr}} of a web request for URL {{Url}} matched a known + indicator of compromise of {{ThreatType}}. Consult the threat intelligence + blead for more information on the indicator.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"displayName\":\"(Preview) + TI map IP entity to Web Session Events (ASIM Web Session schema)\",\"description\":\"This + rule identifies Web Sessions for which the source IP address is a known IoC. +

This rule uses the [Advanced Security Information Model (ASIM)](https://aka.ms/AboutASIM) + and supports any web session source that complies with ASIM.\",\"lastUpdatedDateUTC\":\"2022-03-15T00:00:00Z\",\"createdDateUTC\":\"2022-03-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c7bfadd4-34a6-4fa5-82f8-3691a32261e8\",\"name\":\"c7bfadd4-34a6-4fa5-82f8-3691a32261e8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + EventNameList = dynamic([\\\"ApplySecurityGroupsToLoadBalancer\\\", \\\"SetSecurityGroups\\\"]);\\nAWSCloudTrail\\n| + where EventName in~ (EventNameList)\\n| extend User = iif(isnotempty(UserIdentityUserName), + UserIdentityUserName, SessionIssuerUserName)\\n| summarize EventCount=count(), + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) \\nby EventSource, + EventName, UserIdentityType, User, SourceIpAddress, UserAgent, SessionMfaAuthenticated, + AWSRegion,\\nAdditionalEventData, UserIdentityAccountId, UserIdentityPrincipalid, + ResponseElements\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = User , IPCustomEntity = SourceIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Changes + to AWS Elastic Load Balancer security groups\",\"description\":\"Elastic Load + Balancer distributes incoming traffic across multiple instances in multiple + availability Zones. This increases the fault tolerance of your applications. + \\n Unwanted changes to Elastic Load Balancer specific security groups could + open your environment to attack and hence needs monitoring.\\n More information: + https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255 + \\n and https://aws.amazon.com/elasticloadbalancing/.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bdf04f58-242b-4729-b376-577c4bdf5d3a\",\"name\":\"bdf04f58-242b-4729-b376-577c4bdf5d3a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"imProcessCreate\\n| + where Process hassuffix 'rundll32.exe'\\n| where CommandLine has_any ('Execute','RegRead','window.close')\\n| + project TimeGenerated, Dvc, User, Process, CommandLine, ActingProcessName, + EventVendor, EventProduct\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Dvc, AccountCustomEntity = User\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1547\"],\"displayName\":\"NOBELIUM + - suspicious rundll32.exe execution of vbscript (Normalized Process Events)\",\"description\":\"This + query idenifies when rundll32.exe executes a specific set of inline VBScript + commands\\nReferences: https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/\\nTo + use this analytics rule, make sure you have deployed the [ASIM normalization + parsers](https://aka.ms/ASimProcessEvent)\",\"lastUpdatedDateUTC\":\"2022-02-14T00:00:00Z\",\"createdDateUTC\":\"2021-03-03T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f30a47c1-65fb-42b1-a7f4-00941c12550b\",\"name\":\"f30a47c1-65fb-42b1-a7f4-00941c12550b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(Url)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n SecurityAlert\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n | extend MSTI = case(AlertName + has \\\"TI map\\\" and VendorName == \\\"Microsoft\\\" and ProductName == + 'Azure Sentinel', true, false)\\n | where MSTI == false\\n // Extract URL + from JSON data\\n | extend Url = extract(\\\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\\\\\(\\\\\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)\\\", + 1,Entities)\\n // We only want alerts that actually contain URL data\\n | + where isnotempty(Url)\\n // Extract hostname from JSON data for entity mapping\\n + \ | extend Compromised_Host = tostring(parse_json(ExtendedProperties).[\\\"Compromised + Host\\\"])\\n | extend Alert_TimeGenerated = TimeGenerated\\n) on Url\\n| + where Alert_TimeGenerated < ExpirationDateTime\\n| summarize Alert_TimeGenerated + = arg_max(Alert_TimeGenerated, *) by IndicatorId, AlertName\\n| project Alert_TimeGenerated, + ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, + AlertName, AlertSeverity, Description, Url, Compromised_Host\\n| extend timestamp + = Alert_TimeGenerated, HostCustomEntity = Compromised_Host, URLCustomEntity + = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.2\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map URL entity to SecurityAlert data\",\"description\":\"Identifies a match + in SecurityAlert data from any URL IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftCloudAppSecurity\",\"dataTypes\":[\"SecurityAlert\"]},{\"connectorId\":\"AzureSecurityCenter\",\"dataTypes\":[\"SecurityAlert\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/80da0a8f-cfe1-4cd0-a895-8bc1771a720e\",\"name\":\"80da0a8f-cfe1-4cd0-a895-8bc1771a720e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"(union + isfuzzy=true\\n(\\nSecurityEvent\\n| where EventID == 1102 and EventSourceName + == \\\"Microsoft-Windows-Eventlog\\\" \\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated), EventCount = count() by Computer, Account, + EventID, Activity\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = Account, HostCustomEntity = Computer\\n),\\n(\\nWindowsEvent\\n| where EventID + == 1102 and Provider == \\\"Microsoft-Windows-Eventlog\\\" \\n| extend Account + = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", tostring(EventData.SubjectUserName))\\n| + extend Activity= \\\"1102 - The audit log was cleared.\\\"\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), EventCount = count() + by Computer, Account, EventID, Activity\\n| extend timestamp = StartTimeUtc, + AccountCustomEntity = Account, HostCustomEntity = Computer\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1070\"],\"displayName\":\"Security + Event log cleared\",\"description\":\"Checks for event id 1102 which indicates + the security event log was cleared. \\nIt uses Event Source Name \\\"Microsoft-Windows-Eventlog\\\" + to avoid generating false positives from other sources, like AD FS servers + for instance.\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-02-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/36a9c9e5-3dc1-4ed9-afaa-1d13617bfc2b\",\"name\":\"36a9c9e5-3dc1-4ed9-afaa-1d13617bfc2b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(Url)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n OfficeActivity\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n //Extract the Url from a number + of potential fields\\n | extend Url = iif(OfficeWorkload == \\\"AzureActiveDirectory\\\",extract(\\\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\\\\\(\\\\\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+);\\\", + 1,ModifiedProperties),tostring(parse_json(ModifiedProperties)[12].NewValue))\\n + \ | where isnotempty(Url)\\n // Ensure we get a clean URL\\n | extend Url + = tostring(split(Url, ';')[0])\\n | extend OfficeActivity_TimeGenerated = + TimeGenerated\\n // Project a single user identity that we can use for entity + mapping\\n | extend User = iif(isnotempty(UserId), UserId, iif(isnotempty(Actor), + tostring(parse_json(Actor)[0].ID), tostring(parse_json(Parameters)[0].Vlaue))) + \\n) on Url\\n| where OfficeActivity_TimeGenerated < ExpirationDateTime\\n| + summarize OfficeActivity_TimeGenerated = arg_max(OfficeActivity_TimeGenerated, + *) by IndicatorId, Url\\n| project OfficeActivity_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, + Operation, \\nUserType, OfficeWorkload, Parameters, Url, User\\n| extend timestamp + = OfficeActivity_TimeGenerated, AccountCustomEntity = User, URLCustomEntity + = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map URL entity to OfficeActivity data\",\"description\":\"Identifies a match + in OfficeActivity data from any URL IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f0be259a-34ac-4946-aa15-ca2b115d5feb\",\"name\":\"f0be259a-34ac-4946-aa15-ca2b115d5feb\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P2D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + starttime = 2d;\\nlet endtime = 1d;\\nlet TimeDeltaThreshold = 25;\\nlet TotalEventsThreshold + = 30;\\nlet MostFrequentTimeDeltaThreshold = 25;\\nlet PercentBeaconThreshold + = 80;\\nCommonSecurityLog\\n| where DeviceVendor == \\\"Palo Alto Networks\\\" + and Activity == \\\"TRAFFIC\\\"\\n| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\\n| + where ipv4_is_private(DestinationIP)== false\\n| project TimeGenerated, DeviceName, + SourceUserID, SourceIP, SourcePort, DestinationIP, DestinationPort, ReceivedBytes, + SentBytes\\n| sort by SourceIP asc,TimeGenerated asc, DestinationIP asc, DestinationPort + asc\\n| serialize\\n| extend nextTimeGenerated = next(TimeGenerated, 1), nextSourceIP + = next(SourceIP, 1)\\n| extend TimeDeltainSeconds = datetime_diff('second',nextTimeGenerated,TimeGenerated)\\n| + where SourceIP == nextSourceIP\\n//Whitelisting criteria/ threshold criteria\\n| + where TimeDeltainSeconds > TimeDeltaThreshold \\n| summarize count(), sum(ReceivedBytes), + sum(SentBytes)\\nby TimeDeltainSeconds, bin(TimeGenerated, 1h), DeviceName, + SourceUserID, SourceIP, DestinationIP, DestinationPort\\n| summarize (MostFrequentTimeDeltaCount, + MostFrequentTimeDeltainSeconds) = arg_max(count_, TimeDeltainSeconds), TotalEvents=sum(count_), + TotalSentBytes = sum(sum_SentBytes), TotalReceivedBytes = sum(sum_ReceivedBytes) + \\nby bin(TimeGenerated, 1h), DeviceName, SourceUserID, SourceIP, DestinationIP, + DestinationPort\\n| where TotalEvents > TotalEventsThreshold and MostFrequentTimeDeltaCount + > MostFrequentTimeDeltaThreshold\\n| extend BeaconPercent = MostFrequentTimeDeltaCount/toreal(TotalEvents) + * 100\\n| where BeaconPercent > PercentBeaconThreshold\\n| extend timestamp + = TimeGenerated, IPCustomEntity = DestinationIP, AccountCustomEntity = SourceUserID, + HostCustomEntity = DeviceName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1071\",\"T1571\"],\"displayName\":\"Palo + Alto - potential beaconing detected\",\"description\":\"Identifies beaconing + patterns from Palo Alto Network traffic logs based on recurrent timedelta + patterns. \\nThe query leverages various KQL functions to calculate time deltas + and then compares it with total events observed in a day to find percentage + of beaconing. \\nThis outbound beaconing pattern to untrusted public networks + should be investigated for any malware callbacks or data exfiltration attempts.\\nReference + Blog:\\nhttp://www.austintaylor.io/detect/beaconing/intrusion/detection/system/command/control/flare/elastic/stack/2017/06/10/detect-beaconing-with-flare-elasticsearch-and-intrusion-detection-systems/\\nhttps://techcommunity.microsoft.com/t5/microsoft-sentinel-blog/detect-network-beaconing-via-intra-request-time-delta-patterns/ba-p/779586\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2019-05-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/14f6da04-2f96-44ee-9210-9ccc1be6401e\",\"name\":\"14f6da04-2f96-44ee-9210-9ccc1be6401e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Low\",\"query\":\"AuditLogs\\n| + where Category =~ \\\"RoleManagement\\\"\\n| where OperationName has \\\"Add + member to role outside of PIM\\\"\\n or (LoggedByService == \\\"Core + Directory\\\" and OperationName == \\\"Add member to role\\\" and Identity + != \\\"MS-PIM\\\")\\n| extend AccountCustomEntity = tostring(TargetResources[0].userPrincipalName), + IPCustomEntity = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1078\"],\"displayName\":\"NRT + Privileged Role Assigned Outside PIM\",\"description\":\"Identifies a privileged + role being assigned to a user outside of PIM\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-accounts#things-to-monitor-1\",\"lastUpdatedDateUTC\":\"2022-04-22T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f6502545-ae3a-4232-a8b0-79d87e5c98d7\",\"name\":\"f6502545-ae3a-4232-a8b0-79d87e5c98d7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"Event\\n| + where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID + in (13)\\n| parse EventData with * 'TargetObject\\\">' TargetObject \\\"<\\\" + * 'Details\\\">' Details \\\"<\\\" * \\n| where TargetObject==\\\"HKLM\\\\\\\\System\\\\\\\\CurrentControlSet\\\\\\\\Control\\\\\\\\SecurityProviders\\\\\\\\WDigest\\\\\\\\UseLogonCredential\\\" + and Details !=\\\"DWORD (0x00000000)\\\"\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by EventID, Computer, TargetObject, Details\",\"entityMappings\":[{\"entityType\":\"RegistryKey\",\"fieldMappings\":[{\"identifier\":\"Key\",\"columnName\":\"TargetObject\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1003\"],\"displayName\":\"WDigest + downgrade attack\",\"description\":\"When the WDigest Authentication protocol + is enabled, plain text passwords are stored in the Local Security Authority + Subsystem Service (LSASS) exposing them to theft. This setting will prevent + WDigest from storing credentials in memory.\\nRef: https://www.stigviewer.com/stig/windows_7/2016-12-19/finding/V-72753\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2022-03-10T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b725d62c-eb77-42ff-96f6-bdc6745fc6e0\",\"name\":\"b725d62c-eb77-42ff-96f6-bdc6745fc6e0\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\nlet UserAgentAll =\\n(union isfuzzy=true\\n(OfficeActivity\\n| + where TimeGenerated >= ago(starttime)\\n| where isnotempty(UserAgent)\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by + UserAgent, SourceIP = ClientIP, Account = UserId, Type, RecordType, Operation\\n),\\n(\\nW3CIISLog\\n| + where TimeGenerated >= ago(starttime)\\n| where isnotempty(csUserAgent)\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by + UserAgent = csUserAgent, SourceIP = cIP, Account = csUserName, Type, sSiteName, + csMethod, csUriStem\\n),\\n(\\nAWSCloudTrail\\n| where TimeGenerated >= ago(starttime)\\n| + where isnotempty(UserAgent)\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by UserAgent, SourceIP = SourceIpAddress, Account + = UserIdentityUserName, Type, EventSource, EventName\\n))\\n// remove wordSize + blocks of non-numeric hex characters prior to word extraction\\n| extend UserAgentNoHexAlphas + = replace(\\\"([A-Fa-f]{4,})\\\", \\\"x\\\", UserAgent)\\n// once blocks of + hex chars are removed, extract wordSize blocks of a-z\\n| extend Tokens = + extract_all(\\\"([A-Za-z]{4,})\\\", UserAgentNoHexAlphas)\\n// concatenate + extracted words to create a summarized user agent for baseline and comparison\\n| + extend NormalizedUserAgent = strcat_array(Tokens, \\\"|\\\")\\n| project-away + UserAgentNoHexAlphas, Tokens;\\nUserAgentAll\\n| where StartTime >= ago(endtime)\\n| + summarize StartTime = min(StartTime), EndTime = max(EndTime), count() by UserAgent, + NormalizedUserAgent, SourceIP, Account, Type, RecordType, Operation, EventSource, + EventName, sSiteName, csMethod, csUriStem\\n| join kind=leftanti\\n(\\nUserAgentAll\\n| + where StartTime < ago(endtime)\\n| summarize by NormalizedUserAgent, SourceIP, + Account, Type, RecordType, Operation, EventSource, EventName, sSiteName, csMethod, + csUriStem\\n)\\non NormalizedUserAgent\\n| extend timestamp = StartTime, IPCustomEntity + = SourceIP, AccountCustomEntity = Account\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"CommandAndControl\",\"Execution\"],\"techniques\":[\"T1189\",\"T1071\",\"T1203\"],\"displayName\":\"New + UserAgent observed in last 24 hours\",\"description\":\"Identifies new UserAgents + observed in the last 24 hours versus the previous 14 days. This detection\\nextracts + words from user agents to build the baseline and determine rareity rather + than perform a\\ndirect comparison. This avoids FPs caused by version numbers + and other high entropy user agent components.\\nThese new UserAgents could + be benign. However, in normally stable environments,\\nthese new UserAgents + could provide a starting point for investigating malicious activity.\\nNote: + W3CIISLog can be noisy depending on the environment, however OfficeActivity + and AWSCloudTrail are\\nusually stable with low numbers of detections.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-04-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/155e9134-d5ad-4a6f-88f3-99c220040b66\",\"name\":\"155e9134-d5ad-4a6f-88f3-99c220040b66\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Set the lookback to determine if user has created pipelines before\\nlet timeback + = 14d;\\n// Set the period for detections\\nlet timeframe = 1d;\\n// Get a + list of previous Release Pipeline creators to exclude\\nlet releaseusers = + AzureDevOpsAuditing\\n| where TimeGenerated > ago(timeback) and TimeGenerated + < ago(timeframe)\\n| where OperationName in (\\\"Release.ReleasePipelineCreated\\\", + \\\"Release.ReleasePipelineModified\\\")\\n// We want to look for users performing + actions in specific projects so we create this userscope object to match on\\n| + extend UserScope = strcat(ActorUserId, \\\"-\\\", ProjectName)\\n| summarize + by UserScope;\\n// Get Release Pipeline creations by new users\\nAzureDevOpsAuditing\\n| + where TimeGenerated > ago(timeframe)\\n| where OperationName =~ \\\"Release.ReleasePipelineModified\\\"\\n| + extend UserScope = strcat(ActorUserId, \\\"-\\\", ProjectName)\\n| where UserScope + !in (releaseusers)\\n| extend ActorUPN = tolower(ActorUPN)\\n| project-away + Id, ActivityId, ActorCUID, ScopeId, ProjectId, TenantId, SourceSystem, UserScope\\n// + See if any of these users have Azure AD alerts associated with them in the + same timeframe\\n| join kind = leftouter (\\nSecurityAlert\\n| where TimeGenerated + > ago(timeframe)\\n| where ProviderName == \\\"IPC\\\"\\n| extend AadUserId + = tostring(parse_json(Entities)[0].AadUserId)\\n| summarize Alerts=count() + by AadUserId) on $left.ActorUserId == $right.AadUserId\\n| extend Alerts = + iif(isnotempty(Alerts), Alerts, 0)\\n// Uncomment the line below to only show + results where the user as AADIdP alerts\\n//| where Alerts > 0\\n| extend + timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity + = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\",\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"Azure + DevOps Pipeline modified by a new user.\",\"description\":\"There are several + potential pipeline steps that could be modified by an attacker to inject malicious + code into the build cycle. A likely attacker path is the modification to an + existing pipeline that they have access to. \\nThis detection looks for users + modifying a pipeline when they have not previously been observed modifying + or creating that pipeline before. This query also joins events with data to + Azure AD Identity Protection (AAD IdP) \\nin order to show if the user conducting + the action has any associated AAD IdP alerts. You can also choose to filter + this detection to only alert when the user also has AAD IdP alerts associated + with them.\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3d023f64-8225-41a2-9570-2bd7c2c4535e\",\"name\":\"3d023f64-8225-41a2-9570-2bd7c2c4535e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1DT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 1d;\\nlet spanoftime = 10m;\\nlet threshold = 0;\\n(union isfuzzy=true\\n(SecurityEvent\\n| + where TimeGenerated > ago(timeframe+spanoftime)\\n// A user account was enabled\\n| + where EventID == 4722\\n| where AccountType =~ \\\"User\\\"\\n| where TargetAccount + !endswith \\\"$\\\"\\n| project EnableTime = TimeGenerated, EnableEventID + = EventID, EnableActivity = Activity, Computer, UserPrincipalName, \\nAccountUsedToEnable + = SubjectAccount, SIDofAccountUsedToEnable = SubjectUserSid, TargetAccount + = tolower(TargetAccount), TargetSid\\n),\\n(\\nWindowsEvent\\n| where TimeGenerated + > ago(timeframe+spanoftime)\\n// A user account was enabled\\n| where EventID + == 4722\\n| extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| + extend AccountType=case(EventData.SubjectUserName endswith \\\"$\\\" or SubjectUserSid + in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", + isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| where AccountType =~ + \\\"User\\\"\\n| extend SubjectAccount = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| where TargetAccount !endswith \\\"$\\\"\\n| + extend Activity=\\\"4722 - A user account was enabled.\\\"\\n| extend TargetSid + = tostring(EventData.TargetSid)\\n| extend UserPrincipalName = tostring(EventData.UserPrincipalName)\\n| + project EnableTime = TimeGenerated, EnableEventID = EventID, EnableActivity + = Activity, Computer, UserPrincipalName, \\nAccountUsedToEnable = SubjectAccount, + SIDofAccountUsedToEnable = SubjectUserSid, TargetAccount = tolower(TargetAccount), + TargetSid\\n))\\n| join kind= inner (\\n (union isfuzzy=true\\n (SecurityEvent\\n + \ | where TimeGenerated > ago(timeframe)\\n // A user account was disabled\\n + \ | where EventID == 4725\\n| where AccountType =~ \\\"User\\\"\\n| project + DisableTime = TimeGenerated, DisableEventID = EventID, DisableActivity = Activity, + Computer, UserPrincipalName, \\nAccountUsedToDisable = SubjectAccount, SIDofAccountUsedToDisable + = SubjectUserSid, TargetAccount = tolower(TargetAccount), TargetSid\\n),\\n(WindowsEvent\\n + \ | where TimeGenerated > ago(timeframe)\\n // A user account was disabled\\n + \ | where EventID == 4725\\n| extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| + extend AccountType=case(EventData.SubjectUserName endswith \\\"$\\\" or SubjectUserSid + in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", + isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| where AccountType =~ + \\\"User\\\"\\n| extend SubjectAccount = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| extend TargetSid = tostring(EventData.TargetSid)\\n| + extend UserPrincipalName = tostring(EventData.UserPrincipalName)\\n| extend + Activity = \\\"4725 - A user account was disabled.\\\"\\n| project DisableTime + = TimeGenerated, DisableEventID = EventID, DisableActivity = Activity, Computer, + UserPrincipalName, \\nAccountUsedToDisable = SubjectAccount, SIDofAccountUsedToDisable + = SubjectUserSid, TargetAccount = tolower(TargetAccount), TargetSid))\\n) + on Computer, TargetAccount\\n| where DisableTime - EnableTime < spanoftime\\n| + extend TimeDelta = DisableTime - EnableTime\\n| where tolong(TimeDelta) >= + threshold\\n| project TimeDelta, EnableTime, EnableEventID, EnableActivity, + Computer, TargetAccount, TargetSid, UserPrincipalName, AccountUsedToEnable, + SIDofAccountUsedToEnable, \\nDisableTime, DisableEventID, DisableActivity, + AccountUsedToDisable, SIDofAccountUsedToDisable\\n| extend timestamp = EnableTime, + AccountCustomEntity = AccountUsedToEnable, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"},{\"identifier\":\"Sid\",\"columnName\":\"SIDofAccountUsedToEnable\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"User + account enabled and disabled within 10 mins\",\"description\":\"Identifies + when a user account is enabled and then disabled within 10 minutes. This can + be an indication of compromise and\\nan adversary attempting to hide in the + noise.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8bada072-c58c-4df3-a17e-e02392b48240\",\"name\":\"8bada072-c58c-4df3-a17e-e02392b48240\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.3\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.3\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1531\"],\"displayName\":\"(Preview) + UEBA Anomalous Account Deletion\",\"description\":\"Adversaries may interrupt + availability of system and network resources by inhibiting access to accounts + utilized by legitimate users. Accounts may be deleted, locked, or manipulated + (ex: changed credentials) to remove access to accounts.\\nSentinel UEBA detects + anomalies based on dynamic baselines created for each entity across various + data inputs. Each entity\xE2\u20AC\u2122s baseline behavior is set according + to its own historical activities, those of its peers, and those of the organization + as a whole. Anomalies can be triggered by the correlation of different attributes + such as action type, geo-location, device, resource, ISP, and more.\\nSupported + data sources: Azure Audit (Core Directory/UserManagement/Delete user, Core + Directory/Device/Delete user, Core Directory/UserManagement/Delete user)\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2021-12-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0625fcce-6d52-491e-8c68-1d9b801d25b9\",\"name\":\"0625fcce-6d52-491e-8c68-1d9b801d25b9\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"Event\\n| + where EventLog =~ \\\"Application\\\"\\n| where Source startswith \\\"MSExchange\\\"\\n| + where EventLevelName =~ \\\"error\\\"\\n| where (RenderedDescription startswith + \\\"Watson report\\\" and RenderedDescription contains \\\"umworkerprocess\\\" + and RenderedDescription contains \\\"TextFormattingRunProperties\\\") or RenderedDescription + startswith \\\"An unhandled exception occurred in a UM worker process\\\" + or RenderedDescription startswith \\\"The Microsoft Exchange Unified Messaging + service\\\" or RenderedDescription contains \\\"MSExchange Unified Messaging\\\"\\n| + where RenderedDescription !contains \\\"System.OutOfMemoryException\\\"\\n| + extend timestamp = TimeGenerated, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"HAFNIUM + Suspicious UM Service Error\",\"description\":\"This query looks for errors + that may indicate that an attacker is attempting to exploit a vulnerability + in the service. \\nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-03-02T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/09c49590-4e9d-4da9-a34d-17222d0c9e7e\",\"name\":\"09c49590-4e9d-4da9-a34d-17222d0c9e7e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"eventGroupingSettings\":{\"aggregationKind\":\"AlertPerResult\"},\"severity\":\"Medium\",\"query\":\"let + default_file_ext_blocklist = dynamic(['.ps1', '.vbs', '.bat', '.scr']);\\nlet + custom_file_ext_blocklist=toscalar(_GetWatchlist('RiskyFileTypes') | extend + Extension=column_ifexists(\\\"Extension\\\",\\\"\\\") | where isnotempty(Extension) + | summarize make_set(Extension));\\nlet file_ext_blocklist = array_concat(default_file_ext_blocklist, + custom_file_ext_blocklist);\\n_Im_WebSession(url_has_any=file_ext_blocklist, + eventresult='Success')\\n| extend requestedFileName=tostring(split(tostring(parse_url(Url)[\\\"Path\\\"]),'/')[-1])\\n| + extend requestedFileExt=extract(@(\\\\.\\\\w+)$,1,requestedFileName, typeof(string))\\n| + where requestedFileExtension in (file_ext_blocklist)\\n| summarize LastAttemptTime=max(TimeGenerated), + NumFailedAttempts=count() by SrcIpAddr, requestedFileName, Url\\n| extend + IPCustomEntity = SrcIpAddr, UrlCustomEntity=Url\",\"customDetails\":{\"requestedFileName\":\"requestedFileName\",\"requestedFileExt\":\"requestedFileExt\",\"Username\":\"SrcUsername\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Client + {{SrcIpAddr}} accessed a URL with potentially harmful extension {{requestedFileExt}}\",\"alertDescriptionFormat\":\"The + client at address {{SrcIpAddr}} accessed the URL {{Url}} that has the extension + {{requestedFileExt}}. Downloading a file with this extension may be harmful + and may indicate malicious activity.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"A + client made a web request to a potentially harmful file (ASIM Web Session + schema)\",\"description\":\"This rule identifies a web request to a URL that + holds a file type, including .ps1, .bat, .vbs, and .scr that can be harmful + if downloaded. This rule uses the [Advanced Security Information Model (ASIM)](https://aka.ms/AboutASIM) + and supports any web session source that complies with ASIM. To use this Analytics + Rule, deploy the Advanced Security Information Model (ASIM).\\n This analytic + rule uses [ASIM](https://aka.ms/AboutASIM) and supports any built-in or custom + source that supports the ASIM WebSession schema (ASIM WebSession Schema)\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2021-12-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ffcd575b-3d54-482a-a6d8-d0de13b6ac63\",\"name\":\"ffcd575b-3d54-482a-a6d8-d0de13b6ac63\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet emailregex = @'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$';\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n//Filtering the table for Email related IOCs\\n| where + isnotempty(EmailSenderAddress)\\n// using innerunique to keep perf fast and + result set low, we only need one match to indicate potential malicious activity + that needs to be investigated\\n| join kind=innerunique (\\n CommonSecurityLog + | where TimeGenerated >= ago(dt_lookBack) and isnotempty(DestinationUserID)\\n + \ // Filtering PAN Logs for specific event type to match relevant email + entities\\n | where DeviceVendor == \\\"Palo Alto Networks\\\" and DeviceEventClassID + == \\\"wildfire\\\" and ApplicationProtocol in (\\\"smtp\\\",\\\"pop3\\\")\\n + \ | extend DestinationUserID = tolower(DestinationUserID)\\n | where + DestinationUserID matches regex emailregex\\n | extend CommonSecurityLog_TimeGenerated + = TimeGenerated\\n)\\non $left.EmailSenderAddress == $right.DestinationUserID\\n| + where CommonSecurityLog_TimeGenerated < ExpirationDateTime\\n| summarize CommonSecurityLog_TimeGenerated + = arg_max(CommonSecurityLog_TimeGenerated, *) by IndicatorId, DestinationUserID\\n| + project CommonSecurityLog_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, EmailSenderName, + EmailRecipient, \\nEmailSourceDomain, EmailSourceIpAddress, EmailSubject, + FileHashValue, FileHashType, DestinationUserID, DeviceEventClassID, LogSeverity, + DeviceAction, SourceIP, SourcePort, \\nDestinationIP, DestinationPort, Protocol, + ApplicationProtocol\\n| extend timestamp = CommonSecurityLog_TimeGenerated, + AccountCustomEntity = DestinationUserID, IPCustomEntity = SourceIP, URLCustomEntity + = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Email entity to CommonSecurityLog\",\"description\":\"Identifies a match + in CommonSecurityLog table from any Email IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7cb8f77d-c52f-4e46-b82f-3cf2e106224a\",\"name\":\"7cb8f77d-c52f-4e46-b82f-3cf2e106224a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lookBack_long = 7d;\\nlet lookBack_med = 3d;\\nlet lookBack = 1d;\\nlet aadFunc + = (tableName:string){\\ntable(tableName)\\n| where TimeGenerated >= startofday(ago(lookBack_long))\\n| + extend DeviceDetail = todynamic(DeviceDetail), Status = todynamic(DeviceDetail), + LocationDetails = todynamic(LocationDetails)\\n| extend locationString = strcat(tostring(LocationDetails.countryOrRegion), + \\\"/\\\", tostring(LocationDetails.state), \\\"/\\\", tostring(LocationDetails.city), + \\\";\\\") \\n| project TimeGenerated, AppDisplayName , UserPrincipalName, + locationString \\n// Create time series \\n| make-series dLocationCount = + dcount(locationString) on TimeGenerated in range(startofday(ago(lookBack_long)),now(), + 1d) \\nby UserPrincipalName, AppDisplayName \\n// Compute best fit line for + each entry \\n| extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dLocationCount) + \\n// Chart the 3 most interesting lines \\n// A 0-value slope corresponds + to an account being completely stable over time for a given Azure Active Directory + application\\n| where Slope > 0.3\\n| top 50 by Slope desc\\n| join kind = + leftsemi (\\ntable(tableName)\\n| where TimeGenerated >= startofday(ago(lookBack_med))\\n| + extend DeviceDetail = todynamic(DeviceDetail), Status = todynamic(DeviceDetail), + LocationDetails = todynamic(LocationDetails)\\n| extend locationString = strcat(tostring(LocationDetails.countryOrRegion), + \\\"/\\\", tostring(LocationDetails.state), \\\"/\\\", tostring(LocationDetails.city), + \\\";\\\") \\n| project TimeGenerated, AppDisplayName , UserPrincipalName, + locationString \\n| make-series dLocationCount = dcount(locationString) on + TimeGenerated in range(startofday(ago(lookBack_med)) ,now(), 1d) \\nby UserPrincipalName, + AppDisplayName \\n| extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dLocationCount)\\n| + where Slope > 0.3\\n| top 50 by Slope desc\\n) on UserPrincipalName, AppDisplayName\\n| + join kind = leftsemi (\\ntable(tableName)\\n| where TimeGenerated >= startofday(ago(lookBack))\\n| + extend DeviceDetail = todynamic(DeviceDetail), Status = todynamic(DeviceDetail), + LocationDetails = todynamic(LocationDetails)\\n| extend locationString = strcat(tostring(LocationDetails.countryOrRegion), + \\\"/\\\", tostring(LocationDetails.state), \\\"/\\\", tostring(LocationDetails.city), + \\\";\\\") \\n| project TimeGenerated, AppDisplayName , UserPrincipalName, + locationString \\n| make-series dLocationCount = dcount(locationString) on + TimeGenerated in range(startofday(ago(lookBack)) ,now(), 1d) \\nby UserPrincipalName, + AppDisplayName \\n| extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dLocationCount)\\n| + where Slope > 5\\n| top 50 by Slope desc\\n// Higher threshold requirement + on last day anomaly\\n) on UserPrincipalName, AppDisplayName\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = UserPrincipalName\\n};\\nlet aadSignin + = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Anomalous + sign-in location by user account and authenticating application\",\"description\":\"This + query over Azure Active Directory sign-in considers all user sign-ins for + each Azure Active \\nDirectory application and picks out the most anomalous + change in location profile for a user within an \\nindividual application. + An alert is generated for recent sign-ins that have location counts that are + anomalous\\nover last day but also over the last 3-day and 7-day periods.\\nPlease + note that on workspaces with larger volume of Signin data (~10M+ events a + day) may timeout when using this default query time period.\\nIt is recommended + that you test and tune this appropriately for the workspace.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1da9853f-3dea-4ea9-b7e5-26730da3d537\",\"name\":\"1da9853f-3dea-4ea9-b7e5-26730da3d537\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + PortScanThreshold = 50;\\n_Im_NetworkSession\\n| where ipv4_is_private(SrcIpAddr) + == False\\n| summarize AttemptedPortsCount=dcount(DstPortNumber) by SrcIpAddr, + bin(TimeGenerated, 5m)\\n| where AttemptedPortsCount > PortScanThreshold\",\"customDetails\":{\"AttemptedPortsCount\":\"AttemptedPortsCount\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Potential + port scan from {{SrcIpAddr}}\",\"alertDescriptionFormat\":\"A port scan has + been performed from address {{SrcIpAddr}} over {{AttemptedPortsCount}} pots + within 5 minutes. This may indicate that a [port scanner](https://en.wikipedia.org/wiki/Port_scanner) + is trying to identify open ports in order to penetrate a system.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1046\"],\"displayName\":\"Port + scan detected (ASIM Network Session schema)\",\"description\":\"This rule + identifies a possible port scan, in which a single source tries to access + a large number of different ports is a short time frame. This may indicate + that a [port scanner](https://en.wikipedia.org/wiki/Port_scanner) is trying + to identify open ports in order to penetrate a system.

\\nThis analytic + rule uses [ASIM](https://aka.ms/AboutASIM) and supports any built-in or custom + source that supports the ASIM NetworkSession schema\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2022-03-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/eda260eb-f4a1-4379-ad98-452604da9b3e\",\"name\":\"eda260eb-f4a1-4379-ad98-452604da9b3e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + eventsThreshold = 20;\\nCommonSecurityLog\\n| where isnotempty(RequestURL)\\n| + project TimeGenerated, RequestURL, RequestMethod, SourceIP, SourceHostName\\n| + evaluate sequence_detect(TimeGenerated, 5s, 8s, login=(RequestURL has \\\"login.microsoftonline.com/consumers/oauth2/v2.0/token\\\"), + graph=(RequestURL has \\\"graph.microsoft.com/v1.0/me/drive/\\\"), SourceIP, + SourceHostName)\\n| summarize Events=count() by SourceIP, SourceHostName\\n| + where Events >= eventsThreshold\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceIP\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"SourceHostName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\",\"CommandAndControl\"],\"techniques\":[\"T1567\",\"T1102\"],\"displayName\":\"CreepyDrive + request URL sequence\",\"description\":\"CreepyDrive uses OneDrive for command + and control, however, it makes regular requests to predicatable paths.\\nThis + detecton will alert when over 20 sequences are observed in a single day.\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2022-05-31T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3533f74c-9207-4047-96e2-0eb9383be587\",\"name\":\"3533f74c-9207-4047-96e2-0eb9383be587\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + detectionTime = 1d;\\nlet joinLookback = 14d;\\nAuditLogs\\n| where TimeGenerated + > ago(detectionTime)\\n| where LoggedByService =~ \\\"Core Directory\\\"\\n| + where Category =~ \\\"ApplicationManagement\\\"\\n| where OperationName =~ + \\\"Consent to application\\\"\\n| where TargetResources has \\\"offline\\\"\\n| + extend AppDisplayName = TargetResources.[0].displayName\\n| extend AppClientId + = tolower(TargetResources.[0].id)\\n| where AppClientId !in ((externaldata(knownAppClientId:string, + knownAppDisplayName:string)[@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.OAuth.KnownApplications.csv\\\"] + with (format=\\\"csv\\\")))\\n| extend ConsentFull = TargetResources[0].modifiedProperties[4].newValue\\n| + parse ConsentFull with * \\\"ConsentType: \\\" GrantConsentType \\\", Scope: + \\\" GrantScope1 \\\"]\\\" *\\n| where ConsentFull contains \\\"offline_access\\\" + and ConsentFull contains \\\"Files.Read\\\" or ConsentFull contains \\\"Mail.Read\\\" + or ConsentFull contains \\\"Notes.Read\\\" or ConsentFull contains \\\"ChannelMessage.Read\\\" + or ConsentFull contains \\\"Chat.Read\\\" or ConsentFull contains \\\"TeamsActivity.Read\\\" + or ConsentFull contains \\\"Group.Read\\\" or ConsentFull contains \\\"EWS.AccessAsUser.All\\\" + or ConsentFull contains \\\"EAS.AccessAsUser.All\\\"\\n| where GrantConsentType + != \\\"AllPrincipals\\\" // NOTE: we are ignoring if OAuth application was + granted to all users via an admin - but admin due diligence should be audited + occasionally\\n| extend GrantIpAddress = tostring(iff(isnotempty(InitiatedBy.user.ipAddress), + InitiatedBy.user.ipAddress, InitiatedBy.app.ipAddress))\\n| extend GrantInitiatedBy + = tostring(iff(isnotempty(InitiatedBy.user.userPrincipalName),InitiatedBy.user.userPrincipalName, + InitiatedBy.app.displayName))\\n| extend GrantUserAgent = tostring(iff(AdditionalDetails[0].key + =~ \\\"User-Agent\\\", AdditionalDetails[0].value, \\\"\\\"))\\n| project + TimeGenerated, GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, + GrantIpAddress, GrantUserAgent, AppClientId, OperationName, ConsentFull, CorrelationId\\n| + join kind = leftouter (AuditLogs\\n| where TimeGenerated > ago(joinLookback)\\n| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where OperationName =~ \\\"Add service principal\\\"\\n| extend AppClientId + = tolower(TargetResources[0].id)\\n| extend AppReplyURLs = iff(TargetResources[0].modifiedProperties[1].newValue + has \\\"AddressType\\\", TargetResources[0].modifiedProperties[1].newValue, + \\\"\\\")\\n| distinct AppClientId, tostring(AppReplyURLs)\\n)\\non AppClientId\\n| + join kind = innerunique (AuditLogs\\n| where TimeGenerated > ago(joinLookback)\\n| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where OperationName =~ \\\"Add OAuth2PermissionGrant\\\" or OperationName + =~ \\\"Add delegated permission grant\\\"\\n| extend GrantAuthentication = + tostring(TargetResources[0].displayName)\\n| extend GrantOperation = OperationName\\n| + project GrantAuthentication, GrantOperation, CorrelationId\\n) on CorrelationId\\n| + project TimeGenerated, GrantConsentType, GrantScope1, GrantInitiatedBy, AppDisplayName, + AppReplyURLs, GrantIpAddress, GrantUserAgent, AppClientId, GrantAuthentication, + OperationName, GrantOperation, CorrelationId, ConsentFull\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = GrantInitiatedBy, IPCustomEntity = + GrantIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1528\"],\"displayName\":\"Suspicious + application consent for offline access\",\"description\":\"This will alert + when a user consents to provide a previously-unknown Azure application with + offline access via OAuth.\\nOffline access will provide the Azure App with + access to the listed resources without requiring two-factor authentication.\\nConsent + to applications with offline access and read capabilities should be rare, + especially as the knownApplications list is expanded. Public contributions + to expand this filter are welcome!\\nFor further information on AuditLogs + please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0ee2aafb-4500-4e36-bcb1-e90eec2f0b9b\",\"name\":\"0ee2aafb-4500-4e36-bcb1-e90eec2f0b9b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Low\",\"query\":\"AWSCloudTrail\\n| + where EventName =~ \\\"ConsoleLogin\\\"\\n| extend MFAUsed = tostring(parse_json(AdditionalEventData).MFAUsed), + LoginResult = tostring(parse_json(ResponseElements).ConsoleLogin)\\n| where + MFAUsed !~ \\\"Yes\\\" and LoginResult !~ \\\"Failure\\\"\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by EventName, EventTypeName, + LoginResult, MFAUsed, UserIdentityAccountId, UserIdentityPrincipalid, UserAgent,\\nUserIdentityUserName, + SessionMfaAuthenticated, SourceIpAddress, AWSRegion\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"UserIdentityUserName\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceIpAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\",\"PrivilegeEscalation\",\"Persistence\",\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"NRT + Login to AWS Management Console without MFA\",\"description\":\"Multi-Factor + Authentication (MFA) helps you to prevent credential compromise. This alert + identifies logins to the AWS Management Console without MFA.\\nYou can limit + this detection to trigger for administrative accounts if you do not have MFA + enabled on all accounts.\\nThis is done by looking at the eventName ConsoleLogin + and if the AdditionalEventData field indicates MFA was NOT used\\nand the + ResponseElements field indicates NOT a Failure. Thereby indicating that a + non-MFA login was successful.\",\"lastUpdatedDateUTC\":\"2022-02-08T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/269435e3-1db8-4423-9dfc-9bf59997da1c\",\"name\":\"269435e3-1db8-4423-9dfc-9bf59997da1c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"AuditLogs\\n| + where Category =~ \\\"RoleManagement\\\"\\n| where OperationName has \\\"Add + member to role outside of PIM\\\"\\n or (LoggedByService == \\\"Core + Directory\\\" and OperationName == \\\"Add member to role\\\" and Identity + != \\\"MS-PIM\\\")\\n| extend AccountCustomEntity = tostring(TargetResources[0].userPrincipalName), + IPCustomEntity = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.3\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1078\"],\"displayName\":\"Privileged + Role Assigned Outside PIM\",\"description\":\"Identifies a privileged role + being assigned to a user outside of PIM\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-accounts#things-to-monitor-1\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2be4ef67-a93f-4d8a-981a-88158cb73abd\",\"name\":\"2be4ef67-a93f-4d8a-981a-88158cb73abd\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet covidIndicators = (externaldata(TimeGenerated:datetime, + FileHashValue:string, FileHashType: string, TlpLevel: string, Product: string, + ThreatType: string, Description: string )\\n[@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.Covid19.Indicators.csv\\\"] + with (format=\\\"csv\\\"));\\nlet fileHashIndicators = covidIndicators\\n| + where isnotempty(FileHashValue);\\n// Handle matches against both lower case + and uppercase versions of the hash:\\n(fileHashIndicators | extend FileHashValue + = tolower(FileHashValue)\\n| union (fileHashIndicators | extend FileHashValue + = toupper(FileHashValue)))\\n// using innerunique to keep perf fast and result + set low, we only need one match to indicate potential malicious activity that + needs to be investigated\\n| join kind=innerunique (\\n CommonSecurityLog + | where TimeGenerated >= ago(dt_lookBack) \\n | where isnotempty(FileHash)\\n + \ | extend CommonSecurityLog_TimeGenerated = TimeGenerated\\n )\\non $left.FileHashValue + == $right.FileHash\\n| summarize CommonSecurityLog_TimeGenerated = arg_max(CommonSecurityLog_TimeGenerated, + *) by FileHashValue\\n| project CommonSecurityLog_TimeGenerated, FileHashValue, + FileHashType, Description, ThreatType, \\nSourceIP, SourcePort, DestinationIP, + DestinationPort, SourceUserID, SourceUserName, DeviceName, DeviceAction, \\nRequestURL, + DestinationUserName, DestinationUserID, ApplicationProtocol, Activity\\n| + extend timestamp = CommonSecurityLog_TimeGenerated, IPCustomEntity = SourceIP, + HostCustomEntity = DeviceName, AccountCustomEntity = SourceUserName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.0\",\"tactics\":[\"Impact\"],\"displayName\":\"Microsoft + COVID-19 file hash indicator matches\",\"description\":\"Identifies a match + in CommonSecurityLog Event data from any FileHash published in the Microsoft + COVID-19 Threat Intel Feed - as described at https://www.microsoft.com/security/blog/2020/05/14/open-sourcing-covid-threat-intelligence/\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5b72f527-e3f6-4a00-9908-8e4fee14da9f\",\"name\":\"5b72f527-e3f6-4a00-9908-8e4fee14da9f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"CommonSecurityLog\\n| + where isnotempty(DestinationPort) and DeviceAction !in (\\\"reset-both\\\", + \\\"deny\\\") \\n// filter out common usage ports. Add ports that are legitimate + for your environment\\n| where DestinationPort !in (\\\"443\\\", \\\"53\\\", + \\\"389\\\", \\\"80\\\", \\\"0\\\", \\\"880\\\", \\\"8888\\\", \\\"8080\\\")\\n| + where ApplicationProtocol == \\\"incomplete\\\" \\n// filter out IANA ephemeral + or negotiated ports as per https://en.wikipedia.org/wiki/Ephemeral_port\\n| + where DestinationPort !between (toint(49512) .. toint(65535)) \\n| where Computer + != \\\"\\\" \\n| where DestinationIP !startswith \\\"10.\\\"\\n| extend Reason + = coalesce(\\n column_ifexists(\\\"Reason\\\", + \\\"\\\"), \\n extract(\\\"reason=(.+?)(;|$)\\\", + 1, AdditionalExtensions),\\n \\\"\\\"\\n )\\n// + Filter out any graceful reset reasons of AGED OUT which occurs when a TCP + session closes with a FIN due to aging out. \\n| where Reason !has \\\"aged-out\\\" + \\n// Filter out any TCP FIN which occurs when a TCP FIN is used to gracefully + close half or both sides of a connection.\\n| where Reason !has \\\"tcp-fin\\\" + \\n// Uncomment one of the following where clauses to trigger on specific + TCP reset reasons\\n// See Palo Alto article for details - https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClUvCAK\\n// + TCP RST-server - Occurs when the server sends a TCP reset to the client\\n// + | where AdditionalExtensions has \\\"reason=tcp-rst-from-server\\\" \\n// + TCP RST-client - Occurs when the client sends a TCP reset to the server\\n// + | where AdditionalExtensions has \\\"reason=tcp-rst-from-client\\\" \\n// + Already performed\\n//| extend reason = tostring(split(AdditionalExtensions, + \\\";\\\")[3])\\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc + = max(TimeGenerated), count() by DeviceName, SourceUserID, SourceIP, ApplicationProtocol, + Reason, DestinationPort, Protocol, DeviceVendor, DeviceProduct, DeviceAction, + DestinationIP\\n| where count_ >= 10\\n| summarize StartTimeUtc = min(StartTimeUtc), + EndTimeUtc = max(EndTimeUtc), makeset(DestinationIP), totalcount = sum(count_) + by DeviceName, SourceUserID, SourceIP, ApplicationProtocol, Reason, DestinationPort, + Protocol, DeviceVendor, DeviceProduct, DeviceAction\\n| extend timestamp = + StartTimeUtc, IPCustomEntity = SourceIP, AccountCustomEntity = SourceUserID, + HostCustomEntity = DeviceName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1046\"],\"displayName\":\"Palo + Alto - possible internal to external port scanning\",\"description\":\"Identifies + a list of internal Source IPs (10.x.x.x Hosts) that have triggered 10 or more + non-graceful tcp server resets from one or more Destination IPs which \\nresults + in an \\\"ApplicationProtocol = incomplete\\\" designation. The server resets + coupled with an \\\"Incomplete\\\" ApplicationProtocol designation can be + an indication \\nof internal to external port scanning or probing attack. + \\nReferences: https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClUvCAK + and\\nhttps://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClTaCAK\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2019-02-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/677da133-e487-4108-a150-5b926591a92b\",\"name\":\"677da133-e487-4108-a150-5b926591a92b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + iocs = externaldata(DateAdded:string,FirstSeen:string,IoC:string,Type:string,TLP:string)\\n[@\\\"https://raw.githubusercontent.com/microsoft/mstic/master/Indicators/May21-NOBELIUM/May21NOBELIUMIoCs.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet sha256s = (iocs | + where Type =~ \\\"SHA256\\\"| project IoC);\\nlet ips = (iocs | where Type + =~ \\\"IP\\\"| project IoC);\\nlet IPList = dynamic([\\\"192.99.221.77\\\",\\\"83.171.237.173\\\"]);\\nlet + ips_list=toscalar(ips | summarize makeset(IoC));\\nlet full_ip_list= array_concat(ips_list, + IPList);\\nlet domains = (iocs | where Type =~ \\\"Domain\\\"| project IoC);\\nlet + domain_list=toscalar(domains | summarize make_set(IoC));\\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\nlet + sha256Hashes = dynamic([\\\"2523f94bd4fba4af76f4411fe61084a7e7d80dec163c9ccba9226c80b8b31252\\\",\\n\\\"d035d394a82ae1e44b25e273f99eae8e2369da828d6b6fdb95076fd3eb5de142\\\",\\n\\\"94786066a64c0eb260a28a2959fcd31d63d175ade8b05ae682d3f6f9b2a5a916\\\",\\n\\\"48b5fb3fa3ea67c2bc0086c41ec755c39d748a7100d71b81f618e82bf1c479f0\\\",\\n\\\"ee44c0692fd2ab2f01d17ca4b58ca6c7f79388cbc681f885bb17ec946514088c\\\",\\n\\\"ee42ddacbd202008bcc1312e548e1d9ac670dd3d86c999606a3a01d464a2a330\\\"]);\\n(union + isfuzzy=true\\n(CommonSecurityLog\\n| where SourceIP in (IPList) or DestinationIP + in (IPList) or DestinationHostName in~ (domains) or RequestURL has_any (domains) + or Message has_any (IPList)\\n| parse Message with * '(' DNSName ')' * \\n| + extend MessageIP = extract(IPRegex, 0, Message)\\n| extend IPMatch = case(SourceIP + in (IPList), \\\"SourceIP\\\", DestinationIP in (IPList), \\\"DestinationIP\\\", + MessageIP in (IPList), \\\"Message\\\", RequestURL in (domains), \\\"RequestUrl\\\", + SourceIP in (ips), \\\"SourceIP\\\", DestinationIP in (ips), \\\"DestinationIP\\\", + MessageIP in (IPList), \\\"Message\\\", \\\"NoMatch\\\") \\n| extend timestamp + = TimeGenerated, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIP, + IPMatch == \\\"DestinationIP\\\", DestinationIP, IPMatch == \\\"Message\\\", + MessageIP, \\\"NoMatch\\\"), AccountCustomEntity = SourceUserID\\n),\\n(_Im_Dns + (domain_has_any=todynamic(domain_list))\\n| extend DestinationIPAddress = + DnsResponseName, DNSName = DnsQuery, Host = Dvc\\n| extend timestamp = TimeGenerated, + IPCustomEntity = SrcIpAddr, HostCustomEntity = Host\\n),\\n(_Im_Dns (response_has_any_prefix=todynamic(full_ip_list))\\n| + extend DestinationIPAddress = DnsResponseName, DNSName = DnsQuery, Host = + Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity + = Host\\n),\\n(VMConnection\\n| where SourceIp in (IPList) or DestinationIp + in (IPList) or SourceIp in (ips) or DestinationIp in (ips) or RemoteDnsCanonicalNames + has_any (domains)\\n| parse RemoteDnsCanonicalNames with * '[\\\"' DNSName + '\\\"]' *\\n| extend IPMatch = case( SourceIp in (IPList), \\\"SourceIP\\\", + DestinationIp in (IPList), \\\"DestinationIP\\\", SourceIp in (ips), \\\"SourceIP\\\", + DestinationIp in (ips), \\\"DestinationIP\\\", \\\"None\\\") \\n| extend timestamp + = TimeGenerated, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIp, + IPMatch == \\\"DestinationIP\\\", DestinationIp, \\\"NoMatch\\\"), HostCustomEntity + = Computer\\n),\\n(OfficeActivity\\n| where ClientIP in (IPList) or ClientIP + in (ips)\\n| extend timestamp = TimeGenerated, IPCustomEntity = ClientIP, + AccountCustomEntity = UserId\\n),\\n(WindowsFirewall\\n| where SourceIP in + (IPList) or DestinationIP in (IPList) or SourceIP in (ips) or DestinationIP + in (ips)\\n| extend IPMatch = case( SourceIP in (IPList), \\\"SourceIP\\\", + DestinationIP in (IPList), \\\"DestinationIP\\\", SourceIP in (ips), \\\"SourceIP\\\", + DestinationIP in (ips), \\\"DestinationIP\\\", \\\"None\\\")\\n),\\n(_Im_NetworkSession(srcipaddr_has_any_prefix=full_ip_list)\\n + \ | extend IPMatch = \\\"SourceIP\\\"\\n | extend timestamp = TimeGenerated, + HostCustomEntity = Dvc , IPCustomEntity = SrcIpAddr //, AccountCustomEntity + =User\\n),\\n(_Im_NetworkSession(dstipaddr_has_any_prefix=full_ip_list)\\n + \ | extend IPMatch = \\\"DestinationIP\\\"\\n | extend timestamp = TimeGenerated, + HostCustomEntity = Dvc , IPCustomEntity = DstIpAddr //, AccountCustomEntity + =User\\n),\\n(_Im_WebSession(url_has_any=domains)\\n | extend timestamp=TimeGenerated, + HostCustomEntity=Dvc , DNSName=tostring(parse_url(Url)[\\\"Host\\\"]), AccountCustomEntity=User\\n),\\n(_Im_WebSession(srcipaddr_has_any_prefix=full_ip_list)\\n + \ | extend timestamp=TimeGenerated, HostCustomEntity=Dvc , DNSName=tostring(parse_url(Url)[\\\"Host\\\"]), + AccountCustomEntity=User\\n),\\n(AzureDiagnostics \\n| where ResourceType + == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (domains) \\n| extend timestamp = TimeGenerated, + DNSName = DestinationHost, IPCustomEntity = SourceHost\\n),\\n(Event\\n//This + query uses sysmon data depending on table name used this may need updating\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| where EventDetail + has_any (sha256Hashes) or EventDetail has_any (sha256s)\\n| parse EventDetail + with * 'SHA256=' SHA256 '\\\",' *\\n| extend Type = strcat(Type, \\\": \\\", + Source), Account = UserName, FileHash = SHA256\\n| project Type, TimeGenerated, + Computer, Account, FileHash\\n),\\n(DeviceFileEvents\\n| where SHA256 in~ + (sha256Hashes) or SHA256 in~ (sha256s)\\n| extend Account = RequestAccountName, + Computer = DeviceName, IPAddress = RequestSourceIP, CommandLine = InitiatingProcessCommandLine, + FileHash = SHA256\\n| project Type, TimeGenerated, Computer, Account, IPAddress, + CommandLine, FileHash\\n),\\n(imFileEvent\\n| where TargetFileSHA256 in~ (sha256Hashes) + or TargetFileSHA256 in~ (sha256s)\\n| extend Account = ActorUsername, Computer + = DvcHostname, IPAddress = SrcIpAddr, CommandLine = ActingProcessCommandLine, + FileHash = TargetFileSHA256\\n| project Type, TimeGenerated, Computer, Account, + IPAddress, CommandLine, FileHash\\n),\\n(CommonSecurityLog\\n| where FileHash + in (sha256Hashes) or FileHash in (sha256s)\\n| extend timestamp = TimeGenerated\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"DNS\",\"fieldMappings\":[{\"identifier\":\"DomainName\",\"columnName\":\"DNSName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.5.1\",\"tactics\":[\"CommandAndControl\",\"Execution\"],\"techniques\":[\"T1102\",\"T1204\"],\"displayName\":\"NOBELIUM + - Domain, Hash and IP IOCs - May 2021\",\"description\":\"Identifies a match + across various data feeds for domains, hashes and IP IOCs related to NOBELIUM.\\nRef: + https://www.microsoft.com/security/blog/2021/05/27/new-sophisticated-email-based-attack-from-nobelium/\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2021-03-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\",\"DeviceFileEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"WindowsFirewall\",\"dataTypes\":[\"WindowsFirewall\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/35ce9aff-1708-45b8-a295-5e9a307f5f17\",\"name\":\"35ce9aff-1708-45b8-a295-5e9a307f5f17\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"AzureDevOpsAuditing\\n| + where OperationName =~ \\\"Group.UpdateGroupMembership.Add\\\"\\n| where Details + has_any (\\\"Project Administrators\\\", \\\"Project Collection Administrators\\\", + \\\"Project Collection Service Accounts\\\", \\\"Build Administrator\\\")\\n| + project-reorder TimeGenerated, Details, ActorUPN, IpAddress, UserAgent, AuthenticationMechanism, + ScopeDisplayName\\n| extend timekey = bin(TimeGenerated, 1h)\\n| extend ActorUserId + = tostring(Data.MemberId)\\n| project timekey, ActorUserId, AddingUser=ActorUPN, + TimeAdded=TimeGenerated, PermissionGrantDetails = Details\\n// Get details + of operations conducted by user soon after elevation of permissions\\n| join + (AzureDevOpsAuditing\\n| extend ActorUserId = tostring(Data.MemberId)\\n| + extend timekey = bin(TimeGenerated, 1h)) on timekey, ActorUserId\\n| summarize + ActionsWhenAdded = make_set(OperationName) by ActorUPN, AddingUser, TimeAdded, + PermissionGrantDetails, IpAddress, UserAgent\\n| extend timestamp = TimeAdded, + AccountCustomEntity = ActorUPN, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AddingUser\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"New + PA, PCA, or PCAS added to Azure DevOps\",\"description\":\"In order for an + attacker to be able to conduct many potential attacks against Azure DevOps + they will need to gain elevated permissions. \\nThis detection looks for users + being granted key administrative permissions. If the principal of least privilege + is applied, the number of \\nusers granted these permissions should be small. + Note that permissions can also be granted via Azure AD groups and monitoring + of these \\nshould also be conducted.\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/30dea201-74da-4141-8d21-8a18f0861d60\",\"name\":\"30dea201-74da-4141-8d21-8a18f0861d60\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.5\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.02\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of AWS cloud trail logs events of group user account by + EventTypeName\",\"description\":\"This algorithm detects an unusually high + volume of AWS cloud trail log events per group user account by different event + types (AwsApiCall, AwsServiceEvent, AwsConsoleSignIn, AwsConsoleAction) within + the last day. The model is trained on the previous 21 days of AWS cloud trail + log events on a group user account basis. This activity may indicate that + the account is compromised.\",\"lastUpdatedDateUTC\":\"2022-03-08T00:00:00Z\",\"createdDateUTC\":\"2021-06-08T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bf07ca9c-e408-443a-8939-6860a45a929e\",\"name\":\"bf07ca9c-e408-443a-8939-6860a45a929e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + allowed_publishers = dynamic([]);\\nAzureDevOpsAuditing\\n| where OperationName + =~ \\\"Extension.Installed\\\"\\n| extend ExtensionName = tostring(Data.ExtensionName)\\n| + extend PublisherName = tostring(Data.PublisherName)\\n| where PublisherName + !in (allowed_publishers)\\n| project-reorder TimeGenerated, OperationName, + ExtensionName, PublisherName, ActorUPN, IpAddress, UserAgent, ScopeDisplayName, + Data\\n| extend timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, + IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1505\"],\"displayName\":\"Azure + DevOps New Extension Added\",\"description\":\"Extensions add additional features + to Azure DevOps. An attacker could use a malicious extension to conduct malicious + activity. \\nThis query looks for new extensions that are not from a configurable + list of approved publishers.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/65c78944-930b-4cae-bd79-c3664ae30ba7\",\"name\":\"65c78944-930b-4cae-bd79-c3664ae30ba7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"(union + isfuzzy=true\\n(AuditLogs \\n| where OperationName =~ \\\"Disable Strong Authentication\\\"\\n| + extend IPAddress = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress) + \\n| extend InitiatedByUser = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)), + \\n tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName), tostring(parse_json(tostring(InitiatedBy.app)).displayName))\\n| + extend Targetprop = todynamic(TargetResources)\\n| extend TargetUser = tostring(Targetprop[0].userPrincipalName) + \\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) + by User = TargetUser, InitiatedByUser , Operation = OperationName , CorrelationId, + IPAddress, Category, Source = SourceSystem , AADTenantId, Type\\n),\\n(AWSCloudTrail\\n| + where EventName in~ (\\\"DeactivateMFADevice\\\", \\\"DeleteVirtualMFADevice\\\") + \\n| extend InstanceProfileName = tostring(parse_json(RequestParameters).InstanceProfileName)\\n| + extend TargetUser = tostring(parse_json(RequestParameters).userName)\\n| summarize + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by User + = TargetUser, Source = EventSource , Operation = EventName , TenantorInstance_Detail + = InstanceProfileName, IPAddress = SourceIpAddress\\n)\\n)\\n| extend timestamp + = StartTimeUtc, AccountCustomEntity = User, IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\",\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"MFA + disabled for a user\",\"description\":\"Multi-Factor Authentication (MFA) + helps prevent credential compromise. This alert identifies when an attempt + has been made to disable MFA for a user \",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2019-12-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4759ddb4-2daf-43cb-b34e-d85b85b4e4a5\",\"name\":\"4759ddb4-2daf-43cb-b34e-d85b85b4e4a5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/DEV-0322_SolarWinds_Serv-U_IoC.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet process = (iocs | + where Type =~ \\\"process\\\" | project IoC);\\nlet parentprocess = (iocs + | where Type =~ \\\"parentprocess\\\" | project IoC);\\nlet IPList = (iocs + | where Type =~ \\\"ip\\\"| project IoC);\\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\n(union + isfuzzy=true\\n(CommonSecurityLog\\n| where SourceIP in (IPList) or DestinationIP + in (IPList) or RequestURL has_any (IPList) or Message has_any (IPList)\\n| + project TimeGenerated, SourceIP, DestinationIP, Message, SourceUserID, RequestURL, + Type\\n| extend MessageIP = extract(IPRegex, 0, Message)\\n| extend IPMatch + = case(SourceIP in (IPList), \\\"SourceIP\\\", DestinationIP in (IPList), + \\\"DestinationIP\\\", MessageIP in (IPList), \\\"Message\\\", RequestURL + in (IPList), \\\"RequestUrl\\\",\\\"NoMatch\\\"), AlertDetail = 'Dev-0322 + IOC match'\\n| extend timestamp = TimeGenerated, IPCustomEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, + IPMatch == \\\"Message\\\", MessageIP, IPMatch == \\\"RequestUrl\\\", RequestURL, + \\\"NoMatch\\\"), AccountCustomEntity = SourceUserID\\n),\\n(DnsEvents\\n| + where IPAddresses in (IPList) \\n| project TimeGenerated, Computer, IPAddresses, + Name, ClientIP, Type\\n| extend DestinationIPAddress = IPAddresses, DNSName + = Name, Host = Computer , AlertDetail = 'Dev-0322 IOC match'\\n| extend timestamp + = TimeGenerated, IPCustomEntity = DestinationIPAddress, HostCustomEntity = + Host\\n),\\n(VMConnection\\n| where SourceIp in (IPList) or DestinationIp + in (IPList)\\n| parse RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' + *\\n| project TimeGenerated, Computer, Direction, ProcessName, SourceIp, DestinationIp, + DestinationPort, RemoteDnsQuestions, DNSName,BytesSent, BytesReceived, RemoteCountry, + Type\\n| extend IPMatch = case( SourceIp in (IPList), \\\"SourceIP\\\", DestinationIp + in (IPList), \\\"DestinationIP\\\", \\\"None\\\") , AlertDetail = 'Dev-0322 + IOC match'\\n| extend timestamp = TimeGenerated, IPCustomEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIp, IPMatch == \\\"DestinationIP\\\", DestinationIp, + \\\"NoMatch\\\"), HostCustomEntity = Computer, ProcessCustomEntity = ProcessName\\n),\\n(Event\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 3\\n| + extend EvData = parse_xml(EventData)\\n| extend EventDetail = EvData.DataItem.EventData.Data\\n| + extend SourceIP = EventDetail.[9].[\\\"#text\\\"], DestinationIP = EventDetail.[14].[\\\"#text\\\"], + Image = EventDetail.[4].[\\\"#text\\\"]\\n| where SourceIP in (IPList) or + DestinationIP in (IPList) \\n| project TimeGenerated, SourceIP, DestinationIP, + Image, UserName, Computer, Type\\n| extend IPMatch = case( SourceIP in (IPList), + \\\"SourceIP\\\", DestinationIP in (IPList), \\\"DestinationIP\\\", \\\"None\\\") + , AlertDetail = 'Dev-0322 IOC match'\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = UserName, ProcessCustomEntity = tostring(split(Image, + '\\\\\\\\', -1)[-1]), HostCustomEntity = Computer , IPCustomEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, + \\\"None\\\")\\n), \\n(OfficeActivity\\n| where ClientIP in (IPList) \\n| + project TimeGenerated, UserAgent, Operation, RecordType, UserId, ClientIP, + AlertDetail = 'Dev-0322 IOC match', Type\\n| extend timestamp = TimeGenerated, + IPCustomEntity = ClientIP, AccountCustomEntity = UserId\\n),\\n(DeviceNetworkEvents\\n| + where RemoteIP in (IPList)\\n| project TimeGenerated, ActionType, DeviceId, + DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, RemoteIP, RemoteUrl, + RemotePort, LocalIP, Type\\n| extend timestamp = TimeGenerated, IPCustomEntity + = RemoteIP, HostCustomEntity = DeviceName, AlertDetail = 'Dev-0322 IOC match', + UrlCustomEntity =RemoteUrl, ProcessCustomEntity = InitiatingProcessFileName\\n),\\n(WindowsFirewall\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) \\n| project TimeGenerated, + Computer, CommunicationDirection, SourceIP, DestinationIP, SourcePort, DestinationPort, + Type\\n| extend IPMatch = case( SourceIP in (IPList), \\\"SourceIP\\\", DestinationIP + in (IPList), \\\"DestinationIP\\\", \\\"None\\\"), AlertDetail = 'Dev-0322 + IOC match'\\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer + , IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIP, IPMatch == + \\\"DestinationIP\\\", DestinationIP, \\\"None\\\")\\n),\\n(AzureDiagnostics\\n| + where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallDnsProxy\\\"\\n| + project TimeGenerated,Resource, msg_s, Type\\n| parse msg_s with \\\"DNS Request: + \\\" ClientIP \\\":\\\" ClientPort \\\" - \\\" QueryID \\\" \\\" Request_Type + \\\" \\\" Request_Class \\\" \\\" Request_Name \\\". \\\" Request_Protocol + \\\" \\\" Request_Size \\\" \\\" EDNSO_DO \\\" \\\" EDNS0_Buffersize \\\" + \\\" Responce_Code \\\" \\\" Responce_Flags \\\" \\\" Responce_Size \\\" \\\" + Response_Duration\\n| where ClientIP in (IPList)\\n| extend timestamp = TimeGenerated, + DNSName = Request_Name, IPCustomEntity = ClientIP, AlertDetail = 'Dev-0322 + IOC match'\\n),\\n(AzureDiagnostics \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| + where Category == \\\"AzureFirewallApplicationRule\\\"\\n| project TimeGenerated,Resource, + msg_s\\n| parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort + 'to ' DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where SourceHost in (IPList)\\n| extend timestamp = TimeGenerated, DNSName + = DestinationHost, IPCustomEntity = SourceHost, AlertDetail = 'Dev-0322 IOC + match'\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + extend EvData = parse_xml(EventData)\\n| extend EventDetail = EvData.DataItem.EventData.Data\\n| + extend ParentImage = EventDetail.[20].[\\\"#text\\\"], Image = EventDetail.[4].[\\\"#text\\\"]\\n| + where ( ParentImage has_any (parentprocess) and Image has_any (process))\\n| + parse EventDetail with * 'SHA256=' SHA256 '\\\",' *\\n| project TimeGenerated, + EventDetail, UserName, Computer, Type, Source, SHA256,Image, ParentImage \\n| + extend Type = strcat(Type, \\\": \\\", Source), Account = UserName, FileHash + = SHA256, AlertDetail = 'Dev-0322 IOC match'\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer , AccountCustomEntity = Account, ProcessCustomEntity + = tostring(split(Image, '\\\\\\\\', -1)[-1]), AlgorithmCustomEntity = \\\"SHA256\\\", + FileHashCustomEntity = FileHash\\n),\\n(DeviceFileEvents\\n| extend CommandLineIP + = extract(IPRegex, 0,InitiatingProcessCommandLine)\\n| where (InitiatingProcessFileName + in (process) and InitiatingProcessParentFileName in (parentprocess)) or CommandLineIP + in (IPList)\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + RequestAccountName, RequestSourceIP, InitiatingProcessSHA256, Type, CommandLineIP\\n| + extend Account = RequestAccountName, Computer = DeviceName, IPAddress = RequestSourceIP, + CommandLine = InitiatingProcessCommandLine, FileHash = InitiatingProcessSHA256, + AlertDetail = 'Dev-0322 IOC match'\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = Account, ProcessCustomEntity = InitiatingProcessFileName, + AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity = FileHash, IPCustomEntity + = CommandLineIP\\n),\\n(DeviceEvents\\n| extend CommandLineIP = extract(IPRegex, + 0,InitiatingProcessCommandLine)\\n| where (InitiatingProcessFileName in (process) + and InitiatingProcessParentFileName in (parentprocess)) or CommandLineIP in + (IPList)\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + InitiatingProcessSHA256, Type, CommandLineIP\\n| extend Account = InitiatingProcessAccountName, + Computer = DeviceName, CommandLine = InitiatingProcessCommandLine, FileHash + = InitiatingProcessSHA256, Image = InitiatingProcessFolderPath, AlertDetail + = 'Dev-0322 IOC match'\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = Account, ProcessCustomEntity = InitiatingProcessFileName, + AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity = FileHash, IPCustomEntity + = CommandLineIP\\n),\\n(DeviceProcessEvents\\n| extend CommandLineIP = extract(IPRegex, + 0,InitiatingProcessCommandLine)\\n| where (InitiatingProcessFileName in (process) + and InitiatingProcessParentFileName in (parentprocess)) or CommandLineIP + in (IPList)\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + \ InitiatingProcessSHA256, Type, CommandLineIP, AccountName\\n| extend Account + = AccountName, Computer = DeviceName, IPAddress = CommandLineIP, CommandLine + = InitiatingProcessCommandLine, FileHash = InitiatingProcessSHA256, AlertDetail + = 'Dev-0322 IOC match'\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = Account, ProcessCustomEntity = InitiatingProcessFileName, + AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity = FileHash, IPCustomEntity + = IPAddress\\n),\\n( SecurityEvent\\n| where EventID == 4688\\n| extend CommandLineIP + = extract(IPRegex, 0, CommandLine)\\n| where CommandLineIP in (IPList) or + (NewProcessName has_any (process) and ParentProcessName has_any (parentprocess))\\n| + project TimeGenerated, Computer, NewProcessName, ParentProcessName, Account, + NewProcessId, Type, CommandLine, CommandLineIP\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer , AccountCustomEntity = Account, ProcessCustomEntity + = NewProcessName, AlertDetail = 'Dev-0322 IOC match', IPCustomEntity = CommandLineIP\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"DEV-0322 + Serv-U related IOCs - July 2021\",\"description\":\"Identifies a match across + IOC's related to DEV-0322 targeting SolarWinds Serv-U software.\",\"lastUpdatedDateUTC\":\"2021-11-30T00:00:00Z\",\"createdDateUTC\":\"2021-06-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\",\"DeviceFileEvents\",\"DeviceEvents\",\"DeviceProcessEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"WindowsFirewall\",\"dataTypes\":[\"WindowsFirewall\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d6491be0-ab2d-439d-95d6-ad8ea39277c5\",\"name\":\"d6491be0-ab2d-439d-95d6-ad8ea39277c5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + SensitiveOperationList = dynamic(\\n[\\\"VaultDelete\\\", \\\"KeyDelete\\\", + \\\"SecretDelete\\\", \\\"SecretPurge\\\", \\\"KeyPurge\\\", \\\"SecretBackup\\\", + \\\"KeyBackup\\\"]);\\nAzureDiagnostics\\n| extend ResultType = columnifexists(\\\"ResultType\\\", + \\\"NoResultType\\\")\\n| extend requestUri_s = columnifexists(\\\"requestUri_s\\\", + \\\"None\\\"), identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + = columnifexists(\\\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\\\", + \\\"None\\\")\\n| extend id_s = columnifexists(\\\"id_s\\\", \\\"None\\\"), + CallerIPAddress = columnifexists(\\\"CallerIPAddress\\\", \\\"None\\\"), clientInfo_s + = columnifexists(\\\"clientInfo_s\\\", \\\"None\\\")\\n| where ResultType + !~ \\\"None\\\" and isnotempty(ResultType)\\n| where identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + !~ \\\"None\\\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\\n| + where id_s !~ \\\"None\\\" and isnotempty(id_s)\\n| where CallerIPAddress + !~ \\\"None\\\" and isnotempty(CallerIPAddress)\\n| where clientInfo_s !~ + \\\"None\\\" and isnotempty(clientInfo_s)\\n| where requestUri_s !~ \\\"None\\\" + and isnotempty(requestUri_s)\\n| where ResourceType =~ \\\"VAULTS\\\" and + ResultType =~ \\\"Success\\\" \\n| where OperationName in~ (SensitiveOperationList) + \ \\n| summarize EventCount=count(), StartTimeUtc=min(TimeGenerated), EndTimeUtc=max(TimeGenerated), + TimeTriggered=makelist(TimeGenerated),OperationNameList=make_set(OperationName), + RequestURLList=make_set(requestUri_s), CallerIPList = make_set(CallerIPAddress), + \ CallerIPMax= arg_max(CallerIPAddress,*) by ResourceType, ResultType, Resource, + id_s, identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, + clientInfo_s\\n| extend timestamp = StartTimeUtc, IPCustomEntity = CallerIPMax, + AccountCustomEntity = identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1485\"],\"displayName\":\"Sensitive + Azure Key Vault operations\",\"description\":\"Identifies when sensitive Azure + Key Vault operations are used. This includes: VaultDelete, KeyDelete, SecretDelete, + SecretPurge, KeyPurge, SecretBackup, KeyBackup. \\nAny Backup operations should + match with expected scheduled backup activity.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2019-07-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureKeyVault\",\"dataTypes\":[\"KeyVaultData\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/70b12a3b-4899-42cb-910c-5ffaf9d7997d\",\"name\":\"70b12a3b-4899-42cb-910c-5ffaf9d7997d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = dynamic([\\\"0.ns1.dns-info.gq\\\", \\\"1.ns1.dns-info.gq\\\", + \\\"10.ns1.dns-info.gq\\\", \\\"102.ns1.dns-info.gq\\\", \\n \\\"104.ns1.dns-info.gq\\\", + \\\"11.ns1.dns-info.gq\\\", \\\"110.ns1.dns-info.gq\\\", \\\"115.ns1.dns-info.gq\\\", + \\\"116.ns1.dns-info.gq\\\", \\n \\\"117.ns1.dns-info.gq\\\", \\\"118.ns1.dns-info.gq\\\", + \\\"12.ns1.dns-info.gq\\\", \\\"120.ns1.dns-info.gq\\\", \\\"122.ns1.dns-info.gq\\\", + \\n \\\"123.ns1.dns-info.gq\\\", \\\"128.ns1.dns-info.gq\\\", \\\"13.ns1.dns-info.gq\\\", + \\\"134.ns1.dns-info.gq\\\", \\\"135.ns1.dns-info.gq\\\", \\n \\\"138.ns1.dns-info.gq\\\", + \\\"14.ns1.dns-info.gq\\\", \\\"144.ns1.dns-info.gq\\\", \\\"15.ns1.dns-info.gq\\\", + \\\"153.ns1.dns-info.gq\\\", \\n \\\"157.ns1.dns-info.gq\\\", \\\"16.ns1.dns-info.gq\\\", + \\\"17.ns1.dns-info.gq\\\", \\\"18.ns1.dns-info.gq\\\", \\\"19.ns1.dns-info.gq\\\", + \\n \\\"1a9604fa.ns1.feedsdns.com\\\", \\\"1c7606b6.ns1.steamappstore.com\\\", + \\\"2.ns1.dns-info.gq\\\", \\\"20.ns1.dns-info.gq\\\", \\n \\\"201.ns1.dns-info.gq\\\", + \\\"202.ns1.dns-info.gq\\\", \\\"204.ns1.dns-info.gq\\\", \\\"207.ns1.dns-info.gq\\\", + \\\"21.ns1.dns-info.gq\\\", \\n \\\"210.ns1.dns-info.gq\\\", \\\"211.ns1.dns-info.gq\\\", + \\\"216.ns1.dns-info.gq\\\", \\\"22.ns1.dns-info.gq\\\", \\\"220.ns1.dns-info.gq\\\", + \\n \\\"223.ns1.dns-info.gq\\\", \\\"23.ns1.dns-info.gq\\\", \\\"24.ns1.dns-info.gq\\\", + \\\"25.ns1.dns-info.gq\\\", \\\"26.ns1.dns-info.gq\\\", \\n \\\"27.ns1.dns-info.gq\\\", + \\\"28.ns1.dns-info.gq\\\", \\\"29.ns1.dns-info.gq\\\", \\\"3.ns1.dns-info.gq\\\", + \\\"30.ns1.dns-info.gq\\\", \\n \\\"31.ns1.dns-info.gq\\\", \\\"32.ns1.dns-info.gq\\\", + \\\"33.ns1.dns-info.gq\\\", \\\"34.ns1.dns-info.gq\\\", \\\"35.ns1.dns-info.gq\\\", + \\n \\\"36.ns1.dns-info.gq\\\", \\\"37.ns1.dns-info.gq\\\", \\\"39.ns1.dns-info.gq\\\", + \\\"3d6fe4b2.ns1.steamappstore.com\\\", \\n \\\"4.ns1.dns-info.gq\\\", \\\"40.ns1.dns-info.gq\\\", + \\\"42.ns1.dns-info.gq\\\", \\\"43.ns1.dns-info.gq\\\", \\\"44.ns1.dns-info.gq\\\", + \\n \\\"45.ns1.dns-info.gq\\\", \\\"46.ns1.dns-info.gq\\\", \\\"48.ns1.dns-info.gq\\\", + \\\"5.ns1.dns-info.gq\\\", \\\"50.ns1.dns-info.gq\\\", \\n \\\"50417.service.gstatic.dnset.com\\\", + \\\"51.ns1.dns-info.gq\\\", \\\"52.ns1.dns-info.gq\\\", \\\"53.ns1.dns-info.gq\\\",\\n + \ \\\"54.ns1.dns-info.gq\\\", \\\"55.ns1.dns-info.gq\\\", \\\"56.ns1.dns-info.gq\\\", + \\\"57.ns1.dns-info.gq\\\", \\\"58.ns1.dns-info.gq\\\", \\n \\\"6.ns1.dns-info.gq\\\", + \\\"60.ns1.dns-info.gq\\\", \\\"62.ns1.dns-info.gq\\\", \\\"63.ns1.dns-info.gq\\\", + \\\"64.ns1.dns-info.gq\\\", \\n \\\"65.ns1.dns-info.gq\\\", \\\"67.ns1.dns-info.gq\\\", + \\\"7.ns1.dns-info.gq\\\", \\\"70.ns1.dns-info.gq\\\", \\\"71.ns1.dns-info.gq\\\",\\n + \ \\\"73.ns1.dns-info.gq\\\", \\\"77.ns1.dns-info.gq\\\", \\\"77075.service.gstatic.dnset.com\\\", + \\\"7c1947fa.ns1.steamappstore.com\\\",\\n \\\"8.ns1.dns-info.gq\\\", \\\"81.ns1.dns-info.gq\\\", + \\\"86.ns1.dns-info.gq\\\", \\\"87.ns1.dns-info.gq\\\", \\\"9.ns1.dns-info.gq\\\", + \\n \\\"94343.service.gstatic.dnset.com\\\", \\\"9939.service.gstatic.dnset.com\\\", + \\\"aa.ns.mircosoftdoc.com\\\", \\n \\\"aaa.feeds.api.ns1.feedsdns.com\\\", + \\\"aaa.googlepublic.feeds.ns1.dns-info.gq\\\", \\n \\\"aaa.resolution.174547._get.cache.up.sourcedns.tk\\\", + \\\"acc.microsoftonetravel.com\\\", \\n \\\"accounts.longmusic.com\\\", + \\\"admin.dnstemplog.com\\\", \\\"agent.updatenai.com\\\", \\n \\\"alibaba.zzux.com\\\", + \\\"api.feedsdns.com\\\", \\\"app.portomnail.com\\\", \\\"asia.updatenai.com\\\", + \\n \\\"battllestategames.com\\\", \\\"bguha.serveuser.com\\\", \\\"binann-ce.com\\\", + \\\"bing.dsmtp.com\\\", \\n \\\"blog.cdsend.xyz\\\", \\\"brives.minivineyapp.com\\\", + \\\"bsbana.dynamic-dns.net\\\", \\n \\\"californiaforce.000webhostapp.com\\\", + \\\"californiafroce.000webhostapp.com\\\", \\n \\\"cdn.freetcp.com\\\", + \\\"cdsend.xyz\\\", \\\"cipla.zzux.com\\\", \\\"cloudfeeddns.com\\\", \\\"comcleanner.info\\\",\\n + \ \\\"cs.microsoftsonline.net\\\", \\\"dns-info.gq\\\", \\\"dns05.cf\\\", + \\\"dns22.ml\\\", \\\"dns224.com\\\", \\n \\\"dnsdist.org\\\", \\\"dnstemplog.com\\\", + \\\"doc.mircosoftdoc.com\\\", \\\"dropdns.com\\\", \\n \\\"eshop.cdn.freetcp.com\\\", + \\\"exchange.dumb1.com\\\", \\\"exchange.misecure.com\\\", \\\"exchange.mrbasic.com\\\",\\n + \ \\\"facebookdocs.com\\\", \\\"facebookint.com\\\", \\\"facebookvi.com\\\", + \\\"feed.ns1.dns-info.gq\\\", \\\"feedsdns.com\\\", \\n \\\"firejun.freeddns.com\\\", + \\\"ftp.dns-info.dyndns.pro\\\", \\\"goallbandungtravel.com\\\", \\\"goodhk.azurewebsites.net\\\", + \\n \\\"googlepublic.feed.ns1.dns-info.gq\\\", \\\"gp.spotifylite.cloud\\\", + \\\"gskytop.com\\\", \\\"gstatic.dnset.com\\\", \\n \\\"gxxservice.com\\\", + \\\"helpdesk.cdn.freetcp.com\\\", \\\"id.serveuser.com\\\", \\\"infestexe.com\\\", + \\\"item.itemdb.com\\\",\\n \\\"m.mircosoftdoc.com\\\", \\\"mail.transferdkim.xyz\\\", + \\\"mcafee.updatenai.com\\\", \\\"mecgjm.mircosoftdoc.com\\\",\\n \\\"microdocs.ga\\\", + \\\"microsock.website\\\", \\\"microsocks.net\\\", \\\"microsoft.sendsmtp.com\\\", + \\n \\\"microsoftbook.dns05.com\\\", \\\"microsoftcontactcenter.com\\\", + \\\"microsoftdocs.dns05.com\\\", \\\"microsoftdocs.ml\\\", \\n \\\"microsoftonetravel.com\\\", + \\\"microsoftonlines.net\\\", \\\"microsoftprod.com\\\", \\\"microsofts.dns1.us\\\", + \\\"microsoftsonline.net\\\",\\n \\\"minivineyapp.com\\\", \\\"mircosoftdoc.com\\\", + \\\"mircosoftdocs.com\\\", \\\"mlcrosoft.ninth.biz\\\", \\\"mlcrosoft.site\\\", + \\n \\\"mm.portomnail.com\\\", \\\"msdnupdate.com\\\", \\\"msecdn.cloud\\\", + \\\"mtnl1.dynamic-dns.net\\\", \\\"ns.gstatic.dnset.com\\\", \\n \\\"ns.microsoftprod.com\\\", + \\\"ns.steamappstore.com\\\", \\\"ns1.cdn.freetcp.com\\\", \\\"ns1.comcleanner.info\\\", + \\\"ns1.dns-info.gq\\\", \\n \\\"ns1.dns05.cf\\\", \\\"ns1.dnstemplog.com\\\", + \\\"ns1.dropdns.com\\\", \\\"ns1.microsoftonetravel.com\\\", \\n \\\"ns1.microsoftonlines.net\\\", + \\\"ns1.microsoftprod.com\\\", \\\"ns1.microsoftsonline.net\\\", \\\"ns1.mlcrosoft.site\\\", + \\n \\\"ns1.teams.wikaba.com\\\", \\\"ns1.windowsdefende.com\\\", \\\"ns2.comcleanner.info\\\", + \\\"ns2.dnstemplog.com\\\", \\n \\\"ns2.microsoftonetravel.com\\\", \\\"ns2.microsoftprod.com\\\", + \\\"ns2.microsoftsonline.net\\\", \\\"ns2.mlcrosoft.site\\\", \\n \\\"ns2.windowsdefende.com\\\", + \\\"ns3.microsoftprod.com\\\", \\\"ns3.mlcrosoft.site\\\", \\\"nutrition.mrbasic.com\\\", + \\n \\\"nutrition.youdontcare.com\\\", \\\"online.mlcrosoft.site\\\", \\\"online.msdnupdate.com\\\", + \\\"outlookservce.site\\\", \\n \\\"owa.jetos.com\\\", \\\"owa.otzo.com\\\", + \\\"pornotime.co\\\", \\\"portomnail.com\\\", \\n \\\"post.1a0.066e063ac.7c1947fa.ns1.steamappstore.com\\\", + \\\"pricingdmdk.com\\\", \\\"prod.microsoftprod.com\\\", \\n \\\"product.microsoftprod.com\\\", + \\\"ptcl.yourtrap.com\\\", \\\"query.api.sourcedns.tk\\\", \\\"rb.itemdb.com\\\", + \\\"redditcdn.com\\\", \\n \\\"rss.otzo.com\\\", \\\"secure.msdnupdate.com\\\", + \\\"service.dns22.ml\\\", \\\"service.gstatic.dnset.com\\\", \\\"service04.dns04.com\\\", + \\n \\\"settings.teams.wikaba.com\\\", \\\"sip.outlookservce.site\\\", \\\"sixindent.epizy.com\\\", + \\\"soft.msdnupdate.com\\\", \\\"sourcedns.ml\\\", \\n \\\"sourcedns.tk\\\", + \\\"sport.msdnupdate.com\\\", \\\"spotifylite.cloud\\\", \\\"static.misecure.com\\\", + \\\"steamappstore.com\\\", \\n \\\"store.otzo.com\\\", \\\"survey.outlookservce.site\\\", + \\\"team.itemdb.com\\\", \\\"temp221.com\\\", \\\"test.microsoftprod.com\\\", + \\n \\\"thisisaaa.000webhostapp.com\\\", \\\"token.dns04.com\\\", \\\"token.dns05.com\\\", + \\\"transferdkim.xyz\\\", \\n \\\"travelsanignacio.com\\\", \\\"update08.com\\\", + \\\"updated08.com\\\", \\\"updatenai.com\\\", \\\"wantforspeed.com\\\",\\n + \ \\\"web.mircosoftdoc.com\\\", \\\"webmail.pornotime.co\\\", \\\"webwhois.team.itemdb.com\\\", + \\\"windowsdefende.com\\\", \\\"wnswindows.com\\\",\\n \\\"ashcrack.freetcp.com\\\", + \\\"battllestategames.com\\\", \\\"binannce.com\\\", \\\"cdsend.xyz\\\", \\\"comcleanner.info\\\", + \\\"microsock.website\\\", \\n \\\"microsocks.net\\\", \\\"microsoftsonline.net\\\", + \\\"mlcrosoft.site\\\", \\\"notify.serveuser.com\\\", \\\"ns1.microsoftprod.com\\\", + \\n \\\"ns2.microsoftprod.com\\\", \\\"pricingdmdk.com\\\", \\\"steamappstore.com\\\", + \\\"update08.com\\\", \\\"wnswindows.com\\\", \\n \\\"youtube.dns05.com\\\", + \\\"z1.zalofilescdn.com\\\", \\\"z2.zalofilescdn.com\\\", \\\"zalofilescdn.com\\\"]); + \\n(union isfuzzy=true \\n (CommonSecurityLog \\n | parse Message with * + '(' DNSName ')' * \\n | where DNSName in~ (DomainNames) \\n | extend Account + = SourceUserID, Computer = DeviceName, IPAddress = DestinationIP \\n ), \\n + (_Im_Dns (domain_has_any=DomainNames)\\n | extend DNSName = DnsQuery \\n | + extend IPAddress = SrcIpAddr, Computer = Dvc\\n ), \\n (_Im_WebSession (url_has_any=DomainNames)\\n + | extend DNSName = tostring(parse_url(Url)[\\\"Host\\\"])\\n | extend IPAddress + = SrcIpAddr, Computer = Dvc\\n ), \\n (VMConnection \\n | parse RemoteDnsCanonicalNames + with * '[\\\"' DNSName '\\\"]' * \\n | where isnotempty(DNSName) \\n | where + DNSName in~ (DomainNames) \\n | extend IPAddress = RemoteIp \\n ), \\n ( + \\n DeviceNetworkEvents \\n | where isnotempty(RemoteUrl) \\n | where RemoteUrl + \ in~ (DomainNames) \\n | extend IPAddress = RemoteIP \\n | extend Computer + = DeviceName \\n ),\\n (AzureDiagnostics \\n | where ResourceType == \\\"AZUREFIREWALLS\\\"\\n + | where Category == \\\"AzureFirewallApplicationRule\\\"\\n | parse msg_s + with Protocol 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost + ':' DestinationPort '. Action:' Action\\n | where isnotempty(DestinationHost)\\n + | where DestinationHost has_any (DomainNames) \\n | extend DNSName = DestinationHost + \\n | extend IPAddress = SourceHost\\n ) \\n ) \\n | extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity + = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.6.1\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Known + Barium domains\",\"description\":\"Identifies a match across various data + feeds for domains IOCs related to the Barium activity group.\\n References: + https://www.justice.gov/opa/pr/seven-international-cyber-defendants-including-apt41-actors-charged-connection-computer\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2020-11-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bff058b2-500e-4ae5-bb49-a5b1423cbd5b\",\"name\":\"bff058b2-500e-4ae5-bb49-a5b1423cbd5b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + fileAccessThrehold = 10;\\nOfficeActivity\\n | where OfficeWorkload =~ \\\"MicrosoftTeams\\\"\\n + | where Operation =~ \\\"MemberAdded\\\"\\n | extend UPN = tostring(parse_json(Members)[0].UPN)\\n + | where UPN contains (\\\"#EXT#\\\")\\n | project TimeAdded=TimeGenerated, + Operation, UPN, UserWhoAdded = UserId, TeamName\\n | join kind = inner(\\n + \ OfficeActivity\\n | where OfficeWorkload + =~ \\\"MicrosoftTeams\\\"\\n | where Operation =~ \\\"MemberRemoved\\\"\\n + \ | extend UPN = tostring(parse_json(Members)[0].UPN)\\n + \ | where UPN contains (\\\"#EXT#\\\")\\n | + project TimeDeleted=TimeGenerated, Operation, UPN, UserWhoDeleted = UserId, + TeamName\\n ) on UPN\\n | where TimeDeleted > TimeAdded\\n + | join kind=inner \\n (\\n OfficeActivity\\n + \ | where RecordType == \\\"SharePointFileOperation\\\"\\n + \ | where SourceRelativeUrl has \\\"Microsoft Teams Chat + Files\\\"\\n | where Operation == \\\"FileUploaded\\\"\\n + \ | join kind = inner \\n (\\n + \ OfficeActivity\\n | + where RecordType == \\\"SharePointFileOperation\\\"\\n | + where Operation == \\\"FileAccessed\\\"\\n | + where SourceRelativeUrl has \\\"Microsoft Teams Chat Files\\\"\\n | + summarize FileAccessCount = count() by OfficeObjectId\\n | + where FileAccessCount > fileAccessThrehold\\n ) + on $left.OfficeObjectId == $right.OfficeObjectId\\n )on + $left.UPN == $right.UserId\\n | extend timestamp=TimeGenerated, AccountCustomEntity + = UserWhoAdded\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1566\"],\"displayName\":\"Accessed + files shared by temporary external user\",\"description\":\"This detection + identifies an external user is added to a Team or Teams chat\\nand shares + a files which is accessed by many users (>10) and the users is removed within + short period of time. This might be\\nan indicator of suspicious activity.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2020-08-18T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity + (Teams)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/610d3850-c26f-4f20-8d86-f10fdf2425f5\",\"name\":\"610d3850-c26f-4f20-8d86-f10fdf2425f5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + EventNameList = dynamic([\\\"UpdateTrail\\\",\\\"DeleteTrail\\\",\\\"StopLogging\\\",\\\"DeleteFlowLogs\\\",\\\"DeleteEventBus\\\"]);\\nAWSCloudTrail\\n| + where EventName in~ (EventNameList)\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by EventName, EventTypeName, UserIdentityAccountId, + UserIdentityPrincipalid, UserAgent, \\nUserIdentityUserName, SessionMfaAuthenticated, + SourceIpAddress, AWSRegion, EventSource\\n| extend timestamp = StartTimeUtc, + AccountCustomEntity = UserIdentityUserName, IPCustomEntity = SourceIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"displayName\":\"Changes + made to AWS CloudTrail logs\",\"description\":\"Attackers often try to hide + their steps by deleting or stopping the collection of logs that could show + their activity. \\nThis alert identifies any manipulation of AWS CloudTrail, + Cloudwatch/EventBridge or VPC Flow logs.\\nMore Information: AWS CloudTrail + API: https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_Operations.html\\nAWS + Cloudwatch/Eventbridge API: https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Operations.html\\nAWS + DelteteFlowLogs API : https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteFlowLogs.html + \",\"lastUpdatedDateUTC\":\"2022-01-11T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3fbc20a4-04c4-464e-8fcb-6667f53e4987\",\"name\":\"3fbc20a4-04c4-464e-8fcb-6667f53e4987\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + failureCountThreshold = 5;\\nlet successCountThreshold = 1;\\nlet authenticationWindow + = 20m;\\nSigninLogs\\n| extend OS = DeviceDetail.operatingSystem, Browser + = DeviceDetail.browser\\n| extend StatusCode = tostring(Status.errorCode), + StatusDetails = tostring(Status.additionalDetails)\\n| extend State = tostring(LocationDetails.state), + City = tostring(LocationDetails.city)\\n| where AppDisplayName =~ \\\"Windows + Sign In\\\"\\n// Split out failure versus non-failure types\\n| extend FailureOrSuccess + = iff(ResultType in (\\\"0\\\", \\\"50125\\\", \\\"50140\\\", \\\"70043\\\", + \\\"70044\\\"), \\\"Success\\\", \\\"Failure\\\")\\n| summarize StartTime + = min(TimeGenerated), EndTime = max(TimeGenerated), IPAddress = makeset(IPAddress), + makeset(OS), makeset(Browser), makeset(City), \\nmakeset(ResultType), FailureCount + = countif(FailureOrSuccess==\\\"Failure\\\"), SuccessCount = countif(FailureOrSuccess==\\\"Success\\\") + \\nby bin(TimeGenerated, authenticationWindow), UserDisplayName, UserPrincipalName, + AppDisplayName\\n| where FailureCount >= failureCountThreshold and SuccessCount + >= successCountThreshold\\n| mvexpand IPAddress\\n| extend IPAddress = tostring(IPAddress)\\n| + extend timestamp = StartTime, AccountCustomEntity = UserPrincipalName, IPCustomEntity + = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Brute + force attack against a Cloud PC\",\"description\":\"Identifies evidence of + brute force activity against a Windows 365 Cloud PC by highlighting multiple + authentication failures and by a successful authentication within a given + time window.\",\"lastUpdatedDateUTC\":\"2021-11-22T00:00:00Z\",\"createdDateUTC\":\"2021-10-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/173f8699-6af5-484a-8b06-8c47ba89b380\",\"name\":\"173f8699-6af5-484a-8b06-8c47ba89b380\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"// + Adjust this value to change how many Teams should be deleted before including\\nlet + max_delete_count = 3;\\n// Adjust this value to change the timewindow the + query runs over\\n OfficeActivity\\n| where OfficeWorkload =~ \\\"MicrosoftTeams\\\" + \\n| where Operation =~ \\\"TeamDeleted\\\"\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated), DeletedTeams = make_set(TeamName) by UserId\\n| + where array_length(DeletedTeams) > max_delete_count\\n| extend timestamp = + StartTime, AccountCustomEntity = UserId\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1485\",\"T1489\"],\"displayName\":\"Multiple + Teams deleted by a single user\",\"description\":\"This detection flags the + occurrences of deleting multiple teams within an hour.\\nThis data is a part + of Office 365 Connector in Microsoft Sentinel.\",\"lastUpdatedDateUTC\":\"2021-11-10T00:00:00Z\",\"createdDateUTC\":\"2020-09-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity + (Teams)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fbfbf530-506b-49a4-81ad-4030885a195c\",\"name\":\"fbfbf530-506b-49a4-81ad-4030885a195c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + alertTimeWindow = 1h;\\nlet logTimeWindow = 7d;\\n// Define script extensions + that suit your web application environment - a sample are provided below\\nlet + scriptExtensions = dynamic([\\\".php\\\", \\\".jsp\\\", \\\".js\\\", \\\".aspx\\\", + \\\".asmx\\\", \\\".asax\\\", \\\".cfm\\\", \\\".shtml\\\"]); \\nlet alertData + = materialize(SecurityAlert \\n| where TimeGenerated > ago(alertTimeWindow) + \\n| where ProviderName == \\\"MDATP\\\" \\n// Parse and expand the alert + JSON \\n| extend alertData = parse_json(Entities) \\n| mvexpand alertData);\\nlet + fileData = alertData\\n// Extract web script files from MDATP alerts - our + malicious web scripts - candidate webshells\\n| where alertData.Type =~ \\\"file\\\" + \\n| where alertData.Name has_any(scriptExtensions) \\n| extend FileName = + tostring(alertData.Name), Directory = tostring(alertData.Directory);\\nlet + hostData = alertData\\n// Extract server details from alerts and map to alert + id\\n| where alertData.Type =~ \\\"host\\\"\\n| project HostName = tostring(alertData.HostName), + DnsDomain = tostring(alertData.DnsDomain), SystemAlertId\\n| distinct HostName, + DnsDomain, SystemAlertId;\\n// Join the files on their impacted servers\\nlet + webshellData = fileData\\n| join kind=inner (hostData) on SystemAlertId \\n| + project TimeGenerated, FileName, Directory, HostName, DnsDomain;\\nwebshellData\\n| + join ( \\n// Find requests that were made to this file on the impacted server + in the W3CIISLog table \\nW3CIISLog \\n| where TimeGenerated > ago(logTimeWindow) + \\n// Restrict to accesses to script extensions \\n| where csUriStem has_any(scriptExtensions)\\n| + extend splitUriStem = split(csUriStem, \\\"/\\\") \\n| extend FileName = + splitUriStem[-1], HostName = sComputerName\\n// Summarize potential attacker + activity\\n| summarize count(), StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), + RequestUserAgents=make_set(csUserAgent), ReqestMethods=make_set(csMethod), + RequestStatusCodes=make_set(scStatus), RequestCookies=make_set(csCookie), + RequestReferers=make_set(csReferer), RequestQueryStrings=make_set(csUriQuery) + by AttackerIP=cIP, SiteName=sSiteName, ShellLocation=csUriStem, tostring(FileName), + HostName \\n) on FileName, HostName\\n| project StartTime, EndTime, AttackerIP, + RequestUserAgents, HostName, SiteName, ShellLocation, ReqestMethods, RequestStatusCodes, + RequestCookies, RequestReferers, RequestQueryStrings, RequestCount = count_\\n// + Expose the attacker ip address as a custom entity\\n| extend timestamp=StartTime, + IPCustomEntity = AttackerIP, HostCustomEntity = HostName\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1505\"],\"displayName\":\"Malicious + web application requests linked with Microsoft Defender for Endpoint (formerly + Microsoft Defender ATP) alerts\",\"description\":\"Takes Microsoft Defender + for Endpoint (formerly Microsoft Defender ATP) alerts where web scripts are + present in the evidence and correlates with requests made to those scripts\\nin + the WCSIISLog to surface new alerts for potentially malicious web request + activity.\\nThe lookback for alerts is set to 1h and the lookback for W3CIISLogs + is set to 7d. A sample set of popular web script extensions\\nhas been provided + in scriptExtensions that should be tailored to your environment.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-05-21T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftDefenderAdvancedThreatProtection\",\"dataTypes\":[\"SecurityAlert\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5f0d80db-3415-4265-9d52-8466b7372e3a\",\"name\":\"5f0d80db-3415-4265-9d52-8466b7372e3a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"AzureDevOpsAuditing\\n| + where AuthenticationMechanism startswith \\\"PAT\\\"\\n// Look for useragents + that include a redenring engine\\n| where UserAgent has_any (\\\"Gecko\\\", + \\\"WebKit\\\", \\\"Presto\\\", \\\"Trident\\\", \\\"EdgeHTML\\\", \\\"Blink\\\")\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity + = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"displayName\":\"Azure + DevOps PAT used with Browser.\",\"description\":\"Personal Access Tokens (PATs) + are used as an alternate password to authenticate into Azure DevOps. PATs + are intended for programmatic access use in code or applications. \\nThis + can be prone to attacker theft if not adequately secured. This query looks + for the use of a PAT in authentication but from a User Agent indicating a + browser. \\nThis should not be normal activity and could be an indicator of + an attacker using a stolen PAT.\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/86a036b2-3686-42eb-b417-909fc0867771\",\"name\":\"86a036b2-3686-42eb-b417-909fc0867771\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"AzureActivity\\n| + where CategoryValue == 'Administrative'\\n| where ResourceProviderValue =~ + 'Microsoft.ADHybridHealthService'\\n| where _ResourceId contains 'AdFederationService'\\n| + where OperationNameValue =~ 'Microsoft.ADHybridHealthService/services/delete'\\n| + extend claimsJson = parse_json(Claims)\\n| extend AppId = tostring(claimsJson.appid)\\n| + extend AccountName = tostring(claimsJson.name)\\n| project-away claimsJson\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = Caller, IPCustomEntity + = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"Azure + Active Directory Hybrid Health AD FS Service Delete\",\"description\":\"This + detection uses AzureActivity logs (Administrative category) to identify the + deletion of an Azure AD Hybrid health AD FS service instance in a tenant.\\nA + threat actor can create a new AD Health ADFS service and create a fake server + to spoof AD FS signing logs.\\nThe health AD FS service can then be deleted + after it is not longer needed via HTTP requests to Azure.\\nMore information + in this blog https://o365blog.com/post/hybridhealthagent/\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-08-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b2c15736-b9eb-4dae-8b02-3016b6a45a32\",\"name\":\"b2c15736-b9eb-4dae-8b02-3016b6a45a32\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\n// The number of operations below which + an IP address is considered an unusual source of role assignment operations\\nlet + alertOperationThreshold = 5;\\nlet createRoleAssignmentActivity = AzureActivity\\n| + where OperationNameValue =~ \\\"microsoft.authorization/roleassignments/write\\\";\\ncreateRoleAssignmentActivity + \\n| where TimeGenerated between (ago(starttime) .. ago(endtime))\\n| summarize + count() by CallerIpAddress, Caller\\n| where count_ >= alertOperationThreshold\\n| + join kind = rightanti ( \\ncreateRoleAssignmentActivity\\n| where TimeGenerated + > ago(endtime)\\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc + = max(TimeGenerated), ActivityTimeStamp = make_set(TimeGenerated), ActivityStatusValue + = make_set(ActivityStatusValue), \\nOperationIds = make_set(OperationId), + CorrelationId = make_set(CorrelationId), ActivityCountByCallerIPAddress = + count() \\nby ResourceId, CallerIpAddress, Caller, OperationNameValue, Resource, + ResourceGroup\\n) on CallerIpAddress, Caller\\n| extend timestamp = StartTimeUtc, + AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\"],\"displayName\":\"Suspicious + granting of permissions to an account\",\"description\":\"Identifies IPs from + which users grant access to other users on azure resources and alerts when + a previously unseen source IP address is used.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9fb57e58-3ed8-4b89-afcf-c8e786508b1c\",\"name\":\"9fb57e58-3ed8-4b89-afcf-c8e786508b1c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + szOperationNames = dynamic([\\\"Microsoft.Compute/virtualMachines/write\\\", + \\\"Microsoft.Resources/deployments/write\\\"]);\\nlet starttime = 14d;\\nlet + endtime = 1d;\\nlet RareCaller = AzureActivity\\n| where TimeGenerated between + (ago(starttime) .. ago(endtime))\\n| where OperationNameValue in~ (szOperationNames)\\n| + project ResourceGroup, Caller, OperationNameValue, CallerIpAddress\\n| join + kind=rightantisemi (\\nAzureActivity\\n| where TimeGenerated > ago(endtime)\\n| + where OperationNameValue in~ (szOperationNames)\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), ActivityStatusValue + = makeset(ActivityStatusValue), OperationIds = makeset(OperationId), CallerIpAddress + = makeset(CallerIpAddress) \\nby ResourceId, Caller, OperationNameValue, Resource, + ResourceGroup\\n) on Caller, ResourceGroup \\n| mvexpand CallerIpAddress\\n| + where isnotempty(CallerIpAddress);\\nlet Counts = RareCaller | summarize ActivityCountByCaller + = count() by Caller;\\nRareCaller | join kind= inner (Counts) on Caller | + project-away Caller1\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = Caller, IPCustomEntity = tostring(CallerIpAddress)\\n| sort by ActivityCountByCaller + desc nulls last\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"Suspicious + Resource deployment\",\"description\":\"Identifies when a rare Resource and + ResourceGroup deployment occurs by a previously unseen Caller.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/67722b33-6ac1-485c-ad6f-9418f360d1d5\",\"name\":\"67722b33-6ac1-485c-ad6f-9418f360d1d5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.2\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1531\"],\"displayName\":\"(Preview) + UEBA Anomalous Account Access Removal\",\"description\":\"Adversaries may + interrupt availability of system and network resources by inhibiting access + to accounts utilized by legitimate users. Accounts may be deleted, locked, + or manipulated (ex. changed credentials) to remove access to accounts. Sentinel + UEBA detects anomalies based on dynamic baselines created for each entity + across various data inputs. Each entity\xE2\u20AC\u2122s baseline behavior + is set according to its own historical activities, those of its peers, and + those of the organization as a whole. Anomalies can be triggered by the correlation + of different attributes such as action type, geo-location, device, resource, + ISP, and more.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2022-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4902eddb-34f7-44a8-ac94-8486366e9494\",\"name\":\"4902eddb-34f7-44a8-ac94-8486366e9494\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 5000;\\n_Im_NetworkSession(eventresult='Failure')\\n| summarize + Count=count() by SrcIpAddr, bin(TimeGenerated,5m)\\n| where Count > threshold\\n| + extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr\",\"customDetails\":{\"NumberOfDenies\":\"Count\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Excessive + number of failed connections from {{SrcIpAddr}}\",\"alertDescriptionFormat\":\"The + client at address {{SrcIpAddr}} generated more than {{threshold}} failures + over a 5 minutes time window, which may indicate malicious activity.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.2.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1499\"],\"displayName\":\"Excessive + number of failed connections from a single source (ASIM Network Session schema)\",\"description\":\"This + rule identifies that a single source generates an excessive amount of failed + connections. Modify the threshold to change the sensitivity of the rule: the + higher the threshold, the less sensitive is the rule and less incidents will + be generated.

\\nThis analytic rule uses [ASIM](https://aka.ms/AboutASIM) + and supports any built-in or custom source that supports the ASIM NetworkSession + schema\",\"lastUpdatedDateUTC\":\"2022-04-10T00:00:00Z\",\"createdDateUTC\":\"2021-12-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1572e66b-20a7-4012-9ec4-77ec4b101bc8\",\"name\":\"1572e66b-20a7-4012-9ec4-77ec4b101bc8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 1d;\\nlet endtime = 1h;\\nlet prev23hThreshold = 4;\\nlet prev1hThreshold + = 15;\\nlet Kerbevent = (union isfuzzy=true\\n(SecurityEvent\\n| where TimeGenerated + >= ago(starttime)\\n| where EventID == 4769\\n| parse EventData with * 'TicketEncryptionType\\\">' + TicketEncryptionType \\\"<\\\" *\\n| where TicketEncryptionType == '0x17'\\n| + parse EventData with * 'TicketOptions\\\">' TicketOptions \\\"<\\\" *\\n| + where TicketOptions == '0x40810000'\\n| parse EventData with * 'Status\\\">' + Status \\\"<\\\" *\\n| where Status == '0x0'\\n| parse EventData with * 'ServiceName\\\">' + ServiceName \\\"<\\\" *\\n| where ServiceName !contains \\\"$\\\" and ServiceName + !contains \\\"krbtgt\\\" \\n| parse EventData with * 'TargetUserName\\\">' + TargetUserName \\\"<\\\" *\\n| where TargetUserName !contains \\\"$@\\\" and + TargetUserName !contains ServiceName\\n| parse EventData with * 'IpAddress\\\">::ffff:' + ClientIPAddress \\\"<\\\" *\\n),\\n(\\nWindowsEvent\\n| where TimeGenerated + >= ago(starttime)\\n| where EventID == 4769 and EventData has '0x17' and EventData + has '0x40810000' and EventData has 'krbtgt'\\n| extend TicketEncryptionType + = tostring(EventData.TicketEncryptionType)\\n| where TicketEncryptionType + == '0x17'\\n| extend TicketOptions = tostring(EventData.TicketOptions)\\n| + where TicketOptions == '0x40810000'\\n| extend Status = tostring(EventData.Status)\\n| + where Status == '0x0'\\n| extend ServiceName = tostring(EventData.ServiceName)\\n| + where ServiceName !contains \\\"$\\\" and ServiceName !contains \\\"krbtgt\\\"\\n| + extend TargetUserName = tostring(EventData.TargetUserName) \\n| where TargetUserName + !contains \\\"$@\\\" and TargetUserName !contains ServiceName\\n| extend ClientIPAddress + = tostring(EventData.IpAddress) \\n));\\nlet Kerbevent23h = Kerbevent\\n| + where TimeGenerated >= ago(starttime) and TimeGenerated < ago(endtime)\\n| + summarize ServiceNameCountPrev23h = dcount(ServiceName), ServiceNameSet23h + = makeset(ServiceName) \\nby Computer, TargetUserName,TargetDomainName, ClientIPAddress, + TicketOptions, TicketEncryptionType, Status\\n| where ServiceNameCountPrev23h + < prev23hThreshold;\\nlet Kerbevent1h = \\nKerbevent\\n| where TimeGenerated + >= ago(endtime)\\n| summarize min(TimeGenerated), max(TimeGenerated), ServiceNameCountPrev1h + = dcount(ServiceName), ServiceNameSet1h = makeset(ServiceName) \\nby Computer, + TargetUserName,TargetDomainName, ClientIPAddress, TicketOptions, TicketEncryptionType, + Status;\\nKerbevent1h \\n| join kind=leftanti\\n(\\nKerbevent23h\\n) on TargetUserName, + TargetDomainName\\n// Threshold value set above is based on testing, this + value may need to be changed for your environment.\\n| where ServiceNameCountPrev1h + > prev1hThreshold\\n| project StartTimeUtc = min_TimeGenerated, EndTimeUtc + = max_TimeGenerated, TargetUserName, Computer, ClientIPAddress, TicketOptions, + \\nTicketEncryptionType, Status, ServiceNameCountPrev1h, ServiceNameSet1h, + TargetDomainName\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = strcat(TargetDomainName,\\\"\\\\\\\\\\\", TargetUserName), HostCustomEntity + = Computer, IPCustomEntity = ClientIPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1558\"],\"displayName\":\"Potential + Kerberoasting\",\"description\":\"A service principal name (SPN) is used to + uniquely identify a service instance in a Windows environment. \\nEach SPN + is usually associated with a service account. Organizations may have used + service accounts with weak passwords in their environment. \\nAn attacker + can try requesting Kerberos ticket-granting service (TGS) service tickets + for any SPN from a domain controller (DC) which contains \\na hash of the + Service account. This can then be used for offline cracking. This hunting + query looks for accounts that are generating excessive \\nrequests to different + resources within the last hour compared with the previous 24 hours. Normal + users would not make an unusually large number \\nof request within a small + time window. This is based on 4769 events which can be very noisy so environment + based tweaking might be needed.\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-04-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/508cef41-2cd8-4d40-a519-b04826a9085f\",\"name\":\"508cef41-2cd8-4d40-a519-b04826a9085f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n| + where EventID == 1102 and EventSourceName == \\\"Microsoft-Windows-Eventlog\\\"\\n| + summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + EventCount = count() by Computer, Account, EventID, Activity\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Account\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1070\"],\"displayName\":\"NRT + Security Event log cleared\",\"description\":\"Checks for event id 1102 which + indicates the security event log was cleared.\\nIt uses Event Source Name + \\\"Microsoft-Windows-Eventlog\\\" to avoid generating false positives from + other sources, like AD FS servers for instance.\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2019-02-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3ff0fffb-d963-40c0-b235-3404f915add7\",\"name\":\"3ff0fffb-d963-40c0-b235-3404f915add7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"GitHubAudit\\n| + where Action == \\\"org.disable_two_factor_requirement\\\"\\n| project TimeGenerated, + Action, Actor, Country, IPaddress, Repository\\n| extend AccountCustomEntity + = Actor, IPCustomEntity = IPaddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1562\"],\"displayName\":\"GitHub + Two Factor Auth Disable\",\"description\":\"Two-factor authentication is a + process where a user is prompted during the sign-in process for an additional + form of identification, such as to enter a code on their cellphone or to provide + a fingerprint scan. Two factor authentication reduces the risk of account + takeover. Attacker will want to disable such security tools in order to go + undetected. \",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-02T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/50cbf34a-4cdd-45d7-b3f5-8b53a1d0d14f\",\"name\":\"50cbf34a-4cdd-45d7-b3f5-8b53a1d0d14f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"Event\\n| + where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID==1\\n| + parse EventData with * 'CommandLine\\\">' CommandLine \\\"<\\\" * 'ParentCommandLine\\\">' + ParentCommandLine \\\"<\\\" *\\n| where ParentCommandLine == \\\"C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\svchost.exe + -k DcomLaunch\\\" and CommandLine == \\\"C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\mmc.exe + -Embedding\\\"\\n| parse EventData with * 'ProcessGuid\\\">' ProcessGuid \\\"<\\\" + * 'Image\\\">' Image \\\"<\\\" * 'Description\\\">' Description \\\"<\\\" + * 'CurrentDirectory\\\">' CurrentDirectory \\\"<\\\" * 'User\\\">' User \\\"<\\\" + * 'LogonGuid\\\">' LogonGuid \\\"<\\\" * 'ParentProcessGuid\\\">' ParentProcessGuid + \\\"<\\\" * 'ParentImage\\\">' ParentImage \\\"<\\\" * 'ParentCommandLine\\\">' + ParentCommandLine \\\"<\\\" * 'ParentUser\\\">' ParentUser \\\"<\\\" *\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by + EventID, Computer, User, ParentImage, ParentProcessGuid, ParentCommandLine, + ParentUser, Image, ProcessGuid, CommandLine, Description\",\"entityMappings\":[{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLine\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"User\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"LateralMovement\"],\"techniques\":[\"T1021\"],\"displayName\":\"Lateral + Movement via DCOM\",\"description\":\"This query detects a fairly uncommon + attack technique using the Windows Distributed Component Object Model (DCOM) + to make a remote execution call to another computer system and gain lateral + movement throughout the network.\\nRef: http://thenegative.zone/incident%20response/2017/02/04/MMC20.Application-Lateral-Movement-Analysis.html\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2022-03-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b1832f60-6c3d-4722-a0a5-3d564ee61a63\",\"name\":\"b1832f60-6c3d-4722-a0a5-3d564ee61a63\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + HAS_ANY_MAX = 10000;\\nlet dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\n//Create + a list of TLDs in our threat feed for later validation\\nlet DOMAIN_TI=ThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(DomainName);\\nlet DOMAIN_TI_list= todynamic(toscalar(DOMAIN_TI + | summarize NIoCs = dcount(DomainName), Domains = make_set(DomainName) \\n + \ | project Domains=iff(NIoCs > HAS_ANY_MAX, dynamic([]), Domains) ));\\nDOMAIN_TI\\n// + using innerunique to keep perf fast and result set low, we only need one match + to indicate potential malicious activity that needs to be investigated\\n| + join kind=innerunique (\\n _Im_WebSession(starttime=ago(dt_lookBack), url_has_any= + DOMAIN_TI_list )\\n //Extract domain patterns from syslog message\\n | + extend domain = tostring(parse_url(Url)[\\\"Host\\\"])\\n | where isnotempty(domain)\\n + \ | extend tld = tostring(split(domain, '.')[-1])\\n | extend Event_TimeGenerated + = TimeGenerated\\n) on $left.DomainName==$right.domain\\n| where Event_TimeGenerated + < ExpirationDateTime\\n| summarize Event_TimeGenerated = arg_max(Event_TimeGenerated + , *) by IndicatorId, domain\\n| project Event_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, + domain, SrcIpAddr, Url\",\"customDetails\":{\"EventTime\":\"Event_TimeGenerated\",\"IoCDescription\":\"Description\",\"ActivityGroupNames\":\"ActivityGroupNames\",\"IndicatorId\":\"IndicatorId\",\"ThreatType\":\"ThreatType\",\"IoCExpirationTime\":\"ExpirationDateTime\",\"IoCConfidenceScore\":\"ConfidenceScore\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"Url\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"A + web request from {{SrcIpAddr}} to hostname {{domain}} matched an IoC\",\"alertDescriptionFormat\":\"A + client with address {{SrcIpAddr}} requested the URL {{Url}}, whose hostname + is a known indicator of compromise of {{ThreatType}}. Consult the threat intelligence + blead for more information on the indicator.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"displayName\":\"(Preview) + TI map Domain entity to Web Session Events (ASIM Web Session schema)\",\"description\":\"This + rule identifies Web Sessions for which the target URL hostname is a known + IoC.

This rule uses the [Advanced Security Information Model (ASIM)](https://aka.ms/AboutSIM) + and supports any web session source that complies with ASIM.\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2022-03-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/643c2025-9604-47c5-833f-7b4b9378a1f5\",\"name\":\"643c2025-9604-47c5-833f-7b4b9378a1f5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"//Adjust + this threshold to fit your environment\\nlet signin_threshold = 5; \\n//Make + a list of IPs with AAD signin failures above our threshold\\nlet aadFunc = + (tableName:string){\\nlet Suspicious_signins = \\ntable(tableName)\\n| where + ResultType !in (\\\"0\\\", \\\"50125\\\", \\\"50140\\\")\\n| where IPAddress + !in (\\\"127.0.0.1\\\", \\\"::1\\\")\\n| summarize count() by IPAddress\\n| + where count_ > signin_threshold\\n| summarize make_set(IPAddress);\\nSuspicious_signins\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nlet + Suspicious_signins = \\nunion isfuzzy=true aadSignin, aadNonInt\\n| summarize + make_set(set_IPAddress);\\n//See if any of those IPs have sucessfully logged + into the AWS console\\nAWSCloudTrail\\n| where EventName =~ \\\"ConsoleLogin\\\"\\n| + extend LoginResult = tostring(parse_json(ResponseElements).ConsoleLogin) \\n| + where LoginResult =~ \\\"Success\\\"\\n| where SourceIpAddress in (Suspicious_signins)\\n| + extend Reason = \\\"Multiple failed AAD logins from IP address\\\"\\n| extend + MFAUsed = tostring(parse_json(AdditionalEventData).MFAUsed)\\n| extend User + = iif(isempty(UserIdentityUserName), UserIdentityType, UserIdentityUserName) + \\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) + by Reason, LoginResult, EventTypeName, UserIdentityType, User, AWSRegion, + SourceIpAddress, UserAgent, MFAUsed\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = User, IPCustomEntity = SourceIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"CredentialAccess\"],\"techniques\":[\"T1078\",\"T1110\"],\"displayName\":\"Failed + AzureAD logons but success logon to AWS Console\",\"description\":\"Identifies + a list of IP addresses with a minimum number(defualt of 5) of failed logon + attempts to Azure Active Directory.\\nUses that list to identify any successful + AWS Console logons from these IPs within the same timeframe.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-08-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d714ef62-1a56-4779-804f-91c4158e528d\",\"name\":\"d714ef62-1a56-4779-804f-91c4158e528d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + ImagesList = dynamic ([\\\"sethc.exe\\\",\\\"utilman.exe\\\",\\\"osk.exe\\\",\\\"Magnify.exe\\\",\\\"Narrator.exe\\\",\\\"DisplaySwitch.exe\\\",\\\"AtBroker.exe\\\"]); + \\nlet OriginalFileNameList = dynamic ([\\\"sethc.exe\\\",\\\"utilman.exe\\\",\\\"osk.exe\\\",\\\"Magnify.exe\\\",\\\"Narrator.exe\\\",\\\"DisplaySwitch.exe\\\",\\\"AtBroker.exe\\\",\\\"SR.exe\\\",\\\"utilman2.exe\\\",\\\"ScreenMagnifier.exe\\\"]); + \\nEvent\\n| where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" + and EventID==1\\n| parse EventData with * 'Image\\\">' Image \\\"<\\\" * 'OriginalFileName\\\">' + OriginalFileName \\\"<\\\" *\\n| where Image has_any (ImagesList) and not + (OriginalFileName has_any (OriginalFileNameList))\\n| parse EventData with + * 'ProcessGuid\\\">' ProcessGuid \\\"<\\\" * 'Description\\\">' Description + \\\"<\\\" * 'CommandLine\\\">' CommandLine \\\"<\\\" * 'CurrentDirectory\\\">' + CurrentDirectory \\\"<\\\" * 'User\\\">' User \\\"<\\\" * 'LogonGuid\\\">' + LogonGuid \\\"<\\\" * 'Hashes\\\">' Hashes \\\"<\\\" * 'ParentProcessGuid\\\">' + ParentProcessGuid \\\"<\\\" * 'ParentImage\\\">' ParentImage \\\"<\\\" * 'ParentCommandLine\\\">' + ParentCommandLine \\\"<\\\" * 'ParentUser\\\">' ParentUser \\\"<\\\" *\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by + EventID, Computer, User, ParentImage, ParentProcessGuid, ParentCommandLine, + ParentUser, Image, ProcessGuid, CommandLine, Description, OriginalFileName, + CurrentDirectory, Hashes\",\"entityMappings\":[{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLine\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1546\"],\"displayName\":\"Modification + of Accessibility Features\",\"description\":\"Adversaries may establish persistence + and/or elevate privileges by executing malicious content triggered by accessibility + features. Windows contains accessibility features that may be launched with + a key combination before a user has logged in (ex: when the user is on the + Windows logon screen). An adversary can modify the way these programs are + launched to get a command prompt or backdoor without logging in to the system.\\n + Two common accessibility programs are C:\\\\Windows\\\\System32\\\\sethc.exe, + launched when the shift key is pressed five times and C:\\\\Windows\\\\System32\\\\utilman.exe, + launched when the Windows + U key combination is pressed. The sethc.exe program + is often referred to as \\\"sticky keys\\\", and has been used by adversaries + for unauthenticated access through a remote desktop login screen. [1]\\nRef: + https://attack.mitre.org/techniques/T1546/008/\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2022-03-10T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7d6d8a8e-b08a-4082-8dbb-d7fd2cbbc35e\",\"name\":\"7d6d8a8e-b08a-4082-8dbb-d7fd2cbbc35e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + scriptExtensions = dynamic([\\\".php\\\", \\\".jsp\\\", \\\".js\\\", \\\".aspx\\\", + \\\".asmx\\\", \\\".asax\\\", \\\".cfm\\\", \\\".shtml\\\"]);\\nunion isfuzzy=true\\n(SecurityEvent\\n| + where EventID == 4663\\n| where Process has_any (\\\"umworkerprocess.exe\\\", + \\\"UMService.exe\\\")\\n| where ObjectName has_any (scriptExtensions)\\n| + where AccessMask in ('0x2','0x100', '0x10', '0x4')\\n| extend timestamp = + TimeGenerated, AccountCustomEntity = Account, HostCustomEntity = Computer, + IPCustomEntity = IpAddress\\n),\\n (WindowsEvent\\n| where EventID == 4663 + and EventData has_any (\\\"umworkerprocess.exe\\\", \\\"UMService.exe\\\") + and EventData has_any (scriptExtensions) \\n| where EventData has_any ('0x2','0x100', + '0x10', '0x4')\\n| extend NewProcessName = tostring(EventData.NewProcessName)\\n| + extend Process=tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n| where Process + has_any (\\\"umworkerprocess.exe\\\", \\\"UMService.exe\\\")\\n| extend ObjectName + = tostring(EventData.ObjectName)\\n| where ObjectName has_any (scriptExtensions)\\n| + extend AccessMask = tostring(EventData.AccessMask)\\n| where AccessMask in + ('0x2','0x100', '0x10', '0x4')\\n| extend Account = strcat(EventData.SubjectDomainName,\\\"\\\\\\\\\\\", + EventData.SubjectUserName)\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity + = Computer, IPCustomEntity = IpAddress\\n),\\n(imFileEvent\\n| where EventType + == \\\"FileCreated\\\"\\n| where ActingProcessName has_any (\\\"umworkerprocess.exe\\\", + \\\"UMService.exe\\\")\\n and\\n TargetFileName has_any (scriptExtensions)\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = ActorUsername, HostCustomEntity + = DvcHostname\\n),\\n(DeviceFileEvents\\n| where ActionType =~ \\\"FileCreated\\\"\\n| + where InitiatingProcessFileName has_any (\\\"umworkerprocess.exe\\\", \\\"UMService.exe\\\")\\n| + where FileName has_any(scriptExtensions)\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = InitiatingProcessAccountUpn, HostCustomEntity = DeviceName, + IPCustomEntity = RequestSourceIP)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"InitiatingProcessAccountUpn\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"DeviceName\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"HAFNIUM + UM Service writing suspicious file\",\"description\":\"This query looks for + the Exchange server UM process writing suspicious files that may be indicative + of webshells.\\nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-03-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceFileEvents\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f8dad4e9-3f19-4d70-ab7f-8f19ccd43a3e\",\"name\":\"f8dad4e9-3f19-4d70-ab7f-8f19ccd43a3e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":1,\"severity\":\"Medium\",\"query\":\"let + threshold = 1;\\nAzureDiagnostics\\n | where OperationName in (\\\"AzureFirewallApplicationRuleLog\\\",\\\"AzureFirewallNetworkRuleLog\\\")\\n + \ | extend msg_s_replaced0 = replace(@\\\"\\\\s\\\\s\\\",@\\\" \\\",msg_s)\\n + \ | extend msg_s_replaced1 = replace(@\\\"\\\\.\\\\s\\\",@\\\" \\\",msg_s_replaced0)\\n + \ | extend msg_a = split(msg_s_replaced1,\\\" \\\")\\n | extend srcAddr_a + = split(msg_a[3],\\\":\\\") , destAddr_a = split(msg_a[5],\\\":\\\")\\n | + extend protocol = tostring(msg_a[0]), srcIp = tostring(srcAddr_a[0]), srcPort + = tostring(srcAddr_a[1]), destIp = tostring(destAddr_a[0]), destPort = tostring(destAddr_a[1]), + action = tostring(msg_a[7])\\n | where action == \\\"Deny\\\"\\n | extend + url = iff(destIp matches regex \\\"\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\",\\\"\\\",destIp)\\n + \ | summarize StartTime = min(TimeGenerated), count() by srcIp, destIp, + url, action, protocol\\n | where count_ >= [\\\"threshold\\\"]\\n | + extend timestamp = StartTime, URLCustomEntity = url, IPCustomEntity = srcIp\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\",\"LateralMovement\",\"CommandAndControl\"],\"techniques\":[\"T1046\",\"T1071\"],\"displayName\":\"Several + deny actions registered\",\"description\":\"Identifies attack pattern when + attacker tries to move, or scan, from resource to resource on the network + and creates an incident when a source has more than 1 registered deny action + in Azure Firewall.\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2020-10-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b9d2eebc-5dcb-4888-8165-900db44443ab\",\"name\":\"b9d2eebc-5dcb-4888-8165-900db44443ab\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"// + Enter a reference list of hostnames for your DC servers\\n//let DCServersList + = dynamic ([\\\"DC01.simulandlabs.com\\\",\\\"DC02.simulandlabs.com\\\"]);\\nSecurityEvent\\n//| + where Computer in (DCServersList)\\n| where EventID == 4662 and ObjectServer + == 'DS'\\n| where AccountType != 'Machine'\\n| where Properties has '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2' + //DS-Replication-Get-Changes\\n or Properties has '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2' + //DS-Replication-Get-Changes-All\\n or Properties has '89e95b76-444d-4c62-991a-0facbeda640c' + //DS-Replication-Get-Changes-In-Filtered-Set\\n| project TimeGenerated, Account, + Activity, Properties, SubjectLogonId, Computer\\n| join kind=leftouter\\n(\\n + \ SecurityEvent\\n //| where Computer in (DCServersList)\\n | where + EventID == 4624 and LogonType == 3\\n | where AccountType != 'Machine'\\n + \ | project TargetLogonId, IpAddress\\n)\\non $left.SubjectLogonId == $right.TargetLogonId\\n| + project-reorder TimeGenerated, Computer, Account, IpAddress\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity = Computer, + SourceAddress = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1003\"],\"displayName\":\"Non + Domain Controller Active Directory Replication\",\"description\":\"This query + detects potential attempts by non-computer accounts (non domain controllers) + to retrieve/synchronize an active directory object leveraging directory replication + services (DRS).\\nA Domain Controller (computer account) would usually be + performing these actions in a domain environment. Another detection rule can + be created to cover domain controllers accounts doing at rare times.\\nA domain + user with privileged permissions to use directory replication services is + rare. Ref: https://threathunterplaybook.com/notebooks/windows/06_credential_access/WIN-180815210510.html\",\"lastUpdatedDateUTC\":\"2021-11-08T00:00:00Z\",\"createdDateUTC\":\"2021-05-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/75297f62-10a8-4fc1-9b2a-12f25c6f05a7\",\"name\":\"75297f62-10a8-4fc1-9b2a-12f25c6f05a7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + domain_lookBack= 14d;\\nlet timeframe = 1d;\\nlet top_million_list = Cisco_Umbrella\\n| + where EventType == \\\"proxylogs\\\"\\n| where TimeGenerated > ago(domain_lookBack) + and TimeGenerated < ago(timeframe)\\n| extend Hostname = parse_url(UrlOriginal)[\\\"Host\\\"]\\n| + summarize count() by tostring(Hostname)\\n| top 1000000 by count_\\n| summarize + make_list(Hostname);\\nCisco_Umbrella\\n| where EventType == \\\"proxylogs\\\"\\n| + where TimeGenerated > ago(timeframe)\\n| extend Hostname = parse_url(UrlOriginal)[\\\"Host\\\"]\\n| + where Hostname !in (top_million_list)\\n| extend Message = \\\"Connect to + unpopular website (possible malicious payload delivery)\\\"\\n| project Message, + SrcIpAddr, DstIpAddr,UrlOriginal, TimeGenerated\\n| extend IpCustomEntity + = SrcIpAddr, UrlCustomEntity = UrlOriginal\",\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Cisco + Umbrella - Connection to Unpopular Website Detected\",\"description\":\"Detects + first connection to an unpopular website (possible malicious payload delivery).\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/89a86f70-615f-4a79-9621-6f68c50f365f\",\"name\":\"89a86f70-615f-4a79-9621-6f68c50f365f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 7d;\\nlet endtime = 1d;\\nlet timeframe = 1h;\\nlet HistThreshold + = 25; \\nlet CurrThreshold = 10; \\nlet HistoricalThreats = CommonSecurityLog\\n| + where isnotempty(SourceIP)\\n| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\\n| + where DeviceVendor =~ \\\"Palo Alto Networks\\\"\\n| where Activity =~ \\\"THREAT\\\" + and SimplifiedDeviceAction =~ \\\"alert\\\" \\n| where DeviceEventClassID + in ('spyware', 'scan', 'file', 'vulnerability', 'flood', 'packet', 'virus','wildfire', + 'wildfire-virus')\\n| summarize TotalEvents = count(), ThreatTypes = make_set(DeviceEventClassID), + DestinationIpList = make_set(DestinationIP), FirstSeen = min(TimeGenerated) + , LastSeen = max(TimeGenerated) by SourceIP, DeviceAction, DeviceVendor;\\nlet + CurrentHourThreats = CommonSecurityLog\\n| where isnotempty(SourceIP)\\n| + where TimeGenerated > ago(timeframe)\\n| where DeviceVendor =~ \\\"Palo Alto + Networks\\\"\\n| where Activity =~ \\\"THREAT\\\" and SimplifiedDeviceAction + =~ \\\"alert\\\" \\n| where DeviceEventClassID in ('spyware', 'scan', 'file', + 'vulnerability', 'flood', 'packet', 'virus','wildfire', 'wildfire-virus')\\n| + summarize TotalEvents = count(), ThreatTypes = make_set(DeviceEventClassID), + DestinationIpList = make_set(DestinationIP), FirstSeen = min(TimeGenerated) + , LastSeen = max(TimeGenerated) by SourceIP, DeviceAction, DeviceProduct, + DeviceVendor;\\nCurrentHourThreats \\n| where TotalEvents < CurrThreshold\\n| + join kind = leftanti (HistoricalThreats \\n| where TotalEvents > HistThreshold) + on SourceIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\",\"Exfiltration\",\"CommandAndControl\"],\"techniques\":[\"T1046\",\"T1030\",\"T1071\"],\"displayName\":\"Palo + Alto Threat signatures from Unusual IP addresses\",\"description\":\"Identifies + Palo Alto Threat signatures from unusual IP addresses which are not historically + seen. \\nThis detection is also leveraged and required for MDE and PAN Fusion + scenario\\nhttps://docs.microsoft.com/Azure/sentinel/fusion-scenario-reference#network-request-to-tor-anonymization-service-followed-by-anomalous-traffic-flagged-by-palo-alto-networks-firewall\",\"lastUpdatedDateUTC\":\"2022-04-20T00:00:00Z\",\"createdDateUTC\":\"2022-03-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/35a0792a-1269-431e-ac93-7ae2980d4dde\",\"name\":\"35a0792a-1269-431e-ac93-7ae2980d4dde\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now() \\n| + where Active == true\\n| where isnotempty(EmailSenderAddress)\\n| extend TI_emailEntity + = EmailSenderAddress\\n// using innerunique to keep perf fast and result set + low, we only need one match to indicate potential malicious activity that + needs to be investigated\\n| join kind=innerunique (\\n ProofpointPOD + \\n | where TimeGenerated >= ago(dt_lookBack)\\n | where isnotempty(SrcUserUpn)\\n + \ | extend ProofpointPOD_TimeGenerated = TimeGenerated, ClientEmail = + SrcUserUpn\\n \\n)\\non $left.TI_emailEntity == $right.ClientEmail\\n| + where ProofpointPOD_TimeGenerated < ExpirationDateTime\\n| summarize ProofpointPOD_TimeGenerated + = arg_max(ProofpointPOD_TimeGenerated, *) by IndicatorId, ClientEmail\\n| + project ProofpointPOD_TimeGenerated, Description, IndicatorId, ThreatType, + ExpirationDateTime, ConfidenceScore, ClientEmail\\n| extend timestamp = ProofpointPOD_TimeGenerated\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"ClientEmail\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Exfiltration\",\"InitialAccess\"],\"displayName\":\"ProofpointPOD + - Email sender in TI list\",\"description\":\"Email sender in TI list.\",\"lastUpdatedDateUTC\":\"2021-11-30T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_maillog_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9c27cee8-0a33-4abe-8683-212c0a98fc28\",\"name\":\"9c27cee8-0a33-4abe-8683-212c0a98fc28\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.6\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.1\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of logins to computer with elevated token\",\"description\":\"This + algorithm detects an unusually high volume of successful logins with elevated + token per computer. The model is trained on the previous 21 days of security + event ID 4624 on a computer. It indicates anomalous high volume of successful + logins with administrator privileges in the last day.\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2021-04-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c3b11fb2-9201-4844-b7b9-6b7bf6d9b851\",\"name\":\"c3b11fb2-9201-4844-b7b9-6b7bf6d9b851\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 200;\\n_Im_Dns(responsecodename='NXDOMAIN')\\n| where isnotempty(DnsResponseCodeName)\\n//| + where DnsResponseCodeName =~ \\\"NXDOMAIN\\\"\\n| summarize count() by SrcIpAddr, + bin(TimeGenerated,15m)\\n| where count_ > threshold\\n| join kind=inner (_Im_Dns(responsecodename='NXDOMAIN')\\n + \ ) on SrcIpAddr\\n| extend timestamp = TimeGenerated, IPCustomEntity = + SrcIpAddr\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\",\"T1008\"],\"displayName\":\"Excessive + NXDOMAIN DNS Queries (ASIM DNS Schema)\",\"description\":\"This creates an + incident in the event a client generates excessive amounts of DNS queries + for non-existent domains. \\nThis analytic rule uses [ASIM](https://aka.ms/AboutASIM) + and supports any built-in or custom source that supports the ASIM DNS schema\",\"lastUpdatedDateUTC\":\"2022-04-10T00:00:00Z\",\"createdDateUTC\":\"2021-06-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/500415fb-bba7-4227-a08a-9857fb61b6a7\",\"name\":\"500415fb-bba7-4227-a08a-9857fb61b6a7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"OfficeActivity\\n| + where OfficeWorkload == \\\"Exchange\\\"\\n| where Operation in~ (\\\"New-TransportRule\\\", + \\\"Set-TransportRule\\\")\\n| mv-apply DynamicParameters = todynamic(Parameters) + on (summarize ParsedParameters = make_bag(pack(tostring(DynamicParameters.Name), + DynamicParameters.Value)))\\n| extend RuleName = case(\\n Operation =~ + \\\"Set-TransportRule\\\", OfficeObjectId,\\n Operation =~ \\\"New-TransportRule\\\", + ParsedParameters.Name,\\n \\\"Unknown\\\")\\n| mv-expand ExpandedParameters + = todynamic(Parameters)\\n| where ExpandedParameters.Name in~ (\\\"BlindCopyTo\\\", + \\\"RedirectMessageTo\\\") and isnotempty(ExpandedParameters.Value)\\n| extend + RedirectTo = ExpandedParameters.Value\\n| extend ClientIPValues = extract_all(@'\\\\[?(::ffff:)?(?P(\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+)|[^\\\\]]+)\\\\]?([-:](?P\\\\d+))?', + dynamic([\\\"IPAddress\\\", \\\"Port\\\"]), ClientIP)[0]\\n| project TimeGenerated, + RedirectTo, IPAddress = tostring(ClientIPValues[0]), Port = tostring(ClientIPValues[1]), + UserId, Operation, RuleName, Parameters\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = UserId, IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Collection\",\"Exfiltration\"],\"techniques\":[\"T1114\",\"T1020\"],\"displayName\":\"Mail + redirect via ExO transport rule\",\"description\":\"Identifies when Exchange + Online transport rule configured to forward emails.\\nThis could be an adversary + mailbox configured to collect mail from multiple user accounts.\",\"lastUpdatedDateUTC\":\"2022-04-18T00:00:00Z\",\"createdDateUTC\":\"2020-05-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/500c103a-0319-4d56-8e99-3cec8d860757\",\"name\":\"500c103a-0319-4d56-8e99-3cec8d860757\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + aadFunc = (tableName:string){\\ntable(tableName)\\n| where ResultType == \\\"50057\\\" + \\n| where ResultDescription == \\\"User account is disabled. The account + has been disabled by an administrator.\\\" \\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated), disabledAccountLoginAttempts = count(), \\ndisabledAccountsTargeted + = dcount(UserPrincipalName), applicationsTargeted = dcount(AppDisplayName), + disabledAccountSet = make_set(UserPrincipalName), \\napplicationSet = make_set(AppDisplayName) + by IPAddress, Type\\n| order by disabledAccountLoginAttempts desc\\n| join + kind= leftouter (\\n // Consider these IPs suspicious - and alert any related + \ successful sign-ins\\n table(tableName)\\n | where ResultType == 0\\n + \ | summarize successfulAccountSigninCount = dcount(UserPrincipalName), + successfulAccountSigninSet = make_set(UserPrincipalName, 15) by IPAddress, + Type\\n // Assume IPs associated with sign-ins from 100+ distinct user + accounts are safe\\n | where successfulAccountSigninCount < 100\\n) on + IPAddress \\n// IPs from which attempts to authenticate as disabled user + accounts originated, and had a non-zero success rate for some other account\\n| + where isnotempty(successfulAccountSigninCount)\\n| project StartTime, EndTime, + IPAddress, disabledAccountLoginAttempts, disabledAccountsTargeted, disabledAccountSet, + applicationSet, \\nsuccessfulAccountSigninCount, successfulAccountSigninSet, + Type\\n| order by disabledAccountLoginAttempts\\n| extend timestamp = StartTime, + IPCustomEntity = IPAddress\\n};\\nlet aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet + aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion isfuzzy=true + aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"InitialAccess\",\"Persistence\"],\"techniques\":[\"T1078\",\"T1098\"],\"displayName\":\"Sign-ins + from IPs that attempt sign-ins to disabled accounts\",\"description\":\"Identifies + IPs with failed attempts to sign in to one or more disabled accounts and where + that same IP has had successful signins from other accounts.\\nThis could + indicate an attacker who obtained credentials for a list of accounts and is + attempting to login with those accounts, some of which may have already been + disabled.\\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\\n50057 + - User account is disabled. The account has been disabled by an administrator.\",\"lastUpdatedDateUTC\":\"2021-10-22T00:00:00Z\",\"createdDateUTC\":\"2019-02-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e7470b35-0128-4508-bfc9-e01cfb3c2eb7\",\"name\":\"e7470b35-0128-4508-bfc9-e01cfb3c2eb7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"Event\\n + | where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID==1\\n + | parse EventData with * 'Image\\\">' Image \\\"<\\\" * 'CommandLine\\\">' + CommandLine \\\"<\\\" * 'ParentImage\\\">' ParentImage \\\"<\\\" *\\n | where + ParentImage has \\\"svchost.exe\\\" and Image has \\\"rundll32.exe\\\" and + CommandLine has \\\"{c08afd90-f2a1-11d1-8455-00a0c91f3880}\\\"\\n | parse + EventData with * 'ProcessGuid\\\">' ProcessGuid \\\"<\\\" * 'Description\\\">' + Description \\\"<\\\" * 'CurrentDirectory\\\">' CurrentDirectory \\\"<\\\" + * 'User\\\">' User \\\"<\\\" * 'LogonGuid\\\">' LogonGuid \\\"<\\\" * 'ParentProcessGuid\\\">' + ParentProcessGuid \\\"<\\\" * 'ParentImage\\\">' ParentImage \\\"<\\\" * 'ParentCommandLine\\\">' + ParentCommandLine \\\"<\\\" * 'ParentUser\\\">' ParentUser \\\"<\\\" *\\n + | summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by + EventID, Computer, User, ParentImage, ParentProcessGuid, ParentCommandLine, + ParentUser, Image, ProcessGuid, CommandLine, Description\",\"entityMappings\":[{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLine\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"User\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"LateralMovement\"],\"techniques\":[\"T1021\"],\"displayName\":\"Detecting + Macro Invoking ShellBrowserWindow COM Objects\",\"description\":\"This query + detects a macro invoking ShellBrowserWindow COM Objects evade naive parent/child + Office detection rules.\\nRef: https://blog.menasec.net/2019/02/threat-hunting-doc-with-macro-invoking.html\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2022-03-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c2da1106-bfe4-4a63-bf14-5ab73130ccd5\",\"name\":\"c2da1106-bfe4-4a63-bf14-5ab73130ccd5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":1,\"severity\":\"Informational\",\"query\":\"let + timeframe = ago(1d);\\nAppServiceAntivirusScanAuditLogs\\n| where ScanStatus + == \\\"Failed\\\"\\n| extend HostCustomEntity = _ResourceId, timestamp = TimeGenerated\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"displayName\":\"AppServices + AV Scan Failure\",\"description\":\"Identifies if an AV scan fails in Azure + App Services.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-12-11T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/200f05a2-db6e-4ff7-be83-bbc30b44755f\",\"name\":\"200f05a2-db6e-4ff7-be83-bbc30b44755f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.3.8\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.07\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of logins to user account\",\"description\":\"This algorithm + detects an unusually high volume of successful logins per user account. The + model is trained on the previous 21 days of security event ID 4624 on an account. + It indicates anomalous high volume of successful logins in the last day\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2020-12-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/68271db2-cbe9-4009-b1d3-bb3b5fe5713c\",\"name\":\"68271db2-cbe9-4009-b1d3-bb3b5fe5713c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P7D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + User_Agents = dynamic ([\\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/70\\\", \\n\\\"Mozilla/5.0 (Macintosh; Intel Mac + OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15\\\", + \\n\\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0\\\", + \\n\\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/70.0.3538.110 Safari/537.36\\\", \\n\\\"Mozilla/5.0 (Windows + NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 + Safari/537.36\\\"]);\\nOfficeActivity\\n| where RecordType in (\\\"AzureActiveDirectoryAccountLogon\\\", + \\\"AzureActiveDirectoryStsLogon\\\") \\n| where Operation != 'UserLoggedIn'\\n| + extend UserAgent = iff(parse_json(ExtendedProperties)[0].Name =~ \\\"UserAgent\\\", + extractjson(\\\"$[0].Value\\\", ExtendedProperties, typeof(string)),\\\"\\\")\\n| + mv-expand parse_json(ExtendedProperties)\\n| where ExtendedProperties.Name + =~ \\\"RequestType\\\"\\n| extend RequestType = todynamic(ExtendedProperties).Value\\n| + where UserAgent =~ \\\"ms-office\\\" or UserAgent has_any (User_Agents)\\n| + summarize authAttempts=dcount(TimeGenerated), firstAttempt=min(TimeGenerated), + lastAttempt=max(TimeGenerated), uniqueIPs=dcount(ClientIP), uniqueAccounts=dcount(UserId), + attemptedAccounts=make_set(UserId) by UserAgent\\n| where authAttempts > 500\\n| + extend timestamp = firstAttempt\\n| sort by uniqueAccounts\",\"entityMappings\":[],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Possible + STRONTIUM attempted credential harvesting - Oct 2020\",\"description\":\"Surfaces + potential STRONTIUM group Office365 credential harvesting attempts within + OfficeActivity Logon events.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-09-10T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e7ec9fa6-e7f7-41ed-a34b-b956837a3ee6\",\"name\":\"e7ec9fa6-e7f7-41ed-a34b-b956837a3ee6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 15;\\n// Below pulls messages from syslog-authpriv logs where + there was an authentication failure with an unknown user.\\n// IP address + of system attempting logon is also extracted from the SyslogMessage field. + Some of these messages\\n// are aggregated.\\nSyslog\\n| where Facility =~ + \\\"authpriv\\\"\\n| where SyslogMessage has \\\"authentication failure\\\" + and SyslogMessage has \\\" uid=0\\\"\\n| parse SyslogMessage with * \\\"rhost=\\\" + RemoteIP\\n| project TimeGenerated, Computer, ProcessName, HostIP, RemoteIP, + ProcessID\\n| join kind=innerunique (\\n // Below pulls messages from syslog-authpriv + logs that show each instance an unknown user tried to logon. \\n Syslog + \\n | where Facility =~ \\\"authpriv\\\"\\n | where SyslogMessage has + \\\"user unknown\\\"\\n | project Computer, HostIP, ProcessID\\n ) on + Computer, HostIP, ProcessID\\n// Count the number of failed logon attempts + by External IP and internal machine\\n| summarize FirstLogonAttempt = min(TimeGenerated), + LatestLogonAttempt = max(TimeGenerated), TotalLogonAttempts = count() by Computer, + HostIP, RemoteIP\\n// Calculate the time between first and last logon attempt + (AttemptPeriodLength)\\n| extend TimeBetweenLogonAttempts = LatestLogonAttempt + - FirstLogonAttempt\\n| where TotalLogonAttempts >= threshold\\n| project + FirstLogonAttempt, LatestLogonAttempt, TimeBetweenLogonAttempts, TotalLogonAttempts, + SourceAddress = RemoteIP, DestinationHost = Computer, DestinationAddress = + HostIP\\n| sort by DestinationHost asc nulls last\\n| extend timestamp = FirstLogonAttempt, + HostCustomEntity = DestinationHost, IPCustomEntity = DestinationAddress\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Failed + logon attempts in authpriv\",\"description\":\"Identifies failed logon attempts + from unknown users in Syslog authpriv logs. The unknown user means the account + that tried to log in \\nisn't provisioned on the machine. A few hits could + indicate someone attempting to access a machine they aren't authorized to + access. \\nIf there are many of hits, especially from outside your network, + it could indicate a brute force attack. \\nDefault threshold for logon attempts + is 15.\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2019-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f041e01d-840d-43da-95c8-4188f6cef546\",\"name\":\"f041e01d-840d-43da-95c8-4188f6cef546\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + LearningPeriod = 7d;\\nlet RunTime = 1h;\\nlet StartTime = 1h;\\nlet EndRunTime + = StartTime - RunTime;\\nlet EndLearningTime = StartTime + LearningPeriod;\\nlet + GitHubCountryCodeLogs = (GitHubAudit\\n| where Country != \\\"\\\");\\n GitHubCountryCodeLogs\\n| + where TimeGenerated between (ago(EndLearningTime) .. ago(StartTime))\\n| summarize + makeset(Country) by Actor\\n| join kind=innerunique (\\n GitHubCountryCodeLogs\\n + \ | where TimeGenerated between (ago(StartTime) .. ago(EndRunTime))\\n | + distinct Country, Actor, TimeGenerated\\n) on Actor \\n| where set_Country + !contains Country\\n| extend AccountCustomEntity = Actor , timestamp = TimeGenerated\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"GitHub + Activites from a New Country\",\"description\":\"Detect activities from a + location that was not recently or was never visited by the user or by any + user in your organization.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-02T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/40ba9493-4183-4eee-974f-87fe39c8f267\",\"name\":\"40ba9493-4183-4eee-974f-87fe39c8f267\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Azure + Advanced Threat Protection\",\"displayName\":\"Create incidents based on Microsoft + Defender for Identity alerts\",\"description\":\"Create incidents based on + all alerts generated in Microsoft Defender for Identity\",\"lastUpdatedDateUTC\":\"2019-07-16T00:00:00Z\",\"createdDateUTC\":\"2019-07-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureAdvancedThreatProtection\",\"dataTypes\":[\"SecurityAlert + (AATP)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4b11568b-3f5f-4ba1-80c8-7f1dc8390eb7\",\"name\":\"4b11568b-3f5f-4ba1-80c8-7f1dc8390eb7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 50;\\nlet szSharePointFileOperation = \\\"SharePointFileOperation\\\";\\nlet + szOperations = dynamic([\\\"FileDownloaded\\\", \\\"FileUploaded\\\"]);\\nlet + starttime = 14d;\\nlet endtime = 1d;\\nlet historicalActivity =\\nOfficeActivity\\n| + where TimeGenerated between(ago(starttime)..ago(endtime))\\n| where RecordType + =~ szSharePointFileOperation\\n| where Operation in~ (szOperations)\\n| summarize + historicalCount = count() by ClientIP, RecordType, Operation;\\nlet recentActivity + = OfficeActivity\\n| where TimeGenerated > ago(endtime)\\n| where RecordType + =~ szSharePointFileOperation\\n| where Operation in~ (szOperations)\\n| summarize + min(Start_Time), max(Start_Time), recentCount = count() by ClientIP, RecordType, + Operation;\\nlet RareIP = recentActivity | join kind= leftanti ( historicalActivity + ) on ClientIP, RecordType, Operation\\n// More than 50 downloads/uploads from + a new IP\\n| where recentCount > threshold;\\nOfficeActivity \\n| where TimeGenerated + >= ago(endtime) \\n| where RecordType =~ szSharePointFileOperation\\n| where + Operation in~ (szOperations)\\n| join kind= inner (RareIP) on ClientIP, RecordType, + Operation\\n| where Start_Time between(min_Start_Time .. max_Start_Time)\\n| + summarize StartTimeUtc = min(min_Start_Time), EndTimeUtc = max(max_Start_Time) + by RecordType, Operation, UserType, UserId, ClientIP, OfficeWorkload, Site_Url, + OfficeObjectId, UserAgent, IPSeenCount = recentCount\\n| extend timestamp + = StartTimeUtc, AccountCustomEntity = UserId, IPCustomEntity = ClientIP, URLCustomEntity + = Site_Url\\n| order by IPSeenCount desc, ClientIP asc, Operation asc, UserId + asc\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1030\"],\"displayName\":\"SharePointFileOperation + via previously unseen IPs\",\"description\":\"Identifies when the volume of + documents uploaded to or downloaded from Sharepoint by new IP addresses\\nexceeds + a threshold (default is 50).\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-08-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4a3073ac-7383-48a9-90a8-eb6716183a54\",\"name\":\"4a3073ac-7383-48a9-90a8-eb6716183a54\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + excludeProcs = dynamic([@\\\"\\\\SolarWinds\\\\Orion\\\\APM\\\\APMServiceControl.exe\\\", + @\\\"\\\\SolarWinds\\\\Orion\\\\ExportToPDFCmd.Exe\\\", @\\\"\\\\SolarWinds.Credentials\\\\SolarWinds.Credentials.Orion.WebApi.exe\\\", + @\\\"\\\\SolarWinds\\\\Orion\\\\Topology\\\\SolarWinds.Orion.Topology.Calculator.exe\\\", + @\\\"\\\\SolarWinds\\\\Orion\\\\Database-Maint.exe\\\", @\\\"\\\\SolarWinds.Orion.ApiPoller.Service\\\\SolarWinds.Orion.ApiPoller.Service.exe\\\", + @\\\"\\\\Windows\\\\SysWOW64\\\\WerFault.exe\\\"]);\\nDeviceProcessEvents\\n| + where InitiatingProcessFileName =~ \\\"solarwinds.businesslayerhost.exe\\\"\\n| + where not(FolderPath has_any (excludeProcs))\\n| extend\\n timestamp = + TimeGenerated,\\n AccountCustomEntity = iff(isnotempty(InitiatingProcessAccountUpn), + InitiatingProcessAccountUpn, InitiatingProcessAccountName),\\n HostCustomEntity + = DeviceName,\\n AlgorithmCustomEntity = \\\"MD5\\\",\\n FileHashCustomEntity + = MD5\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\",\"Persistence\"],\"displayName\":\"SUNBURST + suspicious SolarWinds child processes\",\"description\":\"Identifies suspicious + child processes of SolarWinds.Orion.Core.BusinessLayer.dll that may be evidence + of the SUNBURST backdoor\\nReferences:\\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\\n- + https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f\",\"lastUpdatedDateUTC\":\"2022-02-01T00:00:00Z\",\"createdDateUTC\":\"2020-12-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8546330c-e1fb-422a-9388-5c09e9a8f4ca\",\"name\":\"8546330c-e1fb-422a-9388-5c09e9a8f4ca\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.1.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.98\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when a region rarity score is less than the threshold.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"},{\"minimum\":\"2\",\"maximum\":\"100\",\"value\":\"100\",\"name\":\"Minimum + users per region\",\"description\":\"whitelist an anomaly if the number of + users from a rare region is greater than this limit.\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\",\"CredentialAccess\",\"LateralMovement\"],\"techniques\":[\"T1133\"],\"displayName\":\"(Preview) + Login from an unusual region via Palo Alto GlobalProtect account logins\",\"description\":\"When + a Palo Alto GlobalProtect account logs in from a source region that has rarely + been logged in\\nfrom during the last 14 days, an anomaly is triggered. This + anomaly may indicate that the account\\nhas been compromised.\",\"lastUpdatedDateUTC\":\"2022-03-08T00:00:00Z\",\"createdDateUTC\":\"2021-06-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d1aba9a3-5ab1-45ef-8ed4-da57dc3c0d32\",\"name\":\"d1aba9a3-5ab1-45ef-8ed4-da57dc3c0d32\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT30M\",\"queryPeriod\":\"PT30M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 30m;\\nlet msgthreshold = 3;\\nlet msgszthreshold = 3000000;\\nProofpointPOD\\n| + where TimeGenerated > ago(lbtime)\\n| where EventType == 'message'\\n| where + NetworkDirection == 'outbound'\\n| where NetworkBytes > msgszthreshold\\n| + summarize count() by SrcUserUpn, DstUserUpn\\n| where count_ > msgthreshold\\n| + extend AccountCustomEntity = SrcUserUpn\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\"],\"displayName\":\"ProofpointPOD + - Multiple large emails to the same recipient\",\"description\":\"Detects + when multiple emails with lage size where sent to the same recipient.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6dd2629c-534b-4275-8201-d7968b4fa77e\",\"name\":\"6dd2629c-534b-4275-8201-d7968b4fa77e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"SecurityEvent\\n| + where EventID == 4657\\n| extend EventData = parse_xml(EventData).EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, TargetAccount, + Computer, EventSourceName, Channel, Task, Level, EventID, Activity, TargetLogonId, + SourceComputerId, EventOriginId, Type, _ResourceId, TenantId, SourceSystem, + ManagementGroupName, IpAddress, Account)\\n| extend ObjectName = column_ifexists('ObjectName', + \\\"\\\"), OperationType = column_ifexists('OperationType', \\\"\\\"), ObjectValueName + = column_ifexists('ObjectValueName', \\\"\\\")\\n| where ObjectName has 'Schedule\\\\\\\\TaskCache\\\\\\\\Tree' + and ObjectValueName == \\\"SD\\\" and OperationType == \\\"%%1906\\\" // + %%1906 - Registry value deleted\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer, AccountCustomEntity = Account\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1562\"],\"displayName\":\"Scheduled + Task Hide\",\"description\":\"This query detects attempts by malware to hide + the scheduled task by deleting the SD (Security Descriptor) value. Removal + of SD value results in the scheduled task disappearing from schtasks /query + and Task Scheduler.\\n The query requires auditing to be turned on for HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows + NT\\\\CurrentVersion\\\\Schedule\\\\TaskCache\\\\Tree registry hive as well + as audit policy for registry auditing to be turned on.\\n Reference: https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/\\n + Reference: https://4sysops.com/archives/audit-changes-in-the-windows-registry/\",\"lastUpdatedDateUTC\":\"2022-04-12T00:00:00Z\",\"createdDateUTC\":\"2022-04-12T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3f0c20d5-6228-48ef-92f3-9ff7822c1954\",\"name\":\"3f0c20d5-6228-48ef-92f3-9ff7822c1954\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT15M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"eventGroupingSettings\":{\"aggregationKind\":\"AlertPerResult\"},\"severity\":\"Medium\",\"query\":\"let + threatCategory=\\\"Hacking Tool\\\";\\nlet knownUserAgentsIndicators = materialize(externaldata(UserAgent:string, + Category:string)\\n [ @\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/UnusualUserAgents.csv\\\"] + \\n with(format=\\\"csv\\\", ignoreFirstRecord=True));\\nlet knownUserAgents=toscalar(knownUserAgentsIndicators + | where Category==threatCategory | where isnotempty(UserAgent) | summarize + make_list(UserAgent));\\nlet customUserAgents=toscalar(_GetWatchlist(\\\"UnusualUserAgents\\\") + | where SearchKey==threatCategory | extend UserAgent=column_ifexists(\\\"UserAgent\\\",\\\"\\\") + | where isnotempty(UserAgent) | summarize make_list(UserAgent));\\nlet fullUAList + = array_concat(knownUserAgents,customUserAgents);\\n_Im_WebSession(httpuseragent_has_any=fullUAList)\\n| + project SrcIpAddr, Url, TimeGenerated,HttpUserAgent, SrcUsername\",\"customDetails\":{\"UserAgent\":\"HttpUserAgent\"},\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"Url\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"SrcUsername\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Host + {{SrcIpAddr}} is potentially running a hacking tool\",\"alertDescriptionFormat\":\"The + host at address {{SrcIpAddr}} sent an HTTP request to the URL {{Url}} with + the HTTP user agent header {{HttpUserAgent}}. This user agent is known to + be used by a hacking tool and indicates suspicious activity on the host.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"A + host is potentially running a hacking tool (ASIM Web Session schema)\",\"description\":\"This + rule identifies a web request with a user agent header known to belong to + a hacking tool. This indicates a hacking tool is used on the host.
You + can add custom hacking tool indicating User-Agent headers using a watchlist, + for more information refer to the [UnusualUserAgents Watchlist](https://aka.ms/ASimUnusualUserAgentsWatchlist).

\\n + This analytic rule uses [ASIM](https://aka.ms/AboutASIM) and supports any + built-in or custom source that supports the ASIM WebSession schema (ASIM WebSession + Schema)\",\"lastUpdatedDateUTC\":\"2022-04-10T00:00:00Z\",\"createdDateUTC\":\"2021-12-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/738702fd-0a66-42c7-8586-e30f0583f8fe\",\"name\":\"738702fd-0a66-42c7-8586-e30f0583f8fe\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"DeviceEvents\\n| + where ActionType has \\\"ExploitGuardNonMicrosoftSignedBlocked\\\"\\n| where + InitiatingProcessFileName contains \\\"svchost.exe\\\" and FileName contains + \\\"NetSetupSvc.dll\\\"\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = iff(isnotempty(InitiatingProcessAccountUpn), InitiatingProcessAccountUpn, + InitiatingProcessAccountName),\\nHostCustomEntity = DeviceName, FileHashCustomEntity + = InitiatingProcessSHA1, FileHashType = \\\"SHA1\\\"\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"FileHashType\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\",\"Persistence\",\"InitialAccess\"],\"techniques\":[\"T1543\",\"T1195\"],\"displayName\":\"TEARDROP + memory-only dropper\",\"description\":\"Identifies SolarWinds TEARDROP memory-only + dropper IOCs in Window's defender Exploit Guard activity\\nReferences:\\n- + https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\\n- + https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f\",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2020-12-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a4025a76-6490-4e6b-bb69-d02be4b03f07\",\"name\":\"a4025a76-6490-4e6b-bb69-d02be4b03f07\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n AzureNetworkAnalytics_CL\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n // renaming time column + so it is clear the log this came from\\n | extend AzureNetworkAnalytics_CL_TimeGenerated + = TimeGenerated\\n // NSG Flow Logs have additional information concat + with Public IP, removing onlp Public IP\\n | extend PIPs = split(PublicIPs_s, + '|', 0)\\n | extend PIP = tostring(PIPs[0])\\n)\\non $left.TI_ipEntity + == $right.PIP\\n| where AzureNetworkAnalytics_CL_TimeGenerated < ExpirationDateTime\\n| + summarize AzureNetworkAnalytics_CL_TimeGenerated = arg_max(AzureNetworkAnalytics_CL_TimeGenerated, + *) by IndicatorId, PIP\\n// Set to alert on Allowed NSG Flows from TI Public + IP IOC\\n| where FlowStatus_s == \\\"A\\\"\\n| project AzureNetworkAnalytics_CL_TimeGenerated, + Description, ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, + ConfidenceScore,\\nTI_ipEntity, Computer, FlowDirection_s, FlowStatus_s, FlowType_s, + SrcPublicIPs_s, DestPublicIPs_s, PublicIPs_s, L7Protocol_s, DestPort_d, NetworkIP, + NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| extend timestamp + = AzureNetworkAnalytics_CL_TimeGenerated, IPCustomEntity = TI_ipEntity, HostCustomEntity + = Computer, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to AzureNetworkAnalytics_CL (NSG Flow Logs)\",\"description\":\"Identifies + a match in AzureNetworkAnalytics_CL (NSG Flow Logs) from any IP IOC from TI + that was Allowed\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/968358d6-6af8-49bb-aaa4-187b3067fb95\",\"name\":\"968358d6-6af8-49bb-aaa4-187b3067fb95\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT12H\",\"queryPeriod\":\"PT12H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + successCodes = dynamic([200, 302, 401]);\\nW3CIISLog\\n| where scStatus has_any + (successCodes)\\n| where ipv4_is_private(cIP) == False\\n| where csUriStem + hasprefix \\\"/autodiscover/autodiscover.json\\\"\\n| project TimeGenerated, + cIP, sIP, sSiteName, csUriStem, csUriQuery, Computer, csUserName, _ResourceId, + FileUri\\n| where (csUriQuery !has \\\"Protocol\\\" and isnotempty(csUriQuery))\\nor + (csUriQuery has_any(\\\"/mapi/\\\", \\\"powershell\\\"))\\nor (csUriQuery + contains \\\"@\\\" and csUriQuery matches regex @\\\"\\\\.[a-zA-Z]{2,4}?(?:[a-zA-Z]{2,4}\\\\/)\\\")\\nor + (csUriQuery contains \\\":\\\" and csUriQuery matches regex @\\\"\\\\:[0-9]{2,4}\\\\/\\\")\\n| + extend timestamp = TimeGenerated, HostCustomEntity = Computer, IPCustomEntity + = cIP, AccountCustomEntity = csUserName, ResourceCustomEntity = _ResourceId, + FileCustomEntity = FileUri\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"AzureResource\",\"fieldMappings\":[{\"identifier\":\"ResourceId\",\"columnName\":\"ResourceCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"Exchange + SSRF Autodiscover ProxyShell - Detection\",\"description\":\"This query looks + for suspicious request patterns to Exchange servers that fit patterns recently\\nblogged + about by PeterJson. This exploitation chain utilises an SSRF vulnerability + in Exchange\\nwhich eventually allows the attacker to execute arbitrary Powershell + on the server. In the example\\npowershell can be used to write an email to + disk with an encoded attachment containing a shell.\\nReference: https://peterjson.medium.com/reproducing-the-proxyshell-pwn2own-exploit-49743a4ea9a1\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-08-09T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/999e9f5d-db4a-4b07-a206-29c4e667b7e8\",\"name\":\"999e9f5d-db4a-4b07-a206-29c4e667b7e8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + HAS_ANY_MAX = 10000;\\nlet dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet + DomainTIs= ThreatIntelligenceIndicator\\n | where TimeGenerated >= ago(ioc_lookBack) + and ExpirationDateTime > now()\\n // Picking up only IOC's that contain the + entities we want\\n | where isnotempty(DomainName)\\n | where Active == + true\\n | summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId;\\nlet + Domains = DomainTIs | where isnotempty(DomainName) |summarize NDomains=dcount(DomainName), + DomainsList=make_set(DomainName) \\n | project DomainList = iff(NDomains + > HAS_ANY_MAX, dynamic([]), DomainsList) ;\\nDomainTIs\\n | join (\\n _Im_Dns(starttime=ago(dt_lookBack), + domain_has_any=toscalar(Domains))\\n | extend DNS_TimeGenerated = TimeGenerated\\n) + on $left.DomainName==$right.DnsQuery\\n| where DNS_TimeGenerated < ExpirationDateTime\\n| + project LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, + ThreatType, ExpirationDateTime, ConfidenceScore, Url, DNS_TimeGenerated, Dvc, + SrcIpAddr, DnsQuery, DnsQueryType\\n| extend timestamp = DNS_TimeGenerated, + HostCustomEntity = Dvc, IPCustomEntity = SrcIpAddr, URLCustomEntity = Url\",\"customDetails\":{\"LatestIndicatorTime\":\"LatestIndicatorTime\",\"Description\":\"Description\",\"ActivityGroupNames\":\"ActivityGroupNames\",\"IndicatorId\":\"IndicatorId\",\"ThreatType\":\"ThreatType\",\"ExpirationDateTime\":\"ExpirationDateTime\",\"ConfidenceScore\":\"ConfidenceScore\",\"DNSRequestTime\":\"DNS_TimeGenerated\",\"SourceIPAddress\":\"SrcIpAddr\",\"DnsQuery\":\"DnsQuery\",\"QueryType\":\"DnsQueryType\"},\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Impact\"],\"displayName\":\"(Preview) + TI map Domain entity to Dns Events (ASIM DNS Schema)\",\"description\":\"Identifies + a match in DNS events from any Domain IOC from TI\\nThis analytic rule uses + [ASIM](https://aka.ms/AboutASIM) and supports any built-in or custom source + that supports the ASIM DNS schema\",\"lastUpdatedDateUTC\":\"2022-04-27T00:00:00Z\",\"createdDateUTC\":\"2021-09-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f2dd4a3a-ebac-4994-9499-1a859938c947\",\"name\":\"f2dd4a3a-ebac-4994-9499-1a859938c947\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":1,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\nlet timeframe = 1h;\\nlet scorethreshold + = 5;\\nlet bytessentperhourthreshold = 10;\\nlet TimeSeriesData = (union isfuzzy=true\\n(\\nVMConnection\\n| + where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\\n| + where isnotempty(DestinationIp) and isnotempty(SourceIp)\\n| extend SourceIP + = SourceIp, DestinationIP = DestinationIp\\n| where ipv4_is_private(DestinationIP) + == false\\n| extend DeviceVendor = \\\"VMConnection\\\"\\n| project TimeGenerated, + BytesSent, DeviceVendor\\n| make-series TotalBytesSent=sum(BytesSent) on TimeGenerated + from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe + by DeviceVendor\\n),\\n(\\nCommonSecurityLog\\n| where TimeGenerated between + (startofday(ago(starttime))..startofday(ago(endtime)))\\n| where isnotempty(DestinationIP) + and isnotempty(SourceIP)\\n| where ipv4_is_private(DestinationIP) == false\\n| + project TimeGenerated, SentBytes, DeviceVendor\\n| make-series TotalBytesSent=sum(SentBytes) + on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) + step timeframe by DeviceVendor\\n)\\n);\\n//Filter anomolies against TimeSeriesData\\nlet + TimeSeriesAlerts = materialize(TimeSeriesData\\n| extend (anomalies, score, + baseline) = series_decompose_anomalies(TotalBytesSent, scorethreshold, -1, + 'linefit')\\n| mv-expand TotalBytesSent to typeof(double), TimeGenerated to + typeof(datetime), anomalies to typeof(double),score to typeof(double), baseline + to typeof(long)\\n| where anomalies > 0 | extend AnomalyHour = TimeGenerated\\n| + extend TotalBytesSentinMBperHour = round(((TotalBytesSent / 1024)/1024),2), + baselinebytessentperHour = round(((baseline / 1024)/1024),2), score = round(score,2)\\n| + project DeviceVendor, AnomalyHour, TimeGenerated, TotalBytesSentinMBperHour, + baselinebytessentperHour, anomalies, score);\\nlet AnomalyHours = materialize(TimeSeriesAlerts + \ | where TimeGenerated > ago(2d) | project TimeGenerated);\\n//Union of all + BaseLogs aggregated per hour\\nlet BaseLogs = (union isfuzzy=true\\n(\\nCommonSecurityLog\\n| + where isnotempty(DestinationIP) and isnotempty(SourceIP)\\n| where TimeGenerated + > ago(2d)\\n| extend DateHour = bin(TimeGenerated, 1h) // create a new column + and round to hour\\n| where DateHour in ((AnomalyHours)) //filter the dataset + to only selected anomaly hours\\n| where ipv4_is_private(DestinationIP) == + false\\n| extend SentBytesinMB = ((SentBytes / 1024)/1024), ReceivedBytesinMB + = ((ReceivedBytes / 1024)/1024)\\n| summarize HourlyCount = count(), TimeGeneratedMax=arg_max(TimeGenerated, + *), DestinationIPList=make_set(DestinationIP, 100), DestinationPortList = + make_set(DestinationPort,100), TotalSentBytesinMB = sum(SentBytesinMB), TotalReceivedBytesinMB + = sum(ReceivedBytesinMB) by SourceIP, DeviceVendor, TimeGeneratedHour=bin(TimeGenerated,1h)\\n| + where TotalSentBytesinMB > bytessentperhourthreshold\\n| sort by TimeGeneratedHour + asc, TotalSentBytesinMB desc\\n| extend Rank=row_number(1, prev(TimeGeneratedHour) + != TimeGeneratedHour) // Ranking the dataset per Hourly Partition\\n| where + Rank < 10 // Selecting Top 10 records with Highest BytesSent in each Hour\\n| + project DeviceVendor, TimeGeneratedHour, TimeGeneratedMax, SourceIP, DestinationIPList, + DestinationPortList, TotalSentBytesinMB, TotalReceivedBytesinMB, Rank\\n),\\n(\\nVMConnection\\n| + where isnotempty(DestinationIp) and isnotempty(SourceIp)\\n| where TimeGenerated + > ago(2d)\\n| extend DateHour = bin(TimeGenerated, 1h) // create a new column + and round to hour\\n| where DateHour in ((AnomalyHours)) //filter the dataset + to only selected anomaly hours\\n| extend SourceIP = SourceIp, DestinationIP + = DestinationIp\\n| where ipv4_is_private(DestinationIP) == false | extend + DeviceVendor = \\\"VMConnection\\\"\\n| extend SentBytesinMB = ((BytesSent + / 1024)/1024), ReceivedBytesinMB = ((BytesReceived / 1024)/1024)\\n| summarize + HourlyCount = count(),TimeGeneratedMax=arg_max(TimeGenerated, *), DestinationIPList=make_set(DestinationIP, + 100), DestinationPortList = make_set(DestinationPort, 100), TotalSentBytesinMB + = sum(SentBytesinMB),TotalReceivedBytesinMB = sum(ReceivedBytesinMB) by SourceIP, + DeviceVendor, TimeGeneratedHour=bin(TimeGenerated,1h)\\n| where TotalSentBytesinMB + > bytessentperhourthreshold\\n| sort by TimeGeneratedHour asc, TotalSentBytesinMB + desc\\n| extend Rank=row_number(1, prev(TimeGeneratedHour) != TimeGeneratedHour) + // Ranking the dataset per Hourly Partition\\n| where Rank < 10 // Selecting + Top 10 records with Highest BytesSent in each Hour\\n| project DeviceVendor, + TimeGeneratedHour, TimeGeneratedMax, SourceIP, DestinationIPList, DestinationPortList, + TotalSentBytesinMB, TotalReceivedBytesinMB, Rank\\n)\\n);\\n// Join against + base logs to retrive records associated with the hour of anomoly\\nTimeSeriesAlerts\\n| + where TimeGenerated > ago(2d)\\n| join (\\n BaseLogs | extend AnomalyHour + = TimeGeneratedHour\\n) on DeviceVendor, AnomalyHour | sort by score desc\\n| + project DeviceVendor, AnomalyHour,TimeGeneratedMax, SourceIP, DestinationIPList, + DestinationPortList, TotalSentBytesinMB, TotalReceivedBytesinMB, TotalBytesSentinMBperHour, + baselinebytessentperHour, score, anomalies\\n| summarize EventCount = count(), + StartTimeUtc= min(TimeGeneratedMax), EndTimeUtc= max(TimeGeneratedMax), SourceIPMax= + arg_max(SourceIP,*), TotalBytesSentinMB = sum(TotalSentBytesinMB), TotalBytesReceivedinMB + = sum(TotalReceivedBytesinMB), SourceIPList = make_set(SourceIP, 100), DestinationIPList + = make_set(DestinationIPList, 100) by AnomalyHour,TotalBytesSentinMBperHour, + baselinebytessentperHour, score, anomalies\\n| project DeviceVendor, AnomalyHour, + StartTimeUtc, EndTimeUtc, SourceIPMax, SourceIPList, DestinationIPList, DestinationPortList, + TotalBytesSentinMB, TotalBytesReceivedinMB, TotalBytesSentinMBperHour, baselinebytessentperHour, + score, anomalies, EventCount\\n| extend timestamp =EndTimeUtc, IPCustomEntity + = SourceIPMax\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1030\"],\"displayName\":\"Time + series anomaly for data size transferred to public internet\",\"description\":\"Identifies + anomalous data transfer to public networks. The query leverages built-in KQL + anomaly detection algorithms that detects large deviations from a baseline + pattern.\\nA sudden increase in data transferred to unknown public networks + is an indication of data exfiltration attempts and should be investigated.\\nThe + higher the score, the further it is from the baseline value.\\nThe output + is aggregated to provide summary view of unique source IP to destination IP + address and port bytes sent traffic observed in the flagged anomaly hour.\\nThe + source IP addresses which were sending less than bytessentperhourthreshold + have been exluded whose value can be adjusted as needed .\\nYou may have to + run queries for individual source IP addresses from SourceIPlist to determine + if anything looks suspicious\",\"lastUpdatedDateUTC\":\"2022-03-24T00:00:00Z\",\"createdDateUTC\":\"2019-05-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/06bbf969-fcbe-43fa-bac2-b2fa131d113a\",\"name\":\"06bbf969-fcbe-43fa-bac2-b2fa131d113a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + ADHealth Monitoring Agent Registry Key\\nlet aadHealthMonAgentRegKey = \\\"\\\\\\\\REGISTRY\\\\\\\\MACHINE\\\\\\\\SOFTWARE\\\\\\\\Microsoft\\\\\\\\MicrosoftOnline\\\\\\\\Reporting\\\\\\\\MonitoringAgent\\\";\\n// + Filter out known processes\\nlet aadConnectHealthProcs = dynamic ([\\n 'Microsoft.Identity.Health.Adfs.DiagnosticsAgent.exe',\\n + \ 'Microsoft.Identity.Health.Adfs.InsightsService.exe',\\n 'Microsoft.Identity.Health.Adfs.MonitoringAgent.Startup.exe',\\n + \ 'Microsoft.Identity.Health.Adfs.PshSurrogate.exe',\\n 'Microsoft.Identity.Health.Common.Clients.ResourceMonitor.exe',\\n + \ 'Microsoft.Identity.Health.AadSync.MonitoringAgent.Startup.exe',\\n 'Microsoft.Identity.AadConnect.Health.AadSync.Host.exe',\\n + \ 'Microsoft.Azure.ActiveDirectory.Synchronization.Upgrader.exe',\\n 'miiserver.exe'\\n]);\\n(union + isfuzzy=true\\n(\\nSecurityEvent\\n| where EventID == '4656'\\n| where EventData + has aadHealthMonAgentRegKey\\n| extend EventData = parse_xml(EventData).EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Computer, EventID)\\n| + extend ObjectName = column_ifexists(\\\"ObjectName\\\", \\\"\\\"),\\n ObjectType + = column_ifexists(\\\"ObjectType\\\", \\\"\\\")\\n| where ObjectType == 'Key'\\n| + where ObjectName == aadHealthMonAgentRegKey\\n| extend SubjectUserName = column_ifexists(\\\"SubjectUserName\\\", + \\\"\\\"),\\n SubjectDomainName = column_ifexists(\\\"SubjectDomainName\\\", + \\\"\\\"),\\n ProcessName = column_ifexists(\\\"ProcessName\\\", \\\"\\\")\\n| + extend Process = split(ProcessName, '\\\\\\\\', -1)[-1],\\n Account = strcat(SubjectDomainName, + \\\"\\\\\\\\\\\", SubjectUserName)\\n| where Process !in (aadConnectHealthProcs)\\n| + summarize StartTime = max(TimeGenerated), EndTime = min(TimeGenerated), count() + by EventID, Account, Computer, Process, SubjectUserName, SubjectDomainName, + ObjectName, ObjectType, ProcessName\\n),\\n ( WindowsEvent\\n| where EventID + == '4656' and EventData has aadHealthMonAgentRegKey\\n| extend ObjectType + = tostring(EventData.ObjectType)\\n| where ObjectType == 'Key'\\n| extend + ObjectName = tostring(EventData.ObjectName)\\n| where ObjectName == aadHealthMonAgentRegKey\\n| + extend ProcessName = tostring(EventData.ProcessName)\\n| extend Process = + tostring(split(ProcessName, '\\\\\\\\')[-1])\\n| where Process !in (aadConnectHealthProcs)\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| + extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| summarize + StartTime = max(TimeGenerated), EndTime = min(TimeGenerated), count() by EventID, + Account, Computer, Process, SubjectUserName, SubjectDomainName, ObjectName, + ObjectType, ProcessName\\n),\\n(\\nSecurityEvent\\n| where EventID == '4663'\\n| + where ObjectType == 'Key'\\n| where ObjectName == aadHealthMonAgentRegKey\\n| + extend Process = tostring(split(ProcessName, '\\\\\\\\', -1)[-1])\\n| where + Process !in (aadConnectHealthProcs)\\n| summarize StartTime = max(TimeGenerated), + EndTime = min(TimeGenerated), count() by EventID, Account, Computer, Process, + SubjectUserName, SubjectDomainName, ObjectName, ObjectType, ProcessName\\n),\\n( + WindowsEvent\\n| where EventID == '4663' and EventData has aadHealthMonAgentRegKey\\n| + extend ObjectType = tostring(EventData.ObjectType)\\n| where ObjectType == + 'Key'\\n| extend ObjectName = tostring(EventData.ObjectName)\\n| where ObjectName + == aadHealthMonAgentRegKey\\n| extend ProcessName = tostring(EventData.ProcessName)\\n| + extend Process = tostring(split(ProcessName, '\\\\\\\\')[-1])\\n| where Process + !in (aadConnectHealthProcs)\\n| extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| + extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| summarize + StartTime = max(TimeGenerated), EndTime = min(TimeGenerated), count() by EventID, + Account, Computer, Process, SubjectUserName, SubjectDomainName, ObjectName, + ObjectType, ProcessName\\n)\\n)\\n// You can filter out potential machine + accounts\\n//| where AccountType != 'Machine'\\n| extend timestamp = StartTime, + AccountCustomEntity = Account, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1005\"],\"displayName\":\"Azure + AD Health Service Agents Registry Keys Access\",\"description\":\"This detection + uses Windows security events to detect suspicious access attempts to the registry + key values and sub-keys of Azure AD Health service agents (e.g AD FS).\\nInformation + from AD Health service agents can be used to potentially abuse some of the + features provided by those services in the cloud (e.g. Federation).\\nThis + detection requires an access control entry (ACE) on the system access control + list (SACL) of the following securable object: HKLM:\\\\SOFTWARE\\\\Microsoft\\\\ADHealthAgent.\\nMake + sure you set the SACL to propagate to its sub-keys. You can find more information + in here https://github.com/OTRF/Set-AuditRule/blob/master/rules/registry/aad_connect_health_service_agent.yml\\n\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-08-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a35f2c18-1b97-458f-ad26-e033af18eb99\",\"name\":\"a35f2c18-1b97-458f-ad26-e033af18eb99\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"// + For AD SID mappings - https://docs.microsoft.com/windows/security/identity-protection/access-control/active-directory-security-groups\\nlet + WellKnownLocalSID = \\\"S-1-5-32-5[0-9][0-9]$\\\";\\nlet WellKnownGroupSID + = \\\"S-1-5-21-[0-9]*-[0-9]*-[0-9]*-5[0-9][0-9]$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1102$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1103$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-498$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1000$\\\";\\nunion + isfuzzy=true \\n(\\nSecurityEvent \\n// When MemberName contains '-' this + indicates addition of a group to a group\\n| where AccountType == \\\"User\\\" + and MemberName != \\\"-\\\"\\n// 4728 - A member was added to a security-enabled + global group\\n// 4732 - A member was added to a security-enabled local group\\n// + 4756 - A member was added to a security-enabled universal group\\n| where + EventID in (4728, 4732, 4756) \\n| where TargetSid matches regex WellKnownLocalSID + or TargetSid matches regex WellKnownGroupSID\\n// Exclude Remote Desktop Users + group: S-1-5-32-555\\n| where TargetSid !in (\\\"S-1-5-32-555\\\")\\n| extend + SimpleMemberName = substring(MemberName, 3, indexof_regex(MemberName, @\\\",OU|,CN\\\") + - 3)\\n| project TimeGenerated, EventID, Activity, Computer, SimpleMemberName, + MemberName, MemberSid, TargetUserName, TargetDomainName, TargetSid, UserPrincipalName, + SubjectUserName, SubjectUserSid\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = SimpleMemberName, HostCustomEntity = Computer\\n),\\n(\\nWindowsEvent \\n// + 4728 - A member was added to a security-enabled global group\\n// 4732 - A + member was added to a security-enabled local group\\n// 4756 - A member was + added to a security-enabled universal group\\n| where EventID in (4728, 4732, + 4756) and not(EventData has \\\"S-1-5-32-555\\\")\\n| extend SubjectUserSid + = tostring(EventData.SubjectUserSid)\\n| extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend AccountType=case(Account endswith + \\\"$\\\" or SubjectUserSid in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), + \\\"Machine\\\", isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| extend + MemberName = tostring(EventData.MemberName)\\n// When MemberName contains + '-' this indicates addition of a group to a group\\n| where AccountType == + \\\"User\\\" and MemberName != \\\"-\\\"\\n| extend TargetSid = tostring(EventData.TargetSid)\\n| + where TargetSid matches regex WellKnownLocalSID or TargetSid matches regex + WellKnownGroupSID\\n// Exclude Remote Desktop Users group: S-1-5-32-555\\n| + where TargetSid !in (\\\"S-1-5-32-555\\\")\\n| extend SimpleMemberName = substring(MemberName, + 3, indexof_regex(MemberName, @\\\",OU|,CN\\\") - 3)\\n| extend MemberSid = + tostring(EventData.MemberSid)\\n| extend TargetUserName = tostring(EventData.TargetUserName)\\n| + extend TargetDomainName = tostring(EventData.TargetDomainName)\\n| extend + UserPrincipalName = tostring(EventData.UserPrincipalName)\\n| extend SubjectUserName + = tostring(EventData.SubjectUserName)\\n| project TimeGenerated, EventID, + Computer, SimpleMemberName, MemberName, MemberSid, TargetUserName, TargetDomainName, + TargetSid, UserPrincipalName, SubjectUserName, SubjectUserSid\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = SimpleMemberName, HostCustomEntity + = Computer\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"User + account added to built in domain local or global group\",\"description\":\"Identifies + when a user account has been added to a privileged built in domain local group + or global group \\nsuch as the Enterprise Admins, Cert Publishers or DnsAdmins. + Be sure to verify this is an expected addition.\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2acc91c3-17c2-4388-938e-4eac2d5894e8\",\"name\":\"2acc91c3-17c2-4388-938e-4eac2d5894e8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"W3CIISLog\\n| + where csMethod == 'GET'\\n| where isnotempty(csUriStem) and isnotempty(csUriQuery)\\n| + where csUriStem contains \\\"logoimagehandler.ashx\\\"\\n| where csUriQuery + contains \\\"codes\\\" and csUriQuery contains \\\"clazz\\\" and csUriQuery + contains \\\"method\\\" and csUriQuery contains \\\"args\\\"\\n| extend timestamp + = TimeGenerated, IPCustomEntity = cIP, HostCustomEntity = Computer, AccountCustomEntity + = csUserName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1505\"],\"displayName\":\"SUPERNOVA + webshell\",\"description\":\"Identifies SUPERNOVA webshell based on W3CIISLog + data.\\n References:\\n - https://unit42.paloaltonetworks.com/solarstorm-supernova/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/223db5c1-1bf8-47d8-8806-bed401b356a4\",\"name\":\"223db5c1-1bf8-47d8-8806-bed401b356a4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + timeRange = 1d;\\nlet lookBack = 7d;\\nlet threshold_Failed = 5;\\nlet threshold_FailedwithSingleIP + = 20;\\nlet threshold_IPAddressCount = 2;\\nlet isGUID = \\\"[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}\\\";\\nlet + aadFunc = (tableName:string){\\nlet azPortalSignins = materialize(table(tableName)\\n| + where TimeGenerated >= ago(lookBack)\\n// Azure Portal only\\n| where AppDisplayName + =~ \\\"Azure Portal\\\")\\n;\\nlet successPortalSignins = azPortalSignins\\n| + where TimeGenerated >= ago(timeRange)\\n// Azure Portal only and exclude non-failure + Result Types\\n| where ResultType in (\\\"0\\\", \\\"50125\\\", \\\"50140\\\")\\n// + Tagging identities not resolved to friendly names\\n//| extend Unresolved + = iff(Identity matches regex isGUID, true, false)\\n| distinct TimeGenerated, + UserPrincipalName\\n;\\nlet failPortalSignins = azPortalSignins\\n| where + TimeGenerated >= ago(timeRange)\\n// Azure Portal only and exclude non-failure + Result Types\\n| where ResultType !in (\\\"0\\\", \\\"50125\\\", \\\"50140\\\", + \\\"70044\\\", \\\"70043\\\")\\n// Tagging identities not resolved to friendly + names\\n| extend Unresolved = iff(Identity matches regex isGUID, true, false)\\n;\\n// + Verify there is no success for the same connection attempt after the fail\\nlet + failnoSuccess = failPortalSignins | join kind= leftouter (\\n successPortalSignins + \\n) on UserPrincipalName\\n| where TimeGenerated > TimeGenerated1 or isempty(TimeGenerated1)\\n| + project-away TimeGenerated1, UserPrincipalName1\\n;\\n// Lookup up resolved + identities from last 7 days\\nlet identityLookup = azPortalSignins\\n| where + TimeGenerated >= ago(lookBack)\\n| where not(Identity matches regex isGUID)\\n| + summarize by UserId, lu_UserDisplayName = UserDisplayName, lu_UserPrincipalName + = UserPrincipalName;\\n// Join resolved names to unresolved list from portal + signins\\nlet unresolvedNames = failnoSuccess | where Unresolved == true | + join kind= inner (\\n identityLookup \\n) on UserId\\n| extend UserDisplayName + = lu_UserDisplayName, UserPrincipalName = lu_UserPrincipalName\\n| project-away + lu_UserDisplayName, lu_UserPrincipalName;\\n// Join Signins that had resolved + names with list of unresolved that now have a resolved name\\nlet u_azPortalSignins + = failnoSuccess | where Unresolved == false | union unresolvedNames;\\nu_azPortalSignins\\n| + extend DeviceDetail = todynamic(DeviceDetail), Status = todynamic(DeviceDetail), + LocationDetails = todynamic(LocationDetails)\\n| extend Status = strcat(ResultType, + \\\": \\\", ResultDescription), OS = tostring(DeviceDetail.operatingSystem), + Browser = tostring(DeviceDetail.browser)\\n| extend State = tostring(LocationDetails.state), + City = tostring(LocationDetails.city), Region = tostring(LocationDetails.countryOrRegion)\\n| + extend FullLocation = strcat(Region,'|', State, '|', City)\\n| summarize TimeGenerated + = makelist(TimeGenerated), Status = makelist(Status), IPAddresses = makelist(IPAddress), + IPAddressCount = dcount(IPAddress), FailedLogonCount = count()\\nby UserPrincipalName, + UserId, UserDisplayName, AppDisplayName, Browser, OS, FullLocation, Type\\n| + mvexpand TimeGenerated, IPAddresses, Status\\n| extend TimeGenerated = todatetime(tostring(TimeGenerated)), + IPAddress = tostring(IPAddresses), Status = tostring(Status)\\n| project-away + IPAddresses\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by UserPrincipalName, UserId, UserDisplayName, Status, FailedLogonCount, IPAddress, + IPAddressCount, AppDisplayName, Browser, OS, FullLocation, Type\\n| where + (IPAddressCount >= threshold_IPAddressCount and FailedLogonCount >= threshold_Failed) + or FailedLogonCount >= threshold_FailedwithSingleIP\\n| extend timestamp = + StartTime, AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Failed + login attempts to Azure Portal\",\"description\":\"Identifies failed login + attempts in the Azure Active Directory SigninLogs to the Azure Portal. Many + failed logon \\nattempts or some failed logon attempts from multiple IPs could + indicate a potential brute force attack. \\nThe following are excluded due + to success and non-failure results:\\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\\n0 + - successful logon\\n50125 - Sign-in was interrupted due to a password reset + or password registration entry.\\n50140 - This error occurred due to 'Keep + me signed in' interrupt when the user was signing-in.\",\"lastUpdatedDateUTC\":\"2022-04-21T00:00:00Z\",\"createdDateUTC\":\"2019-02-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/acc4c247-aaf7-494b-b5da-17f18863878a\",\"name\":\"acc4c247-aaf7-494b-b5da-17f18863878a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + queryfrequency = 1h;\\nlet queryperiod = 1d;\\nAuditLogs\\n| where TimeGenerated + > ago(queryperiod)\\n| where OperationName in (\\\"Invite external user\\\", + \\\"Bulk invite users - started (bulk)\\\", \\\"Invite external user with + reset invitation status\\\")\\n| extend InitiatedBy = iff(isnotempty(InitiatedBy.user.userPrincipalName), + InitiatedBy.user.userPrincipalName, InitiatedBy.app.displayName)\\n//| where + InitiatedBy has_any (\\\"live.com#\\\", \\\"#EXT#\\\")\\n| extend InvitedUser + = TargetResources[0].userPrincipalName\\n| mv-expand UserToCompare = pack_array(InitiatedBy, + InvitedUser)\\n| where UserToCompare has_any (\\\"live.com#\\\", \\\"#EXT#\\\")\\n| + extend\\n parsedUser = replace_string((iff(UserToCompare has \\\"live.com#\\\", + tostring(split(UserToCompare, \\\"#\\\")[1]), tostring(split(UserToCompare, + \\\"#EXT#\\\")[0]))), \\\"@\\\", \\\"_\\\"),\\n InvitationTime = TimeGenerated\\n| + join (\\n (union isfuzzy=true SigninLogs, AADNonInteractiveUserSignInLogs)\\n + \ | where TimeGenerated > ago(queryfrequency)\\n | where UserType != + \\\"Member\\\"\\n | where AppId has_any\\n (\\\"1b730954-1685-4b74-9bfd-dac224a7b894\\\",// + Azure Active Directory PowerShell\\n \\\"04b07795-8ddb-461a-bbee-02f9e1bf7b46\\\",// + Microsoft Azure CLI\\n \\\"1950a258-227b-4e31-a9cf-717495945fc2\\\",// + Microsoft Azure PowerShell\\n \\\"a0c73c16-a7e3-4564-9a95-2bdf47383716\\\",// + Microsoft Exchange Online Remote PowerShell\\n \\\"fb78d390-0c51-40cd-8e17-fdbfab77341b\\\",// + Microsoft Exchange REST API Based Powershell\\n \\\"d1ddf0e4-d672-4dae-b554-9d5bdfd93547\\\",// + Microsoft Intune PowerShell\\n \\\"9bc3ab49-b65d-410a-85ad-de819febfddc\\\",// + Microsoft SharePoint Online Management Shell\\n \\\"12128f48-ec9e-42f0-b203-ea49fb6af367\\\",// + MS Teams Powershell Cmdlets\\n \\\"23d8f6bd-1eb0-4cc2-a08c-7bf525c67bcd\\\",// + Power BI PowerShell\\n \\\"31359c7f-bd7e-475c-86db-fdb8c937548e\\\",// + PnP Management Shell\\n \\\"90f610bf-206d-4950-b61d-37fa6fd1b224\\\" + // Aadrm Admin Powershell\\n )\\n | summarize arg_min(TimeGenerated, + *) by UserPrincipalName\\n | extend\\n parsedUser = replace_string(UserPrincipalName, + \\\"@\\\", \\\"_\\\"),\\n SigninTime = TimeGenerated\\n )\\n on + parsedUser\\n| project InvitationTime, InitiatedBy, OperationName, InvitedUser, + SigninTime, SigninCategory = Category1, SigninUserPrincipalName = UserPrincipalName, + IPAddress, AppDisplayName, ResourceDisplayName, UserAgent, InvitationAdditionalDetails + = AdditionalDetails, InvitationTargetResources = TargetResources\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"InvitedUser\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"InitiatedBy\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.4\",\"tactics\":[\"InitialAccess\",\"Persistence\",\"Discovery\"],\"techniques\":[\"T1078\",\"T1136\",\"T1087\"],\"displayName\":\"External + guest invitation followed by Azure AD PowerShell signin\",\"description\":\"By + default guests have capability to invite more external guest users, guests + also can do suspicious Azure AD enumeration. This detection look at guests\\nusers, + who have been invited or have invited recently, who also are logging via various + PowerShell CLI.\\nRef : 'https://danielchronlund.com/2021/11/18/scary-azure-ad-tenant-enumeration-using-regular-b2b-guest-accounts/\",\"lastUpdatedDateUTC\":\"2022-03-30T00:00:00Z\",\"createdDateUTC\":\"2021-11-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3af9285d-bb98-4a35-ad29-5ea39ba0c628\",\"name\":\"3af9285d-bb98-4a35-ad29-5ea39ba0c628\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + threshold = 1;\\nlet aadFunc = (tableName:string){\\ntable(tableName)\\n| + where ConditionalAccessStatus == 1 or ConditionalAccessStatus =~ \\\"failure\\\"\\n| + extend DeviceDetail = todynamic(DeviceDetail), Status = todynamic(DeviceDetail), + LocationDetails = todynamic(LocationDetails)\\n| extend OS = DeviceDetail.operatingSystem, + Browser = DeviceDetail.browser\\n| extend State = tostring(LocationDetails.state), + City = tostring(LocationDetails.city), Region = tostring(LocationDetails.countryOrRegion) + \\n| extend StatusCode = tostring(Status.errorCode), StatusDetails = tostring(Status.additionalDetails)\\n| + extend ConditionalAccessPolicies = todynamic(ConditionalAccessPolicies)\\n| + extend ConditionalAccessPol0Name = tostring(ConditionalAccessPolicies[0].displayName)\\n| + extend ConditionalAccessPol1Name = tostring(ConditionalAccessPolicies[1].displayName)\\n| + extend ConditionalAccessPol2Name = tostring(ConditionalAccessPolicies[2].displayName)\\n| + extend Status = strcat(StatusCode, \\\": \\\", ResultDescription) \\n| summarize + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), Status = make_list(Status), + StatusDetails = make_list(StatusDetails), IPAddresses = make_list(IPAddress), + IPAddressCount = dcount(IPAddress), CorrelationIds = make_list(CorrelationId) + \\nby UserPrincipalName, AppDisplayName, tostring(Browser), tostring(OS), + City, State, Region, ConditionalAccessPol0Name, ConditionalAccessPol1Name, + ConditionalAccessPol2Name, Type\\n| where IPAddressCount > threshold and StatusDetails + !has \\\"MFA successfully completed\\\"\\n| mvexpand IPAddresses, Status, + StatusDetails, CorrelationIds\\n| extend Status = strcat(Status, \\\" \\\", + StatusDetails)\\n| summarize IPAddresses = make_set(IPAddresses), Status = + make_set(Status), CorrelationIds = make_set(CorrelationIds) \\nby StartTime, + EndTime, UserPrincipalName, AppDisplayName, tostring(Browser), tostring(OS), + City, State, Region, ConditionalAccessPol0Name, ConditionalAccessPol1Name, + ConditionalAccessPol2Name, IPAddressCount, Type\\n| extend timestamp = StartTime, + AccountCustomEntity = UserPrincipalName, IPCustomEntity = tostring(IPAddresses)\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"Persistence\"],\"techniques\":[\"T1078\",\"T1098\"],\"displayName\":\"Attempt + to bypass conditional access rule in Azure AD\",\"description\":\"Identifies + an attempt to Bypass conditional access rule(s) in Azure Active Directory.\\nThe + ConditionalAccessStatus column value details if there was an attempt to bypass + Conditional Access\\nor if the Conditional access rule was not satisfied (ConditionalAccessStatus + == 1).\\nReferences: \\nhttps://docs.microsoft.com/azure/active-directory/conditional-access/overview\\nhttps://docs.microsoft.com/azure/active-directory/reports-monitoring/concept-sign-ins\\nhttps://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\\nConditionalAccessStatus + == 0 // Success\\nConditionalAccessStatus == 1 // Failure\\nConditionalAccessStatus + == 2 // Not Applied\\nConditionalAccessStatus == 3 // unknown\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0b904747-1336-4363-8d84-df2710bfe5e7\",\"name\":\"0b904747-1336-4363-8d84-df2710bfe5e7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n AzureDiagnostics\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n | where OperationName + in (\\\"AzureFirewallApplicationRuleLog\\\", \\\"AzureFirewallNetworkRuleLog\\\")\\n + \ | parse kind=regex flags=U msg_s with Protocol 'request from ' SourceHost + 'to ' DestinationHost @'\\\\.? Action: ' Firewall_Action @'\\\\.' Rest_msg\\n + \ | extend SourceAddress = extract(@'([\\\\.0-9]+)(:[\\\\.0-9]+)?', 1, SourceHost)\\n + \ | extend DestinationAddress = extract(@'([\\\\.0-9]+)(:[\\\\.0-9]+)?', + 1, DestinationHost)\\n | extend RemoteIP = case(not(ipv4_is_private(DestinationAddress)), + DestinationAddress, not(ipv4_is_private(SourceAddress)), SourceAddress, \\\"\\\")\\n + \ // Traffic that involves a public address, and in case this is the source + address then the traffic was not denied\\n | where isnotempty(RemoteIP)\\n + \ | project-rename AzureFirewall_TimeGenerated = TimeGenerated\\n)\\non + $left.TI_ipEntity == $right.RemoteIP\\n| where AzureFirewall_TimeGenerated + < ExpirationDateTime\\n| summarize AzureFirewall_TimeGenerated = arg_max(AzureFirewall_TimeGenerated, + *) by IndicatorId, RemoteIP\\n| project LatestIndicatorTime, Description, + ActivityGroupNames, IndicatorId, ThreatType, Url, DomainName, ExpirationDateTime, + ConfidenceScore, AzureFirewall_TimeGenerated,\\nTI_ipEntity, Resource, Category, + msg_s, SourceAddress, DestinationAddress, Firewall_Action, Protocol, NetworkIP, + NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| extend timestamp + = AzureFirewall_TimeGenerated, IPCustomEntity = TI_ipEntity, URLCustomEntity + = Url\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to AzureFirewall\",\"description\":\"Identifies a match in AzureFirewall + (NetworkRule & ApplicationRule Logs) from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4ebbb5c2-8802-11ec-a8a3-0242ac120002\",\"name\":\"4ebbb5c2-8802-11ec-a8a3-0242ac120002\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"// + Enter a reference list of decoy users (usernames) \\\"Case Sensitive\\\"\\nlet + MaliciousServiceArtifacts = dynamic ([\\\"fgexec\\\",\\\"cachedump\\\",\\\"mimikatz\\\",\\\"mimidrv\\\",\\\"wceservice\\\",\\\"pwdump\\\"]);\\nEvent\\n| + where Source == \\\"Service Control Manager\\\" and EventID == 7045\\n| parse + EventData with * 'ServiceName\\\">' ServiceName \\\"<\\\" * 'ImagePath\\\">' + ImagePath \\\"<\\\" *\\n| where ServiceName has_any (MaliciousServiceArtifacts) + or ImagePath has_any (MaliciousServiceArtifacts)\\n| parse EventData with + * 'AccountName\\\">' AccountName \\\"<\\\" *\\n|summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by EventID, Computer, ServiceName, ImagePath, + AccountName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountName\"}]},{\"entityType\":\"File\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"ImagePath\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1003\"],\"displayName\":\"Credential + Dumping Tools - Service Installation\",\"description\":\"This query detects + the installation of a Windows service that contains artifacts from credential + dumping tools such as Mimikatz.\\nRef: https://blueteamblog.com/darkside-ransomware-operations-preventions-and-detections\",\"lastUpdatedDateUTC\":\"2022-04-22T00:00:00Z\",\"createdDateUTC\":\"2022-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"Event\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/adc32a33-1cd6-46f5-8801-e3ed8337885f\",\"name\":\"adc32a33-1cd6-46f5-8801-e3ed8337885f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Add any known allowed sources and source locations to the filter below (the + NuGet Gallery has been added here as an example).\\nlet allowed_sources = + dynamic([\\\"NuGet Gallery\\\"]);\\nlet allowed_locations = dynamic([\\\"https://api.nuget.org/v3/index.json\\\"]);\\nAzureDevOpsAuditing\\n// + Look for feeds created or modified at either the organization or project level\\n| + where OperationName matches regex \\\"Artifacts.Feed.(Org|Project).Modify\\\"\\n| + where Details has \\\"UpstreamSources, added\\\"\\n| extend FeedName = tostring(Data.FeedName)\\n| + extend FeedId = tostring(Data.FeedId)\\n| extend UpstreamsAdded = Data.UpstreamsAdded\\n// + As multiple feeds may be added expand these out\\n| mv-expand UpstreamsAdded\\n// + Only focus on external feeds\\n| where UpstreamsAdded.UpstreamSourceType !~ + \\\"internal\\\"\\n| extend SourceLocation = tostring(UpstreamsAdded.Location)\\n| + extend SourceName = tostring(UpstreamsAdded.Name)\\n// Exclude sources and + locations in the allow list\\n| where SourceLocation !in (allowed_locations) + and SourceName !in (allowed_sources)\\n| extend SourceProtocol = tostring(UpstreamsAdded.Protocol)\\n| + extend SourceStatus = tostring(UpstreamsAdded.Status)\\n| project-reorder + TimeGenerated, OperationName, ScopeDisplayName, ProjectName, FeedName, SourceName, + SourceLocation, SourceProtocol, ActorUPN, UserAgent, IpAddress\\n| extend + timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity + = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1199\"],\"displayName\":\"External + Upstream Source Added to Azure DevOps Feed\",\"description\":\"The detection + looks for new external sources added to an Azure DevOps feed. An allow list + can be customized to explicitly allow known good sources. \\nAn attacker could + look to add a malicious feed in order to inject malicious packages into a + build pipeline.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/93c4b361-ea7d-40f4-9ca6-e501cdef9c53\",\"name\":\"93c4b361-ea7d-40f4-9ca6-e501cdef9c53\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.1.6\",\"customizableObservations\":{\"multiSelectObservations\":[{\"supportedValues\":[\"\\\\%%2305-The + specified user account has expired\",\"\\\\%%2309-The specified account's + password has expired\",\"\\\\%%2310-Account currently disabled\",\"\\\\%%2311-Account + logon time restriction violation\",\"\\\\%%2312-User not allowed to logon + at this computer\",\"\\\\%%2313-Unknown user name or bad password\",\"\\\\%%2307-Account + locked out\",\"\\\\%%2304-An Error occurred during Logon\"],\"values\":[\"\\\\%%2305-The + specified user account has expired\",\"\\\\%%2309-The specified account's + password has expired\",\"\\\\%%2310-Account currently disabled\",\"\\\\%%2311-Account + logon time restriction violation\",\"\\\\%%2312-User not allowed to logon + at this computer\",\"\\\\%%2313-Unknown user name or bad password\",\"\\\\%%2307-Account + locked out\",\"\\\\%%2304-An Error occurred during Logon\"],\"supportedValuesKql\":null,\"valuesKql\":null,\"name\":\"Failure + Reasons\",\"description\":\"Include only selected failure reasons in anomaly + results.\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.3\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"(Preview) + Attempted user account bruteforce per failure reason\",\"description\":\"This + algorithm detects an unusually high volume of failed login attempts per user + account per failure reason. The model is trained on the previous 21 days of + security event ID 4625 on an account and a failure reason. It indicates anomalous + high volume of failed login attempts with certain failure reason in the last + day.\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2021-04-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c9053c76-c6cd-409a-a10f-e20b05cc91f5\",\"name\":\"c9053c76-c6cd-409a-a10f-e20b05cc91f5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"1\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Anomalous volume of privileged process calls of commonly seen windows attack + vectors on a daily basis\",\"description\":\"This anomaly algorithm detects + unusual volume of privileged (Full or Elevated security token) process creation + calls made by a user account from a selected process list in the last 21 days. + These selected processes are commonly used attack vectors in windows systems. + This activity may indicate that the user account is compromised.\",\"lastUpdatedDateUTC\":\"2022-02-22T00:00:00Z\",\"createdDateUTC\":\"2022-02-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2937bc6b-7cda-4fba-b452-ea43ba8e835f\",\"name\":\"2937bc6b-7cda-4fba-b452-ea43ba8e835f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n| + where EventID == 5136 \\n| parse EventData with * 'ObjectClass\\\">' ObjectClass + \\\"<\\\" *\\n| parse EventData with * 'AttributeLDAPDisplayName\\\">' AttributeLDAPDisplayName + \\\"<\\\" *\\n| where ObjectClass == \\\"computer\\\" and AttributeLDAPDisplayName + == \\\"msDS-AllowedToActOnBehalfOfOtherIdentity\\\"\\n| parse EventData with + * 'ObjectDN\\\">' ObjectDN \\\"<\\\" *\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by Computer, SubjectAccount, SubjectUserSid, + SubjectLogonId, ObjectDN, AttributeLDAPDisplayName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"SubjectAccount\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1134\"],\"displayName\":\"Possible + Resource-Based Constrained Delegation Abuse\",\"description\":\"This query + identifies Active Directory computer objects modifications that allow an adversary + to abuse the Resource-based constrained delegation. \\nThis query checks for + event id 5136 that the Object Class field is \\\"computer\\\" and the LDAP + Display Name is \\\"msDS-AllowedToActOnBehalfOfOtherIdentity\\\" which is + an indicator of Resource-based constrained delegation.\\nRef: https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html\",\"lastUpdatedDateUTC\":\"2022-01-19T00:00:00Z\",\"createdDateUTC\":\"2022-01-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/213252f1-497c-4124-91da-6cb43902d5b1\",\"name\":\"213252f1-497c-4124-91da-6cb43902d5b1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.5\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"5\",\"maximum\":\"15\",\"value\":\"7\",\"name\":\"Number + of distinct signatures in a day\",\"description\":\"Triggers anomalies when + daily signatures triggered is more than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Discovery\",\"CommandAndControl\"],\"techniques\":[\"T1046\",\"T1135\",\"T1071\",\"T1095\",\"T1571\"],\"displayName\":\"(Preview) + Unusual external firewall alarm detected\",\"description\":\"This algorithm + identifies unusual external firewall alarms which are threat signatures released + by a firewall vendor. \\nThe anomaly takes last 7 days activities to calculate + top 10 noisy signatures and also noisy source hosts which are repeatedly seen + \\ntriggering threat signatures. After excluding both type of noisy events, + it triggers an anomaly only after exceeding the threshold of \\nnumber of + signatures triggered in a single day.\",\"lastUpdatedDateUTC\":\"2022-02-24T00:00:00Z\",\"createdDateUTC\":\"2021-04-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/89e6adbd-612c-4fbe-bc3d-32f81baf3b6c\",\"name\":\"89e6adbd-612c-4fbe-bc3d-32f81baf3b6c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT4H\",\"queryPeriod\":\"PT4H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Change to true to monitor for Project Administrator adds to *any* project\\nlet + MonitorAllProjects = false;\\n// If MonitorAllProjects is false, trigger only + on Project Administrator add for the following projects\\nlet ProjectsToMonitor + = dynamic(['','']);\\nAzureDevOpsAuditing\\n| where + Area == \\\"Group\\\" and OperationName == \\\"Group.UpdateGroupMembership.Add\\\"\\n| + where Details has 'Administrators'\\n| where Details has \\\"was added as + a member of group\\\" and (Details endswith '\\\\\\\\Project Administrators' + or Details endswith '\\\\\\\\Project Collection Administrators')\\n| parse + Details with AddedIdentity ' was added as a member of group [' EntityName + ']\\\\\\\\' GroupName\\n| extend Level = iif(GroupName == 'Project Collection + Administrators', 'Organization', 'Project'), AddedIdentityId = Data.MemberId\\n| + extend Severity = iif(Level == 'Organization', 'High', 'Medium'), AlertDetails + = strcat('At ', TimeGenerated, ' UTC ', ActorUPN, '/', ActorDisplayName, ' + added ', AddedIdentity, ' to the ', EntityName, ' ', Level)\\n| where MonitorAllProjects + == true or EntityName in (ProjectsToMonitor) or Level == 'Organization'\\n| + project TimeGenerated, Severity, Adder = ActorUPN, AddedIdentity, AddedIdentityId, + AlertDetails, Level, EntityName, GroupName, ActorAuthType = AuthenticationMechanism, + \\n ActorIpAddress = IpAddress, ActorUserAgent = UserAgent, RawDetails = + Details\\n| extend timestamp = TimeGenerated, AccountCustomEntity = Adder, + IPCustomEntity = ActorIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Azure + DevOps Administrator Group Monitoring\",\"description\":\"This detection monitors + for additions to projects or project collection administration groups in an + Azure DevOps Organization.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2020-06-04T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/38781e25-924e-4c9d-9a76-8703077be83d\",\"name\":\"38781e25-924e-4c9d-9a76-8703077be83d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.4\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.2\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1531\"],\"displayName\":\"(Preview) + UEBA Anomalous Password Reset\",\"description\":\"Adversaries may interrupt + availability of system and network resources by inhibiting access to accounts + utilized by legitimate users. Accounts may be deleted, locked, or manipulated + (ex: changed credentials) to remove access to accounts. Sentinel UEBA detects + anomalies based on dynamic baselines created for each entity across various + data inputs. Each entity\xE2\u20AC\u2122s baseline behavior is set according + to its own historical activities, those of its peers, and those of the organization + as a whole. Anomalies can be triggered by the correlation of different attributes + such as action type, geo-location, device, resource, ISP, and more.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2022-01-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/473d57e6-f787-435c-a16b-b38b51fa9a4b\",\"name\":\"473d57e6-f787-435c-a16b-b38b51fa9a4b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + servicelist = dynamic(['Services\\\\\\\\HealthService', 'Services\\\\\\\\Sense', + 'Services\\\\\\\\WinDefend', 'Services\\\\\\\\MsSecFlt', 'Services\\\\\\\\DiagTrack', + 'Services\\\\\\\\SgrmBroker', 'Services\\\\\\\\SgrmAgent', 'Services\\\\\\\\AATPSensorUpdater' + , 'Services\\\\\\\\AATPSensor', 'Services\\\\\\\\mpssvc']);\\nlet filename + = dynamic([\\\"subinacl.exe\\\",'SetACL.exe']);\\nlet parameters = dynamic + (['/deny=SYSTEM', '/deny=S-1-5-18', '/grant=SYSTEM=r', '/grant=S-1-5-18=r', + 'n:SYSTEM;p:READ', 'n1:SYSTEM;ta:remtrst;w:dacl']);\\nlet FullAccess = dynamic(['A;CI;KA;;;SY', + 'A;ID;KA;;;SY', 'A;CIID;KA;;;SY']);\\nlet ReadAccess = dynamic(['A;CI;KR;;;SY', + 'A;ID;KR;;;SY', 'A;CIID;KR;;;SY']);\\nlet DenyAccess = dynamic(['D;CI;KR;;;SY', + 'D;ID;KR;;;SY', 'D;CIID;KR;;;SY']);\\nlet timeframe = 1d;\\n(union isfuzzy=true\\n(\\nSecurityEvent\\n| + where TimeGenerated >= ago(timeframe)\\n| where EventID == 4670\\n| where + ObjectType == 'Key'\\n| where ObjectName has_any (servicelist)\\n| parse EventData + with * 'OldSd\\\">' OldSd \\\"<\\\" *\\n| parse EventData with * 'NewSd\\\">' + NewSd \\\"<\\\" *\\n| extend Reason = case( (OldSd has ';;;SY' and NewSd !has + ';;;SY'), 'System Account is removed', (OldSd has_any (FullAccess) and NewSd + has_any (ReadAccess)) , 'System permission has been changed to read from full + access', (OldSd has_any (FullAccess) and NewSd has_any (DenyAccess)), 'System + account has been given denied permission', 'None')\\n| project TimeGenerated, + Computer, Account, ProcessName, ProcessId, ObjectName, EventData, Activity, + HandleId, SubjectLogonId, OldSd, NewSd , Reason\\n),\\n(\\nSecurityEvent\\n| + where TimeGenerated >= ago(timeframe)\\n| where EventID == 4688\\n| extend + ProcessName = tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n| where ProcessName + in~ (filename) \\n| where CommandLine has_any (servicelist) and CommandLine + has_any (parameters)\\n| project TimeGenerated, Computer, Account, AccountDomain, + ProcessName, ProcessNameFullPath = NewProcessName, EventID, Activity, CommandLine, + EventSourceName, Type\\n),\\n(\\nWindowsEvent\\n| where TimeGenerated >= ago(timeframe)\\n| + where EventID == 4670 and EventData has_any (servicelist) and EventData has + 'Key'\\n| extend ObjectType = tostring(EventData.ObjectType)\\n| where ObjectType + == 'Key'\\n| extend ObjectName = tostring(EventData.ObjectName)\\n| where + ObjectName has_any (servicelist)\\n| extend OldSd = tostring(EventData.OldSd)\\n| + extend NewSd = tostring(EventData.NewSd)\\n| extend Reason = case( (OldSd + has ';;;SY' and NewSd !has ';;;SY'), 'System Account is removed', (OldSd has_any + (FullAccess) and NewSd has_any (ReadAccess)) , 'System permission has been + changed to read from full access', (OldSd has_any (FullAccess) and NewSd has_any + (DenyAccess)), 'System account has been given denied permission', 'None')\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend ProcessName = tostring(EventData.ProcessName)\\n| + extend ProcessId = tostring(EventData.ProcessId)\\n| extend Activity= \\\"4670 + - Permissions on an object were changed.\\\"\\n| extend HandleId = tostring(EventData.HandleId)\\n| + extend SubjectLogonId = tostring(EventData.SubjectLogonId)\\n| project TimeGenerated, + Computer, Account, ProcessName, ProcessId, ObjectName, EventData, Activity, + HandleId, SubjectLogonId, OldSd, NewSd , Reason\\n),\\n(\\nWindowsEvent\\n| + where TimeGenerated >= ago(timeframe)\\n| where EventID == 4688 and EventData + has_any (filename) and EventData has_any (servicelist) and EventData has_any + (parameters)\\n| extend NewProcessName = tostring(EventData.NewProcessName)\\n| + extend ProcessName = tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n| where + ProcessName in~ (filename) \\n| extend CommandLine = tostring(EventData.CommandLine) + \\n| where CommandLine has_any (servicelist) and CommandLine has_any (parameters)\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend AccountDomain = tostring(EventData.AccountDomain)\\n| + extend Activity=\\\"4688 - A new process has been created.\\\"\\n| extend + \ EventSourceName=Provider\\n| project TimeGenerated, Computer, Account, AccountDomain, + ProcessName, ProcessNameFullPath = NewProcessName, EventID, Activity, CommandLine, + EventSourceName, Type\\n),\\n(\\nDeviceProcessEvents\\n| where TimeGenerated + >= ago(timeframe)\\n| where InitiatingProcessFileName in~ (filename) \\n| + where InitiatingProcessCommandLine has_any(servicelist) and InitiatingProcessCommandLine + has_any (parameters)\\n| extend Account = iff(isnotempty(InitiatingProcessAccountUpn), + InitiatingProcessAccountUpn, InitiatingProcessAccountName), Computer = DeviceName\\n| + project TimeGenerated, Computer, Account, AccountDomain, ProcessName = InitiatingProcessFileName, + ProcessNameFullPath = FolderPath, Activity = ActionType, CommandLine = InitiatingProcessCommandLine, + Type, InitiatingProcessParentFileName\\n)\\n)\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1562\"],\"displayName\":\"Security + Service Registry ACL Modification\",\"description\":\"Identifies attempts + to modify registry ACL to evade security solutions. In the Solorigate attack, + the attackers were found modifying registry permissions so services.exe cannot + access the relevant registry keys to start the service.\\n The detection leverages + Security Event as well as MDE data to identify when specific security services + registry permissions are modified. \\n Only some portions of this detection + are related to Solorigate, it also includes coverage for some common tools + that perform this activity. \\n Reference on guidance for enabling registry + auditing:\\n - https://docs.microsoft.com/windows/security/threat-protection/auditing/advanced-security-auditing-faq\\n + - https://docs.microsoft.com/windows/security/threat-protection/auditing/appendix-a-security-monitoring-recommendations-for-many-audit-events\\n + - https://docs.microsoft.com/windows/security/threat-protection/auditing/audit-registry\\n + - https://docs.microsoft.com/windows/security/threat-protection/auditing/event-4670\\n + \ - For the event 4670 to be created the audit policy for the registry must + have auditing enabled for Write DAC and/or Write Owner\\n - https://github.com/OTRF/Set-AuditRule + \\n - https://docs.microsoft.com/dotnet/api/system.security.accesscontrol.registryrights?view=dotnet-plat-ext-5.0\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-01-20T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/29283b22-a1c0-4d16-b0a9-3460b655a46a\",\"name\":\"29283b22-a1c0-4d16-b0a9-3460b655a46a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + UserAgentString = dynamic ([\\\"${jndi:ldap:/\\\", \\\"${jndi:rmi:/\\\", \\\"${jndi:ldaps:/\\\", + \\\"${jndi:dns:/\\\", \\\"${jndi:iiop:/\\\",\\\"${jndi:\\\",\\\"${jndi:nds:/\\\",\\\"${jndi:corba/\\\"]);\\nlet + UARegexMinimalString=dynamic(['{','%7b', '%7B']);\\nlet UARegex = @'(\\\\\\\\$|%24)(\\\\\\\\{|%7B)([^jJ]*[jJ])([^nN]*[nN])([^dD]*[dD])([^iI]*[iI])(:|%3A|\\\\\\\\$|%24|}|%7D)';\\n(union + isfuzzy=true\\n(OfficeActivity\\n| where UserAgent has_any (UserAgentString) + or UserAgent matches regex UARegex\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by UserAgent, SourceIP = ClientIP, Account = + UserId, Type, Operation\\n| extend timestamp = StartTime, AccountCustomEntity + = Account, IPCustomEntity = SourceIP\\n),\\n(AzureDiagnostics\\n| where Category + in (\\\"FrontdoorWebApplicationFirewallLog\\\", \\\"FrontdoorAccessLog\\\", + \\\"ApplicationGatewayFirewallLog\\\", \\\"ApplicationGatewayAccessLog\\\")\\n| + where userAgent_s has_any (UserAgentString) or userAgent_s matches regex UARegex\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by + UserAgent = userAgent_s, SourceIP = clientIP_s, Type, host_s, requestUri_s, + httpStatus_d\\n| extend timestamp = StartTime, IPCustomEntity = SourceIP, + UrlCustomEntity = requestUri_s\\n),\\n(\\nW3CIISLog\\n| where csUserAgent + has_any (UserAgentString) or csUserAgent matches regex UARegex\\n| summarize + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by UserAgent + = csUserAgent, SourceIP = cIP, Account = csUserName, Type, sSiteName, csMethod, + csUriStem\\n| extend timestamp = StartTime, AccountCustomEntity = Account, + IPCustomEntity = SourceIP, UrlCustomEntity = csUriStem\\n),\\n(\\nAWSCloudTrail\\n| + where UserAgent has_any (UserAgentString) or UserAgent matches regex UARegex\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by + UserAgent, SourceIP = SourceIpAddress, Account = UserIdentityUserName, Type, + EventName\\n| extend timestamp = StartTime, AccountCustomEntity = Account, + IPCustomEntity = SourceIP\\n),\\n(SigninLogs\\n| where UserAgent has_any (UserAgentString) + or UserAgent matches regex UARegex\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by UserAgent, SourceIP = IPAddress, Account = + UserPrincipalName, Type, Operation = OperationName, tostring(LocationDetails), + tostring(DeviceDetail), AppDisplayName, ClientAppUsed\\n| extend timestamp + = StartTime, AccountCustomEntity = Account, IPCustomEntity = SourceIP\\n),\\n(AADNonInteractiveUserSignInLogs + \\n| where UserAgent has_any (UserAgentString) or UserAgent matches regex + UARegex\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by UserAgent, SourceIP = IPAddress, Account = UserPrincipalName, Type, Operation + = OperationName, tostring(LocationDetails), tostring(DeviceDetail), AppDisplayName, + ClientAppUsed\\n| extend timestamp = StartTime, AccountCustomEntity = Account, + IPCustomEntity = SourceIP\\n),\\n(_Im_WebSession (httpuseragent_has_any=array_concat(UserAgentString,UARegexMinimalString))\\n| + where HttpUserAgent has_any (UserAgentString) or HttpUserAgent matches regex + UARegex\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by HttpUserAgent, SourceIP = SrcIpAddr, DstIpAddr, Account = SrcUsername, + Url, Type\\n| extend timestamp = StartTime, AccountCustomEntity = Account, + IPCustomEntity = SourceIP, UrlCustomEntity = Url\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"User + agent search for log4j exploitation attempt\",\"description\":\"This query + uses various log sources having user agent data to look for log4j CVE-2021-44228 + exploitation attempt based on user agent pattern. Log4j is an open-source + Apache logging library that is used in \\n many Java-based applications. The + regex and the string matching look for the most common attacks. This might + not be comprehensive to detect every possible user agent variation.\\n Reference: + https://msrc-blog.microsoft.com/2021/12/11/microsofts-response-to-cve-2021-44228-apache-log4j2/\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2021-12-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"WAF\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3255ec41-6bd6-4f35-84b1-c032b18bbfcb\",\"name\":\"3255ec41-6bd6-4f35-84b1-c032b18bbfcb\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + starttime = 1d;\\nlet TimeDeltaThresholdInSeconds = 60; // we ignore beacons + diffs that fall below this threshold \\nlet TotalBeaconsThreshold = 4; // + minimum number of beacons required in a session to surface a row\\nlet JitterTolerance + = 0.2; // tolerance to jitter, e.g. - 0.2 = 20% jitter is tolerated either + side of the periodicity\\nCommonSecurityLog\\n| where DeviceVendor == \\\"Fortinet\\\"\\n| + where TimeGenerated > ago(starttime)\\n// eliminate bad data\\n| where isnotempty(SourceIP) + and isnotempty(DestinationIP) and SourceIP != \\\"0.0.0.0\\\"\\n// filter + out deny, close, rst and SNMP to reduce data volume\\n| where DeviceAction + !in (\\\"close\\\", \\\"client-rst\\\", \\\"server-rst\\\", \\\"deny\\\") + and DestinationPort != 161\\n// map input fields\\n| project TimeGenerated + , SourceIP, DestinationIP, DestinationPort, ReceivedBytes, SentBytes, DeviceAction + \\n// where destination IPs are public\\n| where ipv4_is_private(DestinationIP) + == false\\n// sort into source->destination 'sessions'\\n| sort by SourceIP + asc, DestinationIP asc, DestinationPort asc, TimeGenerated asc\\n| serialize\\n// + time diff the contact times between source and destination to get a list of + deltas\\n| extend nextTimeGenerated = next(TimeGenerated, 1), nextSourceIP + = next(SourceIP, 1), nextDestIP = next(DestinationIP, 1), nextDestPort = next(DestinationPort, + 1)\\n| extend TimeDeltainSeconds = datetime_diff(\\\"second\\\",nextTimeGenerated,TimeGenerated)\\n| + where SourceIP == nextSourceIP and DestinationIP == nextDestIP and DestinationPort + == nextDestPort\\n// remove small time deltas below the set threshold\\n| + where TimeDeltainSeconds > TimeDeltaThresholdInSeconds\\n// summarize the + deltas by source->destination\\n| summarize count(), StartTime=min(TimeGenerated), + EndTime=max(TimeGenerated), sum(ReceivedBytes), sum(SentBytes), makelist(TimeDeltainSeconds), + makeset(DeviceAction) by SourceIP, DestinationIP, DestinationPort\\n// get + some statistical properties of the delta distribution and smooth any outliers + (e.g. laptop shut overnight, working hours)\\n| extend series_stats(list_TimeDeltainSeconds), + outliers=series_outliers(list_TimeDeltainSeconds)\\n// expand the deltas and + the outliers\\n| mvexpand list_TimeDeltainSeconds to typeof(double), outliers + to typeof(double)\\n// replace outliers with the average of the distribution\\n| + extend list_TimeDeltainSeconds_normalized=iff(outliers > 1.5 or outliers < + -1.5, series_stats_list_TimeDeltainSeconds_avg , list_TimeDeltainSeconds)\\n// + summarize with the smoothed distribution\\n| summarize BeaconCount=count(), + makelist(list_TimeDeltainSeconds), list_TimeDeltainSeconds_normalized=makelist(list_TimeDeltainSeconds_normalized), + makeset(set_DeviceAction) by StartTime, EndTime, SourceIP, DestinationIP, + DestinationPort, sum_ReceivedBytes, sum_SentBytes\\n// get stats on the smoothed + distribution\\n| extend series_stats(list_TimeDeltainSeconds_normalized)\\n// + match jitter tolerance on smoothed distrib\\n| extend MaxJitter = (series_stats_list_TimeDeltainSeconds_normalized_avg*JitterTolerance)\\n| + where series_stats_list_TimeDeltainSeconds_normalized_stdev < MaxJitter\\n// + where the minimum beacon threshold is satisfied and there was some data transfer\\n| + where BeaconCount > TotalBeaconsThreshold and (sum_SentBytes > 0 or sum_ReceivedBytes + > 0)\\n// final projection\\n| project StartTime, EndTime, SourceIP, DestinationIP, + DestinationPort, BeaconCount, TimeDeltasInSeconds=list_list_TimeDeltainSeconds, + Periodicity=series_stats_list_TimeDeltainSeconds_normalized_avg, ReceivedBytes=sum_ReceivedBytes, + SentBytes=sum_SentBytes, Actions=set_set_DeviceAction\\n// where periodicity + is order of magnitude larger than time delta threshold (eliminates FPs whose + periodicity is close to the values we ignored)\\n| where Periodicity >= (10*TimeDeltaThresholdInSeconds)\\n| + extend timestamp = StartTime, IPCustomEntity = DestinationIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1071\",\"T1571\"],\"displayName\":\"Fortinet + - Beacon pattern detected\",\"description\":\"Identifies patterns in the time + deltas of contacts between internal and external IPs in Fortinet network data + that are consistent with beaconing.\\n Accounts for randomness (jitter) and + seasonality such as working hours that may have been introduced into the beacon + pattern.\\n The lookback is set to 1d, the minimum granularity in time deltas + is set to 60 seconds and the minimum number of beacons required to emit a\\n + detection is set to 4.\\n Increase the lookback period to capture beacons + with larger periodicities.\\n The jitter tolerance is set to 0.2 - This means + we account for an overall 20% deviation from the infered beacon periodicity. + Seasonality is dealt with\\n automatically using series_outliers.\\n Note: + In large environments it may be necessary to reduce the lookback period to + get fast query times.\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2020-03-31T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/80733eb7-35b2-45b6-b2b8-3c51df258206\",\"name\":\"80733eb7-35b2-45b6-b2b8-3c51df258206\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + DomainList = dynamic([\\\"monerohash.com\\\", \\\"do-dear.com\\\", \\\"xmrminerpro.com\\\", + \\\"secumine.net\\\", \\\"xmrpool.com\\\", \\\"minexmr.org\\\", \\\"hashanywhere.com\\\", + \\\"xmrget.com\\\", \\n\\\"mininglottery.eu\\\", \\\"minergate.com\\\", \\\"moriaxmr.com\\\", + \\\"multipooler.com\\\", \\\"moneropools.com\\\", \\\"xmrpool.eu\\\", \\\"coolmining.club\\\", + \\\"supportxmr.com\\\",\\n\\\"minexmr.com\\\", \\\"hashvault.pro\\\", \\\"xmrpool.net\\\", + \\\"crypto-pool.fr\\\", \\\"xmr.pt\\\", \\\"miner.rocks\\\", \\\"walpool.com\\\", + \\\"herominers.com\\\", \\\"gntl.co.uk\\\", \\\"semipool.com\\\", \\n\\\"coinfoundry.org\\\", + \\\"cryptoknight.cc\\\", \\\"fairhash.org\\\", \\\"baikalmine.com\\\", \\\"tubepool.xyz\\\", + \\\"fairpool.xyz\\\", \\\"asiapool.io\\\", \\\"coinpoolit.webhop.me\\\", \\\"nanopool.org\\\", + \\n\\\"moneropool.com\\\", \\\"miner.center\\\", \\\"prohash.net\\\", \\\"poolto.be\\\", + \\\"cryptoescrow.eu\\\", \\\"monerominers.net\\\", \\\"cryptonotepool.org\\\", + \\\"extrmepool.org\\\", \\\"webcoin.me\\\", \\n\\\"kippo.eu\\\", \\\"hashinvest.ws\\\", + \\\"monero.farm\\\", \\\"supportxmr.com\\\", \\\"xmrpool.eu\\\", \\\"linux-repository-updates.com\\\", + \\\"1gh.com\\\", \\\"dwarfpool.com\\\", \\\"hash-to-coins.com\\\", \\n\\\"hashvault.pro\\\", + \\\"pool-proxy.com\\\", \\\"hashfor.cash\\\", \\\"fairpool.cloud\\\", \\\"litecoinpool.org\\\", + \\\"mineshaft.ml\\\", \\\"abcxyz.stream\\\", \\\"moneropool.ru\\\", \\\"cryptonotepool.org.uk\\\",\\n\\\"extremepool.org\\\", + \\\"extremehash.com\\\", \\\"hashinvest.net\\\", \\\"unipool.pro\\\", \\\"crypto-pools.org\\\", + \\\"monero.net\\\", \\\"backup-pool.com\\\", \\\"mooo.com\\\", \\\"freeyy.me\\\", + \\\"cryptonight.net\\\",\\n\\\"shscrypto.net\\\"]);\\nSyslog\\n| where ProcessName + contains \\\"squid\\\"\\n| extend URL = extract(\\\"(([A-Z]+ [a-z]{4,5}:\\\\\\\\/\\\\\\\\/)|[A-Z]+ + )([^ :]*)\\\",3,SyslogMessage), \\n SourceIP = extract(\\\"([0-9]+ + )(([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3}))\\\",2,SyslogMessage), + \\n Status = extract(\\\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))\\\",1,SyslogMessage), + \\n HTTP_Status_Code = extract(\\\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))/([0-9]{3})\\\",8,SyslogMessage),\\n + \ User = extract(\\\"(CONNECT |GET )([^ ]* )([^ ]+)\\\",3,SyslogMessage),\\n + \ RemotePort = extract(\\\"(CONNECT |GET )([^ ]*)(:)([0-9]*)\\\",4,SyslogMessage),\\n + \ Domain = extract(\\\"(([A-Z]+ [a-z]{4,5}:\\\\\\\\/\\\\\\\\/)|[A-Z]+ + )([^ :\\\\\\\\/]*)\\\",3,SyslogMessage),\\n Bytes = toint(extract(\\\"([A-Z]+\\\\\\\\/[0-9]{3} + )([0-9]+)\\\",2,SyslogMessage)),\\n contentType = extract(\\\"([a-z/]+$)\\\",1,SyslogMessage)\\n| + extend TLD = extract(\\\"\\\\\\\\.[a-z]*$\\\",0,Domain)\\n| where HTTP_Status_Code + == '200'\\n| where Domain contains \\\".\\\"\\n| where Domain has_any (DomainList)\\n| + extend timestamp = TimeGenerated, URLCustomEntity = URL, IPCustomEntity = + SourceIP, AccountCustomEntity = User\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1102\"],\"displayName\":\"Squid + proxy events related to mining pools\",\"description\":\"Checks for Squid + proxy events in Syslog associated with common mining pools .This query presumes + the default Squid log format is being used. \\n http://www.squid-cache.org/Doc/config/access_log/\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2019-07-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3b05727d-a8d1-477d-bbdd-d957da96ac7b\",\"name\":\"3b05727d-a8d1-477d-bbdd-d957da96ac7b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"OfficeActivity\\n| + where OfficeWorkload =~ \\\"Exchange\\\"\\n| where Parameters has \\\"ForwardingSmtpAddress\\\"\\n| + extend parsed = parse_json(Parameters)\\n| mv-expand parsed\\n| where parsed.Name + == \\\"ForwardingSmtpAddress\\\"\\n| extend parameterName = tostring(parsed.Name), + fwdingDestination = tostring(parsed.Value)\\n| where isnotempty(fwdingDestination)\\n| + extend ClientIPOnly = case(\\nClientIP has \\\".\\\" and ClientIP has ':', + tostring(split(ClientIP,\\\":\\\")[0]),\\nClientIP has \\\".\\\" and ClientIP + has '-', tostring(split(ClientIP,\\\"-\\\")[0]),\\nClientIP has ']-', tostring(trim_start(@'[[]',tostring(split(ClientIP,\\\"]\\\")[0]))),\\nClientIP + has ']:', tostring(trim_start(@'[[]',tostring(split(ClientIP,\\\"]\\\")[0]))),\\nisempty(ClientIP) + and ClientIP_ has \\\".\\\" and ClientIP_ has ':', tostring(split(ClientIP_,\\\":\\\")[0]),\\nisempty(ClientIP) + and ClientIP_ has \\\".\\\" and ClientIP_ has '-', tostring(split(ClientIP_,\\\"-\\\")[0]),\\nisempty(ClientIP) + and ClientIP_ has ']-', tostring(trim_start(@'[[]',tostring(split(ClientIP_,\\\"]\\\")[0]))),\\nisempty(ClientIP) + and ClientIP_ has ']:', tostring(trim_start(@'[[]',tostring(split(ClientIP_,\\\"]\\\")[0]))),\\nisnotempty(ClientIP), + ClientIP,\\nisnotempty(ClientIP_), ClientIP_,\\n\\\"IP Not Available\\\"\\n)\\n| + extend Port = case(\\nClientIP has \\\".\\\" and ClientIP has ':', tostring(split(ClientIP,\\\":\\\")[1]),\\nClientIP + has \\\".\\\" and ClientIP has '-', tostring(split(ClientIP,\\\"-\\\")[1]),\\nClientIP + has ']-', tostring(split(ClientIP,\\\"]-\\\")[1]),\\nClientIP has ']:', tostring(split(ClientIP,\\\"]:\\\")[1]),\\nisempty(ClientIP) + and ClientIP_ has \\\".\\\" and ClientIP_ has ':', tostring(split(ClientIP_,\\\":\\\")[1]),\\nisempty(ClientIP) + and ClientIP_ has \\\".\\\" and ClientIP_ has '-', tostring(split(ClientIP_,\\\"-\\\")[1]),\\nisempty(ClientIP) + and ClientIP_ has ']-', tostring(split(ClientIP_,\\\"]-\\\")[1]),\\nisempty(ClientIP) + and ClientIP_ has ']:', tostring(split(ClientIP_,\\\"]:\\\")[1]),\\nisnotempty(ClientIP), + ClientIP,\\nisnotempty(ClientIP_), ClientIP_,\\n\\\"IP Not Available\\\"\\n)\\n| + extend UserId = iff(isempty(UserId), UserId_, UserId)\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), DistinctUserCount = + dcount(UserId), UserId = make_set(UserId),\\nPorts = make_set(Port), EventCount + = count() by fwdingDestination, ClientIP = ClientIPOnly\\n| where DistinctUserCount + > 1\\n| mv-expand UserId\\n| extend UserId = tostring(UserId), Ports = tostring(Ports)\\n| + distinct StartTimeUtc, EndTimeUtc, UserId, DistinctUserCount, ClientIP, Ports, + fwdingDestination, EventCount\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"UserId\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ClientIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Collection\",\"Exfiltration\"],\"techniques\":[\"T1114\",\"T1020\"],\"displayName\":\"NRT + Multiple users email forwarded to same destination\",\"description\":\"Identifies + when multiple (more than one) users mailboxes are configured to forward to + the same destination.\\nThis could be an attacker-controlled destination mailbox + configured to collect mail from multiple compromised user accounts.\",\"lastUpdatedDateUTC\":\"2022-03-07T00:00:00Z\",\"createdDateUTC\":\"2019-08-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/75ea5c39-93e5-489b-b1e1-68fa6c9d2d04\",\"name\":\"75ea5c39-93e5-489b-b1e1-68fa6c9d2d04\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 3;\\nlet aadFunc = (tableName:string){\\ntable(tableName)\\n| + where ResultType == \\\"50057\\\"\\n| where ResultDescription =~ \\\"User + account is disabled. The account has been disabled by an administrator.\\\"\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), applicationCount + = dcount(AppDisplayName), \\napplicationSet = make_set(AppDisplayName), count() + by UserPrincipalName, IPAddress, Type\\n| where applicationCount >= threshold\\n| + extend timestamp = StartTime, AccountCustomEntity = UserPrincipalName, IPCustomEntity + = IPAddress\\n};\\nlet aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt + = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion isfuzzy=true aadSignin, + aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Attempts + to sign in to disabled accounts\",\"description\":\"Identifies failed attempts + to sign in to disabled accounts across multiple Azure Applications.\\nDefault + threshold for Azure Applications attempted to sign in to is 3.\\nReferences: + https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\\n50057 + - User account is disabled. The account has been disabled by an administrator.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bfb1c90f-8006-4325-98be-c7fffbc254d6\",\"name\":\"bfb1c90f-8006-4325-98be-c7fffbc254d6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + s_threshold = 30;\\nlet l_threshold = 3;\\nlet aadFunc = (tableName:string){\\ntable(tableName)\\n| + where OperationName =~ \\\"Sign-in activity\\\"\\n// Error codes that we want + to look at as they are related to the use of incorrect password.\\n| where + ResultType in (\\\"50126\\\", \\\"50053\\\" , \\\"50055\\\", \\\"50056\\\")\\n| + extend DeviceDetail = todynamic(DeviceDetail), Status = todynamic(DeviceDetail), + LocationDetails = todynamic(LocationDetails)\\n| extend OS = DeviceDetail.operatingSystem, + Browser = DeviceDetail.browser\\n| extend StatusCode = tostring(Status.errorCode), + StatusDetails = tostring(Status.additionalDetails)\\n| extend LocationString + = strcat(tostring(LocationDetails.countryOrRegion), \\\"/\\\", tostring(LocationDetails.state), + \\\"/\\\", tostring(LocationDetails.city))\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated), LocationCount=dcount(LocationString), Location + = make_set(LocationString), \\nIPAddress = make_set(IPAddress), IPAddressCount + = dcount(IPAddress), AppDisplayName = make_set(AppDisplayName), ResultDescription + = make_set(ResultDescription), \\nBrowser = make_set(Browser), OS = make_set(OS), + SigninCount = count() by UserPrincipalName, Type \\n// + Setting a generic threshold - Can be different for different environment\\n| + where SigninCount > s_threshold and LocationCount >= l_threshold\\n| extend + tostring(Location), tostring(IPAddress), tostring(AppDisplayName), tostring(ResultDescription), + tostring(Browser), tostring(OS)\\n| distinct *\\n| extend timestamp = StartTime, + AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Distributed + Password cracking attempts in AzureAD\",\"description\":\"Identifies distributed + password cracking attempts from the Azure Active Directory SigninLogs.\\nThe + query looks for unusually high number of failed password attempts coming from + multiple locations for a user account.\\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes\\n50053 + \ Account is locked because the user tried to sign in too many times with + an incorrect user ID or password.\\n50055 Invalid password, entered expired + password.\\n50056 Invalid or null password - Password does not exist in + store for this user.\\n50126 Invalid username or password, or invalid on-premises + username or password.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7ad4c32b-d0d2-411c-a0e8-b557afa12fce\",\"name\":\"7ad4c32b-d0d2-411c-a0e8-b557afa12fce\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n| + where EventID==4688\\n| where isnotempty(CommandLine)\\n| project TimeGenerated, + Computer, Account = SubjectUserName, AccountDomain = SubjectDomainName, FileName + = Process, CommandLine, ParentProcessName\\n| where CommandLine contains \\\".decode('base64')\\\"\\n + \ or CommandLine contains \\\"base64 --decode\\\"\\n or CommandLine + contains \\\".decode64(\\\"\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Account\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Execution\",\"DefenseEvasion\"],\"techniques\":[\"T1059\",\"T1027\",\"T1140\"],\"displayName\":\"NRT + Process executed from binary hidden in Base64 encoded file\",\"description\":\"Encoding + malicious software is a technique used to obfuscate files from detection.\\nThe + first CommandLine component is looking for Python decoding base64.\\nThe second + CommandLine component is looking for Bash/sh command line base64 decoding.\\nThe + third one is looking for Ruby decoding base64.\",\"lastUpdatedDateUTC\":\"2022-02-08T00:00:00Z\",\"createdDateUTC\":\"2019-01-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/95002681-4ecb-4da3-9ece-26d7e5feaa33\",\"name\":\"95002681-4ecb-4da3-9ece-26d7e5feaa33\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"imAuthentication\\n| + where EventResult =='Failure'\\n| where EventResultDetails == 'User disabled'\\n| + summarize StartTime=min(EventStartTime), EndTime=max(EventEndTime), disabledAccountLoginAttempts + = count()\\n , disabledAccountsTargeted = dcount(TargetUsername), disabledAccountSet + = make_set(TargetUsername)\\n , applicationsTargeted = dcount(TargetAppName)\\n + \ , applicationSet = make_set(TargetAppName) \\n by SrcDvcIpAddr, + Type\\n| order by disabledAccountLoginAttempts desc\\n| join kind=leftouter + \\n (\\n // Consider these IPs suspicious - and alert any related successful + sign-ins\\n imAuthentication\\n | where EventResult=='Success'\\n | + summarize successfulAccountSigninCount = dcount(TargetUsername), successfulAccountSigninSet + = makeset(TargetUsername, 15) by SrcDvcIpAddr, Type\\n // Assume IPs associated + with sign-ins from 100+ distinct user accounts are safe\\n | where successfulAccountSigninCount + < 100\\n )\\n on SrcDvcIpAddr\\n| where isnotempty(successfulAccountSigninCount)\\n| + project StartTime, EndTime, SrcDvcIpAddr, disabledAccountLoginAttempts, disabledAccountsTargeted, + disabledAccountSet, applicationSet, \\nsuccessfulAccountSigninCount, successfulAccountSigninSet, + Type\\n| order by disabledAccountLoginAttempts\\n| extend timestamp = StartTime, + IPCustomEntity = SrcDvcIpAddr\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\",\"Persistence\"],\"techniques\":[\"T1078\",\"T1098\"],\"displayName\":\"Sign-ins + from IPs that attempt sign-ins to disabled accounts (Uses Authentication Normalization)\",\"description\":\"Identifies + IPs with failed attempts to sign in to one or more disabled accounts signed + in successfully to another account.\\nTo use this analytics rule, make sure + you have deployed the [ASIM normalization parsers](https://aka.ms/ASimAuthentication)\",\"lastUpdatedDateUTC\":\"2022-02-14T00:00:00Z\",\"createdDateUTC\":\"2021-07-27T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/795edf2d-cf3e-45b5-8452-fe6c9e6a582e\",\"name\":\"795edf2d-cf3e-45b5-8452-fe6c9e6a582e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"CommonSecurityLog + \\n| where isempty(CommunicationDirection) \\n| where DeviceEventClassID in + (\\\"733101\\\",\\\"733102\\\",\\\"733103\\\",\\\"733104\\\",\\\"733105\\\")\\n| + extend timestamp = TimeGenerated, IPCustomEntity = SourceIP, HostCustomEntity + = DeviceName\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\",\"Impact\"],\"techniques\":[\"T1046\",\"T1498\"],\"displayName\":\"Cisco + ASA - threat detection message fired\",\"description\":\"Identifies when the + Cisco ASA Threat Detection engine fired an alert based on malicious activity + occurring on the network inicated by DeviceEventClassID 733101-733105\\nResources: + https://www.cisco.com/c/en/us/td/docs/security/asa/syslog/b_syslog/syslogs9.html\\nDetails + on how to further troubleshoot/investigate: https://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/113685-asa-threat-detection.html\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1785d372-b9fe-4283-96a6-3a1d83cabfd1\",\"name\":\"1785d372-b9fe-4283-96a6-3a1d83cabfd1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + Tarrask_threats = dynamic([\\\"HackTool:Win64/Tarrask!MS\\\", \\\"HackTool:Win64/Ligolo!MSR\\\", + \\\"Behavior:Win32/ScheduledTaskHide.A\\\", \\\"Tarrask\\\"]);\\nDeviceInfo\\n| + extend DeviceName = tolower(DeviceName)\\n| join kind=rightouter ( SecurityAlert\\n| + where ProviderName == \\\"MDATP\\\"\\n| extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\\n| + extend ThreatFamilyName = tostring(parse_json(ExtendedProperties).ThreatFamilyName)\\n| + where ThreatName in~ (Tarrask_threats) or ThreatFamilyName in~ (Tarrask_threats)\\n| + extend CompromisedEntity = tolower(CompromisedEntity)\\n) on $left.DeviceName + == $right.CompromisedEntity\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"CompromisedEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"PublicIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1053\"],\"displayName\":\"AV + detections related to Tarrask malware\",\"description\":\"This query looks + for Microsoft Defender AV detections related to Tarrask malware. In Microsoft + Sentinel the SecurityAlerts table \\n includes only the Device Name of the + affected device, this query joins the DeviceInfo table to clearly connect + other information such as Device group, ip, logged on users etc. \\n This + would allow the Microsoft Sentinel analyst to have more context related to + the alert, if available.\\n Reference: https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/\",\"lastUpdatedDateUTC\":\"2022-04-12T00:00:00Z\",\"createdDateUTC\":\"2022-04-12T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"SecurityAlert\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fc1b7e7a-bc24-42c3-ad67-5c76c8fcb2d6\",\"name\":\"fc1b7e7a-bc24-42c3-ad67-5c76c8fcb2d6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.3\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":\".txt,.jpg,.mp4\",\"dataType\":\"string\",\"name\":\"File + extension\",\"description\":\"Give comma separated file extension to exclude + from source data within double quotes, example: \\\".txt,.jpg,.mp4\\\"\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"5\",\"maximum\":\"100\",\"value\":\"10\",\"name\":\"Minimum + number of downgrades\",\"description\":\"Generate an anomaly when number of + downgrade label is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1530\",\"T1213\",\"T1005\",\"T1039\",\"T1114\"],\"displayName\":\"(Preview) + Unusual mass downgrade AIP label\",\"description\":\"This algorithm detects + unusual high volume of downgrade label activity in Azure Information Protection + (AIP) logs.\\nIt considers \\\"AIP\\\" workload records for a given number + of days and determines the sequence of activity performed on documents along + with the label applied to classify unusual volume of downgrade activity.\",\"lastUpdatedDateUTC\":\"2021-06-04T00:00:00Z\",\"createdDateUTC\":\"2020-11-18T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureInformationProtection\",\"dataTypes\":[\"InformationProtectionLogs_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/157c0cfc-d76d-463b-8755-c781608cdc1a\",\"name\":\"157c0cfc-d76d-463b-8755-c781608cdc1a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + aadFunc = (tableName:string){\\nCommonSecurityLog\\n| where DeviceVendor =~ + \\\"Cisco\\\"\\n| where DeviceAction =~ \\\"denied\\\"\\n| where ipv4_is_private(SourceIP) + == false\\n| summarize count() by SourceIP\\n| join (\\n // Successful + signins from IPs blocked by the firewall solution are suspect\\n // Include + fully successful sign-ins, but also ones that failed only at MFA stage\\n + \ // as that supposes the password was sucessfully guessed.\\n table(tableName)\\n + \ | where ResultType in (\\\"0\\\", \\\"50074\\\", \\\"50076\\\") \\n) on + $left.SourceIP == $right.IPAddress\\n| extend timestamp = TimeGenerated, IPCustomEntity + = SourceIP, AccountCustomEntity = UserPrincipalName\\n};\\nlet aadSignin = + aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Cisco + - firewall block but success logon to Azure AD\",\"description\":\"Correlate + IPs blocked by a Cisco firewall appliance with successful Azure Active Directory + signins. \\nBecause the IP was blocked by the firewall, that same IP logging + on successfully to AAD is potentially suspect\\nand could indicate credential + compromise for the user account.\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2019-07-08T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/875d0eb1-883a-4191-bd0e-dbfdeb95a464\",\"name\":\"875d0eb1-883a-4191-bd0e-dbfdeb95a464\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n| + where EventID == 5136 \\n| parse EventData with * 'AttributeLDAPDisplayName\\\">' + AttributeLDAPDisplayName \\\"<\\\" *\\n| parse EventData with * 'ObjectClass\\\">' + ObjectClass \\\"<\\\" *\\n| where AttributeLDAPDisplayName == \\\"servicePrincipalName\\\" + and ObjectClass == \\\"user\\\"\\n| parse EventData with * 'ObjectDN\\\">' + ObjectDN \\\"<\\\" *\\n| parse EventData with * 'AttributeValue\\\">' AttributeValue + \\\"<\\\" *\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by Computer, SubjectAccount, ObjectDN, AttributeValue\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"SubjectAccount\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1134\"],\"displayName\":\"Service + Principal Name (SPN) Assigned to User Account\",\"description\":\"This query + identifies whether a Active Directory user object was assigned a service principal + name which could indicate that an adversary is preparing for performing Kerberoasting. + \\nThis query checks for event id 5136 that the Object Class field is \\\"user\\\" + and the LDAP Display Name is \\\"servicePrincipalName\\\".\\nRef: https://thevivi.net/assets/docs/2019/theVIVI-AD-Security-Workshop_AfricaHackon2019.pdf\",\"lastUpdatedDateUTC\":\"2022-02-02T00:00:00Z\",\"createdDateUTC\":\"2022-01-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/45076281-35ae-45e0-b443-c32aa0baf965\",\"name\":\"45076281-35ae-45e0-b443-c32aa0baf965\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + args = dynamic([\\\"objectcategory\\\",\\\"domainlist\\\",\\\"dcmodes\\\",\\\"adinfo\\\",\\\"trustdmp\\\",\\\"computers_pwdnotreqd\\\",\\\"Domain + Admins\\\", \\\"objectcategory=person\\\", \\\"objectcategory=computer\\\", + \\\"objectcategory=*\\\",\\\"dclist\\\"]);\\nlet parentProcesses = dynamic([\\\"pwsh.exe\\\",\\\"powershell.exe\\\",\\\"cmd.exe\\\"]);\\nimProcessCreate\\n//looks + for execution from a shell\\n| where ActingProcessName has_any (parentProcesses)\\n| + extend ActingProcessFileName = tostring(split(ActingProcessName, '\\\\\\\\')[-1])\\n| + where ActingProcessFileName in~ (parentProcesses)\\n// main filter\\n| where + Process hassuffix \\\"AdFind.exe\\\" or TargetProcessSHA256 == \\\"c92c158d7c37fea795114fa6491fe5f145ad2f8c08776b18ae79db811e8e36a3\\\"\\n + \ // AdFind common Flags to check for from various threat actor TTPs\\n + \ or CommandLine has_any (args)\\n| extend AccountCustomEntity = User, HostCustomEntity + = Dvc, ProcessCustomEntity = ActingProcessName, CommandLineCustomEntity = + CommandLine, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = TargetProcessSHA256\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"},{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLineCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1018\"],\"displayName\":\"Probable + AdFind Recon Tool Usage (Normalized Process Events)\",\"description\":\"Identifies + the host and account that executed AdFind by hash and filename in addition + to common and unique flags that are used by many threat actors in discovery.\\nTo + use this analytics rule, make sure you have deployed the [ASIM normalization + parsers](https://aka.ms/ASimProcessEvent)\",\"lastUpdatedDateUTC\":\"2022-02-14T00:00:00Z\",\"createdDateUTC\":\"2021-06-09T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/910124df-913c-47e3-a7cd-29e1643fa55e\",\"name\":\"910124df-913c-47e3-a7cd-29e1643fa55e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"//Adjust + this threshold to fit environment\\nlet signin_threshold = 5; \\n//Make a + list of IPs with failed AWS console logins\\nlet aws_fails = AWSCloudTrail\\n| + where EventName == \\\"ConsoleLogin\\\"\\n| extend LoginResult = tostring(parse_json(ResponseElements).ConsoleLogin) + \\n| where LoginResult != \\\"Success\\\"\\n| where SourceIpAddress != \\\"127.0.0.1\\\"\\n| + summarize count() by SourceIpAddress\\n| where count_ > signin_threshold\\n| + summarize make_set(SourceIpAddress);\\n//See if any of those IPs have sucessfully + logged into Azure AD.\\nSigninLogs\\n| where ResultType in (\\\"0\\\", \\\"50125\\\", + \\\"50140\\\")\\n| where IPAddress in (aws_fails) \\n| extend Reason = \\\"Multiple + failed AWS Console logins from IP address\\\"\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\",\"CredentialAccess\"],\"techniques\":[\"T1078\",\"T1110\"],\"displayName\":\"Failed + AWS Console logons but success logon to AzureAD\",\"description\":\"Identifies + a list of IP addresses with a minimum numbe(default of 5) of failed logon + attempts to AWS Console.\\nUses that list to identify any successful Azure + Active Directory logons from these IPs within the same timeframe.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2019-08-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/23850aa1-37d3-4b4b-9f39-4ebf5feb59fd\",\"name\":\"23850aa1-37d3-4b4b-9f39-4ebf5feb59fd\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.6\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":[{\"supportedValues\":[\"Akamai\",\"Aruba + Networks\",\"Check Point\",\"Dell\",\"Forcepoint\",\"Fortinet\",\"McAfee\",\"Palo + Alto Networks\",\"SonicWall\",\"Trend Micro\",\"Vectra Networks\",\"Zscaler\"],\"supportedValuesKql\":null,\"value\":\"Palo + Alto Networks\",\"name\":\"Device vendor\",\"description\":\"Select device + vendor reporting network connection logs to CommonSecurityLog\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"1\",\"maximum\":\"10000\",\"value\":\"1\",\"name\":\"Hourly + data transfer threshold in MB\",\"description\":\"Suppress anomalies when + hourly data transfered (in MB) per hour is less than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"},{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\".98\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1011\",\"T1029\",\"T1030\",\"T1041\",\"T1011\",\"T1537\",\"T1567\"],\"displayName\":\"(Preview) + Excessive data transfer anomaly\",\"description\":\"This algorithm is to detect + unusually high data transfer seen in network logs. \\nIt uses time series + to decompose the data into seasonal, trend and residual components to \\ncalculate + baseline. Any sudden large deviation from the historical baseline is considered + anomalous activity.\",\"lastUpdatedDateUTC\":\"2022-04-21T00:00:00Z\",\"createdDateUTC\":\"2021-04-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog + (Zscaler)\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog + (CheckPoint)\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog + (Fortinet)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/aedc5b33-2d7c-42cb-a692-f25ef637cbb1\",\"name\":\"aedc5b33-2d7c-42cb-a692-f25ef637cbb1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 10m;\\nProofpointPOD\\n| where TimeGenerated > ago(lbtime)\\n| where + EventType == 'message'\\n| where NetworkDirection == 'outbound'\\n| where + array_length(todynamic(DstUserUpn)) == 1\\n| extend sender = extract(@'\\\\A(.*?)@', + 1, SrcUserUpn)\\n| extend sender_domain = extract(@'@(.*)$', 1, SrcUserUpn)\\n| + extend recipient = extract(@'\\\\A(.*?)@', 1, tostring(todynamic(DstUserUpn)[0]))\\n| + extend recipient_domain = extract(@'@(.*)$', 1, tostring(todynamic(DstUserUpn)[0]))\\n| + where sender =~ recipient\\n| where sender_domain != recipient_domain\\n| + project SrcUserUpn, DstUserUpn\\n| extend AccountCustomEntity = SrcUserUpn\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"ProofpointPOD + - Possible data exfiltration to private email\",\"description\":\"Detects + when sender sent email to the non-corporate domain and recipient's username + is the same as sender's username.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/30fa312c-31eb-43d8-b0cc-bcbdfb360822\",\"name\":\"30fa312c-31eb-43d8-b0cc-bcbdfb360822\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet emailregex = @'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$';\\nlet + aadFunc = (tableName:string){\\nThreatIntelligenceIndicator\\n| where TimeGenerated + >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| summarize LatestIndicatorTime + = arg_max(TimeGenerated, *) by IndicatorId\\n| where Active == true\\n//Filtering + the table for Email related IOCs\\n| where isnotempty(EmailSenderAddress)\\n// + using innerunique to keep perf fast and result set low, we only need one match + to indicate potential malicious activity that needs to be investigated\\n| + join kind=innerunique (\\n table(tableName) | where TimeGenerated >= ago(dt_lookBack) + and isnotempty(UserPrincipalName)\\n //Normalizing the column to lower + case for exact match with EmailSenderAddress column\\n | extend UserPrincipalName + = tolower(UserPrincipalName)\\n | where UserPrincipalName matches regex + emailregex\\n | extend Status = todynamic(DeviceDetail), LocationDetails + = todynamic(LocationDetails)\\n | extend StatusCode = tostring(Status.errorCode), + StatusDetails = tostring(Status.additionalDetails)\\n | extend State = + tostring(LocationDetails.state), City = tostring(LocationDetails.city), Region + = tostring(LocationDetails.countryOrRegion)\\n // renaming timestamp column + so it is clear the log this came from SigninLogs table\\n | extend SigninLogs_TimeGenerated + = TimeGenerated, Type = Type\\n)\\non $left.EmailSenderAddress == $right.UserPrincipalName\\n| + where SigninLogs_TimeGenerated < ExpirationDateTime\\n| summarize SigninLogs_TimeGenerated + = arg_max(SigninLogs_TimeGenerated, *) by IndicatorId, UserPrincipalName\\n| + project SigninLogs_TimeGenerated, Description, ActivityGroupNames, IndicatorId, + ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nEmailSenderName, EmailRecipient, + EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, FileHashType, + IPAddress, UserPrincipalName, AppDisplayName,\\nStatusCode, StatusDetails, + NetworkIP, NetworkDestinationIP, NetworkSourceIP, Type\\n| extend timestamp + = SigninLogs_TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity + = IPAddress, URLCustomEntity = Url\\n};\\nlet aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet + aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion isfuzzy=true + aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Email entity to SigninLogs\",\"description\":\"Identifies a match in SigninLogs + table from any Email IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d6190dde-8fd2-456a-ac5b-0a32400b0464\",\"name\":\"d6190dde-8fd2-456a-ac5b-0a32400b0464\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + ProcessCreationEvents=() {\\nlet processEvents=(union isfuzzy=true\\n(SecurityEvent\\n| + where EventID==4688\\n| where isnotempty(CommandLine)\\n| project TimeGenerated, + Computer, Account = SubjectUserName, AccountDomain = SubjectDomainName, FileName + = Process, CommandLine, ParentProcessName\\n),\\n(WindowsEvent\\n| where EventID==4688\\n| + where EventData has_any (\\\".decode('base64')\\\", \\\"base64 --decode\\\", + \\\".decode64(\\\" )\\n| extend CommandLine = tostring(EventData.CommandLine)\\n| + where isnotempty(CommandLine)\\n| extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| + extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| extend + NewProcessName = tostring(EventData.NewProcessName)\\n| extend FileName=tostring(split(NewProcessName, + '\\\\\\\\')[-1])\\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| + project TimeGenerated, Computer, Account = SubjectUserName, AccountDomain + = SubjectDomainName, CommandLine, ParentProcessName\\n));\\nprocessEvents;\\n};\\nProcessCreationEvents + \\n| where CommandLine contains \\\".decode('base64')\\\"\\n or CommandLine + contains \\\"base64 --decode\\\"\\n or CommandLine contains \\\".decode64(\\\" + \\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + CountToday = count() by Computer, Account, AccountDomain, FileName, CommandLine, + ParentProcessName \\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = Account, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Execution\",\"DefenseEvasion\"],\"techniques\":[\"T1059\",\"T1027\",\"T1140\"],\"displayName\":\"Process + executed from binary hidden in Base64 encoded file\",\"description\":\"Encoding + malicious software is a technique used to obfuscate files from detection. + \\nThe first CommandLine component is looking for Python decoding base64. + \\nThe second CommandLine component is looking for Bash/sh command line base64 + decoding.\\nThe third one is looking for Ruby decoding base64.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-01-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a04cf847-a832-4c60-b687-b0b6147da219\",\"name\":\"a04cf847-a832-4c60-b687-b0b6147da219\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + IPList = dynamic([\\\"45.63.52.41\\\",\\\"140.82.17.161\\\",\\\"207.148.101.95\\\",\\\"45.32.87.51\\\",\\\"66.42.98.156\\\",\\\"45.76.144.105\\\",\\\"217.163.28.35\\\",\\\"45.32.141.174\\\",\\\"149.28.165.249\\\",\\\"209.250.225.247\\\",\\\"45.63.100.115\\\",\\\"95.179.229.230\\\",\\\"209.250.233.247\\\",\\\"45.77.121.232\\\",\\\"45.76.175.65\\\",\\\"104.238.160.237\\\",\\\"45.77.181.97\\\",\\\"95.179.192.125\\\",\\\"149.28.93.184\\\",\\\"140.82.16.81\\\",\\\"45.76.173.103\\\",\\\"45.77.255.22\\\",\\\"45.32.11.71\\\",\\\"149.28.77.26\\\",\\\"45.32.54.50\\\",\\\"104.156.233.156\\\",\\\"45.32.21.118\\\",\\\"45.63.62.109\\\",\\\"45.77.244.202\\\",\\\"149.248.11.205\\\",\\\"104.238.190.244\\\"]);\\nlet + IOCTerms = \\\"\\\\\\\\?lang=[/..]*/dev/cmdb/sslvpn_websession|/dana-na/jam/[/..]*home/webserver/htdocs/dana/html5acc/guacamole[/..]*etc/passwd\\\\\\\\?\\\";\\n(union + isfuzzy=true\\n(CommonSecurityLog\\n| where isnotempty(SourceIP) or isnotempty(DestinationIP)\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) or has_any_ipv4 (Message, + IPList)\\n| extend IPMatch = case(\\nSourceIP in (IPList), \\\"SourceIP\\\", + \\nDestinationIP in (IPList), \\\"DestinationIP\\\",\\n\\\"Message\\\") \\n| + where Message matches regex IOCTerms\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by SourceIP, DestinationIP, DeviceProduct, + DeviceAction, Message, Protocol, SourcePort, DestinationPort, DeviceAddress, + DeviceName, IPMatch\\n| extend timestamp = StartTimeUtc, IPCustomEntity = + case(IPMatch == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", + DestinationIP, \\\"IP in Message Field\\\") \\n),\\n(OfficeActivity\\n| where + isnotempty(UserAgent) and ClientIP in (IPList)\\n| where UserAgent contains + \\\"ExchangeServicesClient/0.0.0.0\\\"\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by SourceIP = ClientIP, Account = UserId, + Type, RecordType, OfficeWorkload, UserAgent, OfficeObjectId, IPMatch = \\\"ClientIP\\\"\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = Account, IPCustomEntity + = SourceIP\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"InitialAccess\",\"Collection\"],\"techniques\":[\"T1133\",\"T1114\"],\"displayName\":\"Known + Manganese IP and UserAgent activity\",\"description\":\"Matches IP plus UserAgent + IOCs in OfficeActivity data, along with IP plus Connection string information + in the CommonSecurityLog data related to Manganese group activity.\\nReferences: + \\nhttps://kb.pulsesecure.net/articles/Pulse_Security_Advisories/SA44101/\\nhttps://fortiguard.com/psirt/FG-IR-18-384\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-10-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a356c8bd-c81d-428b-aa36-83be706be034\",\"name\":\"a356c8bd-c81d-428b-aa36-83be706be034\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + AADJoined or Register Device Registry Keys\\nlet aadJoinRoot = \\\"\\\\\\\\REGISTRY\\\\\\\\MACHINE\\\\\\\\SYSTEM\\\\\\\\ControlSet001\\\\\\\\Control\\\\\\\\CloudDomainJoin\\\\\\\\JoinInfo\\\\\\\\\\\";\\nlet + aadRegisteredRoot = \\\"\\\\\\\\SOFTWARE\\\\\\\\Microsoft\\\\\\\\Windows NT\\\\\\\\CurrentVersion\\\\\\\\WorkplaceJoin\\\";\\n// + Transport Key Registry Key\\nlet keyTransportKey = \\\"\\\\\\\\REGISTRY\\\\\\\\MACHINE\\\\\\\\SYSTEM\\\\\\\\ControlSet001\\\\\\\\Control\\\\\\\\Cryptography\\\\\\\\Ngc\\\\\\\\KeyTransportKey\\\\\\\\\\\";\\n(union + isfuzzy=true\\n(\\n// Access to Object Requested\\nSecurityEvent\\n| where + EventID == '4656'\\n| where EventData contains aadJoinRoot or EventData contains + aadRegisteredRoot\\n| extend EventData = parse_xml(EventData).EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Computer, EventID)\\n| + where ObjectType == 'Key'\\n| where ObjectName startswith aadJoinRoot and + SubjectLogonId != '0x3e7' //Local System\\n| extend ProcessId = column_ifexists(\\\"ProcessId\\\", + \\\"\\\"), Process = split(ProcessName, '\\\\\\\\', -1)[-1],Account = strcat(SubjectDomainName, + \\\"\\\\\\\\\\\", SubjectUserName)\\n| join kind=innerunique (\\n SecurityEvent\\n + \ | where EventID == '4656'\\n | where EventData contains keyTransportKey\\n + \ | extend EventData = parse_xml(EventData).EventData.Data\\n | mv-expand + bagexpansion=array EventData\\n | evaluate bag_unpack(EventData)\\n | + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n | evaluate pivot(Key, any(Value), TimeGenerated, Computer, + EventID)\\n | extend ObjectName = column_ifexists(\\\"ObjectName\\\", \\\"\\\"),ObjectType + = column_ifexists(\\\"ObjectType\\\", \\\"\\\")\\n | where ObjectType == + 'Key'\\n | where ObjectName startswith keyTransportKey and SubjectLogonId + != '0x3e7' //Local System\\n | extend ProcessId = column_ifexists(\\\"ProcessId\\\", + \\\"\\\"), Process = split(ProcessName, '\\\\\\\\', -1)[-1],Account = strcat(SubjectDomainName, + \\\"\\\\\\\\\\\", SubjectUserName)\\n) on $left.Computer == $right.Computer + and $left.SubjectLogonId == $right.SubjectLogonId and $left.ProcessId == $right.ProcessId\\n| + project TimeGenerated, Computer, Account, SubjectDomainName, SubjectUserName, + SubjectLogonId, ObjectName, tostring(Process), ProcessName, ProcessId, EventID\\n),\\n// + Accessing Object\\n(\\nSecurityEvent\\n| where EventID == '4663'\\n| where + ObjectType == 'Key'\\n| where (ObjectName startswith aadJoinRoot or ObjectName + contains aadRegisteredRoot) and SubjectLogonId != '0x3e7' //Local System\\n| + extend Account = SubjectAccount\\n| join kind=innerunique (\\n SecurityEvent\\n + \ | where EventID == '4663'\\n | where ObjectType == 'Key'\\n | where + ObjectName contains keyTransportKey and SubjectLogonId != '0x3e7' //Local + System\\n | extend Account = SubjectAccount\\n) on $left.Computer == $right.Computer + and $left.SubjectLogonId == $right.SubjectLogonId and $left.ProcessId == $right.ProcessId\\n| + project TimeGenerated, Computer, Account, SubjectDomainName, SubjectUserName, + SubjectLogonId, ObjectName, Process, ProcessName, ProcessId, EventID\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Account\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1012\"],\"displayName\":\"AAD + Local Device Join Information and Transport Key Registry Keys Access\",\"description\":\"This + detection uses Windows security events to detect suspicious access attempts + by the same process\\n to registry keys that provide information about an + AAD joined or registered devices and Transport keys (tkpub / tkpriv).\\n This + information can be used to export the Device Certificate (dkpub / dkpriv) + and Transport key (tkpub/tkpriv).\\n These set of keys can be used to impersonate + existing Azure AD joined devices.\\n This detection requires an access control + entry (ACE) on the system access control list (SACL) of the following securable + objects:\\n HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\CloudDomainJoin + (AAD joined devices)\\n HKCU:\\\\SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion\\\\WorkplaceJoin + (AAD registered devices)\\n HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Cryptography\\\\Ngc\\\\KeyTransportKey + (Transport Key)\\n Make sure you set the SACL to propagate to its sub-keys. + You can find more information in here https://github.com/OTRF/Set-AuditRule/blob/master/rules/registry/aad_connect_health_service_agent.yml\\n + Reference: https://o365blog.com/post/deviceidentity/\",\"lastUpdatedDateUTC\":\"2022-02-17T00:00:00Z\",\"createdDateUTC\":\"2022-02-17T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/58fc0170-0877-4ea8-a9ff-d805e361cfae\",\"name\":\"58fc0170-0877-4ea8-a9ff-d805e361cfae\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + schedule_lookback = 14d; \\nlet join_lookback = 1d; \\n// If you want to whitelist + specific timezones include them in a list here\\nlet tz_whitelist = dynamic([]);\\nlet + meetings = ( \\nZoomLogs \\n| where TimeGenerated >= ago(schedule_lookback) + \\n| where Event =~ \\\"meeting.created\\\" \\n| extend MeetingId = tostring(parse_json(MeetingEvents).MeetingId) + \ \\n| extend SchedTimezone = tostring(parse_json(MeetingEvents).Timezone)); + \\nZoomLogs \\n| where TimeGenerated >= ago(join_lookback) \\n| where Event + =~ \\\"meeting.participant_joined\\\" \\n| extend JoinedTimeZone = tostring(parse_json(MeetingEvents).Timezone) + \\n| extend MeetingName = tostring(parse_json(MeetingEvents).MeetingName) + \\n| extend MeetingId = tostring(parse_json(MeetingEvents).MeetingId) \\n| + where JoinedTimeZone !in (tz_whitelist)\\n| join (meetings) on MeetingId \\n| + where SchedTimezone != JoinedTimeZone \\n| project TimeGenerated, MeetingName, + JoiningUser=payload_object_participant_user_name_s, JoinedTimeZone, SchedTimezone, + MeetingScheduler=User1 \\n| extend timestamp = TimeGenerated, AccountCustomEntity + = JoiningUser\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"User + joining Zoom meeting from suspicious timezone\",\"description\":\"The alert + shows users that join a Zoom meeting from a time zone other than the one the + meeting was created in.\\nYou can also whitelist known good time zones in + the tz_whitelist value using the tz database name format https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-04-24T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b12b3dab-d973-45af-b07e-e29bb34d8db9\",\"name\":\"b12b3dab-d973-45af-b07e-e29bb34d8db9\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT15M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 15m;\\nCisco_Umbrella\\n| where EventType == \\\"proxylogs\\\"\\n| + where TimeGenerated > ago(timeframe)\\n| where HttpUserAgentOriginal contains + \\\"WindowsPowerShell\\\"\\n| extend Message = \\\"Windows PowerShell User + Agent\\\"\\n| project Message, SrcIpAddr, DstIpAddr, UrlOriginal, TimeGenerated,HttpUserAgentOriginal\\n| + extend IpCustomEntity = SrcIpAddr, UrlCustomEntity = UrlOriginal\",\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\",\"DefenseEvasion\"],\"displayName\":\"Cisco + Umbrella - Windows PowerShell User-Agent Detected\",\"description\":\"Rule + helps to detect Powershell user-agent activity by an unusual process other + than a web browser.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d722831e-88f5-4e25-b106-4ef6e29f8c13\",\"name\":\"d722831e-88f5-4e25-b106-4ef6e29f8c13\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P8D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"// + a threshold can be enabled, see commented line below for PrevSeenCount\\nlet + threshold = 2;\\nlet uploadOp = 'FileUploaded';\\n// Extensions that are interesting. + Add/Remove to this list as you see fit\\nlet execExt = dynamic(['exe', 'inf', + 'gzip', 'cmd', 'bat']);\\nlet starttime = 8d;\\nlet endtime = 1d;\\nOfficeActivity + | where TimeGenerated >= ago(endtime)\\n// Limited to File Uploads due to + potential noise, comment out the Operation statement below to include any + operation type\\n// Additional, but potentially noisy operation types that + include Uploads and Downloads can be included by adding the following - Operation + contains \\\"upload\\\" or Operation contains \\\"download\\\"\\n| where Operation + =~ uploadOp\\n| where SourceFileExtension has_any (execExt)\\n| project TimeGenerated, + OfficeId, OfficeWorkload, RecordType, Operation, UserType, UserKey, UserId, + ClientIP, UserAgent, Site_Url, SourceRelativeUrl, SourceFileName\\n| join + kind= leftanti (\\nOfficeActivity | where TimeGenerated between (ago(starttime) + .. ago(endtime))\\n| where Operation =~ uploadOp\\n| where SourceFileExtension + has_any (execExt)\\n| summarize SourceRelativeUrl = make_set(SourceRelativeUrl), + UserId = make_set(UserId) , PrevSeenCount = count() by SourceFileName\\n// + To exclude previous matches when only above a specific count, change threshold + above and uncomment the line below\\n//| where PrevSeenCount > threshold\\n| + mvexpand SourceRelativeUrl, UserId\\n| extend SourceRelativeUrl = tostring(SourceRelativeUrl), + UserId = tostring(UserId)\\n) on SourceFileName, SourceRelativeUrl, UserId + \\n| extend SiteUrlUserFolder = tolower(split(Site_Url, '/')[-2])\\n| extend + UserIdUserFolderFormat = tolower(replace('@|\\\\\\\\.', '_',UserId))\\n// + identify when UserId is not a match to the specific site url personal folder + reference\\n| extend UserIdDiffThanUserFolder = iff(Site_Url has '/personal/' + and SiteUrlUserFolder != UserIdUserFolderFormat, true , false ) \\n| summarize + TimeGenerated = make_list(TimeGenerated), StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated), \\nUserAgents = make_list(UserAgent), OfficeIds + = make_list(OfficeId), SourceRelativeUrls = make_list(SourceRelativeUrl), + FileNames = make_list(SourceFileName)\\nby OfficeWorkload, RecordType, Operation, + UserType, UserKey, UserId, ClientIP, Site_Url, SiteUrlUserFolder, UserIdUserFolderFormat, + UserIdDiffThanUserFolder\\n| extend timestamp = StartTime, AccountCustomEntity + = UserId, IPCustomEntity = ClientIP, URLCustomEntity = Site_Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1105\"],\"displayName\":\"New + executable via Office FileUploaded Operation\",\"description\":\"Identifies + when executable file types are uploaded to Office services such as SharePoint + and OneDrive.\\nList currently includes 'exe', 'inf', 'gzip', 'cmd', 'bat' + file extensions.\\nAdditionally, identifies when a given user is uploading + these files to another users workspace.\\nThis may be indication of a staging + location for malware or other malicious activity.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/69a45b05-71f5-45ca-8944-2e038747fb39\",\"name\":\"69a45b05-71f5-45ca-8944-2e038747fb39\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P8D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + endtime = 1d;\\nlet starttime = 8d;\\n// The threshold below excludes matching + on RDP connection computer counts of 5 or more by a given account and IP in + a given day. Change the threshold as needed.\\nlet threshold = 5;\\n(union + isfuzzy=true\\n(SecurityEvent\\n| where TimeGenerated >= ago(endtime)\\n| + where EventID == 4624 and LogonType == 10\\n// Labeling the first RDP connection + time, computer and ip\\n| extend FirstHop = TimeGenerated, FirstComputer = + toupper(Computer), FirstIPAddress = IpAddress, Account = tolower(Account)\\n),\\n( + WindowsEvent\\n| where TimeGenerated >= ago(endtime)\\n| where EventID == + 4624 and EventData has (\\\"10\\\")\\n| extend LogonType = tostring(EventData.LogonType)\\n| + where LogonType == 10 // Labeling the first RDP connection time, computer + and ip\\n| extend Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + extend FirstHop = TimeGenerated, FirstComputer = toupper(Computer), FirstIPAddress + = IpAddress, Account = tolower(Account)\\n))\\n| join kind=inner (\\n(union + isfuzzy=true\\n(SecurityEvent\\n| where TimeGenerated >= ago(endtime)\\n| + where EventID == 4624 and LogonType == 10\\n// Labeling the second RDP connection + time, computer and ip\\n| extend SecondHop = TimeGenerated, SecondComputer + = toupper(Computer), SecondIPAddress = IpAddress, Account = tolower(Account)\\n),\\n(WindowsEvent\\n| + where TimeGenerated >= ago(endtime)\\n| where EventID == 4624 and EventData + has (\\\"10\\\")\\n| extend LogonType = toint(EventData.LogonType)\\n| where + \ LogonType == 10 // Labeling the second RDP connection time, computer and + ip\\n| extend Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + extend SecondHop = TimeGenerated, SecondComputer = toupper(Computer), SecondIPAddress + = IpAddress, Account = tolower(Account)\\n))\\n) on Account\\n// Make sure + that the first connection is after the second connection --> SecondHop > FirstHop\\n// + Then identify only RDP to another computer from within the first RDP connection + by only choosing matches where the Computer names do not match --> FirstComputer + != SecondComputer\\n// Then make sure the IPAddresses do not match by excluding + connections from the same computers with first hop RDP connections to multiple + computers --> FirstIPAddress != SecondIPAddress\\n| where FirstComputer != + SecondComputer and FirstIPAddress != SecondIPAddress and SecondHop > FirstHop\\n// + where the second hop occurs within 30 minutes of the first hop\\n| where SecondHop + <= FirstHop+30m\\n| distinct Account, FirstHop, FirstComputer, FirstIPAddress, + SecondHop, SecondComputer, SecondIPAddress, AccountType, Activity, LogonTypeName, + ProcessName\\n// use left anti to exclude anything from the previous 7 days + where the Account and IP has connected 5 or more computers.\\n| join kind=leftanti + (\\n(union isfuzzy=true\\n(SecurityEvent\\n| where TimeGenerated >= ago(starttime) + and TimeGenerated < ago(endtime)\\n| where EventID == 4624 and LogonType == + 10\\n| summarize makeset(Computer), ComputerCount = dcount(Computer) by bin(TimeGenerated, + 1d), Account = tolower(Account), IpAddress\\n// Connection count to computer + by same account and IP to exclude counts of 5 or more on a given day\\n| where + ComputerCount >= threshold\\n| mvexpand set_Computer\\n| extend Computer = + toupper(set_Computer)\\n),\\n(WindowsEvent\\n| where TimeGenerated >= ago(starttime) + and TimeGenerated < ago(endtime)\\n| where EventID == 4624 and EventData has + (\\\"10\\\")\\n| extend LogonType = tostring(EventData.LogonType)\\n| where + \ LogonType == 10 \\n| extend Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + summarize makeset(Computer), ComputerCount = dcount(Computer) by bin(TimeGenerated, + 1d), Account = tolower(Account), IpAddress\\n// Connection count to computer + by same account and IP to exclude counts of 5 or more on a given day\\n| where + ComputerCount >= threshold\\n| mvexpand set_Computer\\n| extend Computer = + toupper(set_Computer)\\n))\\n) on Account, $left.SecondComputer == $right.Computer, + $left.SecondIPAddress == $right.IpAddress\\n| summarize FirstHopFirstSeen + = min(FirstHop), FirstHopLastSeen = max(FirstHop) by Account, FirstComputer, + FirstIPAddress, SecondHop, SecondComputer, \\nSecondIPAddress, AccountType, + Activity, LogonTypeName, ProcessName\\n| extend timestamp = FirstHopFirstSeen, + AccountCustomEntity = Account, HostCustomEntity = FirstComputer, IPCustomEntity + = FirstIPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"LateralMovement\"],\"techniques\":[\"T1021\"],\"displayName\":\"RDP + Nesting\",\"description\":\"Identifies when an RDP connection is made to a + first system and then an RDP connection is made from the first system\\nto + another system with the same account within the 60 minutes. Additionally, + if historically daily\\nRDP connections are indicated by the logged EventID + 4624 with LogonType = 10\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-10-21T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/884c4957-70ea-4f57-80b9-1bca3890315b\",\"name\":\"884c4957-70ea-4f57-80b9-1bca3890315b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeBin = 10m;\\nlet failedThreshold = 100;\\nW3CIISLog\\n| where scStatus + in (\\\"401\\\",\\\"403\\\")\\n| where csUserName != \\\"-\\\"\\n// Handling + Exchange specific items in IIS logs to remove the unique log identifier in + the URI\\n| extend csUriQuery = iff(csUriQuery startswith \\\"MailboxId=\\\", + tostring(split(csUriQuery, \\\"&\\\")[0]) , csUriQuery )\\n| extend csUriQuery + = iff(csUriQuery startswith \\\"X-ARR-CACHE-HIT=\\\", strcat(tostring(split(csUriQuery, + \\\"&\\\")[0]),tostring(split(csUriQuery, \\\"&\\\")[1])) , csUriQuery )\\n| + extend scStatusFull = strcat(scStatus, \\\".\\\",scSubStatus) \\n// Map common + IIS codes\\n| extend scStatusFull_Friendly = case(\\nscStatusFull == \\\"401.0\\\", + \\\"Access denied.\\\",\\nscStatusFull == \\\"401.1\\\", \\\"Logon failed.\\\",\\nscStatusFull + == \\\"401.2\\\", \\\"Logon failed due to server configuration.\\\",\\nscStatusFull + == \\\"401.3\\\", \\\"Unauthorized due to ACL on resource.\\\",\\nscStatusFull + == \\\"401.4\\\", \\\"Authorization failed by filter.\\\",\\nscStatusFull + == \\\"401.5\\\", \\\"Authorization failed by ISAPI/CGI application.\\\",\\nscStatusFull + == \\\"403.0\\\", \\\"Forbidden.\\\",\\nscStatusFull == \\\"403.4\\\", \\\"SSL + required.\\\",\\n\\\"See - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\\\")\\n// + Mapping to Hex so can be mapped using website in comments above\\n| extend + scWin32Status_Hex = tohex(tolong(scWin32Status)) \\n// Map common win32 codes\\n| + extend scWin32Status_Friendly = case(\\nscWin32Status_Hex =~ \\\"775\\\", + \\\"The referenced account is currently locked out and cannot be logged on + to.\\\",\\nscWin32Status_Hex =~ \\\"52e\\\", \\\"Logon failure: Unknown user + name or bad password.\\\",\\nscWin32Status_Hex =~ \\\"532\\\", \\\"Logon failure: + The specified account password has expired.\\\",\\nscWin32Status_Hex =~ \\\"533\\\", + \\\"Logon failure: Account currently disabled.\\\", \\nscWin32Status_Hex =~ + \\\"2ee2\\\", \\\"The request has timed out.\\\", \\nscWin32Status_Hex =~ + \\\"0\\\", \\\"The operation completed successfully.\\\", \\nscWin32Status_Hex + =~ \\\"1\\\", \\\"Incorrect function.\\\", \\nscWin32Status_Hex =~ \\\"2\\\", + \\\"The system cannot find the file specified.\\\", \\nscWin32Status_Hex =~ + \\\"3\\\", \\\"The system cannot find the path specified.\\\", \\nscWin32Status_Hex + =~ \\\"4\\\", \\\"The system cannot open the file.\\\", \\nscWin32Status_Hex + =~ \\\"5\\\", \\\"Access is denied.\\\", \\nscWin32Status_Hex =~ \\\"8009030e\\\", + \\\"SEC_E_NO_CREDENTIALS\\\", \\nscWin32Status_Hex =~ \\\"8009030C\\\", \\\"SEC_E_LOGON_DENIED\\\", + \\n\\\"See - https://msdn.microsoft.com/library/cc231199.aspx\\\")\\n// decode + URI when available\\n| extend decodedUriQuery = url_decode(csUriQuery)\\n// + Count of failed logons by a user\\n| summarize makeset(decodedUriQuery), makeset(cIP), + makeset(sSiteName), makeset(sPort), makeset(csUserAgent), makeset(csMethod), + makeset(csUriQuery), makeset(scStatusFull), makeset(scStatusFull_Friendly), + makeset(scWin32Status_Hex), makeset(scWin32Status_Friendly), FailedConnectionsCount + = count() by bin(TimeGenerated, timeBin), csUserName, Computer, sIP\\n| where + FailedConnectionsCount >= failedThreshold\\n| project TimeGenerated, csUserName, + set_decodedUriQuery, Computer, set_sSiteName, sIP, set_cIP, set_sPort, set_csUserAgent, + set_csMethod, set_scStatusFull, set_scStatusFull_Friendly, set_scWin32Status_Hex, + set_scWin32Status_Friendly, FailedConnectionsCount\\n| order by FailedConnectionsCount\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = csUserName, HostCustomEntity + = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"High + count of failed logons by a user\",\"description\":\"Identifies when 100 or + more failed attempts by a given user in 10 minutes occur on the IIS Server.\\nThis + could be indicative of attempted brute force based on known account information.\\nThis + could also simply indicate a misconfigured service or device. \\nReferences:\\nIIS + status code mapping - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\\nWin32 + Status code mapping - https://msdn.microsoft.com/library/cc231199.aspx\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-03-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7efc75ce-e2a4-400f-a8b1-283d3b0f2c60\",\"name\":\"7efc75ce-e2a4-400f-a8b1-283d3b0f2c60\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + WellKnownLocalSID = \\\"S-1-5-32-5[0-9][0-9]$\\\";\\nlet WellKnownGroupSID + = \\\"S-1-5-21-[0-9]*-[0-9]*-[0-9]*-5[0-9][0-9]$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1102$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1103$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-498$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1000$\\\";\\nlet + AC_Add = \\n(union isfuzzy=true \\n(SecurityEvent\\n// Event ID related to + member addition.\\n| where EventID in (4728, 4732,4756) \\n| where TargetSid + matches regex WellKnownLocalSID or TargetSid matches regex WellKnownGroupSID + \ \\n| parse EventData with * '\\\"MemberName\\\">' * '=' AccountAdded \\\",OU\\\" + *\\n| where isnotempty(AccountAdded)\\n| extend GroupAddedTo = TargetUserName, + AddingAccount = Account \\n| extend AccountAdded_GroupAddedTo_AddingAccount + = strcat(AccountAdded, \\\"||\\\", GroupAddedTo, \\\"||\\\", AddingAccount + )\\n| project AccountAdded_GroupAddedTo_AddingAccount, AccountAddedTime = + TimeGenerated\\n),\\n(WindowsEvent\\n// Event ID related to member addition.\\n| + where EventID in (4728, 4732,4756) \\n| extend TargetSid = tostring(EventData.TargetSid)\\n| + where TargetSid matches regex WellKnownLocalSID or TargetSid matches regex + WellKnownGroupSID \\n| parse EventData.MemberName with * '\\\"MemberName\\\">' + * '=' AccountAdded \\\",OU\\\" *\\n| where isnotempty(AccountAdded)\\n| extend + TargetUserName = tostring(EventData.TargetUserName)\\n| extend AddingAccount + = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", tostring(EventData.SubjectUserName))\\n| + extend GroupAddedTo = TargetUserName\\n| extend AccountAdded_GroupAddedTo_AddingAccount + = strcat(AccountAdded, \\\"||\\\", GroupAddedTo, \\\"||\\\", AddingAccount + )\\n| project AccountAdded_GroupAddedTo_AddingAccount, AccountAddedTime = + TimeGenerated\\n)\\n);\\nlet AC_Remove = \\n( union isfuzzy=true \\n(SecurityEvent\\n// + Event IDs related to member removal.\\n| where EventID in (4729,4733,4757)\\n| + where TargetSid matches regex WellKnownLocalSID or TargetSid matches regex + WellKnownGroupSID \\n| parse EventData with * '\\\"MemberName\\\">' * '=' + AccountRemoved \\\",OU\\\" * \\n| where isnotempty(AccountRemoved)\\n| extend + GroupRemovedFrom = TargetUserName, RemovingAccount = Account\\n| extend AccountRemoved_GroupRemovedFrom_RemovingAccount + = strcat(AccountRemoved, \\\"||\\\", GroupRemovedFrom, \\\"||\\\", RemovingAccount)\\n| + project AccountRemoved_GroupRemovedFrom_RemovingAccount, AccountRemovedTime + = TimeGenerated, Computer, RemovedAccountId = tolower(AccountRemoved), \\nRemovedByUser + = SubjectUserName, RemovedByUserLogonId = SubjectLogonId, GroupRemovedFrom + = TargetUserName, TargetDomainName\\n),\\n(WindowsEvent\\n// Event IDs related + to member removal.\\n| where EventID in (4729,4733,4757)\\n| extend TargetSid + = tostring(EventData.TargetSid)\\n| where TargetSid matches regex WellKnownLocalSID + or TargetSid matches regex WellKnownGroupSID \\n| parse EventData.MemberName + with * '\\\"MemberName\\\">' * '=' AccountRemoved \\\",OU\\\" * \\n| where + isnotempty(AccountRemoved)\\n| extend TargetUserName = tostring(EventData.TargetUserName)\\n| + extend RemovingAccount = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend GroupRemovedFrom = TargetUserName\\n| + extend AccountRemoved_GroupRemovedFrom_RemovingAccount = strcat(AccountRemoved, + \\\"||\\\", GroupRemovedFrom, \\\"||\\\", RemovingAccount)\\n| extend SubjectUserName + = tostring(EventData.SubjectUserName)\\n| extend SubjectLogonId = tostring(EventData.SubjectLogonId)\\n| + extend TargetDomainName = tostring(EventData.TargetDomainName)\\n| project + AccountRemoved_GroupRemovedFrom_RemovingAccount, AccountRemovedTime = TimeGenerated, + Computer, RemovedAccountId = tolower(AccountRemoved), \\nRemovedByUser = SubjectUserName, + RemovedByUserLogonId = SubjectLogonId, GroupRemovedFrom = TargetUserName, + TargetDomainName\\n)); \\nAC_Add \\n| join kind= inner AC_Remove on $left.AccountAdded_GroupAddedTo_AddingAccount + == $right.AccountRemoved_GroupRemovedFrom_RemovingAccount \\n| extend DurationinSecondAfter_Removed + = datetime_diff ('second', AccountRemovedTime, AccountAddedTime)\\n| where + DurationinSecondAfter_Removed > 0\\n| project-away AccountRemoved_GroupRemovedFrom_RemovingAccount\\n| + extend timestamp = AccountAddedTime, AccountCustomEntity = RemovedAccountId, + HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"Account + added and removed from privileged groups\",\"description\":\"Identifies accounts + that are added to privileged group and then quickly removed, which could be + a sign of compromise.' \",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-04-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9c712bb2-08dc-44d3-b66b-af154dfc1c4f\",\"name\":\"9c712bb2-08dc-44d3-b66b-af154dfc1c4f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.2.8\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.07\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of logins to computer\",\"description\":\"This algorithm + detects an unusually high volume of successful logins per computer. The model + is trained on the previous 21 days of security event ID 4624 on a computer. + It indicates anomalous high volume of successful logins in the last day\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2020-11-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a3df4a32-4805-4c6d-8699-f3c888af2f67\",\"name\":\"a3df4a32-4805-4c6d-8699-f3c888af2f67\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + Alert1 = \\nSecurityAlert\\n| where AlertName == \\\"Unfamiliar sign-in properties\\\"\\n| + extend UserPrincipalName = tostring(parse_json(ExtendedProperties).[\\\"User + Account\\\"])\\n| extend Alert1Time = TimeGenerated\\n| extend Alert1 = AlertName\\n| + extend Alert1Severity = AlertSeverity\\n;\\nlet Alert2 = \\nSecurityAlert\\n| + where AlertName == \\\"Atypical travel\\\"\\n| extend UserPrincipalName = + tostring(parse_json(ExtendedProperties).[\\\"User Account\\\"])\\n| extend + Alert2Time = TimeGenerated\\n| extend Alert2 = AlertName\\n| extend Alert2Severity + = AlertSeverity\\n| extend CurrentLocation = strcat(tostring(parse_json(tostring(parse_json(Entities)[2].Location)).CountryCode), + \\\"|\\\", tostring(parse_json(tostring(parse_json(Entities)[2].Location)).State), + \\\"|\\\", tostring(parse_json(tostring(parse_json(Entities)[2].Location)).City))\\n| + extend PreviousLocation = strcat(tostring(parse_json(tostring(parse_json(Entities)[3].Location)).CountryCode), + \\\"|\\\", tostring(parse_json(tostring(parse_json(Entities)[3].Location)).State), + \\\"|\\\", tostring(parse_json(tostring(parse_json(Entities)[3].Location)).City))\\n| + extend CurrentIPAddress = tostring(parse_json(Entities)[2].Address)\\n| extend + PreviousIPAddress = tostring(parse_json(Entities)[3].Address)\\n;\\nAlert1\\n| + join kind=inner Alert2 on UserPrincipalName\\n| where abs(datetime_diff('minute', + Alert1Time, Alert2Time)) <=10\\n| extend TimeDelta = Alert1Time - Alert2Time\\n| + project UserPrincipalName, Alert1, Alert1Time, Alert1Severity, Alert2, Alert2Time, + Alert2Severity, TimeDelta, CurrentLocation, PreviousLocation, CurrentIPAddress, + PreviousIPAddress\\n| extend AccountCustomEntity = UserPrincipalName\\n| extend + IPCustomEntity = CurrentIPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Correlate + Unfamiliar sign-in properties and atypical travel alerts\",\"description\":\"The + combination of an Unfamiliar sign-in properties alert and an Atypical travel + alert about the same user within a +10m or -10m window is considered a high + severity incident.\",\"lastUpdatedDateUTC\":\"2021-12-07T00:00:00Z\",\"createdDateUTC\":\"2020-09-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectoryIdentityProtection\",\"dataTypes\":[\"SecurityAlert + (IPC)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a7564d76-ec6b-4519-a66b-fcc80c42332b\",\"name\":\"a7564d76-ec6b-4519-a66b-fcc80c42332b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + WellKnownLocalSID = \\\"S-1-5-32-5[0-9][0-9]$\\\";\\nlet WellKnownGroupSID + = \\\"S-1-5-21-[0-9]*-[0-9]*-[0-9]*-5[0-9][0-9]$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1102$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1103$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-498$|S-1-5-21-[0-9]*-[0-9]*-[0-9]*-1000$\\\";\\nlet + GroupAddition = (union isfuzzy=true \\n(SecurityEvent \\n// 4728 - A member + was added to a security-enabled global group\\n// 4732 - A member was added + to a security-enabled local group\\n// 4756 - A member was added to a security-enabled + universal group \\n| where EventID in (\\\"4728\\\", \\\"4732\\\", \\\"4756\\\") + \\n| where AccountType =~ \\\"User\\\" and MemberName == \\\"-\\\"\\n// Exclude + Remote Desktop Users group: S-1-5-32-555\\n| where TargetSid !in (\\\"S-1-5-32-555\\\")\\n| + where TargetSid matches regex WellKnownLocalSID or TargetSid matches regex + WellKnownGroupSID\\n| project GroupAddTime = TimeGenerated, GroupAddEventID + = EventID, GroupAddActivity = Activity, GroupAddComputer = Computer, GroupAddTargetAccount + = TargetAccount, \\nGroupAddTargetSid = TargetSid, GroupAddSubjectAccount + = SubjectAccount, GroupAddSubjectUserSid = SubjectUserSid, GroupSid = MemberSid\\n),\\n(\\nWindowsEvent + \\n// 4728 - A member was added to a security-enabled global group\\n// 4732 + - A member was added to a security-enabled local group\\n// 4756 - A member + was added to a security-enabled universal group \\n| where EventID in (\\\"4728\\\", + \\\"4732\\\", \\\"4756\\\") and not(EventData has \\\"S-1-5-32-555\\\")\\n| + extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| extend Account + = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", tostring(EventData.SubjectUserName))\\n| + extend AccountType=case(Account endswith \\\"$\\\" or SubjectUserSid in (\\\"S-1-5-18\\\", + \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", isempty(SubjectUserSid), + \\\"\\\", \\\"User\\\")\\n| extend MemberName = tostring(EventData.MemberName)\\n| + where AccountType =~ \\\"User\\\" and MemberName == \\\"-\\\"\\n// Exclude + Remote Desktop Users group: S-1-5-32-555\\n| extend TargetSid = tostring(EventData.TargetSid)\\n| + where TargetSid !in (\\\"S-1-5-32-555\\\")\\n| where TargetSid matches regex + WellKnownLocalSID or TargetSid matches regex WellKnownGroupSID\\n| extend + TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", EventData.TargetUserName)\\n| + extend MemberSid = tostring(EventData.MemberSid)\\n| extend Activity= \\\"GroupAddActivity\\\"\\n| + project GroupAddTime = TimeGenerated, GroupAddEventID = EventID, GroupAddActivity + = Activity, GroupAddComputer = Computer, GroupAddTargetAccount = TargetAccount, + \\nGroupAddTargetSid = TargetSid, GroupAddSubjectAccount = Account, GroupAddSubjectUserSid + = SubjectUserSid, GroupSid = MemberSid\\n));\\nlet GroupCreated = (union isfuzzy=true + \ \\n(SecurityEvent\\n// 4727 - A security-enabled global group was created\\n// + 4731 - A security-enabled local group was created\\n// 4754 - A security-enabled + universal group was created\\n| where EventID in (\\\"4727\\\", \\\"4731\\\", + \\\"4754\\\")\\n| where AccountType =~ \\\"User\\\"\\n| project GroupCreateTime + = TimeGenerated, GroupCreateEventID = EventID, GroupCreateActivity = Activity, + GroupCreateComputer = Computer, GroupCreateTargetAccount = TargetAccount, + \\nGroupCreateSubjectAccount = SubjectAccount, GroupCreateSubjectUserSid = + SubjectUserSid, GroupSid = TargetSid\\n),\\n(WindowsEvent\\n// 4727 - A security-enabled + global group was created\\n// 4731 - A security-enabled local group was created\\n// + 4754 - A security-enabled universal group was created\\n| where EventID in + (\\\"4727\\\", \\\"4731\\\", \\\"4754\\\")\\n| extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend AccountType=case(Account endswith + \\\"$\\\", \\\"Machine\\\", iff(SubjectUserSid in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", + \\\"S-1-5-20\\\"), \\\"Machine\\\", iff(isempty(SubjectUserSid), \\\"\\\", + \\\"User\\\")))\\n| where AccountType =~ \\\"User\\\"\\n| extend TargetAccount + = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", EventData.TargetUserName)\\n| + extend SubjectAccount = strcat(EventData.SubjectDomainName,\\\"\\\\\\\\\\\", + EventData.SubjectUserName) \\n| extend TargetSid = tostring(EventData.TargetSid) + \\n| extend Activity= \\\"GroupAddActivity\\\"\\n| project GroupCreateTime + = TimeGenerated, GroupCreateEventID = EventID, GroupCreateActivity = Activity, + GroupCreateComputer = Computer, GroupCreateTargetAccount = TargetAccount, + \\nGroupCreateSubjectAccount = SubjectAccount, GroupCreateSubjectUserSid = + SubjectUserSid, GroupSid = TargetSid\\n));\\nGroupCreated\\n| join (\\nGroupAddition\\n) + on GroupSid \\n| extend timestamp = GroupCreateTime, AccountCustomEntity = + GroupCreateSubjectAccount, HostCustomEntity = GroupCreateComputer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"},{\"identifier\":\"Sid\",\"columnName\":\"GroupCreateSubjectUserSid\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"Group + created then added to built in domain local or global group\",\"description\":\"Identifies + when a recently created Group was added to a privileged built in domain local + group or global group such as the \\nEnterprise Admins, Cert Publishers or + DnsAdmins. Be sure to verify this is an expected addition.\\nReferences: + For AD SID mappings - https://docs.microsoft.com/windows/security/identity-protection/access-control/active-directory-security-groups.\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3b443f22-9be9-4c35-ac70-a94757748439\",\"name\":\"3b443f22-9be9-4c35-ac70-a94757748439\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + files1 = dynamic([\\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\lsa.exe\\\", \\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\pa.exe\\\", + \\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\pc.exe\\\", \\\"C:\\\\\\\\Windows\\\\\\\\TAPI\\\\\\\\Rar.exe\\\"]);\\nlet + files2 = dynamic([\\\"svchost.exe\\\",\\\"wdmsvc.exe\\\"]);\\nlet FileHash1 + = dynamic([\\\"43109fbe8b752f7a9076eaafa417d9ae5c6e827cd5374b866672263fdebd5ec3\\\", + \\\"ab50d8d707b97712178a92bbac74ccc2a5699eb41c17aa77f713ff3e568dcedb\\\", + \\\"010e32be0f86545e116a8bc3381a8428933eb8789f32c261c81fd5e7857d4a77\\\", + \ \\\"56cd102b9fc7f3523dad01d632525ff673259dbc9a091be0feff333c931574f7\\\"]);\\nlet + FileHash2 = dynamic([\\\"2a1044e9e6e87a032f80c6d9ea6ae61bbbb053c0a21b186ecb3b812b49eb03b7\\\", + \\\"9ab7e99ed84f94a7b6409b87e56dc6e1143b05034a5e4455e8c555dbbcd0d2dd\\\", + \\\"18a072ccfab239e140d8f682e2874e8ff19d94311fc8bb9564043d3e0deda54b\\\"]);\\nDeviceProcessEvents\\n| + where ( FolderPath has_any (files1) and SHA256 has_any (FileHash1)) or (FolderPath + has_any (files2) and SHA256 has_any (FileHash2))\\n| extend DvcId = DeviceId\\n| + join kind=leftouter (SecurityAlert\\n| where ProviderName =~ \\\"MDATP\\\"\\n| + extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\\n| + mv-expand todynamic(Entities)\\n| extend DvcId = tostring(parse_json(Entities).MdatpDeviceId)\\n| + where isnotempty(DvcId)\\n// Higher risk score are for Defender alerts related + to threat actor\\n| extend AlertRiskScore = iif(ThreatName has_any (\\\"Backdoor:MSIL/ShellClient.A\\\", + \\\"Backdoor:MSIL/ShellClient.A!dll\\\", \\\"Trojan:MSIL/Mimikatz.BA!MTB\\\"), + 1.0, 0.5)\\n| project DvcId, AlertRiskScore) on DvcId\\n| extend AlertRiskScore + = iif(isempty(AlertRiskScore), 0.0, AlertRiskScore)\\n| extend timestamp = + TimeGenerated, HostCustomEntity = DeviceName, AccountCustomEntity = AccountName\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"File\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"FileName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\",\"Execution\"],\"techniques\":[\"T1569\"],\"displayName\":\"Dev-0228 + File Path Hashes November 2021\",\"description\":\"This hunting query looks + for file paths/hashes related to observed activity by Dev-0228. The actor + is known to use custom version of popular tool like PsExec, Procdump etc. + to carry its activity.\\n The risk score associated with each result is based + on a number of factors, hosts with higher risk events should be investigated + first.\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2021-11-18T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftDefenderAdvancedThreatProtection\",\"dataTypes\":[\"SecurityAlert + (MDATP)\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2f561e20-d97b-4b13-b02d-18b34af6e87c\",\"name\":\"2f561e20-d97b-4b13-b02d-18b34af6e87c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 1d;\\nlet cmdList = dynamic([\\\"Set-CASMailbox\\\",\\\"ActiveSyncAllowedDeviceIDs\\\",\\\"add\\\"]);\\n(union + isfuzzy=true\\n(\\nSecurityEvent\\n| where TimeGenerated >= ago(timeframe)\\n| + where EventID == 4688\\n| where CommandLine has_all (cmdList)\\n| project + Type, TimeGenerated, Computer, Account, SubjectDomainName, SubjectUserName, + Process, ParentProcessName, CommandLine\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer\\n),\\n( WindowsEvent\\n| + where TimeGenerated >= ago(timeframe)\\n| where EventID == 4688\\n| where + EventData has_all (cmdList)\\n| extend CommandLine = tostring(EventData.CommandLine) + \\n| where CommandLine has_all (cmdList)\\n| extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| + extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| extend + NewProcessName = tostring(EventData.NewProcessName)\\n| extend Process=tostring(split(NewProcessName, + '\\\\\\\\')[-1])\\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| + project Type, TimeGenerated, Computer, Account, SubjectDomainName, SubjectUserName, + Process, ParentProcessName, CommandLine\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer\\n),\\n(\\nDeviceProcessEvents\\n| + where TimeGenerated >= ago(timeframe)\\n| where InitiatingProcessCommandLine + has_all (cmdList)\\n| project Type, TimeGenerated, DeviceName, AccountName, + InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessFileName, + InitiatingProcessParentFileName, InitiatingProcessCommandLine\\n| extend + timestamp = TimeGenerated, AccountCustomEntity = AccountName, HostCustomEntity + = DeviceName\\n),\\n(\\nEvent\\n| where TimeGenerated > ago(timeframe)\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 1\\n| + extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| mv-expand + bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| extend + Key=tostring(['@Name']), Value=['#text']\\n| evaluate pivot(Key, any(Value), + TimeGenerated, Source, EventLog, Computer, EventLevel, EventLevelName, EventID, + UserName, RenderedDescription, MG, ManagementGroupName, Type, _ResourceId)\\n| + where TimeGenerated >= ago(timeframe)\\n| where CommandLine has_all (cmdList)\\n| + extend Type = strcat(Type, \\\": \\\", Source)\\n| project Type, TimeGenerated, + Computer, User, Process, ParentImage, CommandLine\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = User, HostCustomEntity = Computer\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1068\",\"T1078\"],\"displayName\":\"Email + access via active sync\",\"description\":\"This query detects attempts to + add attacker devices as allowed IDs for active sync using the Set-CASMailbox + command.\\nThis technique was seen in relation to Solorigate attack but the + results can indicate potential malicious activity used in different attacks.\\n- + Note that this query can be changed to use the KQL \\\"has_all\\\" operator, + which hasn't yet been documented officially, but will be soon.\\n In short, + \\\"has_all\\\" will only match when the referenced field has all strings + in the list.\\n- Refer to Set-CASMailbox syntax: https://docs.microsoft.com/powershell/module/exchange/set-casmailbox?view=exchange-ps + \ \",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-02-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2c55fe7a-b06f-4029-a5b9-c54a2320d7b8\",\"name\":\"2c55fe7a-b06f-4029-a5b9-c54a2320d7b8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\nlet timeframe = 1h;\\nlet TotalEventsThreshold + = 5;\\nlet ExeList = dynamic([\\\"powershell.exe\\\",\\\"cmd.exe\\\",\\\"wmic.exe\\\",\\\"psexec.exe\\\",\\\"cacls.exe\\\",\\\"rundll.exe\\\"]);\\nlet + TimeSeriesData =\\nSecurityEvent\\n| where EventID == 4688 | extend Process + = tolower(Process)\\n| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\\n| + where Process in (ExeList)\\n| project TimeGenerated, Computer, AccountType, + Account, Process\\n| make-series Total=count() on TimeGenerated from startofday(ago(starttime)) + to startofday(ago(endtime)) step timeframe by Process;\\nlet TimeSeriesAlerts + = materialize(TimeSeriesData\\n| extend (anomalies, score, baseline) = series_decompose_anomalies(Total, + 1.5, -1, 'linefit')\\n| mv-expand Total to typeof(double), TimeGenerated to + typeof(datetime), anomalies to typeof(double), score to typeof(double), baseline + to typeof(long)\\n| where anomalies > 0\\n| project Process, TimeGenerated, + Total, baseline, anomalies, score\\n| where Total > TotalEventsThreshold);\\nlet + AnomalyHours = materialize(TimeSeriesAlerts | where TimeGenerated > ago(2d) + | project TimeGenerated);\\nTimeSeriesAlerts\\n| where TimeGenerated > ago(2d)\\n| + join (\\nSecurityEvent\\n| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\\n| + extend DateHour = bin(TimeGenerated, 1h) // create a new column and round + to hour\\n| where DateHour in ((AnomalyHours)) //filter the dataset to only + selected anomaly hours\\n| where EventID == 4688 | extend Process = tolower(Process)\\n| + summarize CommandlineCount = count() by bin(TimeGenerated, 1h), Process, CommandLine, + Computer, Account\\n) on Process, TimeGenerated\\n| project AnomalyHour = + TimeGenerated, Computer, Account, Process, CommandLine, CommandlineCount, + Total, baseline, anomalies, score\\n| extend timestamp = AnomalyHour, AccountCustomEntity + = Account, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1059\"],\"displayName\":\"Process + execution frequency anomaly\",\"description\":\"Identifies anomalous spike + in frequency of executions of sensitive processes which are often leveraged + as attack vectors.\\nThe query leverages KQL built-in anomaly detection algorithms + to find large deviations from baseline patterns.\\nSudden increases in execution + frequency of sensitive processes should be further investigated for malicious + activity.\\nTune the values from 1.5 to 3 in series_decompose_anomalies for + further outliers or based on custom threshold values for score.\",\"lastUpdatedDateUTC\":\"2022-03-07T00:00:00Z\",\"createdDateUTC\":\"2019-05-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/694c91ee-d606-4ba9-928e-405a2dd0ff0f\",\"name\":\"694c91ee-d606-4ba9-928e-405a2dd0ff0f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + queryperiod = 14d;\\nlet queryfrequency = 2h;\\nlet security_info_actions + = dynamic([\\\"User registered security info\\\", \\\"User changed default + security info\\\", \\\"User deleted security info\\\", \\\"Admin updated security + info\\\", \\\"User reviewed security info\\\", \\\"Admin deleted security + info\\\", \\\"Admin registered security info\\\"]);\\nlet VIPUsers = (\\n + \ IdentityInfo\\n | where TimeGenerated > ago(queryperiod)\\n | mv-expand + AssignedRoles\\n | where AssignedRoles matches regex 'Admin'\\n | summarize + by tolower(AccountUPN));\\nAuditLogs\\n| where TimeGenerated > ago(queryfrequency)\\n| + where Category =~ \\\"UserManagement\\\"\\n| where ActivityDisplayName in + (security_info_actions)\\n| extend Initiator = tostring(InitiatedBy.user.userPrincipalName)\\n| + extend IP = tostring(InitiatedBy.user.ipAddress)\\n| extend Target = tolower(tostring(TargetResources[0].userPrincipalName))\\n| + where Target in (VIPUsers)\\n| summarize Start=min(TimeGenerated), End=max(TimeGenerated), + Actions = make_set(ResultReason, MaxSize=8), Targets=make_set(Target, MaxSize=256) + by Initiator, IP, Result\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Target\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.5\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Authentication + Methods Changed for Privileged Account\",\"description\":\"Identifies authentication + methods being changed for a privileged account. This could be an indication + of an attacker adding an auth method to the account so they can have continued + access.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-accounts#things-to-monitor-1\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6267ce44-1e9d-471b-9f1e-ae76a6b7aa84\",\"name\":\"6267ce44-1e9d-471b-9f1e-ae76a6b7aa84\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityAlert\\n| + where AlertName =~ \\\"mass download by a single user\\\"\\n| extend Extprop + = parse_json(ExtendedProperties)\\n| extend Computer = iff(isnotempty(toupper(tostring(Extprop[\\\"Compromised + Host\\\"]))), toupper(tostring(Extprop[\\\"Compromised Host\\\"])), tostring(parse_json(Entities)[0].HostName))\\n| + extend Account = iff(isnotempty(tolower(tostring(Extprop[\\\"User Name\\\"]))), + tolower(tostring(Extprop[\\\"User Name\\\"])), tolower(tostring(Extprop[\\\"user + name\\\"])))\\n| extend IpAddress = tostring(parse_json(ExtendedProperties).[\\\"IpAddress\\\"]) + \\n| project timestamp=TimeGenerated, AlertName, Computer, Account, IpAddress, + ExtendedProperties\\n| join kind=inner\\n( \\nDeviceEvents\\n| where ActionType + == \\\"PnpDeviceConnected\\\"\\n| extend parsed = parse_json(AdditionalFields)\\n| + project DeviceId, DriveClass = tostring(parsed.ClassName), UsbDeviceId = tostring(parsed.DeviceId), + ClassId = tostring(parsed.DeviceId), DeviceDescription = tostring(parsed.DeviceDescription), + VendorIds = tostring(parsed.VendorIds), AccountDomain,AccountName,TimeGenerated, + ActionType, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, Type\\n| where + DriveClass == 'USB' and DeviceDescription == 'USB Mass Storage Device'\\n) + on $left.Account == $right.AccountName\\n| join kind=inner \\n(\\nDeviceFileEvents\\n| + where FolderPath !startswith \\\"c\\\" and FolderPath !startswith @\\\"\\\\\\\"\\n) + \ on DeviceId\\n| project TimeGenerated, ActionType, Computer, FileName, + FileSize, IpAddress, InitiatingProcessCommandLine, InitiatingProcessFileName, + Account\\n| extend timestamp = TimeGenerated, CompromisedEntity = Computer, + AccountCustomEntity=Account, ProcessCustomEntity = InitiatingProcessFileName, + IPCustomEntity=IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"CompromisedEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1052\"],\"displayName\":\"Mass + Download & copy to USB device by single user\",\"description\":\"This query + looks for any mass download by a single user with possible file copy activity + to a new USB drive. Malicious insiders may perform such activities that may + cause harm to the organization. \\nThis query could also reveal unintentional + insider that had no intention of malicious activity but their actions may + impact an organizations security posture.\\nReference:https://docs.microsoft.com/defender-cloud-apps/policy-template-reference\",\"lastUpdatedDateUTC\":\"2022-05-04T00:00:00Z\",\"createdDateUTC\":\"2022-04-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftCloudAppSecurity\",\"dataTypes\":[\"SecurityAlert\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceEvents\",\"DeviceFileEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3edb7215-250b-40c0-8b46-79093949242d\",\"name\":\"3edb7215-250b-40c0-8b46-79093949242d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 10;\\nQualysHostDetectionV2_CL\\n| where Severity_s == \\\"5\\\"\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), count() + by NetBios_s, IPAddress\\n| where count_ >= threshold\\n| extend timestamp + = StartTime, HostCustomEntity = NetBios_s, IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"High + Number of Urgent Vulnerabilities Detected\",\"description\":\"This Creates + an incident when a host has a high number of Urgent, severity 5, vulnerabilities + detected.\",\"lastUpdatedDateUTC\":\"2021-12-08T00:00:00Z\",\"createdDateUTC\":\"2020-06-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"QualysVulnerabilityManagement\",\"dataTypes\":[\"QualysHostDetection_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2441bce9-02e4-407b-8cc7-7d597f38b8b0\",\"name\":\"2441bce9-02e4-407b-8cc7-7d597f38b8b0\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n AzureActivity + | where TimeGenerated >= ago(dt_lookBack)\\n // renaming time column so + it is clear the log this came from\\n | extend AzureActivity_TimeGenerated + = TimeGenerated\\n)\\non $left.TI_ipEntity == $right.CallerIpAddress\\n| where + AzureActivity_TimeGenerated < ExpirationDateTime\\n| summarize AzureActivity_TimeGenerated + = arg_max(AzureActivity_TimeGenerated, *) by IndicatorId, CallerIpAddress\\n| + project AzureActivity_TimeGenerated, Description, ActivityGroupNames, IndicatorId, + ThreatType, Url, ExpirationDateTime, ConfidenceScore, TI_ipEntity, CallerIpAddress, + \\nCaller, OperationNameValue, ActivityStatusValue, CategoryValue, ResourceId, + NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| + extend timestamp = AzureActivity_TimeGenerated, IPCustomEntity = CallerIpAddress, + AccountCustomEntity = Caller, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]},{\"entityType\":\"AzureResource\",\"fieldMappings\":[{\"identifier\":\"ResourceId\",\"columnName\":\"ResourceId\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to AzureActivity\",\"description\":\"Identifies a match in AzureActivity + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3174a9ec-d0ad-4152-8307-94ed04fa450a\",\"name\":\"3174a9ec-d0ad-4152-8307-94ed04fa450a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + SHA256Hash = \\\"1174fd03271f80f5e2a6435c72bdd0272a6e3a37049f6190abf125b216a83471\\\" + ;\\n(union isfuzzy=true\\n(CommonSecurityLog \\n| parse Message with * '(' + DNSName ')' * \\n| where isnotempty(FileHash)\\n| where FileHash in (SHA256Hash) + \\n| extend Account = SourceUserID, Computer = DeviceName, IPAddress = SourceIP\\n),\\n(Event\\n//This + query uses sysmon data depending on table name used this may need updataing\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| extend Hashes = EventDetail.[16].[\\\"#text\\\"]\\n| + parse Hashes with * 'SHA256=' SHA265 ',' * \\n| where isnotempty(Hashes)\\n| + where Hashes in (SHA256Hash) \\n| extend Account = UserName\\n)\\n)\\n| extend + timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity + = Computer, IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\",\"CredentialAccess\"],\"displayName\":\"Known + ZINC related maldoc hash\",\"description\":\"Document hash used by ZINC in + highly targeted spear phishing campaign.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-10-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d25b1998-a592-4bc5-8a3a-92b39eedb1bc\",\"name\":\"d25b1998-a592-4bc5-8a3a-92b39eedb1bc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"AWSCloudTrail\\n| + where EventName =~ \\\"ConsoleLogin\\\" \\n| extend MFAUsed = tostring(parse_json(AdditionalEventData).MFAUsed), + LoginResult = tostring(parse_json(ResponseElements).ConsoleLogin)\\n| where + MFAUsed !~ \\\"Yes\\\" and LoginResult !~ \\\"Failure\\\"\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by EventName, EventTypeName, + LoginResult, MFAUsed, UserIdentityAccountId, UserIdentityPrincipalid, UserAgent, + \\nUserIdentityUserName, SessionMfaAuthenticated, SourceIpAddress, AWSRegion\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, + IPCustomEntity = SourceIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\",\"PrivilegeEscalation\",\"Persistence\",\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Login + to AWS Management Console without MFA\",\"description\":\"Multi-Factor Authentication + (MFA) helps you to prevent credential compromise. This alert identifies logins + to the AWS Management Console without MFA.\\nYou can limit this detection + to trigger for adminsitrative accounts if you do not have MFA enabled on all + accounts.\\nThis is done by looking at the eventName ConsoleLogin and if the + AdditionalEventData field indicates MFA was NOT used \\nand the ResponseElements + field indicates NOT a Failure. Thereby indicating that a non-MFA login was + successful.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c805d9b1-97e7-4bc0-9172-67edb36273e4\",\"name\":\"c805d9b1-97e7-4bc0-9172-67edb36273e4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Microsoft + 365 Insider Risk Management\",\"displayName\":\"(Private Preview) Create incidents + based on Microsoft 365 Insider Risk Management\",\"description\":\"Create + incidents based on all alerts generated in Microsoft 365 Insider Risk Management\",\"lastUpdatedDateUTC\":\"2021-05-13T00:00:00Z\",\"createdDateUTC\":\"2021-05-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"OfficeIRM\",\"dataTypes\":[\"SecurityAlert + (OfficeIRM)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/09551db0-e147-4a0c-9e7b-918f88847605\",\"name\":\"09551db0-e147-4a0c-9e7b-918f88847605\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + tokens = dynamic([\\\"SSL_HandShaking\\\", \\\"ASN2_TYPE_new\\\", \\\"sql_blob_open\\\", + \\\"cmsSetLogHandlerTHR\\\", \\\"ntSystemInfo\\\", \\\"SetWebFilterString\\\", + \\\"CleanupBrokerString\\\", \\\"glInitSampler\\\", \\\"deflateSuffix\\\", + \\\"ntWindowsProc\\\"]);\\nlet DomainNames = dynamic(['codevexillium.org', + 'angeldonationblog.com', 'investbooking.de', 'krakenfolio.com']);\\nlet SHA256Hash + = dynamic(['58a74dceb2022cd8a358b92acd1b48a5e01c524c3b0195d7033e4bd55eff4495','e0e59bfc22876c170af65dcbf19f744ae560cc43b720b23b9d248f4505c02f3e','3d3195697521973efe0097a320cbce0f0f98d29d50e044f4505e1fbc043e8cf9', + '0a2d81164d524be7022ba8fd4e1e8e01bfd65407148569d172e2171b5cd76cd4', '96d7a93f6691303d39a9cc270b8814151dfec5683e12094537fd580afdf2e5fe','dc4cf164635db06b2a0b62d313dbd186350bca6fc88438617411a68df13ec83c', + '46efd5179e43c9cbf07dcec22ce0d5527e2402655aee3afc016e5c260650284a', '95e42a94d4df1e7e472998f43b9879eb34aaa93f3705d7d3ef9e3b97349d7008', + '9d5320e883264a80ea214077f44b1d4b22155446ad5083f4b27d2ab5bd127ef5', '9fd05063ad203581a126232ac68027ca731290d17bd43b5d3311e8153c893fe3', + 'ada7e80c9d09f3efb39b729af238fcdf375383caaf0e9e0aed303931dc73b720', 'edb1597789c7ed784b85367a36440bf05267ac786efe5a4044ec23e490864cee', + '33665ce1157ddb7cd7e905e3356b39245dfba17b7a658bdbf02b6968656b9998', '3ab770458577eb72bd6239fe97c35e7eb8816bce5a4b47da7bd0382622854f7c', + 'b630ad8ffa11003693ce8431d2f1c6b8b126cd32b657a4bfa9c0dbe70b007d6c', '53f3e55c1217dafb8801af7087e7d68b605e2b6dde6368fceea14496c8a9f3e5', + '99c95b5272c5b11093eed3ef2272e304b7a9311a22ff78caeb91632211fcb777', 'f21abadef52b4dbd01ad330efb28ef50f8205f57916a26daf5de02249c0f24ef', + '2cbdea62e26d06080d114bbd922d6368807d7c6b950b1421d0aa030eca7e85da', '079659fac6bd9a1ce28384e7e3a465be4380acade3b4a4a4f0e67fd0260e9447']);\\nlet + SigNames = dynamic([\\\"Backdoor:Script/ComebackerCompile.A!dha\\\", \\\"Trojan:Win64/Comebacker.A!dha\\\", + \\\"Trojan:Win64/Comebacker.A.gen!dha\\\", \\\"Trojan:Win64/Comebacker.B.gen!dha\\\", + \\\"Trojan:Win32/Comebacker.C.gen!dha\\\", \\\"Trojan:Win32/Klackring.A!dha\\\", + \\\"Trojan:Win32/Klackring.B!dha\\\"]);\\n(union isfuzzy=true\\n(CommonSecurityLog\\n| + parse Message with * '(' DNSName ')' * \\n| where isnotempty(FileHash)\\n| + where FileHash in~ (SHA256Hash) or DNSName in~ (DomainNames)\\n| extend Account + = SourceUserID, Computer = DeviceName, IPAddress = SourceIP\\n| project Type, + TimeGenerated, Computer, Account, IPAddress, FileHash, DNSName\\n),\\n(_Im_Dns(domain_has_any=DomainNames)\\n| + extend DNSName = DnsQuery\\n| extend Type = \\\"imDns\\\", IPAddress = SrcIpAddr, + Computer=Dvc\\n| project Type, TimeGenerated, Computer, IPAddress, DNSName\\n),\\n(VMConnection\\n| + parse RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' *\\n| where isnotempty(DNSName)\\n| + where DNSName in~ (DomainNames)\\n| extend IPAddress = RemoteIp\\n| project + Type, TimeGenerated, Computer, IPAddress, DNSName\\n),\\n(Event\\n//This query + uses sysmon data depending on table name used this may need updataing\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| extend Hashes = EventDetail.[16].[\\\"#text\\\"]\\n| + where isnotempty(Hashes)\\n| parse Hashes with * 'SHA256=' SHA256 ',' * \\n| + where SHA256 in~ (SHA256Hash) \\n| extend Type = strcat(Type, \\\": \\\", + Source), Account = UserName, FileHash = Hashes\\n| project Type, TimeGenerated, + Computer, Account, FileHash\\n),\\n(DeviceFileEvents\\n| where SHA256 in~ + (SHA256Hash)\\n| extend Account = RequestAccountName, Computer = DeviceName, + IPAddress = RequestSourceIP, CommandLine = InitiatingProcessCommandLine, FileHash + = SHA256\\n| project Type, TimeGenerated, Computer, Account, IPAddress, CommandLine, + FileHash\\n),\\n(imFileEvent\\n| where TargetFileSHA256 in~ (SHA256Hash)\\n| + extend Account = ActorUsername, Computer = DvcHostname, IPAddress = SrcIpAddr, + CommandLine = ActingProcessCommandLine, FileHash = TargetFileSHA256\\n| project + Type, TimeGenerated, Computer, Account, IPAddress, CommandLine, FileHash\\n),\\n(DeviceNetworkEvents\\n| + where RemoteUrl in~ (DomainNames)\\n| extend Computer = DeviceName, IPAddress + = LocalIP, Account = InitiatingProcessAccountName\\n| project Type, TimeGenerated, + Computer, Account, IPAddress, RemoteUrl\\n),\\n(SecurityAlert\\n| where ProductName + == \\\"Microsoft Defender Advanced Threat Protection\\\"\\n| extend ThreatName + = tostring(parse_json(ExtendedProperties).ThreatName)\\n| where isnotempty(ThreatName)\\n| + where ThreatName has_any (SigNames)\\n| extend Computer = tostring(parse_json(Entities)[0].HostName) + \\n| project Type, TimeGenerated, Computer\\n),\\n(DeviceProcessEvents\\n| + where FileName =~ \\\"powershell.exe\\\" or FileName =~ \\\"rundll32.exe\\\"\\n| + where (ProcessCommandLine has \\\"is64bitoperatingsystem\\\" and ProcessCommandLine + has \\\"Debug\\\\\\\\Browse\\\") or (ProcessCommandLine has_any (tokens))\\n| + extend Computer = DeviceName, Account = AccountName, CommandLine = ProcessCommandLine\\n| + project Type, TimeGenerated, Computer, Account, CommandLine, FileName\\n),\\n(SecurityEvent\\n| + where EventID == 4688\\n| where ProcessName has_any (\\\"powershell.exe\\\", + \\\"rundll32.exe\\\")\\n| where (CommandLine has \\\"is64bitoperatingsystem\\\" + and CommandLine has \\\"Debug\\\\\\\\Browse\\\") or (CommandLine has_any (tokens))\\n| + project Type, TimeGenerated, Computer, Account, ProcessName, CommandLine \\n),\\n( + WindowsEvent\\n| where EventID == 4688\\n| where EventData has_any (\\\"powershell.exe\\\", + \\\"rundll32.exe\\\") and EventData has_any (tokens, \\\"Debug\\\\\\\\Browse\\\",\\\"is64bitoperatingsystem\\\" + ) \\n| extend ProcessName = tostring(EventData.ProcessName)\\n| where ProcessName + has_any (\\\"powershell.exe\\\", \\\"rundll32.exe\\\")\\n| extend CommandLine + = tostring(EventData.CommandLine) \\n| where (CommandLine has \\\"is64bitoperatingsystem\\\" + and CommandLine has \\\"Debug\\\\\\\\Browse\\\") or (CommandLine has_any (tokens))\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| project Type, TimeGenerated, Computer, + Account, ProcessName, CommandLine \\n),\\n(AzureDiagnostics \\n| where ResourceType + == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (DomainNames) \\n| extend DNSName = DestinationHost + \\n| extend IPAddress = SourceHost\\n)\\n)\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity + = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.6.2\",\"tactics\":[\"CommandAndControl\",\"Execution\"],\"techniques\":[\"T1071\",\"T1204\"],\"displayName\":\"Known + ZINC Comebacker and Klackring malware hashes\",\"description\":\"ZINC attacks + against security researcher campaign malware hashes.\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2021-01-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceFileEvents\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4ce177b3-56b1-4f0e-b83e-27eed4cb0b16\",\"name\":\"4ce177b3-56b1-4f0e-b83e-27eed4cb0b16\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lookback = 14d;\\nlet timeframe = 1d;\\n// exclude allowed users from query + such as the ADO service\\nlet allowed_users = dynamic([\\\"Azure DevOps Service\\\"]);\\nunion\\n// + Look for agents being added to a pool of a OS type not seen with that pool + before\\n(AzureDevOpsAuditing\\n| where TimeGenerated > ago(lookback) and + TimeGenerated < ago(timeframe)\\n| where OperationName =~ \\\"Library.AgentAdded\\\"\\n| + where ActorUPN !in (allowed_users)\\n| extend AgentPoolName = tostring(Data.AgentPoolName)\\n| + extend OsDescription = tostring(Data.OsDescription)\\n| where isnotempty(OsDescription)\\n| + extend OsDescription = tostring(split(OsDescription, \\\"#\\\", 0)[0])\\n| + project AgentPoolName, OsDescription\\n| join kind=rightanti (AzureDevOpsAuditing\\n| + where TimeGenerated > ago(timeframe)\\n| where OperationName == \\\"Library.AgentAdded\\\"\\n| + extend AgentPoolName = tostring(Data.AgentPoolName)\\n| extend OsDescription + = tostring(Data.OsDescription)\\n| where isnotempty(OsDescription)\\n| extend + OsDescription = tostring(split(OsDescription, \\\"#\\\", 0)[0])) on AgentPoolName, + OsDescription),\\n// Look for users addeing agents to a pool that they have + not added agents to before.\\n(AzureDevOpsAuditing\\n| where TimeGenerated + > ago(lookback) and TimeGenerated < ago(timeframe)\\n| extend AgentPoolName + = tostring(Data.AgentPoolName)\\n| where ActorUPN !in (allowed_users)\\n| + project AgentPoolName, ActorUPN\\n| join kind=rightanti (AzureDevOpsAuditing\\n| + where TimeGenerated > ago(timeframe)\\n| where OperationName == \\\"Library.AgentAdded\\\"\\n| + where ActorUPN !in (allowed_users)\\n| extend AgentPoolName = tostring(Data.AgentPoolName)\\n) + on AgentPoolName, ActorUPN)\\n| extend AgentName = tostring(Data.AgentName)\\n| + extend OsDescription = tostring(Data.OsDescription)\\n| extend SystemDetails + = Data.SystemCapabilities\\n| project-reorder TimeGenerated, OperationName, + ScopeDisplayName, AgentPoolName, AgentName, ActorUPN, IpAddress, UserAgent, + OsDescription, SystemDetails, Data\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = ActorUPN, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1053\"],\"displayName\":\"New + Agent Added to Pool by New User or Added to a New OS Type.\",\"description\":\"As + seen in attacks such as SolarWinds attackers can look to subvert a build process + by controlling build servers. Azure DevOps uses agent pools to execute pipeline + tasks. \\nAn attacker could insert compromised agents that they control into + the pools in order to execute malicious code. This query looks for users adding + agents to pools they have \\nnot added agents to before, or adding agents + to a pool of an OS that has not been added to that pool before. This detection + has potential for false positives so has a \\nconfigurable allow list to allow + for certain users to be excluded from the logic.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/05b4bccd-dd12-423d-8de4-5a6fb526bb4f\",\"name\":\"05b4bccd-dd12-423d-8de4-5a6fb526bb4f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + known_processes = (\\n SecurityEvent\\n // If adjusting Query Period or + Frequency update these\\n | where TimeGenerated between(ago(14d)..ago(1d))\\n + \ | where EventID == 4688\\n | where NewProcessName has_any (\\\"Policies\\\\\\\\{6AC1786C-016F-11D2-945F-00C04fB984F9}\\\", + \\\"Policies\\\\\\\\{31B2F340-016D-11D2-945F-00C04FB984F9}\\\")\\n | summarize + by Process);\\n SecurityEvent\\n // If adjusting Query Period or Frequency + update these\\n | where TimeGenerated > ago(1d)\\n | where EventID == 4688\\n + \ | where NewProcessName has_any (\\\"Policies\\\\\\\\{6AC1786C-016F-11D2-945F-00C04fB984F9}\\\", + \\\"Policies\\\\\\\\{31B2F340-016D-11D2-945F-00C04FB984F9}\\\")\\n | where + Process !in (known_processes)\\n // This will likely apply to multiple hosts + so summarize these data\\n | summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated) + by Process, NewProcessName, CommandLine, Computer\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Execution\",\"LateralMovement\"],\"techniques\":[\"T1072\",\"T1570\"],\"displayName\":\"New + EXE deployed via Default Domain or Default Domain Controller Policies\",\"description\":\"This + detection highlights executables deployed to hosts via either the Default + Domain or Default Domain Controller Policies. These policies apply to all + hosts or Domain Controllers and best practice is that these policies should + not be used for deployment of files.\\nA threat actor may use these policies + to deploy files or scripts to all hosts in a domain.\",\"lastUpdatedDateUTC\":\"2022-02-25T00:00:00Z\",\"createdDateUTC\":\"2022-02-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c61ad0ac-ad68-4ebb-b41a-74296d3e0044\",\"name\":\"c61ad0ac-ad68-4ebb-b41a-74296d3e0044\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"Event\\n| + where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID + in (13)\\n| parse EventData with * 'TargetObject\\\">' TargetObject \\\"<\\\" + * 'Details\\\">' Details \\\"<\\\" * \\n| where TargetObject has (\\\"\\\\\\\\Control\\\\\\\\Session + Manager\\\\\\\\AppCertDLLs\\\\\\\\\\\")\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by EventID, Computer, TargetObject, Details\",\"entityMappings\":[{\"entityType\":\"RegistryKey\",\"fieldMappings\":[{\"identifier\":\"Key\",\"columnName\":\"TargetObject\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1546\"],\"displayName\":\"Registry + Persistence via AppCert DLL Modification\",\"description\":\"Adversaries may + establish persistence and/or elevate privileges by executing malicious content + triggered by AppCert DLLs loaded into processes. \\nDynamic-link libraries + (DLLs) that are specified in the AppCertDLLs Registry key under HKEY_LOCAL_MACHINE\\\\System\\\\CurrentControlSet\\\\Control\\\\Session + Manager\\\\ are loaded into every process that calls the ubiquitously used + application programming interface (API) functions CreateProcess, CreateProcessAsUser, + CreateProcessWithLoginW, CreateProcessWithTokenW, or WinExec.\\nRef: https://attack.mitre.org/techniques/T1546/009/\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2022-03-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8ee967a2-a645-4832-85f4-72b635bcb3a6\",\"name\":\"8ee967a2-a645-4832-85f4-72b635bcb3a6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"//Adjust + this threshold to fit the environment\\nlet signin_threshold = 5;\\n//Make + a list of all IPs with failed signins to AAD above our threshold\\nlet aadFunc + = (tableName:string){\\nlet suspicious_signins =\\ntable(tableName)\\n| where + ResultType !in (\\\"0\\\", \\\"50125\\\", \\\"50140\\\")\\n| where IPAddress + !in ('127.0.0.1', '::1')\\n| summarize count() by IPAddress\\n| where count_ + > signin_threshold\\n| summarize make_set(IPAddress);\\n//See if any of these + IPs have sucessfully logged into *nix hosts\\nlet linux_logons =\\nSyslog\\n| + where Facility contains \\\"auth\\\" and ProcessName != \\\"sudo\\\"\\n| where + SyslogMessage has \\\"Accepted\\\"\\n| extend SourceIP = extract(\\\"(([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.(([0-9]{1,3})))\\\",1,SyslogMessage)\\n| + where SourceIP in (suspicious_signins)\\n| extend Reason = \\\"Multiple failed + AAD logins from IP address\\\"\\n| project TimeGenerated, Computer, HostIP, + IpAddress = SourceIP, SyslogMessage, Facility, ProcessName, Reason;\\n//See + if any of these IPs have sucessfully logged into Windows hosts\\nlet win_logons + = (union isfuzzy=true\\n(SecurityEvent\\n| where EventID == 4624\\n| where + LogonType in (10, 7, 3)\\n| where IpAddress != \\\"-\\\"\\n| where IpAddress + in (suspicious_signins)\\n| extend Reason = \\\"Multiple failed AAD logins + from IP address\\\"\\n| project TimeGenerated, Account, AccountType, Computer, + Activity, EventID, LogonProcessName, IpAddress, LogonTypeName, TargetUserSid, + Reason\\n),\\n(WindowsEvent\\n| where EventID == 4624 and has_any_ipv4(EventData, + toscalar(suspicious_signins))\\n| extend LogonType = tostring(EventData.LogonType)\\n| + where LogonType in (10, 7, 3)\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + where IpAddress != \\\"-\\\"\\n| where IpAddress in (suspicious_signins)\\n| + extend Reason = \\\"Multiple failed AAD logins from IP address\\\"\\n| extend + Activity = \\\"4624 - An account was successfully logged on.\\\"\\n| extend + Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", tostring(EventData.TargetUserName))\\n| + extend TargetUserSid = tostring(EventData.TargetUserSid)\\n| extend TargetAccount + = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", EventData.TargetUserName)\\n| + extend AccountType =case(Account endswith \\\"$\\\" or TargetUserSid in (\\\"S-1-5-18\\\", + \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", isempty(TargetUserSid), + \\\"\\\", \\\"User\\\")\\n| extend LogonProcessName = tostring(EventData.LogonProcessName)\\n| + project TimeGenerated, Account, AccountType, Computer, Activity, EventID, + LogonProcessName, IpAddress, TargetUserSid, Reason\\n)\\n);\\nunion isfuzzy=true + linux_logons,win_logons\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = Account, IPCustomEntity = IpAddress, HostCustomEntity = Computer\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"InitialAccess\",\"CredentialAccess\"],\"techniques\":[\"T1078\",\"T1110\"],\"displayName\":\"Failed + AzureAD logons but success logon to host\",\"description\":\"Identifies a + list of IP addresses with a minimum number (default of 5) of failed logon + attempts to Azure Active Directory.\\nUses that list to identify any successful + remote logons to hosts from these IPs within the same timeframe.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-08-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/46ac55ae-47b8-414a-8f94-89ccd1962178\",\"name\":\"46ac55ae-47b8-414a-8f94-89ccd1962178\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + mode = 'Blocked'; \\nlet successCode = dynamic(['200', '101','204', '400','504','304','401','500']);\\nlet + minTime = ago(1d);\\nlet maxSessionWindow = 1h;\\nlet sessionBin = maxSessionWindow/2.0;\\nAzureDiagnostics\\n| + where TimeGenerated > minTime\\n| where Category == 'ApplicationGatewayFirewallLog'\\n| + where action_s == mode\\n| sort by hostname_s asc, clientIp_s asc, TimeGenerated + asc\\n| extend SessionStarted = row_window_session(TimeGenerated, maxSessionWindow, + 10m, ((clientIp_s != prev(clientIp_s)) or (hostname_s != prev(hostname_s))))\\n| + summarize minTime = min(TimeGenerated), maxTime = max(TimeGenerated), SessionBlockedCount=count() + \ by hostname_s, clientIp_s, SessionStarted\\n| extend duration = maxTime + - minTime\\n| extend TimeKey = bin(SessionStarted, sessionBin)\\n| join kind + = inner(\\nAzureDiagnostics\\n| where TimeGenerated > minTime\\n| where Category + == 'ApplicationGatewayAccessLog'\\n| where httpStatus_d in (successCode) or + isempty(httpStatus_d)\\n| extend TimeKey = range(bin(TimeGenerated-maxSessionWindow, + sessionBin), bin(TimeGenerated, sessionBin), sessionBin)\\n| mv-expand TimeKey + to typeof(datetime)\\n) on $left.hostname_s == $right.host_s, $left.clientIp_s + == $right.clientIP_s, TimeKey\\n| where (TimeGenerated - SessionStarted) between + (0m .. duration)\\n| extend originalRequestUriWithArgs_s = column_ifexists(\\\"originalRequestUriWithArgs_s\\\", + \\\"\\\")\\n| extend serverStatus_s = column_ifexists(\\\"serverStatus_s\\\", + \\\"\\\")\\n| extend timestamp = SessionStarted, IPCustomEntity = clientIP_s\\n| + summarize SuccessfulAccessLogCount = count(), UserAgents = make_set(userAgent_s), + RequestURIs = make_set(requestUri_s) , OriginalRequestURIs = make_set(originalRequestUriWithArgs_s), + \\nSuccessCodes = make_set(httpStatus_d), SuccessCodes_BackendServer = make_set(serverStatus_s) + by timestamp, hostname_s, IPCustomEntity, SessionBlockedCount\\n| extend BlockvsSuccessRatio + = SessionBlockedCount/SuccessfulAccessLogCount\\n| sort by BlockvsSuccessRatio + desc, timestamp asc\\n| where SessionBlockedCount > SuccessfulAccessLogCount\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"A + potentially malicious web request was executed against a web server\",\"description\":\"Detects + unobstructed Web Application Firewall (WAF) activity in sessions where the + WAF blocked incoming requests by computing the \\nratio between blocked requests + and unobstructed WAF requests in these sessions (BlockvsSuccessRatio metric). + A high ratio value for \\na given client IP and hostname calls for further + investigation of the WAF data in that session, due to the significantly high + number \\nof blocked requests and a few unobstructed logs which may be malicious + but have passed undetected through the WAF. The successCode \\nvariable defines + what the detection thinks is a successful status code, and should be altered + to fit the environment.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-11-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"WAF\",\"dataTypes\":[\"AzureDiagnostics\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4d173248-439b-4741-8b37-f63ad0c896ae\",\"name\":\"4d173248-439b-4741-8b37-f63ad0c896ae\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ChiaCryptoIOC.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet process = (iocs | + where Type =~ \\\"process\\\" | project IoC);\\n//This query uses sysmon data, + sections that have - | where Source == \\\"Microsoft-Windows-Sysmon\\\" - + may need to be updated with latest\\nWindowsEvent\\n| where EventID == '4688' + and EventData has_any (process)\\n| extend NewProcessName = tostring(EventData.NewProcessName)\\n| + where NewProcessName has_any (process)\\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n + \ , Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n , NewProcessId = tostring(EventData.NewProcessId)\\n| + extend timestamp = TimeGenerated, Computer, Account, File = tostring(split(NewProcessName, + '\\\\\\\\', -1)[-1]), AlertDetail = 'Chia crypto IOC detected'\\n| extend + FilePath = replace_string(NewProcessName, File, '')\\n| project TimeGenerated, + timestamp, File, AlertDetail, FilePath,Computer, NewProcessName, ParentProcessName, + Account, NewProcessId, Type\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"File\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"FileCustomEntity\"},{\"identifier\":\"Directory\",\"columnName\":\"FilePathCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"FileHashAlgo\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"Chia_Crypto_Mining + - Domain, Process, Hash and IP IOCs - June 2021\",\"description\":\"Identifies + a match across various data feeds for domains, process, hashes and IP IOC + related to Chia cryptocurrency farming/plotting activity.\",\"lastUpdatedDateUTC\":\"2022-05-19T00:00:00Z\",\"createdDateUTC\":\"2022-02-21T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7b907bf7-77d4-41d0-a208-5643ff75bf9a\",\"name\":\"7b907bf7-77d4-41d0-a208-5643ff75bf9a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + Keywords = dynamic([\\\"helpdesk\\\", \\\" alert\\\", \\\" suspicious\\\", + \\\"fake\\\", \\\"malicious\\\", \\\"phishing\\\", \\\"spam\\\", \\\"do not + click\\\", \\\"do not open\\\", \\\"hijacked\\\", \\\"Fatal\\\"]);\\nOfficeActivity\\n| + where Operation =~ \\\"New-InboxRule\\\"\\n| where Parameters has \\\"Deleted + Items\\\" or Parameters has \\\"Junk Email\\\" or Parameters has \\\"DeleteMessage\\\"\\n| + extend Events=todynamic(Parameters)\\n| parse Events with * \\\"SubjectContainsWords\\\" + SubjectContainsWords '}'*\\n| parse Events with * \\\"BodyContainsWords\\\" + BodyContainsWords '}'*\\n| parse Events with * \\\"SubjectOrBodyContainsWords\\\" + SubjectOrBodyContainsWords '}'*\\n| where SubjectContainsWords has_any (Keywords)\\n + or BodyContainsWords has_any (Keywords)\\n or SubjectOrBodyContainsWords has_any + (Keywords)\\n| extend ClientIPAddress = case( ClientIP has \\\".\\\", tostring(split(ClientIP,\\\":\\\")[0]), + ClientIP has \\\"[\\\", tostring(trim_start(@'[[]',tostring(split(ClientIP,\\\"]\\\")[0]))), + ClientIP )\\n| extend Keyword = iff(isnotempty(SubjectContainsWords), SubjectContainsWords, + (iff(isnotempty(BodyContainsWords),BodyContainsWords,SubjectOrBodyContainsWords + )))\\n| extend RuleDetail = case(OfficeObjectId contains '/' , tostring(split(OfficeObjectId, + '/')[-1]) , tostring(split(OfficeObjectId, '\\\\\\\\')[-1]))\\n| summarize + count(), StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) + by Operation, UserId, ClientIPAddress, ResultStatus, Keyword, OriginatingServer, + OfficeObjectId, RuleDetail\\n| extend timestamp = StartTimeUtc, IPCustomEntity + = ClientIPAddress, AccountCustomEntity = UserId , HostCustomEntity = OriginatingServer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\",\"DefenseEvasion\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"Malicious + Inbox Rule\",\"description\":\"Often times after the initial compromise the + attackers create inbox rules to delete emails that contain certain keywords. + \\n This is done so as to limit ability to warn compromised users that they've + been compromised. Below is a sample query that tries to detect this.\\nReference: + https://www.reddit.com/r/sysadmin/comments/7kyp0a/recent_phishing_attempts_my_experience_and_what/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-03-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ef88eb96-861c-43a0-ab16-f3835a97c928\",\"name\":\"ef88eb96-861c-43a0-ab16-f3835a97c928\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT12H\",\"queryPeriod\":\"PT12H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + regexEmpire = @\\\"SetDelay|GetDelay|Set-LostLimit|Get-LostLimit|Set-Killdate|Get-Killdate|Set-WorkingHours|Get-WorkingHours|Get-Sysinfo|Add-Servers|Invoke-ShellCommand|Start-AgentJob|Update-Profile|Get-FilePart|Encrypt-Bytes|Decrypt-Bytes|Encode-Packet|Decode-Packet|Send-Message|Process-Packet|Process-Tasking|Get-Task|Start-Negotiate|Invoke-DllInjection|Invoke-ReflectivePEInjection|Invoke-Shellcode|Invoke-ShellcodeMSIL|Get-ChromeDump|Get-ClipboardContents|Get-IndexedItem|Get-Keystrokes|Invoke-Inveigh|Invoke-NetRipper|local:Invoke-PatchDll|Invoke-NinjaCopy|Get-Win32Types|Get-Win32Constants|Get-Win32Functions|Sub-SignedIntAsUnsigned|Add-SignedIntAsUnsigned|Compare-Val1GreaterThanVal2AsUInt|Convert-UIntToInt|Test-MemoryRangeValid|Write-BytesToMemory|Get-DelegateType|Get-ProcAddress|Enable-SeDebugPrivilege|Invoke-CreateRemoteThread|Get-ImageNtHeaders|Get-PEBasicInfo|Get-PEDetailedInfo|Import-DllInRemoteProcess|Get-RemoteProcAddress|Copy-Sections|Update-MemoryAddresses|Import-DllImports|Get-VirtualProtectValue|Update-MemoryProtectionFlags|Update-ExeFunctions|Copy-ArrayOfMemAddresses|Get-MemoryProcAddress|Invoke-MemoryLoadLibrary|Invoke-MemoryFreeLibrary|Out-Minidump|Get-VaultCredential|Invoke-DCSync|Translate-Name|Get-NetDomain|Get-NetForest|Get-NetForestDomain|Get-DomainSearcher|Get-NetComputer|Get-NetGroupMember|Get-NetUser|Invoke-Mimikatz|Invoke-PowerDump|Invoke-TokenManipulation|Exploit-JMXConsole|Exploit-JBoss|Invoke-Thunderstruck|Invoke-VoiceTroll|Set-WallPaper|Invoke-PsExec|Invoke-SSHCommand|Invoke-PSInject|Invoke-RunAs|Invoke-SendMail|Invoke-Rule|Get-OSVersion|Select-EmailItem|View-Email|Get-OutlookFolder|Get-EmailItems|Invoke-MailSearch|Get-SubFolders|Get-GlobalAddressList|Invoke-SearchGAL|Get-SMTPAddress|Disable-SecuritySettings|Reset-SecuritySettings|Get-OutlookInstance|New-HoneyHash|Set-MacAttribute|Invoke-PatchDll|Get-SecurityPackages|Install-SSP|Invoke-BackdoorLNK|New-ElevatedPersistenceOption|New-UserPersistenceOption|Add-Persistence|Invoke-CallbackIEX|Add-PSFirewallRules|Invoke-EventLoop|Invoke-PortBind|Invoke-DNSLoop|Invoke-PacketKnock|Invoke-CallbackLoop|Invoke-BypassUAC|Get-DecryptedCpassword|Get-GPPInnerFields|Invoke-WScriptBypassUAC|Get-ModifiableFile|Get-ServiceUnquoted|Get-ServiceFilePermission|Get-ServicePermission|Invoke-ServiceUserAdd|Invoke-ServiceCMD|Write-UserAddServiceBinary|Write-CMDServiceBinary|Write-ServiceEXE|Write-ServiceEXECMD|Restore-ServiceEXE|Invoke-ServiceStart|Invoke-ServiceStop|Invoke-ServiceEnable|Invoke-ServiceDisable|Get-ServiceDetail|Find-DLLHijack|Find-PathHijack|Write-HijackDll|Get-RegAlwaysInstallElevated|Get-RegAutoLogon|Get-VulnAutoRun|Get-VulnSchTask|Get-UnattendedInstallFile|Get-Webconfig|Get-ApplicationHost|Write-UserAddMSI|Invoke-AllChecks|Invoke-ThreadedFunction|Test-Login|Get-UserAgent|Test-Password|Get-ComputerDetails|Find-4648Logons|Find-4624Logons|Find-AppLockerLogs|Find-PSScriptsInPSAppLog|Find-RDPClientConnections|Get-SystemDNSServer|Invoke-Paranoia|Invoke-WinEnum{|Get-SPN|Invoke-ARPScan|Invoke-Portscan|Invoke-ReverseDNSLookup|Invoke-SMBScanner|New-InMemoryModule|Add-Win32Type|Export-PowerViewCSV|Get-MacAttribute|Copy-ClonedFile|Get-IPAddress|Convert-NameToSid|Convert-SidToName|Convert-NT4toCanonical|Get-Proxy|Get-PathAcl|Get-NameField|Convert-LDAPProperty|Get-NetDomainController|Add-NetUser|Add-NetGroupUser|Get-UserProperty|Find-UserField|Get-UserEvent|Get-ObjectAcl|Add-ObjectAcl|Invoke-ACLScanner|Get-GUIDMap|Get-ADObject|Set-ADObject|Get-ComputerProperty|Find-ComputerField|Get-NetOU|Get-NetSite|Get-NetSubnet|Get-DomainSID|Get-NetGroup|Get-NetFileServer|SplitPath|Get-DFSshare|Get-DFSshareV1|Get-DFSshareV2|Get-GptTmpl|Get-GroupsXML|Get-NetGPO|Get-NetGPOGroup|Find-GPOLocation|Find-GPOComputerAdmin|Get-DomainPolicy|Get-NetLocalGroup|Get-NetShare|Get-NetLoggedon|Get-NetSession|Get-NetRDPSession|Invoke-CheckLocalAdminAccess|Get-LastLoggedOn|Get-NetProcess|Find-InterestingFile|Invoke-CheckWrite|Invoke-UserHunter|Invoke-StealthUserHunter|Invoke-ProcessHunter|Invoke-EventHunter|Invoke-ShareFinder|Invoke-FileFinder|Find-LocalAdminAccess|Get-ExploitableSystem|Invoke-EnumerateLocalAdmin|Get-NetDomainTrust|Get-NetForestTrust|Find-ForeignUser|Find-ForeignGroup|Invoke-MapDomainTrust|Get-Hex|Create-RemoteThread|Get-FoxDump|Decrypt-CipherText|Get-Screenshot|Start-HTTP-Server|Local:Invoke-CreateRemoteThread|Local:Get-Win32Functions|Local:Inject-NetRipper|GetCommandLine|ElevatePrivs|Get-RegKeyClass|Get-BootKey|Get-HBootKey|Get-UserName|Get-UserHashes|DecryptHashes|DecryptSingleHash|Get-UserKeys|DumpHashes|Enable-SeAssignPrimaryTokenPrivilege|Enable-Privilege|Set-DesktopACLs|Set-DesktopACLToAllowEveryone|Get-PrimaryToken|Get-ThreadToken|Get-TokenInformation|Get-UniqueTokens|Find-GPOLocation|Find-GPOComputerAdmin|Get-DomainPolicy|Get-NetLocalGroup|Get-NetShare|Get-NetLoggedon|Get-NetSession|Get-NetRDPSession|Invoke-CheckLocalAdminAccess|Get-LastLoggedOn|Get-NetProcess|Find-InterestingFile|Invoke-CheckWrite|Invoke-UserHunter|Invoke-StealthUserHunter|Invoke-ProcessHunter|Invoke-EventHunter|Invoke-ShareFinder|Invoke-FileFinder|Find-LocalAdminAccess|Get-ExploitableSystem|Invoke-EnumerateLocalAdmin|Get-NetDomainTrust|Get-NetForestTrust|Find-ForeignUser|Find-ForeignGroup|Invoke-MapDomainTrust|Get-Hex|Create-RemoteThread|Get-FoxDump|Decrypt-CipherText|Get-Screenshot|Start-HTTP-Server|Local:Invoke-CreateRemoteThread|Local:Get-Win32Functions|Local:Inject-NetRipper|GetCommandLine|ElevatePrivs|Get-RegKeyClass|Get-BootKey|Get-HBootKey|Get-UserName|Get-UserHashes|DecryptHashes|DecryptSingleHash|Get-UserKeys|DumpHashes|Enable-SeAssignPrimaryTokenPrivilege|Enable-Privilege|Set-DesktopACLs|Set-DesktopACLToAllowEveryone|Get-PrimaryToken|Get-ThreadToken|Get-TokenInformation|Get-UniqueTokens|Invoke-ImpersonateUser|Create-ProcessWithToken|Free-AllTokens|Enum-AllTokens|Invoke-RevertToSelf|Set-Speaker\\\\(\\\\$Volume\\\\){\\\\$wshShell|Local:Get-RandomString|Local:Invoke-PsExecCmd|Get-GPPPassword|Local:Inject-BypassStuff|Local:Invoke-CopyFile\\\\(\\\\$sSource,|ind-Fruit|New-IPv4Range|New-IPv4RangeFromCIDR|Parse-Hosts|Parse-ILHosts|Exclude-Hosts|Get-TopPort|Parse-Ports|Parse-IpPorts|Remove-Ports|Write-PortscanOut|Convert-SwitchtoBool|Get-ForeignUser|Get-ForeignGroup\\\";\\n(union + isfuzzy=true\\n (SecurityEvent\\n| where EventID == 4688\\n//consider filtering + on filename if perf issues occur\\n//where FileName in~ (\\\"powershell.exe\\\",\\\"powershell_ise.exe\\\",\\\"pwsh.exe\\\")\\n| + where not(ParentProcessName has_any ('gc_worker.exe', 'gc_service.exe'))\\n| + where CommandLine has \\\"-encodedCommand\\\"\\n| parse kind=regex flags=i + CommandLine with * \\\"-EncodedCommand \\\" encodedCommand\\n| extend encodedCommand + = iff(encodedCommand has \\\" \\\", tostring(split(encodedCommand, \\\" \\\")[0]), + encodedCommand)\\n// Note: currently the base64_decode_tostring function is + limited to supporting UTF8\\n| extend decodedCommand = translate('\\\\0','', + base64_decode_tostring(substring(encodedCommand, 0, strlen(encodedCommand) + - (strlen(encodedCommand) %8)))), encodedCommand, CommandLine , strlen(encodedCommand)\\n| + extend EfectiveCommand = iff(isnotempty(encodedCommand), decodedCommand, CommandLine)\\n| + where EfectiveCommand matches regex regexEmpire\\n| project TimeGenerated, + Computer, Account = SubjectUserName, AccountDomain = SubjectDomainName, FileName + = Process, EfectiveCommand, decodedCommand, encodedCommand, CommandLine, ParentProcessName\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity + = Computer\\n),\\n(WindowsEvent\\n| where EventID == 4688 \\n| where EventData + has_any (\\\"-encodedCommand\\\", \\\"powershell.exe\\\",\\\"powershell_ise.exe\\\",\\\"pwsh.exe\\\")\\n| + where not(EventData has_any ('gc_worker.exe', 'gc_service.exe'))\\n//consider + filtering on filename if perf issues occur\\n//extend NewProcessName = tostring(EventData.NewProcessName)\\n//extend + Process=tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n//FileName = Process\\n//where + FileName in~ (\\\"powershell.exe\\\",\\\"powershell_ise.exe\\\",\\\"pwsh.exe\\\")\\n| + extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| where + not(ParentProcessName has_any ('gc_worker.exe', 'gc_service.exe'))\\n| extend + CommandLine = tostring(EventData.CommandLine)\\n| where CommandLine has \\\"-encodedCommand\\\"\\n| + parse kind=regex flags=i CommandLine with * \\\"-EncodedCommand \\\" encodedCommand\\n| + extend encodedCommand = iff(encodedCommand has \\\" \\\", tostring(split(encodedCommand, + \\\" \\\")[0]), encodedCommand)\\n// Note: currently the base64_decode_tostring + function is limited to supporting UTF8\\n| extend decodedCommand = translate('\\\\0','', + base64_decode_tostring(substring(encodedCommand, 0, strlen(encodedCommand) + - (strlen(encodedCommand) %8)))), encodedCommand, CommandLine , strlen(encodedCommand)\\n| + extend EfectiveCommand = iff(isnotempty(encodedCommand), decodedCommand, CommandLine)\\n| + where EfectiveCommand matches regex regexEmpire\\n| extend SubjectUserName + = tostring(EventData.SubjectUserName)\\n| extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| + extend NewProcessName = tostring(EventData.NewProcessName)\\n| extend Process=tostring(split(NewProcessName, + '\\\\\\\\')[-1])\\n| project TimeGenerated, Computer, Account = SubjectUserName, + AccountDomain = SubjectDomainName, FileName = Process, EfectiveCommand, decodedCommand, + encodedCommand, CommandLine, ParentProcessName\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer\\n))\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Execution\",\"Persistence\"],\"displayName\":\"Powershell + Empire cmdlets seen in command line\",\"description\":\"Identifies instances + of PowerShell Empire cmdlets in powershell process command line data.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-01-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/cda5928c-2c1e-4575-9dfa-07568bc27a4f\",\"name\":\"cda5928c-2c1e-4575-9dfa-07568bc27a4f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lookback = 7d; \\nlet timeframe = 1h; \\nlet GlobalAdminsRemoved = AuditLogs + \\n| where TimeGenerated > ago(timeframe) \\n| where Category =~ \\\"RoleManagement\\\" + \\n| where AADOperationType in (\\\"Unassign\\\", \\\"RemoveEligibleRole\\\") + \\n| where ActivityDisplayName has_any (\\\"Remove member from role\\\", \\\"Remove + eligible member from role\\\") \\n| mv-expand TargetResources \\n| mv-expand + TargetResources.modifiedProperties \\n| extend displayName_ = tostring(TargetResources_modifiedProperties.displayName) + \\n| where displayName_ =~ \\\"Role.DisplayName\\\" \\n| extend RoleName = + tostring(parse_json(tostring(TargetResources_modifiedProperties.oldValue))) + \\n| where RoleName == \\\"Global Administrator\\\" // Add other Privileged + role if applicable \\n| extend InitiatingApp = tostring(parse_json(tostring(InitiatedBy.app)).displayName) + \\n| extend Initiator = iif(isnotempty(InitiatingApp), InitiatingApp, tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)) + \\n| where Initiator != \\\"MS-PIM\\\" // Filtering PIM events \\n| extend + Target = tostring(TargetResources.userPrincipalName) \\n| summarize RemovedGlobalAdminTime + = max(TimeGenerated), TargetAdmins = make_set(Target) by OperationName, RoleName, + Initiator, Result; \\nlet GlobalAdminsAdded = AuditLogs \\n| where TimeGenerated + > ago(lookback) \\n| where Category =~ \\\"RoleManagement\\\" \\n| where AADOperationType + in (\\\"Assign\\\", \\\"AssignEligibleRole\\\") \\n| where ActivityDisplayName + has_any (\\\"Add eligible member to role\\\", \\\"Add member to role\\\") + and Result == \\\"success\\\" \\n| mv-expand TargetResources \\n| mv-expand + TargetResources.modifiedProperties \\n| extend displayName_ = tostring(TargetResources_modifiedProperties.displayName) + \\n| where displayName_ =~ \\\"Role.DisplayName\\\" \\n| extend RoleName = + tostring(parse_json(tostring(TargetResources_modifiedProperties.newValue))) + \\n| where RoleName == \\\"Global Administrator\\\" // Add other Privileged + role if applicable \\n| extend InitiatingApp = tostring(parse_json(tostring(InitiatedBy.app)).displayName) + \\n| extend Initiator = iif(isnotempty(InitiatingApp), InitiatingApp, tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)) + \\n| where Initiator != \\\"MS-PIM\\\" // Filtering PIM events \\n| extend + Target = tostring(TargetResources.userPrincipalName) \\n| summarize AddedGlobalAdminTime + = max(TimeGenerated) by OperationName, RoleName, Target, Initiator, Result + \\n| extend AccountCustomEntity = Target; \\nGlobalAdminsAdded \\n| join kind= + inner GlobalAdminsRemoved on $left.Target == $right.Initiator \\n| where AddedGlobalAdminTime + < RemovedGlobalAdminTime \\n| extend NoofAdminsRemoved = array_length(TargetAdmins) + \\n| where NoofAdminsRemoved > 1\\n| project AddedGlobalAdminTime, Initiator, + Target, AccountCustomEntity, RemovedGlobalAdminTime, TargetAdmins, NoofAdminsRemoved\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1531\"],\"displayName\":\"Multiple + admin membership removals from newly created admin.\",\"description\":\"This + query detects when newly created Global admin removes multiple existing global + admins which can be an attempt by adversaries to lock down organization and + retain sole access. \\n Investigate reasoning and intention of multiple membership + removal by new Global admins and take necessary actions accordingly.\",\"lastUpdatedDateUTC\":\"2022-03-24T00:00:00Z\",\"createdDateUTC\":\"2022-03-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/be52662c-3b23-435a-a6fa-f39bdfc849e6\",\"name\":\"be52662c-3b23-435a-a6fa-f39bdfc849e6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 10;\\nQualysHostDetection_CL\\n| mv-expand todynamic(Detections_s)\\n| + where Detections_s.Severity == \\\"5\\\"\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated), count() by NetBios_s, IPAddress\\n| where count_ + >= threshold\\n| extend timestamp = StartTime, HostCustomEntity = NetBios_s, + IPCustomEntity = IPAddress\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"High + Number of Urgent Vulnerabilities Detected\",\"description\":\"This Creates + an incident when a host has a high number of Urgent, severity 5, vulnerabilities + detected.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"QualysVulnerabilityManagement\",\"dataTypes\":[\"QualysHostDetection_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/45b903c5-6f56-4969-af10-ae62ac709718\",\"name\":\"45b903c5-6f56-4969-af10-ae62ac709718\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\n(union isfuzzy=true\\n(SecurityEvent\\n| + where TimeGenerated >= ago(endtime)\\n| where EventID == 4624 and LogonType + == 10\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), + ConnectionCount = count()\\nby Account = tolower(Account), Computer = toupper(Computer), + IpAddress, AccountType, Activity, LogonTypeName, ProcessName\\n// use left + anti to exclude anything from the previous 14 days that is not rare\\n),\\n(WindowsEvent\\n| + where TimeGenerated >= ago(endtime)\\n| where EventID == 4624 and EventData + has (\\\"10\\\")\\n| extend LogonType = tostring(EventData.LogonType)\\n| + where LogonType == 10 \\n| extend Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| extend ProcessName = tostring(EventData.ProcessName)\\n| + extend IpAddress = tostring(EventData.IpAddress)\\n| extend TargetUserSid + = tostring(EventData.TargetUserSid)\\n| extend AccountType=case(Account endswith + \\\"$\\\" or TargetUserSid in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), + \\\"Machine\\\", isempty(TargetUserSid), \\\"\\\", \\\"User\\\")\\n| extend + Activity=\\\"4624 - An account was successfully logged on.\\\"\\n| extend + LogonTypeName=\\\"10 - RemoteInteractive\\\"\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated), ConnectionCount = count()\\nby Account = tolower(Account), + Computer = toupper(Computer), IpAddress, AccountType, Activity, LogonTypeName, + ProcessName\\n))\\n| join kind=leftanti (\\n(union isfuzzy=true\\n(SecurityEvent\\n| + where TimeGenerated between (ago(starttime) .. ago(endtime))\\n| where EventID + == 4624\\n| summarize by Computer = toupper(Computer), IpAddress, Account + = tolower(Account)\\n),\\n( WindowsEvent\\n| where TimeGenerated between (ago(starttime) + .. ago(endtime))\\n| where EventID == 4624\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + extend Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| summarize by Computer = toupper(Computer), + IpAddress, Account = tolower(Account)\\n))\\n) on Account, Computer\\n| summarize + StartTime = min(StartTime), EndTime = max(EndTime), ConnectionCount = sum(ConnectionCount)\\nby + Account, Computer, IpAddress, AccountType, Activity, LogonTypeName, ProcessName\\n| + extend timestamp = StartTime, AccountCustomEntity = Account, HostCustomEntity + = Computer, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"LateralMovement\"],\"techniques\":[\"T1021\"],\"displayName\":\"Rare + RDP Connections\",\"description\":\"Identifies when an RDP connection is new + or rare related to any logon type by a given account today based on comparison + with the previous 14 days.\\nRDP connections are indicated by the EventID + 4624 with LogonType = 10\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2020-01-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e42e889a-caaf-4dbb-aec6-371b37d64298\",\"name\":\"e42e889a-caaf-4dbb-aec6-371b37d64298\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"AuditLogs\\n| + where OperationName has_any (\\\"Add service principal\\\", \\\"Certificates + and secrets management\\\")\\n| where Result =~ \\\"success\\\"\\n| mv-expand + target = TargetResources\\n| where tostring(InitiatedBy.user.userPrincipalName) + has \\\"@\\\" or tostring(InitiatedBy.app.displayName) has \\\"@\\\"\\n| extend + targetDisplayName = tostring(TargetResources[0].displayName)\\n| extend targetId + = tostring(TargetResources[0].id)\\n| extend targetType = tostring(TargetResources[0].type)\\n| + extend keyEvents = TargetResources[0].modifiedProperties\\n| mv-expand keyEvents\\n| + where keyEvents.displayName =~ \\\"KeyDescription\\\"\\n| extend new_value_set + = parse_json(tostring(keyEvents.newValue))\\n| extend old_value_set = parse_json(tostring(keyEvents.oldValue))\\n| + where old_value_set != \\\"[]\\\"\\n| extend diff = set_difference(new_value_set, + old_value_set)\\n| where isnotempty(diff)\\n| parse diff with * \\\"KeyIdentifier=\\\" + keyIdentifier:string \\\",KeyType=\\\" keyType:string \\\",KeyUsage=\\\" keyUsage:string + \\\",DisplayName=\\\" keyDisplayName:string \\\"]\\\" *\\n| where keyUsage + == \\\"Verify\\\" or keyUsage == \\\"\\\"\\n| extend UserAgent = iff(AdditionalDetails[0].key + == \\\"User-Agent\\\",tostring(AdditionalDetails[0].value),\\\"\\\")\\n| extend + InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.app.displayName))\\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\\n// + The below line is currently commented out but Microsoft Sentinel users can + modify this query to show only Application or only Service Principal events + in their environment\\n//| where targetType =~ \\\"Application\\\" // or targetType + =~ \\\"ServicePrincipal\\\"\\n| project-away diff, new_value_set, old_value_set\\n| + project-reorder TimeGenerated, OperationName, InitiatingUserOrApp, InitiatingIpAddress, + UserAgent, targetDisplayName, targetId, targetType, keyDisplayName, keyType, + keyUsage, keyIdentifier, CorrelationId, TenantId\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"InitiatingUserOrApp\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"InitiatingIpAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1550\"],\"displayName\":\"NRT + New access credential added to Application or Service Principal\",\"description\":\"This + will alert when an admin or app owner account adds a new credential to an + Application or Service Principal where a verify KeyCredential was already + present for the app.\\nIf a threat actor obtains access to an account with + sufficient privileges and adds the alternate authentication material triggering + this event, the threat actor can now authenticate as the Application or Service + Principal using this credential.\\nAdditional information on OAuth Credential + Grants can be found in RFC 6749 Section 4.4 or https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow\\nFor + further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2020-11-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b79f6190-d104-4691-b7db-823e05980895\",\"name\":\"b79f6190-d104-4691-b7db-823e05980895\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"let + Keywords = dynamic([\\\"helpdesk\\\", \\\" alert\\\", \\\" suspicious\\\", + \\\"fake\\\", \\\"malicious\\\", \\\"phishing\\\", \\\"spam\\\", \\\"do not + click\\\", \\\"do not open\\\", \\\"hijacked\\\", \\\"Fatal\\\"]);\\nOfficeActivity\\n| + where OfficeWorkload =~ \\\"Exchange\\\"\\n| where Parameters has \\\"Deleted + Items\\\" or Parameters has \\\"Junk Email\\\" or Parameters has \\\"DeleteMessage\\\"\\n| + extend Events=todynamic(Parameters)\\n| parse Events with * \\\"SubjectContainsWords\\\" + SubjectContainsWords '}'*\\n| parse Events with * \\\"BodyContainsWords\\\" + BodyContainsWords '}'*\\n| parse Events with * \\\"SubjectOrBodyContainsWords\\\" + SubjectOrBodyContainsWords '}'*\\n| where SubjectContainsWords has_any (Keywords)\\n + or BodyContainsWords has_any (Keywords)\\n or SubjectOrBodyContainsWords has_any + (Keywords)\\n| extend ClientIPAddress = case( ClientIP has \\\".\\\", tostring(split(ClientIP,\\\":\\\")[0]), + ClientIP has \\\"[\\\", tostring(trim_start(@'[[]',tostring(split(ClientIP,\\\"]\\\")[0]))), + ClientIP )\\n| extend Keyword = iff(isnotempty(SubjectContainsWords), SubjectContainsWords, + (iff(isnotempty(BodyContainsWords),BodyContainsWords,SubjectOrBodyContainsWords + )))\\n| extend RuleDetail = case(OfficeObjectId contains '/' , tostring(split(OfficeObjectId, + '/')[-1]) , tostring(split(OfficeObjectId, '\\\\\\\\')[-1]))\\n| summarize + count(), StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) + by UserId, ClientIPAddress, ResultStatus, Keyword, OriginatingServer, OfficeObjectId, + RuleDetail\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"UserId\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"OriginatingServer\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ClientIPAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\",\"DefenseEvasion\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"NRT + Malicious Inbox Rule\",\"description\":\"Often times after the initial compromise + the attackers create inbox rules to delete emails that contain certain keywords.\\n + This is done so as to limit ability to warn compromised users that they've + been compromised. Below is a sample query that tries to detect this.\\nReference: + https://www.reddit.com/r/sysadmin/comments/7kyp0a/recent_phishing_attempts_my_experience_and_what/\",\"lastUpdatedDateUTC\":\"2022-03-07T00:00:00Z\",\"createdDateUTC\":\"2020-03-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a255ca7d-ea19-4b7b-8d88-a51ce1c72c29\",\"name\":\"a255ca7d-ea19-4b7b-8d88-a51ce1c72c29\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.2\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.1\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1531\"],\"displayName\":\"(Preview) + UEBA Anomalous Privilege Granted\",\"description\":\"Adversaries may add adversary-controlled + credentials for Azure Service Principals in addition to existing legitimate + credentials to maintain persistent access to victim Azure accounts.\\nSentinel + UEBA detects anomalies based on dynamic baselines created for each entity + across various data inputs. Each entity\xE2\u20AC\u2122s baseline behavior + is set according to its own historical activities,\\nthose of its peers, and + those of the organization as a whole. Anomalies can be triggered by the correlation + of different attributes such as action type, geo location, device, resource, + ISP, and more.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2022-01-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/faf1a6ff-53b5-4f92-8c55-4b20e9957594\",\"name\":\"faf1a6ff-53b5-4f92-8c55-4b20e9957594\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"SecurityEvent\\n// + Look for specific Directory Service Changes and parse data\\n| where EventID + == 5136\\n| extend EventData = parse_xml(EventData).EventData.Data\\n| mv-expand + bagexpansion = array EventData\\n| evaluate bag_unpack(EventData)\\n| extend + Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value),TimeGenerated, EventID, Computer, + Account, AccountType, EventSourceName, Activity, SubjectAccount)\\n// Where + changes relate to Exchange OAB\\n| extend ObjectClass = column_ifexists(\\\"ObjectClass\\\", + \\\"\\\")\\n| where ObjectClass =~ \\\"msExchOABVirtualDirectory\\\"\\n// + Look for InternalHostName or ExternalHostName properties being changed\\n| + extend AttributeLDAPDisplayName = column_ifexists(\\\"AttributeLDAPDisplayName\\\", + \\\"\\\")\\n| where AttributeLDAPDisplayName in (\\\"msExchExternalHostName\\\", + \\\"msExchInternalHostName\\\")\\n// Look for suspected webshell activity\\n| + extend AttributeValue = column_ifexists(\\\"AttributeValue\\\", \\\"\\\")\\n| + where AttributeValue has \\\"script\\\"\\n| project-rename LastSeen = TimeGenerated\\n| + extend ObjectDN = column_ifexists(\\\"ObjectDN\\\", \\\"\\\")\\n| project-reorder + LastSeen, Computer, Account, ObjectDN, AttributeLDAPDisplayName, AttributeValue\\n| + extend timestamp = LastSeen, AccountCustomEntity = Account, HostCustomEntity + = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"Exchange + OAB Virtual Directory Attribute Containing Potential Webshell\",\"description\":\"This + query uses Windows Event ID 5136 in order to detect potential webshell deployment + by exploitation of CVE-2021-27065.\\nThis query looks for changes to the InternalHostName + or ExternalHostName properties of Exchange OAB Virtual Directory objects in + AD Directory Services\\nwhere the new objects contain potential webshell objects. + Ref: https://aka.ms/ExchangeVulns\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-03-17T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b3cfc7c0-092c-481c-a55b-34a3979758cb\",\"name\":\"b3cfc7c0-092c-481c-a55b-34a3979758cb\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Microsoft + Cloud App Security\",\"displayName\":\"Create incidents based on Microsoft + Cloud App Security alerts\",\"description\":\"Create incidents based on all + alerts generated in Microsoft Defender for Cloud Apps\",\"lastUpdatedDateUTC\":\"2019-07-16T00:00:00Z\",\"createdDateUTC\":\"2019-07-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftCloudAppSecurity\",\"dataTypes\":[\"SecurityAlert + (MCAS)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/eb68b129-5f17-4f56-bf6d-dde48d5e615a\",\"name\":\"eb68b129-5f17-4f56-bf6d-dde48d5e615a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 10m;\\nProofpointPOD\\n| where TimeGenerated > ago(lbtime)\\n| where + EventType == 'message'\\n| where NetworkDirection == 'inbound'\\n| where FilterDisposition + !in ('reject', 'discard')\\n| extend attachedMimeType = todynamic(MsgParts)[0]['detectedMime']\\n| + where attachedMimeType == 'application/zip'\\n| project SrcUserUpn, DstUserUpn\\n| + extend AccountCustomEntity = DstUserUpn\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"ProofpointPOD + - Binary file in attachment\",\"description\":\"Detects when email recieved + with binary file as attachment.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c0e84221-f240-4dd7-ab1e-37e034ea2a4e\",\"name\":\"c0e84221-f240-4dd7-ab1e-37e034ea2a4e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"union + isfuzzy=true\\n(DeviceFileEvents\\n| where FolderPath endswith \\\"vmware-vmdmp.log\\\"\\n| + extend HostCustomEntity = DeviceName, timestamp=TimeGenerated),\\n(WindowsEvent\\n| + where EventID == 4663 and EventData has \\\"vmware-vmdmp.log\\\"\\n| extend + ObjectName = tostring(EventData.ObjectName) \\n| where ObjectName endswith + \\\"vmware-vmdmp.log\\\"\\n| extend HostCustomEntity = Computer, timestamp=TimeGenerated),\\n(SecurityEvent\\n| + where EventID == 4663\\n| where ObjectName endswith \\\"vmware-vmdmp.log\\\"\\n| + extend HostCustomEntity = Computer, timestamp=TimeGenerated),\\n(imFileEvent\\n| + where TargetFileName endswith \\\"vmware-vmdmp.log\\\"\\n| extend HostCustomEntity + = DvcHostname, timestamp=TimeGenerated\\n)\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1554\"],\"displayName\":\"SUNSPOT + log file creation\",\"description\":\"This query uses Microsoft Defender for + Endpoint data and Windows Event Logs to look for IoCs associated with the + SUNSPOT malware shared by Crowdstrike.\\nMore details: \\n - https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/ + \\n - https://techcommunity.microsoft.com/t5/azure-sentinel/monitoring-your-software-build-process-with-azure-sentinel/ba-p/2140807\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceFileEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5b6ae038-f66e-4f74-9315-df52fd492be4\",\"name\":\"5b6ae038-f66e-4f74-9315-df52fd492be4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"imProcess\\n + \ | where CommandLine has_all (\\\"accepteula\\\", \\\"-s\\\", \\\"-r\\\", + \\\"-q\\\")\\n | where Process !endswith \\\"sdelete.exe\\\"\\n | where + CommandLine !has \\\"sdelete\\\"\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"DvcHostname\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"DvcIpAddr\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"ActorUsername\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"DefenseEvasion\",\"Impact\"],\"techniques\":[\"T1485\",\"T1036\"],\"displayName\":\"Potential + re-named sdelete usage (ASIM Version)\",\"description\":\"This detection looks + for command line parameters associated with the use of Sysinternals sdelete + (https://docs.microsoft.com/sysinternals/downloads/sdelete) to delete multiple + files on a host's C drive.\\nA threat actor may re-name the tool to avoid + detection and then use it for destructive attacks on a host.\\nThis detection + uses the ASIM imProcess parser, this will need to be deployed before use - + https://docs.microsoft.com/azure/sentinel/normalization\",\"lastUpdatedDateUTC\":\"2022-03-02T00:00:00Z\",\"createdDateUTC\":\"2022-02-25T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8c8de3fa-6425-4623-9cd9-45de1dd0569a\",\"name\":\"8c8de3fa-6425-4623-9cd9-45de1dd0569a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lookBack = 14d;\\nlet timeframe = 1d;\\nlet user_agents_list = Cisco_Umbrella\\n| + where EventType == \\\"proxylogs\\\"\\n| where TimeGenerated > ago(lookBack) + and TimeGenerated < ago(timeframe)\\n| summarize count() by HttpUserAgentOriginal\\n| + summarize make_list(HttpUserAgentOriginal);\\nCisco_Umbrella\\n| where EventType + == \\\"proxylogs\\\"\\n| where TimeGenerated > ago(timeframe)\\n| where HttpUserAgentOriginal + !in (user_agents_list)\\n| extend Message = \\\"Rare User Agent\\\"\\n| project + Message, SrcIpAddr, DstIpAddr, UrlOriginal, TimeGenerated, HttpUserAgentOriginal\\n| + extend IpCustomEntity = SrcIpAddr, UrlCustomEntity = UrlOriginal\",\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Cisco + Umbrella - Rare User Agent Detected\",\"description\":\"Rule helps to detect + a rare user-agents indicating web browsing activity by an unusual process + other than a web browser.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/02ef8d7e-fc3a-4d86-a457-650fa571d8d2\",\"name\":\"02ef8d7e-fc3a-4d86-a457-650fa571d8d2\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + logonDiff = 10m;\\nlet aadFunc = (tableName:string){\\ntable(tableName) \\n| + where ResultType == \\\"0\\\" \\n| where AppDisplayName !in (\\\"Office 365 + Exchange Online\\\", \\\"Skype for Business Online\\\")\\n| project SuccessLogonTime + = TimeGenerated, UserPrincipalName, SuccessIPAddress = IPAddress, AppDisplayName, + SuccessIPBlock = strcat(split(IPAddress, \\\".\\\")[0], \\\".\\\", split(IPAddress, + \\\".\\\")[1]), Type\\n| join kind= inner (\\n table(tableName)\\n | + where ResultType !in (\\\"0\\\", \\\"50140\\\") \\n | where ResultDescription + !~ \\\"Other\\\" \\n | where AppDisplayName !in (\\\"Office 365 Exchange + Online\\\", \\\"Skype for Business Online\\\")\\n | project FailedLogonTime + = TimeGenerated, UserPrincipalName, FailedIPAddress = IPAddress, AppDisplayName, + ResultType, ResultDescription, Type\\n) on UserPrincipalName, AppDisplayName + \\n| where SuccessLogonTime < FailedLogonTime and FailedLogonTime - SuccessLogonTime + <= logonDiff and FailedIPAddress !startswith SuccessIPBlock\\n| summarize + FailedLogonTime = max(FailedLogonTime), SuccessLogonTime = max(SuccessLogonTime) + by UserPrincipalName, SuccessIPAddress, AppDisplayName, FailedIPAddress, ResultType, + ResultDescription, Type\\n| extend timestamp = SuccessLogonTime\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"UserPrincipalName\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SuccessIPAddress\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"FailedIPAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CredentialAccess\",\"InitialAccess\"],\"techniques\":[\"T1110\",\"T1078\"],\"displayName\":\"Successful + logon from IP and failure from a different IP\",\"description\":\"Identifies + when a user account successfully logs onto an Azure App from one IP and within + 10 mins failed to logon to the same App via a different IP.\\nThis may indicate + a malicious attempt at password guessing based on knowledge of the users account.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/16d55bbb-8c54-4c1d-8537-521824e76bb6\",\"name\":\"16d55bbb-8c54-4c1d-8537-521824e76bb6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.2\",\"customizableObservations\":{\"multiSelectObservations\":[{\"supportedValues\":[\"Distinct + number of operations\",\"Distinct number of ClientInfoString\",\"Distinct + number of mailboxes\",\"Number of operations\",\"Distinct number of IP addresses\",\"Distinct + number of /24 subnets\",\"Distinct number of /16 subnets\",\"Number of MessageBind + operations\",\"Number of FolderBind operations\",\"Number of UpdateInboxRules + operations\",\"Number of MailItemsAccessed operations\"],\"values\":[\"Distinct + number of operations\",\"Distinct number of ClientInfoString\",\"Distinct + number of mailboxes\",\"Number of operations\",\"Distinct number of IP addresses\",\"Distinct + number of /24 subnets\",\"Distinct number of /16 subnets\",\"Number of MessageBind + operations\",\"Number of FolderBind operations\",\"Number of UpdateInboxRules + operations\",\"Number of MailItemsAccessed operations\"],\"supportedValuesKql\":null,\"valuesKql\":null,\"name\":\"Top + reason for high anomaly score\",\"description\":\"Include only anomalies where + the top reason is one of these values.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.6\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Collection\",\"Persistence\"],\"techniques\":[\"T1114\",\"T1213\",\"T1098\",\"T1136\",\"T1137\",\"T1505\",\"T1078\"],\"displayName\":\"(Preview) + Anomalous user activities in Office Exchange\",\"description\":\"This machine + learning model groups the Office Exchange logs on a per-user basis into hourly + buckets. We define one\\nhour as a session. The model is trained on the previous + 7 days of behavior across all regular (non-admin) users.\\nIt indicates anomalous + user Office Exchange sessions in the last day.\\nThis algorithm checks for + sufficient volume of data before training the model.\\n\\nAn autoencoder model + is used.\\nIts aim is to compress the user Office Exchange sessions into a + bottleneck encoding.\\nIt then attempts to reconstruct the input sessions + as best it can from the bottleneck encoding.\\nThe sessions with high reconstruction + errors are assumed to be anomalous.\",\"lastUpdatedDateUTC\":\"2021-06-09T00:00:00Z\",\"createdDateUTC\":\"2021-02-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity + (Exchange)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9736e5f1-7b6e-4bfb-a708-e53ff1d182c3\",\"name\":\"9736e5f1-7b6e-4bfb-a708-e53ff1d182c3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":1,\"severity\":\"Low\",\"query\":\"let + tokens = dynamic([\\\"416\\\",\\\"208\\\",\\\"128\\\",\\\"120\\\",\\\"96\\\",\\\"80\\\",\\\"72\\\",\\\"64\\\",\\\"48\\\",\\\"44\\\",\\\"40\\\",\\\"g5\\\",\\\"gs5\\\",\\\"g4\\\",\\\"gs4\\\",\\\"nc12\\\",\\\"nc24\\\",\\\"nv12\\\"]);\\nlet + operationList = dynamic([\\\"microsoft.compute/virtualmachines/write\\\", + \\\"microsoft.resources/deployments/write\\\"]);\\nAzureActivity\\n| where + tolower(OperationNameValue) in (operationList)\\n| where ActivityStatusValue + == \\\"Accepted\\\" \\n| where isnotempty(Properties)\\n| extend vmSize = + tolower(tostring(parse_json(tostring(parse_json(tostring(parse_json(tostring(parse_json(Properties).responseBody)).properties)).hardwareProfile)).vmSize))\\n| + where isnotempty(vmSize)\\n| where vmSize has_any (tokens) \\n| extend ComputerName + = tostring(parse_json(tostring(parse_json(tostring(parse_json(tostring(parse_json(Properties).responseBody)).properties)).osProfile)).computerName)\\n| + extend clientIpAddress = tostring(parse_json(HTTPRequest).clientIpAddress)\\n| + project TimeGenerated, OperationNameValue, ActivityStatusValue, Caller, CallerIpAddress, + ComputerName, vmSize\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = Caller, IPCustomEntity = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"Creation + of expensive computes in Azure\",\"description\":\"Identifies the creation + of large size/expensive VMs (GPU or with large no of virtual CPUs) in Azure.\\nAdversary + may create new or update existing virtual machines sizes to evade defenses + \\nor use it for cryptomining purposes.\\nFor Windows/Linux Vm Sizes - https://docs.microsoft.com/azure/virtual-machines/windows/sizes + \\nAzure VM Naming Conventions - https://docs.microsoft.com/azure/virtual-machines/vm-naming-conventions\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-08-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/78422ef2-62bf-48ca-9bab-72c69818a425\",\"name\":\"78422ef2-62bf-48ca-9bab-72c69818a425\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P8D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + endtime = 1d;\\nlet starttime = 8d;\\nlet threshold = 2.0;\\n(union isfuzzy=true\\n(SecurityEvent\\n| + where TimeGenerated >= ago(endtime)\\n| where EventID == 4624 and LogonType + == 10\\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + ComputerCountToday = dcount(Computer), ComputerSet = makeset(Computer), ProcessSet + = makeset(ProcessName)\\nby Account, IpAddress, AccountType, Activity, LogonTypeName),\\n(WindowsEvent\\n| + where TimeGenerated >= ago(endtime)\\n| where EventID == 4624 \\n| extend + LogonType = tostring(EventData.LogonType)\\n| where LogonType == 10\\n| extend + ProcessName = tostring(EventData.ProcessName)\\n| extend Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + extend TargetUserSid = tostring(EventData.TargetUserSid)\\n| extend AccountType=case(Account + endswith \\\"$\\\" or TargetUserSid in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", + \\\"S-1-5-20\\\"), \\\"Machine\\\", isempty(TargetUserSid), \\\"\\\", \\\"User\\\")\\n| + extend Activity=\\\"4624 - An account was successfully logged on.\\\"\\n| + extend LogonTypeName=\\\"10 - RemoteInteractive\\\"\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), ComputerCountToday + = dcount(Computer), ComputerSet = makeset(Computer), ProcessSet = makeset(ProcessName)\\nby + Account, IpAddress, AccountType, Activity, LogonTypeName)\\n)\\n| join kind=inner + (\\n(union isfuzzy=true\\n(SecurityEvent\\n| where TimeGenerated >= ago(starttime) + and TimeGenerated < ago(endtime)\\n| where EventID == 4624 and LogonType == + 10\\n| summarize ComputerCountPrev7Days = dcount(Computer) by Account = tolower(Account), + IpAddress\\n),\\n( WindowsEvent\\n| where TimeGenerated >= ago(starttime) + and TimeGenerated < ago(endtime)\\n| where EventID == 4624 and EventData + has (\\\"10\\\")\\n| extend LogonType = toint(EventData.LogonType)\\n| where + \ LogonType == 10\\n| extend Account = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| extend IpAddress = tostring(EventData.IpAddress)\\n| + summarize ComputerCountPrev7Days = dcount(Computer) by Account = tolower(Account), + IpAddress)\\n)\\n) on Account, IpAddress\\n| extend Ratio = iff(isempty(ComputerCountPrev7Days), + toreal(ComputerCountToday), ComputerCountToday / (ComputerCountPrev7Days * + 1.0))\\n// Where the ratio of today to previous 7 days is more than double.\\n| + where Ratio > threshold\\n| project StartTimeUtc, EndTimeUtc, Account, IpAddress, + ComputerSet, ComputerCountToday, ComputerCountPrev7Days, Ratio, AccountType, + Activity, LogonTypeName, ProcessSet\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = Account, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"LateralMovement\"],\"techniques\":[\"T1021\"],\"displayName\":\"Multiple + RDP connections from Single System\",\"description\":\"Identifies when an + RDP connection is made to multiple systems and above the normal for the previous + 7 days.\\nConnections from the same system with the same account within the + same day.\\nRDP connections are indicated by the EventID 4624 with LogonType + = 10\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-10-21T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4d94d4a9-dc96-450a-9dea-4d4d4594199b\",\"name\":\"4d94d4a9-dc96-450a-9dea-4d4d4594199b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"SecurityNestedRecommendation\\n| + where RemediationDescription has 'CVE-2021-38647'\\n| parse ResourceDetails + with * 'virtualMachines/' VirtualMAchine '\\\"' *\\n| summarize arg_min(TimeGenerated, + *) by TenantId, RecommendationSubscriptionId, VirtualMAchine, RecommendationName,Description,RemediationDescription, + tostring(AdditionalData),VulnerabilityId\\n| extend Timestamp = TimeGenerated, + HostCustomEntity = VirtualMAchine\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"InitialAccess\",\"Execution\"],\"techniques\":[\"T1190\",\"T1203\"],\"displayName\":\"Vulnerable + Machines related to OMIGOD CVE-2021-38647\",\"description\":\"This query uses + the Azure Defender Security Nested Recommendations data to find machines vulnerable + to OMIGOD CVE-2021-38647. OMI is the Linux equivalent of Windows WMI and \\n + helps users manage configurations across remote and local environments. The + query aims to find machines that have this OMI vulnerability (CVE-2021-38647).\\n + Security Nested Recommendations data is sent to Microsoft Sentinel using the + continuous export feature of Azure Defender(refrence link below).\\n Reference: + https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure\\n Reference: + https://docs.microsoft.com/azure/security-center/continuous-export?tabs=azure-portal\",\"lastUpdatedDateUTC\":\"2021-11-10T00:00:00Z\",\"createdDateUTC\":\"2021-09-17T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d3980830-dd9d-40a5-911f-76b44dfdce16\",\"name\":\"d3980830-dd9d-40a5-911f-76b44dfdce16\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + aadFunc = (tableName:string){\\ntable(tableName)\\n| where AppDisplayName + == \\\"GitHub.com\\\"\\n| where ResultType == 0\\n| summarize CountOfLocations + = dcount(Location), Locations = make_set(Location), BurstStartTime = min(TimeGenerated), + BurstEndTime = max(TimeGenerated) by UserPrincipalName, Type\\n| where CountOfLocations + > 1\\n| extend timestamp = BurstStartTime, AccountCustomEntity = UserPrincipalName\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"GitHub + Signin Burst from Multiple Locations\",\"description\":\"This alerts when + there Signin burst from multiple locations in GitHub (AAD SSO).\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/70b12a3b-4896-42cb-910c-5ffaf8d7987d\",\"name\":\"70b12a3b-4896-42cb-910c-5ffaf8d7987d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = dynamic([\\\"seoulhobi.biz\\\", \\\"reader.cash\\\", \\\"pieceview.club\\\", + \\\"app-wallet.com\\\", \\\"bigwnet.com\\\", \\\"bitwoll.com\\\", \\\"cexrout.com\\\", + \\\"change-pw.com\\\", \\\"checkprofie.com\\\", \\\"cloudwebappservice.com\\\", + \\\"ctquast.com\\\", \\\"dataviewering.com\\\", \\\"day-post.com\\\", \\\"dialy-post.com\\\", + \\\"documentviewingcom.com\\\", \\\"dovvn-mail.com\\\", \\\"down-error.com\\\", + \\\"drivecheckingcom.com\\\", \\\"drog-service.com\\\", \\\"encodingmail.com\\\", + \\\"filinvestment.com\\\", \\\"foldershareing.com\\\", \\\"golangapis.com\\\", + \\\"hotrnall.com\\\", \\\"lh-logins.com\\\", \\\"login-use.com\\\", \\\"mail-down.com\\\", + \\\"matmiho.com\\\", \\\"mihomat.com\\\", \\\"natwpersonal-online.com\\\", + \\\"nidlogin.com\\\", \\\"nid-login.com\\\", \\\"nidlogon.com\\\", \\\"pw-change.com\\\", + \\\"rnaii.com\\\", \\\"rnailm.com\\\", \\\"sec-live.com\\\", \\\"secrityprocessing.com\\\", + \\\"securitedmode.com\\\", \\\"securytingmail.com\\\", \\\"set-login.com\\\", + \\\"usrchecking.com\\\", \\\"com-serviceround.info\\\", \\\"mai1.info\\\", + \\\"reviewer.mobi\\\", \\\"files-download.net\\\", \\\"fixcool.net\\\", \\\"hanrnaii.net\\\", + \\\"office356-us.org\\\", \\\"smtper.org\\\"]);\\n(union isfuzzy=true\\n(CommonSecurityLog + \\n| parse Message with * '(' DNSName ')' * \\n| where isnotempty(FileHash)\\n| + where DNSName in~ (DomainNames)\\n| extend Account = SourceUserID, Computer + = DeviceName, IPAddress = SourceIP\\n),\\n(_Im_Dns (domain_has_any=DomainNames)\\n| + extend DNSName = DnsQuery\\n| extend IPAddress = SrcIpAddr\\n),\\n(VMConnection + \\n| parse RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' *\\n| where + isnotempty(DNSName)\\n| where DNSName in~ (DomainNames)\\n| extend IPAddress + = RemoteIp\\n),\\n(AzureDiagnostics \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| + where Category == \\\"AzureFirewallApplicationRule\\\"\\n| parse msg_s with + Protocol 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' + DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (DomainNames) \\n| extend DNSName = DestinationHost + \\n| extend IPAddress = SourceHost \\n)\\n)\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity + = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.4.1\",\"tactics\":[\"CommandAndControl\",\"CredentialAccess\"],\"displayName\":\"THALLIUM + domains included in DCU takedown\",\"description\":\"THALLIUM spearphishing + and command and control domains included in December 2019 DCU/MSTIC takedown. + \\n Matches domain name IOCs related to the THALLIUM activity group with CommonSecurityLog, + DnsEvents, VMConnection and SecurityEvents dataTypes.\\n References: https://blogs.microsoft.com/on-the-issues/2019/12/30/microsoft-court-action-against-nation-state-cybercrime/ + \",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2020-01-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4d94d4a9-dc96-410a-8dea-4d4d4584188b\",\"name\":\"4d94d4a9-dc96-410a-8dea-4d4d4584188b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + OperationList = dynamic([\\\"Add member to role\\\",\\\"Add member to role + in PIM requested (permanent)\\\"]);\\nlet PrivilegedGroups = dynamic([\\\"UserAccountAdmins\\\",\\\"PrivilegedRoleAdmins\\\",\\\"TenantAdmins\\\"]);\\nAuditLogs\\n//| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"RoleManagement\\\"\\n| + where OperationName in~ (OperationList)\\n| mv-expand TargetResources\\n| + extend modProps = parse_json(TargetResources).modifiedProperties\\n| mv-expand + bagexpansion=array modProps\\n| evaluate bag_unpack(modProps)\\n| extend displayName + = column_ifexists(\\\"displayName\\\", \\\"NotAvailable\\\"), newValue = column_ifexists(\\\"newValue\\\", + \\\"NotAvailable\\\")\\n| where displayName =~ \\\"Role.WellKnownObjectName\\\"\\n| + extend DisplayName = displayName, GroupName = replace('\\\"','',newValue)\\n| + extend initByApp = parse_json(InitiatedBy).app, initByUser = parse_json(InitiatedBy).user\\n| + extend AppId = initByApp.appId, \\nInitiatedByDisplayName = case(isnotempty(initByApp.displayName), + initByApp.displayName, isnotempty(initByUser.displayName), initByUser.displayName, + \\\"not available\\\"),\\nServicePrincipalId = tostring(initByApp.servicePrincipalId),\\nServicePrincipalName + = tostring(initByApp.servicePrincipalName),\\nUserId = initByUser.id,\\nUserIPAddress + = initByUser.ipAddress,\\nUserRoles = initByUser.roles,\\nUserPrincipalName + = tostring(initByUser.userPrincipalName),\\nTargetUserPrincipalName = tostring(TargetResources.userPrincipalName)\\n| + where GroupName in~ (PrivilegedGroups)\\n// If you don't want to alert for + operations from PIM, remove below filtering for MS-PIM.\\n//| where InitiatedByDisplayName + != \\\"MS-PIM\\\"\\n| project TimeGenerated, AADOperationType, Category, OperationName, + AADTenantId, AppId, InitiatedByDisplayName, ServicePrincipalId, ServicePrincipalName, + DisplayName, GroupName, UserId, UserIPAddress, UserRoles, UserPrincipalName, + TargetUserPrincipalName\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = case(isnotempty(ServicePrincipalName), ServicePrincipalName, isnotempty(ServicePrincipalId), + ServicePrincipalId, isnotempty(UserPrincipalName), UserPrincipalName, \\\"not + available\\\")\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"TargetUserPrincipalName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.3\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"User + added to Azure Active Directory Privileged Groups\",\"description\":\"This + will alert when a user is added to any of the Privileged Groups.\\nFor further + information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\\nFor + Administrator role permissions in Azure Active Directory please see https://docs.microsoft.com/azure/active-directory/users-groups-roles/directory-assign-admin-roles\",\"lastUpdatedDateUTC\":\"2022-03-24T00:00:00Z\",\"createdDateUTC\":\"2020-07-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/50574fac-f8d1-4395-81c7-78a463ff0c52\",\"name\":\"50574fac-f8d1-4395-81c7-78a463ff0c52\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + aadFunc = (tableName:string){\\ntable(tableName)\\n| where AppId =~ \\\"1b730954-1685-4b74-9bfd-dac224a7b894\\\" + // AppDisplayName IS Azure Active Directory PowerShell\\n| where TokenIssuerType + =~ \\\"AzureAD\\\"\\n| where ResourceIdentity !in (\\\"00000002-0000-0000-c000-000000000000\\\", + \\\"00000003-0000-0000-c000-000000000000\\\") // ResourceDisplayName IS NOT + Windows Azure Active Directory OR Microsoft Graph\\n| extend Status = todynamic(Status)\\n| + where Status.errorCode == 0 // Success\\n| project-reorder IPAddress, UserAgent, + ResourceDisplayName, UserDisplayName, UserId, UserPrincipalName, Type\\n| + order by TimeGenerated desc\\n// New entity mapping\\n| extend timestamp = + TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Azure + Active Directory PowerShell accessing non-AAD resources\",\"description\":\"This + will alert when a user or application signs in using Azure Active Directory + PowerShell to access non-Active Directory resources, such as the Azure Key + Vault, which may be undesired or unauthorized behavior.\\nFor capabilities + and expected behavior of the Azure Active Directory PowerShell module, see: + https://docs.microsoft.com/powershell/module/azuread/?view=azureadps-2.0.\\nFor + further information on Azure Active Directory Signin activity reports, see: + https://docs.microsoft.com/azure/active-directory/reports-monitoring/concept-sign-ins.\",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2020-12-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ffe3625d-a933-4f63-b192-7e6ebf3be5fb\",\"name\":\"ffe3625d-a933-4f63-b192-7e6ebf3be5fb\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.2.8\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.1\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"(Preview) + Attempted user account bruteforce\",\"description\":\"This algorithm detects + an unusually high volume of failed login attempts per user account. The model + is trained on the previous 21 days of security event ID 4625 on an account. + It indicates anomalous high volume of failed login attempts in the last day.\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2020-12-08T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bb32dc8a-4f6b-4274-a28f-50f3400070b4\",\"name\":\"bb32dc8a-4f6b-4274-a28f-50f3400070b4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.7\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.5\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + UEBA Anomalous Sign In\",\"description\":\"Adversaries may steal the credentials + of a specific user or service account using Credential\\nAccess techniques + or capture credentials earlier in their reconnaissance process through\\nsocial + engineering for means of gaining Persistence. Sentinel UEBA detects anomalies + based on dynamic baselines created for each entity across various data inputs. + Each entity's baseline behavior is set according to its own historical activities, + those of its peers, and those of the organization as a whole. Anomalies can + be triggered by the correlation of different attributes such as action type, + geo-location, device, resource, ISP, and more.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2021-08-18T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/cca3b4d9-ac39-4109-8b93-65bb284003e6\",\"name\":\"cca3b4d9-ac39-4109-8b93-65bb284003e6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet emailregex = @'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$';\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n//Filtering the table for Email related IOCs\\n| where + isnotempty(EmailSenderAddress)\\n// using innerunique to keep perf fast and + result set low, we only need one match to indicate potential malicious activity + that needs to be investigated\\n| join kind=innerunique (\\n AzureActivity + | where TimeGenerated >= ago(dt_lookBack) and isnotempty(Caller)\\n | extend + Caller = tolower(Caller)\\n | where Caller matches regex emailregex\\n + \ | extend AzureActivity_TimeGenerated = TimeGenerated\\n)\\non $left.EmailSenderAddress + == $right.Caller\\n| where AzureActivity_TimeGenerated < ExpirationDateTime\\n| + summarize AzureActivity_TimeGenerated = arg_max(AzureActivity_TimeGenerated, + *) by IndicatorId, Caller\\n| project AzureActivity_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, + Url, EmailSenderName, EmailRecipient, \\nEmailSourceDomain, EmailSourceIpAddress, + EmailSubject, FileHashValue, FileHashType, Caller, Level, CallerIpAddress, + CategoryValue, OperationNameValue, ActivityStatusValue, \\nResourceGroup, + SubscriptionId\\n| extend timestamp = AzureActivity_TimeGenerated, AccountCustomEntity + = Caller, IPCustomEntity = CallerIpAddress, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Email entity to AzureActivity\",\"description\":\"Identifies a match in + AzureActivity table from any Email IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8595d264-2f64-442d-b293-4e16dffc9882\",\"name\":\"8595d264-2f64-442d-b293-4e16dffc9882\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.6\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1059\"],\"displayName\":\"(Preview) + UEBA Anomalous Code Execution\",\"description\":\"Adversaries may abuse command + and script interpreters to execute commands, scripts, or binaries.\\nThese + interfaces and languages provide ways of interacting with computer systems\\nand + are a common feature across many different platforms.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2021-07-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9122a9cb-916b-4d98-a199-1b7b0af8d598\",\"name\":\"9122a9cb-916b-4d98-a199-1b7b0af8d598\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = dynamic([\\\"beesweiserdog.com\\\", \\n \\\"bluehostfit.com\\\", + \\n \\\"business-toys.com\\\", \\n \\\"cleanskycloud.com\\\", + \\n \\\"cumberbat.com\\\", \\n \\\"czreadsecurity.com\\\", + \\n \\\"dgtresorgouv.com\\\", \\n \\\"dimediamikedask.com\\\", + \\n \\\"diresitioscon.com\\\", \\n \\\"elcolectador.com\\\", + \\n \\\"elperuanos.org\\\", \\n \\\"eprotectioneu.com\\\", + \\n \\\"fheacor.com\\\", \\n \\\"followthewaterdata.com\\\", + \\n \\\"francevrteepress.com\\\", \\n \\\"futtuhy.com\\\", + \\n \\\"gardienweb.com\\\", \\n \\\"heimflugaustr.com\\\", + \\n \\\"ivpsers.com\\\", \\n \\\"jkeducation.org\\\", + \\n \\\"micrlmb.com\\\", \\n \\\"muthesck.com\\\", + \\n \\\"netscalertech.com\\\", \\n \\\"newgoldbalmap.com\\\", + \\n \\\"news-laestrella.com\\\", \\n \\\"noticialif.com\\\", + \\n \\\"opentanzanfoundation.com\\\", \\n \\\"optonlinepress.com\\\", + \\n \\\"palazzochigi.com\\\", \\n \\\"pandemicacre.com\\\", + \\n \\\"papa-ser.com\\\", \\n \\\"pekematclouds.com\\\", + \\n \\\"pipcake.com\\\", \\n \\\"popularservicenter.com\\\", + \\n \\\"projectsyndic.com\\\", \\n \\\"qsadtv.com\\\", + \\n \\\"sankreal.com\\\", \\n \\\"scielope.com\\\", + \\n \\\"seoamdcopywriting.com\\\", \\n \\\"slidenshare.com\\\", + \\n \\\"somoswake.com\\\", \\n \\\"squarespacenow.com\\\", + \\n \\\"subapostilla.com\\\", \\n \\\"suzukicycles.net\\\", + \\n \\\"tatanotakeeps.com\\\", \\n \\\"tijuanazxc.com\\\", + \\n \\\"transactioninfo.net\\\", \\n \\\"eurolabspro.com\\\", + \\n \\\"adelluminate.com\\\", \\n \\\"headhunterblue.com\\\", + \\n \\\"primenuesty.com\\\" \\n ]);\\nlet + SHA256Hashes = dynamic ([\\\"02daf4544bcefb2de865d0b45fc406bee3630704be26a9d6da25c9abe906e7d2\\\", + \\n \\\"0a45ec3da31838aa7f56e4cbe70d5b3b3809029f9159ff0235837e5b7a4cb34c\\\", + \\n \\\"0d7965489810446ca7acc7a2160795b22e452a164261313c634a6529a0090a0c\\\", + \\n \\\"10bb4e056fd19f2debe61d8fc5665434f56064a93ca0ec0bef946a4c3e098b95\\\", + \\n \\\"12d914f24fe5501e09f5edf503820cc5fe8b763827a1c6d44cdb705e48651b21\\\", + \\n \\\"1899f761123fedfeba0fee6a11f830a29cd3653bcdcf70380b72a05b921b4b49\\\", + \\n \\\"22e68e366dd3323e5bb68161b0938da8e1331e4f1c1819c8e84a97e704d93844\\\", + \\n \\\"259783405ec2cb37fdd8fd16304328edbb6a0703bc3d551eba252d9b450554ef\\\", + \\n \\\"26debed09b1bbf24545e3b4501b799b66a0146d4020f882776465b5071e91822\\\", + \\n \\\"35c5f22bb11f7dd7a2bb03808e0337cb7f9c0d96047b94c8afdab63efc0b9bb2\\\", + \\n \\\"3ae2d9ffa4e53519e62cc0a75696f9023f9cce09b0a917f25699b48d0f7c4838\\\", + \\n \\\"3bac2e459c69fcef8c1c93c18e5f4f3e3102d8d0f54a63e0650072aeb2a5fa65\\\", + \\n \\\"3c0bf69f6faf85523d9e60d13218e77122b2adb0136ffebbad0f39f3e3eed4e6\\\", + \\n \\\"3dc0001a11d54925d2591aec4ea296e64f1d4fdf17ff3343ddeea82e9bd5e4f1\\\", + \\n \\\"3fd73af89e94af180b1fbf442bbfb7d7a6c4cf9043abd22ac0aa2f8149bafc90\\\", + \\n \\\"6854df6aa0af46f7c77667c450796d5658b3058219158456e869ebd39a47d54b\\\", + \\n \\\"6b79b807a66c786bd2e57d1c761fc7e69dd9f790ffab7ce74086c4115c9305ce\\\", + \\n \\\"7944a86fbef6238d2a55c14c660c3a3d361c172f6b8fa490686cc8889b7a51a0\\\", + \\n \\\"926904f7c0da13a6b8689c36dab9d20b3a2e6d32f212fca9e5f8cf2c6055333c\\\", + \\n \\\"95e98c811ea9d212673d0e84046d6da94cbd9134284275195800278593594b5a\\\", + \\n \\\"a142625512e5372a1728595be19dbee23eea50524b4827cb64ed5aaeaaa0270b\\\", + \\n \\\"afe5e9145882e0b98a795468a4c0352f5b1ddb7b4a534783c9e8fc366914cf6a\\\", + \\n \\\"b9027bad09a9f5c917cf0f811610438e46e42e5e984a8984b6d69206ceb74124\\\", + \\n \\\"c132d59a3bf0099e0f9f5667daf7b65dba66780f4addd88f04eecae47d5d99fa\\\", + \\n \\\"c9a5765561f52bbe34382ce06f4431f7ac65bafe786db5de89c29748cf371dda\\\", + \\n \\\"ce0408f92635e42aadc99da3cc1cbc0044e63441129c597e7aa1d76bf2700c94\\\", + \\n \\\"ce47bacc872516f91263f5e59441c54f14e9856cf213ca3128470217655fc5e6\\\", + \\n \\\"d0fe4562970676e30a4be8cb4923dc9bfd1fca8178e8e7fea0f3f02e0c7435ce\\\", + \\n \\\"d5b36648dc9828e69242b57aca91a0bb73296292bf987720c73fcd3d2becbae6\\\", + \\n \\\"e72d142a2bc49572e2d99ed15827fc27c67fc0999e90d4bf1352b075f86a83ba\\\"\\n + \ ]);\\nlet SigNames = dynamic([\\\"Backdoor:Win32/Leeson\\\", + \\\"Trojan:Win32/Kechang\\\", \\\"Backdoor:Win32/Nightimp!dha\\\", \\\"Trojan:Win32/QuarkBandit.A!dha\\\", + \\\"TrojanSpy:Win32/KeyLogger\\\"]);\\n(union isfuzzy=true\\n(CommonSecurityLog + \\n| parse Message with * '(' DNSName ')' * \\n| where isnotempty(FileHash)\\n| + where FileHash in (SHA256Hashes) or DNSName in~ (DomainNames)\\n| extend Account + = SourceUserID, Computer = DeviceName, IPAddress = SourceIP\\n),\\n(_Im_Dns(domain_has_any + = DomainNames)\\n| extend DNSName = DnsQuery\\n| extend IPAddress = SrcIpAddr\\n),\\n(_Im_WebSession(url_has_any + = DomainNames)\\n| extend DNSName = tostring(parse_url(Url)[\\\"Host\\\"])\\n| + extend IPAddress = SrcIpAddr\\n),\\n(Event\\n//This query uses sysmon data + depending on table name used this may need updataing\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + extend EvData = parse_xml(EventData)\\n| extend EventDetail = EvData.DataItem.EventData.Data\\n| + extend Hashes = EventDetail.[16].[\\\"#text\\\"]\\n| parse Hashes with * 'SHA256=' + SHA256 ',' * \\n| where isnotempty(Hashes)\\n| where Hashes in (SHA256Hashes) + \\n| extend Account = UserName\\n),\\n(DeviceFileEvents\\n| where SHA256 in~ + (SHA256Hashes)\\n| extend Account = RequestAccountName, Computer = DeviceName, + IPAddress = RequestSourceIP, CommandLine = InitiatingProcessCommandLine, FileHash + = SHA256\\n| project Type, TimeGenerated, Computer, Account, IPAddress, CommandLine, + FileHash\\n),\\n(imFileEvent\\n| where TargetFileSHA256 in~ (SHA256Hashes)\\n| + extend Account = ActorUsername, Computer = DvcHostname, IPAddress = SrcIpAddr, + CommandLine = ActingProcessCommandLine, FileHash = TargetFileSHA256\\n| project + Type, TimeGenerated, Computer, Account, IPAddress, CommandLine, FileHash\\n),\\n(DeviceNetworkEvents\\n| + where RemoteUrl in~ (DomainNames)\\n| extend Computer = DeviceName, IPAddress + = LocalIP, Account = InitiatingProcessAccountName\\n| project Type, TimeGenerated, + Computer, Account, IPAddress, RemoteUrl\\n),\\n(SecurityAlert\\n| where ProductName + == \\\"Microsoft Defender Advanced Threat Protection\\\"\\n| extend ThreatName + = tostring(parse_json(ExtendedProperties).ThreatName)\\n| where isnotempty(ThreatName)\\n| + where ThreatName has_any (SigNames)\\n| extend Computer = tostring(parse_json(Entities)[0].HostName)\\n),\\n(AzureDiagnostics + \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (DomainNames) \\n| extend DNSName = DestinationHost + \\n| extend IPAddress = SourceHost\\n)\\n)\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity + = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1071\"],\"displayName\":\"Known + NICKEL domains and hashes\",\"description\":\"IOC domains and hash values + for tools and malware used by NICKEL. \\n Matches domain name, hash IOCs and + M365 Defender sigs related to the NICKEL activity group with CommonSecurityLog, + DnsEvents, VMConnection and SecurityEvents dataTypes.\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2021-11-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceFileEvents\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/720d12c6-a08c-44c4-b18f-2236412d59b0\",\"name\":\"720d12c6-a08c-44c4-b18f-2236412d59b0\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"SecurityEvent\\n + \ | where EventID == 4688\\n | where Process !~ \\\"sdelete.exe\\\"\\n | + where CommandLine has_all (\\\"accepteula\\\", \\\"-r\\\", \\\"-s\\\", \\\"-q\\\", + \\\"c:/\\\")\\n | where CommandLine !has (\\\"sdelete\\\")\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Account\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"DefenseEvasion\",\"Impact\"],\"techniques\":[\"T1485\",\"T1036\"],\"displayName\":\"Potential + re-named sdelete usage\",\"description\":\"This detection looks for command + line parameters associated with the use of Sysinternals sdelete (https://docs.microsoft.com/sysinternals/downloads/sdelete) + to delete multiple files on a host's C drive.\\nA threat actor may re-name + the tool to avoid detection and then use it for destructive attacks on a host.\",\"lastUpdatedDateUTC\":\"2022-03-01T00:00:00Z\",\"createdDateUTC\":\"2022-02-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e70fa6e0-796a-4e85-9420-98b17b0bb749\",\"name\":\"e70fa6e0-796a-4e85-9420-98b17b0bb749\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"DeviceInfo\\n| + extend DeviceName = tolower(DeviceName)\\n| join (SecurityAlert\\n| where + ProviderName =~ \\\"MDATP\\\"\\n| extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\\n| + where ThreatName has \\\"Solorigate\\\"\\n| extend HostCustomEntity = tolower(CompromisedEntity)\\n) + on $left.DeviceName == $right.HostCustomEntity\\n| project TimeGenerated, + DisplayName, ThreatName, CompromisedEntity, PublicIP, MachineGroup, AlertSeverity, + Description, LoggedOnUsers, DeviceId, TenantId, HostCustomEntity\\n| extend + timestamp = TimeGenerated, IPCustomEntity = PublicIP\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1195\"],\"displayName\":\"Solorigate + Defender Detections\",\"description\":\"Surfaces any Defender Alert for Solorigate + Events. In Microsoft Sentinel the SecurityAlerts table includes only the Device + Name of the affected device, this query joins the DeviceInfo table to clearly + connect other information such as \\n Device group, ip, logged on users etc. + This way, the Microsoft Sentinel user can have all the pertinent device info + in one view for all the the Solarigate Defender alerts.\",\"lastUpdatedDateUTC\":\"2021-11-10T00:00:00Z\",\"createdDateUTC\":\"2020-12-17T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftDefenderAdvancedThreatProtection\",\"dataTypes\":[\"SecurityAlert + (MDATP)\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceInfo\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9176b18f-a946-42c6-a2f6-0f6d17cd6a8a\",\"name\":\"9176b18f-a946-42c6-a2f6-0f6d17cd6a8a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + triThreshold = 500;\\nlet querystarttime = 6h;\\nlet dgaLengthThreshold = + 8;\\n// fetch the cisco umbrella top 1M domains\\nlet top1M = (externaldata + (Position:int, Domain:string) [@\\\"http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip\\\"] + \ with (format=\\\"csv\\\", zipPattern=\\\"*.csv\\\"));\\n// extract tri grams + that are above our threshold - i.e. are common\\nlet triBaseline = top1M\\n + \ | extend Domain = tolower(extract(\\\"([^.]*).{0,7}$\\\", 1, Domain))\\n + \ | extend AllTriGrams = array_concat(extract_all(\\\"(...)\\\", Domain), + extract_all(\\\"(...)\\\", substring(Domain, 1)), extract_all(\\\"(...)\\\", + substring(Domain, 2)))\\n | mvexpand Trigram=AllTriGrams to typeof(string)\\n + \ | summarize triCount=count() by Trigram\\n | sort by triCount desc\\n | + where triCount > triThreshold\\n | distinct Trigram;\\n// collect domain + information from common security log, filter and extract the DGA candidate + and its trigrams\\nlet allDataSummarized = _Im_WebSession \\n| where isnotempty(Url) + \ \\n| extend Name = tolower(tostring(parse_url(Url)[\\\"Host\\\"]))\\n| + summarize NameCount=count() by Name\\n| where Name has \\\".\\\"\\n| where + Name !endswith \\\".home\\\" and Name !endswith \\\".lan\\\"\\n// extract + DGA candidate\\n| extend DGADomain = extract(\\\"([^.]*).{0,7}$\\\", 1, Name)\\n| + where strlen(DGADomain) > dgaLengthThreshold\\n// throw out domains with number + in them\\n| where DGADomain matches regex \\\"^[A-Za-z]{0,}$\\\"\\n// extract + the tri grams from summarized data\\n| extend AllTriGrams = array_concat(extract_all(\\\"(...)\\\", + DGADomain), extract_all(\\\"(...)\\\", substring(DGADomain, 1)), extract_all(\\\"(...)\\\", + substring(DGADomain, 2)));\\n// throw out domains that have repeating tri's + and/or >=3 repeating letters\\nlet nonRepeatingTris = allDataSummarized\\n| + join kind=leftanti\\n(\\n allDataSummarized\\n | mvexpand AllTriGrams\\n + \ | summarize count() by tostring(AllTriGrams), DGADomain\\n | where + count_ > 1\\n | distinct DGADomain\\n)\\non DGADomain;\\n// find domains + that do not have a common tri in the baseline\\nlet dataWithRareTris = nonRepeatingTris\\n| + join kind=leftanti\\n(\\n nonRepeatingTris\\n | mvexpand AllTriGrams\\n + \ | extend Trigram = tostring(AllTriGrams)\\n | distinct Trigram, DGADomain\\n + \ | join kind=inner\\n (\\n triBaseline\\n )\\n on Trigram\\n + \ | distinct DGADomain\\n)\\non DGADomain;\\ndataWithRareTris\\n// join + DGAs back on connection data\\n| join kind=inner\\n(\\n _Im_WebSession\\n + \ | where isnotempty(Url)\\n | extend Url = tolower(Url)\\n | summarize + arg_max(TimeGenerated, EventVendor, SrcIpAddr) by Url\\n | extend Name=tostring(parse_url(Url)[\\\"Host\\\"])\\n + \ | summarize StartTime=min(TimeGenerated), EndTime=max(TimeGenerated) by + Name, SrcIpAddr, Url\\n)\\non Name\\n| project StartTime, EndTime, Name, DGADomain, + SrcIpAddr, Url, NameCount\",\"customDetails\":{\"DGAPattern\":\"DGADomain\",\"NameCount\":\"NameCount\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"Url\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Potential + communication from {{SrcIpAddr} with a Domain Generation Algorithm (DGA) based + host {{Name}}\",\"alertDescriptionFormat\":\"A client with address {{SrcIpAddr}} + communicated with host {{Name}} that have a domain name that might have been + generated by a Domain Generation Algorithm (DGA), identified by the pattern + {{DGADomain}}. DGAs are used by malware to generate rendezvous points that + are difficult to predict in advance. This detection uses the top 1 million + domain names to build a model of what normal domains look like and uses the + model to identify domains that may have been randomly generated by an algorithm.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\"],\"displayName\":\"Potential + communication with a Domain Generation Algorithm (DGA) based hostname (ASIM + Web Session schema)\",\"description\":\"This rule identifies communication + with hosts that have a domain name that might have been generated by a Domain + Generation Algorithm (DGA). DGAs are used by malware to generate rendezvous + points that are difficult to predict in advance. This detection uses the top + 1 million domain names to build a model of what normal domains look like nad + uses the model to identify domains that may have been randomly generated by + an algorithm. You can modify the triThreshold and dgaLengthThreshold query + parameters to change Analytic Rule sensitivity. The higher the numbers, the + less noisy the rule is.
\\n This analytic rule uses [ASIM](https://aka.ms/AboutASIM) + and supports any built-in or custom source that supports the ASIM WebSession + schema (ASIM WebSession Schema)\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2021-12-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f819c592-c5f9-4d5c-a79f-1e6819863533\",\"name\":\"f819c592-c5f9-4d5c-a79f-1e6819863533\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + ADHealth Monitoring Agent Registry Key\\nlet aadHealthMonAgentRegKey = \\\"\\\\\\\\REGISTRY\\\\\\\\MACHINE\\\\\\\\SOFTWARE\\\\\\\\Microsoft\\\\\\\\Microsoft + Online\\\\\\\\Reporting\\\\\\\\MonitoringAgent\\\";\\n// Filter out known + processes\\nlet aadConnectHealthProcs = dynamic ([\\n 'Microsoft.Identity.Health.Adfs.DiagnosticsAgent.exe',\\n + \ 'Microsoft.Identity.Health.Adfs.InsightsService.exe',\\n 'Microsoft.Identity.Health.Adfs.MonitoringAgent.Startup.exe',\\n + \ 'Microsoft.Identity.Health.Adfs.PshSurrogate.exe',\\n 'Microsoft.Identity.Health.Common.Clients.ResourceMonitor.exe',\\n + \ 'Microsoft.Identity.Health.AadSync.MonitoringAgent.Startup.exe',\\n 'Microsoft.Identity.AadConnect.Health.AadSync.Host.exe',\\n + \ 'Microsoft.Azure.ActiveDirectory.Synchronization.Upgrader.exe',\\n 'miiserver.exe'\\n]);\\n(union + isfuzzy=true\\n(\\nSecurityEvent\\n| where EventID == '4656'\\n| where EventData + has aadHealthMonAgentRegKey\\n| extend EventData = parse_xml(EventData).EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Computer, EventID)\\n| + extend ObjectName = column_ifexists(\\\"ObjectName\\\", \\\"\\\"),\\n ObjectType + = column_ifexists(\\\"ObjectType\\\", \\\"\\\")\\n| where ObjectType == 'Key'\\n| + where ObjectName == aadHealthMonAgentRegKey\\n| extend SubjectUserName = column_ifexists(\\\"SubjectUserName\\\", + \\\"\\\"),\\n SubjectDomainName = column_ifexists(\\\"SubjectDomainName\\\", + \\\"\\\"),\\n ProcessName = column_ifexists(\\\"ProcessName\\\", \\\"\\\")\\n| + extend Process = split(ProcessName, '\\\\\\\\', -1)[-1],\\n Account = strcat(SubjectDomainName, + \\\"\\\\\\\\\\\", SubjectUserName)\\n| where Process !in (aadConnectHealthProcs)\\n| + summarize StartTime = max(TimeGenerated), EndTime = min(TimeGenerated), count() + by EventID, Account, Computer, Process, SubjectUserName, SubjectDomainName, + ObjectName, ObjectType, ProcessName\\n),\\n(\\nWindowsEvent\\n| where EventID + == '4656' and EventData has aadHealthMonAgentRegKey\\n| extend ObjectType + = tostring(EventData.ObjectType)\\n| where ObjectType == 'Key'\\n| extend + ObjectName = tostring(EventData.ObjectName)\\n| where ObjectName == aadHealthMonAgentRegKey\\n| + extend ProcessName = tostring(EventData.ProcessName)\\n| extend Process = + tostring(split(ProcessName, '\\\\\\\\')[-1])\\n| where Process !in (aadConnectHealthProcs)\\n| + extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| + extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| summarize + StartTime = max(TimeGenerated), EndTime = min(TimeGenerated), count() by EventID, + Account, Computer, Process, SubjectUserName, SubjectDomainName, ObjectName, + ObjectType, ProcessName\\n),\\n(\\nSecurityEvent\\n| where EventID == '4663'\\n| + where ObjectType == 'Key'\\n| where ObjectName == aadHealthMonAgentRegKey\\n| + extend Process = tostring(split(ProcessName, '\\\\\\\\', -1)[-1])\\n| where + Process !in (aadConnectHealthProcs)\\n| summarize StartTime = max(TimeGenerated), + EndTime = min(TimeGenerated), count() by EventID, Account, Computer, Process, + SubjectUserName, SubjectDomainName, ObjectName, ObjectType, ProcessName\\n),\\n + \ (\\nWindowsEvent\\n| where EventID == '4663' and EventData has aadHealthMonAgentRegKey\\n| + extend ObjectType = tostring(EventData.ObjectType)\\n| where ObjectType == + 'Key'\\n| extend ObjectName = tostring(EventData.ObjectName)\\n| where ObjectName + == aadHealthMonAgentRegKey\\n| extend ProcessName = tostring(EventData.ProcessName)\\n| + extend Process = tostring(split(ProcessName, '\\\\\\\\')[-1])\\n| where Process + !in (aadConnectHealthProcs)\\n| extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| + extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| summarize + StartTime = max(TimeGenerated), EndTime = min(TimeGenerated), count() by EventID, + Account, Computer, Process, SubjectUserName, SubjectDomainName, ObjectName, + ObjectType, ProcessName\\n)\\n)\\n// You can filter out potential machine + accounts\\n//| where AccountType != 'Machine'\\n| extend timestamp = StartTime, + AccountCustomEntity = Account, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1005\"],\"displayName\":\"Azure + AD Health Monitoring Agent Registry Keys Access\",\"description\":\"This detection + uses Windows security events to detect suspicious access attempts to the registry + key of Azure AD Health monitoring agent.\\nThis detection requires an access + control entry (ACE) on the system access control list (SACL) of the following + securable object HKLM\\\\SOFTWARE\\\\Microsoft\\\\Microsoft Online\\\\Reporting\\\\MonitoringAgent.\\nYou + can find more information in here https://github.com/OTRF/Set-AuditRule/blob/master/rules/registry/aad_connect_health_monitoring_agent.yml\\n\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-08-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/066395ac-ef91-4993-8bf6-25c61ab0ca5a\",\"name\":\"066395ac-ef91-4993-8bf6-25c61ab0ca5a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/SOURGUM.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet domains = (iocs | + where Type =~ \\\"domainname\\\"| project IoC);\\nlet sha256Hashes = (iocs + | where Type =~ \\\"sha256\\\" | project IoC);\\nlet file_path1 = (iocs | + where Type =~ \\\"filepath1\\\" | project IoC);\\nlet file_path2 = (iocs | + where Type =~ \\\"filepath2\\\" | project IoC);\\nlet file_path3 = (iocs | + where Type =~ \\\"filepath3\\\" | project IoC);\\nlet reg_key = (iocs | where + Type =~ \\\"regkey\\\" | project IoC);\\nWindowsEvent\\n| where EventID == + 4688 and (EventData has_any (file_path1) or EventData has_any (file_path2) + or EventData has_any (file_path3) or EventData has_any ('reg add') or EventData + has_any (reg_key) )\\n| extend CommandLine = tostring(EventData.CommandLine)\\n| + extend NewProcessName = tostring(EventData.NewProcessName)\\n| extend ParentProcessName + = tostring(EventData.ParentProcessName)\\n| where (CommandLine has_any (file_path1)) + or\\n (CommandLine has_any (file_path3)) or\\n (CommandLine has 'reg add' + and CommandLine has_any (reg_key) and CommandLine has_any (file_path2)) or + \\n (NewProcessName has_any (file_path1)) or\\n (NewProcessName has_any + (file_path3)) or\\n (ParentProcessName has_any (file_path1)) or \\n (ParentProcessName + has_any (file_path3)) \\n| extend Account = strcat(EventData.SubjectDomainName,\\\"\\\\\\\\\\\", + EventData.SubjectUserName)\\n| extend NewProcessId = tostring(EventData.NewProcessId)\\n| + extend IPCustomEntity = tostring(EventData.IpAddress)\\n| project TimeGenerated, + Computer, NewProcessName, ParentProcessName, Account, NewProcessId, Type, + IPCustomEntity\\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer + , AccountCustomEntity = Account, ProcessCustomEntity = NewProcessName, Alert + = 'SOURGUM IOC detected'\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1546\"],\"displayName\":\"SOURGUM + Actor IOC - July 2021\",\"description\":\"Identifies a match across IOC's + related to an actor tracked by Microsoft as SOURGUM\",\"lastUpdatedDateUTC\":\"2022-05-19T00:00:00Z\",\"createdDateUTC\":\"2022-02-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/e7277475-4e31-41c7-9997-0b8b3d7f00cd\",\"name\":\"e7277475-4e31-41c7-9997-0b8b3d7f00cd\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.2\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.01\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of failed login attempts to AWS Console by each source IP + address\",\"description\":\"This algorithm detects an unusually high volume + of AWS cloud trail log console failed login events per source IP address within + the last day. The model is trained on the previous 21 days of AWS cloud trail + log events on source IP address basis. This activity may indicate that the + IP address is compromised.\",\"lastUpdatedDateUTC\":\"2021-10-26T00:00:00Z\",\"createdDateUTC\":\"2021-08-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6116dc19-475a-4148-84b2-efe89c073e27\",\"name\":\"6116dc19-475a-4148-84b2-efe89c073e27\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 10;\\nQualysHostDetectionV2_CL\\n| extend Status = tostring(Status_s), + Vulnerability = tostring(QID_s), Severity = tostring(Severity_s)\\n| where + Status =~ \\\"New\\\" and Severity == \\\"5\\\"\\n| summarize StartTime = + min(TimeGenerated), EndTime = max(TimeGenerated), dcount(NetBios_s) by tostring(QID_s)\\n| + where dcount_NetBios_s >= threshold\\n| extend timestamp = StartTime\",\"entityMappings\":[],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"New + High Severity Vulnerability Detected Across Multiple Hosts\",\"description\":\"This + creates an incident when a new high severity vulnerability is detected across + multilple hosts\",\"lastUpdatedDateUTC\":\"2021-12-08T00:00:00Z\",\"createdDateUTC\":\"2020-06-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"QualysVulnerabilityManagement\",\"dataTypes\":[\"QualysHostDetection_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/90d3f6ec-80fb-48e0-9937-2c70c9df9bad\",\"name\":\"90d3f6ec-80fb-48e0-9937-2c70c9df9bad\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + DomainList = dynamic([\\\"tor2web.org\\\", \\\"tor2web.com\\\", \\\"torlink.co\\\", + \\\"onion.to\\\", \\\"onion.ink\\\", \\\"onion.cab\\\", \\\"onion.nu\\\", + \\\"onion.link\\\", \\n\\\"onion.it\\\", \\\"onion.city\\\", \\\"onion.direct\\\", + \\\"onion.top\\\", \\\"onion.casa\\\", \\\"onion.plus\\\", \\\"onion.rip\\\", + \\\"onion.dog\\\", \\\"tor2web.fi\\\", \\n\\\"tor2web.blutmagie.de\\\", \\\"onion.sh\\\", + \\\"onion.lu\\\", \\\"onion.pet\\\", \\\"t2w.pw\\\", \\\"tor2web.ae.org\\\", + \\\"tor2web.io\\\", \\\"tor2web.xyz\\\", \\\"onion.lt\\\", \\n\\\"s1.tor-gateways.de\\\", + \\\"s2.tor-gateways.de\\\", \\\"s3.tor-gateways.de\\\", \\\"s4.tor-gateways.de\\\", + \\\"s5.tor-gateways.de\\\", \\\"hiddenservice.net\\\"]);\\nSyslog\\n| where + ProcessName contains \\\"squid\\\"\\n| extend URL = extract(\\\"(([A-Z]+ [a-z]{4,5}:\\\\\\\\/\\\\\\\\/)|[A-Z]+ + )([^ :]*)\\\",3,SyslogMessage), \\n SourceIP = extract(\\\"([0-9]+ + )(([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3}))\\\",2,SyslogMessage), + \\n Status = extract(\\\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))\\\",1,SyslogMessage), + \\n HTTP_Status_Code = extract(\\\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))/([0-9]{3})\\\",8,SyslogMessage),\\n + \ User = extract(\\\"(CONNECT |GET )([^ ]* )([^ ]+)\\\",3,SyslogMessage),\\n + \ RemotePort = extract(\\\"(CONNECT |GET )([^ ]*)(:)([0-9]*)\\\",4,SyslogMessage),\\n + \ Domain = extract(\\\"(([A-Z]+ [a-z]{4,5}:\\\\\\\\/\\\\\\\\/)|[A-Z]+ + )([^ :\\\\\\\\/]*)\\\",3,SyslogMessage),\\n Bytes = toint(extract(\\\"([A-Z]+\\\\\\\\/[0-9]{3} + )([0-9]+)\\\",2,SyslogMessage)),\\n contentType = extract(\\\"([a-z/]+$)\\\",1,SyslogMessage)\\n| + extend TLD = extract(\\\"\\\\\\\\.[a-z]*$\\\",0,Domain)\\n| where HTTP_Status_Code + == \\\"200\\\"\\n| where Domain contains \\\".\\\"\\n| where Domain has_any + (DomainList)\\n| extend timestamp = TimeGenerated, URLCustomEntity = URL, + IPCustomEntity = SourceIP, AccountCustomEntity = User\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1090\",\"T1008\"],\"displayName\":\"Squid + proxy events for ToR proxies\",\"description\":\"Check for Squid proxy events + associated with common ToR proxies. This query presumes the default squid + log format is being used.\\nhttp://www.squid-cache.org/Doc/config/access_log/\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2019-07-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/70fc7201-f28e-4ba7-b9ea-c04b96701f13\",\"name\":\"70fc7201-f28e-4ba7-b9ea-c04b96701f13\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"let + OperationList = dynamic([\\\"Add member to role\\\",\\\"Add member to role + in PIM requested (permanent)\\\"]);\\nlet PrivilegedGroups = dynamic([\\\"UserAccountAdmins\\\",\\\"PrivilegedRoleAdmins\\\",\\\"TenantAdmins\\\"]);\\nAuditLogs\\n//| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"RoleManagement\\\"\\n| + where OperationName in~ (OperationList)\\n| mv-expand TargetResources\\n| + extend modProps = parse_json(TargetResources).modifiedProperties\\n| mv-expand + bagexpansion=array modProps\\n| evaluate bag_unpack(modProps)\\n| extend displayName + = column_ifexists(\\\"displayName\\\", \\\"NotAvailable\\\"), newValue = column_ifexists(\\\"newValue\\\", + \\\"NotAvailable\\\")\\n| where displayName =~ \\\"Role.WellKnownObjectName\\\"\\n| + extend DisplayName = displayName, GroupName = replace('\\\"','',newValue)\\n| + extend initByApp = parse_json(InitiatedBy).app, initByUser = parse_json(InitiatedBy).user\\n| + extend AppId = initByApp.appId,\\nInitiatedByDisplayName = case(isnotempty(initByApp.displayName), + initByApp.displayName, isnotempty(initByUser.displayName), initByUser.displayName, + \\\"not available\\\"),\\nServicePrincipalId = tostring(initByApp.servicePrincipalId),\\nServicePrincipalName + = tostring(initByApp.servicePrincipalName),\\nUserId = initByUser.id,\\nUserIPAddress + = initByUser.ipAddress,\\nUserRoles = initByUser.roles,\\nUserPrincipalName + = tostring(initByUser.userPrincipalName),\\nTargetUserPrincipalName = tostring(TargetResources.userPrincipalName)\\n| + where GroupName in~ (PrivilegedGroups)\\n// If you don't want to alert for + operations from PIM, remove below filtering for MS-PIM.\\n//| where InitiatedByDisplayName + != \\\"MS-PIM\\\"\\n| project TimeGenerated, AADOperationType, Category, OperationName, + AADTenantId, AppId, InitiatedByDisplayName, ServicePrincipalId, ServicePrincipalName, + DisplayName, GroupName, UserId, UserIPAddress, UserRoles, UserPrincipalName, + TargetUserPrincipalName\\n| extend AccountCustomEntity = case(isnotempty(ServicePrincipalName), + ServicePrincipalName, isnotempty(ServicePrincipalId), ServicePrincipalId, + isnotempty(UserPrincipalName), UserPrincipalName, \\\"not available\\\")\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"TargetUserPrincipalName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"NRT + User added to Azure Active Directory Privileged Groups\",\"description\":\"This + will alert when a user is added to any of the Privileged Groups.\\nFor further + information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\\nFor + Administrator role permissions in Azure Active Directory please see https://docs.microsoft.com/azure/active-directory/users-groups-roles/directory-assign-admin-roles\",\"lastUpdatedDateUTC\":\"2022-03-24T00:00:00Z\",\"createdDateUTC\":\"2020-07-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5239248b-abfb-4c6a-8177-b104ade5db56\",\"name\":\"5239248b-abfb-4c6a-8177-b104ade5db56\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + RunCommandData = materialize ( AzureActivity\\n// Isolate run command actions\\n| + where OperationNameValue == \\\"MICROSOFT.COMPUTE/VIRTUALMACHINES/RUNCOMMAND/ACTION\\\"\\n// + Confirm that the operation impacted a virtual machine\\n| where Authorization + has \\\"virtualMachines\\\"\\n// Each runcommand operation consists of three + events when successful, StartTimeed, Accepted (or Rejected), Successful (or + Failed).\\n| summarize StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), + max(CallerIpAddress), make_list(ActivityStatusValue) by CorrelationId, Authorization, + Caller\\n// Limit to Run Command executions that Succeeded\\n| where list_ActivityStatusValue + has \\\"Success\\\"\\n// Extract data from the Authorization field, allowing + us to later extract the Caller (UPN) and CallerIpAddress\\n| extend Authorization_d + = parse_json(Authorization)\\n| extend Scope = Authorization_d.scope\\n| extend + Scope_s = split(Scope, \\\"/\\\")\\n| extend Subscription = tostring(Scope_s[2])\\n| + extend VirtualMachineName = tostring(Scope_s[-1])\\n| project StartTime, EndTime, + Subscription, VirtualMachineName, CorrelationId, Caller, CallerIpAddress=max_CallerIpAddress\\n| + join kind=leftouter (\\n DeviceFileEvents\\n | where InitiatingProcessFileName + == \\\"RunCommandExtension.exe\\\"\\n | extend VirtualMachineName = tostring(split(DeviceName, + \\\".\\\")[0])\\n | project VirtualMachineName, PowershellFileCreatedTimestamp=TimeGenerated, + FileName, FileSize, InitiatingProcessAccountName, InitiatingProcessAccountDomain, + InitiatingProcessFolderPath, InitiatingProcessId\\n) on VirtualMachineName\\n// + We need to filter by time sadly, this is the only way to link events\\n| where + PowershellFileCreatedTimestamp between (StartTime .. EndTime)\\n| project + StartTime, EndTime, PowershellFileCreatedTimestamp, VirtualMachineName, Caller, + CallerIpAddress, FileName, FileSize, InitiatingProcessId, InitiatingProcessAccountDomain, + InitiatingProcessFolderPath\\n| join kind=inner(\\n DeviceEvents\\n | + extend VirtualMachineName = tostring(split(DeviceName, \\\".\\\")[0])\\n | + where InitiatingProcessCommandLine has \\\"-File\\\"\\n // Extract the + script name based on the structure used by the RunCommand extension\\n | + extend PowershellFileName = extract(@\\\"\\\\-File\\\\s(script[0-9]{1,9}\\\\.ps1)\\\", + 1, InitiatingProcessCommandLine)\\n // Discard results that didn't successfully + extract, these are not run command related\\n | where isnotempty(PowershellFileName)\\n + \ | extend PSCommand = tostring(parse_json(AdditionalFields).Command)\\n + \ // The first execution of PowerShell will be the RunCommand script itself, + we can discard this as it will break our hash later\\n | where PSCommand + != PowershellFileName \\n // Now we normalise the cmdlets, we're aiming + to hash them to find scripts using rare combinations\\n | extend PSCommand + = toupper(PSCommand)\\n | order by PSCommand asc\\n | summarize PowershellExecStartTime=min(TimeGenerated), + PowershellExecEnd=max(TimeGenerated), make_list(PSCommand) by PowershellFileName, + InitiatingProcessCommandLine\\n) on $left.FileName == $right.PowershellFileName\\n| + project StartTime, EndTime, PowershellFileCreatedTimestamp, PowershellExecStartTime, + PowershellExecEnd, PowershellFileName, PowershellScriptCommands=list_PSCommand, + Caller, CallerIpAddress, InitiatingProcessCommandLine, PowershellFileSize=FileSize, + VirtualMachineName\\n| order by StartTime asc \\n// We generate the hash based + on the cmdlets called and the size of the powershell script\\n| extend TempFingerprintString + = strcat(PowershellScriptCommands, PowershellFileSize)\\n| extend ScriptFingerprintHash + = hash_sha256(tostring(PowershellScriptCommands)));\\nlet totals = toscalar + (RunCommandData\\n| summarize count());\\nlet hashTotals = RunCommandData\\n| + summarize HashCount=count() by ScriptFingerprintHash;\\nRunCommandData\\n| + join kind=leftouter (\\nhashTotals\\n) on ScriptFingerprintHash\\n// Calculate + prevalence, while we don't need this, it may be useful for responders to know + how rare this script is in relation to normal activity\\n| extend Prevalence + = toreal(HashCount) / toreal(totals) * 100\\n// Where the hash was only ever + seen once.\\n| where HashCount == 1\\n| extend timestamp = StartTime, IPCustomEntity=CallerIpAddress, + AccountCustomEntity=Caller, HostCustomEntity=VirtualMachineName\\n| project + timestamp, StartTime, EndTime, PowershellFileName, VirtualMachineName, Caller, + CallerIpAddress, PowershellScriptCommands, PowershellFileSize, ScriptFingerprintHash, + Prevalence, IPCustomEntity, AccountCustomEntity, HostCustomEntity\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"LateralMovement\",\"CredentialAccess\"],\"techniques\":[\"T1570\"],\"displayName\":\"Azure + VM Run Command operations executing a unique powershell script\",\"description\":\"Identifies + when Azure Run command is used to execute a powershell script on a VM that + is unique.\\nThe uniqueness of the powershell script is determined by taking + a combined hash of the cmdlets it imports\\nand the filesize of the PowerShell + script. Alerts from this detection indicate a unique PowerShell was executed\\nin + your environment.\",\"lastUpdatedDateUTC\":\"2022-03-01T00:00:00Z\",\"createdDateUTC\":\"2021-10-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceFileEvents\",\"DeviceEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f15370f4-c6fa-42c5-9be4-1d308f40284e\",\"name\":\"f15370f4-c6fa-42c5-9be4-1d308f40284e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n OfficeActivity + | where TimeGenerated >= ago(dt_lookBack)\\n // renaming time column so + it is clear the log this came from\\n | extend OfficeActivity_TimeGenerated + = TimeGenerated\\n)\\non $left.TI_ipEntity == $right.ClientIP\\n| where OfficeActivity_TimeGenerated + < ExpirationDateTime\\n| summarize OfficeActivity_TimeGenerated = arg_max(OfficeActivity_TimeGenerated, + *) by IndicatorId\\n| project OfficeActivity_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, + ClientIP, UserId, Operation, ResultStatus, RecordType, OfficeObjectId, NetworkIP, + NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| extend timestamp + = OfficeActivity_TimeGenerated, IPCustomEntity = ClientIP, AccountCustomEntity + = UserId, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to OfficeActivity\",\"description\":\"Identifies a match in + OfficeActivity from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a4ce20ae-a2e4-4d50-b40d-d49f1353b6cc\",\"name\":\"a4ce20ae-a2e4-4d50-b40d-d49f1353b6cc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Extracts plaintext IPv4 addresses\\nlet ipv4_plaintext_extraction_regex = + @\\\"((?:(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.)){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]){1,3})\\\";\\n// + Identified base64 encoded IPv4 addresses\\nlet ipv4_encoded_identification_regex + = @\\\"\\\\=([a-zA-Z0-9\\\\/\\\\+]*(?:(?:MC|Au|wL|MS|Eu|xL|Mi|Iu|yL|My|Mu|zL|NC|Qu|0L|NS|Uu|1L|Ni|Yu|2L|Ny|cu|3L|OC|gu|4L|OS|ku|5L){1}[a-zA-Z0-9\\\\/\\\\+]{2,4}){3}[a-zA-Z0-9\\\\/\\\\+\\\\=]*)\\\";\\n// + Extractes IPv4 addresses as hex values\\nlet ipv4_decoded_hex_extract = @\\\"((?:(?:61|62|63|64|65|66|67|68|69|6a|6b|6c|6d|6e|6f|70|71|72|73|74|75|76|77|78|79|7a|41|42|43|44|45|46|47|48|49|4a|4b|4c|4d|4e|4f|50|51|52|53|54|55|56|57|58|59|5a|2f|2b|3d),){7,15})\\\";\\nCommonSecurityLog\\n| + where isnotempty(RequestURL)\\n// Identify requests with encoded IPv4 addresses\\n| + where RequestURL matches regex ipv4_encoded_identification_regex\\n| project + TimeGenerated, RequestURL\\n// Extract IP candidates in their base64 encoded + format, significantly reducing the dataset\\n| extend extracted_encoded_ip_candidate + = extract_all(ipv4_encoded_identification_regex, RequestURL)\\n// We could + have more than one candidate, expand them out\\n| mv-expand extracted_encoded_ip_candidate + to typeof(string)\\n| summarize Start=min(TimeGenerated), End=max(TimeGenerated), + make_set(RequestURL) by extracted_encoded_ip_candidate\\n// Pad if we need + to\\n| extend extracted_encoded_ip_candidate = iff(strlen(extracted_encoded_ip_candidate) + % 2 == 0, extracted_encoded_ip_candidate, strcat(extracted_encoded_ip_candidate, + \\\"=\\\"))\\n// Now decode the candidate to a long array, we cannot go straight + to string as it cannot handle non-UTF8, we need to strip that first\\n| extend + extracted_encoded_ip_candidate = tostring(base64_decode_toarray(extracted_encoded_ip_candidate))\\n// + Extract the IP candidates from the array\\n| extend hex_extracted = extract_all(ipv4_decoded_hex_extract, + extracted_encoded_ip_candidate)\\n// Expand, it's still possible that we might + have more than 1 IP\\n| mv-expand hex_extracted\\n// Now we should have a + clean string. We need to put it back into a dynamic array to convert back + to a string.\\n| extend hex_extracted = trim_end(\\\",\\\", tostring(hex_extracted))\\n| + extend hex_extracted = strcat(\\\"[\\\",hex_extracted,\\\"]\\\")\\n| extend + hex_extracted = todynamic(hex_extracted)\\n| extend extracted_encoded_ip_candidate + = todynamic(extracted_encoded_ip_candidate)\\n// Convert the array back into + a string\\n| extend decoded_ip_candidate = make_string(hex_extracted)\\n| + summarize by decoded_ip_candidate, tostring(set_RequestURL), Start, End\\n// + Now the IP candidates will be in plaintext, extract the IPs using a regex\\n| + extend ipmatch = extract_all(ipv4_plaintext_extraction_regex, decoded_ip_candidate)\\n// + If it's not an IP, throw it out\\n| where isnotnull(ipmatch)\\n| mv-expand + ipmatch to typeof(string)\\n// Join with DeviceNetworkEvents to find instances + where an IP of a machine in our MDE estate sent it's IP in a base64 encoded + string\\n| join (\\n DeviceNetworkEvents\\n | summarize make_set(DeviceId), + make_set(DeviceName) by RemoteIP\\n) on $left.ipmatch == $right.RemoteIP\\n| + project Start, End, IPmatch=ipmatch, RequestURL=set_RequestURL, DeviceNames=set_DeviceName, + DeviceIds=set_DeviceId, RemoteIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPmatch\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"DeviceNames\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"RequestURL\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\",\"CommandAndControl\"],\"techniques\":[\"T1041\",\"T1071\"],\"displayName\":\"IP + address of Windows host encoded in web request\",\"description\":\"This detection + will identify network requests in HTTP proxy data that contains Base64 encoded + IP addresses. After identifying candidates the query\\njoins with DeviceNetworkEvents + to idnetify any machine within the network using that IP address. Alerts indicate + that the IP address of a machine\\nwithin your network was seen with it's + IP address base64 encoded in an outbounf web request. This method of egressing + the IP was seen used in POLONIUM's\\nRunningRAT tool, however the detection + is generic.\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2022-05-31T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/cbf6ad48-fa5c-4bf7-b205-28dbadb91255\",\"name\":\"cbf6ad48-fa5c-4bf7-b205-28dbadb91255\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + procList = externaldata(Process:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Microsoft_Lolbas_Execution_Binaries.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nEvent\\n| where EventLog + == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID==1\\n| parse EventData + with * 'Image\\\">' Image \\\"<\\\" * 'OriginalFileName\\\">' OriginalFileName + \\\"<\\\" *\\n| where OriginalFileName has_any (procList) and not (Image has_any + (procList))\\n| parse EventData with * 'ProcessGuid\\\">' ProcessGuid \\\"<\\\" + * 'Description\\\">' Description \\\"<\\\" * 'CommandLine\\\">' CommandLine + \\\"<\\\" * 'CurrentDirectory\\\">' CurrentDirectory \\\"<\\\" * 'User\\\">' + User \\\"<\\\" * 'LogonGuid\\\">' LogonGuid \\\"<\\\" * 'Hashes\\\">' Hashes + \\\"<\\\" * 'ParentProcessGuid\\\">' ParentProcessGuid \\\"<\\\" * 'ParentImage\\\">' + ParentImage \\\"<\\\" * 'ParentCommandLine\\\">' ParentCommandLine \\\"<\\\" + * 'ParentUser\\\">' ParentUser \\\"<\\\" *\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by EventID, Computer, User, ParentImage, ParentProcessGuid, + ParentCommandLine, ParentUser, Image, ProcessGuid, CommandLine, Description, + OriginalFileName, CurrentDirectory, Hashes\",\"entityMappings\":[{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLine\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"User\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1059\"],\"displayName\":\"Windows + Binaries Lolbins Renamed\",\"description\":\"This query detects the execution + of renamed Windows binaries (Lolbins). This is a common technique used by + adversaries to evade detection. \\nRef: https://docs.paloaltonetworks.com/cortex/cortex-xdr/cortex-xdr-analytics-alert-reference/cortex-xdr-analytics-alert-reference/execution-of-renamed-lolbin.html\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2022-03-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3a9d5ede-2b9d-43a2-acc4-d272321ff77c\",\"name\":\"3a9d5ede-2b9d-43a2-acc4-d272321ff77c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet timeframe = 1d;\\nlet scorethreshold = 3;\\nlet baselinethreshold + = 50;\\nlet aadFunc = (tableName:string){\\n // Failed Signins attempts with + reasoning related to conditional access policies.\\n table(tableName)\\n + \ | where TimeGenerated between (startofday(ago(starttime))..startofday(now()))\\n + \ | where ResultDescription has_any (\\\"conditional access\\\", \\\"CA\\\") + or ResultType in (50005, 50131, 53000, 53001, 53002, 52003, 70044)\\n | extend + UserPrincipalName = tolower(UserPrincipalName)\\n | extend timestamp = TimeGenerated, + AccountCustomEntity = UserPrincipalName\\n};\\nlet aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet + aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nlet allSignins + = union isfuzzy=true aadSignin, aadNonInt;\\nlet TimeSeriesAlerts = \\nallSignins\\n| + make-series DailyCount=count() on TimeGenerated from startofday(ago(starttime)) + to startofday(now()) step 1d by UserPrincipalName\\n| extend (anomalies, score, + baseline) = series_decompose_anomalies(DailyCount, scorethreshold, -1, 'linefit')\\n| + mv-expand DailyCount to typeof(double), TimeGenerated to typeof(datetime), + anomalies to typeof(double), score to typeof(double), baseline to typeof(long)\\n// + Filtering low count events per baselinethreshold\\n| where anomalies > 0 and + baseline > baselinethreshold\\n| extend AnomalyHour = TimeGenerated\\n| project + UserPrincipalName, AnomalyHour, TimeGenerated, DailyCount, baseline, anomalies, + score;\\n// Filter the alerts for specified timeframe\\nTimeSeriesAlerts\\n| + where TimeGenerated > startofday(ago(timeframe))\\n| join kind=inner ( \\n + \ allSignins\\n | where TimeGenerated > startofday(ago(timeframe))\\n // + create a new column and round to hour\\n | extend DateHour = bin(TimeGenerated, + 1h)\\n | summarize PartialFailedSignins = count(), LatestAnomalyTime = arg_max(TimeGenerated, + *) by bin(TimeGenerated, 1h), OperationName, Category, ResultType, ResultDescription, + UserPrincipalName, UserDisplayName, AppDisplayName, ClientAppUsed, IPAddress, + ResourceDisplayName\\n) on UserPrincipalName, $left.AnomalyHour == $right.DateHour\\n| + project LatestAnomalyTime, OperationName, Category, UserPrincipalName, UserDisplayName, + ResultType, ResultDescription, AppDisplayName, ClientAppUsed, UserAgent, IPAddress, + Location, AuthenticationRequirement, ConditionalAccessStatus, ResourceDisplayName, + PartialFailedSignins, TotalFailedSignins = DailyCount, baseline, anomalies, + score\\n| extend timestamp = LatestAnomalyTime, IPCustomEntity = IPAddress, + AccountCustomEntity = UserPrincipalName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"User + Accounts - Sign in Failure due to CA Spikes\",\"description\":\" Identifies + spike in failed sign-ins from user accounts due to conditional access policied.\\nSpike + is determined based on Time series anomaly which will look at historical baseline + values.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-user-accounts#monitoring-for-failed-unusual-sign-ins\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-10-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/622844c2-fc11-4efc-91e6-c05b06ab3008\",\"name\":\"622844c2-fc11-4efc-91e6-c05b06ab3008\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.6\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"10\",\"maximum\":\"1000\",\"value\":\"25\",\"name\":\"Degree + of source IPs\",\"description\":\"Suppress anomalies when degree of source + IPs is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"},{\"minimum\":\"10\",\"maximum\":\"1000\",\"value\":\"30\",\"name\":\"Daily + event count threshold\",\"description\":\"Suppress anomalies when daily event + count is less than the chosen value\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"},{\"minimum\":\"10\",\"maximum\":\"1000\",\"value\":\"60\",\"name\":\"Time + delta threshold in seconds\",\"description\":\"Suppress anomalies when time + delta in seconds between network connections is less than the chosen value\",\"sequenceNumber\":3,\"rerun\":\"RerunAlways\"},{\"minimum\":\"50\",\"maximum\":\"100\",\"value\":\"75\",\"name\":\"Percent + beaconing threshold\",\"description\":\"Generate an anomaly when percent beaconing + is greater than the chosen value\",\"sequenceNumber\":4,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1001\",\"T1008\",\"T1071\",\"T1090\",\"T1095\",\"T1102\",\"T1104\",\"T1132\",\"T1205\",\"T1568\",\"T1571\",\"T1572\",\"T1573\"],\"displayName\":\"(Preview) + Detect machine generated network beaconing behavior\",\"description\":\"This + algorithm identifies beaconing patterns from network traffic connection logs + based on recurrent time delta patterns.\\nAny network connection towards the + untrusted public networks at repetitive time delta is an indication of malware + callbacks or data exfiltration attempts. \\nThe anomaly will calculate time + delta between consecutive network connection between same source and destination + ip as well as count (Connections in time-delta sequence) of \\ntime-delta + sequence between same source and destination. Percentage of beaconing is calculated + between connections in time-delta sequence against total connections in a + day.\",\"lastUpdatedDateUTC\":\"2022-03-01T00:00:00Z\",\"createdDateUTC\":\"2021-04-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b6d03b88-4d27-49a2-9c1c-29f1ad2842dc\",\"name\":\"b6d03b88-4d27-49a2-9c1c-29f1ad2842dc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + oneDriveCalls = dynamic(['graph.microsoft.com/v1.0/me/drive/root:/Documents/data.txt:/content','graph.microsoft.com/v1.0/me/drive/root:/Documents/response.json:/content']);\\nlet + oneDriveCallsRegex = dynamic([@'graph\\\\.microsoft\\\\.com\\\\/v1\\\\.0\\\\/me\\\\/drive\\\\/root\\\\:\\\\/Uploaded\\\\/.*\\\\:\\\\/content',@'graph\\\\.microsoft\\\\.com\\\\/v1\\\\.0\\\\/me\\\\/drive\\\\/root\\\\:\\\\/Downloaded\\\\/.*\\\\:\\\\/content']);\\nCommonSecurityLog\\n| + where RequestURL has_any (oneDriveCalls) or RequestURL matches regex tostring(oneDriveCallsRegex[0]) + or RequestURL matches regex tostring(oneDriveCallsRegex[1])\\n| project TimeGenerated, + DeviceVendor, DeviceProduct, DeviceAction, DestinationDnsDomain, DestinationIP, + RequestURL, SourceIP, SourceHostName, RequestClientApplication\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceIP\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"SourceHostName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\",\"CommandAndControl\"],\"techniques\":[\"T1567\",\"T1102\"],\"displayName\":\"CreepyDrive + URLs\",\"description\":\"CreepyDrive uses OneDrive for command and control. + This detection identifies URLs specific to CreepyDrive.\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2022-05-31T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7e38a3e4-ccb9-4c73-b4ee-290b3bed077c\",\"name\":\"7e38a3e4-ccb9-4c73-b4ee-290b3bed077c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":\".lan, + .home\",\"dataType\":\"string\",\"name\":\"Domain suffixes\",\"description\":\"Give + comma separated suffixes to exclude from source data within double quotes, + example: \\\".lan, .home\\\"\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.9\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score (probability that the domain is DGA) is + greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"},{\"minimum\":\"5\",\"maximum\":\"100\",\"value\":\"30\",\"name\":\"Distinct + IP filter\",\"description\":\"DGA attacks tend to come from a small number + of distinct IP addresses. Define a threshold value for the number of distinct + IP addresses a second-level domain accesses, above which that domain will + be filtered out as noise. For example, if the threshold is 30, only anomalies + in which the distinct number of IP addresses accessing the second-level domain + is less than or equal to 30 will be included in your results. Our default + value is a result of our own data studies but you can use the Observables + provided to help you adjust your threshold value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\"],\"displayName\":\"(Preview) + Potential domain generation algorithm (DGA) on next-level DNS Domains\",\"description\":\"This + machine learning model indicates the next-level domains (third-level and up)\\nof + the domain names from the last day of DNS logs are unusual. They could potentially + be the output of a domain generation\\nalgorithm (DGA). The anomaly applies + to the DNS records that resolve to IPv4 and IPv6 addresses.\",\"lastUpdatedDateUTC\":\"2022-01-18T00:00:00Z\",\"createdDateUTC\":\"2022-01-18T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/011c84d8-85f0-4370-b864-24c13455aa94\",\"name\":\"011c84d8-85f0-4370-b864-24c13455aa94\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityAlert\\n| + extend Extprop = parse_json(ExtendedProperties)\\n| extend Computer = iff(isnotempty(toupper(tostring(Extprop[\\\"Compromised + Host\\\"]))), toupper(tostring(Extprop[\\\"Compromised Host\\\"])), tostring(parse_json(Entities)[0].HostName))\\n| + extend Account = iff(isnotempty(tolower(tostring(Extprop[\\\"User Name\\\"]))), + tolower(tostring(Extprop[\\\"User Name\\\"])), tolower(tostring(Extprop[\\\"user + name\\\"])))\\n| extend IpAddress = tostring(parse_json(ExtendedProperties).[\\\"IpAddress\\\"]) + \\n| project TimeGenerated, AlertName, Computer, Account, IpAddress, ExtendedProperties\\n| + extend timestamp = TimeGenerated, Account, MachineName = Computer, IpAddress\\n| + join kind=inner\\n(\\nCoreAzureBackup\\n| where State =~ \\\"Deleted\\\"\\n| + where OperationName =~ \\\"BackupItem\\\"\\n| extend data = split(BackupItemUniqueId, + \\\";\\\")\\n| extend AzureLocation = data[0], VaultId=data[1], MachineName=data[2], + DrivesBackedUp=data[3]\\n| project timestamp = TimeGenerated, AzureLocation, + VaultId, tostring(MachineName), DrivesBackedUp, State, BackupItemUniqueId, + _ResourceId, OperationName, BackupItemFriendlyName\\n)\\non MachineName\\n| + project timestamp, AlertName, HostCustomEntity = MachineName, AccountCustomEntity + = Account, ResourceCustomEntity = _ResourceId, IPCustomEntity = IpAddress, + VaultId, AzureLocation, DrivesBackedUp, State, BackupItemUniqueId, OperationName, + BackupItemFriendlyName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"AzureResource\",\"fieldMappings\":[{\"identifier\":\"ResourceId\",\"columnName\":\"ResourceCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"CoreBackUp + Deletion in correlation with other related security alerts\",\"description\":\"This + query will help detect attackers attempt to delete backup containers in correlation + with other alerts that could have triggered to help possibly reveal more details + of attacker activity. \\nThough such an activity could be legitimate as part + of business operation, some ransomware actors may perform such operation to + cause interruption to regular business services.\",\"lastUpdatedDateUTC\":\"2021-11-05T00:00:00Z\",\"createdDateUTC\":\"2021-11-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureSecurityCenter\",\"dataTypes\":[\"SecurityAlert\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1218175f-c534-421c-8070-5dcaabf28067\",\"name\":\"1218175f-c534-421c-8070-5dcaabf28067\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + threshold = 3; \\nZoomLogs \\n| where Event =~ \\\"chat_message.sent\\\" \\n| + extend Channel = tostring(parse_json(ChatEvents).Channel) \\n| extend Message + = tostring(parse_json(ChatEvents).Message) \\n| where Message matches regex + \\\"http(s?):\\\\\\\\/\\\\\\\\/\\\" \\n| summarize Channels = makeset(Channel), + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by Message, User, + UserId\\n| extend ChannelCount = arraylength(Channels) \\n| where ChannelCount + > threshold\\n| extend timestamp = StartTime, AccountCustomEntity = User\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\",\"Persistence\"],\"displayName\":\"Suspicious + link sharing pattern\",\"description\":\"Alerts in links that have been shared + across multiple Zoom chat channels by the same user in a short space if time. + \\nAdjust the threshold figure to change the number of channels a message + needs to be posted in before an alert is raised.\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2020-04-24T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/06107abb-1b68-4fdc-841b-8a1ff9301467\",\"name\":\"06107abb-1b68-4fdc-841b-8a1ff9301467\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.1.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.87\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1030\",\"T1041\",\"T1011\",\"T1567\",\"T1029\",\"T1537\"],\"displayName\":\"(Preview) + Excessive Downloads via Palo Alto GlobalProtect\",\"description\":\"This algorithm + detects unusually high volume of download per user account via Palo Alto VPN + solution.\\nThe model is trained on the previous 14 days of the VPN logs.\\nIt + indicates anomalous high volume of downloads in the last day.\",\"lastUpdatedDateUTC\":\"2022-03-08T00:00:00Z\",\"createdDateUTC\":\"2020-11-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0d76e9cf-788d-4a69-ac7d-f234826b5bed\",\"name\":\"0d76e9cf-788d-4a69-ac7d-f234826b5bed\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"DnsEvents\\n| + where Name contains \\\".\\\"\\n| where Name has_any (\\\"monerohash.com\\\", + \\\"do-dear.com\\\", \\\"xmrminerpro.com\\\", \\\"secumine.net\\\", \\\"xmrpool.com\\\", + \\\"minexmr.org\\\", \\\"hashanywhere.com\\\", \\n\\\"xmrget.com\\\", \\\"mininglottery.eu\\\", + \\\"minergate.com\\\", \\\"moriaxmr.com\\\", \\\"multipooler.com\\\", \\\"moneropools.com\\\", + \\\"xmrpool.eu\\\", \\\"coolmining.club\\\", \\n\\\"supportxmr.com\\\", \\\"minexmr.com\\\", + \\\"hashvault.pro\\\", \\\"xmrpool.net\\\", \\\"crypto-pool.fr\\\", \\\"xmr.pt\\\", + \\\"miner.rocks\\\", \\\"walpool.com\\\", \\\"herominers.com\\\", \\n\\\"gntl.co.uk\\\", + \\\"semipool.com\\\", \\\"coinfoundry.org\\\", \\\"cryptoknight.cc\\\", \\\"fairhash.org\\\", + \\\"baikalmine.com\\\", \\\"tubepool.xyz\\\", \\\"fairpool.xyz\\\", \\\"asiapool.io\\\", + \\n\\\"coinpoolit.webhop.me\\\", \\\"nanopool.org\\\", \\\"moneropool.com\\\", + \\\"miner.center\\\", \\\"prohash.net\\\", \\\"poolto.be\\\", \\\"cryptoescrow.eu\\\", + \\\"monerominers.net\\\", \\\"cryptonotepool.org\\\", \\n\\\"extrmepool.org\\\", + \\\"webcoin.me\\\", \\\"kippo.eu\\\", \\\"hashinvest.ws\\\", \\\"monero.farm\\\", + \\\"supportxmr.com\\\", \\\"xmrpool.eu\\\", \\\"linux-repository-updates.com\\\", + \\\"1gh.com\\\", \\n\\\"dwarfpool.com\\\", \\\"hash-to-coins.com\\\", \\\"hashvault.pro\\\", + \\\"pool-proxy.com\\\", \\\"hashfor.cash\\\", \\\"fairpool.cloud\\\", \\\"litecoinpool.org\\\", + \\\"mineshaft.ml\\\", \\\"abcxyz.stream\\\", \\n\\\"moneropool.ru\\\", \\\"cryptonotepool.org.uk\\\", + \\\"extremepool.org\\\", \\\"extremehash.com\\\", \\\"hashinvest.net\\\", + \\\"unipool.pro\\\", \\\"crypto-pools.org\\\", \\\"monero.net\\\", \\n\\\"backup-pool.com\\\", + \\\"mooo.com\\\", \\\"freeyy.me\\\", \\\"cryptonight.net\\\", \\\"shscrypto.net\\\")\\n| + extend timestamp = TimeGenerated, IPCustomEntity = ClientIP, HostCustomEntity + = Computer\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"DNS + events related to mining pools\",\"description\":\"Identifies IP addresses + that may be performing DNS lookups associated with common currency mining + pools.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/95a15f39-d9cc-4667-8cdd-58f3113691c9\",\"name\":\"95a15f39-d9cc-4667-8cdd-58f3113691c9\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lookback = 14d;\\nlet timeframe = 1d;\\n(union isfuzzy=true\\n(SecurityEvent\\n| + where TimeGenerated > ago(lookback) and TimeGenerated < ago(timeframe)\\n| + where EventID == 4688\\n| where ParentProcessName has_any (\\\"umworkerprocess.exe\\\", + \\\"UMService.exe\\\")\\n| join kind=rightanti (\\nSecurityEvent\\n| where + TimeGenerated > ago(timeframe)\\n| where ParentProcessName has_any (\\\"umworkerprocess.exe\\\", + \\\"UMService.exe\\\")\\n| where EventID == 4688) on NewProcessName\\n| extend + timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity + = Computer, IPCustomEntity = IpAddress\\n),\\n(WindowsEvent\\n| where TimeGenerated + > ago(lookback) and TimeGenerated < ago(timeframe)\\n| where EventID == 4688 + and EventData has_any (\\\"umworkerprocess.exe\\\", \\\"UMService.exe\\\")\\n| + extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| where + ParentProcessName has_any (\\\"umworkerprocess.exe\\\", \\\"UMService.exe\\\")\\n| + extend NewProcessName = tostring(EventData.NewProcessName)\\n| extend Account + = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", tostring(EventData.SubjectUserName))\\n| + extend IpAddress = tostring(EventData.IpAddress)\\n| join kind=rightanti (\\nWindowsEvent\\n| + where TimeGenerated > ago(timeframe)\\n| where EventID == 4688 and EventData + has_any (\\\"umworkerprocess.exe\\\", \\\"UMService.exe\\\")\\n| extend ParentProcessName + = tostring(EventData.ParentProcessName)\\n| where ParentProcessName has_any + (\\\"umworkerprocess.exe\\\", \\\"UMService.exe\\\")\\n| extend NewProcessName + = tostring(EventData.NewProcessName)\\n| extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend IpAddress = tostring(EventData.IpAddress)) + on NewProcessName\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = Account, HostCustomEntity = Computer, IPCustomEntity = IpAddress\\n))\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"HAFNIUM + New UM Service Child Process\",\"description\":\"This query looks for new + processes being spawned by the Exchange UM service where that process has + not previously been observed before. \\nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-03-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f845881e-2500-44dc-8ed7-b372af3e1e25\",\"name\":\"f845881e-2500-44dc-8ed7-b372af3e1e25\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + short_uaLength = 5;\\nlet long_uaLength = 1000;\\nlet c_threshold = 100;\\nW3CIISLog + \\n// Exclude local IPs as these create noise\\n| where cIP !startswith \\\"192.168.\\\" + and cIP != \\\"::1\\\"\\n| where isnotempty(csUserAgent) and csUserAgent !in~ + (\\\"-\\\", \\\"MSRPC\\\") and (string_size(csUserAgent) <= short_uaLength + or string_size(csUserAgent) >= long_uaLength)\\n| extend csUserAgent_size + = string_size(csUserAgent)\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated), ConnectionCount = count() by Computer, sSiteName, + sPort, csUserAgent, csUserAgent_size, csUserName , csMethod, csUriStem, sIP, + cIP, scStatus, scSubStatus, scWin32Status\\n| where ConnectionCount < c_threshold\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = csUserName, HostCustomEntity + = Computer, IPCustomEntity = cIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"Anomalous + User Agent connection attempt\",\"description\":\"Identifies connection attempts + (success or fail) from clients with very short or very long User Agent strings + and with less than 100 connection attempts.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-20T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a2e36ce0-da4d-4b6e-88c6-4e40161c5bfc\",\"name\":\"a2e36ce0-da4d-4b6e-88c6-4e40161c5bfc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet emailregex = @'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$';\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n//Filtering the table for Email related IOCs\\n| where + isnotempty(EmailSenderAddress)\\n// using innerunique to keep perf fast and + result set low, we only need one match to indicate potential malicious activity + that needs to be investigated\\n| join kind=innerunique (\\n SecurityAlert + \\n | where TimeGenerated >= ago(dt_lookBack)\\n | extend MSTI = case(AlertName + has \\\"TI map\\\" and VendorName == \\\"Microsoft\\\" and ProductName == + 'Azure Sentinel', true, false)\\n | where MSTI == false\\n // Converting + Entities into dynamic data type and use mv-expand to unpack the array\\n | + extend EntitiesDynamicArray = parse_json(Entities) | mv-expand EntitiesDynamicArray\\n + \ // Parsing relevant entity column to filter type account and creating + new column by combining account and UPNSuffix\\n | extend Entitytype = + tostring(parse_json(EntitiesDynamicArray).Type), EntityName = tostring(parse_json(EntitiesDynamicArray).Name),\\n + \ EntityUPNSuffix = tostring(parse_json(EntitiesDynamicArray).UPNSuffix)\\n + \ | where Entitytype =~ \\\"account\\\"\\n | extend EntityEmail = tolower(strcat(EntityName, + \\\"@\\\", EntityUPNSuffix))\\n | where EntityEmail matches regex emailregex\\n + \ | extend Alert_TimeGenerated = TimeGenerated\\n)\\non $left.EmailSenderAddress + == $right.EntityEmail\\n| where Alert_TimeGenerated < ExpirationDateTime\\n| + summarize Alert_TimeGenerated = arg_max(Alert_TimeGenerated, *) by IndicatorId, + AlertName\\n| project Alert_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, \\nEmailSenderName, + EmailRecipient, EmailSourceDomain, EmailSourceIpAddress, EmailSubject, FileHashValue, + FileHashType, EntityEmail, AlertName, AlertType,\\nAlertSeverity, Entities, + ProviderName, VendorName\\n| extend timestamp = Alert_TimeGenerated, AccountCustomEntity + = EntityEmail, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.2\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Email entity to SecurityAlert\",\"description\":\"Identifies a match in + SecurityAlert table from any Email IOC from TI which will extend coverage + to datatypes such as MCAS, StorageThreatProtection and many others\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureSecurityCenter\",\"dataTypes\":[\"SecurityAlert\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c9b6d281-b96b-4763-b728-9a04b9fe1246\",\"name\":\"c9b6d281-b96b-4763-b728-9a04b9fe1246\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 10m;\\nCisco_Umbrella\\n| where TimeGenerated > ago(lbtime)\\n| where + EventType == 'proxylogs'\\n| where DvcAction =~ 'Allowed'\\n| where UrlCategory + has_any ('Dynamic and Residential', 'Personal VPN')\\n| project TimeGenerated, + SrcIpAddr, Identities\\n| extend IPCustomEntity = SrcIpAddr\\n| extend AccountCustomEntity + = Identities\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\",\"Exfiltration\"],\"displayName\":\"Cisco + Umbrella - Connection to non-corporate private network\",\"description\":\"IP + addresses of broadband links that usually indicates users attempting to access + their home network, for example for a remote session to a home computer.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/631d02df-ab51-46c1-8d72-32d0cfec0720\",\"name\":\"631d02df-ab51-46c1-8d72-32d0cfec0720\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + excludeProcs = dynamic([@\\\"\\\\SolarWinds\\\\Orion\\\\APM\\\\APMServiceControl.exe\\\", + @\\\"\\\\SolarWinds\\\\Orion\\\\ExportToPDFCmd.Exe\\\", @\\\"\\\\SolarWinds.Credentials\\\\SolarWinds.Credentials.Orion.WebApi.exe\\\", + @\\\"\\\\SolarWinds\\\\Orion\\\\Topology\\\\SolarWinds.Orion.Topology.Calculator.exe\\\", + @\\\"\\\\SolarWinds\\\\Orion\\\\Database-Maint.exe\\\", @\\\"\\\\SolarWinds.Orion.ApiPoller.Service\\\\SolarWinds.Orion.ApiPoller.Service.exe\\\", + @\\\"\\\\Windows\\\\SysWOW64\\\\WerFault.exe\\\"]);\\nimProcessCreate\\n| + where Process hassuffix 'solarwinds.businesslayerhost.exe'\\n| where not(Process + has_any (excludeProcs))\\n| extend\\n timestamp = TimeGenerated,\\n AccountCustomEntity + = ActorUsername,\\n HostCustomEntity = User,\\n AlgorithmCustomEntity + = \\\"MD5\\\",\\n FileHashCustomEntity = TargetProcessMD5 // Change to + *hash* once implemented\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Execution\",\"Persistence\"],\"displayName\":\"SUNBURST + suspicious SolarWinds child processes (Normalized Process Events)\",\"description\":\"Identifies + suspicious child processes of SolarWinds.Orion.Core.BusinessLayer.dll that + may be evidence of the SUNBURST backdoor\\nReferences:\\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\\n- + https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f\\nTo + use this analytics rule, make sure you have deployed the [ASIM normalization + parsers](https://aka.ms/ASimProcessEvent)\",\"lastUpdatedDateUTC\":\"2022-02-14T00:00:00Z\",\"createdDateUTC\":\"2020-12-15T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0bd65651-1404-438b-8f63-eecddcec87b4\",\"name\":\"0bd65651-1404-438b-8f63-eecddcec87b4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 1d;\\n// Adjust for a longer timeframe for identifying ADFS Servers\\nlet + lookback = 6d;\\n// Identify ADFS Servers\\nlet ADFS_Servers = ( union isfuzzy=true\\n( + Event\\n| where TimeGenerated > ago(timeframe+lookback)\\n| where Source == + \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 1\\n| extend EventData + = parse_xml(EventData).DataItem.EventData.Data\\n| mv-expand bagexpansion=array + EventData\\n| evaluate bag_unpack(EventData)\\n| extend Key=tostring(['@Name']), + Value=['#text']\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, + EventLog, Computer, EventLevel, EventLevelName, UserName, RenderedDescription, + MG, ManagementGroupName, Type, _ResourceId)\\n| extend process = split(Image, + '\\\\\\\\', -1)[-1]\\n| where process =~ \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + distinct Computer\\n),\\n( SecurityEvent\\n| where TimeGenerated > ago(timeframe+lookback)\\n| + where EventID == 4688 and SubjectLogonId != \\\"0x3e4\\\"\\n| where ProcessName + has \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| distinct Computer\\n),\\n(WindowsEvent\\n| + where TimeGenerated > ago(timeframe+lookback)\\n| where EventID == 4688 and + EventData has \\\"0x3e4\\\" and EventData has \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + extend SubjectLogonId = tostring(EventData.SubjectLogonId)\\n| where SubjectLogonId + != \\\"0x3e4\\\"\\n| extend ProcessName = tostring(EventData.ProcessName)\\n| + where ProcessName has \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + distinct Computer\\n)\\n| distinct Computer);\\n(union isfuzzy=true\\n(\\nSecurityEvent\\n| + where EventID == 4688\\n| where TimeGenerated > ago(timeframe)\\n| where Computer + in~ (ADFS_Servers)\\n| where ParentProcessName has 'wmiprvse.exe'\\n// Looking + for rundll32.exe is based on intel from the blog linked in the description\\n// + This can be commented out or altered to filter out known internal uses\\n| + where CommandLine has_any ('rundll32') \\n| project TimeGenerated, TargetAccount, + CommandLine, Computer, Account, TargetLogonId\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer, AccountCustomEntity = Account\\n// Search for + recent logons to identify lateral movement\\n| join kind= inner\\n(SecurityEvent\\n| + where TimeGenerated > ago(timeframe)\\n| where EventID == 4624 and LogonType + == 3\\n| where Account !endswith \\\"$\\\"\\n| project TargetLogonId\\n) on + TargetLogonId\\n),\\n(\\nWindowsEvent\\n| where EventID == 4688\\n| where + TimeGenerated > ago(timeframe)\\n| where Computer in~ (ADFS_Servers)\\n| where + EventData has 'wmiprvse.exe' and EventData has_any ('rundll32') \\n| extend + ParentProcessName = tostring(EventData.ParentProcessName)\\n| where ParentProcessName + has 'wmiprvse.exe'\\n// Looking for rundll32.exe is based on intel from the + blog linked in the description\\n// This can be commented out or altered to + filter out known internal uses\\n| extend CommandLine = tostring(EventData.CommandLine)\\n| + where CommandLine has_any ('rundll32') \\n| extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| extend Account = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| extend TargetLogonId = tostring(EventData.TargetLogonId)\\n| + project TimeGenerated, TargetAccount, CommandLine, Computer, Account, TargetLogonId\\n| + extend timestamp = TimeGenerated, HostCustomEntity = Computer, AccountCustomEntity + = Account\\n// Search for recent logons to identify lateral movement\\n| join + kind= inner\\n(WindowsEvent\\n| where TimeGenerated > ago(timeframe)\\n| where + EventID == 4624 \\n| extend LogonType = tostring(EventData.LogonType)\\n| + where LogonType == 3\\n| extend Account = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| where Account !endswith \\\"$\\\"\\n| extend + TargetLogonId = tostring(EventData.TargetLogonId)\\n| project TargetLogonId\\n) + on TargetLogonId\\n),\\n(\\nEvent\\n| where TimeGenerated > ago(timeframe)\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n// Check for WMI Events\\n| + where Computer in~ (ADFS_Servers) and EventID in (19, 20, 21)\\n| extend EventData + = parse_xml(EventData).DataItem.EventData.Data\\n| mv-expand bagexpansion=array + EventData\\n| evaluate bag_unpack(EventData)\\n| extend Key=tostring(['@Name']), + Value=['#text']\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, + EventLog, Computer, EventLevel, EventLevelName, UserName, RenderedDescription, + MG, ManagementGroupName, Type, _ResourceId)\\n| project TimeGenerated, EventType, + Image, Computer, UserName\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer, AccountCustomEntity = UserName\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"LateralMovement\"],\"techniques\":[\"T1210\"],\"displayName\":\"Gain + Code Execution on ADFS Server via Remote WMI Execution\",\"description\":\"This + query detects instances where an attacker has gained the ability to execute + code on an ADFS Server through remote WMI Execution.\\nIn order to use this + query you need to be collecting Sysmon EventIDs 19, 20, and 21.\\nIf you do + not have Sysmon data in your workspace this query will raise an error stating:\\n + \ Failed to resolve scalar expression named \\\"[@Name]\\\"\\nFor more + on how WMI was used in Solorigate see https://www.microsoft.com/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop-and-raindrop/.\\nThe + query contains some features from the following detections to look for potentially + malicious ADFS activity. See them for more details.\\n- ADFS Key Export (Sysmon): + https://github.com/Azure/Azure-Sentinel/blob/master/Detections/SecurityEvent/ADFSKeyExportSysmon.yaml\\n- + ADFS DKM Master Key Export: https://github.com/Azure/Azure-Sentinel/blob/master/Detections/MultipleDataSources/ADFS-DKM-MasterKey-Export.yaml\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-02-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3d71fc38-f249-454e-8479-0a358382ef9a\",\"name\":\"3d71fc38-f249-454e-8479-0a358382ef9a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"SecurityNestedRecommendation\\n| + where RemediationDescription has 'CVE-2021-44228'\\n| parse ResourceDetails + with * 'virtualMachines/' VirtualMAchine '\\\"' *\\n| summarize arg_min(TimeGenerated, + *) by TenantId, RecommendationSubscriptionId, VirtualMAchine, RecommendationName,Description,RemediationDescription, + tostring(AdditionalData),VulnerabilityId\\n| extend Timestamp = TimeGenerated, + HostCustomEntity = VirtualMAchine\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"Execution\"],\"techniques\":[\"T1190\",\"T1203\"],\"displayName\":\"Vulnerable + Machines related to log4j CVE-2021-44228\",\"description\":\"This query uses + the Azure Defender Security Nested Recommendations data to find machines vulnerable + to log4j CVE-2021-44228. Log4j is an open-source Apache logging library that + is used in \\n many Java-based applications. Security Nested Recommendations + data is sent to Microsoft Sentinel using the continuous export feature of + Azure Defender(refrence link below).\\n Reference: https://msrc-blog.microsoft.com/2021/12/11/microsofts-response-to-cve-2021-44228-apache-log4j2/\\n + Reference: https://docs.microsoft.com/azure/security-center/continuous-export?tabs=azure-portal\\n + Reference: https://techcommunity.microsoft.com/t5/microsoft-defender-for-cloud/how-defender-for-cloud-displays-machines-affected-by-log4j/ba-p/3037271\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-09-17T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a2e0eb51-1f11-461a-999b-cd0ebe5c7a72\",\"name\":\"a2e0eb51-1f11-461a-999b-cd0ebe5c7a72\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Azure + Security Center for IoT\",\"displayName\":\"Create incidents based on Microsoft + Defender for IOT alerts\",\"description\":\"Create incidents based on all + alerts generated in Microsoft Defender for IOT\",\"lastUpdatedDateUTC\":\"2019-12-24T00:00:00Z\",\"createdDateUTC\":\"2019-12-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"IoT\",\"dataTypes\":[\"SecurityAlert + (ASC for IoT)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d2e8fd50-8d66-11ec-b909-0242ac120002\",\"name\":\"d2e8fd50-8d66-11ec-b909-0242ac120002\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n + \ | where EventID in (4624,4625) and LogonType in (10) and IpAddress in (\\\"::1\\\",\\\"127.0.0.1\\\")\\n + \ | summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by EventID, Computer, TargetUserName, TargetLogonId, LogonType, IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"TargetUserName\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IpAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1572\"],\"displayName\":\"Potential + Remote Desktop Tunneling\",\"description\":\"This query detects remote desktop + authentication attempts with a localhost source address which can indicate + a tunneled login.\\nRef: https://www.mandiant.com/resources/bypassing-network-restrictions-through-rdp-tunneling\",\"lastUpdatedDateUTC\":\"2022-02-15T00:00:00Z\",\"createdDateUTC\":\"2022-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c37711a4-5f44-4472-8afc-0679bc0ef966\",\"name\":\"c37711a4-5f44-4472-8afc-0679bc0ef966\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/FoggyWebIOC.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet sha256Hashes = (iocs + | where Type == \\\"sha256\\\" | project IoC);\\nlet FilePaths = (iocs | where + Type =~ \\\"FilePath\\\" | project IoC);\\nlet POST_URI = (iocs | where Type + =~ \\\"URI1\\\" | project IoC);\\nlet GET_URI = (iocs | where Type =~ \\\"URI2\\\" + | project IoC);\\n//Include in the list below, the ADFS servers you know about + in your environment. In the next part of the query, we will try to identify + them for you if you have the telemetry.\\nlet ADFS_Servers1 = datatable(Computer:string)\\n[ + \\\"..\\\",\\n\\\"..\\\"\\n];\\n// + Automatically identify potential ADFS services in your environment by searching + process event telemetry for \\\"Microsoft.IdentityServer.ServiceHost.exe\\\".\\nlet + ADFS_Servers2 = \\n(union isfuzzy=true\\n(SecurityEvent\\n| where EventID + == 4688 and SubjectLogonId != \\\"0x3e4\\\"\\n| where ProcessName has \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + distinct Computer\\n),\\n( WindowsEvent\\n| where EventID == 4688 and EventData + has \\\"Microsoft.IdentityServer.ServiceHost.exe\\\" and EventData has \\\"0x3e4\\\"\\n| + extend ProcessName = tostring(EventData.ProcessName)\\n| where ProcessName + == \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| extend SubjectLogonId + = tostring(EventData.SubjectLogonId)\\n| where SubjectLogonId != \\\"0x3e4\\\"\\n| + distinct Computer\\n),\\n(DeviceProcessEvents\\n| where InitiatingProcessFileName + == 'Microsoft.IdentityServer.ServiceHost.exe'\\n| extend Computer = DeviceName\\n| + distinct Computer\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 1\\n| extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key=tostring(['@Name']), Value=['#text']\\n| evaluate pivot(Key, any(Value), + TimeGenerated, Source, EventLog, Computer, EventLevel, EventLevelName, UserName, + RenderedDescription, MG, ManagementGroupName, Type, _ResourceId)\\n| extend + process = split(Image, '\\\\\\\\', -1)[-1]\\n| where process =~ \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + distinct Computer\\n)\\n);\\nlet ADFS_Servers =\\nADFS_Servers1\\n| union + \ (ADFS_Servers2 | distinct Computer);\\n(union isfuzzy=true\\n(DeviceNetworkEvents\\n| + where DeviceName in (ADFS_Servers)\\n| where isnotempty(InitiatingProcessSHA256) + or isnotempty(InitiatingProcessFolderPath)\\n| where InitiatingProcessSHA256 + has_any (sha256Hashes) or InitiatingProcessFolderPath has_any (FilePaths)\\n| + project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + RemoteIP, RemoteUrl, RemotePort, LocalIP, Type\\n| extend timestamp = TimeGenerated, + IPCustomEntity = RemoteIP, HostCustomEntity = DeviceName\\n),\\n(Event\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\" and EventID == '7'\\n| where + Computer in (ADFS_Servers)\\n| extend EvData = parse_xml(EventData)\\n| extend + EventDetail = EvData.DataItem.EventData.Data\\n| extend ImageLoaded = EventDetail.[5].[\\\"#text\\\"], + Hashes = EventDetail.[11].[\\\"#text\\\"]\\n| parse Hashes with * 'SHA256=' + SHA256 '\\\",' *\\n| where ImageLoaded has_any (FilePaths) or SHA256 has_any + (sha256Hashes) \\n| project TimeGenerated, EventDetail, UserName, Computer, + Type, Source, SHA256, ImageLoaded, EventID\\n| extend Type = strcat(Type,\\\":\\\",EventID, + \\\": \\\", Source), Account = UserName, FileHash = SHA256, Image = EventDetail.[4].[\\\"#text\\\"] + \\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity + = Account, ProcessCustomEntity = tostring(split(Image, '\\\\\\\\', -1)[-1]), + AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity = FileHash\\n),\\n(CommonSecurityLog\\n| + where FileHash in (sha256Hashes)\\n| project TimeGenerated, Message, SourceUserID, + FileHash, Type\\n| extend timestamp = TimeGenerated, AlgorithmCustomEntity + = \\\"SHA256\\\", FileHashCustomEntity = FileHash\\n),\\n(DeviceEvents\\n| + where DeviceName in (ADFS_Servers)\\n| extend FilePath = strcat(FolderPath, + '\\\\\\\\', FileName)\\n| where InitiatingProcessSHA256 has_any (sha256Hashes) + or FilePath has_any (FilePaths)\\n| project TimeGenerated, ActionType, DeviceId, + DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessSHA256, + Type\\n| extend Account = InitiatingProcessAccountName, Computer = DeviceName, + CommandLine = InitiatingProcessCommandLine, FileHash = InitiatingProcessSHA256, + Image = InitiatingProcessFolderPath\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer , AccountCustomEntity = Account, ProcessCustomEntity + = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = FileHash\\n),\\n(DeviceFileEvents\\n| where DeviceName in (ADFS_Servers)\\n| + where FolderPath has_any (FilePaths) or SHA256 has_any (sha256Hashes)\\n| + project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + InitiatingProcessSHA256, Type\\n| extend Account = InitiatingProcessAccountName, + Computer = DeviceName, CommandLine = InitiatingProcessCommandLine, FileHash + = InitiatingProcessSHA256, Image = InitiatingProcessFolderPath\\n| extend + timestamp = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity + = Account, ProcessCustomEntity = InitiatingProcessFileName, AlgorithmCustomEntity + = \\\"SHA256\\\", FileHashCustomEntity = FileHash\\n),\\n(DeviceImageLoadEvents\\n| + where DeviceName in (ADFS_Servers)\\n| where FolderPath has_any (FilePaths) + or SHA256 has_any (sha256Hashes)\\n| project TimeGenerated, ActionType, DeviceId, + DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, + InitiatingProcessCommandLine, InitiatingProcessFolderPath, InitiatingProcessId, + InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessSHA256, + Type\\n| extend Account = InitiatingProcessAccountName, Computer = DeviceName, + CommandLine = InitiatingProcessCommandLine, FileHash = InitiatingProcessSHA256, + Image = InitiatingProcessFolderPath\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer , AccountCustomEntity = Account, ProcessCustomEntity + = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = FileHash\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where Computer in (ADFS_Servers)\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| parse EventDetail + with * 'SHA256=' SHA256 '\\\",' *\\n| where EventDetail has_any (sha256Hashes) + \\n| project TimeGenerated, EventDetail, UserName, Computer, Type, Source, + SHA256\\n| extend Type = strcat(Type, \\\": \\\", Source), Account = UserName, + FileHash = SHA256, Image = EventDetail.[4].[\\\"#text\\\"] \\n| extend timestamp + = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity = Account, + ProcessCustomEntity = tostring(split(Image, '\\\\\\\\', -1)[-1]), AlgorithmCustomEntity + = \\\"SHA256\\\", FileHashCustomEntity = FileHash\\n),\\n(W3CIISLog \\n| where + ( csMethod == 'GET' and csUriStem has_any (GET_URI)) or (csMethod == 'POST' + and csUriStem has_any (POST_URI))\\n| summarize StartTime = max(TimeGenerated), + EndTime = min(TimeGenerated), cIP_MethodCount = count() \\nby cIP, cIP_MethodCountType + = \\\"Count of repeated entries, this is to reduce rowsets returned\\\", csMethod, + \\ncsHost, scStatus, sIP, csUriStem, csUriQuery, csUserName, csUserAgent, + csCookie, csReferer\\n| extend timestamp = StartTime, IPCustomEntity = cIP, + HostCustomEntity = csHost, AccountCustomEntity = csUserName\\n),\\n(imFileEvent\\n| + where DvcHostname in (ADFS_Servers)\\n| where TargetFileSHA256 has_any (sha256Hashes) + or FilePath has_any (FilePaths)\\n| extend Account = ActorUsername, Computer + = DvcHostname, IPAddress = SrcIpAddr, CommandLine = ActingProcessCommandLine, + FileHash = TargetFileSHA256\\n| project Type, TimeGenerated, Computer, Account, + IPAddress, CommandLine, FileHash\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"2.1.1\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1005\"],\"displayName\":\"NOBELIUM + IOCs related to FoggyWeb backdoor\",\"description\":\"Identifies a match across + various data feeds for IOCs related to FoggyWeb backdoor by the threat actor + NOBELIUM.\\n FoggyWeb is a passive and highly targeted backdoor capable of + remotely exfiltrating sensitive information from a compromised AD FS server.\\n + It can also receive additional malicious components from a command-and-control + (C2) server and execute them on the compromised server.\\n Reference: https://aka.ms/nobelium-foggy-web\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-09-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\",\"DeviceFileEvents\",\"DeviceEvents\",\"DeviceImageLoadEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/61988db3-0565-49b5-b8e3-747195baac6e\",\"name\":\"61988db3-0565-49b5-b8e3-747195baac6e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + procList = dynamic([\\\"cmd.exe\\\",\\\"ftp.exe\\\",\\\"schtasks.exe\\\",\\\"powershell.exe\\\",\\\"rundll32.exe\\\",\\\"regsvr32.exe\\\",\\\"msiexec.exe\\\"]); + \ \\nimProcessCreate\\n| where CommandLine has \\\"recycler\\\"\\n| where + Process has_any (procList)\\n| extend FileName = tostring(split(Process, '\\\\\\\\')[-1])\\n| + where FileName in~ (procList)\\n| project StartTimeUtc = TimeGenerated, Dvc, + User, Process, FileName, CommandLine, ActingProcessName, EventVendor, EventProduct\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = User, HostCustomEntity + = Dvc\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.2\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1564\"],\"displayName\":\"Malware + in the recycle bin (Normalized Process Events)\",\"description\":\"Identifies + malware that has been hidden in the recycle bin.\\nTo use this analytics rule, + make sure you have deployed the [ASIM normalization parsers](https://aka.ms/ASimProcessEvent)\",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2021-06-13T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ec491363-5fe7-4eff-b68e-f42dcb76fcf6\",\"name\":\"ec491363-5fe7-4eff-b68e-f42dcb76fcf6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"AzureActivity\\n| + where CategoryValue == 'Administrative'\\n| where ResourceProviderValue =~ + 'Microsoft.ADHybridHealthService'\\n| where _ResourceId contains 'AdFederationService'\\n| + where OperationNameValue =~ 'Microsoft.ADHybridHealthService/services/servicemembers/action'\\n| + extend claimsJson = parse_json(Claims)\\n| extend AppId = tostring(claimsJson.appid)\\n| + extend AccountName = tostring(claimsJson.name)\\n| project-away claimsJson\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Caller\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"CallerIpAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"NRT + Azure Active Directory Hybrid Health AD FS New Server\",\"description\":\"This + detection uses AzureActivity logs (Administrative category) to identify the + creation or update of a server instance in an Azure AD Hybrid health AD FS + service.\\nA threat actor can create a new AD Health ADFS service and create + a fake server instance to spoof AD FS signing logs. There is no need to compromise + an on-prem AD FS server.\\nThis can be done programmatically via HTTP requests + to Azure. More information in this blog: https://o365blog.com/post/hybridhealthagent/\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2021-08-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/32ffb19e-8ed8-40ed-87a0-1adb4746b7c4\",\"name\":\"32ffb19e-8ed8-40ed-87a0-1adb4746b7c4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"// + Enter a reference list of malicious file artifacts\\nlet MaliciousFileArtifacts + = dynamic ([\\\"lsass.dmp\\\",\\\"test.pwd\\\",\\\"lsremora.dll\\\",\\\"lsremora64.dll\\\",\\\"fgexec.exe\\\",\\\"pwdump\\\",\\\"kirbi\\\",\\\"wce_ccache\\\",\\\"wce_krbtkts\\\",\\\"wceaux.dll\\\",\\\"PwHashes\\\",\\\"SAM.out\\\",\\\"SECURITY.out\\\",\\\"SYSTEM.out\\\",\\\"NTDS.out\\\" + \\\"DumpExt.dll\\\",\\\"DumpSvc.exe\\\",\\\"cachedump64.exe\\\",\\\"cachedump.exe\\\",\\\"pstgdump.exe\\\",\\\"servpw64.exe\\\",\\\"servpw.exe\\\",\\\"pwdump.exe\\\",\\\"fgdump-log\\\"]);\\nEvent\\n| + where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID==11\\n| + parse EventData with * 'TargetFilename\\\">' TargetFilename \\\"<\\\" *\\n| + where TargetFilename has_any (MaliciousFileArtifacts)\\n| parse EventData + with * 'ProcessGuid\\\">' ProcessGuid \\\"<\\\" * 'Image\\\">' Image \\\"<\\\" + *\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by EventID, Computer, Image, ProcessGuid, TargetFilename\",\"entityMappings\":[{\"entityType\":\"File\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"TargetFilename\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"CommandLine\",\"columnName\":\"Image\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1003\"],\"displayName\":\"Credential + Dumping Tools - File Artifacts\",\"description\":\"This query detects the + creation of credential dumping tools files. Several credential dumping tools + export files with hardcoded file names.\\nRef: https://jpcertcc.github.io/ToolAnalysisResultSheet/\",\"lastUpdatedDateUTC\":\"2022-04-22T00:00:00Z\",\"createdDateUTC\":\"2022-02-17T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"Event\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/983a6922-894d-413c-9f04-d7add0ecc307\",\"name\":\"983a6922-894d-413c-9f04-d7add0ecc307\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P10D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + referencestarttime = 10d;\\nlet referenceendtime = 1d;\\nlet threshold = 100;\\nlet + nxDomainDnsEvents = (stime:datetime, etime:datetime) \\n {_Im_Dns(responsecodename='NXDOMAIN', + starttime=stime, endtime=etime)\\n | where DnsQueryTypeName in (\\\"A\\\", + \\\"AAAA\\\")\\n | where ipv4_is_match(\\\"127.0.0.1\\\", SrcIpAddr) == False\\n + \ | where DnsQuery !contains \\\"/\\\" and DnsQuery contains \\\".\\\"};\\nnxDomainDnsEvents + (stime=ago(referenceendtime) ,etime=now())\\n | extend sld = tostring(split(DnsQuery, + \\\".\\\")[-2])\\n | summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc + = max(TimeGenerated), dcount(sld) by SrcIpAddr\\n | where dcount_sld > threshold\\n + \ // Filter out previously seen IPs\\n | join kind=leftanti (nxDomainDnsEvents + (stime=ago(referencestarttime), etime=ago(referenceendtime))\\n | extend + sld = tostring(split(DnsQuery, \\\".\\\")[-2])\\n | summarize dcount(sld) + by SrcIpAddr\\n | where dcount_sld > threshold ) on SrcIpAddr\\n// Pull + out sample NXDomain responses for those remaining potentially infected IPs\\n| + join kind = inner (nxDomainDnsEvents (stime=ago(referencestarttime), etime=now()) + | summarize by DnsQuery, SrcIpAddr) on SrcIpAddr\\n| summarize StartTimeUtc + = min(StartTimeUtc), EndTimeUtc = max(EndTimeUtc), sampleNXDomainList=make_list(DnsQuery, + 100) by SrcIpAddr, dcount_sld\\n| extend timestamp = StartTimeUtc, IPCustomEntity + = SrcIpAddr\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\",\"T1008\"],\"displayName\":\"Potential + DGA detected (ASIM DNS Schema)\",\"description\":\"Identifies clients with + a high NXDomain count which could be indicative of a DGA (cycling through + possible C2 domains\\nwhere most C2s are not live). Alert is generated when + a new IP address is seen (based on not being seen associated with \\nNXDomain + records in prior 10-day baseline period).\\nThis analytic rule uses [ASIM](https://aka.ms/AboutASIM) + and supports any built-in or custom source that supports the ASIM DNS schema\",\"lastUpdatedDateUTC\":\"2022-04-10T00:00:00Z\",\"createdDateUTC\":\"2021-09-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/18dbdc22-b69f-4109-9e39-723d9465f45f\",\"name\":\"18dbdc22-b69f-4109-9e39-723d9465f45f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ActiniumIOC.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet AVHits = (iocs | + where Type =~ \\\"AVDetection\\\"| project IoC);\\nSecurityAlert\\n| where + ProviderName == 'MDATP'\\n| extend ThreatName_ = tostring(parse_json(ExtendedProperties).ThreatName)\\n| + where ThreatName_ has_any (AVHits)\\n| extend Directory = tostring(parse_json(Entities)[0].Directory), + SHA256 = tostring(parse_json(tostring(parse_json(Entities)[0].FileHashes))[2].Value), + FileName = tostring(parse_json(Entities)[0].Name), Hostname = tostring(parse_json(Entities)[6].FQDN)| + extend AccountName = tostring(parse_json(tostring(parse_json(Entities)[6].LoggedOnUsers))[0].AccountName)\\n| + project TimeGenerated, AlertName, ThreatName_, ProviderName, AlertSeverity, + Description, RemediationSteps, ExtendedProperties, Entities, FileName,SHA256, + Directory, Hostname, AccountName\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Hostname , AccountCustomEntity = AccountName, FileHashCustomEntity = SHA256\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"FileHashType\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1137\"],\"displayName\":\"ACTINIUM + AV hits - Feb 2022\",\"description\":\"Identifies a match in the Security + Alert table for MDATP hits related to the ACTINIUM actor\",\"lastUpdatedDateUTC\":\"2022-02-04T00:00:00Z\",\"createdDateUTC\":\"2022-02-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftDefenderAdvancedThreatProtection\",\"dataTypes\":[\"SecurityAlert + (MDATP)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f6a51e2c-2d6a-4f92-a090-cfb002ca611f\",\"name\":\"f6a51e2c-2d6a-4f92-a090-cfb002ca611f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 10m;\\nlet disallowed_ext = dynamic(['ps1', 'exe', 'vbs', 'js', 'scr']);\\nProofpointPOD\\n| + where TimeGenerated > ago(lbtime)\\n| where EventType == 'message'\\n| where + NetworkDirection == 'inbound'\\n| where FilterDisposition !in ('reject', 'discard')\\n| + extend attachedExt = todynamic(MsgParts)[0]['detectedExt']\\n| where attachedExt + in (disallowed_ext)\\n| project SrcUserUpn, DstUserUpn\\n| extend AccountCustomEntity + = DstUserUpn\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"ProofpointPOD + - Suspicious attachment\",\"description\":\"Detects when email contains suspicious + attachment (file type).\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/707494a5-8e44-486b-90f8-155d1797a8eb\",\"name\":\"707494a5-8e44-486b-90f8-155d1797a8eb\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P2D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + auditLookbackStart = 2d;\\nlet auditLookbackEnd = 1d;\\nAuditLogs\\n| where + TimeGenerated >= ago(auditLookbackStart)\\n| where OperationName =~ \\\"Consent + to application\\\" \\n| where Result =~ \\\"success\\\"\\n| mv-expand target + = TargetResources\\n| extend targetResourceName = tostring(target.displayName)\\n| + extend targetResourceID = tostring(target.id)\\n| extend targetResourceType + = tostring(target.type)\\n| extend targetModifiedProp = TargetResources[0].modifiedProperties\\n| + extend isAdminConsent = targetModifiedProp[0].newValue\\n| extend Consent_ServicePrincipalNames + = targetModifiedProp[5].newValue\\n| extend Consent_Permissions = targetModifiedProp[4].newValue\\n| + extend Consent_InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.app.displayName))\\n| extend Consent_InitiatingIpAddress + = iff(isnotempty(InitiatedBy.user.ipAddress), tostring(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.app.ipAddress))\\n| join ( \\nAuditLogs\\n| where TimeGenerated + \ >= ago(auditLookbackEnd)\\n| where OperationName =~ \\\"Add service principal + credentials\\\"\\n| where Result =~ \\\"success\\\"\\n| mv-expand target = + TargetResources\\n| extend targetResourceName = tostring(target.displayName)\\n| + extend targetResourceID = tostring(target.id)\\n| extend targetModifiedProp + = TargetResources[0].modifiedProperties\\n| extend Credential_KeyDescription + = targetModifiedProp[0].newValue\\n| extend UpdatedProperties = targetModifiedProp[1].newValue\\n| + extend Credential_ServicePrincipalNames = targetModifiedProp[2].newValue\\n| + extend Credential_InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.app.displayName))\\n| extend Credential_InitiatingIpAddress + = iff(isnotempty(InitiatedBy.user.ipAddress), tostring(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.app.ipAddress))\\n) on targetResourceName, targetResourceID\\n| + extend TimeConsent = TimeGenerated, TimeCred = TimeGenerated1\\n| where TimeConsent + > TimeCred \\n| project TimeConsent, TimeCred, Consent_InitiatingUserOrApp, + Credential_InitiatingUserOrApp, targetResourceName, targetResourceType, isAdminConsent, + Consent_ServicePrincipalNames, Credential_ServicePrincipalNames, Consent_Permissions, + Credential_KeyDescription, Consent_InitiatingIpAddress, Credential_InitiatingIpAddress\\n| + extend timestamp = TimeConsent, AccountCustomEntity = Consent_InitiatingUserOrApp, + IPCustomEntity = Consent_InitiatingIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"displayName\":\"Credential + added after admin consented to Application\",\"description\":\"This query + will identify instances where Service Principal credentials were added to + an application by one user after the application was granted admin consent + rights by another user.\\n If a threat actor obtains access to an account + with sufficient privileges and adds the alternate authentication material + triggering this event, the threat actor can now authenticate as the Application + or Service Principal using this credential.\\n Additional information on OAuth + Credential Grants can be found in RFC 6749 Section 4.4 or https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow.\\n + For further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2021-02-12T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b40a7a5b-5d39-46fe-a79e-2acdb38e1ce7\",\"name\":\"b40a7a5b-5d39-46fe-a79e-2acdb38e1ce7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.3\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.01\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of failed login attempts to AWS Console by each group user + account\",\"description\":\"This algorithm detects an unusually high volume + of AWS cloud trail log console failed login events per group user account + within the last day. The model is trained on the previous 21 days of AWS cloud + trail log events on group user account basis. This activity may indicate that + the account is compromised.\",\"lastUpdatedDateUTC\":\"2021-10-26T00:00:00Z\",\"createdDateUTC\":\"2021-08-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/11bda520-a965-4654-9a45-d09f372f71aa\",\"name\":\"11bda520-a965-4654-9a45-d09f372f71aa\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P2D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AzureActivity\\n// + Isolate run command actions\\n| where OperationNameValue == \\\"MICROSOFT.COMPUTE/VIRTUALMACHINES/RUNCOMMAND/ACTION\\\"\\n// + Confirm that the operation impacted a virtual machine\\n| where Authorization + has \\\"virtualMachines\\\"\\n// Each runcommand operation consists of three + events when successful, Started, Accepted (or Rejected), Successful (or Failed).\\n| + summarize StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), max(CallerIpAddress), + make_list(ActivityStatusValue) by CorrelationId, Authorization, Caller\\n// + Limit to Run Command executions that Succeeded\\n| where list_ActivityStatusValue + has \\\"Success\\\"\\n// Extract data from the Authorization field\\n| extend + Authorization_d = parse_json(Authorization)\\n| extend Scope = Authorization_d.scope\\n| + extend Scope_s = split(Scope, \\\"/\\\")\\n| extend Subscription = tostring(Scope_s[2])\\n| + extend VirtualMachineName = tostring(Scope_s[-1])\\n| project StartTime, EndTime, + Subscription, VirtualMachineName, CorrelationId, Caller, CallerIpAddress=max_CallerIpAddress\\n// + Create a join key using the Caller (UPN)\\n| extend joinkey = tolower(Caller)\\n// + Join the Run Command actions to UEBA data\\n| join kind = inner (\\n BehaviorAnalytics\\n + \ // We are specifically interested in unusual logins\\n | where EventSource + == \\\"Azure AD\\\" and ActivityInsights.ActionUncommonlyPerformedByUser == + \\\"True\\\"\\n | project UEBAEventTime=TimeGenerated, UEBAActionType=ActionType, + UserPrincipalName, UEBASourceIPLocation=SourceIPLocation, UEBAActivityInsights=ActivityInsights, + UEBAUsersInsights=UsersInsights\\n | where isnotempty(UserPrincipalName) + and isnotempty(UEBASourceIPLocation)\\n | extend joinkey = tolower(UserPrincipalName)\\n) + on joinkey\\n// Create a window around the UEBA event times, check to see + if the Run Command action was performed within them\\n| extend UEBAWindowStart + = UEBAEventTime - 1h, UEBAWindowEnd = UEBAEventTime + 6h\\n| where StartTime + between (UEBAWindowStart .. UEBAWindowEnd)\\n| project StartTime, EndTime, + Subscription, VirtualMachineName, Caller, CallerIpAddress, UEBAEventTime, + UEBAActionType, UEBASourceIPLocation, UEBAActivityInsights, UEBAUsersInsights\\n| + extend timestamp = StartTime, AccountCustomEntity=Caller, IPCustomEntity=CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.3\",\"tactics\":[\"LateralMovement\",\"CredentialAccess\"],\"techniques\":[\"T1570\"],\"displayName\":\"Azure + VM Run Command operation executed during suspicious login window\",\"description\":\"Identifies + when the Azure Run Command operation is executed by a UserPrincipalName and + IP Address \\nthat has resulted in a recent user entity behaviour alert.\",\"lastUpdatedDateUTC\":\"2022-03-01T00:00:00Z\",\"createdDateUTC\":\"2021-10-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3fe3c520-04f1-44b8-8398-782ed21435f8\",\"name\":\"3fe3c520-04f1-44b8-8398-782ed21435f8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + torProxies=dynamic([\\\"tor2web.org\\\", \\\"tor2web.com\\\", \\\"torlink.co\\\", + \\\"onion.to\\\", \\\"onion.ink\\\", \\\"onion.cab\\\", \\\"onion.nu\\\", + \\\"onion.link\\\", \\n\\\"onion.it\\\", \\\"onion.city\\\", \\\"onion.direct\\\", + \\\"onion.top\\\", \\\"onion.casa\\\", \\\"onion.plus\\\", \\\"onion.rip\\\", + \\\"onion.dog\\\", \\\"tor2web.fi\\\", \\n\\\"tor2web.blutmagie.de\\\", \\\"onion.sh\\\", + \\\"onion.lu\\\", \\\"onion.pet\\\", \\\"t2w.pw\\\", \\\"tor2web.ae.org\\\", + \\\"tor2web.io\\\", \\\"tor2web.xyz\\\", \\\"onion.lt\\\", \\n\\\"s1.tor-gateways.de\\\", + \\\"s2.tor-gateways.de\\\", \\\"s3.tor-gateways.de\\\", \\\"s4.tor-gateways.de\\\", + \\\"s5.tor-gateways.de\\\", \\\"hiddenservice.net\\\"]);\\n_Im_Dns(domain_has_any=torProxies)\\n| + extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity + = Dvc\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1048\"],\"displayName\":\"DNS + events related to ToR proxies (ASIM DNS Schema)\",\"description\":\"Identifies + IP addresses performing DNS lookups associated with common ToR proxies.\\nThis + analytic rule uses [ASIM](https://aka.ms/AboutASIM) and supports any built-in + or custom source that supports the ASIM DNS schema\",\"lastUpdatedDateUTC\":\"2022-04-10T00:00:00Z\",\"createdDateUTC\":\"2019-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d9938c3b-16f9-444d-bc22-ea9a9110e0fd\",\"name\":\"d9938c3b-16f9-444d-bc22-ea9a9110e0fd\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Azure AD Connect Health Agent - cf6d7e68-f018-4e0a-a7b3-126e053fb88d\\n// + Azure Active Directory Connect - cb1056e2-e479-49de-ae31-7812af012ed8\\nlet + appList = dynamic(['cf6d7e68-f018-4e0a-a7b3-126e053fb88d','cb1056e2-e479-49de-ae31-7812af012ed8']);\\nlet + operationNamesList = dynamic(['Microsoft.ADHybridHealthService/services/servicemembers/action','Microsoft.ADHybridHealthService/services/delete']);\\nAzureActivity\\n| + where CategoryValue == 'Administrative'\\n| where ResourceProviderValue =~ + 'Microsoft.ADHybridHealthService'\\n| where _ResourceId contains 'AdFederationService'\\n| + where OperationNameValue in~ (operationNamesList)\\n| extend claimsJson = + parse_json(Claims)\\n| extend AppId = tostring(claimsJson.appid)\\n| extend + AccountName = tostring(claimsJson.name)\\n| where AppId !in (appList)\\n| + project-away claimsJson\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = Caller, IPCustomEntity = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\",\"DefenseEvasion\"],\"techniques\":[\"T1528\",\"T1550\"],\"displayName\":\"Azure + Active Directory Hybrid Health AD FS Suspicious Application\",\"description\":\"This + detection uses AzureActivity logs (Administrative category) to a suspicious + application adding a server instance to an Azure AD Hybrid health AD FS service + or deleting the AD FS service instance.\\nUsually the Azure AD Connect Health + Agent application with ID cf6d7e68-f018-4e0a-a7b3-126e053fb88d is used to + perform those operations.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-08-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2d3e33c6-d8e6-4b51-92d6-dbe8bd9efb05\",\"name\":\"2d3e33c6-d8e6-4b51-92d6-dbe8bd9efb05\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.5\",\"customizableObservations\":{\"multiSelectObservations\":[{\"supportedValues\":[\"Fraction + of failed signins\",\"Number of failed signins\",\"Failed signins to successful + signins ratio\",\"Number of signins with incorrect passwords\",\"Incorrect + passwords to correct passwords ratio\",\"Fraction of incorrect password signins\",\"Distinct + number of app ids\",\"Distinct number of client apps\",\"Distinct number of + ip addresses\",\"Distinct number of opperating systems\",\"Distinct number + of browsers\",\"Distinct number of cities\",\"Distinct number of states\",\"Distinct + number of countries\"],\"values\":[\"Fraction of failed signins\",\"Number + of failed signins\",\"Failed signins to successful signins ratio\",\"Number + of signins with incorrect passwords\",\"Incorrect passwords to correct passwords + ratio\",\"Fraction of incorrect password signins\",\"Distinct number of app + ids\",\"Distinct number of client apps\",\"Distinct number of ip addresses\",\"Distinct + number of opperating systems\",\"Distinct number of browsers\",\"Distinct + number of cities\",\"Distinct number of states\",\"Distinct number of countries\"],\"supportedValuesKql\":null,\"valuesKql\":null,\"name\":\"Top + reason for high anomaly score\",\"description\":\"Include only anomalies where + the top reason is one of these values.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.5\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\",\"T1566\",\"T1133\"],\"displayName\":\"(Preview) + Anomalous Azure AD sign-in sessions\",\"description\":\"The machine learning + model groups the Azure AD sign-in logs on a per-user basis.\\nThe model is + trained on the previous 6 days of user sign-in behavior.\\nIt indicates anomalous + user sign-in sessions in the last day.\\nThis algorithm checks for sufficient + volume of data before training the model.\\n\\nAn autoencoder model is used.\\nIts + aim is to compress the user sign-in sessions into a bottleneck encoding.\\nIt + then attempts to reconstruct the input sessions as best it can from the bottleneck + encoding.\\nThe sessions with high reconstruction errors are assumed to be + anomalous.\",\"lastUpdatedDateUTC\":\"2022-03-01T00:00:00Z\",\"createdDateUTC\":\"2020-11-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9d0295ee-cb75-4f2c-9952-e5acfbb67036\",\"name\":\"9d0295ee-cb75-4f2c-9952-e5acfbb67036\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":1,\"severity\":\"Informational\",\"query\":\"let + timeframe = ago(1d);\\nAppServiceAntivirusScanAuditLogs\\n| where NumberOfInfectedFiles + > 0\\n| extend HostCustomEntity = _ResourceId, timestamp = TimeGenerated\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"displayName\":\"AppServices + AV Scan with Infected Files\",\"description\":\"Identifies if an AV scan finds + infected files in Azure App Services.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-12-11T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d0bd9611-2fc1-42cb-af4e-793b6f28ba92\",\"name\":\"d0bd9611-2fc1-42cb-af4e-793b6f28ba92\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.1.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.87\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1030\",\"T1041\",\"T1011\",\"T1567\",\"T1029\",\"T1537\"],\"displayName\":\"(Preview) + Excessive upload via Palo Alto GlobalProtect\",\"description\":\"This algorithm + detects unusually high volume of upload per user account via Palo Alto VPN + solution.\\nThe model is trained on the previous 14 days of the VPN logs.\\nIt + indicates anomalous high volume of upload in the last day.\",\"lastUpdatedDateUTC\":\"2022-03-08T00:00:00Z\",\"createdDateUTC\":\"2020-11-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1ff56009-db01-4615-8211-d4fda21da02d\",\"name\":\"1ff56009-db01-4615-8211-d4fda21da02d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where AADOperationType =~ \\\"Assign\\\"\\n| where ActivityDisplayName has_any + (\\\"Add delegated permission grant\\\",\\\"Add app role assignment to service + principal\\\")\\n| mv-expand TargetResources\\n| mv-expand TargetResources.modifiedProperties\\n| + extend displayName_ = tostring(TargetResources_modifiedProperties.displayName)\\n| + where displayName_ has_any (\\\"AppRole.Value\\\",\\\"DelegatedPermissionGrant.Scope\\\")\\n| + extend Permission = tostring(parse_json(tostring(TargetResources_modifiedProperties.newValue)))\\n| + where Permission has \\\"RoleManagement.ReadWrite.Directory\\\"\\n| extend + InitiatingApp = tostring(parse_json(tostring(InitiatedBy.app)).displayName)\\n| + extend Initiator = iif(isnotempty(InitiatingApp), InitiatingApp, tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName))\\n| + extend Target = tostring(parse_json(tostring(TargetResources.modifiedProperties[4].newValue)))\\n| + extend TargetId = iif(displayName_ =~ 'DelegatedPermissionGrant.Scope',\\n + \ tostring(parse_json(tostring(TargetResources.modifiedProperties[2].newValue))),\\n + \ tostring(parse_json(tostring(TargetResources.modifiedProperties[3].newValue))))\\n| + summarize by bin(TimeGenerated, 1h), OperationName, Initiator, Target, TargetId, + Result\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Initiator\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Target\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"PrivilegeEscalation\",\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Azure + AD Role Management Permission Grant\",\"description\":\"Identifies when the + Microsoft Graph RoleManagement.ReadWrite.Directory (Delegated or Application) + permission is granted to a service principal.\\nThis permission allows an + application to read and manage the role-based access control (RBAC) settings + for your company's directory.\\nAn adversary could use this permission to + add an Azure AD object to an Admin directory role and escalate privileges.\\nRef + : https://docs.microsoft.com/graph/permissions-reference#role-management-permissions\\nRef + : https://docs.microsoft.com/graph/api/directoryrole-post-members?view=graph-rest-1.0&tabs=http\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-11-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/71d374e0-1cf8-4e50-aecd-ab6c519795c2\",\"name\":\"71d374e0-1cf8-4e50-aecd-ab6c519795c2\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"AzureDevOpsAuditing\\n| + where OperationName =~ \\\"Pipelines.PipelineRetentionSettingChanged\\\"\\n| + where Data.SettingName in (\\\"PurgeArtifacts\\\", \\\"PurgeRuns\\\")\\n| + where Data.NewValue == 1 or Data.NewValue < Data.OldValue/2\\n| project-reorder + TimeGenerated, OperationName, ActorUPN, IpAddress, UserAgent, Data\\n| extend + timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity + = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1564\"],\"displayName\":\"Azure + DevOps Retention Reduced\",\"description\":\"AzureDevOps retains items such + as run records and produced artifacts for a configurable amount of time. An + attacker looking to reduce the footprint left by their malicious activity + may look to reduce the retention time for artifacts and runs.\\nThis query + will look for where retention has been reduced to the minimum level - 1, or + reduced by more than half.\",\"lastUpdatedDateUTC\":\"2021-11-02T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/979c42dd-533e-4ede-b18b-31a84ba8b3d6\",\"name\":\"979c42dd-533e-4ede-b18b-31a84ba8b3d6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"Event\\n| + where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID + in (13)\\n| parse EventData with * 'TargetObject\\\">' TargetObject \\\"<\\\" + * 'Details\\\">' Details \\\"<\\\" * \\n| where TargetObject has (\\\"HKLM\\\\\\\\System\\\\\\\\CurrentControlSet\\\\\\\\Control\\\\\\\\Lsa\\\\\\\\DsrmAdminLogonBehavior\\\") + and Details == \\\"DWORD (0x00000002)\\\"\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by EventID, Computer, TargetObject, Details\",\"entityMappings\":[{\"entityType\":\"RegistryKey\",\"fieldMappings\":[{\"identifier\":\"Key\",\"columnName\":\"TargetObject\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"DSRM + Account Abuse\",\"description\":\"This query detects an abuse of the DSRM + account in order to maintain persistence and access to the organization's + Active Directory.\\nRef: https://adsecurity.org/?p=1785\",\"lastUpdatedDateUTC\":\"2022-03-11T00:00:00Z\",\"createdDateUTC\":\"2022-03-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/03401f05-5c45-4f2d-9295-092764090e02\",\"name\":\"03401f05-5c45-4f2d-9295-092764090e02\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"2.1.0\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":[{\"supportedValues\":[\"Yes\",\"No\"],\"supportedValuesKql\":null,\"value\":\"Yes\",\"name\":\"Use + region adjacency\",\"description\":\"Suppress anomalies originated from two + adjacent regions.\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"2\",\"maximum\":\"10\",\"value\":\"2\",\"name\":\"Minimum + daily regions for anomaly\",\"description\":\"Generate an anomaly when a user + logs in from this many or more regions in a day\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\",\"DefenseEvasion\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Multi-region logins in a single day via Palo Alto GlobalProtect\",\"description\":\"This + algorithm detects a user account which had logins from multiple non-adjacent + regions in a single day via Palo Alto VPN.\",\"lastUpdatedDateUTC\":\"2022-03-08T00:00:00Z\",\"createdDateUTC\":\"2021-04-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ba144bf8-75b8-406f-9420-ed74397f9479\",\"name\":\"ba144bf8-75b8-406f-9420-ed74397f9479\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"//Set + a threshold of failed AAD signins from an IP address within 1 day above which + we want to deem those logins suspicious.\\nlet signin_threshold = 5; \\n//Make + a list of IPs with AAD signin failures above our threshold.\\nlet aadFunc + = (tableName:string){\\nlet suspicious_signins = \\n table(tableName)\\n + \ //Looking for logon failure results\\n | where ResultType !in (\\\"0\\\", + \\\"50125\\\", \\\"50140\\\")\\n //Exclude localhost addresses to reduce + the chance of FPs\\n | where IPAddress !in (\\\"127.0.0.1\\\", \\\"::1\\\")\\n + \ | summarize count() by IPAddress\\n | where count_ > signin_threshold\\n + \ | summarize make_set(IPAddress);\\n suspicious_signins\\n};\\nlet aadSignin + = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nlet + suspicious_signins = \\nunion isfuzzy=true aadSignin, aadNonInt\\n| summarize + make_set(set_IPAddress);\\n//See if any of those IPs have sucessfully logged + into PA VPNs during the same timeperiod\\nCommonSecurityLog\\n //Select + only PA VPN sucessful logons\\n | where DeviceVendor == \\\"Palo Alto Networks\\\" + and DeviceEventClassID == \\\"globalprotect\\\"\\n | where Message has + \\\"GlobalProtect gateway user authentication succeeded\\\"\\n //Parse + out the logon source IP from the Message field to match on\\n | extend + SourceIP = extract(\\\"Login from: ([^,]+)\\\", 1, Message) \\n | where + SourceIP in (suspicious_signins)\\n | extend Reason = \\\"Multiple failed + AAD logins from SourceIP\\\"\\n //Parse out other useful information from + Message field\\n | extend User = extract('User name: ([^,]+)', 1, Message) + \\n | extend ClientOS = extract('Client OS version: ([^,\\\\\\\"]+)', 1, + Message)\\n | extend Location = extract('Source region: ([^,]{2})',1, Message)\\n + \ | project TimeGenerated, Reason, SourceIP, User, ClientOS, Location, Message, + DeviceName, ReceiptTime, DeviceVendor, DeviceEventClassID, Computer, FileName\\n + \ | extend AccountCustomEntity = User, IPCustomEntity = SourceIP, timestamp + = TimeGenerated, HostCustomEntity = DeviceName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"CredentialAccess\"],\"techniques\":[\"T1078\",\"T1110\"],\"displayName\":\"IP + with multiple failed Azure AD logins successfully logs in to Palo Alto VPN\",\"description\":\"This + query creates a list of IP addresses with a number failed login attempts to + AAD \\nabove a set threshold. It then looks for any successful Palo Alto + VPN logins from any\\nof these IPs within the same timeframe.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-09-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/32555639-b639-4c2b-afda-c0ae0abefa55\",\"name\":\"32555639-b639-4c2b-afda-c0ae0abefa55\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"AWSCloudTrail\\n| + where EventName =~ \\\"GetCallerIdentity\\\" and UserIdentityType =~ \\\"AssumedRole\\\" + \\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by SourceIpAddress, EventName, EventTypeName, UserIdentityType, UserIdentityAccountId, + UserIdentityPrincipalid, \\nUserAgent, UserIdentityUserName, SessionMfaAuthenticated,AWSRegion, + EventSource, AdditionalEventData, ResponseElements\\n| extend timestamp = + StartTime, AccountCustomEntity = UserIdentityUserName, IPCustomEntity = SourceIpAddress\\n| + sort by EndTime desc nulls last\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1087\"],\"displayName\":\"Monitor + AWS Credential abuse or hijacking\",\"description\":\"Looking for GetCallerIdentity + Events where the UserID Type is AssumedRole \\nAn attacker who has assumed + the role of a legitimate account can call the GetCallerIdentity function to + determine what account they are using.\\nA legitimate user using legitimate + credentials would not need to call GetCallerIdentity since they should already + know what account they are using.\\nMore Information: https://duo.com/decipher/trailblazer-hunts-compromised-credentials-in-aws\\nAWS + STS GetCallerIdentity API: https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html + \",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/53e936c6-6c30-4d12-8343-b8a0456e8429\",\"name\":\"53e936c6-6c30-4d12-8343-b8a0456e8429\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + SUNSPOT_Hashes = dynamic([\\\"c45c9bda8db1d470f1fd0dcc346dc449839eb5ce9a948c70369230af0b3ef168\\\", + \\\"0819db19be479122c1d48743e644070a8dc9a1c852df9a8c0dc2343e904da389\\\"]);\\nunion + isfuzzy=true(\\nDeviceEvents\\n| where InitiatingProcessSHA256 in (SUNSPOT_Hashes)),\\n(DeviceImageLoadEvents\\n| + where InitiatingProcessSHA256 in (SUNSPOT_Hashes))\\n| extend HostCustomEntity + = DeviceName, timestamp=TimeGenerated\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1554\"],\"displayName\":\"SUNSPOT + malware hashes\",\"description\":\"This query uses Microsoft Defender for + Endpoint data to look for IoCs associated with the SUNSPOT malware shared + by Crowdstrike.\\nMore details: \\n - https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/ + \\n - https://techcommunity.microsoft.com/t5/azure-sentinel/monitoring-your-software-build-process-with-azure-sentinel/ba-p/2140807\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceImageLoadEvents\",\"DeviceEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fcb9d75c-c3c1-4910-8697-f136bfef2363\",\"name\":\"fcb9d75c-c3c1-4910-8697-f136bfef2363\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P2D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + querystarttime = 2d;\\nlet queryendtime = 1d;\\nlet TimeDeltaThreshold = 10;\\nlet + TotalEventsThreshold = 15;\\nlet PercentBeaconThreshold = 80;\\n_Im_NetworkSession(starttime=querystarttime, + endtime=queryendtime)\\n| where not(ipv4_is_private(DstIpAddr))\\n| project + TimeGenerated, SrcIpAddr, SrcPortNumber, DstIpAddr, DstPortNumber, DstBytes, + SrcBytes\\n| sort by SrcIpAddr asc,TimeGenerated asc, DstIpAddr asc, DstPortNumber + asc\\n| serialize\\n| extend nextTimeGenerated = next(TimeGenerated, 1), nextSrcIpAddr + = next(SrcIpAddr, 1)\\n| extend TimeDeltainSeconds = datetime_diff('second',nextTimeGenerated,TimeGenerated)\\n| + where SrcIpAddr == nextSrcIpAddr\\n//Whitelisting criteria/ threshold criteria\\n| + where TimeDeltainSeconds > TimeDeltaThreshold \\n| project TimeGenerated, + TimeDeltainSeconds, SrcIpAddr, SrcPortNumber, DstIpAddr, DstPortNumber, + DstBytes, SrcBytes\\n| summarize count(), sum(DstBytes), sum(SrcBytes), make_list(TimeDeltainSeconds) + \\nby TimeDeltainSeconds, bin(TimeGenerated, 1h), SrcIpAddr, DstIpAddr, + DstPortNumber\\n| summarize (MostFrequentTimeDeltaCount, MostFrequentTimeDeltainSeconds) + = arg_max(count_, TimeDeltainSeconds), TotalEvents=sum(count_), TotalSrcBytes + = sum(sum_SrcBytes), TotalDstBytes = sum(sum_DstBytes) \\nby bin(TimeGenerated, + 1h), SrcIpAddr, DstIpAddr, DstPortNumber\\n| where TotalEvents > TotalEventsThreshold + \\n| extend BeaconPercent = MostFrequentTimeDeltaCount/toreal(TotalEvents) + * 100\\n| where BeaconPercent > PercentBeaconThreshold\",\"customDetails\":{\"DstPortNumber\":\"DstPortNumber\",\"FrequencyCount\":\"TotalSrcBytes\",\"FrequencyTime\":\"MostFrequentTimeDeltaCount\",\"TotalDstBytes\":\"TotalDstBytes\"},\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"DstIpAddr\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Potential + beaconing from {{SrcIpAddr}} to {{DstIpAddr}} over port {{DstPortNumber}}\",\"alertDescriptionFormat\":\"Potential + beaconing pattern from a client at address {{SrcIpAddr}} to a server at address + {{DstIpAddr}} over port {{DstPortNumber}} identified. Such potential outbound + beaconing pattern to untrusted public networks should be investigated for + any malware callbacks or data exfiltration attempts as discussed in this [Blog](http://www.austintaylor.io/detect/beaconing/intrusion/detection/system/command/control/flare/elastic/stack/2017/06/10/detect-beaconing-with-flare-elasticsearch-and-intrusion-detection-systems/). + The recurring frequency, reported as FrequencyTime in the custom details, + and the total transferred volume reported as TotalDstBytes in the custom details, + can help to determine the significance of this incident.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1071\",\"T1571\"],\"displayName\":\"Potential + beaconing activity (ASIM Network Session schema)\",\"description\":\"This + rule identifies beaconing patterns from Network traffic logs based on recurrent + frequency patterns. Such potential outbound beaconing pattern to untrusted + public networks should be investigated for any malware callbacks or data exfiltration + attempts as discussed in this [Blog](http://www.austintaylor.io/detect/beaconing/intrusion/detection/system/command/control/flare/elastic/stack/2017/06/10/detect-beaconing-with-flare-elasticsearch-and-intrusion-detection-systems/).\\\\

\\nThis + analytic rule uses [ASIM](https://aka.ms/AboutASIM) and supports any built-in + or custom source that supports the ASIM NetworkSession schema\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2021-12-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b8b8ba09-1e89-45a1-8bd7-691cd23bfa32\",\"name\":\"b8b8ba09-1e89-45a1-8bd7-691cd23bfa32\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + query_frequency = 15m;\\nlet missing_period = 1h;\\n//Enter a reference list + of hostnames for your DC servers\\nlet DCServersList = dynamic ([\\\"DC01.simulandlabs.com\\\",\\\"DC02.simulandlabs.com\\\"]);\\n//Alternatively, + a Watchlist can be used\\n//let DCServersList = _GetWatchlist('HostName-DomainControllers') + | project HostName;\\nHeartbeat\\n| summarize arg_max(TimeGenerated, *) by + Computer\\n| where Computer in (DCServersList)\\n//You may specify the OS + type of your Domain Controllers\\n//| where OSType == 'Windows'\\n| where + TimeGenerated between (ago(query_frequency + missing_period) .. ago(missing_period))\\n| + project TimeGenerated, Computer, OSType, Version, ComputerEnvironment, Type, + Solutions\\n| sort by TimeGenerated asc\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\",\"DefenseEvasion\"],\"displayName\":\"Missing + Domain Controller Heartbeat\",\"description\":\"This detection will go over + the heartbeats received from the agents of Domain Controllers over the last + hour, and will create alerts if the last heartbeats were received an hour + ago.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-11-23T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/36f191f8-d1d1-4a22-8ba7-22c9b64a651a\",\"name\":\"36f191f8-d1d1-4a22-8ba7-22c9b64a651a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.3\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.5\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"(Preview) + UEBA Anomalous Failed Sign-in\",\"description\":\"Adversaries with no prior + knowledge of legitimate credentials within the system or environment may guess + passwords to attempt access to accounts.\\nSentinel UEBA detects anomalies + based on dynamic baselines created for each entity across various data inputs. + Each entity\xE2\u20AC\u2122s baseline behavior is set according to its own + historical activities, those of its peers, and those of the organization as + a whole. Anomalies can be triggered by the correlation of different attributes + such as action type, geo-location, device, resource, ISP, and more.\\nSupported + data sources: Azure Sign-in, Windows security logs (Events 4624, 4625, 4672, + 4648)\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2021-12-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/737a2ce1-70a3-4968-9e90-3e6aca836abf\",\"name\":\"737a2ce1-70a3-4968-9e90-3e6aca836abf\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MLBehaviorAnalytics\",\"properties\":{\"severity\":\"Medium\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"(Preview) + Anomalous RDP Login Detections\",\"description\":\"This detection uses machine + learning (ML) to identify anomalous Remote Desktop Protocol (RDP) login activity, + based on Windows Security Event data. Scenarios include:\\n\\n*\\tUnusual + IP - This IP address has not or has rarely been seen in last 30 days.\\n*\\tUnusual + Geo - The IP address, city, country and ASN have not (or rarely) been seen + in last 30 days.\\n*\\tNew user - A new user logs in from an IP address and + geo location, both or either of which are not expected to be seen in the last + 30 days.\\n\\nAllow 7 days after this alert is enabled for Microsoft Sentinel + to build a profile of normal activity for your environment.\\t\\n\\nThis detection + requires a specific configuration of the data source. [Learn more](https://docs.microsoft.com/en-us/azure/sentinel/connect-windows-security-events)\\n\\nBy + enabling this rule, you give Microsoft permission to copy ingested data outside + of your Microsoft Sentinel workspace's geography as necessary for processing + by the machine learning engine.\",\"lastUpdatedDateUTC\":\"2021-03-26T00:00:00Z\",\"createdDateUTC\":\"2020-04-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/85aca4d1-5d15-4001-abd9-acb86ca1786a\",\"name\":\"85aca4d1-5d15-4001-abd9-acb86ca1786a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\n//Create a list of TLDs in our + threat feed for later validation\\nlet list_tlds = ThreatIntelligenceIndicator\\n| + where TimeGenerated > ago(ioc_lookBack)\\n| where isnotempty(DomainName)\\n| + extend parts = split(DomainName, '.')\\n| extend tld = parts[(array_length(parts)-1)]\\n| + summarize count() by tostring(tld)\\n| summarize make_list(tld);\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(DomainName)\\n// using innerunique to keep perf + fast and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n DnsEvents\\n + \ | where TimeGenerated > ago(dt_lookBack)\\n //Extract domain patterns + from syslog message\\n | where isnotempty(Name)\\n | extend parts = + split(Name, '.')\\n //Split out the TLD\\n | extend tld = parts[(array_length(parts)-1)]\\n + \ //Validate parsed domain by checking if the TLD is in the list of TLDs + in our threat feed\\n | where tld in~ (list_tlds)\\n | extend DNS_TimeGenerated + = TimeGenerated\\n) on $left.DomainName==$right.Name\\n| where DNS_TimeGenerated + < ExpirationDateTime\\n| summarize DNS_TimeGenerated = arg_max(DNS_TimeGenerated + , *) by IndicatorId, Name\\n| project DNS_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, Url, Computer, + ClientIP, Name, QueryType\\n| extend timestamp = DNS_TimeGenerated, HostCustomEntity + = Computer, IPCustomEntity = ClientIP, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.2\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Domain entity to DnsEvents\",\"description\":\"Identifies a match in DnsEvents + from any Domain IOC from TI\",\"lastUpdatedDateUTC\":\"2022-02-15T00:00:00Z\",\"createdDateUTC\":\"2019-08-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5e45930c-09b1-4430-b2d1-cc75ada0dc0f\",\"name\":\"5e45930c-09b1-4430-b2d1-cc75ada0dc0f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n//Exclude local addresses, using the + ipv4_is_private operator\\n| where ipv4_is_private(TI_ipEntity) == false and + \ TI_ipEntity !startswith \\\"fe80\\\" and TI_ipEntity !startswith \\\"::\\\" + and TI_ipEntity !startswith \\\"127.\\\"\\n// using innerunique to keep perf + fast and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n W3CIISLog\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n | where isnotempty(cIP)\\n + \ //Exclude local addresses, using the ipv4_is_private operator\\n | + where ipv4_is_private(cIP) == false and cIP !startswith \\\"fe80\\\" and + cIP !startswith \\\"::\\\" and cIP !startswith \\\"127.\\\"\\n // renaming + time column so it is clear the log this came from\\n | extend W3CIISLog_TimeGenerated + = TimeGenerated\\n)\\non $left.TI_ipEntity == $right.cIP\\n| where W3CIISLog_TimeGenerated + < ExpirationDateTime\\n| summarize W3CIISLog_TimeGenerated = arg_max(W3CIISLog_TimeGenerated, + *) by IndicatorId, cIP\\n| project W3CIISLog_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, + Computer, sSiteName, cIP, sIP, sPort, csMethod, csUserName, scStatus, scSubStatus, + scWin32Status,\\nNetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| + extend timestamp = W3CIISLog_TimeGenerated, IPCustomEntity = cIP, HostCustomEntity + = Computer, AccountCustomEntity = csUserName, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.2\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to W3CIISLog\",\"description\":\"Identifies a match in W3CIISLog + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2022-04-26T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d564ff12-8f53-41b8-8649-44f76b37b99f\",\"name\":\"d564ff12-8f53-41b8-8649-44f76b37b99f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + How many greater than Service Connections you want to view per build/release\\nlet + ServiceConnectionThreshold = 4;\\nlet BypassDefIds = datatable(DefId:string, + Type:string, ProjectName:string)\\n[\\n//\\\"103\\\", \\\"Release\\\", \\\"ProjectA\\\",\\n//\\\"42\\\", + \\\"Release\\\", \\\"ProjectB\\\",\\n//\\\"122\\\", \\\"Build\\\", \\\"ProjectB\\\"\\n];\\nAzureDevOpsAuditing\\n| + where OperationName == \\\"Library.ServiceConnectionExecuted\\\" \\n| extend + DefId = tostring(Data.DefinitionId), Type = tostring(Data.PlanType), ConnectionId + = tostring(Data.ConnectionId)\\n| parse ScopeDisplayName with OrganizationName + ' (Organization)'\\n| summarize CurrentCount = dcount(tostring(ConnectionId)), + ConnectionNames = make_set(tostring(Data.ConnectionName)), StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) \\n by OrganizationName, tostring(DefId), tostring(Type), + ProjectId, ProjectName\\n| where CurrentCount > ServiceConnectionThreshold\\n| + join kind=anti BypassDefIds on $left.DefId==$right.DefId and $left.Type == + $right.Type and $left.ProjectName == $right.ProjectName\\n| extend link = + iif(\\n Type == \\\"Build\\\", strcat('https://dev.azure.com/', OrganizationName, + '/', ProjectName, '/_build?definitionId=', DefId),\\n strcat('https://dev.azure.com/', + OrganizationName, '/', ProjectName, '/_release?_a=releases&view=mine&definitionId=', + DefId))\\n| extend timestamp = StartTime\",\"entityMappings\":[],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\",\"Impact\"],\"techniques\":[\"T1098\",\"T1496\"],\"displayName\":\"Azure + DevOps Service Connection Abuse\",\"description\":\"Flags builds/releases + that use a large number of service connections if they aren't manually in + the allow list.\\nThis is to determine if someone is hijacking a build/release + and adding many service connections in order to abuse \\nor dump credentials + from service connections.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2020-06-04T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/01e8ffff-dc0c-43fe-aa22-d459c4204553\",\"name\":\"01e8ffff-dc0c-43fe-aa22-d459c4204553\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + discord=dynamic([\\\"cdn.discordapp.com\\\", \\\"media.discordapp.com\\\"]);\\n + \ _Im_WebSession(url_has_any=discord, eventresult='Success')\\n | where Url + has \\\"attachments\\\"\\n | extend DiscordServerId = extract(@\\\"\\\\/attachments\\\\/([0-9]+)\\\\/\\\", + 1, Url)\\n | summarize dcount(Url), make_set(SrcUsername), make_set(SrcIpAddr), + make_set(Url), min(TimeGenerated), max(TimeGenerated), make_set(EventResult) + by DiscordServerId\\n | mv-expand set_SrcUsername to typeof(string), set_Url + to typeof(string), set_EventResult to typeof(string), set_SrcIpAddr to typeof(string)\\n + \ | summarize by DiscordServerId, dcount_Url, set_SrcUsername, min_TimeGenerated, + max_TimeGenerated, set_EventResult, set_SrcIpAddr, set_Url\\n | project StartTime=min_TimeGenerated, + EndTime=max_TimeGenerated, Result=set_EventResult, SourceUser=set_SrcUsername, + SourceIP=set_SrcIpAddr, RequestURL=set_Url\\n | where RequestURL has_any + (\\\".bin\\\",\\\".exe\\\",\\\".dll\\\",\\\".bin\\\",\\\".msi\\\")\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"SourceUser\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceIP\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"RequestURL\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1071\"],\"displayName\":\"Discord + CDN Risky File Download (ASIM Web Session Schema)\",\"description\":\"Identifies + callouts to Discord CDN addresses for risky file extensions. This detection + will trigger when a callout for a risky file is made to a discord server that + has only been seen once in your environment. Unique discord servers are identified + using the server ID that is included in the request URL (DiscordServerId in + query). Discord CDN has been used in multiple campaigns to download additional + payloads.\\n This analytic rule uses [ASIM](https://aka.ms/AboutASIM) and + supports any built-in or custom source that supports the ASIM WebSession schema + (ASIM WebSession Schema)\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2022-03-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/361dd1e3-1c11-491e-82a3-bb2e44ac36ba\",\"name\":\"361dd1e3-1c11-491e-82a3-bb2e44ac36ba\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + szOperationNames = dynamic([\\\"microsoft.compute/virtualMachines/write\\\", + \\\"microsoft.resources/deployments/write\\\"]);\\nlet starttime = 7d;\\nlet + endtime = 1d;\\nAzureActivity\\n| where TimeGenerated between (startofday(ago(starttime)) + .. startofday(ago(endtime)))\\n| where OperationNameValue in~ (szOperationNames)\\n| + summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + ActivityTimeStamp = makelist(TimeGenerated), ActivityStatusValue = makelist(ActivityStatusValue), + \\nOperationIds = makelist(OperationId), CallerIpAddress = makelist(CallerIpAddress), + CorrelationId = makelist(CorrelationId) \\nby ResourceId, Caller, OperationNameValue, + Resource, ResourceGroup\\n| mvexpand CallerIpAddress\\n| where isnotempty(CallerIpAddress)\\n| + make-series dResourceCount=dcount(ResourceId) default=0 on StartTimeUtc in + range(startofday(ago(7d)), now(), 1d) \\nby Caller, tostring(ActivityTimeStamp), + tostring(ActivityStatusValue), tostring(OperationIds), tostring(CallerIpAddress), + tostring(CorrelationId), ResourceId, OperationNameValue , Resource, ResourceGroup\\n| + extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dResourceCount)\\n| + where Slope > 0.2\\n| join kind=leftsemi (\\n// Last day's activity is anomalous\\nAzureActivity\\n| + where TimeGenerated >= startofday(ago(endtime))\\n| where OperationNameValue + in~ (szOperationNames)\\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc + = max(TimeGenerated), ActivityTimeStamp = makelist(TimeGenerated), ActivityStatusValue + = makelist(ActivityStatusValue), \\nOperationIds = makelist(OperationId), + CallerIpAddress = makelist(CallerIpAddress), CorrelationId = makelist(CorrelationId) + \\nby ResourceId, Caller, OperationNameValue, Resource, ResourceGroup\\n| + mvexpand CallerIpAddress\\n| where isnotempty(CallerIpAddress)\\n| make-series + dResourceCount=dcount(ResourceId) default=0 on StartTimeUtc in range(startofday(ago(1d)), + now(), 1d) \\nby Caller, tostring(ActivityTimeStamp), tostring(ActivityStatusValue), + tostring(OperationIds), tostring(CallerIpAddress), tostring(CorrelationId), + ResourceId, OperationNameValue , Resource, ResourceGroup\\n| extend (RSquare,Slope,Variance,RVariance,Interception,LineFit)=series_fit_line(dResourceCount)\\n| + where Slope > 0.2 \\n) on Caller, CallerIpAddress \\n| mvexpand + todynamic(ActivityTimeStamp), todynamic(ActivityStatusValue), todynamic(OperationIds), + todynamic(CorrelationId)\\n| extend timestamp = ActivityTimeStamp, AccountCustomEntity + = Caller, IPCustomEntity = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"Suspicious + number of resource creation or deployment activities\",\"description\":\"Indicates + when an anomalous number of VM creations or deployment activities occur in + Azure via the AzureActivity log.\\nThe anomaly detection identifies activities + that have occurred both since the start of the day 1 day ago and the start + of the day 7 days ago.\\nThe start of the day is considered 12am UTC time.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/050b9b3d-53d0-4364-a3da-1b678b8211ec\",\"name\":\"050b9b3d-53d0-4364-a3da-1b678b8211ec\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where Category =~ \\\"RoleManagement\\\"\\n| where AADOperationType in (\\\"Assign\\\", + \\\"AssignEligibleRole\\\")\\n| where ActivityDisplayName has_any (\\\"Add + eligible member to role\\\", \\\"Add member to role\\\")\\n| mv-expand TargetResources\\n| + mv-expand TargetResources.modifiedProperties\\n| extend displayName_ = tostring(TargetResources_modifiedProperties.displayName)\\n| + where displayName_ =~ \\\"Role.DisplayName\\\"\\n| extend RoleName = tostring(parse_json(tostring(TargetResources_modifiedProperties.newValue)))\\n| + where RoleName contains \\\"Admin\\\"\\n| extend InitiatingApp = tostring(parse_json(tostring(InitiatedBy.app)).displayName)\\n| + extend Initiator = iif(isnotempty(InitiatingApp), InitiatingApp, tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName))\\n| + extend Target = tostring(TargetResources.userPrincipalName)\\n| summarize + by bin(TimeGenerated, 1h), OperationName, RoleName, Target, Initiator, Result\\n| + extend AccountCustomEntity = Target\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Initiator\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1078\"],\"displayName\":\"User + Assigned Privileged Role\",\"description\":\"Identifies when a new privileged + role is assigned to a user. Any account eligible for a role is now being + given privileged access. If the assignment is unexpected or into a role that + isn't the responsibility of the account holder, investigate.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-accounts#things-to-monitor-1\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/48607a29-a26a-4abf-8078-a06dbdd174a4\",\"name\":\"48607a29-a26a-4abf-8078-a06dbdd174a4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeRange = 3d;\\nlet lookBack = 7d;\\nlet authenticationWindow = 20m;\\nlet + authenticationThreshold = 5;\\nlet isGUID = \\\"[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}\\\";\\nlet + failureCodes = dynamic([50053, 50126, 50055]); // invalid password, account + is locked - too many sign ins, expired password\\nlet successCodes = dynamic([0, + 50055, 50057, 50155, 50105, 50133, 50005, 50076, 50079, 50173, 50158, 50072, + 50074, 53003, 53000, 53001, 50129]);\\n// Lookup up resolved identities from + last 7 days\\nlet aadFunc = (tableName:string){\\nlet identityLookup = table(tableName)\\n| + where TimeGenerated >= ago(lookBack)\\n| where not(Identity matches regex + isGUID)\\n| where isnotempty(UserId)\\n| summarize by UserId, lu_UserDisplayName + = UserDisplayName, lu_UserPrincipalName = UserPrincipalName, Type;\\n// collect + window threshold breaches\\ntable(tableName)\\n| where TimeGenerated > ago(timeRange)\\n| + where ResultType in(failureCodes)\\n| summarize FailedPrincipalCount = dcount(UserPrincipalName) + by bin(TimeGenerated, authenticationWindow), IPAddress, AppDisplayName, Type\\n| + where FailedPrincipalCount >= authenticationThreshold\\n| summarize WindowThresholdBreaches + = count() by IPAddress, Type\\n| join kind= inner (\\n// where we breached + a threshold, join the details back on all failure data\\ntable(tableName)\\n| + where TimeGenerated > ago(timeRange)\\n| where ResultType in(failureCodes)\\n| + extend LocationDetails = todynamic(LocationDetails)\\n| extend FullLocation + = strcat(LocationDetails.countryOrRegion,'|', LocationDetails.state, '|', + LocationDetails.city)\\n| summarize StartTime = min(TimeGenerated), EndTime + = max(TimeGenerated), make_set(ClientAppUsed), make_set(FullLocation), FailureCount + = count() by IPAddress, AppDisplayName, UserPrincipalName, UserDisplayName, + Identity, UserId, Type\\n// lookup any unresolved identities\\n| extend UnresolvedUserId + = iff(Identity matches regex isGUID, UserId, \\\"\\\")\\n| join kind= leftouter + (\\n identityLookup \\n) on $left.UnresolvedUserId==$right.UserId\\n| extend + UserDisplayName=iff(isempty(lu_UserDisplayName), UserDisplayName, lu_UserDisplayName)\\n| + extend UserPrincipalName=iff(isempty(lu_UserPrincipalName), UserPrincipalName, + lu_UserPrincipalName)\\n| summarize StartTime = min(StartTime), EndTime = + max(EndTime), make_set(UserPrincipalName), make_set(UserDisplayName), make_set(set_ClientAppUsed), + make_set(set_FullLocation), make_list(FailureCount) by IPAddress, AppDisplayName, + Type\\n| extend FailedPrincipalCount = arraylength(set_UserPrincipalName)\\n) + on IPAddress\\n| project IPAddress, StartTime, EndTime, TargetedApplication=AppDisplayName, + FailedPrincipalCount, UserPrincipalNames=set_UserPrincipalName, UserDisplayNames=set_UserDisplayName, + ClientAppsUsed=set_set_ClientAppUsed, Locations=set_set_FullLocation, FailureCountByPrincipal=list_FailureCount, + WindowThresholdBreaches, Type\\n| join kind= inner (\\ntable(tableName) // + get data on success vs. failure history for each IP\\n| where TimeGenerated + > ago(timeRange)\\n| where ResultType in(successCodes) or ResultType in(failureCodes) + // success or failure types\\n| summarize GlobalSuccessPrincipalCount = dcountif(UserPrincipalName, + (ResultType in(successCodes))), ResultTypeSuccesses = make_set_if(ResultType, + (ResultType in(successCodes))), GlobalFailPrincipalCount = dcountif(UserPrincipalName, + (ResultType in(failureCodes))), ResultTypeFailures = make_set_if(ResultType, + (ResultType in(failureCodes))) by IPAddress, Type\\n| where GlobalFailPrincipalCount + > GlobalSuccessPrincipalCount // where the number of failed principals is + greater than success - eliminates FPs from IPs who authenticate successfully + alot and as a side effect have alot of failures\\n) on IPAddress\\n| project-away + IPAddress1\\n| extend timestamp=StartTime, IPCustomEntity = IPAddress\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Password + spray attack against Azure AD application\",\"description\":\"Identifies evidence + of password spray activity against Azure AD applications by looking for failures + from multiple accounts from the same\\nIP address within a time window. If + the number of accounts breaches the threshold just once, all failures from + the IP address within the time range\\nare bought into the result. Details + on whether there were successful authentications by the IP address within + the time window are also included.\\nThis can be an indicator that an attack + was successful.\\nThe default failure acccount threshold is 5, Default time + window for failures is 20m and default look back window is 3 days\\nNote: + Due to the number of possible accounts involved in a password spray it is + not possible to map identities to a custom entity.\\nReferences: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes.\",\"lastUpdatedDateUTC\":\"2022-02-16T00:00:00Z\",\"createdDateUTC\":\"2020-03-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7ee72a9e-2e54-459c-bc8a-8c08a6532a63\",\"name\":\"7ee72a9e-2e54-459c-bc8a-8c08a6532a63\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + IPList = dynamic([\\\"154.223.45.38\\\",\\\"185.141.207.140\\\",\\\"185.234.73.19\\\",\\\"216.245.210.106\\\",\\\"51.91.48.210\\\",\\\"46.255.230.229\\\"]);\\n(union + isfuzzy=true\\n(CommonSecurityLog\\n| where isnotempty(SourceIP) or isnotempty(DestinationIP)\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) or Message has_any + (IPList)\\n| extend IPMatch = case(SourceIP in (IPList), \\\"SourceIP\\\", + DestinationIP in (IPList), \\\"DestinationIP\\\", \\\"Message\\\") \\n| summarize + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by SourceIP, + DestinationIP, DeviceProduct, DeviceAction, Message, Protocol, SourcePort, + DestinationPort, DeviceAddress, DeviceName, IPMatch\\n| extend timestamp = + StartTimeUtc, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIP, + IPMatch == \\\"DestinationIP\\\", DestinationIP, \\\"IP in Message Field\\\") + \\n),\\n(OfficeActivity\\n|extend SourceIPAddress = ClientIP, Account = UserId\\n| + where SourceIPAddress in (IPList)\\n| extend timestamp = TimeGenerated , + IPCustomEntity = SourceIPAddress , AccountCustomEntity = Account\\n),\\n(_Im_Dns + (response_has_any_prefix=IPList)\\n| extend DestinationIPAddress = DnsResponseName, + \ Host = Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, + HostCustomEntity = Host, AccountCustomEntity=User\\n),\\n(_Im_WebSession (srcipaddr_has_any_prefix=IPList)\\n| + extend DestinationIPAddress = DstIpAddr, Host = Dvc\\n| extend timestamp + = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity = Host\\n),\\n(_Im_NetworkSession + (srcipaddr_has_any_prefix=IPList)\\n| extend DestinationIPAddress = DstIpAddr, + \ Host = Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, + HostCustomEntity = Host\\n),\\n(_Im_NetworkSession (dstipaddr_has_any_prefix=IPList)\\n| + extend DestinationIPAddress = DstIpAddr, Host = Dvc\\n| extend timestamp + = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity = Host\\n),\\n(SigninLogs\\n| + where isnotempty(IPAddress)\\n| where IPAddress in (IPList)\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity = + IPAddress\\n),\\n(AADNonInteractiveUserSignInLogs\\n| where isnotempty(IPAddress)\\n| + where IPAddress in (IPList)\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = UserPrincipalName, IPCustomEntity = IPAddress\\n),\\n(W3CIISLog \\n| where + isnotempty(cIP)\\n| where cIP in (IPList)\\n| extend timestamp = TimeGenerated, + IPCustomEntity = cIP, HostCustomEntity = Computer, AccountCustomEntity = csUserName\\n),\\n(AzureActivity + \\n| where isnotempty(CallerIpAddress)\\n| where CallerIpAddress in (IPList)\\n| + extend timestamp = TimeGenerated, IPCustomEntity = CallerIpAddress, AccountCustomEntity + = Caller\\n),\\n(\\nAWSCloudTrail\\n| where isnotempty(SourceIpAddress)\\n| + where SourceIpAddress in (IPList)\\n| extend timestamp = TimeGenerated, IPCustomEntity + = SourceIpAddress, AccountCustomEntity = UserIdentityUserName\\n),\\n(\\nAzureDiagnostics\\n| + where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (IPList) \\n| extend DestinationIP = DestinationHost + \\n| extend IPCustomEntity = SourceHost\\n),\\n(Event\\n| where Source == + \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 3\\n| extend EvData + = parse_xml(EventData)\\n| extend EventDetail = EvData.DataItem.EventData.Data\\n| + extend SourceIP = EventDetail.[9].[\\\"#text\\\"], DestinationIP = EventDetail.[14].[\\\"#text\\\"]\\n| + where SourceIP in (IPList) or DestinationIP in (IPList) \\n| extend IPMatch + = case( SourceIP in (IPList), \\\"SourceIP\\\", DestinationIP in (IPList), + \\\"DestinationIP\\\", \\\"None\\\") \\n| extend timestamp = TimeGenerated, + AccountCustomEntity = UserName, HostCustomEntity = Computer , IPCustomEntity + = case(IPMatch == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", + DestinationIP, \\\"None\\\")\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.4.1\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Known + IRIDIUM IP\",\"description\":\"IRIDIUM command and control IP. Identifies + a match across various data feeds for IP IOCs related to the IRIDIUM activity + group.\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2019-12-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]},{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d6bf1931-b1eb-448d-90b2-de118559c7ce\",\"name\":\"d6bf1931-b1eb-448d-90b2-de118559c7ce\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 10m;\\nCisco_Umbrella\\n| where TimeGenerated > ago(lbtime)\\n| where + EventType == 'proxylogs'\\n| where DvcAction =~ 'Allowed'\\n| where UrlCategory + contains 'Adult Themes' or\\n UrlCategory contains 'Adware' or\\n UrlCategory + contains 'Alcohol' or\\n UrlCategory contains 'Illegal Downloads' or\\n + \ UrlCategory contains 'Drugs' or\\n UrlCategory contains 'Child + Abuse Content' or\\n UrlCategory contains 'Hate/Discrimination' or\\n + \ UrlCategory contains 'Nudity' or\\n UrlCategory contains 'Pornography' + or\\n UrlCategory contains 'Proxy/Anonymizer' or\\n UrlCategory + contains 'Sexuality' or\\n UrlCategory contains 'Tasteless' or\\n UrlCategory + contains 'Terrorism' or\\n UrlCategory contains 'Web Spam' or\\n UrlCategory + contains 'German Youth Protection' or\\n UrlCategory contains 'Illegal + Activities' or\\n UrlCategory contains 'Lingerie/Bikini' or\\n UrlCategory + contains 'Weapons'\\n| project TimeGenerated, SrcIpAddr, Identities\\n| extend + IPCustomEntity = SrcIpAddr\\n| extend AccountCustomEntity = Identities\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\",\"InitialAccess\"],\"displayName\":\"Cisco + Umbrella - Request Allowed to harmful/malicious URI category\",\"description\":\"It + is reccomended that these Categories shoud be blocked by policies because + they provide harmful/malicious content..\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0777f138-e5d8-4eab-bec1-e11ddfbc2be2\",\"name\":\"0777f138-e5d8-4eab-bec1-e11ddfbc2be2\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + threshold = 20;\\nlet ReasontoSubStatus = datatable(SubStatus:string,Reason:string) + [\\n\\\"0xC000005E\\\", \\\"There are currently no logon servers available + to service the logon request.\\\",\\n\\\"0xC0000064\\\", \\\"User logon with + misspelled or bad user account\\\", \\n\\\"0xC000006A\\\", \\\"User logon + with misspelled or bad password\\\",\\n\\\"0xC000006D\\\", \\\"Bad user name + or password\\\",\\n\\\"0xC000006E\\\", \\\"Unknown user name or bad password\\\",\\n\\\"0xC000006F\\\", + \\\"User logon outside authorized hours\\\",\\n\\\"0xC0000070\\\", \\\"User + logon from unauthorized workstation\\\",\\n\\\"0xC0000071\\\", \\\"User logon + with expired password\\\",\\n\\\"0xC0000072\\\", \\\"User logon to account + disabled by administrator\\\",\\n\\\"0xC00000DC\\\", \\\"Indicates the Sam + Server was in the wrong state to perform the desired operation\\\",\\n\\\"0xC0000133\\\", + \\\"Clocks between DC and other computer too far out of sync\\\",\\n\\\"0xC000015B\\\", + \\\"The user has not been granted the requested logon type (aka logon right) + at this machine\\\",\\n\\\"0xC000018C\\\", \\\"The logon request failed because + the trust relationship between the primary domain and the trusted domain failed\\\",\\n\\\"0xC0000192\\\", + \\\"An attempt was made to logon, but the Netlogon service was not started\\\",\\n\\\"0xC0000193\\\", + \\\"User logon with expired account\\\",\\n\\\"0xC0000224\\\", \\\"User is + required to change password at next logon\\\",\\n\\\"0xC0000225\\\", \\\"Evidently + a bug in Windows and not a risk\\\",\\n\\\"0xC0000234\\\", \\\"User logon + with account locked\\\",\\n\\\"0xC00002EE\\\", \\\"Failure Reason: An Error + occurred during Logon\\\",\\n\\\"0xC0000413\\\", \\\"Logon Failure: The machine + you are logging onto is protected by an authentication firewall. The specified + account is not allowed to authenticate to the machine\\\"\\n];\\n(union isfuzzy=true\\n(SecurityEvent + \\n| where EventID == 4625\\n| where AccountType =~ \\\"User\\\"\\n| where + SubStatus !='0xc0000064' and Account !in ('\\\\\\\\', '-\\\\\\\\-')\\n// SubStatus + '0xc0000064' signifies 'Account name does not exist'\\n| extend ResourceId + = column_ifexists(\\\"_ResourceId\\\", _ResourceId), SourceComputerId = column_ifexists(\\\"SourceComputerId\\\", + SourceComputerId)\\n| lookup ReasontoSubStatus on SubStatus\\n| extend coalesce(Reason, + strcat('Unknown reason substatus: ', SubStatus))\\n| summarize StartTime = + min(TimeGenerated), EndTime = max(TimeGenerated), FailedLogonCount = count() + by EventID, \\nActivity, Computer, Account, TargetAccount, TargetUserName, + TargetDomainName, \\nLogonType, LogonTypeName, LogonProcessName, Status, SubStatus, + Reason, ResourceId, SourceComputerId, WorkstationName, IpAddress\\n| where + FailedLogonCount >= threshold\\n| extend timestamp = StartTime, AccountCustomEntity + = Account, HostCustomEntity = Computer, IPCustomEntity = IpAddress\\n),\\n(\\n(WindowsEvent + \\n| where EventID == 4625 and not(EventData has '0xc0000064')\\n| extend + TargetAccount = strcat(tostring(EventData.TargetDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.TargetUserName))\\n| extend TargetUserSid = tostring(EventData.TargetUserSid)\\n| + extend AccountType=case(EventData.TargetUserName endswith \\\"$\\\" or TargetUserSid + in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", + isempty(TargetUserSid), \\\"\\\", \\\"User\\\")\\n| where AccountType =~ \\\"User\\\"\\n| + extend SubStatus = tostring(EventData.SubStatus)\\n| where SubStatus !='0xc0000064' + and TargetAccount !in ('\\\\\\\\', '-\\\\\\\\-')\\n// SubStatus '0xc0000064' + signifies 'Account name does not exist'\\n| extend ResourceId = column_ifexists(\\\"_ResourceId\\\", + _ResourceId), SourceComputerId = column_ifexists(\\\"SourceComputerId\\\", + \\\"\\\")\\n| lookup ReasontoSubStatus on SubStatus\\n| extend coalesce(Reason, + strcat('Unknown reason substatus: ', SubStatus))\\n| extend Activity=\\\"4625 + - An account failed to log on.\\\"\\n| extend TargetUserName = tostring(EventData.TargetUserName)\\n| + extend TargetDomainName = tostring(EventData.TargetDomainName)\\n| extend + LogonType = tostring(EventData.LogonType)\\n| extend Status= tostring(EventData.Status)\\n| + extend LogonProcessName = tostring(EventData.LogonProcessName)\\n| extend + WorkstationName = tostring(EventData.WorkstationName)\\n| extend IpAddress + = tostring(EventData.IpAddress)\\n| extend LogonTypeName=case(LogonType==2,\\\"2 + - Interactive\\\", LogonType==3,\\\"3 - Network\\\", LogonType==4, \\\"4 - + Batch\\\",LogonType==5, \\\"5 - Service\\\", LogonType==7, \\\"7 - Unlock\\\", + LogonType==8, \\\"8 - NetworkCleartext\\\", LogonType==9, \\\"9 - NewCredentials\\\", + LogonType==10, \\\"10 - RemoteInteractive\\\", LogonType==11, \\\"11 - CachedInteractive\\\",tostring(LogonType))\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), FailedLogonCount + = count() by EventID, \\nActivity, Computer, TargetAccount, TargetUserName, + TargetDomainName, \\nLogonType, LogonTypeName, LogonProcessName, Status, SubStatus, + Reason, ResourceId, SourceComputerId, WorkstationName, IpAddress\\n| where + FailedLogonCount >= threshold\\n| extend timestamp = StartTime, AccountCustomEntity + = TargetAccount, HostCustomEntity = Computer, IPCustomEntity = IpAddress\\n)))\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Failed + logon attempts by valid accounts within 10 mins\",\"description\":\"Identifies + when failed logon attempts are 20 or higher during a 10 minute period (2 failed + logons per minute minimum) from valid account.\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2019-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3b9a44d7-c651-45ed-816c-eae583a6f2f1\",\"name\":\"3b9a44d7-c651-45ed-816c-eae583a6f2f1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lookback = 14d;\\nlet timeframe = 1d;\\nlet historical_data =\\nAzureDevOpsAuditing\\n| + where TimeGenerated > ago(lookback) and TimeGenerated < ago(timeframe)\\n| + where OperationName =~ \\\"Library.VariableGroupModified\\\"\\n| extend variables + = Data.Variables\\n| extend VariableGroupId = tostring(Data.VariableGroupId)\\n| + extend UserKey = strcat(VariableGroupId, \\\"-\\\", ActorUserId)\\n| project + UserKey;\\nAzureDevOpsAuditing\\n| where TimeGenerated > ago(timeframe)\\n| + where OperationName =~ \\\"Library.VariableGroupModified\\\"\\n| extend VariableGroupName + = tostring(Data.VariableGroupName)\\n| extend VariableGroupId = tostring(Data.VariableGroupId)\\n| + extend UserKey = strcat(VariableGroupId, \\\"-\\\", ActorUserId)\\n| where + UserKey !in (historical_data)\\n| project-away UserKey\\n| project-reorder + TimeGenerated, VariableGroupName, ActorUPN, IpAddress, UserAgent\\n| extend + timestamp = TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity + = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"Azure + DevOps Build Variable Modified by New User.\",\"description\":\"Variables + can be configured and used at any stage of the build process in Azure DevOps + to inject values. An attacker with the required permissions could modify \\nor + add to these variables to conduct malicious activity such as changing paths + or remote endpoints called during the build. As variables are often changed + by users, \\njust detecting these changes would have a high false positive + rate. This detection looks for modifications to variable groups where that + user has not been observed \\nmodifying them before.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f8127962-7739-4211-a4a9-390a7a00e91f\",\"name\":\"f8127962-7739-4211-a4a9-390a7a00e91f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT30M\",\"queryPeriod\":\"PT30M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 30m;\\nlet lbperiod = 14d;\\nlet knownrecipients = ProofpointPOD\\n| + where TimeGenerated > ago(lbperiod)\\n| where EventType == 'message'\\n| where + NetworkDirection == 'outbound'\\n| where SrcUserUpn != ''\\n| where array_length(todynamic(DstUserUpn)) + == 1\\n| summarize recipients = make_set(tostring(todynamic(DstUserUpn)[0])) + by SrcUserUpn\\n| extend commcol = SrcUserUpn;\\nProofpointPOD\\n| where TimeGenerated + between (ago(lbtime) .. now())\\n| where EventType == 'message'\\n| where + NetworkDirection == 'outbound'\\n| extend isProtected = todynamic(MsgParts)[0]['isProtected']\\n| + extend mimePgp = todynamic(MsgParts)[0]['detectedMime']\\n| where isProtected + == 'true' or mimePgp == 'application/pgp-encrypted'\\n| extend DstUserMail + = tostring(todynamic(DstUserUpn)[0])\\n| extend commcol = tostring(todynamic(DstUserUpn)[0])\\n| + join knownrecipients on commcol\\n| where recipients !contains DstUserMail\\n| + project SrcUserUpn, DstUserMail\\n| extend AccountCustomEntity = SrcUserUpn\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Exfiltration\"],\"displayName\":\"ProofpointPOD + - Multiple protected emails to unknown recipient\",\"description\":\"Detects + when multiple protected messages where sent to early not seen recipient.\",\"lastUpdatedDateUTC\":\"2021-11-25T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ee1818ec-5f65-4991-b711-bcf2ab7e36c3\",\"name\":\"ee1818ec-5f65-4991-b711-bcf2ab7e36c3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + lbtime = 10m;\\nCisco_Umbrella\\n| where TimeGenerated > ago(lbtime)\\n| where + EventType == 'proxylogs'\\n| where DvcAction =~ 'Allowed'\\n| where UrlOriginal + matches regex @'\\\\Ahttp:\\\\/\\\\/\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}.*'\\n| + project TimeGenerated, SrcIpAddr, Identities\\n| extend IPCustomEntity = SrcIpAddr\\n| + extend AccountCustomEntity = Identities\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Cisco + Umbrella - URI contains IP address\",\"description\":\"Malware can use IP + address to communicate with C2.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/23005e87-2d3a-482b-b03d-edbebd1ae151\",\"name\":\"23005e87-2d3a-482b-b03d-edbebd1ae151\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + exchange_servers = (\\nW3CIISLog\\n| where TimeGenerated > ago(14d)\\n| where + sSiteName =~ \\\"Exchange Back End\\\"\\n| summarize by Computer);\\nW3CIISLog\\n| + where TimeGenerated > ago(1d)\\n| where Computer in (exchange_servers)\\n| + where csUriQuery startswith \\\"t=\\\"\\n| project-reorder TimeGenerated, + Computer, csUriStem, csUriQuery, csUserName, csUserAgent, cIP\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = csUserName, HostCustomEntity = Computer, + IPCustomEntity = cIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"HAFNIUM + Suspicious Exchange Request\",\"description\":\"This query looks for suspicious + request patterns to Exchange servers that fit a pattern observed by HAFNIUM + actors.\\nThe same query can be run on HTTPProxy logs from on-premise hosted + Exchange servers.\\nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-03-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ac9e233e-44d4-45eb-b522-6e47445f6582\",\"name\":\"ac9e233e-44d4-45eb-b522-6e47445f6582\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"imRegistry\\n + \ | where EventType in (\\\"RegistryValueSet\\\", \\\"RegistryKeyCreated\\\")\\n + \ | where RegistryKey has \\\"Software\\\\\\\\Classes\\\\\\\\ms-settings\\\\\\\\shell\\\\\\\\open\\\\\\\\command\\\"\\n + \ | extend TimeKey = bin(TimeGenerated, 1h)\\n | join (imProcess\\n | where + Process endswith \\\"fodhelper.exe\\\"\\n | where ParentProcessName endswith + \\\"cmd.exe\\\" or ParentProcessName endswith \\\"powershell.exe\\\" or ParentProcessName + endswith \\\"powershell_ise.exe\\\"\\n | extend TimeKey = bin(TimeGenerated, + 1h)) on TimeKey, Dvc\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"DvcHostname\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"DvcIpAddr\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"ActorUsername\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.3\",\"tactics\":[\"PrivilegeEscalation\"],\"techniques\":[\"T1548\"],\"displayName\":\"Potential + Fodhelper UAC Bypass (ASIM Version)\",\"description\":\"This detection looks + for the steps required to conduct a UAC bypass using Fodhelper.exe. By default + this detection looks for the setting of the required registry keys and the + invoking of the process within 1 hour - this can be tweaked as required.\",\"lastUpdatedDateUTC\":\"2022-03-02T00:00:00Z\",\"createdDateUTC\":\"2022-02-25T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ee1d718b-9ed9-4a71-90cd-a483a4f008df\",\"name\":\"ee1d718b-9ed9-4a71-90cd-a483a4f008df\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Office + 365 Advanced Threat Protection\",\"displayName\":\"Create incidents based + on Microsoft Defender for Office 365 alerts\",\"description\":\"Create incidents + based on all alerts generated in Microsoft Defender for Office 365\",\"lastUpdatedDateUTC\":\"2020-09-01T00:00:00Z\",\"createdDateUTC\":\"2020-04-20T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"OfficeATP\",\"dataTypes\":[\"SecurityAlert + (OATP)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a333d8bf-22a3-4c55-a1e9-5f0a135c0253\",\"name\":\"a333d8bf-22a3-4c55-a1e9-5f0a135c0253\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + mde_threats = dynamic([\\\"Behavior:Win32/SuspAzureRequest.A\\\", \\\"Behavior:Win32/SuspAzureRequest.B\\\", + \\\"Behavior:Win32/SuspAzureRequest.C\\\", \\\"Behavior:Win32/LaunchingSuspCMD.B\\\"]);\\nDeviceInfo\\n| + extend DeviceName = tolower(DeviceName)\\n| join kind=inner ( SecurityAlert\\n| + where ProviderName == \\\"MDATP\\\"\\n| extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\\n| + extend ThreatFamilyName = tostring(parse_json(ExtendedProperties).ThreatFamilyName)\\n| + where ThreatName in~ (mde_threats) or ThreatFamilyName in~ (mde_threats)\\n| + extend CompromisedEntity = tolower(CompromisedEntity)\\n) on $left.DeviceName + == $right.CompromisedEntity\\n| summarize by DisplayName, ThreatName, ThreatFamilyName, + PublicIP, AlertSeverity, Description, tostring(LoggedOnUsers), DeviceId, TenantId + , bin(TimeGenerated, 1d), CompromisedEntity, tostring(LoggedOnUsers), ProductName, + Entities\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"CompromisedEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"PublicIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"Microsoft + Defender for Endpoint (MDE) signatures for Azure Synapse pipelines and Azure + Data Factory\",\"description\":\"This query looks for Microsoft Defender for + Endpoint detections related to the remote command execution attempts on Azure + IR with Managed VNet or SHIR. \\nIn Microsoft Sentinel, the SecurityAlerts + table includes the name of the impacted device. Additionally, this query joins + the DeviceInfo table to connect other information such as device group, \\nIP + address, signed in users, and others allowing analysts using Microsoft Sentinel + to have more context related to the alert. \\nReference: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-29972 + , \\nhttps://msrc-blog.microsoft.com/2022/05/09/vulnerability-mitigated-in-the-third-party-data-connector-used-in-azure-synapse-pipelines-and-azure-data-factory-cve-2022-29972\",\"lastUpdatedDateUTC\":\"2022-05-09T00:00:00Z\",\"createdDateUTC\":\"2022-04-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"SecurityAlert\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/db58d592-4e64-4800-825e-12c09622dd47\",\"name\":\"db58d592-4e64-4800-825e-12c09622dd47\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":[{\"supportedValues\":[\"Distinct + number of AWS regions\",\"Distinct number of source ips\",\"Distinct number + of user agents\",\"Distinct number of session issuers\",\"Total number of + operations\",\"Session activity of AWS API events\"],\"values\":[\"Distinct + number of AWS regions\",\"Distinct number of source ips\",\"Distinct number + of user agents\",\"Distinct number of session issuers\",\"Total number of + operations\",\"Session activity of AWS API events\"],\"supportedValuesKql\":null,\"valuesKql\":null,\"name\":\"Top + reason for high anomaly score\",\"description\":\"Display anomalies where + the top reason is one of these values.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":null,\"dataType\":\"string\",\"name\":\"Exclude + user accounts from the anomalies generated\",\"description\":\"Enter comma + separated user accounts that the anomalies should not display results for, + in the exclude field.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.7\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\",\"Persistence\"],\"techniques\":[\"T1190\",\"T1505\"],\"displayName\":\"(Preview) + Unusual AWS Cloudtrail API activity\",\"description\":\"This algorithm identifies + anomalous AWS Cloudtrail API hourly sessions for a user account, using an + Isolation Forest model.\\nPotential anomalous factors include a high number + of distinct URI queries, user agents, IPs, AWS regions, a high number of logs, + or API event activity in a session.\\nThe model uses user account activity + over the previous 7 days of AWS activity. The algorithm checks for sufficient + volume of AWS API activity before training the model.\\nSessions deviating + from their normal behavior are marked as anomalous.\",\"lastUpdatedDateUTC\":\"2022-05-12T00:00:00Z\",\"createdDateUTC\":\"2022-02-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5db427b2-f406-4274-b413-e9fcb29412f8\",\"name\":\"5db427b2-f406-4274-b413-e9fcb29412f8\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where ActivityDisplayName =~'Add member to role completed (PIM activation)'\\n| + where Result == \\\"failure\\\"\\n| extend Role = tostring(TargetResources[3].displayName)\\n| + extend User = tostring(TargetResources[2].displayName)\\n| project-reorder + TimeGenerated, User, Role, OperationName, Result, ResultDescription\\n| extend + InitiatingUser = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\\n| + extend IPCustomEntity = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"InitiatingUser\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"User\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1078\"],\"displayName\":\"NRT + PIM Elevation Request Rejected\",\"description\":\"Identifies when a user + is rejected for a privileged role elevation via PIM. Monitor rejections for + indicators of attacker compromise of the requesting account.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-identity-management\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/03e04c97-8cae-48b3-9d2f-4ab262e4ffff\",\"name\":\"03e04c97-8cae-48b3-9d2f-4ab262e4ffff\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + scriptExtensions = dynamic([\\\".php\\\", \\\".jsp\\\", \\\".js\\\", \\\".aspx\\\", + \\\".asmx\\\", \\\".asax\\\", \\\".cfm\\\", \\\".shtml\\\"]);\\nhttp_proxy_oab_CL\\n| + where RawData contains \\\"Download failed and temporary file\\\"\\n| extend + File = extract(\\\"([^\\\\\\\\\\\\\\\\]*)(\\\\\\\\\\\\\\\\[^']*)\\\",2,RawData)\\n| + extend Extension = strcat(\\\".\\\",split(File, \\\".\\\")[-1])\\n| extend + InteractiveFile = iif(Extension in (scriptExtensions), \\\"Yes\\\", \\\"No\\\")\\n// + Uncomment the following line to alert only on interactive file download type\\n//| + where InteractiveFile =~ \\\"Yes\\\"\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"HAFNIUM + Suspicious File Downloads.\",\"description\":\"This query looks for messages + related to file downloads of suspicious file types. This query uses the Exchange + HttpProxy AOBGeneratorLog, you will need to onboard this log as a custom log + under the table http_proxy_oab_CL before using this query. \\nReference: https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-03-02T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d5b32cd4-2328-43da-ab47-cd289c1f5efc\",\"name\":\"d5b32cd4-2328-43da-ab47-cd289c1f5efc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Low\",\"query\":\"DnsEvents\\n| + where Name contains \\\".\\\"\\n| where Name has_any (\\\"monerohash.com\\\", + \\\"do-dear.com\\\", \\\"xmrminerpro.com\\\", \\\"secumine.net\\\", \\\"xmrpool.com\\\", + \\\"minexmr.org\\\", \\\"hashanywhere.com\\\",\\n\\\"xmrget.com\\\", \\\"mininglottery.eu\\\", + \\\"minergate.com\\\", \\\"moriaxmr.com\\\", \\\"multipooler.com\\\", \\\"moneropools.com\\\", + \\\"xmrpool.eu\\\", \\\"coolmining.club\\\",\\n\\\"supportxmr.com\\\", \\\"minexmr.com\\\", + \\\"hashvault.pro\\\", \\\"xmrpool.net\\\", \\\"crypto-pool.fr\\\", \\\"xmr.pt\\\", + \\\"miner.rocks\\\", \\\"walpool.com\\\", \\\"herominers.com\\\",\\n\\\"gntl.co.uk\\\", + \\\"semipool.com\\\", \\\"coinfoundry.org\\\", \\\"cryptoknight.cc\\\", \\\"fairhash.org\\\", + \\\"baikalmine.com\\\", \\\"tubepool.xyz\\\", \\\"fairpool.xyz\\\", \\\"asiapool.io\\\",\\n\\\"coinpoolit.webhop.me\\\", + \\\"nanopool.org\\\", \\\"moneropool.com\\\", \\\"miner.center\\\", \\\"prohash.net\\\", + \\\"poolto.be\\\", \\\"cryptoescrow.eu\\\", \\\"monerominers.net\\\", \\\"cryptonotepool.org\\\",\\n\\\"extrmepool.org\\\", + \\\"webcoin.me\\\", \\\"kippo.eu\\\", \\\"hashinvest.ws\\\", \\\"monero.farm\\\", + \\\"supportxmr.com\\\", \\\"xmrpool.eu\\\", \\\"linux-repository-updates.com\\\", + \\\"1gh.com\\\",\\n\\\"dwarfpool.com\\\", \\\"hash-to-coins.com\\\", \\\"hashvault.pro\\\", + \\\"pool-proxy.com\\\", \\\"hashfor.cash\\\", \\\"fairpool.cloud\\\", \\\"litecoinpool.org\\\", + \\\"mineshaft.ml\\\", \\\"abcxyz.stream\\\",\\n\\\"moneropool.ru\\\", \\\"cryptonotepool.org.uk\\\", + \\\"extremepool.org\\\", \\\"extremehash.com\\\", \\\"hashinvest.net\\\", + \\\"unipool.pro\\\", \\\"crypto-pools.org\\\", \\\"monero.net\\\",\\n\\\"backup-pool.com\\\", + \\\"mooo.com\\\", \\\"freeyy.me\\\", \\\"cryptonight.net\\\", \\\"shscrypto.net\\\")\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ClientIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"NRT + DNS events related to mining pools\",\"description\":\"Identifies IP addresses + that may be performing DNS lookups associated with common currency mining + pools.\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2019-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/de58ee9e-b229-4252-8537-41a4c2f4045e\",\"name\":\"de58ee9e-b229-4252-8537-41a4c2f4045e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + file_ext_blocklist = dynamic(['.ps1', '.vbs', '.bat', '.scr']);\\nlet lbtime + = 10m;\\nCisco_Umbrella\\n| where TimeGenerated > ago(lbtime)\\n| where EventType + == 'proxylogs'\\n| where DvcAction =~ 'Allowed'\\n| extend file_ext = extract(@'.*(\\\\.\\\\w+)$', + 1, UrlOriginal)\\n| extend Filename = extract(@'.*\\\\/*\\\\/(.*\\\\.\\\\w+)$', + 1, UrlOriginal)\\n| where file_ext in (file_ext_blocklist)\\n| project TimeGenerated, + SrcIpAddr, Identities, Filename\\n| extend IPCustomEntity = SrcIpAddr\\n| + extend AccountCustomEntity = Identities\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"Cisco + Umbrella - Request to blocklisted file type\",\"description\":\"Detects request + to potentially harmful file types (.ps1, .bat, .vbs, etc.).\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/97ad74c4-fdd9-4a3f-b6bf-5e28f4f71e06\",\"name\":\"97ad74c4-fdd9-4a3f-b6bf-5e28f4f71e06\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + LearningPeriod = 7d; \\nlet BinTime = 1h; \\nlet RunTime = 1h; \\nlet StartTime + = 1h; \\nlet NumberOfStds = 3; \\nlet MinThreshold = 10.0; \\nlet EndRunTime + = StartTime - RunTime; \\nlet EndLearningTime = StartTime + LearningPeriod;\\nlet + aadFunc = (tableName:string){\\nlet GitHubFailedSSOLogins = (table(tableName) + \ \\n| where AppDisplayName == \\\"GitHub.com\\\" \\n| where ResultType != + 0); \\nGitHubFailedSSOLogins \\n| where TimeGenerated between (ago(EndLearningTime) + .. ago(StartTime)) \\n| summarize FailedLoginsCountInBinTime = count() by + \ UserPrincipalName, bin(TimeGenerated, BinTime), Type\\n| summarize AvgOfFailedLoginsInLearning + = avg(FailedLoginsCountInBinTime), StdOfFailedLoginsInLearning = stdev(FailedLoginsCountInBinTime) + by UserPrincipalName, Type\\n| extend LearningThreshold = max_of(AvgOfFailedLoginsInLearning + + StdOfFailedLoginsInLearning * NumberOfStds, MinThreshold) \\n| join kind=innerunique + ( \\n GitHubFailedSSOLogins \\n | where TimeGenerated between (ago(StartTime) + .. ago(EndRunTime)) \\n | summarize FailedLoginsCountInRunTime = count() + by User = Identity, UserPrincipalName, bin(TimeGenerated, BinTime), Type\\n) + on UserPrincipalName \\n| where FailedLoginsCountInRunTime > LearningThreshold\\n| + extend AccountCustomEntity = UserPrincipalName , timestamp = TimeGenerated\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Brute + Force Attack against GitHub Account\",\"description\":\"Attackers who are + trying to guess your users' passwords or use brute-force methods to get in. + If your organization is using SSO with Azure Active Directory, authentication + logs to GitHub.com will be generated. Using the following query can help you + identify a sudden increase in failed logon attempt of users.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/12dcea64-bec2-41c9-9df2-9f28461b1295\",\"name\":\"12dcea64-bec2-41c9-9df2-9f28461b1295\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 1d;\\n// Adjust for a longer timeframe for identifying ADFS Servers\\nlet + lookback = 6d;\\n// Identify ADFS Servers\\nlet ADFS_Servers = (\\nSecurityEvent\\n| + where TimeGenerated > ago(timeframe+lookback)\\n| where EventID == 4688 and + SubjectLogonId != \\\"0x3e4\\\"\\n| where NewProcessName has \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + distinct Computer\\n);\\nSecurityEvent\\n| where TimeGenerated > ago(timeframe)\\n| + where Computer in~ (ADFS_Servers)\\n| where Account !endswith \\\"$\\\"\\n// + Check for scheduled task events\\n| where EventID in (4697, 4698, 4699, 4700, + 4701, 4702)\\n| extend EventDataParsed = parse_xml(EventData)\\n| extend SubjectLogonId + = tostring(EventDataParsed.EventData.Data[3][\\\"#text\\\"])\\n// Check specifically + for access to IPC$ share and PIPE\\\\svcctl and PIPE\\\\atsvc for Service + Control Services and Schedule Control Services\\n| union (\\n SecurityEvent\\n + \ | where TimeGenerated > ago(timeframe)\\n | where Computer in~ (ADFS_Servers)\\n + \ | where Account !endswith \\\"$\\\"\\n | where EventID == 5145\\n | + where RelativeTargetName =~ \\\"svcctl\\\" or RelativeTargetName =~ \\\"atsvc\\\"\\n)\\n// + Check for lateral movement\\n| join kind=inner\\n(SecurityEvent\\n| where + TimeGenerated > ago(timeframe)\\n| where Account !endswith \\\"$\\\"\\n| where + EventID == 4624 and LogonType == 3\\n) on $left.SubjectLogonId == $right.TargetLogonId\\n| + project TimeGenerated, Account, Computer, EventID, RelativeTargetName\\n| + extend timestamp = TimeGenerated, HostCustomEntity = Computer, AccountCustomEntity + = Account\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.0\",\"tactics\":[\"LateralMovement\"],\"techniques\":[\"T1210\"],\"displayName\":\"Gain + Code Execution on ADFS Server via SMB + Remote Service or Scheduled Task\",\"description\":\"This + query detects instances where an attacker has gained the ability to execute + code on an ADFS Server through SMB and Remote Service or Scheduled Task.\",\"lastUpdatedDateUTC\":\"2022-01-30T00:00:00Z\",\"createdDateUTC\":\"2021-03-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/155f40c6-610d-497d-85fc-3cf06ec13256\",\"name\":\"155f40c6-610d-497d-85fc-3cf06ec13256\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = dynamic([\\\"yahoo-verification.org\\\",\\\"support-servics.com\\\",\\\"verification-live.com\\\",\\\"com-mailbox.com\\\",\\\"com-myaccuants.com\\\",\\\"notification-accountservice.com\\\",\\n\\\"accounts-web-mail.com\\\",\\\"customer-certificate.com\\\",\\\"session-users-activities.com\\\",\\\"user-profile-credentials.com\\\",\\\"verify-linke.com\\\",\\\"support-servics.net\\\",\\\"verify-linkedin.net\\\", + \\n\\\"yahoo-verification.net\\\",\\\"yahoo-verify.net\\\",\\\"outlook-verify.net\\\",\\\"com-users.net\\\",\\\"verifiy-account.net\\\",\\\"te1egram.net\\\",\\\"account-verifiy.net\\\",\\\"myaccount-services.net\\\",\\n\\\"com-identifier-servicelog.name\\\",\\\"microsoft-update.bid\\\",\\\"outlook-livecom.bid\\\",\\\"update-microsoft.bid\\\",\\\"documentsfilesharing.cloud\\\",\\\"com-microsoftonline.club\\\",\\n\\\"confirm-session-identifier.info\\\",\\\"session-management.info\\\",\\\"confirmation-service.info\\\",\\\"document-share.info\\\",\\\"broadcast-news.info\\\",\\\"customize-identity.info\\\",\\\"webemail.info\\\",\\n\\\"com-identifier-servicelog.info\\\",\\\"documentsharing.info\\\",\\\"notification-accountservice.info\\\",\\\"identifier-activities.info\\\",\\\"documentofficupdate.info\\\",\\\"recoveryusercustomer.info\\\",\\n\\\"serverbroadcast.info\\\",\\\"account-profile-users.info\\\",\\\"account-service-management.info\\\",\\\"accounts-manager.info\\\",\\\"activity-confirmation-service.info\\\",\\\"com-accountidentifier.info\\\",\\n\\\"com-privacy-help.info\\\",\\\"com-sessionidentifier.info\\\",\\\"com-useraccount.info\\\",\\\"confirmation-users-service.info\\\",\\\"confirm-identity.info\\\",\\\"confirm-session-identification.info\\\",\\n\\\"continue-session-identifier.info\\\",\\\"customer-recovery.info\\\",\\\"customers-activities.info\\\",\\\"elitemaildelivery.info\\\",\\\"email-delivery.info\\\",\\\"identify-user-session.info\\\",\\n\\\"message-serviceprovider.info\\\",\\\"notificationapp.info\\\",\\\"notification-manager.info\\\",\\\"recognized-activity.info\\\",\\\"recover-customers-service.info\\\",\\\"recovery-session-change.info\\\",\\n\\\"service-recovery-session.info\\\",\\\"service-session-continue.info\\\",\\\"session-mail-customers.info\\\",\\\"session-managment.info\\\",\\\"session-verify-user.info\\\",\\\"shop-sellwear.info\\\",\\n\\\"supportmailservice.info\\\",\\\"terms-service-notification.info\\\",\\\"user-activity-issues.info\\\",\\\"useridentity-confirm.info\\\",\\\"users-issue-services.info\\\",\\\"verify-user-session.info\\\",\\n\\\"login-gov.info\\\",\\\"notification-signal-agnecy.info\\\",\\\"notifications-center.info\\\",\\\"identifier-services-sessions.info\\\",\\\"customers-manager.info\\\",\\\"session-manager.info\\\",\\n\\\"customer-managers.info\\\",\\\"confirmation-recovery-options.info\\\",\\\"service-session-confirm.info\\\",\\\"session-recovery-options.info\\\",\\\"services-session-confirmation.info\\\",\\n\\\"notification-managers.info\\\",\\\"activities-services-notification.info\\\",\\\"activities-recovery-options.info\\\",\\\"activity-session-recovery.info\\\",\\\"customers-services.info\\\",\\n\\\"sessions-notification.info\\\",\\\"download-teamspeak.info\\\",\\\"services-issue-notification.info\\\",\\\"microsoft-upgrade.mobi\\\",\\\"broadcastnews.pro\\\",\\\"mobile-messengerplus.network\\\"]);\\nlet + IPList = dynamic([\\\"51.91.200.147\\\"]);\\nlet IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\n(union + isfuzzy=true\\n(CommonSecurityLog \\n| parse Message with * '(' DNSName ')' + * \\n| extend MessageIP = extract(IPRegex, 0, Message)\\n| extend RequestURLIP + = extract(IPRegex, 0, Message)\\n| where (isnotempty(SourceIP) and SourceIP + in (IPList)) or (isnotempty(DestinationIP) and DestinationIP in (IPList)) + \\nor (isnotempty(DNSName) and DNSName in~ (DomainNames)) or (isnotempty(DestinationHostName) + and DestinationHostName in~ (DomainNames)) or (isnotempty(RequestURL) and + (RequestURL has_any (DomainNames) or RequestURLIP in (IPList))) \\nor (isnotempty(Message) + and MessageIP in (IPList))\\n| extend IPMatch = case(SourceIP in (IPList), + \\\"SourceIP\\\", DestinationIP in (IPList), \\\"DestinationIP\\\", MessageIP + in (IPList), \\\"Message\\\", RequestURLIP in (IPList), \\\"RequestUrl\\\", + \\\"NoMatch\\\") \\n| extend timestamp = TimeGenerated , IPCustomEntity = + case(IPMatch == \\\"SourceIP\\\", SourceIP, IPMatch == \\\"DestinationIP\\\", + DestinationIP,IPMatch == \\\"Message\\\", MessageIP,\\nIPMatch == \\\"RequestUrl\\\", + RequestURLIP,\\\"NoMatch\\\"), Account = SourceUserID, Host = DeviceName\\n),\\n(_Im_Dns + (domain_has_any=DomainNames)\\n| extend DestinationIPAddress = DnsResponseName, + DNSName = DnsQuery, Host = Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity + = SrcIpAddr, HostCustomEntity = Host),\\n(_Im_Dns (response_has_any_prefix=IPList)\\n| + extend DestinationIPAddress = DnsResponseName, DNSName = DnsQuery, Host = + Dvc\\n| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity + = Host),\\n(_Im_WebSession(url_has_any=DomainNames)\\n| extend DestinationIPAddress + = DstIpAddr, DNSName = tostring(parse_url(Url)[\\\"Host\\\"]), Host = Dvc\\n| + extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity + = Host),\\n(VMConnection \\n| parse RemoteDnsCanonicalNames with * '[\\\"' + DNSName '\\\"]' *\\n| where isnotempty(SourceIp) or isnotempty(DestinationIp) + or isnotempty(DNSName)\\n| where SourceIp in (IPList) or DestinationIp in + (IPList) or DNSName in~ (DomainNames)\\n| extend IPMatch = case( SourceIp + in (IPList), \\\"SourceIP\\\", DestinationIp in (IPList), \\\"DestinationIP\\\", + \\\"None\\\") \\n| extend timestamp = TimeGenerated , IPCustomEntity = case(IPMatch + == \\\"SourceIP\\\", SourceIp, IPMatch == \\\"DestinationIP\\\", DestinationIp, + \\\"None\\\"), Host = Computer),\\n(OfficeActivity\\n| extend SourceIPAddress + = ClientIP, Account = UserId\\n| where SourceIPAddress in (IPList)\\n| extend + timestamp = TimeGenerated , IPCustomEntity = SourceIPAddress , AccountCustomEntity + = Account),\\n(AzureDiagnostics \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| + where Category == \\\"AzureFirewallApplicationRule\\\"\\n| parse msg_s with + Protocol 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' + DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (DomainNames) \\n| extend DNSName = DestinationHost + \\n| extend IPCustomEntity = SourceHost \\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.4.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1071\"],\"displayName\":\"Known + Phosphorus group domains/IP\",\"description\":\"Matches domain name IOCs related + to Phosphorus group activity with CommonSecurityLog, DnsEvents, OfficeActivity + and VMConnection dataTypes.\\nReferences: https://blogs.microsoft.com/on-the-issues/2019/03/27/new-steps-to-protect-customers-from-hacking/.\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2020-10-20T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a1bddaf8-982b-4089-ba9e-6590dfcf80ea\",\"name\":\"a1bddaf8-982b-4089-ba9e-6590dfcf80ea\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + error403_count_threshold=200;\\n_Im_WebSession(eventresultdetails_in=\\\"403\\\")\\n| + extend ParsedUrl=parse_url(Url)\\n| extend UrlHost=tostring(ParsedUrl[\\\"Host\\\"]), + UrlSchema=tostring(ParsedUrl[\\\"Schema\\\"])\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated), NumberOfErrors = count(), Urls=makeset(Url) + by UrlHost, SrcIpAddr\\n| where NumberOfErrors > error403_count_threshold\\n| + sort by NumberOfErrors desc\\n| extend Url=tostring(Urls[0])\",\"customDetails\":{\"NumberOfErrors\":\"NumberOfErrors\"},\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"Url\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"Excessive + number of HTTP authentication failures from {{SrcIpAddr}\",\"alertDescriptionFormat\":\"A + client with address {{SrcIpAddr}} generated a large number of failed authentication + HTTP requests. This may indicate a [brute force](https://en.wikipedia.org/wiki/Brute-force_attack) + or [credential stuffing](https://en.wikipedia.org/wiki/Credential_stuffing) + attack.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\",\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Excessive + number of HTTP authentication failures from a source (ASIM Web Session schema)\",\"description\":\"This + rule identifies a source that repeatedly fails to authenticate to a web service + (HTTP response code 403). This may indicate a [brute force](https://en.wikipedia.org/wiki/Brute-force_attack) + or [credential stuffing](https://en.wikipedia.org/wiki/Credential_stuffing) + attack.

\\nThis rule uses the [Advanced Security Information Model + (ASIM)](https://aka.ms/AboutSIM) and supports any web session source that + complies with ASIM. \",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2022-03-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/aa1eff90-29d4-49dc-a3ea-b65199f516db\",\"name\":\"aa1eff90-29d4-49dc-a3ea-b65199f516db\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"(union + isfuzzy=true\\n(SecurityEvent\\n| where EventID == 4720\\n| where AccountType + == \\\"User\\\"\\n| project CreatedUserTime = TimeGenerated, CreatedUserEventID + = EventID, CreatedUserActivity = Activity, Computer = toupper(Computer), \\nCreatedUser + = tolower(TargetAccount), CreatedUserSid = TargetSid, AccountUsedToCreateUser + = strcat(SubjectAccount), SidofAccountUsedToCreateUser = SubjectUserSid\\n),\\n(WindowsEvent\\n| + where EventID == 4720\\n| extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| + extend AccountType=case(EventData.SubjectUserName endswith \\\"$\\\" or SubjectUserSid + in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", + isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| where AccountType == + \\\"User\\\"\\n| extend SubjectAccount = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| extend Activity=\\\"4720 - A user account was + created.\\\"\\n| extend TargetSid = tostring(EventData.TargetSid)\\n| project + CreatedUserTime = TimeGenerated, CreatedUserEventID = EventID, CreatedUserActivity + = Activity, Computer = toupper(Computer), \\nCreatedUser = tolower(TargetAccount), + CreatedUserSid = TargetSid, AccountUsedToCreateUser = strcat(SubjectAccount), + SidofAccountUsedToCreateUser = SubjectUserSid\\n))\\n| join ((union isfuzzy=true\\n(SecurityEvent + \\n| where AccountType == \\\"User\\\"\\n// 4732 - A member was added to a + security-enabled local group\\n| where EventID == 4732\\n// TargetSid is the + builin Admins group: S-1-5-32-544\\n| where TargetSid == \\\"S-1-5-32-544\\\"\\n| + project GroupAddTime = TimeGenerated, GroupAddEventID = EventID, GroupAddActivity + = Activity, Computer = toupper(Computer), GroupName = tolower(TargetAccount), + \\nGroupSid = TargetSid, AccountThatAddedUser = SubjectAccount, SIDofAccountThatAddedUser + = SubjectUserSid, CreatedUserSid = MemberSid\\n),\\n( WindowsEvent \\n// + 4732 - A member was added to a security-enabled local group\\n| where EventID + == 4732 and EventData has \\\"S-1-5-32-544\\\"\\n//TargetSid is the builin + Admins group: S-1-5-32-544\\n| extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| + extend AccountType=case(EventData.SubjectUserName endswith \\\"$\\\" or SubjectUserSid + in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), \\\"Machine\\\", + isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| where AccountType == + \\\"User\\\"\\n| extend TargetSid = tostring(EventData.TargetSid)\\n| where + TargetSid == \\\"S-1-5-32-544\\\"\\n| extend SubjectAccount = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend TargetAccount = strcat(EventData.TargetDomainName,\\\"\\\\\\\\\\\", + EventData.TargetUserName)\\n| extend Activity=\\\"4732 - A member was added + to a security-enabled local group.\\\"\\n| extend MemberSid = tostring(EventData.MemberSid)\\n| + project GroupAddTime = TimeGenerated, GroupAddEventID = EventID, GroupAddActivity + = Activity, Computer = toupper(Computer), GroupName = tolower(TargetAccount), + \\nGroupSid = TargetSid, AccountThatAddedUser = SubjectAccount, SIDofAccountThatAddedUser + = SubjectUserSid, CreatedUserSid = MemberSid)\\n))\\non CreatedUserSid\\n//Create + User first, then the add to the group.\\n| project Computer, CreatedUserTime, + CreatedUserEventID, CreatedUserActivity, CreatedUser, CreatedUserSid, GroupAddTime, + GroupAddEventID, \\nGroupAddActivity, AccountUsedToCreateUser, GroupName, + GroupSid, AccountThatAddedUser, SIDofAccountThatAddedUser \\n| extend timestamp + = CreatedUserTime, AccountCustomEntity = CreatedUser, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"},{\"identifier\":\"Sid\",\"columnName\":\"CreatedUserSid\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Persistence\",\"PrivilegeEscalation\"],\"techniques\":[\"T1098\",\"T1078\"],\"displayName\":\"New + user created and added to the built-in administrators group\",\"description\":\"Identifies + when a user account was created and then added to the builtin Administrators + group in the same day.\\nThis should be monitored closely and all additions + reviewed.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-02-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d23ed927-5be3-4902-a9c1-85f841eb4fa1\",\"name\":\"d23ed927-5be3-4902-a9c1-85f841eb4fa1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n| join (\\n DuoSecurityAuthentication_CL\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n | where isnotempty(access_device_ip_s)\\n + \ // renaming time column so it is clear the log this came from\\n | + extend Duo_TimeGenerated = isotimestamp_t\\n)\\non $left.TI_ipEntity == $right.access_device_ip_s\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + project LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, + ThreatType, Url, ExpirationDateTime, ConfidenceScore, Duo_TimeGenerated,\\nTI_ipEntity, + user_name_s, factor_s, result_s, application_name_s, event_type_s, txid_g, + user_key_s, access_device_ip_s, access_device_location_city_s, access_device_location_state_s, + access_device_location_country_s\\n| extend timestamp = Duo_TimeGenerated, + IPCustomEntity = access_device_ip_s, AccountCustomEntity = user_name_s\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to Duo Security\",\"description\":\"Identifies a match in DuoSecurity + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2bc7b4ae-eeaa-4538-ba15-ef298ec1ffae\",\"name\":\"2bc7b4ae-eeaa-4538-ba15-ef298ec1ffae\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n| + where EventID == 4656\\n| extend EventData = parse_xml(EventData).EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, TargetAccount, + Computer, EventSourceName, Channel, Task, Level, EventID, Activity, TargetLogonId, + SourceComputerId, EventOriginId, Type, _ResourceId, TenantId, SourceSystem, + ManagementGroupName, IpAddress, Account)\\n| extend ObjectServer = column_ifexists('ObjectServer', + \\\"\\\"), ObjectType = column_ifexists('ObjectType', \\\"\\\"), ObjectName + = column_ifexists('ObjectName', \\\"\\\")\\n| where isnotempty(ObjectServer) + and isnotempty(ObjectType) and isnotempty(ObjectName)\\n| where ObjectServer + =~ \\\"SC Manager\\\" and ObjectType =~ \\\"SERVICE OBJECT\\\" and ObjectName + =~ \\\"HealthService\\\"\\n// Comment out the join below if the SACL only + audits users that are part of the Network logon users, i.e. with user/group + target pointing to \\\"NU.\\\"\\n| join kind=leftouter (\\n SecurityEvent\\n + \ | where EventID == 4624\\n) on TargetLogonId\\n| project TimeGenerated, + Computer, Account, TargetAccount, IpAddress,TargetLogonId, ObjectServer, ObjectType, + ObjectName\\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer, + AccountCustomEntity = Account, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1562\"],\"displayName\":\"Starting + or Stopping HealthService to Avoid Detection\",\"description\":\"This query + detects events where an actor is stopping or starting HealthService to disable + telemetry collection/detection from the agent.\\n The query requires a SACL + to audit for access request to the service.\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-03-15T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bff093b2-500e-4ae5-bb49-a5b1423cbd5b\",\"name\":\"bff093b2-500e-4ae5-bb49-a5b1423cbd5b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"OfficeActivity\\n| + where OfficeWorkload =~ \\\"MicrosoftTeams\\\"\\n| where Operation =~ \\\"MemberAdded\\\"\\n| + extend UPN = tostring(parse_json(Members)[0].UPN)\\n| where UPN contains (\\\"#EXT#\\\")\\n| + project TimeAdded=TimeGenerated, Operation, UPN, UserWhoAdded = UserId, TeamName\\n| + join (\\n OfficeActivity\\n| where OfficeWorkload =~ \\\"MicrosoftTeams\\\"\\n| + where Operation =~ \\\"MemberRemoved\\\"\\n| extend UPN = tostring(parse_json(Members)[0].UPN)\\n| + where UPN contains (\\\"#EXT#\\\")\\n| project TimeDeleted=TimeGenerated, + Operation, UPN, UserWhoDeleted = UserId, TeamName\\n) on UPN\\n| where TimeDeleted + > TimeAdded\\n| project TimeAdded, TimeDeleted, UPN, UserWhoAdded, UserWhoDeleted, + TeamName\\n| extend timestamp = TimeAdded, AccountCustomEntity = UPN\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1136\"],\"displayName\":\"External + user added and removed in short timeframe\",\"description\":\"This detection + flags the occurances of external user accounts that are added to a Team and + then removed within\\none hour.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-09-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity + (Teams)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9367dff0-941d-44e2-8875-cb48570c7add\",\"name\":\"9367dff0-941d-44e2-8875-cb48570c7add\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"Event\\n| + where EventLog == \\\"Microsoft-Windows-Sysmon/Operational\\\" and EventID + in (13)\\n| parse EventData with * 'TargetObject\\\">' TargetObject \\\"<\\\" + * 'Details\\\">' Details \\\"<\\\" * \\n| where TargetObject has \\\"\\\\\\\\Windows + NT\\\\\\\\CurrentVersion\\\\\\\\Windows\\\\\\\\AppInit_DLLs\\\"\\n| summarize + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by EventID, + Computer, TargetObject, Details\",\"entityMappings\":[{\"entityType\":\"RegistryKey\",\"fieldMappings\":[{\"identifier\":\"Key\",\"columnName\":\"TargetObject\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1546\"],\"displayName\":\"Registry + Persistence via AppInit DLLs Modification\",\"description\":\"Adversaries + may establish persistence and/or elevate privileges by executing malicious + content triggered by AppInit DLLs loaded into processes. \\nDynamic-link libraries + (DLLs) that are specified in the AppInit_DLLs value in the Registry keys HKEY_LOCAL_MACHINE\\\\Software\\\\Microsoft\\\\Windows + NT\\\\CurrentVersion\\\\Windows or HKEY_LOCAL_MACHINE\\\\Software\\\\Wow6432Node\\\\Microsoft\\\\Windows + NT\\\\CurrentVersion\\\\Windows are loaded by user32.dll into every process + that loads user32.dll. In practice this is nearly every program, since user32.dll + is a very common library.\\nRef: https://attack.mitre.org/techniques/T1546/010/\",\"lastUpdatedDateUTC\":\"2022-03-21T00:00:00Z\",\"createdDateUTC\":\"2022-03-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/95514e77-1b23-4f05-817c-ae363c53aad3\",\"name\":\"95514e77-1b23-4f05-817c-ae363c53aad3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.5\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":[{\"supportedValues\":[\"Akamai\",\"Aruba + Networks\",\"Check Point\",\"Dell\",\"Forcepoint\",\"Fortinet\",\"McAfee\",\"Palo + Alto Networks\",\"SonicWall\",\"Trend Micro\",\"Vectra Networks\",\"Zscaler\"],\"supportedValuesKql\":null,\"value\":\"Palo + Alto Networks\",\"name\":\"Device vendor\",\"description\":\"Select device + vendor reporting network connection logs to CommonSecurityLog\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"10\",\"maximum\":\"10000\",\"value\":\"10\",\"name\":\"Hourly + event count threshold\",\"description\":\"Suppress anomalies when hourly event + count is less than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"},{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\".98\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1030\"],\"displayName\":\"(Preview) + Unusual network volume anomaly\",\"description\":\"This algorithm is to detect + unusually high volume of connections in network logs. \\nIt uses time series + to decompose the data into seasonal, trend and residual components to \\ncalculate + baseline. Any sudden large deviation from the historical baseline is considered + as anomalous activity.\",\"lastUpdatedDateUTC\":\"2022-04-21T00:00:00Z\",\"createdDateUTC\":\"2021-04-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog + (Zscaler)\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog + (CheckPoint)\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog + (Fortinet)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8d537f3c-094f-430c-a588-8a87da36ee3a\",\"name\":\"8d537f3c-094f-430c-a588-8a87da36ee3a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT15M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 15m;\\nlet user_agents=dynamic([\\n '(hydra)',\\n + \ ' arachni/',\\n ' BFAC + ',\\n ' brutus ',\\n ' cgichk + ',\\n 'core-project/1.0',\\n ' + crimscanner/',\\n 'datacha0s',\\n 'dirbuster',\\n + \ 'domino hunter',\\n 'dotdotpwn',\\n + \ 'FHScan Core',\\n 'floodgate',\\n + \ 'get-minimal',\\n 'gootkit + auto-rooter scanner',\\n 'grendel-scan',\\n ' + inspath ',\\n 'internet ninja',\\n 'jaascois',\\n + \ ' zmeu ',\\n 'masscan',\\n + \ ' metis ',\\n 'morfeus + fucking scanner',\\n 'n-stealth',\\n 'nsauditor',\\n + \ 'pmafind',\\n 'security + scan',\\n 'springenwerk',\\n 'teh + forest lobster',\\n 'toata dragostea',\\n ' + vega/',\\n 'voideye',\\n 'webshag',\\n + \ 'webvulnscan',\\n ' whcc/',\\n + \ ' Havij',\\n 'absinthe',\\n + \ 'bsqlbf',\\n 'mysqloit',\\n + \ 'pangolin',\\n 'sql power + injector',\\n 'sqlmap',\\n 'sqlninja',\\n + \ 'uil2pn',\\n 'ruler',\\n + \ 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; + rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)'\\n ]);\\nCisco_Umbrella\\n| + where EventType == \\\"proxylogs\\\"\\n| where TimeGenerated > ago(timeframe)\\n| + where HttpUserAgentOriginal has_any (user_agents)\\n| extend Message = \\\"Hack + Tool User Agent\\\"\\n| project Message, SrcIpAddr, DstIpAddr, UrlOriginal, + TimeGenerated, HttpUserAgentOriginal\\n| extend IpCustomEntity = SrcIpAddr, + UrlCustomEntity = UrlOriginal\",\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Cisco + Umbrella - Hack Tool User-Agent Detected\",\"description\":\"Detects suspicious + user agent strings used by known hack tools\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/30c8b802-ace1-4408-bc29-4c5c5afb49e1\",\"name\":\"30c8b802-ace1-4408-bc29-4c5c5afb49e1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"imProcess\\n + \ | where EventType =~ \\\"ProcessCreated\\\"\\n | where Process endswith + \\\"svchost.exe\\\"\\n | where CommandLine has \\\"-k GPSvcGroup\\\" or CommandLine + has \\\"-s gpsvc\\\"\\n | extend timekey = bin(TimeGenerated, 1m)\\n | project + timekey, ActingProcessId, Dvc\\n | join kind=inner (imProcess\\n | where + EventType =~ \\\"ProcessCreated\\\"\\n | where Process =~ \\\"sdelete.exe\\\" + or CommandLine has \\\"sdelete\\\"\\n | where ActingProcessName endswith + \\\"svchost.exe\\\"\\n | where CommandLine has_all (\\\"-s\\\", \\\"-r\\\")\\n + \ | extend timekey = bin(TimeGenerated, 1m)\\n ) on $left.ActingProcessId + == $right.ParentProcessId, timekey, Dvc\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"ActorUsername\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"DvcIpAddr\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Dvc\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1485\"],\"displayName\":\"Sdelete + deployed via GPO and run recursively (ASIM Version)\",\"description\":\"This + query looks for the Sdelete process being run recursively after being deployed + to a host via GPO. Attackers could use this technique to deploy Sdelete to + multiple host and delete data on them.\\n This query uses the Advanced Security + Information Model. Parsers will need to be deployed before use: https://docs.microsoft.com/azure/sentinel/normalization\",\"lastUpdatedDateUTC\":\"2022-03-02T00:00:00Z\",\"createdDateUTC\":\"2022-03-01T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3f8fa297-1fbb-4515-98af-b77be2c873a1\",\"name\":\"3f8fa297-1fbb-4515-98af-b77be2c873a1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1485\"],\"displayName\":\"(Preview) + UEBA Anomalous Data Destruction\",\"description\":\"Adversaries may destroy + data and files on specific systems or in large numbers on a network to interrupt + availability to systems,\\nservices, and network resources. Data destruction + is likely to render stored data irrecoverable by forensic techniques through + \\noverwriting files or data on local and remote drives. \\nSentinel UEBA + detects anomalies based on dynamic baselines created for each entity across + various data inputs.\\nEach entity\xE2\u20AC\u2122s baseline behavior is set + according to its own historical activities, \\nthose of its peers, and those + of the organization as a whole.\\nAnomalies can be triggered by the correlation + of different attributes such as action type, geo-location, device, resource, + ISP, and more.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2022-03-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8dcf7238-a7d0-4cfd-8d0c-b230e3cd9182\",\"name\":\"8dcf7238-a7d0-4cfd-8d0c-b230e3cd9182\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT5M\",\"queryPeriod\":\"PT5M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = ago(5m);\\nDuoSecurityTrustMonitor_CL\\n| where TimeGenerated + >= timeframe\\n| extend AccountCustomEntity = surfaced_auth_user_name_s, IPCustomEntity + = surfaced_auth_access_device_ip_s\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"displayName\":\"Trust + Monitor Event\",\"description\":\"This query identifies when a new trust monitor + event is detected.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-02-13T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ae9128e8-2740-4b62-8bde-54e62b183fca\",\"name\":\"ae9128e8-2740-4b62-8bde-54e62b183fca\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.7\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":[{\"supportedValues\":[\"Palo + Alto Networks\",\"Fortinet\",\"Check Point\"],\"supportedValuesKql\":null,\"value\":\"Palo + Alto Networks\",\"name\":\"Device vendor\",\"description\":\"Select device + vendor of network connection logs from CommonSecurityLog\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"1\",\"maximum\":\"100\",\"value\":\"25\",\"name\":\"Daily + data transfer threshold in MB\",\"description\":\"Suppress anomalies when + daily data transfered (in MB) per hour is less than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"},{\"minimum\":\"2\",\"maximum\":\"10\",\"value\":\"3\",\"name\":\"Number + of standard deviations\",\"description\":\"Triggers anomalies when number + of standard deviations is greater than the chosen value\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Exfiltration\",\"CommandAndControl\"],\"techniques\":[\"T1030\",\"T1071\"],\"displayName\":\"(Preview) + Unusual network communication on commonly used ports\",\"description\":\"This + algorithm identifies unusual network communication on commonly used ports, + comparing daily traffic to a baseline from the previous 7 days.\\nThis includes + traffic on commonly used ports (22, 53, 80, 443, 8080, 8888), and compares + daily traffic to the mean and standard deviation of several\\nnetwork traffic + attributes calculated over the baseline period. The traffic attributes considered + are daily total events, daily data transfer and \\nnumber of distinct destination + IP addresses per port. An anomaly is triggered when the daily values are greater + than the configured number of standard deviations above the mean.\",\"lastUpdatedDateUTC\":\"2022-02-24T00:00:00Z\",\"createdDateUTC\":\"2021-05-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog + (CheckPoint)\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog + (Fortinet)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/dcdf9bfc-c239-4764-a9f9-3612e6dff49c\",\"name\":\"dcdf9bfc-c239-4764-a9f9-3612e6dff49c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Adjust this to use a longer timeframe to identify ADFS servers\\n//let lookback + = 6d;\\n// Adjust this to adjust the key export detection timeframe\\n//let + timeframe = 1d;\\n// Start be identifying ADFS servers to reduce FP chance\\nlet + ADFS_Servers = (\\nEvent\\n//| where TimeGenerated > ago(timeframe+lookback)\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 18\\n| + extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| mv-expand + bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| extend + Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, EventLog, + Computer, EventLevel, EventLevelName, EventID, UserName, MG, ManagementGroupName, + _ResourceId)\\n| extend Image = column_ifexists(\\\"Image\\\", \\\"\\\")\\n| + extend process = split(Image, '\\\\\\\\', -1)[-1]\\n| where process =~ \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + summarize by Computer);\\n// Look for ADFS servers where Named Pipes event + are present\\nEvent\\n//| where TimeGenerated > ago(timeframe)\\n| where Source + == \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 18\\n| where Computer + in~ (ADFS_Servers)\\n| extend RenderedDescription = tostring(split(RenderedDescription, + \\\":\\\")[0])\\n| extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, EventLog, + Computer, EventLevel, EventLevelName, EventID, UserName, RenderedDescription, + MG, ManagementGroupName, Type, _ResourceId)\\n| extend RuleName = column_ifexists(\\\"RuleName\\\", + \\\"\\\"),\\n TechniqueId = column_ifexists(\\\"TechniqueId\\\", \\\"\\\"),\\n + \ TechniqueName = column_ifexists(\\\"TechniqueName\\\", \\\"\\\"),\\n Image + = column_ifexists(\\\"Image\\\", \\\"\\\"),\\n PipeName = column_ifexists(\\\"PipeName\\\", + \\\"\\\"),\\n EventType = column_ifexists(\\\"EventType\\\", \\\"\\\")\\n| + parse RuleName with * 'technique_id=' TechniqueId ',' * 'technique_name=' + TechniqueName\\n// Look for Pipe related to querying the WID\\n| where PipeName + == \\\"\\\\\\\\MICROSOFT##WID\\\\\\\\tsql\\\\\\\\query\\\"\\n| extend process + = split(Image, '\\\\\\\\', -1)[-1]\\n// Exclude expected processes\\n| where + process !in (\\\"Microsoft.IdentityServer.ServiceHost.exe\\\", \\\"Microsoft.Identity.Health.Adfs.PshSurrogate.exe\\\", + \\\"AzureADConnect.exe\\\", \\\"Microsoft.Tri.Sensor.exe\\\", \\\"wsmprovhost.exe\\\",\\\"mmc.exe\\\", + \\\"sqlservr.exe\\\")\\n| extend Operation = RenderedDescription\\n| project-reorder + TimeGenerated, EventType, Operation, process, Image, Computer, UserName\\n| + extend HostCustomEntity = Computer, AccountCustomEntity = UserName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1005\"],\"displayName\":\"ADFS + Database Named Pipe Connection\",\"description\":\"This detection uses Sysmon + telemetry to detect suspicious local connections via a named pipe to the AD + FS configuration database (Windows Internal Database).\\nIn order to use this + query you need to be collecting Sysmon EventIdD 18 (Pipe Connected).\\nIf + you do not have Sysmon data in your workspace this query will raise an error + stating:\\nFailed to resolve scalar expression named \\\"[@Name]\",\"lastUpdatedDateUTC\":\"2021-11-23T00:00:00Z\",\"createdDateUTC\":\"2020-12-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3617d76d-b15e-4c6f-985e-a1dac73c592d\",\"name\":\"3617d76d-b15e-4c6f-985e-a1dac73c592d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Medium\",\"query\":\"SigninLogs\\n| + where ResultType == 500121\\n| extend additionalDetails_ = tostring(Status.additionalDetails)\\n| + where additionalDetails_ =~ \\\"MFA denied; user declined the authentication\\\"\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"UserPrincipalName\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"NRT + MFA Rejected by User\",\"description\":\"Identifies occurrences where a user + has rejected an MFA prompt. This could be an indicator that a threat actor + has compromised the username and password of this user account and is using + it to try and log into the account.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-user-accounts#monitoring-for-failed-unusual-sign-ins\",\"lastUpdatedDateUTC\":\"2022-02-08T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/29094df8-e0c7-4475-a74c-bda74a07affb\",\"name\":\"29094df8-e0c7-4475-a74c-bda74a07affb\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.8\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.03\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of logins to user account by logon types\",\"description\":\"This + algorithm detects an unusually high volume of successful logins per user account + by different logon types. The model is trained on the previous 21 days of + security event ID 4624 on an account. It indicates anomalous high volume of + successful logins in the last day.\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5436f471-b03d-41cb-b333-65891f887c43\",\"name\":\"5436f471-b03d-41cb-b333-65891f887c43\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Informational\",\"query\":\"GitHubRepo\\n| + where Action == \\\"vulnerabilityAlert\\\"\\n| project TimeGenerated, DismmisedAt, + Reason, vulnerableManifestFilename, Description, Link, PublishedAt, Severity, + Summary\",\"entityMappings\":[],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"displayName\":\"GitHub + Security Vulnerability in Repository\",\"description\":\"This alerts when + there is a new security vulnerability in a GitHub repository.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-10T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d82e1987-4356-4a7b-bc5e-064f29b143c0\",\"name\":\"d82e1987-4356-4a7b-bc5e-064f29b143c0\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"(union + isfuzzy=true \\n(SecurityEvent\\n| where EventID == 4688\\n| where Process + =~ 'rundll32.exe' \\n| where CommandLine has_all ('Execute','RegRead','window.close')\\n| + project TimeGenerated, Computer, Account, Process, NewProcessName, CommandLine, + ParentProcessName, _ResourceId\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer, AccountCustomEntity = Account\\n),\\n(WindowsEvent\\n| where EventID + == 4688 and EventData has 'rundll32.exe' and EventData has_any ('Execute','RegRead','window.close')\\n| + extend NewProcessName = tostring(EventData.NewProcessName)\\n| extend Process=tostring(split(NewProcessName, + '\\\\\\\\')[-1])\\n| where Process =~ 'rundll32.exe' \\n| extend CommandLine + = tostring(EventData.CommandLine)\\n| where CommandLine has_all ('Execute','RegRead','window.close')\\n| + extend Account = strcat(EventData.SubjectDomainName,\\\"\\\\\\\\\\\", EventData.SubjectUserName)\\n| + extend ParentProcessName = tostring(EventData.ParentProcessName) \\n| project + TimeGenerated, Computer, Account, Process, NewProcessName, CommandLine, ParentProcessName, + _ResourceId\\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer, + AccountCustomEntity = Account\\n) )\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1547\"],\"displayName\":\"NOBELIUM + - suspicious rundll32.exe execution of vbscript\",\"description\":\"This query + idenifies when rundll32.exe executes a specific set of inline VBScript commands\\n + References: https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-03-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b783df9c-4088-452e-a791-0c4fca47a109\",\"name\":\"b783df9c-4088-452e-a791-0c4fca47a109\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.6\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":\".lan, + .home\",\"dataType\":\"string\",\"name\":\"Top level domain\",\"description\":\"Give + comma separated TLDs to exclude from source data within double quotes, example: + \\\".lan, .home\\\"\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.9\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\"],\"displayName\":\"(Preview) + Domain generation algorithm (DGA) on DNS domains\",\"description\":\"This + machine learning model indicates potential DGA domains in the second-level-domain + (SLD) from the last day in the DNS logs.\\nThe algorithm applies to the DNS + records that resolve to IPv4 and IPv6 addresses.\",\"lastUpdatedDateUTC\":\"2022-01-18T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/961b6a81-5c53-40b6-9800-4f661a8faea7\",\"name\":\"961b6a81-5c53-40b6-9800-4f661a8faea7\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/DEV-0586.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet sha256Hashes = (iocs + | where Type =~ \\\"sha256\\\" | project IoC);\\nlet Command_Line = (iocs + | where Type =~ \\\"CommandLine\\\" | project IoC);\\n(union isfuzzy=true\\n(DeviceProcessEvents\\n| + where InitiatingProcessSHA256 in (sha256Hashes) or SHA256 in (sha256Hashes) + or ( InitiatingProcessCommandLine has ('127.0.0.1\\\\\\\\ADMIN$') and InitiatingProcessCommandLine + has_any (Command_Line))\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, + InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessCommandLine, + InitiatingProcessFolderPath, InitiatingProcessId, InitiatingProcessParentFileName, + InitiatingProcessFileName, InitiatingProcessSHA256, Type, AccountName, SHA256\\n| + extend Account = AccountName, Computer = DeviceName, CommandLine = InitiatingProcessCommandLine, + FileHash = case(InitiatingProcessSHA256 in (sha256Hashes), \\\"InitiatingProcessSHA256\\\", + SHA256 in (sha256Hashes), \\\"SHA256\\\", \\\"No Match\\\")\\n| extend timestamp + = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity = Account, + ProcessCustomEntity = InitiatingProcessFileName, FileHashCustomEntity = case(FileHash + == \\\"InitiatingProcessSHA256\\\", InitiatingProcessSHA256, FileHash == \\\"SHA256\\\", + SHA256, \\\"No Match\\\")\\n),\\n( SecurityEvent\\n| where EventID == 4688\\n| + where ( CommandLine has (@'127.0.0.1\\\\\\\\ADMIN$') and CommandLine has_any + (Command_Line))\\n| project TimeGenerated, Computer, NewProcessName, ParentProcessName, + Account, NewProcessId, Type, EventID\\n| extend timestamp = TimeGenerated, + HostCustomEntity = Computer , AccountCustomEntity = Account, ProcessCustomEntity + = NewProcessName\\n),\\n( CommonSecurityLog\\n| where FileHash in (sha256Hashes)\\n| + project TimeGenerated, Message, SourceUserID, FileHash, Type\\n| extend timestamp + = TimeGenerated, FileHashCustomEntity = 'SHA256', Account = SourceUserID\\n),\\n( + imFileEvent\\n| where Hash in~ (sha256Hashes) or ( ActingProcessCommandLine + has ('127.0.0.1\\\\\\\\ADMIN$') and ActingProcessCommandLine has_any (Command_Line))\\n| + extend Account = ActorUsername, Computer = DvcHostname, IPAddress = SrcIpAddr, + CommandLine = ActingProcessCommandLine, FileHash = TargetFileSHA256\\n| project + Type, TimeGenerated, Computer, Account, IPAddress, CommandLine, FileHash\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity + = Computer\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 1\\n| extend EvData = parse_xml(EventData)\\n| extend EventDetail + = EvData.DataItem.EventData.Data\\n| extend Image = EventDetail.[4].[\\\"#text\\\"], + \ CommandLine = EventDetail.[10].[\\\"#text\\\"], Hashes = tostring(EventDetail.[17].[\\\"#text\\\"])\\n| + extend Hashes = extract_all(@\\\"(?P\\\\w+)=(?P[a-zA-Z0-9]+)\\\", + dynamic([\\\"key\\\",\\\"value\\\"]), Hashes)\\n| extend Hashes = column_ifexists(\\\"Hashes\\\", + \\\"\\\"), CommandLine = column_ifexists(\\\"CommandLine\\\", \\\"\\\")\\n| + where (Hashes has_any (sha256Hashes) ) or ( CommandLine has ('127.0.0.1\\\\\\\\ADMIN$') + and CommandLine has_any (Command_Line)) \\n| project TimeGenerated, EventDetail, + UserName, Computer, Type, Source, Hashes, CommandLine, Image\\n| extend Type + = strcat(Type, \\\": \\\", Source)\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = UserName, ProcessCustomEntity = tostring(split(Image, + '\\\\\\\\', -1)[-1]), FileHashCustomEntity = Hashes\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"FileHashAlgo\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1561\"],\"displayName\":\"DEV-0586 + Actor IOC - January 2022\",\"description\":\"Identifies a match across IOC's + related to an actor tracked by Microsoft as DEV-0586\\n Refrence: https://www.microsoft.com/security/blog/2022/01/15/destructive-malware-targeting-ukrainian-organizations/\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2022-01-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/66c81ae2-1f89-4433-be00-2fbbd9ba5ebe\",\"name\":\"66c81ae2-1f89-4433-be00-2fbbd9ba5ebe\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + IPRegex = '[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}';\\nlet + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n CommonSecurityLog\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n | extend MessageIP = extract(IPRegex, + 0, Message)\\n | extend CS_ipEntity = iff(isnotempty(SourceIP), SourceIP, + DestinationIP)\\n | extend CS_ipEntity = iff(isempty(CS_ipEntity) and isnotempty(MessageIP), + MessageIP, CS_ipEntity)\\n | extend CommonSecurityLog_TimeGenerated = TimeGenerated\\n)\\non + $left.TI_ipEntity == $right.CS_ipEntity\\n| where CommonSecurityLog_TimeGenerated + < ExpirationDateTime\\n| summarize CommonSecurityLog_TimeGenerated = arg_max(CommonSecurityLog_TimeGenerated, + *) by IndicatorId, CS_ipEntity\\n| project CommonSecurityLog_TimeGenerated, + SourceIP, DestinationIP, MessageIP, Message, DeviceVendor, DeviceProduct, + IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, TI_ipEntity, + CS_ipEntity, LogSeverity, DeviceAction\\n| extend timestamp = CommonSecurityLog_TimeGenerated, + IPCustomEntity = CS_ipEntity\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to CommonSecurityLog\",\"description\":\"Identifies a match + in CommonSecurityLog from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/17f23fbe-bb73-4324-8ecf-a18545a5dc26\",\"name\":\"17f23fbe-bb73-4324-8ecf-a18545a5dc26\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P3D\",\"queryPeriod\":\"P3D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 3d;\\n// Get Release Pipeline Creation Events and group by day\\nAzureDevOpsAuditing\\n| + where TimeGenerated > ago(timeframe)\\n| where OperationName =~ \\\"Release.ReleasePipelineCreated\\\"\\n// + Group by day\\n| extend timekey = bin(TimeGenerated, 1d)\\n| extend PipelineId + = tostring(Data.PipelineId)\\n| extend PipelineName = tostring(Data.PipelineName)\\n// + Rename some columns to make output clearer\\n| project-rename TimeCreated + = TimeGenerated, CreatingUser = ActorUPN, CreatingUserAgent = UserAgent, CreatingIP + = IpAddress\\n// Join with Release Pipeline Deletions where Pipeline ID is + the same and deletion occurred on same day as creation\\n| join (AzureDevOpsAuditing\\n| + where TimeGenerated > ago(timeframe)\\n| where OperationName =~ \\\"Release.ReleasePipelineDeleted\\\"\\n// + Group by day\\n| extend timekey = bin(TimeGenerated, 1d)\\n| extend PipelineId + = tostring(Data.PipelineId)\\n| extend PipelineName = tostring(Data.PipelineName)\\n// + Rename some things to make the output clearer\\n| project-rename TimeDeleted + = TimeGenerated, DeletingUser = ActorUPN, DeletingUserAgent = UserAgent, DeletingIP + = IpAddress) on PipelineId, timekey\\n| project TimeCreated, TimeDeleted, + PipelineName, PipelineId, CreatingUser, CreatingIP, CreatingUserAgent, DeletingUser, + DeletingIP, DeletingUserAgent, ScopeDisplayName, ProjectName, Data, OperationName, + OperationName1\\n| extend timestamp = TimeCreated, AccountCustomEntity = CreatingUser, + IPCustomEntity = CreatingIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"DeletingUser\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"DeletingIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1072\"],\"displayName\":\"Azure + DevOps Pipeline Created and Deleted on the Same Day\",\"description\":\"An + attacker with access to Azure DevOps could create a pipeline to inject artifacts + used by other pipelines, \\nor to create a malicious software build that looks + legitimate by using a pipeline that incorporates legitimate elements. \\nAn + attacker would also likely want to cover their tracks once conducting such + activity. This query looks for Pipelines \\ncreated and deleted within the + same day, this is unlikely to be legitimate user activity in the majority + of cases.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/83ba3057-9ea3-4759-bf6a-933f2e5bc7ee\",\"name\":\"83ba3057-9ea3-4759-bf6a-933f2e5bc7ee\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P7D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":3,\"severity\":\"Medium\",\"query\":\"let + current = 1d;\\nlet auditLookback = 7d;\\n// Setting threshold to 3 as a default, + change as needed. \\n// Any operation that has been initiated by a user or + app more than 3 times in the past 7 days will be excluded\\nlet threshold + = 3;\\n// Gather initial data from lookback period, excluding current, adjust + current to more than a single day if no results\\nlet AuditTrail = AuditLogs + | where TimeGenerated >= ago(auditLookback) and TimeGenerated < ago(current)\\n// + 2 other operations that can be part of malicious activity in this situation + are \\n// \\\"Add OAuth2PermissionGrant\\\" and \\\"Add service principal\\\", + extend the filter below to capture these too\\n| where OperationName has \\\"Consent + to application\\\"\\n| extend InitiatedBy = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)), + \\ntostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName), tostring(parse_json(tostring(InitiatedBy.app)).displayName))\\n| + extend TargetResourceName = tolower(tostring(TargetResources.[0].displayName))\\n| + summarize max(TimeGenerated), OperationCount = count() by OperationName, InitiatedBy, + TargetResourceName\\n// only including operations by initiated by a user or + app that is above the threshold so we produce only rare and has not occurred + in last 7 days\\n| where OperationCount > threshold\\n;\\n// Gather current + period of audit data\\nlet RecentConsent = AuditLogs | where TimeGenerated + >= ago(current)\\n| where OperationName has \\\"Consent to application\\\"\\n| + extend IpAddress = case(\\nisnotempty(tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)) + and tostring(parse_json(tostring(InitiatedBy.user)).ipAddress) != 'null', + tostring(parse_json(tostring(InitiatedBy.user)).ipAddress), \\nisnotempty(tostring(parse_json(tostring(InitiatedBy.app)).ipAddress)) + and tostring(parse_json(tostring(InitiatedBy.app)).ipAddress) != 'null', tostring(parse_json(tostring(InitiatedBy.app)).ipAddress),\\n'Not + Available')\\n| extend InitiatedBy = iff(isnotempty(tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)), + \\ntostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName), tostring(parse_json(tostring(InitiatedBy.app)).displayName))\\n| + extend TargetResourceName = tolower(tostring(TargetResources.[0].displayName))\\n| + parse TargetResources.[0].modifiedProperties with * \\\"ConsentType: \\\" + ConsentType \\\"]\\\" *\\n| mv-expand AdditionalDetails\\n| extend UserAgent + = iff(AdditionalDetails.key == \\\"User-Agent\\\",tostring(AdditionalDetails.value),\\\"\\\")\\n| + project TimeGenerated, InitiatedBy, IpAddress, TargetResourceName, Category, + OperationName, ConsentType, UserAgent, CorrelationId, Type;\\n// Exclude previously + seen audit activity for \\\"Consent to application\\\" that was seen in the + lookback period\\n// First for rare InitiatedBy\\nlet RareConsentBy = RecentConsent + | join kind= leftanti AuditTrail on OperationName, InitiatedBy \\n| extend + Reason = \\\"Previously unseen user consenting\\\";\\n// Second for rare TargetResourceName\\nlet + RareConsentApp = RecentConsent | join kind= leftanti AuditTrail on OperationName, + TargetResourceName\\n| extend Reason = \\\"Previously unseen app granted consent\\\";\\nRareConsentBy + | union RareConsentApp\\n| summarize Reason = makeset(Reason) by TimeGenerated, + InitiatedBy, IpAddress, TargetResourceName, Category, OperationName, ConsentType, + UserAgent, CorrelationId, Type\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = InitiatedBy, HostCustomEntity = TargetResourceName, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Persistence\",\"LateralMovement\",\"Collection\"],\"techniques\":[\"T1136\"],\"displayName\":\"Rare + application consent\",\"description\":\"This will alert when the \\\"Consent + to application\\\" operation occurs by a user that has not done this operation + before or rarely does this.\\nThis could indicate that permissions to access + the listed Azure App were provided to a malicious actor. \\nConsent to application, + Add service principal and Add OAuth2PermissionGrant should typically be rare + events. \\nThis may help detect the Oauth2 attack that can be initiated by + this publicly available tool - https://github.com/fireeye/PwnAuth\\nFor further + information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-07-04T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/69b7723c-2889-469f-8b55-a2d355ed9c87\",\"name\":\"69b7723c-2889-469f-8b55-a2d355ed9c87\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n DnsEvents + | where TimeGenerated >= ago(dt_lookBack)\\n | where SubType =~ \\\"LookupQuery\\\" + and isnotempty(IPAddresses)\\n | extend SingleIP = split(IPAddresses, \\\",\\\")\\n + \ | mvexpand SingleIP\\n | extend SingleIP = tostring(SingleIP)\\n // + renaming time column so it is clear the log this came from\\n | extend + DNS_TimeGenerated = TimeGenerated\\n)\\non $left.TI_ipEntity == $right.SingleIP\\n| + where DNS_TimeGenerated < ExpirationDateTime\\n| summarize DNS_TimeGenerated + = arg_max(DNS_TimeGenerated , *) by IndicatorId, SingleIP\\n| project DNS_TimeGenerated, + Description, ActivityGroupNames, IndicatorId, ThreatType, Url, DomainName, + ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, Computer, EventId, SubType, + ClientIP, Name, IPAddresses, NetworkIP, NetworkDestinationIP, NetworkSourceIP, + EmailSourceIpAddress\\n| extend timestamp = DNS_TimeGenerated, IPCustomEntity + = ClientIP, HostCustomEntity = Computer, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.2\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to DnsEvents\",\"description\":\"Identifies a match in DnsEvents + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c63ae777-d5e0-4113-8c9a-c2c9d3d09fcd\",\"name\":\"c63ae777-d5e0-4113-8c9a-c2c9d3d09fcd\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + args = dynamic([\\\"objectcategory\\\",\\\"domainlist\\\",\\\"dcmodes\\\",\\\"adinfo\\\",\\\"trustdmp\\\",\\\"computers_pwdnotreqd\\\",\\\"Domain + Admins\\\", \\\"objectcategory=person\\\", \\\"objectcategory=computer\\\", + \\\"objectcategory=*\\\",\\\"dclist\\\"]);\\nlet parentProcesses = dynamic([\\\"pwsh.exe\\\",\\\"powershell.exe\\\",\\\"cmd.exe\\\"]);\\nDeviceProcessEvents\\n//looks + for execution from a shell\\n| where InitiatingProcessFileName in (parentProcesses)\\n// + main filter\\n| where FileName =~ \\\"AdFind.exe\\\" or SHA256 == \\\"c92c158d7c37fea795114fa6491fe5f145ad2f8c08776b18ae79db811e8e36a3\\\"\\n + \ // AdFind common Flags to check for from various threat actor TTPs\\n or + ProcessCommandLine has_any (args)\\n| extend AccountCustomEntity = AccountName, + HostCustomEntity = DeviceName, ProcessCustomEntity = InitiatingProcessFileName, + CommandLineCustomEntity = ProcessCommandLine, AlgorithmCustomEntity = \\\"SHA256\\\", + FileHashCustomEntity = SHA256\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"},{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLineCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1018\"],\"displayName\":\"Probable + AdFind Recon Tool Usage\",\"description\":\"Identifies the host and account + that executed AdFind by hash and filename in addition to common and unique + flags that are used by many threat actors in discovery.\",\"lastUpdatedDateUTC\":\"2021-11-30T00:00:00Z\",\"createdDateUTC\":\"2021-04-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b31037ea-6f68-4fbd-bab2-d0d0f44c2fcf\",\"name\":\"b31037ea-6f68-4fbd-bab2-d0d0f44c2fcf\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(Url)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n Syslog\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n // Extract URL from the Syslog + message but only take messages that include URLs\\n | extend Url = extract(\\\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\\\\\(\\\\\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)\\\", + 1,SyslogMessage)\\n | where isnotempty(Url)\\n | extend Syslog_TimeGenerated + = TimeGenerated\\n) on Url\\n| where Syslog_TimeGenerated < ExpirationDateTime\\n| + summarize Syslog_TimeGenerated = arg_max(Syslog_TimeGenerated , *) by IndicatorId, + Url\\n| project Syslog_TimeGenerated, Description, ActivityGroupNames, IndicatorId, + ThreatType, ExpirationDateTime, ConfidenceScore, SyslogMessage, Computer, + ProcessName, Url, HostIP\\n| extend timestamp = Syslog_TimeGenerated, HostCustomEntity + = Computer, IPCustomEntity = HostIP, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map URL entity to Syslog data\",\"description\":\"Identifies a match in Syslog + data from any URL IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a357535e-f722-4afe-b375-cff362b2b376\",\"name\":\"a357535e-f722-4afe-b375-cff362b2b376\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"(union + isfuzzy=true\\n(OfficeActivity | where UserAgent != \\\"\\\"),\\n(OfficeActivity\\n| + where RecordType in (\\\"AzureActiveDirectory\\\", \\\"AzureActiveDirectoryStsLogon\\\")\\n| + extend OperationName = Operation\\n| parse ExtendedProperties with * 'User-Agent\\\\\\\\\\\":\\\\\\\\\\\"' + UserAgent2 '\\\\\\\\' *\\n| parse ExtendedProperties with * 'UserAgent\\\", + \ \\\"Value\\\": \\\"' UserAgent1 '\\\"' *\\n| where isnotempty(UserAgent1) + or isnotempty(UserAgent2)\\n| extend UserAgent = iff( RecordType == 'AzureActiveDirectoryStsLogon', + UserAgent1, UserAgent2)\\n| summarize StartTime = min(TimeGenerated), EndTime + = max(TimeGenerated) by UserAgent, SourceIP = ClientIP, Account = UserId, + Type, RecordType, Operation\\n),\\n(AzureDiagnostics\\n| where ResourceType + =~ \\\"APPLICATIONGATEWAYS\\\" \\n| where OperationName =~ \\\"ApplicationGatewayAccess\\\" + \\n| extend ClientIP = columnifexists(\\\"clientIP_s\\\", \\\"None\\\"), UserAgent + = columnifexists(\\\"userAgent_s\\\", \\\"None\\\")\\n| where UserAgent != + '-'\\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) + by UserAgent, SourceIP = ClientIP, requestUri_s, httpMethod_s, host_s, requestQuery_s, + Type\\n),\\n(\\nW3CIISLog\\n| where isnotempty(csUserAgent)\\n| summarize + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by UserAgent + = csUserAgent, SourceIP = cIP, Account = csUserName, Type, sSiteName, csMethod, + csUriStem\\n),\\n(\\nAWSCloudTrail\\n| where isnotempty(UserAgent)\\n| summarize + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by UserAgent, + SourceIP = SourceIpAddress, Account = UserIdentityUserName, Type, EventSource, + EventName\\n),\\n(SigninLogs\\n| where isnotempty(UserAgent)\\n| summarize + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by UserAgent, + SourceIP = IPAddress, Account = UserPrincipalName, Type, OperationName, tostring(LocationDetails), + tostring(DeviceDetail), AppDisplayName, ClientAppUsed\\n),\\n(AADNonInteractiveUserSignInLogs + \\n| where isnotempty(UserAgent)\\n| summarize StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) by UserAgent, SourceIP = IPAddress, Account = + UserPrincipalName, Type, OperationName, tostring(LocationDetails), tostring(DeviceDetail), + AppDisplayName, ClientAppUsed\\n)\\n)\\n// Likely artefact of hardcoding\\n| + where UserAgent startswith \\\"User\\\" or UserAgent startswith '\\\\\\\"'\\n// + Incorrect casing\\nor (UserAgent startswith \\\"Mozilla\\\" and not(UserAgent + containscs \\\"Mozilla\\\"))\\n// Incorrect casing\\nor UserAgent containscs + \ \\\"(Compatible;\\\"\\n// Missing MSIE version\\nor UserAgent matches regex + @\\\"MSIE\\\\s?;\\\"\\n// Incorrect spacing around MSIE version\\nor UserAgent + matches regex @\\\"MSIE(?:\\\\d|.{1,5}?\\\\d\\\\s;)\\\"\\n| extend timestamp + = StartTime, IPCustomEntity = SourceIP, AccountCustomEntity = Account\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\",\"CommandAndControl\",\"Execution\"],\"techniques\":[\"T1189\",\"T1071\",\"T1203\"],\"displayName\":\"Malformed + user agent\",\"description\":\"Malware authors will sometimes hardcode user + agent string values when writing the network communication component of their + malware.\\nMalformed user agents can be an indication of such malware.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-01-25T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"WAF\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/4acd3a04-2fad-4efc-8a4b-51476594cec4\",\"name\":\"4acd3a04-2fad-4efc-8a4b-51476594cec4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + triThreshold = 500;\\nlet startTime = 6h;\\nlet dgaLengthThreshold = 8;\\n// + fetch the alexa top 1M domains\\nlet top1M = (externaldata (Position:int, + Domain:string) [@\\\"http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip\\\"] + \ with (format=\\\"csv\\\", zipPattern=\\\"*.csv\\\"));\\n// extract tri grams + that are above our threshold - i.e. are common\\nlet triBaseline = top1M\\n| + extend Domain = tolower(extract(\\\"([^.]*).{0,7}$\\\", 1, Domain))\\n| extend + AllTriGrams = array_concat(extract_all(\\\"(...)\\\", Domain), extract_all(\\\"(...)\\\", + substring(Domain, 1)), extract_all(\\\"(...)\\\", substring(Domain, 2)))\\n| + mvexpand Trigram=AllTriGrams\\n| summarize triCount=count() by tostring(Trigram)\\n| + sort by triCount desc\\n| where triCount > triThreshold\\n| distinct Trigram;\\n// + collect domain information from common security log, filter and extract the + DGA candidate and its trigrams\\nlet allDataSummarized = CommonSecurityLog\\n| + where TimeGenerated > ago(startTime)\\n| where isnotempty(DestinationHostName)\\n| + extend Name = tolower(DestinationHostName)\\n| distinct Name\\n| where Name + has \\\".\\\"\\n| where Name !endswith \\\".home\\\" and Name !endswith \\\".lan\\\"\\n// + extract DGA candidate\\n| extend DGADomain = extract(\\\"([^.]*).{0,7}$\\\", + 1, Name)\\n| where strlen(DGADomain) > dgaLengthThreshold\\n// throw out domains + with number in them\\n| where DGADomain matches regex \\\"^[A-Za-z]{0,}$\\\"\\n// + extract the tri grams from summarized data\\n| extend AllTriGrams = array_concat(extract_all(\\\"(...)\\\", + DGADomain), extract_all(\\\"(...)\\\", substring(DGADomain, 1)), extract_all(\\\"(...)\\\", + substring(DGADomain, 2)));\\n// throw out domains that have repeating tri's + and/or >=3 repeating letters\\nlet nonRepeatingTris = allDataSummarized\\n| + join kind=leftanti\\n(\\n allDataSummarized\\n | mvexpand AllTriGrams\\n + \ | summarize count() by tostring(AllTriGrams), DGADomain\\n | where + count_ > 1\\n | distinct DGADomain\\n)\\non DGADomain;\\n// find domains + that do not have a common tri in the baseline\\nlet dataWithRareTris = nonRepeatingTris\\n| + join kind=leftanti\\n(\\n nonRepeatingTris\\n | mvexpand AllTriGrams\\n + \ | extend Trigram = tostring(AllTriGrams)\\n | distinct Trigram, DGADomain\\n + \ | join kind=inner\\n (\\n triBaseline\\n )\\n on Trigram\\n + \ | distinct DGADomain\\n)\\non DGADomain;\\ndataWithRareTris\\n// join + DGAs back on connection data\\n| join kind=inner\\n(\\n CommonSecurityLog\\n + \ | where TimeGenerated > ago(startTime)\\n | where isnotempty(DestinationHostName)\\n + \ | extend DestinationHostName = tolower(DestinationHostName)\\n | project-rename + Name=DestinationHostName, DataSource=DeviceVendor\\n | summarize StartTime=min(TimeGenerated), + EndTime=max(TimeGenerated) by Name, SourceIP, DestinationIP, DataSource\\n)\\non + Name\\n| project StartTime, EndTime, Name, DGADomain, SourceIP, DestinationIP, + DataSource\\n| extend timestamp=StartTime, IPCustomEntity=SourceIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"DNS\",\"fieldMappings\":[{\"identifier\":\"DomainName\",\"columnName\":\"Name\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\"],\"displayName\":\"Possible + contact with a domain generated by a DGA\",\"description\":\"Identifies contacts + with domains names in CommonSecurityLog that might have been generated by + a Domain Generation Algorithm (DGA). DGAs can be used\\nby malware to generate + rendezvous points that are difficult to predict in advance. This detection + uses the Alexa Top 1 million domain names to build a model\\nof what normal + domains look like. It uses this to identify domains that may have been randomly + generated by an algorithm.\\nThe triThreshold is set to 500 - increase this + to report on domains that are less likely to have been randomly generated, + decrease it for more likely.\\nThe start time and end time look back over + 6 hours of data and the dgaLengthThreshold is set to 8 - meaning domains whose + length is 8 or more are reported.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-03-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Barracuda\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/aac495a9-feb1-446d-b08e-a1164a539452\",\"name\":\"aac495a9-feb1-446d-b08e-a1164a539452\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"ThreatIntelligenceIndicator\\n| + where Action == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// Taking + the first non-empty value based on potential IOC match availability\\n| extend + TI_ipEntity = iff(isnotempty(NetworkIP), NetworkIP, NetworkDestinationIP)\\n| + extend TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(NetworkSourceIP), + NetworkSourceIP, TI_ipEntity)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, TI_ipEntity)\\n| + join (\\n GitHubAudit\\n | extend GitHubAudit_TimeGenerated = TimeGenerated\\n)\\non + $left.TI_ipEntity == $right.IPaddress\\n| summarize LatestIndicatorTime = + arg_max(TimeGenerated, *) by IndicatorId\\n| project LatestIndicatorTime, + Description, ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, + ConfidenceScore, GitHubAudit_TimeGenerated, TI_ipEntity, IPaddress, Actor, + Action, Country, OperationType, NetworkIP, NetworkDestinationIP, NetworkSourceIP, + EmailSourceIpAddress\\n| extend timestamp = GitHubAudit_TimeGenerated, IPCustomEntity + = IPaddress, AccountCustomEntity = Actor\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to GitHub_CL\",\"description\":\"Identifies a match in GitHub_CL + table from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2cfc3c6e-f424-4b88-9cc9-c89f482d016a\",\"name\":\"2cfc3c6e-f424-4b88-9cc9-c89f482d016a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where OperationName has_any (\\\"Add service principal\\\", \\\"Certificates + and secrets management\\\") // captures \\\"Add service principal\\\", \\\"Add + service principal credentials\\\", and \\\"Update application - Certificates + and secrets management\\\" events\\n| where Result =~ \\\"success\\\"\\n| + where tostring(InitiatedBy.user.userPrincipalName) has \\\"@\\\" or tostring(InitiatedBy.app.displayName) + has \\\"@\\\"\\n| extend targetDisplayName = tostring(TargetResources[0].displayName)\\n| + extend targetId = tostring(TargetResources[0].id)\\n| extend targetType = + tostring(TargetResources[0].type)\\n| extend keyEvents = TargetResources[0].modifiedProperties\\n| + mv-expand keyEvents\\n| where keyEvents.displayName =~ \\\"KeyDescription\\\"\\n| + extend new_value_set = parse_json(tostring(keyEvents.newValue))\\n| extend + old_value_set = parse_json(tostring(keyEvents.oldValue))\\n| where old_value_set + == \\\"[]\\\"\\n| mv-expand new_value_set\\n| parse new_value_set with * \\\"KeyIdentifier=\\\" + keyIdentifier:string \\\",KeyType=\\\" keyType:string \\\",KeyUsage=\\\" keyUsage:string + \\\",DisplayName=\\\" keyDisplayName:string \\\"]\\\" *\\n| where keyUsage + == \\\"Verify\\\" or keyUsage == \\\"\\\"\\n| extend UserAgent = iff(AdditionalDetails[0].key + == \\\"User-Agent\\\",tostring(AdditionalDetails[0].value),\\\"\\\")\\n| extend + InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.app.displayName))\\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\\n// + The below line is currently commented out but Microsoft Sentinel users can + modify this query to show only Application or only Service Principal events + in their environment\\n//| where targetType =~ \\\"Application\\\" // or targetType + =~ \\\"ServicePrincipal\\\"\\n| project-away new_value_set, old_value_set\\n| + project-reorder TimeGenerated, OperationName, InitiatingUserOrApp, InitiatingIpAddress, + UserAgent, targetDisplayName, targetId, targetType, keyDisplayName, keyType, + keyUsage, keyIdentifier, CorrelationId, TenantId\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = InitiatingUserOrApp, IPCustomEntity = InitiatingIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1550\"],\"displayName\":\"First + access credential added to Application or Service Principal where no credential + was present\",\"description\":\"This will alert when an admin or app owner + account adds a new credential to an Application or Service Principal where + there was no previous verify KeyCredential associated.\\nIf a threat actor + obtains access to an account with sufficient privileges and adds the alternate + authentication material triggering this event, the threat actor can now authenticate + as the Application or Service Principal using this credential.\\nAdditional + information on OAuth Credential Grants can be found in RFC 6749 Section 4.4 + or https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow\\nFor + further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2022-02-11T00:00:00Z\",\"createdDateUTC\":\"2020-11-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0dd422ee-e6af-4204-b219-f59ac172e4c6\",\"name\":\"0dd422ee-e6af-4204-b219-f59ac172e4c6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"ThreatIntelligence\",\"properties\":{\"severity\":\"Medium\",\"tactics\":[\"Persistence\",\"LateralMovement\"],\"displayName\":\"(Preview) + Microsoft Threat Intelligence Analytics\",\"description\":\"This rule generates + an alert when a Microsoft Threat Intelligence Indicator gets matched with + your event logs. The alerts are very high fidelity.\\n\\nNote : It is advised + to turn off any custom alert rules which match the threat intelligence indicators + with the same event logs matched by this analytics to prevent duplicate alerts.\",\"lastUpdatedDateUTC\":\"2021-07-28T00:00:00Z\",\"createdDateUTC\":\"2020-06-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/074ce265-f684-41cd-af07-613c5f3e6d0d\",\"name\":\"074ce265-f684-41cd-af07-613c5f3e6d0d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = dynamic([\\\"irf.services\\\",\\\"microsoft-onthehub.com\\\",\\\"msofficelab.com\\\",\\\"com-mailbox.com\\\",\\\"my-sharefile.com\\\",\\\"my-sharepoints.com\\\",\\n\\\"accounts-web-mail.com\\\",\\\"customer-certificate.com\\\",\\\"session-users-activities.com\\\",\\\"user-profile-credentials.com\\\",\\\"verify-linke.com\\\",\\\"support-servics.net\\\",\\n\\\"onedrive-sharedfile.com\\\",\\\"onedrv-live.com\\\",\\\"transparencyinternational-my-sharepoint.com\\\",\\\"transparencyinternational-my-sharepoints.com\\\",\\\"soros-my-sharepoint.com\\\"]);\\n(union + isfuzzy=true\\n (CommonSecurityLog \\n | parse Message with * '(' DNSName + ')' * \\n | extend Account = SourceUserID, Host = DeviceName, IPAddress = + SourceIP\\n ),\\n (_Im_Dns(domain_has_any=DomainNames)\\n | extend IPAddress + = SrcIpAddr, DNSName = DnsQuery, Host = Dvc),\\n (VMConnection \\n | parse + RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' *\\n | extend IPAddress + = RemoteIp, Host = Computer\\n ),\\n (AzureDiagnostics \\n | where ResourceType + == \\\"AZUREFIREWALLS\\\"\\n | where Category == \\\"AzureFirewallApplicationRule\\\"\\n + \ | parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to + ' DestinationHost ':' DestinationPort '. Action:' Action\\n | extend DNSName + = DestinationHost \\n | extend IPAddress = SourceHost\\n ),\\n (\\n _Im_WebSession(url_has_any=DomainNames)\\n + \ | extend IPCustomEntity=IpAddr, HostCustomEntity=Hostname, AccoutCustomEntity=User\\n + \ )\\n)\\n| where isnotempty(DNSName)\\n| where DNSName has_any (DomainNames)\\n| + extend timestamp = TimeGenerated, IPCustomEntity = IPAddress, AccountCustomEntity + = Account, HostCustomEntity = Host\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.4.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1071\"],\"displayName\":\"Known + STRONTIUM group domains - July 2019\",\"description\":\"Matches domain name + IOCs related to Strontium group activity published July 2019 with CommonSecurityLog, + DnsEvents and VMConnection dataTypes.\\nReferences: https://blogs.microsoft.com/on-the-issues/2019/07/17/new-cyberthreats-require-new-ways-to-protect-democracy/.\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2019-07-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a50766a7-0674-4ccb-8845-15dc55a80ba1\",\"name\":\"a50766a7-0674-4ccb-8845-15dc55a80ba1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n WireData + | where TimeGenerated >= ago(dt_lookBack)\\n | where isnotempty(RemoteIP)\\n + \ // renaming time column so it is clear the log this came from\\n | + extend WireData_TimeGenerated = TimeGenerated\\n)\\non $left.TI_ipEntity == + $right.RemoteIP\\n| where WireData_TimeGenerated < ExpirationDateTime\\n| + summarize WireData_TimeGenerated = arg_max(WireData_TimeGenerated, *) by IndicatorId, + RemoteIP\\n| project WireData_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, + Computer, LocalIP, RemoteIP, ProcessName, ApplicationProtocol, LocalPortNumber, + NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| + extend timestamp = WireData_TimeGenerated, IPCustomEntity = RemoteIP, HostCustomEntity + = Computer, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to WireData\",\"description\":\"Identifies a match in WireData + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureMonitor(WireData)\",\"dataTypes\":[\"WireData\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6d7214d9-4a28-44df-aafb-0910b9e6ae3e\",\"name\":\"6d7214d9-4a28-44df-aafb-0910b9e6ae3e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + match_window = 3m;\\nAzureActivity\\n| where ResourceGroup has \\\"cloud-shell\\\"\\n| + where (OperationNameValue =~ \\\"Microsoft.Storage/storageAccounts/listKeys/action\\\") + \\n| where ActivityStatusValue == \\\"Success\\\"\\n| extend TimeKey = bin(TimeGenerated, + match_window), AzureIP = CallerIpAddress\\n| join kind = inner\\n(AzureActivity\\n| + where ResourceGroup has \\\"cloud-shell\\\"\\n| where (OperationNameValue + =~ \\\"Microsoft.Storage/storageAccounts/write\\\") \\n| extend TimeKey = + bin(TimeGenerated, match_window), UserIP = CallerIpAddress\\n) on Caller, + TimeKey\\n| summarize count() by TimeKey, Caller, ResourceGroup, SubscriptionId, + TenantId, AzureIP, UserIP, HTTPRequest, Type, Properties, CategoryValue, OperationList + = strcat(OperationNameValue, ' , ', OperationNameValue1)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Caller\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"UserIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1059\"],\"displayName\":\"New + CloudShell User\",\"description\":\"Identifies when a user creates an Azure + CloudShell for the first time.\\nMonitor this activity to ensure only expected + user are using CloudShell\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-12-17T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5170c3c4-b8c9-485c-910d-a21d965ee181\",\"name\":\"5170c3c4-b8c9-485c-910d-a21d965ee181\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT30M\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + queryfrequency = 30m;\\nlet accountthreshold = 10;\\nlet successCodes = dynamic([0, + 50144]);\\nADFSSignInLogs\\n| extend IngestionTime = ingestion_time()\\n| + where IngestionTime > ago(queryfrequency)\\n| where not(todynamic(AuthenticationDetails)[0].authenticationMethod + == \\\"Integrated Windows Authentication\\\")\\n| summarize\\n DistinctFailureCount + = dcountif(UserPrincipalName, ResultType !in (successCodes)),\\n DistinctSuccessCount + = dcountif(UserPrincipalName, ResultType in (successCodes)),\\n SuccessAccounts + = make_set_if(UserPrincipalName, ResultType in (successCodes), 250),\\n arg_min(TimeGenerated, + *)\\n by IPAddress\\n| where DistinctFailureCount > DistinctSuccessCount + and DistinctFailureCount >= accountthreshold\\n//| extend SuccessAccounts + = iff(array_length(SuccessAccounts) != 0, SuccessAccounts, dynamic([\\\"null\\\"]))\\n//| + mv-expand SuccessAccounts\\n| project TimeGenerated, Category, OperationName, + IPAddress, DistinctFailureCount, DistinctSuccessCount, SuccessAccounts, AuthenticationRequirement, + ConditionalAccessStatus, IsInteractive, UserAgent, NetworkLocationDetails, + DeviceDetail, TokenIssuerType, TokenIssuerName, ResourceIdentity\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Password + spray attack against ADFSSignInLogs\",\"description\":\"Identifies evidence + of password spray activity against Connect Health for AD FS sign-in events + by looking for failures from multiple accounts from the same IP address within + a time window.\\nReference: https://adfshelp.microsoft.com/References/ConnectHealthErrorCodeReference\",\"lastUpdatedDateUTC\":\"2022-05-04T00:00:00Z\",\"createdDateUTC\":\"2022-03-08T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"ADFSSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/32686052-5bed-48ef-9ffa-39fc7699f085\",\"name\":\"32686052-5bed-48ef-9ffa-39fc7699f085\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.1\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of AWS API calls from Non-AWS source IP address from a user + account id per workspace on a daily basis\",\"description\":\"This algorithm + detects an unusually high volume of AWS API calls from Source IPs not in AWS + Source IP ranges from one user account per workspace within the last day. + The model is trained on the previous 21 days of AWS cloud trail log events + on source IP address basis. This activity may indicate that the user account + is compromised.\",\"lastUpdatedDateUTC\":\"2022-03-07T00:00:00Z\",\"createdDateUTC\":\"2021-10-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6d63efa6-7c25-4bd4-a486-aa6bf50fde8a\",\"name\":\"6d63efa6-7c25-4bd4-a486-aa6bf50fde8a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Add non-approved user principal names to the list below to search for their + account creation/deletion activity\\n// ex: dynamic([\\\"UPN1\\\", \\\"upn123\\\"])\\nlet + nonapproved_users = dynamic([]);\\nAuditLogs\\n| where OperationName == \\\"Add + user\\\" or OperationName == \\\"Delete user\\\"\\n| where Result == \\\"success\\\"\\n| + extend InitiatingUser = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\\n| + where InitiatingUser has_any (nonapproved_users)\\n| project-reorder TimeGenerated, + ResourceId, OperationName, InitiatingUser, TargetResources\\n| extend AccountCustomEntity + = InitiatingUser, IPCustomEntity = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Account + created or deleted by non-approved user\",\"description\":\"Identifies accounts + that were created or deleted by a defined list of non-approved user principal + names. Add to this list before running the query for accurate results.\\nRef + : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-user-accounts\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-10-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/11b4c19d-2a79-4da3-af38-b067e1273dee\",\"name\":\"11b4c19d-2a79-4da3-af38-b067e1273dee\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"(union + isfuzzy=true\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID in (17,18)\\n| where EventData has '583da945-62af-10e8-4902-a8f205c72b2e'\\n| + extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| mv-expand + bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| extend + Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, EventLog, + Computer, EventLevel, EventLevelName, EventID, UserName, MG, ManagementGroupName, + _ResourceId)\\n| extend PipeName = column_ifexists(\\\"PipeName\\\", \\\"\\\")\\n| + extend Account = UserName\\n),\\n(\\nSecurityEvent\\n| where EventID == '5145'\\n// + %%4418 looks for presence of CreatePipeInstance value \\n| where AccessList + has '%%4418' \\n| where RelativeTargetName has '583da945-62af-10e8-4902-a8f205c72b2e'\\n),\\n(\\nWindowsEvent\\n| + where EventID == '5145' and EventData has '%%4418' and EventData has '583da945-62af-10e8-4902-a8f205c72b2e' + \\n// %%4418 looks for presence of CreatePipeInstance value \\n| extend AccessList= + tostring(EventData.AccessList)\\n| where AccessList has '%%4418' \\n| + extend RelativeTargetName= tostring(EventData.RelativeTargetName)\\n| where + RelativeTargetName has '583da945-62af-10e8-4902-a8f205c72b2e'\\n| extend Account + = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", tostring(EventData.SubjectUserName))\\n)\\n)\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity + = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"DefenseEvasion\",\"PrivilegeEscalation\"],\"techniques\":[\"T1055\"],\"displayName\":\"Solorigate + Named Pipe\",\"description\":\"Identifies a match across various data feeds + for named pipe IOCs related to the Solorigate incident.\\n For the sysmon + events required for this detection, logging for Named Pipe Events needs to + be configured in Sysmon config (Event ID 17 and Event ID 18)\\n Reference: + https://techcommunity.microsoft.com/t5/azure-sentinel/solarwinds-post-compromise-hunting-with-azure-sentinel/ba-p/1995095\",\"lastUpdatedDateUTC\":\"2022-03-16T00:00:00Z\",\"createdDateUTC\":\"2020-12-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/532f62c1-fba6-4baa-bbb6-4a32a4ef32fa\",\"name\":\"532f62c1-fba6-4baa-bbb6-4a32a4ef32fa\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\n//Create a list of TLDs in our + threat feed for later validation\\nlet list_tlds = ThreatIntelligenceIndicator\\n| + where TimeGenerated > ago(ioc_lookBack)\\n| where isnotempty(DomainName)\\n| + extend parts = split(DomainName, '.')\\n| extend tld = parts[(array_length(parts)-1)]\\n| + summarize count() by tostring(tld)\\n| summarize make_list(tld);\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(DomainName)\\n// using innerunique to keep perf + fast and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n Syslog\\n + \ | where TimeGenerated > ago(dt_lookBack)\\n //Extract domain patterns + from syslog message\\n | extend domain = extract(\\\"(([a-z0-9]+(-[a-z0-9]+)*\\\\\\\\.)+[a-z]{2,})\\\",1, + tolower(SyslogMessage))\\n | where isnotempty(domain)\\n | extend parts + = split(domain, '.')\\n //Split out the TLD\\n | extend tld = parts[(array_length(parts)-1)]\\n + \ //Validate parsed domain by checking if the TLD is in the list of TLDs + in our threat feed\\n | where tld in~ (list_tlds)\\n | extend Syslog_TimeGenerated + = TimeGenerated\\n) on $left.DomainName==$right.domain\\n| where Syslog_TimeGenerated + < ExpirationDateTime\\n| summarize Syslog_TimeGenerated = arg_max(Syslog_TimeGenerated + , *) by IndicatorId, domain\\n| project Syslog_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, + SyslogMessage, Computer, ProcessName, domain, HostIP, Url\\n| extend timestamp + = Syslog_TimeGenerated, HostCustomEntity = Computer, IPCustomEntity = HostIP, + URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Domain entity to Syslog\",\"description\":\"Identifies a match in Syslog + table from any Domain IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/19e01883-15d8-4eb6-a7a5-3276cd668388\",\"name\":\"19e01883-15d8-4eb6-a7a5-3276cd668388\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeBin = 1m;\\nlet failedThreshold = 20;\\nW3CIISLog\\n| where scStatus in + (\\\"401\\\",\\\"403\\\")\\n| where csUserName != \\\"-\\\"\\n| extend scStatusFull + = strcat(scStatus, \\\".\\\",scSubStatus) \\n// Map common IIS codes\\n| extend + scStatusFull_Friendly = case(\\nscStatusFull == \\\"401.0\\\", \\\"Access + denied.\\\",\\nscStatusFull == \\\"401.1\\\", \\\"Logon failed.\\\",\\nscStatusFull + == \\\"401.2\\\", \\\"Logon failed due to server configuration.\\\",\\nscStatusFull + == \\\"401.3\\\", \\\"Unauthorized due to ACL on resource.\\\",\\nscStatusFull + == \\\"401.4\\\", \\\"Authorization failed by filter.\\\",\\nscStatusFull + == \\\"401.5\\\", \\\"Authorization failed by ISAPI/CGI application.\\\",\\nscStatusFull + == \\\"403.0\\\", \\\"Forbidden.\\\",\\nscStatusFull == \\\"403.4\\\", \\\"SSL + required.\\\",\\n\\\"See - https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\\\")\\n// + Mapping to Hex so can be mapped using website in comments above\\n| extend + scWin32Status_Hex = tohex(tolong(scWin32Status)) \\n// Map common win32 codes\\n| + extend scWin32Status_Friendly = case(\\nscWin32Status_Hex =~ \\\"775\\\", + \\\"The referenced account is currently locked out and cannot be logged on + to.\\\",\\nscWin32Status_Hex =~ \\\"52e\\\", \\\"Logon failure: Unknown user + name or bad password.\\\",\\nscWin32Status_Hex =~ \\\"532\\\", \\\"Logon failure: + The specified account password has expired.\\\",\\nscWin32Status_Hex =~ \\\"533\\\", + \\\"Logon failure: Account currently disabled.\\\", \\nscWin32Status_Hex =~ + \\\"2ee2\\\", \\\"The request has timed out.\\\", \\nscWin32Status_Hex =~ + \\\"0\\\", \\\"The operation completed successfully.\\\", \\nscWin32Status_Hex + =~ \\\"1\\\", \\\"Incorrect function.\\\", \\nscWin32Status_Hex =~ \\\"2\\\", + \\\"The system cannot find the file specified.\\\", \\nscWin32Status_Hex =~ + \\\"3\\\", \\\"The system cannot find the path specified.\\\", \\nscWin32Status_Hex + =~ \\\"4\\\", \\\"The system cannot open the file.\\\", \\nscWin32Status_Hex + =~ \\\"5\\\", \\\"Access is denied.\\\", \\nscWin32Status_Hex =~ \\\"8009030e\\\", + \\\"SEC_E_NO_CREDENTIALS\\\", \\nscWin32Status_Hex =~ \\\"8009030C\\\", \\\"SEC_E_LOGON_DENIED\\\", + \\n\\\"See - https://msdn.microsoft.com/library/cc231199.aspx\\\")\\n// decode + URI when available\\n| extend decodedUriQuery = url_decode(csUriQuery)\\n// + Count of failed attempts from same client IP\\n| summarize makeset(decodedUriQuery), + makeset(csUserName), makeset(sSiteName), makeset(sPort), makeset(csUserAgent), + makeset(csMethod), makeset(csUriQuery), makeset(scStatusFull), makeset(scStatusFull_Friendly), + makeset(scWin32Status_Hex), makeset(scWin32Status_Friendly), FailedConnectionsCount + = count() by bin(TimeGenerated, timeBin), cIP, Computer, sIP\\n| where FailedConnectionsCount + >= failedThreshold\\n| project TimeGenerated, cIP, set_csUserName, set_decodedUriQuery, + Computer, set_sSiteName, sIP, set_sPort, set_csUserAgent, set_csMethod, set_scStatusFull, + set_scStatusFull_Friendly, set_scWin32Status_Hex, set_scWin32Status_Friendly, + FailedConnectionsCount\\n| order by FailedConnectionsCount\\n| extend timestamp + = TimeGenerated, HostCustomEntity = Computer, IPCustomEntity = cIP\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"High + count of failed attempts from same client IP\",\"description\":\"Identifies + when 20 or more failed attempts from a given client IP in 1 minute occur on + the IIS server.\\nThis could be indicative of an attempted brute force. This + could also simply indicate a misconfigured service or device.\\nRecommendations: + Validate that these are expected connections from the given Client IP. If + the client IP is not recognized, \\npotentially block these connections at + the edge device.\\nIf these are expected connections, verify the credentials + are properly configured on the system, service, application or device \\nthat + is associated with the client IP.\\nReferences:\\nIIS status code mapping: + https://support.microsoft.com/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0\\nWin32 + Status code mapping: https://msdn.microsoft.com/library/cc231199.aspx\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-03-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d9f28fdf-abc8-4f1a-a7e7-1aaec87a2fc5\",\"name\":\"d9f28fdf-abc8-4f1a-a7e7-1aaec87a2fc5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n + \ | where EventID == 4688\\n | where Process =~ \\\"svchost.exe\\\"\\n | + where CommandLine has \\\"-k GPSvcGroup\\\" or CommandLine has \\\"-s gpsvc\\\"\\n + \ | extend timekey = bin(TimeGenerated, 1m)\\n | project timekey, NewProcessId, + Computer\\n | join kind=inner (SecurityEvent\\n | where EventID == 4688\\n + \ | where Process =~ \\\"sdelete.exe\\\" or CommandLine has \\\"sdelete\\\"\\n + \ | where ParentProcessName endswith \\\"svchost.exe\\\"\\n | where CommandLine + has_all (\\\"-s\\\", \\\"-r\\\")\\n | extend newProcess = Process\\n | extend + timekey = bin(TimeGenerated, 1m)\\n ) on $left.NewProcessId == $right.ProcessId, + timekey, Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Account\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1485\"],\"displayName\":\"Sdelete + deployed via GPO and run recursively\",\"description\":\"This query looks + for the Sdelete process being run recursively after being deployed to a host + via GPO. Attackers could use this technique to deploy Sdelete to multiple + host and delete data on them.\",\"lastUpdatedDateUTC\":\"2022-03-01T00:00:00Z\",\"createdDateUTC\":\"2022-03-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5dd76a87-9f87-4576-bab3-268b0e2b338b\",\"name\":\"5dd76a87-9f87-4576-bab3-268b0e2b338b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 5;\\nlet szSharePointFileOperation = \\\"SharePointFileOperation\\\";\\nlet + szOperations = dynamic([\\\"FileDownloaded\\\", \\\"FileUploaded\\\"]);\\nlet + starttime = 14d;\\nlet endtime = 1d;\\nlet historicalActivity =\\nOfficeActivity\\n| + where TimeGenerated between(ago(starttime)..ago(endtime))\\n| where RecordType + =~ szSharePointFileOperation\\n| where Operation in~ (szOperations)\\n| where + isnotempty(UserAgent)\\n| summarize historicalCount = count() by UserAgent, + RecordType, Operation;\\nlet recentActivity = OfficeActivity\\n| where RecordType + =~ szSharePointFileOperation\\n| where Operation in~ (szOperations)\\n| where + TimeGenerated > ago(endtime)\\n| where isnotempty(UserAgent)\\n| summarize + min(Start_Time), max(Start_Time), recentCount = count() by UserAgent, RecordType, + Operation;\\nlet RareUserAgent = recentActivity | join kind = leftanti (historicalActivity) + on UserAgent\\n| order by recentCount desc, UserAgent\\n// More than 5 downloads/uploads + from a new user agent today\\n| where recentCount > threshold;\\nOfficeActivity + \\n| where TimeGenerated > ago(endtime) \\n| where RecordType =~ szSharePointFileOperation + \\n| where Operation in~ (szOperations)\\n| where isnotempty(UserAgent)\\n| + join kind= inner (RareUserAgent)\\non UserAgent, RecordType, Operation \\n| + where Start_Time between(min_Start_Time .. max_Start_Time)\\n| summarize StartTimeUtc + = min(min_Start_Time), EndTimeUtc = max(max_Start_Time) by RecordType, Operation, + UserAgent, UserType, UserId, ClientIP, OfficeWorkload, Site_Url, OfficeObjectId, + UserAgentSeenCount = recentCount\\n| extend timestamp = StartTimeUtc, AccountCustomEntity + = UserId, IPCustomEntity = ClientIP, URLCustomEntity = Site_Url\\n| order + by UserAgentSeenCount desc, UserAgent asc, Operation asc, UserId asc\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Exfiltration\"],\"techniques\":[\"T1030\"],\"displayName\":\"SharePointFileOperation + via devices with previously unseen user agents\",\"description\":\"Identifies + if the number of documents uploaded or downloaded from device(s) associated\\nwith + a previously unseen user agent exceeds a threshold (default is 5).\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-08-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/f80d951a-eddc-4171-b9d0-d616bb83efdc\",\"name\":\"f80d951a-eddc-4171-b9d0-d616bb83efdc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where LoggedByService =~ \\\"Core Directory\\\"\\n| where Category =~ \\\"ApplicationManagement\\\"\\n| + where AADOperationType =~ \\\"Assign\\\"\\n| where ActivityDisplayName =~ + \\\"Add app role assignment to service principal\\\"\\n| mv-expand TargetResources\\n| + mv-expand TargetResources.modifiedProperties\\n| extend displayName_ = tostring(TargetResources_modifiedProperties.displayName)\\n| + where displayName_ =~ \\\"AppRole.Value\\\"\\n| extend AppRole = tostring(parse_json(tostring(TargetResources_modifiedProperties.newValue)))\\n| + where AppRole has \\\"RoleManagement.ReadWrite.Directory\\\"\\n| extend InitiatingApp + = tostring(parse_json(tostring(InitiatedBy.app)).displayName)\\n| extend Initiator + = iif(isnotempty(InitiatingApp), InitiatingApp, tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName))\\n| + extend Target = tostring(parse_json(tostring(TargetResources.modifiedProperties[4].newValue)))\\n| + extend TargetId = tostring(parse_json(tostring(TargetResources.modifiedProperties[3].newValue)))\\n| + project TimeGenerated, OperationName, Initiator, Target, TargetId, Result\\n| + join kind=innerunique (\\n AuditLogs\\n | where LoggedByService =~ \\\"Core + Directory\\\"\\n | where Category =~ \\\"RoleManagement\\\"\\n | where AADOperationType + in (\\\"Assign\\\", \\\"AssignEligibleRole\\\")\\n | where ActivityDisplayName + has_any (\\\"Add eligible member to role\\\", \\\"Add member to role\\\")\\n + \ | mv-expand TargetResources\\n | mv-expand TargetResources.modifiedProperties\\n + \ | extend displayName_ = tostring(TargetResources_modifiedProperties.displayName)\\n + \ | where displayName_ =~ \\\"Role.DisplayName\\\"\\n | extend RoleName = + tostring(parse_json(tostring(TargetResources_modifiedProperties.newValue)))\\n + \ | where RoleName contains \\\"Admin\\\"\\n | extend Initiator = tostring(parse_json(tostring(InitiatedBy.app)).displayName)\\n + \ | extend InitiatorId = tostring(parse_json(tostring(InitiatedBy.app)).servicePrincipalId)\\n + \ | extend TargetUser = tostring(TargetResources.userPrincipalName)\\n | + extend Target = iif(isnotempty(TargetUser), TargetUser, tostring(TargetResources.displayName))\\n + \ | extend TargetType = tostring(TargetResources.type)\\n | extend TargetId + = tostring(TargetResources.id)\\n | project TimeGenerated, OperationName, + \ RoleName, Initiator, InitiatorId, Target, TargetId, TargetType, Result\\n) + on $left.TargetId == $right.InitiatorId\\n| extend TimeRoleMgGrant = TimeGenerated, + TimeAdminPromo = TimeGenerated1, ServicePrincipal = Initiator1, ServicePrincipalId + = InitiatorId,\\n TargetObject = Target1, TargetObjectId = TargetId1, TargetObjectType + = TargetType\\n| where TimeRoleMgGrant < TimeAdminPromo\\n| project TimeRoleMgGrant, + TimeAdminPromo, RoleName, ServicePrincipal, ServicePrincipalId, TargetObject, + TargetObjectId, TargetObjectType\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"ServicePrincipal\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"TargetObject\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"PrivilegeEscalation\",\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Admin + promotion after Role Management Application Permission Grant\",\"description\":\"This + rule looks for a service principal being granted the Microsoft Graph RoleManagement.ReadWrite.Directory + (application) permission before being used to add an Azure AD object or user + account to an Admin directory role (i.e. Global Administrators).\\nThis is + a known attack path that is usually abused when a service principal already + has the AppRoleAssignment.ReadWrite.All permission granted. This permission + Allows an app to manage permission grants for application permissions to any + API.\\nA service principal can promote itself or other service principals + to admin roles (i.e. Global Administrators). This would be considered a privilege + escalation technique.\\nRef : https://docs.microsoft.com/graph/permissions-reference#role-management-permissions, + https://docs.microsoft.com/graph/api/directoryrole-post-members?view=graph-rest-1.0&tabs=http\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-11-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/79f29feb-6a9d-4cdf-baaa-2daf480a5da1\",\"name\":\"79f29feb-6a9d-4cdf-baaa-2daf480a5da1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + timeframe = 1h;\\nlet last1h = CommonSecurityLog \\n| where TimeGenerated + >= ago(timeframe)\\n| where isempty(CommunicationDirection) \\n| where DeviceEventClassID + == \\\"733100\\\"\\n| extend SourceOfDropRateCount = tostring(split(tostring(split(Message, + \\\"]\\\")[0]),\\\"[ \\\")[1])\\n| extend splitMessage = split(Message, \\\".\\\")\\n| + extend DropRate = tostring(split(tostring(splitMessage[0]),\\\"] \\\")[1])\\n| + extend CurrentBurstRate = split(tostring(split(tostring(splitMessage[1]),\\\" + \ \\\")[0]),\\\"is \\\")\\n| extend CurrentBurstRatePerSec = toint(split(tostring(CurrentBurstRate[1]),\\\" + \\\")[0])\\n| extend MaxConfiguredBurstRate = toint(CurrentBurstRate[2])\\n| + extend CurrentAvgRate = split(tostring(split(tostring(splitMessage[1]),\\\" + \ \\\")[1]),\\\"is \\\")\\n| extend CurrentAvgRatePerSec = toint(split(tostring(CurrentAvgRate[1]),\\\" + \\\")[0])\\n| extend MaxConfiguredAvgRate = toint(CurrentAvgRate[2])\\n| extend + CumulativeTotal = toint(split(tostring(split(tostring(splitMessage[1]),\\\" + \ \\\")[2]),\\\"is \\\")[1])\\n| summarize last1hCumTotal = sum(CumulativeTotal), + last1hAvgRatePerSec = avg(CurrentAvgRatePerSec), last1hAvgBurstRatePerSec + = avg(CurrentBurstRatePerSec) by DeviceName, DeviceEventClassID, SourceIP, + SourceOfDropRateCount, DropRate;\\nlet prev6h = CommonSecurityLog \\n| where + TimeGenerated between (ago(6h) .. ago(1h))\\n| where isempty(CommunicationDirection) + \\n| where DeviceEventClassID == \\\"733100\\\"\\n| extend SourceOfDropRateCount + = tostring(split(tostring(split(Message, \\\"]\\\")[0]),\\\"[ \\\")[1])\\n| + extend splitMessage = split(Message, \\\".\\\")\\n| extend DropRate = tostring(split(tostring(splitMessage[0]),\\\"] + \\\")[1])\\n| extend CurrentBurstRate = split(tostring(split(tostring(splitMessage[1]),\\\" + \ \\\")[0]),\\\"is \\\")\\n| extend prevCurrentBurstRatePerSec = toint(split(tostring(CurrentBurstRate[1]),\\\" + \\\")[0])\\n| extend prevMaxConfiguredBurstRate = toint(CurrentBurstRate[2])\\n| + extend CurrentAvgRate = split(tostring(split(tostring(splitMessage[1]),\\\" + \ \\\")[1]),\\\"is \\\")\\n| extend prevCurrentAvgRatePerSec = toint(split(tostring(CurrentAvgRate[1]),\\\" + \\\")[0])\\n| extend prevMaxConfiguredAvgRate = toint(CurrentAvgRate[2])\\n| + extend prevCumulativeTotal = toint(split(tostring(split(tostring(splitMessage[1]),\\\" + \ \\\")[2]),\\\"is \\\")[1])\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated), prev6hCumTotal = sum(prevCumulativeTotal), + prev6hAvgRatePerSec = avg(prevCurrentAvgRatePerSec), prev6hAvgBurstRatePerSec + = avg(prevCurrentBurstRatePerSec) \\nby DeviceName, DeviceEventClassID, SourceIP, + SourceOfDropRateCount, DropRate;\\nlast1h | join (\\n prev6h \\n) on DeviceName, + DeviceEventClassID, SourceIP, SourceOfDropRateCount, DropRate\\n| project + StartTimeUtc, EndTimeUtc, DeviceName, DeviceEventClassID, SourceIP, SourceOfDropRateCount, + DropRate, last1hCumTotal, prev6hCumTotal, prev6hAvgCumTotal = prev6hCumTotal/6, + last1hAvgRatePerSec, prev6hAvgRatePerSec, last1hAvgBurstRatePerSec, prev6hAvgBurstRatePerSec\\n// + Select only events that indicate a doubling of the expected rate in the last + hour over the previous 6 hours\\n| where last1hCumTotal > 2*prev6hAvgCumTotal + or last1hAvgRatePerSec > 2*prev6hAvgRatePerSec or last1hAvgBurstRatePerSec + > 2*prev6hAvgBurstRatePerSec\\n| extend timestamp = StartTimeUtc, IPCustomEntity + = SourceIP, HostCustomEntity = DeviceName\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\",\"Impact\"],\"techniques\":[\"T1046\",\"T1498\"],\"displayName\":\"Cisco + ASA - average attack detection rate increase\",\"description\":\"This will + help you determine if Cisco ASA devices are under heavier attack than normal + over the last hour versus the previous 6 hours based on DeviceEventClassID + 733100\\nReferences: https://www.cisco.com/c/en/us/td/docs/security/asa/syslog/b_syslog/syslogs9.html\\nDetails + on how to further troubleshoot/investigate: https://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/113685-asa-threat-detection.html\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/826bb2f8-7894-4785-9a6b-a8a855d8366f\",\"name\":\"826bb2f8-7894-4785-9a6b-a8a855d8366f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + EventNameList = dynamic([\\\"AttachUserPolicy\\\",\\\"AttachRolePolicy\\\",\\\"AttachGroupPolicy\\\"]);\\nlet + createPolicy = \\\"CreatePolicy\\\";\\nlet timeframe = 1d;\\nlet lookback + = 14d;\\n// Creating Master table with all the events to use with materialize + for better performance\\nlet EventInfo = AWSCloudTrail\\n| where TimeGenerated + >= ago(lookback)\\n| where EventName in (EventNameList) or EventName == createPolicy;\\n//Checking + for Policy creation event with Full Admin Privileges since lookback period.\\nlet + FullAdminPolicyEvents = materialize( EventInfo\\n| where TimeGenerated >= + ago(lookback)\\n| where EventName == createPolicy\\n| extend PolicyName = + tostring(parse_json(RequestParameters).policyName)\\n| extend Statement = + parse_json(tostring((parse_json(RequestParameters).policyDocument))).Statement\\n| + mvexpand Statement\\n| extend Action = parse_json(Statement).Action , Effect + = tostring(parse_json(Statement).Effect), Resource = tostring(parse_json(Statement).Resource)\\n| + mvexpand Action\\n| extend Action = tostring(Action)\\n| where Effect =~ \\\"Allow\\\" + and Action == \\\"*\\\" and Resource == \\\"*\\\"\\n| distinct TimeGenerated, + EventName, PolicyName, SourceIpAddress, UserIdentityArn, UserIdentityUserName\\n| + extend UserIdentityUserName = iff(isnotempty(UserIdentityUserName), UserIdentityUserName, + tostring(split(UserIdentityArn,'/')[-1]))\\n| project-rename StartTime = TimeGenerated + \ );\\nlet PolicyAttach = materialize( EventInfo\\n| where TimeGenerated + >= ago(timeframe)\\n| where EventName in (EventNameList)\\n| extend PolicyName + = tostring(split(tostring(parse_json(RequestParameters).policyArn),\\\"/\\\")[1])\\n| + summarize AttachEventCount=count(), StartTime = min(TimeGenerated), EndTime + = max(TimeGenerated) by EventSource, EventName, UserIdentityType , UserIdentityArn, + SourceIpAddress, UserIdentityUserName = iff(isnotempty(UserIdentityUserName), + \ UserIdentityUserName, tostring(split(UserIdentityArn,'/')[-1])), PolicyName\\n| + extend AttachEvent = pack(\\\"StartTime\\\", StartTime, \\\"EndTime\\\", EndTime, + \\\"EventName\\\", EventName, \\\"UserIdentityType\\\", UserIdentityType, + \\\"UserIdentityArn\\\", UserIdentityArn, \\\"SourceIpAddress\\\", SourceIpAddress, + \\\"UserIdentityUserName\\\", UserIdentityUserName)\\n| project EventSource, + PolicyName, AttachEvent, AttachEventCount\\n);\\n// Joining the list of PolicyNames + and checking if it has been attached to any Roles/Users/Groups.\\n// These + Roles/Users/Groups will be Privileged and can be used by adversaries as pivot + point for privilege escalation via multiple ways.\\nFullAdminPolicyEvents\\n| + join kind=leftouter\\n(\\n PolicyAttach\\n)\\non PolicyName\\n| project-away + PolicyName1\\n| extend timestamp = StartTime, IPCustomEntity = SourceIpAddress, + AccountCustomEntity = UserIdentityUserName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"PrivilegeEscalation\"],\"displayName\":\"Full + Admin policy created and then attached to Roles, Users or Groups\",\"description\":\"Identity + and Access Management (IAM) securely manages access to AWS services and resources. + \\nIdentifies when a policy is created with Full Administrators Access (Allow-Action:*,Resource:*). + \\nThis policy can be attached to role,user or group and may be used by an + adversary to escalate a normal user privileges to an adminsitrative level.\\nAWS + IAM Policy Grammar: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html\\nand + AWS IAM API at https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2020-04-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/34c5aff9-a8c2-4601-9654-c7e46342d03b\",\"name\":\"34c5aff9-a8c2-4601-9654-c7e46342d03b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + starttime = 14d;\\nlet timeframe = 1d;\\nlet scorethreshold = 3;\\nlet baselinethreshold + = 5;\\nlet aadFunc = (tableName:string){\\n IdentityInfo\\n | where + TimeGenerated > ago(starttime)\\n | summarize arg_max(TimeGenerated, *) + by AccountUPN\\n | mv-expand AssignedRoles\\n | where AssignedRoles + matches regex 'Admin'\\n | summarize Roles = make_list(AssignedRoles) by + AccountUPN = tolower(AccountUPN)\\n | join kind=inner (\\n table(tableName)\\n + \ | where TimeGenerated between (startofday(ago(starttime))..startofday(now()))\\n + \ | where ResultType != 0\\n | extend UserPrincipalName = tolower(UserPrincipalName)\\n + \ ) on $left.AccountUPN == $right.UserPrincipalName\\n | extend timestamp + = TimeGenerated, AccountCustomEntity = UserPrincipalName, Roles = tostring(Roles)\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nlet + allSignins = union isfuzzy=true aadSignin, aadNonInt;\\nlet TimeSeriesAlerts + = \\n allSignins\\n | make-series HourlyCount=count() on TimeGenerated + from startofday(ago(starttime)) to startofday(now()) step 1h by UserPrincipalName, + Roles\\n | extend (anomalies, score, baseline) = series_decompose_anomalies(HourlyCount, + scorethreshold, -1, 'linefit')\\n | mv-expand HourlyCount to typeof(double), + TimeGenerated to typeof(datetime), anomalies to typeof(double), score to typeof(double), + baseline to typeof(long)\\n // Filtering low count events per baselinethreshold\\n + \ | where anomalies > 0 and baseline > baselinethreshold\\n | extend + AnomalyHour = TimeGenerated\\n | project UserPrincipalName, Roles, AnomalyHour, + TimeGenerated, HourlyCount, baseline, anomalies, score;\\n// Filter the alerts + for specified timeframe\\nTimeSeriesAlerts\\n| where TimeGenerated > startofday(ago(timeframe))\\n| + join kind=inner ( \\n allSignins\\n | where TimeGenerated > startofday(ago(timeframe))\\n + \ // create a new column and round to hour\\n | extend DateHour = bin(TimeGenerated, + 1h)\\n | summarize PartialFailedSignins = count(), LatestAnomalyTime = + arg_max(TimeGenerated, *) by bin(TimeGenerated, 1h), OperationName, Category, + ResultType, ResultDescription, UserPrincipalName, Roles, UserDisplayName, + AppDisplayName, ClientAppUsed, IPAddress, ResourceDisplayName\\n) on UserPrincipalName, + $left.AnomalyHour == $right.DateHour\\n| project LatestAnomalyTime, OperationName, + Category, UserPrincipalName, Roles = todynamic(Roles), UserDisplayName, ResultType, + ResultDescription, AppDisplayName, ClientAppUsed, UserAgent, IPAddress, Location, + AuthenticationRequirement, ConditionalAccessStatus, ResourceDisplayName, PartialFailedSignins, + TotalFailedSignins = HourlyCount, baseline, anomalies, score\\n| extend timestamp + = LatestAnomalyTime, IPCustomEntity = IPAddress, AccountCustomEntity = UserPrincipalName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Privileged + Accounts - Sign in Failure Spikes\",\"description\":\" Identifies spike in + failed sign-ins from Privileged accounts. Privileged accounts list can be + based on IdentityInfo UEBA table or built-in watchlist.\\nSpike is determined + based on Time series anomaly which will look at historical baseline values.\\nRef + : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-accounts#things-to-monitor\",\"lastUpdatedDateUTC\":\"2022-01-25T00:00:00Z\",\"createdDateUTC\":\"2021-10-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/106813db-679e-4382-a51b-1bfc463befc3\",\"name\":\"106813db-679e-4382-a51b-1bfc463befc3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(Url)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n CommonSecurityLog\\n + \ | extend IngestionTime = ingestion_time()\\n | where IngestionTime > ago(dt_lookBack)\\n + \ // Select on Palo Alto logs\\n | where DeviceVendor =~ \\\"Palo Alto Networks\\\"\\n + \ | where DeviceEventClassID =~ 'url'\\n //Uncomment the line below to only + alert on allowed connections\\n //| where DeviceAction !~ \\\"block-url\\\"\\n + \ //Select logs where URL data is populated\\n | extend PA_Url = columnifexists(\\\"RequestURL\\\", + \\\"None\\\")\\n | extend PA_Url = iif(isempty(PA_Url), extract(\\\"([^\\\\\\\"]+)\\\", + 1, tolower(AdditionalExtensions)), trim('\\\"', PA_Url))\\n | extend PA_Url + = iif(PA_Url !startswith \\\"http://\\\" and ApplicationProtocol !~ \\\"ssl\\\", + strcat('http://', PA_Url), iif(PA_Url !startswith \\\"https://\\\" and ApplicationProtocol + =~ \\\"ssl\\\", strcat('https://', PA_Url), PA_Url))\\n | where isnotempty(PA_Url)\\n + \ | extend CommonSecurityLog_TimeGenerated = TimeGenerated\\n) on $left.Url + == $right.PA_Url\\n| where CommonSecurityLog_TimeGenerated < ExpirationDateTime\\n| + summarize CommonSecurityLog_TimeGenerated = arg_max(CommonSecurityLog_TimeGenerated, + *) by IndicatorId, PA_Url\\n| project CommonSecurityLog_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, + DeviceAction, SourceIP, PA_Url, DeviceName\\n| extend timestamp = CommonSecurityLog_TimeGenerated, + IPCustomEntity = SourceIP, HostCustomEntity = DeviceName, URLCustomEntity + = PA_Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.0\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map URL entity to PaloAlto data\",\"description\":\"Identifies a match in + PaloAlto data from any URL IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/884ead54-cb3f-4676-a1eb-b26532d6cbfd\",\"name\":\"884ead54-cb3f-4676-a1eb-b26532d6cbfd\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Low\",\"query\":\"let + SensitiveOperationList = dynamic(\\n[\\\"VaultDelete\\\", \\\"KeyDelete\\\", + \\\"SecretDelete\\\", \\\"SecretPurge\\\", \\\"KeyPurge\\\", \\\"SecretBackup\\\", + \\\"KeyBackup\\\"]);\\nAzureDiagnostics\\n| extend ResultType = columnifexists(\\\"ResultType\\\", + \\\"NoResultType\\\")\\n| extend requestUri_s = columnifexists(\\\"requestUri_s\\\", + \\\"None\\\"), identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + = columnifexists(\\\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\\\", + \\\"None\\\")\\n| extend id_s = columnifexists(\\\"id_s\\\", \\\"None\\\"), + CallerIPAddress = columnifexists(\\\"CallerIPAddress\\\", \\\"None\\\"), clientInfo_s + = columnifexists(\\\"clientInfo_s\\\", \\\"None\\\")\\n| where ResultType + !~ \\\"None\\\" and isnotempty(ResultType)\\n| where identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + !~ \\\"None\\\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\\n| + where id_s !~ \\\"None\\\" and isnotempty(id_s)\\n| where CallerIPAddress + !~ \\\"None\\\" and isnotempty(CallerIPAddress)\\n| where clientInfo_s !~ + \\\"None\\\" and isnotempty(clientInfo_s)\\n| where requestUri_s !~ \\\"None\\\" + and isnotempty(requestUri_s)\\n| where ResourceType =~ \\\"VAULTS\\\" and + ResultType =~ \\\"Success\\\"\\n| where OperationName in~ (SensitiveOperationList)\\n| + summarize EventCount=count(), StartTimeUtc=min(TimeGenerated), EndTimeUtc=max(TimeGenerated), + TimeTriggered=makelist(TimeGenerated),OperationNameList=make_set(OperationName), + RequestURLList=make_set(requestUri_s), CallerIPList = make_set(CallerIPAddress), + \ CallerIPMax= arg_max(CallerIPAddress,*) by ResourceType, ResultType, Resource, + id_s, identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, + clientInfo_s\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"CallerIPMax\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1485\"],\"displayName\":\"NRT + Sensitive Azure Key Vault operations\",\"description\":\"Identifies when sensitive + Azure Key Vault operations are used. This includes: VaultDelete, KeyDelete, + SecretDelete, SecretPurge, KeyPurge, SecretBackup, KeyBackup.\\nAny Backup + operations should match with expected scheduled backup activity.\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2019-07-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureKeyVault\",\"dataTypes\":[\"KeyVaultData\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/95dc4ae3-e0f2-48bd-b996-cdd22b90f9af\",\"name\":\"95dc4ae3-e0f2-48bd-b996-cdd22b90f9af\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"(union + isfuzzy=true\\n(\\nAuditLogs\\n| where OperationName =~ \\\"Set federation + settings on domain\\\"\\n//| where Result =~ \\\"success\\\" // commenting + out, as it may be interesting to capture failed attempts\\n| mv-expand TargetResources\\n| + extend modifiedProperties = parse_json(TargetResources).modifiedProperties\\n| + mv-expand modifiedProperties\\n| extend targetDisplayName = tostring(parse_json(modifiedProperties).displayName)\\n| + mv-expand AdditionalDetails\\n),\\n(\\nAuditLogs\\n| where OperationName =~ + \\\"Set domain authentication\\\"\\n//| where Result =~ \\\"success\\\" // + commenting out, as it may be interesting to capture failed attempts\\n| mv-expand + TargetResources\\n| extend modifiedProperties = parse_json(TargetResources).modifiedProperties\\n| + mv-expand modifiedProperties\\n| extend targetDisplayName = tostring(parse_json(modifiedProperties).displayName), + NewDomainValue=tostring(parse_json(modifiedProperties).newValue)\\n| where + NewDomainValue has \\\"Federated\\\"\\n)\\n)\\n| extend UserAgent = iff(AdditionalDetails.key + == \\\"User-Agent\\\",tostring(AdditionalDetails.value),\\\"\\\")\\n| extend + InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.app.displayName))\\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\\n| + project-reorder TimeGenerated, OperationName, InitiatingUserOrApp, AADOperationType, + targetDisplayName, Result, InitiatingIpAddress, UserAgent, CorrelationId, + TenantId, AADTenantId\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = InitiatingUserOrApp, IPCustomEntity = InitiatingIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"displayName\":\"Modified + domain federation trust settings\",\"description\":\"This will alert when + a user or application modifies the federation settings on the domain or Update + domain authentication from Managed to Federated.\\nFor example, this alert + will trigger when a new Active Directory Federated Service (ADFS) TrustedRealm + object, such as a signing certificate, is added to the domain.\\nModification + to domain federation settings should be rare. Confirm the added or modified + target domain/URL is legitimate administrator behavior.\\nTo understand why + an authorized user may update settings for a federated domain in Office 365, + Azure, or Intune, see: https://docs.microsoft.com/office365/troubleshoot/active-directory/update-federated-domain-office-365.\\nFor + details on security realms that accept security tokens, see the ADFS Proxy + Protocol (MS-ADFSPP) specification: https://docs.microsoft.com/openspecs/windows_protocols/ms-adfspp/e7b9ea73-1980-4318-96a6-da559486664b.\\nFor + further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2020-12-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ac891683-53c3-4f86-86b4-c361708e2b2b\",\"name\":\"ac891683-53c3-4f86-86b4-c361708e2b2b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"// + Allowlisted UPNs should likely stay empty\\nlet AllowlistedUpns = datatable(UPN:string)['foo@bar.com', + 'test@foo.com'];\\n// Operation Name parts that will alert\\nlet HasAnyBlocklist + = datatable(OperationNamePart:string)['Security.','Project.','AuditLog.','Extension.'];\\n// + Distinct Operation Names that will flag\\nlet HasExactBlocklist = datatable(OperationName:string)['Group.UpdateGroupMembership.Add','Library.ServiceConnectionExecuted','Pipelines.PipelineModified',\\n'Release.ReleasePipelineModified', + 'Git.RefUpdatePoliciesBypassed'];\\nAzureDevOpsAuditing\\n| where AuthenticationMechanism + startswith \\\"PAT\\\" and (OperationName has_any (HasAnyBlocklist) or OperationName + in (HasExactBlocklist))\\n and ActorUPN !in (AllowlistedUpns)\\n| project + TimeGenerated, AuthenticationMechanism, ProjectName, ActorUPN, ActorDisplayName, + IpAddress, UserAgent, OperationName, Details, Data\\n| extend timestamp = + TimeGenerated, AccountCustomEntity = ActorUPN, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Execution\",\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"Azure + DevOps Personal Access Token (PAT) misuse\",\"description\":\"This Alert detects + whenever a PAT is used in ways that PATs are not normally used. May require + an allow list and baselining.\\nReference - https://docs.microsoft.com/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page\\nUse + this query for baselining:\\nAzureDevOpsAuditing\\n| distinct OperationName\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2020-06-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/acfdee3f-b794-404a-aeba-ef6a1fa08ad1\",\"name\":\"acfdee3f-b794-404a-aeba-ef6a1fa08ad1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P7D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + lookback = 14d;\\nlet timewindow = 7d;\\nAzureDevOpsAuditing\\n| where TimeGenerated + > ago(lookback)\\n| where OperationName =~ \\\"Library.AgentPoolCreated\\\"\\n| + extend AgentCloudId = tostring(Data.AgentCloudId)\\n| extend PoolType = iif(isnotempty(AgentCloudId), + \\\"Azure VMs\\\", \\\"Self Hosted\\\")\\n// Comment this line out to include + cloud pools as well\\n| where PoolType == \\\"Self Hosted\\\"\\n| extend AgentPoolName + = tostring(Data.AgentPoolName)\\n| extend AgentPoolId = tostring(Data.AgentPoolId)\\n| + extend IsHosted = tostring(Data.IsHosted)\\n| extend IsLegacy = tostring(Data.IsLegacy)\\n| + extend timekey = bin(TimeGenerated, timewindow)\\n// Join only with pools + deleted in the same window\\n| join (AzureDevOpsAuditing\\n| where TimeGenerated + > ago(lookback)\\n| where OperationName =~ \\\"Library.AgentPoolDeleted\\\"\\n| + extend AgentPoolName = tostring(Data.AgentPoolName)\\n| extend AgentPoolId + = tostring(Data.AgentPoolId)\\n| extend timekey = bin(TimeGenerated, timewindow)) + on AgentPoolId, timekey\\n| project-reorder TimeGenerated, ActorUPN, UserAgent, + IpAddress, AuthenticationMechanism, OperationName, AgentPoolName, IsHosted, + IsLegacy, Data\\n| extend timestamp = TimeGenerated, AccountCustomEntity = + ActorUPN, IPCustomEntity = IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1578\"],\"displayName\":\"Azure + DevOps Agent Pool Created Then Deleted\",\"description\":\"As well as adding + build agents to an existing pool to execute malicious activity within a pipeline, + an attacker could create a complete new agent pool and use this for execution.\\nAzure + DevOps allows for the creation of agent pools with Azure hosted infrastructure + or self-hosted infrastructure. Given the additional customizability of self-hosted + agents this \\ndetection focuses on the creation of new self-hosted pools. + To further reduce false positive rates the detection looks for pools created + and deleted relatively quickly (within 7 days by default), \\nas an attacker + is likely to remove a malicious pool once used in order to reduce/remove evidence + of their activity.\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-02-05T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/af7fd11a-f305-44e1-8f46-f31580a15eab\",\"name\":\"af7fd11a-f305-44e1-8f46-f31580a15eab\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":\"app@sharepoint,user@example.com\",\"dataType\":\"string\",\"name\":\"User + allowlist\",\"description\":\"Enter comma separated userids to be suppressed + while triggering anomalies. This should be within double quotes and is case + insensitive, example: \\\"user@exmaple.com, app@sharepoint\\\"\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"10\",\"maximum\":\"100\",\"value\":\"25\",\"name\":\"Number + of distinct files dowloaded per day\",\"description\":\"Suppress anomalies + when daily number of distinct files downloaded per day is less than the chosen + value\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"},{\"minimum\":\"2\",\"maximum\":\"10\",\"value\":\"3\",\"name\":\"Number + of standard deviations\",\"description\":\"Triggers anomalies when number + of standard deviations is greater than the chosen value\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1074\"],\"displayName\":\"(Preview) + Potential data staging\",\"description\":\"The algorithm compares the downloads + of distinct files on a per user basis from the previous week with the downloads + for the current day for each user and \\nan anomaly is triggered when the + number of downloads of distinct files exceeds the configured number of standard + deviations above the mean. \\nCurrently the algorithm only analyze commonly + seen files during exfiltration of type documents, images, videos and archives + with the extensions\\n[\\\"doc\\\",\\\"docx\\\",\\\"xls\\\",\\\"xlsx\\\",\\\"xlsm\\\",\\\"ppt\\\",\\\"pptx\\\",\\\"one\\\",\\\"pdf\\\",\\\"zip\\\",\\\"rar\\\",\\\"bmp\\\",\\\"jpg\\\",\\\"mp3\\\",\\\"mp4\\\",\\\"mov\\\"].\",\"lastUpdatedDateUTC\":\"2021-11-19T00:00:00Z\",\"createdDateUTC\":\"2021-08-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity + (Exchange)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/26a3b261-b997-4374-94ea-6c37f67f4f39\",\"name\":\"26a3b261-b997-4374-94ea-6c37f67f4f39\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = dynamic([\\\"asyspy256.ddns.net\\\",\\\"hotkillmail9sddcc.ddns.net\\\",\\\"rosaf112.ddns.net\\\",\\\"cvdfhjh1231.myftp.biz\\\",\\\"sz2016rose.ddns.net\\\",\\\"dffwescwer4325.myftp.biz\\\",\\\"cvdfhjh1231.ddns.net\\\"]);\\nlet + SHA1Hash = dynamic ([\\\"53a44c2396d15c3a03723fa5e5db54cafd527635\\\", \\\"9c5e496921e3bc882dc40694f1dcc3746a75db19\\\", + \\\"aeb573accfd95758550cf30bf04f389a92922844\\\", \\\"79ef78a797403a4ed1a616c68e07fff868a8650a\\\", + \\\"4f6f38b4cec35e895d91c052b1f5a83d665c2196\\\", \\\"1e8c2cac2e4ce7cbd33c3858eb2e24531cb8a84d\\\", + \\\"e841a63e47361a572db9a7334af459ddca11347a\\\", \\\"c28f606df28a9bc8df75a4d5e5837fc5522dd34d\\\", + \\\"2e94b305d6812a9f96e6781c888e48c7fb157b6b\\\", \\\"dd44133716b8a241957b912fa6a02efde3ce3025\\\", + \\\"8793bf166cb89eb55f0593404e4e933ab605e803\\\", \\\"a39b57032dbb2335499a51e13470a7cd5d86b138\\\", + \\\"41cc2b15c662bc001c0eb92f6cc222934f0beeea\\\", \\\"d209430d6af54792371174e70e27dd11d3def7a7\\\", + \\\"1c6452026c56efd2c94cea7e0f671eb55515edb0\\\", \\\"c6b41d3afdcdcaf9f442bbe772f5da871801fd5a\\\", + \\\"4923d460e22fbbf165bbbaba168e5a46b8157d9f\\\", \\\"f201504bd96e81d0d350c3a8332593ee1c9e09de\\\", + \\\"ddd2db1127632a2a52943a2fe516a2e7d05d70d2\\\"]);\\nlet SHA256Hash = dynamic + ([\\\"9ae7c4a4e1cfe9b505c3a47e66551eb1357affee65bfefb0109d02f4e97c06dd\\\", + \\\"7772d624e1aed327abcd24ce2068063da0e31bb1d5d3bf2841fc977e198c6c5b\\\", + \\\"657fc7e6447e0065d488a7db2caab13071e44741875044f9024ca843fe4e86b5\\\", + \\\"2ef157a97e28574356e1d871abf75deca7d7a1ea662f38b577a06dd039dbae29\\\", + \\\"52fd7b90d7144ac448af4008be639d4d45c252e51823f4311011af3207a5fc77\\\", + \\\"a370e47cb97b35f1ae6590d14ada7561d22b4a73be0cb6df7e851d85054b1ac3\\\", + \\\"5bf80b871278a29f356bd42af1e35428aead20cd90b0c7642247afcaaa95b022\\\", + \\\"6f690ccfd54c2b02f0c3cb89c938162c10cbeee693286e809579c540b07ed883\\\", + \\\"3c884f776fbd16597c072afd81029e8764dd57ee79d798829ca111f5e170bd8e\\\", + \\\"1922a419f57afb351b58330ed456143cc8de8b3ebcbd236d26a219b03b3464d7\\\", + \\\"fe0e4ef832b62d49b43433e10c47dc51072959af93963c790892efc20ec422f1\\\", + \\\"7ce9e1c5562c8a5c93878629a47fe6071a35d604ed57a8f918f3eadf82c11a9c\\\", + \\\"178d5ee8c04401d332af331087a80fb4e5e2937edfba7266f9be34a5029b6945\\\", + \\\"51f70956fa8c487784fd21ab795f6ba2199b5c2d346acdeef1de0318a4c729d9\\\", + \\\"889bca95f1a69e94aaade1e959ed0d3620531dc0fc563be9a8decf41899b4d79\\\", + \\\"332ddaa00e2eb862742cb8d7e24ce52a5d38ffb22f6c8bd51162bd35e84d7ddf\\\", + \\\"44bcf82fa536318622798504e8369e9dcdb32686b95fcb44579f0b4efa79df08\\\", + \\\"63552772fdd8c947712a2cff00dfe25c7a34133716784b6d486227384f8cf3ef\\\", + \\\"056744a3c371b5938d63c396fe094afce8fb153796a65afa5103e1bffd7ca070\\\"]);\\nlet + SigNames = dynamic([\\\"TrojanDropper:Win32/BlackMould.A!dha\\\", \\\"Trojan:Win32/BlackMould.B!dha\\\", + \\\"Trojan:Win32/QuarkBandit.A!dha\\\", \\\"Trojan:Win32/Sidelod.A!dha\\\"]);\\n(union + isfuzzy=true\\n(CommonSecurityLog \\n| parse Message with * '(' DNSName ')' + * \\n| where isnotempty(FileHash)\\n| where FileHash in (SHA256Hash) or DNSName + in~ (DomainNames)\\n| extend Account = SourceUserID, Computer = DeviceName, + IPAddress = SourceIP\\n),\\n( _Im_Dns(domain_has_any=DomainNames)\\n| extend + DNSName = DnsQuery\\n| extend IPAddress = SrcIpAddr\\n),\\n(VMConnection \\n| + parse RemoteDnsCanonicalNames with * '[\\\"' DNSName '\\\"]' *\\n| where isnotempty(DNSName)\\n| + where DNSName in~ (DomainNames)\\n| extend IPAddress = RemoteIp\\n),\\n(Event\\n//This + query uses sysmon data depending on table name used this may need updataing\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| extend Hashes = EventDetail.[16].[\\\"#text\\\"]\\n| + parse Hashes with * 'SHA1=' SHA1 ',' * \\n| where isnotempty(Hashes)\\n| where + Hashes in (SHA1Hash) \\n| extend Account = UserName\\n),\\n(SecurityAlert\\n| + where ProductName == \\\"Microsoft Defender Advanced Threat Protection\\\"\\n| + extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\\n| + where isnotempty(ThreatName)\\n| where ThreatName has_any (SigNames)\\n| extend + Computer = tostring(parse_json(Entities)[0].HostName)\\n),\\n(AzureDiagnostics + \\n| where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (DomainNames) \\n| extend DNSName = DestinationHost + \\n| extend IPAddress = SourceHost\\n)\\n)\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity + = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.5.1\",\"tactics\":[\"CommandAndControl\",\"CredentialAccess\"],\"displayName\":\"Known + GALLIUM domains and hashes\",\"description\":\"GALLIUM command and control + domains and hash values for tools and malware used by GALLIUM. \\n Matches + domain name IOCs related to the GALLIUM activity group with CommonSecurityLog, + DnsEvents, VMConnection and SecurityEvents dataTypes.\\n References: https://www.microsoft.com/security/blog/2019/12/12/gallium-targeting-global-telecom/ + \",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2019-12-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/52aec824-96c1-4a03-8e44-bb70532e6cea\",\"name\":\"52aec824-96c1-4a03-8e44-bb70532e6cea\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"SecurityEvent\\n| + where EventID == 5136 and EventData contains \\\"CN=AdminSDHolder,CN=System\\\"\\n| + parse EventData with * 'ObjectDN\\\">' ObjectDN \\\"<\\\" *\\n| summarize + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by Computer, + SubjectAccount, SubjectUserSid, SubjectLogonId, ObjectDN\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"SubjectAccount\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1078\"],\"displayName\":\"AdminSDHolder + Modifications\",\"description\":\"This query detects modification in the AdminSDHolder + \ in the Active Directory which could indicate an attempt for persistence. + \\nAdminSDHolder Modification is a persistence technique in which an attacker + abuses the SDProp process in Active Directory to establish a persistent backdoor + to Active Directory.\\nThis query searches for the event id 5136 where the + Object DN is AdminSDHolder.\\nRef: https://attack.stealthbits.com/adminsdholder-modification-ad-persistence\",\"lastUpdatedDateUTC\":\"2022-01-20T00:00:00Z\",\"createdDateUTC\":\"2021-12-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8540c842-5bbc-4a24-9fb2-a836c0e55a51\",\"name\":\"8540c842-5bbc-4a24-9fb2-a836c0e55a51\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where OperationName =~ \\\"Set federation settings on domain\\\" or OperationName + =~ \\\"Set domain authentication\\\"\\n//| where Result =~ \\\"success\\\" + \ // commenting out, as it may be interesting to capture failed attempts\\n| + mv-expand TargetResources\\n| extend modifiedProperties = parse_json(TargetResources).modifiedProperties\\n| + mv-expand modifiedProperties\\n| extend targetDisplayName = tostring(parse_json(modifiedProperties).displayName), + NewDomainValue=tostring(parse_json(modifiedProperties).newValue)\\n| extend + Federated = iif(OperationName =~ \\\"Set domain authentication\\\", iif(NewDomainValue + has \\\"Federated\\\", True, False), True)\\n| where Federated == True\\n| + mv-expand AdditionalDetails\\n| extend UserAgent = iff(AdditionalDetails.key + == \\\"User-Agent\\\",tostring(AdditionalDetails.value),\\\"\\\")\\n| extend + InitiatingUserOrApp = iff(isnotempty(InitiatedBy.user.userPrincipalName),tostring(InitiatedBy.user.userPrincipalName), + tostring(InitiatedBy.app.displayName))\\n| extend InitiatingIpAddress = iff(isnotempty(InitiatedBy.user.ipAddress), + tostring(InitiatedBy.user.ipAddress), tostring(InitiatedBy.app.ipAddress))\\n| + project-reorder TimeGenerated, OperationName, InitiatingUserOrApp, AADOperationType, + targetDisplayName, Result, InitiatingIpAddress, UserAgent, CorrelationId, + TenantId, AADTenantId\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"InitiatingUserOrApp\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"InitiatingIpAddress\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"displayName\":\"NRT + Modified domain federation trust settings\",\"description\":\"This will alert + when a user or application modifies the federation settings on the domain + or Update domain authentication from Managed to Federated.\\nFor example, + this alert will trigger when a new Active Directory Federated Service (ADFS) + TrustedRealm object, such as a signing certificate, is added to the domain.\\nModification + to domain federation settings should be rare. Confirm the added or modified + target domain/URL is legitimate administrator behavior.\\nTo understand why + an authorized user may update settings for a federated domain in Office 365, + Azure, or Intune, see: https://docs.microsoft.com/office365/troubleshoot/active-directory/update-federated-domain-office-365.\\nFor + details on security realms that accept security tokens, see the ADFS Proxy + Protocol (MS-ADFSPP) specification: https://docs.microsoft.com/openspecs/windows_protocols/ms-adfspp/e7b9ea73-1980-4318-96a6-da559486664b.\\nFor + further information on AuditLogs please see https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities.\",\"lastUpdatedDateUTC\":\"2022-02-07T00:00:00Z\",\"createdDateUTC\":\"2020-12-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/327cd4ed-ca42-454b-887c-54e1c91363c6\",\"name\":\"327cd4ed-ca42-454b-887c-54e1c91363c6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Microsoft + Defender Advanced Threat Protection\",\"displayName\":\"Create incidents based + on Microsoft Defender for Endpoint alerts\",\"description\":\"Create incidents + based on all alerts generated in Microsoft Defender for Endpoint\",\"lastUpdatedDateUTC\":\"2019-10-24T00:00:00Z\",\"createdDateUTC\":\"2019-10-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftDefenderAdvancedThreatProtection\",\"dataTypes\":[\"SecurityAlert + (MDATP)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0b9ae89d-8cad-461c-808f-0494f70ad5c4\",\"name\":\"0b9ae89d-8cad-461c-808f-0494f70ad5c4\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + PerUserThreshold = 5;\\nlet TotalThreshold = 100;\\nlet action = dynamic([\\\"change\\\", + \\\"changed\\\", \\\"reset\\\"]);\\nlet pWord = dynamic([\\\"password\\\", + \\\"credentials\\\"]);\\nlet PasswordResetMultiDataSource =\\n(union isfuzzy=true\\n(//Password + reset events\\n//4723: An attempt was made to change an account's password\\n//4724: + An attempt was made to reset an accounts password\\nSecurityEvent\\n| where + EventID in (\\\"4723\\\",\\\"4724\\\")\\n| project TimeGenerated, Computer, + AccountType, Account, Type, TargetUserName),\\n(//Password reset events\\n//4723: + An attempt was made to change an account's password\\n//4724: An attempt was + made to reset an accounts password\\nWindowsEvent\\n| where EventID in (\\\"4723\\\",\\\"4724\\\")\\n| + extend SubjectUserSid = tostring(EventData.SubjectUserSid)\\n| extend TargetUserName + = tostring(EventData.TargetUserName)\\n| extend Account = strcat(tostring(EventData.SubjectDomainName),\\\"\\\\\\\\\\\", + tostring(EventData.SubjectUserName))\\n| extend AccountType=case(Account endswith + \\\"$\\\" or SubjectUserSid in (\\\"S-1-5-18\\\", \\\"S-1-5-19\\\", \\\"S-1-5-20\\\"), + \\\"Machine\\\", isempty(SubjectUserSid), \\\"\\\", \\\"User\\\")\\n| project + TimeGenerated, Computer, AccountType, Account, Type, TargetUserName),\\n(//Azure + Active Directory Password reset events\\nAuditLogs\\n| where OperationName + has_any (pWord) and OperationName has_any (action) and Result =~ \\\"success\\\"\\n| + extend AccountType = tostring(TargetResources[0].type), Account = tostring(TargetResources[0].userPrincipalName), + \\nTargetUserName = tolower(tostring(TargetResources[0].displayName))\\n| + project TimeGenerated, AccountType, Account, Computer = \\\"\\\", Type),\\n(//OfficeActive + ActiveDirectory Password reset events\\nOfficeActivity\\n| where OfficeWorkload + == \\\"AzureActiveDirectory\\\" \\n| where (ExtendedProperties has_any (pWord) + or ModifiedProperties has_any (pWord)) and (ExtendedProperties has_any (action) + or ModifiedProperties has_any (action))\\n| extend AccountType = UserType, + Account = OfficeObjectId \\n| project TimeGenerated, AccountType, Account, + Type, Computer = \\\"\\\"),\\n(// Unix syslog password reset events\\nSyslog\\n| + where Facility in (\\\"auth\\\",\\\"authpriv\\\")\\n| where SyslogMessage + has_any (pWord) and SyslogMessage has_any (action)\\n| extend AccountType + = iif(SyslogMessage contains \\\"root\\\", \\\"Root\\\", \\\"Non-Root\\\")\\n| + where SyslogMessage matches regex \\\".*password changed for.*\\\"\\n| parse + SyslogMessage with * \\\"password changed for\\\" Account\\n| project TimeGenerated, + AccountType, Account, Computer = HostName, Type)\\n);\\nlet pwrmd = PasswordResetMultiDataSource\\n| + project TimeGenerated, Computer, AccountType, Account, Type, TargetUserName;\\n(union + isfuzzy=true \\n(pwrmd\\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc + = max(TimeGenerated), Computerlist = make_set(Computer, 25), AccountType = + make_set(AccountType, 25), Computer = arg_max(Computer , TimeGenerated), TargetUserList + = make_set(TargetUserName, 25), TargetUserName = arg_max(TargetUserName, TimeGenerated), + Total=count() by Account, Type\\n| where Total > PerUserThreshold\\n| extend + ResetPivot = \\\"PerUserReset\\\"), \\n(pwrmd\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), ComputerList = make_set(Computer, + 25), AccountList = make_set(Account, 25), AccountType = make_set(AccountType, + 25), Computer = arg_max(Computer , TimeGenerated), TargetUserList = make_set(TargetUserName, + 25), TargetUserName = arg_max(TargetUserName, TimeGenerated), Total=count() + by Type\\n| where Total > TotalThreshold\\n| extend ResetPivot = \\\"TotalUserReset\\\")\\n)\\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = Account, HostCustomEntity + = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"TargetUserName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"2.1.1\",\"tactics\":[\"InitialAccess\",\"CredentialAccess\"],\"techniques\":[\"T1078\",\"T1110\"],\"displayName\":\"Multiple + Password Reset by user\",\"description\":\"This query will determine multiple + password resets by user across multiple data sources. \\nAccount manipulation + including password reset may aid adversaries in maintaining access to credentials + \\nand certain permission levels within an environment.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-09-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c5644575-4982-4a07-8884-b11ec2866dc3\",\"name\":\"c5644575-4982-4a07-8884-b11ec2866dc3\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":\"srcdomain1\\\\account1, + srcdomain1\\\\account1\",\"dataType\":\"string\",\"name\":\"Source user allowlist\",\"description\":\"Enter + comma separated source usernames to be suppressed while triggering anomalies. + This should be within double quotes and is case sensitive, example: \\\"srcdomain1\\\\\\\\account1, + srcdomain2\\\\\\\\account2\\\"\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"},{\"prioritize\":null,\"exclude\":\"account1, + account2\",\"dataType\":\"string\",\"name\":\"Destination user allowlist\",\"description\":\"Enter + comma separated destination usernames to be suppressed while triggering anomalies. + This should be within double quotes and is case sensitive, example: \\\"account1, + account2\\\"\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":null,\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1136\"],\"displayName\":\"(Preview) + Anomalous local account creation\",\"description\":\"This algorithm is to + detect anomalous local account creation on windows systems. Adversaries may + create local accounts to maintain access to victim systems.\\nThis algorithm + analyzes historical local account creation activity (14 days) by users and + compare with current day to find similar activity from the users who were + not \\npreviously seen in historical activity. You can further customize the + allowlist to filter known users from triggering this anomaly.\",\"lastUpdatedDateUTC\":\"2022-03-01T00:00:00Z\",\"createdDateUTC\":\"2021-09-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d804b39c-03a4-417c-a949-bdbf21fa3305\",\"name\":\"d804b39c-03a4-417c-a949-bdbf21fa3305\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + iocs = externaldata(DateAdded:string,FirstSeen:string,IoC:string,Type:string,TLP:string)\\n[@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/MSTICIoCs-ExchangeServerVulnerabilitiesDisclosedMarch2021.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet file_paths = (iocs + | where Type =~ \\\"filepath\\\" | project IoC);\\nlet sha256s = (iocs | where + Type =~ \\\"sha256\\\" | project IoC);\\nlet ips = (iocs | where Type =~ \\\"ip\\\" + | project IoC);\\nlet domains = (iocs | where Type =~ \\\"domainname\\\" | + project IoC);\\nlet dyndomains = todynamic(toscalar((domains | summarize make_set(IoC))));\\nunion + isfuzzy=true\\n(SecurityEvent\\n| where EventID == 4663\\n| where ObjectName + in (file_paths)\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = Account, HostCustomEntity = Computer\\n),\\n(WindowsEvent\\n| where EventID + == 4663 and EventData has_any (file_paths)\\n| extend ObjectName = tostring(EventData.ObjectName) + \\n| where ObjectName in (file_paths)\\n| extend Account = strcat(tostring(EventData.SubjectDomainName), + \\\"\\\\\\\\\\\", tostring(EventData.SubjectUserName))\\n| extend timestamp + = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity = Computer\\n),\\n(imFileEvent\\n| + where TargetFileName in (file_paths)\\n or\\n TargetFileSHA256 in (sha256s)\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = ActorUsername, HostCustomEntity + = DvcHostname\\n),\\n(DeviceFileEvents\\n| where FolderPath in (file_paths)\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingProcessAccountName, + HostCustomEntity = DeviceName\\n),\\n(DeviceEvents\\n| where InitiatingProcessSHA256 + in (sha256s)\\n| extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingProcessAccountName, + HostCustomEntity = DeviceName\\n),\\n (CommonSecurityLog\\n| where FileHash + in (sha256s)\\n| extend timestamp = TimeGenerated\\n),\\n(Event // File iocs\\n//This + query uses sysmon data depending on table name used this may need updating\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| extend EvData = parse_xml(EventData)\\n| + extend EventDetail = EvData.DataItem.EventData.Data\\n| extend Hashes = EventDetail.[16].[\\\"#text\\\"]\\n| + where isnotempty(Hashes)\\n| parse Hashes with * 'SHA256=' SHA256 ',' *\\n| + where SHA256 in~ (sha256s)\\n| extend Type = strcat(Type, \\\": \\\", Source), + Account = UserName, FileHash = Hashes\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer\\n),\\n(CommonSecurityLog\\n| + where isnotempty(SourceIP) or isnotempty(DestinationIP)\\n| where (SourceIP + in (ips) or DestinationIP in (ips) or Message has_any (ips)) or (RequestURL + has_any (domains))\\n| extend IPMatch = case(SourceIP in (ips), \\\"SourceIP\\\", + DestinationIP in (ips), \\\"DestinationIP\\\", \\\"Message\\\")\\n| summarize + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by SourceIP, + DestinationIP, DeviceProduct, DeviceAction, Message, Protocol, SourcePort, + DestinationPort, DeviceAddress, DeviceName, IPMatch\\n| extend timestamp = + StartTimeUtc, IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", SourceIP, + IPMatch == \\\"DestinationIP\\\", DestinationIP, \\\"IP in Message Field\\\")\\n),\\n(Event\\n| + where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 3\\n| + extend EvData = parse_xml(EventData)\\n| extend EventDetail = EvData.DataItem.EventData.Data\\n| + extend SourceIP = EventDetail.[9].[\\\"#text\\\"], DestinationIP = EventDetail.[14].[\\\"#text\\\"]\\n| + where SourceIP in (ips) or DestinationIP in (ips)\\n| extend IPMatch = case( + SourceIP in (ips), \\\"SourceIP\\\", DestinationIP in (ips), \\\"DestinationIP\\\", + \\\"None\\\")\\n| extend timestamp = TimeGenerated, AccountCustomEntity = + UserName, HostCustomEntity = Computer , IPCustomEntity = case(IPMatch == \\\"SourceIP\\\", + SourceIP, IPMatch == \\\"DestinationIP\\\", DestinationIP, \\\"None\\\")\\n),\\n(WireData\\n| + where isnotempty(RemoteIP)\\n| where RemoteIP in (ips)\\n| extend timestamp + = TimeGenerated, IPCustomEntity = RemoteIP, HostCustomEntity = Computer\\n),\\n(W3CIISLog\\n| + where isnotempty(cIP)\\n| where cIP in (ips)\\n| extend timestamp = TimeGenerated, + IPCustomEntity = cIP, HostCustomEntity = Computer, AccountCustomEntity = csUserName\\n),\\n(\\nWindowsFirewall\\n| + where SourceIP in (ips) or DestinationIP in (ips)\\n| extend IPMatch = case( + SourceIP in (ips), \\\"SourceIP\\\", DestinationIP in (ips), \\\"DestinationIP\\\", + \\\"None\\\")\\n),\\n(\\n _Im_NetworkSession(srcipaddr_has_any_prefix=ips) + \\n | extend IPCustomEntity = SrcIpAddr, AccountCustomEntity= User, HostCustomEntity=Hostname\\n),\\n + \ (\\n _Im_NetworkSession(dstipaddr_has_any_prefix=ips) \\n | extend IPCustomEntity + = DstIpAddr, AccountCustomEntity= User, HostCustomEntity=Hostname\\n),\\n(_Im_Dns(domain_has_any=dyndomains)\\n| + extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity + = Dvc\\n)\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.7.2\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"Exchange + Server Vulnerabilities Disclosed March 2021 IoC Match\",\"description\":\"This + detection look for IoCs shared by Microsoft relating to attacks exploiting + the Exchange Server vulnerabilities disclosed in March 2021. It looks for + SHA256 file hashes, IP addresses and file paths in a number of data sources. + This query can also be customized with additional data sources that may include + these elements.\\nRef: https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2021-03-06T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWSS3\",\"dataTypes\":[\"AWSVPCFlow\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]},{\"connectorId\":\"AzureMonitor(WireData)\",\"dataTypes\":[\"WireData\"]},{\"connectorId\":\"CheckPoint\",\"dataTypes\":[\"CommonSecurityLog + (CheckPoint)\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog + (Cisco)\"]},{\"connectorId\":\"CEF\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"F5\",\"dataTypes\":[\"CommonSecurityLog + (F5)\"]},{\"connectorId\":\"Fortinet\",\"dataTypes\":[\"CommonSecurityLog + (Fortinet)\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog + (PaloAlto)\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsFirewall\",\"dataTypes\":[\"WindowsFirewall\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"MicrosoftSysmonForLinux\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/61a45b42-5fe8-47ef-9b16-c61e6b76ab8e\",\"name\":\"61a45b42-5fe8-47ef-9b16-c61e6b76ab8e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.2\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.1\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1531\"],\"displayName\":\"(Preview) + UEBA Anomalous Defensive Mechanism Modification\",\"description\":\"Adversaries + may add adversary-controlled credentials for Azure Service Principals in addition + to existing legitimate credentials to maintain persistent access to victim + Azure accounts.\\nSentinel UEBA detects anomalies based on dynamic baselines + created for each entity across various data inputs. Each entity\xE2\u20AC\u2122s + baseline behavior is set according to its own historical activities,\\nthose + of its peers, and those of the organization as a whole. Anomalies can be triggered + by the correlation of different attributes such as action type, geo location, + device, resource, ISP, and more.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2022-01-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/09ec8fa2-b25f-4696-bfae-05a7b85d7b9e\",\"name\":\"09ec8fa2-b25f-4696-bfae-05a7b85d7b9e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT3H\",\"queryPeriod\":\"PT3H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + timeframe = ago(3h);\\nlet threshold = 2;\\nimAuthentication\\n| where TimeGenerated + > timeframe\\n| where EventType=='Logon' and EventResult=='Success'\\n| where + isnotempty(SrcGeoCountry)\\n| summarize StartTime = min(TimeGenerated), EndTime + = max(TimeGenerated), Vendors=make_set(EventVendor), Products=make_set(EventProduct)\\n + \ , NumOfCountries = dcount(SrcGeoCountry)\\n by TargetUserId, TargetUsername, + TargetUserType\\n| where NumOfCountries >= threshold\\n| extend timestamp + = StartTime, AccountCustomEntity = TargetUsername\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"User + login from different countries within 3 hours (Uses Authentication Normalization)\",\"description\":\"This + query searches for successful user logins from different countries within + 3 hours.\\n To use this analytics rule, make sure you have deployed the [ASIM + normalization parsers](https://aka.ms/ASimAuthentication)\",\"lastUpdatedDateUTC\":\"2022-02-14T00:00:00Z\",\"createdDateUTC\":\"2021-06-14T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/67775878-7f8b-4380-ac54-115e1e828901\",\"name\":\"67775878-7f8b-4380-ac54-115e1e828901\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + HAS_ANY_MAX=10000;\\nlet dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet + IP_TI = (ThreatIntelligenceIndicator\\n| where TimeGenerated >= ago(ioc_lookBack) + and ExpirationDateTime > now()\\n// Picking up only IOC's that contain the + entities we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = coalesce(NetworkIP, + NetworkDestinationIP, NetworkSourceIP,EmailSourceIpAddress,\\\"\\\")\\n| summarize + LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| where Active + == true);\\nlet TI_IP_List=IP_TI | summarize NIPs=dcount(TI_ipEntity), IP_List=make_set( + TI_ipEntity) \\n| project IP_List=iff(NIPs > HAS_ANY_MAX, dynamic([]), IP_List);\\n_Im_Dns(starttime=ago(dt_lookBack), + response_has_any_prefix=todynamic(toscalar(TI_IP_List)))\\n | extend tilist + = toscalar(TI_IP_List)\\n | mv-expand tilist\\n | extend SingleIP=tostring(tilist)\\n + \ | project-away tilist\\n | where has_ipv4(DnsResponseName, SingleIP)\\n + \ | extend DNS_TimeGenerated = TimeGenerated\\n| join IP_TI\\n on $left.SingleIP + == $right.TI_ipEntity\\n| where DNS_TimeGenerated >= TimeGenerated and DNS_TimeGenerated + < ExpirationDateTime\\n| project LatestIndicatorTime, Description, ActivityGroupNames, + IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore, DNS_TimeGenerated,\\nTI_ipEntity, + Dvc, EventSubType, SrcIpAddr, DnsQuery, DnsResponseName, NetworkIP, NetworkDestinationIP, + NetworkSourceIP, EmailSourceIpAddress\\n| extend timestamp = DNS_TimeGenerated, + IPCustomEntity = TI_ipEntity, HostCustomEntity = Dvc, URLCustomEntity = Url\",\"customDetails\":{\"LatestIndicatorTime\":\"LatestIndicatorTime\",\"Description\":\"Description\",\"ActivityGroupNames\":\"ActivityGroupNames\",\"IndicatorId\":\"IndicatorId\",\"ThreatType\":\"ThreatType\",\"ExpirationDateTime\":\"ExpirationDateTime\",\"ConfidenceScore\":\"ConfidenceScore\",\"DNSRequestTime\":\"DNS_TimeGenerated\",\"SourceIPAddress\":\"SrcIpAddr\",\"SubType\":\"EventSubType\",\"DnsQuery\":\"DnsQuery\"},\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Impact\"],\"displayName\":\"(Preview) + TI map IP entity to Dns Events (ASIM DNS Schema)\",\"description\":\"Identifies + a match in DNS events from any IP IOC from TI\\nThis analytic rule uses [ASIM](https://aka.ms/AboutASIM) + and supports any built-in or custom source that supports the ASIM DNS schema\",\"lastUpdatedDateUTC\":\"2022-04-27T00:00:00Z\",\"createdDateUTC\":\"2021-09-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ca67c83e-7fff-4127-a3e3-1af66d6d4cad\",\"name\":\"ca67c83e-7fff-4127-a3e3-1af66d6d4cad\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + ProcessCreationEvents=() {\\nlet processEvents=(union isfuzzy=true\\n(SecurityEvent\\n| + where EventID==4688\\n| where isnotempty(CommandLine)\\n| summarize StartTimeUtc + = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), count() by Computer, + Account = SubjectUserName, AccountDomain = SubjectDomainName,\\nFileName = + Process, CommandLine, ParentProcessName\\n),\\n(WindowsEvent\\n| where EventID==4688\\n| + where EventData has \\\"TVqQAAMAAAAEAAA\\\"\\n| extend CommandLine = tostring(EventData.CommandLine)\\n| + where isnotempty(CommandLine)\\n| extend ParentProcessName = tostring(EventData.ParentProcessName)\\n| + extend NewProcessName = tostring(EventData.NewProcessName)\\n| extend Process=tostring(split(NewProcessName, + '\\\\\\\\')[-1])\\n| extend SubjectUserName = tostring(EventData.SubjectUserName)\\n| + extend SubjectDomainName = tostring(EventData.SubjectDomainName)\\n| summarize + StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), count() + by Computer, Account = SubjectUserName, AccountDomain = SubjectDomainName,\\nFileName + = Process, CommandLine, ParentProcessName));\\nprocessEvents};\\nProcessCreationEvents\\n| + where CommandLine contains \\\"TVqQAAMAAAAEAAA\\\"\\n| extend timestamp = + StartTimeUtc, AccountCustomEntity = Account, HostCustomEntity = Computer\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Execution\",\"DefenseEvasion\"],\"techniques\":[\"T1059\",\"T1027\",\"T1140\"],\"displayName\":\"Base64 + encoded Windows process command-lines\",\"description\":\"Identifies instances + of a base64 encoded PE file header seen in the process command line parameter.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2018-09-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/90586451-7ba8-4c1e-9904-7d1b7c3cc4d6\",\"name\":\"90586451-7ba8-4c1e-9904-7d1b7c3cc4d6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Azure + Security Center\",\"severitiesFilter\":[\"Low\",\"Medium\",\"High\"],\"displayName\":\"Create + incidents based on Microsoft Defender for Cloud\",\"description\":\"Create + incidents based on all alerts generated in Microsoft Defender for Cloud\",\"lastUpdatedDateUTC\":\"2021-07-25T00:00:00Z\",\"createdDateUTC\":\"2019-07-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureSecurityCenter\",\"dataTypes\":[\"SecurityAlert + (ASC)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/d57c33a9-76b9-40e0-9dfa-ff0404546410\",\"name\":\"d57c33a9-76b9-40e0-9dfa-ff0404546410\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + Adjust this to use a longer timeframe to identify ADFS servers\\n//let lookback + = 0d;\\n// Adjust this to adjust detection timeframe\\n//let timeframe = 1d;\\n// + Filter out other servers in the AD FS farm\\nlet ADFSServersList = dynamic([\\\"ADFS02.domain.com\\\",\\\"ADFS03.domain.com\\\"]);\\n// + Start by identifying ADFS servers to reduce FP chance\\nlet ADFS_Servers = + (\\nEvent\\n//| where TimeGenerated > ago(timeframe+lookback)\\n| where Source + == \\\"Microsoft-Windows-Sysmon\\\"\\n| where EventID == 18\\n| where Computer + !in (ADFSServersList)\\n| extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| + mv-expand bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| + extend Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, EventLog, + Computer, EventLevel, EventLevelName, EventID, UserName, MG, ManagementGroupName, + _ResourceId)\\n| extend Image = column_ifexists(\\\"Image\\\", \\\"\\\")\\n| + extend process = split(Image, '\\\\\\\\', -1)[-1]\\n| where process =~ \\\"Microsoft.IdentityServer.ServiceHost.exe\\\"\\n| + summarize by Computer\\n);\\n// Look for ADFS servers receiving connections + over port 80\\nEvent\\n//| where TimeGenerated > ago(timeframe)\\n| where + Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| where Computer in~ (ADFS_Servers)\\n| + extend RenderedDescription = tostring(split(RenderedDescription, \\\":\\\")[0])\\n| + extend EventData = parse_xml(EventData).DataItem.EventData.Data\\n| mv-expand + bagexpansion=array EventData\\n| evaluate bag_unpack(EventData)\\n| extend + Key = tostring(column_ifexists('@Name', \\\"\\\")), Value = column_ifexists('#text', + \\\"\\\")\\n| evaluate pivot(Key, any(Value), TimeGenerated, Source, EventLog, + Computer, EventLevel, EventLevelName, EventID, UserName, RenderedDescription, + MG, ManagementGroupName, _ResourceId)\\n| extend RuleName = column_ifexists(\\\"RuleName\\\", + \\\"\\\"), TechniqueId = column_ifexists(\\\"TechniqueId\\\", \\\"\\\"), TechniqueName + = column_ifexists(\\\"TechniqueName\\\", \\\"\\\")\\n| parse RuleName with + * 'technique_id=' TechniqueId ',' * 'technique_name=' TechniqueName\\n| where + EventID == 3\\n// Look for endpoints connecting to the AD FS server over port + 80\\n| extend DestinationPort = column_ifexists(\\\"DestinationPort\\\", \\\"\\\"), + Image = column_ifexists(\\\"Image\\\", \\\"\\\"), Initiated = column_ifexists(\\\"Initiated\\\", + \\\"\\\"), SourceIp = column_ifexists(\\\"DestinationIp\\\", \\\"\\\"), DestinationIp + = column_ifexists(\\\"DestinationIp\\\", \\\"\\\")\\n| where DestinationPort + == 80\\n| extend process = split(Image, '\\\\\\\\', -1)[-1]\\n// Look for + the System process receiving connections\\n| where process == 'System' and + Initiated == 'false'\\n| where DestinationIp !in ('::1','0:0:0:0:0:0:0:1')\\n| + extend Operation = RenderedDescription\\n| project-reorder TimeGenerated, + Operation, Image, Computer, UserName\\n| extend HostCustomEntity = Computer, + AccountCustomEntity = UserName, IPCustomEntity = SourceIp\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1005\"],\"displayName\":\"AD + FS Remote HTTP Network Connection\",\"description\":\"This detection uses + Sysmon events (NetworkConnect events) to detect incoming network traffic on + port 80 on AD FS servers. This could be a sign of a threat actor\\ntrying + to use replication services on the AD FS server to get its configuration settings + and extract sensitive information such as AD FS certificates.\\nIn order to + use this query you need to enable Sysmon telemetry on the AD FS Server.\\nReference: + https://twitter.com/OTR_Community/status/1387038995016732672\\n\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-12-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c1faf5e8-6958-11ec-90d6-0242ac120003\",\"name\":\"c1faf5e8-6958-11ec-90d6-0242ac120003\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"SecurityEvent\\n| + where EventID == 4720 and TargetUserName endswith \\\"$\\\"\\n| summarize + StartTime = min(TimeGenerated), EndTime = max(TimeGenerated) by Computer, + SubjectUserName, SubjectUserSid, SubjectLogonId, TargetUserName, TargetSid\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"SubjectUserName\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"Computer\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"DefenseEvasion\"],\"techniques\":[\"T1564\"],\"displayName\":\"Fake + computer account created\",\"description\":\"This query detects domain user + accounts creation (event ID 4720) where the username ends with $. \\nAccounts + that end with $ are normally domain computer accounts and when they are created + the event ID 4741 is generated instead.\\nRef: https://blog.menasec.net/2019/02/threat-hunting-6-hiding-in-plain-sights.html\",\"lastUpdatedDateUTC\":\"2022-01-19T00:00:00Z\",\"createdDateUTC\":\"2021-12-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/04384937-e927-4595-8f3c-89ff58ed231f\",\"name\":\"04384937-e927-4595-8f3c-89ff58ed231f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P7D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + IPs = dynamic ([\\\"199.249.230.\\\",\\\"185.220.101.\\\",\\\"23.129.64.\\\",\\\"109.70.100.\\\",\\\"185.220.102.\\\"]);\\nOfficeActivity\\n| + where RecordType in (\\\"AzureActiveDirectoryAccountLogon\\\", \\\"AzureActiveDirectoryStsLogon\\\") + \\n| where Operation != 'UserLoggedIn'\\n| extend UserAgent = iff(parse_json(ExtendedProperties)[0].Name + =~ \\\"UserAgent\\\", extractjson(\\\"$[0].Value\\\", ExtendedProperties, + typeof(string)),\\\"\\\")\\n| mv-expand parse_json(ExtendedProperties)\\n| + where ExtendedProperties.Name =~ \\\"RequestType\\\"\\n| extend RequestType + = ExtendedProperties.Value\\n| where ClientIP has_any (IPs)\\n| summarize + authAttempts=dcount(TimeGenerated), firstAttempt=min(TimeGenerated), lastAttempt=max(TimeGenerated), + uniqueIPs=dcount(ClientIP), uniqueAccounts=dcount(UserId), attemptedAccounts=make_set(UserId) + by UserAgent\\n| where authAttempts > 2500\\n| extend timestamp = firstAttempt\\n| + sort by uniqueAccounts\",\"entityMappings\":[],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Possible + STRONTIUM attempted credential harvesting - Sept 2020\",\"description\":\"Surfaces + potential STRONTIUM group Office365 credential harvesting attempts within + OfficeActivity Logon events.\\nReferences: https://www.microsoft.com/security/blog/2020/09/10/strontium-detecting-new-patters-credential-harvesting/.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-09-10T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/7d7e20f8-3384-4b71-811c-f5e950e8306c\",\"name\":\"7d7e20f8-3384-4b71-811c-f5e950e8306c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT2H\",\"queryPeriod\":\"PT2H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"AuditLogs\\n| + where ActivityDisplayName =~'Add member to role completed (PIM activation)'\\n| + where Result == \\\"failure\\\"\\n| extend Role = tostring(TargetResources[3].displayName)\\n| + extend User = tostring(TargetResources[2].displayName)\\n| project-reorder + TimeGenerated, User, Role, OperationName, Result, ResultDescription\\n| extend + InitiatingUser = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\\n| + extend AccountCustomEntity = User, IPCustomEntity = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"InitiatingUser\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1078\"],\"displayName\":\"PIM + Elevation Request Rejected\",\"description\":\"Identifies when a user is rejected + for a privileged role elevation via PIM. Monitor rejections for indicators + of attacker compromise of the requesting account.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-privileged-identity-management\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/6852d9da-8015-4b95-8ecf-d9572ee0395d\",\"name\":\"6852d9da-8015-4b95-8ecf-d9572ee0395d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + queryfrequency = 1h;\\nlet wait_for_deletion = 10m;\\nlet account_created + =\\n AuditLogs \\n | where ActivityDisplayName == \\\"Add service principal\\\"\\n + \ | where Result == \\\"success\\\"\\n | extend AppID = tostring(AdditionalDetails[1].value)\\n + \ | extend creationTime = ActivityDateTime\\n | extend userPrincipalName_creator + = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\\n | + extend ipAddress_creator = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress);\\nlet + account_activity =\\n AADServicePrincipalSignInLogs\\n | extend Activities + = pack(\\\"ActivityTime\\\", TimeGenerated ,\\\"IpAddress\\\", IPAddress, + \\\"ResourceDisplayName\\\", ResourceDisplayName)\\n | extend AppID = AppId\\n + \ | summarize make_list(Activities) by AppID;\\nlet account_deleted =\\n AuditLogs + \\n | where OperationName == \\\"Remove service principal\\\"\\n | where + Result == \\\"success\\\"\\n | extend AppID = tostring(AdditionalDetails[1].value)\\n + \ | extend deletionTime = ActivityDateTime\\n | extend userPrincipalName_deleter + = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\\n | + extend ipAddress_deleter = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress);\\nlet + account_credentials =\\n AuditLogs\\n | where OperationName has_all (\\\"Update + application\\\", \\\"Certificates and secrets management\\\")\\n | where + Result == \\\"success\\\"\\n | extend AppID = tostring(AdditionalDetails[1].value)\\n + \ | extend credentialCreationTime = ActivityDateTime;\\nlet roles_assigned + =\\n AuditLogs\\n | where ActivityDisplayName == \\\"Add app role assignment + to service principal\\\"\\n | extend AppID = tostring(TargetResources[1].displayName)\\n + \ | extend AssignedRole = iff(tostring(parse_json(tostring(TargetResources[0].modifiedProperties))[1].displayName)==\\\"AppRole.Value\\\", + tostring(parse_json(tostring(parse_json(tostring(TargetResources[0].modifiedProperties))[1].newValue))),\\\"\\\")\\n + \ | extend AssignedRoles = pack(\\\"Role\\\", AssignedRole)\\n | summarize + make_list(AssignedRoles) by AppID;\\naccount_created\\n| where TimeGenerated + between (ago(wait_for_deletion+queryfrequency)..ago(wait_for_deletion))\\n| + join kind= inner (account_activity) on AppID\\n| join kind= inner (account_deleted) + on AppID\\n| join kind= inner (account_credentials) on AppID\\n| join kind= + inner (roles_assigned) on AppID\\n| where deletionTime - creationTime between + (time(0s)..wait_for_deletion)\\n| extend AliveTime = deletionTime - creationTime\\n| + project AADTenantId, AppID, creationTime, deletionTime, userPrincipalName_creator, + userPrincipalName_deleter, ipAddress_creator, ipAddress_deleter, list_Activities, + list_AssignedRoles, AliveTime\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"userPrincipalName_creator\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"userPrincipalName_deleter\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ipAddress_creator\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ipAddress_deleter\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\",\"PrivilegeEscalation\",\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Suspicious + Service Principal creation activity\",\"description\":\"This alert will detect + creation of an SPN, permissions granted, credentials cretaed, activity and + deletion of the SPN in a time frame (default 10 minutes)\",\"lastUpdatedDateUTC\":\"2021-12-07T00:00:00Z\",\"createdDateUTC\":\"2021-11-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\",\"AADServicePrincipalSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ec21493c-2684-4acd-9bc2-696dbad72426\",\"name\":\"ec21493c-2684-4acd-9bc2-696dbad72426\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\n//Create a list of TLDs in our + threat feed for later validation of extracted domains\\nlet list_tlds = ThreatIntelligenceIndicator\\n + \ | where TimeGenerated > ago(ioc_lookBack)\\n | where isnotempty(DomainName)\\n + \ | extend DomainName = tolower(DomainName)\\n | extend parts = split(DomainName, + '.')\\n | extend tld = parts[(array_length(parts)-1)]\\n | summarize + count() by tostring(tld)\\n | summarize make_list(tld);\\n ThreatIntelligenceIndicator\\n + \ | where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n + \ | summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n + \ | where Active == true\\n // Picking up only IOC's that contain the + entities we want\\n | where isnotempty(DomainName)\\n // using innerunique + to keep perf fast and result set low, we only need one match to indicate potential + malicious activity that needs to be investigated\\n | join kind=innerunique + (\\n CommonSecurityLog\\n | extend IngestionTime = ingestion_time()\\n + \ | where IngestionTime > ago(dt_lookBack)\\n | where DeviceVendor + =~ 'Palo Alto Networks'\\n | where DeviceEventClassID =~ 'url'\\n //Uncomment + the line below to only alert on allowed connections\\n //| where DeviceAction + !~ \\\"block-url\\\"\\n //Extract domain from RequestURL, if not present + extarct it from AdditionalExtentions\\n | extend PA_Url = columnifexists(\\\"RequestURL\\\", + \\\"None\\\")\\n | extend PA_Url = iif(isempty(PA_Url) and AdditionalExtensions + !startswith \\\"PanOS\\\", extract(\\\"([^\\\\\\\"]+)\\\", 1, tolower(AdditionalExtensions)), + trim('\\\"', PA_Url))\\n | extend PA_Url = iif(PA_Url !startswith \\\"http://\\\" + and ApplicationProtocol !~ \\\"ssl\\\", strcat('http://', PA_Url), iif(PA_Url + !startswith \\\"https://\\\" and ApplicationProtocol =~ \\\"ssl\\\", strcat('https://', + PA_Url), PA_Url))\\n | extend Domain = trim(@\\\"\\\"\\\"\\\",tostring(parse_url(PA_Url).Host))\\n + \ | where isnotempty(Domain)\\n | extend Domain = tolower(Domain)\\n + \ | extend parts = split(Domain, '.')\\n //Split out the TLD + for the purpose of checking if we have any TI indicators with this TLD to + match on\\n | extend tld = parts[(array_length(parts)-1)]\\n //Validate + parsed domain by checking TLD against TLDs from threat feed and drop domains + where there is no chance of a match\\n | where tld in~ (list_tlds)\\n + \ | extend CommonSecurityLog_TimeGenerated = TimeGenerated\\n ) on + $left.DomainName==$right.Domain\\n | where CommonSecurityLog_TimeGenerated + < ExpirationDateTime\\n | summarize CommonSecurityLog_TimeGenerated = arg_max(CommonSecurityLog_TimeGenerated, + *) by IndicatorId, Domain\\n | project CommonSecurityLog_TimeGenerated, + Description, ActivityGroupNames, PA_Url, Domain, IndicatorId, ThreatType, + ExpirationDateTime, ConfidenceScore, \\n DeviceAction, DestinationIP, DestinationPort, + DeviceName, SourceIP, SourcePort, ApplicationProtocol, RequestMethod\\n | + extend timestamp = CommonSecurityLog_TimeGenerated, IPCustomEntity = SourceIP, + HostCustomEntity = DeviceName, URLCustomEntity = PA_Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.0\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Domain entity to PaloAlto\",\"description\":\"Identifies a match in Palo + Alto data in CommonSecurityLog table from any Domain IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/caf78b95-d886-4ac3-957a-a7a3691ff4ed\",\"name\":\"caf78b95-d886-4ac3-957a-a7a3691ff4ed\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT12H\",\"queryPeriod\":\"PT12H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + iocs = externaldata(DateAdded:string,IoC:string,Type:string,TLP:string) [@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Tarrask.csv\\\"] + with (format=\\\"csv\\\", ignoreFirstRecord=True);\\nlet sha256Hashes = (iocs + | where Type =~ \\\"sha256\\\" | project IoC);\\n(union isfuzzy=true\\n(CommonSecurityLog\\n| + where FileHash in (sha256Hashes)\\n| project TimeGenerated, Message, SourceUserID, + FileHash, Type\\n| extend timestamp = TimeGenerated, FileHashCustomEntity + = 'SHA256', Account = SourceUserID\\n),\\n(imFileEvent\\n| where TargetFileSHA256 + has_any (sha256Hashes)\\n| extend Account = ActorUsername, Computer = DvcHostname, + IPAddress = SrcIpAddr, CommandLine = ActingProcessCommandLine, FileHash = + TargetFileSHA256\\n| project Type, TimeGenerated, Computer, Account, IPAddress, + CommandLine, FileHash\\n),\\n(Event\\n| where Source == \\\"Microsoft-Windows-Sysmon\\\"\\n| + where EventID == 1\\n| extend EvData = parse_xml(EventData)\\n| extend EventDetail + = EvData.DataItem.EventData.Data\\n| extend Image = EventDetail.[4].[\\\"#text\\\"], + \ CommandLine = EventDetail.[10].[\\\"#text\\\"], Hashes = tostring(EventDetail.[17].[\\\"#text\\\"])\\n| + extend Hashes = extract_all(@\\\"(?P\\\\w+)=(?P[a-zA-Z0-9]+)\\\", + dynamic([\\\"key\\\",\\\"value\\\"]), Hashes)\\n| extend Hashes = column_ifexists(\\\"Hashes\\\", + \\\"\\\"), CommandLine = column_ifexists(\\\"CommandLine\\\", \\\"\\\")\\n| + where (Hashes has_any (sha256Hashes) ) \\n| project TimeGenerated, EventDetail, + UserName, Computer, Type, Source, Hashes, CommandLine, Image\\n| extend Type + = strcat(Type, \\\": \\\", Source)\\n| extend timestamp = TimeGenerated, HostCustomEntity + = Computer , AccountCustomEntity = UserName, ProcessCustomEntity = tostring(split(Image, + '\\\\\\\\', -1)[-1]), FileHashCustomEntity = Hashes\\n),\\n(DeviceEvents\\n| + where InitiatingProcessSHA256 has_any (sha256Hashes) or SHA256 has_any (sha256Hashes)\\n| + project TimeGenerated, ActionType, DeviceId, DeviceName, InitiatingProcessAccountDomain, + InitiatingProcessAccountName, InitiatingProcessCommandLine, InitiatingProcessFolderPath, + InitiatingProcessId, InitiatingProcessParentFileName, InitiatingProcessFileName, + InitiatingProcessSHA256, Type\\n| extend timestamp = TimeGenerated, HostCustomEntity + = DeviceName , AccountCustomEntity = InitiatingProcessAccountName, ProcessCustomEntity + = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", FileHashCustomEntity + = InitiatingProcessSHA256, CommandLine = InitiatingProcessCommandLine,Image + = InitiatingProcessFolderPath\\n),\\n(DeviceFileEvents\\n| where SHA256 has_any + (sha256Hashes)\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, + InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessCommandLine, + InitiatingProcessFolderPath, InitiatingProcessId, InitiatingProcessParentFileName, + InitiatingProcessFileName, InitiatingProcessSHA256, Type\\n| extend timestamp + = TimeGenerated, HostCustomEntity = DeviceName , AccountCustomEntity = InitiatingProcessAccountName, + ProcessCustomEntity = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", + FileHashCustomEntity = InitiatingProcessSHA256, CommandLine = InitiatingProcessCommandLine,Image + = InitiatingProcessFolderPath\\n),\\n(DeviceImageLoadEvents\\n| where SHA256 + has_any (sha256Hashes)\\n| project TimeGenerated, ActionType, DeviceId, DeviceName, + InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessCommandLine, + InitiatingProcessFolderPath, InitiatingProcessId, InitiatingProcessParentFileName, + InitiatingProcessFileName, InitiatingProcessSHA256, Type\\n| extend timestamp + = TimeGenerated, HostCustomEntity = DeviceName , AccountCustomEntity = InitiatingProcessAccountName, + ProcessCustomEntity = InitiatingProcessFileName, AlgorithmCustomEntity = \\\"SHA256\\\", + FileHashCustomEntity = InitiatingProcessSHA256, CommandLine = InitiatingProcessCommandLine,Image + = InitiatingProcessFolderPath\\n)\\n)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"ProcessCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1053\"],\"displayName\":\"Tarrask + malware IOC - April 2022\",\"description\":\"Identifies a hash match related + to Tarrask malware across various data sources.\\n Reference: https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/\",\"lastUpdatedDateUTC\":\"2022-04-12T00:00:00Z\",\"createdDateUTC\":\"2022-01-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceFileEvents\",\"DeviceEvents\",\"DeviceImageLoadEvents\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/543c9254-eb6f-4fdd-858d-783e0e3d5cb9\",\"name\":\"543c9254-eb6f-4fdd-858d-783e0e3d5cb9\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.4\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":\".msg,.jpg,.txt\",\"dataType\":\"string\",\"name\":\"File + extension\",\"description\":\"Give comma separated file extension to exclude + from source data, for example: .txt,.jpg,.mp4\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.9\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the error percentile is greater than chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1530\",\"T1213\",\"T1005\",\"T1039\",\"T1114\"],\"displayName\":\"(Preview) + Suspicious number of protected documents accessed\",\"description\":\"This + algorithm is to detect high volume of access to protected documents in Azure + Information Protection (AIP) logs. \\nIt considers AIP workload records for + a given number of days and determines whether the user performed unusual access + to protected documents in a day given his/her historical behavior.\",\"lastUpdatedDateUTC\":\"2022-05-09T00:00:00Z\",\"createdDateUTC\":\"2021-02-24T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureInformationProtection\",\"dataTypes\":[\"InformationProtectionLogs_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2560515c-07d1-434e-87fb-ebe3af267760\",\"name\":\"2560515c-07d1-434e-87fb-ebe3af267760\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"AuditLogs\\n| + where Category =~ \\\"ApplicationManagement\\\"\\n| where ActivityDisplayName + has_any (\\\"Add delegated permission grant\\\",\\\"Add app role assignment + to service principal\\\")\\n| where Result =~ \\\"success\\\"\\n| where tostring(InitiatedBy.user.userPrincipalName) + has \\\"@\\\" or tostring(InitiatedBy.app.displayName) has \\\"@\\\"\\n| extend + props = parse_json(tostring(TargetResources[0].modifiedProperties))\\n| mv-expand + props\\n| extend UserAgent = tostring(AdditionalDetails[0].value)\\n| extend + InitiatingUser = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\\n| + extend UserIPAddress = tostring(parse_json(tostring(InitiatedBy.user)).ipAddress)\\n| + extend DisplayName = tostring(props.displayName)\\n| extend Permissions = + tostring(parse_json(tostring(props.newValue)))\\n| where Permissions has_any + (\\\"Mail.Read\\\", \\\"Mail.ReadWrite\\\")\\n| extend PermissionsAddedTo + = tostring(TargetResources[0].displayName)\\n| extend Type = tostring(TargetResources[0].type)\\n| + project-away props\\n| join kind=leftouter(\\n AuditLogs\\n | where ActivityDisplayName + has \\\"Consent to application\\\"\\n | extend AppName = tostring(TargetResources[0].displayName)\\n + \ | extend AppId = tostring(TargetResources[0].id)\\n | project AppName, + AppId, CorrelationId) on CorrelationId\\n| project-reorder TimeGenerated, + OperationName, InitiatingUser, UserIPAddress, UserAgent, PermissionsAddedTo, + Permissions, AppName, AppId, CorrelationId\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = InitiatingUser, IPCustomEntity = UserIPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"Mail.Read + Permissions Granted to Application\",\"description\":\"This query look for + applications that have been granted (Delegated or App/Role) permissions to + Read Mail (Permissions field has Mail.Read) and subsequently has been consented + to. This can help identify applications that have been abused to gain access + to mailboxes.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-12-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/0c804654-63b9-4241-89f8-1cddd7e9cacd\",\"name\":\"0c804654-63b9-4241-89f8-1cddd7e9cacd\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.2\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of AWS write API calls from a user account \",\"description\":\"This + algorithm detects an unusually high volume of AWS write API calls per user + account within the last day. The model is trained on the previous 21 days + of AWS cloud trail log events on a user account basis. This activity may indicate + that the account is compromised.\",\"lastUpdatedDateUTC\":\"2022-03-07T00:00:00Z\",\"createdDateUTC\":\"2021-10-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AWS\",\"dataTypes\":[\"AWSCloudTrail\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/532c1811-79ee-4d9f-8d4d-6304c840daa1\",\"name\":\"532c1811-79ee-4d9f-8d4d-6304c840daa1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MicrosoftSecurityIncidentCreation\",\"properties\":{\"productFilter\":\"Azure + Active Directory Identity Protection\",\"displayName\":\"Create incidents + based on Azure Active Directory Identity Protection alerts\",\"description\":\"Create + incidents based on all alerts generated in Azure Active Directory Identity + Protection\",\"lastUpdatedDateUTC\":\"2019-07-16T00:00:00Z\",\"createdDateUTC\":\"2019-07-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectoryIdentityProtection\",\"dataTypes\":[\"SecurityAlert + (IPC)\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bb616d82-108f-47d3-9dec-9652ea0d3bf6\",\"name\":\"bb616d82-108f-47d3-9dec-9652ea0d3bf6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + queryfrequency = 1h;\\nlet queryperiod = 1d;\\nAuditLogs\\n| where TimeGenerated + > ago(queryfrequency)\\n| where OperationName =~ \\\"Delete user\\\"\\n//extend + UserPrincipalName = tostring(TargetResources[0].userPrincipalName)\\n| extend + UserPrincipalName = extract(@'([a-f0-9]{32})?(.*)', 2, tostring(TargetResources[0].userPrincipalName))\\n| + extend DeletedByUser = tostring(InitiatedBy.user.userPrincipalName), DeletedByIPAddress + = tostring(InitiatedBy.user.ipAddress)\\n| extend DeletedByApp = tostring(InitiatedBy.app.displayName)\\n| + project Deletion_TimeGenerated = TimeGenerated, UserPrincipalName, DeletedByUser, + DeletedByIPAddress, DeletedByApp, Deletion_AdditionalDetails = AdditionalDetails, + Deletion_InitiatedBy = InitiatedBy, Deletion_TargetResources = TargetResources\\n| + join kind=inner (\\n AuditLogs\\n | where TimeGenerated > ago(queryperiod)\\n + \ | where OperationName =~ \\\"Add user\\\"\\n | extend UserPrincipalName + = tostring(TargetResources[0].userPrincipalName)\\n | project-rename Creation_TimeGenerated + = TimeGenerated\\n) on UserPrincipalName\\n| extend TimeDelta = Deletion_TimeGenerated + - Creation_TimeGenerated\\n| where TimeDelta between (time(0s) .. queryperiod)\\n| + extend CreatedByUser = tostring(InitiatedBy.user.userPrincipalName), CreatedByIPAddress + = tostring(InitiatedBy.user.ipAddress)\\n| extend CreatedByApp = tostring(InitiatedBy.app.displayName)\\n| + project Creation_TimeGenerated, Deletion_TimeGenerated, TimeDelta, UserPrincipalName, + DeletedByUser, DeletedByIPAddress, DeletedByApp, CreatedByUser, CreatedByIPAddress, + CreatedByApp, Creation_AdditionalDetails = AdditionalDetails, Creation_InitiatedBy + = InitiatedBy, Creation_TargetResources = TargetResources, Deletion_AdditionalDetails, + Deletion_InitiatedBy, Deletion_TargetResources\\n| extend timestamp = Deletion_TimeGenerated, + CustomAccountEntity = UserPrincipalName, IPCustomEntity = DeletedByIPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"CustomAccountEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"Account + Created and Deleted in Short Timeframe\",\"description\":\"Search for user + principal name (UPN) events. Look for accounts created and then deleted in + under 24 hours. Attackers may create an account for their use, and then remove + the account when no longer needed.\\nRef : https://docs.microsoft.com/azure/active-directory/fundamentals/security-operations-user-accounts#short-lived-account\",\"lastUpdatedDateUTC\":\"2022-01-17T00:00:00Z\",\"createdDateUTC\":\"2021-10-28T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a0907abe-6925-4d90-af2b-c7e89dc201a6\",\"name\":\"a0907abe-6925-4d90-af2b-c7e89dc201a6\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P10D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 10d;\\nlet endtime = 1d;\\nlet threshold = 100;\\nlet nxDomainDnsEvents + = DnsEvents \\n| where ResultCode == 3 \\n| where QueryType in (\\\"A\\\", + \\\"AAAA\\\")\\n| where ipv4_is_match(\\\"127.0.0.1\\\", ClientIP) == False\\n| + where Name !contains \\\"/\\\"\\n| where Name contains \\\".\\\";\\nnxDomainDnsEvents\\n| + where TimeGenerated > ago(endtime)\\n| extend sld = tostring(split(Name, \\\".\\\")[-2])\\n| + summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + dcount(sld) by ClientIP\\n| where dcount_sld > threshold\\n// Filter out previously + seen IPs\\n| join kind=leftanti (nxDomainDnsEvents\\n | where TimeGenerated + between(ago(starttime)..ago(endtime))\\n | extend sld = tostring(split(Name, + \\\".\\\")[-2])\\n | summarize dcount(sld) by ClientIP\\n | where dcount_sld + > threshold ) on ClientIP\\n// Pull out sample NXDomain responses for those + remaining potentially infected IPs\\n| join kind = inner (nxDomainDnsEvents + | summarize by Name, ClientIP) on ClientIP\\n| summarize StartTimeUtc = min(StartTimeUtc), + EndTimeUtc = max(EndTimeUtc), sampleNXDomainList=make_list(Name, 100) by + ClientIP, dcount_sld\\n| extend timestamp = StartTimeUtc, IPCustomEntity = + ClientIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1568\",\"T1008\"],\"displayName\":\"Potential + DGA detected\",\"description\":\"Identifies clients with a high NXDomain count + which could be indicative of a DGA (cycling through possible C2 domains\\nwhere + most C2s are not live). Alert is generated when a new IP address is seen (based + on not being seen associated with \\nNXDomain records in prior 10-day baseline + period).\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/9713e3c0-1410-468d-b79e-383448434b2d\",\"name\":\"9713e3c0-1410-468d-b79e-383448434b2d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) + or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)\\n// As + there is potentially more than 1 indicator type for matching IP, taking NetworkIP + first, then others if that is empty.\\n// Taking the first non-empty value + based on potential IOC match availability\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n VMConnection\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n // renaming time column + so it is clear the log this came from\\n | extend VMConnection_TimeGenerated + = TimeGenerated\\n)\\non $left.TI_ipEntity == $right.RemoteIp\\n| where VMConnection_TimeGenerated + < ExpirationDateTime\\n| summarize VMConnection_TimeGenerated = arg_max(VMConnection_TimeGenerated, + *) by IndicatorId, RemoteIp\\n| project VMConnection_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, + Computer, Direction, ProcessName, SourceIp, DestinationIp, RemoteIp, Protocol, + DestinationPort, NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress\\n| + extend timestamp = VMConnection_TimeGenerated, IPCustomEntity = RemoteIp, + HostCustomEntity = Computer, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map IP entity to VMConnection\",\"description\":\"Identifies a match in VMConnection + from any IP IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1de6460f-30dc-4e8c-8086-8100d8e2b461\",\"name\":\"1de6460f-30dc-4e8c-8086-8100d8e2b461\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.2\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.2\",\"name\":\"Anomaly + score threshold\",\"description\":\"Generate an anomaly when the anomaly score + is greater than the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1098\"],\"displayName\":\"(Preview) + UEBA Anomalous Account Manipulation\",\"description\":\"Adversaries may manipulate + accounts to maintain access to victim systems. These actions include adding + new accounts to high privilleged groups. Dragonfly 2.0, for example, added + newly created accounts to the administrators group to maintain elevated access. + The query below generates an output of all high Blast Radius users performing + \\\"Update user\\\" (name change) to privileged role, or ones that changed + users for the first time. Sentinel UEBA detects anomalies based on dynamic + baselines created for each entity across various data inputs. Each entity\xE2\u20AC\u2122s + baseline behavior is set according to its own historical activities, those + of its peers, and those of the organization as a whole. Anomalies can be triggered + by the correlation of different attributes such as action type, geo-location, + device, resource, ISP, and more.\",\"lastUpdatedDateUTC\":\"2022-04-13T00:00:00Z\",\"createdDateUTC\":\"2022-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b9e3b9f8-a406-4151-9891-e5ff1ddd8c1d\",\"name\":\"b9e3b9f8-a406-4151-9891-e5ff1ddd8c1d\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"//Collect + the alert events\\nlet alertData = SecurityAlert \\n| where DisplayName has + \\\"Potential malware uploaded to\\\" \\n| extend Entities = parse_json(Entities) + \\n| mv-expand Entities;\\n//Parse the IP address data\\nlet ipData = alertData + \\n| where Entities['Type'] =~ \\\"ip\\\" \\n| extend AttackerIP = tostring(Entities['Address']), + AttackerCountry = tostring(Entities['Location']['CountryName']);\\n//Parse + the file data\\nlet FileData = alertData \\n| where Entities['Type'] =~ \\\"file\\\" + \\n| extend MaliciousFileDirectory = tostring(Entities['Directory']), MaliciousFileName + = tostring(Entities['Name']), MaliciousFileHashes = tostring(Entities['FileHashes']);\\n//Combine + the File and IP data together\\nipData \\n| join (FileData) on VendorOriginalId + \\n| summarize by TimeGenerated, AttackerIP, AttackerCountry, DisplayName, + ResourceId, AlertType, MaliciousFileDirectory, MaliciousFileName, MaliciousFileHashes\\n//Create + a type column so we can track if it was a File storage or blobl storage upload + \\n| extend type = iff(DisplayName has \\\"file\\\", \\\"File\\\", \\\"Blob\\\") + \\n| join (\\n union\\n StorageFileLogs, \\n StorageBlobLogs \\n //File + upload operations \\n | where OperationName =~ \\\"PutBlob\\\" or OperationName + =~ \\\"PutRange\\\"\\n //Parse out the uploader IP \\n | extend ClientIP + = tostring(split(CallerIpAddress, \\\":\\\", 0)[0])\\n //Extract the filename + from the Uri \\n | extend FileName = extract(@\\\"\\\\/([\\\\w\\\\-. ]+)\\\\?\\\", + 1, Uri)\\n //Base64 decode the MD5 filehash, we will encounter non-ascii + hex so string operations don't work\\n //We can work around this by making + it an array then converting it to hex from an int \\n | extend base64Char + = base64_decode_toarray(ResponseMd5) \\n | mv-expand base64Char \\n | extend + hexChar = tohex(toint(base64Char))\\n | extend hexChar = iff(strlen(hexChar) + < 2, strcat(\\\"0\\\", hexChar), hexChar) \\n | extend SourceTable = iff(OperationName + has \\\"range\\\", \\\"StorageFileLogs\\\", \\\"StorageBlobLogs\\\") \\n | + summarize make_list(hexChar) by CorrelationId, ResponseMd5, FileName, AccountName, + TimeGenerated, RequestBodySize, ClientIP, SourceTable \\n | extend Md5Hash + = strcat_array(list_hexChar, \\\"\\\")\\n //Pack the file information the + summarise into a ClientIP row \\n | extend p = pack(\\\"FileName\\\", FileName, + \\\"FileSize\\\", RequestBodySize, \\\"Md5Hash\\\", Md5Hash, \\\"Time\\\", + TimeGenerated, \\\"SourceTable\\\", SourceTable) \\n | summarize UploadedFileInfo=make_list(p), + FilesUploaded=count() by ClientIP \\n | join kind=leftouter (\\n union\\n + \ StorageFileLogs,\\n StorageBlobLogs \\n | + where OperationName =~ \\\"DeleteFile\\\" or OperationName =~ \\\"DeleteBlob\\\" + \ \\n | extend ClientIP = tostring(split(CallerIpAddress, \\\":\\\", + 0)[0]) \\n | extend FileName = extract(@\\\"\\\\/([\\\\w\\\\-. + ]+)\\\\?\\\", 1, Uri) \\n | extend SourceTable = iff(OperationName + has \\\"range\\\", \\\"StorageFileLogs\\\", \\\"StorageBlobLogs\\\") \\n + \ | extend p = pack(\\\"FileName\\\", FileName, \\\"Time\\\", TimeGenerated, + \\\"SourceTable\\\", SourceTable) \\n | summarize DeletedFileInfo=make_list(p), + FilesDeleted=count() by ClientIP\\n ) on ClientIP\\n ) on $left.AttackerIP + == $right.ClientIP \\n| mvexpand UploadedFileInfo \\n| extend LinkedMaliciousFileName + = UploadedFileInfo.FileName \\n| extend LinkedMaliciousFileHash = UploadedFileInfo.Md5Hash + \ \\n| project AlertTimeGenerated = TimeGenerated, tostring(LinkedMaliciousFileName), + tostring(LinkedMaliciousFileHash), AlertType, AttackerIP, AttackerCountry, + MaliciousFileDirectory, MaliciousFileName, FilesUploaded, UploadedFileInfo + \\n| extend FileHashCustomEntity = LinkedMaliciousFileName, HashAlgorithm + = \\\"MD5\\\", IPCustomEntity = AttackerIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"HashAlgorithm\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\",\"Exfiltration\"],\"techniques\":[\"T1071\",\"T1567\"],\"displayName\":\"Linked + Malicious Storage Artifacts\",\"description\":\"An IP address which uploaded + malicious content to an Azure Blob or File Storage container (triggering a + malware alert) also uploaded additional files.\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2021-02-22T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftCloudAppSecurity\",\"dataTypes\":[\"SecurityAlert\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c7cd6073-6d2c-4284-a5c8-da27605bdfde\",\"name\":\"c7cd6073-6d2c-4284-a5c8-da27605bdfde\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT10M\",\"queryPeriod\":\"PT10M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + lbtime = 10m;\\nProofpointPOD\\n| where TimeGenerated > ago(lbtime)\\n| where + EventType == 'message'\\n| where NetworkDirection == 'inbound'\\n| where FilterDisposition + !in ('reject', 'discard')\\n| where FilterModulesSpamScoresOverall == '100'\\n| + project SrcUserUpn, DstUserUpn\\n| extend AccountCustomEntity = SrcUserUpn\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"ProofpointPOD + - High risk message not discarded\",\"description\":\"Detects when email with + high risk score was not rejected or discarded by filters.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_message_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c87fb346-ea3a-4c64-ba92-3dd383e0f0b5\",\"name\":\"c87fb346-ea3a-4c64-ba92-3dd383e0f0b5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + DomainNames = \\\"miniodaum.ml\\\";\\nlet SHA256Hash = dynamic ([\\\"53f5773bbfbfbee660989d135c042c9f6f69024b9a4b65bdc0dfd44771762257\\\", + \\\"0897c80df8b80b4c49bf1ccf876f5f782849608b830c3b5cb3ad212dc3e19eff\\\"]);\\n(union + isfuzzy=true\\n(CommonSecurityLog \\n| parse Message with * '(' DNSName ')' + * \\n| where isnotempty(FileHash)\\n| where FileHash in (SHA256Hash) or DNSName + =~ DomainNames\\n| extend Account = SourceUserID, Computer = DeviceName, IPAddress + = SourceIP\\n),\\n (_Im_Dns (domain_has_any=DomainNames)\\n| extend DNSName + = DnsQuery \\n| extend IPAddress = SrcIpAddr, Computer = Dvc\\n), \\n(_Im_WebSession(url_has_any=DomainNames) + \\n| extend DNSName = tostring(parse_url(Url)[\\\"Host\\\"])\\n| extend IPAddress + = SrcIpAddr, Account=User\\n),\\n(VMConnection \\n| parse RemoteDnsCanonicalNames + with * '[\\\"' DNSName '\\\"]' *\\n| where isnotempty(DNSName)\\n| where DNSName + =~ DomainNames\\n| extend IPAddress = RemoteIp\\n),\\n(AzureDiagnostics \\n| + where ResourceType == \\\"AZUREFIREWALLS\\\"\\n| where Category == \\\"AzureFirewallApplicationRule\\\"\\n| + parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' + DestinationHost ':' DestinationPort '. Action:' Action\\n| where isnotempty(DestinationHost)\\n| + where DestinationHost has_any (DomainNames) \\n| extend DNSName = DestinationHost + \\n| extend IPAddress = SourceHost\\n)\\n)\\n| extend timestamp = TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer, IPCustomEntity + = IPAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"CommandAndControl\",\"CredentialAccess\"],\"displayName\":\"Known + CERIUM domains and hashes\",\"description\":\"CERIUM malicious webserver and + hash values for maldocs and malware. \\n Matches domain name IOCs related + to the CERIUM activity group with CommonSecurityLog, DnsEvents, and VMConnection + dataTypes.\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2020-10-29T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/712fab52-2a7d-401e-a08c-ff939cc7c25e\",\"name\":\"712fab52-2a7d-401e-a08c-ff939cc7c25e\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n// Picking up only IOC's that contain the entities + we want\\n| where isnotempty(Url)\\n// using innerunique to keep perf fast + and result set low, we only need one match to indicate potential malicious + activity that needs to be investigated\\n| join kind=innerunique (\\n AuditLogs\\n + \ | where TimeGenerated >= ago(dt_lookBack)\\n // Extract the URL that is + contained within the JSON data\\n | extend Url = extract(\\\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\\\\\\\(\\\\\\\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+);\\\", + 1,tostring(TargetResources))\\n | where isnotempty(Url)\\n | extend userPrincipalName + = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)\\n | + extend TargetResourceDisplayName = tostring(TargetResources[0].displayName)\\n + \ | extend Audit_TimeGenerated = TimeGenerated\\n) on Url\\n| where Audit_TimeGenerated + < ExpirationDateTime\\n| summarize Audit_TimeGenerated = arg_max(Audit_TimeGenerated, + *) by IndicatorId, Url\\n| project Audit_TimeGenerated, Description, ActivityGroupNames, + IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore,\\nOperationName, + Identity, userPrincipalName, TargetResourceDisplayName, Url\\n| extend timestamp + = Audit_TimeGenerated, AccountCustomEntity = userPrincipalName, HostCustomEntity + = TargetResourceDisplayName, URLCustomEntity = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.2.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map URL entity to AuditLogs\",\"description\":\"Identifies a match in AuditLogs + from any URL IOC from TI\",\"lastUpdatedDateUTC\":\"2021-11-29T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/ab4b6944-a20d-42ab-8b63-238426525801\",\"name\":\"ab4b6944-a20d-42ab-8b63-238426525801\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + domains = dynamic([\\\"incomeupdate.com\\\",\\\"zupertech.com\\\",\\\"databasegalore.com\\\",\\\"panhardware.com\\\",\\\"avsvmcloud.com\\\",\\\"digitalcollege.org\\\",\\\"freescanonline.com\\\",\\\"deftsecurity.com\\\",\\\"thedoccloud.com\\\",\\\"virtualdataserver.com\\\",\\\"lcomputers.com\\\",\\\"webcodez.com\\\",\\\"globalnetworkissues.com\\\",\\\"kubecloud.com\\\",\\\"seobundlekit.com\\\",\\\"solartrackingsystem.net\\\",\\\"virtualwebdata.com\\\"]);\\nlet + timeframe = 1h;\\nlet connections = VMConnection \\n | where TimeGenerated + >= ago(timeframe)\\n | extend DNSName = set_union(todynamic(RemoteDnsCanonicalNames),todynamic(RemoteDnsQuestions))\\n + \ | mv-expand DNSName\\n | where isnotempty(DNSName)\\n | where DNSName + has_any (domains)\\n | extend IPCustomEntity = RemoteIp\\n | summarize + TimeGenerated = arg_min(TimeGenerated, *), requests = count() by IPCustomEntity, + DNSName = tostring(DNSName), AgentId, Machine, Process;\\nlet processes = + VMProcess\\n | where TimeGenerated >= ago(timeframe)\\n | project AgentId, + Machine, Process, UserName, UserDomain, ExecutablePath, CommandLine, FirstPid\\n + \ | extend exePathArr = split(ExecutablePath, \\\"\\\\\\\\\\\")\\n | + extend DirectoryName = array_strcat(array_slice(exePathArr, 0, array_length(exePathArr) + - 2), \\\"\\\\\\\\\\\")\\n | extend Filename = array_strcat(array_slice(exePathArr, + array_length(exePathArr) - 1, array_length(exePathArr)), \\\"\\\\\\\\\\\")\\n + \ | project-away exePathArr;\\nlet computers = VMComputer\\n | where + TimeGenerated >= ago(timeframe)\\n | project HostCustomEntity = HostName, + AzureResourceId = _ResourceId, AgentId, Machine;\\nconnections | join kind + = inner (processes) on AgentId, Machine, Process\\n | join kind + = inner (computers) on AgentId, Machine\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"HostName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"DNS\",\"fieldMappings\":[{\"identifier\":\"DomainName\",\"columnName\":\"DNSName\"}]},{\"entityType\":\"Process\",\"fieldMappings\":[{\"identifier\":\"ProcessId\",\"columnName\":\"FirstPid\"},{\"identifier\":\"CommandLine\",\"columnName\":\"CommandLine\"}]},{\"entityType\":\"File\",\"fieldMappings\":[{\"identifier\":\"Directory\",\"columnName\":\"DirectoryName\"},{\"identifier\":\"Name\",\"columnName\":\"Filename\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1102\"],\"displayName\":\"Solorigate + Domains Found in VM Insights\",\"description\":\"Identifies connections to + Solorigate-related DNS records based on VM insights data\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMProcess\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMComputer\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1ce5e766-26ab-4616-b7c8-3b33ae321e80\",\"name\":\"1ce5e766-26ab-4616-b7c8-3b33ae321e80\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"//Adjust + this threshold to fit environment\\nlet signin_threshold = 5; \\n//Make a + list of IPs with failed Windows host logins above threshold\\nlet win_fails + = \\nSecurityEvent\\n| where EventID == 4625\\n| where LogonType in (10, 7, + 3)\\n| where IpAddress != \\\"-\\\"\\n| summarize count() by IpAddress\\n| + where count_ > signin_threshold\\n| summarize make_list(IpAddress);\\nlet + wef_fails =\\nWindowsEvent\\n| where EventID == 4625\\n| extend LogonType + = tostring(EventData.LogonType)\\n| where LogonType in (10, 7, 3)\\n| extend + IpAddress = tostring(EventData.IpAddress)\\n| where IpAddress != \\\"-\\\"\\n| + summarize count() by IpAddress\\n| where count_ > signin_threshold\\n| summarize + make_list(IpAddress);\\n//Make a list of IPs with failed *nix host logins + above threshold\\nlet nix_fails = \\nSyslog\\n| where Facility contains 'auth' + and ProcessName != 'sudo'\\n| extend SourceIP = extract(\\\"(([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.(([0-9]{1,3})))\\\",1,SyslogMessage)\\n| + where SourceIP != \\\"\\\" and SourceIP != \\\"127.0.0.1\\\"\\n| summarize + count() by SourceIP\\n| where count_ > signin_threshold\\n| summarize make_list(SourceIP);\\n//See + if any of the IPs with failed host logins hve had a sucessful Azure AD login\\nlet + aadFunc = (tableName:string){\\ntable(tableName)\\n| where ResultType !in + (\\\"0\\\", \\\"50125\\\", \\\"50140\\\")\\n| where IPAddress in (win_fails) + or IPAddress in (nix_fails) or IPAddress in (wef_fails)\\n| extend Reason= + \ \\\"Multiple failed host logins from IP address with successful Azure AD + login\\\"\\n| extend timstamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, + IPCustomEntity = IPAddress, Type = Type\\n};\\nlet aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet + aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion isfuzzy=true + aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"InitialAccess\",\"CredentialAccess\"],\"techniques\":[\"T1078\",\"T1110\"],\"displayName\":\"Failed + host logons but success logon to AzureAD\",\"description\":\"Identifies a + list of IP addresses with a minimum number(default of 5) of failed logon attempts + to remote hosts.\\nUses that list to identify any successful logons to Azure + Active Directory from these IPs within the same timeframe.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-08-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/28b42356-45af-40a6-a0b4-a554cdfd5d8a\",\"name\":\"28b42356-45af-40a6-a0b4-a554cdfd5d8a\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeRange = 24h;\\nlet failureCountThreshold = 5;\\nlet authenticationWindow + = 20m;\\nlet aadFunc = (tableName:string){\\n table(tableName)\\n| where AppDisplayName + has \\\"Azure Portal\\\"\\n| extend\\n DeviceDetail = todynamic(DeviceDetail),\\n + \ //Status = todynamic(Status),\\n LocationDetails = todynamic(LocationDetails)\\n| + extend\\n OS = tostring(DeviceDetail.operatingSystem),\\n Browser + = tostring(DeviceDetail.browser),\\n //StatusCode = tostring(Status.errorCode),\\n + \ //StatusDetails = tostring(Status.additionalDetails),\\n State = + tostring(LocationDetails.state),\\n City = tostring(LocationDetails.city),\\n + \ Region = tostring(LocationDetails.countryOrRegion)\\n// Split out failure + versus non-failure types\\n| extend FailureOrSuccess = iff(ResultType in (\\\"0\\\", + \\\"50125\\\", \\\"50140\\\", \\\"70043\\\", \\\"70044\\\"), \\\"Success\\\", + \\\"Failure\\\") \\n// bin outcomes based on authenticationWindow\\n| summarize + take_anyif(UserPrincipalName, not(UserPrincipalName matches regex @\\\"[a-f\\\\d]+\\\\-[a-f\\\\d]+\\\\-[a-f\\\\d]+\\\\-[a-f\\\\d]+\\\\-[a-f\\\\d]+\\\")),\\n + \ take_anyif(UserDisplayName, isnotempty(UserDisplayName)), FailureOrSuccessCount + = count() by FailureOrSuccess, UserId, UserDisplayName, AppDisplayName, IPAddress, + Browser, OS, State, City, Region, Type, CorrelationId, bin(TimeGenerated, + authenticationWindow), ResultType\\n// sort for sessionizing - by UserPrincipalName + and time of the authentication outcome\\n| sort by UserPrincipalName asc, + TimeGenerated asc\\n| serialize \\n// sessionize into failure groupings until + either the account changes or there is a success\\n| extend SessionStartedUtc + = row_window_session(TimeGenerated, timeRange, authenticationWindow, UserPrincipalName + != prev(UserPrincipalName) or prev(FailureOrSuccess) == \\\"Success\\\")\\n// + count the failures in each session\\n| summarize FailureCountBeforeSuccess=sumif(FailureOrSuccessCount, + FailureOrSuccess == \\\"Failure\\\"), StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), + makelist(FailureOrSuccess), IPAddress = make_set(IPAddress), make_set(Browser), + make_set(City), make_set(State), make_set(Region), make_set(ResultType) by + SessionStartedUtc, UserPrincipalName, CorrelationId, AppDisplayName, UserId, + Type\\n// the session must not start with a success, and must end with one\\n| + where array_index_of(list_FailureOrSuccess, \\\"Success\\\") != 0\\n| where + array_index_of(list_FailureOrSuccess, \\\"Success\\\") == array_length(list_FailureOrSuccess) + - 1\\n| project-away SessionStartedUtc, list_FailureOrSuccess\\n// where the + number of failures before the success is above the threshold \\n| where FailureCountBeforeSuccess + >= failureCountThreshold \\n// expand out ip for entity assignment\\n| mv-expand + IPAddress\\n| extend IPAddress = tostring(IPAddress)\\n| extend timestamp + = StartTime, AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress + \\n};\\n let aadSignin = aadFunc(\\\"SigninLogs\\\");\\n let aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\n + union isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"2.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Brute + force attack against Azure Portal\",\"description\":\"Identifies evidence + of brute force activity against Azure Portal by highlighting multiple authentication + failures \\nand by a successful authentication within a given time window. + \\nDefault Failure count is 5 and default Time Window is 20 minutes.\\nReferences: + https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes.\",\"lastUpdatedDateUTC\":\"2022-06-06T00:00:00Z\",\"createdDateUTC\":\"2019-04-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/23de46ea-c425-4a77-b456-511ae4855d69\",\"name\":\"23de46ea-c425-4a77-b456-511ae4855d69\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\n// The number of operations below which + an IP address is considered an unusual source of role assignment operations\\nlet + alertOperationThreshold = 5;\\nlet SensitiveOperationList = dynamic([\\\"microsoft.compute/snapshots/write\\\", + \\\"microsoft.network/networksecuritygroups/write\\\", \\\"microsoft.storage/storageaccounts/listkeys/action\\\"]);\\nlet + SensitiveActivity = AzureActivity\\n| where OperationNameValue in~ (SensitiveOperationList) + or OperationNameValue hassuffix \\\"listkeys/action\\\"\\n| where ActivityStatusValue + =~ \\\"Success\\\";\\nSensitiveActivity\\n| where TimeGenerated between (ago(starttime) + .. ago(endtime))\\n| summarize count() by CallerIpAddress, Caller, OperationNameValue\\n| + where count_ >= alertOperationThreshold\\n| join kind = rightanti ( \\nSensitiveActivity\\n| + where TimeGenerated >= ago(endtime)\\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated), ActivityTimeStamp = makelist(TimeGenerated), + ActivityStatusValue = makelist(ActivityStatusValue), \\nOperationIds = makelist(OperationId), + CorrelationIds = makelist(CorrelationId), Resources = makelist(Resource), + ResourceGroups = makelist(ResourceGroup), ResourceIds = makelist(ResourceId), + ActivityCountByCallerIPAddress = count() \\nby CallerIpAddress, Caller, OperationNameValue\\n) + on CallerIpAddress, Caller, OperationNameValue\\n| extend timestamp = StartTimeUtc, + AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"CredentialAccess\",\"Persistence\"],\"techniques\":[\"T1003\",\"T1098\"],\"displayName\":\"Rare + subscription-level operations in Azure\",\"description\":\"This query looks + for a few sensitive subscription-level events based on Azure Activity Logs. + \\n For example this monitors for the operation name 'Create or Update Snapshot' + which is used for creating backups but could be misused by attackers \\n to + dump hashes or extract sensitive information from the disk.\",\"lastUpdatedDateUTC\":\"2022-03-15T00:00:00Z\",\"createdDateUTC\":\"2019-08-23T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActivity\",\"dataTypes\":[\"AzureActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/84cf1d59-f620-4fee-b569-68daf7008b7b\",\"name\":\"84cf1d59-f620-4fee-b569-68daf7008b7b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"PT1H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + threshold = 10;\\nQualysHostDetection_CL\\n| mv-expand todynamic(Detections_s)\\n| + extend Status = tostring(Detections_s.Status), Vulnerability = tostring(Detections_s.Results), + Severity = tostring(Detections_s.Severity)\\n| where Status =~ \\\"New\\\" + and Severity == \\\"5\\\"\\n| summarize StartTime = min(TimeGenerated), EndTime + = max(TimeGenerated), dcount(NetBios_s) by tostring(Detections_s.QID)\\n| + where dcount_NetBios_s >= threshold\\n| extend timestamp = StartTime\",\"entityMappings\":[],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"New + High Severity Vulnerability Detected Across Multiple Hosts\",\"description\":\"This + creates an incident when a new high severity vulnerability is detected across + multilple hosts\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-06-19T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"QualysVulnerabilityManagement\",\"dataTypes\":[\"QualysHostDetection_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/bc5ffe2a-84d6-48fe-bc7b-1055100469bc\",\"name\":\"bc5ffe2a-84d6-48fe-bc7b-1055100469bc\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + SunburstMD5=dynamic([\\\"b91ce2fa41029f6955bff20079468448\\\",\\\"02af7cec58b9a5da1c542b5a32151ba1\\\",\\\"2c4a910a1299cdae2a4e55988a2f102e\\\",\\\"846e27a652a5e1bfbd0ddd38a16dc865\\\",\\\"4f2eb62fa529c0283b28d05ddd311fae\\\"]);\\nlet + SupernovaMD5=\\\"56ceb6d0011d87b6e4d7023d7ef85676\\\";\\nimFileEvent\\n| where + TargetFileMD5 in(SunburstMD5) or TargetFileMD5 in(SupernovaMD5)\\n| extend\\n + \ timestamp = TimeGenerated,\\n AccountCustomEntity = User, \\n HostCustomEntity + = DvcHostname,\\n FileHashCustomEntity = TargetFileMD5,\\n AlgorithmCustomEntity + = \\\"MD5\\\"\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"FileHash\",\"fieldMappings\":[{\"identifier\":\"Algorithm\",\"columnName\":\"AlgorithmCustomEntity\"},{\"identifier\":\"Value\",\"columnName\":\"FileHashCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.3\",\"tactics\":[\"Execution\",\"Persistence\",\"InitialAccess\"],\"techniques\":[\"T1195\"],\"displayName\":\"SUNBURST + and SUPERNOVA backdoor hashes (Normalized File Events)\",\"description\":\"Identifies + SolarWinds SUNBURST and SUPERNOVA backdoor file hash IOCs in File Events\\nTo + use this analytics rule, make sure you have deployed the [ASIM normalization + parsers](https://aka.ms/ASimFileEvent)\\nReferences:\\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\\n- + https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f\",\"lastUpdatedDateUTC\":\"2022-02-23T00:00:00Z\",\"createdDateUTC\":\"2020-12-15T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3dccf381-2bb2-40c6-81a0-ab878bdf323f\",\"name\":\"3dccf381-2bb2-40c6-81a0-ab878bdf323f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":[{\"supportedValues\":[\"Number + of operations\",\"Number of failed operations\",\"Number of \\\"interesting\\\" + operations\",\"Number of \\\"interesting\\\" failed operations\",\"Fraction + of operations that are \\\"interesting\\\"\",\"Fraction of failed operations\",\"Fraction + of \\\"interesting\\\" operations that failed\",\"Distinct number of operations\",\"Distinct + number of Azure AD operation types\",\"Distinct number of categories\",\"Distinct + number of categories with \\\"interesting\\\" operations\",\"Distinct number + of \\\"interesting\\\" operations\",\"Distinct number of \\\"interesting\\\" + app management operations\",\"Distinct number of \\\"interesting\\\" device + operations\",\"Distinct number of \\\"interesting\\\" directory management + operations\",\"Distinct number of \\\"interesting\\\" group management operations\",\"Distinct + number of \\\"interesting\\\" role management operations\",\"Distinct number + of \\\"interesting\\\" user management operations\"],\"values\":[\"Number + of operations\",\"Number of failed operations\",\"Number of \\\"interesting\\\" + operations\",\"Number of \\\"interesting\\\" failed operations\",\"Fraction + of operations that are \\\"interesting\\\"\",\"Fraction of failed operations\",\"Fraction + of \\\"interesting\\\" operations that failed\",\"Distinct number of operations\",\"Distinct + number of Azure AD operation types\",\"Distinct number of categories\",\"Distinct + number of categories with \\\"interesting\\\" operations\",\"Distinct number + of \\\"interesting\\\" operations\",\"Distinct number of \\\"interesting\\\" + app management operations\",\"Distinct number of \\\"interesting\\\" device + operations\",\"Distinct number of \\\"interesting\\\" directory management + operations\",\"Distinct number of \\\"interesting\\\" group management operations\",\"Distinct + number of \\\"interesting\\\" role management operations\",\"Distinct number + of \\\"interesting\\\" user management operations\"],\"supportedValuesKql\":null,\"valuesKql\":null,\"name\":\"Top + reason for high anomaly score\",\"description\":\"Include only anomalies where + the top reason is one of these values.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.6\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\",\"Persistence\",\"PrivilegeEscalation\",\"Discovery\",\"Collection\"],\"techniques\":[\"T1190\",\"T1078\",\"T1098\",\"T1136\",\"T1484\",\"T1087\",\"T1538\",\"T1526\",\"T1069\",\"T1518\",\"T1530\"],\"displayName\":\"(Preview) + Anomalous user/app activities in Azure audit logs\",\"description\":\"This + autoencoder model identifies anomalous user/app Azure sessions in audit logs + for the last day.\\nWe define 10 minutes to be the length of a session.\\nIt + groups the Azure audit logs on a per-user/app basis into sessions.\\nIt compresses + these user/app Azure sessions into a bottleneck encoding.\\nIt then reconstructs + the input sessions as best it can from the bottleneck encoding.\\nIf the sessions + have high reconstruction errors, they are assumed to be anomalous.\\nThe model + is trained on the previous 21 days of behavior across all users and apps.\\nThis + algorithm checks for sufficient volume of data before training the model.\",\"lastUpdatedDateUTC\":\"2022-01-18T00:00:00Z\",\"createdDateUTC\":\"2021-04-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AuditLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8cbc3215-fa58-4bd6-aaaa-f0029c351730\",\"name\":\"8cbc3215-fa58-4bd6-aaaa-f0029c351730\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT15M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"eventGroupingSettings\":{\"aggregationKind\":\"AlertPerResult\"},\"severity\":\"Medium\",\"query\":\"let + threatCategory=\\\"Cryptominer\\\";\\nlet knownUserAgentsIndicators = materialize(externaldata(UserAgent:string, + Category:string)\\n [ @\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/UnusualUserAgents.csv\\\"] + \\n with(format=\\\"csv\\\", ignoreFirstRecord=True));\\nlet knownUserAgents=toscalar(knownUserAgentsIndicators + | where Category==threatCategory | where isnotempty(UserAgent) | summarize + make_list(UserAgent));\\nlet customUserAgents=toscalar(_GetWatchlist(\\\"UnusualUserAgents\\\") + | where SearchKey==threatCategory | extend UserAgent=column_ifexists(\\\"UserAgent\\\",\\\"\\\") + | where isnotempty(UserAgent) | summarize make_list(UserAgent));\\nlet fullUAList + = array_concat(knownUserAgents,customUserAgents);\\n_Im_WebSession(httpuseragent_has_any=fullUAList)\\n| + summarize N_Events=count() by SrcIpAddr, Url, TimeGenerated,HttpUserAgent, + SrcUsername\",\"customDetails\":{\"UserAgent\":\"HttpUserAgent\"},\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"Url\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SrcIpAddr\"}]},{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"Name\",\"columnName\":\"SrcUsername\"}]}],\"alertDetailsOverride\":{\"alertDisplayNameFormat\":\"The + host {{SrcIpAddr}} is potentially running a crypto miner\",\"alertDescriptionFormat\":\"The + host at address {{SrcIpAddr}} sent an HTTP request to the URL {{Url}} with + the HTTP user agent header {{HttpUserAgent}}. This user agent is known to + be used by crypto miners and indicates crypto mining activity on the client.\",\"alertTacticsColumnName\":null,\"alertSeverityColumnName\":null},\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"A + host is potentially running a crypto miner (ASIM Web Session schema)\",\"description\":\"This + rule identifies a web request with a user agent header known to belong to + a crypto miner. This indicates a crypto miner may have infected the client + machine.
You can add custom crypto mining indicating User-Agent headers + using a watchlist, for more information refer to the [UnusualUserAgents Watchlist](https://aka.ms/ASimUnusualUserAgentsWatchlist).

+ \ This analytic rule uses [ASIM](https://aka.ms/AboutASIM) and supports any + built-in or custom source that supports the ASIM WebSession schema (ASIM WebSession + Schema)\",\"lastUpdatedDateUTC\":\"2022-03-14T00:00:00Z\",\"createdDateUTC\":\"2021-12-02T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SquidProxy\",\"dataTypes\":[\"SquidProxy_CL\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/24f8c234-d1ff-40ec-8b73-96b17a3a9c1c\",\"name\":\"24f8c234-d1ff-40ec-8b73-96b17a3a9c1c\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + EventCountThreshold = 25;\\n// To avoid any False Positives, filtering using + AppId is recommended. For example the AppId 509e4652-da8d-478d-a730-e9d4a1996ca4 + has been added in the query as it corresponds \\n// to Azure Resource Graph + performing VaultGet operations for indexing and syncing all tracked resources + across Azure.\\nlet Allowedappid = dynamic([\\\"509e4652-da8d-478d-a730-e9d4a1996ca4\\\"]);\\nlet + OperationList = dynamic(\\n[\\\"SecretGet\\\", \\\"KeyGet\\\", \\\"VaultGet\\\"]);\\nAzureDiagnostics\\n| + where not((identity_claim_appid_g in (Allowedappid)) and OperationName == + 'VaultGet')\\n| extend ResultType = columnifexists(\\\"ResultType\\\", \\\"None\\\"), + identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + = columnifexists(\\\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\\\", + \\\"None\\\")\\n| where ResultType !~ \\\"None\\\" and isnotempty(ResultType)\\n| + where identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + !~ \\\"None\\\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\\n| + where ResourceType =~ \\\"VAULTS\\\" and ResultType =~ \\\"Success\\\"\\n| + where OperationName in (OperationList) \\n| summarize count() by identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, + OperationName\\n| where count_ > EventCountThreshold \\n| join (\\nAzureDiagnostics\\n| + where not((identity_claim_appid_g in (Allowedappid)) and OperationName == + 'VaultGet')\\n| extend ResultType = columnifexists(\\\"ResultType\\\", \\\"NoResultType\\\")\\n| + extend requestUri_s = columnifexists(\\\"requestUri_s\\\", \\\"None\\\"), + identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + = columnifexists(\\\"identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\\\", + \\\"None\\\")\\n| extend id_s = columnifexists(\\\"id_s\\\", \\\"None\\\"), + CallerIPAddress = columnifexists(\\\"CallerIPAddress\\\", \\\"None\\\"), clientInfo_s + = columnifexists(\\\"clientInfo_s\\\", \\\"None\\\")\\n| where ResultType + !~ \\\"None\\\" and isnotempty(ResultType)\\n| where identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + !~ \\\"None\\\" and isnotempty(identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g)\\n| + where id_s !~ \\\"None\\\" and isnotempty(id_s)\\n| where CallerIPAddress + !~ \\\"None\\\" and isnotempty(CallerIPAddress)\\n| where clientInfo_s !~ + \\\"None\\\" and isnotempty(clientInfo_s)\\n| where requestUri_s !~ \\\"None\\\" + and isnotempty(requestUri_s)\\n| where OperationName in~ (OperationList) \\n) + on identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g + \\n| summarize EventCount=sum(count_), StartTimeUtc=min(TimeGenerated), EndTimeUtc=max(TimeGenerated), + TimeTriggered=makelist(TimeGenerated),OperationNameList=make_set(OperationName), + RequestURLList=make_set(requestUri_s), CallerIPList = make_set(CallerIPAddress), + \ CallerIPMax= arg_max(CallerIPAddress,*) by ResourceType, ResultType, Resource, + id_s, identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g, + clientInfo_s\\n| extend timestamp = EndTimeUtc, IPCustomEntity = CallerIPMax, + AccountCustomEntity = identity_claim_http_schemas_microsoft_com_identity_claims_objectidentifier_g\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1003\"],\"displayName\":\"Mass + secret retrieval from Azure Key Vault\",\"description\":\"Identifies mass + secret retrieval from Azure Key Vault observed by a single user. \\nMass secret + retrival crossing a certain threshold is an indication of credential dump + operations or mis-configured applications. \\nYou can tweak the EventCountThreshold + based on average count seen in your environment \\nand also filter any known + sources (IP/Account) and useragent combinations based on historical analysis + to further reduce noise\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2019-07-01T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureKeyVault\",\"dataTypes\":[\"KeyVaultData\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b619d1f1-7f39-4c7e-bf9e-afbb46457997\",\"name\":\"b619d1f1-7f39-4c7e-bf9e-afbb46457997\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT15M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 15m;\\nCisco_Umbrella\\n| where EventType == \\\"proxylogs\\\"\\n| + where TimeGenerated > ago(timeframe)\\n| where HttpUserAgentOriginal contains + \\\"XMRig\\\" or HttpUserAgentOriginal contains \\\"ccminer\\\"\\n| extend + Message = \\\"Crypto Miner User Agent\\\"\\n| project Message, SrcIpAddr, + DstIpAddr, UrlOriginal, TimeGenerated,HttpUserAgentOriginal\\n| extend IpCustomEntity + = SrcIpAddr, UrlCustomEntity = UrlOriginal\",\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Cisco + Umbrella - Crypto Miner User-Agent Detected\",\"description\":\"Detects suspicious + user agent strings used by crypto miners in proxy logs.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/dd03057e-4347-4853-bf1e-2b2d21eb4e59\",\"name\":\"dd03057e-4347-4853-bf1e-2b2d21eb4e59\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"NRT\",\"properties\":{\"severity\":\"Low\",\"query\":\"let + DomainList = dynamic([\\\"monerohash.com\\\", \\\"do-dear.com\\\", \\\"xmrminerpro.com\\\", + \\\"secumine.net\\\", \\\"xmrpool.com\\\", \\\"minexmr.org\\\", \\\"hashanywhere.com\\\", + \\\"xmrget.com\\\",\\n\\\"mininglottery.eu\\\", \\\"minergate.com\\\", \\\"moriaxmr.com\\\", + \\\"multipooler.com\\\", \\\"moneropools.com\\\", \\\"xmrpool.eu\\\", \\\"coolmining.club\\\", + \\\"supportxmr.com\\\",\\n\\\"minexmr.com\\\", \\\"hashvault.pro\\\", \\\"xmrpool.net\\\", + \\\"crypto-pool.fr\\\", \\\"xmr.pt\\\", \\\"miner.rocks\\\", \\\"walpool.com\\\", + \\\"herominers.com\\\", \\\"gntl.co.uk\\\", \\\"semipool.com\\\",\\n\\\"coinfoundry.org\\\", + \\\"cryptoknight.cc\\\", \\\"fairhash.org\\\", \\\"baikalmine.com\\\", \\\"tubepool.xyz\\\", + \\\"fairpool.xyz\\\", \\\"asiapool.io\\\", \\\"coinpoolit.webhop.me\\\", \\\"nanopool.org\\\",\\n\\\"moneropool.com\\\", + \\\"miner.center\\\", \\\"prohash.net\\\", \\\"poolto.be\\\", \\\"cryptoescrow.eu\\\", + \\\"monerominers.net\\\", \\\"cryptonotepool.org\\\", \\\"extrmepool.org\\\", + \\\"webcoin.me\\\",\\n\\\"kippo.eu\\\", \\\"hashinvest.ws\\\", \\\"monero.farm\\\", + \\\"supportxmr.com\\\", \\\"xmrpool.eu\\\", \\\"linux-repository-updates.com\\\", + \\\"1gh.com\\\", \\\"dwarfpool.com\\\", \\\"hash-to-coins.com\\\",\\n\\\"hashvault.pro\\\", + \\\"pool-proxy.com\\\", \\\"hashfor.cash\\\", \\\"fairpool.cloud\\\", \\\"litecoinpool.org\\\", + \\\"mineshaft.ml\\\", \\\"abcxyz.stream\\\", \\\"moneropool.ru\\\", \\\"cryptonotepool.org.uk\\\",\\n\\\"extremepool.org\\\", + \\\"extremehash.com\\\", \\\"hashinvest.net\\\", \\\"unipool.pro\\\", \\\"crypto-pools.org\\\", + \\\"monero.net\\\", \\\"backup-pool.com\\\", \\\"mooo.com\\\", \\\"freeyy.me\\\", + \\\"cryptonight.net\\\",\\n\\\"shscrypto.net\\\"]);\\nSyslog\\n| where ProcessName + contains \\\"squid\\\"\\n| extend URL = extract(\\\"(([A-Z]+ [a-z]{4,5}:\\\\\\\\/\\\\\\\\/)|[A-Z]+ + )([^ :]*)\\\",3,SyslogMessage),\\n SourceIP = extract(\\\"([0-9]+ )(([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3})\\\\\\\\.([0-9]{1,3}))\\\",2,SyslogMessage),\\n + \ Status = extract(\\\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))\\\",1,SyslogMessage),\\n + \ HTTP_Status_Code = extract(\\\"(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))/([0-9]{3})\\\",8,SyslogMessage),\\n + \ User = extract(\\\"(CONNECT |GET )([^ ]* )([^ ]+)\\\",3,SyslogMessage),\\n + \ RemotePort = extract(\\\"(CONNECT |GET )([^ ]*)(:)([0-9]*)\\\",4,SyslogMessage),\\n + \ Domain = extract(\\\"(([A-Z]+ [a-z]{4,5}:\\\\\\\\/\\\\\\\\/)|[A-Z]+ + )([^ :\\\\\\\\/]*)\\\",3,SyslogMessage),\\n Bytes = toint(extract(\\\"([A-Z]+\\\\\\\\/[0-9]{3} + )([0-9]+)\\\",2,SyslogMessage)),\\n contentType = extract(\\\"([a-z/]+$)\\\",1,SyslogMessage)\\n| + extend TLD = extract(\\\"\\\\\\\\.[a-z]*$\\\",0,Domain)\\n| where HTTP_Status_Code + == '200'\\n| where Domain contains \\\".\\\"\\n| where Domain has_any (DomainList)\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"User\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"SourceIP\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URL\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1102\"],\"displayName\":\"NRT + Squid proxy events related to mining pools\",\"description\":\"Checks for + Squid proxy events in Syslog associated with common mining pools .This query + presumes the default Squid log format is being used.\\n http://www.squid-cache.org/Doc/config/access_log/\",\"lastUpdatedDateUTC\":\"2022-05-31T00:00:00Z\",\"createdDateUTC\":\"2019-07-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2b701288-b428-4fb8-805e-e4372c574786\",\"name\":\"2b701288-b428-4fb8-805e-e4372c574786\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"//The + bigger the window the better the data sample size, as we use IP prevalence, + more sample data is better.\\n//The minimum number of countries that the account + has been accessed from [default: 2]\\nlet minimumCountries = 2;\\n//The delta + (%) between the largest in-use IP and the smallest [default: 95]\\nlet deltaThreshold + = 95;\\n//The maximum (%) threshold that the country appears in login data + [default: 10]\\nlet countryPrevalenceThreshold = 10;\\n//The time to project + forward after the last login activity [default: 60min]\\nlet projectedEndTime + = 60m;\\nlet queryfrequency = 1d;\\nlet queryperiod = 14d;\\nlet aadFunc = + (tableName: string) {\\n // Get successful signins to Teams\\n let signinData + =\\n table(tableName)\\n | where TimeGenerated > ago(queryperiod)\\n + \ | where AppDisplayName has \\\"Teams\\\" and ConditionalAccessStatus + =~ \\\"success\\\"\\n | extend Country = tostring(todynamic(LocationDetails)['countryOrRegion'])\\n + \ | where isnotempty(Country) and isnotempty(IPAddress);\\n // Calculate + prevalence of countries\\n let countryPrevalence =\\n signinData\\n + \ | summarize CountCountrySignin = count() by Country\\n | extend + TotalSignin = toscalar(signinData | summarize count())\\n | extend + CountryPrevalence = toreal(CountCountrySignin) / toreal(TotalSignin) * 100;\\n + \ // Count signins by user and IP address\\n let userIpSignin =\\n signinData\\n + \ | summarize CountIPSignin = count(), Country = any(Country), ListSigninTimeGenerated + = make_list(TimeGenerated) by IPAddress, UserPrincipalName;\\n // Calculate + delta between the IP addresses with the most and minimum activity by user\\n + \ let userIpDelta =\\n userIpSignin\\n | summarize MaxIPSignin + = max(CountIPSignin), MinIPSignin = min(CountIPSignin), DistinctCountries + = dcount(Country), make_set(Country) by UserPrincipalName\\n | extend + UserIPDelta = toreal(MaxIPSignin - MinIPSignin) / toreal(MaxIPSignin) * 100;\\n + \ // Collect Team operations the user account has performed within a time + range of the suspicious signins\\n OfficeActivity\\n | where TimeGenerated + > ago(queryfrequency)\\n | where Operation in~ (\\\"TeamsAdminAction\\\", + \\\"MemberAdded\\\", \\\"MemberRemoved\\\", \\\"MemberRoleChanged\\\", \\\"AppInstalled\\\", + \\\"BotAddedToTeam\\\")\\n | project OperationTimeGenerated = TimeGenerated, + UserId = tolower(UserId), Operation\\n | join kind = inner(\\n userIpDelta\\n + \ // Check users with activity from distinct countries\\n | where + DistinctCountries >= minimumCountries\\n // Check users with high IP + delta\\n | where UserIPDelta >= deltaThreshold\\n // Add information + about signins and countries\\n | join kind = leftouter userIpSignin + on UserPrincipalName\\n | join kind = leftouter countryPrevalence on + Country\\n // Check activity that comes from nonprevalent countries\\n + \ | where CountryPrevalence < countryPrevalenceThreshold\\n | + project\\n UserPrincipalName,\\n SuspiciousIP = IPAddress,\\n + \ UserIPDelta,\\n SuspiciousSigninCountry = Country,\\n + \ SuspiciousCountryPrevalence = CountryPrevalence,\\n EventTimes + = ListSigninTimeGenerated\\n ) on $left.UserId == $right.UserPrincipalName\\n + \ // Check the signins occured 60 min before the Teams operations\\n | + mv-expand SigninTimeGenerated = EventTimes\\n | extend SigninTimeGenerated + = todatetime(SigninTimeGenerated)\\n | where OperationTimeGenerated between + (SigninTimeGenerated .. (SigninTimeGenerated + projectedEndTime))\\n};\\nlet + aadSignin = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\\n| summarize arg_max(SigninTimeGenerated, + *) by UserPrincipalName, SuspiciousIP, OperationTimeGenerated\\n| summarize\\n + \ ActivitySummary = make_bag(pack(tostring(SigninTimeGenerated), pack(\\\"Operation\\\", + tostring(Operation), \\\"OperationTime\\\", OperationTimeGenerated)))\\n by + UserPrincipalName, SuspiciousIP, SuspiciousSigninCountry, SuspiciousCountryPrevalence\\n| + extend IPCustomEntity = SuspiciousIP, AccountCustomEntity = UserPrincipalName\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"InitialAccess\",\"Persistence\"],\"techniques\":[\"T1199\",\"T1136\",\"T1078\",\"T1098\"],\"displayName\":\"Anomalous + login followed by Teams action\",\"description\":\"Detects anomalous IP address + usage by user accounts and then checks to see if a suspicious Teams action + is performed.\\nQuery calculates IP usage Delta for each user account and + selects accounts where a delta >= 90% is observed between the most and least + used IP.\\nTo further reduce results the query performs a prevalence check + on the lowest used IP's country, only keeping IP's where the country is unusual + for the tenant (dynamic ranges)\\nFinally the user accounts activity within + Teams logs is checked for suspicious commands (modifying user privileges or + admin actions) during the period the suspicious IP was active.\",\"lastUpdatedDateUTC\":\"2022-03-21T00:00:00Z\",\"createdDateUTC\":\"2020-06-30T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/fa118b98-de46-4e94-87f9-8e6d5060b60b\",\"name\":\"fa118b98-de46-4e94-87f9-8e6d5060b60b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"MLBehaviorAnalytics\",\"properties\":{\"severity\":\"Medium\",\"tactics\":[\"InitialAccess\"],\"displayName\":\"(Preview) + Anomalous SSH Login Detection\",\"description\":\"This detection uses machine + learning (ML) to identify anomalous Secure Shell (SSH) login activity, based + on syslog data. Scenarios include:\\n\\n*\\tUnusual IP - This IP address has + not or has rarely been seen in last 30 days.\\n*\\tUnusual Geo - The IP address, + city, country and ASN have not (or rarely) been seen in last 30 days.\\n*\\tNew + user - A new user logs in from an IP address and geo location, both or either + of which are not expected to be seen in the last 30 days.\\n\\nAllow 7 days + after this alert is enabled for Microsoft Sentinel to build a profile of normal + activity for your environment.\\n\\nThis detection requires a specific configuration + of the data source. [Learn more](https://docs.microsoft.com/en-us/azure/sentinel/connect-syslog#configure-the-syslog-connector-for-anomalous-ssh-login-detection)\\n\\nBy + enabling this rule, you give Microsoft permission to copy ingested data outside + of your Microsoft Sentinel workspace's geography as necessary for processing + by the machine learning engine.\",\"lastUpdatedDateUTC\":\"2021-03-26T00:00:00Z\",\"createdDateUTC\":\"2019-08-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Syslog\",\"dataTypes\":[\"Syslog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/c094384d-7ea7-4091-83be-18706ecca981\",\"name\":\"c094384d-7ea7-4091-83be-18706ecca981\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"let + minersDomains=dynamic([\\\"monerohash.com\\\", \\\"do-dear.com\\\", \\\"xmrminerpro.com\\\", + \\\"secumine.net\\\", \\\"xmrpool.com\\\", \\\"minexmr.org\\\", \\\"hashanywhere.com\\\", + \\n\\\"xmrget.com\\\", \\\"mininglottery.eu\\\", \\\"minergate.com\\\", \\\"moriaxmr.com\\\", + \\\"multipooler.com\\\", \\\"moneropools.com\\\", \\\"xmrpool.eu\\\", \\\"coolmining.club\\\", + \\n\\\"supportxmr.com\\\", \\\"minexmr.com\\\", \\\"hashvault.pro\\\", \\\"xmrpool.net\\\", + \\\"crypto-pool.fr\\\", \\\"xmr.pt\\\", \\\"miner.rocks\\\", \\\"walpool.com\\\", + \\\"herominers.com\\\", \\n\\\"gntl.co.uk\\\", \\\"semipool.com\\\", \\\"coinfoundry.org\\\", + \\\"cryptoknight.cc\\\", \\\"fairhash.org\\\", \\\"baikalmine.com\\\", \\\"tubepool.xyz\\\", + \\\"fairpool.xyz\\\", \\\"asiapool.io\\\", \\n\\\"coinpoolit.webhop.me\\\", + \\\"nanopool.org\\\", \\\"moneropool.com\\\", \\\"miner.center\\\", \\\"prohash.net\\\", + \\\"poolto.be\\\", \\\"cryptoescrow.eu\\\", \\\"monerominers.net\\\", \\\"cryptonotepool.org\\\", + \\n\\\"extrmepool.org\\\", \\\"webcoin.me\\\", \\\"kippo.eu\\\", \\\"hashinvest.ws\\\", + \\\"monero.farm\\\", \\\"supportxmr.com\\\", \\\"xmrpool.eu\\\", \\\"linux-repository-updates.com\\\", + \\\"1gh.com\\\", \\n\\\"dwarfpool.com\\\", \\\"hash-to-coins.com\\\", \\\"hashvault.pro\\\", + \\\"pool-proxy.com\\\", \\\"hashfor.cash\\\", \\\"fairpool.cloud\\\", \\\"litecoinpool.org\\\", + \\\"mineshaft.ml\\\", \\\"abcxyz.stream\\\", \\n\\\"moneropool.ru\\\", \\\"cryptonotepool.org.uk\\\", + \\\"extremepool.org\\\", \\\"extremehash.com\\\", \\\"hashinvest.net\\\", + \\\"unipool.pro\\\", \\\"crypto-pools.org\\\", \\\"monero.net\\\", \\n\\\"backup-pool.com\\\", + \\\"mooo.com\\\", \\\"freeyy.me\\\", \\\"cryptonight.net\\\", \\\"shscrypto.net\\\"]);\\n_Im_Dns(domain_has_any=minersDomains)\\n| + extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity + = Dvc\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"Impact\"],\"techniques\":[\"T1496\"],\"displayName\":\"DNS + events related to mining pools (ASIM DNS Schema)\",\"description\":\"Identifies + IP addresses that may be performing DNS lookups associated with common currency + mining pools.\\nThis analytic rule uses [ASIM](https://aka.ms/AboutASIM) and + supports any built-in or custom source that supports the ASIM DNS schema\",\"lastUpdatedDateUTC\":\"2022-04-10T00:00:00Z\",\"createdDateUTC\":\"2019-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/15ae38a2-2e29-48f7-883f-863fb25a5a06\",\"name\":\"15ae38a2-2e29-48f7-883f-863fb25a5a06\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P8D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 8d;\\nlet endtime = 1d;\\nlet threshold = 10;\\nDnsEvents \\n| + where TimeGenerated > ago(endtime)\\n| where Name contains \\\"in-addr.arpa\\\" + \\n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), + dcount(Name) by ClientIP\\n| where dcount_Name > threshold\\n| project StartTimeUtc, + EndTimeUtc, ClientIP , dcount_Name \\n| join kind=leftanti (DnsEvents \\n + \ | where TimeGenerated between(ago(starttime)..ago(endtime))\\n | where + Name contains \\\"in-addr.arpa\\\" \\n | summarize dcount(Name) by ClientIP, + bin(TimeGenerated, 1d)\\n | where dcount_Name > threshold\\n | project + ClientIP , dcount_Name \\n) on ClientIP\\n| extend timestamp = StartTimeUtc, + IPCustomEntity = ClientIP\",\"entityMappings\":[{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Discovery\"],\"techniques\":[\"T1046\"],\"displayName\":\"Rare + client observed with high reverse DNS lookup count\",\"description\":\"Identifies + clients with a high reverse DNS counts which could be carrying out reconnaissance + or discovery activity.\\nAlert is generated if the IP performing such reverse + DNS lookups was not seen doing so in the preceding 7-day period.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2019-02-07T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a7427ed7-04b4-4e3b-b323-08b981b9b4bf\",\"name\":\"a7427ed7-04b4-4e3b-b323-08b981b9b4bf\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\n let ioc_lookBack = 14d;\\n ThreatIntelligenceIndicator\\n + | where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n + | summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n + | where Active == true\\n | where isnotempty(FileHashValue)\\n | extend FileHashValue + = toupper(FileHashValue)\\n // using innerunique to keep perf fast and result + set low, we only need one match to indicate potential malicious activity that + needs to be investigated\\n | join kind=innerunique ( union isfuzzy=true \\n + \ (SecurityEvent | where TimeGenerated >= ago(dt_lookBack)\\n | where + EventID in (\\\"8003\\\",\\\"8002\\\",\\\"8005\\\")\\n | where isnotempty(FileHash)\\n + \ | extend SecurityEvent_TimeGenerated = TimeGenerated, Event = EventID, + FileHash = toupper(FileHash)\\n ),\\n (WindowsEvent | where TimeGenerated + >= ago(dt_lookBack)\\n | where EventID in (\\\"8003\\\",\\\"8002\\\",\\\"8005\\\")\\n + \ | where isnotempty(EventData.FileHash)\\n | extend SecurityEvent_TimeGenerated + = TimeGenerated, Event = EventID, FileHash = toupper(EventData.FileHash)\\n + \ )\\n )\\n on $left.FileHashValue == $right.FileHash\\n | where SecurityEvent_TimeGenerated + < ExpirationDateTime\\n | summarize SecurityEvent_TimeGenerated = arg_max(SecurityEvent_TimeGenerated, + *) by IndicatorId, FileHash\\n | project SecurityEvent_TimeGenerated, Description, + ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, ConfidenceScore,\\n + Process, FileHash, Computer, Account, Event\\n | extend timestamp = SecurityEvent_TimeGenerated, + AccountCustomEntity = Account, HostCustomEntity = Computer, URLCustomEntity + = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map File Hash to Security Event\",\"description\":\"Identifies a match in + Security Event data from any File Hash IOC from TI\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]},{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/1bf6e165-5e32-420e-ab4f-0da8558a8be2\",\"name\":\"1bf6e165-5e32-420e-ab4f-0da8558a8be2\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"// + How far back to look for events from\\nlet timeframe = 1d;\\n// How close + together build events and file modifications should occur to alert (make this + smaller to reduce FPs)\\nlet time_window = 5m;\\n// Edit this to include build + processes used\\nlet build_processes = dynamic([\\\"MSBuild.exe\\\", \\\"dotnet.exe\\\", + \\\"VBCSCompiler.exe\\\"]);\\n// Include any processes that you want to allow + to edit files during/around the build process\\nlet allow_list = dynamic([]);\\nDeviceProcessEvents\\n| + where TimeGenerated > ago(timeframe)\\n// Look for build process starts\\n| + where FileName has_any (build_processes)\\n| summarize by BuildParentProcess=InitiatingProcessFileName, + BuildProcess=FileName, BuildAccount = AccountName, DeviceName, BuildCommand=ProcessCommandLine, + timekey= bin(TimeGenerated, time_window), BuildProcessTime=TimeGenerated\\n| + join kind=inner(\\nDeviceFileEvents\\n| where TimeGenerated > ago(timeframe)\\n| + where InitiatingProcessFileName !in (allow_list)\\n| where ActionType == \\\"FileCreated\\\" + \ or ActionType == \\\"FileModified\\\"\\n// Look for code files, edit this + to include file extensions used in build.\\n| where FileName endswith \\\".cs\\\" + or FileName endswith \\\".cpp\\\"\\n| summarize by FileEditParentProcess=InitiatingProcessParentFileName, + FileEditAccount = InitiatingProcessAccountName, DeviceName, FileEdited=FileName, + FileEditProcess=InitiatingProcessFileName, timekey= bin(TimeGenerated, time_window), + FileEditTime=TimeGenerated)\\n// join where build processes and file modifications + seen at same time on same host\\non timekey, DeviceName\\n// Limit to only + where the file edit happens after the build process starts\\n| where BuildProcessTime + <= FileEditTime\\n| summarize make_set(FileEdited), make_set(FileEditProcess), + make_set(FileEditAccount) by timekey, DeviceName, BuildParentProcess, BuildProcess\\n| + extend HostCustomEntity=DeviceName, timestamp=timekey\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"techniques\":[\"T1554\"],\"displayName\":\"Potential + Build Process Compromise - MDE\",\"description\":\"The query looks for source + code files being modified immediately after a build process is started. The + purpose of this is to look for malicious code injection during the build process. + This query uses Microsoft Defender for Endpoint telemetry.\\nMore details: + https://techcommunity.microsoft.com/t5/azure-sentinel/monitoring-the-software-supply-chain-with-azure-sentinel/ba-p/2176463\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceProcessEvents\",\"DeviceFileEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/957cb240-f45d-4491-9ba5-93430a3c08be\",\"name\":\"957cb240-f45d-4491-9ba5-93430a3c08be\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"OfficeActivity\\n| + where Operation in~ ( \\\"Add-MailboxPermission\\\", \\\"Add-MailboxFolderPermission\\\", + \\\"Set-Mailbox\\\", \\\"New-ManagementRoleAssignment\\\", \\\"New-InboxRule\\\", + \\\"Set-InboxRule\\\", \\\"Set-TransportRule\\\")\\nand not(UserId has_any + ('NT AUTHORITY\\\\\\\\SYSTEM (Microsoft.Exchange.ServiceHost)', 'NT AUTHORITY\\\\\\\\SYSTEM + (w3wp)', 'devilfish-applicationaccount') and Operation in~ ( \\\"Add-MailboxPermission\\\", + \\\"Set-Mailbox\\\"))\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = UserId, IPCustomEntity = ClientIP\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.2\",\"tactics\":[\"Persistence\",\"Collection\"],\"techniques\":[\"T1098\",\"T1114\"],\"displayName\":\"Rare + and potentially high-risk Office operations\",\"description\":\"Identifies + Office operations that are typically rare and can provide capabilities useful + to attackers.\",\"lastUpdatedDateUTC\":\"2022-02-18T00:00:00Z\",\"createdDateUTC\":\"2019-02-13T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2fc5d810-c9cc-491a-b564-841427ae0e50\",\"name\":\"2fc5d810-c9cc-491a-b564-841427ae0e50\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT1H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nlet emailregex = @'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$';\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId\\n| + where Active == true\\n//Filtering the table for Email related IOCs\\n| where + isnotempty(EmailSenderAddress)\\n// using innerunique to keep perf fast and + result set low, we only need one match to indicate potential malicious activity + that needs to be investigated\\n| join kind=innerunique ( \\n(union isfuzzy=true\\n(SecurityEvent\\n| + where TimeGenerated >= ago(dt_lookBack) and isnotempty(TargetUserName)\\n//Normalizing + the column to lower case for exact match with EmailSenderAddress column\\n| + extend TargetUserName = tolower(TargetUserName)\\n// renaming timestamp column + so it is clear the log this came from SecurityEvent table\\n| extend SecurityEvent_TimeGenerated + = TimeGenerated\\n),\\n(WindowsEvent\\n| where TimeGenerated >= ago(dt_lookBack) + \\n| extend TargetUserName = tostring(EventData.TargetUserName) \\n| where + isnotempty(TargetUserName)\\n//Normalizing the column to lower case for exact + match with EmailSenderAddress column\\n| extend TargetUserName = tolower(TargetUserName)\\n// + renaming timestamp column so it is clear the log this came from SecurityEvent + table\\n| extend SecurityEvent_TimeGenerated = TimeGenerated\\n))\\n)\\non + $left.EmailSenderAddress == $right.TargetUserName\\n| where SecurityEvent_TimeGenerated + < ExpirationDateTime\\n| summarize SecurityEvent_TimeGenerated = arg_max(SecurityEvent_TimeGenerated, + *) by IndicatorId, TargetUserName\\n| project SecurityEvent_TimeGenerated, + Description, ActivityGroupNames, IndicatorId, ThreatType, Url, ExpirationDateTime, + ConfidenceScore,\\nEmailSenderName, EmailRecipient, EmailSourceDomain, EmailSourceIpAddress, + EmailSubject, FileHashValue, FileHashType, Computer, EventID, TargetUserName, + Activity, IpAddress, AccountType,\\nLogonTypeName, LogonProcessName, Status, + SubStatus\\n| extend\\ntimestamp = SecurityEvent_TimeGenerated,\\nAccountCustomEntity + = TargetUserName,\\nIPCustomEntity = IpAddress,\\nHostCustomEntity = Computer,\\nURLCustomEntity + = Url\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.3.1\",\"tactics\":[\"Impact\"],\"displayName\":\"TI + map Email entity to SecurityEvent\",\"description\":\"Identifies a match in + SecurityEvent table from any Email IOC from TI\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-08-27T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/8a12afde-ed27-46ac-a5ef-392e3d4f071f\",\"name\":\"8a12afde-ed27-46ac-a5ef-392e3d4f071f\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.0.1\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":[{\"supportedValues\":[\"1\",\"2\",\"3\"],\"supportedValuesKql\":null,\"value\":\"3\",\"name\":\"Number + of reasons for anomalous activity\",\"description\":\"Provide explanations + for the specified number of reasons why a W3CIIS session is anomalous.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"},{\"supportedValues\":[\"Distinct + number of methods\",\"Distinct number of uri queries\",\"Distinct number of + uri stems\",\"Distinct number of statuses\",\"Distinct number of user agents\",\"Total + number of operations\",\"Total number of http verbs\",\"Total number of http + statuses\",\"None\"],\"supportedValuesKql\":null,\"value\":\"None\",\"name\":\"Display + anomalies for a specific top reason\",\"description\":\"Display anomalies + only where the top reason is specified in the checklist.\",\"sequenceNumber\":1,\"rerun\":\"RerunAlways\"},{\"supportedValues\":[\"Public + IPs\",\"Private IPs\",\"All IPs\"],\"supportedValuesKql\":null,\"value\":\"All + IPs\",\"name\":\"Display anomalies for public, private, or all IPs\",\"description\":\"Choose + to display anomalies for public, private, or all IPs.\",\"sequenceNumber\":2,\"rerun\":\"RerunAlways\"}],\"prioritizeExcludeObservations\":[{\"prioritize\":null,\"exclude\":null,\"dataType\":\"string\",\"name\":\"Exclude + client IPs from the anomalies generated\",\"description\":\"Enter comma separated + client IPs (prefixed client IP entities supported) that the anomalies should + not display results for, in the exclude field.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"thresholdObservations\":[{\"minimum\":\"0.0\",\"maximum\":\"1.0\",\"value\":\"0.7\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when the anomaly score is greater than or equal to the chosen value.\",\"sequenceNumber\":0,\"rerun\":\"RerunAlways\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\",\"Persistence\"],\"techniques\":[\"T1190\",\"T1505\"],\"displayName\":\"(Preview) + Anomalous W3CIIS logs activity\",\"description\":\"This anomaly indicates + anomalous W3CIIS sessions within the last day, due to reasons such as a high + number of distinct uri queries, specific http verbs or http statuses, user + agents, or an unusually high number of logs in a session.\\nThe machine learning + algorithm identifies unusual W3CIIS log events within an hourly session, grouped + by site name and client IP.\\nThe model is trained on the previous 7 days + of W3CIIS activity, using an autoencoder. The algorithm checks for sufficient + volume of W3CIIS activity before training the model.\\nThe autoencoder compressess + these site name/client IP sessions using a bottleneck encoding, and reconstructs + the input sessions using a decoder.\\nSessions with high reconstruction errors + are marked as anomalous.\",\"lastUpdatedDateUTC\":\"2022-03-17T00:00:00Z\",\"createdDateUTC\":\"2021-07-26T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureMonitor(IIS)\",\"dataTypes\":[\"W3CIISLog\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/01f64465-b1ef-41ea-a7f5-31553a11ad43\",\"name\":\"01f64465-b1ef-41ea-a7f5-31553a11ad43\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + endpointData = \\n(union isfuzzy=true\\n(SecurityEvent\\n | where EventID + == 4688\\n | extend shortFileName = tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n + \ ),\\n (WindowsEvent\\n | where EventID == 4688\\n | extend NewProcessName + = tostring(EventData.NewProcessName)\\n | extend shortFileName = tostring(split(NewProcessName, + '\\\\\\\\')[-1])\\n | extend TargetUserName = tostring(EventData.TargetUserName)\\n + \ ));\\n// Correlate suspect executables seen in TrendMicro rule updates with + similar activity on endpoints\\nCommonSecurityLog\\n| where DeviceVendor =~ + \\\"Trend Micro\\\"\\n| where Activity =~ \\\"Deny List updated\\\" \\n| where + RequestURL endswith \\\".exe\\\"\\n| project TimeGenerated, Activity , RequestURL + , SourceIP, DestinationIP\\n| extend suspectExeName = tolower(tostring(split(RequestURL, + '/')[-1]))\\n| join (endpointData) on $left.suspectExeName == $right.shortFileName + \\n| extend timestamp = TimeGenerated, IPCustomEntity = DestinationIP, AccountCustomEntity + = TargetUserName, HostCustomEntity = Computer, URLCustomEntity = RequestURL\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.2\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1204\"],\"displayName\":\"Network + endpoint to host executable correlation\",\"description\":\"Correlates blocked + URLs hosting [malicious] executables with host endpoint data\\nto identify + potential instances of executables of the same name having been recently run.\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2019-07-08T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"TrendMicro\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/5efb0cfd-063d-417a-803b-562eae5b0301\",\"name\":\"5efb0cfd-063d-417a-803b-562eae5b0301\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 6h;\\n// Ignore Build/Releases with less/equal + this number\\nlet ServiceConnectionThreshold = 3;\\n// New Connections need + to exhibit execution of more \\\"new\\\" connections than this number.\\nlet + NewConnectionThreshold = 1;\\n// List of Builds/Releases to ignore in your + space\\nlet BypassDefIds = datatable(DefId:string, Type:string, ProjectName:string)\\n[\\n//\\\"103\\\", + \\\"Release\\\", \\\"ProjectA\\\",\\n//\\\"42\\\", \\\"Release\\\", \\\"ProjectB\\\",\\n//\\\"122\\\", + \\\"Build\\\", \\\"ProjectB\\\"\\n];\\nlet HistoricDefs = AzureDevOpsAuditing\\n| + where TimeGenerated between (ago(starttime) .. ago(endtime))\\n| where OperationName + == \\\"Library.ServiceConnectionExecuted\\\" \\n| extend DefId = tostring(Data.DefinitionId), + Type = tostring(Data.PlanType), ConnectionId = tostring(Data.ConnectionId)\\n| + summarize HistoricCount = dcount(tostring(ConnectionId)), ConnectionNames + = make_set(tostring(Data.ConnectionName)) \\n by DefId = tostring(DefId), + Type = tostring(Type), ProjectId, ProjectName, ActorUPN;\\nAzureDevOpsAuditing\\n| + where TimeGenerated >= ago(endtime)\\n| where OperationName == \\\"Library.ServiceConnectionExecuted\\\" + \\n| extend DefId = tostring(Data.DefinitionId), Type = tostring(Data.PlanType), + ConnectionId = tostring(Data.ConnectionId)\\n| parse ScopeDisplayName with + OrganizationName ' (Organization)'\\n| summarize CurrentCount = dcount(tostring(ConnectionId)), + ConnectionNames = make_set(tostring(Data.ConnectionName)), StartTime = min(TimeGenerated), + EndTime = max(TimeGenerated) \\n by OrganizationName, DefId = tostring(DefId), + Type = tostring(Type), ProjectId, ProjectName, ActorUPN\\n| where CurrentCount + > ServiceConnectionThreshold\\n| join (HistoricDefs) on ProjectId, DefId, + Type, ActorUPN\\n| join kind=anti BypassDefIds on $left.DefId==$right.DefId + and $left.Type == $right.Type and $left.ProjectName == $right.ProjectName\\n| + extend link = iff(\\nType == \\\"Build\\\", strcat('https://dev.azure.com/', + OrganizationName, '/', ProjectName, '/_build?definitionId=', DefId),\\nstrcat('https://dev.azure.com/', + OrganizationName, '/', ProjectName, '/_release?_a=releases&view=mine&definitionId=', + DefId))\\n| where CurrentCount >= HistoricCount + NewConnectionThreshold\\n| + project StartTime, OrganizationName, ProjectName, DefId, link, RecentDistinctServiceConnections + = CurrentCount, HistoricDistinctServiceConnections = HistoricCount, \\n RecentConnections + = ConnectionNames, HistoricConnections = ConnectionNames1, ActorUPN\\n| extend + timestamp = StartTime, AccountCustomEntity = ActorUPN\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"Persistence\",\"Impact\"],\"techniques\":[\"T1098\",\"T1496\"],\"displayName\":\"Azure + DevOps Service Connection Addition/Abuse - Historic allow list\",\"description\":\"This + detection builds an allow list of historic service connection use by Builds + and Releases and compares to recent history, flagging growth of service connection + use which are not manually included in the allow list and \\nnot historically + included in the allow list Build/Release runs. This is to determine if someone + is hijacking a build/release and adding many service connections in order + to abuse or dump credentials from service connections.\",\"lastUpdatedDateUTC\":\"2021-10-20T00:00:00Z\",\"createdDateUTC\":\"2020-06-04T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3bd33158-3f0b-47e3-a50f-7c20a1b88038\",\"name\":\"3bd33158-3f0b-47e3-a50f-7c20a1b88038\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + SpringShell_threats = dynamic([\\\"Trojan:Python/SpringShellExpl\\\", \\\"Exploit:Python/SpringShell\\\", + \\\"Backdoor:PHP/Remoteshell.V\\\", \\\"SpringShell\\\"]);\\nDeviceInfo\\n| + extend DeviceName = tolower(DeviceName)\\n| join kind=inner ( SecurityAlert\\n| + where ProviderName == \\\"MDATP\\\"\\n| extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\\n| + extend ThreatFamilyName = tostring(parse_json(ExtendedProperties).ThreatFamilyName)\\n| + where ThreatName in~ (SpringShell_threats) or ThreatFamilyName in~ (SpringShell_threats)\\n| + extend CompromisedEntity = tolower(CompromisedEntity)\\n) on $left.DeviceName + == $right.CompromisedEntity\\n| summarize by DisplayName, ThreatName, ThreatFamilyName, + PublicIP, AlertSeverity, Description, tostring(LoggedOnUsers), DeviceId, TenantId + , bin(TimeGenerated, 1d), CompromisedEntity, tostring(LoggedOnUsers), ProductName, + Entities\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"CompromisedEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"PublicIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1190\"],\"displayName\":\"AV + detections related to SpringShell Vulnerability\",\"description\":\"This query + looks for Microsoft Defender AV detections related to SpringShell Vulnerability. + In Microsoft Sentinel the SecurityAlerts table includes only the Device Name + of the affected device, \\n this query joins the DeviceInfo table to clearly + connect other information such as Device group, ip, logged on users etc. This + would allow the Microsoft Sentinel analyst to have more context related to + the alert, if available.\\n Reference: https://www.microsoft.com/security/blog/2022/04/04/springshell-rce-vulnerability-guidance-for-protecting-against-and-detecting-cve-2022-22965/\",\"lastUpdatedDateUTC\":\"2022-04-05T00:00:00Z\",\"createdDateUTC\":\"2022-04-05T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"SecurityAlert\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/b4ceb583-4c44-4555-8ecf-39f572e827ba\",\"name\":\"b4ceb583-4c44-4555-8ecf-39f572e827ba\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + starttime = 14d;\\nlet endtime = 1d;\\nlet timeframe = 1h;\\nlet scorethreshold + = 1.5;\\nlet percentthreshold = 50;\\n// Preparing the time series data aggregated + hourly count of MailItemsAccessd Operation in the form of multi-value array + to use with time series anomaly function.\\nlet TimeSeriesData =\\nOfficeActivity\\n| + where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))\\n| + where OfficeWorkload=~ \\\"Exchange\\\" and Operation =~ \\\"MailItemsAccessed\\\" + and ResultStatus =~ \\\"Succeeded\\\"\\n| project TimeGenerated, Operation, + MailboxOwnerUPN\\n| make-series Total=count() on TimeGenerated from startofday(ago(starttime)) + to startofday(ago(endtime)) step timeframe;\\nlet TimeSeriesAlerts = TimeSeriesData\\n| + extend (anomalies, score, baseline) = series_decompose_anomalies(Total, scorethreshold, + -1, 'linefit')\\n| mv-expand Total to typeof(double), TimeGenerated to typeof(datetime), + anomalies to typeof(double), score to typeof(double), baseline to typeof(long)\\n| + where anomalies > 0\\n| project TimeGenerated, Total, baseline, anomalies, + score;\\n// Joining the flagged outlier from the previous step with the original + dataset to present contextual information\\n// during the anomalyhour to analysts + to conduct investigation or informed decisions.\\nTimeSeriesAlerts | where + TimeGenerated > ago(2d)\\n// Join against base logs since specified timeframe + to retrive records associated with the hour of anomoly\\n| join (\\n OfficeActivity\\n + \ | where TimeGenerated > ago(2d)\\n | extend DateHour = bin(TimeGenerated, + 1h)\\n | where OfficeWorkload=~ \\\"Exchange\\\" and Operation =~ \\\"MailItemsAccessed\\\" + and ResultStatus =~ \\\"Succeeded\\\"\\n | summarize HourlyCount=count(), + TimeGeneratedMax = arg_max(TimeGenerated, *), IPAdressList = make_set(Client_IPAddress), + SourceIPMax= arg_max(Client_IPAddress, *), ClientInfoStringList= make_set(ClientInfoString) + by MailboxOwnerUPN, Logon_Type, TenantId, UserType, TimeGenerated = bin(TimeGenerated, + 1h) \\n | where HourlyCount > 25 // Only considering operations with more + than 25 hourly count to reduce False Positivies\\n | order by HourlyCount + desc \\n) on TimeGenerated\\n| extend PercentofTotal = round(HourlyCount/Total, + 2) * 100 \\n| where PercentofTotal > percentthreshold // Filter Users with + count of less than 5 percent of TotalEvents per Hour to remove FPs/ users + with very low count of MailItemsAccessed events\\n| order by PercentofTotal + desc \\n| project-reorder TimeGeneratedMax, Type, OfficeWorkload, Operation, + UserId,SourceIPMax ,IPAdressList, ClientInfoStringList, HourlyCount, PercentofTotal, + Total, baseline, score, anomalies\\n| extend timestamp = TimeGenerated, AccountCustomEntity + = UserId\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Collection\"],\"techniques\":[\"T1114\"],\"displayName\":\"Exchange + workflow MailItemsAccessed operation anomaly\",\"description\":\"Identifies + anomalous increases in Exchange mail items accessed operations.\\nThe query + leverages KQL built-in anomaly detection algorithms to find large deviations + from baseline patterns.\\nSudden increases in execution frequency of sensitive + actions should be further investigated for malicious activity.\\nManually + change scorethreshold from 1.5 to 3 or higher to reduce the noise based on + outliers flagged from the query criteria.\\nRead more about MailItemsAccessed- + https://docs.microsoft.com/microsoft-365/compliance/advanced-audit?view=o365-worldwide#mailitemsaccessed\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-12-10T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"Office365\",\"dataTypes\":[\"OfficeActivity\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/00cb180c-08a8-4e55-a276-63fb1442d5b5\",\"name\":\"00cb180c-08a8-4e55-a276-63fb1442d5b5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + cmdTokens0 = dynamic(['vbscript','jscript']);\\nlet cmdTokens1 = dynamic(['mshtml','RunHTMLApplication']);\\nlet + cmdTokens2 = dynamic(['Execute','CreateObject','RegRead','window.close']);\\n(union + isfuzzy=true \\n(SecurityEvent\\n| where TimeGenerated >= ago(14d)\\n| where + EventID == 4688\\n| where CommandLine has @'\\\\Microsoft\\\\Windows\\\\CurrentVersion'\\n| + where not(CommandLine has_any (@'\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run', + @'\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\RunOnce'))\\n// + If you are receiving false positives, then it may help to make the query more + strict by uncommenting one or both of the lines below to refine the matches\\n//| + where CommandLine has_any (cmdTokens0)\\n//| where CommandLine has_all (cmdTokens1)\\n| + where CommandLine has_all (cmdTokens2)\\n| project TimeGenerated, Computer, + Account, Process, NewProcessName, CommandLine, ParentProcessName, _ResourceId\\n| + extend timestamp = TimeGenerated, HostCustomEntity = Computer, AccountCustomEntity + = Account\\n),\\n(WindowsEvent\\n| where TimeGenerated >= ago(14d)\\n| where + EventID == 4688 and EventData has_all(cmdTokens2) and EventData has @'\\\\Microsoft\\\\Windows\\\\CurrentVersion'\\n| + where not(EventData has_any (@'\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run', + @'\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\RunOnce'))\\n| + extend CommandLine = tostring(EventData.CommandLine)\\n| where CommandLine + has @'\\\\Microsoft\\\\Windows\\\\CurrentVersion'\\n| where not(CommandLine + has_any (@'\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run', + @'\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\RunOnce'))\\n// + If you are receiving false positives, then it may help to make the query more + strict by uncommenting one or both of the lines below to refine the matches\\n//| + where CommandLine has_any (cmdTokens0)\\n//| where CommandLine has_all (cmdTokens1)\\n| + where CommandLine has_all (cmdTokens2)\\n| extend Account = strcat(EventData.SubjectDomainName,\\\"\\\\\\\\\\\", + EventData.SubjectUserName)\\n| extend NewProcessName = tostring(EventData.NewProcessName)\\n| + extend Process=tostring(split(NewProcessName, '\\\\\\\\')[-1])\\n| extend + ParentProcessName = tostring(EventData.ParentProcessName) \\n| project TimeGenerated, + Computer, Account, Process, NewProcessName, CommandLine, ParentProcessName, + _ResourceId\\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer, + AccountCustomEntity = Account))\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.1\",\"tactics\":[\"Execution\"],\"techniques\":[\"T1059\"],\"displayName\":\"NOBELIUM + - Script payload stored in Registry\",\"description\":\"This query idenifies + when a process execution commandline indicates that a registry value is written + to allow for later execution a malicious script\\n References: https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/\",\"lastUpdatedDateUTC\":\"2022-03-10T00:00:00Z\",\"createdDateUTC\":\"2021-03-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]},{\"connectorId\":\"WindowsForwardedEvents\",\"dataTypes\":[\"WindowsEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/3cc5ccd8-b416-4141-bb2d-4eba370e37a5\",\"name\":\"3cc5ccd8-b416-4141-bb2d-4eba370e37a5\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + OMIVulnerabilityPatchVersion = \\\"OMIVulnerabilityPatchVersion:1.13.40-0\\\";\\nHeartbeat\\n| + where Category == \\\"Direct Agent\\\"\\n| summarize arg_max(TimeGenerated,*) + by Computer\\n| parse strcat(\\\"Version:\\\" , Version) with * \\\"Version:\\\" + Major:long \\\".\\\"\\nMinor:long \\\".\\\" Patch:long \\\"-\\\" *\\n| parse + OMIVulnerabilityPatchVersion with * \\\"OMIVulnerabilityPatchVersion:\\\"\\nOMIVersionMajor:long + \\\".\\\" OMIVersionMinor:long \\\".\\\" OMIVersionPatch:long \\\"-\\\" *\\n| + where Major ago(timeRange)\\n| where EventID + == 4624 or EventID == 4625\\n| where IpAddress != \\\"-\\\" and isnotempty(Account)\\n| + extend Outcome = iff(EventID == 4624, \\\"Success\\\", \\\"Failure\\\")\\n// + bin outcomes into 5 minute windows to reduce the volume of data\\n| summarize + OutcomeCount=count() by Account, IpAddress, Computer, Outcome, bin(TimeGenerated, + 5m)\\n| project TimeGenerated, Account, IpAddress, Computer, Outcome, OutcomeCount\\n// + sort ready for sessionizing - by account and time of the authentication outcome\\n| + sort by Account asc, TimeGenerated asc\\n| serialize \\n// sessionize into + failure groupings until either the account changes or there is a success\\n| + extend SessionStartedUtc = row_window_session(TimeGenerated, timeRange, authenticationWindow, + Account != prev(Account) or prev(Outcome) == \\\"Success\\\")\\n// count the + failures in each session\\n| summarize FailureCountBeforeSuccess=sumif(OutcomeCount, + Outcome == \\\"Failure\\\"), StartTime=min(TimeGenerated), EndTime=max(TimeGenerated), + makelist(Outcome), makeset(Computer), makeset(IpAddress) by SessionStartedUtc, + Account\\n// the session must not start with a success, and must end with + one\\n| where array_index_of(list_Outcome, \\\"Success\\\") != 0\\n| where + array_index_of(list_Outcome, \\\"Success\\\") == array_length(list_Outcome) + - 1\\n| project-away SessionStartedUtc, list_Outcome \\n// where the number + of failures before the success is above the threshold \\n| where FailureCountBeforeSuccess + >= authenticationThreshold\\n// expand out ip and computer for customer entity + assignment\\n| mvexpand set_IpAddress, set_Computer\\n| extend IpAddress = + tostring(set_IpAddress), Computer = tostring(set_Computer)\\n| extend timestamp=StartTime, + AccountCustomEntity=Account, HostCustomEntity=Computer, IPCustomEntity=IpAddress\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"SecurityEvent + - Multiple authentication failures followed by a success\",\"description\":\"Identifies + accounts who have failed to logon to the domain multiple times in a row, followed + by a successful authentication\\nwithin a short time frame. Multiple failed + attempts followed by a success can be an indication of a brute force attempt + or\\npossible mis-configuration of a service account within an environment.\\nThe + lookback is set to 6h and the authentication window and threshold are set + to 1h and 5, meaning we need to see a minimum\\nof 5 failures followed by + a success for an account within 1 hour to surface an alert.\",\"lastUpdatedDateUTC\":\"2021-10-19T00:00:00Z\",\"createdDateUTC\":\"2020-04-03T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]},{\"connectorId\":\"WindowsSecurityEvents\",\"dataTypes\":[\"SecurityEvent\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/cecdbd4c-4902-403c-8d4b-32eb1efe460b\",\"name\":\"cecdbd4c-4902-403c-8d4b-32eb1efe460b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT6H\",\"queryPeriod\":\"PT6H\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"High\",\"query\":\"let + domains = dynamic([\\\"incomeupdate.com\\\",\\\"zupertech.com\\\",\\\"databasegalore.com\\\",\\\"panhardware.com\\\",\\\"avsvmcloud.com\\\",\\\"digitalcollege.org\\\",\\\"freescanonline.com\\\",\\\"deftsecurity.com\\\",\\\"thedoccloud.com\\\",\\\"virtualdataserver.com\\\",\\\"lcomputers.com\\\",\\\"webcodez.com\\\",\\\"globalnetworkissues.com\\\",\\\"kubecloud.com\\\",\\\"seobundlekit.com\\\",\\\"solartrackingsystem.net\\\",\\\"virtualwebdata.com\\\"]);\\n(union + isfuzzy=true\\n(CommonSecurityLog \\n | parse Message with * '(' DNSName + ')' * \\n | where DNSName in~ (domains) or DestinationHostName has_any (domains) + or RequestURL has_any(domains)\\n | extend AccountCustomEntity = SourceUserID, + HostCustomEntity = DeviceName, IPCustomEntity = SourceIP\\n ),\\n(_Im_Dns + (domain_has_any=domains)\\n | extend DNSName = DnsQuery\\n | extend IPCustomEntity + = SrcIpAddr\\n ),\\n(VMConnection \\n | parse RemoteDnsCanonicalNames with + * '[\\\"' DNSName '\\\"]' *\\n | where isnotempty(DNSName)\\n | where DNSName + in~ (domains)\\n | extend IPCustomEntity = RemoteIp\\n ),\\n(DeviceNetworkEvents + \\n | where isnotempty(RemoteUrl) \\n | where RemoteUrl has_any (domains) + \ \\n | extend DNSName = RemoteUrl\\n | extend IPCustomEntity = RemoteIP + \\n | extend HostCustomEntity = DeviceName \\n ),\\n(AzureDiagnostics \\n + \ | where ResourceType == \\\"AZUREFIREWALLS\\\"\\n | where Category == \\\"AzureFirewallApplicationRule\\\"\\n + \ | parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to + ' DestinationHost ':' DestinationPort '. Action:' Action\\n | where isnotempty(DestinationHost)\\n + \ | where DestinationHost has_any (domains) \\n | extend DNSName = DestinationHost + \\n | extend IPCustomEntity = SourceHost\\n ) \\n )\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"DNS\",\"fieldMappings\":[{\"identifier\":\"DomainName\",\"columnName\":\"DNSName\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.4.1\",\"tactics\":[\"CommandAndControl\"],\"techniques\":[\"T1102\"],\"displayName\":\"Solorigate + Network Beacon\",\"description\":\"Identifies a match across various data + feeds for domains IOCs related to the Solorigate incident.\\n References: + https://blogs.microsoft.com/on-the-issues/2020/12/13/customers-protect-nation-state-cyberattacks/, + \\n https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html?1\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2020-12-17T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"DNS\",\"dataTypes\":[\"DnsEvents\"]},{\"connectorId\":\"AzureMonitor(VMInsights)\",\"dataTypes\":[\"VMConnection\"]},{\"connectorId\":\"CiscoASA\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"PaloAltoNetworks\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"MicrosoftThreatProtection\",\"dataTypes\":[\"DeviceNetworkEvents\"]},{\"connectorId\":\"AzureFirewall\",\"dataTypes\":[\"AzureDiagnostics\"]},{\"connectorId\":\"Zscaler\",\"dataTypes\":[\"CommonSecurityLog\"]},{\"connectorId\":\"InfobloxNIOS\",\"dataTypes\":[\"Syslog\"]},{\"connectorId\":\"GCPDNSDataConnector\",\"dataTypes\":[\"GCP_DNS_CL\"]},{\"connectorId\":\"NXLogDnsLogs\",\"dataTypes\":[\"NXLog_DNS_Server_CL\"]},{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_dns_CL\"]},{\"connectorId\":\"Corelight\",\"dataTypes\":[\"Corelight_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a3863d8b-8be1-4f52-8ba2-d6cec98b606b\",\"name\":\"a3863d8b-8be1-4f52-8ba2-d6cec98b606b\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Anomaly\",\"properties\":{\"severity\":\"Informational\",\"anomalyDefinitionVersion\":\"1.1.7\",\"customizableObservations\":{\"multiSelectObservations\":null,\"singleSelectObservations\":null,\"prioritizeExcludeObservations\":null,\"thresholdObservations\":[{\"minimum\":\"0\",\"maximum\":\"1\",\"value\":\"0.7\",\"name\":\"Score\",\"description\":\"Generate + an anomaly when score is greater than the chosen value\",\"sequenceNumber\":1,\"rerun\":\"NotRequired\"}],\"singleValueObservations\":null},\"frequency\":\"P1D\",\"tactics\":[\"InitialAccess\"],\"techniques\":[\"T1078\"],\"displayName\":\"(Preview) + Suspicious volume of logins to user account with elevated token\",\"description\":\"This + algorithm detects an unusually high volume of successful logins with elevated + token per user account. The model is trained on the previous 21 days of security + event ID 4624 on an account. It indicates anomalous high volume of successful + logins with administrator privileges in the last day.\",\"lastUpdatedDateUTC\":\"2021-10-06T00:00:00Z\",\"createdDateUTC\":\"2021-02-16T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"SecurityEvents\",\"dataTypes\":[\"SecurityEvents\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2790795b-7dba-483e-853f-44aa0bc9c985\",\"name\":\"2790795b-7dba-483e-853f-44aa0bc9c985\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Low\",\"query\":\"CommonSecurityLog\\n| + where DeviceProduct =~ \\\"Wazuh\\\"\\n| where Activity has \\\"Web server + 400 error code.\\\"\\n| where Message has \\\"403\\\"\\n| extend HostName=substring(split(DeviceCustomString1,\\\")\\\")[0],1)\\n| + summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), NumberOfErrors + = dcount(SourceIP) by HostName, SourceIP\\n| where NumberOfErrors > 400\\n| + sort by NumberOfErrors desc\\n| extend timestamp = StartTime, HostCustomEntity + = HostName, IPCustomEntity = SourceIP\",\"entityMappings\":[{\"entityType\":\"Host\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"HostCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.0\",\"tactics\":[\"Persistence\"],\"displayName\":\"Wazuh + - Large Number of Web errors from an IP\",\"description\":\"Identifies instances + where Wazuh logged over 400 '403' Web Errors from one IP Address. To onboard + Wazuh data into Sentinel please view: https://github.com/wazuh/wazuh-documentation/blob/master/source/azure/monitoring%20activity.rst\",\"lastUpdatedDateUTC\":\"2022-01-16T00:00:00Z\",\"createdDateUTC\":\"2020-04-21T00:00:00Z\",\"status\":\"Available\",\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/78979d32-e63f-4740-b206-cfb300c735e0\",\"name\":\"78979d32-e63f-4740-b206-cfb300c735e0\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P14D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + dt_lookBack = 1h;\\nlet ioc_lookBack = 14d;\\nThreatIntelligenceIndicator\\n| + where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()\\n| + where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) or isnotempty(NetworkDestinationIP) + or isnotempty(NetworkSourceIP)\\n| extend TI_ipEntity = iff(isnotempty(NetworkIP), + NetworkIP, NetworkDestinationIP)\\n| extend TI_ipEntity = iff(isempty(TI_ipEntity) + and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)\\n| extend + TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), + EmailSourceIpAddress, TI_ipEntity)\\n| summarize LatestIndicatorTime = arg_max(TimeGenerated, + *) by IndicatorId\\n| where Active == true\\n// using innerunique to keep + perf fast and result set low, we only need one match to indicate potential + malicious activity that needs to be investigated\\n| join kind=innerunique + (\\n ProofpointPOD \\n | where TimeGenerated >= ago(dt_lookBack)\\n + \ | where isnotempty(SrcIpAddr)\\n | extend ProofpointPOD_TimeGenerated + = TimeGenerated, ClientIP = SrcIpAddr\\n )\\non $left.TI_ipEntity == $right.ClientIP\\n| + where ProofpointPOD_TimeGenerated < ExpirationDateTime\\n| summarize ProofpointPOD_TimeGenerated + = arg_max(ProofpointPOD_TimeGenerated, *) by IndicatorId, ClientIP\\n| project + ProofpointPOD_TimeGenerated, SrcUserUpn, DstUserUpn, SrcIpAddr, IndicatorId, + ThreatType, ExpirationDateTime, ConfidenceScore,\\nTI_ipEntity, ClientIP\\n| + extend timestamp = ProofpointPOD_TimeGenerated\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"SrcUserUpn\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"ClientIP\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"Exfiltration\",\"InitialAccess\"],\"displayName\":\"ProofpointPOD + - Email sender IP in TI list\",\"description\":\"Email sender IP in TI list.\",\"lastUpdatedDateUTC\":\"2021-12-02T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"ThreatIntelligence\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ThreatIntelligenceTaxii\",\"dataTypes\":[\"ThreatIntelligenceIndicator\"]},{\"connectorId\":\"ProofpointPOD\",\"dataTypes\":[\"ProofpointPOD_maillog_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/2b328487-162d-4034-b472-59f1d53684a1\",\"name\":\"2b328487-162d-4034-b472-59f1d53684a1\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"PT15M\",\"queryPeriod\":\"PT15M\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + timeframe = 15m;\\nCisco_Umbrella\\n| where EventType == \\\"proxylogs\\\"\\n| + where TimeGenerated > ago(timeframe)\\n| where HttpUserAgentOriginal == ''\\n| + extend Message = \\\"Empty User Agent\\\"\\n| project Message, SrcIpAddr, + DstIpAddr, UrlOriginal, TimeGenerated\\n| extend IpCustomEntity = SrcIpAddr, + UrlCustomEntity = UrlOriginal\",\"entityMappings\":[{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"UrlCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.1.0\",\"tactics\":[\"CommandAndControl\"],\"displayName\":\"Cisco + Umbrella - Empty User Agent Detected\",\"description\":\"Rule helps to detect + empty and unusual user agent indicating web browsing activity by an unusual + process other than a web browser.\",\"lastUpdatedDateUTC\":\"2022-01-03T00:00:00Z\",\"createdDateUTC\":\"2021-01-11T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"CiscoUmbrellaDataConnector\",\"dataTypes\":[\"Cisco_Umbrella_proxy_CL\"]}],\"alertRulesCreatedByTemplateCount\":0}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/a22740ec-fc1e-4c91-8de6-c29c6450ad00\",\"name\":\"a22740ec-fc1e-4c91-8de6-c29c6450ad00\",\"type\":\"Microsoft.SecurityInsights/AlertRuleTemplates\",\"kind\":\"Scheduled\",\"properties\":{\"queryFrequency\":\"P1D\",\"queryPeriod\":\"P1D\",\"triggerOperator\":\"GreaterThan\",\"triggerThreshold\":0,\"severity\":\"Medium\",\"query\":\"let + aadFunc = (tableName:string){\\ntable(tableName)\\n| where ResultType == 500121\\n| + where Status has \\\"MFA Denied; user declined the authentication\\\" or Status + has \\\"MFA denied; Phone App Reported Fraud\\\"\\n| extend Type = Type\\n| + extend timestamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, + IPCustomEntity = IPAddress, URLCustomEntity = ClientAppUsed\\n};\\nlet aadSignin + = aadFunc(\\\"SigninLogs\\\");\\nlet aadNonInt = aadFunc(\\\"AADNonInteractiveUserSignInLogs\\\");\\nunion + isfuzzy=true aadSignin, aadNonInt\",\"entityMappings\":[{\"entityType\":\"Account\",\"fieldMappings\":[{\"identifier\":\"FullName\",\"columnName\":\"AccountCustomEntity\"}]},{\"entityType\":\"IP\",\"fieldMappings\":[{\"identifier\":\"Address\",\"columnName\":\"IPCustomEntity\"}]},{\"entityType\":\"URL\",\"fieldMappings\":[{\"identifier\":\"Url\",\"columnName\":\"URLCustomEntity\"}]}],\"sentinelEntitiesMappings\":[],\"version\":\"1.0.1\",\"tactics\":[\"CredentialAccess\"],\"techniques\":[\"T1110\"],\"displayName\":\"Explicit + MFA Deny\",\"description\":\"User explicitly denies MFA push, indicating that + login was not expected and the account's password may be compromised.\",\"lastUpdatedDateUTC\":\"2022-04-04T00:00:00Z\",\"createdDateUTC\":\"2020-10-14T00:00:00Z\",\"status\":\"Available\",\"requiredDataConnectors\":[{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"SigninLogs\"]},{\"connectorId\":\"AzureActiveDirectory\",\"dataTypes\":[\"AADNonInteractiveUserSignInLogs\"]}],\"alertRulesCreatedByTemplateCount\":0}}]}" + headers: + cache-control: + - no-cache + content-length: + - '1460919' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule template show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRuleTemplates/65360bb0-8986-4ade-a89d-af3cf44d28aa?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AlertRuleTemplates/65360bb0-8986-4ade-a89d-af3cf44d28aa","name":"65360bb0-8986-4ade-a89d-af3cf44d28aa","type":"Microsoft.SecurityInsights/AlertRuleTemplates","kind":"Scheduled","properties":{"queryFrequency":"P1D","queryPeriod":"P1D","triggerOperator":"GreaterThan","triggerThreshold":0,"severity":"Low","query":"let + EventNameList = dynamic([\"CreateNetworkAclEntry\",\"CreateRoute\",\"CreateRouteTable\",\"CreateInternetGateway\",\"CreateNatGateway\"]);\nAWSCloudTrail\n| + where EventName in~ (EventNameList)\n| summarize StartTimeUtc = min(TimeGenerated), + EndTimeUtc = max(TimeGenerated) by EventName, EventTypeName, UserIdentityAccountId, + UserIdentityPrincipalid, UserAgent, \nUserIdentityUserName, SessionMfaAuthenticated, + SourceIpAddress, AWSRegion, EventSource, AdditionalEventData, ResponseElements\n| + extend timestamp = StartTimeUtc, AccountCustomEntity = UserIdentityUserName, + IPCustomEntity = SourceIpAddress","entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"FullName","columnName":"AccountCustomEntity"}]},{"entityType":"IP","fieldMappings":[{"identifier":"Address","columnName":"IPCustomEntity"}]}],"sentinelEntitiesMappings":[],"version":"1.0.0","tactics":["PrivilegeEscalation","LateralMovement"],"techniques":["T1078"],"displayName":"Changes + to Amazon VPC settings","description":"Amazon Virtual Private Cloud (Amazon + VPC) lets you provision a logically isolated section of the AWS Cloud where + you can launch AWS resources\nin a virtual network that you define.\nThis + identifies changes to Amazon VPC (Virtual Private Cloud) settings such as + new ACL entries,routes, routetable or Gateways.\nMore information: https://medium.com/@GorillaStack/the-most-important-aws-cloudtrail-security-events-to-track-a5b9873f8255 + \nand AWS VPC API Docs: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/OperationList-query-vpc.html","lastUpdatedDateUTC":"2021-10-19T00:00:00Z","createdDateUTC":"2019-02-27T00:00:00Z","status":"Available","requiredDataConnectors":[{"connectorId":"AWS","dataTypes":["AWSCloudTrail"]}],"alertRulesCreatedByTemplateCount":0}}' + headers: + cache-control: + - no-cache + content-length: + - '2288' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:44:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_automation_rule_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_automation_rule_crud.yaml new file mode 100644 index 00000000000..e65c309b84d --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_automation_rule_crud.yaml @@ -0,0 +1,627 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-27T03:43:02Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:43:06 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"b51784f5-c3bf-4ca9-817a-5bd07318fd62\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 03:43:14 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 15:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 03:43:14 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 03:43:14 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 03:43:15 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"b51784f5-c3bf-4ca9-817a-5bd07318fd62\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 03:43:14 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 15:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 03:43:14 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 03:43:16 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 03:43:46 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"b51784f5-c3bf-4ca9-817a-5bd07318fd62\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 03:43:14 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 15:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 03:43:14 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 03:43:16 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 03:43:47 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:43:54 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"actions": [{"actionType": "ModifyProperties", "order": + 1, "actionConfiguration": {"severity": "High"}}], "displayName": "High severity + incidents escalation", "order": 1, "triggeringLogic": {"isEnabled": true, "triggersOn": + "Incidents", "triggersWhen": "Created"}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel automation-rule create + Connection: + - keep-alive + Content-Length: + - '281' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --display-name --order --actions --triggering-logic + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/automationRules/rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AutomationRules/rule-000003","name":"rule-000003","etag":"\"0a001bd0-0000-0100-0000-62b9277e0000\"","type":"Microsoft.SecurityInsights/AutomationRules","properties":{"displayName":"High + severity incidents escalation","order":1,"triggeringLogic":{"isEnabled":true,"triggersOn":"Incidents","triggersWhen":"Created","conditions":[]},"actions":[{"order":1,"actionType":"ModifyProperties","actionConfiguration":{"severity":"High","status":null,"classification":null,"classificationReason":null,"classificationComment":null,"owner":null,"labels":null}}],"lastModifiedTimeUtc":"2022-06-27T03:43:58Z","createdTimeUtc":"2022-06-27T03:43:58Z","lastModifiedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"},"createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '1239' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:43:58 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel automation-rule list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/automationRules?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AutomationRules/rule-000003","name":"rule-000003","etag":"\"0a001bd0-0000-0100-0000-62b9277e0000\"","type":"Microsoft.SecurityInsights/AutomationRules","properties":{"displayName":"High + severity incidents escalation","order":1,"triggeringLogic":{"isEnabled":true,"triggersOn":"Incidents","triggersWhen":"Created","conditions":[]},"actions":[{"order":1,"actionType":"ModifyProperties","actionConfiguration":{"severity":"High","status":null,"classification":null,"classificationReason":null,"classificationComment":null,"owner":null,"labels":null}}],"lastModifiedTimeUtc":"2022-06-27T03:43:58Z","createdTimeUtc":"2022-06-27T03:43:58Z","lastModifiedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"},"createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1251' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:43:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '498' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel automation-rule update + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --display-name + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/automationRules/rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AutomationRules/rule-000003","name":"rule-000003","etag":"\"0a001bd0-0000-0100-0000-62b9277e0000\"","type":"Microsoft.SecurityInsights/AutomationRules","properties":{"displayName":"High + severity incidents escalation","order":1,"triggeringLogic":{"isEnabled":true,"triggersOn":"Incidents","triggersWhen":"Created","conditions":[]},"actions":[{"order":1,"actionType":"ModifyProperties","actionConfiguration":{"severity":"High","status":null,"classification":null,"classificationReason":null,"classificationComment":null,"owner":null,"labels":null}}],"lastModifiedTimeUtc":"2022-06-27T03:43:58Z","createdTimeUtc":"2022-06-27T03:43:58Z","lastModifiedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"},"createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '1239' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:44:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: '{"etag": "\"0a001bd0-0000-0100-0000-62b9277e0000\"", "properties": {"actions": + [{"actionType": "ModifyProperties", "order": 1, "actionConfiguration": {"severity": + "High"}}], "displayName": "New name", "order": 1, "triggeringLogic": {"conditions": + [], "isEnabled": true, "triggersOn": "Incidents", "triggersWhen": "Created"}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel automation-rule update + Connection: + - keep-alive + Content-Length: + - '325' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --display-name + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/automationRules/rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AutomationRules/rule-000003","name":"rule-000003","etag":"\"0a001dd0-0000-0100-0000-62b927810000\"","type":"Microsoft.SecurityInsights/AutomationRules","properties":{"displayName":"New + name","order":1,"triggeringLogic":{"isEnabled":true,"triggersOn":"Incidents","triggersWhen":"Created","conditions":[]},"actions":[{"order":1,"actionType":"ModifyProperties","actionConfiguration":{"severity":"High","status":null,"classification":null,"classificationReason":null,"classificationComment":null,"owner":null,"labels":null}}],"lastModifiedTimeUtc":"2022-06-27T03:44:01Z","createdTimeUtc":"2022-06-27T03:43:58Z","lastModifiedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"},"createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '1213' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:44:01 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel automation-rule show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/automationRules/rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/AutomationRules/rule-000003","name":"rule-000003","etag":"\"0a001dd0-0000-0100-0000-62b927810000\"","type":"Microsoft.SecurityInsights/AutomationRules","properties":{"displayName":"New + name","order":1,"triggeringLogic":{"isEnabled":true,"triggersOn":"Incidents","triggersWhen":"Created","conditions":[]},"actions":[{"order":1,"actionType":"ModifyProperties","actionConfiguration":{"severity":"High","status":null,"classification":null,"classificationReason":null,"classificationComment":null,"owner":null,"labels":null}}],"lastModifiedTimeUtc":"2022-06-27T03:44:01Z","createdTimeUtc":"2022-06-27T03:43:58Z","lastModifiedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"},"createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '1213' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:44:02 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel automation-rule delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/automationRules/rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 03:44:03 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_bookmark_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_bookmark_crud.yaml new file mode 100644 index 00000000000..2bd425e05a3 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_bookmark_crud.yaml @@ -0,0 +1,530 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-24T07:50:13Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:50:18 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"801ea8ce-07c3-4850-8ab1-e1b96b3c265c\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 07:50:27 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 14:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 07:50:27 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 07:50:27 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 07:50:29 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"801ea8ce-07c3-4850-8ab1-e1b96b3c265c\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 07:50:27 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 14:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 07:50:27 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 07:50:28 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 07:50:59 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"801ea8ce-07c3-4850-8ab1-e1b96b3c265c\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 07:50:27 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 14:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 07:50:27 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 07:50:28 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 07:51:00 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:51:12 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"displayName": "My bookmark", "entityMappings": [{"entityType": + "Account", "fieldMappings": [{"identifier": "Fullname", "value": "johndoe@microsoft.com"}]}], + "labels": ["Tag1", "Tag2"], "notes": "Found a suspicious activity", "query": + "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)", + "queryResult": "Security Event query result", "tactics": ["Execution"], "techniques": + ["T1609"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark create + Connection: + - keep-alive + Content-Length: + - '425' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --query-content --query-result --display-name --notes --entity-mappings + --tactics --techniques --labels + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"c1004b48-0000-0100-0000-62b56cf50000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My + bookmark","created":"2022-06-24T07:51:17.0273183+00:00","updated":"2022-06-24T07:51:17+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"eventTime":"2022-06-24T07:51:17.0270234+00:00","notes":"Found a suspicious + activity","labels":["Tag1","Tag2"],"query":"SecurityEvent | where TimeGenerated + > ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query + result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null},"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"Fullname","value":"johndoe@microsoft.com"}]}],"tactics":["Execution"],"techniques":["T1609"]}}' + headers: + cache-control: + - no-cache + content-length: + - '1247' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:51:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"c1004b48-0000-0100-0000-62b56cf50000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My + bookmark","created":"2022-06-24T07:51:17.0273183+00:00","updated":"2022-06-24T07:51:17.0273183+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"eventTime":"2022-06-24T07:51:17.0270234+00:00","notes":"Found a suspicious + activity","labels":["Tag1","Tag2"],"query":"SecurityEvent | where TimeGenerated + > ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query + result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null},"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"Fullname","value":"johndoe@microsoft.com"}]}],"tactics":["Execution"],"techniques":["T1609"]}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1267' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:51:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"c1004b48-0000-0100-0000-62b56cf50000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My + bookmark","created":"2022-06-24T07:51:17.0273183+00:00","updated":"2022-06-24T07:51:17.0273183+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"eventTime":"2022-06-24T07:51:17.0270234+00:00","notes":"Found a suspicious + activity","labels":["Tag1","Tag2"],"query":"SecurityEvent | where TimeGenerated + > ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query + result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null},"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"Fullname","value":"johndoe@microsoft.com"}]}],"tactics":["Execution"],"techniques":["T1609"]}}' + headers: + cache-control: + - no-cache + content-length: + - '1255' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:51:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 07:51:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_bookmark_relation_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_bookmark_relation_crud.yaml new file mode 100644 index 00000000000..81eb1a50284 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_bookmark_relation_crud.yaml @@ -0,0 +1,627 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-24T09:40:47Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:40:50 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"c5f51b0c-dc71-4e09-8806-20977bdd2255\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 09:40:56 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 13:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 09:40:56 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 09:40:56 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 09:40:57 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"c5f51b0c-dc71-4e09-8806-20977bdd2255\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 09:40:56 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 13:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 09:40:56 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 09:40:57 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 09:41:27 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"c5f51b0c-dc71-4e09-8806-20977bdd2255\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 09:40:56 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 13:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 09:40:56 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 09:40:57 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 09:41:28 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:41:39 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"displayName": "My bookmark", "entityMappings": [{"entityType": + "Account", "fieldMappings": [{"identifier": "Fullname", "value": "johndoe@microsoft.com"}]}], + "labels": ["Tag1", "Tag2"], "notes": "Found a suspicious activity", "query": + "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)", + "queryResult": "Security Event query result", "tactics": ["Execution"], "techniques": + ["T1609"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark create + Connection: + - keep-alive + Content-Length: + - '425' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --query-content --query-result --display-name --notes --entity-mappings + --tactics --techniques --labels + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096","name":"2216d0e1-91e3-4902-89fd-d2df8c535096","etag":"\"c2000a5b-0000-0100-0000-62b586d70000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My + bookmark","created":"2022-06-24T09:41:43.0827769+00:00","updated":"2022-06-24T09:41:43+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"eventTime":"2022-06-24T09:41:43.0825764+00:00","notes":"Found a suspicious + activity","labels":["Tag1","Tag2"],"query":"SecurityEvent | where TimeGenerated + > ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query + result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null},"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"Fullname","value":"johndoe@microsoft.com"}]}],"tactics":["Execution"],"techniques":["T1609"]}}' + headers: + cache-control: + - no-cache + content-length: + - '1247' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:41:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"classification": "FalsePositive", "classificationComment": + "Not a malicious activity", "classificationReason": "IncorrectAlertLogic", "description": + "This is a demo incident", "firstActivityTimeUtc": "2019-01-01T13:00:30Z", "lastActivityTimeUtc": + "2019-01-01T13:05:30Z", "owner": {"objectId": "2046feea-040d-4a46-9e2b-91c2941bfa70"}, + "severity": "High", "status": "Closed", "title": "My incident"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident create + Connection: + - keep-alive + Content-Length: + - '415' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --classification --classification-reason --classification-comment + --first-activity-time-utc --last-activity-time-utc --severity --status --title + --description --owner + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/afbd324f-6c48-459c-8710-8d1e1cd03812?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812","name":"afbd324f-6c48-459c-8710-8d1e1cd03812","etag":"\"06009247-0000-0100-0000-62b586d80000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"My + incident","description":"This is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not + a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null,"ownerType":"Unknown"},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2022-06-24T09:41:44.7097092Z","createdTimeUtc":"2022-06-24T09:41:44.7097092Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[],"techniques":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812","providerName":"Azure + Sentinel","providerIncidentId":"1"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:41:44 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 201 + message: Created +- request: + body: '{"properties": {"relatedResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark relation create + Connection: + - keep-alive + Content-Length: + - '284' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --bookmark-id --related-resource-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096/relations/relation-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096/relations/relation-000003","name":"relation-000003","etag":"\"c200255b-0000-0100-0000-62b586d90000\"","type":"Microsoft.SecurityInsights/Bookmarks/relations","properties":{"relatedResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812","relatedResourceName":"afbd324f-6c48-459c-8710-8d1e1cd03812","relatedResourceType":"Microsoft.SecurityInsights/Incidents"}}' + headers: + cache-control: + - no-cache + content-length: + - '812' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:41:45 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark relation list + Connection: + - keep-alive + ParameterSetName: + - -w -g --bookmark-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096/relations?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096/relations/relation-000003","name":"relation-000003","etag":"\"c200255b-0000-0100-0000-62b586d90000\"","type":"Microsoft.SecurityInsights/Bookmarks/relations","properties":{"relatedResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812","relatedResourceName":"afbd324f-6c48-459c-8710-8d1e1cd03812","relatedResourceType":"Microsoft.SecurityInsights/Incidents"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '824' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:41:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark relation show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --bookmark-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096/relations/relation-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096/relations/relation-000003","name":"relation-000003","etag":"\"c200255b-0000-0100-0000-62b586d90000\"","type":"Microsoft.SecurityInsights/Bookmarks/relations","properties":{"relatedResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812","relatedResourceName":"afbd324f-6c48-459c-8710-8d1e1cd03812","relatedResourceType":"Microsoft.SecurityInsights/Incidents"}}' + headers: + cache-control: + - no-cache + content-length: + - '812' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:41:47 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark relation delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --bookmark-id --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096/relations/relation-000003?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 09:41:48 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_enrichment_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_enrichment_crud.yaml new file mode 100644 index 00000000000..73d92956feb --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_enrichment_crud.yaml @@ -0,0 +1,99 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel enrichment domain-whois show + Connection: + - keep-alive + ParameterSetName: + - -g --domain + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.SecurityInsights/enrichment/domain/whois/?domain=microsoft.com&api-version=2022-06-01-preview + response: + body: + string: '{"domain":"microsoft.com","server":"whois.markmonitor.com","created":"1991-05-02T00:00:00Z","updated":"2022-04-18T00:00:00Z","expires":"2023-05-03T00:00:00Z","parsedWhois":{"registrar":{"name":"MarkMonitor, + Inc.","abuseContactPhone":"12083895770","abuseContactEmail":"abusecomplaints@markmonitor.com","ianaId":"292","url":"http://www.markmonitor.com","whoisServer":"whois.markmonitor.com"},"contacts":{"admin":{"name":"Domain + Administrator","org":"Microsoft Corporation","street":["One Microsoft Way,"],"city":"Redmond","state":"WA","postal":"98052","country":"us","phone":"14258828080","fax":"14259367329","email":"admin@domains.microsoft"},"registrant":{"name":"Domain + Administrator","org":"Microsoft Corporation","street":["One Microsoft Way,"],"city":"Redmond","state":"WA","postal":"98052","country":"us","phone":"14258828080","fax":"14259367329","email":"admin@domains.microsoft"},"billing":{"name":"","org":"","street":[],"city":"","state":"","postal":"","country":"","phone":"","fax":"","email":""},"tech":{"name":"MSN + Hostmaster","org":"Microsoft Corporation","street":["One Microsoft Way,"],"city":"Redmond","state":"WA","postal":"98052","country":"us","phone":"14258828080","fax":"14259367329","email":"msnhst@microsoft.com"}},"nameServers":["ns1-39.azure-dns.com","ns2-39.azure-dns.net","ns3-39.azure-dns.org","ns4-39.azure-dns.info"],"statuses":["clientUpdateProhibited","clientTransferProhibited","clientDeleteProhibited","serverUpdateProhibited","serverTransferProhibited","serverDeleteProhibited"]}}' + headers: + cache-control: + - no-cache + content-length: + - '1515' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:41:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel enrichment ip-geodata show + Connection: + - keep-alive + ParameterSetName: + - -g --ip-address + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.SecurityInsights/enrichment/ip/geodata/?ipAddress=1.2.3.4&api-version=2022-06-01-preview + response: + body: + string: '{"asn":null,"carrier":null,"city":"brisbane","cityCf":50,"continent":"oceania","country":"australia","countryCf":86,"ipAddr":"1.2.3.4","ipRoutingType":"fixed","latitude":"-27.46758","longitude":"153.02789","organization":"apnic + debogon project","organizationType":"Telecommunications","region":null,"state":"queensland","stateCf":68,"stateCode":"qld"}' + headers: + cache-control: + - no-cache + content-length: + - '351' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:41:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_comment_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_comment_crud.yaml new file mode 100644 index 00000000000..fcf2ded2c2d --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_comment_crud.yaml @@ -0,0 +1,674 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-24T08:55:17Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:55:21 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"4fd9d94e-ff96-4a9b-a946-03891e311c12\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 08:55:30 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 17:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 08:55:30 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 08:55:30 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 08:55:31 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"4fd9d94e-ff96-4a9b-a946-03891e311c12\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 08:55:30 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 17:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 08:55:30 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 08:55:31 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 08:56:02 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"4fd9d94e-ff96-4a9b-a946-03891e311c12\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 08:55:30 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 17:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 08:55:30 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 08:55:31 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 08:56:04 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:14 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"classification": "FalsePositive", "classificationComment": + "Not a malicious activity", "classificationReason": "IncorrectAlertLogic", "description": + "This is a demo incident", "firstActivityTimeUtc": "2019-01-01T13:00:30Z", "lastActivityTimeUtc": + "2019-01-01T13:05:30Z", "owner": {"objectId": "2046feea-040d-4a46-9e2b-91c2941bfa70"}, + "severity": "High", "status": "Closed", "title": "My incident"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident create + Connection: + - keep-alive + Content-Length: + - '415' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --classification --classification-reason --classification-comment + --first-activity-time-utc --last-activity-time-utc --severity --status --title + --description --owner + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"0200a411-0000-0100-0000-62b57c320000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"My + incident","description":"This is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not + a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null,"ownerType":"Unknown"},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2022-06-24T08:56:18.5749518Z","createdTimeUtc":"2022-06-24T08:56:18.5749518Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[],"techniques":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","providerName":"Azure + Sentinel","providerIncidentId":"1"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 201 + message: Created +- request: + body: '{"properties": {"message": "Some message"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident comment create + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --incident-id --message + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","etag":"\"0200a511-0000-0100-0000-62b57c330000\"","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some + message","createdTimeUtc":"2022-06-24T08:56:19.4960905Z","lastModifiedTimeUtc":"2022-06-24T08:56:19.4960905Z","author":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '785' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident comment list + Connection: + - keep-alive + ParameterSetName: + - -w -g --incident-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","etag":"\"0200a511-0000-0100-0000-62b57c330000\"","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some + message","createdTimeUtc":"2022-06-24T08:56:19.4960905Z","lastModifiedTimeUtc":"2022-06-24T08:56:19.4960905Z","author":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}]}' + headers: + cache-control: + - no-cache + content-length: + - '797' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:19 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident comment update + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --incident-id --message + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","etag":"\"0200a511-0000-0100-0000-62b57c330000\"","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some + message","createdTimeUtc":"2022-06-24T08:56:19.4960905Z","lastModifiedTimeUtc":"2022-06-24T08:56:19.4960905Z","author":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '785' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:20 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: '{"etag": "\"0200a511-0000-0100-0000-62b57c330000\"", "properties": {"message": + "Some messages"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident comment update + Connection: + - keep-alive + Content-Length: + - '96' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --incident-id --message + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","etag":"\"0200a711-0000-0100-0000-62b57c350000\"","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some + messages","createdTimeUtc":"2022-06-24T08:56:19.4960905Z","lastModifiedTimeUtc":"2022-06-24T08:56:21.6575661Z","author":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '786' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident comment show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --incident-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/Comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","name":"4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014","etag":"\"0200a711-0000-0100-0000-62b57c350000\"","type":"Microsoft.SecurityInsights/Incidents/Comments","properties":{"message":"Some + messages","createdTimeUtc":"2022-06-24T08:56:19.4960905Z","lastModifiedTimeUtc":"2022-06-24T08:56:21.6575661Z","author":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang","userPrincipalName":"ethanyang_microsoft.com#EXT#@AzureSDKTeam.onmicrosoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '786' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident comment delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --incident-id --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5/comments/4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:56:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_crud.yaml new file mode 100644 index 00000000000..36868838b13 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_crud.yaml @@ -0,0 +1,515 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-24T08:43:23Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:43:26 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"b783ff4c-f0a3-420c-8c54-1791293ad1b7\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 08:43:34 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 11:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 08:43:34 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 08:43:34 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 08:43:36 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"b783ff4c-f0a3-420c-8c54-1791293ad1b7\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 08:43:34 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 11:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 08:43:34 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 08:43:35 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 08:44:06 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"b783ff4c-f0a3-420c-8c54-1791293ad1b7\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Fri, 24 Jun 2022 08:43:34 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Fri, 24 Jun 2022 11:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Fri, 24 Jun 2022 08:43:34 GMT\",\r\n + \ \"modifiedDate\": \"Fri, 24 Jun 2022 08:43:35 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Fri, 24 Jun 2022 08:44:08 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:44:17 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"classification": "FalsePositive", "classificationComment": + "Not a malicious activity", "classificationReason": "IncorrectAlertLogic", "description": + "This is a demo incident", "firstActivityTimeUtc": "2019-01-01T13:00:30Z", "lastActivityTimeUtc": + "2019-01-01T13:05:30Z", "owner": {"objectId": "2046feea-040d-4a46-9e2b-91c2941bfa70"}, + "severity": "High", "status": "Closed", "title": "My incident"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident create + Connection: + - keep-alive + Content-Length: + - '415' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --classification --classification-reason --classification-comment + --first-activity-time-utc --last-activity-time-utc --severity --status --title + --description --owner + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"2300e901-0000-0100-0000-62b579650000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"My + incident","description":"This is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not + a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null,"ownerType":"Unknown"},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2022-06-24T08:44:21.8682275Z","createdTimeUtc":"2022-06-24T08:44:21.8682275Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[],"techniques":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","providerName":"Azure + Sentinel","providerIncidentId":"1"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:44:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident list + Connection: + - keep-alive + ParameterSetName: + - -w -g --orderby --top + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents?$orderby=properties%2FcreatedTimeUtc%20desc&$top=1&api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"2300e901-0000-0100-0000-62b579650000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"My + incident","description":"This is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not + a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null,"ownerType":"Unknown"},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2022-06-24T08:44:21.8682275Z","createdTimeUtc":"2022-06-24T08:44:21.8682275Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[],"techniques":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","providerName":"Azure + Sentinel","providerIncidentId":"1"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1552' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:44:22 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","name":"73e01a99-5cd7-4139-a149-9f2736ff2ab5","etag":"\"2300e901-0000-0100-0000-62b579650000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"My + incident","description":"This is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not + a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null,"ownerType":"Unknown"},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2022-06-24T08:44:21.8682275Z","createdTimeUtc":"2022-06-24T08:44:21.8682275Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[],"techniques":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5","providerName":"Azure + Sentinel","providerIncidentId":"1"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:44:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/73e01a99-5cd7-4139-a149-9f2736ff2ab5?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 24 Jun 2022 08:44:25 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_relation_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_relation_crud.yaml new file mode 100644 index 00000000000..6f94dca96d3 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_incident_relation_crud.yaml @@ -0,0 +1,631 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-26T15:31:59Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:32:02 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"92a038ec-4582-4324-a7c3-5c1d6657c8a4\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 15:32:09 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 00:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 15:32:09 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 15:32:09 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 15:32:10 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"92a038ec-4582-4324-a7c3-5c1d6657c8a4\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 15:32:09 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 00:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 15:32:09 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 15:32:10 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 15:32:40 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"92a038ec-4582-4324-a7c3-5c1d6657c8a4\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 15:32:09 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 00:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 15:32:09 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 15:32:10 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 15:32:43 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:32:51 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"classification": "FalsePositive", "classificationComment": + "Not a malicious activity", "classificationReason": "IncorrectAlertLogic", "description": + "This is a demo incident", "firstActivityTimeUtc": "2019-01-01T13:00:30Z", "lastActivityTimeUtc": + "2019-01-01T13:05:30Z", "owner": {"objectId": "2046feea-040d-4a46-9e2b-91c2941bfa70"}, + "severity": "High", "status": "Closed", "title": "My incident"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident create + Connection: + - keep-alive + Content-Length: + - '415' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --classification --classification-reason --classification-comment + --first-activity-time-utc --last-activity-time-utc --severity --status --title + --description --owner + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/afbd324f-6c48-459c-8710-8d1e1cd03812?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812","name":"afbd324f-6c48-459c-8710-8d1e1cd03812","etag":"\"010058ad-0000-0100-0000-62b87c270000\"","type":"Microsoft.SecurityInsights/Incidents","properties":{"title":"My + incident","description":"This is a demo incident","severity":"High","status":"Closed","classification":"FalsePositive","classificationReason":"IncorrectAlertLogic","classificationComment":"Not + a malicious activity","owner":{"objectId":"2046feea-040d-4a46-9e2b-91c2941bfa70","email":null,"assignedTo":null,"userPrincipalName":null,"ownerType":"Unknown"},"labels":[],"firstActivityTimeUtc":"2019-01-01T13:00:30Z","lastActivityTimeUtc":"2019-01-01T13:05:30Z","lastModifiedTimeUtc":"2022-06-26T15:32:55.8915737Z","createdTimeUtc":"2022-06-26T15:32:55.8915737Z","incidentNumber":1,"additionalData":{"alertsCount":0,"bookmarksCount":0,"commentsCount":0,"alertProductNames":[],"tactics":[],"techniques":[]},"relatedAnalyticRuleIds":[],"incidentUrl":"https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812","providerName":"Azure + Sentinel","providerIncidentId":"1"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:32:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '498' + status: + code: 201 + message: Created +- request: + body: '{"properties": {"displayName": "My bookmark", "entityMappings": [{"entityType": + "Account", "fieldMappings": [{"identifier": "Fullname", "value": "johndoe@microsoft.com"}]}], + "labels": ["Tag1", "Tag2"], "notes": "Found a suspicious activity", "query": + "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)", + "queryResult": "Security Event query result", "tactics": ["Execution"], "techniques": + ["T1609"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel bookmark create + Connection: + - keep-alive + Content-Length: + - '425' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --query-content --query-result --display-name --notes --entity-mappings + --tactics --techniques --labels + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096","name":"2216d0e1-91e3-4902-89fd-d2df8c535096","etag":"\"020041a8-0000-0100-0000-62b87c290000\"","type":"Microsoft.SecurityInsights/Bookmarks","properties":{"displayName":"My + bookmark","created":"2022-06-26T15:32:57.309088+00:00","updated":"2022-06-26T15:32:57+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"Ethan + Yang"},"eventTime":"2022-06-26T15:32:57.308823+00:00","notes":"Found a suspicious + activity","labels":["Tag1","Tag2"],"query":"SecurityEvent | where TimeGenerated + > ago(1d) and TimeGenerated < ago(2d)","queryResult":"Security Event query + result","incidentInfo":{"incidentId":null,"title":null,"relationName":null,"severity":null},"entityMappings":[{"entityType":"Account","fieldMappings":[{"identifier":"Fullname","value":"johndoe@microsoft.com"}]}],"tactics":["Execution"],"techniques":["T1609"]}}' + headers: + cache-control: + - no-cache + content-length: + - '1245' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:32:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"relatedResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident relation create + Connection: + - keep-alive + Content-Length: + - '284' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --incident-id --related-resource-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/afbd324f-6c48-459c-8710-8d1e1cd03812/relations/relation-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812/relations/relation-000003","name":"relation-000003","etag":"\"010060ad-0000-0100-0000-62b87c2a0000\"","type":"Microsoft.SecurityInsights/Incidents/relations","properties":{"relatedResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096","relatedResourceName":"2216d0e1-91e3-4902-89fd-d2df8c535096","relatedResourceType":"Microsoft.SecurityInsights/Bookmarks"}}' + headers: + cache-control: + - no-cache + content-length: + - '812' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:32:57 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident relation list + Connection: + - keep-alive + ParameterSetName: + - -w -g --incident-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/afbd324f-6c48-459c-8710-8d1e1cd03812/relations?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812/relations/relation-000003","name":"relation-000003","etag":"\"010060ad-0000-0100-0000-62b87c2a0000\"","type":"Microsoft.SecurityInsights/Incidents/relations","properties":{"relatedResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096","relatedResourceName":"2216d0e1-91e3-4902-89fd-d2df8c535096","relatedResourceType":"Microsoft.SecurityInsights/Bookmarks"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '824' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:32:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident relation show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --incident-id + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/afbd324f-6c48-459c-8710-8d1e1cd03812/relations/relation-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Incidents/afbd324f-6c48-459c-8710-8d1e1cd03812/relations/relation-000003","name":"relation-000003","etag":"\"010060ad-0000-0100-0000-62b87c2a0000\"","type":"Microsoft.SecurityInsights/Incidents/relations","properties":{"relatedResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Bookmarks/2216d0e1-91e3-4902-89fd-d2df8c535096","relatedResourceName":"2216d0e1-91e3-4902-89fd-d2df8c535096","relatedResourceType":"Microsoft.SecurityInsights/Bookmarks"}}' + headers: + cache-control: + - no-cache + content-length: + - '812' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:32:59 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel incident relation delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --incident-id --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/incidents/afbd324f-6c48-459c-8710-8d1e1cd03812/relations/relation-000003?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 15:33:00 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '499' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_metadata_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_metadata_crud.yaml new file mode 100644 index 00000000000..b0d464cc6b8 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_metadata_crud.yaml @@ -0,0 +1,655 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-26T16:06:09Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:06:15 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 16:06:21 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 01:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 16:06:21 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 16:06:21 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 16:06:23 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1195' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 16:06:21 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 01:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 16:06:21 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 16:06:22 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 16:06:53 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 16:06:21 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 01:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 16:06:21 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 16:06:22 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 16:06:54 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:02 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"kind": "MicrosoftSecurityIncidentCreation", "properties": {"displayName": + "testing", "enabled": true, "productFilter": "Microsoft Cloud App Security"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel alert-rule create + Connection: + - keep-alive + Content-Length: + - '153' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --ms-security-incident + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","name":"alert-rule-000003","etag":"\"29006b0a-0000-0100-0000-62b8842d0000\"","type":"Microsoft.SecurityInsights/alertRules","kind":"MicrosoftSecurityIncidentCreation","properties":{"productFilter":"Microsoft + Cloud App Security","severitiesFilter":null,"displayNamesFilter":null,"displayNamesExcludeFilter":null,"displayName":"testing","enabled":true,"description":null,"alertRuleTemplateName":null,"lastModifiedUtc":"2022-06-26T16:07:09.0497394Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '682' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:08 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: '{"properties": {"contentId": "c00ee137-7475-47c8-9cce-ec6f0f1bedd0", "kind": + "AnalyticsRule", "parentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel metadata create + Connection: + - keep-alive + Content-Length: + - '335' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --content-id --parent-id --kind + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004","name":"metadata-000004","type":"Microsoft.SecurityInsights/metadata","systemData":{"createdAt":"2022-06-26T16:07:09.9370942Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-26T16:07:09.9370942Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"contentId":"c00ee137-7475-47c8-9cce-ec6f0f1bedd0","parentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","kind":"AnalyticsRule","source":{"kind":"LocalWorkspace","name":"workspace-000002","sourceId":"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6"}}}' + headers: + cache-control: + - no-cache + content-length: + - '977' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:11 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel metadata list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004","name":"metadata-000004","type":"Microsoft.SecurityInsights/metadata","systemData":{"createdAt":"2022-06-26T16:07:09.9370942Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-26T16:07:09.9370942Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"contentId":"c00ee137-7475-47c8-9cce-ec6f0f1bedd0","parentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","kind":"AnalyticsRule","source":{"kind":"LocalWorkspace","name":"workspace-000002","sourceId":"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6"}}}]}' + headers: + cache-control: + - no-cache + content-length: + - '989' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:12 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel metadata update + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --author + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004","name":"metadata-000004","type":"Microsoft.SecurityInsights/metadata","systemData":{"createdAt":"2022-06-26T16:07:09.9370942Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-26T16:07:09.9370942Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"contentId":"c00ee137-7475-47c8-9cce-ec6f0f1bedd0","parentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","kind":"AnalyticsRule","source":{"kind":"LocalWorkspace","name":"workspace-000002","sourceId":"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6"}}}' + headers: + cache-control: + - no-cache + content-length: + - '977' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"author": {"email": "cli@microsoft.com", "name": "cli"}, + "contentId": "c00ee137-7475-47c8-9cce-ec6f0f1bedd0", "kind": "AnalyticsRule", + "parentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003", + "source": {"kind": "LocalWorkspace", "name": "workspace-000002", "sourceId": + "ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6"}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel metadata update + Connection: + - keep-alive + Content-Length: + - '510' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --author + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004","name":"metadata-000004","type":"Microsoft.SecurityInsights/metadata","systemData":{"createdAt":"2022-06-26T16:07:09.9370942Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-26T16:07:15.4451079Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"contentId":"c00ee137-7475-47c8-9cce-ec6f0f1bedd0","parentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","kind":"AnalyticsRule","source":{"kind":"LocalWorkspace","name":"workspace-000002","sourceId":"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6"},"author":{"name":"cli","email":"cli@microsoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '1029' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:14 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel metadata show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004","name":"metadata-000004","type":"Microsoft.SecurityInsights/metadata","systemData":{"createdAt":"2022-06-26T16:07:09.9370942Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-26T16:07:15.4451079Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"contentId":"c00ee137-7475-47c8-9cce-ec6f0f1bedd0","parentId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/alertRules/alert-rule-000003","kind":"AnalyticsRule","source":{"kind":"LocalWorkspace","name":"workspace-000002","sourceId":"ae193f3e-8cce-4c4e-9de3-bc21e9e0b6d6"},"author":{"name":"cli","email":"cli@microsoft.com"}}}' + headers: + cache-control: + - no-cache + content-length: + - '1029' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel metadata delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/metadata/metadata-000004?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:07:18 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_onboarding_state_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_onboarding_state_crud.yaml new file mode 100644 index 00000000000..08c46d25481 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_onboarding_state_crud.yaml @@ -0,0 +1,506 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-26T16:13:41Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:13:45 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"8d152db7-d055-4fd6-b9f7-b60706c9e5fc\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 16:13:51 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Sun, 26 Jun 2022 21:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 16:13:51 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 16:13:51 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 16:13:52 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"8d152db7-d055-4fd6-b9f7-b60706c9e5fc\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 16:13:51 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Sun, 26 Jun 2022 21:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 16:13:51 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 16:13:52 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 16:14:23 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"8d152db7-d055-4fd6-b9f7-b60706c9e5fc\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Sun, 26 Jun 2022 16:13:51 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Sun, 26 Jun 2022 21:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Sun, 26 Jun 2022 16:13:51 GMT\",\r\n + \ \"modifiedDate\": \"Sun, 26 Jun 2022 16:13:52 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Sun, 26 Jun 2022 16:14:24 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:14:35 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"customerManagedKey": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel onboarding-state create + Connection: + - keep-alive + Content-Length: + - '45' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --customer-managed-key + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/onboardingStates/default?api-version=2022-06-01-preview + response: + body: + string: '{"properties":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/onboardingStates/default","name":"default","type":"Microsoft.SecurityInsights/onboardingStates","systemData":{"createdAt":"2022-06-26T16:14:37.3416992Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-26T16:14:37.3416992Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"}}' + headers: + cache-control: + - no-cache + content-length: + - '554' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:14:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel onboarding-state list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/onboardingStates?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"properties":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/onboardingStates/default","name":"default","type":"Microsoft.SecurityInsights/onboardingStates","systemData":{}}]}' + headers: + cache-control: + - no-cache + content-length: + - '344' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:14:44 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel onboarding-state show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/onboardingStates/default?api-version=2022-06-01-preview + response: + body: + string: '{"properties":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/onboardingStates/default","name":"default","type":"Microsoft.SecurityInsights/onboardingStates","systemData":{}}' + headers: + cache-control: + - no-cache + content-length: + - '332' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:14:46 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel onboarding-state delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/onboardingStates/default?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Sun, 26 Jun 2022 16:14:50 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_threat_indicator_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_threat_indicator_crud.yaml new file mode 100644 index 00000000000..c93605245b4 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_threat_indicator_crud.yaml @@ -0,0 +1,516 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-27T07:18:28Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 07:18:34 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"2c620c9a-c386-4dc6-815c-fcb185bef157\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 07:18:40 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 10:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 07:18:40 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 07:18:40 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 07:18:41 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"2c620c9a-c386-4dc6-815c-fcb185bef157\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 07:18:40 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 10:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 07:18:40 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 07:18:41 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 07:19:11 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"2c620c9a-c386-4dc6-815c-fcb185bef157\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 07:18:40 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 10:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 07:18:40 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 07:18:41 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 07:19:13 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 07:19:20 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"kind": "indicator", "properties": {"confidence": 78, "createdByRef": + "contoso@contoso.com", "description": "debugging indicators", "displayName": + "new schema", "externalReferences": [], "modified": "", "pattern": "[url:value + = https://www.contoso.com]", "patternType": "url", "revoked": false, "source": + "Microsoft Sentinel", "threatIntelligenceTags": ["new schema"], "threatTypes": + ["compromised"], "validFrom": "2022-06-15T17:44:00.114052Z", "validUntil": ""}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel threat-indicator create + Connection: + - keep-alive + Content-Length: + - '464' + Content-Type: + - application/json + ParameterSetName: + - -w -g --source --display-name --confidence --created-by-ref --modified --pattern + --pattern-type --revoked --valid-from --valid-until --description --threat-tags + --threat-types --external-references + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/threatIntelligence/main/createIndicator?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/threatIntelligence/585df01e-0bc0-37fa-7610-193cef62fbdc","name":"585df01e-0bc0-37fa-7610-193cef62fbdc","etag":"\"070071c8-0000-0100-0000-62b95a050000\"","type":"Microsoft.SecurityInsights/threatIntelligence","kind":"indicator","properties":{"confidence":78,"created":"2022-06-27T07:19:24.9097765Z","createdByRef":"contoso@contoso.com","extensions":{"sentinel-ext":{"severity":null}},"externalId":"indicator--dc179aa2-4a2e-4676-8ad8-6a46ffbc3c30","externalReferences":[],"lastUpdatedTimeUtc":"2022-06-27T07:19:28.7178067Z","revoked":false,"source":"Microsoft + Sentinel","threatIntelligenceTags":["new schema"],"displayName":"new schema","description":"debugging + indicators","threatTypes":["compromised"],"parsedPattern":[{"patternTypeKey":"url","patternTypeValues":[{"valueType":"url","value":"https:"}]}],"pattern":"[url:value + = https://www.contoso.com]","patternType":"url","validFrom":"2022-06-15T17:44:00.114052Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '1121' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 07:19:34 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel threat-indicator list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/threatIntelligence/585df01e-0bc0-37fa-7610-193cef62fbdc","name":"585df01e-0bc0-37fa-7610-193cef62fbdc","etag":"\"070074c8-0000-0100-0000-62b95a060000\"","type":"Microsoft.SecurityInsights/threatIntelligence","kind":"indicator","properties":{"confidence":78,"created":"2022-06-27T07:19:24.9097765Z","createdByRef":"contoso@contoso.com","extensions":{"sentinel-ext":{"severity":null}},"externalId":"indicator--dc179aa2-4a2e-4676-8ad8-6a46ffbc3c30","externalReferences":[],"lastUpdatedTimeUtc":"2022-06-27T07:19:28.7178067Z","revoked":false,"source":"Microsoft + Sentinel","threatIntelligenceTags":["new schema"],"displayName":"new schema","description":"debugging + indicators","threatTypes":["compromised"],"parsedPattern":[{"patternTypeKey":"url","patternTypeValues":[{"valueType":"url","value":"https:"}]}],"pattern":"[url:value + = https://www.contoso.com]","patternType":"url","validFrom":"2022-06-15T17:44:00.114052Z"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1133' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 07:19:34 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel threat-indicator show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators/585df01e-0bc0-37fa-7610-193cef62fbdc?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/threatIntelligence/585df01e-0bc0-37fa-7610-193cef62fbdc","name":"585df01e-0bc0-37fa-7610-193cef62fbdc","etag":"\"070074c8-0000-0100-0000-62b95a060000\"","type":"Microsoft.SecurityInsights/threatIntelligence","kind":"indicator","properties":{"confidence":78,"created":"2022-06-27T07:19:24.9097765Z","createdByRef":"contoso@contoso.com","extensions":{"sentinel-ext":{"severity":null}},"externalId":"indicator--dc179aa2-4a2e-4676-8ad8-6a46ffbc3c30","externalReferences":[],"lastUpdatedTimeUtc":"2022-06-27T07:19:28.7178067Z","revoked":false,"source":"Microsoft + Sentinel","threatIntelligenceTags":["new schema"],"displayName":"new schema","description":"debugging + indicators","threatTypes":["compromised"],"parsedPattern":[{"patternTypeKey":"url","patternTypeValues":[{"valueType":"url","value":"https:"}]}],"pattern":"[url:value + = https://www.contoso.com]","patternType":"url","validFrom":"2022-06-15T17:44:00.114052Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '1121' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 07:19:35 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel threat-indicator delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/threatIntelligence/main/indicators/585df01e-0bc0-37fa-7610-193cef62fbdc?api-version=2022-06-01-preview + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + date: + - Mon, 27 Jun 2022 07:19:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_watchlist_crud.yaml b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_watchlist_crud.yaml new file mode 100644 index 00000000000..92b50efb063 --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/recordings/test_sentinel_watchlist_crud.yaml @@ -0,0 +1,625 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001","name":"cli_test_sentinel_000001","type":"Microsoft.Resources/resourceGroups","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2022-06-27T04:16:21Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '327' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:16:24 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"sku": {"name": "PerGB2018"}, "retentionInDays": + 30, "workspaceCapping": {}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"0dcec037-e949-4430-a9f1-cd0f5838cd0e\",\r\n \"provisioningState\": \"Creating\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 04:16:31 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 06:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 04:16:31 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 04:16:31 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1075' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 04:16:32 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics workspace create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"0dcec037-e949-4430-a9f1-cd0f5838cd0e\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 04:16:31 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 06:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 04:16:31 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 04:16:33 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 04:17:04 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + ParameterSetName: + - -t -w -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-loganalytics/13.0.0b4 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002?api-version=2021-12-01-preview + response: + body: + string: "{\r\n \"properties\": {\r\n \"source\": \"Azure\",\r\n \"customerId\": + \"0dcec037-e949-4430-a9f1-cd0f5838cd0e\",\r\n \"provisioningState\": \"Succeeded\",\r\n + \ \"sku\": {\r\n \"name\": \"pergb2018\",\r\n \"lastSkuUpdate\": + \"Mon, 27 Jun 2022 04:16:31 GMT\"\r\n },\r\n \"retentionInDays\": 30,\r\n + \ \"features\": {\r\n \"legacy\": 0,\r\n \"searchVersion\": 1,\r\n + \ \"enableLogAccessUsingOnlyResourcePermissions\": true\r\n },\r\n + \ \"workspaceCapping\": {\r\n \"dailyQuotaGb\": -1.0,\r\n \"quotaNextResetTime\": + \"Mon, 27 Jun 2022 06:00:00 GMT\",\r\n \"dataIngestionStatus\": \"RespectQuota\"\r\n + \ },\r\n \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"createdDate\": \"Mon, 27 Jun 2022 04:16:31 GMT\",\r\n + \ \"modifiedDate\": \"Mon, 27 Jun 2022 04:16:33 GMT\"\r\n },\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/microsoft.operationalinsights/workspaces/workspace-000002\",\r\n + \ \"name\": \"workspace-000002\",\r\n \"type\": \"Microsoft.OperationalInsights/workspaces\",\r\n + \ \"location\": \"eastus2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + content-length: + - '1076' + content-type: + - application/json + date: + - Mon, 27 Jun 2022 04:17:07 GMT + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "plan": {"name": "SecurityInsights(workspace-000002)", + "publisher": "Microsoft", "promotionCode": "", "product": "OMSGallery/SecurityInsights"}, + "properties": {"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor log-analytics solution create + Connection: + - keep-alive + Content-Length: + - '370' + Content-Type: + - application/json; charset=utf-8 + ParameterSetName: + - -t -w -g + User-Agent: + - python/3.8.10 (Windows-10-10.0.19044-SP0) msrest/0.7.0 msrest_azure/0.6.4 + azure-mgmt-operationsmanagement/0.1.0 Azure-SDK-For-Python AZURECLI/2.37.0 + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights%28workspace-000002%29?api-version=2015-11-01-preview + response: + body: + string: "{\r\n \"plan\": {\r\n \"name\": \"SecurityInsights(workspace-000002)\",\r\n + \ \"publisher\": \"Microsoft\",\r\n \"promotionCode\": \"\",\r\n \"product\": + \"OMSGallery/SecurityInsights\"\r\n },\r\n \"properties\": {\r\n \"workspaceResourceId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/microsoft.OperationalInsights/workspaces/workspace-000002\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"Mon, + 01 Jan 0001 00:00:00 GMT\",\r\n \"sku\": {\r\n \"name\": \"PerGB\"\r\n + \ },\r\n \"lastModifiedTime\": \"Mon, 01 Jan 0001 00:00:00 GMT\",\r\n + \ \"containedResources\": []\r\n },\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_sentinel_000001/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(workspace-000002)\",\r\n + \ \"name\": \"SecurityInsights(workspace-000002)\",\r\n \"type\": \"Microsoft.OperationsManagement/solutions\",\r\n + \ \"location\": \"East US 2\"\r\n}" + headers: + access-control-allow-origin: + - '*' + cache-control: + - no-cache + cachecontrol: + - no-cache + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:17:17 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:e6336c63-aab2-45f0-996a-e5dbab2a1508 + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-ams-apiversion: + - WebAPI1.0 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + - ASP.NET + status: + code: 201 + message: Created +- request: + body: '{"properties": {"description": "Watchlist from CSV content", "displayName": + "High Value Assets Watchlist", "itemsSearchKey": "header1", "provider": "Microsoft", + "watchlistAlias": "watchlist-000003"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel watchlist create + Connection: + - keep-alive + Content-Length: + - '199' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --description --display-name --provider --items-search-key + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/watchlists/watchlist-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Watchlists/watchlist-000003","name":"watchlist-000003","etag":"\"06003b8d-0000-0100-0000-62b92f510000\"","type":"Microsoft.SecurityInsights/Watchlists","systemData":{"createdAt":"2022-06-27T04:17:18.0236043Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-27T04:17:18.0236043Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"watchlistId":"95081e9c-26e5-4022-8cfd-a00d67e29116","displayName":"High + Value Assets Watchlist","provider":"Microsoft","itemsSearchKey":"header1","created":"2022-06-27T04:17:18.0236043+00:00","updated":"2022-06-27T04:17:18.0236043+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"description":"Watchlist + from CSV content","watchlistType":"watchlist","watchlistAlias":"watchlist-000003","isDeleted":false,"labels":[],"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","numberOfLinesToSkip":0,"provisioningState":"Succeeded","sasUri":"","watchlistCategory":"General"}}' + headers: + cache-control: + - no-cache + content-length: + - '1421' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:17:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel watchlist list + Connection: + - keep-alive + ParameterSetName: + - -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/watchlists?api-version=2022-06-01-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Watchlists/watchlist-000003","name":"watchlist-000003","type":"Microsoft.SecurityInsights/Watchlists","systemData":{"createdAt":"2022-06-27T04:17:18.0236043Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-27T04:17:18.0236043Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"watchlistId":"95081e9c-26e5-4022-8cfd-a00d67e29116","displayName":"High + Value Assets Watchlist","provider":"Microsoft","itemsSearchKey":"header1","created":"2022-06-27T04:17:18.0236043+00:00","updated":"2022-06-27T04:17:18.0236043+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"description":"Watchlist + from CSV content","watchlistType":"watchlist","watchlistAlias":"watchlist-000003","isDeleted":false,"labels":[],"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","numberOfLinesToSkip":0,"provisioningState":"Succeeded","sasUri":"","watchlistCategory":"General"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1383' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:17:23 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel watchlist update + Connection: + - keep-alive + ParameterSetName: + - -n -w -g --display-name + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/watchlists/watchlist-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Watchlists/watchlist-000003","name":"watchlist-000003","etag":"\"06003b8d-0000-0100-0000-62b92f510000\"","type":"Microsoft.SecurityInsights/Watchlists","systemData":{"createdAt":"2022-06-27T04:17:18.0236043Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-27T04:17:18.0236043Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"watchlistId":"95081e9c-26e5-4022-8cfd-a00d67e29116","displayName":"High + Value Assets Watchlist","provider":"Microsoft","itemsSearchKey":"header1","created":"2022-06-27T04:17:18.0236043+00:00","updated":"2022-06-27T04:17:18.0236043+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"description":"Watchlist + from CSV content","watchlistType":"watchlist","watchlistAlias":"watchlist-000003","isDeleted":false,"labels":[],"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","numberOfLinesToSkip":0,"provisioningState":"Succeeded","sasUri":"","watchlistCategory":"General"}}' + headers: + cache-control: + - no-cache + content-length: + - '1421' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:17:26 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"etag": "\"06003b8d-0000-0100-0000-62b92f510000\"", "properties": {"created": + "2022-06-27T04:17:18.0236043+00:00", "createdBy": {"objectId": "f44cc02c-cec4-4b32-860a-50bdf6ab7362"}, + "description": "Watchlist from CSV content", "displayName": "New name", "isDeleted": + false, "itemsSearchKey": "header1", "labels": [], "numberOfLinesToSkip": 0, + "provider": "Microsoft", "tenantId": "54826b22-38d6-4fb2-bad9-b7b93a3e9c5a", + "updated": "2022-06-27T04:17:18.0236043+00:00", "updatedBy": {"objectId": "f44cc02c-cec4-4b32-860a-50bdf6ab7362"}, + "watchlistAlias": "watchlist-000003", "watchlistId": "95081e9c-26e5-4022-8cfd-a00d67e29116", + "watchlistType": "watchlist"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel watchlist update + Connection: + - keep-alive + Content-Length: + - '659' + Content-Type: + - application/json + ParameterSetName: + - -n -w -g --display-name + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/watchlists/watchlist-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Watchlists/watchlist-000003","name":"watchlist-000003","etag":"\"0600468d-0000-0100-0000-62b92f570000\"","type":"Microsoft.SecurityInsights/Watchlists","systemData":{"createdAt":"2022-06-27T04:17:18.0236043Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-27T04:17:27.1509698Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"watchlistId":"95081e9c-26e5-4022-8cfd-a00d67e29116","displayName":"New + name","provider":"Microsoft","itemsSearchKey":"header1","created":"2022-06-27T04:17:18.0236043+00:00","updated":"2022-06-27T04:17:27.1509698+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"description":"Watchlist + from CSV content","watchlistType":"watchlist","watchlistAlias":"watchlist-000003","isDeleted":false,"labels":[],"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","numberOfLinesToSkip":0,"provisioningState":"Succeeded","sasUri":"","watchlistCategory":"General"}}' + headers: + cache-control: + - no-cache + content-length: + - '1402' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:17:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel watchlist show + Connection: + - keep-alive + ParameterSetName: + - -n -w -g + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/watchlists/watchlist-000003?api-version=2022-06-01-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Watchlists/watchlist-000003","name":"watchlist-000003","etag":"\"0600468d-0000-0100-0000-62b92f570000\"","type":"Microsoft.SecurityInsights/Watchlists","systemData":{"createdAt":"2022-06-27T04:17:18.0236043Z","createdBy":"ethanyang@microsoft.com","createdByType":"User","lastModifiedAt":"2022-06-27T04:17:27.1509698Z","lastModifiedBy":"ethanyang@microsoft.com","lastModifiedByType":"User"},"properties":{"watchlistId":"95081e9c-26e5-4022-8cfd-a00d67e29116","displayName":"New + name","provider":"Microsoft","itemsSearchKey":"header1","created":"2022-06-27T04:17:18.0236043+00:00","updated":"2022-06-27T04:17:27.1509698+00:00","createdBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"updatedBy":{"objectId":"f44cc02c-cec4-4b32-860a-50bdf6ab7362","email":"ethanyang@microsoft.com","name":"a0965655-eecb-4c9f-8e21-2488aadf59fe"},"description":"Watchlist + from CSV content","watchlistType":"watchlist","watchlistAlias":"watchlist-000003","isDeleted":false,"labels":[],"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","numberOfLinesToSkip":0,"provisioningState":"Succeeded","sasUri":"","watchlistCategory":"General"}}' + headers: + cache-control: + - no-cache + content-length: + - '1402' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:17:30 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - sentinel watchlist delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -w -g --yes + User-Agent: + - AZURECLI/2.37.0 (AAZ) azsdk-python-core/1.24.0 Python/3.8.10 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/watchlists/watchlist-000003?api-version=2022-06-01-preview + response: + body: + string: '{}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_sentinel_000001/providers/Microsoft.OperationalInsights/workspaces/workspace-000002/providers/Microsoft.SecurityInsights/Watchlists/watchlist-000003/watchlistStatuses/8b22786e-1778-4f2c-933c-7dd7ece00b75?api-version=2022-06-01-preview + cache-control: + - no-cache + content-length: + - '2' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Jun 2022 04:17:32 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + status: + code: 200 + message: OK +version: 1 diff --git a/src/securityinsight/azext_sentinel/tests/latest/test_securityinsight.py b/src/securityinsight/azext_sentinel/tests/latest/test_securityinsight.py new file mode 100644 index 00000000000..9fa403bf14d --- /dev/null +++ b/src/securityinsight/azext_sentinel/tests/latest/test_securityinsight.py @@ -0,0 +1,531 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +# pylint: disable=line-too-long +# pylint: disable=too-many-lines + +from azure.cli.testsdk import ( + ResourceGroupPreparer, + ScenarioTest +) +from azure.cli.testsdk.scenario_tests import AllowLargeResponse + + +class SentinelClientTest(ScenarioTest): + def __init__(self, method_name): + super().__init__(method_name) + self.cmd("extension add -n log-analytics-solution") + + @AllowLargeResponse(size_kb=2048) + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_alert_rule_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "alert_rule_name": self.create_random_name("alert-rule-", 16), + "template_id": "65360bb0-8986-4ade-a89d-af3cf44d28aa" + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + + self.cmd( + "sentinel alert-rule create -n {alert_rule_name} -w {workspace_name} -g {rg} " + "--ms-security-incident \"{{product-filter:'Microsoft Cloud App Security',display-name:testing,enabled:true}}\"", + checks=[ + self.check("name", "{alert_rule_name}"), + self.check("type", "Microsoft.SecurityInsights/alertRules") + ] + ) + + self.cmd( + "sentinel alert-rule list -w {workspace_name} -g {rg}", + checks=[ + self.check("length(@)", 1), + self.check("@[0].name", "{alert_rule_name}") + ] + ) + + self.cmd("sentinel alert-rule update -n {alert_rule_name} -w {workspace_name} -g {rg} --ms-security-incident display-name=tested") + self.cmd( + "sentinel alert-rule show -n {alert_rule_name} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{alert_rule_name}"), + self.check("displayName", "tested") + ] + ) + + self.cmd("sentinel alert-rule delete -n {alert_rule_name} --workspace-name {workspace_name} -g {rg} --yes") + + self.cmd("sentinel alert-rule template list -w {workspace_name} -g {rg}") + self.cmd( + "sentinel alert-rule template show -n {template_id} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{template_id}"), + self.check("kind", "Scheduled") + ] + ) + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_automation_rule_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "rule_name": self.create_random_name("rule-", 12) + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + + self.cmd( + "sentinel automation-rule create -n {rule_name} -w {workspace_name} -g {rg} " + "--display-name 'High severity incidents escalation' --order 1 " + "--actions \"[{{order:1,modify-properties:{{action-configuration:{{severity:High}}}}}}]\" " + "--triggering-logic \"{{is-enabled:true,triggers-on:Incidents,triggers-when:Created}}\"", + checks=[ + self.check("name", "{rule_name}"), + self.check("type", "Microsoft.SecurityInsights/AutomationRules") + ] + ) + + self.cmd( + "sentinel automation-rule list -w {workspace_name} -g {rg}", + checks=[ + self.check("length(@)", 1), + self.check("[0].name", "{rule_name}") + ] + ) + + self.cmd("sentinel automation-rule update -n {rule_name} -w {workspace_name} -g {rg} --display-name 'New name'") + self.cmd( + "sentinel automation-rule show -n {rule_name} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{rule_name}"), + self.check("displayName", "New name"), + self.check("type", "Microsoft.SecurityInsights/AutomationRules") + ] + ) + + self.cmd("sentinel automation-rule delete -n {rule_name} -w {workspace_name} -g {rg} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_bookmark_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "bookmark_id": "73e01a99-5cd7-4139-a149-9f2736ff2ab5", + "query": "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)", + "expand_id": "27f76e63-c41b-480f-bb18-12ad2e011d49", + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + + self.cmd( + "sentinel bookmark create -n {bookmark_id} -w {workspace_name} -g {rg} " + "--query-content '{query}' --query-result 'Security Event query result' " + "--display-name 'My bookmark' --notes 'Found a suspicious activity' " + "--entity-mappings \"[{{entity-type:Account,field-mappings:[{{identifier:Fullname,value:johndoe@microsoft.com}}]}}]\" " + "--tactics \"[Execution]\" " + "--techniques \"[T1609]\" " + "--labels \"[Tag1,Tag2]\"", + checks=[ + self.check("name", "{bookmark_id}"), + self.check("query", "{query}") + ] + ) + + self.cmd( + "sentinel bookmark list -w {workspace_name} -g {rg}", + checks=[ + self.check("length(@)", 1), + self.check("[0].name", "{bookmark_id}") + ] + ) + + self.cmd( + "sentinel bookmark show -n {bookmark_id} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{bookmark_id}"), + self.check("displayName", "My bookmark") + ] + ) + + self.cmd("sentinel bookmark delete -n {bookmark_id} -w {workspace_name} -g {rg} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_incident_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "incident_id": "73e01a99-5cd7-4139-a149-9f2736ff2ab5" + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + + self.cmd( + "sentinel incident create -n {incident_id} -w {workspace_name} -g {rg} " + "--classification FalsePositive --classification-reason IncorrectAlertLogic --classification-comment 'Not a malicious activity' " + "--first-activity-time-utc 2019-01-01T13:00:30Z --last-activity-time-utc 2019-01-01T13:05:30Z " + "--severity High --status Closed --title 'My incident' --description 'This is a demo incident' " + "--owner \"{{object-id:2046feea-040d-4a46-9e2b-91c2941bfa70}}\"", + checks=[ + self.check("name", "{incident_id}"), + self.check("classification", "FalsePositive") + ] + ) + + self.cmd( + "sentinel incident list -w {workspace_name} -g {rg} --orderby 'properties/createdTimeUtc desc' --top 1", + checks=[ + self.check("length(@)", "1"), + self.check("[0].name", "{incident_id}") + ] + ) + + self.cmd( + "sentinel incident show -n {incident_id} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{incident_id}"), + self.check("classification", "FalsePositive") + ] + ) + + self.cmd("sentinel incident delete -n {incident_id} -w {workspace_name} -g {rg} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_incident_comment_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "incident_id": "73e01a99-5cd7-4139-a149-9f2736ff2ab5", + "comment_id": "4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014" + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + self.cmd( + "sentinel incident create -n {incident_id} -w {workspace_name} -g {rg} " + "--classification FalsePositive --classification-reason IncorrectAlertLogic --classification-comment 'Not a malicious activity' " + "--first-activity-time-utc 2019-01-01T13:00:30Z --last-activity-time-utc 2019-01-01T13:05:30Z " + "--severity High --status Closed --title 'My incident' --description 'This is a demo incident' " + "--owner \"{{object-id:2046feea-040d-4a46-9e2b-91c2941bfa70}}\"" + ) + + self.cmd( + "sentinel incident comment create -n {comment_id} -w {workspace_name} -g {rg} --incident-id {incident_id} --message 'Some message'", + checks=[ + self.check("name", "{comment_id}"), + self.check("message", "Some message") + ] + ) + + self.cmd( + "sentinel incident comment list -w {workspace_name} -g {rg} --incident-id {incident_id}", + checks=[ + self.check("length(@)", 1), + self.check("[0].name", "{comment_id}") + ] + ) + + self.cmd("sentinel incident comment update -n {comment_id} -w {workspace_name} -g {rg} --incident-id {incident_id} --message 'Some messages'") + self.cmd( + "sentinel incident comment show -n {comment_id} -w {workspace_name} -g {rg} --incident-id {incident_id}", + checks=[ + self.check("name", "{comment_id}"), + self.check("message", "Some messages") + ] + ) + + self.cmd("sentinel incident comment delete -n {comment_id} -w {workspace_name} -g {rg} --incident-id {incident_id} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_bookmark_relation_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "relation_name": self.create_random_name("relation-", 16), + "bookmark_id": "2216d0e1-91e3-4902-89fd-d2df8c535096", + "incident_id": "afbd324f-6c48-459c-8710-8d1e1cd03812", + "query": "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)" + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + self.cmd( + "sentinel bookmark create -n {bookmark_id} -w {workspace_name} -g {rg} " + "--query-content '{query}' --query-result 'Security Event query result' " + "--display-name 'My bookmark' --notes 'Found a suspicious activity' " + "--entity-mappings \"[{{entity-type:Account,field-mappings:[{{identifier:Fullname,value:johndoe@microsoft.com}}]}}]\" " + "--tactics \"[Execution]\" " + "--techniques \"[T1609]\" " + "--labels \"[Tag1,Tag2]\"" + ) + self.kwargs["resource_id"] = self.cmd( + "sentinel incident create -n {incident_id} -w {workspace_name} -g {rg} " + "--classification FalsePositive --classification-reason IncorrectAlertLogic --classification-comment 'Not a malicious activity' " + "--first-activity-time-utc 2019-01-01T13:00:30Z --last-activity-time-utc 2019-01-01T13:05:30Z " + "--severity High --status Closed --title 'My incident' --description 'This is a demo incident' " + "--owner \"{{object-id:2046feea-040d-4a46-9e2b-91c2941bfa70}}\"" + ).get_output_in_json()["id"] + + self.cmd( + "sentinel bookmark relation create -n {relation_name} -w {workspace_name} -g {rg} --bookmark-id {bookmark_id} --related-resource-id {resource_id}", + checks=[ + self.check("name", "{relation_name}"), + self.check("type", "Microsoft.SecurityInsights/Bookmarks/relations") + ] + ) + + self.cmd( + "sentinel bookmark relation list -w {workspace_name} -g {rg} --bookmark-id {bookmark_id}", + checks=[ + self.check("length(@)", 1), + self.check("[0].name", "{relation_name}") + ] + ) + + self.cmd( + "sentinel bookmark relation show -n {relation_name} -w {workspace_name} -g {rg} --bookmark-id {bookmark_id}", + checks=[ + self.check("name", "{relation_name}"), + self.check("type", "Microsoft.SecurityInsights/Bookmarks/relations") + ] + ) + + self.cmd("sentinel bookmark relation delete -n {relation_name} -w {workspace_name} -g {rg} --bookmark-id {bookmark_id} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_incident_relation_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "relation_name": self.create_random_name("relation-", 16), + "bookmark_id": "2216d0e1-91e3-4902-89fd-d2df8c535096", + "incident_id": "afbd324f-6c48-459c-8710-8d1e1cd03812", + "query": "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)" + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + self.cmd( + "sentinel incident create -n {incident_id} -w {workspace_name} -g {rg} " + "--classification FalsePositive --classification-reason IncorrectAlertLogic --classification-comment 'Not a malicious activity' " + "--first-activity-time-utc 2019-01-01T13:00:30Z --last-activity-time-utc 2019-01-01T13:05:30Z " + "--severity High --status Closed --title 'My incident' --description 'This is a demo incident' " + "--owner \"{{object-id:2046feea-040d-4a46-9e2b-91c2941bfa70}}\"" + ) + self.kwargs["resource_id"] = self.cmd( + "sentinel bookmark create -n {bookmark_id} -w {workspace_name} -g {rg} " + "--query-content '{query}' --query-result 'Security Event query result' " + "--display-name 'My bookmark' --notes 'Found a suspicious activity' " + "--entity-mappings \"[{{entity-type:Account,field-mappings:[{{identifier:Fullname,value:johndoe@microsoft.com}}]}}]\" " + "--tactics \"[Execution]\" " + "--techniques \"[T1609]\" " + "--labels \"[Tag1,Tag2]\"" + ).get_output_in_json()["id"] + + self.cmd( + "sentinel incident relation create -n {relation_name} -w {workspace_name} -g {rg} --incident-id {incident_id} --related-resource-id {resource_id}", + checks=[ + self.check("name", "{relation_name}"), + self.check("type", "Microsoft.SecurityInsights/Incidents/relations") + ] + ) + + self.cmd( + "sentinel incident relation list -w {workspace_name} -g {rg} --incident-id {incident_id}", + checks=[ + self.check("length(@)", 1), + self.check("[0].name", "{relation_name}") + ] + ) + + self.cmd( + "sentinel incident relation show -n {relation_name} -w {workspace_name} -g {rg} --incident-id {incident_id}", + checks=[ + self.check("name", "{relation_name}"), + self.check("type", "Microsoft.SecurityInsights/Incidents/relations") + ] + ) + + self.cmd("sentinel incident relation delete -n {relation_name} -w {workspace_name} -g {rg} --incident-id {incident_id} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_enrichment_crud(self): + self.kwargs.update({ + "domain": "microsoft.com", + "ip_address": "1.2.3.4" + }) + + self.cmd( + "sentinel enrichment domain-whois show -g {rg} --domain {domain}", + checks=[ + self.check("domain", "{domain}") + ] + ) + + self.cmd( + "sentinel enrichment ip-geodata show -g {rg} --ip-address {ip_address}", + checks=[ + self.check("ipAddr", "{ip_address}") + ] + ) + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_metadata_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "alert_rule_name": self.create_random_name("alert-rule-", 16), + "metadata_name": self.create_random_name("metadata-", 16), + "content_id": "c00ee137-7475-47c8-9cce-ec6f0f1bedd0" + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + self.kwargs["parent_id"] = self.cmd( + "sentinel alert-rule create -n {alert_rule_name} -w {workspace_name} -g {rg} " + "--ms-security-incident \"{{product-filter:'Microsoft Cloud App Security',display-name:testing,enabled:true}}\"" + ).get_output_in_json()["id"] + + self.cmd( + "sentinel metadata create -n {metadata_name} -w {workspace_name} -g {rg} " + "--content-id {content_id} --parent-id {parent_id} --kind AnalyticsRule", + checks=[ + self.check("name", "{metadata_name}"), + self.check("contentId", "{content_id}") + ] + ) + + self.cmd( + "sentinel metadata list -w {workspace_name} -g {rg}", + checks=[ + self.check("length(@)", 1), + self.check("[0].name", "{metadata_name}") + ] + ) + + self.cmd("sentinel metadata update -n {metadata_name} -w {workspace_name} -g {rg} --author \"{{name:cli,email:cli@microsoft.com}}\"") + self.cmd( + "sentinel metadata show -n {metadata_name} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{metadata_name}"), + self.check("author.name", "cli"), + self.check("author.email", "cli@microsoft.com") + ] + ) + + self.cmd("sentinel metadata delete -n {metadata_name} -w {workspace_name} -g {rg} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_onboarding_state_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16) + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + + self.cmd( + "sentinel onboarding-state create -n default -w {workspace_name} -g {rg} --customer-managed-key false", + checks=[ + self.check("name", "default"), + self.check("type", "Microsoft.SecurityInsights/onboardingStates") + ] + ) + + self.cmd( + "sentinel onboarding-state list -w {workspace_name} -g {rg}", + checks=[ + self.check("length(@)", 1), + self.check("value[0].name", "default") + ] + ) + + self.cmd( + "sentinel onboarding-state show -n default -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "default"), + self.check("type", "Microsoft.SecurityInsights/onboardingStates") + ] + ) + + self.cmd("sentinel onboarding-state delete -n default -w {workspace_name} -g {rg} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_threat_indicator_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "reference": "contoso@contoso.com" + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + + self.kwargs["indicator_name"] = self.cmd( + "sentinel threat-indicator create -w {workspace_name} -g {rg} " + "--source 'Microsoft Sentinel' --display-name 'new schema' --confidence 78 --created-by-ref {reference} " + "--modified '' --pattern '[url:value = 'https://www.contoso.com']' --pattern-type url --revoked false " + "--valid-from 2022-06-15T17:44:00.114052Z --valid-until '' --description 'debugging indicators' " + "--threat-tags \"['new schema']\" " + "--threat-types \"[compromised]\" " + "--external-references \"[]\"", + checks=[ + self.check("createdByRef", "{reference}"), + self.check("type", "Microsoft.SecurityInsights/threatIntelligence") + ] + ).get_output_in_json()["name"] + + self.cmd( + "sentinel threat-indicator list -w {workspace_name} -g {rg}", + checks=[ + self.check("length(@)", 1), + self.check("[0].createdByRef", "{reference}") + ] + ) + + self.cmd( + "sentinel threat-indicator show -n {indicator_name} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{indicator_name}"), + self.check("confidence", "78") + ] + ) + + self.cmd("sentinel threat-indicator delete -n {indicator_name} -w {workspace_name} -g {rg} --yes") + + @ResourceGroupPreparer(name_prefix="cli_test_sentinel_", location="eastus2") + def test_sentinel_watchlist_crud(self): + self.kwargs.update({ + "workspace_name": self.create_random_name("workspace-", 16), + "watchlist_name": self.create_random_name("watchlist-", 16) + }) + + self.cmd("monitor log-analytics workspace create -n {workspace_name} -g {rg}") + self.cmd("monitor log-analytics solution create -t SecurityInsights -w {workspace_name} -g {rg}") + + self.cmd( + "sentinel watchlist create -n {watchlist_name} -w {workspace_name} -g {rg} " + "--description 'Watchlist from CSV content' --display-name 'High Value Assets Watchlist' " + "--provider Microsoft --items-search-key header1", + checks=[ + self.check("name", "{watchlist_name}"), + self.check("type", "Microsoft.SecurityInsights/Watchlists") + ] + ) + + self.cmd( + "sentinel watchlist list -w {workspace_name} -g {rg}", + checks=[ + self.check("length(@)", 1), + self.check("[0].name", "{watchlist_name}") + ] + ) + + self.cmd("sentinel watchlist update -n {watchlist_name} -w {workspace_name} -g {rg} --display-name 'New name'") + self.cmd( + "sentinel watchlist show -n {watchlist_name} -w {workspace_name} -g {rg}", + checks=[ + self.check("name", "{watchlist_name}"), + self.check("displayName", "New name"), + self.check("type", "Microsoft.SecurityInsights/Watchlists") + ] + ) + + self.cmd("sentinel watchlist delete -n {watchlist_name} -w {workspace_name} -g {rg} --yes") diff --git a/src/securityinsight/azext_sentinel/tests/latest/test_sentinel_scenario.py b/src/securityinsight/azext_sentinel/tests/latest/test_sentinel_scenario.py deleted file mode 100644 index 59aa5bcdffe..00000000000 --- a/src/securityinsight/azext_sentinel/tests/latest/test_sentinel_scenario.py +++ /dev/null @@ -1,255 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- - -import os -from azure.cli.testsdk import ScenarioTest -from .. import try_manual, raise_if, calc_coverage -from azure.cli.testsdk import ResourceGroupPreparer -from azure.cli.testsdk.scenario_tests import AllowLargeResponse - - -TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..')) - - -@try_manual -class SecurityInsightsScenarioTest(ScenarioTest): - - @AllowLargeResponse() - def setUp(self): - super(SecurityInsightsScenarioTest, self).setUp() - self.cmd('extension add -n log-analytics-solution') - - def tearDown(self): - self.cmd('extension remove -n log-analytics-solution') - super(SecurityInsightsScenarioTest, self).tearDown() - - @ResourceGroupPreparer(name_prefix='clitestsentinel_myRg'[:7], key='rg', parameter_name='rg', location='westus') - @AllowLargeResponse() - def test_sentinel(self, rg): - workspace = self.create_random_name('clitestws-', 16) - self.kwargs.update({ - 'subscription_id': self.get_subscription_id(), - 'workspace': workspace, - 'rg': rg - }) - - self.cmd('monitor log-analytics workspace create -g {rg} -n {workspace} -l westus') - - self.cmd('monitor log-analytics solution create ' - '--resource-group "{rg}" ' - '--solution-type SecurityInsights ' - '--workspace {workspace} ') - - # EXAMPLE: /AlertRules/put/Creates or updates a Fusion alert rule. - self.cmd('sentinel alert-rule create ' - '--fusion-alert-rule etag="3d00c3ca-0000-0100-0000-5d42d5010000" alert-rule-template-name="f71aba3d-28fb-4' - '50b-b192-4e76a83015c8" enabled=true ' - '--resource-group "{rg}" ' - '--rule-id "myFirstFusionRule" ' - '--workspace-name {workspace}', - checks=[ - self.check('enabled', True), - self.check('kind', 'Fusion'), - self.check('name', 'myFirstFusionRule') - ]) - - # EXAMPLE: /AlertRules/put/Creates or updates a MicrosoftSecurityIncidentCreation rule. - self.cmd('sentinel alert-rule create ' - '--microsoft-security-incident-creation-alert-rule etag="260097e0-0000-0d00-0000-5d6fa88f0000" ' - 'product-filter="Microsoft Cloud App Security" display-name="testing displayname" enabled=true ' - '--resource-group "{rg}" ' - '--rule-id "microsoftSecurityIncidentCreationRuleExample" ' - '--workspace-name {workspace}', - checks=[ - self.check('enabled', True), - self.check('kind', 'MicrosoftSecurityIncidentCreation'), - self.check('name', 'microsoftSecurityIncidentCreationRuleExample'), - self.check('productFilter', 'Microsoft Cloud App Security'), - self.check('displayName', 'testing displayname') - ]) - - # EXAMPLE: /AlertRules/get/Get a Fusion alert rule. - self.cmd('sentinel alert-rule show ' - '--resource-group "{rg}" ' - '--rule-id "myFirstFusionRule" ' - '--workspace-name {workspace}', - checks=[ - self.check('enabled', True), - self.check('kind', 'Fusion'), - self.check('name', 'myFirstFusionRule') - ]) - - # EXAMPLE: /AlertRules/get/Get a MicrosoftSecurityIncidentCreation rule. - self.cmd('sentinel alert-rule show ' - '--resource-group "{rg}" ' - '--rule-id "microsoftSecurityIncidentCreationRuleExample" ' - '--workspace-name {workspace}', - checks=[ - self.check('enabled', True), - self.check('kind', 'MicrosoftSecurityIncidentCreation'), - self.check('name', 'microsoftSecurityIncidentCreationRuleExample'), - self.check('productFilter', 'Microsoft Cloud App Security'), - self.check('displayName', 'testing displayname') - ]) - - # EXAMPLE: /AlertRules/get/Get all alert rules. - self.cmd('sentinel alert-rule list ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('length(@)', 2) - ]) - - self.cmd('sentinel alert-rule delete -y ' - '--resource-group "{rg}" ' - '--rule-id "myFirstFusionRule" ' - '--workspace-name {workspace}') - - # EXAMPLE: /AlertRuleTemplates/get/Get alert rule template by Id. - self.cmd('sentinel alert-rule-template show ' - '--alert-rule-template-id "65360bb0-8986-4ade-a89d-af3cf44d28aa" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('kind', 'Scheduled'), - self.check('name', '65360bb0-8986-4ade-a89d-af3cf44d28aa') - ]) - - # EXAMPLE: /AlertRuleTemplates/get/Get all alert rule templates. - self.cmd('sentinel alert-rule-template list ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}') - - # EXAMPLE: /Bookmarks/put/Creates or updates a bookmark. - self.cmd('sentinel bookmark create ' - '--etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" ' - '--created "2019-01-01T13:15:30Z" ' - '--display-name "My bookmark" ' - '--labels "Tag1" ' - '--labels "Tag2" ' - '--notes "Found a suspicious activity" ' - '-q "SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)" ' - '--query-result "Security Event query result" ' - '--updated "2019-01-01T13:15:30Z" ' - '--bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('name', '73e01a99-5cd7-4139-a149-9f2736ff2ab5'), - self.check('query', 'SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)') - ]) - - # EXAMPLE: /Bookmarks/get/Get a bookmark. - self.cmd('sentinel bookmark show ' - '--bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('name', '73e01a99-5cd7-4139-a149-9f2736ff2ab5'), - self.check('query', 'SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)') - ]) - - # EXAMPLE: /Bookmarks/get/Get all bookmarks. - self.cmd('sentinel bookmark list ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('length(@)', 1), - self.check('[0].name', '73e01a99-5cd7-4139-a149-9f2736ff2ab5'), - self.check('[0].query', 'SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)') - ]) - - # EXAMPLE: /Bookmarks/delete/Delete a bookmark. - self.cmd('sentinel bookmark delete -y ' - '--bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}') - - # EXAMPLE: /Incidents/put/Creates or updates an incident. - self.cmd('sentinel incident create ' - '--etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" ' - '--description "This is a demo incident" ' - '--classification "FalsePositive" ' - '--classification-comment "Not a malicious activity" ' - '--classification-reason "IncorrectAlertLogic" ' - '--first-activity-time-utc "2019-01-01T13:00:30Z" ' - '--last-activity-time-utc "2019-01-01T13:05:30Z" ' - '--owner object-id="2046feea-040d-4a46-9e2b-91c2941bfa70" ' - '--severity "High" ' - '--status "Closed" ' - '--title "title" ' - '--incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('classification', 'FalsePositive'), - self.check('classificationReason', 'IncorrectAlertLogic'), - self.check('classificationComment', 'Not a malicious activity'), - self.check('severity', 'High'), - self.check('title', 'title'), - self.check('status', 'Closed') - ]) - - # EXAMPLE: /Incidents/get/Get an incident. - self.cmd('sentinel incident show ' - '--incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('classification', 'FalsePositive'), - self.check('classificationReason', 'IncorrectAlertLogic'), - self.check('classificationComment', 'Not a malicious activity'), - self.check('severity', 'High'), - self.check('title', 'title'), - self.check('status', 'Closed') - ]) - - # EXAMPLE: /IncidentComments/put/Creates an incident comment. - self.cmd('sentinel incident-comment create ' - '--message "Some message" ' - '--incident-comment-id "4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014" ' - '--incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('message', 'Some message'), - self.check('name', '4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014') - ]) - - # EXAMPLE: /IncidentComments/get/Get all incident comments. - self.cmd('sentinel incident-comment list ' - '--incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('length(@)', 1), - self.check('[0].message', 'Some message'), - self.check('[0].name', '4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014') - ]) - - # EXAMPLE: /IncidentComments/get/Get an incident comment. - self.cmd('sentinel incident-comment show ' - '--incident-comment-id "4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014" ' - '--incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}', - checks=[ - self.check('message', 'Some message'), - self.check('name', '4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014') - ]) - - # EXAMPLE: /Incidents/delete/Delete an incident. - self.cmd('sentinel incident delete -y ' - '--incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" ' - '--resource-group "{rg}" ' - '--workspace-name {workspace}') - - calc_coverage(__file__) - raise_if() diff --git a/src/securityinsight/azext_sentinel/tests/latest/test_sentinel_scenario_coverage.md b/src/securityinsight/azext_sentinel/tests/latest/test_sentinel_scenario_coverage.md deleted file mode 100644 index cb712843009..00000000000 --- a/src/securityinsight/azext_sentinel/tests/latest/test_sentinel_scenario_coverage.md +++ /dev/null @@ -1,2 +0,0 @@ -|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt| -Coverage: 0/0 diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/__init__.py b/src/securityinsight/azext_sentinel/vendored_sdks/__init__.py deleted file mode 100644 index c9cfdc73e77..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is -# regenerated. -# -------------------------------------------------------------------------- - -__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/__init__.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/__init__.py deleted file mode 100644 index adcb1a40f19..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from ._security_insights import SecurityInsights -__all__ = ['SecurityInsights'] - -try: - from ._patch import patch_sdk # type: ignore - patch_sdk() -except ImportError: - pass diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/_configuration.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/_configuration.py deleted file mode 100644 index e24ce7ef4eb..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/_configuration.py +++ /dev/null @@ -1,70 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from typing import TYPE_CHECKING - -from azure.core.configuration import Configuration -from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any - - from azure.core.credentials import TokenCredential - -VERSION = "unknown" - -class SecurityInsightsConfiguration(Configuration): - """Configuration for SecurityInsights. - - Note that all parameters used to create this instance are saved as instance - attributes. - - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: Azure subscription ID. - :type subscription_id: str - """ - - def __init__( - self, - credential, # type: "TokenCredential" - subscription_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> None - if credential is None: - raise ValueError("Parameter 'credential' must not be None.") - if subscription_id is None: - raise ValueError("Parameter 'subscription_id' must not be None.") - super(SecurityInsightsConfiguration, self).__init__(**kwargs) - - self.credential = credential - self.subscription_id = subscription_id - self.api_version = "2020-01-01" - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) - kwargs.setdefault('sdk_moniker', 'securityinsights/{}'.format(VERSION)) - self._configure(**kwargs) - - def _configure( - self, - **kwargs # type: Any - ): - # type: (...) -> None - self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) - self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) - self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) - self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) - self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) - self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) - self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) - self.authentication_policy = kwargs.get('authentication_policy') - if self.credential and not self.authentication_policy: - self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/_security_insights.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/_security_insights.py deleted file mode 100644 index 3f1b4e49c01..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/_security_insights.py +++ /dev/null @@ -1,103 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from typing import TYPE_CHECKING - -from azure.mgmt.core import ARMPipelineClient -from msrest import Deserializer, Serializer - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Optional - - from azure.core.credentials import TokenCredential - -from ._configuration import SecurityInsightsConfiguration -from .operations import OperationOperations -from .operations import AlertRuleOperations -from .operations import ActionOperations -from .operations import AlertRuleTemplateOperations -from .operations import BookmarkOperations -from .operations import DataConnectorOperations -from .operations import IncidentOperations -from .operations import IncidentCommentOperations -from . import models - - -class SecurityInsights(object): - """API spec for Microsoft.SecurityInsights (Azure Security Insights) resource provider. - - :ivar operation: OperationOperations operations - :vartype operation: security_insights.operations.OperationOperations - :ivar alert_rule: AlertRuleOperations operations - :vartype alert_rule: security_insights.operations.AlertRuleOperations - :ivar action: ActionOperations operations - :vartype action: security_insights.operations.ActionOperations - :ivar alert_rule_template: AlertRuleTemplateOperations operations - :vartype alert_rule_template: security_insights.operations.AlertRuleTemplateOperations - :ivar bookmark: BookmarkOperations operations - :vartype bookmark: security_insights.operations.BookmarkOperations - :ivar data_connector: DataConnectorOperations operations - :vartype data_connector: security_insights.operations.DataConnectorOperations - :ivar incident: IncidentOperations operations - :vartype incident: security_insights.operations.IncidentOperations - :ivar incident_comment: IncidentCommentOperations operations - :vartype incident_comment: security_insights.operations.IncidentCommentOperations - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: Azure subscription ID. - :type subscription_id: str - :param str base_url: Service URL - """ - - def __init__( - self, - credential, # type: "TokenCredential" - subscription_id, # type: str - base_url=None, # type: Optional[str] - **kwargs # type: Any - ): - # type: (...) -> None - if not base_url: - base_url = 'https://management.azure.com' - self._config = SecurityInsightsConfiguration(credential, subscription_id, **kwargs) - self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) - - client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} - self._serialize = Serializer(client_models) - self._deserialize = Deserializer(client_models) - - self.operation = OperationOperations( - self._client, self._config, self._serialize, self._deserialize) - self.alert_rule = AlertRuleOperations( - self._client, self._config, self._serialize, self._deserialize) - self.action = ActionOperations( - self._client, self._config, self._serialize, self._deserialize) - self.alert_rule_template = AlertRuleTemplateOperations( - self._client, self._config, self._serialize, self._deserialize) - self.bookmark = BookmarkOperations( - self._client, self._config, self._serialize, self._deserialize) - self.data_connector = DataConnectorOperations( - self._client, self._config, self._serialize, self._deserialize) - self.incident = IncidentOperations( - self._client, self._config, self._serialize, self._deserialize) - self.incident_comment = IncidentCommentOperations( - self._client, self._config, self._serialize, self._deserialize) - - def close(self): - # type: () -> None - self._client.close() - - def __enter__(self): - # type: () -> SecurityInsights - self._client.__enter__() - return self - - def __exit__(self, *exc_details): - # type: (Any) -> None - self._client.__exit__(*exc_details) diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/_configuration.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/_configuration.py deleted file mode 100644 index 160eb378d2f..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/_configuration.py +++ /dev/null @@ -1,66 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from typing import Any, TYPE_CHECKING - -from azure.core.configuration import Configuration -from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials_async import AsyncTokenCredential - -VERSION = "unknown" - -class SecurityInsightsConfiguration(Configuration): - """Configuration for SecurityInsights. - - Note that all parameters used to create this instance are saved as instance - attributes. - - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: Azure subscription ID. - :type subscription_id: str - """ - - def __init__( - self, - credential: "AsyncTokenCredential", - subscription_id: str, - **kwargs: Any - ) -> None: - if credential is None: - raise ValueError("Parameter 'credential' must not be None.") - if subscription_id is None: - raise ValueError("Parameter 'subscription_id' must not be None.") - super(SecurityInsightsConfiguration, self).__init__(**kwargs) - - self.credential = credential - self.subscription_id = subscription_id - self.api_version = "2020-01-01" - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) - kwargs.setdefault('sdk_moniker', 'securityinsights/{}'.format(VERSION)) - self._configure(**kwargs) - - def _configure( - self, - **kwargs: Any - ) -> None: - self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) - self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) - self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) - self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) - self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) - self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) - self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) - self.authentication_policy = kwargs.get('authentication_policy') - if self.credential and not self.authentication_policy: - self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/_security_insights.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/_security_insights.py deleted file mode 100644 index 7eb275a24fa..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/_security_insights.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from typing import Any, Optional, TYPE_CHECKING - -from azure.mgmt.core import AsyncARMPipelineClient -from msrest import Deserializer, Serializer - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials_async import AsyncTokenCredential - -from ._configuration import SecurityInsightsConfiguration -from .operations import OperationOperations -from .operations import AlertRuleOperations -from .operations import ActionOperations -from .operations import AlertRuleTemplateOperations -from .operations import BookmarkOperations -from .operations import DataConnectorOperations -from .operations import IncidentOperations -from .operations import IncidentCommentOperations -from .. import models - - -class SecurityInsights(object): - """API spec for Microsoft.SecurityInsights (Azure Security Insights) resource provider. - - :ivar operation: OperationOperations operations - :vartype operation: security_insights.aio.operations.OperationOperations - :ivar alert_rule: AlertRuleOperations operations - :vartype alert_rule: security_insights.aio.operations.AlertRuleOperations - :ivar action: ActionOperations operations - :vartype action: security_insights.aio.operations.ActionOperations - :ivar alert_rule_template: AlertRuleTemplateOperations operations - :vartype alert_rule_template: security_insights.aio.operations.AlertRuleTemplateOperations - :ivar bookmark: BookmarkOperations operations - :vartype bookmark: security_insights.aio.operations.BookmarkOperations - :ivar data_connector: DataConnectorOperations operations - :vartype data_connector: security_insights.aio.operations.DataConnectorOperations - :ivar incident: IncidentOperations operations - :vartype incident: security_insights.aio.operations.IncidentOperations - :ivar incident_comment: IncidentCommentOperations operations - :vartype incident_comment: security_insights.aio.operations.IncidentCommentOperations - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: Azure subscription ID. - :type subscription_id: str - :param str base_url: Service URL - """ - - def __init__( - self, - credential: "AsyncTokenCredential", - subscription_id: str, - base_url: Optional[str] = None, - **kwargs: Any - ) -> None: - if not base_url: - base_url = 'https://management.azure.com' - self._config = SecurityInsightsConfiguration(credential, subscription_id, **kwargs) - self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) - - client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} - self._serialize = Serializer(client_models) - self._deserialize = Deserializer(client_models) - - self.operation = OperationOperations( - self._client, self._config, self._serialize, self._deserialize) - self.alert_rule = AlertRuleOperations( - self._client, self._config, self._serialize, self._deserialize) - self.action = ActionOperations( - self._client, self._config, self._serialize, self._deserialize) - self.alert_rule_template = AlertRuleTemplateOperations( - self._client, self._config, self._serialize, self._deserialize) - self.bookmark = BookmarkOperations( - self._client, self._config, self._serialize, self._deserialize) - self.data_connector = DataConnectorOperations( - self._client, self._config, self._serialize, self._deserialize) - self.incident = IncidentOperations( - self._client, self._config, self._serialize, self._deserialize) - self.incident_comment = IncidentCommentOperations( - self._client, self._config, self._serialize, self._deserialize) - - async def close(self) -> None: - await self._client.close() - - async def __aenter__(self) -> "SecurityInsights": - await self._client.__aenter__() - return self - - async def __aexit__(self, *exc_details) -> None: - await self._client.__aexit__(*exc_details) diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/__init__.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/__init__.py deleted file mode 100644 index 5e67996dcd4..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from ._operation_operations import OperationOperations -from ._alert_rule_operations import AlertRuleOperations -from ._action_operations import ActionOperations -from ._alert_rule_template_operations import AlertRuleTemplateOperations -from ._bookmark_operations import BookmarkOperations -from ._data_connector_operations import DataConnectorOperations -from ._incident_operations import IncidentOperations -from ._incident_comment_operations import IncidentCommentOperations - -__all__ = [ - 'OperationOperations', - 'AlertRuleOperations', - 'ActionOperations', - 'AlertRuleTemplateOperations', - 'BookmarkOperations', - 'DataConnectorOperations', - 'IncidentOperations', - 'IncidentCommentOperations', -] diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_action_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_action_operations.py deleted file mode 100644 index 378198b2cfb..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_action_operations.py +++ /dev/null @@ -1,121 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class ActionOperations: - """ActionOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list_by_alert_rule( - self, - resource_group_name: str, - workspace_name: str, - rule_id: str, - **kwargs - ) -> AsyncIterable["models.ActionsList"]: - """Gets all actions of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ActionsList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.ActionsList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ActionsList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list_by_alert_rule.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('ActionsList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list_by_alert_rule.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_alert_rule_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_alert_rule_operations.py deleted file mode 100644 index 89d90bb06be..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_alert_rule_operations.py +++ /dev/null @@ -1,535 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class AlertRuleOperations: - """AlertRuleOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name: str, - workspace_name: str, - **kwargs - ) -> AsyncIterable["models.AlertRulesList"]: - """Gets all alert rules. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AlertRulesList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.AlertRulesList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRulesList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('AlertRulesList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules'} # type: ignore - - async def get( - self, - resource_group_name: str, - workspace_name: str, - rule_id: str, - **kwargs - ) -> "models.AlertRule": - """Gets the alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AlertRule, or the result of cls(response) - :rtype: ~security_insights.models.AlertRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('AlertRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}'} # type: ignore - - async def create_or_update( - self, - resource_group_name: str, - workspace_name: str, - rule_id: str, - alert_rule: "models.AlertRule", - **kwargs - ) -> "models.AlertRule": - """Creates or updates the alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param alert_rule: The alert rule. - :type alert_rule: ~security_insights.models.AlertRule - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AlertRule, or the result of cls(response) - :rtype: ~security_insights.models.AlertRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(alert_rule, 'AlertRule') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('AlertRule', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('AlertRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}'} # type: ignore - - async def delete( - self, - resource_group_name: str, - workspace_name: str, - rule_id: str, - **kwargs - ) -> None: - """Delete the alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}'} # type: ignore - - async def get_action( - self, - resource_group_name: str, - workspace_name: str, - rule_id: str, - action_id: str, - **kwargs - ) -> "models.ActionResponse": - """Gets the action of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param action_id: Action ID. - :type action_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActionResponse, or the result of cls(response) - :rtype: ~security_insights.models.ActionResponse - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ActionResponse"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get_action.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - 'actionId': self._serialize.url("action_id", action_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActionResponse', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get_action.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}'} # type: ignore - - async def create_or_update_action( - self, - resource_group_name: str, - workspace_name: str, - rule_id: str, - action_id: str, - etag: Optional[str] = None, - logic_app_resource_id: Optional[str] = None, - trigger_uri: Optional[str] = None, - **kwargs - ) -> "models.ActionResponse": - """Creates or updates the action of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param action_id: Action ID. - :type action_id: str - :param etag: Etag of the azure resource. - :type etag: str - :param logic_app_resource_id: Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param trigger_uri: Logic App Callback URL for this specific workflow. - :type trigger_uri: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActionResponse, or the result of cls(response) - :rtype: ~security_insights.models.ActionResponse - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ActionResponse"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - action = models.ActionRequest(etag=etag, logic_app_resource_id=logic_app_resource_id, trigger_uri=trigger_uri) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update_action.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - 'actionId': self._serialize.url("action_id", action_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(action, 'ActionRequest') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('ActionResponse', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('ActionResponse', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update_action.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}'} # type: ignore - - async def delete_action( - self, - resource_group_name: str, - workspace_name: str, - rule_id: str, - action_id: str, - **kwargs - ) -> None: - """Delete the action of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param action_id: Action ID. - :type action_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete_action.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - 'actionId': self._serialize.url("action_id", action_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete_action.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_alert_rule_template_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_alert_rule_template_operations.py deleted file mode 100644 index 986138cb66b..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_alert_rule_template_operations.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class AlertRuleTemplateOperations: - """AlertRuleTemplateOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name: str, - workspace_name: str, - **kwargs - ) -> AsyncIterable["models.AlertRuleTemplatesList"]: - """Gets all alert rule templates. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AlertRuleTemplatesList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.AlertRuleTemplatesList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRuleTemplatesList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('AlertRuleTemplatesList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRuleTemplates'} # type: ignore - - async def get( - self, - resource_group_name: str, - workspace_name: str, - alert_rule_template_id: str, - **kwargs - ) -> "models.AlertRuleTemplate": - """Gets the alert rule template. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param alert_rule_template_id: Alert rule template ID. - :type alert_rule_template_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AlertRuleTemplate, or the result of cls(response) - :rtype: ~security_insights.models.AlertRuleTemplate - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRuleTemplate"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'alertRuleTemplateId': self._serialize.url("alert_rule_template_id", alert_rule_template_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('AlertRuleTemplate', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRuleTemplates/{alertRuleTemplateId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_bookmark_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_bookmark_operations.py deleted file mode 100644 index 6cd59a2dc8c..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_bookmark_operations.py +++ /dev/null @@ -1,345 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import datetime -from typing import Any, AsyncIterable, Callable, Dict, Generic, List, Optional, TypeVar, Union -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class BookmarkOperations: - """BookmarkOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name: str, - workspace_name: str, - **kwargs - ) -> AsyncIterable["models.BookmarkList"]: - """Gets all bookmarks. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either BookmarkList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.BookmarkList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.BookmarkList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('BookmarkList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks'} # type: ignore - - async def get( - self, - resource_group_name: str, - workspace_name: str, - bookmark_id: str, - **kwargs - ) -> "models.Bookmark": - """Gets a bookmark. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param bookmark_id: Bookmark ID. - :type bookmark_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Bookmark, or the result of cls(response) - :rtype: ~security_insights.models.Bookmark - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Bookmark"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'bookmarkId': self._serialize.url("bookmark_id", bookmark_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('Bookmark', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}'} # type: ignore - - async def create_or_update( - self, - resource_group_name: str, - workspace_name: str, - bookmark_id: str, - etag: Optional[str] = None, - created: Optional[datetime.datetime] = None, - display_name: Optional[str] = None, - labels: Optional[List[str]] = None, - notes: Optional[str] = None, - query: Optional[str] = None, - query_result: Optional[str] = None, - updated: Optional[datetime.datetime] = None, - incident_info: Optional["models.IncidentInfo"] = None, - object_id: Optional[str] = None, - **kwargs - ) -> "models.Bookmark": - """Creates or updates the bookmark. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param bookmark_id: Bookmark ID. - :type bookmark_id: str - :param etag: Etag of the azure resource. - :type etag: str - :param created: The time the bookmark was created. - :type created: ~datetime.datetime - :param display_name: The display name of the bookmark. - :type display_name: str - :param labels: List of labels relevant to this bookmark. - :type labels: list[str] - :param notes: The notes of the bookmark. - :type notes: str - :param query: The query of the bookmark. - :type query: str - :param query_result: The query result of the bookmark. - :type query_result: str - :param updated: The last time the bookmark was updated. - :type updated: ~datetime.datetime - :param incident_info: Describes an incident that relates to bookmark. - :type incident_info: ~security_insights.models.IncidentInfo - :param object_id: The object id of the user. - :type object_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Bookmark, or the result of cls(response) - :rtype: ~security_insights.models.Bookmark - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Bookmark"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - bookmark = models.Bookmark(etag=etag, created=created, display_name=display_name, labels=labels, notes=notes, query=query, query_result=query_result, updated=updated, incident_info=incident_info, object_id_updated_by_object_id=object_id) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'bookmarkId': self._serialize.url("bookmark_id", bookmark_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(bookmark, 'Bookmark') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('Bookmark', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('Bookmark', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}'} # type: ignore - - async def delete( - self, - resource_group_name: str, - workspace_name: str, - bookmark_id: str, - **kwargs - ) -> None: - """Delete the bookmark. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param bookmark_id: Bookmark ID. - :type bookmark_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'bookmarkId': self._serialize.url("bookmark_id", bookmark_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_data_connector_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_data_connector_operations.py deleted file mode 100644 index 9f83b3170a9..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_data_connector_operations.py +++ /dev/null @@ -1,315 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class DataConnectorOperations: - """DataConnectorOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name: str, - workspace_name: str, - **kwargs - ) -> AsyncIterable["models.DataConnectorList"]: - """Gets all data connectors. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either DataConnectorList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.DataConnectorList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.DataConnectorList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('DataConnectorList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors'} # type: ignore - - async def get( - self, - resource_group_name: str, - workspace_name: str, - data_connector_id: str, - **kwargs - ) -> "models.DataConnector": - """Gets a data connector. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param data_connector_id: Connector ID. - :type data_connector_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: DataConnector, or the result of cls(response) - :rtype: ~security_insights.models.DataConnector - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.DataConnector"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'dataConnectorId': self._serialize.url("data_connector_id", data_connector_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('DataConnector', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}'} # type: ignore - - async def create_or_update( - self, - resource_group_name: str, - workspace_name: str, - data_connector_id: str, - data_connector: "models.DataConnector", - **kwargs - ) -> "models.DataConnector": - """Creates or updates the data connector. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param data_connector_id: Connector ID. - :type data_connector_id: str - :param data_connector: The data connector. - :type data_connector: ~security_insights.models.DataConnector - :keyword callable cls: A custom type or function that will be passed the direct response - :return: DataConnector, or the result of cls(response) - :rtype: ~security_insights.models.DataConnector - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.DataConnector"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'dataConnectorId': self._serialize.url("data_connector_id", data_connector_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(data_connector, 'DataConnector') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('DataConnector', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('DataConnector', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}'} # type: ignore - - async def delete( - self, - resource_group_name: str, - workspace_name: str, - data_connector_id: str, - **kwargs - ) -> None: - """Delete the data connector. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param data_connector_id: Connector ID. - :type data_connector_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'dataConnectorId': self._serialize.url("data_connector_id", data_connector_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_incident_comment_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_incident_comment_operations.py deleted file mode 100644 index cc2b8403fc1..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_incident_comment_operations.py +++ /dev/null @@ -1,287 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class IncidentCommentOperations: - """IncidentCommentOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list_by_incident( - self, - resource_group_name: str, - workspace_name: str, - incident_id: str, - filter: Optional[str] = None, - orderby: Optional[str] = None, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs - ) -> AsyncIterable["models.IncidentCommentList"]: - """Gets all incident comments. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param filter: Filters the results, based on a Boolean condition. Optional. - :type filter: str - :param orderby: Sorts the results. Optional. - :type orderby: str - :param top: Returns only the first n results. Optional. - :type top: int - :param skip_token: Skiptoken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either IncidentCommentList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.IncidentCommentList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentCommentList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list_by_incident.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') - if orderby is not None: - query_parameters['$orderby'] = self._serialize.query("orderby", orderby, 'str') - if top is not None: - query_parameters['$top'] = self._serialize.query("top", top, 'int') - if skip_token is not None: - query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('IncidentCommentList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list_by_incident.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments'} # type: ignore - - async def get( - self, - resource_group_name: str, - workspace_name: str, - incident_id: str, - incident_comment_id: str, - **kwargs - ) -> "models.IncidentComment": - """Gets an incident comment. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param incident_comment_id: Incident comment ID. - :type incident_comment_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: IncidentComment, or the result of cls(response) - :rtype: ~security_insights.models.IncidentComment - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentComment"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - 'incidentCommentId': self._serialize.url("incident_comment_id", incident_comment_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('IncidentComment', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}'} # type: ignore - - async def create_comment( - self, - resource_group_name: str, - workspace_name: str, - incident_id: str, - incident_comment_id: str, - message: Optional[str] = None, - **kwargs - ) -> "models.IncidentComment": - """Creates the incident comment. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param incident_comment_id: Incident comment ID. - :type incident_comment_id: str - :param message: The comment message. - :type message: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: IncidentComment, or the result of cls(response) - :rtype: ~security_insights.models.IncidentComment - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentComment"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - incident_comment = models.IncidentComment(message=message) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_comment.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - 'incidentCommentId': self._serialize.url("incident_comment_id", incident_comment_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(incident_comment, 'IncidentComment') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('IncidentComment', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_comment.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_incident_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_incident_operations.py deleted file mode 100644 index 8efc09e2788..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_incident_operations.py +++ /dev/null @@ -1,373 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import datetime -from typing import Any, AsyncIterable, Callable, Dict, Generic, List, Optional, TypeVar, Union -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class IncidentOperations: - """IncidentOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name: str, - workspace_name: str, - filter: Optional[str] = None, - orderby: Optional[str] = None, - top: Optional[int] = None, - skip_token: Optional[str] = None, - **kwargs - ) -> AsyncIterable["models.IncidentList"]: - """Gets all incidents. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param filter: Filters the results, based on a Boolean condition. Optional. - :type filter: str - :param orderby: Sorts the results. Optional. - :type orderby: str - :param top: Returns only the first n results. Optional. - :type top: int - :param skip_token: Skiptoken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either IncidentList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.IncidentList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') - if orderby is not None: - query_parameters['$orderby'] = self._serialize.query("orderby", orderby, 'str') - if top is not None: - query_parameters['$top'] = self._serialize.query("top", top, 'int') - if skip_token is not None: - query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('IncidentList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents'} # type: ignore - - async def get( - self, - resource_group_name: str, - workspace_name: str, - incident_id: str, - **kwargs - ) -> "models.Incident": - """Gets an incident. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Incident, or the result of cls(response) - :rtype: ~security_insights.models.Incident - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Incident"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('Incident', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}'} # type: ignore - - async def create_or_update( - self, - resource_group_name: str, - workspace_name: str, - incident_id: str, - etag: Optional[str] = None, - classification: Optional[Union[str, "models.IncidentClassification"]] = None, - classification_comment: Optional[str] = None, - classification_reason: Optional[Union[str, "models.IncidentClassificationReason"]] = None, - description: Optional[str] = None, - first_activity_time_utc: Optional[datetime.datetime] = None, - labels: Optional[List["models.IncidentLabel"]] = None, - last_activity_time_utc: Optional[datetime.datetime] = None, - owner: Optional["models.IncidentOwnerInfo"] = None, - severity: Optional[Union[str, "models.IncidentSeverity"]] = None, - status: Optional[Union[str, "models.IncidentStatus"]] = None, - title: Optional[str] = None, - **kwargs - ) -> "models.Incident": - """Creates or updates the incident. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param etag: Etag of the azure resource. - :type etag: str - :param classification: The reason the incident was closed. - :type classification: str or ~security_insights.models.IncidentClassification - :param classification_comment: Describes the reason the incident was closed. - :type classification_comment: str - :param classification_reason: The classification reason the incident was closed with. - :type classification_reason: str or ~security_insights.models.IncidentClassificationReason - :param description: The description of the incident. - :type description: str - :param first_activity_time_utc: The time of the first activity in the incident. - :type first_activity_time_utc: ~datetime.datetime - :param labels: List of labels relevant to this incident. - :type labels: list[~security_insights.models.IncidentLabel] - :param last_activity_time_utc: The time of the last activity in the incident. - :type last_activity_time_utc: ~datetime.datetime - :param owner: Describes a user that the incident is assigned to. - :type owner: ~security_insights.models.IncidentOwnerInfo - :param severity: The severity of the incident. - :type severity: str or ~security_insights.models.IncidentSeverity - :param status: The status of the incident. - :type status: str or ~security_insights.models.IncidentStatus - :param title: The title of the incident. - :type title: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Incident, or the result of cls(response) - :rtype: ~security_insights.models.Incident - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Incident"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - incident = models.Incident(etag=etag, classification=classification, classification_comment=classification_comment, classification_reason=classification_reason, description=description, first_activity_time_utc=first_activity_time_utc, labels=labels, last_activity_time_utc=last_activity_time_utc, owner=owner, severity=severity, status=status, title=title) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(incident, 'Incident') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('Incident', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('Incident', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}'} # type: ignore - - async def delete( - self, - resource_group_name: str, - workspace_name: str, - incident_id: str, - **kwargs - ) -> None: - """Delete the incident. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_operation_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_operation_operations.py deleted file mode 100644 index d8d19921e5c..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/aio/operations/_operation_operations.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar -import warnings - -from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat - -from ... import models - -T = TypeVar('T') -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - -class OperationOperations: - """OperationOperations async operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer) -> None: - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - **kwargs - ) -> AsyncIterable["models.OperationsList"]: - """Lists all operations available Azure Security Insights Resource Provider. - - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either OperationsList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~security_insights.models.OperationsList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.OperationsList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize('OperationsList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/providers/Microsoft.SecurityInsights/operations'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/__init__.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/__init__.py deleted file mode 100644 index d50534763d7..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/__init__.py +++ /dev/null @@ -1,245 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -try: - from ._models_py3 import AADDataConnector - from ._models_py3 import AATPDataConnector - from ._models_py3 import ASCDataConnector - from ._models_py3 import ASCDataConnectorProperties - from ._models_py3 import ActionPropertiesBase - from ._models_py3 import ActionRequest - from ._models_py3 import ActionRequestProperties - from ._models_py3 import ActionResponse - from ._models_py3 import ActionResponseProperties - from ._models_py3 import ActionsList - from ._models_py3 import AlertRule - from ._models_py3 import AlertRuleTemplate - from ._models_py3 import AlertRuleTemplateDataSource - from ._models_py3 import AlertRuleTemplatesList - from ._models_py3 import AlertRulesList - from ._models_py3 import AlertsDataTypeOfDataConnector - from ._models_py3 import AwsCloudTrailDataConnector - from ._models_py3 import AwsCloudTrailDataConnectorDataTypesLogs - from ._models_py3 import Bookmark - from ._models_py3 import BookmarkList - from ._models_py3 import ClientInfo - from ._models_py3 import DataConnector - from ._models_py3 import DataConnectorDataTypeCommon - from ._models_py3 import DataConnectorList - from ._models_py3 import DataConnectorTenantId - from ._models_py3 import DataConnectorWithAlertsProperties - from ._models_py3 import ErrorAdditionalInfo - from ._models_py3 import ErrorResponse - from ._models_py3 import FusionAlertRule - from ._models_py3 import FusionAlertRuleTemplate - from ._models_py3 import Incident - from ._models_py3 import IncidentAdditionalData - from ._models_py3 import IncidentComment - from ._models_py3 import IncidentCommentList - from ._models_py3 import IncidentInfo - from ._models_py3 import IncidentLabel - from ._models_py3 import IncidentList - from ._models_py3 import IncidentOwnerInfo - from ._models_py3 import MCASDataConnector - from ._models_py3 import MCASDataConnectorDataTypes - from ._models_py3 import MDATPDataConnector - from ._models_py3 import MicrosoftSecurityIncidentCreationAlertRule - from ._models_py3 import MicrosoftSecurityIncidentCreationAlertRuleCommonProperties - from ._models_py3 import MicrosoftSecurityIncidentCreationAlertRuleProperties - from ._models_py3 import MicrosoftSecurityIncidentCreationAlertRuleTemplate - from ._models_py3 import OfficeConsent - from ._models_py3 import OfficeConsentList - from ._models_py3 import OfficeDataConnector - from ._models_py3 import OfficeDataConnectorDataTypesExchange - from ._models_py3 import OfficeDataConnectorDataTypesSharePoint - from ._models_py3 import Operation - from ._models_py3 import OperationDisplay - from ._models_py3 import OperationsList - from ._models_py3 import Resource - from ._models_py3 import ResourceWithEtag - from ._models_py3 import ScheduledAlertRule - from ._models_py3 import ScheduledAlertRuleCommonProperties - from ._models_py3 import ScheduledAlertRuleProperties - from ._models_py3 import ScheduledAlertRuleTemplate - from ._models_py3 import Settings - from ._models_py3 import TIDataConnector - from ._models_py3 import TIDataConnectorDataTypesIndicators - from ._models_py3 import ThreatIntelligence - from ._models_py3 import ToggleSettings - from ._models_py3 import UebaSettings -except (SyntaxError, ImportError): - from ._models import AADDataConnector # type: ignore - from ._models import AATPDataConnector # type: ignore - from ._models import ASCDataConnector # type: ignore - from ._models import ASCDataConnectorProperties # type: ignore - from ._models import ActionPropertiesBase # type: ignore - from ._models import ActionRequest # type: ignore - from ._models import ActionRequestProperties # type: ignore - from ._models import ActionResponse # type: ignore - from ._models import ActionResponseProperties # type: ignore - from ._models import ActionsList # type: ignore - from ._models import AlertRule # type: ignore - from ._models import AlertRuleTemplate # type: ignore - from ._models import AlertRuleTemplateDataSource # type: ignore - from ._models import AlertRuleTemplatesList # type: ignore - from ._models import AlertRulesList # type: ignore - from ._models import AlertsDataTypeOfDataConnector # type: ignore - from ._models import AwsCloudTrailDataConnector # type: ignore - from ._models import AwsCloudTrailDataConnectorDataTypesLogs # type: ignore - from ._models import Bookmark # type: ignore - from ._models import BookmarkList # type: ignore - from ._models import ClientInfo # type: ignore - from ._models import DataConnector # type: ignore - from ._models import DataConnectorDataTypeCommon # type: ignore - from ._models import DataConnectorList # type: ignore - from ._models import DataConnectorTenantId # type: ignore - from ._models import DataConnectorWithAlertsProperties # type: ignore - from ._models import ErrorAdditionalInfo # type: ignore - from ._models import ErrorResponse # type: ignore - from ._models import FusionAlertRule # type: ignore - from ._models import FusionAlertRuleTemplate # type: ignore - from ._models import Incident # type: ignore - from ._models import IncidentAdditionalData # type: ignore - from ._models import IncidentComment # type: ignore - from ._models import IncidentCommentList # type: ignore - from ._models import IncidentInfo # type: ignore - from ._models import IncidentLabel # type: ignore - from ._models import IncidentList # type: ignore - from ._models import IncidentOwnerInfo # type: ignore - from ._models import MCASDataConnector # type: ignore - from ._models import MCASDataConnectorDataTypes # type: ignore - from ._models import MDATPDataConnector # type: ignore - from ._models import MicrosoftSecurityIncidentCreationAlertRule # type: ignore - from ._models import MicrosoftSecurityIncidentCreationAlertRuleCommonProperties # type: ignore - from ._models import MicrosoftSecurityIncidentCreationAlertRuleProperties # type: ignore - from ._models import MicrosoftSecurityIncidentCreationAlertRuleTemplate # type: ignore - from ._models import OfficeConsent # type: ignore - from ._models import OfficeConsentList # type: ignore - from ._models import OfficeDataConnector # type: ignore - from ._models import OfficeDataConnectorDataTypesExchange # type: ignore - from ._models import OfficeDataConnectorDataTypesSharePoint # type: ignore - from ._models import Operation # type: ignore - from ._models import OperationDisplay # type: ignore - from ._models import OperationsList # type: ignore - from ._models import Resource # type: ignore - from ._models import ResourceWithEtag # type: ignore - from ._models import ScheduledAlertRule # type: ignore - from ._models import ScheduledAlertRuleCommonProperties # type: ignore - from ._models import ScheduledAlertRuleProperties # type: ignore - from ._models import ScheduledAlertRuleTemplate # type: ignore - from ._models import Settings # type: ignore - from ._models import TIDataConnector # type: ignore - from ._models import TIDataConnectorDataTypesIndicators # type: ignore - from ._models import ThreatIntelligence # type: ignore - from ._models import ToggleSettings # type: ignore - from ._models import UebaSettings # type: ignore - -from ._security_insights_enums import ( - AlertRuleKind, - AlertSeverity, - AttackTactic, - CaseSeverity, - DataConnectorKind, - DataTypeState, - IncidentClassification, - IncidentClassificationReason, - IncidentLabelType, - IncidentSeverity, - IncidentStatus, - LicenseStatus, - MicrosoftSecurityProductName, - SettingKind, - StatusInMCAS, - TemplateStatus, - TriggerOperator, -) - -__all__ = [ - 'AADDataConnector', - 'AATPDataConnector', - 'ASCDataConnector', - 'ASCDataConnectorProperties', - 'ActionPropertiesBase', - 'ActionRequest', - 'ActionRequestProperties', - 'ActionResponse', - 'ActionResponseProperties', - 'ActionsList', - 'AlertRule', - 'AlertRuleTemplate', - 'AlertRuleTemplateDataSource', - 'AlertRuleTemplatesList', - 'AlertRulesList', - 'AlertsDataTypeOfDataConnector', - 'AwsCloudTrailDataConnector', - 'AwsCloudTrailDataConnectorDataTypesLogs', - 'Bookmark', - 'BookmarkList', - 'ClientInfo', - 'DataConnector', - 'DataConnectorDataTypeCommon', - 'DataConnectorList', - 'DataConnectorTenantId', - 'DataConnectorWithAlertsProperties', - 'ErrorAdditionalInfo', - 'ErrorResponse', - 'FusionAlertRule', - 'FusionAlertRuleTemplate', - 'Incident', - 'IncidentAdditionalData', - 'IncidentComment', - 'IncidentCommentList', - 'IncidentInfo', - 'IncidentLabel', - 'IncidentList', - 'IncidentOwnerInfo', - 'MCASDataConnector', - 'MCASDataConnectorDataTypes', - 'MDATPDataConnector', - 'MicrosoftSecurityIncidentCreationAlertRule', - 'MicrosoftSecurityIncidentCreationAlertRuleCommonProperties', - 'MicrosoftSecurityIncidentCreationAlertRuleProperties', - 'MicrosoftSecurityIncidentCreationAlertRuleTemplate', - 'OfficeConsent', - 'OfficeConsentList', - 'OfficeDataConnector', - 'OfficeDataConnectorDataTypesExchange', - 'OfficeDataConnectorDataTypesSharePoint', - 'Operation', - 'OperationDisplay', - 'OperationsList', - 'Resource', - 'ResourceWithEtag', - 'ScheduledAlertRule', - 'ScheduledAlertRuleCommonProperties', - 'ScheduledAlertRuleProperties', - 'ScheduledAlertRuleTemplate', - 'Settings', - 'TIDataConnector', - 'TIDataConnectorDataTypesIndicators', - 'ThreatIntelligence', - 'ToggleSettings', - 'UebaSettings', - 'AlertRuleKind', - 'AlertSeverity', - 'AttackTactic', - 'CaseSeverity', - 'DataConnectorKind', - 'DataTypeState', - 'IncidentClassification', - 'IncidentClassificationReason', - 'IncidentLabelType', - 'IncidentSeverity', - 'IncidentStatus', - 'LicenseStatus', - 'MicrosoftSecurityProductName', - 'SettingKind', - 'StatusInMCAS', - 'TemplateStatus', - 'TriggerOperator', -] diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_models.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_models.py deleted file mode 100644 index f8a2cf69674..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_models.py +++ /dev/null @@ -1,2922 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -import msrest.serialization - - -class ResourceWithEtag(msrest.serialization.Model): - """An azure resource object with an Etag property. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ResourceWithEtag, self).__init__(**kwargs) - self.id = None - self.name = None - self.type = None - self.etag = kwargs.get('etag', None) - - -class DataConnector(ResourceWithEtag): - """Data connector. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: AwsCloudTrailDataConnector, AADDataConnector, AATPDataConnector, ASCDataConnector, MCASDataConnector, MDATPDataConnector, OfficeDataConnector, TIDataConnector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'AmazonWebServicesCloudTrail': 'AwsCloudTrailDataConnector', 'AzureActiveDirectory': 'AADDataConnector', 'AzureAdvancedThreatProtection': 'AATPDataConnector', 'AzureSecurityCenter': 'ASCDataConnector', 'MicrosoftCloudAppSecurity': 'MCASDataConnector', 'MicrosoftDefenderAdvancedThreatProtection': 'MDATPDataConnector', 'Office365': 'OfficeDataConnector', 'ThreatIntelligence': 'TIDataConnector'} - } - - def __init__( - self, - **kwargs - ): - super(DataConnector, self).__init__(**kwargs) - self.kind = 'DataConnector' # type: str - - -class AADDataConnector(DataConnector): - """Represents AAD (Azure Active Directory) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(AADDataConnector, self).__init__(**kwargs) - self.kind = 'AzureActiveDirectory' # type: str - self.tenant_id = kwargs.get('tenant_id', None) - self.state = kwargs.get('state', None) - - -class AATPDataConnector(DataConnector): - """Represents AATP (Azure Advanced Threat Protection) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(AATPDataConnector, self).__init__(**kwargs) - self.kind = 'AzureAdvancedThreatProtection' # type: str - self.tenant_id = kwargs.get('tenant_id', None) - self.state = kwargs.get('state', None) - - -class ActionPropertiesBase(msrest.serialization.Model): - """Action property bag base. - - All required parameters must be populated in order to send to Azure. - - :param logic_app_resource_id: Required. Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - """ - - _validation = { - 'logic_app_resource_id': {'required': True}, - } - - _attribute_map = { - 'logic_app_resource_id': {'key': 'logicAppResourceId', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ActionPropertiesBase, self).__init__(**kwargs) - self.logic_app_resource_id = kwargs['logic_app_resource_id'] - - -class ActionRequest(ResourceWithEtag): - """Action for alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param logic_app_resource_id: Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param trigger_uri: Logic App Callback URL for this specific workflow. - :type trigger_uri: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'logic_app_resource_id': {'key': 'properties.logicAppResourceId', 'type': 'str'}, - 'trigger_uri': {'key': 'properties.triggerUri', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ActionRequest, self).__init__(**kwargs) - self.logic_app_resource_id = kwargs.get('logic_app_resource_id', None) - self.trigger_uri = kwargs.get('trigger_uri', None) - - -class ActionRequestProperties(ActionPropertiesBase): - """Action property bag. - - All required parameters must be populated in order to send to Azure. - - :param logic_app_resource_id: Required. Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param trigger_uri: Logic App Callback URL for this specific workflow. - :type trigger_uri: str - """ - - _validation = { - 'logic_app_resource_id': {'required': True}, - } - - _attribute_map = { - 'logic_app_resource_id': {'key': 'logicAppResourceId', 'type': 'str'}, - 'trigger_uri': {'key': 'triggerUri', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ActionRequestProperties, self).__init__(**kwargs) - self.trigger_uri = kwargs.get('trigger_uri', None) - - -class Resource(msrest.serialization.Model): - """An azure resource object. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(Resource, self).__init__(**kwargs) - self.id = None - self.name = None - self.type = None - - -class ActionResponse(Resource): - """Action for alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the action. - :type etag: str - :param logic_app_resource_id: Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param workflow_id: The name of the logic app's workflow. - :type workflow_id: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'logic_app_resource_id': {'key': 'properties.logicAppResourceId', 'type': 'str'}, - 'workflow_id': {'key': 'properties.workflowId', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ActionResponse, self).__init__(**kwargs) - self.etag = kwargs.get('etag', None) - self.logic_app_resource_id = kwargs.get('logic_app_resource_id', None) - self.workflow_id = kwargs.get('workflow_id', None) - - -class ActionResponseProperties(ActionPropertiesBase): - """Action property bag. - - All required parameters must be populated in order to send to Azure. - - :param logic_app_resource_id: Required. Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param workflow_id: The name of the logic app's workflow. - :type workflow_id: str - """ - - _validation = { - 'logic_app_resource_id': {'required': True}, - } - - _attribute_map = { - 'logic_app_resource_id': {'key': 'logicAppResourceId', 'type': 'str'}, - 'workflow_id': {'key': 'workflowId', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ActionResponseProperties, self).__init__(**kwargs) - self.workflow_id = kwargs.get('workflow_id', None) - - -class ActionsList(msrest.serialization.Model): - """List all the actions. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of actions. - :vartype next_link: str - :param value: Required. Array of actions. - :type value: list[~security_insights.models.ActionResponse] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[ActionResponse]'}, - } - - def __init__( - self, - **kwargs - ): - super(ActionsList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class AlertRule(ResourceWithEtag): - """Alert rule. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: FusionAlertRule, MicrosoftSecurityIncidentCreationAlertRule, ScheduledAlertRule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'Fusion': 'FusionAlertRule', 'MicrosoftSecurityIncidentCreation': 'MicrosoftSecurityIncidentCreationAlertRule', 'Scheduled': 'ScheduledAlertRule'} - } - - def __init__( - self, - **kwargs - ): - super(AlertRule, self).__init__(**kwargs) - self.kind = 'AlertRule' # type: str - - -class AlertRulesList(msrest.serialization.Model): - """List all the alert rules. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of alert rules. - :vartype next_link: str - :param value: Required. Array of alert rules. - :type value: list[~security_insights.models.AlertRule] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[AlertRule]'}, - } - - def __init__( - self, - **kwargs - ): - super(AlertRulesList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class AlertRuleTemplate(Resource): - """Alert rule template. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: FusionAlertRuleTemplate, MicrosoftSecurityIncidentCreationAlertRuleTemplate, ScheduledAlertRuleTemplate. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'Fusion': 'FusionAlertRuleTemplate', 'MicrosoftSecurityIncidentCreation': 'MicrosoftSecurityIncidentCreationAlertRuleTemplate', 'Scheduled': 'ScheduledAlertRuleTemplate'} - } - - def __init__( - self, - **kwargs - ): - super(AlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'AlertRuleTemplate' # type: str - - -class AlertRuleTemplateDataSource(msrest.serialization.Model): - """alert rule template data sources. - - :param connector_id: The connector id that provides the following data types. - :type connector_id: str - :param data_types: The data types used by the alert rule template. - :type data_types: list[str] - """ - - _attribute_map = { - 'connector_id': {'key': 'connectorId', 'type': 'str'}, - 'data_types': {'key': 'dataTypes', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(AlertRuleTemplateDataSource, self).__init__(**kwargs) - self.connector_id = kwargs.get('connector_id', None) - self.data_types = kwargs.get('data_types', None) - - -class AlertRuleTemplatesList(msrest.serialization.Model): - """List all the alert rule templates. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of alert rule templates. - :vartype next_link: str - :param value: Required. Array of alert rule templates. - :type value: list[~security_insights.models.AlertRuleTemplate] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[AlertRuleTemplate]'}, - } - - def __init__( - self, - **kwargs - ): - super(AlertRuleTemplatesList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class AlertsDataTypeOfDataConnector(msrest.serialization.Model): - """Alerts data type for data connectors. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'alerts.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(AlertsDataTypeOfDataConnector, self).__init__(**kwargs) - self.state = kwargs.get('state', None) - - -class ASCDataConnector(DataConnector): - """Represents ASC (Azure Security Center) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param subscription_id: The subscription id to connect to, and get the data from. - :type subscription_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'subscription_id': {'key': 'properties.subscriptionId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ASCDataConnector, self).__init__(**kwargs) - self.kind = 'AzureSecurityCenter' # type: str - self.subscription_id = kwargs.get('subscription_id', None) - self.state = kwargs.get('state', None) - - -class DataConnectorWithAlertsProperties(msrest.serialization.Model): - """Data connector properties. - - :param data_types: The available data types for the connector. - :type data_types: ~security_insights.models.AlertsDataTypeOfDataConnector - """ - - _attribute_map = { - 'data_types': {'key': 'dataTypes', 'type': 'AlertsDataTypeOfDataConnector'}, - } - - def __init__( - self, - **kwargs - ): - super(DataConnectorWithAlertsProperties, self).__init__(**kwargs) - self.data_types = kwargs.get('data_types', None) - - -class ASCDataConnectorProperties(DataConnectorWithAlertsProperties): - """ASC (Azure Security Center) data connector properties. - - :param data_types: The available data types for the connector. - :type data_types: ~security_insights.models.AlertsDataTypeOfDataConnector - :param subscription_id: The subscription id to connect to, and get the data from. - :type subscription_id: str - """ - - _attribute_map = { - 'data_types': {'key': 'dataTypes', 'type': 'AlertsDataTypeOfDataConnector'}, - 'subscription_id': {'key': 'subscriptionId', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ASCDataConnectorProperties, self).__init__(**kwargs) - self.subscription_id = kwargs.get('subscription_id', None) - - -class AwsCloudTrailDataConnector(DataConnector): - """Represents Amazon Web Services CloudTrail data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param aws_role_arn: The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access - the Aws account. - :type aws_role_arn: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'aws_role_arn': {'key': 'properties.awsRoleArn', 'type': 'str'}, - 'state': {'key': 'dataTypes.logs.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(AwsCloudTrailDataConnector, self).__init__(**kwargs) - self.kind = 'AmazonWebServicesCloudTrail' # type: str - self.aws_role_arn = kwargs.get('aws_role_arn', None) - self.state = kwargs.get('state', None) - - -class DataConnectorDataTypeCommon(msrest.serialization.Model): - """Common field for data type in data connectors. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(DataConnectorDataTypeCommon, self).__init__(**kwargs) - self.state = kwargs.get('state', None) - - -class AwsCloudTrailDataConnectorDataTypesLogs(DataConnectorDataTypeCommon): - """Logs data type. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(AwsCloudTrailDataConnectorDataTypesLogs, self).__init__(**kwargs) - - -class Bookmark(ResourceWithEtag): - """Represents a bookmark in Azure Security Insights. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param created: The time the bookmark was created. - :type created: ~datetime.datetime - :param display_name: The display name of the bookmark. - :type display_name: str - :param labels: List of labels relevant to this bookmark. - :type labels: list[str] - :param notes: The notes of the bookmark. - :type notes: str - :param query: The query of the bookmark. - :type query: str - :param query_result: The query result of the bookmark. - :type query_result: str - :param updated: The last time the bookmark was updated. - :type updated: ~datetime.datetime - :param incident_info: Describes an incident that relates to bookmark. - :type incident_info: ~security_insights.models.IncidentInfo - :ivar email_updated_by_email: The email of the user. - :vartype email_updated_by_email: str - :ivar name_updated_by_name: The name of the user. - :vartype name_updated_by_name: str - :param object_id_updated_by_object_id: The object id of the user. - :type object_id_updated_by_object_id: str - :ivar email_created_by_email: The email of the user. - :vartype email_created_by_email: str - :ivar name_created_by_name: The name of the user. - :vartype name_created_by_name: str - :param object_id_created_by_object_id: The object id of the user. - :type object_id_created_by_object_id: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'email_updated_by_email': {'readonly': True}, - 'name_updated_by_name': {'readonly': True}, - 'email_created_by_email': {'readonly': True}, - 'name_created_by_name': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'created': {'key': 'properties.created', 'type': 'iso-8601'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'labels': {'key': 'properties.labels', 'type': '[str]'}, - 'notes': {'key': 'properties.notes', 'type': 'str'}, - 'query': {'key': 'properties.query', 'type': 'str'}, - 'query_result': {'key': 'properties.queryResult', 'type': 'str'}, - 'updated': {'key': 'properties.updated', 'type': 'iso-8601'}, - 'incident_info': {'key': 'properties.incidentInfo', 'type': 'IncidentInfo'}, - 'email_updated_by_email': {'key': 'updatedBy.email', 'type': 'str'}, - 'name_updated_by_name': {'key': 'updatedBy.name', 'type': 'str'}, - 'object_id_updated_by_object_id': {'key': 'updatedBy.objectId', 'type': 'str'}, - 'email_created_by_email': {'key': 'createdBy.email', 'type': 'str'}, - 'name_created_by_name': {'key': 'createdBy.name', 'type': 'str'}, - 'object_id_created_by_object_id': {'key': 'createdBy.objectId', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(Bookmark, self).__init__(**kwargs) - self.created = kwargs.get('created', None) - self.display_name = kwargs.get('display_name', None) - self.labels = kwargs.get('labels', None) - self.notes = kwargs.get('notes', None) - self.query = kwargs.get('query', None) - self.query_result = kwargs.get('query_result', None) - self.updated = kwargs.get('updated', None) - self.incident_info = kwargs.get('incident_info', None) - self.email_updated_by_email = None - self.name_updated_by_name = None - self.object_id_updated_by_object_id = kwargs.get('object_id_updated_by_object_id', None) - self.email_created_by_email = None - self.name_created_by_name = None - self.object_id_created_by_object_id = kwargs.get('object_id_created_by_object_id', None) - - -class BookmarkList(msrest.serialization.Model): - """List all the bookmarks. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of cases. - :vartype next_link: str - :param value: Required. Array of bookmarks. - :type value: list[~security_insights.models.Bookmark] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[Bookmark]'}, - } - - def __init__( - self, - **kwargs - ): - super(BookmarkList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class ClientInfo(msrest.serialization.Model): - """Information on the client (user or application) that made some action. - - :param email: The email of the client. - :type email: str - :param name: The name of the client. - :type name: str - :param object_id: The object id of the client. - :type object_id: str - :param user_principal_name: The user principal name of the client. - :type user_principal_name: str - """ - - _attribute_map = { - 'email': {'key': 'email', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'object_id': {'key': 'objectId', 'type': 'str'}, - 'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ClientInfo, self).__init__(**kwargs) - self.email = kwargs.get('email', None) - self.name = kwargs.get('name', None) - self.object_id = kwargs.get('object_id', None) - self.user_principal_name = kwargs.get('user_principal_name', None) - - -class DataConnectorList(msrest.serialization.Model): - """List all the data connectors. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of data connectors. - :vartype next_link: str - :param value: Required. Array of data connectors. - :type value: list[~security_insights.models.DataConnector] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[DataConnector]'}, - } - - def __init__( - self, - **kwargs - ): - super(DataConnectorList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class DataConnectorTenantId(msrest.serialization.Model): - """Properties data connector on tenant level. - - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - """ - - _attribute_map = { - 'tenant_id': {'key': 'tenantId', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(DataConnectorTenantId, self).__init__(**kwargs) - self.tenant_id = kwargs.get('tenant_id', None) - - -class ErrorAdditionalInfo(msrest.serialization.Model): - """The resource management error additional info. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar type: The additional info type. - :vartype type: str - :ivar info: The additional info. - :vartype info: object - """ - - _validation = { - 'type': {'readonly': True}, - 'info': {'readonly': True}, - } - - _attribute_map = { - 'type': {'key': 'type', 'type': 'str'}, - 'info': {'key': 'info', 'type': 'object'}, - } - - def __init__( - self, - **kwargs - ): - super(ErrorAdditionalInfo, self).__init__(**kwargs) - self.type = None - self.info = None - - -class ErrorResponse(msrest.serialization.Model): - """The resource management error response. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar code: The error code. - :vartype code: str - :ivar message: The error message. - :vartype message: str - :ivar target: The error target. - :vartype target: str - :ivar details: The error details. - :vartype details: list[~security_insights.models.ErrorResponse] - :ivar additional_info: The error additional info. - :vartype additional_info: list[~security_insights.models.ErrorAdditionalInfo] - """ - - _validation = { - 'code': {'readonly': True}, - 'message': {'readonly': True}, - 'target': {'readonly': True}, - 'details': {'readonly': True}, - 'additional_info': {'readonly': True}, - } - - _attribute_map = { - 'code': {'key': 'code', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, - 'details': {'key': 'details', 'type': '[ErrorResponse]'}, - 'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'}, - } - - def __init__( - self, - **kwargs - ): - super(ErrorResponse, self).__init__(**kwargs) - self.code = None - self.message = None - self.target = None - self.details = None - self.additional_info = None - - -class FusionAlertRule(AlertRule): - """Represents Fusion alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :ivar description: The description of the alert rule. - :vartype description: str - :ivar display_name: The display name for alerts created by this alert rule. - :vartype display_name: str - :param enabled: Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert has been modified. - :vartype last_modified_utc: ~datetime.datetime - :ivar severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :vartype severity: str or ~security_insights.models.AlertSeverity - :ivar tactics: The tactics of the alert rule. - :vartype tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'description': {'readonly': True}, - 'display_name': {'readonly': True}, - 'last_modified_utc': {'readonly': True}, - 'severity': {'readonly': True}, - 'tactics': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rule_template_name': {'key': 'properties.alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'properties.lastModifiedUtc', 'type': 'iso-8601'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(FusionAlertRule, self).__init__(**kwargs) - self.kind = 'Fusion' # type: str - self.alert_rule_template_name = kwargs.get('alert_rule_template_name', None) - self.description = None - self.display_name = None - self.enabled = kwargs.get('enabled', None) - self.last_modified_utc = None - self.severity = None - self.tactics = None - - -class FusionAlertRuleTemplate(AlertRuleTemplate): - """Represents Fusion alert rule template. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rules_created_by_template_count: the number of alert rules that were created by - this template. - :type alert_rules_created_by_template_count: int - :ivar created_date_utc: The time that this alert rule template has been added. - :vartype created_date_utc: ~datetime.datetime - :param description: The description of the alert rule template. - :type description: str - :param display_name: The display name for alert rule template. - :type display_name: str - :param required_data_connectors: The required data connectors for this template. - :type required_data_connectors: list[~security_insights.models.AlertRuleTemplateDataSource] - :param status: The alert rule template status. Possible values include: "Installed", - "Available", "NotAvailable". - :type status: str or ~security_insights.models.TemplateStatus - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param tactics: The tactics of the alert rule template. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'created_date_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rules_created_by_template_count': {'key': 'properties.alertRulesCreatedByTemplateCount', 'type': 'int'}, - 'created_date_utc': {'key': 'properties.createdDateUTC', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'required_data_connectors': {'key': 'properties.requiredDataConnectors', 'type': '[AlertRuleTemplateDataSource]'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(FusionAlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'Fusion' # type: str - self.alert_rules_created_by_template_count = kwargs.get('alert_rules_created_by_template_count', None) - self.created_date_utc = None - self.description = kwargs.get('description', None) - self.display_name = kwargs.get('display_name', None) - self.required_data_connectors = kwargs.get('required_data_connectors', None) - self.status = kwargs.get('status', None) - self.severity = kwargs.get('severity', None) - self.tactics = kwargs.get('tactics', None) - - -class Incident(ResourceWithEtag): - """Represents an incident in Azure Security Insights. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :ivar additional_data: Additional data on the incident. - :vartype additional_data: ~security_insights.models.IncidentAdditionalData - :param classification: The reason the incident was closed. Possible values include: - "Undetermined", "TruePositive", "BenignPositive", "FalsePositive". - :type classification: str or ~security_insights.models.IncidentClassification - :param classification_comment: Describes the reason the incident was closed. - :type classification_comment: str - :param classification_reason: The classification reason the incident was closed with. Possible - values include: "SuspiciousActivity", "SuspiciousButExpected", "IncorrectAlertLogic", - "InaccurateData". - :type classification_reason: str or ~security_insights.models.IncidentClassificationReason - :ivar created_time_utc: The time the incident was created. - :vartype created_time_utc: ~datetime.datetime - :param description: The description of the incident. - :type description: str - :param first_activity_time_utc: The time of the first activity in the incident. - :type first_activity_time_utc: ~datetime.datetime - :ivar incident_url: The deep-link url to the incident in Azure portal. - :vartype incident_url: str - :ivar incident_number: A sequential number. - :vartype incident_number: int - :param labels: List of labels relevant to this incident. - :type labels: list[~security_insights.models.IncidentLabel] - :param last_activity_time_utc: The time of the last activity in the incident. - :type last_activity_time_utc: ~datetime.datetime - :ivar last_modified_time_utc: The last time the incident was updated. - :vartype last_modified_time_utc: ~datetime.datetime - :param owner: Describes a user that the incident is assigned to. - :type owner: ~security_insights.models.IncidentOwnerInfo - :ivar related_analytic_rule_ids: List of resource ids of Analytic rules related to the - incident. - :vartype related_analytic_rule_ids: list[str] - :param severity: The severity of the incident. Possible values include: "High", "Medium", - "Low", "Informational". - :type severity: str or ~security_insights.models.IncidentSeverity - :param status: The status of the incident. Possible values include: "New", "Active", "Closed". - :type status: str or ~security_insights.models.IncidentStatus - :param title: The title of the incident. - :type title: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'additional_data': {'readonly': True}, - 'created_time_utc': {'readonly': True}, - 'incident_url': {'readonly': True}, - 'incident_number': {'readonly': True}, - 'last_modified_time_utc': {'readonly': True}, - 'related_analytic_rule_ids': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'additional_data': {'key': 'properties.additionalData', 'type': 'IncidentAdditionalData'}, - 'classification': {'key': 'properties.classification', 'type': 'str'}, - 'classification_comment': {'key': 'properties.classificationComment', 'type': 'str'}, - 'classification_reason': {'key': 'properties.classificationReason', 'type': 'str'}, - 'created_time_utc': {'key': 'properties.createdTimeUtc', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'first_activity_time_utc': {'key': 'properties.firstActivityTimeUtc', 'type': 'iso-8601'}, - 'incident_url': {'key': 'properties.incidentUrl', 'type': 'str'}, - 'incident_number': {'key': 'properties.incidentNumber', 'type': 'int'}, - 'labels': {'key': 'properties.labels', 'type': '[IncidentLabel]'}, - 'last_activity_time_utc': {'key': 'properties.lastActivityTimeUtc', 'type': 'iso-8601'}, - 'last_modified_time_utc': {'key': 'properties.lastModifiedTimeUtc', 'type': 'iso-8601'}, - 'owner': {'key': 'properties.owner', 'type': 'IncidentOwnerInfo'}, - 'related_analytic_rule_ids': {'key': 'properties.relatedAnalyticRuleIds', 'type': '[str]'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'title': {'key': 'properties.title', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(Incident, self).__init__(**kwargs) - self.additional_data = None - self.classification = kwargs.get('classification', None) - self.classification_comment = kwargs.get('classification_comment', None) - self.classification_reason = kwargs.get('classification_reason', None) - self.created_time_utc = None - self.description = kwargs.get('description', None) - self.first_activity_time_utc = kwargs.get('first_activity_time_utc', None) - self.incident_url = None - self.incident_number = None - self.labels = kwargs.get('labels', None) - self.last_activity_time_utc = kwargs.get('last_activity_time_utc', None) - self.last_modified_time_utc = None - self.owner = kwargs.get('owner', None) - self.related_analytic_rule_ids = None - self.severity = kwargs.get('severity', None) - self.status = kwargs.get('status', None) - self.title = kwargs.get('title', None) - - -class IncidentAdditionalData(msrest.serialization.Model): - """Incident additional data property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar alerts_count: The number of alerts in the incident. - :vartype alerts_count: int - :ivar bookmarks_count: The number of bookmarks in the incident. - :vartype bookmarks_count: int - :ivar comments_count: The number of comments in the incident. - :vartype comments_count: int - :ivar alert_product_names: List of product names of alerts in the incident. - :vartype alert_product_names: list[str] - :ivar tactics: The tactics associated with incident. - :vartype tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'alerts_count': {'readonly': True}, - 'bookmarks_count': {'readonly': True}, - 'comments_count': {'readonly': True}, - 'alert_product_names': {'readonly': True}, - 'tactics': {'readonly': True}, - } - - _attribute_map = { - 'alerts_count': {'key': 'alertsCount', 'type': 'int'}, - 'bookmarks_count': {'key': 'bookmarksCount', 'type': 'int'}, - 'comments_count': {'key': 'commentsCount', 'type': 'int'}, - 'alert_product_names': {'key': 'alertProductNames', 'type': '[str]'}, - 'tactics': {'key': 'tactics', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentAdditionalData, self).__init__(**kwargs) - self.alerts_count = None - self.bookmarks_count = None - self.comments_count = None - self.alert_product_names = None - self.tactics = None - - -class IncidentComment(Resource): - """Represents an incident comment. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar created_time_utc: The time the comment was created. - :vartype created_time_utc: ~datetime.datetime - :param message: The comment message. - :type message: str - :ivar author: Describes the client that created the comment. - :vartype author: ~security_insights.models.ClientInfo - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'created_time_utc': {'readonly': True}, - 'author': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'created_time_utc': {'key': 'properties.createdTimeUtc', 'type': 'iso-8601'}, - 'message': {'key': 'properties.message', 'type': 'str'}, - 'author': {'key': 'properties.author', 'type': 'ClientInfo'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentComment, self).__init__(**kwargs) - self.created_time_utc = None - self.message = kwargs.get('message', None) - self.author = None - - -class IncidentCommentList(msrest.serialization.Model): - """List of incident comments. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of comments. - :vartype next_link: str - :param value: Required. Array of comments. - :type value: list[~security_insights.models.IncidentComment] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[IncidentComment]'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentCommentList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class IncidentInfo(msrest.serialization.Model): - """Describes related incident information for the bookmark. - - All required parameters must be populated in order to send to Azure. - - :param incident_id: Required. Incident Id. - :type incident_id: str - :param severity: Required. The severity of the incident. Possible values include: "Critical", - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.CaseSeverity - :param title: Required. The title of the incident. - :type title: str - :param relation_name: Required. Relation Name. - :type relation_name: str - """ - - _validation = { - 'incident_id': {'required': True}, - 'severity': {'required': True}, - 'title': {'required': True}, - 'relation_name': {'required': True}, - } - - _attribute_map = { - 'incident_id': {'key': 'incidentId', 'type': 'str'}, - 'severity': {'key': 'severity', 'type': 'str'}, - 'title': {'key': 'title', 'type': 'str'}, - 'relation_name': {'key': 'relationName', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentInfo, self).__init__(**kwargs) - self.incident_id = kwargs['incident_id'] - self.severity = kwargs['severity'] - self.title = kwargs['title'] - self.relation_name = kwargs['relation_name'] - - -class IncidentLabel(msrest.serialization.Model): - """Represents an incident label. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :param label_name: Required. The name of the label. - :type label_name: str - :ivar label_type: The type of the label. Possible values include: "User", "System". - :vartype label_type: str or ~security_insights.models.IncidentLabelType - """ - - _validation = { - 'label_name': {'required': True}, - 'label_type': {'readonly': True}, - } - - _attribute_map = { - 'label_name': {'key': 'labelName', 'type': 'str'}, - 'label_type': {'key': 'labelType', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentLabel, self).__init__(**kwargs) - self.label_name = kwargs['label_name'] - self.label_type = None - - -class IncidentList(msrest.serialization.Model): - """List all the incidents. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of incidents. - :vartype next_link: str - :param value: Required. Array of incidents. - :type value: list[~security_insights.models.Incident] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[Incident]'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class IncidentOwnerInfo(msrest.serialization.Model): - """Information on the user an incident is assigned to. - - :param email: The email of the user the incident is assigned to. - :type email: str - :param assigned_to: The name of the user the incident is assigned to. - :type assigned_to: str - :param object_id: The object id of the user the incident is assigned to. - :type object_id: str - :param user_principal_name: The user principal name of the user the incident is assigned to. - :type user_principal_name: str - """ - - _attribute_map = { - 'email': {'key': 'email', 'type': 'str'}, - 'assigned_to': {'key': 'assignedTo', 'type': 'str'}, - 'object_id': {'key': 'objectId', 'type': 'str'}, - 'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentOwnerInfo, self).__init__(**kwargs) - self.email = kwargs.get('email', None) - self.assigned_to = kwargs.get('assigned_to', None) - self.object_id = kwargs.get('object_id', None) - self.user_principal_name = kwargs.get('user_principal_name', None) - - -class MCASDataConnector(DataConnector): - """Represents MCAS (Microsoft Cloud App Security) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state_data_types_alerts_state: Describe whether this data type connection is enabled or - not. Possible values include: "Enabled", "Disabled". - :type state_data_types_alerts_state: str or ~security_insights.models.DataTypeState - :param state_data_types_discovery_logs_state: Describe whether this data type connection is - enabled or not. Possible values include: "Enabled", "Disabled". - :type state_data_types_discovery_logs_state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state_data_types_alerts_state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - 'state_data_types_discovery_logs_state': {'key': 'dataTypes.discoveryLogs.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(MCASDataConnector, self).__init__(**kwargs) - self.kind = 'MicrosoftCloudAppSecurity' # type: str - self.tenant_id = kwargs.get('tenant_id', None) - self.state_data_types_alerts_state = kwargs.get('state_data_types_alerts_state', None) - self.state_data_types_discovery_logs_state = kwargs.get('state_data_types_discovery_logs_state', None) - - -class MCASDataConnectorDataTypes(AlertsDataTypeOfDataConnector): - """The available data types for MCAS (Microsoft Cloud App Security) data connector. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - :param state_discovery_logs_state: Describe whether this data type connection is enabled or - not. Possible values include: "Enabled", "Disabled". - :type state_discovery_logs_state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'alerts.state', 'type': 'str'}, - 'state_discovery_logs_state': {'key': 'discoveryLogs.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(MCASDataConnectorDataTypes, self).__init__(**kwargs) - self.state_discovery_logs_state = kwargs.get('state_discovery_logs_state', None) - - -class MDATPDataConnector(DataConnector): - """Represents MDATP (Microsoft Defender Advanced Threat Protection) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(MDATPDataConnector, self).__init__(**kwargs) - self.kind = 'MicrosoftDefenderAdvancedThreatProtection' # type: str - self.tenant_id = kwargs.get('tenant_id', None) - self.state = kwargs.get('state', None) - - -class MicrosoftSecurityIncidentCreationAlertRule(AlertRule): - """Represents MicrosoftSecurityIncidentCreation rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: The alerts' productName on which the cases will be generated. Possible - values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure Advanced Threat - Protection", "Azure Active Directory Identity Protection", "Azure Security Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert has been modified. - :vartype last_modified_utc: ~datetime.datetime - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'last_modified_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'display_names_filter': {'key': 'properties.displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'properties.displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'properties.productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'properties.severitiesFilter', 'type': '[str]'}, - 'alert_rule_template_name': {'key': 'properties.alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'properties.lastModifiedUtc', 'type': 'iso-8601'}, - } - - def __init__( - self, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRule, self).__init__(**kwargs) - self.kind = 'MicrosoftSecurityIncidentCreation' # type: str - self.display_names_filter = kwargs.get('display_names_filter', None) - self.display_names_exclude_filter = kwargs.get('display_names_exclude_filter', None) - self.product_filter = kwargs.get('product_filter', None) - self.severities_filter = kwargs.get('severities_filter', None) - self.alert_rule_template_name = kwargs.get('alert_rule_template_name', None) - self.description = kwargs.get('description', None) - self.display_name = kwargs.get('display_name', None) - self.enabled = kwargs.get('enabled', None) - self.last_modified_utc = None - - -class MicrosoftSecurityIncidentCreationAlertRuleCommonProperties(msrest.serialization.Model): - """MicrosoftSecurityIncidentCreation rule common property bag. - - All required parameters must be populated in order to send to Azure. - - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: Required. The alerts' productName on which the cases will be generated. - Possible values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure - Advanced Threat Protection", "Azure Active Directory Identity Protection", "Azure Security - Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - """ - - _validation = { - 'product_filter': {'required': True}, - } - - _attribute_map = { - 'display_names_filter': {'key': 'displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'severitiesFilter', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRuleCommonProperties, self).__init__(**kwargs) - self.display_names_filter = kwargs.get('display_names_filter', None) - self.display_names_exclude_filter = kwargs.get('display_names_exclude_filter', None) - self.product_filter = kwargs['product_filter'] - self.severities_filter = kwargs.get('severities_filter', None) - - -class MicrosoftSecurityIncidentCreationAlertRuleProperties(MicrosoftSecurityIncidentCreationAlertRuleCommonProperties): - """MicrosoftSecurityIncidentCreation rule property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: Required. The alerts' productName on which the cases will be generated. - Possible values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure - Advanced Threat Protection", "Azure Active Directory Identity Protection", "Azure Security - Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: Required. The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Required. Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert has been modified. - :vartype last_modified_utc: ~datetime.datetime - """ - - _validation = { - 'product_filter': {'required': True}, - 'display_name': {'required': True}, - 'enabled': {'required': True}, - 'last_modified_utc': {'readonly': True}, - } - - _attribute_map = { - 'display_names_filter': {'key': 'displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'severitiesFilter', 'type': '[str]'}, - 'alert_rule_template_name': {'key': 'alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, - 'display_name': {'key': 'displayName', 'type': 'str'}, - 'enabled': {'key': 'enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'lastModifiedUtc', 'type': 'iso-8601'}, - } - - def __init__( - self, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRuleProperties, self).__init__(**kwargs) - self.alert_rule_template_name = kwargs.get('alert_rule_template_name', None) - self.description = kwargs.get('description', None) - self.display_name = kwargs['display_name'] - self.enabled = kwargs['enabled'] - self.last_modified_utc = None - - -class MicrosoftSecurityIncidentCreationAlertRuleTemplate(AlertRuleTemplate): - """Represents MicrosoftSecurityIncidentCreation rule template. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rules_created_by_template_count: the number of alert rules that were created by - this template. - :type alert_rules_created_by_template_count: int - :ivar created_date_utc: The time that this alert rule template has been added. - :vartype created_date_utc: ~datetime.datetime - :param description: The description of the alert rule template. - :type description: str - :param display_name: The display name for alert rule template. - :type display_name: str - :param required_data_connectors: The required data connectors for this template. - :type required_data_connectors: list[~security_insights.models.AlertRuleTemplateDataSource] - :param status: The alert rule template status. Possible values include: "Installed", - "Available", "NotAvailable". - :type status: str or ~security_insights.models.TemplateStatus - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: The alerts' productName on which the cases will be generated. Possible - values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure Advanced Threat - Protection", "Azure Active Directory Identity Protection", "Azure Security Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'created_date_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rules_created_by_template_count': {'key': 'properties.alertRulesCreatedByTemplateCount', 'type': 'int'}, - 'created_date_utc': {'key': 'properties.createdDateUTC', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'required_data_connectors': {'key': 'properties.requiredDataConnectors', 'type': '[AlertRuleTemplateDataSource]'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'display_names_filter': {'key': 'properties.displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'properties.displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'properties.productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'properties.severitiesFilter', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'MicrosoftSecurityIncidentCreation' # type: str - self.alert_rules_created_by_template_count = kwargs.get('alert_rules_created_by_template_count', None) - self.created_date_utc = None - self.description = kwargs.get('description', None) - self.display_name = kwargs.get('display_name', None) - self.required_data_connectors = kwargs.get('required_data_connectors', None) - self.status = kwargs.get('status', None) - self.display_names_filter = kwargs.get('display_names_filter', None) - self.display_names_exclude_filter = kwargs.get('display_names_exclude_filter', None) - self.product_filter = kwargs.get('product_filter', None) - self.severities_filter = kwargs.get('severities_filter', None) - - -class OfficeConsent(Resource): - """Consent for Office365 tenant that already made. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param tenant_id: The tenantId of the Office365 with the consent. - :type tenant_id: str - :ivar tenant_name: The tenant name of the Office365 with the consent. - :vartype tenant_name: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'tenant_name': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'tenant_name': {'key': 'properties.tenantName', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(OfficeConsent, self).__init__(**kwargs) - self.tenant_id = kwargs.get('tenant_id', None) - self.tenant_name = None - - -class OfficeConsentList(msrest.serialization.Model): - """List of all the office365 consents. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of office consents. - :vartype next_link: str - :param value: Required. Array of the consents. - :type value: list[~security_insights.models.OfficeConsent] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[OfficeConsent]'}, - } - - def __init__( - self, - **kwargs - ): - super(OfficeConsentList, self).__init__(**kwargs) - self.next_link = None - self.value = kwargs['value'] - - -class OfficeDataConnector(DataConnector): - """Represents office data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state_data_types_share_point_state: Describe whether this data type connection is - enabled or not. Possible values include: "Enabled", "Disabled". - :type state_data_types_share_point_state: str or ~security_insights.models.DataTypeState - :param state_data_types_exchange_state: Describe whether this data type connection is enabled - or not. Possible values include: "Enabled", "Disabled". - :type state_data_types_exchange_state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state_data_types_share_point_state': {'key': 'dataTypes.sharePoint.state', 'type': 'str'}, - 'state_data_types_exchange_state': {'key': 'dataTypes.exchange.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(OfficeDataConnector, self).__init__(**kwargs) - self.kind = 'Office365' # type: str - self.tenant_id = kwargs.get('tenant_id', None) - self.state_data_types_share_point_state = kwargs.get('state_data_types_share_point_state', None) - self.state_data_types_exchange_state = kwargs.get('state_data_types_exchange_state', None) - - -class OfficeDataConnectorDataTypesExchange(DataConnectorDataTypeCommon): - """Exchange data type connection. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(OfficeDataConnectorDataTypesExchange, self).__init__(**kwargs) - - -class OfficeDataConnectorDataTypesSharePoint(DataConnectorDataTypeCommon): - """SharePoint data type connection. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(OfficeDataConnectorDataTypesSharePoint, self).__init__(**kwargs) - - -class Operation(msrest.serialization.Model): - """Operation provided by provider. - - :param display: Properties of the operation. - :type display: ~security_insights.models.OperationDisplay - :param name: Name of the operation. - :type name: str - """ - - _attribute_map = { - 'display': {'key': 'display', 'type': 'OperationDisplay'}, - 'name': {'key': 'name', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(Operation, self).__init__(**kwargs) - self.display = kwargs.get('display', None) - self.name = kwargs.get('name', None) - - -class OperationDisplay(msrest.serialization.Model): - """Properties of the operation. - - :param description: Description of the operation. - :type description: str - :param operation: Operation name. - :type operation: str - :param provider: Provider name. - :type provider: str - :param resource: Resource name. - :type resource: str - """ - - _attribute_map = { - 'description': {'key': 'description', 'type': 'str'}, - 'operation': {'key': 'operation', 'type': 'str'}, - 'provider': {'key': 'provider', 'type': 'str'}, - 'resource': {'key': 'resource', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(OperationDisplay, self).__init__(**kwargs) - self.description = kwargs.get('description', None) - self.operation = kwargs.get('operation', None) - self.provider = kwargs.get('provider', None) - self.resource = kwargs.get('resource', None) - - -class OperationsList(msrest.serialization.Model): - """Lists the operations available in the SecurityInsights RP. - - All required parameters must be populated in order to send to Azure. - - :param next_link: URL to fetch the next set of operations. - :type next_link: str - :param value: Required. Array of operations. - :type value: list[~security_insights.models.Operation] - """ - - _validation = { - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[Operation]'}, - } - - def __init__( - self, - **kwargs - ): - super(OperationsList, self).__init__(**kwargs) - self.next_link = kwargs.get('next_link', None) - self.value = kwargs['value'] - - -class ScheduledAlertRule(AlertRule): - """Represents scheduled alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert rule has been modified. - :vartype last_modified_utc: ~datetime.datetime - :param suppression_duration: The suppression (in ISO 8601 duration format) to wait since last - time this alert rule been triggered. - :type suppression_duration: ~datetime.timedelta - :param suppression_enabled: Determines whether the suppression for this alert rule is enabled - or disabled. - :type suppression_enabled: bool - :param tactics: The tactics of the alert rule. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'last_modified_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'query': {'key': 'properties.query', 'type': 'str'}, - 'query_frequency': {'key': 'properties.queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'properties.queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'trigger_operator': {'key': 'properties.triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'properties.triggerThreshold', 'type': 'int'}, - 'alert_rule_template_name': {'key': 'properties.alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'properties.lastModifiedUtc', 'type': 'iso-8601'}, - 'suppression_duration': {'key': 'properties.suppressionDuration', 'type': 'duration'}, - 'suppression_enabled': {'key': 'properties.suppressionEnabled', 'type': 'bool'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(ScheduledAlertRule, self).__init__(**kwargs) - self.kind = 'Scheduled' # type: str - self.query = kwargs.get('query', None) - self.query_frequency = kwargs.get('query_frequency', None) - self.query_period = kwargs.get('query_period', None) - self.severity = kwargs.get('severity', None) - self.trigger_operator = kwargs.get('trigger_operator', None) - self.trigger_threshold = kwargs.get('trigger_threshold', None) - self.alert_rule_template_name = kwargs.get('alert_rule_template_name', None) - self.description = kwargs.get('description', None) - self.display_name = kwargs.get('display_name', None) - self.enabled = kwargs.get('enabled', None) - self.last_modified_utc = None - self.suppression_duration = kwargs.get('suppression_duration', None) - self.suppression_enabled = kwargs.get('suppression_enabled', None) - self.tactics = kwargs.get('tactics', None) - - -class ScheduledAlertRuleCommonProperties(msrest.serialization.Model): - """Schedule alert rule template property bag. - - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - """ - - _attribute_map = { - 'query': {'key': 'query', 'type': 'str'}, - 'query_frequency': {'key': 'queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'severity', 'type': 'str'}, - 'trigger_operator': {'key': 'triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'triggerThreshold', 'type': 'int'}, - } - - def __init__( - self, - **kwargs - ): - super(ScheduledAlertRuleCommonProperties, self).__init__(**kwargs) - self.query = kwargs.get('query', None) - self.query_frequency = kwargs.get('query_frequency', None) - self.query_period = kwargs.get('query_period', None) - self.severity = kwargs.get('severity', None) - self.trigger_operator = kwargs.get('trigger_operator', None) - self.trigger_threshold = kwargs.get('trigger_threshold', None) - - -class ScheduledAlertRuleProperties(ScheduledAlertRuleCommonProperties): - """Scheduled alert rule base property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: Required. The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Required. Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert rule has been modified. - :vartype last_modified_utc: ~datetime.datetime - :param suppression_duration: Required. The suppression (in ISO 8601 duration format) to wait - since last time this alert rule been triggered. - :type suppression_duration: ~datetime.timedelta - :param suppression_enabled: Required. Determines whether the suppression for this alert rule is - enabled or disabled. - :type suppression_enabled: bool - :param tactics: The tactics of the alert rule. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'display_name': {'required': True}, - 'enabled': {'required': True}, - 'last_modified_utc': {'readonly': True}, - 'suppression_duration': {'required': True}, - 'suppression_enabled': {'required': True}, - } - - _attribute_map = { - 'query': {'key': 'query', 'type': 'str'}, - 'query_frequency': {'key': 'queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'severity', 'type': 'str'}, - 'trigger_operator': {'key': 'triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'triggerThreshold', 'type': 'int'}, - 'alert_rule_template_name': {'key': 'alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, - 'display_name': {'key': 'displayName', 'type': 'str'}, - 'enabled': {'key': 'enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'lastModifiedUtc', 'type': 'iso-8601'}, - 'suppression_duration': {'key': 'suppressionDuration', 'type': 'duration'}, - 'suppression_enabled': {'key': 'suppressionEnabled', 'type': 'bool'}, - 'tactics': {'key': 'tactics', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(ScheduledAlertRuleProperties, self).__init__(**kwargs) - self.alert_rule_template_name = kwargs.get('alert_rule_template_name', None) - self.description = kwargs.get('description', None) - self.display_name = kwargs['display_name'] - self.enabled = kwargs['enabled'] - self.last_modified_utc = None - self.suppression_duration = kwargs['suppression_duration'] - self.suppression_enabled = kwargs['suppression_enabled'] - self.tactics = kwargs.get('tactics', None) - - -class ScheduledAlertRuleTemplate(AlertRuleTemplate): - """Represents scheduled alert rule template. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rules_created_by_template_count: the number of alert rules that were created by - this template. - :type alert_rules_created_by_template_count: int - :ivar created_date_utc: The time that this alert rule template has been added. - :vartype created_date_utc: ~datetime.datetime - :param description: The description of the alert rule template. - :type description: str - :param display_name: The display name for alert rule template. - :type display_name: str - :param required_data_connectors: The required data connectors for this template. - :type required_data_connectors: list[~security_insights.models.AlertRuleTemplateDataSource] - :param status: The alert rule template status. Possible values include: "Installed", - "Available", "NotAvailable". - :type status: str or ~security_insights.models.TemplateStatus - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - :param tactics: The tactics of the alert rule template. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'created_date_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rules_created_by_template_count': {'key': 'properties.alertRulesCreatedByTemplateCount', 'type': 'int'}, - 'created_date_utc': {'key': 'properties.createdDateUTC', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'required_data_connectors': {'key': 'properties.requiredDataConnectors', 'type': '[AlertRuleTemplateDataSource]'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'query': {'key': 'properties.query', 'type': 'str'}, - 'query_frequency': {'key': 'properties.queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'properties.queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'trigger_operator': {'key': 'properties.triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'properties.triggerThreshold', 'type': 'int'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(ScheduledAlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'Scheduled' # type: str - self.alert_rules_created_by_template_count = kwargs.get('alert_rules_created_by_template_count', None) - self.created_date_utc = None - self.description = kwargs.get('description', None) - self.display_name = kwargs.get('display_name', None) - self.required_data_connectors = kwargs.get('required_data_connectors', None) - self.status = kwargs.get('status', None) - self.query = kwargs.get('query', None) - self.query_frequency = kwargs.get('query_frequency', None) - self.query_period = kwargs.get('query_period', None) - self.severity = kwargs.get('severity', None) - self.trigger_operator = kwargs.get('trigger_operator', None) - self.trigger_threshold = kwargs.get('trigger_threshold', None) - self.tactics = kwargs.get('tactics', None) - - -class Settings(ResourceWithEtag): - """The Settings. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: ToggleSettings, UebaSettings. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "UebaSettings", "ToggleSettings". - :type kind: str or ~security_insights.models.SettingKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'ToggleSettings': 'ToggleSettings', 'UebaSettings': 'UebaSettings'} - } - - def __init__( - self, - **kwargs - ): - super(Settings, self).__init__(**kwargs) - self.kind = 'Settings' # type: str - - -class ThreatIntelligence(msrest.serialization.Model): - """ThreatIntelligence property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar confidence: Confidence (must be between 0 and 1). - :vartype confidence: float - :ivar provider_name: Name of the provider from whom this Threat Intelligence information was - received. - :vartype provider_name: str - :ivar report_link: Report link. - :vartype report_link: str - :ivar threat_description: Threat description (free text). - :vartype threat_description: str - :ivar threat_name: Threat name (e.g. "Jedobot malware"). - :vartype threat_name: str - :ivar threat_type: Threat type (e.g. "Botnet"). - :vartype threat_type: str - """ - - _validation = { - 'confidence': {'readonly': True}, - 'provider_name': {'readonly': True}, - 'report_link': {'readonly': True}, - 'threat_description': {'readonly': True}, - 'threat_name': {'readonly': True}, - 'threat_type': {'readonly': True}, - } - - _attribute_map = { - 'confidence': {'key': 'confidence', 'type': 'float'}, - 'provider_name': {'key': 'providerName', 'type': 'str'}, - 'report_link': {'key': 'reportLink', 'type': 'str'}, - 'threat_description': {'key': 'threatDescription', 'type': 'str'}, - 'threat_name': {'key': 'threatName', 'type': 'str'}, - 'threat_type': {'key': 'threatType', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ThreatIntelligence, self).__init__(**kwargs) - self.confidence = None - self.provider_name = None - self.report_link = None - self.threat_description = None - self.threat_name = None - self.threat_type = None - - -class TIDataConnector(DataConnector): - """Represents threat intelligence data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.indicators.state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(TIDataConnector, self).__init__(**kwargs) - self.kind = 'ThreatIntelligence' # type: str - self.tenant_id = kwargs.get('tenant_id', None) - self.state = kwargs.get('state', None) - - -class TIDataConnectorDataTypesIndicators(DataConnectorDataTypeCommon): - """Data type for indicators connection. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(TIDataConnectorDataTypesIndicators, self).__init__(**kwargs) - - -class ToggleSettings(Settings): - """Settings with single toggle. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "UebaSettings", "ToggleSettings". - :type kind: str or ~security_insights.models.SettingKind - :param is_enabled: Determines whether the setting is enable or disabled. - :type is_enabled: bool - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'is_enabled': {'key': 'properties.isEnabled', 'type': 'bool'}, - } - - def __init__( - self, - **kwargs - ): - super(ToggleSettings, self).__init__(**kwargs) - self.kind = 'ToggleSettings' # type: str - self.is_enabled = kwargs.get('is_enabled', None) - - -class UebaSettings(Settings): - """Represents settings for User and Entity Behavior Analytics enablement. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "UebaSettings", "ToggleSettings". - :type kind: str or ~security_insights.models.SettingKind - :ivar atp_license_status: Determines whether the tenant has ATP (Advanced Threat Protection) - license. Possible values include: "Enabled", "Disabled". - :vartype atp_license_status: str or ~security_insights.models.LicenseStatus - :param is_enabled: Determines whether User and Entity Behavior Analytics is enabled for this - workspace. - :type is_enabled: bool - :ivar status_in_mcas: Determines whether User and Entity Behavior Analytics is enabled from - MCAS (Microsoft Cloud App Security). Possible values include: "Enabled", "Disabled". - :vartype status_in_mcas: str or ~security_insights.models.StatusInMCAS - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'atp_license_status': {'readonly': True}, - 'status_in_mcas': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'atp_license_status': {'key': 'properties.atpLicenseStatus', 'type': 'str'}, - 'is_enabled': {'key': 'properties.isEnabled', 'type': 'bool'}, - 'status_in_mcas': {'key': 'properties.statusInMcas', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(UebaSettings, self).__init__(**kwargs) - self.kind = 'UebaSettings' # type: str - self.atp_license_status = None - self.is_enabled = kwargs.get('is_enabled', None) - self.status_in_mcas = None diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_models_py3.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_models_py3.py deleted file mode 100644 index 29010ed670f..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_models_py3.py +++ /dev/null @@ -1,3184 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -import datetime -from typing import List, Optional, Union - -import msrest.serialization - -from ._security_insights_enums import * - - -class ResourceWithEtag(msrest.serialization.Model): - """An azure resource object with an Etag property. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - **kwargs - ): - super(ResourceWithEtag, self).__init__(**kwargs) - self.id = None - self.name = None - self.type = None - self.etag = etag - - -class DataConnector(ResourceWithEtag): - """Data connector. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: AwsCloudTrailDataConnector, AADDataConnector, AATPDataConnector, ASCDataConnector, MCASDataConnector, MDATPDataConnector, OfficeDataConnector, TIDataConnector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'AmazonWebServicesCloudTrail': 'AwsCloudTrailDataConnector', 'AzureActiveDirectory': 'AADDataConnector', 'AzureAdvancedThreatProtection': 'AATPDataConnector', 'AzureSecurityCenter': 'ASCDataConnector', 'MicrosoftCloudAppSecurity': 'MCASDataConnector', 'MicrosoftDefenderAdvancedThreatProtection': 'MDATPDataConnector', 'Office365': 'OfficeDataConnector', 'ThreatIntelligence': 'TIDataConnector'} - } - - def __init__( - self, - *, - etag: Optional[str] = None, - **kwargs - ): - super(DataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'DataConnector' # type: str - - -class AADDataConnector(DataConnector): - """Represents AAD (Azure Active Directory) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - tenant_id: Optional[str] = None, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(AADDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'AzureActiveDirectory' # type: str - self.tenant_id = tenant_id - self.state = state - - -class AATPDataConnector(DataConnector): - """Represents AATP (Azure Advanced Threat Protection) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - tenant_id: Optional[str] = None, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(AATPDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'AzureAdvancedThreatProtection' # type: str - self.tenant_id = tenant_id - self.state = state - - -class ActionPropertiesBase(msrest.serialization.Model): - """Action property bag base. - - All required parameters must be populated in order to send to Azure. - - :param logic_app_resource_id: Required. Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - """ - - _validation = { - 'logic_app_resource_id': {'required': True}, - } - - _attribute_map = { - 'logic_app_resource_id': {'key': 'logicAppResourceId', 'type': 'str'}, - } - - def __init__( - self, - *, - logic_app_resource_id: str, - **kwargs - ): - super(ActionPropertiesBase, self).__init__(**kwargs) - self.logic_app_resource_id = logic_app_resource_id - - -class ActionRequest(ResourceWithEtag): - """Action for alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param logic_app_resource_id: Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param trigger_uri: Logic App Callback URL for this specific workflow. - :type trigger_uri: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'logic_app_resource_id': {'key': 'properties.logicAppResourceId', 'type': 'str'}, - 'trigger_uri': {'key': 'properties.triggerUri', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - logic_app_resource_id: Optional[str] = None, - trigger_uri: Optional[str] = None, - **kwargs - ): - super(ActionRequest, self).__init__(etag=etag, **kwargs) - self.logic_app_resource_id = logic_app_resource_id - self.trigger_uri = trigger_uri - - -class ActionRequestProperties(ActionPropertiesBase): - """Action property bag. - - All required parameters must be populated in order to send to Azure. - - :param logic_app_resource_id: Required. Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param trigger_uri: Logic App Callback URL for this specific workflow. - :type trigger_uri: str - """ - - _validation = { - 'logic_app_resource_id': {'required': True}, - } - - _attribute_map = { - 'logic_app_resource_id': {'key': 'logicAppResourceId', 'type': 'str'}, - 'trigger_uri': {'key': 'triggerUri', 'type': 'str'}, - } - - def __init__( - self, - *, - logic_app_resource_id: str, - trigger_uri: Optional[str] = None, - **kwargs - ): - super(ActionRequestProperties, self).__init__(logic_app_resource_id=logic_app_resource_id, **kwargs) - self.trigger_uri = trigger_uri - - -class Resource(msrest.serialization.Model): - """An azure resource object. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(Resource, self).__init__(**kwargs) - self.id = None - self.name = None - self.type = None - - -class ActionResponse(Resource): - """Action for alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the action. - :type etag: str - :param logic_app_resource_id: Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param workflow_id: The name of the logic app's workflow. - :type workflow_id: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'logic_app_resource_id': {'key': 'properties.logicAppResourceId', 'type': 'str'}, - 'workflow_id': {'key': 'properties.workflowId', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - logic_app_resource_id: Optional[str] = None, - workflow_id: Optional[str] = None, - **kwargs - ): - super(ActionResponse, self).__init__(**kwargs) - self.etag = etag - self.logic_app_resource_id = logic_app_resource_id - self.workflow_id = workflow_id - - -class ActionResponseProperties(ActionPropertiesBase): - """Action property bag. - - All required parameters must be populated in order to send to Azure. - - :param logic_app_resource_id: Required. Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param workflow_id: The name of the logic app's workflow. - :type workflow_id: str - """ - - _validation = { - 'logic_app_resource_id': {'required': True}, - } - - _attribute_map = { - 'logic_app_resource_id': {'key': 'logicAppResourceId', 'type': 'str'}, - 'workflow_id': {'key': 'workflowId', 'type': 'str'}, - } - - def __init__( - self, - *, - logic_app_resource_id: str, - workflow_id: Optional[str] = None, - **kwargs - ): - super(ActionResponseProperties, self).__init__(logic_app_resource_id=logic_app_resource_id, **kwargs) - self.workflow_id = workflow_id - - -class ActionsList(msrest.serialization.Model): - """List all the actions. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of actions. - :vartype next_link: str - :param value: Required. Array of actions. - :type value: list[~security_insights.models.ActionResponse] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[ActionResponse]'}, - } - - def __init__( - self, - *, - value: List["ActionResponse"], - **kwargs - ): - super(ActionsList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class AlertRule(ResourceWithEtag): - """Alert rule. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: FusionAlertRule, MicrosoftSecurityIncidentCreationAlertRule, ScheduledAlertRule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'Fusion': 'FusionAlertRule', 'MicrosoftSecurityIncidentCreation': 'MicrosoftSecurityIncidentCreationAlertRule', 'Scheduled': 'ScheduledAlertRule'} - } - - def __init__( - self, - *, - etag: Optional[str] = None, - **kwargs - ): - super(AlertRule, self).__init__(etag=etag, **kwargs) - self.kind = 'AlertRule' # type: str - - -class AlertRulesList(msrest.serialization.Model): - """List all the alert rules. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of alert rules. - :vartype next_link: str - :param value: Required. Array of alert rules. - :type value: list[~security_insights.models.AlertRule] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[AlertRule]'}, - } - - def __init__( - self, - *, - value: List["AlertRule"], - **kwargs - ): - super(AlertRulesList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class AlertRuleTemplate(Resource): - """Alert rule template. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: FusionAlertRuleTemplate, MicrosoftSecurityIncidentCreationAlertRuleTemplate, ScheduledAlertRuleTemplate. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'Fusion': 'FusionAlertRuleTemplate', 'MicrosoftSecurityIncidentCreation': 'MicrosoftSecurityIncidentCreationAlertRuleTemplate', 'Scheduled': 'ScheduledAlertRuleTemplate'} - } - - def __init__( - self, - **kwargs - ): - super(AlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'AlertRuleTemplate' # type: str - - -class AlertRuleTemplateDataSource(msrest.serialization.Model): - """alert rule template data sources. - - :param connector_id: The connector id that provides the following data types. - :type connector_id: str - :param data_types: The data types used by the alert rule template. - :type data_types: list[str] - """ - - _attribute_map = { - 'connector_id': {'key': 'connectorId', 'type': 'str'}, - 'data_types': {'key': 'dataTypes', 'type': '[str]'}, - } - - def __init__( - self, - *, - connector_id: Optional[str] = None, - data_types: Optional[List[str]] = None, - **kwargs - ): - super(AlertRuleTemplateDataSource, self).__init__(**kwargs) - self.connector_id = connector_id - self.data_types = data_types - - -class AlertRuleTemplatesList(msrest.serialization.Model): - """List all the alert rule templates. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of alert rule templates. - :vartype next_link: str - :param value: Required. Array of alert rule templates. - :type value: list[~security_insights.models.AlertRuleTemplate] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[AlertRuleTemplate]'}, - } - - def __init__( - self, - *, - value: List["AlertRuleTemplate"], - **kwargs - ): - super(AlertRuleTemplatesList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class AlertsDataTypeOfDataConnector(msrest.serialization.Model): - """Alerts data type for data connectors. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'alerts.state', 'type': 'str'}, - } - - def __init__( - self, - *, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(AlertsDataTypeOfDataConnector, self).__init__(**kwargs) - self.state = state - - -class ASCDataConnector(DataConnector): - """Represents ASC (Azure Security Center) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param subscription_id: The subscription id to connect to, and get the data from. - :type subscription_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'subscription_id': {'key': 'properties.subscriptionId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - subscription_id: Optional[str] = None, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(ASCDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'AzureSecurityCenter' # type: str - self.subscription_id = subscription_id - self.state = state - - -class DataConnectorWithAlertsProperties(msrest.serialization.Model): - """Data connector properties. - - :param data_types: The available data types for the connector. - :type data_types: ~security_insights.models.AlertsDataTypeOfDataConnector - """ - - _attribute_map = { - 'data_types': {'key': 'dataTypes', 'type': 'AlertsDataTypeOfDataConnector'}, - } - - def __init__( - self, - *, - data_types: Optional["AlertsDataTypeOfDataConnector"] = None, - **kwargs - ): - super(DataConnectorWithAlertsProperties, self).__init__(**kwargs) - self.data_types = data_types - - -class ASCDataConnectorProperties(DataConnectorWithAlertsProperties): - """ASC (Azure Security Center) data connector properties. - - :param data_types: The available data types for the connector. - :type data_types: ~security_insights.models.AlertsDataTypeOfDataConnector - :param subscription_id: The subscription id to connect to, and get the data from. - :type subscription_id: str - """ - - _attribute_map = { - 'data_types': {'key': 'dataTypes', 'type': 'AlertsDataTypeOfDataConnector'}, - 'subscription_id': {'key': 'subscriptionId', 'type': 'str'}, - } - - def __init__( - self, - *, - data_types: Optional["AlertsDataTypeOfDataConnector"] = None, - subscription_id: Optional[str] = None, - **kwargs - ): - super(ASCDataConnectorProperties, self).__init__(data_types=data_types, **kwargs) - self.subscription_id = subscription_id - - -class AwsCloudTrailDataConnector(DataConnector): - """Represents Amazon Web Services CloudTrail data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param aws_role_arn: The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access - the Aws account. - :type aws_role_arn: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'aws_role_arn': {'key': 'properties.awsRoleArn', 'type': 'str'}, - 'state': {'key': 'dataTypes.logs.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - aws_role_arn: Optional[str] = None, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(AwsCloudTrailDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'AmazonWebServicesCloudTrail' # type: str - self.aws_role_arn = aws_role_arn - self.state = state - - -class DataConnectorDataTypeCommon(msrest.serialization.Model): - """Common field for data type in data connectors. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - *, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(DataConnectorDataTypeCommon, self).__init__(**kwargs) - self.state = state - - -class AwsCloudTrailDataConnectorDataTypesLogs(DataConnectorDataTypeCommon): - """Logs data type. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - *, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(AwsCloudTrailDataConnectorDataTypesLogs, self).__init__(state=state, **kwargs) - - -class Bookmark(ResourceWithEtag): - """Represents a bookmark in Azure Security Insights. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param created: The time the bookmark was created. - :type created: ~datetime.datetime - :param display_name: The display name of the bookmark. - :type display_name: str - :param labels: List of labels relevant to this bookmark. - :type labels: list[str] - :param notes: The notes of the bookmark. - :type notes: str - :param query: The query of the bookmark. - :type query: str - :param query_result: The query result of the bookmark. - :type query_result: str - :param updated: The last time the bookmark was updated. - :type updated: ~datetime.datetime - :param incident_info: Describes an incident that relates to bookmark. - :type incident_info: ~security_insights.models.IncidentInfo - :ivar email_updated_by_email: The email of the user. - :vartype email_updated_by_email: str - :ivar name_updated_by_name: The name of the user. - :vartype name_updated_by_name: str - :param object_id_updated_by_object_id: The object id of the user. - :type object_id_updated_by_object_id: str - :ivar email_created_by_email: The email of the user. - :vartype email_created_by_email: str - :ivar name_created_by_name: The name of the user. - :vartype name_created_by_name: str - :param object_id_created_by_object_id: The object id of the user. - :type object_id_created_by_object_id: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'email_updated_by_email': {'readonly': True}, - 'name_updated_by_name': {'readonly': True}, - 'email_created_by_email': {'readonly': True}, - 'name_created_by_name': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'created': {'key': 'properties.created', 'type': 'iso-8601'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'labels': {'key': 'properties.labels', 'type': '[str]'}, - 'notes': {'key': 'properties.notes', 'type': 'str'}, - 'query': {'key': 'properties.query', 'type': 'str'}, - 'query_result': {'key': 'properties.queryResult', 'type': 'str'}, - 'updated': {'key': 'properties.updated', 'type': 'iso-8601'}, - 'incident_info': {'key': 'properties.incidentInfo', 'type': 'IncidentInfo'}, - 'email_updated_by_email': {'key': 'updatedBy.email', 'type': 'str'}, - 'name_updated_by_name': {'key': 'updatedBy.name', 'type': 'str'}, - 'object_id_updated_by_object_id': {'key': 'updatedBy.objectId', 'type': 'str'}, - 'email_created_by_email': {'key': 'createdBy.email', 'type': 'str'}, - 'name_created_by_name': {'key': 'createdBy.name', 'type': 'str'}, - 'object_id_created_by_object_id': {'key': 'createdBy.objectId', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - created: Optional[datetime.datetime] = None, - display_name: Optional[str] = None, - labels: Optional[List[str]] = None, - notes: Optional[str] = None, - query: Optional[str] = None, - query_result: Optional[str] = None, - updated: Optional[datetime.datetime] = None, - incident_info: Optional["IncidentInfo"] = None, - object_id_updated_by_object_id: Optional[str] = None, - object_id_created_by_object_id: Optional[str] = None, - **kwargs - ): - super(Bookmark, self).__init__(etag=etag, **kwargs) - self.created = created - self.display_name = display_name - self.labels = labels - self.notes = notes - self.query = query - self.query_result = query_result - self.updated = updated - self.incident_info = incident_info - self.email_updated_by_email = None - self.name_updated_by_name = None - self.object_id_updated_by_object_id = object_id_updated_by_object_id - self.email_created_by_email = None - self.name_created_by_name = None - self.object_id_created_by_object_id = object_id_created_by_object_id - - -class BookmarkList(msrest.serialization.Model): - """List all the bookmarks. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of cases. - :vartype next_link: str - :param value: Required. Array of bookmarks. - :type value: list[~security_insights.models.Bookmark] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[Bookmark]'}, - } - - def __init__( - self, - *, - value: List["Bookmark"], - **kwargs - ): - super(BookmarkList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class ClientInfo(msrest.serialization.Model): - """Information on the client (user or application) that made some action. - - :param email: The email of the client. - :type email: str - :param name: The name of the client. - :type name: str - :param object_id: The object id of the client. - :type object_id: str - :param user_principal_name: The user principal name of the client. - :type user_principal_name: str - """ - - _attribute_map = { - 'email': {'key': 'email', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'object_id': {'key': 'objectId', 'type': 'str'}, - 'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'}, - } - - def __init__( - self, - *, - email: Optional[str] = None, - name: Optional[str] = None, - object_id: Optional[str] = None, - user_principal_name: Optional[str] = None, - **kwargs - ): - super(ClientInfo, self).__init__(**kwargs) - self.email = email - self.name = name - self.object_id = object_id - self.user_principal_name = user_principal_name - - -class DataConnectorList(msrest.serialization.Model): - """List all the data connectors. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of data connectors. - :vartype next_link: str - :param value: Required. Array of data connectors. - :type value: list[~security_insights.models.DataConnector] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[DataConnector]'}, - } - - def __init__( - self, - *, - value: List["DataConnector"], - **kwargs - ): - super(DataConnectorList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class DataConnectorTenantId(msrest.serialization.Model): - """Properties data connector on tenant level. - - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - """ - - _attribute_map = { - 'tenant_id': {'key': 'tenantId', 'type': 'str'}, - } - - def __init__( - self, - *, - tenant_id: Optional[str] = None, - **kwargs - ): - super(DataConnectorTenantId, self).__init__(**kwargs) - self.tenant_id = tenant_id - - -class ErrorAdditionalInfo(msrest.serialization.Model): - """The resource management error additional info. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar type: The additional info type. - :vartype type: str - :ivar info: The additional info. - :vartype info: object - """ - - _validation = { - 'type': {'readonly': True}, - 'info': {'readonly': True}, - } - - _attribute_map = { - 'type': {'key': 'type', 'type': 'str'}, - 'info': {'key': 'info', 'type': 'object'}, - } - - def __init__( - self, - **kwargs - ): - super(ErrorAdditionalInfo, self).__init__(**kwargs) - self.type = None - self.info = None - - -class ErrorResponse(msrest.serialization.Model): - """The resource management error response. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar code: The error code. - :vartype code: str - :ivar message: The error message. - :vartype message: str - :ivar target: The error target. - :vartype target: str - :ivar details: The error details. - :vartype details: list[~security_insights.models.ErrorResponse] - :ivar additional_info: The error additional info. - :vartype additional_info: list[~security_insights.models.ErrorAdditionalInfo] - """ - - _validation = { - 'code': {'readonly': True}, - 'message': {'readonly': True}, - 'target': {'readonly': True}, - 'details': {'readonly': True}, - 'additional_info': {'readonly': True}, - } - - _attribute_map = { - 'code': {'key': 'code', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, - 'details': {'key': 'details', 'type': '[ErrorResponse]'}, - 'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'}, - } - - def __init__( - self, - **kwargs - ): - super(ErrorResponse, self).__init__(**kwargs) - self.code = None - self.message = None - self.target = None - self.details = None - self.additional_info = None - - -class FusionAlertRule(AlertRule): - """Represents Fusion alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :ivar description: The description of the alert rule. - :vartype description: str - :ivar display_name: The display name for alerts created by this alert rule. - :vartype display_name: str - :param enabled: Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert has been modified. - :vartype last_modified_utc: ~datetime.datetime - :ivar severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :vartype severity: str or ~security_insights.models.AlertSeverity - :ivar tactics: The tactics of the alert rule. - :vartype tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'description': {'readonly': True}, - 'display_name': {'readonly': True}, - 'last_modified_utc': {'readonly': True}, - 'severity': {'readonly': True}, - 'tactics': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rule_template_name': {'key': 'properties.alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'properties.lastModifiedUtc', 'type': 'iso-8601'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - alert_rule_template_name: Optional[str] = None, - enabled: Optional[bool] = None, - **kwargs - ): - super(FusionAlertRule, self).__init__(etag=etag, **kwargs) - self.kind = 'Fusion' # type: str - self.alert_rule_template_name = alert_rule_template_name - self.description = None - self.display_name = None - self.enabled = enabled - self.last_modified_utc = None - self.severity = None - self.tactics = None - - -class FusionAlertRuleTemplate(AlertRuleTemplate): - """Represents Fusion alert rule template. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rules_created_by_template_count: the number of alert rules that were created by - this template. - :type alert_rules_created_by_template_count: int - :ivar created_date_utc: The time that this alert rule template has been added. - :vartype created_date_utc: ~datetime.datetime - :param description: The description of the alert rule template. - :type description: str - :param display_name: The display name for alert rule template. - :type display_name: str - :param required_data_connectors: The required data connectors for this template. - :type required_data_connectors: list[~security_insights.models.AlertRuleTemplateDataSource] - :param status: The alert rule template status. Possible values include: "Installed", - "Available", "NotAvailable". - :type status: str or ~security_insights.models.TemplateStatus - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param tactics: The tactics of the alert rule template. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'created_date_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rules_created_by_template_count': {'key': 'properties.alertRulesCreatedByTemplateCount', 'type': 'int'}, - 'created_date_utc': {'key': 'properties.createdDateUTC', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'required_data_connectors': {'key': 'properties.requiredDataConnectors', 'type': '[AlertRuleTemplateDataSource]'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - *, - alert_rules_created_by_template_count: Optional[int] = None, - description: Optional[str] = None, - display_name: Optional[str] = None, - required_data_connectors: Optional[List["AlertRuleTemplateDataSource"]] = None, - status: Optional[Union[str, "TemplateStatus"]] = None, - severity: Optional[Union[str, "AlertSeverity"]] = None, - tactics: Optional[List[Union[str, "AttackTactic"]]] = None, - **kwargs - ): - super(FusionAlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'Fusion' # type: str - self.alert_rules_created_by_template_count = alert_rules_created_by_template_count - self.created_date_utc = None - self.description = description - self.display_name = display_name - self.required_data_connectors = required_data_connectors - self.status = status - self.severity = severity - self.tactics = tactics - - -class Incident(ResourceWithEtag): - """Represents an incident in Azure Security Insights. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :ivar additional_data: Additional data on the incident. - :vartype additional_data: ~security_insights.models.IncidentAdditionalData - :param classification: The reason the incident was closed. Possible values include: - "Undetermined", "TruePositive", "BenignPositive", "FalsePositive". - :type classification: str or ~security_insights.models.IncidentClassification - :param classification_comment: Describes the reason the incident was closed. - :type classification_comment: str - :param classification_reason: The classification reason the incident was closed with. Possible - values include: "SuspiciousActivity", "SuspiciousButExpected", "IncorrectAlertLogic", - "InaccurateData". - :type classification_reason: str or ~security_insights.models.IncidentClassificationReason - :ivar created_time_utc: The time the incident was created. - :vartype created_time_utc: ~datetime.datetime - :param description: The description of the incident. - :type description: str - :param first_activity_time_utc: The time of the first activity in the incident. - :type first_activity_time_utc: ~datetime.datetime - :ivar incident_url: The deep-link url to the incident in Azure portal. - :vartype incident_url: str - :ivar incident_number: A sequential number. - :vartype incident_number: int - :param labels: List of labels relevant to this incident. - :type labels: list[~security_insights.models.IncidentLabel] - :param last_activity_time_utc: The time of the last activity in the incident. - :type last_activity_time_utc: ~datetime.datetime - :ivar last_modified_time_utc: The last time the incident was updated. - :vartype last_modified_time_utc: ~datetime.datetime - :param owner: Describes a user that the incident is assigned to. - :type owner: ~security_insights.models.IncidentOwnerInfo - :ivar related_analytic_rule_ids: List of resource ids of Analytic rules related to the - incident. - :vartype related_analytic_rule_ids: list[str] - :param severity: The severity of the incident. Possible values include: "High", "Medium", - "Low", "Informational". - :type severity: str or ~security_insights.models.IncidentSeverity - :param status: The status of the incident. Possible values include: "New", "Active", "Closed". - :type status: str or ~security_insights.models.IncidentStatus - :param title: The title of the incident. - :type title: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'additional_data': {'readonly': True}, - 'created_time_utc': {'readonly': True}, - 'incident_url': {'readonly': True}, - 'incident_number': {'readonly': True}, - 'last_modified_time_utc': {'readonly': True}, - 'related_analytic_rule_ids': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'additional_data': {'key': 'properties.additionalData', 'type': 'IncidentAdditionalData'}, - 'classification': {'key': 'properties.classification', 'type': 'str'}, - 'classification_comment': {'key': 'properties.classificationComment', 'type': 'str'}, - 'classification_reason': {'key': 'properties.classificationReason', 'type': 'str'}, - 'created_time_utc': {'key': 'properties.createdTimeUtc', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'first_activity_time_utc': {'key': 'properties.firstActivityTimeUtc', 'type': 'iso-8601'}, - 'incident_url': {'key': 'properties.incidentUrl', 'type': 'str'}, - 'incident_number': {'key': 'properties.incidentNumber', 'type': 'int'}, - 'labels': {'key': 'properties.labels', 'type': '[IncidentLabel]'}, - 'last_activity_time_utc': {'key': 'properties.lastActivityTimeUtc', 'type': 'iso-8601'}, - 'last_modified_time_utc': {'key': 'properties.lastModifiedTimeUtc', 'type': 'iso-8601'}, - 'owner': {'key': 'properties.owner', 'type': 'IncidentOwnerInfo'}, - 'related_analytic_rule_ids': {'key': 'properties.relatedAnalyticRuleIds', 'type': '[str]'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'title': {'key': 'properties.title', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - classification: Optional[Union[str, "IncidentClassification"]] = None, - classification_comment: Optional[str] = None, - classification_reason: Optional[Union[str, "IncidentClassificationReason"]] = None, - description: Optional[str] = None, - first_activity_time_utc: Optional[datetime.datetime] = None, - labels: Optional[List["IncidentLabel"]] = None, - last_activity_time_utc: Optional[datetime.datetime] = None, - owner: Optional["IncidentOwnerInfo"] = None, - severity: Optional[Union[str, "IncidentSeverity"]] = None, - status: Optional[Union[str, "IncidentStatus"]] = None, - title: Optional[str] = None, - **kwargs - ): - super(Incident, self).__init__(etag=etag, **kwargs) - self.additional_data = None - self.classification = classification - self.classification_comment = classification_comment - self.classification_reason = classification_reason - self.created_time_utc = None - self.description = description - self.first_activity_time_utc = first_activity_time_utc - self.incident_url = None - self.incident_number = None - self.labels = labels - self.last_activity_time_utc = last_activity_time_utc - self.last_modified_time_utc = None - self.owner = owner - self.related_analytic_rule_ids = None - self.severity = severity - self.status = status - self.title = title - - -class IncidentAdditionalData(msrest.serialization.Model): - """Incident additional data property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar alerts_count: The number of alerts in the incident. - :vartype alerts_count: int - :ivar bookmarks_count: The number of bookmarks in the incident. - :vartype bookmarks_count: int - :ivar comments_count: The number of comments in the incident. - :vartype comments_count: int - :ivar alert_product_names: List of product names of alerts in the incident. - :vartype alert_product_names: list[str] - :ivar tactics: The tactics associated with incident. - :vartype tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'alerts_count': {'readonly': True}, - 'bookmarks_count': {'readonly': True}, - 'comments_count': {'readonly': True}, - 'alert_product_names': {'readonly': True}, - 'tactics': {'readonly': True}, - } - - _attribute_map = { - 'alerts_count': {'key': 'alertsCount', 'type': 'int'}, - 'bookmarks_count': {'key': 'bookmarksCount', 'type': 'int'}, - 'comments_count': {'key': 'commentsCount', 'type': 'int'}, - 'alert_product_names': {'key': 'alertProductNames', 'type': '[str]'}, - 'tactics': {'key': 'tactics', 'type': '[str]'}, - } - - def __init__( - self, - **kwargs - ): - super(IncidentAdditionalData, self).__init__(**kwargs) - self.alerts_count = None - self.bookmarks_count = None - self.comments_count = None - self.alert_product_names = None - self.tactics = None - - -class IncidentComment(Resource): - """Represents an incident comment. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar created_time_utc: The time the comment was created. - :vartype created_time_utc: ~datetime.datetime - :param message: The comment message. - :type message: str - :ivar author: Describes the client that created the comment. - :vartype author: ~security_insights.models.ClientInfo - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'created_time_utc': {'readonly': True}, - 'author': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'created_time_utc': {'key': 'properties.createdTimeUtc', 'type': 'iso-8601'}, - 'message': {'key': 'properties.message', 'type': 'str'}, - 'author': {'key': 'properties.author', 'type': 'ClientInfo'}, - } - - def __init__( - self, - *, - message: Optional[str] = None, - **kwargs - ): - super(IncidentComment, self).__init__(**kwargs) - self.created_time_utc = None - self.message = message - self.author = None - - -class IncidentCommentList(msrest.serialization.Model): - """List of incident comments. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of comments. - :vartype next_link: str - :param value: Required. Array of comments. - :type value: list[~security_insights.models.IncidentComment] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[IncidentComment]'}, - } - - def __init__( - self, - *, - value: List["IncidentComment"], - **kwargs - ): - super(IncidentCommentList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class IncidentInfo(msrest.serialization.Model): - """Describes related incident information for the bookmark. - - All required parameters must be populated in order to send to Azure. - - :param incident_id: Required. Incident Id. - :type incident_id: str - :param severity: Required. The severity of the incident. Possible values include: "Critical", - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.CaseSeverity - :param title: Required. The title of the incident. - :type title: str - :param relation_name: Required. Relation Name. - :type relation_name: str - """ - - _validation = { - 'incident_id': {'required': True}, - 'severity': {'required': True}, - 'title': {'required': True}, - 'relation_name': {'required': True}, - } - - _attribute_map = { - 'incident_id': {'key': 'incidentId', 'type': 'str'}, - 'severity': {'key': 'severity', 'type': 'str'}, - 'title': {'key': 'title', 'type': 'str'}, - 'relation_name': {'key': 'relationName', 'type': 'str'}, - } - - def __init__( - self, - *, - incident_id: str, - severity: Union[str, "CaseSeverity"], - title: str, - relation_name: str, - **kwargs - ): - super(IncidentInfo, self).__init__(**kwargs) - self.incident_id = incident_id - self.severity = severity - self.title = title - self.relation_name = relation_name - - -class IncidentLabel(msrest.serialization.Model): - """Represents an incident label. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :param label_name: Required. The name of the label. - :type label_name: str - :ivar label_type: The type of the label. Possible values include: "User", "System". - :vartype label_type: str or ~security_insights.models.IncidentLabelType - """ - - _validation = { - 'label_name': {'required': True}, - 'label_type': {'readonly': True}, - } - - _attribute_map = { - 'label_name': {'key': 'labelName', 'type': 'str'}, - 'label_type': {'key': 'labelType', 'type': 'str'}, - } - - def __init__( - self, - *, - label_name: str, - **kwargs - ): - super(IncidentLabel, self).__init__(**kwargs) - self.label_name = label_name - self.label_type = None - - -class IncidentList(msrest.serialization.Model): - """List all the incidents. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of incidents. - :vartype next_link: str - :param value: Required. Array of incidents. - :type value: list[~security_insights.models.Incident] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[Incident]'}, - } - - def __init__( - self, - *, - value: List["Incident"], - **kwargs - ): - super(IncidentList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class IncidentOwnerInfo(msrest.serialization.Model): - """Information on the user an incident is assigned to. - - :param email: The email of the user the incident is assigned to. - :type email: str - :param assigned_to: The name of the user the incident is assigned to. - :type assigned_to: str - :param object_id: The object id of the user the incident is assigned to. - :type object_id: str - :param user_principal_name: The user principal name of the user the incident is assigned to. - :type user_principal_name: str - """ - - _attribute_map = { - 'email': {'key': 'email', 'type': 'str'}, - 'assigned_to': {'key': 'assignedTo', 'type': 'str'}, - 'object_id': {'key': 'objectId', 'type': 'str'}, - 'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'}, - } - - def __init__( - self, - *, - email: Optional[str] = None, - assigned_to: Optional[str] = None, - object_id: Optional[str] = None, - user_principal_name: Optional[str] = None, - **kwargs - ): - super(IncidentOwnerInfo, self).__init__(**kwargs) - self.email = email - self.assigned_to = assigned_to - self.object_id = object_id - self.user_principal_name = user_principal_name - - -class MCASDataConnector(DataConnector): - """Represents MCAS (Microsoft Cloud App Security) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state_data_types_alerts_state: Describe whether this data type connection is enabled or - not. Possible values include: "Enabled", "Disabled". - :type state_data_types_alerts_state: str or ~security_insights.models.DataTypeState - :param state_data_types_discovery_logs_state: Describe whether this data type connection is - enabled or not. Possible values include: "Enabled", "Disabled". - :type state_data_types_discovery_logs_state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state_data_types_alerts_state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - 'state_data_types_discovery_logs_state': {'key': 'dataTypes.discoveryLogs.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - tenant_id: Optional[str] = None, - state_data_types_alerts_state: Optional[Union[str, "DataTypeState"]] = None, - state_data_types_discovery_logs_state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(MCASDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'MicrosoftCloudAppSecurity' # type: str - self.tenant_id = tenant_id - self.state_data_types_alerts_state = state_data_types_alerts_state - self.state_data_types_discovery_logs_state = state_data_types_discovery_logs_state - - -class MCASDataConnectorDataTypes(AlertsDataTypeOfDataConnector): - """The available data types for MCAS (Microsoft Cloud App Security) data connector. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - :param state_discovery_logs_state: Describe whether this data type connection is enabled or - not. Possible values include: "Enabled", "Disabled". - :type state_discovery_logs_state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'alerts.state', 'type': 'str'}, - 'state_discovery_logs_state': {'key': 'discoveryLogs.state', 'type': 'str'}, - } - - def __init__( - self, - *, - state: Optional[Union[str, "DataTypeState"]] = None, - state_discovery_logs_state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(MCASDataConnectorDataTypes, self).__init__(state=state, **kwargs) - self.state_discovery_logs_state = state_discovery_logs_state - - -class MDATPDataConnector(DataConnector): - """Represents MDATP (Microsoft Defender Advanced Threat Protection) data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.alerts.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - tenant_id: Optional[str] = None, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(MDATPDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'MicrosoftDefenderAdvancedThreatProtection' # type: str - self.tenant_id = tenant_id - self.state = state - - -class MicrosoftSecurityIncidentCreationAlertRule(AlertRule): - """Represents MicrosoftSecurityIncidentCreation rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: The alerts' productName on which the cases will be generated. Possible - values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure Advanced Threat - Protection", "Azure Active Directory Identity Protection", "Azure Security Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert has been modified. - :vartype last_modified_utc: ~datetime.datetime - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'last_modified_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'display_names_filter': {'key': 'properties.displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'properties.displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'properties.productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'properties.severitiesFilter', 'type': '[str]'}, - 'alert_rule_template_name': {'key': 'properties.alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'properties.lastModifiedUtc', 'type': 'iso-8601'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - display_names_filter: Optional[List[str]] = None, - display_names_exclude_filter: Optional[List[str]] = None, - product_filter: Optional[Union[str, "MicrosoftSecurityProductName"]] = None, - severities_filter: Optional[List[Union[str, "AlertSeverity"]]] = None, - alert_rule_template_name: Optional[str] = None, - description: Optional[str] = None, - display_name: Optional[str] = None, - enabled: Optional[bool] = None, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRule, self).__init__(etag=etag, **kwargs) - self.kind = 'MicrosoftSecurityIncidentCreation' # type: str - self.display_names_filter = display_names_filter - self.display_names_exclude_filter = display_names_exclude_filter - self.product_filter = product_filter - self.severities_filter = severities_filter - self.alert_rule_template_name = alert_rule_template_name - self.description = description - self.display_name = display_name - self.enabled = enabled - self.last_modified_utc = None - - -class MicrosoftSecurityIncidentCreationAlertRuleCommonProperties(msrest.serialization.Model): - """MicrosoftSecurityIncidentCreation rule common property bag. - - All required parameters must be populated in order to send to Azure. - - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: Required. The alerts' productName on which the cases will be generated. - Possible values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure - Advanced Threat Protection", "Azure Active Directory Identity Protection", "Azure Security - Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - """ - - _validation = { - 'product_filter': {'required': True}, - } - - _attribute_map = { - 'display_names_filter': {'key': 'displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'severitiesFilter', 'type': '[str]'}, - } - - def __init__( - self, - *, - product_filter: Union[str, "MicrosoftSecurityProductName"], - display_names_filter: Optional[List[str]] = None, - display_names_exclude_filter: Optional[List[str]] = None, - severities_filter: Optional[List[Union[str, "AlertSeverity"]]] = None, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRuleCommonProperties, self).__init__(**kwargs) - self.display_names_filter = display_names_filter - self.display_names_exclude_filter = display_names_exclude_filter - self.product_filter = product_filter - self.severities_filter = severities_filter - - -class MicrosoftSecurityIncidentCreationAlertRuleProperties(MicrosoftSecurityIncidentCreationAlertRuleCommonProperties): - """MicrosoftSecurityIncidentCreation rule property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: Required. The alerts' productName on which the cases will be generated. - Possible values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure - Advanced Threat Protection", "Azure Active Directory Identity Protection", "Azure Security - Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: Required. The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Required. Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert has been modified. - :vartype last_modified_utc: ~datetime.datetime - """ - - _validation = { - 'product_filter': {'required': True}, - 'display_name': {'required': True}, - 'enabled': {'required': True}, - 'last_modified_utc': {'readonly': True}, - } - - _attribute_map = { - 'display_names_filter': {'key': 'displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'severitiesFilter', 'type': '[str]'}, - 'alert_rule_template_name': {'key': 'alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, - 'display_name': {'key': 'displayName', 'type': 'str'}, - 'enabled': {'key': 'enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'lastModifiedUtc', 'type': 'iso-8601'}, - } - - def __init__( - self, - *, - product_filter: Union[str, "MicrosoftSecurityProductName"], - display_name: str, - enabled: bool, - display_names_filter: Optional[List[str]] = None, - display_names_exclude_filter: Optional[List[str]] = None, - severities_filter: Optional[List[Union[str, "AlertSeverity"]]] = None, - alert_rule_template_name: Optional[str] = None, - description: Optional[str] = None, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRuleProperties, self).__init__(display_names_filter=display_names_filter, display_names_exclude_filter=display_names_exclude_filter, product_filter=product_filter, severities_filter=severities_filter, **kwargs) - self.alert_rule_template_name = alert_rule_template_name - self.description = description - self.display_name = display_name - self.enabled = enabled - self.last_modified_utc = None - - -class MicrosoftSecurityIncidentCreationAlertRuleTemplate(AlertRuleTemplate): - """Represents MicrosoftSecurityIncidentCreation rule template. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rules_created_by_template_count: the number of alert rules that were created by - this template. - :type alert_rules_created_by_template_count: int - :ivar created_date_utc: The time that this alert rule template has been added. - :vartype created_date_utc: ~datetime.datetime - :param description: The description of the alert rule template. - :type description: str - :param display_name: The display name for alert rule template. - :type display_name: str - :param required_data_connectors: The required data connectors for this template. - :type required_data_connectors: list[~security_insights.models.AlertRuleTemplateDataSource] - :param status: The alert rule template status. Possible values include: "Installed", - "Available", "NotAvailable". - :type status: str or ~security_insights.models.TemplateStatus - :param display_names_filter: the alerts' displayNames on which the cases will be generated. - :type display_names_filter: list[str] - :param display_names_exclude_filter: the alerts' displayNames on which the cases will not be - generated. - :type display_names_exclude_filter: list[str] - :param product_filter: The alerts' productName on which the cases will be generated. Possible - values include: "Microsoft Cloud App Security", "Azure Security Center", "Azure Advanced Threat - Protection", "Azure Active Directory Identity Protection", "Azure Security Center for IoT". - :type product_filter: str or ~security_insights.models.MicrosoftSecurityProductName - :param severities_filter: the alerts' severities on which the cases will be generated. - :type severities_filter: list[str or ~security_insights.models.AlertSeverity] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'created_date_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rules_created_by_template_count': {'key': 'properties.alertRulesCreatedByTemplateCount', 'type': 'int'}, - 'created_date_utc': {'key': 'properties.createdDateUTC', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'required_data_connectors': {'key': 'properties.requiredDataConnectors', 'type': '[AlertRuleTemplateDataSource]'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'display_names_filter': {'key': 'properties.displayNamesFilter', 'type': '[str]'}, - 'display_names_exclude_filter': {'key': 'properties.displayNamesExcludeFilter', 'type': '[str]'}, - 'product_filter': {'key': 'properties.productFilter', 'type': 'str'}, - 'severities_filter': {'key': 'properties.severitiesFilter', 'type': '[str]'}, - } - - def __init__( - self, - *, - alert_rules_created_by_template_count: Optional[int] = None, - description: Optional[str] = None, - display_name: Optional[str] = None, - required_data_connectors: Optional[List["AlertRuleTemplateDataSource"]] = None, - status: Optional[Union[str, "TemplateStatus"]] = None, - display_names_filter: Optional[List[str]] = None, - display_names_exclude_filter: Optional[List[str]] = None, - product_filter: Optional[Union[str, "MicrosoftSecurityProductName"]] = None, - severities_filter: Optional[List[Union[str, "AlertSeverity"]]] = None, - **kwargs - ): - super(MicrosoftSecurityIncidentCreationAlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'MicrosoftSecurityIncidentCreation' # type: str - self.alert_rules_created_by_template_count = alert_rules_created_by_template_count - self.created_date_utc = None - self.description = description - self.display_name = display_name - self.required_data_connectors = required_data_connectors - self.status = status - self.display_names_filter = display_names_filter - self.display_names_exclude_filter = display_names_exclude_filter - self.product_filter = product_filter - self.severities_filter = severities_filter - - -class OfficeConsent(Resource): - """Consent for Office365 tenant that already made. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param tenant_id: The tenantId of the Office365 with the consent. - :type tenant_id: str - :ivar tenant_name: The tenant name of the Office365 with the consent. - :vartype tenant_name: str - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'tenant_name': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'tenant_name': {'key': 'properties.tenantName', 'type': 'str'}, - } - - def __init__( - self, - *, - tenant_id: Optional[str] = None, - **kwargs - ): - super(OfficeConsent, self).__init__(**kwargs) - self.tenant_id = tenant_id - self.tenant_name = None - - -class OfficeConsentList(msrest.serialization.Model): - """List of all the office365 consents. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar next_link: URL to fetch the next set of office consents. - :vartype next_link: str - :param value: Required. Array of the consents. - :type value: list[~security_insights.models.OfficeConsent] - """ - - _validation = { - 'next_link': {'readonly': True}, - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[OfficeConsent]'}, - } - - def __init__( - self, - *, - value: List["OfficeConsent"], - **kwargs - ): - super(OfficeConsentList, self).__init__(**kwargs) - self.next_link = None - self.value = value - - -class OfficeDataConnector(DataConnector): - """Represents office data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state_data_types_share_point_state: Describe whether this data type connection is - enabled or not. Possible values include: "Enabled", "Disabled". - :type state_data_types_share_point_state: str or ~security_insights.models.DataTypeState - :param state_data_types_exchange_state: Describe whether this data type connection is enabled - or not. Possible values include: "Enabled", "Disabled". - :type state_data_types_exchange_state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state_data_types_share_point_state': {'key': 'dataTypes.sharePoint.state', 'type': 'str'}, - 'state_data_types_exchange_state': {'key': 'dataTypes.exchange.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - tenant_id: Optional[str] = None, - state_data_types_share_point_state: Optional[Union[str, "DataTypeState"]] = None, - state_data_types_exchange_state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(OfficeDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'Office365' # type: str - self.tenant_id = tenant_id - self.state_data_types_share_point_state = state_data_types_share_point_state - self.state_data_types_exchange_state = state_data_types_exchange_state - - -class OfficeDataConnectorDataTypesExchange(DataConnectorDataTypeCommon): - """Exchange data type connection. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - *, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(OfficeDataConnectorDataTypesExchange, self).__init__(state=state, **kwargs) - - -class OfficeDataConnectorDataTypesSharePoint(DataConnectorDataTypeCommon): - """SharePoint data type connection. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - *, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(OfficeDataConnectorDataTypesSharePoint, self).__init__(state=state, **kwargs) - - -class Operation(msrest.serialization.Model): - """Operation provided by provider. - - :param display: Properties of the operation. - :type display: ~security_insights.models.OperationDisplay - :param name: Name of the operation. - :type name: str - """ - - _attribute_map = { - 'display': {'key': 'display', 'type': 'OperationDisplay'}, - 'name': {'key': 'name', 'type': 'str'}, - } - - def __init__( - self, - *, - display: Optional["OperationDisplay"] = None, - name: Optional[str] = None, - **kwargs - ): - super(Operation, self).__init__(**kwargs) - self.display = display - self.name = name - - -class OperationDisplay(msrest.serialization.Model): - """Properties of the operation. - - :param description: Description of the operation. - :type description: str - :param operation: Operation name. - :type operation: str - :param provider: Provider name. - :type provider: str - :param resource: Resource name. - :type resource: str - """ - - _attribute_map = { - 'description': {'key': 'description', 'type': 'str'}, - 'operation': {'key': 'operation', 'type': 'str'}, - 'provider': {'key': 'provider', 'type': 'str'}, - 'resource': {'key': 'resource', 'type': 'str'}, - } - - def __init__( - self, - *, - description: Optional[str] = None, - operation: Optional[str] = None, - provider: Optional[str] = None, - resource: Optional[str] = None, - **kwargs - ): - super(OperationDisplay, self).__init__(**kwargs) - self.description = description - self.operation = operation - self.provider = provider - self.resource = resource - - -class OperationsList(msrest.serialization.Model): - """Lists the operations available in the SecurityInsights RP. - - All required parameters must be populated in order to send to Azure. - - :param next_link: URL to fetch the next set of operations. - :type next_link: str - :param value: Required. Array of operations. - :type value: list[~security_insights.models.Operation] - """ - - _validation = { - 'value': {'required': True}, - } - - _attribute_map = { - 'next_link': {'key': 'nextLink', 'type': 'str'}, - 'value': {'key': 'value', 'type': '[Operation]'}, - } - - def __init__( - self, - *, - value: List["Operation"], - next_link: Optional[str] = None, - **kwargs - ): - super(OperationsList, self).__init__(**kwargs) - self.next_link = next_link - self.value = value - - -class ScheduledAlertRule(AlertRule): - """Represents scheduled alert rule. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert rule has been modified. - :vartype last_modified_utc: ~datetime.datetime - :param suppression_duration: The suppression (in ISO 8601 duration format) to wait since last - time this alert rule been triggered. - :type suppression_duration: ~datetime.timedelta - :param suppression_enabled: Determines whether the suppression for this alert rule is enabled - or disabled. - :type suppression_enabled: bool - :param tactics: The tactics of the alert rule. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'last_modified_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'query': {'key': 'properties.query', 'type': 'str'}, - 'query_frequency': {'key': 'properties.queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'properties.queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'trigger_operator': {'key': 'properties.triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'properties.triggerThreshold', 'type': 'int'}, - 'alert_rule_template_name': {'key': 'properties.alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'enabled': {'key': 'properties.enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'properties.lastModifiedUtc', 'type': 'iso-8601'}, - 'suppression_duration': {'key': 'properties.suppressionDuration', 'type': 'duration'}, - 'suppression_enabled': {'key': 'properties.suppressionEnabled', 'type': 'bool'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - query: Optional[str] = None, - query_frequency: Optional[datetime.timedelta] = None, - query_period: Optional[datetime.timedelta] = None, - severity: Optional[Union[str, "AlertSeverity"]] = None, - trigger_operator: Optional[Union[str, "TriggerOperator"]] = None, - trigger_threshold: Optional[int] = None, - alert_rule_template_name: Optional[str] = None, - description: Optional[str] = None, - display_name: Optional[str] = None, - enabled: Optional[bool] = None, - suppression_duration: Optional[datetime.timedelta] = None, - suppression_enabled: Optional[bool] = None, - tactics: Optional[List[Union[str, "AttackTactic"]]] = None, - **kwargs - ): - super(ScheduledAlertRule, self).__init__(etag=etag, **kwargs) - self.kind = 'Scheduled' # type: str - self.query = query - self.query_frequency = query_frequency - self.query_period = query_period - self.severity = severity - self.trigger_operator = trigger_operator - self.trigger_threshold = trigger_threshold - self.alert_rule_template_name = alert_rule_template_name - self.description = description - self.display_name = display_name - self.enabled = enabled - self.last_modified_utc = None - self.suppression_duration = suppression_duration - self.suppression_enabled = suppression_enabled - self.tactics = tactics - - -class ScheduledAlertRuleCommonProperties(msrest.serialization.Model): - """Schedule alert rule template property bag. - - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - """ - - _attribute_map = { - 'query': {'key': 'query', 'type': 'str'}, - 'query_frequency': {'key': 'queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'severity', 'type': 'str'}, - 'trigger_operator': {'key': 'triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'triggerThreshold', 'type': 'int'}, - } - - def __init__( - self, - *, - query: Optional[str] = None, - query_frequency: Optional[datetime.timedelta] = None, - query_period: Optional[datetime.timedelta] = None, - severity: Optional[Union[str, "AlertSeverity"]] = None, - trigger_operator: Optional[Union[str, "TriggerOperator"]] = None, - trigger_threshold: Optional[int] = None, - **kwargs - ): - super(ScheduledAlertRuleCommonProperties, self).__init__(**kwargs) - self.query = query - self.query_frequency = query_frequency - self.query_period = query_period - self.severity = severity - self.trigger_operator = trigger_operator - self.trigger_threshold = trigger_threshold - - -class ScheduledAlertRuleProperties(ScheduledAlertRuleCommonProperties): - """Scheduled alert rule base property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - :param alert_rule_template_name: The Name of the alert rule template used to create this rule. - :type alert_rule_template_name: str - :param description: The description of the alert rule. - :type description: str - :param display_name: Required. The display name for alerts created by this alert rule. - :type display_name: str - :param enabled: Required. Determines whether this alert rule is enabled or disabled. - :type enabled: bool - :ivar last_modified_utc: The last time that this alert rule has been modified. - :vartype last_modified_utc: ~datetime.datetime - :param suppression_duration: Required. The suppression (in ISO 8601 duration format) to wait - since last time this alert rule been triggered. - :type suppression_duration: ~datetime.timedelta - :param suppression_enabled: Required. Determines whether the suppression for this alert rule is - enabled or disabled. - :type suppression_enabled: bool - :param tactics: The tactics of the alert rule. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'display_name': {'required': True}, - 'enabled': {'required': True}, - 'last_modified_utc': {'readonly': True}, - 'suppression_duration': {'required': True}, - 'suppression_enabled': {'required': True}, - } - - _attribute_map = { - 'query': {'key': 'query', 'type': 'str'}, - 'query_frequency': {'key': 'queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'severity', 'type': 'str'}, - 'trigger_operator': {'key': 'triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'triggerThreshold', 'type': 'int'}, - 'alert_rule_template_name': {'key': 'alertRuleTemplateName', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, - 'display_name': {'key': 'displayName', 'type': 'str'}, - 'enabled': {'key': 'enabled', 'type': 'bool'}, - 'last_modified_utc': {'key': 'lastModifiedUtc', 'type': 'iso-8601'}, - 'suppression_duration': {'key': 'suppressionDuration', 'type': 'duration'}, - 'suppression_enabled': {'key': 'suppressionEnabled', 'type': 'bool'}, - 'tactics': {'key': 'tactics', 'type': '[str]'}, - } - - def __init__( - self, - *, - display_name: str, - enabled: bool, - suppression_duration: datetime.timedelta, - suppression_enabled: bool, - query: Optional[str] = None, - query_frequency: Optional[datetime.timedelta] = None, - query_period: Optional[datetime.timedelta] = None, - severity: Optional[Union[str, "AlertSeverity"]] = None, - trigger_operator: Optional[Union[str, "TriggerOperator"]] = None, - trigger_threshold: Optional[int] = None, - alert_rule_template_name: Optional[str] = None, - description: Optional[str] = None, - tactics: Optional[List[Union[str, "AttackTactic"]]] = None, - **kwargs - ): - super(ScheduledAlertRuleProperties, self).__init__(query=query, query_frequency=query_frequency, query_period=query_period, severity=severity, trigger_operator=trigger_operator, trigger_threshold=trigger_threshold, **kwargs) - self.alert_rule_template_name = alert_rule_template_name - self.description = description - self.display_name = display_name - self.enabled = enabled - self.last_modified_utc = None - self.suppression_duration = suppression_duration - self.suppression_enabled = suppression_enabled - self.tactics = tactics - - -class ScheduledAlertRuleTemplate(AlertRuleTemplate): - """Represents scheduled alert rule template. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param kind: Required. The alert rule kind.Constant filled by server. Possible values include: - "Scheduled", "MicrosoftSecurityIncidentCreation", "Fusion". - :type kind: str or ~security_insights.models.AlertRuleKind - :param alert_rules_created_by_template_count: the number of alert rules that were created by - this template. - :type alert_rules_created_by_template_count: int - :ivar created_date_utc: The time that this alert rule template has been added. - :vartype created_date_utc: ~datetime.datetime - :param description: The description of the alert rule template. - :type description: str - :param display_name: The display name for alert rule template. - :type display_name: str - :param required_data_connectors: The required data connectors for this template. - :type required_data_connectors: list[~security_insights.models.AlertRuleTemplateDataSource] - :param status: The alert rule template status. Possible values include: "Installed", - "Available", "NotAvailable". - :type status: str or ~security_insights.models.TemplateStatus - :param query: The query that creates alerts for this rule. - :type query: str - :param query_frequency: The frequency (in ISO 8601 duration format) for this alert rule to run. - :type query_frequency: ~datetime.timedelta - :param query_period: The period (in ISO 8601 duration format) that this alert rule looks at. - :type query_period: ~datetime.timedelta - :param severity: The severity for alerts created by this alert rule. Possible values include: - "High", "Medium", "Low", "Informational". - :type severity: str or ~security_insights.models.AlertSeverity - :param trigger_operator: The operation against the threshold that triggers alert rule. Possible - values include: "GreaterThan", "LessThan", "Equal", "NotEqual". - :type trigger_operator: str or ~security_insights.models.TriggerOperator - :param trigger_threshold: The threshold triggers this alert rule. - :type trigger_threshold: int - :param tactics: The tactics of the alert rule template. - :type tactics: list[str or ~security_insights.models.AttackTactic] - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'created_date_utc': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'alert_rules_created_by_template_count': {'key': 'properties.alertRulesCreatedByTemplateCount', 'type': 'int'}, - 'created_date_utc': {'key': 'properties.createdDateUTC', 'type': 'iso-8601'}, - 'description': {'key': 'properties.description', 'type': 'str'}, - 'display_name': {'key': 'properties.displayName', 'type': 'str'}, - 'required_data_connectors': {'key': 'properties.requiredDataConnectors', 'type': '[AlertRuleTemplateDataSource]'}, - 'status': {'key': 'properties.status', 'type': 'str'}, - 'query': {'key': 'properties.query', 'type': 'str'}, - 'query_frequency': {'key': 'properties.queryFrequency', 'type': 'duration'}, - 'query_period': {'key': 'properties.queryPeriod', 'type': 'duration'}, - 'severity': {'key': 'properties.severity', 'type': 'str'}, - 'trigger_operator': {'key': 'properties.triggerOperator', 'type': 'str'}, - 'trigger_threshold': {'key': 'properties.triggerThreshold', 'type': 'int'}, - 'tactics': {'key': 'properties.tactics', 'type': '[str]'}, - } - - def __init__( - self, - *, - alert_rules_created_by_template_count: Optional[int] = None, - description: Optional[str] = None, - display_name: Optional[str] = None, - required_data_connectors: Optional[List["AlertRuleTemplateDataSource"]] = None, - status: Optional[Union[str, "TemplateStatus"]] = None, - query: Optional[str] = None, - query_frequency: Optional[datetime.timedelta] = None, - query_period: Optional[datetime.timedelta] = None, - severity: Optional[Union[str, "AlertSeverity"]] = None, - trigger_operator: Optional[Union[str, "TriggerOperator"]] = None, - trigger_threshold: Optional[int] = None, - tactics: Optional[List[Union[str, "AttackTactic"]]] = None, - **kwargs - ): - super(ScheduledAlertRuleTemplate, self).__init__(**kwargs) - self.kind = 'Scheduled' # type: str - self.alert_rules_created_by_template_count = alert_rules_created_by_template_count - self.created_date_utc = None - self.description = description - self.display_name = display_name - self.required_data_connectors = required_data_connectors - self.status = status - self.query = query - self.query_frequency = query_frequency - self.query_period = query_period - self.severity = severity - self.trigger_operator = trigger_operator - self.trigger_threshold = trigger_threshold - self.tactics = tactics - - -class Settings(ResourceWithEtag): - """The Settings. - - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: ToggleSettings, UebaSettings. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "UebaSettings", "ToggleSettings". - :type kind: str or ~security_insights.models.SettingKind - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - } - - _subtype_map = { - 'kind': {'ToggleSettings': 'ToggleSettings', 'UebaSettings': 'UebaSettings'} - } - - def __init__( - self, - *, - etag: Optional[str] = None, - **kwargs - ): - super(Settings, self).__init__(etag=etag, **kwargs) - self.kind = 'Settings' # type: str - - -class ThreatIntelligence(msrest.serialization.Model): - """ThreatIntelligence property bag. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar confidence: Confidence (must be between 0 and 1). - :vartype confidence: float - :ivar provider_name: Name of the provider from whom this Threat Intelligence information was - received. - :vartype provider_name: str - :ivar report_link: Report link. - :vartype report_link: str - :ivar threat_description: Threat description (free text). - :vartype threat_description: str - :ivar threat_name: Threat name (e.g. "Jedobot malware"). - :vartype threat_name: str - :ivar threat_type: Threat type (e.g. "Botnet"). - :vartype threat_type: str - """ - - _validation = { - 'confidence': {'readonly': True}, - 'provider_name': {'readonly': True}, - 'report_link': {'readonly': True}, - 'threat_description': {'readonly': True}, - 'threat_name': {'readonly': True}, - 'threat_type': {'readonly': True}, - } - - _attribute_map = { - 'confidence': {'key': 'confidence', 'type': 'float'}, - 'provider_name': {'key': 'providerName', 'type': 'str'}, - 'report_link': {'key': 'reportLink', 'type': 'str'}, - 'threat_description': {'key': 'threatDescription', 'type': 'str'}, - 'threat_name': {'key': 'threatName', 'type': 'str'}, - 'threat_type': {'key': 'threatType', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - super(ThreatIntelligence, self).__init__(**kwargs) - self.confidence = None - self.provider_name = None - self.report_link = None - self.threat_description = None - self.threat_name = None - self.threat_type = None - - -class TIDataConnector(DataConnector): - """Represents threat intelligence data connector. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "AzureActiveDirectory", "AzureSecurityCenter", "MicrosoftCloudAppSecurity", - "ThreatIntelligence", "Office365", "AmazonWebServicesCloudTrail", - "AzureAdvancedThreatProtection", "MicrosoftDefenderAdvancedThreatProtection". - :type kind: str or ~security_insights.models.DataConnectorKind - :param tenant_id: The tenant id to connect to, and get the data from. - :type tenant_id: str - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'tenant_id': {'key': 'properties.tenantId', 'type': 'str'}, - 'state': {'key': 'dataTypes.indicators.state', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - tenant_id: Optional[str] = None, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(TIDataConnector, self).__init__(etag=etag, **kwargs) - self.kind = 'ThreatIntelligence' # type: str - self.tenant_id = tenant_id - self.state = state - - -class TIDataConnectorDataTypesIndicators(DataConnectorDataTypeCommon): - """Data type for indicators connection. - - :param state: Describe whether this data type connection is enabled or not. Possible values - include: "Enabled", "Disabled". - :type state: str or ~security_insights.models.DataTypeState - """ - - _attribute_map = { - 'state': {'key': 'state', 'type': 'str'}, - } - - def __init__( - self, - *, - state: Optional[Union[str, "DataTypeState"]] = None, - **kwargs - ): - super(TIDataConnectorDataTypesIndicators, self).__init__(state=state, **kwargs) - - -class ToggleSettings(Settings): - """Settings with single toggle. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "UebaSettings", "ToggleSettings". - :type kind: str or ~security_insights.models.SettingKind - :param is_enabled: Determines whether the setting is enable or disabled. - :type is_enabled: bool - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'is_enabled': {'key': 'properties.isEnabled', 'type': 'bool'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - is_enabled: Optional[bool] = None, - **kwargs - ): - super(ToggleSettings, self).__init__(etag=etag, **kwargs) - self.kind = 'ToggleSettings' # type: str - self.is_enabled = is_enabled - - -class UebaSettings(Settings): - """Represents settings for User and Entity Behavior Analytics enablement. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to Azure. - - :ivar id: Azure resource Id. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :param etag: Etag of the azure resource. - :type etag: str - :param kind: Required. The data connector kind.Constant filled by server. Possible values - include: "UebaSettings", "ToggleSettings". - :type kind: str or ~security_insights.models.SettingKind - :ivar atp_license_status: Determines whether the tenant has ATP (Advanced Threat Protection) - license. Possible values include: "Enabled", "Disabled". - :vartype atp_license_status: str or ~security_insights.models.LicenseStatus - :param is_enabled: Determines whether User and Entity Behavior Analytics is enabled for this - workspace. - :type is_enabled: bool - :ivar status_in_mcas: Determines whether User and Entity Behavior Analytics is enabled from - MCAS (Microsoft Cloud App Security). Possible values include: "Enabled", "Disabled". - :vartype status_in_mcas: str or ~security_insights.models.StatusInMCAS - """ - - _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'kind': {'required': True}, - 'atp_license_status': {'readonly': True}, - 'status_in_mcas': {'readonly': True}, - } - - _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'kind': {'key': 'kind', 'type': 'str'}, - 'atp_license_status': {'key': 'properties.atpLicenseStatus', 'type': 'str'}, - 'is_enabled': {'key': 'properties.isEnabled', 'type': 'bool'}, - 'status_in_mcas': {'key': 'properties.statusInMcas', 'type': 'str'}, - } - - def __init__( - self, - *, - etag: Optional[str] = None, - is_enabled: Optional[bool] = None, - **kwargs - ): - super(UebaSettings, self).__init__(etag=etag, **kwargs) - self.kind = 'UebaSettings' # type: str - self.atp_license_status = None - self.is_enabled = is_enabled - self.status_in_mcas = None diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_security_insights_enums.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_security_insights_enums.py deleted file mode 100644 index ff1e2d1db57..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/models/_security_insights_enums.py +++ /dev/null @@ -1,182 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from enum import Enum, EnumMeta -from six import with_metaclass - -class _CaseInsensitiveEnumMeta(EnumMeta): - def __getitem__(self, name): - return super().__getitem__(name.upper()) - - def __getattr__(cls, name): - """Return the enum member matching `name` - We use __getattr__ instead of descriptors or inserting into the enum - class' __dict__ in order to support `name` and `value` being both - properties for enum members (which live in the class' __dict__) and - enum members themselves. - """ - try: - return cls._member_map_[name.upper()] - except KeyError: - raise AttributeError(name) - - -class AlertRuleKind(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The kind of the alert rule - """ - - SCHEDULED = "Scheduled" - MICROSOFT_SECURITY_INCIDENT_CREATION = "MicrosoftSecurityIncidentCreation" - FUSION = "Fusion" - -class AlertSeverity(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The severity of the alert - """ - - HIGH = "High" #: High severity. - MEDIUM = "Medium" #: Medium severity. - LOW = "Low" #: Low severity. - INFORMATIONAL = "Informational" #: Informational severity. - -class AttackTactic(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The severity for alerts created by this alert rule. - """ - - INITIAL_ACCESS = "InitialAccess" - EXECUTION = "Execution" - PERSISTENCE = "Persistence" - PRIVILEGE_ESCALATION = "PrivilegeEscalation" - DEFENSE_EVASION = "DefenseEvasion" - CREDENTIAL_ACCESS = "CredentialAccess" - DISCOVERY = "Discovery" - LATERAL_MOVEMENT = "LateralMovement" - COLLECTION = "Collection" - EXFILTRATION = "Exfiltration" - COMMAND_AND_CONTROL = "CommandAndControl" - IMPACT = "Impact" - -class CaseSeverity(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The severity of the incident - """ - - CRITICAL = "Critical" #: Critical severity. - HIGH = "High" #: High severity. - MEDIUM = "Medium" #: Medium severity. - LOW = "Low" #: Low severity. - INFORMATIONAL = "Informational" #: Informational severity. - -class DataConnectorKind(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The kind of the data connector - """ - - AZURE_ACTIVE_DIRECTORY = "AzureActiveDirectory" - AZURE_SECURITY_CENTER = "AzureSecurityCenter" - MICROSOFT_CLOUD_APP_SECURITY = "MicrosoftCloudAppSecurity" - THREAT_INTELLIGENCE = "ThreatIntelligence" - OFFICE365 = "Office365" - AMAZON_WEB_SERVICES_CLOUD_TRAIL = "AmazonWebServicesCloudTrail" - AZURE_ADVANCED_THREAT_PROTECTION = "AzureAdvancedThreatProtection" - MICROSOFT_DEFENDER_ADVANCED_THREAT_PROTECTION = "MicrosoftDefenderAdvancedThreatProtection" - -class DataTypeState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """Describe whether this data type connection is enabled or not. - """ - - ENABLED = "Enabled" - DISABLED = "Disabled" - -class IncidentClassification(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The reason the incident was closed - """ - - UNDETERMINED = "Undetermined" #: Incident classification was undetermined. - TRUE_POSITIVE = "TruePositive" #: Incident was true positive. - BENIGN_POSITIVE = "BenignPositive" #: Incident was benign positive. - FALSE_POSITIVE = "FalsePositive" #: Incident was false positive. - -class IncidentClassificationReason(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The classification reason the incident was closed with - """ - - SUSPICIOUS_ACTIVITY = "SuspiciousActivity" #: Classification reason was suspicious activity. - SUSPICIOUS_BUT_EXPECTED = "SuspiciousButExpected" #: Classification reason was suspicious but expected. - INCORRECT_ALERT_LOGIC = "IncorrectAlertLogic" #: Classification reason was incorrect alert logic. - INACCURATE_DATA = "InaccurateData" #: Classification reason was inaccurate data. - -class IncidentLabelType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The type of the label - """ - - USER = "User" #: Label manually created by a user. - SYSTEM = "System" #: Label automatically created by the system. - -class IncidentSeverity(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The severity of the incident - """ - - HIGH = "High" #: High severity. - MEDIUM = "Medium" #: Medium severity. - LOW = "Low" #: Low severity. - INFORMATIONAL = "Informational" #: Informational severity. - -class IncidentStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The status of the incident - """ - - NEW = "New" #: An active incident which isn't being handled currently. - ACTIVE = "Active" #: An active incident which is being handled. - CLOSED = "Closed" #: A non-active incident. - -class LicenseStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """Determines whether the tenant has ATP (Advanced Threat Protection) license. - """ - - ENABLED = "Enabled" - DISABLED = "Disabled" - -class MicrosoftSecurityProductName(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The alerts' productName on which the cases will be generated - """ - - MICROSOFT_CLOUD_APP_SECURITY = "Microsoft Cloud App Security" - AZURE_SECURITY_CENTER = "Azure Security Center" - AZURE_ADVANCED_THREAT_PROTECTION = "Azure Advanced Threat Protection" - AZURE_ACTIVE_DIRECTORY_IDENTITY_PROTECTION = "Azure Active Directory Identity Protection" - AZURE_SECURITY_CENTER_FOR_IO_T = "Azure Security Center for IoT" - -class SettingKind(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The kind of the setting - """ - - UEBA_SETTINGS = "UebaSettings" - TOGGLE_SETTINGS = "ToggleSettings" - -class StatusInMCAS(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """Determines whether User and Entity Behavior Analytics is enabled from MCAS (Microsoft Cloud App - Security). - """ - - ENABLED = "Enabled" - DISABLED = "Disabled" - -class TemplateStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The alert rule template status. - """ - - INSTALLED = "Installed" #: Alert rule template installed. and can not use more then once. - AVAILABLE = "Available" #: Alert rule template is available. - NOT_AVAILABLE = "NotAvailable" #: Alert rule template is not available. - -class TriggerOperator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): - """The operation against the threshold that triggers alert rule. - """ - - GREATER_THAN = "GreaterThan" - LESS_THAN = "LessThan" - EQUAL = "Equal" - NOT_EQUAL = "NotEqual" diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/__init__.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/__init__.py deleted file mode 100644 index 5e67996dcd4..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from ._operation_operations import OperationOperations -from ._alert_rule_operations import AlertRuleOperations -from ._action_operations import ActionOperations -from ._alert_rule_template_operations import AlertRuleTemplateOperations -from ._bookmark_operations import BookmarkOperations -from ._data_connector_operations import DataConnectorOperations -from ._incident_operations import IncidentOperations -from ._incident_comment_operations import IncidentCommentOperations - -__all__ = [ - 'OperationOperations', - 'AlertRuleOperations', - 'ActionOperations', - 'AlertRuleTemplateOperations', - 'BookmarkOperations', - 'DataConnectorOperations', - 'IncidentOperations', - 'IncidentCommentOperations', -] diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_action_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_action_operations.py deleted file mode 100644 index a0eaa43cf9a..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_action_operations.py +++ /dev/null @@ -1,126 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class ActionOperations(object): - """ActionOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list_by_alert_rule( - self, - resource_group_name, # type: str - workspace_name, # type: str - rule_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.ActionsList"] - """Gets all actions of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ActionsList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.ActionsList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ActionsList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list_by_alert_rule.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('ActionsList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list_by_alert_rule.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_alert_rule_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_alert_rule_operations.py deleted file mode 100644 index f91eef2b673..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_alert_rule_operations.py +++ /dev/null @@ -1,546 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class AlertRuleOperations(object): - """AlertRuleOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name, # type: str - workspace_name, # type: str - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.AlertRulesList"] - """Gets all alert rules. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AlertRulesList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.AlertRulesList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRulesList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('AlertRulesList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules'} # type: ignore - - def get( - self, - resource_group_name, # type: str - workspace_name, # type: str - rule_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> "models.AlertRule" - """Gets the alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AlertRule, or the result of cls(response) - :rtype: ~security_insights.models.AlertRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('AlertRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}'} # type: ignore - - def create_or_update( - self, - resource_group_name, # type: str - workspace_name, # type: str - rule_id, # type: str - alert_rule, # type: "models.AlertRule" - **kwargs # type: Any - ): - # type: (...) -> "models.AlertRule" - """Creates or updates the alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param alert_rule: The alert rule. - :type alert_rule: ~security_insights.models.AlertRule - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AlertRule, or the result of cls(response) - :rtype: ~security_insights.models.AlertRule - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRule"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(alert_rule, 'AlertRule') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('AlertRule', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('AlertRule', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}'} # type: ignore - - def delete( - self, - resource_group_name, # type: str - workspace_name, # type: str - rule_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> None - """Delete the alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}'} # type: ignore - - def get_action( - self, - resource_group_name, # type: str - workspace_name, # type: str - rule_id, # type: str - action_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> "models.ActionResponse" - """Gets the action of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param action_id: Action ID. - :type action_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActionResponse, or the result of cls(response) - :rtype: ~security_insights.models.ActionResponse - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ActionResponse"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get_action.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - 'actionId': self._serialize.url("action_id", action_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('ActionResponse', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get_action.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}'} # type: ignore - - def create_or_update_action( - self, - resource_group_name, # type: str - workspace_name, # type: str - rule_id, # type: str - action_id, # type: str - etag=None, # type: Optional[str] - logic_app_resource_id=None, # type: Optional[str] - trigger_uri=None, # type: Optional[str] - **kwargs # type: Any - ): - # type: (...) -> "models.ActionResponse" - """Creates or updates the action of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param action_id: Action ID. - :type action_id: str - :param etag: Etag of the azure resource. - :type etag: str - :param logic_app_resource_id: Logic App Resource Id, /subscriptions/{my- - subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my- - workflow-id}. - :type logic_app_resource_id: str - :param trigger_uri: Logic App Callback URL for this specific workflow. - :type trigger_uri: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ActionResponse, or the result of cls(response) - :rtype: ~security_insights.models.ActionResponse - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.ActionResponse"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - action = models.ActionRequest(etag=etag, logic_app_resource_id=logic_app_resource_id, trigger_uri=trigger_uri) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update_action.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - 'actionId': self._serialize.url("action_id", action_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(action, 'ActionRequest') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('ActionResponse', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('ActionResponse', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update_action.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}'} # type: ignore - - def delete_action( - self, - resource_group_name, # type: str - workspace_name, # type: str - rule_id, # type: str - action_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> None - """Delete the action of alert rule. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param rule_id: Alert rule ID. - :type rule_id: str - :param action_id: Action ID. - :type action_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete_action.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'ruleId': self._serialize.url("rule_id", rule_id, 'str'), - 'actionId': self._serialize.url("action_id", action_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete_action.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}/actions/{actionId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_alert_rule_template_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_alert_rule_template_operations.py deleted file mode 100644 index 2dad458b3f7..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_alert_rule_template_operations.py +++ /dev/null @@ -1,186 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class AlertRuleTemplateOperations(object): - """AlertRuleTemplateOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name, # type: str - workspace_name, # type: str - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.AlertRuleTemplatesList"] - """Gets all alert rule templates. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either AlertRuleTemplatesList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.AlertRuleTemplatesList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRuleTemplatesList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('AlertRuleTemplatesList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRuleTemplates'} # type: ignore - - def get( - self, - resource_group_name, # type: str - workspace_name, # type: str - alert_rule_template_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> "models.AlertRuleTemplate" - """Gets the alert rule template. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param alert_rule_template_id: Alert rule template ID. - :type alert_rule_template_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: AlertRuleTemplate, or the result of cls(response) - :rtype: ~security_insights.models.AlertRuleTemplate - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.AlertRuleTemplate"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'alertRuleTemplateId': self._serialize.url("alert_rule_template_id", alert_rule_template_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('AlertRuleTemplate', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRuleTemplates/{alertRuleTemplateId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_bookmark_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_bookmark_operations.py deleted file mode 100644 index 0121790c420..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_bookmark_operations.py +++ /dev/null @@ -1,353 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import datetime -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, List, Optional, TypeVar, Union - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class BookmarkOperations(object): - """BookmarkOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name, # type: str - workspace_name, # type: str - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.BookmarkList"] - """Gets all bookmarks. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either BookmarkList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.BookmarkList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.BookmarkList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('BookmarkList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks'} # type: ignore - - def get( - self, - resource_group_name, # type: str - workspace_name, # type: str - bookmark_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> "models.Bookmark" - """Gets a bookmark. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param bookmark_id: Bookmark ID. - :type bookmark_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Bookmark, or the result of cls(response) - :rtype: ~security_insights.models.Bookmark - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Bookmark"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'bookmarkId': self._serialize.url("bookmark_id", bookmark_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('Bookmark', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}'} # type: ignore - - def create_or_update( - self, - resource_group_name, # type: str - workspace_name, # type: str - bookmark_id, # type: str - etag=None, # type: Optional[str] - created=None, # type: Optional[datetime.datetime] - display_name=None, # type: Optional[str] - labels=None, # type: Optional[List[str]] - notes=None, # type: Optional[str] - query=None, # type: Optional[str] - query_result=None, # type: Optional[str] - updated=None, # type: Optional[datetime.datetime] - incident_info=None, # type: Optional["models.IncidentInfo"] - object_id=None, # type: Optional[str] - **kwargs # type: Any - ): - # type: (...) -> "models.Bookmark" - """Creates or updates the bookmark. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param bookmark_id: Bookmark ID. - :type bookmark_id: str - :param etag: Etag of the azure resource. - :type etag: str - :param created: The time the bookmark was created. - :type created: ~datetime.datetime - :param display_name: The display name of the bookmark. - :type display_name: str - :param labels: List of labels relevant to this bookmark. - :type labels: list[str] - :param notes: The notes of the bookmark. - :type notes: str - :param query: The query of the bookmark. - :type query: str - :param query_result: The query result of the bookmark. - :type query_result: str - :param updated: The last time the bookmark was updated. - :type updated: ~datetime.datetime - :param incident_info: Describes an incident that relates to bookmark. - :type incident_info: ~security_insights.models.IncidentInfo - :param object_id: The object id of the user. - :type object_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Bookmark, or the result of cls(response) - :rtype: ~security_insights.models.Bookmark - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Bookmark"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - bookmark = models.Bookmark(etag=etag, created=created, display_name=display_name, labels=labels, notes=notes, query=query, query_result=query_result, updated=updated, incident_info=incident_info, object_id_updated_by_object_id=object_id) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'bookmarkId': self._serialize.url("bookmark_id", bookmark_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(bookmark, 'Bookmark') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('Bookmark', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('Bookmark', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}'} # type: ignore - - def delete( - self, - resource_group_name, # type: str - workspace_name, # type: str - bookmark_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> None - """Delete the bookmark. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param bookmark_id: Bookmark ID. - :type bookmark_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'bookmarkId': self._serialize.url("bookmark_id", bookmark_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/bookmarks/{bookmarkId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_data_connector_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_data_connector_operations.py deleted file mode 100644 index cce78e5ae84..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_data_connector_operations.py +++ /dev/null @@ -1,324 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class DataConnectorOperations(object): - """DataConnectorOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name, # type: str - workspace_name, # type: str - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.DataConnectorList"] - """Gets all data connectors. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either DataConnectorList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.DataConnectorList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.DataConnectorList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('DataConnectorList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors'} # type: ignore - - def get( - self, - resource_group_name, # type: str - workspace_name, # type: str - data_connector_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> "models.DataConnector" - """Gets a data connector. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param data_connector_id: Connector ID. - :type data_connector_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: DataConnector, or the result of cls(response) - :rtype: ~security_insights.models.DataConnector - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.DataConnector"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'dataConnectorId': self._serialize.url("data_connector_id", data_connector_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('DataConnector', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}'} # type: ignore - - def create_or_update( - self, - resource_group_name, # type: str - workspace_name, # type: str - data_connector_id, # type: str - data_connector, # type: "models.DataConnector" - **kwargs # type: Any - ): - # type: (...) -> "models.DataConnector" - """Creates or updates the data connector. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param data_connector_id: Connector ID. - :type data_connector_id: str - :param data_connector: The data connector. - :type data_connector: ~security_insights.models.DataConnector - :keyword callable cls: A custom type or function that will be passed the direct response - :return: DataConnector, or the result of cls(response) - :rtype: ~security_insights.models.DataConnector - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.DataConnector"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'dataConnectorId': self._serialize.url("data_connector_id", data_connector_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - print(url) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(data_connector, 'DataConnector') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('DataConnector', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('DataConnector', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}'} # type: ignore - - def delete( - self, - resource_group_name, # type: str - workspace_name, # type: str - data_connector_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> None - """Delete the data connector. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param data_connector_id: Connector ID. - :type data_connector_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'dataConnectorId': self._serialize.url("data_connector_id", data_connector_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/dataConnectors/{dataConnectorId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_incident_comment_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_incident_comment_operations.py deleted file mode 100644 index ebed41e74ae..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_incident_comment_operations.py +++ /dev/null @@ -1,294 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class IncidentCommentOperations(object): - """IncidentCommentOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list_by_incident( - self, - resource_group_name, # type: str - workspace_name, # type: str - incident_id, # type: str - filter=None, # type: Optional[str] - orderby=None, # type: Optional[str] - top=None, # type: Optional[int] - skip_token=None, # type: Optional[str] - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.IncidentCommentList"] - """Gets all incident comments. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param filter: Filters the results, based on a Boolean condition. Optional. - :type filter: str - :param orderby: Sorts the results. Optional. - :type orderby: str - :param top: Returns only the first n results. Optional. - :type top: int - :param skip_token: Skiptoken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either IncidentCommentList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.IncidentCommentList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentCommentList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list_by_incident.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') - if orderby is not None: - query_parameters['$orderby'] = self._serialize.query("orderby", orderby, 'str') - if top is not None: - query_parameters['$top'] = self._serialize.query("top", top, 'int') - if skip_token is not None: - query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('IncidentCommentList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list_by_incident.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments'} # type: ignore - - def get( - self, - resource_group_name, # type: str - workspace_name, # type: str - incident_id, # type: str - incident_comment_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> "models.IncidentComment" - """Gets an incident comment. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param incident_comment_id: Incident comment ID. - :type incident_comment_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: IncidentComment, or the result of cls(response) - :rtype: ~security_insights.models.IncidentComment - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentComment"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - 'incidentCommentId': self._serialize.url("incident_comment_id", incident_comment_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('IncidentComment', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}'} # type: ignore - - def create_comment( - self, - resource_group_name, # type: str - workspace_name, # type: str - incident_id, # type: str - incident_comment_id, # type: str - message=None, # type: Optional[str] - **kwargs # type: Any - ): - # type: (...) -> "models.IncidentComment" - """Creates the incident comment. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param incident_comment_id: Incident comment ID. - :type incident_comment_id: str - :param message: The comment message. - :type message: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: IncidentComment, or the result of cls(response) - :rtype: ~security_insights.models.IncidentComment - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentComment"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - incident_comment = models.IncidentComment(message=message) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_comment.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - 'incidentCommentId': self._serialize.url("incident_comment_id", incident_comment_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(incident_comment, 'IncidentComment') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('IncidentComment', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_comment.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}/comments/{incidentCommentId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_incident_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_incident_operations.py deleted file mode 100644 index 0a2071ac198..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_incident_operations.py +++ /dev/null @@ -1,381 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import datetime -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, List, Optional, TypeVar, Union - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class IncidentOperations(object): - """IncidentOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - resource_group_name, # type: str - workspace_name, # type: str - filter=None, # type: Optional[str] - orderby=None, # type: Optional[str] - top=None, # type: Optional[int] - skip_token=None, # type: Optional[str] - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.IncidentList"] - """Gets all incidents. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param filter: Filters the results, based on a Boolean condition. Optional. - :type filter: str - :param orderby: Sorts the results. Optional. - :type orderby: str - :param top: Returns only the first n results. Optional. - :type top: int - :param skip_token: Skiptoken is only used if a previous operation returned a partial result. If - a previous response contains a nextLink element, the value of the nextLink element will include - a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional. - :type skip_token: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either IncidentList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.IncidentList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - } - url = self._client.format_url(url, **path_format_arguments) - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - if filter is not None: - query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') - if orderby is not None: - query_parameters['$orderby'] = self._serialize.query("orderby", orderby, 'str') - if top is not None: - query_parameters['$top'] = self._serialize.query("top", top, 'int') - if skip_token is not None: - query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('IncidentList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents'} # type: ignore - - def get( - self, - resource_group_name, # type: str - workspace_name, # type: str - incident_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> "models.Incident" - """Gets an incident. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Incident, or the result of cls(response) - :rtype: ~security_insights.models.Incident - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Incident"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.get.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - deserialized = self._deserialize('Incident', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}'} # type: ignore - - def create_or_update( - self, - resource_group_name, # type: str - workspace_name, # type: str - incident_id, # type: str - etag=None, # type: Optional[str] - classification=None, # type: Optional[Union[str, "models.IncidentClassification"]] - classification_comment=None, # type: Optional[str] - classification_reason=None, # type: Optional[Union[str, "models.IncidentClassificationReason"]] - description=None, # type: Optional[str] - first_activity_time_utc=None, # type: Optional[datetime.datetime] - labels=None, # type: Optional[List["models.IncidentLabel"]] - last_activity_time_utc=None, # type: Optional[datetime.datetime] - owner=None, # type: Optional["models.IncidentOwnerInfo"] - severity=None, # type: Optional[Union[str, "models.IncidentSeverity"]] - status=None, # type: Optional[Union[str, "models.IncidentStatus"]] - title=None, # type: Optional[str] - **kwargs # type: Any - ): - # type: (...) -> "models.Incident" - """Creates or updates the incident. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :param etag: Etag of the azure resource. - :type etag: str - :param classification: The reason the incident was closed. - :type classification: str or ~security_insights.models.IncidentClassification - :param classification_comment: Describes the reason the incident was closed. - :type classification_comment: str - :param classification_reason: The classification reason the incident was closed with. - :type classification_reason: str or ~security_insights.models.IncidentClassificationReason - :param description: The description of the incident. - :type description: str - :param first_activity_time_utc: The time of the first activity in the incident. - :type first_activity_time_utc: ~datetime.datetime - :param labels: List of labels relevant to this incident. - :type labels: list[~security_insights.models.IncidentLabel] - :param last_activity_time_utc: The time of the last activity in the incident. - :type last_activity_time_utc: ~datetime.datetime - :param owner: Describes a user that the incident is assigned to. - :type owner: ~security_insights.models.IncidentOwnerInfo - :param severity: The severity of the incident. - :type severity: str or ~security_insights.models.IncidentSeverity - :param status: The status of the incident. - :type status: str or ~security_insights.models.IncidentStatus - :param title: The title of the incident. - :type title: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Incident, or the result of cls(response) - :rtype: ~security_insights.models.Incident - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.Incident"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - - incident = models.Incident(etag=etag, classification=classification, classification_comment=classification_comment, classification_reason=classification_reason, description=description, first_activity_time_utc=first_activity_time_utc, labels=labels, last_activity_time_utc=last_activity_time_utc, owner=owner, severity=severity, status=status, title=title) - api_version = "2020-01-01" - content_type = kwargs.pop("content_type", "application/json") - accept = "application/json" - - # Construct URL - url = self.create_or_update.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - body_content_kwargs = {} # type: Dict[str, Any] - body_content = self._serialize.body(incident, 'Incident') - body_content_kwargs['content'] = body_content - request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize('Incident', pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize('Incident', pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}'} # type: ignore - - def delete( - self, - resource_group_name, # type: str - workspace_name, # type: str - incident_id, # type: str - **kwargs # type: Any - ): - # type: (...) -> None - """Delete the incident. - - :param resource_group_name: The name of the resource group within the user's subscription. The - name is case insensitive. - :type resource_group_name: str - :param workspace_name: The name of the workspace. - :type workspace_name: str - :param incident_id: Incident ID. - :type incident_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None, or the result of cls(response) - :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType[None] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - # Construct URL - url = self.delete.metadata['url'] # type: ignore - path_format_arguments = { - 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'), - 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'), - 'workspaceName': self._serialize.url("workspace_name", workspace_name, 'str', max_length=90, min_length=1), - 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), - } - url = self._client.format_url(url, **path_format_arguments) - - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - request = self._client.delete(url, query_parameters, header_parameters) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/incidents/{incidentId}'} # type: ignore diff --git a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_operation_operations.py b/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_operation_operations.py deleted file mode 100644 index b1d3c09bbf3..00000000000 --- a/src/securityinsight/azext_sentinel/vendored_sdks/securityinsight/operations/_operation_operations.py +++ /dev/null @@ -1,109 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -from typing import TYPE_CHECKING -import warnings - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error -from azure.core.paging import ItemPaged -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat - -from .. import models - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar - - T = TypeVar('T') - ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -class OperationOperations(object): - """OperationOperations operations. - - You should not instantiate this class directly. Instead, you should create a Client instance that - instantiates it for you and attaches it as an attribute. - - :ivar models: Alias to model classes used in this operation group. - :type models: ~security_insights.models - :param client: Client for service requests. - :param config: Configuration of service client. - :param serializer: An object model serializer. - :param deserializer: An object model deserializer. - """ - - models = models - - def __init__(self, client, config, serializer, deserializer): - self._client = client - self._serialize = serializer - self._deserialize = deserializer - self._config = config - - def list( - self, - **kwargs # type: Any - ): - # type: (...) -> Iterable["models.OperationsList"] - """Lists all operations available Azure Security Insights Resource Provider. - - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either OperationsList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~security_insights.models.OperationsList] - :raises: ~azure.core.exceptions.HttpResponseError - """ - cls = kwargs.pop('cls', None) # type: ClsType["models.OperationsList"] - error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError - } - error_map.update(kwargs.pop('error_map', {})) - api_version = "2020-01-01" - accept = "application/json" - - def prepare_request(next_link=None): - # Construct headers - header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') - - if not next_link: - # Construct URL - url = self.list.metadata['url'] # type: ignore - # Construct parameters - query_parameters = {} # type: Dict[str, Any] - query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') - - request = self._client.get(url, query_parameters, header_parameters) - else: - url = next_link - query_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize('OperationsList', pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - request = prepare_request(next_link) - - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': '/providers/Microsoft.SecurityInsights/operations'} # type: ignore diff --git a/src/securityinsight/gen.zip b/src/securityinsight/gen.zip deleted file mode 100644 index a6dbc93f1dd..00000000000 Binary files a/src/securityinsight/gen.zip and /dev/null differ diff --git a/src/securityinsight/report.md b/src/securityinsight/report.md deleted file mode 100644 index d2f533d3f36..00000000000 --- a/src/securityinsight/report.md +++ /dev/null @@ -1,610 +0,0 @@ -# Azure CLI Module Creation Report - -## EXTENSION -|CLI Extension|Command Groups| -|---------|------------| -|az sentinel|[groups](#CommandGroups) - -## GROUPS -### Command groups in `az sentinel` extension -|CLI Command Group|Group Swagger name|Commands| -|---------|------------|--------| -|az sentinel alert-rule|AlertRules|[commands](#CommandsInAlertRules)| -|az sentinel action|Actions|[commands](#CommandsInActions)| -|az sentinel alert-rule-template|AlertRuleTemplates|[commands](#CommandsInAlertRuleTemplates)| -|az sentinel bookmark|Bookmarks|[commands](#CommandsInBookmarks)| -|az sentinel data-connector|DataConnectors|[commands](#CommandsInDataConnectors)| -|az sentinel incident|Incidents|[commands](#CommandsInIncidents)| -|az sentinel incident-comment|IncidentComments|[commands](#CommandsInIncidentComments)| - -## COMMANDS -### Commands in `az sentinel action` group -|CLI Command|Operation Swagger name|Parameters|Examples| -|---------|------------|--------|-----------| -|[az sentinel action list](#ActionsListByAlertRule)|ListByAlertRule|[Parameters](#ParametersActionsListByAlertRule)|[Example](#ExamplesActionsListByAlertRule)| - -### Commands in `az sentinel alert-rule` group -|CLI Command|Operation Swagger name|Parameters|Examples| -|---------|------------|--------|-----------| -|[az sentinel alert-rule list](#AlertRulesList)|List|[Parameters](#ParametersAlertRulesList)|[Example](#ExamplesAlertRulesList)| -|[az sentinel alert-rule show](#AlertRulesGet)|Get|[Parameters](#ParametersAlertRulesGet)|[Example](#ExamplesAlertRulesGet)| -|[az sentinel alert-rule create](#AlertRulesCreateOrUpdateAction)|CreateOrUpdateAction|[Parameters](#ParametersAlertRulesCreateOrUpdateAction)|[Example](#ExamplesAlertRulesCreateOrUpdateAction)| -|[az sentinel alert-rule create](#AlertRulesCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersAlertRulesCreateOrUpdate#Create)|[Example](#ExamplesAlertRulesCreateOrUpdate#Create)| -|[az sentinel alert-rule update](#AlertRulesCreateOrUpdate#Update)|CreateOrUpdate#Update|[Parameters](#ParametersAlertRulesCreateOrUpdate#Update)|Not Found| -|[az sentinel alert-rule delete](#AlertRulesDeleteAction)|DeleteAction|[Parameters](#ParametersAlertRulesDeleteAction)|[Example](#ExamplesAlertRulesDeleteAction)| -|[az sentinel alert-rule delete](#AlertRulesDelete)|Delete|[Parameters](#ParametersAlertRulesDelete)|[Example](#ExamplesAlertRulesDelete)| -|[az sentinel alert-rule get-action](#AlertRulesGetAction)|GetAction|[Parameters](#ParametersAlertRulesGetAction)|[Example](#ExamplesAlertRulesGetAction)| - -### Commands in `az sentinel alert-rule-template` group -|CLI Command|Operation Swagger name|Parameters|Examples| -|---------|------------|--------|-----------| -|[az sentinel alert-rule-template list](#AlertRuleTemplatesList)|List|[Parameters](#ParametersAlertRuleTemplatesList)|[Example](#ExamplesAlertRuleTemplatesList)| -|[az sentinel alert-rule-template show](#AlertRuleTemplatesGet)|Get|[Parameters](#ParametersAlertRuleTemplatesGet)|[Example](#ExamplesAlertRuleTemplatesGet)| - -### Commands in `az sentinel bookmark` group -|CLI Command|Operation Swagger name|Parameters|Examples| -|---------|------------|--------|-----------| -|[az sentinel bookmark list](#BookmarksList)|List|[Parameters](#ParametersBookmarksList)|[Example](#ExamplesBookmarksList)| -|[az sentinel bookmark show](#BookmarksGet)|Get|[Parameters](#ParametersBookmarksGet)|[Example](#ExamplesBookmarksGet)| -|[az sentinel bookmark create](#BookmarksCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersBookmarksCreateOrUpdate#Create)|[Example](#ExamplesBookmarksCreateOrUpdate#Create)| -|[az sentinel bookmark update](#BookmarksCreateOrUpdate#Update)|CreateOrUpdate#Update|[Parameters](#ParametersBookmarksCreateOrUpdate#Update)|Not Found| -|[az sentinel bookmark delete](#BookmarksDelete)|Delete|[Parameters](#ParametersBookmarksDelete)|[Example](#ExamplesBookmarksDelete)| - -### Commands in `az sentinel data-connector` group -|CLI Command|Operation Swagger name|Parameters|Examples| -|---------|------------|--------|-----------| -|[az sentinel data-connector list](#DataConnectorsList)|List|[Parameters](#ParametersDataConnectorsList)|[Example](#ExamplesDataConnectorsList)| -|[az sentinel data-connector show](#DataConnectorsGet)|Get|[Parameters](#ParametersDataConnectorsGet)|[Example](#ExamplesDataConnectorsGet)| -|[az sentinel data-connector create](#DataConnectorsCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersDataConnectorsCreateOrUpdate#Create)|[Example](#ExamplesDataConnectorsCreateOrUpdate#Create)| -|[az sentinel data-connector update](#DataConnectorsCreateOrUpdate#Update)|CreateOrUpdate#Update|[Parameters](#ParametersDataConnectorsCreateOrUpdate#Update)|Not Found| -|[az sentinel data-connector delete](#DataConnectorsDelete)|Delete|[Parameters](#ParametersDataConnectorsDelete)|[Example](#ExamplesDataConnectorsDelete)| - -### Commands in `az sentinel incident` group -|CLI Command|Operation Swagger name|Parameters|Examples| -|---------|------------|--------|-----------| -|[az sentinel incident list](#IncidentsList)|List|[Parameters](#ParametersIncidentsList)|[Example](#ExamplesIncidentsList)| -|[az sentinel incident show](#IncidentsGet)|Get|[Parameters](#ParametersIncidentsGet)|[Example](#ExamplesIncidentsGet)| -|[az sentinel incident create](#IncidentsCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersIncidentsCreateOrUpdate#Create)|[Example](#ExamplesIncidentsCreateOrUpdate#Create)| -|[az sentinel incident update](#IncidentsCreateOrUpdate#Update)|CreateOrUpdate#Update|[Parameters](#ParametersIncidentsCreateOrUpdate#Update)|Not Found| -|[az sentinel incident delete](#IncidentsDelete)|Delete|[Parameters](#ParametersIncidentsDelete)|[Example](#ExamplesIncidentsDelete)| - -### Commands in `az sentinel incident-comment` group -|CLI Command|Operation Swagger name|Parameters|Examples| -|---------|------------|--------|-----------| -|[az sentinel incident-comment list](#IncidentCommentsListByIncident)|ListByIncident|[Parameters](#ParametersIncidentCommentsListByIncident)|[Example](#ExamplesIncidentCommentsListByIncident)| -|[az sentinel incident-comment show](#IncidentCommentsGet)|Get|[Parameters](#ParametersIncidentCommentsGet)|[Example](#ExamplesIncidentCommentsGet)| -|[az sentinel incident-comment create](#IncidentCommentsCreateComment)|CreateComment|[Parameters](#ParametersIncidentCommentsCreateComment)|[Example](#ExamplesIncidentCommentsCreateComment)| - - -## COMMAND DETAILS - -### group `az sentinel action` -#### Command `az sentinel action list` - -##### Example -``` -az sentinel action list --resource-group "myRg" --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --workspace-name \ -"myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--rule-id**|string|Alert rule ID|rule_id|ruleId| - -### group `az sentinel alert-rule` -#### Command `az sentinel alert-rule list` - -##### Example -``` -az sentinel alert-rule list --resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| - -#### Command `az sentinel alert-rule show` - -##### Example -``` -az sentinel alert-rule show --resource-group "myRg" --rule-id "myFirstFusionRule" --workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel alert-rule show --resource-group "myRg" --rule-id "microsoftSecurityIncidentCreationRuleExample" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel alert-rule show --resource-group "myRg" --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --workspace-name \ -"myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--rule-id**|string|Alert rule ID|rule_id|ruleId| - -#### Command `az sentinel alert-rule create` - -##### Example -``` -az sentinel alert-rule create --etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" --logic-app-resource-id \ -"/subscriptions/d0cfe6b2-9ac0-4464-9919-dccaee2e48c0/resourceGroups/myRg/providers/Microsoft.Logic/workflows/MyAlerts" \ ---trigger-uri "https://prod-31.northcentralus.logic.azure.com:443/workflows/cd3765391efd48549fd7681ded1d48d7/triggers/m\ -anual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=signature" --action-id \ -"912bec42-cb66-4c03-ac63-1761b6898c3e" --resource-group "myRg" --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--rule-id**|string|Alert rule ID|rule_id|ruleId| -|**--action-id**|string|Action ID|action_id|actionId| -|**--etag**|string|Etag of the azure resource|etag|etag| -|**--logic-app-resource-id**|string|Logic App Resource Id, /subscriptions/{my-subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my-workflow-id}.|logic_app_resource_id|logicAppResourceId| -|**--trigger-uri**|string|Logic App Callback URL for this specific workflow.|trigger_uri|triggerUri| - -#### Command `az sentinel alert-rule create` - -##### Example -``` -az sentinel alert-rule create --fusion-alert-rule etag="3d00c3ca-0000-0100-0000-5d42d5010000" \ -alert-rule-template-name="f71aba3d-28fb-450b-b192-4e76a83015c8" enabled=true --resource-group "myRg" --rule-id \ -"myFirstFusionRule" --workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel alert-rule create --microsoft-security-incident-creation-alert-rule etag="\\"260097e0-0000-0d00-0000-5d6fa8\ -8f0000\\"" product-filter="Microsoft Cloud App Security" display-name="testing displayname" enabled=true \ ---resource-group "myRg" --rule-id "microsoftSecurityIncidentCreationRuleExample" --workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel alert-rule create --scheduled-alert-rule etag="\\"0300bf09-0000-0000-0000-5c37296e0000\\"" \ -query="ProtectionStatus | extend HostCustomEntity = Computer | extend IPCustomEntity = ComputerIP_Hidden" \ -query-frequency="PT1H" query-period="P2DT1H30M" severity="High" trigger-operator="GreaterThan" trigger-threshold=0 \ -description="" display-name="Rule2" enabled=true suppression-duration="PT1H" suppression-enabled=false \ -tactics="Persistence" tactics="LateralMovement" --resource-group "myRg" --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5\ -" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--fusion-alert-rule**|object|Represents Fusion alert rule.|fusion_alert_rule|FusionAlertRule| -|**--microsoft-security-incident-creation-alert-rule**|object|Represents MicrosoftSecurityIncidentCreation rule.|microsoft_security_incident_creation_alert_rule|MicrosoftSecurityIncidentCreationAlertRule| -|**--scheduled-alert-rule**|object|Represents scheduled alert rule.|scheduled_alert_rule|ScheduledAlertRule| - -#### Command `az sentinel alert-rule update` - -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--rule-id**|string|Alert rule ID|rule_id|ruleId| -|**--fusion-alert-rule**|object|Represents Fusion alert rule.|fusion_alert_rule|FusionAlertRule| -|**--microsoft-security-incident-creation-alert-rule**|object|Represents MicrosoftSecurityIncidentCreation rule.|microsoft_security_incident_creation_alert_rule|MicrosoftSecurityIncidentCreationAlertRule| -|**--scheduled-alert-rule**|object|Represents scheduled alert rule.|scheduled_alert_rule|ScheduledAlertRule| - -#### Command `az sentinel alert-rule delete` - -##### Example -``` -az sentinel alert-rule delete --action-id "912bec42-cb66-4c03-ac63-1761b6898c3e" --resource-group "myRg" --rule-id \ -"73e01a99-5cd7-4139-a149-9f2736ff2ab5" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--rule-id**|string|Alert rule ID|rule_id|ruleId| -|**--action-id**|string|Action ID|action_id|actionId| - -#### Command `az sentinel alert-rule delete` - -##### Example -``` -az sentinel alert-rule delete --resource-group "myRg" --rule-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -#### Command `az sentinel alert-rule get-action` - -##### Example -``` -az sentinel alert-rule get-action --action-id "912bec42-cb66-4c03-ac63-1761b6898c3e" --resource-group "myRg" --rule-id \ -"73e01a99-5cd7-4139-a149-9f2736ff2ab5" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--rule-id**|string|Alert rule ID|rule_id|ruleId| -|**--action-id**|string|Action ID|action_id|actionId| - -### group `az sentinel alert-rule-template` -#### Command `az sentinel alert-rule-template list` - -##### Example -``` -az sentinel alert-rule-template list --resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| - -#### Command `az sentinel alert-rule-template show` - -##### Example -``` -az sentinel alert-rule-template show --alert-rule-template-id "65360bb0-8986-4ade-a89d-af3cf44d28aa" --resource-group \ -"myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--alert-rule-template-id**|string|Alert rule template ID|alert_rule_template_id|alertRuleTemplateId| - -### group `az sentinel bookmark` -#### Command `az sentinel bookmark list` - -##### Example -``` -az sentinel bookmark list --resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| - -#### Command `az sentinel bookmark show` - -##### Example -``` -az sentinel bookmark show --bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--bookmark-id**|string|Bookmark ID|bookmark_id|bookmarkId| - -#### Command `az sentinel bookmark create` - -##### Example -``` -az sentinel bookmark create --etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" --created "2019-01-01T13:15:30Z" \ ---display-name "My bookmark" --labels "Tag1" --labels "Tag2" --notes "Found a suspicious activity" --query \ -"SecurityEvent | where TimeGenerated > ago(1d) and TimeGenerated < ago(2d)" --query-result "Security Event query \ -result" --updated "2019-01-01T13:15:30Z" --bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--bookmark-id**|string|Bookmark ID|bookmark_id|bookmarkId| -|**--etag**|string|Etag of the azure resource|etag|etag| -|**--created**|date-time|The time the bookmark was created|created|created| -|**--display-name**|string|The display name of the bookmark|display_name|displayName| -|**--labels**|array|List of labels relevant to this bookmark|labels|labels| -|**--notes**|string|The notes of the bookmark|notes|notes| -|**--query**|string|The query of the bookmark.|query|query| -|**--query-result**|string|The query result of the bookmark.|query_result|queryResult| -|**--updated**|date-time|The last time the bookmark was updated|updated|updated| -|**--incident-info**|object|Describes an incident that relates to bookmark|incident_info|incidentInfo| -|**--updated-by-object-id**|uuid|The object id of the user.|object_id|objectId| - -#### Command `az sentinel bookmark update` - -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--bookmark-id**|string|Bookmark ID|bookmark_id|bookmarkId| -|**--etag**|string|Etag of the azure resource|etag|etag| -|**--created**|date-time|The time the bookmark was created|created|created| -|**--display-name**|string|The display name of the bookmark|display_name|displayName| -|**--labels**|array|List of labels relevant to this bookmark|labels|labels| -|**--notes**|string|The notes of the bookmark|notes|notes| -|**--query**|string|The query of the bookmark.|query|query| -|**--query-result**|string|The query result of the bookmark.|query_result|queryResult| -|**--updated**|date-time|The last time the bookmark was updated|updated|updated| -|**--incident-info**|object|Describes an incident that relates to bookmark|incident_info|incidentInfo| -|**--updated-by-object-id**|uuid|The object id of the user.|object_id|objectId| - -#### Command `az sentinel bookmark delete` - -##### Example -``` -az sentinel bookmark delete --bookmark-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--bookmark-id**|string|Bookmark ID|bookmark_id|bookmarkId| - -### group `az sentinel data-connector` -#### Command `az sentinel data-connector list` - -##### Example -``` -az sentinel data-connector list --resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| - -#### Command `az sentinel data-connector show` - -##### Example -``` -az sentinel data-connector show --data-connector-id "763f9fa1-c2d3-4fa2-93e9-bccd4899aa12" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel data-connector show --data-connector-id "b96d014d-b5c2-4a01-9aba-a8058f629d42" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel data-connector show --data-connector-id "06b3ccb8-1384-4bcc-aec7-852f6d57161b" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel data-connector show --data-connector-id "c345bf40-8509-4ed2-b947-50cb773aaf04" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel data-connector show --data-connector-id "f0cd27d2-5f03-4c06-ba31-d2dc82dcb51d" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel data-connector show --data-connector-id "07e42cb3-e658-4e90-801c-efa0f29d3d44" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel data-connector show --data-connector-id "c345bf40-8509-4ed2-b947-50cb773aaf04" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Example -``` -az sentinel data-connector show --data-connector-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--data-connector-id**|string|Connector ID|data_connector_id|dataConnectorId| - -#### Command `az sentinel data-connector create` - -##### Example -``` -az sentinel data-connector create --office-data-connector etag="\\"0300bf09-0000-0000-0000-5c37296e0000\\"" \ -tenant-id="2070ecc9-b4d5-4ae4-adaa-936fa1954fa8" --data-connector-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" \ ---resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--data-connector-id**|string|Connector ID|data_connector_id|dataConnectorId| -|**--aad-data-connector**|object|Represents AAD (Azure Active Directory) data connector.|aad_data_connector|AADDataConnector| -|**--aatp-data-connector**|object|Represents AATP (Azure Advanced Threat Protection) data connector.|aatp_data_connector|AATPDataConnector| -|**--asc-data-connector**|object|Represents ASC (Azure Security Center) data connector.|asc_data_connector|ASCDataConnector| -|**--aws-cloud-trail-data-connector**|object|Represents Amazon Web Services CloudTrail data connector.|aws_cloud_trail_data_connector|AwsCloudTrailDataConnector| -|**--mcas-data-connector**|object|Represents MCAS (Microsoft Cloud App Security) data connector.|mcas_data_connector|MCASDataConnector| -|**--mdatp-data-connector**|object|Represents MDATP (Microsoft Defender Advanced Threat Protection) data connector.|mdatp_data_connector|MDATPDataConnector| -|**--office-data-connector**|object|Represents office data connector.|office_data_connector|OfficeDataConnector| -|**--ti-data-connector**|object|Represents threat intelligence data connector.|ti_data_connector|TIDataConnector| - -#### Command `az sentinel data-connector update` - -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--data-connector-id**|string|Connector ID|data_connector_id|dataConnectorId| -|**--aad-data-connector**|object|Represents AAD (Azure Active Directory) data connector.|aad_data_connector|AADDataConnector| -|**--aatp-data-connector**|object|Represents AATP (Azure Advanced Threat Protection) data connector.|aatp_data_connector|AATPDataConnector| -|**--asc-data-connector**|object|Represents ASC (Azure Security Center) data connector.|asc_data_connector|ASCDataConnector| -|**--aws-cloud-trail-data-connector**|object|Represents Amazon Web Services CloudTrail data connector.|aws_cloud_trail_data_connector|AwsCloudTrailDataConnector| -|**--mcas-data-connector**|object|Represents MCAS (Microsoft Cloud App Security) data connector.|mcas_data_connector|MCASDataConnector| -|**--mdatp-data-connector**|object|Represents MDATP (Microsoft Defender Advanced Threat Protection) data connector.|mdatp_data_connector|MDATPDataConnector| -|**--office-data-connector**|object|Represents office data connector.|office_data_connector|OfficeDataConnector| -|**--ti-data-connector**|object|Represents threat intelligence data connector.|ti_data_connector|TIDataConnector| - -#### Command `az sentinel data-connector delete` - -##### Example -``` -az sentinel data-connector delete --data-connector-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--data-connector-id**|string|Connector ID|data_connector_id|dataConnectorId| - -### group `az sentinel incident` -#### Command `az sentinel incident list` - -##### Example -``` -az sentinel incident list --orderby "properties/createdTimeUtc desc" --top 1 --resource-group "myRg" --workspace-name \ -"myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--filter**|string|Filters the results, based on a Boolean condition. Optional.|filter|$filter| -|**--orderby**|string|Sorts the results. Optional.|orderby|$orderby| -|**--top**|integer|Returns only the first n results. Optional.|top|$top| -|**--skip-token**|string|Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.|skip_token|$skipToken| - -#### Command `az sentinel incident show` - -##### Example -``` -az sentinel incident show --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--incident-id**|string|Incident ID|incident_id|incidentId| - -#### Command `az sentinel incident create` - -##### Example -``` -az sentinel incident create --etag "\\"0300bf09-0000-0000-0000-5c37296e0000\\"" --description "This is a demo \ -incident" --classification "FalsePositive" --classification-comment "Not a malicious activity" --classification-reason \ -"IncorrectAlertLogic" --first-activity-time-utc "2019-01-01T13:00:30Z" --last-activity-time-utc "2019-01-01T13:05:30Z" \ ---owner object-id="2046feea-040d-4a46-9e2b-91c2941bfa70" --severity "High" --status "Closed" --title "My incident" \ ---incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--incident-id**|string|Incident ID|incident_id|incidentId| -|**--etag**|string|Etag of the azure resource|etag|etag| -|**--classification**|choice|The reason the incident was closed|classification|classification| -|**--classification-comment**|string|Describes the reason the incident was closed|classification_comment|classificationComment| -|**--classification-reason**|choice|The classification reason the incident was closed with|classification_reason|classificationReason| -|**--description**|string|The description of the incident|description|description| -|**--first-activity-time-utc**|date-time|The time of the first activity in the incident|first_activity_time_utc|firstActivityTimeUtc| -|**--labels**|array|List of labels relevant to this incident|labels|labels| -|**--last-activity-time-utc**|date-time|The time of the last activity in the incident|last_activity_time_utc|lastActivityTimeUtc| -|**--owner**|object|Describes a user that the incident is assigned to|owner|owner| -|**--severity**|choice|The severity of the incident|severity|severity| -|**--status**|choice|The status of the incident|status|status| -|**--title**|string|The title of the incident|title|title| - -#### Command `az sentinel incident update` - -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--incident-id**|string|Incident ID|incident_id|incidentId| -|**--etag**|string|Etag of the azure resource|etag|etag| -|**--classification**|choice|The reason the incident was closed|classification|classification| -|**--classification-comment**|string|Describes the reason the incident was closed|classification_comment|classificationComment| -|**--classification-reason**|choice|The classification reason the incident was closed with|classification_reason|classificationReason| -|**--description**|string|The description of the incident|description|description| -|**--first-activity-time-utc**|date-time|The time of the first activity in the incident|first_activity_time_utc|firstActivityTimeUtc| -|**--labels**|array|List of labels relevant to this incident|labels|labels| -|**--last-activity-time-utc**|date-time|The time of the last activity in the incident|last_activity_time_utc|lastActivityTimeUtc| -|**--owner**|object|Describes a user that the incident is assigned to|owner|owner| -|**--severity**|choice|The severity of the incident|severity|severity| -|**--status**|choice|The status of the incident|status|status| -|**--title**|string|The title of the incident|title|title| - -#### Command `az sentinel incident delete` - -##### Example -``` -az sentinel incident delete --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--incident-id**|string|Incident ID|incident_id|incidentId| - -### group `az sentinel incident-comment` -#### Command `az sentinel incident-comment list` - -##### Example -``` -az sentinel incident-comment list --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" \ ---workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--incident-id**|string|Incident ID|incident_id|incidentId| -|**--filter**|string|Filters the results, based on a Boolean condition. Optional.|filter|$filter| -|**--orderby**|string|Sorts the results. Optional.|orderby|$orderby| -|**--top**|integer|Returns only the first n results. Optional.|top|$top| -|**--skip-token**|string|Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.|skip_token|$skipToken| - -#### Command `az sentinel incident-comment show` - -##### Example -``` -az sentinel incident-comment show --incident-comment-id "4bb36b7b-26ff-4d1c-9cbe-0d8ab3da0014" --incident-id \ -"73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--incident-id**|string|Incident ID|incident_id|incidentId| -|**--incident-comment-id**|string|Incident comment ID|incident_comment_id|incidentCommentId| - -#### Command `az sentinel incident-comment create` - -##### Example -``` -az sentinel incident-comment create --message "Some message" --incident-comment-id "4bb36b7b-26ff-4d1c-9cbe-0d8ab3da001\ -4" --incident-id "73e01a99-5cd7-4139-a149-9f2736ff2ab5" --resource-group "myRg" --workspace-name "myWorkspace" -``` -##### Parameters -|Option|Type|Description|Path (SDK)|Swagger name| -|------|----|-----------|----------|------------| -|**--resource-group-name**|string|The name of the resource group within the user's subscription. The name is case insensitive.|resource_group_name|resourceGroupName| -|**--workspace-name**|string|The name of the workspace.|workspace_name|workspaceName| -|**--incident-id**|string|Incident ID|incident_id|incidentId| -|**--incident-comment-id**|string|Incident comment ID|incident_comment_id|incidentCommentId| -|**--message**|string|The comment message|message|message| diff --git a/src/securityinsight/setup.py b/src/securityinsight/setup.py index a3d2c6727d7..980b63ec9e9 100644 --- a/src/securityinsight/setup.py +++ b/src/securityinsight/setup.py @@ -1,20 +1,16 @@ -#!/usr/bin/env python - # -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools # -------------------------------------------------------------------------------------------- - from codecs import open from setuptools import setup, find_packages + # HISTORY.rst entry. -VERSION = '0.1.2' -try: - from azext_sentinel.manual.version import VERSION -except ImportError: - pass +VERSION = '0.2.0' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers @@ -24,19 +20,14 @@ 'Intended Audience :: System Administrators', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', 'License :: OSI Approved :: MIT License', ] DEPENDENCIES = [] -try: - from azext_sentinel.manual.dependency import DEPENDENCIES -except ImportError: - pass - with open('README.md', 'r', encoding='utf-8') as f: README = f.read() with open('HISTORY.rst', 'r', encoding='utf-8') as f: @@ -45,14 +36,14 @@ setup( name='sentinel', version=VERSION, - description='Microsoft Azure Command-Line Tools SecurityInsights Extension', - author='Microsoft Corporation', - author_email='azpycli@microsoft.com', - url='https://github.com/Azure/azure-cli-extensions/tree/main/src/sentinel', + description='Microsoft Azure Command-Line Tools Sentinel Extension.', long_description=README + '\n\n' + HISTORY, license='MIT', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/Azure/azure-cli-extensions/tree/main/src/securityinsight', classifiers=CLASSIFIERS, - packages=find_packages(), - install_requires=DEPENDENCIES, + packages=find_packages(exclude=["tests"]), package_data={'azext_sentinel': ['azext_metadata.json']}, + install_requires=DEPENDENCIES ) diff --git a/src/service_name.json b/src/service_name.json index 70cbfb40669..97fd51cdd9b 100644 --- a/src/service_name.json +++ b/src/service_name.json @@ -406,7 +406,7 @@ }, { "Command": "az sentinel", - "AzureServiceName": "Azure Sentinel", + "AzureServiceName": "Microsoft Sentinel", "URL": "https://docs.microsoft.com/azure/sentinel/overview" }, { @@ -593,5 +593,10 @@ "Command": "az quota", "AzureServiceName": "Reserved VM Instances", "URL": "https://docs.microsoft.com/en-us/rest/api/reserved-vm-instances/quotaapi" + }, + { + "Command": "az change-analysis", + "AzureServiceName": "Change Analysis", + "URL": "https://docs.microsoft.com/en-us/azure/azure-monitor/change/change-analysis" } ] diff --git a/src/spring-cloud/azext_spring_cloud/_deployment_source_factory.py b/src/spring-cloud/azext_spring_cloud/_deployment_source_factory.py index d7c272d83b9..035c4e6ba82 100644 --- a/src/spring-cloud/azext_spring_cloud/_deployment_source_factory.py +++ b/src/spring-cloud/azext_spring_cloud/_deployment_source_factory.py @@ -4,10 +4,12 @@ # -------------------------------------------------------------------------------------------- # pylint: disable=wrong-import-order -from .vendored_sdks.appplatform.v2022_01_01_preview import models +from .vendored_sdks.appplatform.v2022_03_01_preview import models from azure.cli.core.azclierror import (ArgumentUsageError) from ._utils import convert_argument_to_parameter_list +import shlex + class BaseSource: def fulfilled_options_from_original_source_info(self, **_): @@ -105,6 +107,10 @@ def _format_container(self, container_registry=None, container_image=None, container_command, container_args, registry_username, registry_password]): return None + if container_command is not None: + container_command = shlex.split(container_command) + if container_args is not None: + container_args = shlex.split(container_args) credential = models.ImageRegistryCredential( username=registry_username, password=registry_password # [SuppressMessage("Microsoft.Security", "CS001:SecretInline", Justification="false positive")] diff --git a/src/spring-cloud/azext_spring_cloud/_params.py b/src/spring-cloud/azext_spring_cloud/_params.py index 00e42551826..4351f5915b4 100644 --- a/src/spring-cloud/azext_spring_cloud/_params.py +++ b/src/spring-cloud/azext_spring_cloud/_params.py @@ -364,9 +364,9 @@ def prepare_logs_argument(c): c.argument( 'registry_password', help='The password of the container registry.', arg_group='Custom Container') c.argument( - 'container_command', help='The command of the container image.', nargs='*', arg_group='Custom Container') + 'container_command', help='The command of the container image.', arg_group='Custom Container') c.argument( - 'container_args', help='The arguments of the container image.', nargs='*', arg_group='Custom Container') + 'container_args', help='The arguments of the container image.', arg_group='Custom Container') c.argument( 'build_env', build_env_type) diff --git a/src/spring/HISTORY.md b/src/spring/HISTORY.md index c3ab85e2314..3d9bf2019b7 100644 --- a/src/spring/HISTORY.md +++ b/src/spring/HISTORY.md @@ -1,5 +1,22 @@ Release History =============== +1.1.4 +--- +* Add warning that `az spring app-insights` don't support Enterprise tier. + +1.1.3 +--- +* Enhance Application Insights settings when create service instance. + +1.1.2 +--- +* Support configure Germination Grace Period Seconds for deployments. +* Fix the arguments parsing of the Command `az spring app create` with "--container-image". + +1.1.1 +--- +* Support configure OpenAPI URI in Spring Cloud Gateway route configs. + 1.1.0 --- * Command `az spring create` has new argument "--ingress-read-timeout" to set ingress read timeout when create Azure Spring Apps. diff --git a/src/spring/azext_spring/_buildservices_factory.py b/src/spring/azext_spring/_buildservices_factory.py index 7e62bd50837..c84e7dca670 100644 --- a/src/spring/azext_spring/_buildservices_factory.py +++ b/src/spring/azext_spring/_buildservices_factory.py @@ -58,7 +58,7 @@ def _get_upload_info(self): except AttributeError as e: raise AzureInternalError("Failed to get a SAS URL to upload context. Error: {}".format(e)) - def _queue_build(self, relative_path=None, builder=None, build_env=None, build_cpu=None, build_memory=None, app=None, **_): + def _queue_build(self, relative_path=None, builder=None, build_env=None, build_cpu=None, build_memory=None, app=None, deployment=None, **_): subscription = get_subscription_id(self.cmd.cli_ctx) service_resource_id = '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.AppPlatform/Spring/{}'.format(subscription, self.resource_group, self.service) build_resource_requests = models.BuildResourceRequests( @@ -75,7 +75,7 @@ def _queue_build(self, relative_path=None, builder=None, build_env=None, build_c return self.client.build_service.create_or_update_build(self.resource_group, self.service, self.name, - app, + app + '-' + deployment, build).properties.triggered_build_result.id except (AttributeError, CloudError) as e: raise DeploymentError("Failed to create or update a build. Error: {}".format(e.message)) diff --git a/src/spring/azext_spring/_clierror.py b/src/spring/azext_spring/_clierror.py index 7c5a49ec9e2..a5054e27fe6 100644 --- a/src/spring/azext_spring/_clierror.py +++ b/src/spring/azext_spring/_clierror.py @@ -9,3 +9,7 @@ class ConflictRequestError(UserFault): """ Conflict request: 409 error """ pass + + +class NotSupportedPricingTierError(UserFault): + pass diff --git a/src/spring/azext_spring/_constant.py b/src/spring/azext_spring/_constant.py new file mode 100644 index 00000000000..a9635e05d97 --- /dev/null +++ b/src/spring/azext_spring/_constant.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +# pylint: disable=wrong-import-order +# pylint: disable=unused-argument, logging-format-interpolation, protected-access, wrong-import-order, too-many-lines + +MARKETPLACE_OFFER_ID = 'azure-spring-cloud-vmware-tanzu-2' +MARKETPLACE_PUBLISHER_ID = 'vmware-inc' +MARKETPLACE_PLAN_ID = 'asa-ent-hr-mtr' diff --git a/src/spring/azext_spring/_deployment_factory.py b/src/spring/azext_spring/_deployment_factory.py index e729f375283..aed1d146073 100644 --- a/src/spring/azext_spring/_deployment_factory.py +++ b/src/spring/azext_spring/_deployment_factory.py @@ -46,10 +46,10 @@ def format_settings(self, **kwargs): readiness_probe=self._format_readiness_probe(**kwargs) ) - def _get_termination_grace_period_seconds(self, termination_seconds=None, **_): - if termination_seconds is None: + def _get_termination_grace_period_seconds(self, termination_grace_period_seconds=None, **_): + if termination_grace_period_seconds is None: return None - return termination_seconds + return termination_grace_period_seconds def _format_startup_probe(self, enable_startup_probe=None, startup_probe_config_file_path=None, **_): if enable_startup_probe is None: diff --git a/src/spring/azext_spring/_deployment_source_factory.py b/src/spring/azext_spring/_deployment_source_factory.py index d7c272d83b9..035c4e6ba82 100644 --- a/src/spring/azext_spring/_deployment_source_factory.py +++ b/src/spring/azext_spring/_deployment_source_factory.py @@ -4,10 +4,12 @@ # -------------------------------------------------------------------------------------------- # pylint: disable=wrong-import-order -from .vendored_sdks.appplatform.v2022_01_01_preview import models +from .vendored_sdks.appplatform.v2022_03_01_preview import models from azure.cli.core.azclierror import (ArgumentUsageError) from ._utils import convert_argument_to_parameter_list +import shlex + class BaseSource: def fulfilled_options_from_original_source_info(self, **_): @@ -105,6 +107,10 @@ def _format_container(self, container_registry=None, container_image=None, container_command, container_args, registry_username, registry_password]): return None + if container_command is not None: + container_command = shlex.split(container_command) + if container_args is not None: + container_args = shlex.split(container_args) credential = models.ImageRegistryCredential( username=registry_username, password=registry_password # [SuppressMessage("Microsoft.Security", "CS001:SecretInline", Justification="false positive")] diff --git a/src/spring/azext_spring/_help.py b/src/spring/azext_spring/_help.py index 89a9a86e2ab..d9118e32d7b 100644 --- a/src/spring/azext_spring/_help.py +++ b/src/spring/azext_spring/_help.py @@ -221,17 +221,17 @@ short-summary: Deploy source code or pre-built binary to an app and update related configurations. examples: - name: Deploy source code to an app. This will pack current directory, build binary with Pivotal Build Service and then deploy to the app. - text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup + text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup --source-path - name: Deploy a pre-built jar to an app with jvm options and environment variables. - text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup --jar-path app.jar --jvm-options="-XX:+UseG1GC -XX:+UseStringDeduplication" --env foo=bar + text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup --artifact-path app.jar --jvm-options="-XX:+UseG1GC -XX:+UseStringDeduplication" --env foo=bar - name: Deploy source code to a specific deployment of an app. - text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup -d green-deployment + text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup -d green-deployment --source-path - name: Deploy a container image on Docker Hub to an app. text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup --container-image contoso/your-app:v1 - name: Deploy a container image on a private registry to an app. text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup --container-image contoso/your-app:v1 --container-registry myacr.azurecr.io --registry-username --registry-password - name: Deploy with Application Configuration Service config file patterns to an app. - text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup --config-file-patterns MyPatterns --jar-path app.jar + text: az spring app deploy -n MyApp -s MyCluster -g MyResourceGroup --config-file-patterns MyPatterns --artifact-path app.jar """ helps['spring app scale'] = """ @@ -354,9 +354,9 @@ short-summary: Create a staging deployment for the app. To deploy code or update setting to an existing deployment, use `az spring app deploy/update --deployment `. examples: - name: Deploy source code to a new deployment of an app. This will pack current directory, build binary with Pivotal Build Service and then deploy. - text: az spring app deployment create -n green-deployment --app MyApp -s MyCluster -g MyResourceGroup + text: az spring app deployment create -n green-deployment --app MyApp -s MyCluster -g MyResourceGroup --source-path - name: Deploy a pre-built jar to an app with jvm options and environment variables. - text: az spring app deployment create -n green-deployment --app MyApp -s MyCluster -g MyResourceGroup --jar-path app.jar --jvm-options="-XX:+UseG1GC -XX:+UseStringDeduplication" --env foo=bar + text: az spring app deployment create -n green-deployment --app MyApp -s MyCluster -g MyResourceGroup --artifact-path app.jar --jvm-options="-XX:+UseG1GC -XX:+UseStringDeduplication" --env foo=bar - name: Deploy a container image on Docker Hub to an app. text: az spring app deployment create -n green-deployment --app MyApp -s MyCluster -g MyResourceGroup --container-image contoso/your-app:v1 - name: Deploy a container image on a private registry to an app. diff --git a/src/spring/azext_spring/_params.py b/src/spring/azext_spring/_params.py index 921edb51dad..f4f45c1b998 100644 --- a/src/spring/azext_spring/_params.py +++ b/src/spring/azext_spring/_params.py @@ -133,24 +133,20 @@ def load_arguments(self, _): c.argument('enable_gateway', arg_group="Spring Cloud Gateway", action='store_true', - is_preview=True, help='(Enterprise Tier Only) Enable Spring Cloud Gateway.') c.argument('gateway_instance_count', arg_group="Spring Cloud Gateway", type=int, validator=validate_gateway_instance_count, - is_preview=True, help='(Enterprise Tier Only) Number of Spring Cloud Gateway instances.') c.argument('enable_api_portal', arg_group="API portal", action='store_true', - is_preview=True, help='(Enterprise Tier Only) Enable API portal.') c.argument('api_portal_instance_count', arg_group="API portal", type=int, validator=validate_api_portal_instance_count, - is_preview=True, options_list=['--api-portal-instance-count', '--ap-instance'], help='(Enterprise Tier Only) Number of API portal instances.') @@ -217,6 +213,9 @@ def load_arguments(self, _): help='A json file path indicates the readiness probe config', arg_group='App Customization') c.argument('startup_probe_config', type=str, is_preview=True, help='A json file path indicates the startup probe config', arg_group='App Customization') + c.argument('termination_grace_period_seconds', type=str, is_preview=True, + options_list=['--termination-grace-period-seconds', '--grace-period'], + help='Optional duration in seconds the app instance needs to terminate gracefully', arg_group='App Customization') with self.argument_context('spring app create') as c: c.argument('assign_endpoint', arg_type=get_three_state_flag(), @@ -400,9 +399,9 @@ def prepare_logs_argument(c): c.argument( 'registry_password', help='The password of the container registry.', arg_group='Custom Container') c.argument( - 'container_command', help='The command of the container image.', nargs='*', arg_group='Custom Container') + 'container_command', help='The command of the container image.', arg_group='Custom Container') c.argument( - 'container_args', help='The arguments of the container image.', nargs='*', arg_group='Custom Container') + 'container_args', help='The arguments of the container image.', arg_group='Custom Container') c.argument( 'build_env', build_env_type) c.argument( @@ -564,20 +563,21 @@ def prepare_logs_argument(c): with self.argument_context('spring app-insights update') as c: c.argument('app_insights_key', + arg_group='Application Insights', help="Connection string (recommended) or Instrumentation key of the existing Application Insights.", validator=validate_app_insights_parameters) c.argument('app_insights', + arg_group='Application Insights', help="Name of the existing Application Insights in the same Resource Group. " - "Or Resource ID of the existing Application Insights in a different Resource Group.", - validator=validate_app_insights_parameters) + "Or Resource ID of the existing Application Insights in a different Resource Group.") c.argument('sampling_rate', type=float, - help="Sampling Rate of application insights. Maximum is 100.", - validator=validate_app_insights_parameters) + arg_group='Application Insights', + help="Sampling Rate of application insights. Maximum is 100.") c.argument('disable', arg_type=get_three_state_flag(), - help="Disable Application Insights.", - validator=validate_app_insights_parameters) + arg_group='Application Insights', + help="Disable Application Insights.") with self.argument_context('spring build-service builder') as c: c.argument('service', service_name_type, validator=only_support_enterprise) diff --git a/src/spring/azext_spring/_validators.py b/src/spring/azext_spring/_validators.py index e2482896f92..f65e664d317 100644 --- a/src/spring/azext_spring/_validators.py +++ b/src/spring/azext_spring/_validators.py @@ -18,8 +18,11 @@ from azure.mgmt.core.tools import parse_resource_id from azure.mgmt.core.tools import resource_id from knack.log import get_logger +from ._clierror import NotSupportedPricingTierError from ._utils import (ApiType, _get_rg_location, _get_file_type, _get_sku_name) +from ._util_enterprise import is_enterprise_tier from .vendored_sdks.appplatform.v2020_07_01 import models +from ._constant import (MARKETPLACE_OFFER_ID, MARKETPLACE_PLAN_ID, MARKETPLACE_PUBLISHER_ID) logger = get_logger(__name__) @@ -70,14 +73,16 @@ def _validate_terms(cmd, namespace): from azure.cli.core.commands.client_factory import get_mgmt_service_client client = get_mgmt_service_client(cmd.cli_ctx, MarketplaceOrderingAgreements).marketplace_agreements term = client.get(offer_type="virtualmachine", - publisher_id='vmware-inc', - offer_id='azure-spring-cloud-vmware-tanzu-2', - plan_id='tanzu-asc-ent-mtr') + publisher_id=MARKETPLACE_PUBLISHER_ID, + offer_id=MARKETPLACE_OFFER_ID, + plan_id=MARKETPLACE_PLAN_ID) if not term.accepted: raise InvalidArgumentValueError('Terms for Azure Spring Apps Enterprise is not accepted.\n' - 'Run "az term accept --publisher vmware-inc ' - '--product azure-spring-cloud-vmware-tanzu-2 ' - '--plan tanzu-asc-ent-mtr" to accept the term.') + 'Run "az term accept --publisher {} ' + '--product {} ' + '--plan {}" to accept the term.'.format(MARKETPLACE_PUBLISHER_ID, + MARKETPLACE_OFFER_ID, + MARKETPLACE_PLAN_ID)) def _check_tanzu_components_not_enable(cmd, namespace): @@ -236,7 +241,7 @@ def validate_java_agent_parameters(namespace): "can not be set at the same time.") -def validate_app_insights_parameters(namespace): +def validate_app_insights_parameters(cmd, namespace): if (namespace.app_insights or namespace.app_insights_key or namespace.sampling_rate is not None) \ and namespace.disable: raise InvalidArgumentValueError( @@ -248,6 +253,7 @@ def validate_app_insights_parameters(namespace): and not namespace.disable: raise InvalidArgumentValueError("Invalid value: nothing is updated for application insights.") _validate_app_insights_parameters(namespace) + validate_app_insights_command_not_supported_tier(cmd, namespace) def _validate_app_insights_parameters(namespace): @@ -262,6 +268,12 @@ def _validate_app_insights_parameters(namespace): raise InvalidArgumentValueError("Invalid value: Sampling Rate must be in the range [0,100].") +def validate_app_insights_command_not_supported_tier(cmd, namespace): + if is_enterprise_tier(cmd, namespace.resource_group, namespace.name): + raise NotSupportedPricingTierError("Enterprise tier service instance {} in group {} is not supported in this command, ".format(namespace.name, namespace.resource_group) + + "please refer to 'az spring build-service builder buildpack-binding' command group.") + + def validate_vnet(cmd, namespace): if not namespace.vnet and not namespace.app_subnet and \ not namespace.service_runtime_subnet and not namespace.reserved_cidr_range: diff --git a/src/spring/azext_spring/app.py b/src/spring/azext_spring/app.py index 4e2fe9bc05d..646de45aac5 100644 --- a/src/spring/azext_spring/app.py +++ b/src/spring/azext_spring/app.py @@ -58,6 +58,7 @@ def app_create(cmd, client, resource_group, service, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, assign_public_endpoint=None, loaded_public_certificate_file=None): '''app_create @@ -104,6 +105,7 @@ def app_create(cmd, client, resource_group, service, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, } update_app_kwargs = { 'enable_persistent_storage': enable_persistent_storage, @@ -163,6 +165,7 @@ def app_update(cmd, client, resource_group, service, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, # general no_wait=False): '''app_update @@ -196,6 +199,7 @@ def app_update(cmd, client, resource_group, service, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, } app_kwargs = { @@ -268,6 +272,7 @@ def app_deploy(cmd, client, resource_group, service, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, # general no_wait=False): '''app_deploy @@ -316,6 +321,7 @@ def app_deploy(cmd, client, resource_group, service, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, 'no_wait': no_wait } @@ -373,6 +379,7 @@ def deployment_create(cmd, client, resource_group, service, app, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, # general no_wait=False): '''deployment_create @@ -420,6 +427,7 @@ def deployment_create(cmd, client, resource_group, service, app, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, 'no_wait': no_wait } diff --git a/src/spring/azext_spring/buildpack_binding.py b/src/spring/azext_spring/buildpack_binding.py index 7e42223eed2..82d5f02b3ba 100644 --- a/src/spring/azext_spring/buildpack_binding.py +++ b/src/spring/azext_spring/buildpack_binding.py @@ -83,16 +83,12 @@ def _build_buildpack_binding_resource(binding_type, properties_dict, secrets_dic def _get_buildpack_binding_properties(cmd, resource_group, service_name, location, app_insights_key, app_insights, sampling_rate): - - sampling_rate = sampling_rate or 10 - connection_string = app_insights_key or \ - _get_connection_string_from_app_insights(cmd, resource_group, app_insights) or \ - _create_app_insights_and_get_connection_string(cmd, resource_group, service_name, location) + connection_string = _get_connection_string(cmd, resource_group, service_name, location, app_insights_key, app_insights) if not connection_string: - raise InvalidArgumentValueError('Error while trying to get the ConnectionString of Application Insights for the Azure Spring Apps. ' - 'Please use the Azure Portal to create and configure the Application Insights, if needed.') + return None + sampling_rate = sampling_rate or 10 launch_properties = models.BuildpackBindingLaunchProperties(properties={ "connection-string": connection_string, "sampling-percentage": sampling_rate, @@ -101,6 +97,12 @@ def _get_buildpack_binding_properties(cmd, resource_group, service_name, locatio return models.BuildpackBindingProperties(binding_type="ApplicationInsights", launch_properties=launch_properties) +def _get_connection_string(cmd, resource_group, service_name, location, app_insights_key, app_insights): + return app_insights_key or \ + _get_connection_string_from_app_insights(cmd, resource_group, app_insights) or \ + _create_app_insights_and_get_connection_string(cmd, resource_group, service_name, location) + + def _create_app_insights_and_get_connection_string(cmd, resource_group, service_name, location): try: @@ -130,8 +132,10 @@ def _get_connection_string_from_app_insights(cmd, resource_group, app_insights): else: connection_string = _get_app_insights_connection_string(cmd.cli_ctx, resource_group, app_insights) + # Customer has specify the resourceId or application insights name. + # Raise exception when connection string not found in this scenario. if not connection_string: - logger.warning( + raise InvalidArgumentValueError( "Cannot find Connection string from application insights:{}".format(app_insights)) return connection_string diff --git a/src/spring/azext_spring/commands.py b/src/spring/azext_spring/commands.py index 81f21041573..386da98a85d 100644 --- a/src/spring/azext_spring/commands.py +++ b/src/spring/azext_spring/commands.py @@ -21,6 +21,7 @@ transform_service_registry_output, transform_spring_cloud_gateway_output, transform_api_portal_output) +from ._validators import validate_app_insights_command_not_supported_tier from ._validators_enterprise import (validate_gateway_update, validate_api_portal_update) from ._app_managed_identity_validator import (validate_app_identity_remove_or_warning, validate_app_identity_assign_or_warning) @@ -75,7 +76,7 @@ def load_command_table(self, _): gateway_route_config_cmd_group = CliCommandType( operations_tmpl='azext_spring.gateway#{}', - client_factory=cf_spring_20220101preview + client_factory=cf_spring_20220501preview ) api_portal_cmd_group = CliCommandType( @@ -219,7 +220,8 @@ def load_command_table(self, _): client_factory=cf_spring_20201101preview, exception_handler=handle_asc_exception) as g: g.custom_command('update', 'app_insights_update', supports_no_wait=True) - g.custom_show_command('show', 'app_insights_show') + g.custom_show_command('show', 'app_insights_show', + validator=validate_app_insights_command_not_supported_tier) with self.command_group('spring service-registry', custom_command_type=service_registry_cmd_group, @@ -248,8 +250,7 @@ def load_command_table(self, _): with self.command_group('spring gateway', custom_command_type=gateway_cmd_group, - exception_handler=handle_asc_exception, - is_preview=True) as g: + exception_handler=handle_asc_exception) as g: g.custom_show_command('show', 'gateway_show', table_transformer=transform_spring_cloud_gateway_output) g.custom_command('update', 'gateway_update', validator=validate_gateway_update, supports_no_wait=True) g.custom_command('clear', 'gateway_clear', supports_no_wait=True) @@ -276,8 +277,7 @@ def load_command_table(self, _): with self.command_group('spring api-portal', custom_command_type=api_portal_cmd_group, - exception_handler=handle_asc_exception, - is_preview=True) as g: + exception_handler=handle_asc_exception) as g: g.custom_show_command('show', 'api_portal_show', table_transformer=transform_api_portal_output) g.custom_command('update', 'api_portal_update', validator=validate_api_portal_update) g.custom_command('clear', 'api_portal_clear') diff --git a/src/spring/azext_spring/gateway.py b/src/spring/azext_spring/gateway.py index a5bda685d6d..3cd835e44a7 100644 --- a/src/spring/azext_spring/gateway.py +++ b/src/spring/azext_spring/gateway.py @@ -10,7 +10,7 @@ from knack.log import get_logger from .custom import LOG_RUNNING_PROMPT -from .vendored_sdks.appplatform.v2022_01_01_preview import models +from .vendored_sdks.appplatform.v2022_05_01_preview import models logger = get_logger(__name__) DEFAULT_NAME = "default" @@ -140,24 +140,19 @@ def gateway_route_config_create(cmd, client, resource_group, service, name, routes_json=None, routes_file=None): _validate_route_config_exist(client, resource_group, service, name) - - app_resource_id = _update_app_resource_id(client, resource_group, service, app_name, None) - routes = _update_routes(routes_file, routes_json, []) - - return _create_or_update_gateway_route_configs(client, resource_group, service, name, app_resource_id, routes) + route_properties = models.GatewayRouteConfigProperties() + return _create_or_update_gateway_route_configs(client, resource_group, service, name, route_properties, + app_name, routes_file, routes_json) def gateway_route_config_update(cmd, client, resource_group, service, name, app_name=None, routes_json=None, routes_file=None): - gateway_route_config = client.gateway_route_configs.get( + route_properties = client.gateway_route_configs.get( resource_group, service, DEFAULT_NAME, name) - - app_resource_id = _update_app_resource_id(client, resource_group, service, app_name, gateway_route_config.properties.app_resource_id) - routes = _update_routes(routes_file, routes_json, gateway_route_config.properties.routes) - - return _create_or_update_gateway_route_configs(client, resource_group, service, name, app_resource_id, routes) + return _create_or_update_gateway_route_configs(client, resource_group, service, name, route_properties, + app_name, routes_file, routes_json) def gateway_route_config_remove(cmd, client, resource_group, service, name): @@ -207,26 +202,38 @@ def _validate_route_config_exist(client, resource_group, service, name): raise InvalidArgumentValueError("Route config " + name + " already exists") -def _update_app_resource_id(client, resource_group, service, app_name, app_resource_id): +def _create_or_update_gateway_route_configs(client, resource_group, service, name, route_properties, + app_name, routes_file, routes_json): + app_resource_id = _get_app_resource_id_by_name(client, resource_group, service, app_name) + route_properties = _create_or_update_routes_properties(routes_file, routes_json, route_properties) + + if app_resource_id is not None: + route_properties.app_resource_id = app_resource_id + route_config_resource = models.GatewayRouteConfigResource( + properties=route_properties) + return client.gateway_route_configs.begin_create_or_update(resource_group, service, DEFAULT_NAME, name, route_config_resource) + + +def _get_app_resource_id_by_name(client, resource_group, service, app_name): if app_name is not None: app_resource = client.apps.get(resource_group, service, app_name) - app_resource_id = app_resource.id - return app_resource_id + return app_resource.id + return None -def _update_routes(routes_file, routes_json, routes): +def _create_or_update_routes_properties(routes_file, routes_json, route_properties): + if routes_file is None and routes_json is None: + return route_properties + if routes_file is not None: with open(routes_file, 'r') as json_file: - routes = json.load(json_file) + raw_json = json.load(json_file) if routes_json is not None: - routes = json.loads(routes_json) - return routes - + raw_json = json.loads(routes_json) -def _create_or_update_gateway_route_configs(client, resource_group, service, name, app_resource_id, routes): - properties = models.GatewayRouteConfigProperties( - app_resource_id=app_resource_id, routes=routes) - route_config_resource = models.GatewayRouteConfigResource( - properties=properties) - return client.gateway_route_configs.begin_create_or_update(resource_group, service, DEFAULT_NAME, name, route_config_resource) + if isinstance(raw_json, list): + route_properties.routes = raw_json + else: + route_properties = models.GatewayRouteConfigProperties(**raw_json) + return route_properties diff --git a/src/spring/azext_spring/tests/latest/recordings/test_app_deploy_container.yaml b/src/spring/azext_spring/tests/latest/recordings/test_app_deploy_container.yaml index 361d27c4d4c..6909bbd44fd 100644 --- a/src/spring/azext_spring/tests/latest/recordings/test_app_deploy_container.yaml +++ b/src/spring/azext_spring/tests/latest/recordings/test_app_deploy_container.yaml @@ -1,6 +1,1556 @@ interactions: +- request: + body: '{"location": "westus"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - group create + Connection: + - keep-alive + Content-Length: + - '22' + Content-Type: + - application/json + ParameterSetName: + - -n -l + User-Agent: + - AZURECLI/2.30.0 azsdk-python-azure-mgmt-resource/19.0.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli","name":"cli","type":"Microsoft.Resources/resourceGroups","location":"westus","properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '203' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:30:11 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-azure-mgmt-resource/19.0.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli","name":"cli","type":"Microsoft.Resources/resourceGroups","location":"westus","properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '203' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:30:13 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "westus", "properties": {"zoneRedundant": false}, "sku": {"name": + "S0", "tier": "Standard"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + Content-Length: + - '105' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Creating","zoneRedundant":false,"version":3,"serviceId":"32e4e71a65d4496abd4028573154aafb","powerState":"Running","fqdn":"cli-unittest.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"westus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest","name":"cli-unittest","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:30:18.4436793Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:30:18.4436793Z"}}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + cache-control: + - no-cache + content-length: + - '687' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:30:20 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/963a4319-efbf-4514-b188-f65223bc90f2/Spring/cli-unittest?api-version=2022-05-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1199' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:30:51 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:31:01 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:31:12 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:31:22 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:31:33 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:31:43 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:31:54 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:32:04 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:32:14 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:32:25 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:32:35 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:32:47 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:32:57 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:08 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Running","startTime":"2022-06-29T01:30:19.8231097Z"}' + headers: + cache-control: + - no-cache + content-length: + - '313' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:18 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/963a4319-efbf-4514-b188-f65223bc90f2","name":"963a4319-efbf-4514-b188-f65223bc90f2","status":"Succeeded","startTime":"2022-06-29T01:30:19.8231097Z","endTime":"2022-06-29T01:33:19.6102117Z"}' + headers: + cache-control: + - no-cache + content-length: + - '356' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:28 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"32e4e71a65d4496abd4028573154aafb","networkProfile":{"outboundIPs":{"publicIPs":["20.237.198.86","20.228.122.155"]}},"powerState":"Running","fqdn":"cli-unittest.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"westus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest","name":"cli-unittest","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:30:18.4436793Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:30:18.4436793Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '770' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:29 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"location": "westus", "kind": "web", "properties": {"Application_Type": + "web"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.8.10 + (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli-unittest?api-version=2015-05-01 + response: + body: + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli-unittest\",\r\n + \ \"name\": \"cli-unittest\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"westus\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"0313bbf0-0000-0200-0000-62bbabf40000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli-unittest\",\r\n \"AppId\": \"e57168a6-80d9-412d-8452-0dceeb5b1be6\",\r\n + \ \"Application_Type\": \"web\",\r\n \"Flow_Type\": null,\r\n \"Request_Source\": + null,\r\n \"InstrumentationKey\": \"ddb7e476-9c60-41b2-811a-7b20edcc5191\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=ddb7e476-9c60-41b2-811a-7b20edcc5191;IngestionEndpoint=https://westus-0.in.applicationinsights.azure.com/;LiveEndpoint=https://westus.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli-unittest\",\r\n \"CreationDate\": \"2022-06-29T01:33:39.6945277+00:00\",\r\n + \ \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n \"provisioningState\": + \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n \"RetentionInDays\": + 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n \"publicNetworkAccessForIngestion\": + \"Enabled\",\r\n \"publicNetworkAccessForQuery\": \"Enabled\",\r\n \"Ver\": + \"v2\"\r\n }\r\n}" + headers: + access-control-expose-headers: + - Request-Context + cache-control: + - no-cache + content-length: + - '1212' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:48 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=ddb7e476-9c60-41b2-811a-7b20edcc5191;IngestionEndpoint=https://westus-0.in.applicationinsights.azure.com/;LiveEndpoint=https://westus.livediagnostics.monitor.azure.com/"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + Content-Length: + - '262' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=ddb7e476-9c60-41b2-811a-7b20edcc5191;IngestionEndpoint=https://westus-0.in.applicationinsights.azure.com/;LiveEndpoint=https://westus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/a832e6c2-7661-4ece-9207-b2e346d12573?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '596' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:51 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/a832e6c2-7661-4ece-9207-b2e346d12573/Spring/cli-unittest?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app create + Connection: + - keep-alive + ParameterSetName: + - -s -g -n + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview + response: + body: + string: '{"error":{"code":"NotFound","message":"App was not found","target":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","details":null}}' + headers: + cache-control: + - no-cache + content-length: + - '228' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:52 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app create + Connection: + - keep-alive + ParameterSetName: + - -s -g -n + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"32e4e71a65d4496abd4028573154aafb","networkProfile":{"outboundIPs":{"publicIPs":["20.237.198.86","20.228.122.155"]}},"powerState":"Running","fqdn":"cli-unittest.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"westus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest","name":"cli-unittest","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:30:18.4436793Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:33:49.7872041Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '770' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:52 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"public": false, "httpsOnly": false, "temporaryDisk": {"sizeInGB": + 5, "mountPath": "/tmp"}, "enableEndToEndTLS": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app create + Connection: + - keep-alive + Content-Length: + - '136' + Content-Type: + - application/json + ParameterSetName: + - -s -g -n + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Creating","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"westus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:33:54.594113Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:33:54.594113Z"}}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/test-container/operationId/aa980351-97c6-48f7-a5ae-6363bd742f0f?api-version=2022-05-01-preview + cache-control: + - no-cache + content-length: + - '714' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:33:54 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/aa980351-97c6-48f7-a5ae-6363bd742f0f/Spring/test-container?api-version=2022-05-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1199' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/a832e6c2-7661-4ece-9207-b2e346d12573?api-version=2020-11-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/cli-unittest/operationId/a832e6c2-7661-4ece-9207-b2e346d12573","name":"a832e6c2-7661-4ece-9207-b2e346d12573","status":"Succeeded","startTime":"2022-06-29T01:33:50.9490645Z","endTime":"2022-06-29T01:33:57.8907451Z"}' + headers: + cache-control: + - no-cache + content-length: + - '356' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:34:21 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=ddb7e476-9c60-41b2-811a-7b20edcc5191;IngestionEndpoint=https://westus-0.in.applicationinsights.azure.com/;LiveEndpoint=https://westus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '597' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:34:22 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app create + Connection: + - keep-alive + ParameterSetName: + - -s -g -n + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/test-container/operationId/aa980351-97c6-48f7-a5ae-6363bd742f0f?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/test-container/operationId/aa980351-97c6-48f7-a5ae-6363bd742f0f","name":"aa980351-97c6-48f7-a5ae-6363bd742f0f","status":"Succeeded","startTime":"2022-06-29T01:33:55.2995641Z","endTime":"2022-06-29T01:34:01.5205831Z"}' + headers: + cache-control: + - no-cache + content-length: + - '358' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:34:25 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK - request: body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app create + Connection: + - keep-alive + ParameterSetName: + - -s -g -n + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Succeeded","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"westus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:33:54.594113Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:33:54.594113Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '817' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:34:26 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"source": {"type": "Jar", "relativePath": "", + "runtimeVersion": "Java_8"}, "deploymentSettings": {"resourceRequests": {"cpu": + "1", "memory": "1Gi"}}, "active": true}, "sku": {"name": "S0", "tier": "Standard", + "capacity": 1}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app create + Connection: + - keep-alive + Content-Length: + - '249' + Content-Type: + - application/json + ParameterSetName: + - -s -g -n + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90},"provisioningState":"Creating","status":"Running","active":true,"instances":null,"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:34:30.6724142Z"}}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278?api-version=2022-05-01-preview + cache-control: + - no-cache + content-length: + - '831' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:34:31 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/ddefc3a1-3503-4e46-88b0-786d1955d278/Spring/default?api-version=2022-05-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1199' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 201 + message: Created +- request: + body: '{"properties": {"public": false, "httpsOnly": false, "enableEndToEndTLS": + false}}' headers: Accept: - application/json @@ -10,26 +1560,34 @@ interactions: - spring app create Connection: - keep-alive + Content-Length: + - '81' + Content-Type: + - application/json ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) - method: GET + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PATCH uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview response: body: - string: '{"error":{"code":"NotFound","message":"App was not found","target":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","details":null}}' + string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Updating","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"westus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:33:54.594113Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:34:32.0162162Z"}}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/test-container/operationId/047bd001-fd0f-4125-a4f8-a0a89527c655?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '228' + - '817' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:56:15 GMT + - Wed, 29 Jun 2022 01:34:32 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/047bd001-fd0f-4125-a4f8-a0a89527c655/Spring/test-container?api-version=2022-05-01-preview pragma: - no-cache request-context: @@ -41,17 +1599,17 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' + - '1198' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 404 - message: Not Found + code: 202 + message: Accepted - request: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: @@ -61,21 +1619,21 @@ interactions: ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":2,"serviceId":"e0c9ac05b1964af6878f51c774361a54","networkProfile":{"outboundIPs":{"publicIPs":["20.237.73.139","20.237.73.181"]}},"powerState":"Running","fqdn":"cli-unittest.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest","name":"cli-unittest","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T04:22:48.680302Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T04:30:25.8146564Z"}}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278","name":"ddefc3a1-3503-4e46-88b0-786d1955d278","status":"Running","startTime":"2022-06-29T01:34:31.7390317Z"}' headers: cache-control: - no-cache content-length: - - '770' + - '308' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:56:16 GMT + - Wed, 29 Jun 2022 01:35:01 GMT expires: - '-1' pragma: @@ -92,53 +1650,42 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"public": false, "httpsOnly": false, "temporaryDisk": {"sizeInGB": - 5, "mountPath": "/tmp"}, "enableEndToEndTLS": false}}' + body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - spring app create Connection: - keep-alive - Content-Length: - - '136' - Content-Type: - - application/json ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/test-container/operationId/047bd001-fd0f-4125-a4f8-a0a89527c655?api-version=2022-05-01-preview response: body: - string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Creating","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:17.6583556Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:17.6583556Z"}}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/test-container/operationId/047bd001-fd0f-4125-a4f8-a0a89527c655","name":"047bd001-fd0f-4125-a4f8-a0a89527c655","status":"Succeeded","startTime":"2022-06-29T01:34:32.6081948Z","endTime":"2022-06-29T01:34:38.9094495Z"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/test-container/operationId/ce18298a-0f3d-4ff9-8f6e-a833a31a6210?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '720' + - '358' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:56:18 GMT + - Wed, 29 Jun 2022 01:35:02 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/ce18298a-0f3d-4ff9-8f6e-a833a31a6210/Spring/test-container?api-version=2022-05-01-preview pragma: - no-cache request-context: @@ -147,15 +1694,17 @@ interactions: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '1199' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 201 - message: Created + code: 200 + message: OK - request: body: null headers: @@ -170,21 +1719,21 @@ interactions: ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/test-container/operationId/ce18298a-0f3d-4ff9-8f6e-a833a31a6210?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/test-container/operationId/ce18298a-0f3d-4ff9-8f6e-a833a31a6210","name":"ce18298a-0f3d-4ff9-8f6e-a833a31a6210","status":"Succeeded","startTime":"2022-05-20T08:56:19.0472538Z","endTime":"2022-05-20T08:56:26.3435312Z"}' + string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Succeeded","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"westus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:33:54.594113Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:34:32.0162162Z"}}' headers: cache-control: - no-cache content-length: - - '358' + - '818' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:56:49 GMT + - Wed, 29 Jun 2022 01:35:03 GMT expires: - '-1' pragma: @@ -201,8 +1750,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -220,21 +1771,21 @@ interactions: ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278?api-version=2022-05-01-preview response: body: - string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Succeeded","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:17.6583556Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:17.6583556Z"}}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278","name":"ddefc3a1-3503-4e46-88b0-786d1955d278","status":"Running","startTime":"2022-06-29T01:34:31.7390317Z"}' headers: cache-control: - no-cache content-length: - - '823' + - '308' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:56:50 GMT + - Wed, 29 Jun 2022 01:35:12 GMT expires: - '-1' pragma: @@ -251,55 +1802,42 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11997' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"source": {"type": "Jar", "relativePath": "", - "runtimeVersion": "Java_8"}, "deploymentSettings": {"resourceRequests": {"cpu": - "1", "memory": "1Gi"}}, "active": true}, "sku": {"name": "S0", "tier": "Standard", - "capacity": 1}}' + body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - spring app create Connection: - keep-alive - Content-Length: - - '249' - Content-Type: - - application/json ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278?api-version=2022-05-01-preview response: body: - string: '{"properties":{"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null},"provisioningState":"Creating","status":"Running","active":true,"instances":null},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:54.596018Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:54.596018Z"}}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278","name":"ddefc3a1-3503-4e46-88b0-786d1955d278","status":"Running","startTime":"2022-06-29T01:34:31.7390317Z"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '798' + - '308' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:56:55 GMT + - Wed, 29 Jun 2022 01:35:22 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb/Spring/default?api-version=2022-05-01-preview pragma: - no-cache request-context: @@ -308,55 +1846,48 @@ interactions: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '1199' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 201 - message: Created + code: 200 + message: OK - request: - body: '{"properties": {"public": false, "httpsOnly": false, "enableEndToEndTLS": - false}}' + body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - spring app create Connection: - keep-alive - Content-Length: - - '81' - Content-Type: - - application/json ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) - method: PATCH - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278?api-version=2022-05-01-preview response: body: - string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Updating","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:17.6583556Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:56.0647726Z"}}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278","name":"ddefc3a1-3503-4e46-88b0-786d1955d278","status":"Running","startTime":"2022-06-29T01:34:31.7390317Z"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/test-container/operationId/42814bec-8cc3-4a0a-a4cf-ccb08183e86e?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '822' + - '308' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:56:56 GMT + - Wed, 29 Jun 2022 01:35:32 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/42814bec-8cc3-4a0a-a4cf-ccb08183e86e/Spring/test-container?api-version=2022-05-01-preview pragma: - no-cache request-context: @@ -365,15 +1896,17 @@ interactions: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '1198' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -388,21 +1921,21 @@ interactions: ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","name":"78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","status":"Running","startTime":"2022-05-20T08:56:55.6974502Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/ddefc3a1-3503-4e46-88b0-786d1955d278","name":"ddefc3a1-3503-4e46-88b0-786d1955d278","status":"Succeeded","startTime":"2022-06-29T01:34:31.7390317Z","endTime":"2022-06-29T01:35:40.8774176Z"}' headers: cache-control: - no-cache content-length: - - '308' + - '351' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:57:25 GMT + - Wed, 29 Jun 2022 01:35:44 GMT expires: - '-1' pragma: @@ -420,7 +1953,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -438,21 +1971,21 @@ interactions: ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/test-container/operationId/42814bec-8cc3-4a0a-a4cf-ccb08183e86e?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/test-container/operationId/42814bec-8cc3-4a0a-a4cf-ccb08183e86e","name":"42814bec-8cc3-4a0a-a4cf-ccb08183e86e","status":"Succeeded","startTime":"2022-05-20T08:56:56.7510398Z","endTime":"2022-05-20T08:57:04.725261Z"}' + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-5fb6d95c9-qf74x","status":"Running","discoveryStatus":"UNREGISTERED","startTime":"2022-06-29T01:34:35Z"}],"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:34:30.6724142Z"}}' headers: cache-control: - no-cache content-length: - - '357' + - '1340' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:57:26 GMT + - Wed, 29 Jun 2022 01:35:47 GMT expires: - '-1' pragma: @@ -469,8 +2002,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -478,7 +2013,7 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: @@ -488,21 +2023,21 @@ interactions: ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview response: body: - string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Succeeded","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:17.6583556Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:56.0647726Z"}}' + string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Succeeded","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"westus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:33:54.594113Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:34:32.0162162Z"}}' headers: cache-control: - no-cache content-length: - - '823' + - '818' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:57:27 GMT + - Wed, 29 Jun 2022 01:35:48 GMT expires: - '-1' pragma: @@ -522,7 +2057,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '11996' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -530,7 +2065,7 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: @@ -540,21 +2075,21 @@ interactions: ParameterSetName: - -s -g -n User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","name":"78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","status":"Running","startTime":"2022-05-20T08:56:55.6974502Z"}' + string: '{"value":[{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-5fb6d95c9-qf74x","status":"Running","discoveryStatus":"UNREGISTERED","startTime":"2022-06-29T01:34:35Z"}],"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:34:30.6724142Z"}}]}' headers: cache-control: - no-cache content-length: - - '308' + - '1352' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:57:36 GMT + - Wed, 29 Jun 2022 01:35:51 GMT expires: - '-1' pragma: @@ -571,8 +2106,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -580,31 +2117,31 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app create + - spring app deploy Connection: - keep-alive ParameterSetName: - - -s -g -n + - -g -s -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","name":"78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","status":"Running","startTime":"2022-05-20T08:56:55.6974502Z"}' + string: '{"value":[{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-5fb6d95c9-qf74x","status":"Running","discoveryStatus":"UNREGISTERED","startTime":"2022-06-29T01:34:35Z"}],"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:34:30.6724142Z"}}]}' headers: cache-control: - no-cache content-length: - - '308' + - '1352' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:57:46 GMT + - Wed, 29 Jun 2022 01:35:55 GMT expires: - '-1' pragma: @@ -621,42 +2158,55 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"source": {"type": "Container", "customContainer": {"server": + "docker.io", "containerImage": "springio/gs-spring-boot-docker"}}, "deploymentSettings": + {"resourceRequests": {"cpu": "1", "memory": "1Gi"}}}, "sku": {"name": "S0", + "tier": "Standard", "capacity": 1}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app create + - spring app deploy Connection: - keep-alive + Content-Length: + - '278' + Content-Type: + - application/json ParameterSetName: - - -s -g -n + - -g -s -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb?api-version=2022-05-01-preview + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","name":"78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","status":"Running","startTime":"2022-05-20T08:56:55.6974502Z"}' + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90},"provisioningState":"Updating","status":"Running","active":true,"instances":null,"source":{"type":"Container","relativePath":"","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"},"runtimeVersion":"Container","jvmOptions":"","artifactSelector":"","netCoreMainEntryPath":""}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:35:57.6725504Z"}}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/85b016b9-c899-4211-919b-5886eaf8f19a?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '308' + - '999' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:57:57 GMT + - Wed, 29 Jun 2022 01:35:58 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/85b016b9-c899-4211-919b-5886eaf8f19a/Spring/default?api-version=2022-05-01-preview pragma: - no-cache request-context: @@ -665,17 +2215,15 @@ interactions: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1199' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -684,27 +2232,27 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app create + - spring app deploy Connection: - keep-alive ParameterSetName: - - -s -g -n + - -g -s -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/85b016b9-c899-4211-919b-5886eaf8f19a?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","name":"78951c46-8ce1-4a90-b6a8-75ed93c6cfeb","status":"Succeeded","startTime":"2022-05-20T08:56:55.6974502Z","endTime":"2022-05-20T08:58:07.3020542Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/85b016b9-c899-4211-919b-5886eaf8f19a","name":"85b016b9-c899-4211-919b-5886eaf8f19a","status":"Running","startTime":"2022-06-29T01:35:58.3217113Z"}' headers: cache-control: - no-cache content-length: - - '351' + - '308' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:58:07 GMT + - Wed, 29 Jun 2022 01:36:28 GMT expires: - '-1' pragma: @@ -722,7 +2270,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -734,27 +2282,27 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app create + - spring app deploy Connection: - keep-alive ParameterSetName: - - -s -g -n + - -g -s -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/85b016b9-c899-4211-919b-5886eaf8f19a?api-version=2022-05-01-preview response: body: - string: '{"properties":{"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-7845cb7f76-h5fts","status":"Running","discoveryStatus":"UNREGISTERED","startTime":"2022-05-20T08:57:01Z"}]},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:54.596018Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:54.596018Z"}}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/85b016b9-c899-4211-919b-5886eaf8f19a","name":"85b016b9-c899-4211-919b-5886eaf8f19a","status":"Running","startTime":"2022-06-29T01:35:58.3217113Z"}' headers: cache-control: - no-cache content-length: - - '937' + - '308' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:58:12 GMT + - Wed, 29 Jun 2022 01:36:38 GMT expires: - '-1' pragma: @@ -771,10 +2319,8 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -782,31 +2328,31 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring app create + - spring app deploy Connection: - keep-alive ParameterSetName: - - -s -g -n + - -g -s -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/85b016b9-c899-4211-919b-5886eaf8f19a?api-version=2022-05-01-preview response: body: - string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{},"serviceRegistry":{}},"public":false,"provisioningState":"Succeeded","fqdn":"cli-unittest.azuremicroservices.io","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container","name":"test-container","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:17.6583556Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:56.0647726Z"}}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/85b016b9-c899-4211-919b-5886eaf8f19a","name":"85b016b9-c899-4211-919b-5886eaf8f19a","status":"Succeeded","startTime":"2022-06-29T01:35:58.3217113Z","endTime":"2022-06-29T01:36:41.8235134Z"}' headers: cache-control: - no-cache content-length: - - '823' + - '351' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:58:18 GMT + - Wed, 29 Jun 2022 01:36:49 GMT expires: - '-1' pragma: @@ -823,10 +2369,8 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11995' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -834,31 +2378,31 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring app create + - spring app deploy Connection: - keep-alive ParameterSetName: - - -s -g -n + - -g -s -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview response: body: - string: '{"value":[{"properties":{"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-7845cb7f76-h5fts","status":"Running","discoveryStatus":"UNREGISTERED","startTime":"2022-05-20T08:57:01Z"}]},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:54.596018Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:54.596018Z"}}]}' + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-bd94b545c-krv5v","status":"Running","discoveryStatus":"N/A","startTime":"2022-06-29T01:36:11Z"}],"source":{"type":"Container","relativePath":"","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"},"runtimeVersion":"Container","jvmOptions":"","artifactSelector":"","netCoreMainEntryPath":""}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:35:57.6725504Z"}}' headers: cache-control: - no-cache content-length: - - '949' + - '1499' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:58:21 GMT + - Wed, 29 Jun 2022 01:36:52 GMT expires: - '-1' pragma: @@ -878,7 +2422,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '11998' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -894,23 +2438,23 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -s -n --container-image + - -g -s -n --container-image --container-command --container-args -c User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments?api-version=2022-05-01-preview response: body: - string: '{"value":[{"properties":{"source":{"type":"Jar","relativePath":"","runtimeVersion":"Java_8"},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-7845cb7f76-h5fts","status":"Running","discoveryStatus":"UNREGISTERED","startTime":"2022-05-20T08:57:01Z"}]},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:54.596018Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:56:54.596018Z"}}]}' + string: '{"value":[{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-bd94b545c-krv5v","status":"Running","discoveryStatus":"N/A","startTime":"2022-06-29T01:36:11Z"}],"source":{"type":"Container","relativePath":"","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"},"runtimeVersion":"Container","jvmOptions":"","artifactSelector":"","netCoreMainEntryPath":""}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:35:57.6725504Z"}}]}' headers: cache-control: - no-cache content-length: - - '949' + - '1511' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:58:24 GMT + - Wed, 29 Jun 2022 01:36:57 GMT expires: - '-1' pragma: @@ -928,17 +2472,17 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' + - '11999' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: body: '{"properties": {"source": {"type": "Container", "customContainer": {"server": - "docker.io", "containerImage": "springio/gs-spring-boot-docker"}}, "deploymentSettings": - {"resourceRequests": {"cpu": "1", "memory": "1Gi"}}}, "sku": {"name": "S0", - "tier": "Standard", "capacity": 1}}' + "docker.io", "containerImage": "springio/gs-spring-boot-docker", "command": + ["java"], "args": ["-cp", "/app/resources:/app/classes:/app/libs/*", "hello.Application"]}}, + "deploymentSettings": {}}, "sku": {"name": "S0", "tier": "Standard"}}' headers: Accept: - application/json @@ -949,33 +2493,33 @@ interactions: Connection: - keep-alive Content-Length: - - '278' + - '316' Content-Type: - application/json ParameterSetName: - - -g -s -n --container-image + - -g -s -n --container-image --container-command --container-args -c User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) - method: PUT + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: PATCH uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview response: body: - string: '{"properties":{"source":{"type":"Container","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"}},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90},"provisioningState":"Updating","status":"Running","active":true,"instances":null},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:54.596018Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:58:26.4936243Z"}}' + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90},"provisioningState":"Updating","status":"Running","active":true,"instances":null,"source":{"type":"Container","relativePath":"","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io","command":["java"],"args":["-cp","/app/resources:/app/classes:/app/libs/*","hello.Application"]},"runtimeVersion":"Container","jvmOptions":"","artifactSelector":"","netCoreMainEntryPath":""}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:36:59.4348016Z"}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/667ece02-e5d5-4456-b90d-785a6f24c188?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/3aaa5330-b7e2-4f8b-a578-c863bbd582d6?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '891' + - '1095' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:58:29 GMT + - Wed, 29 Jun 2022 01:36:59 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/667ece02-e5d5-4456-b90d-785a6f24c188/Spring/default?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/3aaa5330-b7e2-4f8b-a578-c863bbd582d6/Spring/default?api-version=2022-05-01-preview pragma: - no-cache request-context: @@ -989,7 +2533,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '1199' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -1005,14 +2549,64 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -s -n --container-image + - -g -s -n --container-image --container-command --container-args -c + User-Agent: + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/3aaa5330-b7e2-4f8b-a578-c863bbd582d6?api-version=2022-05-01-preview + response: + body: + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/3aaa5330-b7e2-4f8b-a578-c863bbd582d6","name":"3aaa5330-b7e2-4f8b-a578-c863bbd582d6","status":"Running","startTime":"2022-06-29T01:37:00.6097698Z"}' + headers: + cache-control: + - no-cache + content-length: + - '308' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jun 2022 01:37:31 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app deploy + Connection: + - keep-alive + ParameterSetName: + - -g -s -n --container-image --container-command --container-args -c User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/667ece02-e5d5-4456-b90d-785a6f24c188?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/3aaa5330-b7e2-4f8b-a578-c863bbd582d6?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/default/operationId/667ece02-e5d5-4456-b90d-785a6f24c188","name":"667ece02-e5d5-4456-b90d-785a6f24c188","status":"Succeeded","startTime":"2022-05-20T08:58:29.6379585Z","endTime":"2022-05-20T08:58:58.9544286Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/default/operationId/3aaa5330-b7e2-4f8b-a578-c863bbd582d6","name":"3aaa5330-b7e2-4f8b-a578-c863bbd582d6","status":"Succeeded","startTime":"2022-06-29T01:37:00.6097698Z","endTime":"2022-06-29T01:37:37.2096024Z"}' headers: cache-control: - no-cache @@ -1021,7 +2615,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:58:59 GMT + - Wed, 29 Jun 2022 01:37:41 GMT expires: - '-1' pragma: @@ -1039,7 +2633,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1055,23 +2649,23 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -s -n --container-image + - -g -s -n --container-image --container-command --container-args -c User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview response: body: - string: '{"properties":{"source":{"type":"Container","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"}},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-5fcd55d45-xqnj7","status":"Running","discoveryStatus":"N/A","startTime":"2022-05-20T08:58:40Z"}]},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:54.596018Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:58:26.4936243Z"}}' + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-776f9cccc4-9tm5f","status":"Running","discoveryStatus":"N/A","startTime":"2022-06-29T01:37:14Z"}],"source":{"type":"Container","relativePath":"","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io","command":["java"],"args":["-cp","/app/resources:/app/classes:/app/libs/*","hello.Application"]},"runtimeVersion":"Container","jvmOptions":"","artifactSelector":"","netCoreMainEntryPath":""}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:36:59.4348016Z"}}' headers: cache-control: - no-cache content-length: - - '1391' + - '1596' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:59:02 GMT + - Wed, 29 Jun 2022 01:37:44 GMT expires: - '-1' pragma: @@ -1091,7 +2685,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '11999' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1109,21 +2703,21 @@ interactions: ParameterSetName: - -g -s --app -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments?api-version=2022-05-01-preview response: body: - string: '{"value":[{"properties":{"source":{"type":"Container","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"}},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-5fcd55d45-xqnj7","status":"Running","discoveryStatus":"N/A","startTime":"2022-05-20T08:58:40Z"}]},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:56:54.596018Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:58:26.4936243Z"}}]}' + string: '{"value":[{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":true,"instances":[{"name":"test-container-default-14-776f9cccc4-9tm5f","status":"Running","discoveryStatus":"N/A","startTime":"2022-06-29T01:37:14Z"}],"source":{"type":"Container","relativePath":"","version":"","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io","command":["java"],"args":["-cp","/app/resources:/app/classes:/app/libs/*","hello.Application"]},"runtimeVersion":"Container","jvmOptions":"","artifactSelector":"","netCoreMainEntryPath":""}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/default","name":"default","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:34:30.6724142Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:36:59.4348016Z"}}]}' headers: cache-control: - no-cache content-length: - - '1403' + - '1608' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:59:07 GMT + - Wed, 29 Jun 2022 01:37:48 GMT expires: - '-1' pragma: @@ -1143,7 +2737,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '11999' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1168,27 +2762,27 @@ interactions: ParameterSetName: - -g -s --app -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview response: body: - string: '{"properties":{"source":{"type":"Container","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"}},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":0},"provisioningState":"Creating","status":"Running","active":false,"instances":null},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/green","name":"green","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:59:09.8559209Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:59:09.8559209Z"}}' + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90},"provisioningState":"Creating","status":"Running","active":false,"instances":null,"source":{"type":"Container","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"},"runtimeVersion":"Container"}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/green","name":"green","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:37:50.1587734Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:37:50.1587734Z"}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/green/operationId/bfe8dd6e-3c1a-46c6-a206-b48bf32027ec?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/green/operationId/b51ed889-1a97-4fdc-ad05-fbc1d3795bee?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '875' + - '901' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:59:10 GMT + - Wed, 29 Jun 2022 01:37:50 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/bfe8dd6e-3c1a-46c6-a206-b48bf32027ec/Spring/green?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationResults/b51ed889-1a97-4fdc-ad05-fbc1d3795bee/Spring/green?api-version=2022-05-01-preview pragma: - no-cache request-context: @@ -1202,7 +2796,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '1199' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 201 message: Created @@ -1220,12 +2814,12 @@ interactions: ParameterSetName: - -g -s --app -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/green/operationId/bfe8dd6e-3c1a-46c6-a206-b48bf32027ec?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/green/operationId/b51ed889-1a97-4fdc-ad05-fbc1d3795bee?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/green/operationId/bfe8dd6e-3c1a-46c6-a206-b48bf32027ec","name":"bfe8dd6e-3c1a-46c6-a206-b48bf32027ec","status":"Running","startTime":"2022-05-20T08:59:10.8257136Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/green/operationId/b51ed889-1a97-4fdc-ad05-fbc1d3795bee","name":"b51ed889-1a97-4fdc-ad05-fbc1d3795bee","status":"Running","startTime":"2022-06-29T01:37:51.0577862Z"}' headers: cache-control: - no-cache @@ -1234,7 +2828,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:59:40 GMT + - Wed, 29 Jun 2022 01:38:21 GMT expires: - '-1' pragma: @@ -1252,7 +2846,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1270,21 +2864,21 @@ interactions: ParameterSetName: - -g -s --app -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/green/operationId/bfe8dd6e-3c1a-46c6-a206-b48bf32027ec?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/green/operationId/b51ed889-1a97-4fdc-ad05-fbc1d3795bee?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/green/operationId/bfe8dd6e-3c1a-46c6-a206-b48bf32027ec","name":"bfe8dd6e-3c1a-46c6-a206-b48bf32027ec","status":"Succeeded","startTime":"2022-05-20T08:59:10.8257136Z","endTime":"2022-05-20T08:59:42.720343Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/westus/operationStatus/green/operationId/b51ed889-1a97-4fdc-ad05-fbc1d3795bee","name":"b51ed889-1a97-4fdc-ad05-fbc1d3795bee","status":"Succeeded","startTime":"2022-06-29T01:37:51.0577862Z","endTime":"2022-06-29T01:38:28.2710661Z"}' headers: cache-control: - no-cache content-length: - - '348' + - '349' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:59:52 GMT + - Wed, 29 Jun 2022 01:38:31 GMT expires: - '-1' pragma: @@ -1302,7 +2896,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1320,21 +2914,21 @@ interactions: ParameterSetName: - -g -s --app -n --container-image User-Agent: - - AZURECLI/2.36.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.3 (Windows-10-10.0.19041-SP0) + - AZURECLI/2.30.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.10 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/mock-deployment?api-version=2022-05-01-preview response: body: - string: '{"properties":{"source":{"type":"Container","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"}},"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":0,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":false,"instances":[{"name":"test-container-green-14-775674d868-5zgbd","status":"Running","discoveryStatus":"N/A","startTime":"2022-05-20T08:59:15Z"}]},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/green","name":"green","systemData":{"createdBy":"qingyliu@microsoft.com","createdByType":"User","createdAt":"2022-05-20T08:59:09.8559209Z","lastModifiedBy":"qingyliu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-05-20T08:59:09.8559209Z"}}' + string: '{"properties":{"deploymentSettings":{"resourceRequests":{"cpu":"1","memory":"1Gi"},"environmentVariables":null,"terminationGracePeriodSeconds":90,"livenessProbe":{"disableProbe":false,"failureThreshold":24,"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}},"readinessProbe":{"disableProbe":false,"failureThreshold":3,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1,"probeAction":{"type":"TCPSocketAction"}}},"provisioningState":"Succeeded","status":"Running","active":false,"instances":[{"name":"test-container-green-14-65688dc76c-rnkvq","status":"Running","discoveryStatus":"N/A","startTime":"2022-06-29T01:38:05Z"}],"source":{"type":"Container","customContainer":{"containerImage":"springio/gs-spring-boot-docker","server":"docker.io"},"runtimeVersion":"Container"}},"type":"Microsoft.AppPlatform/Spring/apps/deployments","sku":{"name":"S0","tier":"Standard","capacity":1},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest/apps/test-container/deployments/green","name":"green","systemData":{"createdBy":"xiangy@microsoft.com","createdByType":"User","createdAt":"2022-06-29T01:37:50.1587734Z","lastModifiedBy":"xiangy@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-06-29T01:37:50.1587734Z"}}' headers: cache-control: - no-cache content-length: - - '1374' + - '1400' content-type: - application/json; charset=utf-8 date: - - Fri, 20 May 2022 08:59:55 GMT + - Wed, 29 Jun 2022 01:38:34 GMT expires: - '-1' pragma: @@ -1354,7 +2948,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '11998' x-rp-server-mvid: - - 5e115b18-fadf-4457-94d9-ae330a47aa6b + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK diff --git a/src/spring/azext_spring/tests/latest/recordings/test_asc_app_insights_update.yaml b/src/spring/azext_spring/tests/latest/recordings/test_asc_app_insights_update.yaml index ff39c269bb6..98ae5b0ef99 100644 --- a/src/spring/azext_spring/tests/latest/recordings/test_asc_app_insights_update.yaml +++ b/src/spring/azext_spring/tests/latest/recordings/test_asc_app_insights_update.yaml @@ -7,50 +7,47 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - monitor app-insights component show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g --app + - -g -n --disable --no-wait User-Agent: - - python/3.9.5 (Windows-10-10.0.19043-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-applicationinsights/0.2.0 Azure-SDK-For-Python AZURECLI/2.27.1 - accept-language: - - en-US + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2020-02-02-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:31:26.7455551Z"}}' headers: - access-control-expose-headers: - - Request-Context cache-control: - no-cache content-length: - - '1072' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:01 GMT + - Sat, 02 Jul 2022 10:34:32 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - - Microsoft-IIS/10.0 + - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-powered-by: - - ASP.NET + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -72,31 +69,31 @@ interactions: ParameterSetName: - -g -n --disable --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/527fc4ab-6b09-44d8-b52d-dbf8e4a4acd5?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/3e7478d7-bd96-412b-97b8-f467ad14b151?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '413' + - '414' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:02 GMT + - Sat, 02 Jul 2022 10:34:49 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/527fc4ab-6b09-44d8-b52d-dbf8e4a4acd5/Spring/cli-unittest10?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/3e7478d7-bd96-412b-97b8-f467ad14b151/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -104,9 +101,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1197' + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -124,27 +121,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:34:33.4149466Z"}}' headers: cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:03 GMT + - Sat, 02 Jul 2022 10:34:52 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -155,8 +152,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -174,27 +173,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '413' + - '414' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:08 GMT + - Sat, 02 Jul 2022 10:34:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -206,7 +205,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -224,27 +223,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:34:33.4149466Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:12 GMT + - Sat, 02 Jul 2022 10:34:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -255,8 +254,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -272,29 +273,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:14 GMT + - Sat, 02 Jul 2022 10:35:01 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -306,7 +307,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -318,33 +319,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:34:33.4149466Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:16 GMT + - Sat, 02 Jul 2022 10:35:03 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -355,8 +356,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -368,55 +371,50 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 - (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2015-05-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: - access-control-expose-headers: - - Request-Context cache-control: - no-cache content-length: - - '1072' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:17 GMT + - Sat, 02 Jul 2022 10:35:05 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - - Microsoft-IIS/10.0 + - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-powered-by: - - ASP.NET + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 10.0}}' + body: null headers: Accept: - application/json @@ -426,51 +424,47 @@ interactions: - spring app-insights update Connection: - keep-alive - Content-Length: - - '232' - Content-Type: - - application/json ParameterSetName: - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:34:33.4149466Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/63b2e566-0323-4e7a-a613-4b084bf10676?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:17 GMT + - Sat, 02 Jul 2022 10:35:07 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/63b2e566-0323-4e7a-a613-4b084bf10676/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -479,33 +473,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:18 GMT + - Sat, 02 Jul 2022 10:35:09 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -517,7 +511,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -529,98 +523,123 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 + (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_202207021820?api-version=2015-05-01 response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_202207021820\",\r\n + \ \"name\": \"cli_scenario_test_202207021820\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"6600fdbb-0000-0100-0000-62c01c000000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli_scenario_test_202207021820\",\r\n \"AppId\": + \"79278c3a-4cfa-4e0a-89f3-ef1e49549f85\",\r\n \"Application_Type\": \"web\",\r\n + \ \"Flow_Type\": \"Redfield\",\r\n \"Request_Source\": \"IbizaAIExtension\",\r\n + \ \"InstrumentationKey\": \"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli_scenario_test_202207021820\",\r\n \"CreationDate\": + \"2022-07-02T10:20:48.4434483+00:00\",\r\n \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n + \ \"RetentionInDays\": 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n + \ \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"Ver\": \"v2\"\r\n }\r\n}" headers: + access-control-expose-headers: + - Request-Context cache-control: - no-cache content-length: - - '534' + - '1304' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:23 GMT + - Sat, 02 Jul 2022 10:35:10 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed server: - - nginx/1.17.7 + - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding,Accept-Encoding + - Accept-Encoding x-content-type-options: - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + x-powered-by: + - ASP.NET status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 10.0}}' headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/4eacec8f-eb56-45ad-a607-025fa76baa1c?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '535' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:28 GMT + - Sat, 02 Jul 2022 10:35:11 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/4eacec8f-eb56-45ad-a607-025fa76baa1c/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -633,29 +652,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:11.2820718Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:29 GMT + - Sat, 02 Jul 2022 10:35:13 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -666,8 +685,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -683,29 +704,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:31 GMT + - Sat, 02 Jul 2022 10:35:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -717,66 +738,62 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": false}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '39' - Content-Type: - - application/json ParameterSetName: - - -g -n --disable --no-wait + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:11.2820718Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/32aacb75-bebd-4ddf-b094-4526bf1cad8c?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:33 GMT + - Sat, 02 Jul 2022 10:35:20 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/32aacb75-bebd-4ddf-b094-4526bf1cad8c/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -791,27 +808,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '413' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:34 GMT + - Sat, 02 Jul 2022 10:35:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -823,7 +840,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -839,29 +856,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:11.2820718Z"}}' headers: cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:39 GMT + - Sat, 02 Jul 2022 10:35:24 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -872,8 +889,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -889,29 +908,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:44 GMT + - Sat, 02 Jul 2022 10:35:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -923,7 +942,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -941,27 +960,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:11.2820718Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:45 GMT + - Sat, 02 Jul 2022 10:35:26 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -972,8 +991,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -985,33 +1006,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:45 GMT + - Sat, 02 Jul 2022 10:35:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1023,7 +1044,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1039,51 +1060,48 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --disable --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 - (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2015-05-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:11.2820718Z"}}' headers: - access-control-expose-headers: - - Request-Context cache-control: - no-cache content-length: - - '1072' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:46 GMT + - Sat, 02 Jul 2022 10:35:30 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - - Microsoft-IIS/10.0 + - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-powered-by: - - ASP.NET + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 10.0}}' + body: '{"properties": {"traceEnabled": false}}' headers: Accept: - application/json @@ -1094,37 +1112,37 @@ interactions: Connection: - keep-alive Content-Length: - - '232' + - '39' Content-Type: - application/json ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --disable --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/825fe536-d9c0-4cd3-a60b-254c5666215d?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/9446e144-70cf-41ca-b6a7-d0b7aff40948?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '414' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:46 GMT + - Sat, 02 Jul 2022 10:35:33 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/825fe536-d9c0-4cd3-a60b-254c5666215d/Spring/cli-unittest10?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/9446e144-70cf-41ca-b6a7-d0b7aff40948/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1132,9 +1150,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1196' + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -1152,27 +1170,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:32.6349347Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:47 GMT + - Sat, 02 Jul 2022 10:35:35 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1183,8 +1201,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1202,27 +1222,77 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '414' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:36 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:32.6349347Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:52 GMT + - Sat, 02 Jul 2022 10:35:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1233,8 +1303,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1252,27 +1324,2727 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:43 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:32.6349347Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:44 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:45 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:32.6349347Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:48 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:49 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 + (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_202207021820?api-version=2015-05-01 + response: + body: + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_202207021820\",\r\n + \ \"name\": \"cli_scenario_test_202207021820\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"6600fdbb-0000-0100-0000-62c01c000000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli_scenario_test_202207021820\",\r\n \"AppId\": + \"79278c3a-4cfa-4e0a-89f3-ef1e49549f85\",\r\n \"Application_Type\": \"web\",\r\n + \ \"Flow_Type\": \"Redfield\",\r\n \"Request_Source\": \"IbizaAIExtension\",\r\n + \ \"InstrumentationKey\": \"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli_scenario_test_202207021820\",\r\n \"CreationDate\": + \"2022-07-02T10:20:48.4434483+00:00\",\r\n \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n + \ \"RetentionInDays\": 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n + \ \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"Ver\": \"v2\"\r\n }\r\n}" + headers: + access-control-expose-headers: + - Request-Context + cache-control: + - no-cache + content-length: + - '1304' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:50 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 10.0}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/63d753cf-4aeb-42fb-a635-db62796cae58?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '598' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:51 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/63d753cf-4aeb-42fb-a635-db62796cae58/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:51.3395913Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:52 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '598' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:53 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:51.3395913Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:35:58 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:00 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:51.3395913Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:02 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:05 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:51.3395913Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:07 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:08 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --disable --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:35:51.3395913Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:10 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + Content-Length: + - '39' + Content-Type: + - application/json + ParameterSetName: + - -g -n --disable --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/e893ebcf-83da-4758-a3c6-fadb502cafb1?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '414' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:12 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/e893ebcf-83da-4758-a3c6-fadb502cafb1/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:12.4962802Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:14 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '414' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:17 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:12.4962802Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:21 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:23 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:12.4962802Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:24 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:26 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:12.4962802Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:28 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:29 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "e157df4b-c2b4-4d03-b2bc-b85f6570ee8d", "appInsightsSamplingRate": 10.0}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + Content-Length: + - '144' + Content-Type: + - application/json + ParameterSetName: + - -g -n --no-wait --app-insights-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/11f454d1-c35a-4ffd-bf2d-93c1f1f1f708?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '447' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:30 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/11f454d1-c35a-4ffd-bf2d-93c1f1f1f708/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:30.567439Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '767' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:33 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '447' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:34 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:30.567439Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '767' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:38 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '448' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:40 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:30.567439Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '767' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:42 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '448' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:43 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:30.567439Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '767' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:45 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '448' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:46 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --disable --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:30.567439Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '767' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:48 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + Content-Length: + - '39' + Content-Type: + - application/json + ParameterSetName: + - -g -n --disable --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/ed7d3a8b-7e26-44d0-965f-278e166165c5?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '414' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:50 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/ed7d3a8b-7e26-44d0-965f-278e166165c5/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:49.4585506Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:51 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '414' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:53 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:49.4585506Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:57 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:36:58 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:49.4585506Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:00 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:02 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:49.4585506Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:04 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:06 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 10.0}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + ParameterSetName: + - -g -n --no-wait --app-insights-key + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/a736bfd6-5d87-4a63-a2c8-715a03de2849?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '598' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:07 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/a736bfd6-5d87-4a63-a2c8-715a03de2849/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1196' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:06.4181491Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:09 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '598' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:10 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:06.4181491Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:15 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:17 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:06.4181491Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:17 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:20 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:06.4181491Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:37:22 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:55 GMT + - Sat, 02 Jul 2022 10:37:23 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1284,7 +4056,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1296,33 +4068,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:06.4181491Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:55 GMT + - Sat, 02 Jul 2022 10:37:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1333,8 +4105,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1346,33 +4120,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:56 GMT + - Sat, 02 Jul 2022 10:37:26 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1384,12 +4158,14 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": false}}' + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 0.0}}' headers: Accept: - application/json @@ -1400,37 +4176,37 @@ interactions: Connection: - keep-alive Content-Length: - - '39' + - '294' Content-Type: - application/json ParameterSetName: - - -g -n --disable --no-wait + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/f07afd54-7d4c-4555-ac28-06f67096b2ff?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/e0908ebf-108d-4804-8000-6ab3f75e319c?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '413' + - '597' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:57 GMT + - Sat, 02 Jul 2022 10:37:27 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/f07afd54-7d4c-4555-ac28-06f67096b2ff/Spring/cli-unittest10?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/e0908ebf-108d-4804-8000-6ab3f75e319c/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1438,9 +4214,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -1458,27 +4234,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:27.5729199Z"}}' headers: cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 04:59:58 GMT + - Sat, 02 Jul 2022 10:37:29 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1489,8 +4265,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1508,27 +4286,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '413' + - '597' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:02 GMT + - Sat, 02 Jul 2022 10:37:31 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1540,7 +4318,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1558,27 +4336,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:27.5729199Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:06 GMT + - Sat, 02 Jul 2022 10:37:35 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1589,8 +4367,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11993' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1606,29 +4386,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:08 GMT + - Sat, 02 Jul 2022 10:37:36 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1640,7 +4420,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1652,33 +4432,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights-key + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:27.5729199Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:07 GMT + - Sat, 02 Jul 2022 10:37:38 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1689,68 +4469,63 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "1a5759a2-f52e-4488-b4e8-ee351244ca73", "appInsightsSamplingRate": 10.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '144' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --app-insights-key + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/c3f0275c-d829-455d-9fef-da068356b63e?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '446' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:08 GMT + - Sat, 02 Jul 2022 10:37:39 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/c3f0275c-d829-455d-9fef-da068356b63e/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -1763,29 +4538,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:27.5729199Z"}}' headers: cache-control: - no-cache content-length: - - '446' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:09 GMT + - Sat, 02 Jul 2022 10:37:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1796,8 +4571,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1813,29 +4590,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '446' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:14 GMT + - Sat, 02 Jul 2022 10:37:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1847,7 +4624,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1859,33 +4636,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:27.5729199Z"}}' headers: cache-control: - no-cache content-length: - - '447' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:17 GMT + - Sat, 02 Jul 2022 10:37:43 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1896,8 +4673,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1909,33 +4688,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '447' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:18 GMT + - Sat, 02 Jul 2022 10:37:46 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1947,116 +4726,120 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 0.1}}' headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive + Content-Length: + - '294' + Content-Type: + - application/json ParameterSetName: - - -n -g + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/3e40334e-2cf9-413b-8267-f8bb7707e862?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '447' + - '597' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:19 GMT + - Sat, 02 Jul 2022 10:37:47 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/3e40334e-2cf9-413b-8267-f8bb7707e862/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: - body: '{"properties": {"traceEnabled": false}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '39' - Content-Type: - - application/json ParameterSetName: - - -g -n --disable --no-wait + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:46.9449185Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/a83ed277-7fb5-4f7f-9feb-d35474d10053?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:19 GMT + - Sat, 02 Jul 2022 10:37:48 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/a83ed277-7fb5-4f7f-9feb-d35474d10053/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -2071,27 +4854,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '413' + - '597' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:20 GMT + - Sat, 02 Jul 2022 10:37:50 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2103,7 +4886,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2121,27 +4904,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:46.9449185Z"}}' headers: cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:23 GMT + - Sat, 02 Jul 2022 10:37:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2152,8 +4935,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2171,27 +4956,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:27 GMT + - Sat, 02 Jul 2022 10:37:55 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2203,7 +4988,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2221,27 +5006,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:46.9449185Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:28 GMT + - Sat, 02 Jul 2022 10:37:58 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2252,8 +5037,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11994' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2265,33 +5052,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights-key + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:30 GMT + - Sat, 02 Jul 2022 10:37:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2303,68 +5090,62 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 10.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '232' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --app-insights-key + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:46.9449185Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/2d78de64-ce37-4d96-a417-d7c70fd5b71f?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:30 GMT + - Sat, 02 Jul 2022 10:38:00 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/2d78de64-ce37-4d96-a417-d7c70fd5b71f/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1197' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11992' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -2377,29 +5158,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:31 GMT + - Sat, 02 Jul 2022 10:38:03 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2411,7 +5192,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2423,33 +5204,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:46.9449185Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:36 GMT + - Sat, 02 Jul 2022 10:38:04 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2460,8 +5241,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2473,33 +5256,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:40 GMT + - Sat, 02 Jul 2022 10:38:06 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2511,10 +5294,68 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK +- request: + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 1.0}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + Content-Length: + - '294' + Content-Type: + - application/json + ParameterSetName: + - -g -n --no-wait --sampling-rate + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/e65d84c9-90c4-4d6f-b6f7-18240f530f2c?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '597' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:38:07 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/e65d84c9-90c4-4d6f-b6f7-18240f530f2c/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted - request: body: null headers: @@ -2527,29 +5368,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:06.4918407Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:41 GMT + - Sat, 02 Jul 2022 10:38:09 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2560,8 +5401,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2577,29 +5420,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '597' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:41 GMT + - Sat, 02 Jul 2022 10:38:10 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2611,7 +5454,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2623,33 +5466,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --sampling-rate + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:06.4918407Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:42 GMT + - Sat, 02 Jul 2022 10:38:15 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2660,69 +5503,63 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 0.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '231' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --sampling-rate + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/fe1507a0-f667-4b36-b5b8-5c565d05dbca?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '533' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:42 GMT + - Sat, 02 Jul 2022 10:38:16 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/fe1507a0-f667-4b36-b5b8-5c565d05dbca/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -2735,29 +5572,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:06.4918407Z"}}' headers: cache-control: - no-cache content-length: - - '533' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:43 GMT + - Sat, 02 Jul 2022 10:38:17 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2768,8 +5605,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2785,29 +5624,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '533' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:47 GMT + - Sat, 02 Jul 2022 10:38:19 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2819,7 +5658,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2835,29 +5674,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:06.4918407Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:51 GMT + - Sat, 02 Jul 2022 10:38:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2868,8 +5707,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2887,27 +5728,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:52 GMT + - Sat, 02 Jul 2022 10:38:23 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2919,7 +5760,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2931,33 +5772,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:06.4918407Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:53 GMT + - Sat, 02 Jul 2022 10:38:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2968,8 +5809,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2987,27 +5830,27 @@ interactions: ParameterSetName: - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:54 GMT + - Sat, 02 Jul 2022 10:38:26 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3019,14 +5862,14 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 0.1}}' + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 10.0}}' headers: Accept: - application/json @@ -3037,37 +5880,37 @@ interactions: Connection: - keep-alive Content-Length: - - '231' + - '295' Content-Type: - application/json ParameterSetName: - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/8a725d80-0dda-4c84-8335-23c82097af91?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/416ea116-6d24-41b9-8330-c6b9177c883e?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '533' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:54 GMT + - Sat, 02 Jul 2022 10:38:27 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/8a725d80-0dda-4c84-8335-23c82097af91/Spring/cli-unittest10?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/416ea116-6d24-41b9-8330-c6b9177c883e/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3075,9 +5918,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1199' + - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -3095,27 +5938,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:26.9814628Z"}}' headers: cache-control: - no-cache content-length: - - '533' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:55 GMT + - Sat, 02 Jul 2022 10:38:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3126,8 +5969,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3145,27 +5990,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '533' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:00:59 GMT + - Sat, 02 Jul 2022 10:38:30 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3177,7 +6022,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3195,27 +6040,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:26.9814628Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:02 GMT + - Sat, 02 Jul 2022 10:38:34 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3226,8 +6071,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3243,29 +6090,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:03 GMT + - Sat, 02 Jul 2022 10:38:37 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3277,7 +6124,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3295,27 +6142,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:26.9814628Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:04 GMT + - Sat, 02 Jul 2022 10:38:38 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3326,8 +6173,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11991' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3339,33 +6188,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:05 GMT + - Sat, 02 Jul 2022 10:38:39 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3377,68 +6226,62 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 1.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '231' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:26.9814628Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/bdc93eaf-38ae-4f77-b72c-15307dee8344?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '533' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:05 GMT + - Sat, 02 Jul 2022 10:38:40 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/bdc93eaf-38ae-4f77-b72c-15307dee8344/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -3451,29 +6294,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '533' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:06 GMT + - Sat, 02 Jul 2022 10:38:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3485,7 +6328,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3497,33 +6340,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:26.9814628Z"}}' headers: cache-control: - no-cache content-length: - - '533' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:10 GMT + - Sat, 02 Jul 2022 10:38:43 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3534,8 +6377,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3547,33 +6392,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:14 GMT + - Sat, 02 Jul 2022 10:38:44 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3585,10 +6430,68 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK +- request: + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 50.0}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights update + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + ParameterSetName: + - -g -n --no-wait --sampling-rate + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/9ddbeaf5-00e5-4124-ad53-ea3a95863f5a?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '598' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:38:45 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/9ddbeaf5-00e5-4124-ad53-ea3a95863f5a/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted - request: body: null headers: @@ -3601,29 +6504,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:45.7241426Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:15 GMT + - Sat, 02 Jul 2022 10:38:47 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3634,8 +6537,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3651,29 +6556,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:15 GMT + - Sat, 02 Jul 2022 10:38:48 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3685,7 +6590,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3697,33 +6602,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --sampling-rate + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:45.7241426Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:17 GMT + - Sat, 02 Jul 2022 10:38:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3734,69 +6639,63 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 10.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '232' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --sampling-rate + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/02b80f8a-1b8d-443e-85ce-b7eaa8ce491e?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:18 GMT + - Sat, 02 Jul 2022 10:38:55 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/02b80f8a-1b8d-443e-85ce-b7eaa8ce491e/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -3809,29 +6708,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:45.7241426Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:18 GMT + - Sat, 02 Jul 2022 10:38:57 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3842,8 +6741,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3859,29 +6760,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:22 GMT + - Sat, 02 Jul 2022 10:38:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3893,7 +6794,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3909,29 +6810,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:45.7241426Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:26 GMT + - Sat, 02 Jul 2022 10:39:01 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3942,8 +6843,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3961,27 +6864,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:27 GMT + - Sat, 02 Jul 2022 10:39:02 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3993,7 +6896,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4005,33 +6908,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:38:45.7241426Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:28 GMT + - Sat, 02 Jul 2022 10:39:04 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4042,8 +6945,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4061,27 +6966,27 @@ interactions: ParameterSetName: - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:29 GMT + - Sat, 02 Jul 2022 10:39:05 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4093,14 +6998,14 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 50.0}}' + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 99.0}}' headers: Accept: - application/json @@ -4111,37 +7016,37 @@ interactions: Connection: - keep-alive Content-Length: - - '232' + - '295' Content-Type: - application/json ParameterSetName: - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/4a2171be-45c8-4aa8-8612-0554aefb8f9b?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/60bf9bb1-443b-42e8-8f67-a49f4ee4b949?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:30 GMT + - Sat, 02 Jul 2022 10:39:06 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/4a2171be-45c8-4aa8-8612-0554aefb8f9b/Spring/cli-unittest10?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/60bf9bb1-443b-42e8-8f67-a49f4ee4b949/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4151,7 +7056,7 @@ interactions: x-ms-ratelimit-remaining-subscription-writes: - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -4169,27 +7074,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:06.0770506Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:32 GMT + - Sat, 02 Jul 2022 10:39:08 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4200,8 +7105,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4219,27 +7126,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:36 GMT + - Sat, 02 Jul 2022 10:39:09 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4251,7 +7158,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4269,27 +7176,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:06.0770506Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:39 GMT + - Sat, 02 Jul 2022 10:39:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4300,8 +7207,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4317,29 +7226,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:41 GMT + - Sat, 02 Jul 2022 10:39:16 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4351,7 +7260,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4369,27 +7278,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:06.0770506Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:41 GMT + - Sat, 02 Jul 2022 10:39:18 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4400,8 +7309,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11994' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4413,33 +7324,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":50.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:43 GMT + - Sat, 02 Jul 2022 10:39:19 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4451,68 +7362,62 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 99.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '232' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:06.0770506Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/07c18bca-46b3-4f8c-bcc6-ddf27b12b297?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:43 GMT + - Sat, 02 Jul 2022 10:39:20 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/07c18bca-46b3-4f8c-bcc6-ddf27b12b297/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -4525,29 +7430,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:44 GMT + - Sat, 02 Jul 2022 10:39:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4559,7 +7464,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4571,33 +7476,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:06.0770506Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:48 GMT + - Sat, 02 Jul 2022 10:39:23 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4608,8 +7513,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4621,33 +7528,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:52 GMT + - Sat, 02 Jul 2022 10:39:23 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4659,60 +7566,68 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 100.0}}' headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring app-insights update Connection: - keep-alive + Content-Length: + - '296' + Content-Type: + - application/json ParameterSetName: - - -n -g + - -g -n --no-wait --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/9a0b06ab-d349-4d3e-937e-d2547f92a40e?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:52 GMT + - Sat, 02 Jul 2022 10:39:25 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/9a0b06ab-d349-4d3e-937e-d2547f92a40e/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -4725,29 +7640,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:25.1186118Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:53 GMT + - Sat, 02 Jul 2022 10:39:26 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4758,8 +7673,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4771,33 +7688,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --sampling-rate + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":99.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:55 GMT + - Sat, 02 Jul 2022 10:39:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4809,68 +7726,62 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 100.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '233' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --sampling-rate + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:25.1186118Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/3882ea3a-2a5e-4da9-b320-684b38e6727c?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:55 GMT + - Sat, 02 Jul 2022 10:39:33 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/3882ea3a-2a5e-4da9-b320-684b38e6727c/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1196' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -4885,27 +7796,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '600' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:55 GMT + - Sat, 02 Jul 2022 10:39:35 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4917,7 +7828,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4933,29 +7844,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:25.1186118Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:01:59 GMT + - Sat, 02 Jul 2022 10:39:36 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4966,8 +7877,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4983,29 +7896,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '536' + - '600' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:02:04 GMT + - Sat, 02 Jul 2022 10:39:38 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5017,7 +7930,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5035,27 +7948,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:25.1186118Z"}}' headers: cache-control: - no-cache content-length: - - '536' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:02:04 GMT + - Sat, 02 Jul 2022 10:39:40 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5066,8 +7979,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11994' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5085,27 +8000,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '536' + - '600' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:02:05 GMT + - Sat, 02 Jul 2022 10:39:42 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5117,7 +8032,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK diff --git a/src/spring/azext_spring/tests/latest/recordings/test_asc_update.yaml b/src/spring/azext_spring/tests/latest/recordings/test_asc_update.yaml index d88060bd0e6..0166da9ec4a 100644 --- a/src/spring/azext_spring/tests/latest/recordings/test_asc_update.yaml +++ b/src/spring/azext_spring/tests/latest/recordings/test_asc_update.yaml @@ -7,50 +7,1043 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - monitor app-insights component show + - spring update + Connection: + - keep-alive + ParameterSetName: + - -g -n --disable-app-insights --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:39:25.1186118Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:15 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring update + Connection: + - keep-alive + ParameterSetName: + - -g -n --disable-app-insights --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":100.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '600' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:16 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": false}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring update + Connection: + - keep-alive + Content-Length: + - '39' + Content-Type: + - application/json + ParameterSetName: + - -g -n --disable-app-insights --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/2fa1119f-4645-4aed-a55d-07e9abf2c8d1?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '414' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:17 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/2fa1119f-4645-4aed-a55d-07e9abf2c8d1/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:17.2734231Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:19 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '414' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:22 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:17.2734231Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:26 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11990' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:28 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:17.2734231Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:30 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:32 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:17.2734231Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:35 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '415' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:36 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring update + Connection: + - keep-alive + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 + (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_202207021820?api-version=2015-05-01 + response: + body: + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_202207021820\",\r\n + \ \"name\": \"cli_scenario_test_202207021820\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"6600fdbb-0000-0100-0000-62c01c000000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli_scenario_test_202207021820\",\r\n \"AppId\": + \"79278c3a-4cfa-4e0a-89f3-ef1e49549f85\",\r\n \"Application_Type\": \"web\",\r\n + \ \"Flow_Type\": \"Redfield\",\r\n \"Request_Source\": \"IbizaAIExtension\",\r\n + \ \"InstrumentationKey\": \"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli_scenario_test_202207021820\",\r\n \"CreationDate\": + \"2022-07-02T10:20:48.4434483+00:00\",\r\n \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n + \ \"RetentionInDays\": 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n + \ \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"Ver\": \"v2\"\r\n }\r\n}" + headers: + access-control-expose-headers: + - Request-Context + cache-control: + - no-cache + content-length: + - '1304' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:37 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring update + Connection: + - keep-alive + Content-Length: + - '262' + Content-Type: + - application/json + ParameterSetName: + - -g -n --no-wait --app-insights + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/78d5b0c8-e992-4841-b2df-7e6147c546b5?api-version=2020-11-01-preview + cache-control: + - no-cache + content-length: + - '598' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:39 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/78d5b0c8-e992-4841-b2df-7e6147c546b5/Spring/cli-unittest10?api-version=2020-11-01-preview + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:38.3964064Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:39 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '598' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:41 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:38.3964064Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:47 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11994' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -g -n --query -o + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:48 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:38.3964064Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '768' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:50 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + response: + body: + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + headers: + cache-control: + - no-cache + content-length: + - '599' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:44:51 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring update Connection: - keep-alive ParameterSetName: - - -g --app + - -g -n --disable-app-insights --no-wait User-Agent: - - python/3.9.5 (Windows-10-10.0.19043-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-applicationinsights/0.2.0 Azure-SDK-For-Python AZURECLI/2.27.1 - accept-language: - - en-US + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2020-02-02-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:38.3964064Z"}}' headers: - access-control-expose-headers: - - Request-Context cache-control: - no-cache content-length: - - '1072' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:49 GMT + - Sat, 02 Jul 2022 10:44:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - - Microsoft-IIS/10.0 + - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-powered-by: - - ASP.NET + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -68,27 +1061,27 @@ interactions: ParameterSetName: - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '432' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:50 GMT + - Sat, 02 Jul 2022 10:44:55 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -99,15 +1092,13 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": false}}' headers: Accept: - application/json @@ -117,16 +1108,22 @@ interactions: - spring update Connection: - keep-alive + Content-Length: + - '39' + Content-Type: + - application/json ParameterSetName: - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/737f14e7-fb8d-4fb9-bbcc-cde8c77e0b6c?api-version=2020-11-01-preview cache-control: - no-cache content-length: @@ -134,28 +1131,28 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:51 GMT + - Sat, 02 Jul 2022 10:44:56 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/737f14e7-fb8d-4fb9-bbcc-cde8c77e0b6c/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -170,27 +1167,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:56.0010121Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:52 GMT + - Sat, 02 Jul 2022 10:44:58 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -201,8 +1198,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -218,14 +1217,14 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache @@ -234,13 +1233,13 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:54 GMT + - Sat, 02 Jul 2022 10:44:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -252,7 +1251,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -264,33 +1263,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:56.0010121Z"}}' headers: cache-control: - no-cache content-length: - - '432' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:56 GMT + - Sat, 02 Jul 2022 10:45:05 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -302,9 +1301,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11996' + - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -316,33 +1315,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:57 GMT + - Sat, 02 Jul 2022 10:45:07 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -354,7 +1353,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -366,108 +1365,100 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 - (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2015-05-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:56.0010121Z"}}' headers: - access-control-expose-headers: - - Request-Context cache-control: - no-cache content-length: - - '1072' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:58 GMT + - Sat, 02 Jul 2022 10:45:08 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - - Microsoft-IIS/10.0 + - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-powered-by: - - ASP.NET + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '199' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/e89c7106-dc33-4404-a9fa-c7009579b42b?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:58 GMT + - Sat, 02 Jul 2022 10:45:09 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/e89c7106-dc33-4404-a9fa-c7009579b42b/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -476,33 +1467,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:44:56.0010121Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:44:59 GMT + - Sat, 02 Jul 2022 10:45:12 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -513,8 +1504,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -526,33 +1519,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:04 GMT + - Sat, 02 Jul 2022 10:45:13 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -564,7 +1557,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -576,98 +1569,122 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 + (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_202207021820?api-version=2015-05-01 response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_202207021820\",\r\n + \ \"name\": \"cli_scenario_test_202207021820\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"6600fdbb-0000-0100-0000-62c01c000000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli_scenario_test_202207021820\",\r\n \"AppId\": + \"79278c3a-4cfa-4e0a-89f3-ef1e49549f85\",\r\n \"Application_Type\": \"web\",\r\n + \ \"Flow_Type\": \"Redfield\",\r\n \"Request_Source\": \"IbizaAIExtension\",\r\n + \ \"InstrumentationKey\": \"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli_scenario_test_202207021820\",\r\n \"CreationDate\": + \"2022-07-02T10:20:48.4434483+00:00\",\r\n \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n + \ \"RetentionInDays\": 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n + \ \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"Ver\": \"v2\"\r\n }\r\n}" headers: + access-control-expose-headers: + - Request-Context cache-control: - no-cache content-length: - - '535' + - '1304' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:08 GMT + - Sat, 02 Jul 2022 10:45:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed server: - - nginx/1.17.7 + - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding,Accept-Encoding + - Accept-Encoding x-content-type-options: - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + x-powered-by: + - ASP.NET status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"}}' headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive + Content-Length: + - '262' + Content-Type: + - application/json ParameterSetName: - - -n -g + - -g -n --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/de453699-27ed-49ba-a213-6e6e7213071b?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '535' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:11 GMT + - Sat, 02 Jul 2022 10:45:16 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/de453699-27ed-49ba-a213-6e6e7213071b/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -676,33 +1693,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:15.6162002Z"}}' headers: cache-control: - no-cache content-length: - - '432' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:12 GMT + - Sat, 02 Jul 2022 10:45:18 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -714,9 +1731,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11994' + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -728,33 +1745,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:12 GMT + - Sat, 02 Jul 2022 10:45:20 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -766,66 +1783,62 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": false}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '39' - Content-Type: - - application/json ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:15.6162002Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/7a466754-5199-4d15-8d90-0940665ec99f?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:13 GMT + - Sat, 02 Jul 2022 10:45:24 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/7a466754-5199-4d15-8d90-0940665ec99f/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1197' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -840,27 +1853,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '413' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:13 GMT + - Sat, 02 Jul 2022 10:45:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -872,7 +1885,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -888,29 +1901,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:15.6162002Z"}}' headers: cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:17 GMT + - Sat, 02 Jul 2022 10:45:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -921,8 +1934,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11993' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -938,29 +1953,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:22 GMT + - Sat, 02 Jul 2022 10:45:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -972,7 +1987,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -984,33 +1999,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:15.6162002Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:22 GMT + - Sat, 02 Jul 2022 10:45:30 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1021,8 +2036,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1038,29 +2055,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '432' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:23 GMT + - Sat, 02 Jul 2022 10:45:33 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1071,15 +2088,13 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11991' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": false}}' headers: Accept: - application/json @@ -1089,16 +2104,22 @@ interactions: - spring update Connection: - keep-alive + Content-Length: + - '39' + Content-Type: + - application/json ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/ee974dda-ed60-4a42-9efd-44f7f6f813fb?api-version=2020-11-01-preview cache-control: - no-cache content-length: @@ -1106,28 +2127,28 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:24 GMT + - Sat, 02 Jul 2022 10:45:34 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/ee974dda-ed60-4a42-9efd-44f7f6f813fb/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -1136,108 +2157,100 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 - (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2015-05-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:34.0554291Z"}}' headers: - access-control-expose-headers: - - Request-Context cache-control: - no-cache content-length: - - '1072' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:25 GMT + - Sat, 02 Jul 2022 10:45:36 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - - Microsoft-IIS/10.0 + - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-powered-by: - - ASP.NET + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '199' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --app-insights + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/c9a75abc-b835-4c75-abd6-7807725e1cd1?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '414' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:25 GMT + - Sat, 02 Jul 2022 10:45:36 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/c9a75abc-b835-4c75-abd6-7807725e1cd1/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1195' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -1252,27 +2265,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:34.0554291Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:26 GMT + - Sat, 02 Jul 2022 10:45:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1283,8 +2296,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1302,27 +2317,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:30 GMT + - Sat, 02 Jul 2022 10:45:42 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1334,7 +2349,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1350,29 +2365,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:34.0554291Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:34 GMT + - Sat, 02 Jul 2022 10:45:43 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1383,8 +2398,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1402,27 +2419,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:35 GMT + - Sat, 02 Jul 2022 10:45:44 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1434,7 +2451,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1450,29 +2467,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --no-wait --app-insights-key User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:34.0554291Z"}}' headers: cache-control: - no-cache content-length: - - '432' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:35 GMT + - Sat, 02 Jul 2022 10:45:47 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1484,9 +2501,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' + - '11994' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1502,29 +2519,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --no-wait --app-insights-key User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:36 GMT + - Sat, 02 Jul 2022 10:45:49 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1536,12 +2553,13 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": false}}' + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"}}' headers: Accept: - application/json @@ -1552,37 +2570,37 @@ interactions: Connection: - keep-alive Content-Length: - - '39' + - '111' Content-Type: - application/json ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --no-wait --app-insights-key User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/260640cb-ed50-47fc-b9ce-0d9473f70e4f?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/efa616a3-f4c0-498f-a9f0-f0b6ae13e226?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '413' + - '447' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:36 GMT + - Sat, 02 Jul 2022 10:45:51 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/260640cb-ed50-47fc-b9ce-0d9473f70e4f/Spring/cli-unittest10?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/efa616a3-f4c0-498f-a9f0-f0b6ae13e226/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1590,9 +2608,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -1610,27 +2628,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:50.4180251Z"}}' headers: cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:37 GMT + - Sat, 02 Jul 2022 10:45:52 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1641,8 +2659,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1660,27 +2680,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '413' + - '447' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:42 GMT + - Sat, 02 Jul 2022 10:45:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1692,7 +2712,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1710,27 +2730,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:50.4180251Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:45 GMT + - Sat, 02 Jul 2022 10:45:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1741,8 +2761,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1758,29 +2780,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '448' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:46 GMT + - Sat, 02 Jul 2022 10:46:00 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1792,7 +2814,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1804,33 +2826,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights-key + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:50.4180251Z"}}' headers: cache-control: - no-cache content-length: - - '432' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:46 GMT + - Sat, 02 Jul 2022 10:46:02 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1842,9 +2864,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11996' + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1856,33 +2878,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights-key + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '448' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:48 GMT + - Sat, 02 Jul 2022 10:46:04 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1894,13 +2916,12 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "1a5759a2-f52e-4488-b4e8-ee351244ca73"}}' + body: null headers: Accept: - application/json @@ -1910,51 +2931,47 @@ interactions: - spring update Connection: - keep-alive - Content-Length: - - '111' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --app-insights-key + - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:45:50.4180251Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/62d6634a-aade-4ab6-8ad9-57fce68249e0?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '446' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:48 GMT + - Sat, 02 Jul 2022 10:46:06 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/62d6634a-aade-4ab6-8ad9-57fce68249e0/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1195' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -1963,33 +2980,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '446' + - '448' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:49 GMT + - Sat, 02 Jul 2022 10:46:07 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2001,60 +3018,66 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": false}}' headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive + Content-Length: + - '39' + Content-Type: + - application/json ParameterSetName: - - -g -n --query -o + - -g -n --disable-app-insights --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/abbcf879-525c-4bc9-9262-3955a501e9d8?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '446' + - '414' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:53 GMT + - Sat, 02 Jul 2022 10:46:09 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/abbcf879-525c-4bc9-9262-3955a501e9d8/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -2069,27 +3092,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:08.8904826Z"}}' headers: cache-control: - no-cache content-length: - - '447' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:56 GMT + - Sat, 02 Jul 2022 10:46:10 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2100,8 +3123,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2117,29 +3142,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '447' + - '414' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:58 GMT + - Sat, 02 Jul 2022 10:46:11 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2151,7 +3176,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2163,33 +3188,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:08.8904826Z"}}' headers: cache-control: - no-cache content-length: - - '432' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:58 GMT + - Sat, 02 Jul 2022 10:46:16 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2201,9 +3226,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11997' + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2215,33 +3240,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --disable-app-insights --no-wait + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '447' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:45:59 GMT + - Sat, 02 Jul 2022 10:46:18 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2253,66 +3278,10 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK -- request: - body: '{"properties": {"traceEnabled": false}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring update - Connection: - - keep-alive - Content-Length: - - '39' - Content-Type: - - application/json - ParameterSetName: - - -g -n --disable-app-insights --no-wait - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview - response: - body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/c59b1432-a7d2-4f0c-940c-6027faaaa02f?api-version=2020-11-01-preview - cache-control: - - no-cache - content-length: - - '413' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 03:46:00 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/c59b1432-a7d2-4f0c-940c-6027faaaa02f/Spring/cli-unittest10?api-version=2020-11-01-preview - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1197' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 202 - message: Accepted - request: body: null headers: @@ -2325,29 +3294,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:08.8904826Z"}}' headers: cache-control: - no-cache content-length: - - '413' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:00 GMT + - Sat, 02 Jul 2022 10:46:20 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2358,8 +3327,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2375,29 +3346,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '413' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:04 GMT + - Sat, 02 Jul 2022 10:46:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2409,7 +3380,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2421,33 +3392,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -g -n --no-wait --app-insights-key User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:08.8904826Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:08 GMT + - Sat, 02 Jul 2022 10:46:23 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2458,8 +3429,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2471,33 +3444,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring update Connection: - keep-alive ParameterSetName: - - -n -g + - -g -n --no-wait --app-insights-key User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '414' + - '415' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:08 GMT + - Sat, 02 Jul 2022 10:46:24 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2509,12 +3482,13 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"}}' headers: Accept: - application/json @@ -2524,47 +3498,51 @@ interactions: - spring update Connection: - keep-alive + Content-Length: + - '262' + Content-Type: + - application/json ParameterSetName: - -g -n --no-wait --app-insights-key User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"e2c3dcb4663b49d891a84af0d6fa556f","networkProfile":{"outboundIPs":{"publicIPs":["52.186.105.180"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest10/operationId/d0fffb87-68dc-4832-a879-33ea3e9bd5f4?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '432' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:09 GMT + - Sat, 02 Jul 2022 10:46:26 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/d0fffb87-68dc-4832-a879-33ea3e9bd5f4/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11993' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -2573,33 +3551,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -g -n --no-wait --app-insights-key + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:26.1402904Z"}}' headers: cache-control: - no-cache content-length: - - '414' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:11 GMT + - Sat, 02 Jul 2022 10:46:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2610,68 +3588,63 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring update + - spring app-insights show Connection: - keep-alive - Content-Length: - - '199' - Content-Type: - - application/json ParameterSetName: - - -g -n --no-wait --app-insights-key + - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest10/operationId/370de0d5-c30a-4803-a738-0669533dfd7e?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:12 GMT + - Sat, 02 Jul 2022 10:46:29 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/370de0d5-c30a-4803-a738-0669533dfd7e/Spring/cli-unittest10?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1197' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -2686,27 +3659,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:26.1402904Z"}}' headers: cache-control: - no-cache content-length: - - '534' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:14 GMT + - Sat, 02 Jul 2022 10:46:34 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2717,8 +3690,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11993' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2736,27 +3711,27 @@ interactions: ParameterSetName: - -g -n --query -o User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '534' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:17 GMT + - Sat, 02 Jul 2022 10:46:35 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2768,7 +3743,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2784,29 +3759,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -g -n --query -o + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"1d959049b8334e429eb07ca9e107dedc","networkProfile":{"outboundIPs":{"publicIPs":["20.94.26.33","20.96.133.171"]}},"powerState":"Running","fqdn":"cli-unittest10.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"S0","tier":"Standard"},"location":"eastus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10","name":"cli-unittest10","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:21:39.0945487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:26.1402904Z"}}' headers: cache-control: - no-cache content-length: - - '535' + - '768' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:21 GMT + - Sat, 02 Jul 2022 10:46:37 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2817,8 +3792,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -2836,27 +3813,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest10/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '535' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 03:46:21 GMT + - Sat, 02 Jul 2022 10:46:39 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -2868,7 +3845,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK diff --git a/src/spring/azext_spring/tests/latest/recordings/test_create_asc_heavy_cases.yaml b/src/spring/azext_spring/tests/latest/recordings/test_create_asc_heavy_cases.yaml index 523d2640b65..6a599f86929 100644 --- a/src/spring/azext_spring/tests/latest/recordings/test_create_asc_heavy_cases.yaml +++ b/src/spring/azext_spring/tests/latest/recordings/test_create_asc_heavy_cases.yaml @@ -1,62 +1,7 @@ interactions: - request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - monitor app-insights component show - Connection: - - keep-alive - ParameterSetName: - - -g --app - User-Agent: - - python/3.9.5 (Windows-10-10.0.19043-SP0) msrest/0.6.21 msrest_azure/0.6.4 - azure-mgmt-applicationinsights/0.2.0 Azure-SDK-For-Python AZURECLI/2.27.1 - accept-language: - - en-US - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2020-02-02-preview - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' - headers: - access-control-expose-headers: - - Request-Context - cache-control: - - no-cache - content-length: - - '1072' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:35:48 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"location": "eastus", "properties": {}, "sku": {"name": "B0", "tier": - "BASIC"}}' + body: '{"location": "eastus2", "properties": {"zoneRedundant": false}, "sku": + {"name": "B0", "tier": "Basic"}}' headers: Accept: - application/json @@ -67,37 +12,37 @@ interactions: Connection: - keep-alive Content-Length: - - '80' + - '103' Content-Type: - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Creating","version":3,"serviceId":"6c216a7c0bb34900ba440bfe64c81be8"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}' + string: '{"properties":{"provisioningState":"Updating","zoneRedundant":false,"version":3,"serviceId":"2ff9b504f67f4217aee750ffdf4fcbb6","networkProfile":{"outboundIPs":{"publicIPs":["20.96.131.141"]}},"powerState":"Running","fqdn":"cli-unittest-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:25:16.9210555Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:55.0975314Z"}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-1/operationId/5c7ea1b6-0056-4453-bdac-7d820c00d16d?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '367' + - '752' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:35:58 GMT + - Sat, 02 Jul 2022 10:36:54 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/3d07b6f7-c0cb-40e2-9614-21b21182503f/Spring/cli-unittest-1?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/5c7ea1b6-0056-4453-bdac-7d820c00d16d/Spring/cli-unittest-1?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -107,60 +52,10 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:36:29 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: @@ -175,27 +70,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-1/operationId/5c7ea1b6-0056-4453-bdac-7d820c00d16d?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-1/operationId/5c7ea1b6-0056-4453-bdac-7d820c00d16d","name":"5c7ea1b6-0056-4453-bdac-7d820c00d16d","status":"Succeeded","startTime":"2022-07-02T10:36:55.5741469Z","endTime":"2022-07-02T10:37:01.770403Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '358' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:36:39 GMT + - Sat, 02 Jul 2022 10:37:26 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -207,7 +102,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -225,27 +120,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"2ff9b504f67f4217aee750ffdf4fcbb6","networkProfile":{"outboundIPs":{"publicIPs":["20.96.131.141"]}},"powerState":"Running","fqdn":"cli-unittest-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:25:16.9210555Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:36:55.0975314Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:36:50 GMT + - Sat, 02 Jul 2022 10:37:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -256,8 +151,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -265,7 +162,7 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: @@ -275,127 +172,151 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 + (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_202207021820?api-version=2015-05-01 response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_202207021820\",\r\n + \ \"name\": \"cli_scenario_test_202207021820\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"6600fdbb-0000-0100-0000-62c01c000000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli_scenario_test_202207021820\",\r\n \"AppId\": + \"79278c3a-4cfa-4e0a-89f3-ef1e49549f85\",\r\n \"Application_Type\": \"web\",\r\n + \ \"Flow_Type\": \"Redfield\",\r\n \"Request_Source\": \"IbizaAIExtension\",\r\n + \ \"InstrumentationKey\": \"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli_scenario_test_202207021820\",\r\n \"CreationDate\": + \"2022-07-02T10:20:48.4434483+00:00\",\r\n \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n + \ \"RetentionInDays\": 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n + \ \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"Ver\": \"v2\"\r\n }\r\n}" headers: + access-control-expose-headers: + - Request-Context cache-control: - no-cache content-length: - - '315' + - '1304' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:37:00 GMT + - Sat, 02 Jul 2022 10:37:31 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed server: - - nginx/1.17.7 + - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding,Accept-Encoding + - Accept-Encoding x-content-type-options: - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + x-powered-by: + - ASP.NET status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - spring create Connection: - keep-alive + Content-Length: + - '262' + Content-Type: + - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-1/operationId/60a76f46-06b6-48db-9755-748bd86c98e8?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '315' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:37:10 GMT + - Sat, 02 Jul 2022 10:37:33 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/60a76f46-06b6-48db-9755-748bd86c98e8/Spring/cli-unittest-1?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"2ff9b504f67f4217aee750ffdf4fcbb6","networkProfile":{"outboundIPs":{"publicIPs":["20.96.131.141"]}},"powerState":"Running","fqdn":"cli-unittest-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:25:16.9210555Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:32.5108617Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:37:21 GMT + - Sat, 02 Jul 2022 10:37:34 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -406,8 +327,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11993' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -415,37 +338,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-01-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"2ff9b504f67f4217aee750ffdf4fcbb6","networkProfile":{"outboundIPs":{"publicIPs":["20.96.131.141"]}},"powerState":"Running","fqdn":"cli-unittest-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:25:16.9210555Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:32.5108617Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:37:31 GMT + - Sat, 02 Jul 2022 10:37:37 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -456,8 +379,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -465,37 +390,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '315' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:37:41 GMT + - Sat, 02 Jul 2022 10:37:38 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -507,7 +432,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -515,37 +440,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-01-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"2ff9b504f67f4217aee750ffdf4fcbb6","networkProfile":{"outboundIPs":{"publicIPs":["20.96.131.141"]}},"powerState":"Running","fqdn":"cli-unittest-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:25:16.9210555Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:32.5108617Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:37:52 GMT + - Sat, 02 Jul 2022 10:37:40 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -556,8 +481,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -565,37 +492,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '315' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:38:02 GMT + - Sat, 02 Jul 2022 10:37:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -607,7 +534,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -615,102 +542,111 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring delete Connection: - keep-alive + Content-Length: + - '0' ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-1/operationId/efbdfd3c-4732-4489-abf9-ec21894dacd6?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '315' - content-type: - - application/json; charset=utf-8 + - '0' date: - - Mon, 06 Sep 2021 05:38:12 GMT + - Sat, 02 Jul 2022 10:37:44 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/efbdfd3c-4732-4489-abf9-ec21894dacd6/Spring/cli-unittest-1?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: - body: null + body: '{"location": "eastus2", "properties": {"zoneRedundant": false}, "sku": + {"name": "B0", "tier": "Basic"}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - spring create Connection: - keep-alive + Content-Length: + - '103' + Content-Type: + - application/json ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"properties":{"provisioningState":"Creating","zoneRedundant":false,"version":3,"serviceId":"44c01ab2562d4babbbe42428e1bb5125","powerState":"Running","fqdn":"cli-unittest-2.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:37:49.9329487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:49.9329487Z"}}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '315' + - '687' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:38:23 GMT + - Sat, 02 Jul 2022 10:37:52 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff/Spring/cli-unittest-2?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 201 + message: Created - request: body: null headers: @@ -723,29 +659,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:38:33 GMT + - Sat, 02 Jul 2022 10:38:22 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -757,7 +693,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -773,29 +709,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:38:43 GMT + - Sat, 02 Jul 2022 10:38:33 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -807,7 +743,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -823,29 +759,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:38:54 GMT + - Sat, 02 Jul 2022 10:38:44 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -857,7 +793,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -873,29 +809,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:39:04 GMT + - Sat, 02 Jul 2022 10:38:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -907,7 +843,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -923,29 +859,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:39:14 GMT + - Sat, 02 Jul 2022 10:39:04 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -957,7 +893,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -973,29 +909,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:39:24 GMT + - Sat, 02 Jul 2022 10:39:15 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1007,7 +943,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1023,29 +959,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:39:35 GMT + - Sat, 02 Jul 2022 10:39:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1057,7 +993,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1073,2626 +1009,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:39:45 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:39:56 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:40:06 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:40:16 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:40:26 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:40:36 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Running","startTime":"2021-09-06T05:35:58.2102186Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:40:47 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3d07b6f7-c0cb-40e2-9614-21b21182503f","name":"3d07b6f7-c0cb-40e2-9614-21b21182503f","status":"Succeeded","startTime":"2021-09-06T05:35:58.2102186Z","endTime":"2021-09-06T05:40:52.1198611Z"}' - headers: - cache-control: - - no-cache - content-length: - - '358' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:40:57 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview - response: - body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6c216a7c0bb34900ba440bfe64c81be8","networkProfile":{"outboundIPs":{"publicIPs":["20.81.127.86"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}' - headers: - cache-control: - - no-cache - content-length: - - '432' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:40:57 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 - (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2015-05-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' - headers: - access-control-expose-headers: - - Request-Context - cache-control: - - no-cache - content-length: - - '1072' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:00 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - Content-Length: - - '199' - Content-Type: - - application/json - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default?api-version=2020-11-01-preview - response: - body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default","name":"default"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/9200fe16-2aba-49d7-8aa8-ef3af57dc834?api-version=2020-11-01-preview - cache-control: - - no-cache - content-length: - - '534' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:01 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/9200fe16-2aba-49d7-8aa8-ef3af57dc834/Spring/cli-unittest-1?api-version=2020-11-01-preview - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring show - Connection: - - keep-alive - ParameterSetName: - - -n -g - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview - response: - body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6c216a7c0bb34900ba440bfe64c81be8","networkProfile":{"outboundIPs":{"publicIPs":["20.81.127.86"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}' - headers: - cache-control: - - no-cache - content-length: - - '432' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:02 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring app-insights show - Connection: - - keep-alive - ParameterSetName: - - -n -g - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default?api-version=2020-11-01-preview - response: - body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default","name":"default"}' - headers: - cache-control: - - no-cache - content-length: - - '534' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:04 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring app-insights show - Connection: - - keep-alive - ParameterSetName: - - -n -g - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default?api-version=2020-11-01-preview - response: - body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default","name":"default"}' - headers: - cache-control: - - no-cache - content-length: - - '534' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:06 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n -g --no-wait - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/1ec9e396-70ff-4e0f-9dc8-cdd644c3428b?api-version=2022-05-01-preview - cache-control: - - no-cache - content-length: - - '0' - date: - - Mon, 06 Sep 2021 05:41:07 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/1ec9e396-70ff-4e0f-9dc8-cdd644c3428b/Spring/cli-unittest-1?api-version=2022-05-01-preview - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 202 - message: Accepted -- request: - body: '{"location": "eastus", "properties": {}, "sku": {"name": "B0", "tier": - "BASIC"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - Content-Length: - - '80' - Content-Type: - - application/json - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview - response: - body: - string: '{"properties":{"provisioningState":"Creating","version":3,"serviceId":"3532eeee0efc41d49fc2a611eab09283"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - cache-control: - - no-cache - content-length: - - '367' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:14 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/0d11fd57-d84e-470a-b028-5e16db68b560/Spring/cli-unittest-2?api-version=2022-05-01-preview - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '1199' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:44 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:41:55 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:42:05 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:42:16 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:42:26 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:42:36 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:42:47 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:42:57 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:43:07 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:43:17 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:43:28 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:43:39 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:43:49 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:43:59 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:44:10 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:44:21 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:44:31 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:44:42 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:44:52 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:45:02 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:45:13 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:45:23 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:45:33 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:45:44 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Running","startTime":"2021-09-06T05:41:13.9372975Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:45:54 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/0d11fd57-d84e-470a-b028-5e16db68b560","name":"0d11fd57-d84e-470a-b028-5e16db68b560","status":"Succeeded","startTime":"2021-09-06T05:41:13.9372975Z","endTime":"2021-09-06T05:45:59.36111Z"}' - headers: - cache-control: - - no-cache - content-length: - - '356' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:05 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview - response: - body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3532eeee0efc41d49fc2a611eab09283","networkProfile":{"outboundIPs":{"publicIPs":["52.151.210.168"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2"}' - headers: - cache-control: - - no-cache - content-length: - - '434' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:05 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11996' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 - (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_20210906102205?api-version=2015-05-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_20210906102205","name":"cli_scenario_test_20210906102205","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"1c0138f9-0000-0100-0000-61357b530000\"","properties":{"Ver":"v2","ApplicationId":"cli_scenario_test_20210906102205","AppId":"6b1ab966-0866-4f6d-a01b-fc781bed0e57","Application_Type":"web","Flow_Type":"Bluefield","Request_Source":"rest","InstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73","ConnectionString":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/","Name":"cli_scenario_test_20210906102205","CreationDate":"2021-09-06T02:22:11.602511+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' - headers: - access-control-expose-headers: - - Request-Context - cache-control: - - no-cache - content-length: - - '1072' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:05 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 - server: - - Microsoft-IIS/10.0 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-powered-by: - - ASP.NET - status: - code: 200 - message: OK -- request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 0.1}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - Content-Length: - - '231' - Content-Type: - - application/json - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default?api-version=2020-11-01-preview - response: - body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default","name":"default"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/c834b96d-e557-4294-a5f5-62fb62cc4034?api-version=2020-11-01-preview - cache-control: - - no-cache - content-length: - - '533' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:07 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/c834b96d-e557-4294-a5f5-62fb62cc4034/Spring/cli-unittest-2?api-version=2020-11-01-preview - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1195' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 202 - message: Accepted -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring show - Connection: - - keep-alive - ParameterSetName: - - -n -g - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview - response: - body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3532eeee0efc41d49fc2a611eab09283","networkProfile":{"outboundIPs":{"publicIPs":["52.151.210.168"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2"}' - headers: - cache-control: - - no-cache - content-length: - - '434' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:09 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring app-insights show - Connection: - - keep-alive - ParameterSetName: - - -n -g - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default?api-version=2020-11-01-preview - response: - body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default","name":"default"}' - headers: - cache-control: - - no-cache - content-length: - - '533' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:10 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring app-insights show - Connection: - - keep-alive - ParameterSetName: - - -n -g - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default?api-version=2020-11-01-preview - response: - body: - string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default","name":"default"}' - headers: - cache-control: - - no-cache - content-length: - - '533' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:11 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring delete - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n -g --no-wait - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview - response: - body: - string: '' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-2/operationId/42aaf0a0-5139-4521-8fda-2328dd912366?api-version=2022-05-01-preview - cache-control: - - no-cache - content-length: - - '0' - date: - - Mon, 06 Sep 2021 05:46:13 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/42aaf0a0-5139-4521-8fda-2328dd912366/Spring/cli-unittest-2?api-version=2022-05-01-preview - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14998' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 202 - message: Accepted -- request: - body: '{"location": "eastus", "properties": {}, "sku": {"name": "B0", "tier": - "BASIC"}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - Content-Length: - - '80' - Content-Type: - - application/json - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview - response: - body: - string: '{"properties":{"provisioningState":"Creating","version":3,"serviceId":"3b5aeec8f3aa47719fe6df9f33a32367"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3"}' - headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview - cache-control: - - no-cache - content-length: - - '367' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:23 GMT - expires: - - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/8ebf2394-2983-414f-8092-290dcaa59693/Spring/cli-unittest-3?api-version=2022-05-01-preview - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '1199' - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 05:46:54 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:47:04 GMT + - Sat, 02 Jul 2022 10:39:36 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3704,7 +1043,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3720,29 +1059,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:47:15 GMT + - Sat, 02 Jul 2022 10:39:47 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3754,7 +1093,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3770,29 +1109,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:47:25 GMT + - Sat, 02 Jul 2022 10:39:57 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3804,7 +1143,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3820,29 +1159,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:47:35 GMT + - Sat, 02 Jul 2022 10:40:07 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3854,7 +1193,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3870,29 +1209,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:47:46 GMT + - Sat, 02 Jul 2022 10:40:18 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3904,7 +1243,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3920,29 +1259,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:47:56 GMT + - Sat, 02 Jul 2022 10:40:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -3954,7 +1293,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -3970,29 +1309,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:48:06 GMT + - Sat, 02 Jul 2022 10:40:39 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4004,7 +1343,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4020,29 +1359,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:48:17 GMT + - Sat, 02 Jul 2022 10:40:50 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4054,7 +1393,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4070,29 +1409,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:48:27 GMT + - Sat, 02 Jul 2022 10:41:01 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4104,7 +1443,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4120,29 +1459,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:48:37 GMT + - Sat, 02 Jul 2022 10:41:11 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4154,7 +1493,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4170,29 +1509,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:48:47 GMT + - Sat, 02 Jul 2022 10:41:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4204,7 +1543,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4220,29 +1559,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:48:57 GMT + - Sat, 02 Jul 2022 10:41:32 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4254,7 +1593,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4270,29 +1609,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:49:08 GMT + - Sat, 02 Jul 2022 10:41:42 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4304,7 +1643,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4320,29 +1659,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:49:19 GMT + - Sat, 02 Jul 2022 10:41:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4354,7 +1693,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4370,29 +1709,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:49:29 GMT + - Sat, 02 Jul 2022 10:42:04 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4404,7 +1743,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4420,29 +1759,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:49:39 GMT + - Sat, 02 Jul 2022 10:42:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4454,7 +1793,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4470,29 +1809,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:49:49 GMT + - Sat, 02 Jul 2022 10:42:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4504,7 +1843,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4520,29 +1859,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:49:59 GMT + - Sat, 02 Jul 2022 10:42:35 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4554,7 +1893,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4570,29 +1909,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Running","startTime":"2022-07-02T10:37:51.0233948Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:50:10 GMT + - Sat, 02 Jul 2022 10:42:47 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4604,7 +1943,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4620,29 +1959,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","name":"2ffe1528-a5d9-4e8c-812e-ee4852b9f1ff","status":"Succeeded","startTime":"2022-07-02T10:37:51.0233948Z","endTime":"2022-07-02T10:42:49.1336613Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '359' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:50:20 GMT + - Sat, 02 Jul 2022 10:42:57 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4654,7 +1993,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4670,29 +2009,29 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"44c01ab2562d4babbbe42428e1bb5125","networkProfile":{"outboundIPs":{"publicIPs":["20.62.83.125"]}},"powerState":"Running","fqdn":"cli-unittest-2.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:37:49.9329487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:37:49.9329487Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '752' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:50:31 GMT + - Sat, 02 Jul 2022 10:42:58 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4703,8 +2042,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11994' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4712,7 +2053,7 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: @@ -4720,129 +2061,154 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 + (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli_scenario_test_202207021820?api-version=2015-05-01 response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli_scenario_test_202207021820\",\r\n + \ \"name\": \"cli_scenario_test_202207021820\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"eastus\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"6600fdbb-0000-0100-0000-62c01c000000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli_scenario_test_202207021820\",\r\n \"AppId\": + \"79278c3a-4cfa-4e0a-89f3-ef1e49549f85\",\r\n \"Application_Type\": \"web\",\r\n + \ \"Flow_Type\": \"Redfield\",\r\n \"Request_Source\": \"IbizaAIExtension\",\r\n + \ \"InstrumentationKey\": \"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli_scenario_test_202207021820\",\r\n \"CreationDate\": + \"2022-07-02T10:20:48.4434483+00:00\",\r\n \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n + \ \"provisioningState\": \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n + \ \"RetentionInDays\": 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n + \ \"publicNetworkAccessForIngestion\": \"Enabled\",\r\n \"publicNetworkAccessForQuery\": + \"Enabled\",\r\n \"Ver\": \"v2\"\r\n }\r\n}" headers: + access-control-expose-headers: + - Request-Context cache-control: - no-cache content-length: - - '315' + - '1304' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:50:41 GMT + - Sat, 02 Jul 2022 10:43:03 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed server: - - nginx/1.17.7 + - Microsoft-IIS/10.0 strict-transport-security: - max-age=31536000; includeSubDomains transfer-encoding: - chunked vary: - - Accept-Encoding,Accept-Encoding + - Accept-Encoding x-content-type-options: - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + x-powered-by: + - ASP.NET status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 0.1}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - spring create Connection: - keep-alive + Content-Length: + - '294' + Content-Type: + - application/json ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --sku -l --no-wait --app-insights --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/b64d3ccb-2561-47fd-b6ab-de5a8f5c1a68?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '315' + - '597' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:50:52 GMT + - Sat, 02 Jul 2022 10:43:04 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/b64d3ccb-2561-47fd-b6ab-de5a8f5c1a68/Spring/cli-unittest-2?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"44c01ab2562d4babbbe42428e1bb5125","networkProfile":{"outboundIPs":{"publicIPs":["20.62.83.125"]}},"powerState":"Running","fqdn":"cli-unittest-2.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:37:49.9329487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:43:04.1234489Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '752' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:02 GMT + - Sat, 02 Jul 2022 10:43:06 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4853,8 +2219,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4862,37 +2230,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-01-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"44c01ab2562d4babbbe42428e1bb5125","networkProfile":{"outboundIPs":{"publicIPs":["20.62.83.125"]}},"powerState":"Running","fqdn":"cli-unittest-2.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:37:49.9329487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:43:04.1234489Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '752' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:12 GMT + - Sat, 02 Jul 2022 10:43:08 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4903,8 +2271,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4912,37 +2282,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '315' + - '597' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:22 GMT + - Sat, 02 Jul 2022 10:43:10 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -4954,7 +2324,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -4962,37 +2332,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-01-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Running","startTime":"2021-09-06T05:46:23.2773726Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"44c01ab2562d4babbbe42428e1bb5125","networkProfile":{"outboundIPs":{"publicIPs":["20.62.83.125"]}},"powerState":"Running","fqdn":"cli-unittest-2.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:37:49.9329487Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:43:04.1234489Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '752' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:32 GMT + - Sat, 02 Jul 2022 10:43:11 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5003,8 +2373,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5012,37 +2384,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/8ebf2394-2983-414f-8092-290dcaa59693","name":"8ebf2394-2983-414f-8092-290dcaa59693","status":"Succeeded","startTime":"2021-09-06T05:46:23.2773726Z","endTime":"2021-09-06T05:51:37.8757692Z"}' + string: '{"properties":{"appInsightsSamplingRate":0.1,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '358' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:43 GMT + - Sat, 02 Jul 2022 10:43:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5054,7 +2426,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5062,57 +2434,57 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring delete Connection: - keep-alive + Content-Length: + - '0' ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3b5aeec8f3aa47719fe6df9f33a32367","networkProfile":{"outboundIPs":{"publicIPs":["52.151.214.131"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3"}' + string: '' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-2/operationId/c09fd093-5d7a-4a6c-8cff-646bce4c7731?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '434' - content-type: - - application/json; charset=utf-8 + - '0' date: - - Mon, 06 Sep 2021 05:51:44 GMT + - Sat, 02 Jul 2022 10:43:16 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/c09fd093-5d7a-4a6c-8cff-646bce4c7731/Spring/cli-unittest-2?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "1a5759a2-f52e-4488-b4e8-ee351244ca73", "appInsightsSamplingRate": 1.0}}' + body: '{"location": "eastus2", "properties": {"zoneRedundant": false}, "sku": + {"name": "B0", "tier": "Basic"}}' headers: Accept: - application/json @@ -5123,85 +2495,85 @@ interactions: Connection: - keep-alive Content-Length: - - '143' + - '103' Content-Type: - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Creating","zoneRedundant":false,"version":3,"serviceId":"72eba8a68f054a5c93c2a2edc058de0b","powerState":"Running","fqdn":"cli-unittest-3.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:43:22.1371999Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:43:22.1371999Z"}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/f14653ac-22c6-4638-8fa2-ee56982ea223?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '445' + - '687' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:46 GMT + - Sat, 02 Jul 2022 10:43:24 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/f14653ac-22c6-4638-8fa2-ee56982ea223/Spring/cli-unittest-3?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/ac686763-8dab-4b6b-be0b-f44169b4cbe2/Spring/cli-unittest-3?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1197' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 201 + message: Created - request: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring show + - spring create Connection: - keep-alive ParameterSetName: - - -n -g + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3b5aeec8f3aa47719fe6df9f33a32367","networkProfile":{"outboundIPs":{"publicIPs":["52.151.214.131"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '434' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:46 GMT + - Sat, 02 Jul 2022 10:43:54 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5212,10 +2584,8 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5223,37 +2593,37 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring create Connection: - keep-alive ParameterSetName: - - -n -g + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default","name":"default"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '445' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:48 GMT + - Sat, 02 Jul 2022 10:44:04 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5265,7 +2635,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5273,37 +2643,37 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring create Connection: - keep-alive ParameterSetName: - - -n -g + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"1a5759a2-f52e-4488-b4e8-ee351244ca73"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default","name":"default"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '445' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:49 GMT + - Sat, 02 Jul 2022 10:44:15 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5315,7 +2685,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5323,111 +2693,102 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring delete + - spring create Connection: - keep-alive - Content-Length: - - '0' ParameterSetName: - - -n -g --no-wait + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-3/operationId/0ec14a4f-d3f1-47e9-ba21-44d5e2858ef6?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '0' + - '316' + content-type: + - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:51 GMT + - Sat, 02 Jul 2022 10:44:25 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/0ec14a4f-d3f1-47e9-ba21-44d5e2858ef6/Spring/cli-unittest-3?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: - body: '{"location": "eastus", "properties": {}, "sku": {"name": "B0", "tier": - "BASIC"}}' + body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - spring create Connection: - keep-alive - Content-Length: - - '80' - Content-Type: - - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Creating","version":3,"serviceId":"617a4387b43d41df8a8c4002397d0fa9"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '367' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:51:57 GMT + - Sat, 02 Jul 2022 10:44:36 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/1bd0c13d-bdc0-42c1-b260-000e2abc2929/Spring/cli-unittest-4?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 201 - message: Created + code: 200 + message: OK - request: body: null headers: @@ -5442,27 +2803,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:52:27 GMT + - Sat, 02 Jul 2022 10:44:47 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5474,7 +2835,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5492,27 +2853,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:52:38 GMT + - Sat, 02 Jul 2022 10:44:57 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5524,7 +2885,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5542,27 +2903,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:52:49 GMT + - Sat, 02 Jul 2022 10:45:08 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5574,7 +2935,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5592,27 +2953,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:52:59 GMT + - Sat, 02 Jul 2022 10:45:18 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5624,7 +2985,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5642,27 +3003,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:53:09 GMT + - Sat, 02 Jul 2022 10:45:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5674,7 +3035,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5692,27 +3053,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:53:20 GMT + - Sat, 02 Jul 2022 10:45:39 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5724,7 +3085,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5742,27 +3103,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:53:30 GMT + - Sat, 02 Jul 2022 10:45:49 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5774,7 +3135,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5792,27 +3153,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:53:40 GMT + - Sat, 02 Jul 2022 10:46:00 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5824,7 +3185,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5842,27 +3203,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:53:50 GMT + - Sat, 02 Jul 2022 10:46:11 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5874,7 +3235,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5892,27 +3253,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:54:00 GMT + - Sat, 02 Jul 2022 10:46:22 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5924,7 +3285,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5942,27 +3303,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:54:11 GMT + - Sat, 02 Jul 2022 10:46:32 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -5974,7 +3335,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -5992,27 +3353,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:54:22 GMT + - Sat, 02 Jul 2022 10:46:42 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6024,7 +3385,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6042,27 +3403,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:54:32 GMT + - Sat, 02 Jul 2022 10:46:53 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6074,7 +3435,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6092,27 +3453,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:54:42 GMT + - Sat, 02 Jul 2022 10:47:03 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6124,7 +3485,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6142,27 +3503,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:54:52 GMT + - Sat, 02 Jul 2022 10:47:13 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6174,7 +3535,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6192,27 +3553,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:55:03 GMT + - Sat, 02 Jul 2022 10:47:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6224,7 +3585,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6242,27 +3603,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:55:13 GMT + - Sat, 02 Jul 2022 10:47:36 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6274,7 +3635,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6292,27 +3653,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:55:24 GMT + - Sat, 02 Jul 2022 10:47:46 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6324,7 +3685,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6342,27 +3703,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Running","startTime":"2022-07-02T10:43:22.5941491Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:55:34 GMT + - Sat, 02 Jul 2022 10:47:56 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6374,7 +3735,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6392,27 +3753,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/ac686763-8dab-4b6b-be0b-f44169b4cbe2","name":"ac686763-8dab-4b6b-be0b-f44169b4cbe2","status":"Succeeded","startTime":"2022-07-02T10:43:22.5941491Z","endTime":"2022-07-02T10:48:05.9080793Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '359' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:55:44 GMT + - Sat, 02 Jul 2022 10:48:07 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6424,7 +3785,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6442,27 +3803,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"72eba8a68f054a5c93c2a2edc058de0b","networkProfile":{"outboundIPs":{"publicIPs":["20.96.99.34"]}},"powerState":"Running","fqdn":"cli-unittest-3.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:43:22.1371999Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:43:22.1371999Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '751' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:55:54 GMT + - Sat, 02 Jul 2022 10:48:08 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6473,96 +3834,105 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "e157df4b-c2b4-4d03-b2bc-b85f6570ee8d", "appInsightsSamplingRate": 1.0}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - spring create Connection: - keep-alive + Content-Length: + - '143' + Content-Type: + - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/2d5d43ed-0031-4c3b-b9e1-78a4f28036b4?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '315' + - '446' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:56:04 GMT + - Sat, 02 Jul 2022 10:48:11 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/2d5d43ed-0031-4c3b-b9e1-78a4f28036b4/Spring/cli-unittest-3?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 202 + message: Accepted - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"72eba8a68f054a5c93c2a2edc058de0b","networkProfile":{"outboundIPs":{"publicIPs":["20.96.99.34"]}},"powerState":"Running","fqdn":"cli-unittest-3.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:43:22.1371999Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:48:10.7099874Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '751' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:56:16 GMT + - Sat, 02 Jul 2022 10:48:13 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6573,8 +3943,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6582,37 +3954,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-01-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"72eba8a68f054a5c93c2a2edc058de0b","networkProfile":{"outboundIPs":{"publicIPs":["20.96.99.34"]}},"powerState":"Running","fqdn":"cli-unittest-3.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:43:22.1371999Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:48:10.7099874Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '751' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:56:26 GMT + - Sat, 02 Jul 2022 10:48:15 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6623,8 +3995,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6632,37 +4006,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '315' + - '446' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:56:36 GMT + - Sat, 02 Jul 2022 10:48:17 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6674,7 +4048,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6682,37 +4056,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-01-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Running","startTime":"2021-09-06T05:51:56.6047815Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"72eba8a68f054a5c93c2a2edc058de0b","networkProfile":{"outboundIPs":{"publicIPs":["20.96.99.34"]}},"powerState":"Running","fqdn":"cli-unittest-3.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:43:22.1371999Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:48:10.7099874Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '751' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:56:46 GMT + - Sat, 02 Jul 2022 10:48:19 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6723,8 +4097,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11994' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6732,37 +4108,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/1bd0c13d-bdc0-42c1-b260-000e2abc2929","name":"1bd0c13d-bdc0-42c1-b260-000e2abc2929","status":"Succeeded","startTime":"2021-09-06T05:51:56.6047815Z","endTime":"2021-09-06T05:56:49.137892Z"}' + string: '{"properties":{"appInsightsSamplingRate":1.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"e157df4b-c2b4-4d03-b2bc-b85f6570ee8d"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '357' + - '447' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:56:56 GMT + - Sat, 02 Jul 2022 10:48:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6774,7 +4150,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6782,58 +4158,57 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring delete Connection: - keep-alive + Content-Length: + - '0' ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"617a4387b43d41df8a8c4002397d0fa9","networkProfile":{"outboundIPs":{"publicIPs":["20.72.174.75"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4"}' + string: '' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-3/operationId/b3a411fc-ea2c-4b8a-8977-6a06ec5f6ae1?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '432' - content-type: - - application/json; charset=utf-8 + - '0' date: - - Mon, 06 Sep 2021 05:56:56 GMT + - Sat, 02 Jul 2022 10:48:23 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/b3a411fc-ea2c-4b8a-8977-6a06ec5f6ae1/Spring/cli-unittest-3?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11997' + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 10.0}}' + body: '{"location": "eastus2", "properties": {"zoneRedundant": false}, "sku": + {"name": "B0", "tier": "Basic"}}' headers: Accept: - application/json @@ -6844,85 +4219,85 @@ interactions: Connection: - keep-alive Content-Length: - - '232' + - '103' Content-Type: - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Creating","zoneRedundant":false,"version":3,"serviceId":"3a98b3bbeeb74ba198a8a213f3321a46","powerState":"Running","fqdn":"cli-unittest-4.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:48:30.8242396Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:48:30.8242396Z"}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/48987fd4-fa8a-4fb2-ab84-bc375f2048dc?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '534' + - '687' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:56:59 GMT + - Sat, 02 Jul 2022 10:48:33 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/48987fd4-fa8a-4fb2-ab84-bc375f2048dc/Spring/cli-unittest-4?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/fba6f615-3324-42e6-a891-aa4ccb4bbd72/Spring/cli-unittest-4?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: + x-ms-ratelimit-remaining-subscription-resource-requests: - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 201 + message: Created - request: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring show + - spring create Connection: - keep-alive ParameterSetName: - - -n -g + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"617a4387b43d41df8a8c4002397d0fa9","networkProfile":{"outboundIPs":{"publicIPs":["20.72.174.75"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '432' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:57:00 GMT + - Sat, 02 Jul 2022 10:49:03 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6933,10 +4308,8 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6944,37 +4317,37 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring create Connection: - keep-alive ParameterSetName: - - -n -g + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default","name":"default"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '534' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:57:02 GMT + - Sat, 02 Jul 2022 10:49:13 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -6986,7 +4359,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -6994,37 +4367,37 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring create Connection: - keep-alive ParameterSetName: - - -n -g + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default","name":"default"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '534' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:57:03 GMT + - Sat, 02 Jul 2022 10:49:24 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7036,7 +4409,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7044,111 +4417,102 @@ interactions: body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - - spring delete + - spring create Connection: - keep-alive - Content-Length: - - '0' ParameterSetName: - - -n -g --no-wait + - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-4/operationId/6aa43528-e7d0-4f1b-b6f7-df840df5e349?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '0' + - '316' + content-type: + - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:57:05 GMT + - Sat, 02 Jul 2022 10:49:34 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/6aa43528-e7d0-4f1b-b6f7-df840df5e349/Spring/cli-unittest-4?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-deletes: - - '14998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: - body: '{"location": "eastus", "properties": {}, "sku": {"name": "B0", "tier": - "BASIC"}}' + body: null headers: Accept: - - application/json + - '*/*' Accept-Encoding: - gzip, deflate CommandName: - spring create Connection: - keep-alive - Content-Length: - - '80' - Content-Type: - - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Creating","version":3,"serviceId":"038bef22fc7b4a42ae6d9820396a9885"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5","name":"cli-unittest-5"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '367' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:57:11 GMT + - Sat, 02 Jul 2022 10:49:45 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f/Spring/cli-unittest-5?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 201 - message: Created + code: 200 + message: OK - request: body: null headers: @@ -7163,27 +4527,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:57:41 GMT + - Sat, 02 Jul 2022 10:49:55 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7195,7 +4559,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7213,27 +4577,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:57:53 GMT + - Sat, 02 Jul 2022 10:50:05 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7245,7 +4609,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7263,27 +4627,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:58:03 GMT + - Sat, 02 Jul 2022 10:50:17 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7295,7 +4659,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7313,27 +4677,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:58:13 GMT + - Sat, 02 Jul 2022 10:50:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7345,7 +4709,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7363,27 +4727,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:58:23 GMT + - Sat, 02 Jul 2022 10:50:37 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7395,7 +4759,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7413,27 +4777,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:58:33 GMT + - Sat, 02 Jul 2022 10:50:48 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7445,7 +4809,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7463,27 +4827,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:58:44 GMT + - Sat, 02 Jul 2022 10:50:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7495,7 +4859,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7513,27 +4877,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:58:54 GMT + - Sat, 02 Jul 2022 10:51:09 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7545,7 +4909,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7563,27 +4927,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:59:04 GMT + - Sat, 02 Jul 2022 10:51:19 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7595,7 +4959,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7613,27 +4977,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:59:15 GMT + - Sat, 02 Jul 2022 10:51:30 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7645,7 +5009,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7663,27 +5027,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:59:25 GMT + - Sat, 02 Jul 2022 10:51:40 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7695,7 +5059,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7713,27 +5077,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:59:36 GMT + - Sat, 02 Jul 2022 10:51:51 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7745,7 +5109,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7763,27 +5127,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:59:46 GMT + - Sat, 02 Jul 2022 10:52:02 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7795,7 +5159,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7813,27 +5177,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 05:59:56 GMT + - Sat, 02 Jul 2022 10:52:12 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7845,7 +5209,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7863,27 +5227,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:00:06 GMT + - Sat, 02 Jul 2022 10:52:23 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7895,7 +5259,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7913,27 +5277,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:00:16 GMT + - Sat, 02 Jul 2022 10:52:33 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7945,7 +5309,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -7963,27 +5327,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:00:27 GMT + - Sat, 02 Jul 2022 10:52:44 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -7995,7 +5359,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8013,27 +5377,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:00:37 GMT + - Sat, 02 Jul 2022 10:52:55 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8045,7 +5409,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8063,27 +5427,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:00:48 GMT + - Sat, 02 Jul 2022 10:53:05 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8095,7 +5459,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8113,27 +5477,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Running","startTime":"2022-07-02T10:48:31.7993974Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '316' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:00:58 GMT + - Sat, 02 Jul 2022 10:53:16 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8145,7 +5509,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8163,27 +5527,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/fba6f615-3324-42e6-a891-aa4ccb4bbd72","name":"fba6f615-3324-42e6-a891-aa4ccb4bbd72","status":"Succeeded","startTime":"2022-07-02T10:48:31.7993974Z","endTime":"2022-07-02T10:53:18.1473573Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '359' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:09 GMT + - Sat, 02 Jul 2022 10:53:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8195,7 +5559,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8213,27 +5577,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"3a98b3bbeeb74ba198a8a213f3321a46","networkProfile":{"outboundIPs":{"publicIPs":["20.96.162.102"]}},"powerState":"Running","fqdn":"cli-unittest-4.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:48:30.8242396Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:48:30.8242396Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:19 GMT + - Sat, 02 Jul 2022 10:53:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8244,96 +5608,106 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11993' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: null + body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": + "InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", + "appInsightsSamplingRate": 10.0}}' headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - spring create Connection: - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json ParameterSetName: - -n -g --sku -l --no-wait --app-insights-key --sampling-rate User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default","name":"default"}' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/d1345a17-04df-4228-b069-37afe0e34cd6?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '315' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:29 GMT + - Sat, 02 Jul 2022 10:53:30 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/d1345a17-04df-4228-b069-37afe0e34cd6/Spring/cli-unittest-4?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1197' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted - request: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Running","startTime":"2021-09-06T05:57:11.1160352Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"3a98b3bbeeb74ba198a8a213f3321a46","networkProfile":{"outboundIPs":{"publicIPs":["20.96.162.102"]}},"powerState":"Running","fqdn":"cli-unittest-4.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:48:30.8242396Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:53:29.7855963Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:39 GMT + - Sat, 02 Jul 2022 10:53:33 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8344,8 +5718,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11992' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8353,37 +5729,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-01-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","name":"bc9f0b84-23e2-46d9-ae5b-f8fb6971907f","status":"Succeeded","startTime":"2021-09-06T05:57:11.1160352Z","endTime":"2021-09-06T06:01:45.7765334Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"3a98b3bbeeb74ba198a8a213f3321a46","networkProfile":{"outboundIPs":{"publicIPs":["20.96.162.102"]}},"powerState":"Running","fqdn":"cli-unittest-4.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:48:30.8242396Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:53:29.7855963Z"}}' headers: cache-control: - no-cache content-length: - - '358' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:50 GMT + - Sat, 02 Jul 2022 10:53:34 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8394,8 +5770,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11996' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8403,37 +5781,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"038bef22fc7b4a42ae6d9820396a9885","networkProfile":{"outboundIPs":{"publicIPs":["104.45.172.83"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5","name":"cli-unittest-5"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '433' + - '598' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:50 GMT + - Sat, 02 Jul 2022 10:53:36 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8444,71 +5822,63 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/", - "appInsightsSamplingRate": 10.0}}' + body: null headers: Accept: - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring app-insights show Connection: - keep-alive - Content-Length: - - '232' - Content-Type: - - application/json ParameterSetName: - - -n -g --sku -l --no-wait --app-insights-key --sampling-rate + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-01-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5/monitoringSettings/default","name":"default"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"3a98b3bbeeb74ba198a8a213f3321a46","networkProfile":{"outboundIPs":{"publicIPs":["20.96.162.102"]}},"powerState":"Running","fqdn":"cli-unittest-4.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:48:30.8242396Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:53:29.7855963Z"}}' headers: - azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-5/operationId/0fd1df19-8cc1-4e04-a36c-754a685095b8?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '534' + - '753' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:53 GMT + - Sat, 02 Jul 2022 10:53:39 GMT expires: - '-1' - location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/0fd1df19-8cc1-4e04-a36c-754a685095b8/Spring/cli-unittest-5?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1198' + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11993' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 202 - message: Accepted + code: 200 + message: OK - request: body: null headers: @@ -8517,33 +5887,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring show + - spring app-insights show Connection: - keep-alive ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"038bef22fc7b4a42ae6d9820396a9885","networkProfile":{"outboundIPs":{"publicIPs":["104.45.172.83"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5","name":"cli-unittest-5"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=e157df4b-c2b4-4d03-b2bc-b85f6570ee8d;IngestionEndpoint=https://eastus-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '433' + - '599' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:01:54 GMT + - Sat, 02 Jul 2022 10:53:40 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -8554,10 +5924,8 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff - x-ms-ratelimit-remaining-subscription-resource-requests: - - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -8569,46 +5937,48 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring app-insights show + - spring delete Connection: - keep-alive + Content-Length: + - '0' ParameterSetName: - - -n -g + - -n -g --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5/monitoringSettings/default?api-version=2020-11-01-preview + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2022-05-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=1a5759a2-f52e-4488-b4e8-ee351244ca73;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5/monitoringSettings/default","name":"default"}' + string: '' headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-4/operationId/ea93dae6-a291-41aa-b1c4-b90f61a59a9c?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '534' - content-type: - - application/json; charset=utf-8 + - '0' date: - - Mon, 06 Sep 2021 06:01:56 GMT + - Sat, 02 Jul 2022 10:53:43 GMT expires: - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/ea93dae6-a291-41aa-b1c4-b90f61a59a9c/Spring/cli-unittest-4?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: - code: 200 - message: OK + code: 202 + message: Accepted version: 1 diff --git a/src/spring/azext_spring/tests/latest/recordings/test_create_asc_with_ai_basic_case.yaml b/src/spring/azext_spring/tests/latest/recordings/test_create_asc_with_ai_basic_case.yaml index eca0f993469..3535435c2ce 100644 --- a/src/spring/azext_spring/tests/latest/recordings/test_create_asc_with_ai_basic_case.yaml +++ b/src/spring/azext_spring/tests/latest/recordings/test_create_asc_with_ai_basic_case.yaml @@ -1,7 +1,7 @@ interactions: - request: - body: '{"location": "eastus", "properties": {}, "sku": {"name": "B0", "tier": - "BASIC"}}' + body: '{"location": "eastus2", "properties": {"zoneRedundant": false}, "sku": + {"name": "B0", "tier": "Basic"}}' headers: Accept: - application/json @@ -12,37 +12,37 @@ interactions: Connection: - keep-alive Content-Length: - - '80' + - '103' Content-Type: - application/json ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Creating","version":3,"serviceId":"6340c883c696442b94e8cb6ff7abd45b"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10","name":"cli-unittest-10"}' + string: '{"properties":{"provisioningState":"Creating","zoneRedundant":false,"version":3,"serviceId":"f69793ced0ec454ab5d446f78899ad4d","powerState":"Running","fqdn":"cli-unittest-11.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11","name":"cli-unittest-11","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:41:45.1547597Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:41:45.1547597Z"}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '369' + - '690' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:07:24 GMT + - Sat, 02 Jul 2022 10:41:47 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/1e5d7693-53c1-4c6d-970a-53b1afae9bf2/Spring/cli-unittest-10?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/b4a09e5a-31de-4449-8301-dfe892cf6491/Spring/cli-unittest-11?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -52,7 +52,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '1198' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 201 message: Created @@ -70,27 +70,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:07:55 GMT + - Sat, 02 Jul 2022 10:42:17 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -102,7 +102,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -120,27 +120,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:08:05 GMT + - Sat, 02 Jul 2022 10:42:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -152,7 +152,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -170,27 +170,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:08:16 GMT + - Sat, 02 Jul 2022 10:42:38 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -202,7 +202,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -220,27 +220,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:08:27 GMT + - Sat, 02 Jul 2022 10:42:50 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -252,7 +252,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -270,27 +270,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:08:37 GMT + - Sat, 02 Jul 2022 10:43:00 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -302,7 +302,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -320,27 +320,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:08:47 GMT + - Sat, 02 Jul 2022 10:43:10 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -352,7 +352,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -370,27 +370,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:08:57 GMT + - Sat, 02 Jul 2022 10:43:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -402,7 +402,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -420,27 +420,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:09:08 GMT + - Sat, 02 Jul 2022 10:43:31 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -452,7 +452,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -470,27 +470,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:09:19 GMT + - Sat, 02 Jul 2022 10:43:42 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -502,7 +502,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -520,27 +520,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:09:29 GMT + - Sat, 02 Jul 2022 10:43:52 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -552,7 +552,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -570,27 +570,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:09:39 GMT + - Sat, 02 Jul 2022 10:44:03 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -602,7 +602,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -620,27 +620,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:09:50 GMT + - Sat, 02 Jul 2022 10:44:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -652,7 +652,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -670,27 +670,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:10:00 GMT + - Sat, 02 Jul 2022 10:44:24 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -702,7 +702,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -720,27 +720,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:10:10 GMT + - Sat, 02 Jul 2022 10:44:34 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -752,7 +752,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -770,27 +770,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:10:21 GMT + - Sat, 02 Jul 2022 10:44:45 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -802,7 +802,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -820,27 +820,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:10:31 GMT + - Sat, 02 Jul 2022 10:44:55 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -852,7 +852,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -870,27 +870,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:10:42 GMT + - Sat, 02 Jul 2022 10:45:06 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -902,7 +902,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -920,27 +920,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:10:53 GMT + - Sat, 02 Jul 2022 10:45:17 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -952,7 +952,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -970,27 +970,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:11:03 GMT + - Sat, 02 Jul 2022 10:45:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1002,7 +1002,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1020,27 +1020,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:11:14 GMT + - Sat, 02 Jul 2022 10:45:38 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1052,7 +1052,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1070,27 +1070,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:11:24 GMT + - Sat, 02 Jul 2022 10:45:48 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1102,7 +1102,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1120,27 +1120,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:11:35 GMT + - Sat, 02 Jul 2022 10:45:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1152,7 +1152,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1170,27 +1170,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:11:45 GMT + - Sat, 02 Jul 2022 10:46:09 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1202,7 +1202,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1220,27 +1220,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:11:55 GMT + - Sat, 02 Jul 2022 10:46:20 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1252,7 +1252,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1270,27 +1270,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:06 GMT + - Sat, 02 Jul 2022 10:46:30 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1302,7 +1302,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1320,27 +1320,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Running","startTime":"2021-09-05T16:07:23.6166334Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '316' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:16 GMT + - Sat, 02 Jul 2022 10:46:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1352,7 +1352,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1370,27 +1370,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/1e5d7693-53c1-4c6d-970a-53b1afae9bf2","name":"1e5d7693-53c1-4c6d-970a-53b1afae9bf2","status":"Succeeded","startTime":"2021-09-05T16:07:23.6166334Z","endTime":"2021-09-05T16:12:22.515392Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Running","startTime":"2022-07-02T10:41:46.4050668Z"}' headers: cache-control: - no-cache content-length: - - '358' + - '317' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:28 GMT + - Sat, 02 Jul 2022 10:46:52 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1402,7 +1402,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1420,27 +1420,77 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6340c883c696442b94e8cb6ff7abd45b","networkProfile":{"outboundIPs":{"publicIPs":["52.190.37.142"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10","name":"cli-unittest-10"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/b4a09e5a-31de-4449-8301-dfe892cf6491","name":"b4a09e5a-31de-4449-8301-dfe892cf6491","status":"Succeeded","startTime":"2022-07-02T10:41:46.4050668Z","endTime":"2022-07-02T10:47:01.2932933Z"}' headers: cache-control: - no-cache content-length: - - '435' + - '360' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:28 GMT + - Sat, 02 Jul 2022 10:47:02 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - spring create + Connection: + - keep-alive + ParameterSetName: + - -n -g --sku -l --no-wait + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"f69793ced0ec454ab5d446f78899ad4d","networkProfile":{"outboundIPs":{"publicIPs":["20.96.133.92"]}},"powerState":"Running","fqdn":"cli-unittest-11.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11","name":"cli-unittest-11","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:41:45.1547597Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:41:45.1547597Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '755' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:47:03 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1452,14 +1502,14 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11996' + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK - request: - body: '{"location": "eastus", "kind": "web", "properties": {"Application_Type": + body: '{"location": "eastus2", "kind": "web", "properties": {"Application_Type": "web"}}' headers: Accept: @@ -1471,36 +1521,49 @@ interactions: Connection: - keep-alive Content-Length: - - '80' + - '81' Content-Type: - application/json ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 - (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-azure-mgmt-applicationinsights/1.0.0 Python/3.9.5 + (Windows-10-10.0.22621-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli-unittest-10?api-version=2015-05-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.Insights/components/cli-unittest-11?api-version=2015-05-01 response: body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli-unittest-10","name":"cli-unittest-10","type":"microsoft.insights/components","location":"eastus","tags":{},"kind":"web","etag":"\"18010821-0000-0100-0000-6134ec750000\"","properties":{"Ver":"v2","ApplicationId":"cli-unittest-10","AppId":"b3f01146-ec12-495e-9258-da3a38b18663","Application_Type":"web","Flow_Type":null,"Request_Source":null,"InstrumentationKey":"02f8d9dd-7bb7-4151-94b6-4b178af426c5","ConnectionString":"InstrumentationKey=02f8d9dd-7bb7-4151-94b6-4b178af426c5;IngestionEndpoint=https://eastus-5.in.applicationinsights.azure.com/","Name":"cli-unittest-10","CreationDate":"2021-09-05T16:12:37.0505535+00:00","TenantId":"0753feba-86f1-4242-aff1-27938fb04531","provisioningState":"Succeeded","SamplingPercentage":null,"RetentionInDays":90,"IngestionMode":"ApplicationInsights","publicNetworkAccessForIngestion":"Enabled","publicNetworkAccessForQuery":"Enabled"}}' + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/microsoft.insights/components/cli-unittest-11\",\r\n + \ \"name\": \"cli-unittest-11\",\r\n \"type\": \"microsoft.insights/components\",\r\n + \ \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"kind\": \"web\",\r\n + \ \"etag\": \"\\\"270028f3-0000-0200-0000-62c022360000\\\"\",\r\n \"properties\": + {\r\n \"ApplicationId\": \"cli-unittest-11\",\r\n \"AppId\": \"90d81a55-becd-42cb-b539-931f360ab278\",\r\n + \ \"Application_Type\": \"web\",\r\n \"Flow_Type\": null,\r\n \"Request_Source\": + null,\r\n \"InstrumentationKey\": \"c086eb38-9380-4828-9352-2f4d5e90584c\",\r\n + \ \"ConnectionString\": \"InstrumentationKey=c086eb38-9380-4828-9352-2f4d5e90584c;IngestionEndpoint=https://eastus2-0.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/\",\r\n + \ \"Name\": \"cli-unittest-11\",\r\n \"CreationDate\": \"2022-07-02T10:47:16.549983+00:00\",\r\n + \ \"TenantId\": \"0753feba-86f1-4242-aff1-27938fb04531\",\r\n \"provisioningState\": + \"Succeeded\",\r\n \"SamplingPercentage\": null,\r\n \"RetentionInDays\": + 90,\r\n \"IngestionMode\": \"ApplicationInsights\",\r\n \"publicNetworkAccessForIngestion\": + \"Enabled\",\r\n \"publicNetworkAccessForQuery\": \"Enabled\",\r\n \"Ver\": + \"v2\"\r\n }\r\n}" headers: access-control-expose-headers: - Request-Context cache-control: - no-cache content-length: - - '996' + - '1226' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:39 GMT + - Sat, 02 Jul 2022 10:47:21 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:920e14b1-13f3-461a-a4bb-b4fe6f1a4525 + - appId=cid-v1:7f83c1fe-8c94-4d55-9337-4ddc696f61ed server: - Microsoft-IIS/10.0 strict-transport-security: @@ -1512,7 +1575,7 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-writes: - - '1198' + - '1199' x-powered-by: - ASP.NET status: @@ -1520,7 +1583,7 @@ interactions: message: OK - request: body: '{"properties": {"traceEnabled": true, "appInsightsInstrumentationKey": - "InstrumentationKey=02f8d9dd-7bb7-4151-94b6-4b178af426c5;IngestionEndpoint=https://eastus-5.in.applicationinsights.azure.com/"}}' + "InstrumentationKey=c086eb38-9380-4828-9352-2f4d5e90584c;IngestionEndpoint=https://eastus2-0.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/"}}' headers: Accept: - application/json @@ -1531,37 +1594,37 @@ interactions: Connection: - keep-alive Content-Length: - - '199' + - '264' Content-Type: - application/json ParameterSetName: - -n -g --sku -l --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=02f8d9dd-7bb7-4151-94b6-4b178af426c5;IngestionEndpoint=https://eastus-5.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=c086eb38-9380-4828-9352-2f4d5e90584c;IngestionEndpoint=https://eastus2-0.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11/monitoringSettings/default","name":"default"}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/14aeb7ae-80f6-4705-97e4-03d1b5014882?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/5002fe0e-1363-45ae-a71c-844da4d356e4?api-version=2020-11-01-preview cache-control: - no-cache content-length: - - '535' + - '601' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:40 GMT + - Sat, 02 Jul 2022 10:47:23 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/14aeb7ae-80f6-4705-97e4-03d1b5014882/Spring/cli-unittest-10?api-version=2020-11-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/5002fe0e-1363-45ae-a71c-844da4d356e4/Spring/cli-unittest-11?api-version=2020-11-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1571,7 +1634,7 @@ interactions: x-ms-ratelimit-remaining-subscription-writes: - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted @@ -1587,29 +1650,81 @@ interactions: Connection: - keep-alive ParameterSetName: - - -n -g -o + - -n -g + User-Agent: + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11?api-version=2022-05-01-preview + response: + body: + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"f69793ced0ec454ab5d446f78899ad4d","networkProfile":{"outboundIPs":{"publicIPs":["20.96.133.92"]}},"powerState":"Running","fqdn":"cli-unittest-11.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11","name":"cli-unittest-11","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:41:45.1547597Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:47:22.8034396Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '755' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 02 Jul 2022 10:47:25 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d + server: + - nginx/1.17.7 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11993' + x-rp-server-mvid: + - 3c1def89-fec6-4403-b529-69469eb5b958 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - spring app-insights show + Connection: + - keep-alive + ParameterSetName: + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11?api-version=2022-01-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6340c883c696442b94e8cb6ff7abd45b","networkProfile":{"outboundIPs":{"publicIPs":["52.190.37.142"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10","name":"cli-unittest-10"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"f69793ced0ec454ab5d446f78899ad4d","networkProfile":{"outboundIPs":{"publicIPs":["20.96.133.92"]}},"powerState":"Running","fqdn":"cli-unittest-11.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11","name":"cli-unittest-11","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:41:45.1547597Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:47:22.8034396Z"}}' headers: cache-control: - no-cache content-length: - - '435' + - '755' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:42 GMT + - Sat, 02 Jul 2022 10:47:27 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1621,9 +1736,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1641,27 +1756,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.1.1"},"provisioningState":"Succeeded","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=02f8d9dd-7bb7-4151-94b6-4b178af426c5;IngestionEndpoint=https://eastus-5.in.applicationinsights.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Updating","traceEnabled":true,"appInsightsInstrumentationKey":"InstrumentationKey=c086eb38-9380-4828-9352-2f4d5e90584c;IngestionEndpoint=https://eastus2-0.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/"},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '536' + - '601' content-type: - application/json; charset=utf-8 date: - - Sun, 05 Sep 2021 16:12:53 GMT + - Sat, 02 Jul 2022 10:47:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1673,7 +1788,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1693,29 +1808,29 @@ interactions: ParameterSetName: - -n -g --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-11?api-version=2022-05-01-preview response: body: string: '' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-10/operationId/4f285408-b0e4-4e01-8c71-0464925a70df?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-11/operationId/bfd0e175-1d44-49e3-95ca-d050fef5e6da?api-version=2022-05-01-preview cache-control: - no-cache content-length: - '0' date: - - Sun, 05 Sep 2021 16:12:55 GMT + - Sat, 02 Jul 2022 10:47:30 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/4f285408-b0e4-4e01-8c71-0464925a70df/Spring/cli-unittest-10?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/bfd0e175-1d44-49e3-95ca-d050fef5e6da/Spring/cli-unittest-11?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1725,7 +1840,7 @@ interactions: x-ms-ratelimit-remaining-subscription-deletes: - '14999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted diff --git a/src/spring/azext_spring/tests/latest/recordings/test_create_asc_without_ai_cases.yaml b/src/spring/azext_spring/tests/latest/recordings/test_create_asc_without_ai_cases.yaml index 2a90c474291..823be0e7f78 100644 --- a/src/spring/azext_spring/tests/latest/recordings/test_create_asc_without_ai_cases.yaml +++ b/src/spring/azext_spring/tests/latest/recordings/test_create_asc_without_ai_cases.yaml @@ -1,7 +1,7 @@ interactions: - request: - body: '{"location": "eastus", "properties": {}, "sku": {"name": "B0", "tier": - "BASIC"}}' + body: '{"location": "eastus2", "properties": {"zoneRedundant": false}, "sku": + {"name": "B0", "tier": "Basic"}}' headers: Accept: - application/json @@ -12,37 +12,37 @@ interactions: Connection: - keep-alive Content-Length: - - '80' + - '103' Content-Type: - application/json ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Creating","version":3,"serviceId":"b3c17ee3f0f0464cb5b7c597775379ca"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}' + string: '{"properties":{"provisioningState":"Creating","zoneRedundant":false,"version":3,"serviceId":"85df292733244161a9f95826402286ef","powerState":"Running","fqdn":"cli-unittest-9-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1","name":"cli-unittest-9-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:46:28.3346258Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:28.3346258Z"}}' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview cache-control: - no-cache content-length: - - '367' + - '693' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:07:57 GMT + - Sat, 02 Jul 2022 10:46:31 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/c21feaab-fcbf-466c-90af-33b467956e32/Spring/cli-unittest-1?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/8f9959cc-505f-4f65-86dc-6ac82fb628b8/Spring/cli-unittest-9-1?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -52,7 +52,7 @@ interactions: x-ms-ratelimit-remaining-subscription-resource-requests: - '1199' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 201 message: Created @@ -70,27 +70,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:08:27 GMT + - Sat, 02 Jul 2022 10:47:01 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -102,7 +102,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -120,27 +120,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:08:38 GMT + - Sat, 02 Jul 2022 10:47:11 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -152,7 +152,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -170,27 +170,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:08:48 GMT + - Sat, 02 Jul 2022 10:47:22 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -202,7 +202,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -220,27 +220,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:08:58 GMT + - Sat, 02 Jul 2022 10:47:33 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -252,7 +252,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -270,27 +270,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:09:09 GMT + - Sat, 02 Jul 2022 10:47:43 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -302,7 +302,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -320,27 +320,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:09:19 GMT + - Sat, 02 Jul 2022 10:47:53 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -352,7 +352,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -370,27 +370,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:09:29 GMT + - Sat, 02 Jul 2022 10:48:04 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -402,7 +402,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -420,27 +420,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:09:39 GMT + - Sat, 02 Jul 2022 10:48:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -452,7 +452,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -470,27 +470,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:09:49 GMT + - Sat, 02 Jul 2022 10:48:25 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -502,7 +502,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -520,27 +520,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:10:01 GMT + - Sat, 02 Jul 2022 10:48:35 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -552,7 +552,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -570,27 +570,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:10:11 GMT + - Sat, 02 Jul 2022 10:48:45 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -602,7 +602,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -620,27 +620,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:10:21 GMT + - Sat, 02 Jul 2022 10:48:57 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -652,7 +652,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -670,27 +670,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:10:33 GMT + - Sat, 02 Jul 2022 10:49:07 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -702,7 +702,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -720,27 +720,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:10:44 GMT + - Sat, 02 Jul 2022 10:49:17 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -752,7 +752,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -770,27 +770,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:10:54 GMT + - Sat, 02 Jul 2022 10:49:28 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -802,7 +802,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -820,27 +820,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:11:04 GMT + - Sat, 02 Jul 2022 10:49:38 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -852,7 +852,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -870,27 +870,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:11:14 GMT + - Sat, 02 Jul 2022 10:49:48 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -902,7 +902,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -920,27 +920,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:11:24 GMT + - Sat, 02 Jul 2022 10:49:59 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -952,7 +952,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -970,27 +970,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:11:35 GMT + - Sat, 02 Jul 2022 10:50:09 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1002,7 +1002,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1020,27 +1020,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:11:45 GMT + - Sat, 02 Jul 2022 10:50:19 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1052,7 +1052,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1070,27 +1070,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:11:55 GMT + - Sat, 02 Jul 2022 10:50:31 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1102,7 +1102,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1120,27 +1120,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:12:05 GMT + - Sat, 02 Jul 2022 10:50:41 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1152,7 +1152,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1170,27 +1170,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:12:17 GMT + - Sat, 02 Jul 2022 10:50:52 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1202,7 +1202,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1220,27 +1220,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Running","startTime":"2022-07-02T10:46:29.5546781Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '318' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:12:27 GMT + - Sat, 02 Jul 2022 10:51:02 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1252,7 +1252,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1270,27 +1270,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/8f9959cc-505f-4f65-86dc-6ac82fb628b8","name":"8f9959cc-505f-4f65-86dc-6ac82fb628b8","status":"Succeeded","startTime":"2022-07-02T10:46:29.5546781Z","endTime":"2022-07-02T10:51:11.5448089Z"}' headers: cache-control: - no-cache content-length: - - '315' + - '361' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:12:37 GMT + - Sat, 02 Jul 2022 10:51:12 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1302,7 +1302,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1320,227 +1320,27 @@ interactions: ParameterSetName: - -n -g --sku -l --no-wait --disable-app-insights User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1?api-version=2022-05-01-preview response: body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"85df292733244161a9f95826402286ef","networkProfile":{"outboundIPs":{"publicIPs":["20.85.62.108"]}},"powerState":"Running","fqdn":"cli-unittest-9-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1","name":"cli-unittest-9-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:46:28.3346258Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:28.3346258Z"}}' headers: cache-control: - no-cache content-length: - - '315' + - '758' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:12:47 GMT + - Sat, 02 Jul 2022 10:51:14 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --disable-app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 06:12:57 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --disable-app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 06:13:07 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --disable-app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Running","startTime":"2021-09-06T06:07:56.5917602Z"}' - headers: - cache-control: - - no-cache - content-length: - - '315' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 06:13:18 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 - server: - - nginx/1.17.7 - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding,Accept-Encoding - x-content-type-options: - - nosniff - x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - CommandName: - - spring create - Connection: - - keep-alive - ParameterSetName: - - -n -g --sku -l --no-wait --disable-app-insights - User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32?api-version=2022-05-01-preview - response: - body: - string: '{"id":"subscriptions/0753feba-86f1-4242-aff1-27938fb04531/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/c21feaab-fcbf-466c-90af-33b467956e32","name":"c21feaab-fcbf-466c-90af-33b467956e32","status":"Succeeded","startTime":"2021-09-06T06:07:56.5917602Z","endTime":"2021-09-06T06:13:21.8382746Z"}' - headers: - cache-control: - - no-cache - content-length: - - '358' - content-type: - - application/json; charset=utf-8 - date: - - Mon, 06 Sep 2021 06:13:28 GMT - expires: - - '-1' - pragma: - - no-cache - request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1551,8 +1351,10 @@ interactions: - Accept-Encoding,Accept-Encoding x-content-type-options: - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '11994' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1560,37 +1362,37 @@ interactions: body: null headers: Accept: - - '*/*' + - application/json Accept-Encoding: - gzip, deflate CommandName: - - spring create + - spring show Connection: - keep-alive ParameterSetName: - - -n -g --sku -l --no-wait --disable-app-insights + - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1?api-version=2022-05-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"b3c17ee3f0f0464cb5b7c597775379ca","networkProfile":{"outboundIPs":{"publicIPs":["104.45.173.12"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"85df292733244161a9f95826402286ef","networkProfile":{"outboundIPs":{"publicIPs":["20.85.62.108"]}},"powerState":"Running","fqdn":"cli-unittest-9-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1","name":"cli-unittest-9-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:46:28.3346258Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:28.3346258Z"}}' headers: cache-control: - no-cache content-length: - - '433' + - '758' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:13:28 GMT + - Sat, 02 Jul 2022 10:51:18 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1602,9 +1404,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11999' + - '11995' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1616,33 +1418,33 @@ interactions: Accept-Encoding: - gzip, deflate CommandName: - - spring show + - spring app-insights show Connection: - keep-alive ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1?api-version=2022-01-01-preview response: body: - string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"b3c17ee3f0f0464cb5b7c597775379ca","networkProfile":{"outboundIPs":{"publicIPs":["104.45.173.12"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}' + string: '{"properties":{"provisioningState":"Succeeded","zoneRedundant":false,"version":3,"serviceId":"85df292733244161a9f95826402286ef","networkProfile":{"outboundIPs":{"publicIPs":["20.85.62.108"]}},"powerState":"Running","fqdn":"cli-unittest-9-1.azuremicroservices.io"},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1","name":"cli-unittest-9-1","systemData":{"createdBy":"jiec@microsoft.com","createdByType":"User","createdAt":"2022-07-02T10:46:28.3346258Z","lastModifiedBy":"jiec@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-02T10:46:28.3346258Z"}}' headers: cache-control: - no-cache content-length: - - '433' + - '758' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:13:33 GMT + - Sat, 02 Jul 2022 10:51:20 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1654,9 +1456,9 @@ interactions: x-content-type-options: - nosniff x-ms-ratelimit-remaining-subscription-resource-requests: - - '11998' + - '11997' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1674,27 +1476,27 @@ interactions: ParameterSetName: - -n -g User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default?api-version=2020-11-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1/monitoringSettings/default?api-version=2020-11-01-preview response: body: - string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1/monitoringSettings/default","name":"default"}' + string: '{"properties":{"appInsightsSamplingRate":10.0,"appInsightsAgentVersions":{"java":"3.2.11"},"provisioningState":"Succeeded","traceEnabled":false,"appInsightsInstrumentationKey":null},"type":"Microsoft.AppPlatform/Spring/monitoringSettings","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1/monitoringSettings/default","name":"default"}' headers: cache-control: - no-cache content-length: - - '400' + - '417' content-type: - application/json; charset=utf-8 date: - - Mon, 06 Sep 2021 06:13:35 GMT + - Sat, 02 Jul 2022 10:51:22 GMT expires: - '-1' pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1706,7 +1508,7 @@ interactions: x-content-type-options: - nosniff x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 200 message: OK @@ -1726,29 +1528,29 @@ interactions: ParameterSetName: - -n -g --no-wait User-Agent: - - AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0) + - AZURECLI/2.37.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2022-05-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-9-1?api-version=2022-05-01-preview response: body: string: '' headers: azure-asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationStatus/cli-unittest-1/operationId/3f9f1f91-c4d3-4d91-b93c-78db63409850?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationStatus/cli-unittest-9-1/operationId/707e6a22-f52d-4461-8540-5bbd6bb2b118?api-version=2022-05-01-preview cache-control: - no-cache content-length: - '0' date: - - Mon, 06 Sep 2021 06:13:38 GMT + - Sat, 02 Jul 2022 10:51:25 GMT expires: - '-1' location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus/operationResults/3f9f1f91-c4d3-4d91-b93c-78db63409850/Spring/cli-unittest-1?api-version=2022-05-01-preview + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/locations/eastus2/operationResults/707e6a22-f52d-4461-8540-5bbd6bb2b118/Spring/cli-unittest-9-1?api-version=2022-05-01-preview pragma: - no-cache request-context: - - appId=cid-v1:ccd65fc4-7cd4-497e-8dc8-9a76e9a43ae2 + - appId=cid-v1:797d7e4e-8180-497e-a254-780fbd39ba4d server: - nginx/1.17.7 strict-transport-security: @@ -1758,7 +1560,7 @@ interactions: x-ms-ratelimit-remaining-subscription-deletes: - '14999' x-rp-server-mvid: - - 1ad6f767-93a4-44b8-a9d3-86d493cbdd27 + - 3c1def89-fec6-4403-b529-69469eb5b958 status: code: 202 message: Accepted diff --git a/src/spring/azext_spring/tests/latest/recordings/test_gateway.yaml b/src/spring/azext_spring/tests/latest/recordings/test_gateway.yaml index 556196918cd..f68cedd577a 100644 --- a/src/spring/azext_spring/tests/latest/recordings/test_gateway.yaml +++ b/src/spring/azext_spring/tests/latest/recordings/test_gateway.yaml @@ -453,7 +453,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs?api-version=2022-05-01-preview response: body: string: '{"value":[{"properties":{"appResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service","routes":[{"title":"Customers @@ -509,7 +509,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service?api-version=2022-05-01-preview response: body: string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/configurationServices/default"},"serviceRegistry":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/serviceRegistries/default"}},"public":true,"url":"https://tx-enterprise-customers-service.asc-test.net","provisioningState":"Succeeded","fqdn":"tx-enterprise.asc-test.net","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service","name":"customers-service","systemData":{"createdBy":"ninpan@microsoft.com","createdByType":"User","createdAt":"2021-12-13T10:33:00.0319673Z","lastModifiedBy":"taoxu@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-12-15T08:49:16.7172664Z"}}' @@ -568,7 +568,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-05-01-preview response: body: string: '{"properties":{"appResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service","routes":[{"title":"Customers @@ -672,7 +672,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-05-01-preview response: body: string: '{"properties":{"appResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service","routes":[{"title":"Customers @@ -776,7 +776,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-05-01-preview response: body: string: '{"properties":{"appResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service","routes":[{"title":"Customers @@ -828,7 +828,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/vets-service?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/vets-service?api-version=2022-05-01-preview response: body: string: '{"properties":{"addonConfigs":{"applicationConfigurationService":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/configurationServices/default"},"serviceRegistry":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/serviceRegistries/default"}},"public":false,"provisioningState":"Succeeded","fqdn":"tx-enterprise.asc-test.net","httpsOnly":false,"temporaryDisk":{"sizeInGB":5,"mountPath":"/tmp"},"persistentDisk":{"sizeInGB":0,"mountPath":"/persistent"},"enableEndToEndTLS":false},"type":"Microsoft.AppPlatform/Spring/apps","identity":null,"location":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/vets-service","name":"vets-service","systemData":{"createdBy":"ninpan@microsoft.com","createdByType":"User","createdAt":"2021-12-13T10:33:00.0449394Z","lastModifiedBy":"xiading@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-12-13T15:15:16.9639224Z"}}' @@ -887,7 +887,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-05-01-preview response: body: string: '{"properties":{"appResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/vets-service","routes":[{"title":"Customers @@ -991,7 +991,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-05-01-preview response: body: string: '{"properties":{"appResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/vets-service","routes":[{"title":"Customers @@ -1095,7 +1095,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs?api-version=2022-05-01-preview response: body: string: '{"value":[{"properties":{"appResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/apps/customers-service","routes":[{"title":"Customers @@ -1207,7 +1207,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-05-01-preview response: body: string: '' @@ -1359,7 +1359,7 @@ interactions: User-Agent: - AZURECLI/2.31.0 azsdk-python-mgmt-appplatform/6.1.0 Python/3.8.5 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-01-01-preview + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/tx/providers/Microsoft.AppPlatform/Spring/tx-enterprise/gateways/default/routeConfigs/cli-route?api-version=2022-05-01-preview response: body: string: '{"error":{"code":"NotFound","message":"Spring Gateway Route Config diff --git a/src/spring/azext_spring/tests/latest/test_asa_app.py b/src/spring/azext_spring/tests/latest/test_asa_app.py index f270ac75618..c06214eed0a 100644 --- a/src/spring/azext_spring/tests/latest/test_asa_app.py +++ b/src/spring/azext_spring/tests/latest/test_asa_app.py @@ -273,7 +273,7 @@ def verify_build_args(self, client, *args): if build_args and build_args[0]: self.assertEqual(1, len(build_args)) self.assertEqual(5, len(build_args[0][0])) - self.assertEqual(args[0:2]+('default',)+(args[2],), build_args[0][0][0:4]) + self.assertEqual(args[0:2]+('default',)+(args[2]+'-default',), build_args[0][0][0:4]) self.put_build_resource = build_args[0][0][4] def _execute(self, *args, **kwargs): @@ -465,6 +465,11 @@ def test_app_update_jvm_options(self): self.assertEqual('Java_11', resource.properties.source.runtime_version) self.assertEqual('test-option', resource.properties.source.jvm_options) + def test_app_set_termination_grace_period_seconds(self): + self._execute('rg', 'asc', 'app', deployment=self._get_deployment(), termination_grace_period_seconds=88) + resource = self.patch_deployment_resource + self.assertEqual(88, resource.properties.deployment_settings.termination_grace_period_seconds) + def test_app_disable_probes(self): self._execute('rg', 'asc', 'app', deployment=self._get_deployment(), enable_liveness_probe=False, enable_readiness_probe=False, enable_startup_probe=False) diff --git a/src/spring/azext_spring/tests/latest/test_asa_app_insights_scenario.py b/src/spring/azext_spring/tests/latest/test_asa_app_insights_scenario.py index bd70db54409..b7f4f9bed24 100644 --- a/src/spring/azext_spring/tests/latest/test_asa_app_insights_scenario.py +++ b/src/spring/azext_spring/tests/latest/test_asa_app_insights_scenario.py @@ -28,9 +28,9 @@ class AzureSpringCloudCreateTests(ScenarioTest): def test_create_asc_with_ai_basic_case(self): self.kwargs.update({ - 'serviceName': 'cli-unittest-10', + 'serviceName': 'cli-unittest-11', 'SKU': 'Basic', - 'location': 'eastus', + 'location': 'eastus2', 'rg': 'cli' }) self.cmd('spring create -n {serviceName} -g {rg} --sku {SKU} -l {location} ' @@ -43,9 +43,9 @@ def test_create_asc_heavy_cases(self): self.kwargs.update({ 'serviceName': 'cli-unittest', 'SKU': 'Basic', - 'location': 'eastus', + 'location': 'eastus2', 'rg': 'cli', - 'shared_ai_name': 'cli_scenario_test_20210906102205' + 'shared_ai_name': 'cli_scenario_test_202207021820' }) rg = self.kwargs['rg'] ai_id, ai_i_key, ai_c_string = self._get_ai_info(rg, self.kwargs['shared_ai_name']) @@ -86,9 +86,9 @@ def test_create_asc_heavy_cases(self): def test_create_asc_without_ai_cases(self): self.kwargs.update({ - 'serviceName': 'cli-unittest', + 'serviceName': 'cli-unittest-9', 'SKU': 'Basic', - 'location': 'eastus', + 'location': 'eastus2', 'rg': 'cli', }) rg = self.kwargs['rg'] @@ -156,7 +156,7 @@ def test_asc_update(self): self.kwargs.update({ 'serviceName': 'cli-unittest10', 'rg': 'cli', - 'shared_ai_name': 'cli_scenario_test_20210906102205' + 'shared_ai_name': 'cli_scenario_test_202207021820' }) rg = self.kwargs['rg'] service_name = self.kwargs['serviceName'] @@ -208,7 +208,7 @@ def test_asc_app_insights_update(self): self.kwargs.update({ 'serviceName': 'cli-unittest10', 'rg': 'cli', - 'shared_ai_name': 'cli_scenario_test_20210906102205' + 'shared_ai_name': 'cli_scenario_test_202207021820' }) rg = self.kwargs['rg'] service_name = self.kwargs['serviceName'] @@ -381,7 +381,7 @@ def _wait_ai(self, rg, service_name): ''' def _get_ai_info(self, rg, ai_name): ai_resource_id = '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli' \ - '/providers/microsoft.insights/components/cli_scenario_test_20210906102205' + '/providers/microsoft.insights/components/{}'.format(ai_name) ai_instrumentation_key = '00000000-0000-0000-0000-000000000000' ai_connection_string = 'InstrumentationKey=00000000-0000-0000-0000-000000000000;' \ 'IngestionEndpoint=https://xxxxxxxxxxxxxxxxxxxxxxxx/' diff --git a/src/spring/azext_spring/tests/latest/test_asa_app_insights_validator.py b/src/spring/azext_spring/tests/latest/test_asa_app_insights_validator.py index 15bb397818a..38d6d3e13ad 100644 --- a/src/spring/azext_spring/tests/latest/test_asa_app_insights_validator.py +++ b/src/spring/azext_spring/tests/latest/test_asa_app_insights_validator.py @@ -4,6 +4,9 @@ # -------------------------------------------------------------------------------------------- import unittest from argparse import Namespace +from azure.cli.core import AzCommandsLoader +from azure.cli.core.commands import AzCliCommand +from azure.cli.core.mock import DummyCli from azure.cli.core.util import CLIError from ..._validators import (validate_tracing_parameters_asc_create, validate_tracing_parameters_asc_update, validate_java_agent_parameters, validate_app_insights_parameters) @@ -138,7 +141,7 @@ def test_validate_app_insights_parameters_1(self): sampling_rate=None, disable=True) with self.assertRaises(CLIError) as context: - validate_app_insights_parameters(ns) + validate_app_insights_parameters(_get_test_cmd(), ns) self.assertTrue("Conflict detected: '--app-insights' or '--app-insights-key' or '--sampling-rate' " "can not be set with '--disable'." in str(context.exception)) @@ -148,7 +151,7 @@ def test_validate_app_insights_parameters_2(self): sampling_rate=50, disable=True) with self.assertRaises(CLIError) as context: - validate_app_insights_parameters(ns) + validate_app_insights_parameters(_get_test_cmd(), ns) self.assertTrue("Conflict detected: '--app-insights' or '--app-insights-key' or '--sampling-rate' " "can not be set with '--disable'." in str(context.exception)) @@ -158,5 +161,15 @@ def test_validate_app_insights_parameters_3(self): sampling_rate=None, disable=False) with self.assertRaises(CLIError) as context: - validate_app_insights_parameters(ns) + validate_app_insights_parameters(_get_test_cmd(), ns) self.assertTrue("Invalid value: nothing is updated for application insights." in str(context.exception)) + + +def _get_test_cmd(): + cli_ctx = DummyCli() + cli_ctx.data['subscription_id'] = '00000000-0000-0000-0000-000000000000' + loader = AzCommandsLoader(cli_ctx, resource_type='Microsoft.AppPlatform') + cmd = AzCliCommand(loader, 'test', None) + cmd.command_kwargs = {'resource_type': 'Microsoft.AppPlatform'} + cmd.cli_ctx = cli_ctx + return cmd diff --git a/src/spring/azext_spring/tests/latest/test_asa_scenario.py b/src/spring/azext_spring/tests/latest/test_asa_scenario.py index 5f64362adda..d013f938836 100644 --- a/src/spring/azext_spring/tests/latest/test_asa_scenario.py +++ b/src/spring/azext_spring/tests/latest/test_asa_scenario.py @@ -196,16 +196,17 @@ def test_load_public_cert_to_app(self): class CustomImageTest(ScenarioTest): def test_app_deploy_container(self): - py_path = os.path.abspath(os.path.dirname(__file__)) - file_path = os.path.join(py_path, 'files/test.jar').replace("\\","/") self.kwargs.update({ 'app': 'test-container', 'serviceName': 'cli-unittest', 'containerImage': 'springio/gs-spring-boot-docker', 'resourceGroup': 'cli', - 'file': file_path + 'location': 'westus' }) + self.cmd('group create -n {resourceGroup} -l {location}') + self.cmd('spring create -n {serviceName} -g {resourceGroup}') + self.cmd('spring app create -s {serviceName} -g {resourceGroup} -n {app}') self.cmd('spring app deploy -g {resourceGroup} -s {serviceName} -n {app} --container-image {containerImage}', checks=[ @@ -214,7 +215,16 @@ def test_app_deploy_container(self): self.check('properties.source.customContainer.containerImage', '{containerImage}'), ]) - self.cmd('spring app deployment create -g {resourceGroup} -s {serviceName} --app {app} -n green' - + ' --container-image {containerImage} --registry-username PLACEHOLDER --registry-password PLACEHOLDER', checks=[ + self.cmd('spring app deploy -g {resourceGroup} -s {serviceName} -n {app} --container-image {containerImage} --container-command "java" --container-args "-cp /app/resources:/app/classes:/app/libs/* hello.Application"', checks=[ + self.check('name', 'default'), + self.check('properties.source.type', 'Container'), + self.check('properties.source.customContainer.containerImage', '{containerImage}'), + self.check('properties.source.customContainer.command', ['java']), + self.check('properties.source.customContainer.args', ['-cp', '/app/resources:/app/classes:/app/libs/*', 'hello.Application']), + ]) + + self.cmd('spring app deployment create -g {resourceGroup} -s {serviceName} --app {app} -n green --container-image {containerImage}', checks=[ self.check('name', 'green'), + self.check('properties.source.type', 'Container'), + self.check('properties.source.customContainer.containerImage', '{containerImage}'), ]) diff --git a/src/spring/setup.py b/src/spring/setup.py index 2748fd681d1..49971ffa0a8 100644 --- a/src/spring/setup.py +++ b/src/spring/setup.py @@ -16,7 +16,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '1.0.0' +VERSION = '1.1.4' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers diff --git a/src/ssh/HISTORY.md b/src/ssh/HISTORY.md index c5a7c78fadd..4ecef1cb840 100644 --- a/src/ssh/HISTORY.md +++ b/src/ssh/HISTORY.md @@ -1,5 +1,10 @@ Release History =============== +1.1.2 +----- +* Remove dependency to cryptography (Az CLI core alredy has cryptography) +* New RDP over SSH feature + 1.1.1 ----- * Undo changes to rely on PATH variable to find SSH executables on Windows. Look for executables under "C:\Windows\System32\OpenSSH" diff --git a/src/ssh/azext_ssh/_help.py b/src/ssh/azext_ssh/_help.py index 78b3999a4b8..e48def87252 100644 --- a/src/ssh/azext_ssh/_help.py +++ b/src/ssh/azext_ssh/_help.py @@ -51,6 +51,10 @@ - name: Give a SSH Client Folder to use the ssh executables in that folder, like ssh-keygen.exe and ssh.exe. If not provided, the extension attempts to use pre-installed OpenSSH client (on Windows, extension looks for pre-installed executables under C:\\Windows\\System32\\OpenSSH). text: | az ssh vm --resource-group myResourceGroup --name myVM --ssh-client-folder "C:\\Program Files\\OpenSSH" + + - name: Open RDP connection over SSH. Useful for connecting via RDP to Arc Servers with no public IP address. Currently only supported for Windows clients. + text: | + az ssh vm --resource-group myResourceGroup --name myVM --local-user username --rdp """ helps['ssh config'] = """ @@ -144,4 +148,8 @@ - name: Give a SSH Client Folder to use the ssh executables in that folder, like ssh-keygen.exe and ssh.exe. If not provided, the extension attempts to use pre-installed OpenSSH client (on Windows, extension looks for pre-installed executables under C:\\Windows\\System32\\OpenSSH). text: | az ssh arc --resource-group myResourceGroup --name myMachine --ssh-client-folder "C:\\Program Files\\OpenSSH" + + - name: Open RDP connection over SSH. Useful for connecting via RDP to Arc Servers with no public IP address. Currently only supported for Windows clients. + text: | + az ssh arc --resource-group myResourceGroup --name myVM --local-user username --rdp """ diff --git a/src/ssh/azext_ssh/_params.py b/src/ssh/azext_ssh/_params.py index 9e9bf17d3ff..59718ccd9ee 100644 --- a/src/ssh/azext_ssh/_params.py +++ b/src/ssh/azext_ssh/_params.py @@ -32,6 +32,8 @@ def load_arguments(self, _): c.argument('ssh_proxy_folder', options_list=['--ssh-proxy-folder'], help=('Path to the folder where the ssh proxy should be saved. ' 'Default to .clientsshproxy folder in user\'s home directory if not provided.')) + c.argument('winrdp', options_list=['--winrdp', '--rdp'], help=('Start RDP connection over SSH.'), + action='store_true') c.positional('ssh_args', nargs='*', help='Additional arguments passed to OpenSSH') with self.argument_context('ssh config') as c: @@ -87,4 +89,6 @@ def load_arguments(self, _): c.argument('ssh_proxy_folder', options_list=['--ssh-proxy-folder'], help=('Path to the folder where the ssh proxy should be saved. ' 'Default to .clientsshproxy folder in user\'s home directory if not provided.')) + c.argument('winrdp', options_list=['--winrdp', '--rdp'], help=('Start RDP connection over SSH.'), + action='store_true') c.positional('ssh_args', nargs='*', help='Additional arguments passed to OpenSSH') diff --git a/src/ssh/azext_ssh/_process_helper.py b/src/ssh/azext_ssh/_process_helper.py new file mode 100644 index 00000000000..e8741d05216 --- /dev/null +++ b/src/ssh/azext_ssh/_process_helper.py @@ -0,0 +1,112 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-few-public-methods +# pylint: disable=consider-using-with + +import subprocess +from ctypes import WinDLL, c_int, c_size_t, Structure, WinError, sizeof, pointer +from ctypes.wintypes import BOOL, DWORD, HANDLE, LPVOID, LPCWSTR, LPDWORD +from knack.log import get_logger + +logger = get_logger(__name__) + + +def _errcheck(is_error_result=(lambda result: not result)): + def impl(result, func, args): + # pylint: disable=unused-argument + if is_error_result(result): + raise WinError() + + return result + + return impl + + +# Win32 CreateJobObject +kernel32 = WinDLL("kernel32") +kernel32.CreateJobObjectW.errcheck = _errcheck(lambda result: result == 0) +kernel32.CreateJobObjectW.argtypes = (LPVOID, LPCWSTR) +kernel32.CreateJobObjectW.restype = HANDLE + + +# Win32 OpenProcess +PROCESS_TERMINATE = 0x0001 +PROCESS_SET_QUOTA = 0x0100 +PROCESS_SYNCHRONIZE = 0x00100000 +kernel32.OpenProcess.errcheck = _errcheck(lambda result: result == 0) +kernel32.OpenProcess.restype = HANDLE +kernel32.OpenProcess.argtypes = (DWORD, BOOL, DWORD) + +# Win32 WaitForSingleObject +INFINITE = 0xFFFFFFFF +# kernel32.WaitForSingleObject.errcheck = _errcheck() +kernel32.WaitForSingleObject.argtypes = (HANDLE, DWORD) +kernel32.WaitForSingleObject.restype = DWORD + +# Win32 AssignProcessToJobObject +kernel32.AssignProcessToJobObject.errcheck = _errcheck() +kernel32.AssignProcessToJobObject.argtypes = (HANDLE, HANDLE) +kernel32.AssignProcessToJobObject.restype = BOOL + +# Win32 QueryInformationJobObject +JOBOBJECTCLASS = c_int +JobObjectBasicProcessIdList = JOBOBJECTCLASS(3) + + +class JOBOBJECT_BASIC_PROCESS_ID_LIST(Structure): + _fields_ = [('NumberOfAssignedProcess', DWORD), + ('NumberOfProcessIdsInList', DWORD), + ('ProcessIdList', c_size_t * 1)] + + +kernel32.QueryInformationJobObject.errcheck = _errcheck() +kernel32.QueryInformationJobObject.restype = BOOL +kernel32.QueryInformationJobObject.argtypes = (HANDLE, JOBOBJECTCLASS, LPVOID, DWORD, LPDWORD) + + +def launch_and_wait(command): + """Windows Only: Runs and waits for the command to exit. It creates a new process and + associates it with a job object. It then waits for all the job object child processes + to exit. + """ + try: + job = kernel32.CreateJobObjectW(None, None) + process = subprocess.Popen(command) + + # Terminate and set quota are required to join process to job + process_handle = kernel32.OpenProcess( + PROCESS_TERMINATE | PROCESS_SET_QUOTA, + False, + process.pid, + ) + kernel32.AssignProcessToJobObject(job, process_handle) + + job_info = JOBOBJECT_BASIC_PROCESS_ID_LIST() + job_info_size = DWORD(sizeof(job_info)) + + while True: + kernel32.QueryInformationJobObject( + job, + JobObjectBasicProcessIdList, + pointer(job_info), + job_info_size, + pointer(job_info_size)) + + # Wait for the first running child under the job object + if job_info.NumberOfProcessIdsInList > 0: + logger.debug("Waiting for process %d", job_info.ProcessIdList[0]) + # Synchronize access is required to wait on handle + child_handle = kernel32.OpenProcess( + PROCESS_SYNCHRONIZE, + False, + job_info.ProcessIdList[0], + ) + kernel32.WaitForSingleObject(child_handle, INFINITE) + else: + break + + except OSError as e: + logger.error("Could not run '%s' command. Exception: %s", command, str(e)) diff --git a/src/ssh/azext_ssh/connectivity_utils.py b/src/ssh/azext_ssh/connectivity_utils.py index 0a625f220ed..fd38dab6281 100644 --- a/src/ssh/azext_ssh/connectivity_utils.py +++ b/src/ssh/azext_ssh/connectivity_utils.py @@ -12,9 +12,8 @@ from glob import glob import colorama -from colorama import Fore -from colorama import Style +from azure.cli.core.style import Style, print_styled_text from azure.core.exceptions import ResourceNotFoundError from azure.cli.core import telemetry from azure.cli.core import azclierror @@ -69,7 +68,8 @@ def _create_default_endpoint(cmd, resource_group, vm_name, client): colorama.init() raise azclierror.UnauthorizedError(f"Unable to create Default Endpoint for {vm_name} in {resource_group}." f"\nError: {str(e)}", - Fore.YELLOW + "Contact Owner/Contributor of the resource." + Style.RESET_ALL) + colorama.Fore.YELLOW + "Contact Owner/Contributor of the resource." + + colorama.Style.RESET_ALL) # Downloads client side proxy to connect to Arc Connectivity Platform @@ -109,8 +109,7 @@ def get_client_side_proxy(arc_proxy_folder): # write executable in the install location file_utils.write_to_file(install_location, 'wb', response_content, "Failed to create client proxy file. ") os.chmod(install_location, os.stat(install_location).st_mode | stat.S_IXUSR) - colorama.init() - print(Fore.GREEN + f"SSH Client Proxy saved to {install_location}" + Style.RESET_ALL) + print_styled_text((Style.SUCCESS, f"SSH Client Proxy saved to {install_location}")) return install_location diff --git a/src/ssh/azext_ssh/constants.py b/src/ssh/azext_ssh/constants.py index eaf98715102..4917411aeb6 100644 --- a/src/ssh/azext_ssh/constants.py +++ b/src/ssh/azext_ssh/constants.py @@ -17,3 +17,4 @@ "--ssh-client-folder to provide OpenSSH folder path." + Style.RESET_ALL) RECOMMENDATION_RESOURCE_NOT_FOUND = (Fore.YELLOW + "Please ensure the active subscription is set properly " "and resource exists." + Style.RESET_ALL) +RDP_TERMINATE_SSH_WAIT_TIME_IN_SECONDS = 30 diff --git a/src/ssh/azext_ssh/custom.py b/src/ssh/azext_ssh/custom.py index 58c2033f0f3..e396fcefcaa 100644 --- a/src/ssh/azext_ssh/custom.py +++ b/src/ssh/azext_ssh/custom.py @@ -12,15 +12,15 @@ import oschmod import colorama -from colorama import Fore -from colorama import Style from knack import log from azure.cli.core import azclierror from azure.cli.core import telemetry from azure.core.exceptions import ResourceNotFoundError, HttpResponseError +from azure.cli.core.style import Style, print_styled_text from . import ip_utils +from . import rdp_utils from . import rsa_parser from . import ssh_utils from . import connectivity_utils @@ -33,7 +33,8 @@ def ssh_vm(cmd, resource_group_name=None, vm_name=None, ssh_ip=None, public_key_file=None, private_key_file=None, use_private_ip=False, local_user=None, cert_file=None, port=None, - ssh_client_folder=None, delete_credentials=False, resource_type=None, ssh_proxy_folder=None, ssh_args=None): + ssh_client_folder=None, delete_credentials=False, resource_type=None, ssh_proxy_folder=None, + winrdp=False, ssh_args=None): # delete_credentials can only be used by Azure Portal to provide one-click experience on CloudShell. if delete_credentials and os.environ.get("AZUREPS_HOST_ENVIRONMENT") != "cloud-shell/1.0": @@ -49,10 +50,17 @@ def ssh_vm(cmd, resource_group_name=None, vm_name=None, ssh_ip=None, public_key_ credentials_folder = None op_call = ssh_utils.start_ssh_connection + if winrdp: + if platform.system() != 'Windows': + raise azclierror.BadRequestError("RDP connection is not supported for this platform. " + "Supported platforms: Windows") + logger.warning("RDP feature is in preview.") + op_call = rdp_utils.start_rdp_connection + ssh_session = ssh_info.SSHSession(resource_group_name, vm_name, ssh_ip, public_key_file, private_key_file, use_private_ip, local_user, cert_file, port, ssh_client_folder, ssh_args, delete_credentials, resource_type, - ssh_proxy_folder, credentials_folder) + ssh_proxy_folder, credentials_folder, winrdp) ssh_session.resource_type = _decide_resource_type(cmd, ssh_session) _do_ssh_op(cmd, ssh_session, op_call) @@ -120,24 +128,22 @@ def ssh_cert(cmd, cert_path=None, public_key_file=None, ssh_client_folder=None): if keys_folder: logger.warning("%s contains sensitive information (id_rsa, id_rsa.pub). " "Please delete once this certificate is no longer being used.", keys_folder) - - colorama.init() # pylint: disable=broad-except try: cert_expiration = ssh_utils.get_certificate_start_and_end_times(cert_file, ssh_client_folder)[1] - print(Fore.GREEN + f"Generated SSH certificate {cert_file} is valid until {cert_expiration} in local time." - + Style.RESET_ALL) + print_styled_text((Style.SUCCESS, + f"Generated SSH certificate {cert_file} is valid until {cert_expiration} in local time.")) except Exception as e: logger.warning("Couldn't determine certificate validity. Error: %s", str(e)) - print(Fore.GREEN + f"Generated SSH certificate {cert_file}." + Style.RESET_ALL) + print_styled_text((Style.SUCCESS, f"Generated SSH certificate {cert_file}.")) def ssh_arc(cmd, resource_group_name=None, vm_name=None, public_key_file=None, private_key_file=None, local_user=None, cert_file=None, port=None, ssh_client_folder=None, delete_credentials=False, - ssh_proxy_folder=None, ssh_args=None): + ssh_proxy_folder=None, winrdp=False, ssh_args=None): ssh_vm(cmd, resource_group_name, vm_name, None, public_key_file, private_key_file, False, local_user, cert_file, - port, ssh_client_folder, delete_credentials, "Microsoft.HybridCompute", ssh_proxy_folder, ssh_args) + port, ssh_client_folder, delete_credentials, "Microsoft.HybridCompute", ssh_proxy_folder, winrdp, ssh_args) def _do_ssh_op(cmd, op_info, op_call): @@ -389,7 +395,8 @@ def _decide_resource_type(cmd, op_info): colorama.init() raise azclierror.BadRequestError(f"{op_info.resource_group_name} has Azure VM and Arc Server with the " f"same name: {op_info.vm_name}.", - Fore.YELLOW + "Please provide a --resource-type." + Style.RESET_ALL) + colorama.Fore.YELLOW + "Please provide a --resource-type." + + colorama.Style.RESET_ALL) if not is_azure_vm and not is_arc_server: colorama.init() if isinstance(arc_error, ResourceNotFoundError) and isinstance(vm_error, ResourceNotFoundError): @@ -416,7 +423,8 @@ def _decide_resource_type(cmd, op_info): colorama.init() raise azclierror.RequiredArgumentMissingError("SSH Login using AAD credentials is not currently supported " "for Windows.", - Fore.YELLOW + "Please provide --local-user." + Style.RESET_ALL) + colorama.Fore.YELLOW + "Please provide --local-user." + + colorama.Style.RESET_ALL) target_resource_type = "Microsoft.Compute" if is_arc_server: diff --git a/src/ssh/azext_ssh/rdp_utils.py b/src/ssh/azext_ssh/rdp_utils.py new file mode 100644 index 00000000000..63a6ff3c460 --- /dev/null +++ b/src/ssh/azext_ssh/rdp_utils.py @@ -0,0 +1,197 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import os +import platform +import subprocess +import time +import psutil + +from knack import log +from azure.cli.core import azclierror +from azure.cli.core import telemetry +from azure.cli.core.style import Style, print_styled_text + +from . import ssh_utils +from . import connectivity_utils +from . import constants as const +from . import file_utils + +logger = log.get_logger(__name__) + + +def start_rdp_connection(ssh_info, delete_keys, delete_cert): + try: + ssh_process = None + log_list = [] + print_ssh_logs = False + ssh_success = False + + resource_port = 3389 + local_port = _get_open_port() + + while not is_local_port_open(local_port): + local_port = _get_open_port() + + if ssh_info.ssh_args is None: + ssh_info.ssh_args = ['-L', f"{local_port}:localhost:{resource_port}", "-N"] + else: + ssh_info.ssh_args = ['-L', f"{local_port}:localhost:{resource_port}", "-N"] + ssh_info.ssh_args + + ssh_process, print_ssh_logs = start_ssh_tunnel(ssh_info) + ssh_connection_t0 = time.time() + ssh_success, log_list = wait_for_ssh_connection(ssh_process, print_ssh_logs) + ssh_utils.do_cleanup(delete_keys, delete_cert, ssh_info.cert_file, ssh_info.private_key_file, + ssh_info.public_key_file) + if ssh_success and ssh_process.poll() is None: + call_rdp(local_port) + + finally: + if ssh_success: + ssh_connection_data = {'Context.Default.AzureCLI.SSHConnectionDurationInMinutes': + (time.time() - ssh_connection_t0) / 60} + ssh_connection_data['Context.Default.AzureCLI.SSHConnectionStatus'] = "Success" + telemetry.add_extension_event('ssh', ssh_connection_data) + + terminate_ssh(ssh_process, log_list, print_ssh_logs) + ssh_utils.do_cleanup(delete_keys, delete_cert, ssh_info.cert_file, ssh_info.private_key_file, + ssh_info.public_key_file) + if delete_keys: + # This is only true if keys were generated, so they must be in a temp folder. + temp_dir = os.path.dirname(ssh_info.cert_file) + file_utils.delete_folder(temp_dir, f"Couldn't delete temporary folder {temp_dir}", True) + + +def call_rdp(local_port): + from . import _process_helper + if platform.system() == 'Windows': + print_styled_text((Style.SUCCESS, "Launching Remote Desktop Connection")) + print_styled_text((Style.IMPORTANT, "To close this session, close the Remote Desktop Connection window.")) + command = [_get_rdp_path(), f"/v:localhost:{local_port}"] + _process_helper.launch_and_wait(command) + + +def is_local_port_open(local_port): + import socket + from contextlib import closing + is_port_open = False + with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock: + if sock.connect_ex(('', local_port)) == 0: + logger.info('Port %s is NOT open', local_port) + else: + logger.info('Port %s is open', local_port) + is_port_open = True + return is_port_open + + +def _get_open_port(): + import socket + from contextlib import closing + with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s: + s.bind(('', 0)) + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + return s.getsockname()[1] + + +def start_ssh_tunnel(op_info): + # pylint: disable=consider-using-with + env = os.environ.copy() + if op_info.is_arc(): + env['SSHPROXY_RELAY_INFO'] = connectivity_utils.format_relay_info_string(op_info.relay_info) + + print_ssh_logs = False + if not set(['-v', '-vv', '-vvv']).isdisjoint(op_info.ssh_args): + print_ssh_logs = True + else: + op_info.ssh_args = ['-v'] + op_info.ssh_args + + if '-E' in op_info.ssh_args: + raise azclierror.BadRequestError("Can't use -E ssh parameter when using --rdp") + + command = [ssh_utils.get_ssh_client_path('ssh', op_info.ssh_client_folder), op_info.get_host()] + command = command + op_info.build_args() + op_info.ssh_args + + logger.debug("Running ssh command %s", ' '.join(command)) + ssh_sub = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE, env=env, encoding='utf-8') + return ssh_sub, print_ssh_logs + + +def wait_for_ssh_connection(ssh_sub, print_ssh_logs): + log_list = [] + ssh_sucess = False + while True: + next_line = ssh_sub.stderr.readline() + if print_ssh_logs: + print(next_line, end='') + else: + log_list.append(next_line) + if "debug1: Entering interactive session." in next_line: + logger.debug("SSH Connection estalished succesfully.") + ssh_sucess = True + break + if ssh_sub.poll() is not None: + logger.debug("SSH Connection failed.") + ssh_sucess = False + break + return ssh_sucess, log_list + + +def terminate_ssh(ssh_process, log_list, print_ssh_logs): + if ssh_process: + terminated = False + if ssh_process.poll() is None: + kill_process(ssh_process.pid) + t0 = time.time() + while ssh_process.poll() is None and (time.time() - t0) < const.RDP_TERMINATE_SSH_WAIT_TIME_IN_SECONDS: + time.sleep(1) + terminated = True + print_error_messages_from_log(log_list, print_ssh_logs, ssh_process, terminated) + + +def print_error_messages_from_log(log_list, print_ssh_logs, ssh_process, terminated): + # Read the remaining log messages since the connection was established. + next_line = ssh_process.stderr.readline() + while next_line: + if print_ssh_logs: + print(next_line, end='') + else: + log_list.append(next_line) + next_line = ssh_process.stderr.readline() + + # If ssh process was not forced to terminate, print potential error messages. + if ssh_process.returncode != 0 and not print_ssh_logs and not terminated: + for line in log_list: + if "debug1:" not in line and line != '': + print(str(line), end='') + + +def _get_rdp_path(rdp_command="mstsc"): + rdp_path = rdp_command + if platform.system() == 'Windows': + arch_data = platform.architecture() + sys_path = 'System32' + system_root = os.environ['SystemRoot'] + system32_path = os.path.join(system_root, sys_path) + rdp_path = os.path.join(system32_path, (rdp_command + ".exe")) + logger.debug("Platform architecture: %s", str(arch_data)) + logger.debug("System Root: %s", system_root) + logger.debug("Attempting to run rdp from path %s", rdp_path) + + if not os.path.isfile(rdp_path): + raise azclierror.BadRequestError("Could not find " + rdp_command + ".exe. Is the rdp client installed?") + else: + raise azclierror.BadRequestError("Platform is not supported for this command. Supported platforms: Windows") + + return rdp_path + + +def kill_process(pid): + try: + process = psutil.Process(pid) + for proc in process.children(recursive=True): + proc.kill() + process.kill() + except psutil.NoSuchProcess as e: + logger.warning("Kill process failed. Process no longer exists: %s", str(e)) diff --git a/src/ssh/azext_ssh/ssh_info.py b/src/ssh/azext_ssh/ssh_info.py index 5e99459e924..37672abc05e 100644 --- a/src/ssh/azext_ssh/ssh_info.py +++ b/src/ssh/azext_ssh/ssh_info.py @@ -6,9 +6,7 @@ import datetime import oschmod -import colorama -from colorama import Fore -from colorama import Style +from azure.cli.core.style import Style, print_styled_text from azure.cli.core import azclierror from knack import log @@ -22,7 +20,7 @@ class SSHSession(): # pylint: disable=too-many-instance-attributes def __init__(self, resource_group_name, vm_name, ssh_ip, public_key_file, private_key_file, use_private_ip, local_user, cert_file, port, ssh_client_folder, ssh_args, - delete_credentials, resource_type, ssh_proxy_folder, credentials_folder): + delete_credentials, resource_type, ssh_proxy_folder, credentials_folder, winrdp): self.resource_group_name = resource_group_name self.vm_name = vm_name self.ip = ssh_ip @@ -32,6 +30,7 @@ def __init__(self, resource_group_name, vm_name, ssh_ip, public_key_file, privat self.ssh_args = ssh_args self.delete_credentials = delete_credentials self.resource_type = resource_type + self.winrdp = winrdp self.proxy_path = None self.relay_info = None self.public_key_file = os.path.abspath(public_key_file) if public_key_file else None @@ -189,9 +188,8 @@ def _create_relay_info_file(self): try: expiration = datetime.datetime.fromtimestamp(self.relay_info.expires_on) expiration = expiration.strftime("%Y-%m-%d %I:%M:%S %p") - colorama.init() - print(Fore.GREEN + f"Generated relay information {relay_info_path} is valid until {expiration} " - "in local time." + Style.RESET_ALL) + print_styled_text((Style.SUCCESS, f"Generated relay information {relay_info_path} is valid until " + f"{expiration} in local time.")) except Exception as e: logger.warning("Couldn't determine relay information expiration. Error: %s", str(e)) diff --git a/src/ssh/azext_ssh/ssh_utils.py b/src/ssh/azext_ssh/ssh_utils.py index 70eb16de634..1986a604431 100644 --- a/src/ssh/azext_ssh/ssh_utils.py +++ b/src/ssh/azext_ssh/ssh_utils.py @@ -11,12 +11,10 @@ import re import colorama -from colorama import Fore -from colorama import Style - from knack import log from azure.cli.core import azclierror from azure.cli.core import telemetry +from azure.cli.core.style import Style, print_styled_text from . import file_utils from . import connectivity_utils @@ -42,7 +40,7 @@ def start_ssh_connection(op_info, delete_keys, delete_cert): env['SSHPROXY_RELAY_INFO'] = connectivity_utils.format_relay_info_string(op_info.relay_info) # Get ssh client before starting the clean up process in case there is an error in getting client. - command = [_get_ssh_client_path('ssh', op_info.ssh_client_folder), op_info.get_host()] + command = [get_ssh_client_path('ssh', op_info.ssh_client_folder), op_info.get_host()] if not op_info.cert_file and not op_info.private_key_file: # In this case, even if delete_credentials is true, there is nothing to clean-up. @@ -97,7 +95,7 @@ def write_ssh_config(config_info, delete_keys, delete_cert): def create_ssh_keyfile(private_key_file, ssh_client_folder=None): - sshkeygen_path = _get_ssh_client_path("ssh-keygen", ssh_client_folder) + sshkeygen_path = get_ssh_client_path("ssh-keygen", ssh_client_folder) command = [sshkeygen_path, "-f", private_key_file, "-t", "rsa", "-q", "-N", ""] logger.debug("Running ssh-keygen command %s", ' '.join(command)) try: @@ -109,7 +107,7 @@ def create_ssh_keyfile(private_key_file, ssh_client_folder=None): def get_ssh_cert_info(cert_file, ssh_client_folder=None): - sshkeygen_path = _get_ssh_client_path("ssh-keygen", ssh_client_folder) + sshkeygen_path = get_ssh_client_path("ssh-keygen", ssh_client_folder) command = [sshkeygen_path, "-L", "-f", cert_file] logger.debug("Running ssh-keygen command %s", ' '.join(command)) try: @@ -211,7 +209,7 @@ def _print_error_messages_from_ssh_log(log_file, connection_status, delete_cert) ssh_log.close() -def _get_ssh_client_path(ssh_command="ssh", ssh_client_folder=None): +def get_ssh_client_path(ssh_command="ssh", ssh_client_folder=None): if ssh_client_folder: ssh_path = os.path.join(ssh_client_folder, ssh_command) if platform.system() == 'Windows': @@ -258,9 +256,9 @@ def _get_ssh_client_path(ssh_command="ssh", ssh_client_folder=None): if not os.path.isfile(ssh_path): raise azclierror.UnclassifiedUserFault( "Could not find " + ssh_command + ".exe on path " + ssh_path + ". ", - Fore.YELLOW + "Make sure OpenSSH is installed correctly: " + colorama.Fore.YELLOW + "Make sure OpenSSH is installed correctly: " "https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse . " - "Or use --ssh-client-folder to provide folder path with ssh executables. " + Style.RESET_ALL) + "Or use --ssh-client-folder to provide folder path with ssh executables. " + colorama.Style.RESET_ALL) return ssh_path @@ -359,13 +357,12 @@ def _terminate_cleanup(delete_keys, delete_cert, delete_credentials, cleanup_pro def _issue_config_cleanup_warning(delete_cert, delete_keys, is_arc, cert_file, relay_info_path, ssh_client_folder): if delete_cert: - colorama.init() # pylint: disable=broad-except try: expiration = get_certificate_start_and_end_times(cert_file, ssh_client_folder)[1] expiration = expiration.strftime("%Y-%m-%d %I:%M:%S %p") - print(Fore.GREEN + f"Generated SSH certificate {cert_file} is valid until {expiration} in local time." - + Style.RESET_ALL) + print_styled_text((Style.SUCCESS, + f"Generated SSH certificate {cert_file} is valid until {expiration} in local time.")) except Exception as e: logger.warning("Couldn't determine certificate expiration. Error: %s", str(e)) diff --git a/src/ssh/azext_ssh/tests/latest/test_custom.py b/src/ssh/azext_ssh/tests/latest/test_custom.py index 51212fac195..69e1b6f3c2c 100644 --- a/src/ssh/azext_ssh/tests/latest/test_custom.py +++ b/src/ssh/azext_ssh/tests/latest/test_custom.py @@ -6,6 +6,7 @@ import unittest from unittest import mock from azext_ssh import custom +from azext_ssh import rdp_utils from azext_ssh import ssh_utils from azext_ssh import ssh_info @@ -26,12 +27,32 @@ def test_ssh_vm(self, mock_type, mock_info, mock_assert, mock_do_op): cmd.cli_ctx.data = {'safe_params': []} - custom.ssh_vm(cmd, "rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", False, "type", "proxy", ['-vvv']) + custom.ssh_vm(cmd, "rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", False, "type", "proxy", False, ['-vvv']) - mock_info.assert_called_once_with("rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", ['-vvv'], False, "type", "proxy", None) + mock_info.assert_called_once_with("rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", ['-vvv'], False, "type", "proxy", None, False) mock_assert.assert_called_once_with("rg", "vm", "ip", "type", "cert", "username") mock_type.assert_called_once_with(cmd, ssh_info) mock_do_op.assert_called_once_with(cmd, ssh_info, ssh_utils.start_ssh_connection) + + @mock.patch('azext_ssh.custom._do_ssh_op') + @mock.patch('azext_ssh.custom._assert_args') + @mock.patch('azext_ssh.ssh_info.SSHSession') + @mock.patch('azext_ssh.custom._decide_resource_type') + @mock.patch('platform.system') + def test_ssh_vm_rdp(self, mock_sys, mock_type, mock_info, mock_assert, mock_do_op): + cmd = mock.Mock() + ssh_info = mock.Mock() + mock_info.return_value = ssh_info + mock_sys.return_value = 'Windows' + + cmd.cli_ctx.data = {'safe_params': []} + + custom.ssh_vm(cmd, "rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", False, "type", "proxy", True, ['-vvv']) + + mock_info.assert_called_once_with("rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", ['-vvv'], False, "type", "proxy", None, True) + mock_assert.assert_called_once_with("rg", "vm", "ip", "type", "cert", "username") + mock_type.assert_called_once_with(cmd, ssh_info) + mock_do_op.assert_called_once_with(cmd, ssh_info, rdp_utils.start_rdp_connection) @mock.patch('azext_ssh.custom._do_ssh_op') @mock.patch('azext_ssh.custom._assert_args') @@ -44,9 +65,9 @@ def test_ssh_vm_debug(self, mock_type, mock_info, mock_assert, mock_do_op): cmd.cli_ctx.data = {'safe_params': ['--debug']} - custom.ssh_vm(cmd, "rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", False, "type", "proxy", []) + custom.ssh_vm(cmd, "rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", False, "type", "proxy", False, []) - mock_info.assert_called_once_with("rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", ['-vvv'], False, "type", "proxy", None) + mock_info.assert_called_once_with("rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", ['-vvv'], False, "type", "proxy", None, False) mock_assert.assert_called_once_with("rg", "vm", "ip", "type", "cert", "username") mock_type.assert_called_once_with(cmd, ssh_info) mock_do_op.assert_called_once_with(cmd, ssh_info, ssh_utils.start_ssh_connection) @@ -63,9 +84,9 @@ def test_ssh_vm_delete_credentials_cloudshell(self, mock_info, mock_assert, mock cmd.cli_ctx.data = {'safe_params': []} mock_info.return_value = ssh_info - custom.ssh_vm(cmd, "rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", True, "type", "proxy", []) + custom.ssh_vm(cmd, "rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", True, "type", "proxy", False, []) - mock_info.assert_called_once_with("rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", [], True, "type", "proxy", None) + mock_info.assert_called_once_with("rg", "vm", "ip", "public", "private", False, "username", "cert", "port", "ssh_folder", [], True, "type", "proxy", None, False) mock_assert.assert_called_once_with("rg", "vm", "ip", "type", "cert", "username") mock_type.assert_called_once_with(cmd, ssh_info) mock_op.assert_called_once_with(cmd, ssh_info, ssh_utils.start_ssh_connection) @@ -75,7 +96,7 @@ def test_delete_credentials_not_cloudshell(self, mock_getenv): mock_getenv.return_value = None cmd = mock.Mock() self.assertRaises( - azclierror.ArgumentUsageError, custom.ssh_vm, cmd, 'rg', 'vm', 'ip', 'pub', 'priv', False, 'user', 'cert', 'port', 'client', True, 'type', 'proxy', []) + azclierror.ArgumentUsageError, custom.ssh_vm, cmd, 'rg', 'vm', 'ip', 'pub', 'priv', False, 'user', 'cert', 'port', 'client', True, 'type', 'proxy', False, []) @mock.patch('azext_ssh.custom._assert_args') @mock.patch('azext_ssh.custom._do_ssh_op') @@ -141,9 +162,9 @@ def test_ssh_config_credentials_folder_and_key(self): @mock.patch('azext_ssh.custom.ssh_vm') def test_ssh_arc(self, mock_vm): cmd = mock.Mock() - custom.ssh_arc(cmd, "rg", "vm", "pub", "priv", "user", "cert", "port", "client", False, "proxy", []) + custom.ssh_arc(cmd, "rg", "vm", "pub", "priv", "user", "cert", "port", "client", False, "proxy", False, []) - mock_vm.assert_called_once_with(cmd, "rg", "vm", None, "pub", "priv", False, "user", "cert", "port", "client", False, "Microsoft.HybridCompute", "proxy", []) + mock_vm.assert_called_once_with(cmd, "rg", "vm", None, "pub", "priv", False, "user", "cert", "port", "client", False, "Microsoft.HybridCompute", "proxy", False, []) def test_ssh_cert_no_args(self): cmd = mock.Mock() @@ -339,7 +360,7 @@ def test_do_ssh_op_aad_user_compute(self, mock_write_cert, mock_ssh_creds, mock_ cmd.cli_ctx.cloud = mock.Mock() cmd.cli_ctx.cloud.name = "azurecloud" - op_info = ssh_info.SSHSession(None, None, "1.2.3.4", None, None, False, None, None, None, None, None, None, "Microsoft.Compute", None, None) + op_info = ssh_info.SSHSession(None, None, "1.2.3.4", None, None, False, None, None, None, None, None, None, "Microsoft.Compute", None, None, False) op_info.public_key_file = "publicfile" op_info.private_key_file = "privatefile" op_info.ssh_client_folder = "/client/folder" @@ -387,7 +408,7 @@ def test_do_ssh_op_no_public_ip(self, mock_ip, mock_check_files): mock_op = mock.Mock() mock_ip.return_value = None - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, None, None, "Microsoft.Compute", None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, None, None, "Microsoft.Compute", None, None, False) self.assertRaises( azclierror.ResourceNotFoundError, custom._do_ssh_op, cmd, op_info, mock_op) @@ -405,7 +426,7 @@ def test_do_ssh_op_arc_local_user(self, mock_get_cert, mock_check_keys, mock_sta cmd = mock.Mock() mock_op = mock.Mock() - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, "port", None, [], False, "Microsoft.HybridCompute", None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, "port", None, [], False, "Microsoft.HybridCompute", None, None, False) op_info.private_key_file = "priv" op_info.cert_file = "cert" op_info.ssh_client_folder = "client" @@ -450,7 +471,7 @@ def test_do_ssh_arc_op_aad_user(self, mock_cert_exp, mock_start_ssh, mock_write_ mock_op = mock.Mock() - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, "port", None, [], False, "Microsoft.HybridCompute", None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, "port", None, [], False, "Microsoft.HybridCompute", None, None, False) op_info.public_key_file = "publicfile" op_info.private_key_file = "privatefile" op_info.ssh_client_folder = "client" @@ -470,21 +491,21 @@ def test_do_ssh_arc_op_aad_user(self, mock_cert_exp, mock_start_ssh, mock_write_ def test_decide_resource_type_ip(self): cmd = mock.Mock() - op_info = ssh_info.SSHSession(None, None, "ip", None, None, False, None, None, None, None, [], False, None, None, None) + op_info = ssh_info.SSHSession(None, None, "ip", None, None, False, None, None, None, None, [], False, None, None, None, False) self.assertEqual(custom._decide_resource_type(cmd, op_info), "Microsoft.Compute") @mock.patch('azext_ssh.custom._check_if_arc_server') def test_decide_resource_type_resourcetype_arc(self, mock_is_arc): cmd = mock.Mock() mock_is_arc.return_value = None, None, True - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, "Microsoft.HybridCompute", None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, "Microsoft.HybridCompute", None, None, False) self.assertEqual(custom._decide_resource_type(cmd, op_info), "Microsoft.HybridCompute") @mock.patch('azext_ssh.custom._check_if_azure_vm') def test_decide_resource_type_resourcetype_arc(self, mock_is_vm): cmd = mock.Mock() mock_is_vm.return_value = None, None, True - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, "Microsoft.Compute", None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, "Microsoft.Compute", None, None, False) self.assertEqual(custom._decide_resource_type(cmd, op_info), "Microsoft.Compute") @mock.patch('azext_ssh.custom._check_if_azure_vm') @@ -493,7 +514,7 @@ def test_decide_resource_type_rg_vm_both(self, mock_is_arc, mock_is_vm): cmd = mock.Mock() mock_is_vm.return_value = None, None, True mock_is_arc.return_value = None, None, True - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None, False) self.assertRaises( azclierror.BadRequestError, custom._decide_resource_type, cmd, op_info) @@ -503,7 +524,7 @@ def test_decide_resource_type_rg_vm_neither(self, mock_is_arc, mock_is_vm): cmd = mock.Mock() mock_is_vm.return_value = None, ResourceNotFoundError(), False mock_is_arc.return_value = None, ResourceNotFoundError(), False - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None, False) self.assertRaises( azclierror.ResourceNotFoundError, custom._decide_resource_type, cmd, op_info) @@ -513,7 +534,7 @@ def test_decide_resource_type_rg_vm_arc(self, mock_is_arc, mock_is_vm): cmd = mock.Mock() mock_is_vm.return_value = None, ResourceNotFoundError(), False mock_is_arc.return_value = None, None, True - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None, False) self.assertEqual(custom._decide_resource_type(cmd, op_info), "Microsoft.HybridCompute") @mock.patch('azext_ssh.custom._check_if_azure_vm') @@ -522,7 +543,7 @@ def test_decide_resource_type_rg_vm_arc(self, mock_is_arc, mock_is_vm): cmd = mock.Mock() mock_is_vm.return_value = None, None, True mock_is_arc.return_value = None, ResourceNotFoundError(), False - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, None, None, None, None, [], False, None, None, None, False) self.assertEqual(custom._decide_resource_type(cmd, op_info), "Microsoft.Compute") diff --git a/src/ssh/azext_ssh/tests/latest/test_rdp_utils.py b/src/ssh/azext_ssh/tests/latest/test_rdp_utils.py new file mode 100644 index 00000000000..74489140d52 --- /dev/null +++ b/src/ssh/azext_ssh/tests/latest/test_rdp_utils.py @@ -0,0 +1,97 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import unittest +from unittest import mock + +from azext_ssh import rdp_utils +from azext_ssh import ssh_info +from azext_ssh import ssh_utils + +class RDPUtilsTest(unittest.TestCase): + @mock.patch('os.environ.copy') + @mock.patch.object(ssh_utils, 'get_ssh_client_path') + @mock.patch('azext_ssh.custom.connectivity_utils.format_relay_info_string') + @mock.patch("subprocess.Popen") + def test_start_ssh_tunnel(self, mock_popen, mock_relay, mock_path, mock_env): + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, "port", None, ['arg1', 'arg2', '-v'], False, "Microsoft.HybridCompute", None, None, True) + op_info.public_key_file = "pub" + op_info.private_key_file = "priv" + op_info.cert_file = "cert" + op_info.ssh_client_folder = "client" + op_info.proxy_path = "proxy" + op_info.relay_info = "relay" + + mock_env.return_value = {'var1':'value1', 'var2':'value2', 'var3':'value3'} + mock_path.return_value = 'ssh' + mock_relay.return_value = 'relay_string' + mock_popen.return_value = 'ssh_process' + + expected_command = ['ssh', "user@vm", '-o', 'ProxyCommand=\"proxy\" -p port', '-i', 'priv', '-o', 'CertificateFile=\"cert\"', 'arg1', 'arg2', '-v'] + expected_env = {'var1':'value1', 'var2':'value2', 'var3':'value3', 'SSHPROXY_RELAY_INFO':'relay_string'} + + ssh_sub, print_logs = rdp_utils.start_ssh_tunnel(op_info) + + self.assertEqual(ssh_sub, 'ssh_process') + self.assertEqual(print_logs, True) + mock_popen.assert_called_once_with(expected_command, shell=True, stderr=mock.ANY, env=expected_env, encoding='utf-8') + mock_relay.assert_called_once_with("relay") + mock_path.assert_called_once_with('ssh', 'client') + + @mock.patch('platform.system') + @mock.patch('platform.architecture') + @mock.patch('os.environ') + @mock.patch('os.path.join') + @mock.patch('os.path.isfile') + def test_get_rdp_path(self, mock_isfile, mock_join, mock_env, mock_arch, mock_sys): + mock_env.__getitem__.return_value = "root" + mock_join.side_effect = ['root/sys', 'root/sys/rdp'] + mock_arch.return_value = '32bit' + mock_sys.return_value = 'Windows' + mock_isfile.return_value = True + + expected_join_calls = [ + mock.call("root", 'System32'), + mock.call("root/sys", "mstsc.exe") + ] + + rdp_utils._get_rdp_path() + + mock_join.assert_has_calls(expected_join_calls) + mock_isfile.assert_called_once_with('root/sys/rdp') + + #start rdp connection + @mock.patch.object(rdp_utils, '_get_open_port') + @mock.patch.object(rdp_utils, 'is_local_port_open') + @mock.patch.object(rdp_utils, 'start_ssh_tunnel') + @mock.patch.object(rdp_utils, 'wait_for_ssh_connection') + @mock.patch.object(rdp_utils, 'call_rdp') + @mock.patch.object(rdp_utils, 'terminate_ssh') + def test_start_rdp_connection(self, mock_terminate, mock_rdp, mock_wait, mock_tunnel, mock_isopen, mock_getport): + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, "port", None, ['arg1', 'arg2'], False, "Microsoft.HybridCompute", None, None, True) + op_info.public_key_file = "pub" + op_info.private_key_file = "priv" + op_info.cert_file = "cert" + op_info.ssh_client_folder = "client" + op_info.proxy_path = "proxy" + op_info.relay_info = "relay" + + mock_getport.return_value = 1020 + mock_isopen.return_value = True + ssh_pro = mock.Mock() + #ssh_pro.return_value.poll.return_value = None + mock_tunnel.return_value = ssh_pro, False + mock_wait.return_value = True, [] + + rdp_utils.start_rdp_connection(op_info, True, True) + + mock_terminate.assert_called_once_with(ssh_pro, [], False) + #mock_rdp.assert_called_once_with(1020) + mock_tunnel.assert_called_once_with(op_info) + mock_wait.assert_called_once_with(ssh_pro, False) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/src/ssh/azext_ssh/tests/latest/test_ssh_info.py b/src/ssh/azext_ssh/tests/latest/test_ssh_info.py index 40a231d5088..517b554f1d3 100644 --- a/src/ssh/azext_ssh/tests/latest/test_ssh_info.py +++ b/src/ssh/azext_ssh/tests/latest/test_ssh_info.py @@ -21,7 +21,7 @@ def test_ssh_session(self, mock_abspath): mock.call("proxy/path"), mock.call("cred/path") ] - session = ssh_info.SSHSession("rg", "vm", "ip", "pub", "priv", False, "user", "cert", "port", "client/folder", ['-v', '-E', 'path'], False, 'arc', 'proxy/path', 'cred/path') + session = ssh_info.SSHSession("rg", "vm", "ip", "pub", "priv", False, "user", "cert", "port", "client/folder", ['-v', '-E', 'path'], False, 'arc', 'proxy/path', 'cred/path', True) mock_abspath.assert_has_calls(expected_abspath_calls) self.assertEqual(session.resource_group_name, "rg") self.assertEqual(session.vm_name, "vm") @@ -40,24 +40,25 @@ def test_ssh_session(self, mock_abspath): self.assertEqual(session.resource_type, "arc") self.assertEqual(session.proxy_path, None) self.assertEqual(session.delete_credentials, False) + self.assertEqual(session.winrdp, True) def test_ssh_session_get_host(self): - session = ssh_info.SSHSession(None, None, "ip", None, None, False, "user", None, None, None, [], False, "Microsoft.Compute", None, None) + session = ssh_info.SSHSession(None, None, "ip", None, None, False, "user", None, None, None, [], False, "Microsoft.Compute", None, None, False) self.assertEqual("user@ip", session.get_host()) - session = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, None, None, [], False, "Microsoft.HybridCompute", None, None) + session = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, None, None, [], False, "Microsoft.HybridCompute", None, None, True) self.assertEqual("user@vm", session.get_host()) @mock.patch('os.path.abspath') def test_ssh_session_build_args_compute(self, mock_abspath): mock_abspath.side_effect = ["pub_path", "priv_path", "cert_path", "client_path"] - session = ssh_info.SSHSession("rg", "vm", "ip", "pub", "priv", False, "user", "cert", "port", "client/folder", [], None, "Microsoft.Compute", None, None) + session = ssh_info.SSHSession("rg", "vm", "ip", "pub", "priv", False, "user", "cert", "port", "client/folder", [], None, "Microsoft.Compute", None, None, False) self.assertEqual(["-i", "priv_path", "-o", "CertificateFile=\"cert_path\"", "-p", "port"], session.build_args()) @mock.patch('os.path.abspath') def test_ssh_session_build_args_hyvridcompute(self, mock_abspath): mock_abspath.side_effect = ["pub_path", "priv_path", "cert_path", "client_path"] - session = ssh_info.SSHSession("rg", "vm", "ip", "pub", "priv", False, "user", "cert", "port", "client/folder", [], None, "Microsoft.HybridCompute", None, None) + session = ssh_info.SSHSession("rg", "vm", "ip", "pub", "priv", False, "user", "cert", "port", "client/folder", [], None, "Microsoft.HybridCompute", None, None, True) session.proxy_path = "proxy_path" self.assertEqual(["-o", "ProxyCommand=\"proxy_path\" -p port", "-i", "priv_path", "-o", "CertificateFile=\"cert_path\""], session.build_args()) diff --git a/src/ssh/azext_ssh/tests/latest/test_ssh_utils.py b/src/ssh/azext_ssh/tests/latest/test_ssh_utils.py index e0adb1fa14d..26877814d08 100644 --- a/src/ssh/azext_ssh/tests/latest/test_ssh_utils.py +++ b/src/ssh/azext_ssh/tests/latest/test_ssh_utils.py @@ -15,13 +15,13 @@ class SSHUtilsTests(unittest.TestCase): @mock.patch.object(ssh_utils, '_start_cleanup') @mock.patch.object(ssh_utils, '_terminate_cleanup') - @mock.patch.object(ssh_utils, '_get_ssh_client_path') + @mock.patch.object(ssh_utils, 'get_ssh_client_path') @mock.patch('subprocess.run') @mock.patch('os.environ.copy') @mock.patch('platform.system') def test_start_ssh_connection_compute(self, mock_system, mock_copy_env, mock_call, mock_path, mock_terminatecleanup, mock_startcleanup): - op_info = ssh_info.SSHSession("rg", "vm", "ip", None, None, False, "user", None, "port", None, ['arg1', 'arg2', 'arg3'], False, "Microsof.Compute", None, None) + op_info = ssh_info.SSHSession("rg", "vm", "ip", None, None, False, "user", None, "port", None, ['arg1', 'arg2', 'arg3'], False, "Microsof.Compute", None, None, False) op_info.public_key_file = "pub" op_info.private_key_file = "priv" op_info.cert_file = "cert" @@ -44,13 +44,13 @@ def test_start_ssh_connection_compute(self, mock_system, mock_copy_env, mock_cal @mock.patch.object(ssh_utils, '_terminate_cleanup') @mock.patch('os.environ.copy') - @mock.patch.object(ssh_utils, '_get_ssh_client_path') + @mock.patch.object(ssh_utils, 'get_ssh_client_path') @mock.patch('subprocess.run') @mock.patch('azext_ssh.custom.connectivity_utils.format_relay_info_string') @mock.patch('platform.system') def test_start_ssh_connection_arc(self, mock_system, mock_relay_str, mock_call, mock_path, mock_copy_env, mock_terminatecleanup): - op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, "port", None, ['arg1'], False, "Microsoft.HybridCompute", None, None) + op_info = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, "port", None, ['arg1'], False, "Microsoft.HybridCompute", None, None, False) op_info.public_key_file = "pub" op_info.private_key_file = "priv" op_info.cert_file = "cert" @@ -147,7 +147,7 @@ def test_get_ssh_client_path_with_client_folder_non_windows(self, mock_isfile, m mock_join.return_value = "ssh_path" mock_system.return_value = "Linux" mock_isfile.return_value = True - actual_path = ssh_utils._get_ssh_client_path(ssh_client_folder='/client/folder') + actual_path = ssh_utils.get_ssh_client_path(ssh_client_folder='/client/folder') self.assertEqual(actual_path, "ssh_path") mock_join.assert_called_once_with('/client/folder', 'ssh') mock_isfile.assert_called_once_with("ssh_path") @@ -159,7 +159,7 @@ def test_get_ssh_client_path_with_client_folder_windows(self, mock_isfile, mock_ mock_join.return_value = "ssh_keygen_path" mock_system.return_value = "Windows" mock_isfile.return_value = True - actual_path = ssh_utils._get_ssh_client_path(ssh_command='ssh-keygen', ssh_client_folder='/client/folder') + actual_path = ssh_utils.get_ssh_client_path(ssh_command='ssh-keygen', ssh_client_folder='/client/folder') self.assertEqual(actual_path, "ssh_keygen_path.exe") mock_join.assert_called_once_with('/client/folder', 'ssh-keygen') mock_isfile.assert_called_once_with("ssh_keygen_path.exe") @@ -171,7 +171,7 @@ def test_get_ssh_client_path_with_client_folder_no_file(self, mock_isfile, mock_ mock_join.return_value = "ssh_path" mock_system.return_value = "Mac" mock_isfile.return_value = False - actual_path = ssh_utils._get_ssh_client_path(ssh_client_folder='/client/folder') + actual_path = ssh_utils.get_ssh_client_path(ssh_client_folder='/client/folder') self.assertEqual(actual_path, "ssh") mock_join.assert_called_once_with('/client/folder', 'ssh') mock_isfile.assert_called_once_with("ssh_path") @@ -179,7 +179,7 @@ def test_get_ssh_client_path_with_client_folder_no_file(self, mock_isfile, mock_ @mock.patch('platform.system') def test_get_ssh_client_preinstalled_non_windows(self, mock_system): mock_system.return_value = "Mac" - actual_path = ssh_utils._get_ssh_client_path() + actual_path = ssh_utils.get_ssh_client_path() self.assertEqual('ssh', actual_path) mock_system.assert_called_once_with() @@ -211,7 +211,7 @@ def _test_get_ssh_client_path_preinstalled_windows(self, platform_arch, os_arch, mock.call("system32path", "openSSH", "ssh.exe") ] - actual_path = ssh_utils._get_ssh_client_path() + actual_path = ssh_utils.get_ssh_client_path() self.assertEqual("sshfilepath", actual_path) mock_system.assert_called_once_with() @@ -233,4 +233,4 @@ def test_get_ssh_path_windows_ssh_preinstalled_not_found(self, mock_isfile, mock mock_environ.__getitem__.return_value = "rootpath" mock_isfile.return_value = False - self.assertRaises(azclierror.UnclassifiedUserFault, ssh_utils._get_ssh_client_path) + self.assertRaises(azclierror.UnclassifiedUserFault, ssh_utils.get_ssh_client_path) diff --git a/src/ssh/setup.py b/src/ssh/setup.py index be1787cf28e..a080cbec415 100644 --- a/src/ssh/setup.py +++ b/src/ssh/setup.py @@ -7,7 +7,7 @@ from setuptools import setup, find_packages -VERSION = "1.1.1" +VERSION = "1.1.2" CLASSIFIERS = [ 'Development Status :: 4 - Beta', @@ -22,7 +22,6 @@ ] DEPENDENCIES = [ - 'cryptography', 'oschmod==0.3.12' ] diff --git a/src/vmware/README.md b/src/vmware/README.md index a9a20ebcefe..a6f9dead122 100644 --- a/src/vmware/README.md +++ b/src/vmware/README.md @@ -8,7 +8,7 @@ az extension add --name vmware ``` ## Usage -See the [extension reference documenation](https://docs.microsoft.com/cli/azure/ext/vmware/vmware). +See the [extension reference documentation](https://docs.microsoft.com/cli/azure/vmware). ``` sh az vmware --help diff --git a/src/webpubsub/azext_webpubsub/_params.py b/src/webpubsub/azext_webpubsub/_params.py index dc020e52b3a..4469c7be66d 100644 --- a/src/webpubsub/azext_webpubsub/_params.py +++ b/src/webpubsub/azext_webpubsub/_params.py @@ -17,7 +17,6 @@ from ._validator import validate_network_rule WEBPUBSUB_KEY_TYPE = ['primary', 'secondary', 'salt'] -SKU_TYPE = ['Standard_S1', 'Free_F1'] PERMISSION_TYPE = ['joinLeaveGroup', 'sendToGroup'] @@ -33,12 +32,12 @@ def load_arguments(self, _): c.argument('webpubsub_name', webpubsub_name_type, options_list=['--name', '-n']) with self.argument_context('webpubsub create') as c: - c.argument('sku', arg_type=get_enum_type(SKU_TYPE), help='The sku name of the signalr service.') - c.argument('unit_count', help='The number of signalr service unit count', type=int) + c.argument('sku', help='The sku name of the webpubsub service. Allowed values: Free_F1, Standard_S1') + c.argument('unit_count', help='The number of webpubsub service unit count', type=int) with self.argument_context('webpubsub update') as c: - c.argument('sku', arg_type=get_enum_type(SKU_TYPE), help='The sku name of the signalr service.') - c.argument('unit_count', help='The number of signalr service unit count', type=int) + c.argument('sku', help='The sku name of the webpubsub service. Allowed values: Free_F1, Standard_S1') + c.argument('unit_count', help='The number of webpubsub service unit count', type=int) with self.argument_context('webpubsub key regenerate') as c: c.argument('key_type', arg_type=get_enum_type(WEBPUBSUB_KEY_TYPE), help='The name of access key to regenerate') diff --git a/testing/pipeline/k8s-custom-pipelines.yml b/testing/pipeline/k8s-custom-pipelines.yml index 70346d368da..3e0ce17a3c1 100644 --- a/testing/pipeline/k8s-custom-pipelines.yml +++ b/testing/pipeline/k8s-custom-pipelines.yml @@ -145,11 +145,25 @@ stages: versionSpec: '$(python.version)' - bash: pip install wheel==0.30.0 displayName: 'Install wheel==0.30.0' - - bash: ./scripts/ci/test_source.sh + - bash: | + set -ev + + # prepare and activate virtualenv + pip install virtualenv + python -m virtualenv venv/ + source ./venv/bin/activate + + # clone azure-cli + git clone --single-branch -b dev https://github.com/Azure/azure-cli.git ../azure-cli + + pip install --upgrade pip + pip install azdev + + azdev --version + + azdev setup -c ../azure-cli -r ./ -e k8s-extension + azdev test k8s-extension displayName: 'Run integration test and build test' - env: - ADO_PULL_REQUEST_LATEST_COMMIT: $(System.PullRequest.SourceCommitId) - ADO_PULL_REQUEST_TARGET_BRANCH: $(System.PullRequest.TargetBranch) - job: LintModifiedExtensions displayName: "CLI Linter on Modified Extensions"